mirror of
https://github.com/eduardogsilva/wireguard_webadmin.git
synced 2026-03-17 14:26:18 +00:00
enhance policy validation by ensuring protected policies have authentication methods and defaulting to HTTPS in external URL construction
This commit is contained in:
@@ -52,6 +52,13 @@ def build_effective_policy(runtime_config: RuntimeConfig, policy_name: str) -> E
|
|||||||
if policy.policy_type != "protected":
|
if policy.policy_type != "protected":
|
||||||
return effective
|
return effective
|
||||||
|
|
||||||
|
if not policy.methods:
|
||||||
|
return EffectivePolicy(
|
||||||
|
name=policy_name,
|
||||||
|
mode="error",
|
||||||
|
error_message="Policy configuration error: protected policy has no authentication methods.",
|
||||||
|
)
|
||||||
|
|
||||||
for method_name in policy.methods:
|
for method_name in policy.methods:
|
||||||
method = runtime_config.auth_methods[method_name]
|
method = runtime_config.auth_methods[method_name]
|
||||||
if isinstance(method, IPAddressMethodModel):
|
if isinstance(method, IPAddressMethodModel):
|
||||||
|
|||||||
@@ -24,6 +24,8 @@ def get_session(request: Request) -> SessionRecord | None:
|
|||||||
|
|
||||||
def build_external_url(request: Request, path: str, **params: str) -> str:
|
def build_external_url(request: Request, path: str, **params: str) -> str:
|
||||||
proto = request.headers.get("x-forwarded-proto", request.url.scheme)
|
proto = request.headers.get("x-forwarded-proto", request.url.scheme)
|
||||||
|
if proto not in ("http", "https"):
|
||||||
|
proto = "https"
|
||||||
host = request.headers.get("host", request.url.netloc)
|
host = request.headers.get("host", request.url.netloc)
|
||||||
prefix = request.app.state.settings.external_path.rstrip("/")
|
prefix = request.app.state.settings.external_path.rstrip("/")
|
||||||
query = urlencode({key: value for key, value in params.items() if value is not None})
|
query = urlencode({key: value for key, value in params.items() if value is not None})
|
||||||
|
|||||||
Reference in New Issue
Block a user