mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-09-17 15:47:14 +00:00
feat(sub): let the panel set the JSON subscription DNS servers (#6485)
* feat(sub): let the panel set the JSON subscription DNS servers A baked routing profile (#6402) carries only the DNS its preset defines, so an operator who wants their own resolvers has to override the whole profile or patch the subscription behind a proxy. Add the subJsonDns setting: either a full xray dns block or a bare array of servers. It wins over the profile's DNS while leaving the profile's routing rules intact, and reaches per-inbound, balancer and info-node documents alike. The value is validated with xray's own schema (internal/xray/dnsconf): a block the client could not load is rejected when the settings are saved and ignored with a warning at request time, instead of being baked into every document. Both the sub server and the settings API share that validator, so a stored value can never be silently dropped. xray's Build() is deliberately not used for validation: it resolves geosite tokens from the geodata files and would reject valid configs whenever those are absent from the panel's working directory. * style(dnsconf): drop the ineffectual initial map assignment golangci's ineffassign flagged the zero-value map whose value both paths overwrite: the object branch now assigns the decoded map directly. * docs(sub): scope the DNS setting to the documents it rewrites The Routing header mirrored to Happ/INCY keeps the routing profile's own resolvers, so the setting description and the header-source comment now say so instead of claiming the profile's DNS is replaced everywhere. Also trims two comments in the new dnsconf package to the repo's two-line cap.
This commit is contained in:
@@ -1182,6 +1182,8 @@
|
||||
"subJsonUserAgentRegexDesc": "عبارت منظم Go RE2 که با عامل کاربر (User-Agent) کلاینت مطابقت داده میشود تا صیغه Xray JSON روی آدرس استاندارد اشتراک بهطور خودکار انتخاب شود. بهطور پیشفرض خالی است، بنابراین تشخیص خودکار غیرفعال میماند تا زمانی که الگویی برای کلاینتهای موردنظر خود تعیین کنید. سایر کلاینتها پاسخ خام/Base64 را دریافت میکنند. پس از تغییر، پنل را راهاندازی مجدد کنید.",
|
||||
"subJsonRoutingRules": "پروفایل مسیریابی اشتراک JSON",
|
||||
"subJsonRoutingRulesDesc": "JSON قواعد مسیریابی، دیپلینک happ:// یا incy://، یا آدرس https://. وقتی تنظیم شود، DNS و قواعد مسیریابی اشتراک JSON را جایگزین میکند (در پیکربندی برای کلاینتهایی که هدرها را نادیده میگیرند تعبیه میشود، مانند Happ و INCY با بالانسر سمت کلاینت). اگر تنظیم هدر Happ خالی باشد، همین پروفایل بهصورت خودکار در هدر Routing ارسال میشود (JSON و آدرسها بهصورت دیپلینک happ://) تا کلاینتها فایلهای geo منطبق را دانلود کنند.",
|
||||
"subJsonDns": "سرورهای DNS",
|
||||
"subJsonDnsDesc": "بلوک dns را که در کلاینتهای اشتراک JSON جای میگیرد جایگزین میکند: یا یک شیء کامل dns یا فقط آرایهٔ servers. همچنین DNS پروفایل مسیریابی را در همان کلاینتها جایگزین میکند؛ اما کلاینتهایی که هدر Routing را اعمال میکنند، ریزالورهای پروفایل را نگه میدارند. خالی یعنی ریزالور پیشفرض.",
|
||||
"subClashAutoDetect": "تشخیص خودکار کلاینتهای Clash/Mihomo",
|
||||
"subClashAutoDetectDesc": "با فعالسازی، کلاینتهای شناختهشده Clash/Mihomo که آدرس استاندارد اشتراک را درخواست میکنند، بهطور خودکار پیکربندی Clash با فرمت YAML دریافت میکنند. مرورگرها همچنان صفحه اشتراک را نمایش میدهند، سایر کلاینتها پاسخ خام/Base64 را دریافت میکنند و آدرسهای صریح JSON و Clash در دسترس میمانند. برای اعمال تغییر، اشتراک Clash/Mihomo باید فعال باشد و پنل راهاندازی مجدد شود.",
|
||||
"subClashUserAgentRegex": "عبارت User-Agent برای Clash/Mihomo",
|
||||
|
||||
Reference in New Issue
Block a user