From e43eb563a1fc57773db412d90ebcc8b704ef45f9 Mon Sep 17 00:00:00 2001 From: gifrerenom <lluis.gifre@cttc.es> Date: Fri, 4 Nov 2022 17:02:39 +0000 Subject: [PATCH] WebUI component: - updated cookie name to prevent cross-instance session data leakage. otherwise, selected topology in one instance, is used in other instances. - added Slice component as a dependency of WebUI --- src/webui/service/__main__.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/webui/service/__main__.py b/src/webui/service/__main__.py index c194be4bc..ddbda9c51 100644 --- a/src/webui/service/__main__.py +++ b/src/webui/service/__main__.py @@ -12,15 +12,22 @@ # See the License for the specific language governing permissions and # limitations under the License. -import os, sys, logging +import hashlib, sys, logging from prometheus_client import start_http_server from common.Constants import ServiceNameEnum from common.Settings import ( - ENVVAR_SUFIX_SERVICE_HOST, ENVVAR_SUFIX_SERVICE_PORT_GRPC, get_env_var_name, get_log_level, get_metrics_port, get_service_baseurl_http, - get_service_port_http, get_setting, wait_for_environment_variables) + ENVVAR_SUFIX_SERVICE_HOST, ENVVAR_SUFIX_SERVICE_PORT_GRPC, get_env_var_name, get_log_level, get_metrics_port, + get_service_baseurl_http, get_service_port_http, get_setting, wait_for_environment_variables) from webui.service import create_app from webui.Config import MAX_CONTENT_LENGTH, HOST, SECRET_KEY, DEBUG +def create_unique_session_cookie_name() -> str: + hostname = get_setting('HOSTNAME') + if hostname is None: return 'session' + hasher = hashlib.blake2b(digest_size=8) + hasher.update(hostname.encode('UTF-8')) + return 'session:{:s}'.format(str(hasher.hexdigest())) + def main(): log_level = get_log_level() logging.basicConfig(level=log_level) @@ -33,6 +40,8 @@ def main(): get_env_var_name(ServiceNameEnum.DEVICE, ENVVAR_SUFIX_SERVICE_PORT_GRPC), get_env_var_name(ServiceNameEnum.SERVICE, ENVVAR_SUFIX_SERVICE_HOST ), get_env_var_name(ServiceNameEnum.SERVICE, ENVVAR_SUFIX_SERVICE_PORT_GRPC), + get_env_var_name(ServiceNameEnum.SLICE, ENVVAR_SUFIX_SERVICE_HOST ), + get_env_var_name(ServiceNameEnum.SLICE, ENVVAR_SUFIX_SERVICE_PORT_GRPC), ]) logger.info('Starting...') @@ -49,6 +58,7 @@ def main(): app = create_app(use_config={ 'SECRET_KEY': SECRET_KEY, 'MAX_CONTENT_LENGTH': MAX_CONTENT_LENGTH, + 'SESSION_COOKIE_NAME': create_unique_session_cookie_name(), }, web_app_root=web_app_root) app.run(host=host, port=service_port, debug=debug) -- GitLab