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:
Diffstat (limited to 'web/entity/entity.go')
-rw-r--r--web/entity/entity.go82
1 files changed, 82 insertions, 0 deletions
diff --git a/web/entity/entity.go b/web/entity/entity.go
new file mode 100644
index 00000000..f8572f66
--- /dev/null
+++ b/web/entity/entity.go
@@ -0,0 +1,82 @@
+package entity
+
+import (
+ "crypto/tls"
+ "encoding/json"
+ "net"
+ "strings"
+ "time"
+ "x-ui/util/common"
+ "x-ui/xray"
+)
+
+type Msg struct {
+ Success bool `json:"success"`
+ Msg string `json:"msg"`
+ Obj interface{} `json:"obj"`
+}
+
+type Pager struct {
+ Current int `json:"current"`
+ PageSize int `json:"page_size"`
+ Total int `json:"total"`
+ OrderBy string `json:"order_by"`
+ Desc bool `json:"desc"`
+ Key string `json:"key"`
+ List interface{} `json:"list"`
+}
+
+type AllSetting struct {
+ WebListen string `json:"webListen" form:"webListen"`
+ WebPort int `json:"webPort" form:"webPort"`
+ WebCertFile string `json:"webCertFile" form:"webCertFile"`
+ WebKeyFile string `json:"webKeyFile" form:"webKeyFile"`
+ WebBasePath string `json:"webBasePath" form:"webBasePath"`
+ TgBotEnable bool `json:"tgBotEnable" form:"tgBotEnable"`
+ TgBotToken string `json:"tgBotToken" form:"tgBotToken"`
+ TgBotChatId int `json:"tgBotChatId" form:"tgBotChatId"`
+ TgRunTime string `json:"tgRunTime" form:"tgRunTime"`
+ XrayTemplateConfig string `json:"xrayTemplateConfig" form:"xrayTemplateConfig"`
+
+ TimeLocation string `json:"timeLocation" form:"timeLocation"`
+}
+
+func (s *AllSetting) CheckValid() error {
+ if s.WebListen != "" {
+ ip := net.ParseIP(s.WebListen)
+ if ip == nil {
+ return common.NewError("web listen is not valid ip:", s.WebListen)
+ }
+ }
+
+ if s.WebPort <= 0 || s.WebPort > 65535 {
+ return common.NewError("web port is not a valid port:", s.WebPort)
+ }
+
+ if s.WebCertFile != "" || s.WebKeyFile != "" {
+ _, err := tls.LoadX509KeyPair(s.WebCertFile, s.WebKeyFile)
+ if err != nil {
+ return common.NewErrorf("cert file <%v> or key file <%v> invalid: %v", s.WebCertFile, s.WebKeyFile, err)
+ }
+ }
+
+ if !strings.HasPrefix(s.WebBasePath, "/") {
+ s.WebBasePath = "/" + s.WebBasePath
+ }
+ if !strings.HasSuffix(s.WebBasePath, "/") {
+ s.WebBasePath += "/"
+ }
+
+ xrayConfig := &xray.Config{}
+ err := json.Unmarshal([]byte(s.XrayTemplateConfig), xrayConfig)
+ if err != nil {
+ return common.NewError("xray template config invalid:", err)
+ }
+
+ _, err = time.LoadLocation(s.TimeLocation)
+ if err != nil {
+ return common.NewError("time location not exist:", s.TimeLocation)
+ }
+
+ return nil
+}