Skip to content

Commit 0b338bd

Browse files
author
chr0nzz
committed
fix TCP route: correct target IP/port and cert resolver fields (#35)
1 parent 08aa259 commit 0b338bd

3 files changed

Lines changed: 24 additions & 9 deletions

File tree

app.py

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
from cryptography.fernet import Fernet, InvalidToken
1919

2020
GITHUB_REPO = "chr0nzz/traefik-manager"
21-
APP_VERSION = "1.0.0"
21+
APP_VERSION = "1.0.1"
2222

2323

2424
LOG_LEVEL = os.environ.get("LOG_LEVEL", "INFO").upper()
@@ -2631,8 +2631,6 @@ def save_entry():
26312631
svc_name = request.form.get('serviceName', '').strip()
26322632
subdomain = request.form.get('subdomain', '').strip()
26332633
domain = request.form.get('domain', settings['domains'][0]).strip()
2634-
target_ip = request.form.get('targetIp', '').strip()
2635-
target_port = request.form.get('targetPort', '').strip()
26362634
middlewares_in = request.form.get('middlewares', '').strip()
26372635
protocol = request.form.get('protocol', 'http').strip().lower()
26382636
is_edit = request.form.get('isEdit') == 'true'
@@ -2643,9 +2641,24 @@ def save_entry():
26432641
_all_eps = request.form.getlist('entryPoints')
26442642
http_eps = [ep.strip() for ep in (_all_eps[0] if _all_eps else 'https').split(',') if ep.strip()] or ['https']
26452643
tcp_eps = [ep.strip() for ep in (_all_eps[1] if len(_all_eps) > 1 else '').split(',') if ep.strip()] or ['https']
2644+
_all_ips = request.form.getlist('targetIp')
2645+
_all_ports = request.form.getlist('targetPort')
2646+
if protocol == 'tcp':
2647+
target_ip = (_all_ips[1] if len(_all_ips) > 1 else '').strip()
2648+
target_port = (_all_ports[1] if len(_all_ports) > 1 else '').strip()
2649+
elif protocol == 'udp':
2650+
target_ip = (_all_ips[2] if len(_all_ips) > 2 else '').strip()
2651+
target_port = (_all_ports[2] if len(_all_ports) > 2 else '').strip()
2652+
else:
2653+
target_ip = (_all_ips[0] if _all_ips else '').strip()
2654+
target_port = (_all_ports[0] if _all_ports else '').strip()
26462655
resolvers = [r.strip() for r in settings['cert_resolver'].split(',') if r.strip()]
2647-
cert_resolver_raw = request.form.get('certResolver', '').strip()
2648-
cert_resolver = '' if (cert_resolver_raw in ('__none__', 'none')) else (cert_resolver_raw or (resolvers[0] if resolvers else ''))
2656+
_all_resolvers = request.form.getlist('certResolver')
2657+
cert_resolver_raw = (_all_resolvers[0] if _all_resolvers else '').strip()
2658+
cert_resolver = '' if (cert_resolver_raw in ('__none__', 'none')) else (cert_resolver_raw or (resolvers[0] if resolvers else ''))
2659+
use_tls_tcp = request.form.get('useTls') == 'true'
2660+
tcp_cert_raw = (_all_resolvers[1] if len(_all_resolvers) > 1 else '').strip()
2661+
tcp_cert_resolver = '' if (tcp_cert_raw in ('__none__', 'none')) else (tcp_cert_raw or (resolvers[0] if resolvers else ''))
26492662
config_file_raw = request.form.get('configFile', '').strip()
26502663
target_path = _resolve_config_path(config_file_raw) or CONFIG_PATH
26512664

@@ -2715,8 +2728,10 @@ def save_entry():
27152728
rule = tcp_rule or (f"HostSNI(`{subdomain}.{domain}`)" if subdomain else "HostSNI(`*`)")
27162729
config.setdefault('tcp', {}).setdefault('routers', {})
27172730
config['tcp'].setdefault('services', {})
2718-
tcp_tls = {'certResolver': cert_resolver} if cert_resolver else {}
2719-
config['tcp']['routers'][router_name] = {'rule': rule, 'entryPoints': tcp_eps, 'tls': tcp_tls, 'service': service_name}
2731+
router_entry = {'rule': rule, 'entryPoints': tcp_eps, 'service': service_name}
2732+
if use_tls_tcp:
2733+
router_entry['tls'] = {'certResolver': tcp_cert_resolver} if tcp_cert_resolver else {}
2734+
config['tcp']['routers'][router_name] = router_entry
27202735
config['tcp']['services'][service_name] = {'loadBalancer': {'servers': [{'address': f"{target_ip}:{target_port}"}]}}
27212736

27222737
elif protocol == 'udp':

docs/public/openapi.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
openapi: 3.1.0
22
info:
33
title: Traefik Manager API
4-
version: 1.0.0
4+
version: 1.0.1
55
description: |
66
REST API powering the Traefik Manager web UI and official mobile app.
77

static/openapi.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
openapi: 3.1.0
22
info:
33
title: Traefik Manager API
4-
version: 1.0.0
4+
version: 1.0.1
55
description: |
66
REST API powering the Traefik Manager web UI and official mobile app.
77

0 commit comments

Comments
 (0)