mirror of
https://github.com/jupyterhub/jupyterhub.git
synced 2025-10-16 14:33:00 +00:00
@@ -58,7 +58,7 @@ class ProxyAPIHandler(APIHandler):
|
||||
if 'auth_token' in model:
|
||||
self.proxy.auth_token = model['auth_token']
|
||||
self.db.commit()
|
||||
self.log.info("Updated proxy at %s", server.url)
|
||||
self.log.info("Updated proxy at %s", server.bind_url)
|
||||
yield self.proxy.check_routes()
|
||||
|
||||
|
||||
|
@@ -710,13 +710,13 @@ class JupyterHub(Application):
|
||||
if isinstance(e, HTTPError) and e.code == 403:
|
||||
msg = "Did CONFIGPROXY_AUTH_TOKEN change?"
|
||||
else:
|
||||
msg = "Is something else using %s?" % self.proxy.public_server.url
|
||||
msg = "Is something else using %s?" % self.proxy.public_server.bind_url
|
||||
self.log.error("Proxy appears to be running at %s, but I can't access it (%s)\n%s",
|
||||
self.proxy.public_server.url, e, msg)
|
||||
self.proxy.public_server.bind_url, e, msg)
|
||||
self.exit(1)
|
||||
return
|
||||
else:
|
||||
self.log.info("Proxy already running at: %s", self.proxy.public_server.url)
|
||||
self.log.info("Proxy already running at: %s", self.proxy.public_server.bind_url)
|
||||
self.proxy_process = None
|
||||
return
|
||||
|
||||
@@ -735,7 +735,7 @@ class JupyterHub(Application):
|
||||
cmd.extend(['--ssl-key', self.ssl_key])
|
||||
if self.ssl_cert:
|
||||
cmd.extend(['--ssl-cert', self.ssl_cert])
|
||||
self.log.info("Starting proxy @ %s", self.proxy.public_server.url)
|
||||
self.log.info("Starting proxy @ %s", self.proxy.public_server.bind_url)
|
||||
self.log.debug("Proxy cmd: %s", cmd)
|
||||
try:
|
||||
self.proxy_process = Popen(cmd, env=env)
|
||||
@@ -992,7 +992,13 @@ class JupyterHub(Application):
|
||||
|
||||
# start the webserver
|
||||
self.http_server = tornado.httpserver.HTTPServer(self.tornado_application, xheaders=True)
|
||||
try:
|
||||
self.http_server.listen(self.hub_port)
|
||||
except Exception:
|
||||
self.log.error("Failed to bind hub to %s" % self.hub.server.bind_url)
|
||||
raise
|
||||
else:
|
||||
self.log.info("Hub API listening on %s" % self.hub.server.bind_url)
|
||||
|
||||
# register cleanup on both TERM and INT
|
||||
atexit.register(self.atexit)
|
||||
|
@@ -75,9 +75,13 @@ class Server(Base):
|
||||
|
||||
@property
|
||||
def host(self):
|
||||
ip = self.ip
|
||||
if ip in {'', '0.0.0.0'}:
|
||||
# when listening on all interfaces, connect to localhost
|
||||
ip = 'localhost'
|
||||
return "{proto}://{ip}:{port}".format(
|
||||
proto=self.proto,
|
||||
ip=self.ip or 'localhost',
|
||||
ip=ip,
|
||||
port=self.port,
|
||||
)
|
||||
|
||||
@@ -88,6 +92,17 @@ class Server(Base):
|
||||
uri=self.base_url,
|
||||
)
|
||||
|
||||
@property
|
||||
def bind_url(self):
|
||||
"""representation of URL used for binding
|
||||
|
||||
Never used in APIs, only logging,
|
||||
since it can be non-connectable value, such as '', meaning all interfaces.
|
||||
"""
|
||||
if self.ip in {'', '0.0.0.0'}:
|
||||
return self.url.replace('localhost', self.ip or '*', 1)
|
||||
return self.url
|
||||
|
||||
@gen.coroutine
|
||||
def wait_up(self, timeout=10, http=False):
|
||||
"""Wait for this server to come up"""
|
||||
|
@@ -21,6 +21,7 @@ def test_server(db):
|
||||
assert isinstance(server.cookie_name, str)
|
||||
assert server.host == 'http://localhost:%i' % server.port
|
||||
assert server.url == server.host + '/'
|
||||
assert server.bind_url == 'http://*:%i/' % server.port
|
||||
server.ip = '127.0.0.1'
|
||||
assert server.host == 'http://127.0.0.1:%i' % server.port
|
||||
assert server.url == server.host + '/'
|
||||
|
Reference in New Issue
Block a user