Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/MHSanaei/3x-ui.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormhsanaei <ho3ein.sanaei@gmail.com>2025-09-20 10:35:50 +0300
committermhsanaei <ho3ein.sanaei@gmail.com>2025-09-20 10:35:50 +0300
commit6ced549deaecb42b9bb93ea9efcb4c1bbaabe8a4 (patch)
tree28d8d82530476cf607e4d05ca189ae05868711e6 /web/entity/entity.go
parentf60682a6b7cb749fee403c84e2587c3ad7e7ced0 (diff)
docs: add comments for all functions
Diffstat (limited to 'web/entity/entity.go')
-rw-r--r--web/entity/entity.go111
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)