42 lines
1.4 KiB
Python
42 lines
1.4 KiB
Python
#!/usr/bin/env python3
|
|
"""Verify that the pinned WEB PANEL PROXY layout still matches our adapter."""
|
|
|
|
from pathlib import Path
|
|
import sys
|
|
|
|
|
|
def main() -> int:
|
|
if len(sys.argv) != 2:
|
|
print("usage: validate_upstream_layout.py PATH_TO_EXTRACTED_RELEASE", file=sys.stderr)
|
|
return 2
|
|
|
|
root = Path(sys.argv[1])
|
|
core = (root / "install-webproxy-core.sh").read_text(encoding="utf-8")
|
|
panel = (root / "install-panel.sh").read_text(encoding="utf-8")
|
|
|
|
checks = {
|
|
"core port 80 check": core.count("check_install_port 80 caddy"),
|
|
"core port 443 check": core.count("check_install_port 443 caddy"),
|
|
"core canonical Caddy patch point": core.count(
|
|
' "$CANONICAL_CADDY"\n\nif [[ "$REUSE_CADDY" == "1" ]]; then'
|
|
),
|
|
"panel route": panel.count('" reverse_proxy 127.0.0.1:8090\\n"'),
|
|
"panel relay matcher": panel.count(
|
|
r"r'(?m)^\s*reverse_proxy 127\.0\.0\.1:8080\s*\{'"
|
|
),
|
|
"panel credentials prompt": core.count(
|
|
'read -r -p "Panel administrator login [admin]: " PANEL_ADMIN'
|
|
),
|
|
}
|
|
|
|
failed = False
|
|
for name, count in checks.items():
|
|
status = "OK" if count == 1 else f"FAIL (found {count})"
|
|
print(f"{name}: {status}")
|
|
failed |= count != 1
|
|
return 1 if failed else 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
raise SystemExit(main())
|