Skip to content

Commit 4812d41

Browse files
Allow proxying to remote host
1 parent e9a132d commit 4812d41

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
*.pyc
2+
*.egg-info/
23
docs/_build
34
node_modules

jupyter_server_proxy/handlers.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,40 @@ def proxy(self, port, proxied_path):
334334
return super().proxy('localhost', port, proxied_path)
335335

336336

337+
class RemoteProxyHandler(ProxyHandler):
338+
"""
339+
A tornado request handler that proxies HTTP and websockets
340+
from a port on a specified remote system.
341+
"""
342+
343+
async def http_get(self, host, port, proxied_path):
344+
return await self.proxy(host, port, proxied_path)
345+
346+
def post(self, host, port, proxied_path):
347+
return self.proxy(host, port, proxied_path)
348+
349+
def put(self, host, port, proxied_path):
350+
return self.proxy(host, port, proxied_path)
351+
352+
def delete(self, host, port, proxied_path):
353+
return self.proxy(host, port, proxied_path)
354+
355+
def head(self, host, port, proxied_path):
356+
return self.proxy(host, port, proxied_path)
357+
358+
def patch(self, host, port, proxied_path):
359+
return self.proxy(host, port, proxied_path)
360+
361+
def options(self, host, port, proxied_path):
362+
return self.proxy(host, port, proxied_path)
363+
364+
async def open(self, host, port, proxied_path):
365+
return await self.proxy_open(host, port, proxied_path)
366+
367+
def proxy(self, host, port, proxied_path):
368+
return super().proxy(host, port, proxied_path)
369+
370+
337371
# FIXME: Move this to its own file. Too many packages now import this from nbrserverproxy.handlers
338372
class SuperviseAndProxyHandler(LocalProxyHandler):
339373
'''Manage a given process and requests to it '''
@@ -474,6 +508,10 @@ def setup_handlers(web_app):
474508
LocalProxyHandler, {'absolute_url': False}),
475509
(url_path_join(web_app.settings['base_url'], r'/proxy/absolute/(\d+)(.*)'),
476510
LocalProxyHandler, {'absolute_url': True}),
511+
(url_path_join(web_app.settings['base_url'], r'/proxy/(.*):(\d+)(.*)'),
512+
RemoteProxyHandler, {'absolute_url': False}),
513+
(url_path_join(web_app.settings['base_url'], r'/proxy/absolute/(.*):(\d+)(.*)'),
514+
RemoteProxyHandler, {'absolute_url': True}),
477515
])
478516

479517
# vim: set et ts=4 sw=4:

0 commit comments

Comments
 (0)