Skip to content

Instantly share code, notes, and snippets.

@manics
Last active June 29, 2026 13:18
Show Gist options
  • Select an option

  • Save manics/3bb2a4b0ffdb1a1311386f3f95c38d50 to your computer and use it in GitHub Desktop.

Select an option

Save manics/3bb2a4b0ffdb1a1311386f3f95c38d50 to your computer and use it in GitHub Desktop.
repo2docker start env
{
"ServerApp": {
"jpserver_extensions": {
"insecure_param_setenv_ext": true
}
}
}
import os
from jupyter_server.auth import authorized
from jupyter_server.extension.application import ExtensionApp
from jupyter_server.base.handlers import JupyterHandler
class InsecureParamSetenvHandler(JupyterHandler):
@authorized
def get(self):
for key in self.request.query_arguments:
val = self.get_query_argument(key)
name = key.upper()
self.log.info(f"INSECURE: Setting secure environment variable from URL parameter: {name}={val}")
os.environ[name] = val
self.redirect(self.settings.get("lab_url", "/lab"))
class InsecureParamSetenvExtension(ExtensionApp):
name = "insecure_param_setenv_ext"
def initialize_handlers(self):
self.handlers.extend([
(r"/insecure-param-setenv", InsecureParamSetenvHandler)
])
def _jupyter_server_extension_points():
"""
Returns a list of dictionaries with metadata describing
where to find the `_load_jupyter_server_extension` function.
"""
return [{"module": "insecure_param_setenv_ext"}]
def _load_jupyter_server_extension(serverapp: jupyter_server.serverapp.ServerApp):
handlers = [("/insecure-param-setenv", InsecureParamSetenvExtension)]
serverapp.web_app.add_handlers(".*$", handlers)
# main = launch_instance = InsecureParamSetenvExtension.launch_instance
#!/bin/bash
set -eux
USER_SITE_DIR=$(python -msite --user-site)
mkdir -p "$USER_SITE_DIR"
mv insecure_param_setenv_ext.py "$USER_SITE_DIR"
mv insecure_param_setenv_ext.json /srv/conda/envs/notebook/etc/jupyter/jupyter_server_config.d/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment