| 12345678910111213141516171819202122232425262728293031 | 
							- // Package middleware provides HTTP middleware functions for the 3x-ui web panel,
 
- // including domain validation and URL redirection utilities.
 
- package middleware
 
- import (
 
- 	"net"
 
- 	"net/http"
 
- 	"strings"
 
- 	"github.com/gin-gonic/gin"
 
- )
 
- // DomainValidatorMiddleware returns a Gin middleware that validates the request domain.
 
- // It extracts the host from the request, strips any port number, and compares it
 
- // against the configured domain. Requests from unauthorized domains are rejected
 
- // with HTTP 403 Forbidden status.
 
- func DomainValidatorMiddleware(domain string) gin.HandlerFunc {
 
- 	return func(c *gin.Context) {
 
- 		host := c.Request.Host
 
- 		if colonIndex := strings.LastIndex(host, ":"); colonIndex != -1 {
 
- 			host, _, _ = net.SplitHostPort(c.Request.Host)
 
- 		}
 
- 		if host != domain {
 
- 			c.AbortWithStatus(http.StatusForbidden)
 
- 			return
 
- 		}
 
- 		c.Next()
 
- 	}
 
- }
 
 
  |