package router import ( "embed" "fmt" "net/http" "one-api/common/config" "one-api/common/logger" "strings" "github.com/gin-gonic/gin" "github.com/spf13/viper" ) func SetRouter(router *gin.Engine, buildFS embed.FS, indexPage []byte) { SetApiRouter(router) SetDashboardRouter(router) SetRelayRouter(router) frontendBaseUrl := viper.GetString("frontend_base_url") if config.IsMasterNode && frontendBaseUrl != "" { frontendBaseUrl = "" logger.SysLog("FRONTEND_BASE_URL is ignored on master node") } if frontendBaseUrl == "" { SetWebRouter(router, buildFS, indexPage) } else { frontendBaseUrl = strings.TrimSuffix(frontendBaseUrl, "/") router.NoRoute(func(c *gin.Context) { c.Redirect(http.StatusMovedPermanently, fmt.Sprintf("%s%s", frontendBaseUrl, c.Request.RequestURI)) }) } }