feat: support rule mode for fake-ip-filter

This commit is contained in:
Memory
2026-05-08 11:54:01 +08:00
committed by GitHub
parent e8be197dee
commit 92f21d0fcc
6 changed files with 50 additions and 1 deletions

View File

@@ -481,8 +481,13 @@
"dns.enhancedMode.normal": "No Mapping",
"dns.fakeIp.range": "Response Range",
"dns.fakeIp.rangePlaceholder": "Example: 198.18.0.1/16",
"dns.fakeIp.filterMode": "Filter Mode",
"dns.fakeIp.filterMode.blacklist": "Blacklist",
"dns.fakeIp.filterMode.whitelist": "Whitelist",
"dns.fakeIp.filterMode.rule": "Rule",
"dns.fakeIp.filter": "Real IP Response",
"dns.fakeIp.filterPlaceholder": "Example: +.lan",
"dns.fakeIp.filterPlaceholder.rule": "Example: RULE-SET,reject-domain,fake-ip",
"dns.respectRules": "Respect Rules",
"dns.defaultNameserver": "DNS Server Domain Resolution",
"dns.defaultNameserverPlaceholder": "Example: 223.5.5.5, IP only",

View File

@@ -453,8 +453,13 @@
"dns.enhancedMode.normal": "بدون نگاشت",
"dns.fakeIp.range": "محدوده پاسخ",
"dns.fakeIp.rangePlaceholder": "مثال: 198.18.0.1/16",
"dns.fakeIp.filterMode": "حالت فیلتر",
"dns.fakeIp.filterMode.blacklist": "لیست سیاه",
"dns.fakeIp.filterMode.whitelist": "لیست سفید",
"dns.fakeIp.filterMode.rule": "قانون",
"dns.fakeIp.filter": "پاسخ IP واقعی",
"dns.fakeIp.filterPlaceholder": "مثال: +.lan",
"dns.fakeIp.filterPlaceholder.rule": "مثال: RULE-SET,reject-domain,fake-ip",
"dns.respectRules": "رعایت قوانین",
"dns.defaultNameserver": "سرور DNS برای حل نام دامنه",
"dns.defaultNameserverPlaceholder": "مثال: 223.5.5.5، فقط IP",

View File

@@ -455,8 +455,13 @@
"dns.enhancedMode.normal": "Без маппинга",
"dns.fakeIp.range": "Диапазон ответов",
"dns.fakeIp.rangePlaceholder": "Пример: 198.18.0.1/16",
"dns.fakeIp.filterMode": "Режим фильтра",
"dns.fakeIp.filterMode.blacklist": "Черный список",
"dns.fakeIp.filterMode.whitelist": "Белый список",
"dns.fakeIp.filterMode.rule": "Правило",
"dns.fakeIp.filter": "Ответ реального IP",
"dns.fakeIp.filterPlaceholder": "Пример: +.lan",
"dns.fakeIp.filterPlaceholder.rule": "Пример: RULE-SET,reject-domain,fake-ip",
"dns.respectRules": "Соблюдать правила",
"dns.defaultNameserver": "Разрешение доменов DNS сервера",
"dns.defaultNameserverPlaceholder": "Пример: 223.5.5.5, только IP",

View File

@@ -481,8 +481,13 @@
"dns.enhancedMode.normal": "取消映射",
"dns.fakeIp.range": "回应范围",
"dns.fakeIp.rangePlaceholder": "例198.18.0.1/16",
"dns.fakeIp.filterMode": "过滤器模式",
"dns.fakeIp.filterMode.blacklist": "黑名单",
"dns.fakeIp.filterMode.whitelist": "白名单",
"dns.fakeIp.filterMode.rule": "规则",
"dns.fakeIp.filter": "真实 IP 回应",
"dns.fakeIp.filterPlaceholder": "例:+.lan",
"dns.fakeIp.filterPlaceholder.rule": "例RULE-SET,reject-domain,fake-ip",
"dns.respectRules": "遵守规则",
"dns.defaultNameserver": "DNS 服务器域名解析",
"dns.defaultNameserverPlaceholder": "例223.5.5.5,仅支持 IP",

View File

@@ -481,8 +481,13 @@
"dns.enhancedMode.normal": "取消映射",
"dns.fakeIp.range": "回應範圍",
"dns.fakeIp.rangePlaceholder": "例198.18.0.1/16",
"dns.fakeIp.filterMode": "過濾器模式",
"dns.fakeIp.filterMode.blacklist": "黑名單",
"dns.fakeIp.filterMode.whitelist": "白名單",
"dns.fakeIp.filterMode.rule": "規則",
"dns.fakeIp.filter": "真實 IP 回應",
"dns.fakeIp.filterPlaceholder": "例:+.lan",
"dns.fakeIp.filterPlaceholder.rule": "例RULE-SET,reject-domain,fake-ip",
"dns.respectRules": "遵守規則",
"dns.defaultNameserver": "DNS 伺服器域名解析",
"dns.defaultNameserverPlaceholder": "例223.5.5.5,僅支持 IP",

View File

@@ -28,6 +28,7 @@ const DNS: React.FC = () => {
'ntp.*.com',
'+.market.xiaomi.com'
],
'fake-ip-filter-mode': fakeIPFilterMode = 'blacklist',
'enhanced-mode': enhancedMode = 'fake-ip',
'use-hosts': useHosts = false,
'use-system-hosts': useSystemHosts = false,
@@ -55,6 +56,7 @@ const DNS: React.FC = () => {
enhancedMode,
fakeIPRange,
fakeIPFilter,
fakeIPFilterMode,
useSystemHosts,
respectRules,
defaultNameserver,
@@ -184,6 +186,7 @@ const DNS: React.FC = () => {
ipv6: values.ipv6,
'fake-ip-range': values.fakeIPRange,
'fake-ip-filter': values.fakeIPFilter,
'fake-ip-filter-mode': values.fakeIPFilterMode,
'enhanced-mode': values.enhancedMode,
'use-hosts': values.useHosts,
'use-system-hosts': values.useSystemHosts,
@@ -233,6 +236,7 @@ const DNS: React.FC = () => {
<Tabs
size="sm"
color="primary"
classNames={{ tab: 'w-[4.5rem]' }}
selectedKey={values.enhancedMode}
onSelectionChange={(key: Key) => setValues({ ...values, enhancedMode: key as DnsMode })}
>
@@ -254,9 +258,29 @@ const DNS: React.FC = () => {
}}
/>
</SettingItem>
<SettingItem title={t('dns.fakeIp.filterMode')} divider>
<Tabs
size="sm"
color="primary"
classNames={{ tab: 'w-[3.5rem]' }}
selectedKey={values.fakeIPFilterMode}
onSelectionChange={(key: Key) =>
setValues({ ...values, fakeIPFilterMode: key as FilterMode })
}
>
<Tab key="blacklist" title={t('dns.fakeIp.filterMode.blacklist')} />
<Tab key="whitelist" title={t('dns.fakeIp.filterMode.whitelist')} />
<Tab key="rule" title={t('dns.fakeIp.filterMode.rule')} />
</Tabs>
</SettingItem>
<div className="flex flex-col items-stretch">
<h3>{t('dns.fakeIp.filter')}</h3>
{renderListInputs('fakeIPFilter', t('dns.fakeIp.filterPlaceholder'))}
{renderListInputs(
'fakeIPFilter',
values.fakeIPFilterMode === 'rule'
? t('dns.fakeIp.filterPlaceholder.rule')
: t('dns.fakeIp.filterPlaceholder')
)}
</div>
<Divider className="my-2" />
</>