From 4cb67fd1c3129b83f3750f863caba081453f42b1 Mon Sep 17 00:00:00 2001 From: Alireza Ahmadi Date: Sun, 10 Dec 2023 12:57:39 +0100 Subject: [xray] show xray errors #1300 --- web/controller/xraySetting.go | 57 -------------------------------------- web/controller/xray_setting.go | 63 ++++++++++++++++++++++++++++++++++++++++++ web/html/xui/xray.html | 21 +++++++++++++- web/service/xraySettings.go | 28 ------------------- web/service/xray_setting.go | 28 +++++++++++++++++++ 5 files changed, 111 insertions(+), 86 deletions(-) delete mode 100644 web/controller/xraySetting.go create mode 100644 web/controller/xray_setting.go delete mode 100644 web/service/xraySettings.go create mode 100644 web/service/xray_setting.go (limited to 'web') diff --git a/web/controller/xraySetting.go b/web/controller/xraySetting.go deleted file mode 100644 index a4c8b600..00000000 --- a/web/controller/xraySetting.go +++ /dev/null @@ -1,57 +0,0 @@ -package controller - -import ( - "x-ui/web/service" - - "github.com/gin-gonic/gin" -) - -type XraySettingController struct { - XraySettingService service.XraySettingService - SettingService service.SettingService - InboundService service.InboundService -} - -func NewXraySettingController(g *gin.RouterGroup) *XraySettingController { - a := &XraySettingController{} - a.initRouter(g) - return a -} - -func (a *XraySettingController) initRouter(g *gin.RouterGroup) { - g = g.Group("/xray") - - g.POST("/", a.getXraySetting) - g.POST("/update", a.updateSetting) - g.GET("/getDefaultJsonConfig", a.getDefaultXrayConfig) -} - -func (a *XraySettingController) getXraySetting(c *gin.Context) { - xraySetting, err := a.SettingService.GetXrayConfigTemplate() - if err != nil { - jsonMsg(c, I18nWeb(c, "pages.settings.toasts.getSettings"), err) - return - } - inboundTags, err := a.InboundService.GetInboundTags() - if err != nil { - jsonMsg(c, I18nWeb(c, "pages.settings.toasts.getSettings"), err) - return - } - xrayResponse := "{ \"xraySetting\": " + xraySetting + ", \"inboundTags\": " + inboundTags + " }" - jsonObj(c, xrayResponse, nil) -} - -func (a *XraySettingController) updateSetting(c *gin.Context) { - xraySetting := c.PostForm("xraySetting") - err := a.XraySettingService.SaveXraySetting(xraySetting) - jsonMsg(c, I18nWeb(c, "pages.settings.toasts.modifySettings"), err) -} - -func (a *XraySettingController) getDefaultXrayConfig(c *gin.Context) { - defaultJsonConfig, err := a.SettingService.GetDefaultXrayConfig() - if err != nil { - jsonMsg(c, I18nWeb(c, "pages.settings.toasts.getSettings"), err) - return - } - jsonObj(c, defaultJsonConfig, nil) -} diff --git a/web/controller/xray_setting.go b/web/controller/xray_setting.go new file mode 100644 index 00000000..d4deacd9 --- /dev/null +++ b/web/controller/xray_setting.go @@ -0,0 +1,63 @@ +package controller + +import ( + "x-ui/web/service" + + "github.com/gin-gonic/gin" +) + +type XraySettingController struct { + XraySettingService service.XraySettingService + SettingService service.SettingService + InboundService service.InboundService + XrayService service.XrayService +} + +func NewXraySettingController(g *gin.RouterGroup) *XraySettingController { + a := &XraySettingController{} + a.initRouter(g) + return a +} + +func (a *XraySettingController) initRouter(g *gin.RouterGroup) { + g = g.Group("/xray") + + g.POST("/", a.getXraySetting) + g.POST("/update", a.updateSetting) + g.GET("/getXrayResult", a.getXrayResult) + g.GET("/getDefaultJsonConfig", a.getDefaultXrayConfig) +} + +func (a *XraySettingController) getXraySetting(c *gin.Context) { + xraySetting, err := a.SettingService.GetXrayConfigTemplate() + if err != nil { + jsonMsg(c, I18nWeb(c, "pages.settings.toasts.getSettings"), err) + return + } + inboundTags, err := a.InboundService.GetInboundTags() + if err != nil { + jsonMsg(c, I18nWeb(c, "pages.settings.toasts.getSettings"), err) + return + } + xrayResponse := "{ \"xraySetting\": " + xraySetting + ", \"inboundTags\": " + inboundTags + " }" + jsonObj(c, xrayResponse, nil) +} + +func (a *XraySettingController) updateSetting(c *gin.Context) { + xraySetting := c.PostForm("xraySetting") + err := a.XraySettingService.SaveXraySetting(xraySetting) + jsonMsg(c, I18nWeb(c, "pages.settings.toasts.modifySettings"), err) +} + +func (a *XraySettingController) getDefaultXrayConfig(c *gin.Context) { + defaultJsonConfig, err := a.SettingService.GetDefaultXrayConfig() + if err != nil { + jsonMsg(c, I18nWeb(c, "pages.settings.toasts.getSettings"), err) + return + } + jsonObj(c, defaultJsonConfig, nil) +} + +func (a *XraySettingController) getXrayResult(c *gin.Context) { + jsonObj(c, a.XrayService.GetXrayResult(), nil) +} diff --git a/web/html/xui/xray.html b/web/html/xui/xray.html index cdf5fd01..99b1878d 100644 --- a/web/html/xui/xray.html +++ b/web/html/xui/xray.html @@ -65,6 +65,14 @@ {{ i18n "pages.xray.save" }} {{ i18n "pages.xray.restart" }} + + Error in running xray-core + + + @@ -462,6 +470,7 @@ xraySetting: '', inboundTags: [], saveBtnDisable: true, + restartResult: '', isMobile: window.innerWidth <= 768, advSettings: 'xraySetting', cm: null, @@ -586,8 +595,17 @@ const msg = await HttpUtil.post("server/restartXrayService"); this.loading(false); if (msg.success) { - this.loading(true); + await PromiseUtil.sleep(500); + await this.getXrayResult(); } + this.loading(false); + }, + async getXrayResult() { + const msg = await HttpUtil.get("/panel/xray/getXrayResult"); + if(msg.success){ + this.restartResult=msg.obj; + if(msg.obj.length > 1) Vue.prototype.$message.error(msg.obj); + } }, async fetchUserSecret() { this.loading(true); @@ -896,6 +914,7 @@ }, async mounted() { await this.getXraySetting(); + await this.getXrayResult(); while (true) { await PromiseUtil.sleep(600); this.saveBtnDisable = this.oldXraySetting === this.xraySetting; diff --git a/web/service/xraySettings.go b/web/service/xraySettings.go deleted file mode 100644 index 4550bde2..00000000 --- a/web/service/xraySettings.go +++ /dev/null @@ -1,28 +0,0 @@ -package service - -import ( - _ "embed" - "encoding/json" - "x-ui/util/common" - "x-ui/xray" -) - -type XraySettingService struct { - SettingService -} - -func (s *XraySettingService) SaveXraySetting(newXraySettings string) error { - if err := s.CheckXrayConfig(newXraySettings); err != nil { - return err - } - return s.SettingService.saveSetting("xrayTemplateConfig", newXraySettings) -} - -func (s *XraySettingService) CheckXrayConfig(XrayTemplateConfig string) error { - xrayConfig := &xray.Config{} - err := json.Unmarshal([]byte(XrayTemplateConfig), xrayConfig) - if err != nil { - return common.NewError("xray template config invalid:", err) - } - return nil -} diff --git a/web/service/xray_setting.go b/web/service/xray_setting.go new file mode 100644 index 00000000..4550bde2 --- /dev/null +++ b/web/service/xray_setting.go @@ -0,0 +1,28 @@ +package service + +import ( + _ "embed" + "encoding/json" + "x-ui/util/common" + "x-ui/xray" +) + +type XraySettingService struct { + SettingService +} + +func (s *XraySettingService) SaveXraySetting(newXraySettings string) error { + if err := s.CheckXrayConfig(newXraySettings); err != nil { + return err + } + return s.SettingService.saveSetting("xrayTemplateConfig", newXraySettings) +} + +func (s *XraySettingService) CheckXrayConfig(XrayTemplateConfig string) error { + xrayConfig := &xray.Config{} + err := json.Unmarshal([]byte(XrayTemplateConfig), xrayConfig) + if err != nil { + return common.NewError("xray template config invalid:", err) + } + return nil +} -- cgit v1.2.3