diff options
| author | mhsanaei <ho3ein.sanaei@gmail.com> | 2025-09-20 10:35:50 +0300 |
|---|---|---|
| committer | mhsanaei <ho3ein.sanaei@gmail.com> | 2025-09-20 10:35:50 +0300 |
| commit | 6ced549deaecb42b9bb93ea9efcb4c1bbaabe8a4 (patch) | |
| tree | 28d8d82530476cf607e4d05ca189ae05868711e6 /web/entity | |
| parent | f60682a6b7cb749fee403c84e2587c3ad7e7ced0 (diff) | |
docs: add comments for all functions
Diffstat (limited to 'web/entity')
| -rw-r--r-- | web/entity/entity.go | 111 |
1 files changed, 62 insertions, 49 deletions
diff --git a/web/entity/entity.go b/web/entity/entity.go index 41d19d3b..adb60972 100644 --- a/web/entity/entity.go +++ b/web/entity/entity.go @@ -1,3 +1,4 @@ +// Package entity defines data structures and entities used by the web layer of the 3x-ui panel. package entity import ( @@ -10,61 +11,73 @@ import ( "github.com/mhsanaei/3x-ui/v2/util/common" ) +// Msg represents a standard API response message with success status, message text, and optional data object. type Msg struct { - Success bool `json:"success"` - Msg string `json:"msg"` - Obj any `json:"obj"` + Success bool `json:"success"` // Indicates if the operation was successful + Msg string `json:"msg"` // Response message text + Obj any `json:"obj"` // Optional data object } +// AllSetting contains all configuration settings for the 3x-ui panel including web server, Telegram bot, and subscription settings. type AllSetting struct { - WebListen string `json:"webListen" form:"webListen"` - WebDomain string `json:"webDomain" form:"webDomain"` - WebPort int `json:"webPort" form:"webPort"` - WebCertFile string `json:"webCertFile" form:"webCertFile"` - WebKeyFile string `json:"webKeyFile" form:"webKeyFile"` - WebBasePath string `json:"webBasePath" form:"webBasePath"` - SessionMaxAge int `json:"sessionMaxAge" form:"sessionMaxAge"` - PageSize int `json:"pageSize" form:"pageSize"` - ExpireDiff int `json:"expireDiff" form:"expireDiff"` - TrafficDiff int `json:"trafficDiff" form:"trafficDiff"` - RemarkModel string `json:"remarkModel" form:"remarkModel"` - TgBotEnable bool `json:"tgBotEnable" form:"tgBotEnable"` - TgBotToken string `json:"tgBotToken" form:"tgBotToken"` - TgBotProxy string `json:"tgBotProxy" form:"tgBotProxy"` - TgBotAPIServer string `json:"tgBotAPIServer" form:"tgBotAPIServer"` - TgBotChatId string `json:"tgBotChatId" form:"tgBotChatId"` - TgRunTime string `json:"tgRunTime" form:"tgRunTime"` - TgBotBackup bool `json:"tgBotBackup" form:"tgBotBackup"` - TgBotLoginNotify bool `json:"tgBotLoginNotify" form:"tgBotLoginNotify"` - TgCpu int `json:"tgCpu" form:"tgCpu"` - TgLang string `json:"tgLang" form:"tgLang"` - TimeLocation string `json:"timeLocation" form:"timeLocation"` - TwoFactorEnable bool `json:"twoFactorEnable" form:"twoFactorEnable"` - TwoFactorToken string `json:"twoFactorToken" form:"twoFactorToken"` - SubEnable bool `json:"subEnable" form:"subEnable"` - SubJsonEnable bool `json:"subJsonEnable" form:"subJsonEnable"` - SubTitle string `json:"subTitle" form:"subTitle"` - SubListen string `json:"subListen" form:"subListen"` - SubPort int `json:"subPort" form:"subPort"` - SubPath string `json:"subPath" form:"subPath"` - SubDomain string `json:"subDomain" form:"subDomain"` - SubCertFile string `json:"subCertFile" form:"subCertFile"` - SubKeyFile string `json:"subKeyFile" form:"subKeyFile"` - SubUpdates int `json:"subUpdates" form:"subUpdates"` - ExternalTrafficInformEnable bool `json:"externalTrafficInformEnable" form:"externalTrafficInformEnable"` - ExternalTrafficInformURI string `json:"externalTrafficInformURI" form:"externalTrafficInformURI"` - SubEncrypt bool `json:"subEncrypt" form:"subEncrypt"` - SubShowInfo bool `json:"subShowInfo" form:"subShowInfo"` - SubURI string `json:"subURI" form:"subURI"` - SubJsonPath string `json:"subJsonPath" form:"subJsonPath"` - SubJsonURI string `json:"subJsonURI" form:"subJsonURI"` - SubJsonFragment string `json:"subJsonFragment" form:"subJsonFragment"` - SubJsonNoises string `json:"subJsonNoises" form:"subJsonNoises"` - SubJsonMux string `json:"subJsonMux" form:"subJsonMux"` - SubJsonRules string `json:"subJsonRules" form:"subJsonRules"` - Datepicker string `json:"datepicker" form:"datepicker"` + // Web server settings + WebListen string `json:"webListen" form:"webListen"` // Web server listen IP address + WebDomain string `json:"webDomain" form:"webDomain"` // Web server domain for domain validation + WebPort int `json:"webPort" form:"webPort"` // Web server port number + WebCertFile string `json:"webCertFile" form:"webCertFile"` // Path to SSL certificate file for web server + WebKeyFile string `json:"webKeyFile" form:"webKeyFile"` // Path to SSL private key file for web server + WebBasePath string `json:"webBasePath" form:"webBasePath"` // Base path for web panel URLs + SessionMaxAge int `json:"sessionMaxAge" form:"sessionMaxAge"` // Session maximum age in minutes + + // UI settings + PageSize int `json:"pageSize" form:"pageSize"` // Number of items per page in lists + ExpireDiff int `json:"expireDiff" form:"expireDiff"` // Expiration warning threshold in days + TrafficDiff int `json:"trafficDiff" form:"trafficDiff"` // Traffic warning threshold percentage + RemarkModel string `json:"remarkModel" form:"remarkModel"` // Remark model pattern for inbounds + Datepicker string `json:"datepicker" form:"datepicker"` // Date picker format + + // Telegram bot settings + TgBotEnable bool `json:"tgBotEnable" form:"tgBotEnable"` // Enable Telegram bot notifications + TgBotToken string `json:"tgBotToken" form:"tgBotToken"` // Telegram bot token + TgBotProxy string `json:"tgBotProxy" form:"tgBotProxy"` // Proxy URL for Telegram bot + TgBotAPIServer string `json:"tgBotAPIServer" form:"tgBotAPIServer"` // Custom API server for Telegram bot + TgBotChatId string `json:"tgBotChatId" form:"tgBotChatId"` // Telegram chat ID for notifications + TgRunTime string `json:"tgRunTime" form:"tgRunTime"` // Cron schedule for Telegram notifications + TgBotBackup bool `json:"tgBotBackup" form:"tgBotBackup"` // Enable database backup via Telegram + TgBotLoginNotify bool `json:"tgBotLoginNotify" form:"tgBotLoginNotify"` // Send login notifications + TgCpu int `json:"tgCpu" form:"tgCpu"` // CPU usage threshold for alerts + TgLang string `json:"tgLang" form:"tgLang"` // Telegram bot language + + // Security settings + TimeLocation string `json:"timeLocation" form:"timeLocation"` // Time zone location + TwoFactorEnable bool `json:"twoFactorEnable" form:"twoFactorEnable"` // Enable two-factor authentication + TwoFactorToken string `json:"twoFactorToken" form:"twoFactorToken"` // Two-factor authentication token + + // Subscription server settings + SubEnable bool `json:"subEnable" form:"subEnable"` // Enable subscription server + SubJsonEnable bool `json:"subJsonEnable" form:"subJsonEnable"` // Enable JSON subscription endpoint + SubTitle string `json:"subTitle" form:"subTitle"` // Subscription title + SubListen string `json:"subListen" form:"subListen"` // Subscription server listen IP + SubPort int `json:"subPort" form:"subPort"` // Subscription server port + SubPath string `json:"subPath" form:"subPath"` // Base path for subscription URLs + SubDomain string `json:"subDomain" form:"subDomain"` // Domain for subscription server validation + SubCertFile string `json:"subCertFile" form:"subCertFile"` // SSL certificate file for subscription server + SubKeyFile string `json:"subKeyFile" form:"subKeyFile"` // SSL private key file for subscription server + SubUpdates int `json:"subUpdates" form:"subUpdates"` // Subscription update interval in minutes + ExternalTrafficInformEnable bool `json:"externalTrafficInformEnable" form:"externalTrafficInformEnable"` // Enable external traffic reporting + ExternalTrafficInformURI string `json:"externalTrafficInformURI" form:"externalTrafficInformURI"` // URI for external traffic reporting + SubEncrypt bool `json:"subEncrypt" form:"subEncrypt"` // Encrypt subscription responses + SubShowInfo bool `json:"subShowInfo" form:"subShowInfo"` // Show client information in subscriptions + SubURI string `json:"subURI" form:"subURI"` // Subscription server URI + SubJsonPath string `json:"subJsonPath" form:"subJsonPath"` // Path for JSON subscription endpoint + SubJsonURI string `json:"subJsonURI" form:"subJsonURI"` // JSON subscription server URI + SubJsonFragment string `json:"subJsonFragment" form:"subJsonFragment"` // JSON subscription fragment configuration + SubJsonNoises string `json:"subJsonNoises" form:"subJsonNoises"` // JSON subscription noise configuration + SubJsonMux string `json:"subJsonMux" form:"subJsonMux"` // JSON subscription mux configuration + SubJsonRules string `json:"subJsonRules" form:"subJsonRules"` // JSON subscription routing rules } +// CheckValid validates all settings in the AllSetting struct, checking IP addresses, ports, SSL certificates, and other configuration values. func (s *AllSetting) CheckValid() error { if s.WebListen != "" { ip := net.ParseIP(s.WebListen) |
