|
| 1 | +import os |
| 2 | +import re |
| 3 | + |
| 4 | + |
| 5 | +def parse_extra_bind_settings(extra_bind_settings): |
| 6 | + bind_dict = {} |
| 7 | + if extra_bind_settings: |
| 8 | + settings = re.split(r'(?<!\\),', extra_bind_settings) |
| 9 | + for setting in settings: |
| 10 | + term = setting.split(":", 1) |
| 11 | + if len(term) == 2: |
| 12 | + bind_dict[term[0].strip().replace("\,", ",")] = term[1].strip().replace("\,", ",") |
| 13 | + return bind_dict |
| 14 | + |
| 15 | + |
| 16 | +# envvar |
| 17 | +DEFAULT_SSL_CERT = os.getenv("DEFAULT_SSL_CERT") or os.getenv("SSL_CERT") |
| 18 | +EXTRA_SSL_CERT = os.getenv("EXTRA_SSL_CERTS") |
| 19 | +DEFAULT_CA_CERT = os.getenv("CA_CERT") |
| 20 | +MAXCONN = os.getenv("MAXCONN", "4096") |
| 21 | +MODE = os.getenv("MODE", "http") |
| 22 | +OPTION = os.getenv("OPTION", "redispatch, httplog, dontlognull, forwardfor") |
| 23 | +RSYSLOG_DESTINATION = os.getenv("RSYSLOG_DESTINATION", "127.0.0.1") |
| 24 | +SSL_BIND_CIPHERS = os.getenv("SSL_BIND_CIPHERS") |
| 25 | +SSL_BIND_OPTIONS = os.getenv("SSL_BIND_OPTIONS") |
| 26 | +STATS_AUTH = os.getenv("STATS_AUTH", "stats:stats") |
| 27 | +STATS_PORT = os.getenv("STATS_PORT", "1936") |
| 28 | +TIMEOUT = os.getenv("TIMEOUT", "connect 5000, client 50000, server 50000") |
| 29 | +HEALTH_CHECK = os.getenv("HEALTH_CHECK", "check inter 2000 rise 2 fall 3") |
| 30 | +EXTRA_GLOBAL_SETTINGS = os.getenv("EXTRA_GLOBAL_SETTINGS") |
| 31 | +EXTRA_DEFAULT_SETTINGS = os.getenv("EXTRA_DEFAULT_SETTINGS") |
| 32 | +EXTRA_BIND_SETTINGS = parse_extra_bind_settings(os.getenv("EXTRA_BIND_SETTINGS")) |
| 33 | +HTTP_BASIC_AUTH = os.getenv("HTTP_BASIC_AUTH") |
| 34 | +MONITOR_URI = os.getenv("MONITOR_URI") |
| 35 | +MONITOR_PORT = os.getenv("MONITOR_PORT") |
| 36 | +BALANCE = os.getenv("BALANCE", "roundrobin") |
| 37 | +HAPROXY_CONTAINER_URI = os.getenv("DOCKERCLOUD_CONTAINER_API_URI") |
| 38 | +HAPROXY_SERVICE_URI = os.getenv("DOCKERCLOUD_SERVICE_API_URI") |
| 39 | +API_AUTH = os.getenv("DOCKERCLOUD_AUTH") |
| 40 | +DEBUG = os.getenv("DEBUG", False) |
| 41 | +LINK_MODE = "" |
| 42 | + |
| 43 | +# const |
| 44 | +CERT_DIR = "/certs/" |
| 45 | +CACERT_DIR = "/cacerts/" |
| 46 | +HAPROXY_CONFIG_FILE = "/haproxy.cfg" |
| 47 | +HAPROXY_RUN_COMMAND = ['/usr/sbin/haproxy', '-f', HAPROXY_CONFIG_FILE, '-db', '-q'] |
| 48 | +API_RETRY = 10 # seconds |
| 49 | +PID_FILE = "/tmp/dockercloud-haproxy.pid" |
| 50 | + |
| 51 | +# regular expressions |
| 52 | +SERVICE_NAME_MATCH = re.compile(r"(.+)_\d+$") |
| 53 | +BACKEND_MATCH = re.compile(r"(?P<proto>tcp|udp):\/\/(?P<addr>[^:]*):(?P<port>.*)") |
| 54 | +SERVICE_ALIAS_MATCH = re.compile(r"_PORT_\d{1,5}_(TCP|UDP)$") |
| 55 | +DETAILED_SERVICE_ALIAS_MATCH = re.compile(r"_\d+_PORT_\d{1,5}_(TCP|UDP)$") |
| 56 | +ENV_SERVICE_ALIAS_MATCH = re.compile(r"_ENV_") |
| 57 | +ENV_DETAILED_SERVICE_ALIAS_MATCH = re.compile(r"_\d+_ENV") |
0 commit comments