This commit is contained in:
Hossin Asaadi
2022-11-10 15:08:27 -05:00
parent 3faf7bb303
commit 7fbd7c24ca
6 changed files with 80 additions and 16 deletions

48
web/controller/api.go Normal file
View File

@@ -0,0 +1,48 @@
package controller
import (
"github.com/gin-gonic/gin"
)
type APIController struct {
BaseController
inboundController *InboundController
settingController *SettingController
}
func NewAPIController(g *gin.RouterGroup) *APIController {
a := &APIController{}
a.initRouter(g)
return a
}
func (a *APIController) initRouter(g *gin.RouterGroup) {
g = g.Group("/xui/API/inbounds")
g.Use(a.checkLogin)
g.GET("/", a.inbounds)
g.GET("/get/:id", a.inbound)
g.POST("/add", a.addInbound)
g.POST("/del/:id", a.delInbound)
g.POST("/update/:id", a.updateInbound)
a.inboundController = NewInboundController(g)
}
func (a *APIController) inbounds(c *gin.Context) {
a.inboundController.getInbounds(c)
}
func (a *APIController) inbound(c *gin.Context) {
a.inboundController.getInbound(c)
}
func (a *APIController) addInbound(c *gin.Context) {
a.inboundController.addInbound(c)
}
func (a *APIController) delInbound(c *gin.Context) {
a.inboundController.delInbound(c)
}
func (a *APIController) updateInbound(c *gin.Context) {
a.inboundController.updateInbound(c)
}

View File

@@ -59,6 +59,19 @@ func (a *InboundController) getInbounds(c *gin.Context) {
}
jsonObj(c, inbounds, nil)
}
func (a *InboundController) getInbound(c *gin.Context) {
id, err := strconv.Atoi(c.Param("id"))
if err != nil {
jsonMsg(c, I18n(c , "get"), err)
return
}
inbound, err := a.inboundService.GetInbound(id)
if err != nil {
jsonMsg(c, I18n(c , "pages.inbounds.toasts.obtain"), err)
return
}
jsonObj(c, inbound, nil)
}
func (a *InboundController) addInbound(c *gin.Context) {
inbound := &model.Inbound{}
@@ -71,8 +84,8 @@ func (a *InboundController) addInbound(c *gin.Context) {
inbound.UserId = user.Id
inbound.Enable = true
inbound.Tag = fmt.Sprintf("inbound-%v", inbound.Port)
err = a.inboundService.AddInbound(inbound)
jsonMsg(c, I18n(c , "pages.inbounds.addTo"), err)
inbound, err = a.inboundService.AddInbound(inbound)
jsonMsgObj(c, I18n(c , "pages.inbounds.addTo"), inbound, err)
if err == nil {
a.xrayService.SetToNeedRestart()
}
@@ -85,7 +98,7 @@ func (a *InboundController) delInbound(c *gin.Context) {
return
}
err = a.inboundService.DelInbound(id)
jsonMsg(c, I18n(c , "delete"), err)
jsonMsgObj(c, I18n(c , "delete"), id, err)
if err == nil {
a.xrayService.SetToNeedRestart()
}
@@ -105,8 +118,8 @@ func (a *InboundController) updateInbound(c *gin.Context) {
jsonMsg(c, I18n(c , "pages.inbounds.revise"), err)
return
}
err = a.inboundService.UpdateInbound(inbound)
jsonMsg(c, I18n(c , "pages.inbounds.revise"), err)
inbound, err = a.inboundService.UpdateInbound(inbound)
jsonMsgObj(c, I18n(c , "pages.inbounds.revise"), inbound, err)
if err == nil {
a.xrayService.SetToNeedRestart()
}

View File

@@ -35,7 +35,7 @@ func NewStatsNotifyJob() *StatsNotifyJob {
func (j *StatsNotifyJob) SendMsgToTgbot(msg string) {
//Telegram bot basic info
tgBottoken, err := j.settingService.GetTgBotToken()
if err != nil {
if err != nil || tgBottoken == "" {
logger.Warning("sendMsgToTgbot failed,GetTgBotToken fail:", err)
return
}

View File

@@ -48,16 +48,17 @@ func (s *InboundService) checkPortExist(port int, ignoreId int) (bool, error) {
return count > 0, nil
}
func (s *InboundService) AddInbound(inbound *model.Inbound) error {
func (s *InboundService) AddInbound(inbound *model.Inbound) (*model.Inbound,error) {
exist, err := s.checkPortExist(inbound.Port, 0)
if err != nil {
return err
return inbound, err
}
if exist {
return common.NewError("端口已存在:", inbound.Port)
return inbound, common.NewError("端口已存在:", inbound.Port)
}
db := database.GetDB()
return db.Save(inbound).Error
return inbound, db.Save(inbound).Error
}
func (s *InboundService) AddInbounds(inbounds []*model.Inbound) error {
@@ -107,18 +108,18 @@ func (s *InboundService) GetInbound(id int) (*model.Inbound, error) {
return inbound, nil
}
func (s *InboundService) UpdateInbound(inbound *model.Inbound) error {
func (s *InboundService) UpdateInbound(inbound *model.Inbound) (*model.Inbound, error) {
exist, err := s.checkPortExist(inbound.Port, inbound.Id)
if err != nil {
return err
return inbound, err
}
if exist {
return common.NewError("端口已存在:", inbound.Port)
return inbound, common.NewError("端口已存在:", inbound.Port)
}
oldInbound, err := s.GetInbound(inbound.Id)
if err != nil {
return err
return inbound, err
}
oldInbound.Up = inbound.Up
oldInbound.Down = inbound.Down
@@ -135,7 +136,7 @@ func (s *InboundService) UpdateInbound(inbound *model.Inbound) error {
oldInbound.Tag = fmt.Sprintf("inbound-%v", inbound.Port)
db := database.GetDB()
return db.Save(oldInbound).Error
return inbound, db.Save(oldInbound).Error
}
func (s *InboundService) AddTraffic(traffics []*xray.Traffic) (err error) {

View File

@@ -38,7 +38,7 @@
"monitor" = "Listen IP"
"certificate" = "certificat"
"fail" = "fail"
"success" = "success"
"success" = " success"
"getVersion" = "get version"
"install" = "install"

View File

@@ -84,6 +84,7 @@ type Server struct {
index *controller.IndexController
server *controller.ServerController
xui *controller.XUIController
api *controller.APIController
xrayService service.XrayService
settingService service.SettingService
@@ -206,6 +207,7 @@ func (s *Server) initRouter() (*gin.Engine, error) {
s.index = controller.NewIndexController(g)
s.server = controller.NewServerController(g)
s.xui = controller.NewXUIController(g)
s.api = controller.NewAPIController(g)
return engine, nil
}