diff --git a/web/controller/xraySetting.go b/web/controller/xraySetting.go index d244d030..a4c8b600 100644 --- a/web/controller/xraySetting.go +++ b/web/controller/xraySetting.go @@ -9,6 +9,7 @@ import ( type XraySettingController struct { XraySettingService service.XraySettingService SettingService service.SettingService + InboundService service.InboundService } func NewXraySettingController(g *gin.RouterGroup) *XraySettingController { @@ -31,7 +32,13 @@ func (a *XraySettingController) getXraySetting(c *gin.Context) { jsonMsg(c, I18nWeb(c, "pages.settings.toasts.getSettings"), err) return } - jsonObj(c, xraySetting, nil) + 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) { diff --git a/web/html/xui/xray.html b/web/html/xui/xray.html index a6b562ab..39990922 100644 --- a/web/html/xui/xray.html +++ b/web/html/xui/xray.html @@ -88,7 +88,7 @@ - + @@ -201,7 +201,116 @@ - + + + {{ i18n "pages.xray.rules.add" }} + + + + + + + + + {{ i18n "pages.xray.completeTemplate"}} @@ -220,7 +329,33 @@ {{template "js" .}} {{template "component/themeSwitcher" .}} {{template "component/setting"}} +{{template "ruleModal"}} +{{end}} diff --git a/web/service/inbound.go b/web/service/inbound.go index ca8bf7ff..76a8ce5e 100644 --- a/web/service/inbound.go +++ b/web/service/inbound.go @@ -1289,6 +1289,16 @@ func (s *InboundService) SearchInbounds(query string) ([]*model.Inbound, error) return inbounds, nil } +func (s *InboundService) GetInboundTags() (string, error) { + db := database.GetDB() + var inboundTags []string + err := db.Model(model.Inbound{}).Select("tag").Find(&inboundTags).Error + if err != nil && err != gorm.ErrRecordNotFound { + return "", err + } + return "[\"" + strings.Join(inboundTags, "\", \"") + "\"]", nil +} + func (s *InboundService) MigrationRequirements() { db := database.GetDB() tx := db.Begin() diff --git a/web/translation/translate.en_US.toml b/web/translation/translate.en_US.toml index ffa4588c..80d192cd 100644 --- a/web/translation/translate.en_US.toml +++ b/web/translation/translate.en_US.toml @@ -279,6 +279,13 @@ "subShowInfo" = "Show usage info" "subShowInfoDesc" = "Show remianed traffic and date after config name" +[pages.settings.toasts] +"modifySettings" = "Modify Settings " +"getSettings" = "Get Settings " +"modifyUser" = "Modify User " +"originalUserPassIncorrect" = "Incorrect original username or password" +"userPassMustBeNotEmpty" = "New username and new password cannot be empty" + [pages.xray] "title" = "Xray Settings" "basicTemplate" = "Basic Template" @@ -339,13 +346,21 @@ "Inbounds" = "Inbounds" "Outbounds" = "Outbounds" "Routings" = "Routing rules" +"RoutingsDesc" = "The priority of each rule is important!" -[pages.settings.toasts] -"modifySettings" = "Modify Settings " -"getSettings" = "Get Settings " -"modifyUser" = "Modify User " -"originalUserPassIncorrect" = "Incorrect original username or password" -"userPassMustBeNotEmpty" = "New username and new password cannot be empty" +[pages.xray.rules] +"first" = "First" +"last" = "Last" +"up" = "Up" +"down" = "Down" +"source" = "Source" +"dest" = "Destination" +"inbound" = "Inbound" +"outbound" = "Outbound" +"info" = "Info" +"add" = "Add Rule" +"edit" = "Edit Rule" +"useComma" = "Comma separated items" [tgbot] "noResult" = "❗ No result!" diff --git a/web/translation/translate.fa_IR.toml b/web/translation/translate.fa_IR.toml index 01e57643..61ff33d0 100644 --- a/web/translation/translate.fa_IR.toml +++ b/web/translation/translate.fa_IR.toml @@ -278,6 +278,13 @@ "subShowInfo" = "نمایش اطلاعات مصرف" "subShowInfoDesc" = "ترافیک و زمان باقیمانده را در هر کانفیگ نمایش میدهد" +[pages.settings.toasts] +"modifySettings" = "ویرایش تنظیمات" +"getSettings" = "دریافت تنظیمات" +"modifyUser" = "ویرایش کاربر" +"originalUserPassIncorrect" = "نام کاربری و رمز عبور فعلی اشتباه می باشد " +"userPassMustBeNotEmpty" = "نام کاربری و رمز عبور جدید نمیتواند خالی باشد " + [pages.xray] "title" = "تنظیمات Xray" "basicTemplate" = "بخش الگو پایه" @@ -335,16 +342,24 @@ "NetflixIPv4" = "استفاده از آیپی ورژن 4 برای اتصال به نتفلیکس" "NetflixIPv4Desc" = "مسیردهی جدید برای اتصال به نتفلیکس با آیپی ورژن 4 اضافه میکند" "completeTemplate" = "کامل" -"Inbounds" = "ورودی" -"Outbounds" = "خروجی" +"Inbounds" = "ورودی‌ها" +"Outbounds" = "خروجی‌ها" "Routings" = "قوانین مسیریابی" +"RoutingsDesc" = "اولویت هر قانون مهم است!" -[pages.settings.toasts] -"modifySettings" = "ویرایش تنظیمات" -"getSettings" = "دریافت تنظیمات" -"modifyUser" = "ویرایش کاربر" -"originalUserPassIncorrect" = "نام کاربری و رمز عبور فعلی اشتباه می باشد " -"userPassMustBeNotEmpty" = "نام کاربری و رمز عبور جدید نمیتواند خالی باشد " +[pages.xray.rules] +"first" = "اولین" +"last" = "آخرین" +"up" = "بالا" +"down" = "پایین" +"source" = "مبدا" +"dest" = "مقصد" +"inbound" = "ورودی" +"outbound" = "خروجی" +"info" = "اطلاعات" +"add" = "افزودن قانون" +"edit" = "ویرایش قانون" +"useComma" = "موارد جدا شده با کاما" [tgbot] "noResult" = "❗ نتیجه‌ای یافت نشد!" diff --git a/web/translation/translate.ru_RU.toml b/web/translation/translate.ru_RU.toml index c2ac9061..08e43296 100644 --- a/web/translation/translate.ru_RU.toml +++ b/web/translation/translate.ru_RU.toml @@ -279,6 +279,13 @@ "subShowInfo" = "Показать информацию об использовании" "subShowInfoDesc" = "Показывать восстановленный трафик и дату после имени конфигурации" +[pages.settings.toasts] +"modifySettings" = "Изменение настроек" +"getSettings" = "Просмотр настроек" +"modifyUser" = "Изменение пользователя " +"originalUserPassIncorrect" = "Неверное имя пользователя или пароль" +"userPassMustBeNotEmpty" = "Новое имя пользователя и новый пароль должны быть заполнены" + [pages.xray] "title" = "Xray Настройки" "basicTemplate" = "Базовые шаблоны" @@ -339,13 +346,21 @@ "Inbounds" = "Входящие" "Outbounds" = "Исходящие" "Routings" = "Правила маршрутизации" +"RoutingsDesc" = "Важен приоритет каждого правила!" -[pages.settings.toasts] -"modifySettings" = "Изменение настроек" -"getSettings" = "Просмотр настроек" -"modifyUser" = "Изменение пользователя " -"originalUserPassIncorrect" = "Неверное имя пользователя или пароль" -"userPassMustBeNotEmpty" = "Новое имя пользователя и новый пароль должны быть заполнены" +[pages.xray.rules] +"first" = "Первый" +"last" = "Последний" +"up" = "Вверх" +"down" = "Вниз" +"source" = "Источник" +"dest" = "Пункт назначения" +"inbound" = "Входящий" +"outboun" = "Исходящий" +"info" = "Информация" +"add" = "Добавить правило" +"edit" = "Редактировать правило" +"useComma" = "Элементы, разделенные запятыми" [tgbot] "noResult" = "❗ Нет результатов!" diff --git a/web/translation/translate.zh_Hans.toml b/web/translation/translate.zh_Hans.toml index 91497f7d..2b3cfef0 100644 --- a/web/translation/translate.zh_Hans.toml +++ b/web/translation/translate.zh_Hans.toml @@ -279,6 +279,13 @@ "subShowInfo" = "显示使用信息" "subShowInfoDesc" = "在配置名称后显示剩余流量和日期" +[pages.settings.toasts] +"modifySettings" = "修改设置" +"getSettings" = "获取设置" +"modifyUser" = "修改用户" +"originalUserPassIncorrect" = "原用户名或原密码错误" +"userPassMustBeNotEmpty" = "新用户名和新密码不能为空" + [pages.xray] "title" = "Xray 设置" "basicTemplate" = "基本模板" @@ -339,13 +346,21 @@ "Inbounds" = "界内" "Outbounds" = "出站" "Routings" = "路由规则" +"RoutingsDesc" = "每条规则的优先级都很重要" -[pages.settings.toasts] -"modifySettings" = "修改设置" -"getSettings" = "获取设置" -"modifyUser" = "修改用户" -"originalUserPassIncorrect" = "原用户名或原密码错误" -"userPassMustBeNotEmpty" = "新用户名和新密码不能为空" +[pages.xray.rules] +"firsto" = "第一个" +"last" = "最后" +"up" = "向上" +"down" = "向下" +"source" = "来源" +"dest" = "目的地" +"inbound" = "入站" +"outbound" = "出站" +"info" = "信息" +"add" = "添加规则" +"edit" = "编辑规则" +"useComma" = "逗号分隔的项目" [tgbot] "noResult" = "❗ 没有结果!"