remove BROKER_URL special password handling

* BROKER_URL now describes how to connect to redis. We use a unix socket
to connect to redis. Therefore, no longer need to support fancy uri's
that contain fancy characters in the password.
This commit is contained in:
chris meyers
2020-03-19 15:10:30 -04:00
parent 8a917a5b70
commit 06f065766f

View File

@@ -1,11 +1,9 @@
# Python # Python
import contextlib import contextlib
import logging import logging
import re
import sys import sys
import threading import threading
import time import time
import urllib.parse
# Django # Django
from django.conf import LazySettings from django.conf import LazySettings
@@ -57,15 +55,6 @@ SETTING_CACHE_DEFAULTS = True
__all__ = ['SettingsWrapper', 'get_settings_to_cache', 'SETTING_CACHE_NOTSET'] __all__ = ['SettingsWrapper', 'get_settings_to_cache', 'SETTING_CACHE_NOTSET']
def normalize_broker_url(value):
parts = value.rsplit('@', 1)
match = re.search('(amqp://[^:]+:)(.*)', parts[0])
if match:
prefix, password = match.group(1), match.group(2)
parts[0] = prefix + urllib.parse.quote(password)
return '@'.join(parts)
@contextlib.contextmanager @contextlib.contextmanager
def _ctit_db_wrapper(trans_safe=False): def _ctit_db_wrapper(trans_safe=False):
''' '''
@@ -415,16 +404,7 @@ class SettingsWrapper(UserSettingsHolder):
value = self._get_local(name) value = self._get_local(name)
if value is not empty: if value is not empty:
return value return value
value = self._get_default(name) return self._get_default(name)
# sometimes users specify RabbitMQ passwords that contain
# unescaped : and @ characters that confused urlparse, e.g.,
# amqp://guest:a@ns:ibl3#@localhost:5672//
#
# detect these scenarios, and automatically escape the user's
# password so it just works
if name == 'BROKER_URL':
value = normalize_broker_url(value)
return value
def _set_local(self, name, value): def _set_local(self, name, value):
field = self.registry.get_setting_field(name) field = self.registry.get_setting_field(name)