Skip to content

Commit baa7748

Browse files
committed
update nestsrv-url and -port
1 parent 40a8732 commit baa7748

File tree

1 file changed

+38
-12
lines changed

1 file changed

+38
-12
lines changed

jupyter_nestdesktop_proxy/__init__.py

Lines changed: 38 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,20 @@ def get_nestdesktop_executable(prog):
3131

3232
raise FileNotFoundError(f'Could not find {prog} in PATH')
3333

34+
3435
def _nestdesktop_urlparams():
3536

36-
url_params = '?' + '&'.join([
37-
'token=' + _nestsrv_token,
38-
])
37+
nestsrv_urlparam = None
38+
if _nestsrv_url:
39+
nestsrv_urlparam = 'nest_server_url=' + _nestsrv_url
40+
nestsrv_tokenparam = None
41+
if _nestsrv_token:
42+
nestsrv_tokenparam = 'nest_server_access_token=' + _nestsrv_token
43+
44+
url_params = ''
45+
url_paramlist = [param for param in (nestsrv_urlparam, nestsrv_tokenparam) if param is not None]
46+
if url_paramlist:
47+
url_params = '?' + '&'.join(url_paramlist)
3948

4049
return url_params
4150

@@ -53,13 +62,22 @@ def setup_nestdesktop():
5362
""" Setup commands and and return a dictionary compatible
5463
with jupyter-server-proxy.
5564
"""
65+
from re import sub
5666
from tempfile import mkstemp
5767
from random import choice
5868
from string import ascii_letters, digits
69+
from urllib.parse import urlparse
5970

6071
global _nestsrv_url, _nestsrv_token
6172

62-
# password generator
73+
# check for a free port
74+
import socket
75+
s=socket.socket()
76+
s.bind(("", 0))
77+
nestsrv_port = s.getsockname()[1]
78+
s.close()
79+
80+
# token generator
6381
def _get_random_alphanumeric_string(length):
6482
letters_and_digits = ascii_letters + digits
6583
return (''.join((choice(letters_and_digits) for i in range(length))))
@@ -76,17 +94,25 @@ def _get_random_alphanumeric_string(length):
7694
logger.error("Passwd generation in temp file FAILED")
7795
raise FileNotFoundError("Passwd generation in temp file FAILED")
7896

97+
# generate nest-server url
98+
jhub_apiurl = os.environ.get('JUPYTERHUB_API_URL')
99+
jlab_urlprefix = os.environ.get('JUPYTERHUB_SERVICE_PREFIX')
100+
if jhub_apiurl and jlab_urlprefix:
101+
parsed_url = urlparse(jhub_apiurl)
102+
_nestsrv_url = (
103+
f"{parsed_url.scheme}://{parsed_url.netloc}" +
104+
sub(r'/+', '/', '/'.join([
105+
jlab_urlprefix,
106+
'proxy',
107+
str(nestsrv_port)
108+
]))
109+
)
110+
else:
111+
_nestsrv_url = 'http://localhost:' + str(nestsrv_port)
112+
79113
# launchers url file including url parameters
80114
path_info = 'nestdesktop/index.html' + _nestdesktop_urlparams()
81115

82-
# check for a free port
83-
#import socket
84-
#s=socket.socket()
85-
#s.bind(("", 0))
86-
#nestsrv_port = s.getsockname()[1]
87-
#s.close()
88-
nestsrv_port = 52425
89-
90116
# create command
91117
cmd = [
92118
get_nestdesktop_executable('nest-desktop'),

0 commit comments

Comments
 (0)