From a051373ee9bd603832ff219339b2e37635f7c2cb Mon Sep 17 00:00:00 2001 From: MinerYang Date: Mon, 24 Apr 2023 09:52:17 +0800 Subject: [PATCH] [cherry-pick]allow redis password safe special characters on release-2.7.0 (#18586) allow redis password safe special characters Signed-off-by: yminer string and None type conversion --- make/photon/prepare/utils/configs.py | 4 ++-- make/photon/prepare/utils/registry.py | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/make/photon/prepare/utils/configs.py b/make/photon/prepare/utils/configs.py index a951b95f8cc..d0052b8966c 100644 --- a/make/photon/prepare/utils/configs.py +++ b/make/photon/prepare/utils/configs.py @@ -1,7 +1,7 @@ import logging import os import yaml -from urllib.parse import urlencode +from urllib.parse import urlencode, quote from g import versions_file_path, host_root_dir, DEFAULT_UID, INTERNAL_NO_PROXY_DN from models import InternalTLS, Metric, Trace, PurgeUpload, Cache from utils.misc import generate_random_string, owner_can_read, other_can_read @@ -393,7 +393,7 @@ def get_redis_url(db, redis=None): kwargs['scheme'] = kwargs.get('sentinel_master_set', None) and 'redis+sentinel' or 'redis' kwargs['db_part'] = db and ("/%s" % db) or "" kwargs['sentinel_part'] = kwargs.get('sentinel_master_set', None) and ("/" + kwargs['sentinel_master_set']) or '' - kwargs['password_part'] = kwargs.get('password', None) and (':%s@' % kwargs['password']) or '' + kwargs['password_part'] = quote(str(kwargs.get('password', None)), safe='') and (':%s@' % quote(str(kwargs['password']), safe='')) or '' return "{scheme}://{password_part}{host}{sentinel_part}{db_part}".format(**kwargs) + get_redis_url_param(kwargs) diff --git a/make/photon/prepare/utils/registry.py b/make/photon/prepare/utils/registry.py index 8d8e1e9952e..081e7684184 100644 --- a/make/photon/prepare/utils/registry.py +++ b/make/photon/prepare/utils/registry.py @@ -2,7 +2,7 @@ import os import subprocess from g import config_dir, templates_dir, DEFAULT_GID, DEFAULT_UID, data_dir -from urllib.parse import urlsplit +from urllib.parse import urlsplit, unquote from utils.jinja import render_jinja from utils.misc import prepare_dir @@ -46,14 +46,14 @@ def parse_redis(redis_url): if not u.scheme or u.scheme == 'redis': return { 'redis_host': u.netloc.split('@')[-1], - 'redis_password': u.password or '', + 'redis_password': '' if u.password is None else unquote(u.password), 'redis_db_index_reg': u.path and int(u.path[1:]) or 0, } elif u.scheme == 'redis+sentinel': return { 'sentinel_master_set': u.path.split('/')[1], 'redis_host': u.netloc.split('@')[-1], - 'redis_password': u.password or '', + 'redis_password': '' if u.password is None else unquote(u.password), 'redis_db_index_reg': len(u.path.split('/')) == 3 and int(u.path.split('/')[2]) or 0, } else: