diff --git a/frontend/public/openapi.json b/frontend/public/openapi.json index 3ba6cdd38..6f609f89b 100644 --- a/frontend/public/openapi.json +++ b/frontend/public/openapi.json @@ -232,6 +232,14 @@ "description": "Hide server settings in happ subscription (Only for Happ)", "type": "boolean" }, + "subIncyEnableRouting": { + "description": "Enable routing injection for the Incy client", + "type": "boolean" + }, + "subIncyRoutingRules": { + "description": "Incy routing deep-link injected into the subscription body (Only for Incy)", + "type": "string" + }, "subJsonEnable": { "description": "Enable JSON subscription endpoint", "type": "boolean" @@ -457,6 +465,8 @@ "subEnableRouting", "subEncrypt", "subHideSettings", + "subIncyEnableRouting", + "subIncyRoutingRules", "subJsonEnable", "subJsonFinalMask", "subJsonMux", @@ -727,6 +737,14 @@ "description": "Hide server settings in happ subscription (Only for Happ)", "type": "boolean" }, + "subIncyEnableRouting": { + "description": "Enable routing injection for the Incy client", + "type": "boolean" + }, + "subIncyRoutingRules": { + "description": "Incy routing deep-link injected into the subscription body (Only for Incy)", + "type": "string" + }, "subJsonEnable": { "description": "Enable JSON subscription endpoint", "type": "boolean" @@ -959,6 +977,8 @@ "subEnableRouting", "subEncrypt", "subHideSettings", + "subIncyEnableRouting", + "subIncyRoutingRules", "subJsonEnable", "subJsonFinalMask", "subJsonMux", diff --git a/frontend/src/generated/examples.ts b/frontend/src/generated/examples.ts index 8314d55cd..b8c1f3d3c 100644 --- a/frontend/src/generated/examples.ts +++ b/frontend/src/generated/examples.ts @@ -52,6 +52,8 @@ export const EXAMPLES: Record = { "subEnableRouting": false, "subEncrypt": false, "subHideSettings": false, + "subIncyEnableRouting": false, + "subIncyRoutingRules": "", "subJsonEnable": false, "subJsonFinalMask": "", "subJsonMux": "", @@ -152,6 +154,8 @@ export const EXAMPLES: Record = { "subEnableRouting": false, "subEncrypt": false, "subHideSettings": false, + "subIncyEnableRouting": false, + "subIncyRoutingRules": "", "subJsonEnable": false, "subJsonFinalMask": "", "subJsonMux": "", diff --git a/frontend/src/generated/schemas.ts b/frontend/src/generated/schemas.ts index d59caa7a2..4ed467ad8 100644 --- a/frontend/src/generated/schemas.ts +++ b/frontend/src/generated/schemas.ts @@ -206,6 +206,14 @@ export const SCHEMAS: Record = { "description": "Hide server settings in happ subscription (Only for Happ)", "type": "boolean" }, + "subIncyEnableRouting": { + "description": "Enable routing injection for the Incy client", + "type": "boolean" + }, + "subIncyRoutingRules": { + "description": "Incy routing deep-link injected into the subscription body (Only for Incy)", + "type": "string" + }, "subJsonEnable": { "description": "Enable JSON subscription endpoint", "type": "boolean" @@ -431,6 +439,8 @@ export const SCHEMAS: Record = { "subEnableRouting", "subEncrypt", "subHideSettings", + "subIncyEnableRouting", + "subIncyRoutingRules", "subJsonEnable", "subJsonFinalMask", "subJsonMux", @@ -701,6 +711,14 @@ export const SCHEMAS: Record = { "description": "Hide server settings in happ subscription (Only for Happ)", "type": "boolean" }, + "subIncyEnableRouting": { + "description": "Enable routing injection for the Incy client", + "type": "boolean" + }, + "subIncyRoutingRules": { + "description": "Incy routing deep-link injected into the subscription body (Only for Incy)", + "type": "string" + }, "subJsonEnable": { "description": "Enable JSON subscription endpoint", "type": "boolean" @@ -933,6 +951,8 @@ export const SCHEMAS: Record = { "subEnableRouting", "subEncrypt", "subHideSettings", + "subIncyEnableRouting", + "subIncyRoutingRules", "subJsonEnable", "subJsonFinalMask", "subJsonMux", diff --git a/frontend/src/generated/types.ts b/frontend/src/generated/types.ts index 7fd234581..729961e17 100644 --- a/frontend/src/generated/types.ts +++ b/frontend/src/generated/types.ts @@ -58,6 +58,8 @@ export interface AllSetting { subEnableRouting: boolean; subEncrypt: boolean; subHideSettings: boolean; + subIncyEnableRouting: boolean; + subIncyRoutingRules: string; subJsonEnable: boolean; subJsonFinalMask: string; subJsonMux: string; @@ -159,6 +161,8 @@ export interface AllSettingView { subEnableRouting: boolean; subEncrypt: boolean; subHideSettings: boolean; + subIncyEnableRouting: boolean; + subIncyRoutingRules: string; subJsonEnable: boolean; subJsonFinalMask: string; subJsonMux: string; diff --git a/frontend/src/generated/zod.ts b/frontend/src/generated/zod.ts index c6a725bcf..92d45296a 100644 --- a/frontend/src/generated/zod.ts +++ b/frontend/src/generated/zod.ts @@ -70,6 +70,8 @@ export const AllSettingSchema = z.object({ subEnableRouting: z.boolean(), subEncrypt: z.boolean(), subHideSettings: z.boolean(), + subIncyEnableRouting: z.boolean(), + subIncyRoutingRules: z.string(), subJsonEnable: z.boolean(), subJsonFinalMask: z.string(), subJsonMux: z.string(), @@ -172,6 +174,8 @@ export const AllSettingViewSchema = z.object({ subEnableRouting: z.boolean(), subEncrypt: z.boolean(), subHideSettings: z.boolean(), + subIncyEnableRouting: z.boolean(), + subIncyRoutingRules: z.string(), subJsonEnable: z.boolean(), subJsonFinalMask: z.string(), subJsonMux: z.string(), diff --git a/frontend/src/models/setting.ts b/frontend/src/models/setting.ts index f2d630d83..c6ee53792 100644 --- a/frontend/src/models/setting.ts +++ b/frontend/src/models/setting.ts @@ -35,6 +35,8 @@ export class AllSetting { subAnnounce = ''; subEnableRouting = false; subRoutingRules = ''; + subIncyEnableRouting = false; + subIncyRoutingRules = ''; subListen = ''; subPort = 2096; subPath = '/sub/'; diff --git a/frontend/src/pages/settings/SubscriptionGeneralTab.tsx b/frontend/src/pages/settings/SubscriptionGeneralTab.tsx index 926d3c8e3..72f2c138c 100644 --- a/frontend/src/pages/settings/SubscriptionGeneralTab.tsx +++ b/frontend/src/pages/settings/SubscriptionGeneralTab.tsx @@ -1,5 +1,5 @@ import { Input, InputNumber, Switch, Tabs } from 'antd'; -import { BranchesOutlined, IdcardOutlined, InfoCircleOutlined, NodeIndexOutlined, SafetyCertificateOutlined, SettingOutlined } from '@ant-design/icons'; +import { BranchesOutlined, CompassOutlined, IdcardOutlined, InfoCircleOutlined, NodeIndexOutlined, SafetyCertificateOutlined, SettingOutlined } from '@ant-design/icons'; import { useTranslation } from 'react-i18next'; import type { AllSetting } from '@/models/setting'; import { SettingListItem } from '@/components/ui'; @@ -178,6 +178,21 @@ export default function SubscriptionGeneralTab({ allSetting, updateSetting }: Su ), }, + { + key: '7', + label: catTabLabel(, 'Incy', isMobile), + children: ( + <> + + updateSetting({ subIncyEnableRouting: v })} /> + + + updateSetting({ subIncyRoutingRules: e.target.value })} /> + + + ), + }, ]} /> ); } diff --git a/frontend/src/pages/sub/SubPage.tsx b/frontend/src/pages/sub/SubPage.tsx index 686d50e1f..38d247b4c 100644 --- a/frontend/src/pages/sub/SubPage.tsx +++ b/frontend/src/pages/sub/SubPage.tsx @@ -139,6 +139,7 @@ export default function SubPage() { ); const streisandUrl = useMemo(() => `streisand://import/${encodeURIComponent(subUrl)}`, []); const happUrl = useMemo(() => `happ://add/${subUrl}`, []); + const incyUrl = useMemo(() => `incy://add/${subUrl}`, []); const pageClass = useMemo(() => { const classes = ['subscription-page']; @@ -200,6 +201,7 @@ export default function SubPage() { { key: 'android-v2raytun', label: 'V2RayTun', onClick: () => copy(subUrl) }, { key: 'android-npvtunnel', label: 'NPV Tunnel', onClick: () => copy(subUrl) }, { key: 'android-happ', label: 'Happ', onClick: () => open(`happ://add/${subUrl}`) }, + { key: 'android-incy', label: 'Incy', onClick: () => open(`incy://add/${subUrl}`) }, ], [copy, open]); const iosMenuItems = useMemo(() => [ @@ -209,7 +211,8 @@ export default function SubPage() { { key: 'ios-v2raytun', label: 'V2RayTun', onClick: () => copy(subUrl) }, { key: 'ios-npvtunnel', label: 'NPV Tunnel', onClick: () => copy(subUrl) }, { key: 'ios-happ', label: 'Happ', onClick: () => open(happUrl) }, - ], [copy, open, shadowrocketUrl, v2boxUrl, streisandUrl, happUrl]); + { key: 'ios-incy', label: 'Incy', onClick: () => open(incyUrl) }, + ], [copy, open, shadowrocketUrl, v2boxUrl, streisandUrl, happUrl, incyUrl]); const langMenuItems = useMemo( () => (LanguageManager.supportedLanguages as { value: string; name: string; icon: string }[]).map((l) => ({ diff --git a/frontend/src/schemas/setting.ts b/frontend/src/schemas/setting.ts index abf30c41d..ffb77e921 100644 --- a/frontend/src/schemas/setting.ts +++ b/frontend/src/schemas/setting.ts @@ -39,6 +39,8 @@ export const AllSettingSchema = z.object({ subAnnounce: z.string().optional(), subEnableRouting: z.boolean().optional(), subRoutingRules: z.string().optional(), + subIncyEnableRouting: z.boolean().optional(), + subIncyRoutingRules: z.string().optional(), subListen: z.string().optional(), subPort: port.optional(), subPath: absolutePath.optional(), diff --git a/internal/sub/controller.go b/internal/sub/controller.go index 5412f42a6..ae5b57a88 100644 --- a/internal/sub/controller.go +++ b/internal/sub/controller.go @@ -49,13 +49,17 @@ type SUBController struct { subEnableRouting bool subRoutingRules string subHideSettings bool - subPath string - subJsonPath string - subClashPath string - jsonEnabled bool - clashEnabled bool - subEncrypt bool - updateInterval string + + subIncyEnableRouting bool + subIncyRoutingRules string + + subPath string + subJsonPath string + subClashPath string + jsonEnabled bool + clashEnabled bool + subEncrypt bool + updateInterval string subService *SubService subJsonService *SubJsonService @@ -89,6 +93,8 @@ func NewSUBController( subEnableRouting bool, subRoutingRules string, subHideSettings bool, + subIncyEnableRouting bool, + subIncyRoutingRules string, ) *SUBController { sub := NewSubService(remarkTemplate) a := &SUBController{ @@ -99,13 +105,17 @@ func NewSUBController( subEnableRouting: subEnableRouting, subRoutingRules: subRoutingRules, subHideSettings: subHideSettings, - subPath: subPath, - subJsonPath: jsonPath, - subClashPath: clashPath, - jsonEnabled: jsonEnabled, - clashEnabled: clashEnabled, - subEncrypt: encrypt, - updateInterval: update, + + subIncyEnableRouting: subIncyEnableRouting, + subIncyRoutingRules: subIncyRoutingRules, + + subPath: subPath, + subJsonPath: jsonPath, + subClashPath: clashPath, + jsonEnabled: jsonEnabled, + clashEnabled: clashEnabled, + subEncrypt: encrypt, + updateInterval: update, subService: sub, subJsonService: NewSubJsonService(jsonMux, jsonRules, jsonFinalMask, sub), @@ -183,6 +193,11 @@ func (a *SUBController) subs(c *gin.Context) { } a.ApplyCommonHeaders(c, header, a.updateInterval, a.subTitle, a.subSupportUrl, profileUrl, a.subAnnounce, a.subEnableRouting, a.subRoutingRules, a.subHideSettings) + if a.subIncyEnableRouting && a.subIncyRoutingRules != "" { + result.WriteString(a.subIncyRoutingRules) + result.WriteString("\n") + } + if a.subEncrypt { c.String(200, base64.StdEncoding.EncodeToString([]byte(result.String()))) } else { diff --git a/internal/sub/sub.go b/internal/sub/sub.go index af34c5a75..c089de61f 100644 --- a/internal/sub/sub.go +++ b/internal/sub/sub.go @@ -175,6 +175,16 @@ func (s *Server) initRouter() (*gin.Engine, error) { SubHideSettings = false } + SubIncyEnableRouting, err := s.settingService.GetSubIncyEnableRouting() + if err != nil { + SubIncyEnableRouting = false + } + + SubIncyRoutingRules, err := s.settingService.GetSubIncyRoutingRules() + if err != nil { + SubIncyRoutingRules = "" + } + // set per-request localizer from headers/cookies engine.Use(locale.LocalizerMiddleware()) @@ -232,7 +242,8 @@ func (s *Server) initRouter() (*gin.Engine, error) { s.sub = NewSUBController( g, LinksPath, JsonPath, ClashPath, subJsonEnable, subClashEnable, Encrypt, RemarkTemplate, SubUpdates, SubJsonMux, SubJsonRules, SubJsonFinalMask, SubClashEnableRouting, SubClashRules, SubTitle, SubSupportUrl, - SubProfileUrl, SubAnnounce, SubEnableRouting, SubRoutingRules, SubHideSettings) + SubProfileUrl, SubAnnounce, SubEnableRouting, SubRoutingRules, SubHideSettings, + SubIncyEnableRouting, SubIncyRoutingRules) return engine, nil } diff --git a/internal/web/entity/entity.go b/internal/web/entity/entity.go index 692bb7406..836dba6d2 100644 --- a/internal/web/entity/entity.go +++ b/internal/web/entity/entity.go @@ -77,6 +77,8 @@ type AllSetting struct { SubAnnounce string `json:"subAnnounce" form:"subAnnounce"` // Subscription announce SubEnableRouting bool `json:"subEnableRouting" form:"subEnableRouting"` // Enable routing for subscription SubRoutingRules string `json:"subRoutingRules" form:"subRoutingRules"` // Subscription global routing rules (Only for Happ) + SubIncyEnableRouting bool `json:"subIncyEnableRouting" form:"subIncyEnableRouting"` // Enable routing injection for the Incy client + SubIncyRoutingRules string `json:"subIncyRoutingRules" form:"subIncyRoutingRules"` // Incy routing deep-link injected into the subscription body (Only for Incy) SubListen string `json:"subListen" form:"subListen"` // Subscription server listen IP SubPort int `json:"subPort" form:"subPort" validate:"gte=1,lte=65535"` // Subscription server port SubPath string `json:"subPath" form:"subPath"` // Base path for subscription URLs diff --git a/internal/web/service/setting.go b/internal/web/service/setting.go index 1c8492873..15e2a9228 100644 --- a/internal/web/service/setting.go +++ b/internal/web/service/setting.go @@ -78,6 +78,8 @@ var defaultValueMap = map[string]string{ "subEnableRouting": "false", "subRoutingRules": "", "subHideSettings": "false", + "subIncyEnableRouting": "false", + "subIncyRoutingRules": "", "subListen": "", "subPort": "2096", "subPath": "/sub/", @@ -709,6 +711,14 @@ func (s *SettingService) GetSubHideSettings() (bool, error) { return s.getBool("subHideSettings") } +func (s *SettingService) GetSubIncyEnableRouting() (bool, error) { + return s.getBool("subIncyEnableRouting") +} + +func (s *SettingService) GetSubIncyRoutingRules() (string, error) { + return s.getString("subIncyRoutingRules") +} + func (s *SettingService) GetSubListen() (string, error) { return s.getString("subListen") } diff --git a/internal/web/translation/ar-EG.json b/internal/web/translation/ar-EG.json index aa75fb651..6e93eed3a 100644 --- a/internal/web/translation/ar-EG.json +++ b/internal/web/translation/ar-EG.json @@ -1130,6 +1130,10 @@ "subRoutingRulesDesc": "قواعد التوجيه العامة لعميل VPN. (فقط لـ Happ)", "subHideSettings": "إخفاء إعدادات الخادم", "subHideSettingsDesc": "إخفاء إمكانية عرض وتعديل إعدادات الخادم في عميل VPN. (فقط لـ Happ)", + "subIncyEnableRouting": "تفعيل التوجيه", + "subIncyEnableRoutingDesc": "حقن ملف تعريف التوجيه في محتوى الاشتراك لعميل Incy. (فقط لـ Incy)", + "subIncyRoutingRules": "قواعد التوجيه", + "subIncyRoutingRulesDesc": "رابط توجيه Incy المُضاف إلى محتوى الاشتراك، مثل incy://routing/onadd/. (فقط لـ Incy)", "subClashEnableRouting": "تفعيل التوجيه", "subClashEnableRoutingDesc": "تضمين قواعد توجيه Clash/Mihomo العامة في اشتراكات YAML المُنشأة.", "subClashRoutingRules": "قواعد التوجيه العامة", diff --git a/internal/web/translation/en-US.json b/internal/web/translation/en-US.json index f5a3fcaec..d0a8eccab 100644 --- a/internal/web/translation/en-US.json +++ b/internal/web/translation/en-US.json @@ -1240,6 +1240,10 @@ "subRoutingRulesDesc": "Global routing rules for the VPN client. (Only for Happ)", "subHideSettings": "Hide server settings", "subHideSettingsDesc": "Hide the ability to view and edit server configurations in the VPN client. (Only for Happ)", + "subIncyEnableRouting": "Enable routing", + "subIncyEnableRoutingDesc": "Inject a routing profile into the subscription body for the Incy client. (Only for Incy)", + "subIncyRoutingRules": "Routing rules", + "subIncyRoutingRulesDesc": "Incy routing deep-link added to the subscription body, e.g. incy://routing/onadd/. (Only for Incy)", "subClashEnableRouting": "Enable routing", "subClashEnableRoutingDesc": "Include global Clash/Mihomo routing rules in generated YAML subscriptions.", "subClashRoutingRules": "Global routing rules", diff --git a/internal/web/translation/es-ES.json b/internal/web/translation/es-ES.json index 04124429c..3aba8b3ab 100644 --- a/internal/web/translation/es-ES.json +++ b/internal/web/translation/es-ES.json @@ -1130,6 +1130,10 @@ "subRoutingRulesDesc": "Reglas de enrutamiento globales para el cliente VPN. (Solo para Happ)", "subHideSettings": "Ocultar configuración del servidor", "subHideSettingsDesc": "Ocultar la posibilidad de ver y editar las configuraciones del servidor en el cliente VPN. (Solo para Happ)", + "subIncyEnableRouting": "Habilitar enrutamiento", + "subIncyEnableRoutingDesc": "Inyectar un perfil de enrutamiento en el cuerpo de la suscripción para el cliente Incy. (Solo para Incy)", + "subIncyRoutingRules": "Reglas de enrutamiento", + "subIncyRoutingRulesDesc": "Enlace de enrutamiento de Incy añadido al cuerpo de la suscripción, p. ej. incy://routing/onadd/. (Solo para Incy)", "subClashEnableRouting": "Habilitar enrutamiento", "subClashEnableRoutingDesc": "Incluir reglas globales de enrutamiento Clash/Mihomo en las suscripciones YAML generadas.", "subClashRoutingRules": "Reglas globales de enrutamiento", diff --git a/internal/web/translation/fa-IR.json b/internal/web/translation/fa-IR.json index bdce9a8bd..77cbed0f4 100644 --- a/internal/web/translation/fa-IR.json +++ b/internal/web/translation/fa-IR.json @@ -1132,6 +1132,10 @@ "subRoutingRulesDesc": "قوانین مسیریابی سراسری برای کلاینت VPN. (فقط برای Happ)", "subHideSettings": "پنهان کردن تنظیمات سرور", "subHideSettingsDesc": "پنهان کردن توانایی مشاهده و ویرایش پیکربندی سرور در کلاینت VPN. (فقط برای Happ)", + "subIncyEnableRouting": "فعال‌سازی مسیریابی", + "subIncyEnableRoutingDesc": "تزریق پروفایل مسیریابی به بدنه اشتراک برای کلاینت Incy. (فقط برای Incy)", + "subIncyRoutingRules": "قوانین مسیریابی", + "subIncyRoutingRulesDesc": "لینک مسیریابی Incy که به بدنه اشتراک افزوده می‌شود، مثلاً incy://routing/onadd/. (فقط برای Incy)", "subClashEnableRouting": "فعال‌سازی مسیریابی", "subClashEnableRoutingDesc": "قوانین مسیریابی سراسری Clash/Mihomo را در اشتراک‌های YAML تولیدشده وارد کن.", "subClashRoutingRules": "قوانین مسیریابی سراسری", diff --git a/internal/web/translation/id-ID.json b/internal/web/translation/id-ID.json index 06f7dd6f6..a88e1f341 100644 --- a/internal/web/translation/id-ID.json +++ b/internal/web/translation/id-ID.json @@ -1130,6 +1130,10 @@ "subRoutingRulesDesc": "Aturan routing global untuk klien VPN. (Hanya untuk Happ)", "subHideSettings": "Sembunyikan pengaturan server", "subHideSettingsDesc": "Menyembunyikan kemampuan untuk melihat dan mengedit konfigurasi server di klien VPN. (Hanya untuk Happ)", + "subIncyEnableRouting": "Aktifkan perutean", + "subIncyEnableRoutingDesc": "Menyuntikkan profil perutean ke dalam body langganan untuk klien Incy. (Hanya untuk Incy)", + "subIncyRoutingRules": "Aturan routing", + "subIncyRoutingRulesDesc": "Tautan perutean Incy yang ditambahkan ke body langganan, mis. incy://routing/onadd/. (Hanya untuk Incy)", "subClashEnableRouting": "Aktifkan routing", "subClashEnableRoutingDesc": "Sertakan aturan routing global Clash/Mihomo dalam langganan YAML yang dibuat.", "subClashRoutingRules": "Aturan routing global", diff --git a/internal/web/translation/ja-JP.json b/internal/web/translation/ja-JP.json index e282070d8..bc49ffc34 100644 --- a/internal/web/translation/ja-JP.json +++ b/internal/web/translation/ja-JP.json @@ -1130,6 +1130,10 @@ "subRoutingRulesDesc": "VPNクライアントのグローバルルーティングルール。(Happのみ)", "subHideSettings": "サーバー設定を非表示", "subHideSettingsDesc": "VPNクライアントでサーバー設定の表示・編集機能を非表示にします。(Happのみ)", + "subIncyEnableRouting": "ルーティングを有効化", + "subIncyEnableRoutingDesc": "Incyクライアント用に、サブスクリプション本文へルーティングプロファイルを挿入します。(Incyのみ)", + "subIncyRoutingRules": "ルーティングルール", + "subIncyRoutingRulesDesc": "サブスクリプション本文に追加するIncyルーティングのディープリンク。例: incy://routing/onadd/。(Incyのみ)", "subClashEnableRouting": "ルーティングを有効化", "subClashEnableRoutingDesc": "生成されたYAMLサブスクリプションにClash/Mihomoのグローバルルーティングルールを含めます。", "subClashRoutingRules": "グローバルルーティングルール", diff --git a/internal/web/translation/pt-BR.json b/internal/web/translation/pt-BR.json index 5d6c41ff9..b2393b9a4 100644 --- a/internal/web/translation/pt-BR.json +++ b/internal/web/translation/pt-BR.json @@ -1130,6 +1130,10 @@ "subRoutingRulesDesc": "Regras de roteamento globais para o cliente VPN. (Apenas para Happ)", "subHideSettings": "Ocultar configurações do servidor", "subHideSettingsDesc": "Ocultar a capacidade de visualizar e editar as configurações do servidor no cliente VPN. (Apenas para Happ)", + "subIncyEnableRouting": "Ativar roteamento", + "subIncyEnableRoutingDesc": "Injetar um perfil de roteamento no corpo da assinatura para o cliente Incy. (Apenas para Incy)", + "subIncyRoutingRules": "Regras de roteamento", + "subIncyRoutingRulesDesc": "Link de roteamento do Incy adicionado ao corpo da assinatura, ex. incy://routing/onadd/. (Apenas para Incy)", "subClashEnableRouting": "Ativar roteamento", "subClashEnableRoutingDesc": "Incluir regras globais de roteamento Clash/Mihomo nas assinaturas YAML geradas.", "subClashRoutingRules": "Regras globais de roteamento", diff --git a/internal/web/translation/ru-RU.json b/internal/web/translation/ru-RU.json index 58cfccfc5..cdc2e4521 100644 --- a/internal/web/translation/ru-RU.json +++ b/internal/web/translation/ru-RU.json @@ -1130,6 +1130,10 @@ "subRoutingRulesDesc": "Глобальные правила маршрутизации для VPN-клиента. (Только для Happ)", "subHideSettings": "Скрыть настройки сервера", "subHideSettingsDesc": "Скрыть возможность просмотра и редактирования конфигурации сервера в VPN-клиенте. (Только для Happ)", + "subIncyEnableRouting": "Включить маршрутизацию", + "subIncyEnableRoutingDesc": "Внедрять профиль маршрутизации в тело подписки для клиента Incy. (Только для Incy)", + "subIncyRoutingRules": "Правила маршрутизации", + "subIncyRoutingRulesDesc": "Ссылка маршрутизации Incy, добавляемая в тело подписки, напр. incy://routing/onadd/. (Только для Incy)", "subClashEnableRouting": "Включить маршрутизацию", "subClashEnableRoutingDesc": "Добавлять глобальные правила маршрутизации Clash/Mihomo в сгенерированные YAML-подписки.", "subClashRoutingRules": "Глобальные правила маршрутизации", diff --git a/internal/web/translation/tr-TR.json b/internal/web/translation/tr-TR.json index 692f97bb9..76520585c 100644 --- a/internal/web/translation/tr-TR.json +++ b/internal/web/translation/tr-TR.json @@ -1130,6 +1130,10 @@ "subRoutingRulesDesc": "VPN istemcisi için genel yönlendirme kuralları. (Yalnızca Happ için)", "subHideSettings": "Sunucu ayarlarını gizle", "subHideSettingsDesc": "VPN istemcisinde sunucu yapılandırmalarını görüntüleme ve düzenleme özelliğini gizleyin. (Yalnızca Happ için)", + "subIncyEnableRouting": "Yönlendirmeyi etkinleştir", + "subIncyEnableRoutingDesc": "Incy istemcisi için abonelik gövdesine bir yönlendirme profili ekleyin. (Yalnızca Incy için)", + "subIncyRoutingRules": "Yönlendirme kuralları", + "subIncyRoutingRulesDesc": "Abonelik gövdesine eklenen Incy yönlendirme bağlantısı, örn. incy://routing/onadd/. (Yalnızca Incy için)", "subClashEnableRouting": "Yönlendirmeyi Etkinleştir", "subClashEnableRoutingDesc": "Oluşturulan YAML aboneliklerine genel Clash/Mihomo yönlendirme kurallarını ekler.", "subClashRoutingRules": "Genel Yönlendirme Kuralları", diff --git a/internal/web/translation/uk-UA.json b/internal/web/translation/uk-UA.json index 22615d3f9..efd3fa52c 100644 --- a/internal/web/translation/uk-UA.json +++ b/internal/web/translation/uk-UA.json @@ -1130,6 +1130,10 @@ "subRoutingRulesDesc": "Глобальні правила маршрутизації для VPN-клієнта. (Тільки для Happ)", "subHideSettings": "Приховати налаштування сервера", "subHideSettingsDesc": "Приховати можливість перегляду та редагування конфігурації сервера у VPN-клієнті. (Тільки для Happ)", + "subIncyEnableRouting": "Увімкнути маршрутизацію", + "subIncyEnableRoutingDesc": "Вставляти профіль маршрутизації в тіло підписки для клієнта Incy. (Тільки для Incy)", + "subIncyRoutingRules": "Правила маршрутизації", + "subIncyRoutingRulesDesc": "Посилання маршрутизації Incy, що додається в тіло підписки, напр. incy://routing/onadd/. (Тільки для Incy)", "subClashEnableRouting": "Увімкнути маршрутизацію", "subClashEnableRoutingDesc": "Додавати глобальні правила маршрутизації Clash/Mihomo до згенерованих YAML-підписок.", "subClashRoutingRules": "Глобальні правила маршрутизації", diff --git a/internal/web/translation/vi-VN.json b/internal/web/translation/vi-VN.json index cc9f55d4d..86750d01b 100644 --- a/internal/web/translation/vi-VN.json +++ b/internal/web/translation/vi-VN.json @@ -1130,6 +1130,10 @@ "subRoutingRulesDesc": "Quy tắc định tuyến toàn cầu cho client VPN. (Chỉ dành cho Happ)", "subHideSettings": "Ẩn cài đặt máy chủ", "subHideSettingsDesc": "Ẩn khả năng xem và chỉnh sửa cấu hình máy chủ trong ứng dụng khách VPN. (Chỉ dành cho Happ)", + "subIncyEnableRouting": "Bật định tuyến", + "subIncyEnableRoutingDesc": "Chèn hồ sơ định tuyến vào nội dung đăng ký cho ứng dụng Incy. (Chỉ dành cho Incy)", + "subIncyRoutingRules": "Quy tắc định tuyến", + "subIncyRoutingRulesDesc": "Liên kết định tuyến Incy được thêm vào nội dung đăng ký, ví dụ incy://routing/onadd/. (Chỉ dành cho Incy)", "subClashEnableRouting": "Bật định tuyến", "subClashEnableRoutingDesc": "Bao gồm quy tắc định tuyến Clash/Mihomo toàn cầu trong các đăng ký YAML được tạo.", "subClashRoutingRules": "Quy tắc định tuyến toàn cầu", diff --git a/internal/web/translation/zh-CN.json b/internal/web/translation/zh-CN.json index 6b69daa11..696376996 100644 --- a/internal/web/translation/zh-CN.json +++ b/internal/web/translation/zh-CN.json @@ -1130,6 +1130,10 @@ "subRoutingRulesDesc": "VPN 用户端的全域路由规则。(仅限 Happ)", "subHideSettings": "隐藏服务器设置", "subHideSettingsDesc": "在 VPN 客户端中隐藏查看和编辑服务器配置的功能。(仅限 Happ)", + "subIncyEnableRouting": "启用路由", + "subIncyEnableRoutingDesc": "为 Incy 客户端将路由配置注入订阅内容中。(仅限 Incy)", + "subIncyRoutingRules": "路由规则", + "subIncyRoutingRulesDesc": "添加到订阅内容的 Incy 路由深层链接,例如 incy://routing/onadd/。(仅限 Incy)", "subClashEnableRouting": "启用路由", "subClashEnableRoutingDesc": "在生成的 YAML 订阅中包含 Clash/Mihomo 全局路由规则。", "subClashRoutingRules": "全局路由规则", diff --git a/internal/web/translation/zh-TW.json b/internal/web/translation/zh-TW.json index e6686704a..941be76bf 100644 --- a/internal/web/translation/zh-TW.json +++ b/internal/web/translation/zh-TW.json @@ -1130,6 +1130,10 @@ "subRoutingRulesDesc": "VPN 用戶端的全域路由規則。(僅限 Happ)", "subHideSettings": "隱藏伺服器設定", "subHideSettingsDesc": "在 VPN 用戶端中隱藏查看和編輯伺服器配置的功能。(僅限 Happ)", + "subIncyEnableRouting": "啟用路由", + "subIncyEnableRoutingDesc": "為 Incy 用戶端將路由設定檔注入訂閱內容中。(僅限 Incy)", + "subIncyRoutingRules": "路由規則", + "subIncyRoutingRulesDesc": "加入訂閱內容的 Incy 路由深層連結,例如 incy://routing/onadd/。(僅限 Incy)", "subClashEnableRouting": "啟用路由", "subClashEnableRoutingDesc": "在產生的 YAML 訂閱中包含 Clash/Mihomo 全域路由規則。", "subClashRoutingRules": "全域路由規則",