Example #1
0
    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
Example #2
0
 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)
Example #3
0
    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)
Example #4
0
    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)
Example #5
0
    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)
Example #6
0
    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)
Example #7
0
 def test_connection_pool_singleton(self):
     view1 = ProxyView()
     view2 = ProxyView()
     self.assertIs(view1.http, view2.http)
Example #8
0
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)
Example #9
0
"""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/')),
]
Example #10
0
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))
    ])
Example #11
0
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')),
]
Example #13
0
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)),
]
Example #14
0
 def test_default_attributes(self):
     proxy_view = ProxyView()
     self.assertFalse(proxy_view.add_remote_user)
     self.assertFalse(proxy_view.add_x_forwarded)
Example #15
0
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
Example #16
0
    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')),
]
Example #17
0
 def test_default_add_remote_user_attr(self):
     proxy_view = ProxyView()
     self.assertFalse(proxy_view.add_remote_user)
Example #18
0
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')),
]
Example #19
0
    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)),
        ]
Example #20
0
 def test_upstream_not_implemented(self):
     proxy_view = ProxyView()
     with self.assertRaises(NotImplementedError):
         upstream = proxy_view.upstream
Example #21
0
"""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'))
]