[xray] show xray errors #1300

This commit is contained in:
Alireza Ahmadi 2023-12-10 12:57:39 +01:00
parent 655e17e162
commit 4cb67fd1c3
3 changed files with 26 additions and 1 deletions

View file

@ -10,6 +10,7 @@ type XraySettingController struct {
XraySettingService service.XraySettingService XraySettingService service.XraySettingService
SettingService service.SettingService SettingService service.SettingService
InboundService service.InboundService InboundService service.InboundService
XrayService service.XrayService
} }
func NewXraySettingController(g *gin.RouterGroup) *XraySettingController { func NewXraySettingController(g *gin.RouterGroup) *XraySettingController {
@ -23,6 +24,7 @@ func (a *XraySettingController) initRouter(g *gin.RouterGroup) {
g.POST("/", a.getXraySetting) g.POST("/", a.getXraySetting)
g.POST("/update", a.updateSetting) g.POST("/update", a.updateSetting)
g.GET("/getXrayResult", a.getXrayResult)
g.GET("/getDefaultJsonConfig", a.getDefaultXrayConfig) g.GET("/getDefaultJsonConfig", a.getDefaultXrayConfig)
} }
@ -55,3 +57,7 @@ func (a *XraySettingController) getDefaultXrayConfig(c *gin.Context) {
} }
jsonObj(c, defaultJsonConfig, nil) jsonObj(c, defaultJsonConfig, nil)
} }
func (a *XraySettingController) getXrayResult(c *gin.Context) {
jsonObj(c, a.XrayService.GetXrayResult(), nil)
}

View file

@ -65,6 +65,14 @@
<a-space direction="horizontal"> <a-space direction="horizontal">
<a-button type="primary" :disabled="saveBtnDisable" @click="updateXraySetting">{{ i18n "pages.xray.save" }}</a-button> <a-button type="primary" :disabled="saveBtnDisable" @click="updateXraySetting">{{ i18n "pages.xray.save" }}</a-button>
<a-button type="danger" :disabled="!saveBtnDisable" @click="restartXray">{{ i18n "pages.xray.restart" }}</a-button> <a-button type="danger" :disabled="!saveBtnDisable" @click="restartXray">{{ i18n "pages.xray.restart" }}</a-button>
<a-popover v-if="restartResult"
:overlay-class-name="themeSwitcher.currentTheme">
<span slot="title" style="font-size: 12pt">Error in running xray-core</span>
<template slot="content">
<p style="max-width: 400px" v-for="line in restartResult.split('\n')">[[ line ]]</p>
</template>
<a-icon type="question-circle" theme="filled"></a-icon>
</a-popover>
</a-space> </a-space>
</a-col> </a-col>
<a-col :xs="24" :sm="16"> <a-col :xs="24" :sm="16">
@ -462,6 +470,7 @@
xraySetting: '', xraySetting: '',
inboundTags: [], inboundTags: [],
saveBtnDisable: true, saveBtnDisable: true,
restartResult: '',
isMobile: window.innerWidth <= 768, isMobile: window.innerWidth <= 768,
advSettings: 'xraySetting', advSettings: 'xraySetting',
cm: null, cm: null,
@ -586,8 +595,17 @@
const msg = await HttpUtil.post("server/restartXrayService"); const msg = await HttpUtil.post("server/restartXrayService");
this.loading(false); this.loading(false);
if (msg.success) { 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() { async fetchUserSecret() {
this.loading(true); this.loading(true);
@ -896,6 +914,7 @@
}, },
async mounted() { async mounted() {
await this.getXraySetting(); await this.getXraySetting();
await this.getXrayResult();
while (true) { while (true) {
await PromiseUtil.sleep(600); await PromiseUtil.sleep(600);
this.saveBtnDisable = this.oldXraySetting === this.xraySetting; this.saveBtnDisable = this.oldXraySetting === this.xraySetting;