diff --git a/web/controller/setting.go b/web/controller/setting.go
index 261eeec8..3f1e49df 100644
--- a/web/controller/setting.go
+++ b/web/controller/setting.go
@@ -37,6 +37,7 @@ func (a *SettingController) initRouter(g *gin.RouterGroup) {
g.POST("/update", a.updateSetting)
g.POST("/updateUser", a.updateUser)
g.POST("/restartPanel", a.restartPanel)
+ g.GET("/getDefaultJsonConfig", a.getDefaultXrayConfig)
}
func (a *SettingController) getAllSetting(c *gin.Context) {
@@ -118,3 +119,12 @@ func (a *SettingController) restartPanel(c *gin.Context) {
err := a.panelService.RestartPanel(time.Second * 3)
jsonMsg(c, I18n(c, "pages.setting.restartPanel"), err)
}
+
+func (a *SettingController) getDefaultXrayConfig(c *gin.Context) {
+ defaultJsonConfig, err := a.settingService.GetDefaultXrayConfig()
+ if err != nil {
+ jsonMsg(c, I18n(c, "pages.setting.toasts.getSetting"), err)
+ return
+ }
+ jsonObj(c, defaultJsonConfig, nil)
+}
diff --git a/web/html/xui/setting.html b/web/html/xui/setting.html
index 02681166..13643bc6 100644
--- a/web/html/xui/setting.html
+++ b/web/html/xui/setting.html
@@ -113,6 +113,9 @@
{{ i18n "pages.setting.completeTemplate"}}
+
+ {{ i18n "pages.setting.resetDefaultConfig" }}
+
@@ -201,7 +204,16 @@
await PromiseUtil.sleep(5000);
location.reload();
}
- }
+ },
+ async resetXrayConfigToDefault() {
+ this.loading(true);
+ const msg = await HttpUtil.get("/xui/setting/getDefaultJsonConfig");
+ this.loading(false);
+ if (msg.success) {
+ this.templateSettings = JSON.parse(JSON.stringify(msg.obj, null, 2));
+ this.saveBtnDisable = true;
+ }
+ },
},
async mounted() {
await this.getAllSetting();
diff --git a/web/service/setting.go b/web/service/setting.go
index 2df89738..3ceb7a59 100644
--- a/web/service/setting.go
+++ b/web/service/setting.go
@@ -2,6 +2,7 @@ package service
import (
_ "embed"
+ "encoding/json"
"errors"
"fmt"
"reflect"
@@ -326,3 +327,12 @@ func (s *SettingService) UpdateAllSetting(allSetting *entity.AllSetting) error {
}
return common.Combine(errs...)
}
+
+func (s *SettingService) GetDefaultXrayConfig() (interface{}, error) {
+ var jsonData interface{}
+ err := json.Unmarshal([]byte(xrayTemplateConfig), &jsonData)
+ if err != nil {
+ return nil, err
+ }
+ return jsonData, nil
+}
diff --git a/web/translation/translate.en_US.toml b/web/translation/translate.en_US.toml
index e6907e7e..5d27497c 100644
--- a/web/translation/translate.en_US.toml
+++ b/web/translation/translate.en_US.toml
@@ -193,6 +193,7 @@
"save" = "Save"
"restartPanel" = "Restart Panel"
"restartPanelDesc" = "Are you sure you want to restart the panel? Click OK to restart after 3 seconds. If you cannot access the panel after restarting, please go to the server to view the panel log information"
+"resetDefaultConfig" = "Reset to default config"
"panelConfig" = "Panel Configuration"
"userSetting" = "User Setting"
"xrayConfiguration" = "xray Configuration"
diff --git a/web/translation/translate.fa_IR.toml b/web/translation/translate.fa_IR.toml
index c83f92c2..277db594 100644
--- a/web/translation/translate.fa_IR.toml
+++ b/web/translation/translate.fa_IR.toml
@@ -193,6 +193,7 @@
"save" = "ذخیره"
"restartPanel" = "ریستارت پنل"
"restartPanelDesc" = "آیا مطمئن هستید که می خواهید پنل را دوباره راه اندازی کنید؟ برای راه اندازی مجدد روی OK کلیک کنید. اگر بعد از 3 ثانیه نمی توانید به پنل دسترسی پیدا کنید، لطفاً برای مشاهده اطلاعات گزارش پانل به سرور برگردید"
+"resetDefaultConfig" = "برگشت به تنظیمات پیشفرض"
"panelConfig" = "تنظیمات پنل"
"userSetting" = "تنظیمات مدیر"
"xrayConfiguration" = "تنظیمات Xray"
diff --git a/web/translation/translate.zh_Hans.toml b/web/translation/translate.zh_Hans.toml
index 0e960a6b..f396340f 100644
--- a/web/translation/translate.zh_Hans.toml
+++ b/web/translation/translate.zh_Hans.toml
@@ -193,6 +193,7 @@
"save" = "保存配置"
"restartPanel" = "重启面板"
"restartPanelDesc" = "确定要重启面板吗?点击确定将于 3 秒后重启,若重启后无法访问面板,请前往服务器查看面板日志信息"
+"resetDefaultConfig" = "重置为默认配置"
"panelConfig" = "面板配置"
"userSetting" = "用户设置"
"xrayConfiguration" = "xray 相关设置"