@@ -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
338372class 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