Skip to content

Commit e0b85fe

Browse files
authored
Merge pull request #6 from zeliharuya/main
fixed the headers error
2 parents f518abc + d0895e0 commit e0b85fe

1 file changed

Lines changed: 15 additions & 8 deletions

File tree

app/plugins/traefik/api_provider.py

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def read(id=False): # GET
2828

2929
# provider['http']['middlewares']['chain']={"chain":{"middlewares":["redirect", "strip"]} }
3030
# provider['http']['middlewares']['redirect']={"redirectregex":{"regex":"^(https?://[^/]+/[a-z0-9_]+)$", "replacement":"${1}/"} }
31-
provider['http']['middlewares']['strip'] = {"stripprefixregex":{"regex":"/[a-z0-9_]+"} }
31+
provider['http']['middlewares']['strip'] = {"stripPrefixRegex":{"regex":"/[a-z0-9_]+"} }
3232

3333
mode_data = json.loads((requests.get('http://localhost:8080/plugins/mode/visitor_mode')).text)
3434
screen_data = json.loads((requests.get('http://localhost:8080/plugins/screens/manage_screen')).text)
@@ -43,17 +43,24 @@ def read(id=False): # GET
4343
screen_host = re.match("^(https?://[^/]+)/(.*)$", screen['url']).groups()[0]
4444
screen_path = re.match("^(https?://[^/]+)/(.*)$", screen['url']).groups()[1]
4545

46-
provider['http']['routers']['router_'+screen['id']] = {'entryPoints':['web', 'websecure'], 'service':'service_'+screen['id'], 'rule':'HOST(`'+screen['id']+'.'+os.environ["SSP_DOMAIN"]+'`)', 'middlewares':['redirect_'+screen['id'], 'header_'+screen['id']], 'tls':{'certResolver':'myresolver'}}
46+
provider['http']['routers']['router_'+screen['id']] = {'entryPoints':['web', 'websecure'], 'service':'service_'+screen['id'], 'rule':'HOST(`'+screen['id']+'.'+os.environ["SSP_DOMAIN"]+'`)', 'middlewares':['redirect_'+screen['id']], 'tls':{'certResolver':'myresolver'}}
47+
4748
provider['http']['services']['service_'+screen['id']] = {"loadBalancer":{"servers":[{'url':screen_host}], "passHostHeader": False } }
48-
provider['http']['middlewares']['redirect_'+screen['id']] = {"redirectregex":{"regex":"^(https?://[^/]+/?)$", "replacement":"${1}"+screen_path} }
49+
provider['http']['middlewares']['redirect_'+screen['id']] = {"redirectRegex":{"regex":"^(https?://[^/]+/?)$", "replacement":"${1}"+screen_path} }
4950

5051
upstream_headers = {}
51-
try:
52-
upstream_headers = json.loads(screen['headers'])
53-
except:
54-
pass
52+
raw_headers = screen.get('headers', '')
53+
if isinstance(raw_headers, str) and raw_headers.strip():
54+
try:
55+
parsed = json.loads(raw_headers)
56+
if isinstance(parsed, dict):
57+
upstream_headers = {str(k): str(v) for k, v in parsed.items() if v is not None}
58+
except Exception:
59+
pass
5560

56-
provider['http']['middlewares']['header_'+screen['id']] = {"headers": {"customRequestHeaders" : upstream_headers} }
61+
if upstream_headers:
62+
provider['http']['routers']['router_'+screen['id']]['middlewares'].append('header_'+screen['id'])
63+
provider['http']['middlewares']['header_'+screen['id']] = {"headers": {"customRequestHeaders" : upstream_headers} }
5764
except:
5865
print("error parsing URL")
5966

0 commit comments

Comments
 (0)