package router import ( "embed" "fmt" "github.com/gin-gonic/gin" "github.com/songquanpeng/one-api/common/config" "github.com/songquanpeng/one-api/common/logger" "net/http" "os" "strings" ) func SetRouter(engine *gin.Engine, buildFS embed.FS) { var baseUrl = os.Getenv("BASE_URL") if baseUrl == "" { baseUrl = "/" } router := engine.Group(baseUrl) SetApiRouter(router) SetDashboardRouter(router) SetRelayRouter(router) frontendBaseUrl := os.Getenv("FRONTEND_BASE_URL") if config.IsMasterNode && frontendBaseUrl != "" { frontendBaseUrl = "" logger.SysLog("FRONTEND_BASE_URL is ignored on master node") } if frontendBaseUrl == "" { SetWebRouter(engine, baseUrl, buildFS) } else { frontendBaseUrl = strings.TrimSuffix(frontendBaseUrl, "/") engine.NoRoute(func(c *gin.Context) { c.Redirect(http.StatusMovedPermanently, fmt.Sprintf("%s%s", frontendBaseUrl, c.Request.RequestURI)) }) } }