From 4831c2f1b2c73c1e40f23a61e728530b7cf4afe9 Mon Sep 17 00:00:00 2001 From: Hamidreza Ghavami <70919649+hamid-gh98@users.noreply.github.com> Date: Sat, 20 May 2023 19:15:20 +0430 Subject: Add tgLang option --- web/assets/js/model/models.js | 1 + web/entity/entity.go | 1 + web/network/auto_https_conn.go | 67 ++++++++++++++++++++++++++++++++++++++++++ web/network/autp_https_conn.go | 67 ------------------------------------------ web/service/setting.go | 5 ++++ 5 files changed, 74 insertions(+), 67 deletions(-) create mode 100644 web/network/auto_https_conn.go delete mode 100644 web/network/autp_https_conn.go diff --git a/web/assets/js/model/models.js b/web/assets/js/model/models.js index a3fd2633..e1fb5d02 100644 --- a/web/assets/js/model/models.js +++ b/web/assets/js/model/models.js @@ -181,6 +181,7 @@ class AllSetting { this.tgRunTime = "@daily"; this.tgBotBackup = false; this.tgCpu = ""; + this.tgLang = ""; this.xrayTemplateConfig = ""; this.secretEnable = false; diff --git a/web/entity/entity.go b/web/entity/entity.go index b370b7ba..52f26769 100644 --- a/web/entity/entity.go +++ b/web/entity/entity.go @@ -41,6 +41,7 @@ type AllSetting struct { TgRunTime string `json:"tgRunTime" form:"tgRunTime"` TgBotBackup bool `json:"tgBotBackup" form:"tgBotBackup"` TgCpu int `json:"tgCpu" form:"tgCpu"` + TgLang string `json:"tgLang" form:"tgLang"` XrayTemplateConfig string `json:"xrayTemplateConfig" form:"xrayTemplateConfig"` TimeLocation string `json:"timeLocation" form:"timeLocation"` SecretEnable bool `json:"secretEnable" form:"secretEnable"` diff --git a/web/network/auto_https_conn.go b/web/network/auto_https_conn.go new file mode 100644 index 00000000..d1a9d521 --- /dev/null +++ b/web/network/auto_https_conn.go @@ -0,0 +1,67 @@ +package network + +import ( + "bufio" + "bytes" + "fmt" + "net" + "net/http" + "sync" +) + +type AutoHttpsConn struct { + net.Conn + + firstBuf []byte + bufStart int + + readRequestOnce sync.Once +} + +func NewAutoHttpsConn(conn net.Conn) net.Conn { + return &AutoHttpsConn{ + Conn: conn, + } +} + +func (c *AutoHttpsConn) readRequest() bool { + c.firstBuf = make([]byte, 2048) + n, err := c.Conn.Read(c.firstBuf) + c.firstBuf = c.firstBuf[:n] + if err != nil { + return false + } + reader := bytes.NewReader(c.firstBuf) + bufReader := bufio.NewReader(reader) + request, err := http.ReadRequest(bufReader) + if err != nil { + return false + } + resp := http.Response{ + Header: http.Header{}, + } + resp.StatusCode = http.StatusTemporaryRedirect + location := fmt.Sprintf("https://%v%v", request.Host, request.RequestURI) + resp.Header.Set("Location", location) + resp.Write(c.Conn) + c.Close() + c.firstBuf = nil + return true +} + +func (c *AutoHttpsConn) Read(buf []byte) (int, error) { + c.readRequestOnce.Do(func() { + c.readRequest() + }) + + if c.firstBuf != nil { + n := copy(buf, c.firstBuf[c.bufStart:]) + c.bufStart += n + if c.bufStart >= len(c.firstBuf) { + c.firstBuf = nil + } + return n, nil + } + + return c.Conn.Read(buf) +} diff --git a/web/network/autp_https_conn.go b/web/network/autp_https_conn.go deleted file mode 100644 index d1a9d521..00000000 --- a/web/network/autp_https_conn.go +++ /dev/null @@ -1,67 +0,0 @@ -package network - -import ( - "bufio" - "bytes" - "fmt" - "net" - "net/http" - "sync" -) - -type AutoHttpsConn struct { - net.Conn - - firstBuf []byte - bufStart int - - readRequestOnce sync.Once -} - -func NewAutoHttpsConn(conn net.Conn) net.Conn { - return &AutoHttpsConn{ - Conn: conn, - } -} - -func (c *AutoHttpsConn) readRequest() bool { - c.firstBuf = make([]byte, 2048) - n, err := c.Conn.Read(c.firstBuf) - c.firstBuf = c.firstBuf[:n] - if err != nil { - return false - } - reader := bytes.NewReader(c.firstBuf) - bufReader := bufio.NewReader(reader) - request, err := http.ReadRequest(bufReader) - if err != nil { - return false - } - resp := http.Response{ - Header: http.Header{}, - } - resp.StatusCode = http.StatusTemporaryRedirect - location := fmt.Sprintf("https://%v%v", request.Host, request.RequestURI) - resp.Header.Set("Location", location) - resp.Write(c.Conn) - c.Close() - c.firstBuf = nil - return true -} - -func (c *AutoHttpsConn) Read(buf []byte) (int, error) { - c.readRequestOnce.Do(func() { - c.readRequest() - }) - - if c.firstBuf != nil { - n := copy(buf, c.firstBuf[c.bufStart:]) - c.bufStart += n - if c.bufStart >= len(c.firstBuf) { - c.firstBuf = nil - } - return n, nil - } - - return c.Conn.Read(buf) -} diff --git a/web/service/setting.go b/web/service/setting.go index d3072252..fec324af 100644 --- a/web/service/setting.go +++ b/web/service/setting.go @@ -39,6 +39,7 @@ var defaultValueMap = map[string]string{ "tgRunTime": "@daily", "tgBotBackup": "false", "tgCpu": "0", + "tgLang": "en-US", "secretEnable": "false", } @@ -256,6 +257,10 @@ func (s *SettingService) GetTgCpu() (int, error) { return s.getInt("tgCpu") } +func (s *SettingService) GetTgLang() (string, error) { + return s.getString("tgLang") +} + func (s *SettingService) GetPort() (int, error) { return s.getInt("webPort") } -- cgit v1.2.3