From a69d78042d4cfe69d1434f606bfc6cc528f9424c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=97=E5=AD=90?= Date: Sat, 23 Aug 2025 03:24:31 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=EF=BC=8C=E9=98=B2=E6=AD=A2=E9=85=92=E5=90=A7=E7=82=B9=E7=82=92?= =?UTF-8?q?=E9=A5=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/http/request/backup.go | 4 ++-- internal/http/request/container.go | 4 ++-- internal/http/request/container_compose.go | 8 ++++---- internal/http/request/container_network.go | 2 +- internal/http/request/container_volume.go | 2 +- internal/http/request/database.go | 6 +++--- internal/http/request/database_server.go | 4 ++-- internal/http/request/user.go | 6 +++--- internal/http/request/website.go | 4 ++-- 9 files changed, 20 insertions(+), 20 deletions(-) diff --git a/internal/http/request/backup.go b/internal/http/request/backup.go index c4091a61..30df5f8f 100644 --- a/internal/http/request/backup.go +++ b/internal/http/request/backup.go @@ -8,7 +8,7 @@ type BackupList struct { type BackupCreate struct { Type string `uri:"type" form:"type" validate:"required|in:website,mysql,postgres,redis,panel"` - Target string `json:"target" form:"target" validate:"required"` + Target string `json:"target" form:"target" validate:"required|regex:^[a-zA-Z0-9_-]+$"` Path string `json:"path" form:"path"` } @@ -25,5 +25,5 @@ type BackupFile struct { type BackupRestore struct { Type string `uri:"type" form:"type" validate:"required|in:website,mysql,postgres,redis,panel"` File string `json:"file" form:"file" validate:"required"` - Target string `json:"target" form:"target" validate:"required"` + Target string `json:"target" form:"target" validate:"required|regex:^[a-zA-Z0-9_-]+$"` } diff --git a/internal/http/request/container.go b/internal/http/request/container.go index 917b1746..d7686211 100644 --- a/internal/http/request/container.go +++ b/internal/http/request/container.go @@ -8,11 +8,11 @@ type ContainerID struct { type ContainerRename struct { ID string `form:"id" json:"id" validate:"required"` - Name string `form:"name" json:"name" validate:"required"` + Name string `form:"name" json:"name" validate:"required|regex:^[a-zA-Z0-9_-]+$"` } type ContainerCreate struct { - Name string `form:"name" json:"name" validate:"required"` + Name string `form:"name" json:"name" validate:"required|regex:^[a-zA-Z0-9_-]+$"` Image string `form:"image" json:"image" validate:"required"` Ports []types.ContainerPort `form:"ports" json:"ports"` Network string `form:"network" json:"network"` diff --git a/internal/http/request/container_compose.go b/internal/http/request/container_compose.go index 58c670a2..63b1a785 100644 --- a/internal/http/request/container_compose.go +++ b/internal/http/request/container_compose.go @@ -3,7 +3,7 @@ package request import "github.com/tnborg/panel/pkg/types" type ContainerComposeGet struct { - Name string `uri:"name" validate:"required"` + Name string `uri:"name" validate:"required|regex:^[a-zA-Z0-9_-]+$"` } type ContainerComposeCreate struct { @@ -19,14 +19,14 @@ type ContainerComposeUpdate struct { } type ContainerComposeUp struct { - Name string `uri:"name" validate:"required"` + Name string `uri:"name" validate:"required|regex:^[a-zA-Z0-9_-]+$"` Force bool `json:"force"` } type ContainerComposeDown struct { - Name string `uri:"name" validate:"required"` + Name string `uri:"name" validate:"required|regex:^[a-zA-Z0-9_-]+$"` } type ContainerComposeRemove struct { - Name string `uri:"name" validate:"required"` + Name string `uri:"name" validate:"required|regex:^[a-zA-Z0-9_-]+$"` } diff --git a/internal/http/request/container_network.go b/internal/http/request/container_network.go index c0e9ba47..9a7b434d 100644 --- a/internal/http/request/container_network.go +++ b/internal/http/request/container_network.go @@ -7,7 +7,7 @@ type ContainerNetworkID struct { } type ContainerNetworkCreate struct { - Name string `form:"name" json:"name" validate:"required"` + Name string `form:"name" json:"name" validate:"required|regex:^[a-zA-Z0-9_-]+$"` Driver string `form:"driver" json:"driver" validate:"required|in:bridge,host,overlay,macvlan,ipvlan,none"` Ipv4 types.ContainerContainerNetwork `form:"ipv4" json:"ipv4"` Ipv6 types.ContainerContainerNetwork `form:"ipv6" json:"ipv6"` diff --git a/internal/http/request/container_volume.go b/internal/http/request/container_volume.go index 3e6af1a8..803f2855 100644 --- a/internal/http/request/container_volume.go +++ b/internal/http/request/container_volume.go @@ -7,7 +7,7 @@ type ContainerVolumeID struct { } type ContainerVolumeCreate struct { - Name string `form:"name" json:"name" validate:"required"` + Name string `form:"name" json:"name" validate:"required|regex:^[a-zA-Z0-9_-]+$"` Driver string `form:"driver" json:"driver" validate:"required|in:local"` Labels []types.KV `form:"labels" json:"labels"` Options []types.KV `form:"options" json:"options"` diff --git a/internal/http/request/database.go b/internal/http/request/database.go index 95b0252e..f7376fbd 100644 --- a/internal/http/request/database.go +++ b/internal/http/request/database.go @@ -2,7 +2,7 @@ package request type DatabaseCreate struct { ServerID uint `form:"server_id" json:"server_id" validate:"required|exists:database_servers,id"` - Name string `form:"name" json:"name" validate:"required"` + Name string `form:"name" json:"name" validate:"required|regex:^[a-zA-Z0-9_-]+$"` CreateUser bool `form:"create_user" json:"create_user"` Username string `form:"username" json:"username" validate:"requiredIf:CreateUser,true"` Password string `form:"password" json:"password" validate:"requiredIf:CreateUser,true"` @@ -12,11 +12,11 @@ type DatabaseCreate struct { type DatabaseDelete struct { ServerID uint `form:"server_id" json:"server_id" validate:"required|exists:database_servers,id"` - Name string `form:"name" json:"name" validate:"required"` + Name string `form:"name" json:"name" validate:"required|regex:^[a-zA-Z0-9_-]+$"` } type DatabaseComment struct { ServerID uint `form:"server_id" json:"server_id" validate:"required|exists:database_servers,id"` - Name string `form:"name" json:"name" validate:"required"` + Name string `form:"name" json:"name" validate:"required|regex:^[a-zA-Z0-9_-]+$"` Comment string `form:"comment" json:"comment"` } diff --git a/internal/http/request/database_server.go b/internal/http/request/database_server.go index e65bba7f..0f82033c 100644 --- a/internal/http/request/database_server.go +++ b/internal/http/request/database_server.go @@ -1,7 +1,7 @@ package request type DatabaseServerCreate struct { - Name string `form:"name" json:"name" validate:"required|notExists:database_servers,name"` + Name string `form:"name" json:"name" validate:"required|notExists:database_servers,name|regex:^[a-zA-Z0-9_-]+$"` Type string `form:"type" json:"type" validate:"required|in:mysql,postgresql,redis"` Host string `form:"host" json:"host" validate:"required"` Port uint `form:"port" json:"port" validate:"required|min:1|max:65535"` @@ -12,7 +12,7 @@ type DatabaseServerCreate struct { type DatabaseServerUpdate struct { ID uint `form:"id" json:"id" validate:"required|exists:database_servers,id"` - Name string `form:"name" json:"name" validate:"required"` + Name string `form:"name" json:"name" validate:"required|regex:^[a-zA-Z0-9_-]+$"` Host string `form:"host" json:"host" validate:"required"` Port uint `form:"port" json:"port" validate:"required|min:1|max:65535"` Username string `form:"username" json:"username"` diff --git a/internal/http/request/user.go b/internal/http/request/user.go index d27971bf..fd021501 100644 --- a/internal/http/request/user.go +++ b/internal/http/request/user.go @@ -5,7 +5,7 @@ type UserID struct { } type UserLogin struct { - Username string `json:"username" validate:"required"` + Username string `json:"username" validate:"required|regex:^[a-zA-Z0-9_-]+$"` Password string `json:"password" validate:"required"` SafeLogin bool `json:"safe_login"` PassCode string `json:"pass_code"` @@ -16,14 +16,14 @@ type UserIsTwoFA struct { } type UserCreate struct { - Username string `json:"username" validate:"required|notExists:users,username"` + Username string `json:"username" validate:"required|notExists:users,username|regex:^[a-zA-Z0-9_-]+$"` Password string `json:"password" validate:"required|password"` Email string `json:"email" validate:"required|email"` } type UserUpdateUsername struct { ID uint `json:"id" validate:"required|exists:users,id"` - Username string `json:"username" validate:"required|notExists:users,username"` + Username string `json:"username" validate:"required|notExists:users,username|regex:^[a-zA-Z0-9_-]+$"` } type UserUpdatePassword struct { diff --git a/internal/http/request/website.go b/internal/http/request/website.go index 81b54d45..26a3a926 100644 --- a/internal/http/request/website.go +++ b/internal/http/request/website.go @@ -8,7 +8,7 @@ type WebsiteDefaultConfig struct { } type WebsiteCreate struct { - Name string `form:"name" json:"name" validate:"required|notExists:websites,name"` + Name string `form:"name" json:"name" validate:"required|notExists:websites,name|regex:^[a-zA-Z0-9_-]+$"` Listens []string `form:"listens" json:"listens" validate:"required|isSlice"` Domains []string `form:"domains" json:"domains" validate:"required|isSlice"` Path string `form:"path" json:"path"` @@ -57,7 +57,7 @@ type WebsiteUpdateStatus struct { } type WebsiteUpdateCert struct { - Name string `json:"name" validate:"required|exists:websites,name"` + Name string `json:"name" validate:"required|exists:websites,name|regex:^[a-zA-Z0-9_-]+$"` Cert string `json:"cert" validate:"required"` Key string `json:"key" validate:"required"` }