@@ -28,26 +28,23 @@ def parse_extra_frontend_settings(envvars):
2828 settings_dict [port ] = settings
2929 return settings_dict
3030
31- # backend_name,FORCE_SSL,server_name,host:port, options
32- def parse_additional_backends (additional_backend_settings ):
33- additional_backends = {}
34- if not additional_backend_settings :
35- return additional_backends
36-
37- for backend in additional_backend_settings .split (";" ):
38- parts = backend .split ("," )
39- backend_name , force_ssl , server_name , host_port , options = parts
40-
41- if force_ssl == "True" :
42- route = ["redirect scheme https code 301 if !{ ssl_fc }" , 'server ' + server_name + ' ' + host_port + ' ' + options ]
43- else :
44- route = ['server ' + server_name + ' ' + host_port + ' ' + options ]
45-
46- additional_backends [backend_name ] = route
47- return additional_backends
31+ def parse_additional_backend_settings (envvars ):
32+ settings_dict = {}
33+ if isinstance (envvars , os ._Environ ) or isinstance (envvars , dict ):
34+ frontend_settings_pattern = re .compile (r"^ADDITIONAL_BACKEND_(\w{1,9})$" )
35+ for k , v in envvars .iteritems ():
36+ match = frontend_settings_pattern .match (k )
37+ if match :
38+ server = match .group (1 )
39+ settings = [x .strip ().replace ("\," , "," ) for x in re .split (r'(?<!\\),' , v .strip ())]
40+ if server in settings_dict :
41+ settings_dict [server ].extend (settings )
42+ else :
43+ settings_dict [server ] = settings
44+ return settings_dict
4845
4946# envvar
50- ADDITIONAL_BACKENDS = parse_additional_backends (os .getenv ( "ADDITIONAL_BACKENDS" ) )
47+ ADDITIONAL_BACKENDS = parse_additional_backend_settings (os .environ )
5148ADDITIONAL_SERVICES = os .getenv ("ADDITIONAL_SERVICES" )
5249API_AUTH = os .getenv ("DOCKERCLOUD_AUTH" )
5350BALANCE = os .getenv ("BALANCE" , "roundrobin" )
0 commit comments