diff --git a/src/renderer/src/components/settings/mihomo-config.tsx b/src/renderer/src/components/settings/mihomo-config.tsx index 4e5b647..4bed9bb 100644 --- a/src/renderer/src/components/settings/mihomo-config.tsx +++ b/src/renderer/src/components/settings/mihomo-config.tsx @@ -4,7 +4,7 @@ import SettingItem from '../base/base-setting-item' import { Button, Input, Select, SelectItem, Switch, Tooltip } from '@heroui/react' import { useAppConfig } from '@renderer/hooks/use-app-config' import debounce from '@renderer/utils/debounce' -import { getGistUrl, patchControledMihomoConfig, restartCore } from '@renderer/utils/ipc' +import { getGistUrl, restartCore } from '@renderer/utils/ipc' import { MdDeleteForever } from 'react-icons/md' import { BiCopy } from 'react-icons/bi' import { IoIosHelpCircle } from 'react-icons/io' @@ -16,7 +16,6 @@ const MihomoConfig: React.FC = () => { const { appConfig, patchAppConfig } = useAppConfig() const { diffWorkDir = false, - controlSniff = true, delayTestConcurrency, delayTestTimeout, githubToken = '', @@ -193,21 +192,7 @@ const MihomoConfig: React.FC = () => { /> - - { - try { - await patchAppConfig({ controlSniff: v }) - await patchControledMihomoConfig({}) - await restartCore() - } catch (e) { - alert(e) - } - }} - /> - + = (props) => { const { t } = useTranslation() - const { appConfig } = useAppConfig() + const { appConfig, patchAppConfig } = useAppConfig() const { iconOnly } = props const { sniffCardStatus = 'col-span-1', controlSniff = true } = appConfig || {} const location = useLocation() const navigate = useNavigate() const match = location.pathname.includes('/sniffer') - const { controledMihomoConfig, patchControledMihomoConfig } = useControledMihomoConfig() - const { sniffer } = controledMihomoConfig || {} - const { enable } = sniffer || {} + const { patchControledMihomoConfig } = useControledMihomoConfig() const { attributes, listeners, @@ -35,14 +33,19 @@ const SniffCard: React.FC = (props) => { id: 'sniff' }) const transform = tf ? { x: tf.x, y: tf.y, scaleX: 1, scaleY: 1 } : null - const onChange = async (enable: boolean): Promise => { - await patchControledMihomoConfig({ sniffer: { enable } }) - await patchMihomoConfig({ sniffer: { enable } }) + const onChange = async (controlSniff: boolean): Promise => { + try { + await patchAppConfig({ controlSniff }) + await patchControledMihomoConfig({}) + await restartCore() + } catch (e) { + alert(e) + } } if (iconOnly) { return ( -
+
diff --git a/src/renderer/src/locales/en-US.json b/src/renderer/src/locales/en-US.json index 99d0747..1be43c9 100644 --- a/src/renderer/src/locales/en-US.json +++ b/src/renderer/src/locales/en-US.json @@ -216,7 +216,7 @@ "sider.cards.connections": "Connections", "sider.cards.core": "Core Settings", "sider.cards.dns": "DNS Override", - "sider.cards.sniff": "Sniffing", + "sider.cards.sniff": "Sniff OVRD", "sider.cards.logs": "Logs", "sider.cards.substore": "Sub-Store", "sider.cards.config": "Runtime Config", @@ -269,6 +269,7 @@ "proxies.search.placeholder": "Search Proxies", "proxies.locate": "Locate Current Proxy", "sniffer.title": "Domain Sniffing Settings", + "sniffer.enable": "Enable Domain Sniffing", "sniffer.parsePureIP": "Sniff Unmapped IP Addresses", "sniffer.forceDNSMapping": "Sniff Real IP Mappings", "sniffer.overrideDestination": "Override Connection Address", diff --git a/src/renderer/src/locales/fa-IR.json b/src/renderer/src/locales/fa-IR.json index ccf0c65..b873ecd 100644 --- a/src/renderer/src/locales/fa-IR.json +++ b/src/renderer/src/locales/fa-IR.json @@ -207,7 +207,7 @@ "sider.cards.connections": "اتصالات", "sider.cards.core": "تنظیمات هسته", "sider.cards.dns": "بازنویسی دی‌ان‌اس", - "sider.cards.sniff": "تشخیص دامنه", + "sider.cards.sniff": "لغو بو کشیدن", "sider.cards.logs": "گزارش‌ها", "sider.cards.substore": "ساب استور", "sider.cards.config": "پیکربندی اجرا", @@ -260,6 +260,7 @@ "proxies.search.placeholder": "جستجوی پراکسی‌ها", "proxies.locate": "یافتن پراکسی فعلی", "sniffer.title": "تنظیمات تشخیص دامنه", + "sniffer.enable": "فعال کردن قابلیت شنود دامنه", "sniffer.parsePureIP": "تشخیص آدرس‌های IP بدون نگاشت", "sniffer.forceDNSMapping": "تشخیص نگاشت‌های IP واقعی", "sniffer.overrideDestination": "جایگزینی آدرس اتصال", diff --git a/src/renderer/src/locales/ru-RU.json b/src/renderer/src/locales/ru-RU.json index 66919f6..f64b09d 100644 --- a/src/renderer/src/locales/ru-RU.json +++ b/src/renderer/src/locales/ru-RU.json @@ -207,7 +207,7 @@ "sider.cards.connections": "Подключения", "sider.cards.core": "Настройки ядра", "sider.cards.dns": "Переопределение DNS", - "sider.cards.sniff": "Анализ трафика", + "sider.cards.sniff": "переопределение сниффинга", "sider.cards.logs": "Журналы", "sider.cards.substore": "Sub-Store", "sider.cards.config": "Конфигурация", @@ -260,6 +260,7 @@ "proxies.search.placeholder": "Поиск прокси", "proxies.locate": "Найти текущий прокси", "sniffer.title": "Настройки анализа доменов", + "sniffer.enable": "Включить анализ домена", "sniffer.parsePureIP": "Анализировать немаппированные IP-адреса", "sniffer.forceDNSMapping": "Анализировать реальные IP-маппинги", "sniffer.overrideDestination": "Переопределить адрес подключения", diff --git a/src/renderer/src/locales/zh-CN.json b/src/renderer/src/locales/zh-CN.json index ec3e9b4..5e72336 100644 --- a/src/renderer/src/locales/zh-CN.json +++ b/src/renderer/src/locales/zh-CN.json @@ -216,7 +216,7 @@ "sider.cards.connections": "连接", "sider.cards.core": "内核设置", "sider.cards.dns": "DNS覆写", - "sider.cards.sniff": "域名嗅探", + "sider.cards.sniff": "嗅探覆写", "sider.cards.logs": "日志", "sider.cards.substore": "Sub-Store", "sider.cards.config": "运行时配置", @@ -269,6 +269,7 @@ "proxies.search.placeholder": "搜索节点", "proxies.locate": "定位到当前节点", "sniffer.title": "域名嗅探设置", + "sniffer.enable": "启用域名嗅探", "sniffer.parsePureIP": "对未映射 IP 地址嗅探", "sniffer.forceDNSMapping": "对真实 IP 映射嗅探", "sniffer.overrideDestination": "覆盖连接地址", diff --git a/src/renderer/src/pages/sniffer.tsx b/src/renderer/src/pages/sniffer.tsx index b6283bc..a8591c7 100644 --- a/src/renderer/src/pages/sniffer.tsx +++ b/src/renderer/src/pages/sniffer.tsx @@ -13,6 +13,7 @@ const Sniffer: React.FC = () => { const { controledMihomoConfig, patchControledMihomoConfig } = useControledMihomoConfig() const { sniffer } = controledMihomoConfig || {} const { + enable = true, 'parse-pure-ip': parsePureIP = true, 'force-dns-mapping': forceDNSMapping = true, 'override-destination': overrideDestination = false, @@ -65,6 +66,15 @@ const Sniffer: React.FC = () => { } } + const onEnableChange = async (enable: boolean): Promise => { + try { + await patchControledMihomoConfig({ sniffer: { enable } }) + await restartCore() + } catch (e) { + alert(e) + } + } + const handleSniffPortChange = (protocol: keyof typeof sniff, value: string): void => { setValues({ ...values, @@ -146,6 +156,13 @@ const Sniffer: React.FC = () => { } > + + +