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:
authorHamidreza Ghavami <70919649+hamid-gh98@users.noreply.github.com>2023-05-30 23:54:18 +0300
committerHamidreza Ghavami <70919649+hamid-gh98@users.noreply.github.com>2023-05-30 23:54:18 +0300
commitea7fe09c27da8c12e38f581fd7a4b336b4e55ad7 (patch)
tree7fdb5f92b9d752c275aae9776f38ee37745b9c7f
parent8170b65db4d38002f81825ea876dd3e4c9292931 (diff)
use the middlewares
-rw-r--r--sub/sub.go19
-rw-r--r--web/web.go34
2 files changed, 16 insertions, 37 deletions
diff --git a/sub/sub.go b/sub/sub.go
index f7353cc2..b642f7f2 100644
--- a/sub/sub.go
+++ b/sub/sub.go
@@ -7,10 +7,10 @@ import (
"net"
"net/http"
"strconv"
- "strings"
"x-ui/config"
"x-ui/logger"
"x-ui/util/common"
+ "x-ui/web/middleware"
"x-ui/web/network"
"x-ui/web/service"
@@ -58,18 +58,7 @@ func (s *Server) initRouter() (*gin.Engine, error) {
}
if subDomain != "" {
- validateDomain := func(c *gin.Context) {
- host := strings.Split(c.Request.Host, ":")[0]
-
- if host != subDomain {
- c.AbortWithStatus(http.StatusForbidden)
- return
- }
-
- c.Next()
- }
-
- engine.Use(validateDomain)
+ engine.Use(middleware.DomainValidatorMiddleware(subDomain))
}
g := engine.Group(subPath)
@@ -116,11 +105,13 @@ func (s *Server) Start() (err error) {
if err != nil {
return err
}
+
listenAddr := net.JoinHostPort(listen, strconv.Itoa(port))
listener, err := net.Listen("tcp", listenAddr)
if err != nil {
return err
}
+
if certFile != "" || keyFile != "" {
cert, err := tls.LoadX509KeyPair(certFile, keyFile)
if err != nil {
@@ -168,4 +159,4 @@ func (s *Server) Stop() error {
func (s *Server) GetCtx() context.Context {
return s.ctx
-} \ No newline at end of file
+}
diff --git a/web/web.go b/web/web.go
index 543ecf8e..3d8f0242 100644
--- a/web/web.go
+++ b/web/web.go
@@ -19,6 +19,7 @@ import (
"x-ui/web/controller"
"x-ui/web/job"
"x-ui/web/locale"
+ "x-ui/web/middleware"
"x-ui/web/network"
"x-ui/web/service"
@@ -144,28 +145,6 @@ func (s *Server) getHtmlTemplate(funcMap template.FuncMap) (*template.Template,
return t, nil
}
-func redirectMiddleware(basePath string) gin.HandlerFunc {
- return func(c *gin.Context) {
- // Redirect from old '/xui' path to '/panel'
- path := c.Request.URL.Path
- redirects := map[string]string{
- "panel/API": "panel/api",
- "xui/API": "panel/api",
- "xui": "panel",
- }
- for from, to := range redirects {
- from, to = basePath+from, basePath+to
- if strings.HasPrefix(path, from) {
- newPath := to + path[len(from):]
- c.Redirect(http.StatusMovedPermanently, newPath)
- c.Abort()
- return
- }
- }
- c.Next()
- }
-}
-
func (s *Server) initRouter() (*gin.Engine, error) {
if config.IsDebug() {
gin.SetMode(gin.DebugMode)
@@ -177,6 +156,15 @@ func (s *Server) initRouter() (*gin.Engine, error) {
engine := gin.Default()
+ webDomain, err := s.settingService.GetWebDomain()
+ if err != nil {
+ return nil, err
+ }
+
+ if webDomain != "" {
+ engine.Use(middleware.DomainValidatorMiddleware(webDomain))
+ }
+
secret, err := s.settingService.GetSecret()
if err != nil {
return nil, err
@@ -233,7 +221,7 @@ func (s *Server) initRouter() (*gin.Engine, error) {
}
// Apply the redirect middleware (`/xui` to `/panel`)
- engine.Use(redirectMiddleware(basePath))
+ engine.Use(middleware.RedirectMiddleware(basePath))
g := engine.Group(basePath)