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/middleware')
-rw-r--r--web/middleware/domainValidator.go21
-rw-r--r--web/middleware/redirect.go34
2 files changed, 55 insertions, 0 deletions
diff --git a/web/middleware/domainValidator.go b/web/middleware/domainValidator.go
new file mode 100644
index 00000000..3adb0f0f
--- /dev/null
+++ b/web/middleware/domainValidator.go
@@ -0,0 +1,21 @@
+package middleware
+
+import (
+ "net/http"
+ "strings"
+
+ "github.com/gin-gonic/gin"
+)
+
+func DomainValidatorMiddleware(domain string) gin.HandlerFunc {
+ return func(c *gin.Context) {
+ host := strings.Split(c.Request.Host, ":")[0]
+
+ if host != domain {
+ c.AbortWithStatus(http.StatusForbidden)
+ return
+ }
+
+ c.Next()
+ }
+}
diff --git a/web/middleware/redirect.go b/web/middleware/redirect.go
new file mode 100644
index 00000000..e3dc8ada
--- /dev/null
+++ b/web/middleware/redirect.go
@@ -0,0 +1,34 @@
+package middleware
+
+import (
+ "net/http"
+ "strings"
+
+ "github.com/gin-gonic/gin"
+)
+
+func RedirectMiddleware(basePath string) gin.HandlerFunc {
+ return func(c *gin.Context) {
+ // Redirect from old '/xui' path to '/panel'
+ redirects := map[string]string{
+ "panel/API": "panel/api",
+ "xui/API": "panel/api",
+ "xui": "panel",
+ }
+
+ path := c.Request.URL.Path
+ 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()
+ }
+}