From d25c41946235ab271697ec545191131d33ad75cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=97=E5=AD=90?= Date: Fri, 30 Jan 2026 19:15:05 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=88=87=E7=89=87?= =?UTF-8?q?=E7=9A=84=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/http/request/cert.go | 14 ++++++++++++++ internal/http/request/file.go | 6 ++++++ internal/http/request/website.go | 23 +++++++++++++++++++++++ 3 files changed, 43 insertions(+) diff --git a/internal/http/request/cert.go b/internal/http/request/cert.go index 9b85a2b9..4d35b7d1 100644 --- a/internal/http/request/cert.go +++ b/internal/http/request/cert.go @@ -1,5 +1,7 @@ package request +import "net/http" + type CertUpload struct { Cert string `form:"cert" json:"cert" validate:"required"` Key string `form:"key" json:"key" validate:"required"` @@ -14,6 +16,12 @@ type CertCreate struct { WebsiteID uint `form:"website_id" json:"website_id"` } +func (r *CertCreate) Rules(_ *http.Request) map[string]string { + return map[string]string{ + "Domains.*": "required", + } +} + type CertUpdate struct { ID uint `form:"id" json:"id" validate:"required|exists:certs,id"` Type string `form:"type" json:"type" validate:"required|in:P256,P384,2048,3072,4096,upload"` @@ -27,6 +35,12 @@ type CertUpdate struct { WebsiteID uint `form:"website_id" json:"website_id"` } +func (r *CertUpdate) Rules(_ *http.Request) map[string]string { + return map[string]string{ + "Domains.*": "required", + } +} + type CertDeploy struct { ID uint `form:"id" json:"id" validate:"required|exists:certs,id"` WebsiteID uint `form:"website_id" json:"website_id" validate:"required|exists:websites,id"` diff --git a/internal/http/request/file.go b/internal/http/request/file.go index ea2bc4a5..6656e19b 100644 --- a/internal/http/request/file.go +++ b/internal/http/request/file.go @@ -56,6 +56,12 @@ type FileCompress struct { File string `form:"file" json:"file" validate:"required|isUnixPath"` } +func (r *FileCompress) Rules(_ *http.Request) map[string]string { + return map[string]string{ + "Paths.*": "required", + } +} + type FileUnCompress struct { File string `form:"file" json:"file" validate:"required|isUnixPath"` Path string `form:"path" json:"path" validate:"required|isUnixPath"` diff --git a/internal/http/request/website.go b/internal/http/request/website.go index 4e1a5581..20aaf776 100644 --- a/internal/http/request/website.go +++ b/internal/http/request/website.go @@ -1,6 +1,8 @@ package request import ( + "net/http" + "github.com/acepanel/panel/pkg/webserver/types" ) @@ -12,6 +14,12 @@ type WebsiteDefaultConfig struct { CipherSuites string `json:"cipher_suites" form:"cipher_suites" validate:"required"` } +func (r *WebsiteDefaultConfig) Rules(_ *http.Request) map[string]string { + return map[string]string{ + "TLSVersions.*": "required", + } +} + type WebsiteList struct { Type string `json:"type" form:"type" validate:"required|in:all,proxy,static,php"` Paginate @@ -34,6 +42,13 @@ type WebsiteCreate struct { Proxy string `form:"proxy" json:"proxy" validate:"requiredIf:Type,proxy"` // 仅反向代理网站需要 } +func (r *WebsiteCreate) Rules(_ *http.Request) map[string]string { + return map[string]string{ + "Listens.*": "required", + "Domains.*": "required", + } +} + type WebsiteDelete struct { ID uint `form:"id" json:"id" validate:"required|exists:websites,id"` Path bool `form:"path" json:"path"` @@ -81,6 +96,14 @@ type WebsiteUpdate struct { CustomConfigs []WebsiteCustomConfig `json:"custom_configs"` } +func (r *WebsiteUpdate) Rules(_ *http.Request) map[string]string { + return map[string]string{ + "Listens.*": "required", + "Domains.*": "required", + "Index.*": "required", + } +} + // WebsiteCustomConfig 网站自定义配置请求 type WebsiteCustomConfig struct { Name string `json:"name" validate:"required|regex:^[a-zA-Z0-9_-]+$"` // 配置名称