Archived
Add formatting and type checks
This commit is contained in:
1 parent
c0d82eaf26
commit
24747866bc
38 files changed
+800
-265
No files matched your search
+3
-2
@@ -5,6 +5,7 @@ import hashlib
|
||||
import hmac
|
||||
import secrets
|
||||
import time
|
||||
from collections.abc import Mapping
|
||||
from datetime import UTC, datetime
|
||||
from ipaddress import ip_address, ip_network
|
||||
|
||||
@@ -135,7 +136,7 @@ def dashboard_cookie_signing_secret(settings: DdnsSettings) -> str:
|
||||
return settings.dashboard_cookie_secret or settings.admin_password
|
||||
|
||||
|
||||
def dashboard_csrf_token(management_slug: str, account: dict[str, str | int | None]) -> str:
|
||||
def dashboard_csrf_token(management_slug: str, account: Mapping[str, object]) -> str:
|
||||
hostname = str(account["hostname"])
|
||||
password_hash = str(account.get("dashboard_password_hash") or "")
|
||||
day = datetime.now(UTC).strftime("%Y-%m-%d")
|
||||
@@ -143,7 +144,7 @@ def dashboard_csrf_token(management_slug: str, account: dict[str, str | int | No
|
||||
return hmac.new(key, f"dashboard:{hostname}:{day}".encode(), hashlib.sha256).hexdigest()
|
||||
|
||||
|
||||
def require_dashboard_csrf(management_slug: str, account: dict[str, str | int | None], supplied: str) -> None:
|
||||
def require_dashboard_csrf(management_slug: str, account: Mapping[str, object], supplied: str) -> None:
|
||||
if not supplied or not hmac.compare_digest(supplied, dashboard_csrf_token(management_slug, account)):
|
||||
raise HTTPException(status_code=403, detail="invalid csrf token")
|
||||
|
||||
|
||||
Reference in new issue
Block a user