108 lines
2.3 KiB
Go
108 lines
2.3 KiB
Go
package api
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/alireza0/s-ui/util/common"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
type APIHandler struct {
|
|
ApiService
|
|
apiv2 *APIv2Handler
|
|
}
|
|
|
|
func NewAPIHandler(g *gin.RouterGroup, a2 *APIv2Handler) {
|
|
a := &APIHandler{
|
|
apiv2: a2,
|
|
}
|
|
a.initRouter(g)
|
|
}
|
|
|
|
func (a *APIHandler) initRouter(g *gin.RouterGroup) {
|
|
g.Use(func(c *gin.Context) {
|
|
path := c.Request.URL.Path
|
|
if !strings.HasSuffix(path, "login") && !strings.HasSuffix(path, "logout") {
|
|
checkLogin(c)
|
|
}
|
|
})
|
|
g.POST("/:postAction", a.postHandler)
|
|
g.GET("/:getAction", a.getHandler)
|
|
}
|
|
|
|
func (a *APIHandler) postHandler(c *gin.Context) {
|
|
loginUser := GetLoginUser(c)
|
|
action := c.Param("postAction")
|
|
|
|
switch action {
|
|
case "login":
|
|
a.ApiService.Login(c)
|
|
case "changePass":
|
|
a.ApiService.ChangePass(c)
|
|
case "save":
|
|
a.ApiService.Save(c, loginUser)
|
|
case "restartApp":
|
|
a.ApiService.RestartApp(c)
|
|
case "restartSb":
|
|
a.ApiService.RestartSb(c)
|
|
case "linkConvert":
|
|
a.ApiService.LinkConvert(c)
|
|
case "subConvert":
|
|
a.ApiService.SubConvert(c)
|
|
case "importdb":
|
|
a.ApiService.ImportDb(c)
|
|
case "addToken":
|
|
a.ApiService.AddToken(c)
|
|
a.apiv2.ReloadTokens()
|
|
case "deleteToken":
|
|
a.ApiService.DeleteToken(c)
|
|
a.apiv2.ReloadTokens()
|
|
default:
|
|
jsonMsg(c, "failed", common.NewError("unknown action: ", action))
|
|
}
|
|
}
|
|
|
|
func (a *APIHandler) getHandler(c *gin.Context) {
|
|
action := c.Param("getAction")
|
|
|
|
switch action {
|
|
case "logout":
|
|
a.ApiService.Logout(c)
|
|
case "load":
|
|
a.ApiService.LoadData(c)
|
|
case "inbounds", "outbounds", "endpoints", "services", "tls", "clients", "config":
|
|
err := a.ApiService.LoadPartialData(c, []string{action})
|
|
if err != nil {
|
|
jsonMsg(c, action, err)
|
|
}
|
|
return
|
|
case "users":
|
|
a.ApiService.GetUsers(c)
|
|
case "settings":
|
|
a.ApiService.GetSettings(c)
|
|
case "stats":
|
|
a.ApiService.GetStats(c)
|
|
case "status":
|
|
a.ApiService.GetStatus(c)
|
|
case "onlines":
|
|
a.ApiService.GetOnlines(c)
|
|
case "logs":
|
|
a.ApiService.GetLogs(c)
|
|
case "changes":
|
|
a.ApiService.CheckChanges(c)
|
|
case "keypairs":
|
|
a.ApiService.GetKeypairs(c)
|
|
case "getdb":
|
|
a.ApiService.GetDb(c)
|
|
case "tokens":
|
|
a.ApiService.GetTokens(c)
|
|
case "singbox-config":
|
|
a.ApiService.GetSingboxConfig(c)
|
|
case "checkOutbound":
|
|
a.ApiService.GetCheckOutbound(c)
|
|
default:
|
|
jsonMsg(c, "failed", common.NewError("unknown action: ", action))
|
|
}
|
|
}
|