mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-06-15 17:25:26 -04:00
32 lines
810 B
Python
32 lines
810 B
Python
import re
|
|
|
|
from fastapi import HTTPException
|
|
|
|
|
|
_REMOTE_HOST_RE = re.compile(
|
|
r"^(?:[A-Za-z0-9][A-Za-z0-9._-]*@)?[A-Za-z0-9][A-Za-z0-9._-]*$"
|
|
)
|
|
_SSH_PORT_RE = re.compile(r"^\d{1,5}$")
|
|
|
|
|
|
def validate_remote_host(v: str | None) -> str | None:
|
|
if v is None or v == "":
|
|
return None
|
|
if not _REMOTE_HOST_RE.match(v):
|
|
raise HTTPException(
|
|
400,
|
|
"Invalid remote_host — must be host or user@host, no SSH option syntax",
|
|
)
|
|
return v
|
|
|
|
|
|
def validate_ssh_port(v: str | None) -> str | None:
|
|
if v is None or v == "":
|
|
return None
|
|
if not _SSH_PORT_RE.fullmatch(str(v)):
|
|
raise HTTPException(400, "Invalid ssh_port")
|
|
port = int(v)
|
|
if port < 1 or port > 65535:
|
|
raise HTTPException(400, "Invalid ssh_port")
|
|
return str(port)
|