From 9b396ae74306117c6b67fb8ebe48fbb9fe56c705 Mon Sep 17 00:00:00 2001 From: Hakan Calim <hakan.calim@fau.de> Date: Tue, 31 Oct 2023 15:06:44 +0100 Subject: [PATCH] NAT-328: added validation for site name --- gso/api/v1/imports.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/gso/api/v1/imports.py b/gso/api/v1/imports.py index 5a7ef6c6..c65c23b8 100644 --- a/gso/api/v1/imports.py +++ b/gso/api/v1/imports.py @@ -1,6 +1,7 @@ import ipaddress from typing import Any from uuid import UUID +import re from fastapi import Depends, HTTPException, status from fastapi.routing import APIRouter @@ -104,6 +105,15 @@ class IptrunkImportModel(BaseModel): return value + @validator("site_name", allow_reuse=True) + def site_name_must_be_valid(cls, site_name: str) -> str: + # Accept 3 chapital letters and only one ditigt after capital letters. + pattern = re.compile(r"^[A-Z]{3}[0-9]?$") + if not bool(pattern.match(site_name)): + raise ValueError(f"Enter a valid site name similar looks like AMS, AMS1or LON9. Get: {site_name}") + + return site_name + @root_validator def check_members(cls, values: dict[str, Any]) -> dict[str, Any]: min_links = values["iptrunk_minimum_links"] -- GitLab