added path to routing

This commit is contained in:
Jakub Dorfman 2026-05-20 01:07:37 +02:00
parent 7fd2531501
commit 85e29b8734
4 changed files with 84 additions and 30 deletions

View file

@ -351,11 +351,11 @@ class Handler(BaseHTTPRequestHandler):
entry = entry.strip()
if not entry:
continue
if "|" in entry:
domain, upstream = entry.split("|", 1)
routes.append({"domain": domain.strip(), "upstream": upstream.strip()})
else:
routes.append({"domain": entry.strip(), "upstream": ""})
parts = entry.split("|", 2)
route = {"domain": parts[0].strip(), "upstream": parts[1].strip()}
if len(parts) > 2:
route["path"] = parts[2].strip()
routes.append(route)
self._json(200, {"ok": True, "name": name, "routes": routes})
return
@ -589,8 +589,12 @@ class Handler(BaseHTTPRequestHandler):
for r in payload["routes"]:
d = r.get("domain", "").strip()
u = r.get("upstream", "").strip()
p = r.get("path", "").strip()
if d and u:
routes_parts.append(f"{d}|{u}")
if p:
routes_parts.append(f"{d}|{u}|{p}")
else:
routes_parts.append(f"{d}|{u}")
elif "domain" in payload and "port" in payload:
# Backward compat: single domain + port
domain_str = payload.get("domain", "")
@ -813,10 +817,14 @@ class Handler(BaseHTTPRequestHandler):
for r in route_list:
d = r.get("domain", "").strip()
u = r.get("upstream", "").strip()
p = r.get("path", "").strip()
if not d or not u:
self._json(400, {"ok": False, "error": "each route needs 'domain' and 'upstream'"})
return
routes_parts.append(f"{d}|{u}")
if p:
routes_parts.append(f"{d}|{u}|{p}")
else:
routes_parts.append(f"{d}|{u}")
routes_str = ",".join(routes_parts)
result = run_panelctl(["set-routes", name, routes_str])
self._json(200 if result["ok"] else 400, result)