def dispatch(self, request, path): if request.is_secure(): scheme = 'https://' else: scheme = 'http://' request_abs_path = scheme + request.get_host() + '/blog/' response = ProxyView.dispatch(self, request, path) response.content = response.content.replace(BlogProxyView.upstream, request_abs_path) return response
def _internal_proxy_view(self, request, container_url, path_url): # Any dependencies on the 3rd party proxy should be contained here. try: # pragma: no cover view = ProxyView.as_view( upstream=container_url, add_remote_user=True) if not hasattr(request, 'user'): request.user = _AnonUser() return view(request, path=path_url) except MaxRetryError as e: # pragma: no cover logger.info('Normal transient error: %s', e) view = self._please_wait_view_factory(e).as_view() return view(request)
def test_set_upstream_as_argument(self): url = 'http://example.com/' view = ProxyView.as_view(upstream=url) request = self.factory.get('/') response = view(request, '/') headers = {u'Cookie': u''} self.urlopen.assert_called_with('GET', url, body=b'', redirect=False, retries=None, preload_content=False, decode_content=False, headers=headers)
def test_set_upstream_as_argument(self): url = 'http://example.com/' view = ProxyView.as_view(upstream=url) request = self.factory.get('') response = view(request, '') headers = {u'Cookie': u''} self.urlopen.assert_called_with('GET', url, body=b'', redirect=False, retries=None, preload_content=False, decode_content=False, headers=headers)
def test_url_injection(self): path = 'http://example.org' request = self.factory.get(path) view = ProxyView.as_view(upstream='http://example.com/') view(request, path) headers = {u'Cookie': u''} url = 'http://example.com/http://example.org' self.urlopen.assert_called_with('GET', url, body=b'', redirect=False, retries=None, preload_content=False, decode_content=False, headers=headers)
def test_connection_pool_singleton(self): view1 = ProxyView() view2 = ProxyView() self.assertIs(view1.http, view2.http)
from django.conf import settings from django.views.decorators.csrf import ensure_csrf_cookie from revproxy.views import ProxyView view = ProxyView.as_view(upstream=settings.PROXY_FRONTEND) @ensure_csrf_cookie def proxy_frontend(*args, **kwargs): """ Wrapper for calls to the SPA ensuring the precense of a CSRF cookie.""" global view return view(*args, **kwargs)
"""server URL Configuration The `urlpatterns` list routes URLs to views. For more information please see: https://docs.djangoproject.com/en/1.10/topics/http/urls/ Examples: Function views 1. Add an import: from my_app import views 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home') Class-based views 1. Add an import: from other_app.views import Home 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home') Including another URLconf 1. Import the include() function: from django.conf.urls import url, include 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) """ from django.conf.urls import url from django.contrib import admin from revproxy.views import ProxyView from . import views urlpatterns = [ url(r'^_/job/save', views.save_job, name='save_job'), url(r'^_/job/get', views.get_job, name='get_job'), url(r'^_/job/del', views.delete_saved_job, name='delete_saved'), url(r'^_/jobs/saved', views.get_saved_jobs, name='get_saved_jobs'), url(r'^_/jobs', views.jobs, name='jobs'), url(r'^admin/', admin.site.urls), url(r'^_/login', views.get_id, name='get_id'), url(r'^(?P<path>.*)$', ProxyView.as_view(upstream='http://localhost:3000/')), ]
from django.views.generic.base import RedirectView from django.contrib.staticfiles.storage import staticfiles_storage from revproxy.views import ProxyView from osf_oauth2_adapter import views as osf_oauth2_adapter_views from api.views import APIVersionRedirectView, user_favicon_view urlpatterns = [ url(r'^admin/', admin.site.urls), # url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')), url(r'^api/v2/', include('api.urls', namespace='api')), url(r'^api/(?P<path>(?!v\d+).*)', APIVersionRedirectView.as_view()), url(r'^api/v1/', include('api.urls_v1', namespace='api_v1')), url(r'^o/', include('oauth2_provider.urls', namespace='oauth2_provider')), url(r'^accounts/social/login/cancelled/', osf_oauth2_adapter_views.login_errored_cancelled), url(r'^accounts/social/login/error/', osf_oauth2_adapter_views.login_errored_cancelled), url(r'^accounts/', include('allauth.urls')), url(r'^$', RedirectView.as_view(url='{}/'.format(settings.EMBER_SHARE_PREFIX))), url(r'^favicon.ico$', RedirectView.as_view( url=staticfiles_storage.url('favicon.ico'), permanent=False ), name='favicon'), url(r'^favicons/(?P<username>[^/]+).ico$', user_favicon_view, name='user_favicon'), ] if settings.DEBUG: urlpatterns.extend([ url(r'^(?P<path>{}/.*)$'.format(settings.EMBER_SHARE_PREFIX), ProxyView.as_view(upstream=settings.EMBER_SHARE_URL)) ])
from django.conf.urls import include, url from django.contrib import admin from django.conf import settings from revproxy.views import ProxyView urlpatterns = [ url(r'^api/admin/', include(admin.site.urls)), url(r'^api/greetings/', include('greetings.urls')), url(r'^(?P<path>api/clients/.*)$', ProxyView.as_view(upstream=settings.AUTH_API_ROOT)), url(r'^(?P<path>api/users/.*)$', ProxyView.as_view(upstream=settings.AUTH_API_ROOT)), ]
"""oidc_client_poc URL Configuration The `urlpatterns` list routes URLs to views. For more information please see: https://docs.djangoproject.com/en/1.11/topics/http/urls/ Examples: Function views 1. Add an import: from my_app import views 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home') Class-based views 1. Add an import: from other_app.views import Home 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home') Including another URLconf 1. Import the include() function: from django.conf.urls import url, include 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) """ from django.conf.urls import url, include from django.contrib.auth import views as auth_views from django.contrib.auth.decorators import login_required from django.contrib import admin from revproxy.views import ProxyView urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^accounts/login/$', auth_views.login, name='login'), url(r'^accounts/logout/$', auth_views.logout, name='logout'), url(r'^vnc/(?P<path>.*)$', login_required(ProxyView.as_view(upstream='http://127.0.0.1:6080/'))), url(r'^oidc/', include('mozilla_django_oidc.urls')), ]
from django.conf import settings from django.conf.urls import include, url from django.contrib import admin from django.views import generic from revproxy.views import ProxyView urlpatterns = [ url(r'^admin/', include(admin.site.urls)), url(r'^$', generic.RedirectView.as_view(url='/index.html', permanent=False), name='home'), url(r'coc/?$', generic.RedirectView.as_view(url='/pages/code-of-conduct.html')), url(r'^(?P<path>.*)$', ProxyView.as_view(upstream=settings.PYTHONSD_STATIC_SITE)), ]
def test_default_attributes(self): proxy_view = ProxyView() self.assertFalse(proxy_view.add_remote_user) self.assertFalse(proxy_view.add_x_forwarded)
from django.conf import settings from django.conf.urls import include, url from django.contrib import admin from revproxy.views import ProxyView urlpatterns = [ url(r"^{}/".format(settings.ADMIN_URL), include(admin.site.urls)), url(r"^", include("pythonsd.urls")), # Proxy all unmatched requests to the static Pelican site # This rule should come absolutely last url(r"^(?P<path>.*)$", ProxyView.as_view(upstream=settings.PYTHONSD_STATIC_SITE)), ] if settings.DEBUG: # pragma: no cover import debug_toolbar urlpatterns = [url(r"^__debug__/", include(debug_toolbar.urls)) ] + urlpatterns
1. Add an import: from my_app import views 2. Add a URL to urlpatterns: path('', views.home, name='home') Class-based views 1. Add an import: from other_app.views import Home 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') Including another URLconf 1. Import the include() function: from django.urls import include, path 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ from django.contrib import admin from django.urls import path, include, re_path from django.conf import settings from django.conf.urls.static import static from rest_framework.documentation import include_docs_urls from revproxy.views import ProxyView urlpatterns = [ path('admin/', admin.site.urls), path( 'docs/', include_docs_urls(title='API Docs', authentication_classes=[], permission_classes=[])), path('api/', include('BackendManagement.urls')), ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) urlpatterns += [ re_path(r'^(?P<path>.*)$', ProxyView.as_view(upstream='http://10.172.151.31:8080')), ]
def test_default_add_remote_user_attr(self): proxy_view = ProxyView() self.assertFalse(proxy_view.add_remote_user)
Class-based views 1. Add an import: from other_app.views import Home 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home') Including another URLconf 1. Import the include() function: from django.conf.urls import url, include 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) """ from django.conf.urls import url from django.urls import path, include from django.views.generic.base import TemplateView from django.contrib import admin from django.contrib.auth import views as auth_views from django.http import JsonResponse from revproxy.views import ProxyView from django.contrib.auth.decorators import login_required urlpatterns = [ url(r'^admin/', admin.site.urls), path('', TemplateView.as_view(template_name='home.html'), name='home'), path(r'accounts/', include('django.contrib.auth.urls')), url(r'^amidala/(?P<path>.*)$', login_required(ProxyView.as_view(upstream='http://downstream:8080/'))), url( r'^sentinel/(?P<path>.*)$', login_required( ProxyView.as_view(upstream='http://downstreamhtml:80/'))), url('^', include('django.contrib.auth.urls')), ]
url(r'^api/v1/', include('api.urls_v1', namespace='api_v1')), url(r'^oai-pmh/', OAIPMHView.as_view(), name='oai-pmh'), url(r'^o/', include('oauth2_provider.urls', namespace='oauth2_provider')), url(r'^accounts/social/login/cancelled/', osf_oauth2_adapter_views.login_errored_cancelled), url(r'^accounts/social/login/error/', osf_oauth2_adapter_views.login_errored_cancelled), url(r'^accounts/', include('allauth.urls')), url(r'^$', RedirectView.as_view(url='{}/'.format(settings.EMBER_SHARE_PREFIX))), url(r'^favicon.ico$', RedirectView.as_view(url=staticfiles_storage.url('favicon.ico'), permanent=False), name='favicon'), url(r'^icons/(?P<source_name>[^/]+).ico$', source_icon_view, name='source_icon'), ] if settings.DEBUG: urlpatterns += [ url(r'^(?P<path>{}/.*)$'.format(settings.EMBER_SHARE_PREFIX), ProxyView.as_view(upstream=settings.EMBER_SHARE_URL)), ] if 'debug_toolbar' in settings.INSTALLED_APPS: import debug_toolbar urlpatterns += [ url(r'^__debug__/', include(debug_toolbar.urls)), ]
def test_upstream_not_implemented(self): proxy_view = ProxyView() with self.assertRaises(NotImplementedError): upstream = proxy_view.upstream
"""proxy_text URL Configuration The `urlpatterns` list routes URLs to views. For more information please see: https://docs.djangoproject.com/en/2.1/topics/http/urls/ Examples: Function views 1. Add an import: from my_app import views 2. Add a URL to urlpatterns: path('', views.home, name='home') Class-based views 1. Add an import: from other_app.views import Home 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') Including another URLconf 1. Import the include() function: from django.urls import include, path 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ from django.conf.urls import url from django.contrib import admin from django.urls import path from revproxy.views import ProxyView urlpatterns = [ path('admin/', admin.site.urls), url(r'^(?P<path>.*)$', ProxyView.as_view(upstream='http://www.google.com')) ]