1818from cryptography .fernet import Fernet , InvalidToken
1919
2020GITHUB_REPO = "chr0nzz/traefik-manager"
21- APP_VERSION = "1.0.0 "
21+ APP_VERSION = "1.0.1 "
2222
2323
2424LOG_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' :
0 commit comments