Incorporate conservancy_ssl middleware, etc. into main site, now that HTTPS fully supported.
Previously, SSL on sfconservancy.org was supported using a self-signed cert only to handle the /admin/ portion of the site. Now that SSL is supported site-wide, and perfectly mirrors the content available via HTTP, the conservancy_ssl middleware, URLs, and settings are wholly deprecated and herein removed. The main site's urls.py now need adjusting to support /admin/, but additional code is needed in middleware.py to avoid accidentally serving /admin/ via HTTP instead of HTTPS. The latter code is untested; hopefully it works "out of the box". :)
This commit is contained in:
		
							parent
							
								
									536789a8c0
								
							
						
					
					
						commit
						1e119efb7a
					
				
					 6 changed files with 28 additions and 89 deletions
				
			
		|  | @ -13,6 +13,11 @@ class ForceCanonicalHostnameMiddleware(object): | ||||||
|         * adds cache headers to provide hints to squid |         * adds cache headers to provide hints to squid | ||||||
|         """ |         """ | ||||||
| 
 | 
 | ||||||
|  |         # Never allow connection to the /admin part of the site without SSL | ||||||
|  |         if (not request.is_secure) and request.path.startswith('/admin'): | ||||||
|  |             url = 'https://sfconservancy.org%s' % request.path | ||||||
|  |             return http.HttpResponseRedirect(url) | ||||||
|  | 
 | ||||||
|         # Check for a redirect based on settings.APPEND_SLASH |         # Check for a redirect based on settings.APPEND_SLASH | ||||||
|         host = http.get_host(request) |         host = http.get_host(request) | ||||||
|         old_url = [host, request.path] |         old_url = [host, request.path] | ||||||
|  |  | ||||||
|  | @ -1,9 +1,32 @@ | ||||||
|  | # Copyright 2005-2008, James Garrison | ||||||
|  | # Copyright 2010, 2012 Bradley M. Kuhn | ||||||
|  | 
 | ||||||
|  | # This software's license gives you freedom; you can copy, convey, | ||||||
|  | # propagate, redistribute, modify and/or redistribute modified versions of | ||||||
|  | # this program under the terms of the GNU Affero General Public License | ||||||
|  | # (AGPL) as published by the Free Software Foundation (FSF), either | ||||||
|  | # version 3 of the License, or (at your option) any later version of the | ||||||
|  | # AGPL published by the FSF. | ||||||
|  | # | ||||||
|  | # This program is distributed in the hope that it will be useful, but | ||||||
|  | # WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero | ||||||
|  | # General Public License for more details. | ||||||
|  | # | ||||||
|  | # You should have received a copy of the GNU Affero General Public License | ||||||
|  | # along with this program in a file in the toplevel directory called | ||||||
|  | # "AGPLv3".  If not, see <http://www.gnu.org/licenses/>. | ||||||
|  | 
 | ||||||
| from django.conf.urls.defaults import * | from django.conf.urls.defaults import * | ||||||
| from conservancy.feeds import feed_dict | from conservancy.feeds import feed_dict | ||||||
| 
 | 
 | ||||||
| handler404 = 'modpythoncustom.view404' | handler404 = 'modpythoncustom.view404' | ||||||
| 
 | 
 | ||||||
|  | admin.autodiscover() | ||||||
|  | 
 | ||||||
| urlpatterns = patterns('', | urlpatterns = patterns('', | ||||||
|  |     (r'^admin/doc/', include('django.contrib.admindocs.urls')), | ||||||
|  |     (r'^admin/(.*)', admin.site.root), | ||||||
|     (r'^$', 'conservancy.frontpage.view'), |     (r'^$', 'conservancy.frontpage.view'), | ||||||
|     (r'^feeds/(?P<url>.*)/?$', 'django.contrib.syndication.views.feed', |     (r'^feeds/(?P<url>.*)/?$', 'django.contrib.syndication.views.feed', | ||||||
|      {'feed_dict': feed_dict}), |      {'feed_dict': feed_dict}), | ||||||
|  |  | ||||||
|  | @ -1,32 +0,0 @@ | ||||||
| # Copyright 2005-2008, James Garrison |  | ||||||
| # Copyright 2010, Bradley M. Kuhn |  | ||||||
| 
 |  | ||||||
| # This software's license gives you freedom; you can copy, convey, |  | ||||||
| # propagate, redistribute, modify and/or redistribute modified versions of |  | ||||||
| # this program under the terms of the GNU Affero General Public License |  | ||||||
| # (AGPL) as published by the Free Software Foundation (FSF), either |  | ||||||
| # version 3 of the License, or (at your option) any later version of the |  | ||||||
| # AGPL published by the FSF. |  | ||||||
| # |  | ||||||
| # This program is distributed in the hope that it will be useful, but |  | ||||||
| # WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero |  | ||||||
| # General Public License for more details. |  | ||||||
| # |  | ||||||
| # You should have received a copy of the GNU Affero General Public License |  | ||||||
| # along with this program in a file in the toplevel directory called |  | ||||||
| # "AGPLv3".  If not, see <http://www.gnu.org/licenses/>. |  | ||||||
| 
 |  | ||||||
| from django import http |  | ||||||
| 
 |  | ||||||
| class RedirectToNonSslSite(object): |  | ||||||
| 
 |  | ||||||
|     def process_request(self, request): |  | ||||||
|         """Redirect to non-SSL site if not an admin request |  | ||||||
|         """ |  | ||||||
| 
 |  | ||||||
|         if not request.path.startswith('/admin'): |  | ||||||
|             url = 'http://www.sfconservancy.org%s' % request.path |  | ||||||
|             return http.HttpResponseRedirect(url) |  | ||||||
| 
 |  | ||||||
|         return None |  | ||||||
|  | @ -1,24 +0,0 @@ | ||||||
| # Copyright 2005-2008, James Garrison |  | ||||||
| # Copyright 2010, Bradley M. Kuhn |  | ||||||
| 
 |  | ||||||
| # This software's license gives you freedom; you can copy, convey, |  | ||||||
| # propagate, redistribute, modify and/or redistribute modified versions of |  | ||||||
| # this program under the terms of the GNU Affero General Public License |  | ||||||
| # (AGPL) as published by the Free Software Foundation (FSF), either |  | ||||||
| # version 3 of the License, or (at your option) any later version of the |  | ||||||
| # AGPL published by the FSF. |  | ||||||
| # |  | ||||||
| # This program is distributed in the hope that it will be useful, but |  | ||||||
| # WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero |  | ||||||
| # General Public License for more details. |  | ||||||
| # |  | ||||||
| # You should have received a copy of the GNU Affero General Public License |  | ||||||
| # along with this program in a file in the toplevel directory called |  | ||||||
| # "AGPLv3".  If not, see <http://www.gnu.org/licenses/>. |  | ||||||
| 
 |  | ||||||
| from conservancy.settings import * |  | ||||||
| 
 |  | ||||||
| ROOT_URLCONF = 'conservancy_ssl.urls' |  | ||||||
| 
 |  | ||||||
| MIDDLEWARE_CLASSES += ('conservancy_ssl.middleware.RedirectToNonSslSite',) |  | ||||||
|  | @ -1,33 +0,0 @@ | ||||||
| # Copyright 2005-2008, James Garrison |  | ||||||
| # Copyright 2010, Bradley M. Kuhn |  | ||||||
| 
 |  | ||||||
| # This software's license gives you freedom; you can copy, convey, |  | ||||||
| # propagate, redistribute, modify and/or redistribute modified versions of |  | ||||||
| # this program under the terms of the GNU Affero General Public License |  | ||||||
| # (AGPL) as published by the Free Software Foundation (FSF), either |  | ||||||
| # version 3 of the License, or (at your option) any later version of the |  | ||||||
| # AGPL published by the FSF. |  | ||||||
| # |  | ||||||
| # This program is distributed in the hope that it will be useful, but |  | ||||||
| # WITHOUT ANY WARRANTY; without even the implied warranty of |  | ||||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero |  | ||||||
| # General Public License for more details. |  | ||||||
| # |  | ||||||
| # You should have received a copy of the GNU Affero General Public License |  | ||||||
| # along with this program in a file in the toplevel directory called |  | ||||||
| # "AGPLv3".  If not, see <http://www.gnu.org/licenses/>. |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| # Start with typical conservancy url scheme.  The middleware will |  | ||||||
| # intercept non-admin requests, but having the main conservancy urlconf |  | ||||||
| # repeated here allows us to browse the automatic documentation in the |  | ||||||
| # admin interface. |  | ||||||
| 
 |  | ||||||
| from conservancy.urls import * |  | ||||||
| from django.contrib import admin |  | ||||||
| 
 |  | ||||||
| admin.autodiscover() |  | ||||||
| 
 |  | ||||||
| urlpatterns += patterns('', |  | ||||||
|                         (r'^admin/doc/', include('django.contrib.admindocs.urls')), |  | ||||||
|                         (r'^admin/(.*)', admin.site.root),) |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Bradley M. Kuhn
						Bradley M. Kuhn