From e236e70350e899b38f1d5d1db783d637166a0b5e Mon Sep 17 00:00:00 2001 From: actions-user Date: Mon, 17 Nov 2025 00:10:18 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=92=90=20Sync=202025-11-17=2000:10:18?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- luci-app-bandix/Makefile | 2 +- .../resources/view/bandix/connection.js | 562 ++---- .../luci-static/resources/view/bandix/dns.js | 1523 ++++++----------- .../resources/view/bandix/index.js | 1470 ++++++---------- .../resources/view/bandix/settings.js | 692 +------- luci-app-bandix/po/es/bandix.po | 735 ++++++++ luci-app-bandix/po/fr/bandix.po | 735 ++++++++ luci-app-bandix/po/id/bandix.po | 735 ++++++++ luci-app-bandix/po/ja/bandix.po | 735 ++++++++ luci-app-bandix/po/ru/bandix.po | 735 ++++++++ luci-app-bandix/po/th/bandix.po | 735 ++++++++ luci-app-bandix/po/zh-cn | 1 + luci-app-bandix/po/zh-cn/bandix.po | 3 - luci-app-bandix/po/zh_Hans/bandix.po | 734 +++++++- luci-app-bandix/po/zh_Hant/bandix.po | 735 ++++++++ luci-app-kucat-config/Makefile | 24 - luci-app-kucat-config/README.md | 91 - luci-app-kucat-config/README_CN.md | 114 -- luci-app-kucat-config/doc/kucat1.png | Bin 595204 -> 0 bytes luci-app-kucat-config/doc/kucat2.png | Bin 826601 -> 0 bytes luci-app-kucat-config/doc/kucat3.png | Bin 1533841 -> 0 bytes luci-app-kucat-config/doc/kucat4.png | Bin 65586 -> 0 bytes luci-app-kucat-config/doc/kucatz1.png | Bin 279963 -> 0 bytes luci-app-kucat-config/doc/kucatz2.png | Bin 703780 -> 0 bytes .../luasrc/controller/kucat-config.lua | 19 - .../model/cbi/kucat-config/kucat-config.lua | 174 -- .../model/cbi/kucat-config/kucatupload.lua | 126 -- .../luasrc/model/cbi/kucat-config/upload.lua | 127 -- .../view/kucat-config/color_primary.htm | 40 - .../luasrc/view/kucat-config/other_dvalue.htm | 8 - .../luasrc/view/kucat-config/other_upload.htm | 5 - .../po/zh-cn/kucat-config.po | 180 -- .../po/zh_Hans/kucat-config.po | 258 --- luci-app-kucat-config/root/etc/config/kucat | 104 -- luci-app-kucat-config/root/etc/init.d/kucat | 238 --- .../root/etc/uci-defaults/luci-kucat | 7 - .../rpcd/acl.d/luci-app-kucat-config.json | 11 - .../luasrc/controller/passwall.lua | 22 +- .../luasrc/view/passwall/haproxy/status.htm | 32 +- .../view/passwall/node_list/link_add_node.htm | 19 +- .../view/passwall/node_list/node_list.htm | 53 +- .../root/usr/share/passwall/rule_update.lua | 8 - .../root/usr/share/passwall/rules/chnlist | 20 +- .../root/usr/share/passwall/rules/chnroute | 73 +- .../root/usr/share/passwall/rules/chnroute6 | 131 +- .../root/usr/share/passwall/rules/gfwlist | 34 +- .../luasrc/controller/passwall2.lua | 23 +- .../model/cbi/passwall2/client/global.lua | 18 +- .../cbi/passwall2/client/node_subscribe.lua | 2 +- .../client/node_subscribe_config.lua | 2 +- .../model/cbi/passwall2/client/rule.lua | 7 + .../cbi/passwall2/client/shunt_rules.lua | 8 +- luci-app-passwall2/luasrc/passwall2/api.lua | 2 +- .../luasrc/passwall2/util_sing-box.lua | 3 + .../view/passwall2/app_update/app_version.htm | 5 +- .../luasrc/view/passwall2/haproxy/status.htm | 32 +- .../passwall2/node_list/link_add_node.htm | 19 +- .../view/passwall2/node_list/node_list.htm | 52 +- luci-app-passwall2/po/zh-cn/passwall2.po | 14 +- luci-app-passwall2/po/zh-tw/passwall2.po | 14 +- luci-app-ssr-plus/root/usr/bin/ssr-rules | 339 ++-- .../root/usr/share/shadowsocksr/chinaipset.sh | 23 +- .../root/usr/share/shadowsocksr/gfw2ipset.sh | 18 +- 63 files changed, 7743 insertions(+), 4888 deletions(-) create mode 100644 luci-app-bandix/po/es/bandix.po create mode 100644 luci-app-bandix/po/fr/bandix.po create mode 100644 luci-app-bandix/po/id/bandix.po create mode 100644 luci-app-bandix/po/ja/bandix.po create mode 100644 luci-app-bandix/po/ru/bandix.po create mode 100644 luci-app-bandix/po/th/bandix.po create mode 120000 luci-app-bandix/po/zh-cn delete mode 100644 luci-app-bandix/po/zh-cn/bandix.po create mode 100644 luci-app-bandix/po/zh_Hant/bandix.po delete mode 100644 luci-app-kucat-config/Makefile delete mode 100644 luci-app-kucat-config/README.md delete mode 100644 luci-app-kucat-config/README_CN.md delete mode 100644 luci-app-kucat-config/doc/kucat1.png delete mode 100644 luci-app-kucat-config/doc/kucat2.png delete mode 100644 luci-app-kucat-config/doc/kucat3.png delete mode 100644 luci-app-kucat-config/doc/kucat4.png delete mode 100644 luci-app-kucat-config/doc/kucatz1.png delete mode 100644 luci-app-kucat-config/doc/kucatz2.png delete mode 100644 luci-app-kucat-config/luasrc/controller/kucat-config.lua delete mode 100644 luci-app-kucat-config/luasrc/model/cbi/kucat-config/kucat-config.lua delete mode 100644 luci-app-kucat-config/luasrc/model/cbi/kucat-config/kucatupload.lua delete mode 100644 luci-app-kucat-config/luasrc/model/cbi/kucat-config/upload.lua delete mode 100644 luci-app-kucat-config/luasrc/view/kucat-config/color_primary.htm delete mode 100644 luci-app-kucat-config/luasrc/view/kucat-config/other_dvalue.htm delete mode 100644 luci-app-kucat-config/luasrc/view/kucat-config/other_upload.htm delete mode 100644 luci-app-kucat-config/po/zh-cn/kucat-config.po delete mode 100644 luci-app-kucat-config/po/zh_Hans/kucat-config.po delete mode 100644 luci-app-kucat-config/root/etc/config/kucat delete mode 100644 luci-app-kucat-config/root/etc/init.d/kucat delete mode 100644 luci-app-kucat-config/root/etc/uci-defaults/luci-kucat delete mode 100644 luci-app-kucat-config/root/usr/share/rpcd/acl.d/luci-app-kucat-config.json diff --git a/luci-app-bandix/Makefile b/luci-app-bandix/Makefile index 54f8fcb..debd21d 100644 --- a/luci-app-bandix/Makefile +++ b/luci-app-bandix/Makefile @@ -10,7 +10,7 @@ LUCI_DEPENDS:=+luci-base +luci-lib-jsonc +curl +bandix PKG_MAINTAINER:=timsaya -PKG_VERSION:=0.8.1 +PKG_VERSION:=0.8.2 PKG_RELEASE:=1 include $(TOPDIR)/feeds/luci/luci.mk diff --git a/luci-app-bandix/htdocs/luci-static/resources/view/bandix/connection.js b/luci-app-bandix/htdocs/luci-static/resources/view/bandix/connection.js index 4e7bb39..a7d396f 100644 --- a/luci-app-bandix/htdocs/luci-static/resources/view/bandix/connection.js +++ b/luci-app-bandix/htdocs/luci-static/resources/view/bandix/connection.js @@ -5,331 +5,33 @@ 'require rpc'; 'require poll'; -const translations = { - 'zh-cn': { - 'Bandix 连接监控': 'Bandix 连接监控', - '正在加载数据...': '正在加载数据...', - '无法获取数据': '无法获取数据', - '连接监控': '连接监控', - '设备连接统计': '设备连接统计', - '全局连接统计': '全局连接统计', - '设备': '设备', - 'IP地址': 'IP地址', - 'MAC地址': 'MAC地址', - '活跃TCP': '活跃TCP', - '活跃UDP': '活跃UDP', - '已关闭TCP': '已关闭TCP', - '总连接数': '总连接数', - '最后更新': '最后更新', - '总连接数统计': '总连接数统计', - 'TCP连接数': 'TCP连接数', - 'UDP连接数': 'UDP连接数', - '已建立TCP': '已建立TCP', - 'TIME_WAIT TCP': 'TIME_WAIT TCP', - 'CLOSE_WAIT TCP': 'CLOSE_WAIT TCP', - '设备总数': '设备总数', - '连接监控未启用': '连接监控未启用', - '请在设置中启用连接监控功能': '请在设置中启用连接监控功能', - '前往设置': '前往设置', - '无数据': '无数据', - '未知设备': '未知设备', - '在线设备': '在线设备', - '从未上线': '从未上线', - '刚刚': '刚刚', - '分钟前': '分钟前', - '小时前': '小时前', - '天前': '天前', - '个月前': '个月前', - '年前': '年前', - '最后上线': '最后上线', - '列表只显示局域网设备连接,数据可能和总连接数不一致。': '列表只显示局域网设备连接,数据可能和总连接数不一致。', - 'TCP 状态详情': 'TCP 状态详情' - }, - 'zh-tw': { - 'Bandix 连接监控': 'Bandix 連接監控', - '正在加载数据...': '正在載入資料...', - '无法获取数据': '無法獲取資料', - '连接监控': '連接監控', - '设备连接统计': '設備連接統計', - '全局连接统计': '全局連接統計', - '设备': '設備', - 'IP地址': 'IP地址', - 'MAC地址': 'MAC地址', - '活跃TCP': '活躍TCP', - '活跃UDP': '活躍UDP', - '已关闭TCP': '已關閉TCP', - '总连接数': '總連接數', - '最后更新': '最後更新', - '总连接数统计': '總連接數統計', - 'TCP连接数': 'TCP連接數', - 'UDP连接数': 'UDP連接數', - '已建立TCP': '已建立TCP', - 'TIME_WAIT TCP': 'TIME_WAIT TCP', - 'CLOSE_WAIT TCP': 'CLOSE_WAIT TCP', - '设备总数': '設備總數', - '连接监控未启用': '連接監控未啟用', - '请在设置中启用连接监控功能': '請在設置中啟用連接監控功能', - '前往设置': '前往設置', - '无数据': '無數據', - '未知设备': '未知設備', - '在线设备': '在線設備', - '从未上线': '從未上線', - '刚刚': '剛剛', - '分钟前': '分鐘前', - '小时前': '小時前', - '天前': '天前', - '个月前': '個月前', - '年前': '年前', - '最后上线': '最後上線', - '列表只显示局域网设备连接,数据可能和总连接数不一致。': '列表只顯示局域網設備連接,數據可能和總連接數不一致。', - 'TCP 状态详情': 'TCP 狀態詳情' - }, - 'en': { - 'Bandix 连接监控': 'Bandix Connection Monitor', - '正在加载数据...': 'Loading data...', - '无法获取数据': 'Unable to fetch data', - '连接监控': 'Connection Monitor', - '设备连接统计': 'Device Connection Statistics', - '全局连接统计': 'Global Connection Statistics', - '设备': 'Device', - 'IP地址': 'IP Address', - 'MAC地址': 'MAC Address', - '活跃TCP': 'Active TCP', - '活跃UDP': 'Active UDP', - '已关闭TCP': 'Closed TCP', - '总连接数': 'Total Connections', - '最后更新': 'Last Updated', - '总连接数统计': 'Total Connections', - 'TCP连接数': 'TCP Connections', - 'UDP连接数': 'UDP Connections', - '已建立TCP': 'Established TCP', - 'TIME_WAIT TCP': 'TIME_WAIT TCP', - 'CLOSE_WAIT TCP': 'CLOSE_WAIT TCP', - '设备总数': 'Total Devices', - '连接监控未启用': 'Connection Monitor Disabled', - '请在设置中启用连接监控功能': 'Please enable connection monitoring in settings', - '前往设置': 'Go to Settings', - '无数据': 'No Data', - '未知设备': 'Unknown Device', - '在线设备': 'Online Devices', - '从未上线': 'Never Online', - '刚刚': 'Just now', - '分钟前': 'minutes ago', - '小时前': 'hours ago', - '天前': 'days ago', - '个月前': 'months ago', - '年前': 'years ago', - '最后上线': 'Last seen', - '列表只显示局域网设备连接,数据可能和总连接数不一致。': 'List only shows LAN device connections, data may differ from total connections.', - 'TCP 状态详情': 'TCP Status Details' - }, - 'fr': { - 'Bandix 连接监控': 'Surveillance de Connexion Bandix', - '正在加载数据...': 'Chargement des données...', - '无法获取数据': 'Impossible de récupérer les données', - '连接监控': 'Surveillance des Connexions', - '设备连接统计': 'Statistiques de Connexion des Appareils', - '全局连接统计': 'Statistiques de Connexion Globales', - '设备': 'Appareil', - 'IP地址': 'Adresse IP', - 'MAC地址': 'Adresse MAC', - '活跃TCP': 'TCP Actif', - '活跃UDP': 'UDP Actif', - '已关闭TCP': 'TCP Fermé', - '总连接数': 'Total des Connexions', - '最后更新': 'Dernière Mise à Jour', - '总连接数统计': 'Total des Connexions', - 'TCP连接数': 'Connexions TCP', - 'UDP连接数': 'Connexions UDP', - '已建立TCP': 'TCP Établi', - 'TIME_WAIT TCP': 'TCP TIME_WAIT', - 'CLOSE_WAIT TCP': 'TCP CLOSE_WAIT', - '设备总数': 'Total des Appareils', - '连接监控未启用': 'Surveillance des Connexions Désactivée', - '请在设置中启用连接监控功能': 'Veuillez activer la surveillance des connexions dans les paramètres', - '前往设置': 'Aller aux Paramètres', - '无数据': 'Aucune Donnée', - '未知设备': 'Appareil Inconnu', - '在线设备': 'Appareils En Ligne', - '从未上线': 'Jamais En Ligne', - '刚刚': 'À l\'instant', - '分钟前': 'il y a minutes', - '小时前': 'il y a heures', - '天前': 'il y a jours', - '个月前': 'il y a mois', - '年前': 'il y a années', - '最后上线': 'Dernier Vue', - '列表只显示局域网设备连接,数据可能和总连接数不一致。': 'La liste ne montre que les connexions des appareils LAN, les données peuvent différer du total des connexions.', - 'TCP 状态详情': 'Détails du Statut TCP' - }, - 'ja': { - 'Bandix 连接监控': 'Bandix 接続監視', - '正在加载数据...': 'データを読み込み中...', - '无法获取数据': 'データを取得できません', - '连接监控': '接続監視', - '设备连接统计': 'デバイス接続統計', - '全局连接统计': 'グローバル接続統計', - '设备': 'デバイス', - 'IP地址': 'IPアドレス', - 'MAC地址': 'MACアドレス', - '活跃TCP': 'アクティブTCP', - '活跃UDP': 'アクティブUDP', - '已关闭TCP': 'クローズドTCP', - '总连接数': '総接続数', - '最后更新': '最終更新', - '总连接数统计': '総接続数', - 'TCP连接数': 'TCP接続数', - 'UDP连接数': 'UDP接続数', - '已建立TCP': 'TCP確立済', - 'TIME_WAIT TCP': 'TCP TIME_WAIT', - 'CLOSE_WAIT TCP': 'TCP CLOSE_WAIT', - '设备总数': '総デバイス数', - '连接监控未启用': '接続監視が無効', - '请在设置中启用连接监控功能': '設定で接続監視機能を有効にしてください', - '前往设置': '設定に移動', - '无数据': 'データなし', - '未知设备': '不明なデバイス', - '在线设备': 'オンラインデバイス', - '从未上线': '未接続', - '刚刚': 'たった今', - '分钟前': '分前', - '小时前': '時間前', - '天前': '日前', - '个月前': 'ヶ月前', - '年前': '年前', - '最后上线': '最後の接続', - '列表只显示局域网设备连接,数据可能和总连接数不一致。': 'リストはLANデバイスの接続のみを表示し、データは総接続数と異なる場合があります。', - 'TCP 状态详情': 'TCP状態詳細' - }, - 'ru': { - 'Bandix 连接监控': 'Мониторинг Соединений Bandix', - '正在加载数据...': 'Загрузка данных...', - '无法获取数据': 'Не удалось получить данные', - '连接监控': 'Мониторинг Соединений', - '设备连接统计': 'Статистика Соединений Устройств', - '全局连接统计': 'Глобальная Статистика Соединений', - '设备': 'Устройство', - 'IP地址': 'IP-адрес', - 'MAC地址': 'MAC-адрес', - '活跃TCP': 'Активные TCP', - '活跃UDP': 'Активные UDP', - '已关闭TCP': 'Закрытые TCP', - '总连接数': 'Всего Соединений', - '最后更新': 'Последнее Обновление', - '总连接数统计': 'Всего Соединений', - 'TCP连接数': 'TCP Соединения', - 'UDP连接数': 'UDP Соединения', - '已建立TCP': 'Установленные TCP', - 'TIME_WAIT TCP': 'TCP TIME_WAIT', - 'CLOSE_WAIT TCP': 'TCP CLOSE_WAIT', - '设备总数': 'Всего Устройств', - '连接监控未启用': 'Мониторинг Соединений Отключен', - '请在设置中启用连接监控功能': 'Пожалуйста, включите мониторинг соединений в настройках', - '前往设置': 'Перейти к Настройкам', - '无数据': 'Нет Данных', - '未知设备': 'Неизвестное Устройство', - '在线设备': 'Устройства Онлайн', - '从未上线': 'Никогда Не Было Онлайн', - '刚刚': 'Только что', - '分钟前': 'минут назад', - '小时前': 'часов назад', - '天前': 'дней назад', - '个月前': 'месяцев назад', - '年前': 'лет назад', - '最后上线': 'Последний раз видели', - '列表只显示局域网设备连接,数据可能和总连接数不一致。': 'Список показывает только соединения LAN-устройств, данные могут отличаться от общего количества соединений.', - 'TCP 状态详情': 'Детали Статуса TCP' - } -}; -function getTranslation(key, language) { - return translations[language]?.[key] || key; -} - -// 获取系统语言 -function getSystemLanguage() { - var luciLang = uci.get('luci', 'main', 'lang'); - if (luciLang && translations[luciLang]) { - return luciLang; - } - var systemLang = document.documentElement.lang || 'en'; - if (translations[systemLang]) { - return systemLang; - } - return 'en'; -} - -// 检查是否为暗黑模式 -function isDarkMode() { - // 首先检查用户设置的主题 - var userTheme = uci.get('bandix', 'general', 'theme'); - if (userTheme) { - if (userTheme === 'dark') { - return true; - } else if (userTheme === 'light') { - return false; - } - // 如果是 'auto',继续检查系统主题 - } - - // 获取 LuCI 主题设置 - var mediaUrlBase = uci.get('luci', 'main', 'mediaurlbase'); - if (mediaUrlBase && mediaUrlBase.toLowerCase().includes('dark')) { - return true; - } - - // 如果是 argon 主题,检查 argon 配置 - if (mediaUrlBase && mediaUrlBase.toLowerCase().includes('argon')) { - var argonMode = uci.get('argon', '@global[0]', 'mode'); - if (argonMode) { - if (argonMode.toLowerCase() === 'dark') { - return true; - } else if (argonMode.toLowerCase() === 'light') { - return false; - } - // 如果是 'normal' 或 'auto',使用浏览器检测系统颜色偏好 - if (argonMode.toLowerCase() === 'normal' || argonMode.toLowerCase() === 'auto') { - if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { - return true; - } - return false; - } - } - } - - // 默认情况下也使用浏览器检测系统颜色偏好 - if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { - return true; - } - - return false; -} +// 暗色模式检测已改为使用 CSS 媒体查询 @media (prefers-color-scheme: dark) // 格式化时间戳 function formatTimestamp(timestamp) { - if (!timestamp) return getTranslation('从未上线', getSystemLanguage()); + if (!timestamp) return _('Never Online'); var now = Math.floor(Date.now() / 1000); var diff = now - timestamp; - var language = getSystemLanguage(); if (diff < 60) { - return getTranslation('刚刚', language); + return _('Just now'); } else if (diff < 3600) { var minutes = Math.floor(diff / 60); - return minutes + ' ' + getTranslation('分钟前', language); + return minutes + ' ' + _('minutes ago'); } else if (diff < 86400) { var hours = Math.floor(diff / 3600); - return hours + ' ' + getTranslation('小时前', language); + return hours + ' ' + _('hours ago'); } else if (diff < 2592000) { var days = Math.floor(diff / 86400); - return days + ' ' + getTranslation('天前', language); + return days + ' ' + _('days ago'); } else if (diff < 31536000) { var months = Math.floor(diff / 2592000); - return months + ' ' + getTranslation('个月前', language); + return months + ' ' + _('months ago'); } else { var years = Math.floor(diff / 31536000); - return years + ' ' + getTranslation('年前', language); + return years + ' ' + _('years ago'); } } @@ -338,7 +40,7 @@ function formatDeviceName(device) { if (device.hostname && device.hostname !== '') { return device.hostname; } - return device.ip_address || device.mac_address || getTranslation('未知设备', getSystemLanguage()); + return device.ip_address || device.mac_address || _('Unknown Device'); } // RPC调用 @@ -360,63 +62,42 @@ return view.extend({ }, render: function (data) { - var language = uci.get('bandix', 'general', 'language'); - if (!language || language === 'auto') { - language = getSystemLanguage(); - } - var darkMode = isDarkMode(); var connectionEnabled = uci.get('bandix', 'connections', 'enabled') === '1'; // 创建样式 var style = E('style', {}, ` .bandix-connection-container { - margin: 0; - padding: 16px; - background-color: ${darkMode ? '#1a1a1a' : '#f8fafc'}; - min-height: calc(100vh - 100px); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; - color: ${darkMode ? '#e2e8f0' : '#1f2937'}; - border-radius: 8px; } .bandix-header { display: flex; align-items: center; justify-content: space-between; - margin-bottom: 20px; } .bandix-title { font-size: 1.5rem; font-weight: 600; - color: ${darkMode ? '#f1f5f9' : '#1f2937'}; margin: 0; } .bandix-badge { - background-color: ${darkMode ? '#2a2a2a' : '#f8fafc'}; - border: 1px solid ${darkMode ? '#444444' : '#cbd5e1'}; border-radius: 4px; padding: 4px 10px; font-size: 0.875rem; - color: ${darkMode ? '#d0d0d0' : '#475569'}; } .bandix-alert { - background-color: ${darkMode ? '#2a2a2a' : '#eff6ff'}; - border-left: 3px solid ${darkMode ? '#3b82f6' : '#2563eb'}; border-radius: 4px; padding: 10px 12px; - margin-bottom: 16px; display: flex; align-items: center; gap: 10px; - color: ${darkMode ? '#d0d0d0' : '#1e293b'}; font-size: 0.875rem; } .bandix-alert-icon { - color: ${darkMode ? '#60a5fa' : '#2563eb'}; font-size: 0.875rem; font-weight: 700; width: 18px; @@ -424,72 +105,62 @@ return view.extend({ display: flex; align-items: center; justify-content: center; - border: 2px solid currentColor; border-radius: 50%; flex-shrink: 0; } - .bandix-card { - background-color: ${darkMode ? '#2a2a2a' : 'white'}; - border-radius: 8px; - border: 1px solid ${darkMode ? '#444444' : '#e2e8f0'}; - box-shadow: 0 2px 8px rgba(0, 0, 0, ${darkMode ? '0.3' : '0.08'}); - margin-bottom: 24px; - overflow: hidden; - } - - .bandix-card-header { - padding: 16px; - border-bottom: 1px solid ${darkMode ? '#444444' : '#e2e8f0'}; - background-color: ${darkMode ? '#2a2a2a' : '#f8fafc'}; - } - - .bandix-card-title { - font-size: 1.125rem; - font-weight: 600; - color: ${darkMode ? '#f1f5f9' : '#1f2937'}; - margin: 0; - display: flex; - align-items: center; - gap: 8px; - } - - .bandix-card-body { - padding: 0; - } - .stats-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; - margin-bottom: 24px; + margin-top: 0; } - .stats-card { - background-color: ${darkMode ? '#2a2a2a' : 'white'}; - border-radius: 8px; - padding: 20px; - border: 1px solid ${darkMode ? '#444444' : '#e2e8f0'}; - box-shadow: 0 2px 8px rgba(0, 0, 0, ${darkMode ? '0.3' : '0.08'}); - display: flex; - flex-direction: column; - align-items: center; - text-align: center; + + .bandix-connection-container > .cbi-section:first-of-type { + margin-top: 0; + } + + .bandix-connection-container > .cbi-section:last-of-type { + margin-bottom: 0; } .stats-card-title { font-size: 0.875rem; font-weight: 600; - color: ${darkMode ? '#94a3b8' : '#64748b'}; + opacity: 0.7; margin: 0 0 12px 0; text-transform: uppercase; letter-spacing: 0.025em; } + .stats-grid .cbi-section { + padding: 16px; + border: 1px solid rgba(0, 0, 0, 0.1); + border-radius: 8px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); + transition: box-shadow 0.2s ease, transform 0.2s ease, border-color 0.2s ease; + } + + .stats-grid .cbi-section:hover { + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12); + transform: translateY(-2px); + } + + @media (prefers-color-scheme: dark) { + .stats-grid .cbi-section { + border-color: rgba(255, 255, 255, 0.15); + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3); + } + + .stats-grid .cbi-section:hover { + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4); + } + } + .stats-card-main-value { font-size: 2.25rem; font-weight: 700; - color: ${darkMode ? '#f1f5f9' : '#1f2937'}; margin: 0 0 8px 0; line-height: 1; } @@ -510,28 +181,23 @@ return view.extend({ } .stats-detail-label { - color: ${darkMode ? '#9ca3af' : '#6b7280'}; + opacity: 0.7; font-weight: 500; } .stats-detail-value { font-weight: 600; - color: ${darkMode ? '#e2e8f0' : '#374151'}; } .bandix-table { width: 100%; - border-collapse: collapse; - background-color: transparent; table-layout: fixed; } .bandix-table th { - background-color: ${darkMode ? '#2a2a2a' : '#f8fafc'}; padding: 12px 16px; text-align: left; font-weight: 600; - color: ${darkMode ? '#d0d0d0' : '#475569'}; border: none; font-size: 0.875rem; white-space: nowrap; @@ -545,11 +211,9 @@ return view.extend({ .bandix-table td { padding: 12px 16px; - border-bottom: 1px solid ${darkMode ? '#333333' : '#f1f5f9'}; vertical-align: middle; word-break: break-word; overflow-wrap: break-word; - color: ${darkMode ? '#d0d0d0' : '#334155'}; } @@ -581,7 +245,6 @@ return view.extend({ .device-name { font-weight: 600; - color: ${darkMode ? '#f1f5f9' : '#1f2937'}; display: flex; align-items: center; gap: 8px; @@ -589,12 +252,12 @@ return view.extend({ } .device-ip { - color: ${darkMode ? '#94a3b8' : '#6b7280'}; + opacity: 0.7; font-size: 0.875rem; } .device-mac { - color: ${darkMode ? '#64748b' : '#9ca3af'}; + opacity: 0.6; font-size: 0.75rem; } @@ -637,43 +300,18 @@ return view.extend({ .tcp-status-value { font-weight: 600; - color: ${darkMode ? '#e2e8f0' : '#374151'}; } .loading-state { text-align: center; padding: 40px; - color: ${darkMode ? '#94a3b8' : '#6b7280'}; + opacity: 0.7; font-style: italic; } .error-state { text-align: center; padding: 40px; - color: ${darkMode ? '#f87171' : '#ef4444'}; - } - - .btn { - display: inline-flex; - align-items: center; - gap: 8px; - padding: 8px 16px; - border-radius: 4px; - font-size: 0.875rem; - font-weight: 500; - text-decoration: none; - border: none; - cursor: pointer; - transition: all 0.15s ease; - } - - .btn-primary { - background-color: #3b82f6; - color: white; - } - - .btn-primary:hover { - background-color: #2563eb; } `); document.head.appendChild(style); @@ -682,28 +320,27 @@ return view.extend({ // 页面标题 var header = E('div', { 'class': 'bandix-header' }, [ - E('h1', { 'class': 'bandix-title' }, getTranslation('Bandix 连接监控', language)) + E('h1', { 'class': 'bandix-title' }, _('Bandix Connection Monitor')) ]); container.appendChild(header); // 检查连接监控是否启用 if (!connectionEnabled) { var alertDiv = E('div', { 'class': 'bandix-alert' }, [ - E('span', { 'class': 'bandix-alert-icon' }, '!'), E('div', {}, [ - E('strong', {}, getTranslation('连接监控未启用', language)), + E('strong', {}, _('Connection Monitor Disabled')), E('p', { 'style': 'margin: 4px 0 0 0;' }, - getTranslation('请在设置中启用连接监控功能', language)) + _('Please enable connection monitoring in settings')) ]) ]); container.appendChild(alertDiv); - var settingsCard = E('div', { 'class': 'bandix-card' }, [ - E('div', { 'class': 'bandix-card-body', 'style': 'text-align: center;' }, [ + var settingsCard = E('div', { 'class': 'cbi-section' }, [ + E('div', { 'style': 'text-align: center; padding: 16px;' }, [ E('a', { 'href': '/cgi-bin/luci/admin/network/bandix/settings', - 'class': 'btn btn-primary' - }, getTranslation('前往设置', language)) + 'class': 'cbi-button cbi-button-positive' + }, _('Go to Settings')) ]) ]); container.appendChild(settingsCard); @@ -712,19 +349,18 @@ return view.extend({ // 添加提示信息 var infoAlert = E('div', { 'class': 'bandix-alert' }, [ - E('span', { 'class': 'bandix-alert-icon' }, '!'), - E('span', {}, getTranslation('列表只显示局域网设备连接,数据可能和总连接数不一致。', language)) + E('span', {}, _('List only shows LAN device connections, data may differ from total connections.')) ]); container.appendChild(infoAlert); // 全局统计卡片 var statsGrid = E('div', { 'class': 'stats-grid' }, [ - E('div', { 'class': 'stats-card' }, [ - E('div', { 'class': 'stats-card-title' }, getTranslation('总连接数统计', language)), + E('div', { 'class': 'cbi-section' }, [ + E('div', { 'class': 'stats-card-title' }, _('Total Connections')), E('div', { 'class': 'stats-card-main-value', 'id': 'total-connections' }, '-') ]), - E('div', { 'class': 'stats-card' }, [ - E('div', { 'class': 'stats-card-title' }, getTranslation('TCP连接数', language)), + E('div', { 'class': 'cbi-section' }, [ + E('div', { 'class': 'stats-card-title' }, _('TCP Connections')), E('div', { 'class': 'stats-card-main-value', 'id': 'tcp-connections' }, '-'), E('div', { 'class': 'stats-card-details' }, [ E('div', { 'class': 'stats-detail-row' }, [ @@ -741,25 +377,26 @@ return view.extend({ ]) ]) ]), - E('div', { 'class': 'stats-card' }, [ - E('div', { 'class': 'stats-card-title' }, getTranslation('UDP连接数', language)), + E('div', { 'class': 'cbi-section' }, [ + E('div', { 'class': 'stats-card-title' }, _('UDP Connections')), E('div', { 'class': 'stats-card-main-value', 'id': 'udp-connections' }, '-') ]) ]); container.appendChild(statsGrid); // 设备连接统计表格 - var deviceCard = E('div', { 'class': 'bandix-card' }, [ - E('div', { 'class': 'bandix-card-body' }, [ + var deviceCard = E('div', { 'class': 'cbi-section' }, [ + E('h3', {}, _('Device Connection Statistics')), + E('div', {}, [ E('div', { 'id': 'device-table-container' }, [ E('table', { 'class': 'bandix-table' }, [ E('thead', {}, [ E('tr', {}, [ - E('th', {}, getTranslation('设备', language)), + E('th', {}, _('Device')), E('th', {}, 'TCP'), E('th', {}, 'UDP'), - E('th', {}, getTranslation('TCP 状态详情', language)), - E('th', {}, getTranslation('总连接数', language)) + E('th', {}, _('TCP Status Details')), + E('th', {}, _('Total Connections')) ]) ]), E('tbody', {}) @@ -788,18 +425,18 @@ return view.extend({ if (!devices || devices.length === 0) { container.innerHTML = ''; container.appendChild(E('div', { 'class': 'loading-state' }, - getTranslation('无数据', language))); + _('No Data'))); return; } var table = E('table', { 'class': 'bandix-table' }, [ E('thead', {}, [ E('tr', {}, [ - E('th', {}, getTranslation('设备', language)), + E('th', {}, _('Device')), E('th', {}, 'TCP'), E('th', {}, 'UDP'), - E('th', {}, getTranslation('TCP 状态详情', language)), - E('th', {}, getTranslation('总连接数', language)) + E('th', {}, _('TCP Status Details')), + E('th', {}, _('Total Connections')) ]) ]), E('tbody', {}, devices.map(function (device) { @@ -855,11 +492,11 @@ return view.extend({ updateGlobalStats(result.data.global_stats); updateDeviceTable(result.data.devices); } else { - showError(getTranslation('无法获取数据', language)); + showError(_('Unable to fetch data')); } }).catch(function (error) { console.error('Failed to load connection data:', error); - showError(getTranslation('无法获取数据', language)); + showError(_('Unable to fetch data')); }); } @@ -869,6 +506,61 @@ return view.extend({ // 立即执行一次,不等待轮询 updateConnectionData(); + // 自动适应主题背景色和文字颜色的函数 + function applyThemeColors() { + try { + var mainElement = document.querySelector('.main') || document.body; + var computedStyle = window.getComputedStyle(mainElement); + var bgColor = computedStyle.backgroundColor; + + // 如果父元素有背景色,应用到容器和卡片 + if (bgColor && bgColor !== 'rgba(0, 0, 0, 0)' && bgColor !== 'transparent') { + var containerEl = document.querySelector('.bandix-connection-container'); + if (containerEl) { + containerEl.style.backgroundColor = bgColor; + } + + // 应用到表格表头 + var tableHeaders = document.querySelectorAll('.bandix-table th'); + tableHeaders.forEach(function(th) { + th.style.backgroundColor = bgColor; + }); + } + + // 检测文字颜色并应用 + var textColor = computedStyle.color; + if (textColor && textColor !== 'rgba(0, 0, 0, 0)') { + var containerEl = document.querySelector('.bandix-connection-container'); + if (containerEl) { + containerEl.style.color = textColor; + } + } + } catch (e) { + // 如果检测失败,使用默认值 + console.log('Theme adaptation:', e); + } + } + + // 初始应用主题颜色 + setTimeout(applyThemeColors, 100); + + // 监听 DOM 变化,自动应用到新创建的元素 + if (typeof MutationObserver !== 'undefined') { + var observer = new MutationObserver(function(mutations) { + applyThemeColors(); + }); + + setTimeout(function() { + var container = document.querySelector('.bandix-connection-container'); + if (container) { + observer.observe(container, { + childList: true, + subtree: true + }); + } + }, 200); + } + return container; } }); \ No newline at end of file diff --git a/luci-app-bandix/htdocs/luci-static/resources/view/bandix/dns.js b/luci-app-bandix/htdocs/luci-static/resources/view/bandix/dns.js index 8ef7423..f539dc9 100644 --- a/luci-app-bandix/htdocs/luci-static/resources/view/bandix/dns.js +++ b/luci-app-bandix/htdocs/luci-static/resources/view/bandix/dns.js @@ -5,507 +5,8 @@ 'require rpc'; 'require poll'; -const translations = { - 'zh-cn': { - 'Bandix DNS 监控': 'Bandix DNS 监控', - '正在加载数据...': '正在加载数据...', - '无法获取数据': '无法获取数据', - 'DNS 监控': 'DNS 监控', - 'DNS 查询记录': 'DNS 查询记录', - 'DNS 统计信息': 'DNS 统计信息', - 'DNS监控未启用': 'DNS监控未启用', - '请在设置中启用DNS监控功能': '请在设置中启用DNS监控功能', - '前往设置': '前往设置', - '无数据': '无数据', - '时间': '时间', - '域名': '域名', - '查询类型': '查询类型', - '类型': '类型', - '响应码': '响应码', - '响应时间': '响应时间', - '源IP': '源IP', - '目标IP': '目标IP', - '设备': '设备', - '响应IP': '响应IP', - '响应结果': '响应结果', - 'DNS服务器': 'DNS服务器', - '查询': '查询', - '响应': '响应', - '过滤': '过滤', - '域名过滤': '域名过滤', - '设备过滤': '设备过滤', - 'DNS服务器过滤': 'DNS服务器过滤', - '类型过滤': '类型过滤', - '全部': '全部', - '仅查询': '仅查询', - '仅响应': '仅响应', - '搜索': '搜索', - '搜索域名': '搜索域名', - '搜索设备': '搜索设备', - '搜索DNS服务器': '搜索DNS服务器', - '清除': '清除', - '上一页': '上一页', - '下一页': '下一页', - '第': '第', - '页,共': '页,共', - '共': '共', - '条记录': '条记录', - '每页显示': '每页显示', - '条': '条', - '总查询数': '总查询数', - '总响应数': '总响应数', - '有响应查询': '有响应查询', - '无响应查询': '无响应查询', - '平均响应时间': '平均响应时间', - '最快响应时间': '最快响应时间', - '最慢响应时间': '最慢响应时间', - '响应时间': '响应时间', - '成功率': '成功率', - '成功': '成功', - '失败': '失败', - '最常查询域名': '最常查询域名', - '最常用查询类型': '最常用查询类型', - '最活跃设备': '最活跃设备', - '最常用DNS服务器': '最常用DNS服务器', - '唯一设备数': '唯一设备数', - '时间范围': '时间范围', - '毫秒': '毫秒', - '分钟': '分钟', - '刷新': '刷新', - '未知设备': '未知设备', - '成功': '成功', - '域名未找到': '域名未找到', - '服务器错误': '服务器错误', - '格式错误': '格式错误', - '拒绝': '拒绝', - '其他': '其他' - }, - 'zh-tw': { - 'Bandix DNS 监控': 'Bandix DNS 監控', - '正在加载数据...': '正在載入資料...', - '无法获取数据': '無法獲取資料', - 'DNS 监控': 'DNS 監控', - 'DNS 查询记录': 'DNS 查詢記錄', - 'DNS 统计信息': 'DNS 統計資訊', - 'DNS监控未启用': 'DNS監控未啟用', - '请在设置中启用DNS监控功能': '請在設置中啟用DNS監控功能', - '前往设置': '前往設置', - '无数据': '無數據', - '时间': '時間', - '域名': '域名', - '查询类型': '查詢類型', - '类型': '類型', - '响应码': '響應碼', - '响应时间': '響應時間', - '源IP': '源IP', - '目标IP': '目標IP', - '设备': '設備', - '响应IP': '響應IP', - '响应结果': '響應結果', - 'DNS服务器': 'DNS伺服器', - '查询': '查詢', - '响应': '響應', - '过滤': '過濾', - '域名过滤': '域名過濾', - '设备过滤': '設備過濾', - 'DNS服务器过滤': 'DNS伺服器過濾', - '类型过滤': '類型過濾', - '全部': '全部', - '仅查询': '僅查詢', - '仅响应': '僅響應', - '搜索': '搜尋', - '搜索域名': '搜尋域名', - '搜索设备': '搜尋設備', - '搜索DNS服务器': '搜尋DNS伺服器', - '清除': '清除', - '上一页': '上一頁', - '下一页': '下一頁', - '第': '第', - '页,共': '頁,共', - '共': '共', - '条记录': '條記錄', - '每页显示': '每頁顯示', - '条': '條', - '总查询数': '總查詢數', - '总响应数': '總響應數', - '有响应查询': '有響應查詢', - '无响应查询': '無響應查詢', - '平均响应时间': '平均響應時間', - '最快响应时间': '最快響應時間', - '最慢响应时间': '最慢響應時間', - '响应时间': '響應時間', - '成功率': '成功率', - '成功': '成功', - '失败': '失敗', - '最常查询域名': '最常查詢域名', - '最常用查询类型': '最常用查詢類型', - '最活跃设备': '最活躍設備', - '最常用DNS服务器': '最常用DNS伺服器', - '唯一设备数': '唯一設備數', - '时间范围': '時間範圍', - '毫秒': '毫秒', - '分钟': '分鐘', - '刷新': '重新整理', - '未知设备': '未知設備', - '成功': '成功', - '域名未找到': '域名未找到', - '服务器错误': '伺服器錯誤', - '格式错误': '格式錯誤', - '拒绝': '拒絕', - '其他': '其他' - }, - 'en': { - 'Bandix DNS 监控': 'Bandix DNS Monitor', - '正在加载数据...': 'Loading data...', - '无法获取数据': 'Unable to fetch data', - 'DNS 监控': 'DNS Monitor', - 'DNS 查询记录': 'DNS Query Records', - 'DNS 统计信息': 'DNS Statistics', - 'DNS监控未启用': 'DNS Monitoring Disabled', - '请在设置中启用DNS监控功能': 'Please enable DNS monitoring in settings', - '前往设置': 'Go to Settings', - '无数据': 'No Data', - '时间': 'Time', - '域名': 'Domain', - '查询类型': 'Query Type', - '类型': 'Type', - '响应码': 'Response Code', - '响应时间': 'Response Time', - '源IP': 'Source IP', - '目标IP': 'Destination IP', - '设备': 'Device', - '响应IP': 'Response IPs', - '响应结果': 'Response Result', - 'DNS服务器': 'DNS Server', - '查询': 'Query', - '响应': 'Response', - '过滤': 'Filter', - '域名过滤': 'Domain Filter', - '设备过滤': 'Device Filter', - 'DNS服务器过滤': 'DNS Server Filter', - '类型过滤': 'Type Filter', - '全部': 'All', - '仅查询': 'Queries Only', - '仅响应': 'Responses Only', - '搜索': 'Search', - '搜索域名': 'Search Domain', - '搜索设备': 'Search Device', - '搜索DNS服务器': 'Search DNS Server', - '清除': 'Clear', - '上一页': 'Previous', - '下一页': 'Next', - '第': 'Page', - '页,共': 'of', - '共': 'Total', - '条记录': 'records', - '每页显示': 'Per Page', - '条': '', - '总查询数': 'Total Queries', - '总响应数': 'Total Responses', - '有响应查询': 'Queries with Response', - '无响应查询': 'Queries without Response', - '平均响应时间': 'Avg Response Time', - '最快响应时间': 'Min Response Time', - '最慢响应时间': 'Max Response Time', - '响应时间': 'Response Time', - '成功率': 'Success Rate', - '成功': 'Success', - '失败': 'Failure', - '最常查询域名': 'Top Domains', - '最常用查询类型': 'Top Query Types', - '最活跃设备': 'Top Devices', - '最常用DNS服务器': 'Top DNS Servers', - '唯一设备数': 'Unique Devices', - '时间范围': 'Time Range', - '毫秒': 'ms', - '分钟': 'minutes', - '刷新': 'Refresh', - '未知设备': 'Unknown Device', - '成功': 'Success', - '域名未找到': 'Domain not found', - '服务器错误': 'Server error', - '格式错误': 'Format error', - '拒绝': 'Refused', - '其他': 'Other' - }, - 'fr': { - 'Bandix DNS 监控': 'Bandix Surveillance DNS', - '正在加载数据...': 'Chargement des données...', - '无法获取数据': 'Impossible de récupérer les données', - 'DNS 监控': 'Surveillance DNS', - 'DNS 查询记录': 'Enregistrements de Requêtes DNS', - 'DNS 统计信息': 'Statistiques DNS', - 'DNS监控未启用': 'Surveillance DNS désactivée', - '请在设置中启用DNS监控功能': 'Veuillez activer la surveillance DNS dans les paramètres', - '前往设置': 'Aller aux Paramètres', - '无数据': 'Aucune Donnée', - '时间': 'Heure', - '域名': 'Domaine', - '查询类型': 'Type de Requête', - '类型': 'Type', - '响应码': 'Code de Réponse', - '响应时间': 'Temps de Réponse', - '源IP': 'IP Source', - '目标IP': 'IP de Destination', - '设备': 'Appareil', - '响应IP': 'IPs de Réponse', - '响应结果': 'Résultat de Réponse', - 'DNS服务器': 'Serveur DNS', - '查询': 'Requête', - '响应': 'Réponse', - '过滤': 'Filtre', - '域名过滤': 'Filtre de Domaine', - '设备过滤': 'Filtre d\'Appareil', - 'DNS服务器过滤': 'Filtre de Serveur DNS', - '类型过滤': 'Filtre de Type', - '全部': 'Tous', - '仅查询': 'Requêtes Seulement', - '仅响应': 'Réponses Seulement', - '搜索': 'Rechercher', - '搜索域名': 'Rechercher un Domaine', - '搜索设备': 'Rechercher un Appareil', - '搜索DNS服务器': 'Rechercher un Serveur DNS', - '清除': 'Effacer', - '上一页': 'Précédent', - '下一页': 'Suivant', - '第': 'Page', - '页,共': 'sur', - '共': 'Total', - '条记录': 'enregistrements', - '每页显示': 'Par Page', - '条': '', - '总查询数': 'Total des Requêtes', - '总响应数': 'Total des Réponses', - '有响应查询': 'Requêtes avec Réponse', - '无响应查询': 'Requêtes sans Réponse', - '平均响应时间': 'Temps de Réponse Moyen', - '最快响应时间': 'Temps de Réponse Minimum', - '最慢响应时间': 'Temps de Réponse Maximum', - '响应时间': 'Temps de Réponse', - '成功率': 'Taux de Réussite', - '成功': 'Succès', - '失败': 'Échec', - '最常查询域名': 'Domaines les Plus Consultés', - '最常用查询类型': 'Types de Requêtes les Plus Utilisés', - '最活跃设备': 'Appareils les Plus Actifs', - '最常用DNS服务器': 'Serveurs DNS les Plus Utilisés', - '唯一设备数': 'Appareils Uniques', - '时间范围': 'Plage de Temps', - '毫秒': 'ms', - '分钟': 'minutes', - '刷新': 'Actualiser', - '未知设备': 'Appareil Inconnu', - '成功': 'Succès', - '域名未找到': 'Domaine introuvable', - '服务器错误': 'Erreur serveur', - '格式错误': 'Erreur de format', - '拒绝': 'Refusé', - '其他': 'Autre' - }, - 'ja': { - 'Bandix DNS 监控': 'Bandix DNS監視', - '正在加载数据...': 'データを読み込み中...', - '无法获取数据': 'データを取得できません', - 'DNS 监控': 'DNS監視', - 'DNS 查询记录': 'DNSクエリ記録', - 'DNS 统计信息': 'DNS統計情報', - 'DNS监控未启用': 'DNS監視が無効です', - '请在设置中启用DNS监控功能': '設定でDNS監視機能を有効にしてください', - '前往设置': '設定へ', - '无数据': 'データなし', - '时间': '時刻', - '域名': 'ドメイン', - '查询类型': 'クエリタイプ', - '类型': 'タイプ', - '响应码': '応答コード', - '响应时间': '応答時間', - '源IP': '送信元IP', - '目标IP': '宛先IP', - '设备': 'デバイス', - '响应IP': '応答IP', - '响应结果': '応答結果', - 'DNS服务器': 'DNSサーバー', - '查询': 'クエリ', - '响应': '応答', - '过滤': 'フィルター', - '域名过滤': 'ドメインフィルター', - '设备过滤': 'デバイスフィルター', - 'DNS服务器过滤': 'DNSサーバーフィルター', - '类型过滤': 'タイプフィルター', - '全部': 'すべて', - '仅查询': 'クエリのみ', - '仅响应': '応答のみ', - '搜索': '検索', - '搜索域名': 'ドメインを検索', - '搜索设备': 'デバイスを検索', - '搜索DNS服务器': 'DNSサーバーを検索', - '清除': 'クリア', - '上一页': '前へ', - '下一页': '次へ', - '第': 'ページ', - '页,共': '/', - '共': '合計', - '条记录': '件の記録', - '每页显示': 'ページあたり', - '条': '', - '总查询数': '総クエリ数', - '总响应数': '総応答数', - '有响应查询': '応答ありのクエリ', - '无响应查询': '応答なしのクエリ', - '平均响应时间': '平均応答時間', - '最快响应时间': '最小応答時間', - '最慢响应时间': '最大応答時間', - '响应时间': '応答時間', - '成功率': '成功率', - '成功': '成功', - '失败': '失敗', - '最常查询域名': '最も頻繁にクエリされるドメイン', - '最常用查询类型': '最も使用されるクエリタイプ', - '最活跃设备': '最もアクティブなデバイス', - '最常用DNS服务器': '最も使用されるDNSサーバー', - '唯一设备数': 'ユニークデバイス数', - '时间范围': '時間範囲', - '毫秒': 'ミリ秒', - '分钟': '分', - '刷新': '更新', - '未知设备': '不明なデバイス', - '成功': '成功', - '域名未找到': 'ドメインが見つかりません', - '服务器错误': 'サーバーエラー', - '格式错误': 'フォーマットエラー', - '拒绝': '拒否', - '其他': 'その他' - }, - 'ru': { - 'Bandix DNS 监控': 'Bandix Мониторинг DNS', - '正在加载数据...': 'Загрузка данных...', - '无法获取数据': 'Не удалось получить данные', - 'DNS 监控': 'Мониторинг DNS', - 'DNS 查询记录': 'Записи DNS-запросов', - 'DNS 统计信息': 'Статистика DNS', - 'DNS监控未启用': 'Мониторинг DNS отключен', - '请在设置中启用DNS监控功能': 'Пожалуйста, включите мониторинг DNS в настройках', - '前往设置': 'Перейти в Настройки', - '无数据': 'Нет Данных', - '时间': 'Время', - '域名': 'Домен', - '查询类型': 'Тип Запроса', - '类型': 'Тип', - '响应码': 'Код Ответа', - '响应时间': 'Время Ответа', - '源IP': 'Исходный IP', - '目标IP': 'IP Назначения', - '设备': 'Устройство', - '响应IP': 'IP Ответов', - '响应结果': 'Результат Ответа', - 'DNS服务器': 'DNS Сервер', - '查询': 'Запрос', - '响应': 'Ответ', - '过滤': 'Фильтр', - '域名过滤': 'Фильтр Домена', - '设备过滤': 'Фильтр Устройства', - 'DNS服务器过滤': 'Фильтр DNS Сервера', - '类型过滤': 'Фильтр Типа', - '全部': 'Все', - '仅查询': 'Только Запросы', - '仅响应': 'Только Ответы', - '搜索': 'Поиск', - '搜索域名': 'Поиск Домена', - '搜索设备': 'Поиск Устройства', - '搜索DNS服务器': 'Поиск DNS Сервера', - '清除': 'Очистить', - '上一页': 'Предыдущая', - '下一页': 'Следующая', - '第': 'Страница', - '页,共': 'из', - '共': 'Всего', - '条记录': 'записей', - '每页显示': 'На Странице', - '条': '', - '总查询数': 'Всего Запросов', - '总响应数': 'Всего Ответов', - '有响应查询': 'Запросы с Ответом', - '无响应查询': 'Запросы без Ответа', - '平均响应时间': 'Среднее Время Ответа', - '最快响应时间': 'Минимальное Время Ответа', - '最慢响应时间': 'Максимальное Время Ответа', - '响应时间': 'Время Ответа', - '成功率': 'Процент Успеха', - '成功': 'Успех', - '失败': 'Неудача', - '最常查询域名': 'Наиболее Запрашиваемые Домены', - '最常用查询类型': 'Наиболее Используемые Типы Запросов', - '最活跃设备': 'Наиболее Активные Устройства', - '最常用DNS服务器': 'Наиболее Используемые DNS Серверы', - '唯一设备数': 'Уникальных Устройств', - '时间范围': 'Временной Диапазон', - '毫秒': 'мс', - '分钟': 'минут', - '刷新': 'Обновить', - '未知设备': 'Неизвестное Устройство', - '成功': 'Успех', - '域名未找到': 'Домен не найден', - '服务器错误': 'Ошибка сервера', - '格式错误': 'Ошибка формата', - '拒绝': 'Отклонено', - '其他': 'Другое' - } -}; -function getTranslation(key, language) { - return translations[language]?.[key] || key; -} - -function getSystemLanguage() { - var luciLang = uci.get('luci', 'main', 'lang'); - if (luciLang && translations[luciLang]) { - return luciLang; - } - var systemLang = document.documentElement.lang || 'en'; - if (translations[systemLang]) { - return systemLang; - } - return 'en'; -} - -function isDarkMode() { - var userTheme = uci.get('bandix', 'general', 'theme'); - if (userTheme) { - if (userTheme === 'dark') { - return true; - } else if (userTheme === 'light') { - return false; - } - } - - var mediaUrlBase = uci.get('luci', 'main', 'mediaurlbase'); - if (mediaUrlBase && mediaUrlBase.toLowerCase().includes('dark')) { - return true; - } - - if (mediaUrlBase && mediaUrlBase.toLowerCase().includes('argon')) { - var argonMode = uci.get('argon', '@global[0]', 'mode'); - if (argonMode) { - if (argonMode.toLowerCase() === 'dark') { - return true; - } else if (argonMode.toLowerCase() === 'light') { - return false; - } - if (argonMode.toLowerCase() === 'normal' || argonMode.toLowerCase() === 'auto') { - if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { - return true; - } - return false; - } - } - } - - if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { - return true; - } - - return false; -} +// 暗色模式检测已改为使用 CSS 媒体查询 @media (prefers-color-scheme: dark) function formatTimestamp(timestamp) { if (!timestamp) return '-'; @@ -522,17 +23,15 @@ function formatTimestamp(timestamp) { } function formatResponseCode(code) { - var language = getSystemLanguage(); - if (code === 'Success') return getTranslation('成功', language); - if (code === 'Domain not found') return getTranslation('域名未找到', language); - if (code === 'Server error') return getTranslation('服务器错误', language); - if (code === 'Format error') return getTranslation('格式错误', language); - if (code === 'Refused') return getTranslation('拒绝', language); - return code || getTranslation('其他', language); + if (code === 'Success' || code === 'NOERROR') return _('Success'); + if (code === 'Domain not found' || code === 'NXDomain' || code === 'NXDOMAIN') return _('Domain not found'); + if (code === 'Server error' || code === 'ServFail' || code === 'SERVFAIL') return _('Server error'); + if (code === 'Format error' || code === 'FormErr' || code === 'FORMERR') return _('Format error'); + if (code === 'Refused' || code === 'Refused' || code === 'REFUSED') return _('Refused'); + return code || _('Other'); } function formatDeviceName(device) { - var language = getSystemLanguage(); var parts = []; if (device && device.device_name && device.device_name !== '') { parts.push(device.device_name); @@ -552,7 +51,7 @@ function formatDeviceName(device) { parts.push(ip); } if (parts.length === 0) { - return getTranslation('未知设备', language); + return _('Unknown Device'); } return parts.join(' / '); } @@ -611,53 +110,35 @@ return view.extend({ }, render: function (data) { - var language = uci.get('bandix', 'general', 'language'); - if (!language || language === 'auto') { - language = getSystemLanguage(); - } - var darkMode = isDarkMode(); var dnsEnabled = uci.get('bandix', 'dns', 'enabled') === '1'; var style = E('style', {}, ` .bandix-dns-container { - margin: 0; - padding: 16px; - background-color: ${darkMode ? '#1a1a1a' : '#f8fafc'}; - min-height: calc(100vh - 100px); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; - color: ${darkMode ? '#e2e8f0' : '#1f2937'}; - border-radius: 8px; } .bandix-header { display: flex; align-items: center; justify-content: space-between; - margin-bottom: 20px; } .bandix-title { font-size: 1.5rem; font-weight: 600; - color: ${darkMode ? '#f1f5f9' : '#1f2937'}; margin: 0; } .bandix-alert { - background-color: ${darkMode ? '#2a2a2a' : '#eff6ff'}; - border-left: 3px solid ${darkMode ? '#3b82f6' : '#2563eb'}; border-radius: 4px; padding: 10px 12px; - margin-bottom: 16px; display: flex; align-items: center; gap: 10px; - color: ${darkMode ? '#d0d0d0' : '#1e293b'}; font-size: 0.875rem; } .bandix-alert-icon { - color: ${darkMode ? '#60a5fa' : '#2563eb'}; font-size: 0.875rem; font-weight: 700; width: 18px; @@ -665,45 +146,16 @@ return view.extend({ display: flex; align-items: center; justify-content: center; - border: 2px solid currentColor; border-radius: 50%; flex-shrink: 0; } - .bandix-card { - background-color: ${darkMode ? '#2a2a2a' : 'white'}; - border-radius: 8px; - border: 1px solid ${darkMode ? '#444444' : '#e2e8f0'}; - box-shadow: 0 2px 8px rgba(0, 0, 0, ${darkMode ? '0.3' : '0.08'}); - margin-bottom: 24px; - overflow: hidden; - } - - .bandix-card-header { - padding: 16px; - border-bottom: 1px solid ${darkMode ? '#444444' : '#e2e8f0'}; - background-color: ${darkMode ? '#2a2a2a' : '#f8fafc'}; - } - - .bandix-card-title { - font-size: 1.125rem; - font-weight: 600; - color: ${darkMode ? '#f1f5f9' : '#1f2937'}; - margin: 0; - display: flex; - align-items: center; - gap: 8px; - } - - .bandix-card-body { - padding: 16px; - } .filter-section { display: flex; flex-wrap: wrap; gap: 12px; - margin-bottom: 16px; + padding: 16px; align-items: center; } @@ -716,83 +168,32 @@ return view.extend({ .filter-label { font-size: 0.875rem; font-weight: 500; - color: ${darkMode ? '#94a3b8' : '#64748b'}; white-space: nowrap; } .filter-input { padding: 6px 12px; - border: 1px solid ${darkMode ? '#444444' : '#cbd5e1'}; border-radius: 4px; - background-color: ${darkMode ? '#1a1a1a' : 'white'}; - color: ${darkMode ? '#e2e8f0' : '#1f2937'}; font-size: 0.875rem; min-width: 150px; - } - - .filter-select { - padding: 6px 12px; - border: 1px solid ${darkMode ? '#444444' : '#cbd5e1'}; - border-radius: 4px; - background-color: ${darkMode ? '#1a1a1a' : 'white'}; - color: ${darkMode ? '#e2e8f0' : '#1f2937'}; - font-size: 0.875rem; - cursor: pointer; - } - - .btn { - display: inline-flex; - align-items: center; - gap: 6px; - padding: 6px 12px; - border-radius: 4px; - font-size: 0.875rem; - font-weight: 500; - text-decoration: none; - border: none; - cursor: pointer; - transition: all 0.15s ease; - } - - .btn-primary { - background-color: #3b82f6; - color: white; - } - - .btn-primary:hover { - background-color: #2563eb; - } - - .btn-secondary { - background-color: ${darkMode ? '#3a3a3a' : '#e5e7eb'}; - color: ${darkMode ? '#d0d0d0' : '#374151'}; - } - - .btn-secondary:hover { - background-color: ${darkMode ? '#4a4a4a' : '#d1d5db'}; + opacity: 1; } .bandix-table { width: 100%; - border-collapse: collapse; - background-color: transparent; font-size: 0.875rem; } .bandix-table th { - background-color: ${darkMode ? '#2a2a2a' : '#f8fafc'}; padding: 10px 12px; text-align: left; font-weight: 600; - color: ${darkMode ? '#d0d0d0' : '#475569'}; - border-bottom: 2px solid ${darkMode ? '#444444' : '#e2e8f0'}; + opacity: 1; white-space: nowrap; } .bandix-table td { padding: 10px 12px; - border-bottom: 1px solid ${darkMode ? '#333333' : '#f1f5f9'}; - color: ${darkMode ? '#d0d0d0' : '#334155'}; word-break: break-word; } @@ -841,14 +242,14 @@ return view.extend({ display: flex; align-items: center; justify-content: space-between; - margin-top: 16px; + padding: 16px; flex-wrap: wrap; gap: 12px; } .pagination-info { - color: ${darkMode ? '#94a3b8' : '#64748b'}; font-size: 0.875rem; + opacity: 0.7; } .pagination-controls { @@ -857,110 +258,31 @@ return view.extend({ gap: 8px; } - .stats-grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); - gap: 16px; - margin-bottom: 24px; - } - - .stats-card { - background-color: ${darkMode ? '#2a2a2a' : 'white'}; - border-radius: 8px; - padding: 16px; - border: 1px solid ${darkMode ? '#444444' : '#e2e8f0'}; - box-shadow: 0 2px 8px rgba(0, 0, 0, ${darkMode ? '0.3' : '0.08'}); - } - - .stats-card-title { - font-size: 0.75rem; - font-weight: 600; - color: ${darkMode ? '#94a3b8' : '#64748b'}; - margin: 0 0 8px 0; - text-transform: uppercase; - letter-spacing: 0.025em; - } - - .stats-card-value { - font-size: 1.5rem; - font-weight: 700; - color: ${darkMode ? '#f1f5f9' : '#1f2937'}; - margin: 0; - } - - .stats-card-unit { - font-size: 0.875rem; - color: ${darkMode ? '#94a3b8' : '#64748b'}; - margin-left: 4px; - } - - .stats-card-details { - margin-top: 12px; - display: flex; - flex-direction: column; - gap: 8px; - } - - .stats-detail-row { - display: flex; - justify-content: space-between; - align-items: center; - font-size: 0.875rem; - } - - .stats-detail-label { - color: ${darkMode ? '#9ca3af' : '#6b7280'}; - font-weight: 500; - } - - .stats-detail-value { - font-weight: 600; - color: ${darkMode ? '#e2e8f0' : '#374151'}; - } - - .top-list { - list-style: none; - padding: 0; - margin: 0; - } - - .top-list-item { - display: flex; - justify-content: space-between; - align-items: center; - padding: 8px 0; - border-bottom: 1px solid ${darkMode ? '#333333' : '#f1f5f9'}; - } - - .top-list-item:last-child { - border-bottom: none; - } - - .top-list-name { - flex: 1; - color: ${darkMode ? '#e2e8f0' : '#334155'}; - font-size: 0.875rem; - word-break: break-word; - } - - .top-list-count { - font-weight: 600; - color: ${darkMode ? '#f1f5f9' : '#1f2937'}; - font-size: 0.875rem; - margin-left: 12px; - } .loading-state { text-align: center; padding: 40px; - color: ${darkMode ? '#94a3b8' : '#6b7280'}; + opacity: 0.7; font-style: italic; } .error-state { text-align: center; padding: 40px; - color: ${darkMode ? '#f87171' : '#ef4444'}; + } + + .refresh-overlay { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + display: flex; + align-items: center; + justify-content: center; + z-index: 10; + backdrop-filter: blur(2px); + -webkit-backdrop-filter: blur(2px); } .response-ips { @@ -972,10 +294,113 @@ return view.extend({ .response-ip-badge { display: inline-block; padding: 2px 6px; - background-color: ${darkMode ? '#3a3a3a' : '#e5e7eb'}; border-radius: 4px; font-size: 0.75rem; - color: ${darkMode ? '#d0d0d0' : '#374151'}; + } + + .stats-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 16px; + margin-bottom: 16px; + } + + @media (max-width: 1200px) { + .stats-grid { + grid-template-columns: repeat(2, 1fr); + } + } + + @media (max-width: 768px) { + .stats-grid { + grid-template-columns: 1fr; + } + } + + .stats-card-title { + font-size: 0.875rem; + font-weight: 600; + opacity: 0.7; + margin: 0 0 12px 0; + text-transform: uppercase; + letter-spacing: 0.025em; + } + + .stats-grid .cbi-section { + padding: 16px; + border: 1px solid rgba(0, 0, 0, 0.1); + border-radius: 8px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); + transition: box-shadow 0.2s ease, transform 0.2s ease, border-color 0.2s ease; + } + + .stats-grid .cbi-section:hover { + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12); + transform: translateY(-2px); + } + + @media (prefers-color-scheme: dark) { + .stats-grid .cbi-section { + border-color: rgba(255, 255, 255, 0.15); + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3); + } + + .stats-grid .cbi-section:hover { + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4); + } + } + + .stats-card-main-value { + font-size: 2.25rem; + font-weight: 700; + margin: 0 0 8px 0; + line-height: 1; + } + + .stats-card-sub-value { + font-size: 0.875rem; + opacity: 0.7; + margin: 0; + } + + .stats-card-details { + margin-top: 16px; + display: flex; + flex-direction: column; + gap: 8px; + } + + .stats-detail-row { + display: flex; + align-items: center; + gap: 8px; + font-size: 0.875rem; + } + + .stats-detail-label { + opacity: 0.7; + font-weight: 500; + } + + .stats-detail-value { + font-weight: 600; + } + + .stats-list-item { + display: flex; + justify-content: space-between; + align-items: center; + padding: 4px 0; + font-size: 0.875rem; + } + + .stats-list-name { + opacity: 0.8; + } + + .stats-list-count { + font-weight: 600; + opacity: 0.9; } `); document.head.appendChild(style); @@ -983,98 +408,95 @@ return view.extend({ var container = E('div', { 'class': 'bandix-dns-container' }); var header = E('div', { 'class': 'bandix-header' }, [ - E('h1', { 'class': 'bandix-title' }, getTranslation('Bandix DNS 监控', language)) + E('h1', { 'class': 'bandix-title' }, _('Bandix DNS Monitor')) ]); container.appendChild(header); if (!dnsEnabled) { var alertDiv = E('div', { 'class': 'bandix-alert' }, [ - E('span', { 'class': 'bandix-alert-icon' }, '!'), E('div', {}, [ - E('strong', {}, getTranslation('DNS监控未启用', language)), + E('strong', {}, _('DNS Monitoring Disabled')), E('p', { 'style': 'margin: 4px 0 0 0;' }, - getTranslation('请在设置中启用DNS监控功能', language)) + _('Please enable DNS monitoring in settings')) ]) ]); container.appendChild(alertDiv); - var settingsCard = E('div', { 'class': 'bandix-card' }, [ - E('div', { 'class': 'bandix-card-body', 'style': 'text-align: center;' }, [ + var settingsCard = E('div', { 'class': 'cbi-section' }, [ + E('div', { 'style': 'text-align: center; padding: 16px;' }, [ E('a', { 'href': '/cgi-bin/luci/admin/network/bandix/settings', 'class': 'btn btn-primary' - }, getTranslation('前往设置', language)) + }, _('Go to Settings')) ]) ]); container.appendChild(settingsCard); return container; } - // DNS 统计信息卡片 - var statsCard = E('div', { 'class': 'bandix-card' }, [ - E('div', { 'class': 'bandix-card-body' }, [ - E('div', { 'id': 'dns-stats-container' }, [ - E('div', { 'class': 'loading-state' }, getTranslation('正在加载数据...', language)) - ]) - ]) + // 添加提示信息 + var infoAlert = E('div', { 'class': 'bandix-alert' }, [ + E('span', {}, _('Does not include DoH and DoT')) ]); - container.appendChild(statsCard); + container.appendChild(infoAlert); - // DNS 查询记录卡片 - var queriesCard = E('div', { 'class': 'bandix-card' }, [ - E('div', { 'class': 'bandix-card-header' }, [ - E('h2', { 'class': 'bandix-card-title' }, getTranslation('DNS 查询记录', language)) - ]), - E('div', { 'class': 'bandix-card-body' }, [ - E('div', { 'class': 'filter-section' }, [ - E('div', { 'class': 'filter-group' }, [ - E('label', { 'class': 'filter-label' }, getTranslation('类型过滤', language) + ':'), - E('select', { 'class': 'filter-select', 'id': 'type-filter' }, [ - E('option', { 'value': '' }, getTranslation('全部', language)), - E('option', { 'value': 'true' }, getTranslation('仅查询', language)), - E('option', { 'value': 'false' }, getTranslation('仅响应', language)) - ]) - ]), - E('div', { 'class': 'filter-group' }, [ - E('label', { 'class': 'filter-label' }, getTranslation('域名过滤', language) + ':'), - E('input', { - 'type': 'text', - 'class': 'filter-input', - 'id': 'domain-filter', - 'placeholder': getTranslation('搜索域名', language) - }) - ]), - E('div', { 'class': 'filter-group' }, [ - E('label', { 'class': 'filter-label' }, getTranslation('设备过滤', language) + ':'), - E('input', { - 'type': 'text', - 'class': 'filter-input', - 'id': 'device-filter', - 'placeholder': getTranslation('搜索设备', language) - }) - ]), - E('div', { 'class': 'filter-group' }, [ - E('label', { 'class': 'filter-label' }, getTranslation('DNS服务器过滤', language) + ':'), - E('input', { - 'type': 'text', - 'class': 'filter-input', - 'id': 'dns-server-filter', - 'placeholder': getTranslation('搜索DNS服务器', language) - }) - ]), - E('div', { 'class': 'filter-group', 'style': 'margin-left: auto;' }, [ - E('button', { - 'class': 'btn btn-primary', - 'id': 'refresh-queries-btn' - }, getTranslation('刷新', language)) + // DNS 统计信息卡片 + var statsGrid = E('div', { 'class': 'stats-grid', 'id': 'dns-stats-grid' }); + container.appendChild(statsGrid); + + // DNS 查询记录 + var queriesSection = E('div', { 'class': 'cbi-section' }, [ + E('h3', {}, _('DNS Query Records')), + E('div', {}, [ + E('div', { 'class': 'filter-section' }, [ + E('div', { 'class': 'filter-group' }, [ + E('label', { 'class': 'filter-label' }, _('Type Filter') + ':'), + E('select', { 'class': 'cbi-select', 'id': 'type-filter' }, [ + E('option', { 'value': '' }, _('All')), + E('option', { 'value': 'true' }, _('Queries Only')), + E('option', { 'value': 'false' }, _('Responses Only')) ]) ]), - E('div', { 'id': 'dns-queries-container' }, [ - E('div', { 'class': 'loading-state' }, getTranslation('正在加载数据...', language)) + E('div', { 'class': 'filter-group' }, [ + E('label', { 'class': 'filter-label' }, _('Domain Filter') + ':'), + E('input', { + 'type': 'text', + 'class': 'filter-input', + 'id': 'domain-filter', + 'placeholder': _('Search Domain') + }) + ]), + E('div', { 'class': 'filter-group' }, [ + E('label', { 'class': 'filter-label' }, _('Device Filter') + ':'), + E('input', { + 'type': 'text', + 'class': 'filter-input', + 'id': 'device-filter', + 'placeholder': _('Search Device') + }) + ]), + E('div', { 'class': 'filter-group' }, [ + E('label', { 'class': 'filter-label' }, _('DNS Server Filter') + ':'), + E('input', { + 'type': 'text', + 'class': 'filter-input', + 'id': 'dns-server-filter', + 'placeholder': _('Search DNS Server') + }) + ]), + E('div', { 'class': 'filter-group', 'style': 'margin-left: auto;' }, [ + E('button', { + 'class': 'cbi-button cbi-button-action', + 'id': 'refresh-queries-btn' + }, _('Refresh')) ]) + ]), + E('div', { 'id': 'dns-queries-container' }, [ + E('div', { 'class': 'loading-state' }, _('Loading data...')) + ]) ]) ]); - container.appendChild(queriesCard); + container.appendChild(queriesSection); // 状态变量 var currentPage = 1; @@ -1086,174 +508,11 @@ return view.extend({ dns_server: '' }; - // 更新统计信息 - var statsInitialized = false; - function updateStats() { - callGetDnsStats().then(function (result) { - var container = document.getElementById('dns-stats-container'); - if (!container) return; - if (!result || result.status !== 'success' || !result.data || !result.data.stats) { - if (!statsInitialized) { - container.innerHTML = ''; - container.appendChild(E('div', { 'class': 'error-state' }, - getTranslation('无法获取数据', language))); - } - return; - } - - var stats = result.data.stats; - - // 如果还没有初始化,创建完整的 UI 结构 - if (!statsInitialized) { - var statsHtml = E('div', {}, [ - E('div', { 'class': 'stats-grid' }, [ - E('div', { 'class': 'stats-card' }, [ - E('div', { 'class': 'stats-card-title' }, getTranslation('总查询数', language)), - E('div', { 'class': 'stats-card-value', 'id': 'stat-total-queries' }, stats.total_queries || 0) - ]), - E('div', { 'class': 'stats-card' }, [ - E('div', { 'class': 'stats-card-title' }, getTranslation('响应时间', language)), - E('div', { 'class': 'stats-card-value', 'id': 'stat-latest-response-time', 'style': 'margin-bottom: 12px;' }, [ - E('span', {}, (stats.latest_response_time_ms || 0).toFixed(1)), - E('span', { 'class': 'stats-card-unit' }, ' ' + getTranslation('毫秒', language)) - ]), - E('div', { 'class': 'stats-card-details', 'id': 'stat-response-time-details' }, [ - E('div', { 'class': 'stats-detail-row' }, [ - E('span', { 'class': 'stats-detail-label' }, getTranslation('平均响应时间', language) + ':'), - E('span', { 'class': 'stats-detail-value', 'id': 'stat-avg-response-time' }, - (stats.avg_response_time_ms || 0).toFixed(1) + ' ' + getTranslation('毫秒', language)) - ]), - E('div', { 'class': 'stats-detail-row' }, [ - E('span', { 'class': 'stats-detail-label' }, getTranslation('最快响应时间', language) + ':'), - E('span', { 'class': 'stats-detail-value', 'id': 'stat-min-response-time' }, - (stats.min_response_time_ms || 0).toFixed(1) + ' ' + getTranslation('毫秒', language)) - ]), - E('div', { 'class': 'stats-detail-row' }, [ - E('span', { 'class': 'stats-detail-label' }, getTranslation('最慢响应时间', language) + ':'), - E('span', { 'class': 'stats-detail-value', 'id': 'stat-max-response-time' }, - (stats.max_response_time_ms || 0).toFixed(1) + ' ' + getTranslation('毫秒', language)) - ]) - ]) - ]), - E('div', { 'class': 'stats-card' }, [ - E('div', { 'class': 'stats-card-title' }, getTranslation('成功率', language)), - E('div', { 'class': 'stats-card-value', 'id': 'stat-success-rate' }, [ - E('span', {}, ((stats.success_rate || 0) * 100).toFixed(1)), - E('span', { 'class': 'stats-card-unit' }, '%') - ]) - ]) - ]), - E('div', { 'style': 'display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 16px; margin-top: 24px;' }, [ - E('div', { 'class': 'stats-card', 'id': 'top-domains-card' }), - E('div', { 'class': 'stats-card', 'id': 'top-query-types-card' }), - E('div', { 'class': 'stats-card', 'id': 'top-devices-card' }), - E('div', { 'class': 'stats-card', 'id': 'top-dns-servers-card' }) - ]) - ]); - - container.innerHTML = ''; - container.appendChild(statsHtml); - statsInitialized = true; - } - - // 只更新数字内容 - var totalQueriesEl = document.getElementById('stat-total-queries'); - if (totalQueriesEl) { - totalQueriesEl.textContent = stats.total_queries || 0; - } - - var latestResponseTimeEl = document.getElementById('stat-latest-response-time'); - if (latestResponseTimeEl && latestResponseTimeEl.firstChild) { - latestResponseTimeEl.firstChild.textContent = (stats.latest_response_time_ms || 0).toFixed(1); - } - - var avgResponseTimeEl = document.getElementById('stat-avg-response-time'); - if (avgResponseTimeEl) { - avgResponseTimeEl.textContent = (stats.avg_response_time_ms || 0).toFixed(1) + ' ' + getTranslation('毫秒', language); - } - - var minResponseTimeEl = document.getElementById('stat-min-response-time'); - if (minResponseTimeEl) { - minResponseTimeEl.textContent = (stats.min_response_time_ms || 0).toFixed(1) + ' ' + getTranslation('毫秒', language); - } - - var maxResponseTimeEl = document.getElementById('stat-max-response-time'); - if (maxResponseTimeEl) { - maxResponseTimeEl.textContent = (stats.max_response_time_ms || 0).toFixed(1) + ' ' + getTranslation('毫秒', language); - } - - var successRateEl = document.getElementById('stat-success-rate'); - if (successRateEl && successRateEl.firstChild) { - successRateEl.firstChild.textContent = ((stats.success_rate || 0) * 100).toFixed(1); - } - - // 更新 Top 列表 - function updateTopList(cardId, titleKey, items, maxItems) { - var card = document.getElementById(cardId); - if (!card) return; - - if (!items || items.length === 0) { - card.style.display = 'none'; - return; - } - - card.style.display = ''; - var list = card.querySelector('.top-list'); - - if (!list) { - // 创建列表 - card.innerHTML = ''; - card.appendChild(E('div', { 'class': 'stats-card-title' }, getTranslation(titleKey, language))); - list = E('ul', { 'class': 'top-list' }); - card.appendChild(list); - } - - var itemsToShow = items.slice(0, maxItems || 10); - var listItems = list.querySelectorAll('.top-list-item'); - - // 如果列表项数量不匹配,重新创建列表 - if (listItems.length !== itemsToShow.length) { - list.innerHTML = ''; - itemsToShow.forEach(function (item) { - list.appendChild(E('li', { 'class': 'top-list-item' }, [ - E('span', { 'class': 'top-list-name' }, item.name || '-'), - E('span', { 'class': 'top-list-count' }, item.count || 0) - ])); - }); - } else { - // 只更新文本内容 - itemsToShow.forEach(function (item, index) { - var listItem = listItems[index]; - if (listItem) { - var nameEl = listItem.querySelector('.top-list-name'); - var countEl = listItem.querySelector('.top-list-count'); - if (nameEl) nameEl.textContent = item.name || '-'; - if (countEl) countEl.textContent = item.count || 0; - } - }); - } - } - - updateTopList('top-domains-card', '最常查询域名', stats.top_domains, 10); - updateTopList('top-query-types-card', '最常用查询类型', stats.top_query_types); - updateTopList('top-devices-card', '最活跃设备', stats.top_devices, 10); - updateTopList('top-dns-servers-card', '最常用DNS服务器', stats.top_dns_servers, 5); - }).catch(function (error) { - console.error('Failed to load DNS stats:', error); - var container = document.getElementById('dns-stats-container'); - if (!container) return; - if (!statsInitialized) { - container.innerHTML = ''; - container.appendChild(E('div', { 'class': 'error-state' }, - getTranslation('无法获取数据', language))); - } - }); - } // 更新查询记录 function updateQueries() { var container = document.getElementById('dns-queries-container'); - if (!container) return; + if (!container) return Promise.resolve(); // 检查是否有现有内容 var hasContent = container.querySelector('.bandix-table') || container.querySelector('.loading-state') || container.querySelector('.error-state'); @@ -1268,13 +527,16 @@ return view.extend({ var loadingDiv = container.querySelector('.loading-overlay'); if (hasContent) { if (!loadingDiv) { - var overlayBg = darkMode ? 'rgba(42, 42, 42, 0.9)' : 'rgba(255, 255, 255, 0.9)'; loadingDiv = E('div', { 'class': 'loading-overlay', - 'style': 'position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: ' + overlayBg + '; display: flex; align-items: center; justify-content: center; z-index: 10; color: ' + (darkMode ? '#e2e8f0' : '#1f2937') + ';' - }, getTranslation('正在加载数据...', language)); + 'style': 'position: absolute; top: 0; left: 0; right: 0; bottom: 0; display: flex; align-items: center; justify-content: center; z-index: 10;' + }, _('Loading data...')); container.style.position = 'relative'; container.appendChild(loadingDiv); + // 应用主题背景色 + setTimeout(function() { + applyThemeColors(); + }, 50); } else { loadingDiv.style.display = 'flex'; } @@ -1282,10 +544,14 @@ return view.extend({ // 如果没有内容,使用简单的加载状态 container.innerHTML = ''; container.appendChild(E('div', { 'class': 'loading-state' }, - getTranslation('正在加载数据...', language))); + _('Loading data...'))); + // 应用主题背景色 + setTimeout(function() { + applyThemeColors(); + }, 50); } - callGetDnsQueries( + return callGetDnsQueries( currentFilters.domain, currentFilters.device, currentFilters.is_query, @@ -1298,6 +564,12 @@ return view.extend({ loadingDiv.remove(); } + // 移除刷新蒙版 + var refreshOverlay = container.querySelector('.refresh-overlay'); + if (refreshOverlay) { + refreshOverlay.remove(); + } + // 恢复最小高度和定位 container.style.minHeight = ''; if (!hasContent) { @@ -1307,7 +579,11 @@ return view.extend({ if (!result || result.status !== 'success' || !result.data) { container.innerHTML = ''; container.appendChild(E('div', { 'class': 'error-state' }, - getTranslation('无法获取数据', language))); + _('Unable to fetch data'))); + // 应用主题背景色 + setTimeout(function() { + applyThemeColors(); + }, 50); return; } @@ -1318,7 +594,11 @@ return view.extend({ if (queries.length === 0) { container.innerHTML = ''; container.appendChild(E('div', { 'class': 'loading-state' }, - getTranslation('无数据', language))); + _('No Data'))); + // 应用主题背景色 + setTimeout(function() { + applyThemeColors(); + }, 50); return; } @@ -1336,14 +616,14 @@ return view.extend({ var table = E('table', { 'class': 'bandix-table' }, [ E('thead', {}, [ E('tr', {}, [ - E('th', { 'style': 'width: 180px;' }, getTranslation('时间', language)), - E('th', { 'style': 'width: 200px;' }, getTranslation('域名', language)), - E('th', { 'style': 'width: 100px;' }, getTranslation('查询类型', language)), - E('th', { 'style': 'width: 100px;' }, getTranslation('类型', language)), - E('th', { 'style': 'width: 100px;' }, getTranslation('响应时间', language)), - E('th', { 'style': 'width: 200px;' }, getTranslation('设备', language)), - E('th', { 'style': 'width: 140px;' }, getTranslation('DNS服务器', language)), - E('th', { 'style': 'width: 200px;' }, getTranslation('响应结果', language)) + E('th', { 'style': 'width: 180px;' }, _('Time')), + E('th', { 'style': 'width: 200px;' }, _('Domain')), + E('th', { 'style': 'width: 100px;' }, _('Query Type')), + E('th', { 'style': 'width: 100px;' }, _('Type')), + E('th', { 'style': 'width: 100px;' }, _('Response Time')), + E('th', { 'style': 'width: 200px;' }, _('Device')), + E('th', { 'style': 'width: 140px;' }, _('DNS Server')), + E('th', { 'style': 'width: 200px;' }, _('Response Result')) ]) ]), E('tbody', {}, queries.map(function (query) { @@ -1354,9 +634,9 @@ return view.extend({ E('td', {}, [ E('span', { 'class': 'query-badge ' + (query.is_query ? 'query' : 'response') - }, query.is_query ? getTranslation('查询', language) : getTranslation('响应', language)) + }, query.is_query ? _('Query') : _('Response')) ]), - E('td', {}, query.response_time_ms ? query.response_time_ms + ' ' + getTranslation('毫秒', language) : '-'), + E('td', {}, query.response_time_ms ? query.response_time_ms + ' ' + _('ms') : '-'), E('td', {}, formatDeviceName(query)), E('td', {}, formatDnsServer(query)), E('td', {}, [ @@ -1389,11 +669,11 @@ return view.extend({ var pagination = E('div', { 'class': 'pagination' }, [ E('div', { 'class': 'pagination-info' }, - getTranslation('第', language) + ' ' + currentPage + ' ' + getTranslation('页,共', language) + ' ' + totalPages + ',' + getTranslation('共', language) + ' ' + total + ' ' + getTranslation('条记录', language) + _('Page') + ' ' + currentPage + ' ' + _('of') + ' ' + totalPages + ',' + _('Total') + ' ' + total + ' ' + _('records') ), E('div', { 'class': 'pagination-controls' }, [ E('select', { - 'class': 'filter-select', + 'class': 'cbi-select', 'id': 'page-size-select', 'style': 'margin-right: 8px;' }, [ @@ -1403,15 +683,15 @@ return view.extend({ E('option', { 'value': '100', 'selected': pageSize === 100 }, '100') ]), E('button', { - 'class': 'btn btn-secondary', + 'class': 'cbi-button cbi-button-action', 'id': 'prev-page-btn', 'disabled': currentPage <= 1 ? 'disabled' : null - }, getTranslation('上一页', language)), + }, _('Previous')), E('button', { - 'class': 'btn btn-secondary', + 'class': 'cbi-button cbi-button-action', 'id': 'next-page-btn', 'disabled': currentPage >= totalPages ? 'disabled' : null - }, getTranslation('下一页', language)) + }, _('Next')) ]) ]); @@ -1470,16 +750,193 @@ return view.extend({ console.error('Failed to load DNS queries:', error); var container = document.getElementById('dns-queries-container'); if (!container) return; + + // 移除刷新蒙版 + var refreshOverlay = container.querySelector('.refresh-overlay'); + if (refreshOverlay) { + refreshOverlay.remove(); + } + container.innerHTML = ''; container.appendChild(E('div', { 'class': 'error-state' }, - getTranslation('无法获取数据', language))); + _('Unable to fetch data'))); + // 应用主题背景色 + setTimeout(function() { + applyThemeColors(); + }, 50); }); } + // 更新统计信息卡片 + function updateStats() { + var statsGrid = document.getElementById('dns-stats-grid'); + if (!statsGrid) return Promise.resolve(); + + return callGetDnsStats().then(function (result) { + if (!result || result.status !== 'success' || !result.data || !result.data.stats) { + statsGrid.innerHTML = ''; + return; + } + + var stats = result.data.stats; + statsGrid.innerHTML = ''; + + // 格式化时间范围 + function formatTimeRange(start, end, durationMinutes) { + if (!start || !end) return '-'; + var startDate = new Date(start); + var endDate = new Date(end); + var startStr = startDate.toLocaleString('zh-CN', { + month: '2-digit', + day: '2-digit', + hour: '2-digit', + minute: '2-digit' + }); + var endStr = endDate.toLocaleString('zh-CN', { + month: '2-digit', + day: '2-digit', + hour: '2-digit', + minute: '2-digit' + }); + return startStr + ' - ' + endStr + ' (' + durationMinutes + ' ' + _('minutes') + ')'; + } + + // 格式化百分比 + function formatPercent(value) { + if (typeof value !== 'number') return '-'; + return (value * 100).toFixed(2) + '%'; + } + + // 总查询数卡片(合并成功率) + var totalQueriesCard = E('div', { 'class': 'cbi-section' }, [ + E('div', { 'class': 'stats-card-title' }, _('Total Queries')), + E('div', { 'class': 'stats-card-main-value' }, (stats.total_queries || 0).toLocaleString()), + E('div', { 'class': 'stats-card-details' }, [ + E('div', { 'class': 'stats-detail-row' }, [ + E('span', { 'class': 'stats-detail-label' }, _('Success Rate') + ':'), + E('span', { 'class': 'stats-detail-value' }, formatPercent(stats.success_rate || 0)) + ]), + E('div', { 'class': 'stats-detail-row' }, [ + E('span', { 'class': 'stats-detail-label' }, _('Success') + ':'), + E('span', { 'class': 'stats-detail-value' }, (stats.success_count || 0).toLocaleString()) + ]), + E('div', { 'class': 'stats-detail-row' }, [ + E('span', { 'class': 'stats-detail-label' }, _('Failure') + ':'), + E('span', { 'class': 'stats-detail-value' }, (stats.failure_count || 0).toLocaleString()) + ]) + ]) + ]); + + statsGrid.appendChild(totalQueriesCard); + + // 响应时间卡片 + statsGrid.appendChild(E('div', { 'class': 'cbi-section' }, [ + E('div', { 'class': 'stats-card-title' }, _('Response Time')), + E('div', { 'class': 'stats-card-main-value' }, (stats.avg_response_time_ms || 0).toFixed(2) + ' ' + _('ms')), + E('div', { 'class': 'stats-card-details' }, [ + E('div', { 'class': 'stats-detail-row' }, [ + E('span', { 'class': 'stats-detail-label' }, _('Min Response Time') + ':'), + E('span', { 'class': 'stats-detail-value' }, (stats.min_response_time_ms || 0) + ' ' + _('ms')) + ]), + E('div', { 'class': 'stats-detail-row' }, [ + E('span', { 'class': 'stats-detail-label' }, _('Max Response Time') + ':'), + E('span', { 'class': 'stats-detail-value' }, (stats.max_response_time_ms || 0) + ' ' + _('ms')) + ]), + E('div', { 'class': 'stats-detail-row' }, [ + E('span', { 'class': 'stats-detail-label' }, _('Latest Response Time') + ':'), + E('span', { 'class': 'stats-detail-value' }, (stats.latest_response_time_ms || 0) + ' ' + _('ms')) + ]) + ]) + ])); + + // 最常用查询类型卡片 + if (stats.top_query_types && stats.top_query_types.length > 0) { + var queryTypesList = stats.top_query_types.map(function(item) { + return E('div', { 'class': 'stats-list-item' }, [ + E('span', { 'class': 'stats-list-name' }, item.name || '-'), + E('span', { 'class': 'stats-list-count' }, (item.count || 0).toLocaleString()) + ]); + }); + + var queryTypesCard = E('div', { 'class': 'cbi-section' }, [ + E('div', { 'class': 'stats-card-title' }, _('Top Query Types')), + E('div', { 'class': 'stats-card-details' }) + ]); + + queryTypesList.forEach(function(item) { + queryTypesCard.querySelector('.stats-card-details').appendChild(item); + }); + + statsGrid.appendChild(queryTypesCard); + } + + // 最常查询域名卡片 + if (stats.top_domains && stats.top_domains.length > 0) { + var domainsList = stats.top_domains.map(function(item) { + return E('div', { 'class': 'stats-list-item' }, [ + E('span', { 'class': 'stats-list-name' }, item.name || '-'), + E('span', { 'class': 'stats-list-count' }, (item.count || 0).toLocaleString()) + ]); + }); + + statsGrid.appendChild(E('div', { 'class': 'cbi-section' }, [ + E('div', { 'class': 'stats-card-title' }, _('Top Domains')), + E('div', { 'class': 'stats-card-details' }, domainsList) + ])); + } + + // 最活跃设备卡片 + if (stats.top_devices && stats.top_devices.length > 0) { + var devicesList = stats.top_devices.map(function(item) { + return E('div', { 'class': 'stats-list-item' }, [ + E('span', { 'class': 'stats-list-name' }, item.name || '-'), + E('span', { 'class': 'stats-list-count' }, (item.count || 0).toLocaleString()) + ]); + }); + + statsGrid.appendChild(E('div', { 'class': 'cbi-section' }, [ + E('div', { 'class': 'stats-card-title' }, _('Top Devices')), + E('div', { 'class': 'stats-card-details' }, devicesList) + ])); + } + + // 最常用DNS服务器卡片 + if (stats.top_dns_servers && stats.top_dns_servers.length > 0) { + var serversList = stats.top_dns_servers.map(function(item) { + return E('div', { 'class': 'stats-list-item' }, [ + E('span', { 'class': 'stats-list-name' }, item.name || '-'), + E('span', { 'class': 'stats-list-count' }, (item.count || 0).toLocaleString()) + ]); + }); + + statsGrid.appendChild(E('div', { 'class': 'cbi-section' }, [ + E('div', { 'class': 'stats-card-title' }, _('Top DNS Servers')), + E('div', { 'class': 'stats-card-details' }, serversList) + ])); + } + + // 应用主题颜色 + setTimeout(function() { + applyThemeColors(); + }, 50); + }).catch(function (error) { + console.error('Failed to load DNS stats:', error); + var statsGrid = document.getElementById('dns-stats-grid'); + if (statsGrid) { + statsGrid.innerHTML = ''; + } + }); + } + // 初始化数据加载 - 延迟执行确保 DOM 元素已添加 setTimeout(function () { updateStats(); updateQueries(); + + // 轮询更新统计数据(每5秒) + poll.add(function() { + return updateStats(); + }, 1); // 实时搜索功能(带防抖) var domainFilter = document.getElementById('domain-filter'); @@ -1519,14 +976,152 @@ return view.extend({ // 刷新按钮 if (refreshBtn) { refreshBtn.addEventListener('click', function () { + // 同时刷新统计数据和查询记录 + updateStats(); + + var container = document.getElementById('dns-queries-container'); + if (!container) { + updateQueries(); + return; + } + + // 确保容器是相对定位 + container.style.position = 'relative'; + + // 移除旧的蒙版 + var oldOverlay = container.querySelector('.refresh-overlay'); + if (oldOverlay) { + oldOverlay.remove(); + } + + // 创建新的刷新蒙版 + var overlay = E('div', { + 'class': 'refresh-overlay' + }); + container.appendChild(overlay); + + // 应用主题背景色到蒙版 + setTimeout(function() { + applyThemeColors(); + }, 50); + + // 刷新数据(蒙版会在 updateQueries 中自动移除) updateQueries(); }); } } - }, 100); + }, 10); - // 轮询更新统计信息(每1秒),查询记录不自动刷新 - poll.add(updateStats, 1); + // 自动适应主题背景色和文字颜色的函数 + function applyThemeColors() { + try { + var mainElement = document.querySelector('.main') || document.body; + var computedStyle = window.getComputedStyle(mainElement); + var bgColor = computedStyle.backgroundColor; + + // 如果父元素有背景色,应用到容器和卡片 + if (bgColor && bgColor !== 'rgba(0, 0, 0, 0)' && bgColor !== 'transparent') { + var containerEl = document.querySelector('.bandix-dns-container'); + if (containerEl) { + containerEl.style.backgroundColor = bgColor; + } + + + // 应用到表格表头 + var tableHeaders = document.querySelectorAll('.bandix-table th'); + tableHeaders.forEach(function(th) { + th.style.backgroundColor = bgColor; + }); + + // 应用到 Response Result 字段的 badge + var badges = document.querySelectorAll('.response-ip-badge'); + badges.forEach(function(badge) { + badge.style.backgroundColor = bgColor; + }); + + // 应用到搜索框(不包括 cbi-select,因为它使用官方样式) + var inputs = document.querySelectorAll('.filter-input'); + inputs.forEach(function(input) { + input.style.backgroundColor = bgColor; + }); + + // 应用到统计卡片 + var statsCards = document.querySelectorAll('.stats-grid .cbi-section'); + statsCards.forEach(function(card) { + card.style.backgroundColor = bgColor; + }); + + // 应用到加载状态和错误状态 + var loadingStates = document.querySelectorAll('.loading-state'); + loadingStates.forEach(function(el) { + el.style.backgroundColor = bgColor; + }); + + var errorStates = document.querySelectorAll('.error-state'); + errorStates.forEach(function(el) { + el.style.backgroundColor = bgColor; + }); + + // 应用到加载遮罩层(使用半透明背景) + var loadingOverlays = document.querySelectorAll('.loading-overlay'); + loadingOverlays.forEach(function(el) { + // 将背景色转换为 rgba,并添加透明度 + var rgb = bgColor.match(/\d+/g); + if (rgb && rgb.length >= 3) { + el.style.backgroundColor = 'rgba(' + rgb[0] + ', ' + rgb[1] + ', ' + rgb[2] + ', 0.8)'; + } + }); + + // 应用到刷新蒙版(使用半透明背景和模糊效果) + var refreshOverlays = document.querySelectorAll('.refresh-overlay'); + refreshOverlays.forEach(function(el) { + // 将背景色转换为 rgba,并添加透明度 + var rgb = bgColor.match(/\d+/g); + if (rgb && rgb.length >= 3) { + el.style.backgroundColor = 'rgba(' + rgb[0] + ', ' + rgb[1] + ', ' + rgb[2] + ', 0.6)'; + } + }); + } + + // 检测文字颜色并应用 + var textColor = computedStyle.color; + if (textColor && textColor !== 'rgba(0, 0, 0, 0)') { + var containerEl = document.querySelector('.bandix-dns-container'); + if (containerEl) { + containerEl.style.color = textColor; + } + + // 应用到搜索框的文字颜色(不包括 cbi-select) + var inputs = document.querySelectorAll('.filter-input'); + inputs.forEach(function(input) { + input.style.color = textColor; + }); + } + } catch (e) { + // 如果检测失败,使用默认值 + console.log('Theme adaptation:', e); + } + } + + // 初始应用主题颜色 + setTimeout(applyThemeColors, 100); + + // 监听 DOM 变化,自动应用到新创建的元素 + if (typeof MutationObserver !== 'undefined') { + var observer = new MutationObserver(function(mutations) { + applyThemeColors(); + }); + + setTimeout(function() { + var container = document.querySelector('.bandix-dns-container'); + if (container) { + observer.observe(container, { + childList: true, + subtree: true + }); + } + }, 200); + } return container; } diff --git a/luci-app-bandix/htdocs/luci-static/resources/view/bandix/index.js b/luci-app-bandix/htdocs/luci-static/resources/view/bandix/index.js index 0cda0ea..3a2f108 100644 --- a/luci-app-bandix/htdocs/luci-static/resources/view/bandix/index.js +++ b/luci-app-bandix/htdocs/luci-static/resources/view/bandix/index.js @@ -4,663 +4,41 @@ 'require uci'; 'require rpc'; 'require poll'; -'use strict'; +// 暗色模式检测已改为使用 CSS 媒体查询 @media (prefers-color-scheme: dark) -const translations = { - 'zh-cn': { - 'Bandix 流量监控': 'Bandix 流量监控', - '正在加载数据...': '正在加载数据...', - '无法获取数据': '无法获取数据', - '无法获取历史数据': '无法获取历史数据', - '主机名': '主机名', - 'IP地址': 'IP地址', - 'MAC地址': 'MAC地址', - '下载速度': '下载速度', - '上传速度': '上传速度', - '总下载量': '总下载量', - '总上传量': '总上传量', - '下载限速': '下载限速', - '上传限速': '上传限速', - '界面语言': '界面语言', - '选择 Bandix 流量监控的显示语言': '选择 Bandix 流量监控的显示语言', - '设备信息': '设备信息', - '设备列表': '设备列表', - 'LAN 流量': 'LAN 流量', - 'WAN 流量': 'WAN 流量', - '限速设置': '限速设置', - '操作': '操作', - '在线设备': '在线设备', - '仅限WAN 流量': '仅限WAN 流量', - '设置': '设置', - '设备设置': '设备设置', - '限速设置': '限速设置', - '取消限速': '取消限速', - '保存': '保存', - '取消': '取消', - '设置限速': '设置限速', - '设备': '设备', - '上传限速': '上传限速', - '下载限速': '下载限速', - '主机名': '主机名', - '设置主机名': '设置主机名', - '请输入主机名': '请输入主机名', - '主机名设置成功': '主机名设置成功', - '主机名设置失败': '主机名设置失败', - '无限制': '无限制', - '设置成功': '设置成功', - '设置失败': '设置失败', - '请输入有效的速度值': '请输入有效的速度值', - '速度值必须大于0': '速度值必须大于0', - '保存中...': '保存中...', - '限速功能仅对 WAN 流量生效。': '限速功能仅对 WAN 流量生效。', - '提示:输入 0 表示无限制': '提示:输入 0 表示无限制', - '历史流量趋势': '历史流量趋势', - '选择设备': '选择设备', - '所有设备': '所有设备', - '时间范围': '时间范围', - '最近5分钟': '最近5分钟', - '最近30分钟': '最近30分钟', - '最近2小时': '最近2小时', - '类型': '类型', - '总流量': '总流量', - 'LAN 流量': 'LAN 流量', - 'WAN 流量': 'WAN 流量', - '刷新': '刷新', - '上传速率': '上传速率', - '下载速率': '下载速率', - '最近': '最近', - '秒': '秒', - '分钟': '分钟', - '小时': '小时', - '天': '天', - '周': '周', - '其他速率': '其他速率', - '累计流量': '累计流量', - '总上传': '总上传', - '总下载': '总下载', - 'LAN 已上传': 'LAN 已上传', - 'LAN 已下载': 'LAN 已下载', - 'WAN 已上传': 'WAN 已上传', - 'WAN 已下载': 'WAN 已下载', - '总上传速率': '总上传速率', - '总下载速率': '总下载速率', - 'LAN 上传速率': 'LAN 上传速率', - 'LAN 下载速率': 'LAN 下载速率', - 'WAN 上传速率': 'WAN 上传速率', - 'WAN 下载速率': 'WAN 下载速率', - '从未上线': '从未上线', - '刚刚': '刚刚', - '分钟前': '分钟前', - '小时前': '小时前', - '天前': '天前', - '个月前': '个月前', - '年前': '年前', - '最后上线': '最后上线', - '缩放': '缩放', - '排序方式': '排序方式', - '在线状态': '在线状态', - '总流量': '总流量', - '升序': '升序', - '降序': '降序', - '按速度排序': '按速度排序', - '按用量排序': '按用量排序', - '简易模式': '简易模式', - '详细模式': '详细模式' - }, - 'zh-tw': { - 'Bandix 流量监控': 'Bandix 流量監控', - '正在加载数据...': '正在載入資料...', - '无法获取数据': '無法獲取資料', - '无法获取历史数据': '無法獲取歷史資料', - '主机名': '主機名', - 'IP地址': 'IP地址', - 'MAC地址': 'MAC地址', - '下载速度': '下載速度', - '上传速度': '上傳速度', - '总下载量': '總下載量', - '总上传量': '總上傳量', - '下载限速': '下載限速', - '上传限速': '上傳限速', - '界面语言': '介面語言', - '选择 Bandix 流量监控的显示语言': '選擇 Bandix 流量監控的顯示語言', - '设备信息': '設備資訊', - '设备列表': '設備列表', - 'LAN 流量': '局域網流量', - 'WAN 流量': '跨網路流量', - '限速设置': '限速設定', - '操作': '操作', - '在线设备': '線上設備', - '仅限WAN 流量': '僅限跨網路', - '设置': '設定', - '设备设置': '設備設定', - '限速设置': '限速設定', - '取消限速': '取消限速', - '保存': '儲存', - '取消': '取消', - '设置限速': '設定限速', - '设备': '設備', - '上传限速': '上傳限速', - '下载限速': '下載限速', - '主机名': '主機名', - '设置主机名': '設定主機名', - '请输入主机名': '請輸入主機名', - '主机名设置成功': '主機名設定成功', - '主机名设置失败': '主機名設定失敗', - '无限制': '無限制', - '设置成功': '設定成功', - '设置失败': '設定失敗', - '请输入有效的速度值': '請輸入有效的速度值', - '速度值必须大于0': '速度值必須大於0', - '保存中...': '儲存中...', - '限速功能仅对 WAN 流量生效。': '限速功能僅對跨網路流量生效。', - '提示:输入 0 表示无限制': '提示:輸入 0 表示無限制', - '历史流量趋势': '歷史流量趨勢', - '选择设备': '選擇設備', - '所有设备': '所有設備', - '时间范围': '時間範圍', - '最近5分钟': '最近5分鐘', - '最近30分钟': '最近30分鐘', - '最近2小时': '最近2小時', - '类型': '類型', - '总流量': '總流量', - 'LAN 流量': '局域網', - 'WAN 流量': '跨網路', - '刷新': '重新整理', - '上传速率': '上傳速率', - '下载速率': '下載速率', - '最近': '最近', - '秒': '秒', - '分钟': '分鐘', - '小时': '小時', - '天': '天', - '周': '週', - '其他速率': '其他速率', - '累计流量': '累計流量', - '总上传': '總上傳', - '总下载': '總下載', - 'LAN 已上传': 'LAN 已上傳', - 'LAN 已下载': 'LAN 已下載', - 'WAN 已上传': 'WAN 已上傳', - 'WAN 已下载': 'WAN 已下載', - '总上传速率': '總上傳速率', - '总下载速率': '總下載速率', - 'LAN 上传速率': '局域上傳速率', - 'LAN 下载速率': '局域下載速率', - 'WAN 上传速率': '跨網上傳速率', - 'WAN 下载速率': '跨網下載速率', - '从未上线': '從未上線', - '刚刚': '剛剛', - '分钟前': '分鐘前', - '小时前': '小時前', - '天前': '天前', - '个月前': '個月前', - '年前': '年前', - '最后上线': '最後上線', - '缩放': '縮放', - '排序方式': '排序方式', - '在线状态': '線上狀態', - '总流量': '總流量', - '升序': '升序', - '降序': '降序', - '按速度排序': '按速度排序', - '按用量排序': '按用量排序', - '简易模式': '簡易模式', - '详细模式': '詳細模式' - }, - 'en': { - 'Bandix 流量监控': 'Bandix Traffic Monitor', - '正在加载数据...': 'Loading data...', - '无法获取数据': 'Unable to fetch data', - '无法获取历史数据': 'Unable to fetch history data', - '主机名': 'Hostname', - 'IP地址': 'IP Address', - 'MAC地址': 'MAC Address', - '下载速度': 'Download Speed', - '上传速度': 'Upload Speed', - '总下载量': 'Total Download', - '总上传量': 'Total Upload', - '下载限速': 'Download Limit', - '上传限速': 'Upload Limit', - '界面语言': 'Interface Language', - '选择 Bandix 流量监控的显示语言': 'Select the display language for Bandix Traffic Monitor', - '设备信息': 'Device Info', - '设备列表': 'Device List', - 'LAN 流量': 'LAN Traffic', - 'WAN 流量': 'WAN Traffic', - '限速设置': 'Rate Limit', - '操作': 'Actions', - '在线设备': 'Online Devices', - '仅限WAN 流量': 'WAN Only', - '设置': 'Settings', - '设备设置': 'Device Settings', - '限速设置': 'Rate Limit Settings', - '取消限速': 'Remove Rate Limit', - '保存': 'Save', - '取消': 'Cancel', - '设置限速': 'Set Rate Limit', - '设备': 'Device', - '上传限速': 'Upload Limit', - '下载限速': 'Download Limit', - '主机名': 'Hostname', - '设置主机名': 'Set Hostname', - '请输入主机名': 'Please enter hostname', - '主机名设置成功': 'Hostname set successfully', - '主机名设置失败': 'Failed to set hostname', - '无限制': 'Unlimited', - '设置成功': 'Settings saved successfully', - '设置失败': 'Failed to save settings', - '请输入有效的速度值': 'Please enter a valid speed value', - '速度值必须大于0': 'Speed value must be greater than 0', - '保存中...': 'Saving...', - '限速功能仅对 WAN 流量生效。': 'Rate limiting only applies to WAN traffic.', - '提示:输入 0 表示无限制': 'Tip: Enter 0 for unlimited', - '历史流量趋势': 'Traffic History', - '选择设备': 'Select Device', - '所有设备': 'All Devices', - '时间范围': 'Time Range', - '最近5分钟': 'Last 5 minutes', - '最近30分钟': 'Last 30 minutes', - '最近2小时': 'Last 2 hours', - '类型': 'Type', - '总流量': 'Total', - 'LAN 流量': 'LAN', - 'WAN 流量': 'WAN', - '刷新': 'Refresh', - '上传速率': 'Upload Rate', - '下载速率': 'Download Rate', - '最近': 'Last', - '秒': 'second', - '分钟': 'minute', - '小时': 'hour', - '天': 'day', - '周': 'week', - '其他速率': 'Other Rates', - '累计流量': 'Cumulative', - '总上传': 'Total Uploaded', - '总下载': 'Total Downloaded', - 'LAN 已上传': 'LAN Uploaded', - 'LAN 已下载': 'LAN Downloaded', - 'WAN 已上传': 'WAN Uploaded', - 'WAN 已下载': 'WAN Downloaded', - '总上传速率': 'Total Upload', - '总下载速率': 'Total Download', - 'LAN 上传速率': 'LAN Upload', - 'LAN 下载速率': 'LAN Download', - 'WAN 上传速率': 'WAN Upload', - 'WAN 下载速率': 'WAN Download', - '从未上线': 'Never Online', - '刚刚': 'Just Now', - '分钟前': 'min ago', - '小时前': 'h ago', - '天前': 'days ago', - '个月前': 'months ago', - '年前': 'years ago', - '最后上线': 'Last Online', - '缩放': 'Zoom', - '排序方式': 'Sort By', - '在线状态': 'Online Status', - '总流量': 'Total Traffic', - '升序': 'Ascending', - '降序': 'Descending', - '按速度排序': 'Sort by Speed', - '按用量排序': 'Sort by Traffic', - '简易模式': 'Simple Mode', - '详细模式': 'Detailed Mode' - }, - 'fr': { - 'Bandix 流量监控': 'Moniteur de Trafic Bandix', - '正在加载数据...': 'Chargement des données...', - '无法获取数据': 'Impossible de récupérer les données', - '无法获取历史数据': 'Impossible de récupérer les données historiques', - '主机名': 'Nom d\'hôte', - 'IP地址': 'Adresse IP', - 'MAC地址': 'Adresse MAC', - '下载速度': 'Vitesse de téléchargement', - '上传速度': 'Vitesse de téléversement', - '总下载量': 'Téléchargement total', - '总上传量': 'Téléversement total', - '下载限速': 'Limite de téléchargement', - '上传限速': 'Limite de téléversement', - '界面语言': 'Langue de l\'interface', - '选择 Bandix 流量监控的显示语言': 'Sélectionner la langue d\'affichage pour le Moniteur de Trafic Bandix', - '设备信息': 'Informations sur l\'appareil', - '设备列表': 'Liste des appareils', - 'LAN 流量': 'Trafic LAN', - 'WAN 流量': 'Trafic WAN', - '限速设置': 'Limitation de débit', - '操作': 'Actions', - '在线设备': 'Appareils en ligne', - '仅限WAN 流量': 'WAN uniquement', - '设置': 'Paramètres', - '设备设置': 'Paramètres de l\'appareil', - '限速设置': 'Paramètres de limitation', - '取消限速': 'Supprimer la limitation', - '保存': 'Enregistrer', - '取消': 'Annuler', - '设置限速': 'Définir la limitation', - '设备': 'Appareil', - '上传限速': 'Limite de téléversement', - '下载限速': 'Limite de téléchargement', - '无限制': 'Illimité', - '设置成功': 'Paramètres enregistrés avec succès', - '设置失败': 'Échec de l\'enregistrement des paramètres', - '请输入有效的速度值': 'Veuillez entrer une valeur de vitesse valide', - '速度值必须大于0': 'La valeur de vitesse doit être supérieure à 0', - '保存中...': 'Enregistrement...', - '限速功能仅对 WAN 流量生效。': 'La limitation de débit ne s\'applique qu\'au trafic WAN.', - '提示:输入 0 表示无限制': 'Conseil : Entrez 0 pour illimité', - '历史流量趋势': 'Historique du trafic', - '选择设备': 'Sélectionner l\'appareil', - '所有设备': 'Tous les appareils', - '时间范围': 'Plage de temps', - '最近5分钟': '5 dernières minutes', - '最近30分钟': '30 dernières minutes', - '最近2小时': '2 dernières heures', - '类型': 'Type', - '总流量': 'Total', - 'LAN 流量': 'LAN', - 'WAN 流量': 'WAN', - '刷新': 'Actualiser', - '上传速率': 'Débit montant', - '下载速率': 'Débit descendant', - '最近': 'Dernières', - '秒': 'seconde', - '分钟': 'minute', - '小时': 'heure', - '天': 'jour', - '周': 'semaine', - '其他速率': 'Autres débits', - '累计流量': 'Trafic cumulé', - '总上传': 'Total téléversé', - '总下载': 'Total téléchargé', - 'LAN 已上传': 'LAN Téléversé', - 'LAN 已下载': 'LAN Téléchargé', - 'WAN 已上传': 'WAN Téléversé', - 'WAN 已下载': 'WAN Téléchargé', - '总上传速率': 'Vitesse de téléversement totale', - '总下载速率': 'Vitesse de téléchargement totale', - 'LAN 上传速率': 'Vitesse de téléversement LAN', - 'LAN 下载速率': 'Vitesse de téléchargement LAN', - 'WAN 上传速率': 'Vitesse de téléversement WAN', - 'WAN 下载速率': 'Vitesse de téléchargement WAN', - '从未上线': 'Jamais en ligne', - '刚刚': 'À l\'instant', - '分钟前': 'min', - '小时前': 'h', - '天前': 'j', - '个月前': 'mois', - '年前': 'an', - '最后上线': 'Dernière connexion', - '缩放': 'Zoom', - '排序方式': 'Trier par', - '在线状态': 'Statut en ligne', - '总流量': 'Trafic total', - '升序': 'Croissant', - '降序': 'Décroissant', - '按速度排序': 'Trier par vitesse', - '按用量排序': 'Trier par volume', - '简易模式': 'Mode simple', - '详细模式': 'Mode détaillé' - }, - 'ja': { - 'Bandix 流量监控': 'Bandix トラフィックモニター', - '正在加载数据...': 'データを読み込み中...', - '无法获取数据': 'データを取得できません', - '无法获取历史数据': '履歴データを取得できません', - '主机名': 'ホスト名', - 'IP地址': 'IPアドレス', - 'MAC地址': 'MACアドレス', - '下载速度': 'ダウンロード速度', - '上传速度': 'アップロード速度', - '总下载量': '総ダウンロード量', - '总上传量': '総アップロード量', - '下载限速': 'ダウンロード制限', - '上传限速': 'アップロード制限', - '界面语言': 'インターフェース言語', - '选择 Bandix 流量监控的显示语言': 'Bandix トラフィックモニターの表示言語を選択', - '设备信息': 'デバイス情報', - '设备列表': 'デバイスリスト', - 'LAN 流量': 'LAN トラフィック', - 'WAN 流量': 'WAN トラフィック', - '限速设置': '速度制限', - '操作': '操作', - '在线设备': 'オンラインデバイス', - '仅限WAN 流量': 'WAN のみ', - '设置': '設定', - '设备设置': 'デバイス設定', - '限速设置': '速度制限設定', - '取消限速': '速度制限を削除', - '保存': '保存', - '取消': 'キャンセル', - '设置限速': '速度制限を設定', - '设备': 'デバイス', - '上传限速': 'アップロード制限', - '下载限速': 'ダウンロード制限', - '无限制': '無制限', - '设置成功': '設定が正常に保存されました', - '设置失败': '設定の保存に失敗しました', - '请输入有效的速度值': '有効な速度値を入力してください', - '速度值必须大于0': '速度値は0より大きい必要があります', - '保存中...': '保存中...', - '限速功能仅对 WAN 流量生效。': '速度制限はWANトラフィックにのみ適用されます。', - '提示:输入 0 表示无限制': 'ヒント:0を入力すると無制限になります', - '历史流量趋势': 'トラフィック履歴', - '选择设备': 'デバイスを選択', - '所有设备': 'すべてのデバイス', - '时间范围': '時間範囲', - '最近5分钟': '最近5分', - '最近30分钟': '最近30分', - '最近2小时': '最近2時間', - '类型': 'タイプ', - '总流量': '合計', - 'LAN 流量': 'LAN', - 'WAN 流量': 'WAN', - '刷新': '更新', - '上传速率': 'アップロードレート', - '下载速率': 'ダウンロードレート', - '最近': '直近', - '秒': '秒', - '分钟': '分', - '小时': '時間', - '天': '日', - '周': '週間', - '其他速率': 'その他の速度', - '累计流量': '累計トラフィック', - '总上传': '総アップロード', - '总下载': '総ダウンロード', - 'LAN 已上传': 'LAN アップロード済み', - 'LAN 已下载': 'LAN ダウンロード済み', - 'WAN 已上传': 'WAN アップロード済み', - 'WAN 已下载': 'WAN ダウンロード済み', - '总上传速率': '総アップロード速度', - '总下载速率': '総ダウンロード速度', - 'LAN 上传速率': 'LAN アップロード速度', - 'LAN 下载速率': 'LAN ダウンロード速度', - 'WAN 上传速率': 'WAN アップロード速度', - 'WAN 下载速率': 'WAN ダウンロード速度', - '从未上线': 'オンライン未経験', - '刚刚': '今', - '分钟前': '分前', - '小时前': '時間前', - '天前': '日前', - '个月前': 'ヶ月前', - '年前': '年前', - '最后上线': '最終オンライン', - '缩放': 'ズーム', - '排序方式': '並び順', - '在线状态': 'オンライン状態', - '总流量': '総トラフィック', - '升序': '昇順', - '降序': '降順', - '按速度排序': '速度順', - '按用量排序': '使用量順', - '简易模式': 'シンプルモード', - '详细模式': '詳細モード' - }, - 'ru': { - 'Bandix 流量监控': 'Монитор Трафика Bandix', - '正在加载数据...': 'Загрузка данных...', - '无法获取数据': 'Не удалось получить данные', - '无法获取历史数据': 'Не удалось получить исторические данные', - '主机名': 'Имя хоста', - 'IP地址': 'IP-адрес', - 'MAC地址': 'MAC-адрес', - '下载速度': 'Скорость загрузки', - '上传速度': 'Скорость выгрузки', - '总下载量': 'Общая загрузка', - '总上传量': 'Общая выгрузка', - '下载限速': 'Ограничение загрузки', - '上传限速': 'Ограничение выгрузки', - '界面语言': 'Язык интерфейса', - '选择 Bandix 流量监控的显示语言': 'Выберите язык отображения для Монитора Трафика Bandix', - '设备信息': 'Информация об устройстве', - '设备列表': 'Список устройств', - 'LAN 流量': 'Трафик LAN', - 'WAN 流量': 'Трафик WAN', - '限速设置': 'Ограничение скорости', - '操作': 'Действия', - '在线设备': 'Онлайн устройства', - '仅限WAN 流量': 'Только WAN', - '设置': 'Настройки', - '设备设置': 'Настройки устройства', - '限速设置': 'Настройки ограничения', - '取消限速': 'Удалить ограничение', - '保存': 'Сохранить', - '取消': 'Отмена', - '设置限速': 'Установить ограничение', - '设备': 'Устройство', - '上传限速': 'Ограничение выгрузки', - '下载限速': 'Ограничение загрузки', - '无限制': 'Без ограничений', - '设置成功': 'Настройки успешно сохранены', - '设置失败': 'Не удалось сохранить настройки', - '请输入有效的速度值': 'Пожалуйста, введите допустимое значение скорости', - '速度值必须大于0': 'Значение скорости должно быть больше 0', - '保存中...': 'Сохранение...', - '限速功能仅对 WAN 流量生效。': 'Ограничение скорости применяется только к WAN-трафику.', - '提示:输入 0 表示无限制': 'Совет: Введите 0 для снятия ограничений', - '历史流量趋势': 'История трафика', - '选择设备': 'Выбрать устройство', - '所有设备': 'Все устройства', - '时间范围': 'Временной диапазон', - '最近5分钟': 'Последние 5 минут', - '最近30分钟': 'Последние 30 минут', - '最近2小时': 'Последние 2 часа', - '类型': 'Тип', - '总流量': 'Общий', - 'LAN 流量': 'LAN', - 'WAN 流量': 'WAN', - '刷新': 'Обновить', - '上传速率': 'Скорость отправки', - '下载速率': 'Скорость загрузки', - '最近': 'За последние', - '秒': 'сек.', - '分钟': 'мин.', - '小时': 'ч.', - '天': 'дн.', - '周': 'нед.', - '其他速率': 'Другие скорости', - '累计流量': 'Суммарный трафик', - '总上传': 'Всего отправлено', - '总下载': 'Всего получено', - 'LAN 已上传': 'LAN Отправлено', - 'LAN 已下载': 'LAN Получено', - 'WAN 已上传': 'WAN Отправлено', - 'WAN 已下载': 'WAN Получено', - '总上传速率': 'Общая скорость отправки', - '总下载速率': 'Общая скорость загрузки', - 'LAN 上传速率': 'Скорость отправки LAN', - 'LAN 下载速率': 'Скорость загрузки LAN', - 'WAN 上传速率': 'Скорость отправки WAN', - 'WAN 下载速率': 'Скорость загрузки WAN', - '从未上线': 'Никогда не был онлайн', - '刚刚': 'Только что', - '分钟前': 'мин назад', - '小时前': 'ч назад', - '天前': 'дн назад', - '个月前': 'мес назад', - '年前': 'лет назад', - '最后上线': 'Последний онлайн', - '缩放': 'Масштаб', - '排序方式': 'Сортировка', - '在线状态': 'Статус онлайн', - '总流量': 'Общий трафик', - '升序': 'По возрастанию', - '降序': 'По убыванию', - '按速度排序': 'По скорости', - '按用量排序': 'По объёму', - '简易模式': 'Простой режим', - '详细模式': 'Подробный режим' - } -}; - -function getTranslation(key, language) { - return translations[language]?.[key] || key; -} - -function getSystemLanguage() { - // 尝试获取 LuCI 的语言设置 - var luciLang = uci.get('luci', 'main', 'lang'); - - if (luciLang && translations[luciLang]) { - return luciLang; - } - - // 如果没有 LuCI 语言设置,尝试获取浏览器语言作为回退 - var systemLang = document.documentElement.lang || 'en'; - - if (translations[systemLang]) { - return systemLang; - } - - // 最终回退到英语 - return 'en'; -} - -function isDarkMode() { - // 首先检查用户设置的主题 - var userTheme = uci.get('bandix', 'general', 'theme'); - if (userTheme) { - if (userTheme === 'dark') { - return true; - } else if (userTheme === 'light') { - return false; - } - // 如果是 'auto',继续检查系统主题 - } - +// 检测主题类型:返回 'wide'(宽主题,如 Argon)或 'narrow'(窄主题,如 Bootstrap) +function getThemeType() { // 获取 LuCI 主题设置 var mediaUrlBase = uci.get('luci', 'main', 'mediaurlbase'); - if (mediaUrlBase && mediaUrlBase.toLowerCase().includes('dark')) { - return true; + + if (!mediaUrlBase) { + // 如果无法获取,尝试从 DOM 中检测 + var linkTags = document.querySelectorAll('link[rel="stylesheet"]'); + for (var i = 0; i < linkTags.length; i++) { + var href = linkTags[i].getAttribute('href') || ''; + if (href.toLowerCase().includes('argon')) { + return 'wide'; + } + } + // 默认返回窄主题 + return 'narrow'; } - // 如果是 argon 主题,检查 argon 配置 - if (mediaUrlBase && mediaUrlBase.toLowerCase().includes('argon')) { - var argonMode = uci.get('argon', '@global[0]', 'mode'); - if (argonMode) { - if (argonMode.toLowerCase() === 'dark') { - return true; - } else if (argonMode.toLowerCase() === 'light') { - return false; - } - // 如果是 'normal' 或 'auto',使用浏览器检测系统颜色偏好 - if (argonMode.toLowerCase() === 'normal' || argonMode.toLowerCase() === 'auto') { - if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { - return true; - } - return false; - } + var mediaUrlBaseLower = mediaUrlBase.toLowerCase(); + + // 宽主题关键词列表(可以根据需要扩展) + var wideThemeKeywords = ['argon', 'material', 'design', 'edge']; + + // 检查是否是宽主题 + for (var i = 0; i < wideThemeKeywords.length; i++) { + if (mediaUrlBaseLower.includes(wideThemeKeywords[i])) { + return 'wide'; } } - // 默认情况下也使用浏览器检测系统颜色偏好 - if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { - return true; - } - - return false; + // 默认是窄主题(Bootstrap 等) + return 'narrow'; } function formatSize(bytes) { @@ -790,33 +168,22 @@ return view.extend({ }, render: function (data) { - var language = uci.get('bandix', 'general', 'language'); - if (!language || language === 'auto') { - language = getSystemLanguage(); - } - var darkMode = isDarkMode(); - - // 添加现代化样式,支持暗黑模式 + + // 添加现代化样式 var style = E('style', {}, ` .bandix-container { - padding: 16px; - background-color: ${darkMode ? '#1a1a1a' : '#f8fafc'}; - min-height: 100vh; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; - color: ${darkMode ? '#e2e8f0' : '#1f2937'}; } .bandix-header { display: flex; align-items: center; justify-content: space-between; - margin-bottom: 20px; } .bandix-title { font-size: 1.5rem; font-weight: 600; - color: ${darkMode ? '#f1f5f9' : '#1f2937'}; margin: 0; } @@ -830,17 +197,13 @@ return view.extend({ display: inline-flex; border-radius: 4px; overflow: hidden; - border: 1px solid ${darkMode ? '#444444' : '#cbd5e1'}; } .device-mode-btn { - background-color: ${darkMode ? '#2a2a2a' : '#ffffff'}; border: none; - border-right: 1px solid ${darkMode ? '#444444' : '#cbd5e1'}; padding: 0 12px; font-size: 0.8125rem; line-height: 1.8; - color: ${darkMode ? '#a0a0a0' : '#64748b'}; cursor: pointer; user-select: none; transition: all 0.15s ease; @@ -848,13 +211,8 @@ return view.extend({ height: 28px; } - .device-mode-btn:last-child { - border-right: none; - } - .device-mode-btn:hover:not(.active) { - background-color: ${darkMode ? '#3a3a3a' : '#f1f5f9'}; - color: ${darkMode ? '#d0d0d0' : '#475569'}; + opacity: 0.7; } .device-mode-btn.active { @@ -863,29 +221,22 @@ return view.extend({ } .bandix-badge { - background-color: ${darkMode ? '#2a2a2a' : '#f8fafc'}; - border: 1px solid ${darkMode ? '#444444' : '#cbd5e1'}; border-radius: 4px; padding: 4px 10px; font-size: 0.875rem; - color: ${darkMode ? '#d0d0d0' : '#475569'}; } .bandix-alert { - background-color: ${darkMode ? '#2a2a2a' : '#eff6ff'}; - border-left: 3px solid ${darkMode ? '#3b82f6' : '#2563eb'}; border-radius: 4px; padding: 10px 12px; - margin-bottom: 16px; display: flex; align-items: center; + justify-content: space-between; gap: 10px; - color: ${darkMode ? '#d0d0d0' : '#1e293b'}; font-size: 0.875rem; } .bandix-alert-icon { - color: ${darkMode ? '#60a5fa' : '#2563eb'}; font-size: 0.875rem; font-weight: 700; width: 18px; @@ -893,48 +244,20 @@ return view.extend({ display: flex; align-items: center; justify-content: center; - border: 2px solid currentColor; border-radius: 50%; flex-shrink: 0; } - .bandix-card { - background-color: ${darkMode ? '#2a2a2a' : 'white'}; - border-radius: 8px; - border: 1px solid ${darkMode ? '#444444' : '#e2e8f0'}; - overflow: hidden; - margin-bottom: 16px; - box-shadow: 0 2px 8px rgba(0, 0, 0, ${darkMode ? '0.3' : '0.08'}); - } - - .bandix-card-header { - padding: 16px; - border-bottom: 1px solid ${darkMode ? '#444444' : '#e2e8f0'}; - background-color: ${darkMode ? '#2a2a2a' : '#f8fafc'}; - } - - .bandix-card-title { - font-size: 1.125rem; - font-weight: 600; - color: ${darkMode ? '#f1f5f9' : '#1f2937'}; - margin: 0; - display: flex; - align-items: center; - gap: 8px; - } .bandix-table { width: 100%; - border-collapse: collapse; table-layout: fixed; } .bandix-table th { - background-color: ${darkMode ? '#2a2a2a' : '#f8fafc'}; padding: 10px 16px; text-align: left; font-weight: 600; - color: ${darkMode ? '#d0d0d0' : '#475569'}; border: none; font-size: 0.875rem; cursor: pointer; @@ -944,7 +267,7 @@ return view.extend({ } .bandix-table th:hover { - background-color: ${darkMode ? '#3a3a3a' : '#f1f5f9'}; + opacity: 0.7; } .bandix-table th.sortable::after { @@ -985,11 +308,11 @@ return view.extend({ } .th-split-section:hover { - background-color: ${darkMode ? '#3a3a3a' : '#e5e7eb'}; + opacity: 0.7; } .th-split-section.active { - background-color: ${darkMode ? '#3a3a3a' : '#e5e7eb'}; + opacity: 0.7; } .th-split-icon { @@ -1005,7 +328,7 @@ return view.extend({ .th-split-divider { width: 1px; height: 16px; - background-color: ${darkMode ? '#3a3a3a' : '#d1d5db'}; + background-color: currentColor; opacity: 0.5; } @@ -1015,12 +338,6 @@ return view.extend({ vertical-align: middle; word-wrap: break-word; overflow-wrap: break-word; - color: ${darkMode ? '#d0d0d0' : '#334155'}; - border-bottom: 1px solid ${darkMode ? '#333333' : '#f1f5f9'}; - } - - .bandix-table tr:last-child td { - border-bottom: none; } .bandix-table th:nth-child(1), @@ -1040,7 +357,7 @@ return view.extend({ .bandix-table th:nth-child(4), .bandix-table td:nth-child(4) { - width: 22%; + width: 15%; } .bandix-table th:nth-child(5), @@ -1061,7 +378,6 @@ return view.extend({ .device-name { font-weight: 600; - color: ${darkMode ? '#f1f5f9' : '#1f2937'}; display: flex; align-items: center; gap: 8px; @@ -1083,18 +399,18 @@ return view.extend({ } .device-ip { - color: ${darkMode ? '#94a3b8' : '#6b7280'}; + opacity: 0.7; font-size: 0.875rem; } .device-ipv6 { - color: ${darkMode ? '#94a3b8' : '#6b7280'}; + opacity: 0.7; font-size: 0.75rem; font-family: monospace; } .device-mac { - color: ${darkMode ? '#64748b' : '#9ca3af'}; + opacity: 0.6; font-size: 0.75rem; } @@ -1128,13 +444,9 @@ return view.extend({ font-size: 0.875rem; } - .traffic-speed { - color: ${darkMode ? '#e2e8f0' : '#374151'}; - } - .traffic-total { font-size: 0.75rem; - color: #64748b; + opacity: 0.6; margin-left: 4px; } @@ -1145,61 +457,36 @@ return view.extend({ } .limit-badge { - background-color: ${darkMode ? '#1a1a1a' : '#f8fafc'}; - color: ${darkMode ? '#a0a0a0' : '#64748b'}; padding: 3px 8px; border-radius: 3px; font-size: 0.75rem; text-align: center; margin-top: 4px; - border: 1px solid ${darkMode ? '#444444' : '#e2e8f0'}; } - .action-button { - background-color: ${darkMode ? '#2a2a2a' : '#f8fafc'}; - border: 1px solid ${darkMode ? '#444444' : '#cbd5e1'}; - border-radius: 4px; - padding: 6px 12px; - cursor: pointer; - font-size: 0.875rem; - color: ${darkMode ? '#d0d0d0' : '#475569'}; - transition: all 0.15s ease; - } - - .action-button:hover { - background-color: ${darkMode ? '#3a3a3a' : '#e2e8f0'}; - border-color: ${darkMode ? '#555555' : '#94a3b8'}; - } - - .loading { text-align: center; padding: 40px; - color: ${darkMode ? '#94a3b8' : '#6b7280'}; + opacity: 0.7; font-style: italic; } .error { text-align: center; padding: 40px; - color: ${darkMode ? '#f87171' : '#ef4444'}; } .stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 16px; - margin-bottom: 16px; + margin-bottom: 0; + margin-top: 0; } - .stats-card { - background-color: ${darkMode ? '#2a2a2a' : 'white'}; - border-radius: 8px; - padding: 20px; - border: 1px solid ${darkMode ? '#444444' : '#e2e8f0'}; - position: relative; - overflow: hidden; - box-shadow: 0 2px 8px rgba(0, 0, 0, ${darkMode ? '0.3' : '0.08'}); + + .bandix-container > .cbi-section:last-of-type { + margin-bottom: 0; } .stats-card-header { @@ -1212,12 +499,36 @@ return view.extend({ .stats-card-title { font-size: 0.875rem; font-weight: 600; - color: ${darkMode ? '#94a3b8' : '#64748b'}; - margin: 0; + opacity: 0.7; + margin: 0 0 12px 0; text-transform: uppercase; letter-spacing: 0.025em; } + .stats-grid .cbi-section { + padding: 16px; + border: 1px solid rgba(0, 0, 0, 0.1); + border-radius: 8px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); + transition: box-shadow 0.2s ease, transform 0.2s ease, border-color 0.2s ease; + } + + .stats-grid .cbi-section:hover { + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12); + transform: translateY(-2px); + } + + @media (prefers-color-scheme: dark) { + .stats-grid .cbi-section { + border-color: rgba(255, 255, 255, 0.15); + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3); + } + + .stats-grid .cbi-section:hover { + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4); + } + } + .stats-card-icon { font-size: 0.875rem; font-weight: 600; @@ -1230,14 +541,13 @@ return view.extend({ .stats-card-main-value { font-size: 2.25rem; font-weight: 700; - color: ${darkMode ? '#f1f5f9' : '#1f2937'}; margin: 0 0 8px 0; line-height: 1; } .stats-card-sub-value { font-size: 0.875rem; - color: ${darkMode ? '#9ca3af' : '#6b7280'}; + opacity: 0.7; margin: 0; } @@ -1256,7 +566,7 @@ return view.extend({ } .stats-detail-label { - color: ${darkMode ? '#9ca3af' : '#6b7280'}; + opacity: 0.7; font-weight: 500; } @@ -1267,7 +577,6 @@ return view.extend({ .stats-title { font-size: 0.875rem; font-weight: 600; - color: ${darkMode ? '#e2e8f0' : '#374151'}; margin-bottom: 8px; display: flex; align-items: center; @@ -1277,7 +586,6 @@ return view.extend({ .stats-value { font-size: 1.25rem; font-weight: 700; - color: ${darkMode ? '#f1f5f9' : '#1f2937'}; } /* 模态框样式 */ @@ -1304,31 +612,34 @@ return view.extend({ } .modal { - background-color: ${darkMode ? '#2a2a2a' : 'white'}; - border-radius: 8px; - border: 1px solid ${darkMode ? '#444444' : '#e2e8f0'}; max-width: 500px; width: 90%; max-height: 90vh; overflow-y: auto; opacity: 0; transition: opacity 0.2s ease; - box-shadow: 0 10px 40px rgba(0, 0, 0, ${darkMode ? '0.5' : '0.15'}); + background-color: rgba(255, 255, 255, 0.98); + color: #1f2937; } .modal-overlay.show .modal { opacity: 1; } + @media (prefers-color-scheme: dark) { + .modal { + background-color: rgba(30, 30, 30, 0.98); + color: #e5e7eb; + } + } + .modal-header { padding: 20px; - border-bottom: 1px solid ${darkMode ? '#444444' : '#e2e8f0'}; } .modal-title { font-size: 1.25rem; font-weight: 600; - color: ${darkMode ? '#f1f5f9' : '#1f2937'}; margin: 0; } @@ -1350,77 +661,24 @@ return view.extend({ .form-label { display: block; font-weight: 600; - color: ${darkMode ? '#e2e8f0' : '#374151'}; margin-bottom: 8px; font-size: 0.875rem; } .form-input { width: 100%; - border: 1px solid ${darkMode ? '#444444' : '#cbd5e1'}; border-radius: 4px; padding: 8px 12px; font-size: 0.875rem; transition: border-color 0.15s ease; box-sizing: border-box; - background-color: ${darkMode ? '#2a2a2a' : 'white'}; - color: ${darkMode ? '#e2e8f0' : '#1f2937'}; } .form-input:focus { outline: none; - border-color: #3b82f6; - } - - .form-select { - width: 100%; - border: 1px solid ${darkMode ? '#444444' : '#cbd5e1'}; - border-radius: 4px; - padding: 8px 12px; - font-size: 0.875rem; - background-color: ${darkMode ? '#2a2a2a' : 'white'}; - transition: border-color 0.15s ease; - box-sizing: border-box; - color: ${darkMode ? '#e2e8f0' : '#1f2937'}; - } - - .form-select:focus { - outline: none; - border-color: #3b82f6; - } - - .btn { - padding: 8px 16px; - border-radius: 4px; - font-size: 0.875rem; - font-weight: 500; - cursor: pointer; - transition: all 0.15s ease; - border: none; - } - - .btn-primary { - background-color: #3b82f6; - color: white; - } - - .btn-primary:hover { - background-color: #2563eb; - } - - .btn-secondary { - background-color: ${darkMode ? '#3a3a3a' : '#f1f5f9'}; - color: ${darkMode ? '#d0d0d0' : '#475569'}; - border: 1px solid ${darkMode ? '#555555' : '#cbd5e1'}; - } - - .btn-secondary:hover { - background-color: ${darkMode ? '#4a4a4a' : '#e2e8f0'}; } .device-summary { - background-color: ${darkMode ? '#1a1a1a' : '#f8fafc'}; - border: 1px solid ${darkMode ? '#444444' : '#e2e8f0'}; border-radius: 4px; padding: 12px; margin-bottom: 16px; @@ -1428,12 +686,11 @@ return view.extend({ .device-summary-name { font-weight: 600; - color: ${darkMode ? '#f1f5f9' : '#1f2937'}; margin-bottom: 4px; } .device-summary-details { - color: ${darkMode ? '#94a3b8' : '#6b7280'}; + opacity: 0.7; font-size: 0.875rem; } @@ -1442,7 +699,7 @@ return view.extend({ display: inline-block; width: 16px; height: 16px; - border: 2px solid #f3f4f6; + border: 2px solid transparent; border-radius: 50%; border-top-color: #3b82f6; animation: spin 1s ease-in-out infinite; @@ -1470,11 +727,8 @@ return view.extend({ gap: 12px; align-items: center; padding: 12px 16px; - border-bottom: 1px solid ${darkMode ? '#444444' : '#e2e8f0'}; - background-color: ${darkMode ? '#2a2a2a' : '#f8fafc'}; } - .history-controls .form-select, - .history-controls .form-input { + .history-controls .cbi-select { width: auto; min-width: 160px; } @@ -1488,7 +742,7 @@ return view.extend({ align-items: center; gap: 12px; } - .legend-item { display: flex; align-items: center; gap: 6px; font-size: 0.875rem; color: ${darkMode ? '#e2e8f0' : '#374151'}; } + .legend-item { display: flex; align-items: center; gap: 6px; font-size: 0.875rem; } .legend-dot { width: 10px; height: 10px; border-radius: 50%; display: inline-block; } .legend-up { background-color: #f97316; } .legend-down { background-color: #06b6d4; } @@ -1498,31 +752,40 @@ return view.extend({ display: none; width: 320px; box-sizing: border-box; - background-color: ${darkMode ? '#2a2a2a' : 'white'}; - color: ${darkMode ? '#e2e8f0' : '#1f2937'}; - border: 1px solid ${darkMode ? '#444444' : '#e2e8f0'}; - border-radius: 6px; - box-shadow: 0 6px 20px rgba(0,0,0,${darkMode ? '0.4' : '0.15'}); padding: 12px; z-index: 10; pointer-events: none; font-size: 0.8125rem; line-height: 1.5; white-space: nowrap; + background-color: rgba(255, 255, 255, 0.98); + border: 1px solid rgba(0, 0, 0, 0.1); + border-radius: 6px; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); + color: #1f2937; + } + + @media (prefers-color-scheme: dark) { + .history-tooltip { + background-color: rgba(30, 30, 30, 0.98); + border-color: rgba(255, 255, 255, 0.2); + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4); + color: #e5e7eb; + } } .history-tooltip .ht-title { font-weight: 700; margin-bottom: 6px; } .history-tooltip .ht-row { display: flex; justify-content: space-between; gap: 12px; } - .history-tooltip .ht-key { color: ${darkMode ? '#94a3b8' : '#6b7280'}; } - .history-tooltip .ht-val { color: ${darkMode ? '#e2e8f0' : '#111827'}; } - .history-tooltip .ht-device { margin-top: 4px; margin-bottom: 6px; color: ${darkMode ? '#94a3b8' : '#6b7280'}; font-size: 0.75rem; } + .history-tooltip .ht-key { opacity: 0.7; } + .history-tooltip .ht-val { } + .history-tooltip .ht-device { margin-top: 4px; margin-bottom: 6px; opacity: 0.7; font-size: 0.75rem; } /* 强调关键信息的排版 */ .history-tooltip .ht-kpis { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 2px; margin-bottom: 6px; } - .history-tooltip .ht-kpi .ht-k-label { color: ${darkMode ? '#94a3b8' : '#6b7280'}; font-size: 0.75rem; } + .history-tooltip .ht-kpi .ht-k-label { opacity: 0.7; font-size: 0.75rem; } .history-tooltip .ht-kpi .ht-k-value { font-size: 1rem; font-weight: 700; } .history-tooltip .ht-kpi.down .ht-k-value { color: #06b6d4; } .history-tooltip .ht-kpi.up .ht-k-value { color: #f97316; } - .history-tooltip .ht-divider { height: 1px; background-color: ${darkMode ? '#3a3a3a' : '#e5e7eb'}; margin: 8px 0; } - .history-tooltip .ht-section-title { font-weight: 600; font-size: 0.75rem; color: ${darkMode ? '#94a3b8' : '#6b7280'}; margin: 4px 0 6px 0; } + .history-tooltip .ht-divider { height: 1px; background-color: currentColor; opacity: 0.3; margin: 8px 0; } + .history-tooltip .ht-section-title { font-weight: 600; font-size: 0.75rem; opacity: 0.7; margin: 4px 0 6px 0; } `); document.head.appendChild(style); @@ -1530,46 +793,43 @@ return view.extend({ var view = E('div', { 'class': 'bandix-container' }, [ // 头部 E('div', { 'class': 'bandix-header' }, [ - E('h1', { 'class': 'bandix-title' }, getTranslation('Bandix 流量监控', language)), - E('div', { 'class': 'bandix-badge', 'id': 'device-count' }, getTranslation('在线设备', language) + ': 0 / 0') + E('h1', { 'class': 'bandix-title' }, _('Bandix Traffic Monitor')) ]), - // 警告提示 + // 警告提示(包含在线设备数) E('div', { 'class': 'bandix-alert' }, [ - E('span', { 'class': 'bandix-alert-icon' }, '!'), - E('span', {}, getTranslation('限速功能仅对 WAN 流量生效。', language)) + E('span', {}, _('Rate limiting only applies to WAN traffic.')), + E('div', { 'class': 'bandix-badge', 'id': 'device-count' }, _('Online Devices') + ': 0 / 0') ]), // 统计卡片 E('div', { 'class': 'stats-grid', 'id': 'stats-grid' }), // 历史趋势卡片(无时间范围筛选) - E('div', { 'class': 'bandix-card', 'id': 'history-card' }, [ - E('div', { 'class': 'bandix-card-header history-header' }, [ - E('div', { 'class': 'bandix-card-title' }, [ - getTranslation('历史流量趋势', language) - ]), + E('div', { 'class': 'cbi-section', 'id': 'history-card' }, [ + E('h3', { 'class': 'history-header', 'style': 'display: flex; align-items: center; justify-content: space-between;' }, [ + E('span', {}, _('Traffic History')), E('div', { 'class': 'history-legend' }, [ E('div', { 'class': 'legend-item' }, [ E('span', { 'class': 'legend-dot legend-up' }), - getTranslation('上传速率', language) + _('Upload Rate') ]), E('div', { 'class': 'legend-item' }, [ E('span', { 'class': 'legend-dot legend-down' }), - getTranslation('下载速率', language) + _('Download Rate') ]) ]) ]), E('div', { 'class': 'history-controls' }, [ - E('label', { 'class': 'form-label', 'style': 'margin: 0;' }, getTranslation('选择设备', language)), - E('select', { 'class': 'form-select', 'id': 'history-device-select' }, [ - E('option', { 'value': '' }, getTranslation('所有设备', language)) + E('label', { 'class': 'form-label', 'style': 'margin: 0;' }, _('Select Device')), + E('select', { 'class': 'cbi-select', 'id': 'history-device-select' }, [ + E('option', { 'value': '' }, _('All Devices')) ]), - E('label', { 'class': 'form-label', 'style': 'margin: 0;' }, getTranslation('类型', language)), - E('select', { 'class': 'form-select', 'id': 'history-type-select' }, [ - E('option', { 'value': 'total' }, getTranslation('总流量', language)), - E('option', { 'value': 'lan' }, getTranslation('LAN 流量', language)), - E('option', { 'value': 'wan' }, getTranslation('WAN 流量', language)) + E('label', { 'class': 'form-label', 'style': 'margin: 0;' }, _('Type')), + E('select', { 'class': 'cbi-select', 'id': 'history-type-select' }, [ + E('option', { 'value': 'total' }, _('Total')), + E('option', { 'value': 'lan' }, _('LAN Traffic')), + E('option', { 'value': 'wan' }, _('WAN Traffic')) ]), E('span', { 'class': 'bandix-badge', 'id': 'history-zoom-level', 'style': 'margin-left: 16px; display: none;' }, ''), E('span', { 'class': 'bandix-badge', 'id': 'history-retention', 'style': 'margin-left: auto;' }, '') @@ -1581,31 +841,29 @@ return view.extend({ ]), // 主要内容卡片 - E('div', { 'class': 'bandix-card' }, [ - E('div', { 'class': 'bandix-card-header history-header' }, [ - E('div', { 'class': 'bandix-card-title' }, [ - getTranslation('设备列表', language) - ]), + E('div', { 'class': 'cbi-section' }, [ + E('h3', { 'class': 'history-header', 'style': 'display: flex; align-items: center; justify-content: space-between;' }, [ + E('span', {}, _('Device List')), E('div', { 'class': 'device-mode-group' }, [ E('button', { 'class': 'device-mode-btn' + (localStorage.getItem('bandix_device_mode') !== 'detailed' ? ' active' : ''), 'data-mode': 'simple' - }, getTranslation('简易模式', language)), + }, _('Simple Mode')), E('button', { 'class': 'device-mode-btn' + (localStorage.getItem('bandix_device_mode') === 'detailed' ? ' active' : ''), 'data-mode': 'detailed' - }, getTranslation('详细模式', language)) + }, _('Detailed Mode')) ]) ]), E('div', { 'id': 'traffic-status' }, [ E('table', { 'class': 'bandix-table' }, [ E('thead', {}, [ E('tr', {}, [ - E('th', {}, getTranslation('设备信息', language)), - E('th', {}, getTranslation('LAN 流量', language)), - E('th', {}, getTranslation('WAN 流量', language)), - E('th', {}, getTranslation('限速设置', language)), - E('th', {}, getTranslation('操作', language)) + E('th', {}, _('Device Info')), + E('th', {}, _('LAN Traffic')), + E('th', {}, _('WAN Traffic')), + E('th', {}, _('Rate Limit')), + E('th', {}, _('Actions')) ]) ]), E('tbody', {}) @@ -1644,35 +902,35 @@ return view.extend({ var modal = E('div', { 'class': 'modal-overlay', 'id': 'rate-limit-modal' }, [ E('div', { 'class': 'modal' }, [ E('div', { 'class': 'modal-header' }, [ - E('h3', { 'class': 'modal-title' }, getTranslation('设备设置', language)) + E('h3', { 'class': 'modal-title' }, _('Device Settings')) ]), E('div', { 'class': 'modal-body' }, [ E('div', { 'class': 'device-summary', 'id': 'modal-device-summary' }), E('div', { 'class': 'form-group' }, [ - E('label', { 'class': 'form-label' }, getTranslation('主机名', language)), - E('input', { 'type': 'text', 'class': 'form-input', 'id': 'device-hostname-input', 'placeholder': getTranslation('请输入主机名', language) }), - E('div', { 'style': 'font-size: 0.75rem; color: #6b7280; margin-top: 4px;' }, getTranslation('设置主机名', language)) + E('label', { 'class': 'form-label' }, _('Hostname')), + E('input', { 'type': 'text', 'class': 'form-input', 'id': 'device-hostname-input', 'placeholder': _('Please enter hostname') }), + E('div', { 'style': 'font-size: 0.75rem; color: #6b7280; margin-top: 4px;' }, _('Set Hostname')) ]), E('div', { 'class': 'form-group' }, [ - E('label', { 'class': 'form-label' }, getTranslation('上传限速', language)), + E('label', { 'class': 'form-label' }, _('Upload Limit')), E('div', { 'style': 'display: flex; gap: 8px;' }, [ E('input', { 'type': 'number', 'class': 'form-input', 'id': 'upload-limit-value', 'min': '0', 'step': '1', 'placeholder': '0' }), - E('select', { 'class': 'form-select', 'id': 'upload-limit-unit', 'style': 'width: 100px;' }) + E('select', { 'class': 'cbi-select', 'id': 'upload-limit-unit', 'style': 'width: 100px;' }) ]), - E('div', { 'style': 'font-size: 0.75rem; color: #6b7280; margin-top: 4px;' }, getTranslation('提示:输入 0 表示无限制', language)) + E('div', { 'style': 'font-size: 0.75rem; color: #6b7280; margin-top: 4px;' }, _('Tip: Enter 0 for unlimited')) ]), E('div', { 'class': 'form-group' }, [ - E('label', { 'class': 'form-label' }, getTranslation('下载限速', language)), + E('label', { 'class': 'form-label' }, _('Download Limit')), E('div', { 'style': 'display: flex; gap: 8px;' }, [ E('input', { 'type': 'number', 'class': 'form-input', 'id': 'download-limit-value', 'min': '0', 'step': '1', 'placeholder': '0' }), - E('select', { 'class': 'form-select', 'id': 'download-limit-unit', 'style': 'width: 100px;' }) + E('select', { 'class': 'cbi-select', 'id': 'download-limit-unit', 'style': 'width: 100px;' }) ]), - E('div', { 'style': 'font-size: 0.75rem; color: #6b7280; margin-top: 4px;' }, getTranslation('提示:输入 0 表示无限制', language)) + E('div', { 'style': 'font-size: 0.75rem; color: #6b7280; margin-top: 4px;' }, _('Tip: Enter 0 for unlimited')) ]) ]), E('div', { 'class': 'modal-footer' }, [ - E('button', { 'class': 'btn btn-secondary', 'id': 'modal-cancel' }, getTranslation('取消', language)), - E('button', { 'class': 'btn btn-primary', 'id': 'modal-save' }, getTranslation('保存', language)) + E('button', { 'class': 'cbi-button cbi-button-reset', 'id': 'modal-cancel' }, _('Cancel')), + E('button', { 'class': 'cbi-button cbi-button-positive', 'id': 'modal-save' }, _('Save')) ]) ]) ]); @@ -1805,6 +1063,83 @@ return view.extend({ } document.getElementById('download-limit-unit').value = downloadUnit; + // 应用 cbi-section 的颜色到模态框 + try { + // 优先从 cbi-section 获取颜色 + var cbiSection = document.querySelector('.cbi-section'); + var targetElement = cbiSection || document.querySelector('.main') || document.body; + var computedStyle = window.getComputedStyle(targetElement); + var bgColor = computedStyle.backgroundColor; + var textColor = computedStyle.color; + + // 获取模态框元素 + var modalElement = modal.querySelector('.modal'); + + // 确保背景色不透明 + if (bgColor && bgColor !== 'rgba(0, 0, 0, 0)' && bgColor !== 'transparent') { + var rgbaMatch = bgColor.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*([\d.]+))?\)/); + if (rgbaMatch) { + var r = parseInt(rgbaMatch[1]); + var g = parseInt(rgbaMatch[2]); + var b = parseInt(rgbaMatch[3]); + var alpha = rgbaMatch[4] ? parseFloat(rgbaMatch[4]) : 1; + + if (alpha < 0.95) { + modalElement.style.backgroundColor = 'rgb(' + r + ', ' + g + ', ' + b + ')'; + } else { + modalElement.style.backgroundColor = bgColor; + } + } else { + modalElement.style.backgroundColor = bgColor; + } + } else { + // 如果无法获取背景色,尝试从其他 cbi-section 获取 + var allCbiSections = document.querySelectorAll('.cbi-section'); + var foundBgColor = false; + for (var i = 0; i < allCbiSections.length; i++) { + var sectionStyle = window.getComputedStyle(allCbiSections[i]); + var sectionBg = sectionStyle.backgroundColor; + if (sectionBg && sectionBg !== 'rgba(0, 0, 0, 0)' && sectionBg !== 'transparent') { + var rgbaMatch = sectionBg.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*([\d.]+))?\)/); + if (rgbaMatch) { + var r = parseInt(rgbaMatch[1]); + var g = parseInt(rgbaMatch[2]); + var b = parseInt(rgbaMatch[3]); + var alpha = rgbaMatch[4] ? parseFloat(rgbaMatch[4]) : 1; + if (alpha < 0.95) { + modalElement.style.backgroundColor = 'rgb(' + r + ', ' + g + ', ' + b + ')'; + } else { + modalElement.style.backgroundColor = sectionBg; + } + } else { + modalElement.style.backgroundColor = sectionBg; + } + foundBgColor = true; + break; + } + } + // 如果无法获取背景色,CSS 会通过媒体查询自动处理暗色模式 + if (!foundBgColor) { + // 不设置背景色,让 CSS 媒体查询处理 + } + } + + // 应用文字颜色 + if (textColor && textColor !== 'rgba(0, 0, 0, 0)') { + modalElement.style.color = textColor; + } else { + if (cbiSection) { + var sectionTextColor = window.getComputedStyle(cbiSection).color; + if (sectionTextColor && sectionTextColor !== 'rgba(0, 0, 0, 0)') { + modalElement.style.color = sectionTextColor; + } + } + } + } catch(e) { + // 如果出错,CSS 会通过媒体查询自动处理暗色模式 + // 不设置样式,让 CSS 处理 + } + // 显示模态框并添加动画 modal.classList.add('show'); } @@ -1828,7 +1163,7 @@ return view.extend({ var originalText = saveButton.textContent; // 显示加载状态 - saveButton.innerHTML = '' + getTranslation('保存中...', language); + saveButton.innerHTML = '' + _('Saving...'); saveButton.classList.add('btn-loading'); var uploadLimit = 0; @@ -1891,10 +1226,10 @@ return view.extend({ results.forEach(function(result, index) { if (result && result.hostnameError) { hasError = true; - errorMessages.push(getTranslation('主机名设置失败', language)); + errorMessages.push(_('Failed to set hostname')); } else if (result && result.rateLimitError) { hasError = true; - errorMessages.push(getTranslation('设置失败', language)); + errorMessages.push(_('Failed to save settings')); } else if (result !== true && result !== undefined) { // 检查是否有其他错误 if (result && result.error) { @@ -1914,7 +1249,7 @@ return view.extend({ // 恢复按钮状态 saveButton.innerHTML = originalText; saveButton.classList.remove('btn-loading'); - ui.addNotification(null, E('p', {}, getTranslation('设置失败', language)), 'error'); + ui.addNotification(null, E('p', {}, _('Failed to save settings')), 'error'); }); } @@ -1990,7 +1325,7 @@ return view.extend({ var prev = select.value; // 重建选项 select.innerHTML = ''; - select.appendChild(E('option', { 'value': '' }, getTranslation('所有设备', language))); + select.appendChild(E('option', { 'value': '' }, _('All Devices'))); sortedDevices.forEach(function (d) { var label = (d.hostname || d.ip || d.mac || '-') + (d.ip ? ' (' + d.ip + ')' : '') + (d.mac ? ' [' + d.mac + ']' : ''); select.appendChild(E('option', { 'value': d.mac }, label)); @@ -2020,11 +1355,18 @@ return view.extend({ var zoomLevelElement = document.getElementById('history-zoom-level'); if (!zoomLevelElement) return; + // 如果是窄主题,隐藏 zoom 显示 + var themeType = getThemeType(); + if (themeType === 'narrow') { + zoomLevelElement.style.display = 'none'; + return; + } + if (zoomScale <= 1) { zoomLevelElement.style.display = 'none'; } else { zoomLevelElement.style.display = 'inline-block'; - zoomLevelElement.textContent = getTranslation('缩放', language) + ': ' + zoomScale.toFixed(1) + 'x'; + zoomLevelElement.textContent = _('Zoom') + ': ' + zoomScale.toFixed(1) + 'x'; } } @@ -2109,7 +1451,7 @@ return view.extend({ // 网格与Y轴刻度(更细更淡) var gridLines = 4; - ctx.strokeStyle = (darkMode ? 'rgba(148,163,184,0.06)' : 'rgba(148,163,184,0.08)'); + ctx.strokeStyle = 'rgba(148,163,184,0.08)'; ctx.lineWidth = 0.8; for (var g = 0; g <= gridLines; g++) { var y = padding.top + (innerH * g / gridLines); @@ -2118,7 +1460,7 @@ return view.extend({ ctx.lineTo(width - padding.right, y); ctx.stroke(); var val = Math.round(maxVal * (gridLines - g) / gridLines); - ctx.fillStyle = (darkMode ? 'rgba(148,163,184,0.7)' : '#9ca3af'); + ctx.fillStyle = '#9ca3af'; ctx.font = '12px sans-serif'; ctx.textAlign = 'right'; ctx.textBaseline = 'middle'; @@ -2213,8 +1555,7 @@ return view.extend({ hoverIdx = Math.max(0, Math.min(n - 1, hoverIdx)); var hoverX = info.padding.left + (n > 1 ? stepX * hoverIdx : innerW / 2); ctx.save(); - var hoverColor = (typeof darkMode !== 'undefined' && darkMode) ? 'rgba(148,163,184,0.7)' : 'rgba(156,163,175,0.9)'; - ctx.strokeStyle = hoverColor; + ctx.strokeStyle = 'rgba(156,163,175,0.9)'; ctx.lineWidth = 1; ctx.setLineDash([6, 4]); ctx.beginPath(); @@ -2236,10 +1577,9 @@ return view.extend({ return hh + ':' + mm + ':' + ss; } - function buildTooltipHtml(point, language) { + function buildTooltipHtml(point) { if (!point) return ''; var lines = []; - var zh = (language === 'zh-cn' || language === 'zh-tw'); var typeSel = (typeof document !== 'undefined' ? document.getElementById('history-type-select') : null); var selType = (typeSel && typeSel.value) ? typeSel.value : 'total'; var speedUnit = uci.get('bandix', 'traffic', 'speed_unit') || 'bytes'; @@ -2257,9 +1597,9 @@ return view.extend({ } function labelsFor(type) { - if (type === 'lan') return { up: getTranslation('LAN 上传速率', language), down: getTranslation('LAN 下载速率', language) }; - if (type === 'wan') return { up: getTranslation('WAN 上传速率', language), down: getTranslation('WAN 下载速率', language) }; - return { up: getTranslation('总上传速率', language), down: getTranslation('总下载速率', language) }; + if (type === 'lan') return { up: _('LAN Upload'), down: _('LAN Download') }; + if (type === 'wan') return { up: _('WAN Upload'), down: _('WAN Download') }; + return { up: _('Total Upload'), down: _('Total Download') }; } function rateKeysFor(type) { @@ -2289,7 +1629,7 @@ return view.extend({ ipv6Info = ' | IPv6: ' + lanIPv6.join(', '); } var devLabel = (dev.hostname || '-') + (dev.ip ? ' (' + dev.ip + ')' : '') + (dev.mac ? ' [' + dev.mac + ']' : '') + ipv6Info; - lines.push('
' + getTranslation('设备', language) + ': ' + devLabel + '
'); + lines.push('
' + _('Device') + ': ' + devLabel + '
'); } } } catch (e) {} @@ -2313,7 +1653,7 @@ return view.extend({ // 次要信息:其余类型的速率(精简展示) var otherTypes = ['total', 'lan', 'wan'].filter(function (t) { return t !== selType; }); if (otherTypes.length) { - lines.push('
' + getTranslation('其他速率', language) + '
'); + lines.push('
' + _('Other Rates') + '
'); otherTypes.forEach(function (t) { var lbs = labelsFor(t); var ks = rateKeysFor(t); @@ -2324,13 +1664,13 @@ return view.extend({ // 累计:区分LAN 流量与公网 lines.push('
'); - lines.push('
' + getTranslation('累计流量', language) + '
'); - row(getTranslation('总上传', language), bytesValue('total_tx_bytes')); - row(getTranslation('总下载', language), bytesValue('total_rx_bytes')); - row(getTranslation('LAN 已上传', language), bytesValue('local_tx_bytes')); - row(getTranslation('LAN 已下载', language), bytesValue('local_rx_bytes')); - row(getTranslation('WAN 已上传', language), bytesValue('wide_tx_bytes')); - row(getTranslation('WAN 已下载', language), bytesValue('wide_rx_bytes')); + lines.push('
' + _('Cumulative') + '
'); + row(_('Total Uploaded'), bytesValue('total_tx_bytes')); + row(_('Total Downloaded'), bytesValue('total_rx_bytes')); + row(_('LAN Uploaded'), bytesValue('local_tx_bytes')); + row(_('LAN Downloaded'), bytesValue('local_rx_bytes')); + row(_('WAN Uploaded'), bytesValue('wide_tx_bytes')); + row(_('WAN Downloaded'), bytesValue('wide_rx_bytes')); return lines.join(''); } @@ -2531,9 +1871,9 @@ function isDeviceOnline(device) { } // 格式化最后上线时间 -function formatLastOnlineTime(lastOnlineTs, language) { +function formatLastOnlineTime(lastOnlineTs) { if (!lastOnlineTs || lastOnlineTs <= 0) { - return getTranslation('从未上线', language); + return _('Never Online'); } // 如果时间戳小于1000000000000,说明是秒级时间戳,需要转换为毫秒 @@ -2546,12 +1886,12 @@ function formatLastOnlineTime(lastOnlineTs, language) { // 1分钟以内显示"刚刚" if (minutesDiff < 1) { - return getTranslation('刚刚', language); + return _('Just Now'); } // 10分钟以内显示具体的"几分钟前" if (minutesDiff <= 10) { - return minutesDiff + getTranslation('分钟前', language); + return minutesDiff + _('min ago'); } // 转换为小时 @@ -2559,7 +1899,7 @@ function formatLastOnlineTime(lastOnlineTs, language) { // 如果不满1小时,显示分钟 if (hoursDiff < 1) { - return minutesDiff + getTranslation('分钟前', language); + return minutesDiff + _('min ago'); } // 转换为天 @@ -2567,7 +1907,7 @@ function formatLastOnlineTime(lastOnlineTs, language) { // 如果不满1天,显示小时(忽略分钟) if (daysDiff < 1) { - return hoursDiff + getTranslation('小时前', language); + return hoursDiff + _('h ago'); } // 转换为月(按30天计算) @@ -2575,7 +1915,7 @@ function formatLastOnlineTime(lastOnlineTs, language) { // 如果不满1个月,显示天(忽略小时) if (monthsDiff < 1) { - return daysDiff + getTranslation('天前', language); + return daysDiff + _('days ago'); } // 转换为年(按365天计算) @@ -2583,63 +1923,39 @@ function formatLastOnlineTime(lastOnlineTs, language) { // 如果不满1年,显示月(忽略天) if (yearsDiff < 1) { - return monthsDiff + getTranslation('个月前', language); + return monthsDiff + _('months ago'); } // 超过1年,显示年(忽略月) - return yearsDiff + getTranslation('年前', language); + return yearsDiff + _('years ago'); } -function formatRetentionSeconds(seconds, language) { +function formatRetentionSeconds(seconds) { if (!seconds || seconds <= 0) return ''; var value; var unitKey; if (seconds < 60) { value = Math.round(seconds); - unitKey = '秒'; + unitKey = _('seconds'); } else if (seconds < 3600) { value = Math.round(seconds / 60); if (value < 1) value = 1; - unitKey = '分钟'; + unitKey = _('minutes'); } else if (seconds < 86400) { value = Math.round(seconds / 3600); if (value < 1) value = 1; - unitKey = '小时'; + unitKey = _('hours'); } else if (seconds < 604800) { value = Math.round(seconds / 86400); if (value < 1) value = 1; - unitKey = '天'; + unitKey = _('days'); } else { value = Math.round(seconds / 604800); if (value < 1) value = 1; - unitKey = '周'; + unitKey = _('weeks'); } - // 多语言格式化 - if (language === 'zh-cn' || language === 'zh-tw') { - return getTranslation('最近', language) + value + getTranslation(unitKey, language); - } - - if (language === 'ja') { - return getTranslation('最近', language) + value + getTranslation(unitKey, language); - } - - if (language === 'fr') { - // 法语单复数:值>1 用复数,天/周/小时/分钟/秒分别加 s - var unitFr = getTranslation(unitKey, 'fr'); - if (value > 1) unitFr = unitFr + 's'; - return getTranslation('最近', 'fr') + ' ' + value + ' ' + unitFr; - } - - if (language === 'ru') { - // 俄语用缩写,避免复杂变格 - return getTranslation('最近', 'ru') + ' ' + value + ' ' + getTranslation(unitKey, 'ru'); - } - - // 英语默认 - var unitEn = getTranslation(unitKey, 'en'); - if (value > 1) unitEn = unitEn + 's'; - return getTranslation('最近', 'en') + ' ' + value + ' ' + unitEn; + return _('Last') + ' ' + value + ' ' + unitKey; } function refreshHistory() { @@ -2662,7 +1978,7 @@ function formatRetentionSeconds(seconds, language) { var retentionBadge = document.getElementById('history-retention'); if (retentionBadge) { - var text = formatRetentionSeconds(res && res.retention_seconds, language); + var text = formatRetentionSeconds(res && res.retention_seconds); retentionBadge.textContent = text || ''; } @@ -2729,7 +2045,88 @@ function formatRetentionSeconds(seconds, language) { historyHoverIndex = idx; // 立即重绘以显示垂直虚线 try { drawHistoryChart(canvas, canvas.__bandixChart && canvas.__bandixChart.originalLabels ? canvas.__bandixChart.originalLabels : labels, canvas.__bandixChart && canvas.__bandixChart.originalUpSeries ? canvas.__bandixChart.originalUpSeries : upSeries, canvas.__bandixChart && canvas.__bandixChart.originalDownSeries ? canvas.__bandixChart.originalDownSeries : downSeries, zoomScale, zoomOffsetX); } catch(e){} - tooltip.innerHTML = buildTooltipHtml(point, language); + tooltip.innerHTML = buildTooltipHtml(point); + + // 应用主题颜色到 tooltip,使用 cbi-section 的颜色 + try { + // 优先从 cbi-section 获取颜色(历史趋势卡片就是 cbi-section) + var cbiSection = document.querySelector('.cbi-section'); + var targetElement = cbiSection || document.querySelector('.main') || document.body; + var computedStyle = window.getComputedStyle(targetElement); + var bgColor = computedStyle.backgroundColor; + var textColor = computedStyle.color; + + // 确保背景色不透明 + if (bgColor && bgColor !== 'rgba(0, 0, 0, 0)' && bgColor !== 'transparent') { + // 检查是否是 rgba/rgb 格式,如果是半透明则转换为不透明 + var rgbaMatch = bgColor.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*([\d.]+))?\)/); + if (rgbaMatch) { + var r = parseInt(rgbaMatch[1]); + var g = parseInt(rgbaMatch[2]); + var b = parseInt(rgbaMatch[3]); + var alpha = rgbaMatch[4] ? parseFloat(rgbaMatch[4]) : 1; + + // 如果 alpha < 0.95,使用不透明版本 + if (alpha < 0.95) { + tooltip.style.backgroundColor = 'rgb(' + r + ', ' + g + ', ' + b + ')'; + } else { + tooltip.style.backgroundColor = bgColor; + } + } else { + tooltip.style.backgroundColor = bgColor; + } + } else { + // 如果无法获取背景色,尝试从其他 cbi-section 获取 + var allCbiSections = document.querySelectorAll('.cbi-section'); + var foundBgColor = false; + for (var i = 0; i < allCbiSections.length; i++) { + var sectionStyle = window.getComputedStyle(allCbiSections[i]); + var sectionBg = sectionStyle.backgroundColor; + if (sectionBg && sectionBg !== 'rgba(0, 0, 0, 0)' && sectionBg !== 'transparent') { + var rgbaMatch = sectionBg.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*([\d.]+))?\)/); + if (rgbaMatch) { + var r = parseInt(rgbaMatch[1]); + var g = parseInt(rgbaMatch[2]); + var b = parseInt(rgbaMatch[3]); + var alpha = rgbaMatch[4] ? parseFloat(rgbaMatch[4]) : 1; + if (alpha < 0.95) { + tooltip.style.backgroundColor = 'rgb(' + r + ', ' + g + ', ' + b + ')'; + } else { + tooltip.style.backgroundColor = sectionBg; + } + } else { + tooltip.style.backgroundColor = sectionBg; + } + foundBgColor = true; + break; + } + } + // 如果无法获取背景色,CSS 会通过媒体查询自动处理暗色模式 + if (!foundBgColor) { + // 不设置背景色,让 CSS 媒体查询处理 + } + } + + if (textColor && textColor !== 'rgba(0, 0, 0, 0)') { + tooltip.style.color = textColor; + } else { + // 如果无法获取文字颜色,从 cbi-section 获取 + if (cbiSection) { + var sectionTextColor = window.getComputedStyle(cbiSection).color; + if (sectionTextColor && sectionTextColor !== 'rgba(0, 0, 0, 0)') { + tooltip.style.color = sectionTextColor; + } + // 否则使用 CSS 默认颜色(已通过媒体查询设置) + } + // 否则使用 CSS 默认颜色(已通过媒体查询设置) + } + + // 边框和阴影由 CSS 媒体查询自动处理 + } catch(e) { + // 如果出错,CSS 会通过媒体查询自动处理暗色模式 + // 不设置样式,让 CSS 处理 + } + // 先显示以计算尺寸 tooltip.style.display = 'block'; tooltip.style.left = '-9999px'; @@ -2835,7 +2232,7 @@ function formatRetentionSeconds(seconds, language) { var ctx = canvas.getContext('2d'); ctx.clearRect(0, 0, canvas.width, canvas.height); drawHistoryChart(canvas, [], [], [], 1, 0); - // ui.addNotification(null, E('p', {}, getTranslation('无法获取历史数据', language)), 'error'); + // ui.addNotification(null, E('p', {}, _('Unable to fetch history data')), 'error'); }).finally(function () { isHistoryLoading = false; }); @@ -2892,21 +2289,17 @@ function formatRetentionSeconds(seconds, language) { var trafficDiv = document.getElementById('traffic-status'); var deviceCountDiv = document.getElementById('device-count'); var statsGrid = document.getElementById('stats-grid'); - var language = uci.get('bandix', 'general', 'language'); - if (!language || language === 'auto') { - language = getSystemLanguage(); - } var speedUnit = uci.get('bandix', 'traffic', 'speed_unit') || 'bytes'; var stats = result; if (!stats || !stats.devices) { - trafficDiv.innerHTML = '
' + getTranslation('无法获取数据', language) + '
'; + trafficDiv.innerHTML = '
' + _('Unable to fetch data') + '
'; return; } // 更新设备计数 var onlineCount = stats.devices.filter(d => isDeviceOnline(d)).length; - deviceCountDiv.textContent = getTranslation('在线设备', language) + ': ' + onlineCount + ' / ' + stats.devices.length; + deviceCountDiv.textContent = _('Online Devices') + ': ' + onlineCount + ' / ' + stats.devices.length; // 计算统计数据(包含所有设备) var totalLanUp = stats.devices.reduce((sum, d) => sum + (d.local_tx_bytes || 0), 0); @@ -2926,11 +2319,9 @@ function formatRetentionSeconds(seconds, language) { statsGrid.innerHTML = ''; // LAN 流量卡片 - statsGrid.appendChild(E('div', { 'class': 'stats-card' }, [ - E('div', { 'class': 'stats-card-header' }, [ - E('div', { 'class': 'stats-card-title' }, getTranslation('LAN 流量', language)) - ]), - E('div', { 'style': 'margin-top: 12px; display: flex; flex-direction: column; gap: 8px;' }, [ + statsGrid.appendChild(E('div', { 'class': 'cbi-section' }, [ + E('div', { 'class': 'stats-card-title' }, _('LAN Traffic')), + E('div', { 'style': 'display: flex; flex-direction: column; gap: 8px;' }, [ // 上传行 E('div', { 'style': 'display: flex; align-items: center; gap: 4px;' }, [ E('span', { 'style': 'color: #f97316; font-size: 0.75rem; font-weight: bold;' }, '↑'), @@ -2947,11 +2338,9 @@ function formatRetentionSeconds(seconds, language) { ])); // WAN 流量卡片 - statsGrid.appendChild(E('div', { 'class': 'stats-card' }, [ - E('div', { 'class': 'stats-card-header' }, [ - E('div', { 'class': 'stats-card-title' }, getTranslation('WAN 流量', language)) - ]), - E('div', { 'style': 'margin-top: 12px; display: flex; flex-direction: column; gap: 8px;' }, [ + statsGrid.appendChild(E('div', { 'class': 'cbi-section' }, [ + E('div', { 'class': 'stats-card-title' }, _('WAN Traffic')), + E('div', { 'style': 'display: flex; flex-direction: column; gap: 8px;' }, [ // 上传行 E('div', { 'style': 'display: flex; align-items: center; gap: 4px;' }, [ E('span', { 'style': 'color: #f97316; font-size: 0.75rem; font-weight: bold;' }, '↑'), @@ -2968,11 +2357,9 @@ function formatRetentionSeconds(seconds, language) { ])); // 总流量卡片 - statsGrid.appendChild(E('div', { 'class': 'stats-card' }, [ - E('div', { 'class': 'stats-card-header' }, [ - E('div', { 'class': 'stats-card-title' }, getTranslation('总流量', language)) - ]), - E('div', { 'style': 'margin-top: 12px; display: flex; flex-direction: column; gap: 8px;' }, [ + statsGrid.appendChild(E('div', { 'class': 'cbi-section' }, [ + E('div', { 'class': 'stats-card-title' }, _('Total')), + E('div', { 'style': 'display: flex; flex-direction: column; gap: 8px;' }, [ // 上传行 E('div', { 'style': 'display: flex; align-items: center; gap: 4px;' }, [ E('span', { 'style': 'color: #f97316; font-size: 0.75rem; font-weight: bold;' }, '↑'), @@ -3037,7 +2424,7 @@ function formatRetentionSeconds(seconds, language) { var speedBtn = E('div', { 'class': 'th-split-section' + (currentSortBy === speedKey ? ' active' : ''), 'data-sort': speedKey, - 'title': getTranslation('按速度排序', language) + 'title': _('Sort by Speed') }, [ E('span', { 'class': 'th-split-icon' }, '⚡'), E('span', { 'style': 'font-size: 0.75rem;' }, currentSortBy === speedKey ? (currentSortOrder ? '↑' : '↓') : '') @@ -3050,7 +2437,7 @@ function formatRetentionSeconds(seconds, language) { var trafficBtn = E('div', { 'class': 'th-split-section' + (currentSortBy === trafficKey ? ' active' : ''), 'data-sort': trafficKey, - 'title': getTranslation('按用量排序', language) + 'title': _('Sort by Traffic') }, [ E('span', { 'class': 'th-split-icon' }, '∑'), E('span', { 'style': 'font-size: 0.75rem;' }, currentSortBy === trafficKey ? (currentSortOrder ? '↑' : '↓') : '') @@ -3103,11 +2490,11 @@ function formatRetentionSeconds(seconds, language) { var table = E('table', { 'class': 'bandix-table' }, [ E('thead', {}, [ E('tr', {}, [ - createSortableHeader(getTranslation('设备信息', language), 'hostname'), - createSplitHeader(getTranslation('LAN 流量', language), 'lan_speed', 'lan_traffic'), - createSplitHeader(getTranslation('WAN 流量', language), 'wan_speed', 'wan_traffic'), - E('th', {}, getTranslation('限速设置', language)), - E('th', {}, getTranslation('操作', language)) + createSortableHeader(_('Device Info'), 'hostname'), + createSplitHeader(_('LAN Traffic'), 'lan_speed', 'lan_traffic'), + createSplitHeader(_('WAN Traffic'), 'wan_speed', 'wan_traffic'), + E('th', {}, _('Rate Limit')), + E('th', {}, _('Actions')) ]) ]), E('tbody', {}) @@ -3132,10 +2519,14 @@ function formatRetentionSeconds(seconds, language) { filteredDevices.forEach(function (device) { var isOnline = isDeviceOnline(device); + // 根据主题类型决定按钮显示内容 + var themeType = getThemeType(); + var buttonText = themeType === 'narrow' ? '⚙' : _('Settings'); + var actionButton = E('button', { - 'class': 'action-button', - 'title': getTranslation('设置', language) - }, getTranslation('设置', language)); + 'class': 'cbi-button cbi-button-action', + 'title': _('Settings') + }, buttonText); // 绑定点击事件 actionButton.addEventListener('click', function () { @@ -3177,8 +2568,8 @@ function formatRetentionSeconds(seconds, language) { deviceInfoElements.push( E('div', { 'class': 'device-mac' }, device.mac), E('div', { 'class': 'device-last-online' }, [ - E('span', { 'style': 'color: #6b7280; font-size: 0.75rem;' }, getTranslation('最后上线', language) + ': '), - E('span', { 'style': 'color: #9ca3af; font-size: 0.75rem;' }, formatLastOnlineTime(device.last_online_ts, language)) + E('span', { 'style': 'color: #6b7280; font-size: 0.75rem;' }, _('Last Online') + ': '), + E('span', { 'style': 'color: #9ca3af; font-size: 0.75rem;' }, formatLastOnlineTime(device.last_online_ts)) ]) ); } @@ -3267,6 +2658,111 @@ function formatRetentionSeconds(seconds, language) { // 立即执行一次,不等待轮询 updateDeviceData(); + // 自动适应主题背景色和文字颜色的函数(仅应用于弹窗和 tooltip) + function applyThemeColors() { + try { + // 优先从 cbi-section 获取颜色 + var cbiSection = document.querySelector('.cbi-section'); + var targetElement = cbiSection || document.querySelector('.main') || document.body; + var computedStyle = window.getComputedStyle(targetElement); + var bgColor = computedStyle.backgroundColor; + var textColor = computedStyle.color; + + // 如果无法获取背景色,尝试从其他 cbi-section 获取 + if (!bgColor || bgColor === 'rgba(0, 0, 0, 0)' || bgColor === 'transparent') { + var allCbiSections = document.querySelectorAll('.cbi-section'); + for (var i = 0; i < allCbiSections.length; i++) { + var sectionStyle = window.getComputedStyle(allCbiSections[i]); + var sectionBg = sectionStyle.backgroundColor; + if (sectionBg && sectionBg !== 'rgba(0, 0, 0, 0)' && sectionBg !== 'transparent') { + bgColor = sectionBg; + textColor = sectionStyle.color; + break; + } + } + } + + // 只应用到模态框和 tooltip,不修改页面其他元素 + if (bgColor && bgColor !== 'rgba(0, 0, 0, 0)' && bgColor !== 'transparent') { + // 应用到模态框(确保不透明) + var modal = document.querySelector('.modal'); + if (modal) { + var rgbaMatch = bgColor.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*([\d.]+))?\)/); + if (rgbaMatch) { + var r = parseInt(rgbaMatch[1]); + var g = parseInt(rgbaMatch[2]); + var b = parseInt(rgbaMatch[3]); + var alpha = rgbaMatch[4] ? parseFloat(rgbaMatch[4]) : 1; + if (alpha < 0.95) { + modal.style.backgroundColor = 'rgb(' + r + ', ' + g + ', ' + b + ')'; + } else { + modal.style.backgroundColor = bgColor; + } + } else { + modal.style.backgroundColor = bgColor; + } + } + + // 应用到 tooltip(包括所有 tooltip 实例) + var tooltips = document.querySelectorAll('.history-tooltip'); + tooltips.forEach(function(tooltip) { + var rgbaMatch = bgColor.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*([\d.]+))?\)/); + if (rgbaMatch) { + var r = parseInt(rgbaMatch[1]); + var g = parseInt(rgbaMatch[2]); + var b = parseInt(rgbaMatch[3]); + var alpha = rgbaMatch[4] ? parseFloat(rgbaMatch[4]) : 1; + if (alpha < 0.95) { + tooltip.style.backgroundColor = 'rgb(' + r + ', ' + g + ', ' + b + ')'; + } else { + tooltip.style.backgroundColor = bgColor; + } + } else { + tooltip.style.backgroundColor = bgColor; + } + }); + } + + // 检测文字颜色并应用(仅应用到模态框和 tooltip) + if (textColor && textColor !== 'rgba(0, 0, 0, 0)') { + // 应用到模态框的文字颜色 + var modal = document.querySelector('.modal'); + if (modal) { + modal.style.color = textColor; + } + + // 应用到 tooltip 的文字颜色 + var tooltips = document.querySelectorAll('.history-tooltip'); + tooltips.forEach(function(tooltip) { + tooltip.style.color = textColor; + }); + } + } catch (e) { + // 如果检测失败,使用默认值 + console.log('Theme adaptation:', e); + } + } + + // 初始应用主题颜色 + setTimeout(applyThemeColors, 100); + + // 监听 DOM 变化,自动应用到新创建的元素 + if (typeof MutationObserver !== 'undefined') { + var observer = new MutationObserver(function(mutations) { + applyThemeColors(); + }); + + setTimeout(function() { + var container = document.querySelector('.bandix-container'); + if (container) { + observer.observe(container, { + childList: true, + subtree: true + }); + } + }, 200); + } + return view; } }); diff --git a/luci-app-bandix/htdocs/luci-static/resources/view/bandix/settings.js b/luci-app-bandix/htdocs/luci-static/resources/view/bandix/settings.js index fbc24da..54f1258 100644 --- a/luci-app-bandix/htdocs/luci-static/resources/view/bandix/settings.js +++ b/luci-app-bandix/htdocs/luci-static/resources/view/bandix/settings.js @@ -5,432 +5,8 @@ 'require uci'; 'require fs'; -const translations = { - 'zh-cn': { - '基本设置': '基本设置', - '流量监控设置': '流量监控设置', - '连接监控设置': '连接监控设置', - 'DNS监控设置': 'DNS监控设置', - 'Bandix 基本配置': 'Bandix 基本配置', - '配置 Bandix 服务的基本参数': '配置 Bandix 服务的基本参数', - 'Bandix 流量监控配置': 'Bandix 流量监控配置', - '配置流量监控相关参数': '配置流量监控相关参数', - 'Bandix 连接监控配置': 'Bandix 连接监控配置', - '配置连接监控相关参数': '配置连接监控相关参数', - 'Bandix DNS监控配置': 'Bandix DNS监控配置', - '配置DNS监控相关参数': '配置DNS监控相关参数', - '启用': '启用', - '启用 Bandix 流量监控服务': '启用 Bandix 流量监控服务', - '启用流量监控': '启用流量监控', - '启用连接监控': '启用连接监控', - '界面语言': '界面语言', - '选择 Bandix 流量监控的显示语言': '选择 Bandix 流量监控的显示语言', - '简体中文': '简体中文', - '繁体中文': '繁体中文', - '端口': '端口', - 'Bandix 服务监听的端口': 'Bandix 服务监听的端口', - '监控网卡': '监控网卡', - '选择要监控的网络接口': '选择要监控的LAN网络接口', - '网速单位': '网速单位', - '选择网速显示的单位格式': '选择网速显示的单位格式', - '字节单位 (B/s, KB/s, MB/s)': '字节单位 (B/s, KB/s, MB/s)', - '比特单位 (bps, Kbps, Mbps)': '比特单位 (bps, Kbps, Mbps)', - '界面主题': '界面主题', - '选择 Bandix 流量监控的显示主题': '选择 Bandix 流量监控的显示主题', - '跟随系统': '跟随系统', - '明亮模式': '明亮模式', - '暗黑模式': '暗黑模式', - '意见反馈': '意见反馈', - '日志级别': '日志级别', - '设置 Bandix 服务的日志级别': '设置 Bandix 服务的日志级别', - '离线超时时间': '离线超时时间', - '设置设备离线判断的超时时间(秒)': '设置设备离线判断的超时时间(秒)。超过此时间未活动的设备将被标记为离线', - '历史流量周期': '历史流量周期', - '设置历史流量数据周期': '10分钟下,1个设备固定占用约60KB,修改会清空已有数据。\n由于ubus单次通信限制,无法设置更大的值。', - '数据 flush 间隔': '数据 flush 间隔', - '设置数据 flush 间隔': '设置数据写入磁盘的时间间隔', - '1 分钟': '1 分钟', - '5 分钟': '5 分钟', - '10 分钟': '10 分钟', - '15 分钟': '15 分钟', - '20 分钟': '20 分钟', - '25 分钟': '25 分钟', - '30 分钟': '30 分钟', - '1 小时': '1 小时', - '2 小时': '2 小时', - '数据目录': '数据目录', - 'Bandix 数据存储目录': 'Bandix 数据存储目录', - '启用 Bandix 连接监控功能': '启用 Bandix 连接监控功能', - '启用 Bandix DNS监控功能': '启用 Bandix DNS监控功能', - 'DNS最大记录数': 'DNS最大记录数', - '设置DNS查询记录的最大保存数量': '设置DNS查询记录的最大保存数量,超过此数量将删除最旧的记录', - '持久化历史数据': '持久化历史数据', - '启用数据持久化功能': '启用数据持久化功能,只有启用此选项后才会持久化到磁盘' - }, - 'zh-tw': { - '基本设置': '基本設置', - '流量监控设置': '流量監控設置', - '连接监控设置': '連接監控設置', - 'DNS监控设置': 'DNS監控設置', - 'Bandix 基本配置': 'Bandix 基本配置', - '配置 Bandix 服务的基本参数': '配置 Bandix 服務的基本參數', - 'Bandix 流量监控配置': 'Bandix 流量監控配置', - '配置流量监控相关参数': '配置流量監控相關參數', - 'Bandix 连接监控配置': 'Bandix 連接監控配置', - '配置连接监控相关参数': '配置連接監控相關參數', - 'Bandix DNS监控配置': 'Bandix DNS監控配置', - '配置DNS监控相关参数': '配置DNS監控相關參數', - '启用': '啟用', - '启用 Bandix 流量监控服务': '啟用 Bandix 流量監控服務', - '启用流量监控': '啟用流量監控', - '启用连接监控': '啟用連接監控', - '界面语言': '界面語言', - '选择 Bandix 流量监控的显示语言': '選擇 Bandix 流量監控的顯示語言', - '简体中文': '簡體中文', - '繁体中文': '繁體中文', - '端口': '端口', - 'Bandix 服务监听的端口': 'Bandix 服務監聽的端口', - '监控网卡': '監控網卡', - '选择要监控的网络接口': '選擇要監控的LAN網絡接口', - '网速单位': '網速單位', - '选择网速显示的单位格式': '選擇網速顯示的單位格式', - '字节单位 (B/s, KB/s, MB/s)': '字節單位 (B/s, KB/s, MB/s)', - '比特单位 (bps, Kbps, Mbps)': '比特單位 (bps, Kbps, Mbps)', - '界面主题': '介面主題', - '选择 Bandix 流量监控的显示主题': '選擇 Bandix 流量監控的顯示主題', - '跟随系统': '跟隨系統', - '明亮模式': '明亮模式', - '暗黑模式': '暗黑模式', - '意见反馈': '意見反饋', - '日志级别': '日誌級別', - '设置 Bandix 服务的日志级别': '設置 Bandix 服務的日誌級別', - '离线超时时间': '離線超時時間', - '设置设备离线判断的超时时间(秒)': '設定設備離線判斷的超時時間(秒)。超過此時間未活動的設備將被標記為離線', - '历史流量周期': '歷史流量週期', - '设置历史流量数据周期': '10分鐘下,1個設備固定占用約60KB,修改會清空已有資料。\n由於ubus單次通信限制,無法設置更大的值。', - '数据 flush 间隔': '資料flush間隔', - '设置数据 flush 间隔': '設定資料寫入磁碟的時間間隔', - '1 分钟': '1 分鐘', - '5 分钟': '5 分鐘', - '10 分钟': '10 分鐘', - '15 分钟': '15 分鐘', - '20 分钟': '20 分鐘', - '25 分钟': '25 分鐘', - '30 分钟': '30 分鐘', - '1 小时': '1 小時', - '2 小时': '2 小時', - '数据目录': '數據目錄', - 'Bandix 数据存储目录': 'Bandix 數據存儲目錄', - '启用 Bandix 连接监控功能': '啟用 Bandix 連接監控功能', - '启用 Bandix DNS监控功能': '啟用 Bandix DNS監控功能', - 'DNS最大记录数': 'DNS最大記錄數', - '设置DNS查询记录的最大保存数量': '設定DNS查詢記錄的最大保存數量,超過此數量將刪除最舊的記錄', - '持久化历史数据': '持久化歷史數據', - '启用数据持久化功能': '啟用數據持久化功能,只有啟用此選項後才會持久化到磁碟' - }, - 'en': { - '基本设置': 'Basic Settings', - '流量监控设置': 'Traffic Monitor Settings', - '连接监控设置': 'Connection Monitor Settings', - 'DNS监控设置': 'DNS Monitor Settings', - 'Bandix 基本配置': 'Bandix Basic Configuration', - '配置 Bandix 服务的基本参数': 'Configure basic parameters for Bandix service', - 'Bandix 流量监控配置': 'Bandix Traffic Monitor Configuration', - '配置流量监控相关参数': 'Configure traffic monitoring related parameters', - 'Bandix 连接监控配置': 'Bandix Connection Monitor Configuration', - '配置连接监控相关参数': 'Configure connection monitoring related parameters', - 'Bandix DNS监控配置': 'Bandix DNS Monitor Configuration', - '配置DNS监控相关参数': 'Configure DNS monitoring related parameters', - '启用': 'Enable', - '启用 Bandix 流量监控服务': 'Enable Bandix Traffic Monitor Service', - '启用流量监控': 'Enable Traffic Monitoring', - '启用连接监控': 'Enable Connection Monitoring', - '启用DNS监控': 'Enable DNS Monitoring', - '界面语言': 'Interface Language', - '选择 Bandix 流量监控的显示语言': 'Select the display language for Bandix Traffic Monitor', - '简体中文': 'Simplified Chinese', - '繁体中文': 'Traditional Chinese', - '端口': 'Port', - 'Bandix 服务监听的端口': 'Port for Bandix service to listen on', - '监控网卡': 'Monitor Interface', - '选择要监控的网络接口': 'Select the LAN network interface to monitor', - '网速单位': 'Speed Units', - '选择网速显示的单位格式': 'Select the speed display unit format', - '字节单位 (B/s, KB/s, MB/s)': 'Bytes Units (B/s, KB/s, MB/s)', - '比特单位 (bps, Kbps, Mbps)': 'Bits Units (bps, Kbps, Mbps)', - '界面主题': 'Interface Theme', - '选择 Bandix 流量监控的显示主题': 'Select the display theme for Bandix Traffic Monitor', - '跟随系统': 'Follow System', - '明亮模式': 'Light Mode', - '暗黑模式': 'Dark Mode', - '意见反馈': 'Feedback', - '日志级别': 'Log Level', - '设置 Bandix 服务的日志级别': 'Set the log level for Bandix service', - '离线超时时间': 'Offline Timeout', - '设置设备离线判断的超时时间(秒)': 'Set the timeout for device offline detection (seconds). Devices inactive for longer than this time will be marked as offline', - '历史流量周期': 'Traffic History Period', - '设置历史流量数据周期': 'With 10-minute interval, 1 device uses a fixed size of about 60 KB, changing will clear existing data.\nDue to ubus single communication limit, larger values cannot be set.', - '数据 flush 间隔': 'Data Flush Interval', - '设置数据 flush 间隔': 'Set the interval for flushing data to disk', - '1 分钟': '1 minute', - '5 分钟': '5 minutes', - '10 分钟': '10 minutes', - '15 分钟': '15 minutes', - '20 分钟': '20 minutes', - '25 分钟': '25 minutes', - '30 分钟': '30 minutes', - '1 小时': '1 hour', - '2 小时': '2 hours', - '数据目录': 'Data Directory', - 'Bandix 数据存储目录': 'Bandix data storage directory', - '启用 Bandix 连接监控功能': 'Enable Bandix connection monitoring', - '启用 Bandix DNS监控功能': 'Enable Bandix DNS monitoring', - 'DNS最大记录数': 'DNS Max Records', - '设置DNS查询记录的最大保存数量': 'Set the maximum number of DNS query records to keep. Older records will be deleted when this limit is exceeded', - '持久化历史数据': 'Persist History Data', - '启用数据持久化功能': 'Enable data persistence functionality, data will only be persisted to disk when this option is enabled' - }, - 'fr': { - '基本设置': 'Paramètres de Base', - '流量监控设置': 'Paramètres de Surveillance du Trafic', - '连接监控设置': 'Paramètres de Surveillance des Connexions', - 'DNS监控设置': 'Paramètres de Surveillance DNS', - 'Bandix 基本配置': 'Configuration de Base Bandix', - '配置 Bandix 服务的基本参数': 'Configurer les paramètres de base du service Bandix', - 'Bandix 流量监控配置': 'Configuration de Surveillance du Trafic Bandix', - '配置流量监控相关参数': 'Configurer les paramètres liés à la surveillance du trafic', - 'Bandix 连接监控配置': 'Configuration de Surveillance des Connexions Bandix', - '配置连接监控相关参数': 'Configurer les paramètres liés à la surveillance des connexions', - 'Bandix DNS监控配置': 'Configuration de Surveillance DNS Bandix', - '配置DNS监控相关参数': 'Configurer les paramètres liés à la surveillance DNS', - '启用': 'Activer', - '启用 Bandix 流量监控服务': 'Activer le Service de Surveillance du Trafic Bandix', - '启用流量监控': 'Activer la Surveillance du Trafic', - '启用连接监控': 'Activer la Surveillance des Connexions', - '启用DNS监控': 'Activer la Surveillance DNS', - '界面语言': 'Langue de l\'Interface', - '选择 Bandix 流量监控的显示语言': 'Sélectionner la langue d\'affichage pour le Moniteur de Trafic Bandix', - '简体中文': 'Chinois Simplifié', - '繁体中文': 'Chinois Traditionnel', - '端口': 'Port', - 'Bandix 服务监听的端口': 'Port d\'écoute du service Bandix', - '监控网卡': 'Interface de Surveillance', - '选择要监控的网络接口': 'Sélectionner l\'interface réseau LAN à surveiller', - '网速单位': 'Unités de Vitesse', - '选择网速显示的单位格式': 'Sélectionner le format d\'unité d\'affichage de la vitesse', - '字节单位 (B/s, KB/s, MB/s)': 'Unités d\'Octets (B/s, KB/s, MB/s)', - '比特单位 (bps, Kbps, Mbps)': 'Unités de Bits (bps, Kbps, Mbps)', - '界面主题': 'Thème de l\'Interface', - '选择 Bandix 流量监控的显示主题': 'Sélectionner le thème d\'affichage pour le Moniteur de Trafic Bandix', - '跟随系统': 'Suivre le Système', - '明亮模式': 'Mode Clair', - '暗黑模式': 'Mode Sombre', - '意见反馈': 'Commentaires', - '日志级别': 'Niveau de Journal', - '设置 Bandix 服务的日志级别': 'Définir le niveau de journal pour le service Bandix', - '离线超时时间': 'Délai d\'expiration hors ligne', - '设置设备离线判断的超时时间(秒)': 'Définir le délai d\'expiration pour la détection hors ligne des appareils (secondes). Les appareils inactifs plus longtemps que cette durée seront marqués comme hors ligne', - '历史流量周期': 'Période d\'Historique du Trafic', - '设置历史流量数据周期': "Avec un intervalle de 10 minutes, 1 appareil occupe environ 60 Ko (taille fixe), la modification effacera les données existantes.\nEn raison de la limite de communication unique d'ubus, des valeurs plus importantes ne peuvent pas être définies.", - '数据 flush 间隔': 'Intervalle de flush', - '设置数据 flush 间隔': 'Définir l\'intervalle pour effectuer le flush des données sur le disque', - '1 分钟': '1 minute', - '5 分钟': '5 minutes', - '10 分钟': '10 minutes', - '15 分钟': '15 minutes', - '20 分钟': '20 minutes', - '25 分钟': '25 minutes', - '30 分钟': '30 minutes', - '1 小时': '1 heure', - '2 小时': '2 heures', - '数据目录': 'Répertoire de Données', - 'Bandix 数据存储目录': 'Répertoire de stockage de données Bandix', - '启用 Bandix 连接监控功能': 'Activer la surveillance des connexions Bandix', - '启用 Bandix DNS监控功能': 'Activer la surveillance DNS Bandix', - 'DNS最大记录数': 'Nombre Maximum d\'Enregistrements DNS', - '设置DNS查询记录的最大保存数量': 'Définir le nombre maximum d\'enregistrements de requêtes DNS à conserver. Les enregistrements plus anciens seront supprimés lorsque cette limite est dépassée', - '持久化历史数据': 'Persister les Données Historiques', - '启用数据持久化功能': 'Activer la fonctionnalité de persistance des données, les données ne seront persistées sur le disque que lorsque cette option est activée' - }, - 'ja': { - '基本设置': '基本設定', - '流量监控设置': 'トラフィック監視設定', - '连接监控设置': '接続監視設定', - 'DNS监控设置': 'DNS監視設定', - 'Bandix 基本配置': 'Bandix 基本設定', - '配置 Bandix 服务的基本参数': 'Bandix サービスの基本パラメータを設定', - 'Bandix 流量监控配置': 'Bandix トラフィック監視設定', - '配置流量监控相关参数': 'トラフィック監視関連パラメータを設定', - 'Bandix 连接监控配置': 'Bandix 接続監視設定', - '配置连接监控相关参数': '接続監視関連パラメータを設定', - 'Bandix DNS监控配置': 'Bandix DNS監視設定', - '配置DNS监控相关参数': 'DNS監視関連パラメータを設定', - '启用': '有効', - '启用 Bandix 流量监控服务': 'Bandix トラフィックモニターサービスを有効にする', - '启用流量监控': 'トラフィック監視を有効にする', - '启用连接监控': '接続監視を有効にする', - '启用DNS监控': 'DNS監視を有効にする', - '界面语言': 'インターフェース言語', - '选择 Bandix 流量监控的显示语言': 'Bandix トラフィックモニターの表示言語を選択', - '简体中文': '簡体字中国語', - '繁体中文': '繁体字中国語', - '端口': 'ポート', - 'Bandix 服务监听的端口': 'Bandix サービスのリッスンポート', - '监控网卡': '監視インターフェース', - '选择要监控的网络接口': '監視するLANネットワークインターフェースを選択', - '网速单位': '速度単位', - '选择网速显示的单位格式': '速度表示の単位形式を選択', - '字节单位 (B/s, KB/s, MB/s)': 'バイト単位 (B/s, KB/s, MB/s)', - '比特单位 (bps, Kbps, Mbps)': 'ビット単位 (bps, Kbps, Mbps)', - '界面主题': 'インターフェーステーマ', - '选择 Bandix 流量监控的显示主题': 'Bandix トラフィックモニターの表示テーマを選択', - '跟随系统': 'システムに従う', - '明亮模式': 'ライトモード', - '暗黑模式': 'ダークモード', - '意见反馈': 'フィードバック', - '日志级别': 'ログレベル', - '设置 Bandix 服务的日志级别': 'Bandix サービスのログレベルを設定', - '离线超时时间': 'オフラインタイムアウト', - '设置设备离线判断的超时时间(秒)': 'デバイスのオフライン検出のタイムアウト時間(秒)を設定。この時間を超えて非アクティブなデバイスはオフラインとしてマークされます', - '历史流量周期': 'トラフィック履歴期間', - '设置历史流量数据周期': '10分間隔では、1台のデバイスで固定サイズとして約60KBを使用し、変更すると既存データがクリアされます。\nubusの単一通信制限により、より大きな値を設定することはできません。', - '数据 flush 间隔': 'データflush間隔', - '设置数据 flush 间隔': 'データをディスクにflushする間隔を設定', - '1 分钟': '1 分', - '5 分钟': '5 分', - '10 分钟': '10 分', - '15 分钟': '15 分', - '20 分钟': '20 分', - '25 分钟': '25 分', - '30 分钟': '30 分', - '1 小时': '1 時間', - '2 小时': '2 時間', - '数据目录': 'データディレクトリ', - 'Bandix 数据存储目录': 'Bandix データ保存ディレクトリ', - '启用 Bandix 连接监控功能': 'Bandix 接続監視機能を有効にする', - '启用 Bandix DNS监控功能': 'Bandix DNS監視機能を有効にする', - 'DNS最大记录数': 'DNS最大記録数', - '设置DNS查询记录的最大保存数量': 'DNSクエリ記録の最大保存数を設定。この数を超えると、最も古い記録が削除されます', - '持久化历史数据': '履歴データの永続化', - '启用数据持久化功能': 'データ永続化機能を有効にする。このオプションが有効な場合のみ、データがディスクに永続化されます' - }, - 'ru': { - '基本设置': 'Основные Настройки', - '流量监控设置': 'Настройки Мониторинга Трафика', - '连接监控设置': 'Настройки Мониторинга Соединений', - 'DNS监控设置': 'Настройки Мониторинга DNS', - 'Bandix 基本配置': 'Базовая Конфигурация Bandix', - '配置 Bandix 服务的基本参数': 'Настроить основные параметры службы Bandix', - 'Bandix 流量监控配置': 'Конфигурация Мониторинга Трафика Bandix', - '配置流量监控相关参数': 'Настроить параметры, связанные с мониторингом трафика', - 'Bandix 连接监控配置': 'Конфигурация Мониторинга Соединений Bandix', - '配置连接监控相关参数': 'Настроить параметры, связанные с мониторингом соединений', - 'Bandix DNS监控配置': 'Конфигурация Мониторинга DNS Bandix', - '配置DNS监控相关参数': 'Настроить параметры, связанные с мониторингом DNS', - '启用': 'Включить', - '启用 Bandix 流量监控服务': 'Включить Службу Мониторинга Трафика Bandix', - '启用流量监控': 'Включить Мониторинг Трафика', - '启用连接监控': 'Включить Мониторинг Соединений', - '启用DNS监控': 'Включить Мониторинг DNS', - '界面语言': 'Язык Интерфейса', - '选择 Bandix 流量监控的显示语言': 'Выберите язык отображения для Монитора Трафика Bandix', - '简体中文': 'Упрощенный Китайский', - '繁体中文': 'Традиционный Китайский', - '端口': 'Порт', - 'Bandix 服务监听的端口': 'Порт прослушивания службы Bandix', - '监控网卡': 'Интерфейс Мониторинга', - '选择要监控的网络接口': 'Выберите сетевой интерфейс LAN для мониторинга', - '网速单位': 'Единицы Скорости', - '选择网速显示的单位格式': 'Выберите формат единиц отображения скорости', - '字节单位 (B/s, KB/s, MB/s)': 'Единицы Байтов (B/s, KB/s, MB/s)', - '比特单位 (bps, Kbps, Mbps)': 'Единицы Битов (bps, Kbps, Mbps)', - '界面主题': 'Тема Интерфейса', - '选择 Bandix 流量监控的显示主题': 'Выберите тему отображения для Монитора Трафика Bandix', - '跟随系统': 'Следовать Системе', - '明亮模式': 'Светлый Режим', - '暗黑模式': 'Темный Режим', - '意见反馈': 'Обратная связь', - '日志级别': 'Уровень Журналирования', - '设置 Bandix 服务的日志级别': 'Установить уровень журналирования для службы Bandix', - '离线超时时间': 'Таймаут отключения', - '设置设备离线判断的超时时间(秒)': 'Установить таймаут для обнаружения отключения устройств (секунды). Устройства, неактивные дольше этого времени, будут помечены как отключенные', - '历史流量周期': 'Период Истории Трафика', - '设置历史流量数据周期': 'При интервале 10 минут одно устройство занимает около 60 КБ (фиксированный размер), изменение очистит существующие данные.\nИз-за ограничения единичной связи ubus нельзя установить большие значения.', - '数据 flush 间隔': 'Интервал flush данных', - '设置数据 flush 间隔': 'Установить интервал flush данных на диск', - '1 分钟': '1 минута', - '5 分钟': '5 минут', - '10 分钟': '10 минут', - '15 分钟': '15 минут', - '20 分钟': '20 минут', - '25 分钟': '25 минут', - '30 分钟': '30 минут', - '1 小时': '1 час', - '2 小时': '2 часа', - '数据目录': 'Каталог Данных', - 'Bandix 数据存储目录': 'Каталог хранения данных Bandix', - '启用 Bandix 连接监控功能': 'Включить мониторинг соединений Bandix', - '启用 Bandix DNS监控功能': 'Включить мониторинг DNS Bandix', - 'DNS最大记录数': 'Максимальное Количество Записей DNS', - '设置DNS查询记录的最大保存数量': 'Установить максимальное количество записей DNS-запросов для хранения. Более старые записи будут удалены при превышении этого лимита', - '持久化历史数据': 'Персистентность Исторических Данных', - '启用数据持久化功能': 'Включить функциональность персистентности данных, данные будут сохраняться на диск только при включении этой опции' - } -}; -function getTranslation(key, language) { - return translations[language]?.[key] || key; -} - -// 获取系统语言并返回支持的语言代码 -function getSystemLanguage() { - // 尝试获取 LuCI 的语言设置 - var luciLang = uci.get('luci', 'main', 'lang'); - - if (luciLang && translations[luciLang]) { - return luciLang; - } - - // 如果没有 LuCI 语言设置,尝试获取浏览器语言作为回退 - var systemLang = document.documentElement.lang || 'en'; - - // 检查是否支持该语言 - if (translations[systemLang]) { - return systemLang; - } - - // 如果不支持,返回英语 - return 'en'; -} - -function isDarkMode() { - // 首先检查用户设置的主题 - var userTheme = uci.get('bandix', 'general', 'theme'); - if (userTheme) { - if (userTheme === 'dark') { - return true; - } else if (userTheme === 'light') { - return false; - } - // 如果是 'auto',继续检查系统主题 - } - - // 获取 LuCI 主题设置 - var mediaUrlBase = uci.get('luci', 'main', 'mediaurlbase'); - if (mediaUrlBase && mediaUrlBase.toLowerCase().includes('dark')) { - return true; - } - - // 如果是 argon 主题,检查 argon 配置 - if (mediaUrlBase && mediaUrlBase.toLowerCase().includes('argon')) { - var argonMode = uci.get('argon', '@global[0]', 'mode'); - if (argonMode && argonMode.toLowerCase().includes('dark')) { - return true; - } - } - - return false; -} +// 暗色模式检测已改为使用 CSS 媒体查询 @media (prefers-color-scheme: dark) return view.extend({ load: function () { @@ -438,7 +14,7 @@ return view.extend({ uci.load('bandix'), uci.load('network'), uci.load('luci'), - uci.load('argon').catch(function() { + uci.load('argon').catch(function () { // argon 配置可能不存在,忽略错误 return null; }) @@ -449,7 +25,7 @@ return view.extend({ var m, s, o; var networkConfig = uci.sections('network', 'device'); var physicalInterfaces = []; - + // 确保UCI section存在,否则表单不会显示 if (!uci.get('bandix', 'general')) { uci.add('bandix', 'general', 'general'); @@ -463,113 +39,6 @@ return view.extend({ if (!uci.get('bandix', 'dns')) { uci.add('bandix', 'dns', 'dns'); } - - var language = uci.get('bandix', 'general', 'language'); - if (!language || language === 'auto') { - language = getSystemLanguage(); - } - var darkMode = isDarkMode(); - - // 添加暗黑模式样式支持 - if (darkMode) { - var style = E('style', {}, ` - body, .main { - background-color: #0f172a !important; - color: #e2e8f0 !important; - } - - .cbi-section { - background-color: #1E1E1E !important; - - border-radius: 8px !important; - } - - .cbi-section h3 { - color: #f1f5f9 !important; - background-color: #333333 !important; - border-bottom: 1px solid #1E1E1E !important; - } - - .cbi-section-descr { - color: #94a3b8 !important; - } - - .cbi-value { - border-bottom: 1px solid #1E1E1E !important; - } - - .cbi-value-title { - color: #e2e8f0 !important; - } - - .cbi-value-description { - color: #94a3b8 !important; - } - - input[type="text"], input[type="number"], select, textarea { - background-color: #333333 !important; - - color: #e2e8f0 !important; - } - - input[type="text"]:focus, input[type="number"]:focus, select:focus, textarea:focus { - border-color: #3b82f6 !important; - box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2) !important; - } - - input[type="checkbox"] { - accent-color: #3b82f6 !important; - } - - .cbi-button, .btn { - background-color: #333333 !important; - - color: #e2e8f0 !important; - } - - .cbi-button:hover, .btn:hover { - background-color: #1E1E1E !important; - } - - .cbi-button-save { - background-color: #3b82f6 !important; - border-color: #3b82f6 !important; - color: white !important; - } - - .cbi-button-save:hover { - background-color: #2563eb !important; - } - - .cbi-section-error { - background-color: #7f1d1d !important; - border-color: #dc2626 !important; - color: #fca5a5 !important; - } - - /* 表格样式 */ - .table { - background-color: #1E1E1E !important; - - } - - .table th { - background-color: #333333 !important; - color: #e2e8f0 !important; - border-bottom: 1px solid #1E1E1E !important; - } - - .table td { - color: #cbd5e1 !important; - border-bottom: 1px solid #1E1E1E !important; - } - - .table tr:hover { - background-color: #1E1E1E !important; - } - `); - document.head.appendChild(style); - } // 从network配置中提取物理接口名称 if (networkConfig && networkConfig.length > 0) { @@ -599,55 +68,31 @@ return view.extend({ m = new form.Map('bandix'); // 1. 基本设置部分 (general) - s = m.section(form.NamedSection, 'general', 'general', getTranslation('基本设置', language)); - s.description = getTranslation('配置 Bandix 服务的基本参数', language); + s = m.section(form.NamedSection, 'general', 'general', _('Basic Settings')); + s.description = _('Configure basic parameters for Bandix service'); s.addremove = false; - // 添加端口设置选项 - o = s.option(form.Value, 'port', getTranslation('端口', language), - getTranslation('Bandix 服务监听的端口', language)); - o.default = '8686'; - o.datatype = 'port'; - o.placeholder = '8686'; - o.rmempty = false; - - - // 添加网卡选择下拉菜单 - o = s.option(form.ListValue, 'iface', getTranslation('监控网卡', language), - getTranslation('选择要监控的网络接口', language)); - o.rmempty = false; - - // 添加从配置获取的物理接口 - physicalInterfaces.forEach(function (iface) { - o.value(iface, iface); - }); - - // 添加语言选择选项 - o = s.option(form.ListValue, 'language', getTranslation('界面语言', language), - getTranslation('选择 Bandix 流量监控的显示语言', language)); - o.value('auto', getTranslation('跟随系统', language)); - o.value('zh-cn', getTranslation('简体中文', language)); - o.value('zh-tw', getTranslation('繁体中文', language)); - o.value('en', 'English'); - o.value('fr', 'Français'); - o.value('ja', '日本語'); - o.value('ru', 'Русский'); - o.default = 'auto'; + // 添加端口设置选项 + o = s.option(form.Value, 'port', _('Port'), + _('Port for Bandix service to listen on')); + o.default = '8686'; + o.datatype = 'port'; + o.placeholder = '8686'; o.rmempty = false; - // 添加主题选择选项 - o = s.option(form.ListValue, 'theme', getTranslation('界面主题', language), - getTranslation('选择 Bandix 流量监控的显示主题', language)); - o.value('auto', getTranslation('跟随系统', language)); - o.value('light', getTranslation('明亮模式', language)); - o.value('dark', getTranslation('暗黑模式', language)); - o.default = 'auto'; + // 添加网卡选择下拉菜单 + o = s.option(form.ListValue, 'iface', _('Monitor Interface'), + _('Select the LAN network interface to monitor')); o.rmempty = false; + // 添加从配置获取的物理接口 + physicalInterfaces.forEach(function (iface) { + o.value(iface, iface); + }); - // 添加日志级别选择选项 - o = s.option(form.ListValue, 'log_level', getTranslation('日志级别', language), - getTranslation('设置 Bandix 服务的日志级别', language)); + // 添加日志级别选择选项 + o = s.option(form.ListValue, 'log_level', _('Log Level'), + _('Set the log level for Bandix service')); o.value('trace', 'Trace'); o.value('debug', 'Debug'); o.value('info', 'Info'); @@ -657,106 +102,103 @@ return view.extend({ o.rmempty = false; // 添加数据目录设置(只读) - o = s.option(form.DummyValue, 'data_dir', getTranslation('数据目录', language)); + o = s.option(form.DummyValue, 'data_dir', _('Data Directory')); o.default = '/usr/share/bandix'; - o.cfgvalue = function(section_id) { + o.cfgvalue = function (section_id) { return uci.get('bandix', section_id, 'data_dir') || '/usr/share/bandix'; }; // 添加意见反馈信息 - o = s.option(form.DummyValue, 'feedback_info', getTranslation('意见反馈', language)); + o = s.option(form.DummyValue, 'feedback_info', _('Feedback')); o.href = 'https://github.com/timsaya'; - o.cfgvalue = function() { + o.cfgvalue = function () { return 'https://github.com/timsaya'; }; // 2. 流量监控设置部分 (traffic) - s = m.section(form.NamedSection, 'traffic', 'traffic', getTranslation('流量监控设置', language)); - s.description = getTranslation('配置流量监控相关参数', language); + s = m.section(form.NamedSection, 'traffic', 'traffic', _('Traffic Monitor Settings')); + s.description = _('Configure traffic monitoring related parameters'); s.addremove = false; - o = s.option(form.Flag, 'enabled', getTranslation('启用流量监控', language), - getTranslation('启用 Bandix 流量监控服务', language)); + o = s.option(form.Flag, 'enabled', _('Enable Traffic Monitoring'), + _('Enable Bandix Traffic Monitor Service')); o.default = '0'; o.rmempty = false; // 添加网速单位选择选项 - o = s.option(form.ListValue, 'speed_unit', getTranslation('网速单位', language), - getTranslation('选择网速显示的单位格式', language)); - o.value('bytes', getTranslation('字节单位 (B/s, KB/s, MB/s)', language)); - o.value('bits', getTranslation('比特单位 (bps, Kbps, Mbps)', language)); + o = s.option(form.ListValue, 'speed_unit', _('Speed Units'), + _('Select the speed display unit format')); + o.value('bytes', _('Bytes Units (B/s, KB/s, MB/s)')); + o.value('bits', _('Bits Units (bps, Kbps, Mbps)')); o.default = 'bytes'; o.rmempty = false; // 添加离线超时时间(秒) - o = s.option(form.Value, 'offline_timeout', getTranslation('离线超时时间', language), - getTranslation('设置设备离线判断的超时时间(秒)', language)); + o = s.option(form.Value, 'offline_timeout', _('Offline Timeout'), + _('Set the timeout for device offline detection (seconds). Devices inactive for longer than this time will be marked as offline')); o.datatype = 'uinteger'; o.placeholder = '600'; o.default = '600'; o.rmempty = true; // 添加持久化历史数据选项 - o = s.option(form.Flag, 'traffic_persist_history', getTranslation('持久化历史数据', language), - getTranslation('启用数据持久化功能', language)); + o = s.option(form.Flag, 'traffic_persist_history', _('Persist History Data'), + _('Enable data persistence functionality, data will only be persisted to disk when this option is enabled')); o.default = '0'; o.rmempty = false; // 添加数据 flush 间隔(秒) - o = s.option(form.ListValue, 'traffic_flush_interval_seconds', getTranslation('数据 flush 间隔', language), - getTranslation('设置数据 flush 间隔', language)); - o.value('60', getTranslation('1 分钟', language)); - o.value('300', getTranslation('5 分钟', language)); - o.value('600', getTranslation('10 分钟', language)); - o.value('900', getTranslation('15 分钟', language)); - o.value('1200', getTranslation('20 分钟', language)); - o.value('1500', getTranslation('25 分钟', language)); - o.value('1800', getTranslation('30 分钟', language)); - o.value('3600', getTranslation('1 小时', language)); - o.value('7200', getTranslation('2 小时', language)); + o = s.option(form.ListValue, 'traffic_flush_interval_seconds', _('Data Flush Interval'), + _('Set the interval for flushing data to disk')); + o.value('60', _('1 minute')); + o.value('300', _('5 minutes')); + o.value('600', _('10 minutes')); + o.value('900', _('15 minutes')); + o.value('1200', _('20 minutes')); + o.value('1500', _('25 minutes')); + o.value('1800', _('30 minutes')); + o.value('3600', _('1 hour')); + o.value('7200', _('2 hours')); o.default = '600'; o.rmempty = false; o.depends('traffic_persist_history', '1'); - // 添加历史流量周期(秒) - o = s.option(form.ListValue, 'traffic_retention_seconds', getTranslation('历史流量周期', language), - getTranslation('设置历史流量数据周期', language)); - o.value('60', getTranslation('1 分钟', language)); - o.value('300', getTranslation('5 分钟', language)); - o.value('600', getTranslation('10 分钟', language)); - o.value('900', getTranslation('15 分钟', language)); - o.value('1200', getTranslation('20 分钟', language)); - o.value('1500', getTranslation('25 分钟', language)); - o.value('1800', getTranslation('30 分钟', language)); + o = s.option(form.ListValue, 'traffic_retention_seconds', _('Traffic History Period'), + _('10 minutes interval uses about 60 KB per device')); + o.value('60', _('1 minute')); + o.value('300', _('5 minutes')); + o.value('600', _('10 minutes')); + o.value('900', _('15 minutes')); + o.value('1200', _('20 minutes')); + o.value('1500', _('25 minutes')); + o.value('1800', _('30 minutes')); o.default = '600'; o.rmempty = false; - - // 3. 连接监控设置部分 (connections) - s = m.section(form.NamedSection, 'connections', 'connections', getTranslation('连接监控设置', language)); - s.description = getTranslation('配置连接监控相关参数', language); + s = m.section(form.NamedSection, 'connections', 'connections', _('Connection Monitor Settings')); + s.description = _('Configure connection monitoring related parameters'); s.addremove = false; - o = s.option(form.Flag, 'enabled', getTranslation('启用连接监控', language), - getTranslation('启用 Bandix 连接监控功能', language)); + o = s.option(form.Flag, 'enabled', _('Enable Connection Monitoring'), + _('Enable Bandix connection monitoring')); o.default = '0'; o.rmempty = false; // 4. DNS监控设置部分 (dns) - s = m.section(form.NamedSection, 'dns', 'dns', getTranslation('DNS监控设置', language)); - s.description = getTranslation('配置DNS监控相关参数', language); + s = m.section(form.NamedSection, 'dns', 'dns', _('DNS Monitor Settings')); + s.description = _('Configure DNS monitoring related parameters'); s.addremove = false; - o = s.option(form.Flag, 'enabled', getTranslation('启用DNS监控', language), - getTranslation('启用 Bandix DNS监控功能', language)); + o = s.option(form.Flag, 'enabled', _('Enable DNS Monitoring'), + _('Enable Bandix DNS monitoring')); o.default = '0'; o.rmempty = false; // 添加DNS最大记录数选项 - o = s.option(form.Value, 'dns_max_records', getTranslation('DNS最大记录数', language), - getTranslation('设置DNS查询记录的最大保存数量', language)); + o = s.option(form.Value, 'dns_max_records', _('DNS Max Records'), + _('Set the maximum number of DNS query records to keep. Older records will be deleted when this limit is exceeded')); o.datatype = 'uinteger'; o.placeholder = '10000'; o.default = '10000'; diff --git a/luci-app-bandix/po/es/bandix.po b/luci-app-bandix/po/es/bandix.po new file mode 100644 index 0000000..b9bf0b1 --- /dev/null +++ b/luci-app-bandix/po/es/bandix.po @@ -0,0 +1,735 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" + +msgid "Bandix Traffic Monitor" +msgstr "Monitor de Tráfico Bandix" + +msgid "Loading data..." +msgstr "Cargando datos..." + +msgid "Unable to fetch data" +msgstr "No se pueden obtener los datos" + +msgid "Unable to fetch history data" +msgstr "No se pueden obtener los datos del historial" + +msgid "Hostname" +msgstr "Nombre de host" + +msgid "IP Address" +msgstr "Dirección IP" + +msgid "MAC Address" +msgstr "Dirección MAC" + +msgid "Download Speed" +msgstr "Velocidad de descarga" + +msgid "Upload Speed" +msgstr "Velocidad de carga" + +msgid "Total Download" +msgstr "Descarga total" + +msgid "Total Upload" +msgstr "Carga total" + +msgid "Download Limit" +msgstr "Límite de descarga" + +msgid "Upload Limit" +msgstr "Límite de carga" + +msgid "Interface Language" +msgstr "Idioma de la interfaz" + +msgid "Select the display language for Bandix Traffic Monitor" +msgstr "Seleccione el idioma de visualización para el Monitor de Tráfico Bandix" + +msgid "Device Info" +msgstr "Información del dispositivo" + +msgid "Device List" +msgstr "Lista de dispositivos" + +msgid "LAN Traffic" +msgstr "Tráfico LAN" + +msgid "WAN Traffic" +msgstr "Tráfico WAN" + +msgid "Rate Limit" +msgstr "Límite de velocidad" + +msgid "Actions" +msgstr "Acciones" + +msgid "Online Devices" +msgstr "Dispositivos en línea" + +msgid "WAN Only" +msgstr "Solo WAN" + +msgid "Settings" +msgstr "Configuración" + +msgid "Device Settings" +msgstr "Configuración del dispositivo" + +msgid "Rate Limits" +msgstr "Límites de velocidad" + +msgid "Remove Rate Limit" +msgstr "Eliminar límite de velocidad" + +msgid "Save" +msgstr "Guardar" + +msgid "Cancel" +msgstr "Cancelar" + +msgid "Set Rate Limit" +msgstr "Establecer límite de velocidad" + +msgid "Device" +msgstr "Dispositivo" + +msgid "Set Hostname" +msgstr "Establecer nombre de host" + +msgid "Please enter hostname" +msgstr "Por favor ingrese el nombre de host" + +msgid "Hostname set successfully" +msgstr "Nombre de host establecido correctamente" + +msgid "Failed to set hostname" +msgstr "Error al establecer el nombre de host" + +msgid "Unlimited" +msgstr "Ilimitado" + +msgid "Settings saved successfully" +msgstr "Configuración guardada correctamente" + +msgid "Failed to save settings" +msgstr "Error al guardar la configuración" + +msgid "Please enter a valid speed value" +msgstr "Por favor ingrese un valor de velocidad válido" + +msgid "Speed value must be greater than 0" +msgstr "El valor de velocidad debe ser mayor que 0" + +msgid "Saving..." +msgstr "Guardando..." + +msgid "Rate limiting only applies to WAN traffic." +msgstr "La limitación de velocidad solo se aplica al tráfico WAN." + +msgid "Tip: Enter 0 for unlimited" +msgstr "Consejo: Ingrese 0 para ilimitado" + +msgid "Traffic History" +msgstr "Historial de tráfico" + +msgid "Select Device" +msgstr "Seleccionar dispositivo" + +msgid "All Devices" +msgstr "Todos los dispositivos" + +msgid "Time Range" +msgstr "Rango de tiempo" + +msgid "Last 5 minutes" +msgstr "Últimos 5 minutos" + +msgid "Last 30 minutes" +msgstr "Últimos 30 minutos" + +msgid "Last 2 hours" +msgstr "Últimas 2 horas" + +msgid "Type" +msgstr "Tipo" + +msgid "Total" +msgstr "Total" + +msgid "LAN" +msgstr "Tráfico LAN" + +msgid "WAN" +msgstr "Tráfico WAN" + +msgid "Refresh" +msgstr "Actualizar" + +msgid "Upload Rate" +msgstr "Velocidad de carga" + +msgid "Download Rate" +msgstr "Velocidad de descarga" + +msgid "Last" +msgstr "Último" + +msgid "second" +msgstr "segundo" + +msgid "minute" +msgstr "minuto" + +msgid "hour" +msgstr "hora" + +msgid "day" +msgstr "día" + +msgid "week" +msgstr "semana" + +msgid "Other Rates" +msgstr "Otras velocidades" + +msgid "Cumulative" +msgstr "Acumulado" + +msgid "Total Uploaded" +msgstr "Total cargado" + +msgid "Total Downloaded" +msgstr "Total descargado" + +msgid "LAN Uploaded" +msgstr "LAN cargado" + +msgid "LAN Downloaded" +msgstr "LAN descargado" + +msgid "WAN Uploaded" +msgstr "WAN cargado" + +msgid "WAN Downloaded" +msgstr "WAN descargado" + +msgid "Total Upload" +msgstr "Carga total" + +msgid "Total Download" +msgstr "Descarga total" + +msgid "LAN Upload" +msgstr "Carga LAN" + +msgid "LAN Download" +msgstr "Descarga LAN" + +msgid "WAN Upload" +msgstr "Carga WAN" + +msgid "WAN Download" +msgstr "Descarga WAN" + +msgid "Never Online" +msgstr "Nunca en línea" + +msgid "Just Now" +msgstr "Ahora mismo" + +msgid "min ago" +msgstr "min hace" + +msgid "h ago" +msgstr "h hace" + +msgid "days ago" +msgstr "días hace" + +msgid "months ago" +msgstr "meses hace" + +msgid "years ago" +msgstr "años hace" + +msgid "Last Online" +msgstr "Última vez en línea" + +msgid "Zoom" +msgstr "Zoom" + +msgid "Sort By" +msgstr "Ordenar por" + +msgid "Online Status" +msgstr "Estado en línea" + +msgid "Total Traffic" +msgstr "Tráfico total" + +msgid "Ascending" +msgstr "Ascendente" + +msgid "Descending" +msgstr "Descendente" + +msgid "Sort by Speed" +msgstr "Ordenar por velocidad" + +msgid "Sort by Traffic" +msgstr "Ordenar por tráfico" + +msgid "Simple Mode" +msgstr "Modo simple" + +msgid "Detailed Mode" +msgstr "Modo detallado" + +msgid "Bandix DNS Monitor" +msgstr "Monitor DNS Bandix" + +msgid "DNS Monitor" +msgstr "Monitor DNS" + +msgid "DNS Query Records" +msgstr "Registros de consultas DNS" + +msgid "DNS Statistics" +msgstr "Estadísticas DNS" + +msgid "DNS Monitoring Disabled" +msgstr "Monitoreo DNS deshabilitado" + +msgid "Please enable DNS monitoring in settings" +msgstr "Por favor habilite el monitoreo DNS en la configuración" + +msgid "Go to Settings" +msgstr "Ir a configuración" + +msgid "No Data" +msgstr "Sin datos" + +msgid "Time" +msgstr "Hora" + +msgid "Domain" +msgstr "Dominio" + +msgid "Query Type" +msgstr "Tipo de consulta" + +msgid "Response Code" +msgstr "Código de respuesta" + +msgid "Response Time" +msgstr "Tiempo de respuesta" + +msgid "Source IP" +msgstr "IP de origen" + +msgid "Destination IP" +msgstr "IP de destino" + +msgid "Response IPs" +msgstr "IPs de respuesta" + +msgid "Response Result" +msgstr "Resultado de respuesta" + +msgid "DNS Server" +msgstr "Servidor DNS" + +msgid "Query" +msgstr "Consulta" + +msgid "Response" +msgstr "Respuesta" + +msgid "Filter" +msgstr "Filtro" + +msgid "Domain Filter" +msgstr "Filtro de dominio" + +msgid "Device Filter" +msgstr "Filtro de dispositivo" + +msgid "DNS Server Filter" +msgstr "Filtro de servidor DNS" + +msgid "Type Filter" +msgstr "Filtro de tipo" + +msgid "All" +msgstr "Todos" + +msgid "Queries Only" +msgstr "Solo consultas" + +msgid "Responses Only" +msgstr "Solo respuestas" + +msgid "Search" +msgstr "Buscar" + +msgid "Search Domain" +msgstr "Buscar dominio" + +msgid "Search Device" +msgstr "Buscar dispositivo" + +msgid "Search DNS Server" +msgstr "Buscar servidor DNS" + +msgid "Clear" +msgstr "Limpiar" + +msgid "Previous" +msgstr "Anterior" + +msgid "Next" +msgstr "Siguiente" + +msgid "Page" +msgstr "Página" + +msgid "of" +msgstr "de" + +msgid "Total" +msgstr "Total" + +msgid "records" +msgstr "registros" + +msgid "Per Page" +msgstr "Por página" + +msgid "" +msgstr "" + +msgid "Total Queries" +msgstr "Total de consultas" + +msgid "Total Responses" +msgstr "Total de respuestas" + +msgid "Queries with Response" +msgstr "Consultas con respuesta" + +msgid "Queries without Response" +msgstr "Consultas sin respuesta" + +msgid "Avg Response Time" +msgstr "Tiempo de respuesta promedio" + +msgid "Min Response Time" +msgstr "Tiempo de respuesta mínimo" + +msgid "Max Response Time" +msgstr "Tiempo de respuesta máximo" + +msgid "Success Rate" +msgstr "Tasa de éxito" + +msgid "Success" +msgstr "Éxito" + +msgid "Failure" +msgstr "Fallo" + +msgid "Top Domains" +msgstr "Dominios principales" + +msgid "Top Query Types" +msgstr "Tipos de consulta principales" + +msgid "Top Devices" +msgstr "Dispositivos principales" + +msgid "Top DNS Servers" +msgstr "Servidores DNS principales" + +msgid "Unique Devices" +msgstr "Dispositivos únicos" + +msgid "ms" +msgstr "ms" + +msgid "minutes" +msgstr "minutos" + +msgid "Unknown Device" +msgstr "Dispositivo desconocido" + +msgid "Domain not found" +msgstr "Dominio no encontrado" + +msgid "Server error" +msgstr "Error del servidor" + +msgid "Format error" +msgstr "Error de formato" + +msgid "Refused" +msgstr "Rechazado" + +msgid "Other" +msgstr "Otro" + +msgid "Does not include DoH and DoT" +msgstr "No incluye DoH y DoT" + +msgid "Latest Response Time" +msgstr "Último tiempo de respuesta" + +msgid "Response Code Distribution" +msgstr "Distribución de códigos de respuesta" + +msgid "Response Time Percentiles" +msgstr "Percentiles de tiempo de respuesta" + +msgid "P50" +msgstr "P50" + +msgid "P90" +msgstr "P90" + +msgid "P95" +msgstr "P95" + +msgid "P99" +msgstr "P99" + +msgid "Bandix Connection Monitor" +msgstr "Monitor de Conexión Bandix" + +msgid "Connection Monitor" +msgstr "Monitor de conexión" + +msgid "Device Connection Statistics" +msgstr "Estadísticas de conexión de dispositivos" + +msgid "Global Connection Statistics" +msgstr "Estadísticas de conexión global" + +msgid "Active TCP" +msgstr "TCP activo" + +msgid "Active UDP" +msgstr "UDP activo" + +msgid "Closed TCP" +msgstr "TCP cerrado" + +msgid "Total Connections" +msgstr "Total de conexiones" + +msgid "Last Updated" +msgstr "Última actualización" + +msgid "TCP Connections" +msgstr "Conexiones TCP" + +msgid "UDP Connections" +msgstr "Conexiones UDP" + +msgid "Established TCP" +msgstr "TCP establecido" + +msgid "TIME_WAIT TCP" +msgstr "TIME_WAIT TCP" + +msgid "CLOSE_WAIT TCP" +msgstr "CLOSE_WAIT TCP" + +msgid "Total Devices" +msgstr "Total de dispositivos" + +msgid "Connection Monitor Disabled" +msgstr "Monitor de conexión deshabilitado" + +msgid "Please enable connection monitoring in settings" +msgstr "Por favor habilite el monitoreo de conexión en la configuración" + +msgid "List only shows LAN device connections, data may differ from total connections." +msgstr "La lista solo muestra conexiones de dispositivos LAN, los datos pueden diferir del total de conexiones." + +msgid "TCP Status Details" +msgstr "Detalles del estado TCP" + +msgid "Basic Settings" +msgstr "Configuración básica" + +msgid "Traffic Monitor Settings" +msgstr "Configuración del monitor de tráfico" + +msgid "Connection Monitor Settings" +msgstr "Configuración del monitor de conexión" + +msgid "DNS Monitor Settings" +msgstr "Configuración del monitor DNS" + +msgid "Bandix Basic Configuration" +msgstr "Configuración básica de Bandix" + +msgid "Configure basic parameters for Bandix service" +msgstr "Configurar parámetros básicos para el servicio Bandix" + +msgid "Bandix Traffic Monitor Configuration" +msgstr "Configuración del Monitor de Tráfico Bandix" + +msgid "Configure traffic monitoring related parameters" +msgstr "Configurar parámetros relacionados con el monitoreo de tráfico" + +msgid "Bandix Connection Monitor Configuration" +msgstr "Configuración del Monitor de Conexión Bandix" + +msgid "Configure connection monitoring related parameters" +msgstr "Configurar parámetros relacionados con el monitoreo de conexión" + +msgid "Bandix DNS Monitor Configuration" +msgstr "Configuración del Monitor DNS Bandix" + +msgid "Configure DNS monitoring related parameters" +msgstr "Configurar parámetros relacionados con el monitoreo DNS" + +msgid "Enable" +msgstr "Habilitar" + +msgid "Enable Bandix Traffic Monitor Service" +msgstr "Habilitar servicio del Monitor de Tráfico Bandix" + +msgid "Enable Traffic Monitoring" +msgstr "Habilitar monitoreo de tráfico" + +msgid "Enable Connection Monitoring" +msgstr "Habilitar monitoreo de conexión" + +msgid "Enable DNS Monitoring" +msgstr "Habilitar monitoreo DNS" + +msgid "Simplified Chinese" +msgstr "Chino simplificado" + +msgid "Traditional Chinese" +msgstr "Chino tradicional" + +msgid "Port" +msgstr "Puerto" + +msgid "Port for Bandix service to listen on" +msgstr "Puerto para que el servicio Bandix escuche" + +msgid "Monitor Interface" +msgstr "Interfaz de monitoreo" + +msgid "Select the LAN network interface to monitor" +msgstr "Seleccione la interfaz de red LAN para monitorear" + +msgid "Speed Units" +msgstr "Unidades de velocidad" + +msgid "Select the speed display unit format" +msgstr "Seleccione el formato de unidad de visualización de velocidad" + +msgid "Bytes Units (B/s, KB/s, MB/s)" +msgstr "Unidades de bytes (B/s, KB/s, MB/s)" + +msgid "Bits Units (bps, Kbps, Mbps)" +msgstr "Unidades de bits (bps, Kbps, Mbps)" + +msgid "Interface Theme" +msgstr "Tema de la interfaz" + +msgid "Select the display theme for Bandix Traffic Monitor" +msgstr "Seleccione el tema de visualización para el Monitor de Tráfico Bandix" + +msgid "Follow System" +msgstr "Seguir sistema" + +msgid "Light Mode" +msgstr "Modo claro" + +msgid "Dark Mode" +msgstr "Modo oscuro" + +msgid "Feedback" +msgstr "Comentarios" + +msgid "Log Level" +msgstr "Nivel de registro" + +msgid "Set the log level for Bandix service" +msgstr "Establecer el nivel de registro para el servicio Bandix" + +msgid "Offline Timeout" +msgstr "Tiempo de espera sin conexión" + +msgid "Set the timeout for device offline detection (seconds). Devices inactive for longer than this time will be marked as offline" +msgstr "Establecer el tiempo de espera para la detección de dispositivos sin conexión (segundos). Los dispositivos inactivos por más tiempo serán marcados como sin conexión" + +msgid "Traffic History Period" +msgstr "Período del historial de tráfico" + +msgid "10 minutes interval uses about 60 KB per device" +msgstr "Intervalo de 10 minutos usa aproximadamente 60 KB por dispositivo" + +msgid "Data Flush Interval" +msgstr "Intervalo de vaciado de datos" + +msgid "Set the interval for flushing data to disk" +msgstr "Establecer el intervalo para vaciar datos al disco" + +msgid "1 minute" +msgstr "1 minuto" + +msgid "5 minutes" +msgstr "5 minutos" + +msgid "10 minutes" +msgstr "10 minutos" + +msgid "15 minutes" +msgstr "15 minutos" + +msgid "20 minutes" +msgstr "20 minutos" + +msgid "25 minutes" +msgstr "25 minutos" + +msgid "30 minutes" +msgstr "30 minutos" + +msgid "1 hour" +msgstr "1 hora" + +msgid "2 hours" +msgstr "2 horas" + +msgid "Data Directory" +msgstr "Directorio de datos" + +msgid "Bandix data storage directory" +msgstr "Directorio de almacenamiento de datos de Bandix" + +msgid "Enable Bandix connection monitoring" +msgstr "Habilitar monitoreo de conexión Bandix" + +msgid "Enable Bandix DNS monitoring" +msgstr "Habilitar monitoreo DNS Bandix" + +msgid "DNS Max Records" +msgstr "Registros DNS máximos" + +msgid "Set the maximum number of DNS query records to keep. Older records will be deleted when this limit is exceeded" +msgstr "Establecer el número máximo de registros de consulta DNS para mantener. Los registros más antiguos se eliminarán cuando se exceda este límite" + +msgid "Persist History Data" +msgstr "Persistir datos del historial" + +msgid "Enable data persistence functionality, data will only be persisted to disk when this option is enabled" +msgstr "Habilitar funcionalidad de persistencia de datos, los datos solo se persistirán en el disco cuando esta opción esté habilitada" diff --git a/luci-app-bandix/po/fr/bandix.po b/luci-app-bandix/po/fr/bandix.po new file mode 100644 index 0000000..165d2b1 --- /dev/null +++ b/luci-app-bandix/po/fr/bandix.po @@ -0,0 +1,735 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" + +msgid "Bandix Traffic Monitor" +msgstr "Moniteur de trafic Bandix" + +msgid "Loading data..." +msgstr "Chargement des données..." + +msgid "Unable to fetch data" +msgstr "Impossible de récupérer les données" + +msgid "Unable to fetch history data" +msgstr "无法获取历史数据" + +msgid "Hostname" +msgstr "Nom d'hôte" + +msgid "IP Address" +msgstr "Adresse IP" + +msgid "MAC Address" +msgstr "Adresse MAC" + +msgid "Download Speed" +msgstr "Vitesse de téléchargement" + +msgid "Upload Speed" +msgstr "Vitesse de téléversement" + +msgid "Total Download" +msgstr "Téléchargement total" + +msgid "Total Upload" +msgstr "Téléversement total" + +msgid "Download Limit" +msgstr "Limite de téléchargement" + +msgid "Upload Limit" +msgstr "Limite de téléversement" + +msgid "Interface Language" +msgstr "Langue de l'interface" + +msgid "Select the display language for Bandix Traffic Monitor" +msgstr "Sélectionner la langue d'affichage pour le moniteur de trafic Bandix" + +msgid "Device Info" +msgstr "Informations sur l'appareil" + +msgid "Device List" +msgstr "Liste des appareils" + +msgid "LAN Traffic" +msgstr "Trafic LAN" + +msgid "WAN Traffic" +msgstr "Trafic WAN" + +msgid "Rate Limit" +msgstr "Limite de débit" + +msgid "Actions" +msgstr "Actions" + +msgid "Online Devices" +msgstr "Appareils en ligne" + +msgid "WAN Only" +msgstr "仅限WAN 流量" + +msgid "Settings" +msgstr "Paramètres" + +msgid "Device Settings" +msgstr "Paramètres de l'appareil" + +msgid "Rate Limits" +msgstr "限速设置" + +msgid "Remove Rate Limit" +msgstr "取消限速" + +msgid "Save" +msgstr "Enregistrer" + +msgid "Cancel" +msgstr "Annuler" + +msgid "Set Rate Limit" +msgstr "设置限速" + +msgid "Device" +msgstr "Appareil" + +msgid "Set Hostname" +msgstr "设置主机名" + +msgid "Please enter hostname" +msgstr "请输入主机名" + +msgid "Hostname set successfully" +msgstr "主机名设置成功" + +msgid "Failed to set hostname" +msgstr "主机名设置失败" + +msgid "Unlimited" +msgstr "Illimité" + +msgid "Settings saved successfully" +msgstr "Paramètres enregistrés avec succès" + +msgid "Failed to save settings" +msgstr "Échec de l'enregistrement des paramètres" + +msgid "Please enter a valid speed value" +msgstr "请输入有效的速度值" + +msgid "Speed value must be greater than 0" +msgstr "速度值必须大于0" + +msgid "Saving..." +msgstr "Enregistrement..." + +msgid "Rate limiting only applies to WAN traffic." +msgstr "限速功能仅对 WAN 流量生效。" + +msgid "Tip: Enter 0 for unlimited" +msgstr "提示:输入 0 表示无限制" + +msgid "Traffic History" +msgstr "Historique du trafic" + +msgid "Select Device" +msgstr "Sélectionner un appareil" + +msgid "All Devices" +msgstr "Tous les appareils" + +msgid "Time Range" +msgstr "时间范围" + +msgid "Last 5 minutes" +msgstr "最近5分钟" + +msgid "Last 30 minutes" +msgstr "最近30分钟" + +msgid "Last 2 hours" +msgstr "最近2小时" + +msgid "Type" +msgstr "Type" + +msgid "Total" +msgstr "Total" + +msgid "LAN" +msgstr "LAN 流量" + +msgid "WAN" +msgstr "WAN 流量" + +msgid "Refresh" +msgstr "Actualiser" + +msgid "Upload Rate" +msgstr "Taux de téléversement" + +msgid "Download Rate" +msgstr "Taux de téléchargement" + +msgid "Last" +msgstr "最近" + +msgid "second" +msgstr "秒" + +msgid "minute" +msgstr "分钟" + +msgid "hour" +msgstr "小时" + +msgid "day" +msgstr "天" + +msgid "week" +msgstr "周" + +msgid "Other Rates" +msgstr "其他速率" + +msgid "Cumulative" +msgstr "累计流量" + +msgid "Total Uploaded" +msgstr "总上传" + +msgid "Total Downloaded" +msgstr "总下载" + +msgid "LAN Uploaded" +msgstr "LAN 已上传" + +msgid "LAN Downloaded" +msgstr "LAN 已下载" + +msgid "WAN Uploaded" +msgstr "WAN 已上传" + +msgid "WAN Downloaded" +msgstr "WAN 已下载" + +msgid "Total Upload" +msgstr "Téléversement total" + +msgid "Total Download" +msgstr "Téléchargement total" + +msgid "LAN Upload" +msgstr "LAN 上传速率" + +msgid "LAN Download" +msgstr "LAN 下载速率" + +msgid "WAN Upload" +msgstr "WAN 上传速率" + +msgid "WAN Download" +msgstr "WAN 下载速率" + +msgid "Never Online" +msgstr "Jamais en ligne" + +msgid "Just Now" +msgstr "À l'instant" + +msgid "min ago" +msgstr "min il y a" + +msgid "h ago" +msgstr "h il y a" + +msgid "days ago" +msgstr "jours il y a" + +msgid "months ago" +msgstr "mois il y a" + +msgid "years ago" +msgstr "ans il y a" + +msgid "Last Online" +msgstr "Dernière connexion" + +msgid "Zoom" +msgstr "缩放" + +msgid "Sort By" +msgstr "排序方式" + +msgid "Online Status" +msgstr "在线状态" + +msgid "Total Traffic" +msgstr "总流量" + +msgid "Ascending" +msgstr "升序" + +msgid "Descending" +msgstr "降序" + +msgid "Sort by Speed" +msgstr "按速度排序" + +msgid "Sort by Traffic" +msgstr "按用量排序" + +msgid "Simple Mode" +msgstr "Mode simple" + +msgid "Detailed Mode" +msgstr "Mode détaillé" + +msgid "Bandix DNS Monitor" +msgstr "Moniteur DNS Bandix" + +msgid "DNS Monitor" +msgstr "Moniteur DNS" + +msgid "DNS Query Records" +msgstr "Enregistrements de requêtes DNS" + +msgid "DNS Statistics" +msgstr "DNS 统计信息" + +msgid "DNS Monitoring Disabled" +msgstr "DNS监控未启用" + +msgid "Please enable DNS monitoring in settings" +msgstr "请在设置中启用DNS监控功能" + +msgid "Go to Settings" +msgstr "前往设置" + +msgid "No Data" +msgstr "无数据" + +msgid "Time" +msgstr "Heure" + +msgid "Domain" +msgstr "Domaine" + +msgid "Query Type" +msgstr "Type de requête" + +msgid "Response Code" +msgstr "响应码" + +msgid "Response Time" +msgstr "Temps de réponse" + +msgid "Source IP" +msgstr "源IP" + +msgid "Destination IP" +msgstr "目标IP" + +msgid "Response IPs" +msgstr "响应IP" + +msgid "Response Result" +msgstr "响应结果" + +msgid "DNS Server" +msgstr "Serveur DNS" + +msgid "Query" +msgstr "Requête" + +msgid "Response" +msgstr "Réponse" + +msgid "Filter" +msgstr "过滤" + +msgid "Domain Filter" +msgstr "域名过滤" + +msgid "Device Filter" +msgstr "设备过滤" + +msgid "DNS Server Filter" +msgstr "DNS服务器过滤" + +msgid "Type Filter" +msgstr "类型过滤" + +msgid "All" +msgstr "全部" + +msgid "Queries Only" +msgstr "仅查询" + +msgid "Responses Only" +msgstr "仅响应" + +msgid "Search" +msgstr "Rechercher" + +msgid "Search Domain" +msgstr "搜索域名" + +msgid "Search Device" +msgstr "搜索设备" + +msgid "Search DNS Server" +msgstr "搜索DNS服务器" + +msgid "Clear" +msgstr "清除" + +msgid "Previous" +msgstr "Précédent" + +msgid "Next" +msgstr "Suivant" + +msgid "Page" +msgstr "Page" + +msgid "of" +msgstr "sur" + +msgid "Total" +msgstr "Total" + +msgid "records" +msgstr "enregistrements" + +msgid "Per Page" +msgstr "每页显示" + +msgid "" +msgstr "条" + +msgid "Total Queries" +msgstr "Total des requêtes" + +msgid "Total Responses" +msgstr "总响应数" + +msgid "Queries with Response" +msgstr "有响应查询" + +msgid "Queries without Response" +msgstr "无响应查询" + +msgid "Avg Response Time" +msgstr "平均响应时间" + +msgid "Min Response Time" +msgstr "最快响应时间" + +msgid "Max Response Time" +msgstr "最慢响应时间" + +msgid "Success Rate" +msgstr "Taux de réussite" + +msgid "Success" +msgstr "Succès" + +msgid "Failure" +msgstr "Échec" + +msgid "Top Domains" +msgstr "Domaines les plus consultés" + +msgid "Top Query Types" +msgstr "最常用查询类型" + +msgid "Top Devices" +msgstr "Appareils les plus actifs" + +msgid "Top DNS Servers" +msgstr "最常用DNS服务器" + +msgid "Unique Devices" +msgstr "唯一设备数" + +msgid "ms" +msgstr "毫秒" + +msgid "minutes" +msgstr "分钟" + +msgid "Unknown Device" +msgstr "未知设备" + +msgid "Domain not found" +msgstr "域名未找到" + +msgid "Server error" +msgstr "服务器错误" + +msgid "Format error" +msgstr "格式错误" + +msgid "Refused" +msgstr "拒绝" + +msgid "Other" +msgstr "其他" + +msgid "Does not include DoH and DoT" +msgstr "不包含 DoH 和 DoT" + +msgid "Latest Response Time" +msgstr "最新响应时间" + +msgid "Response Code Distribution" +msgstr "响应码分布" + +msgid "Response Time Percentiles" +msgstr "响应时间百分位" + +msgid "P50" +msgstr "P50" + +msgid "P90" +msgstr "P90" + +msgid "P95" +msgstr "P95" + +msgid "P99" +msgstr "P99" + +msgid "Bandix Connection Monitor" +msgstr "Moniteur de connexion Bandix" + +msgid "Connection Monitor" +msgstr "Moniteur de connexion" + +msgid "Device Connection Statistics" +msgstr "设备连接统计" + +msgid "Global Connection Statistics" +msgstr "全局连接统计" + +msgid "Active TCP" +msgstr "活跃TCP" + +msgid "Active UDP" +msgstr "活跃UDP" + +msgid "Closed TCP" +msgstr "已关闭TCP" + +msgid "Total Connections" +msgstr "Total des connexions" + +msgid "Last Updated" +msgstr "最后更新" + +msgid "TCP Connections" +msgstr "Connexions TCP" + +msgid "UDP Connections" +msgstr "Connexions UDP" + +msgid "Established TCP" +msgstr "已建立TCP" + +msgid "TIME_WAIT TCP" +msgstr "TIME_WAIT TCP" + +msgid "CLOSE_WAIT TCP" +msgstr "CLOSE_WAIT TCP" + +msgid "Total Devices" +msgstr "设备总数" + +msgid "Connection Monitor Disabled" +msgstr "连接监控未启用" + +msgid "Please enable connection monitoring in settings" +msgstr "请在设置中启用连接监控功能" + +msgid "List only shows LAN device connections, data may differ from total connections." +msgstr "列表只显示局域网设备连接,数据可能和总连接数不一致。" + +msgid "TCP Status Details" +msgstr "TCP 状态详情" + +msgid "Basic Settings" +msgstr "Paramètres de base" + +msgid "Traffic Monitor Settings" +msgstr "Paramètres du moniteur de trafic" + +msgid "Connection Monitor Settings" +msgstr "Paramètres du moniteur de connexion" + +msgid "DNS Monitor Settings" +msgstr "Paramètres du moniteur DNS" + +msgid "Bandix Basic Configuration" +msgstr "Bandix 基本配置" + +msgid "Configure basic parameters for Bandix service" +msgstr "配置 Bandix 服务的基本参数" + +msgid "Bandix Traffic Monitor Configuration" +msgstr "Bandix 流量监控配置" + +msgid "Configure traffic monitoring related parameters" +msgstr "配置流量监控相关参数" + +msgid "Bandix Connection Monitor Configuration" +msgstr "Bandix 连接监控配置" + +msgid "Configure connection monitoring related parameters" +msgstr "配置连接监控相关参数" + +msgid "Bandix DNS Monitor Configuration" +msgstr "Bandix DNS监控配置" + +msgid "Configure DNS monitoring related parameters" +msgstr "配置DNS监控相关参数" + +msgid "Enable" +msgstr "Activer" + +msgid "Enable Bandix Traffic Monitor Service" +msgstr "启用 Bandix 流量监控服务" + +msgid "Enable Traffic Monitoring" +msgstr "Activer la surveillance du trafic" + +msgid "Enable Connection Monitoring" +msgstr "Activer la surveillance des connexions" + +msgid "Enable DNS Monitoring" +msgstr "Activer la surveillance DNS" + +msgid "Simplified Chinese" +msgstr "简体中文" + +msgid "Traditional Chinese" +msgstr "繁体中文" + +msgid "Port" +msgstr "Port" + +msgid "Port for Bandix service to listen on" +msgstr "Bandix 服务监听的端口" + +msgid "Monitor Interface" +msgstr "Interface de surveillance" + +msgid "Select the LAN network interface to monitor" +msgstr "选择要监控的LAN网络接口" + +msgid "Speed Units" +msgstr "Unités de vitesse" + +msgid "Select the speed display unit format" +msgstr "选择网速显示的单位格式" + +msgid "Bytes Units (B/s, KB/s, MB/s)" +msgstr "字节单位 (B/s, KB/s, MB/s)" + +msgid "Bits Units (bps, Kbps, Mbps)" +msgstr "比特单位 (bps, Kbps, Mbps)" + +msgid "Interface Theme" +msgstr "界面主题" + +msgid "Select the display theme for Bandix Traffic Monitor" +msgstr "选择 Bandix 流量监控的显示主题" + +msgid "Follow System" +msgstr "跟随系统" + +msgid "Light Mode" +msgstr "明亮模式" + +msgid "Dark Mode" +msgstr "暗黑模式" + +msgid "Feedback" +msgstr "意见反馈" + +msgid "Log Level" +msgstr "Niveau de journalisation" + +msgid "Set the log level for Bandix service" +msgstr "设置 Bandix 服务的日志级别" + +msgid "Offline Timeout" +msgstr "Délai d'expiration hors ligne" + +msgid "Set the timeout for device offline detection (seconds). Devices inactive for longer than this time will be marked as offline" +msgstr "设置设备离线判断的超时时间(秒)。超过此时间未活动的设备将被标记为离线" + +msgid "Traffic History Period" +msgstr "Période d'historique du trafic" + +msgid "10 minutes interval uses about 60 KB per device" +msgstr "Intervalle de 10 minutes utilise environ 60 Ko par appareil" + +msgid "Data Flush Interval" +msgstr "Intervalle de vidage des données" + +msgid "Set the interval for flushing data to disk" +msgstr "设置数据写入磁盘的时间间隔" + +msgid "1 minute" +msgstr "1 minute" + +msgid "5 minutes" +msgstr "5 minutes" + +msgid "10 minutes" +msgstr "10 minutes" + +msgid "15 minutes" +msgstr "15 分钟" + +msgid "20 minutes" +msgstr "20 分钟" + +msgid "25 minutes" +msgstr "25 分钟" + +msgid "30 minutes" +msgstr "30 分钟" + +msgid "1 hour" +msgstr "1 heure" + +msgid "2 hours" +msgstr "2 heures" + +msgid "Data Directory" +msgstr "Répertoire de données" + +msgid "Bandix data storage directory" +msgstr "Bandix 数据存储目录" + +msgid "Enable Bandix connection monitoring" +msgstr "启用 Bandix 连接监控功能" + +msgid "Enable Bandix DNS monitoring" +msgstr "启用 Bandix DNS监控功能" + +msgid "DNS Max Records" +msgstr "Nombre maximum d'enregistrements DNS" + +msgid "Set the maximum number of DNS query records to keep. Older records will be deleted when this limit is exceeded" +msgstr "设置DNS查询记录的最大保存数量,超过此数量将删除最旧的记录" + +msgid "Persist History Data" +msgstr "Persister les données d'historique" + +msgid "Enable data persistence functionality, data will only be persisted to disk when this option is enabled" +msgstr "启用数据持久化功能,只有启用此选项后才会持久化到磁盘" \ No newline at end of file diff --git a/luci-app-bandix/po/id/bandix.po b/luci-app-bandix/po/id/bandix.po new file mode 100644 index 0000000..6e3bea9 --- /dev/null +++ b/luci-app-bandix/po/id/bandix.po @@ -0,0 +1,735 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" + +msgid "Bandix Traffic Monitor" +msgstr "Monitor Lalu Lintas Bandix" + +msgid "Loading data..." +msgstr "Memuat data..." + +msgid "Unable to fetch data" +msgstr "Tidak dapat mengambil data" + +msgid "Unable to fetch history data" +msgstr "Tidak dapat mengambil data riwayat" + +msgid "Hostname" +msgstr "Nama host" + +msgid "IP Address" +msgstr "Alamat IP" + +msgid "MAC Address" +msgstr "Alamat MAC" + +msgid "Download Speed" +msgstr "Kecepatan unduh" + +msgid "Upload Speed" +msgstr "Kecepatan unggah" + +msgid "Total Download" +msgstr "Total unduhan" + +msgid "Total Upload" +msgstr "Total unggahan" + +msgid "Download Limit" +msgstr "Batas unduhan" + +msgid "Upload Limit" +msgstr "Batas unggahan" + +msgid "Interface Language" +msgstr "Bahasa antarmuka" + +msgid "Select the display language for Bandix Traffic Monitor" +msgstr "Pilih bahasa tampilan untuk Monitor Lalu Lintas Bandix" + +msgid "Device Info" +msgstr "Info perangkat" + +msgid "Device List" +msgstr "Daftar perangkat" + +msgid "LAN Traffic" +msgstr "Lalu lintas LAN" + +msgid "WAN Traffic" +msgstr "Lalu lintas WAN" + +msgid "Rate Limit" +msgstr "Batas kecepatan" + +msgid "Actions" +msgstr "Tindakan" + +msgid "Online Devices" +msgstr "Perangkat online" + +msgid "WAN Only" +msgstr "Hanya WAN" + +msgid "Settings" +msgstr "Pengaturan" + +msgid "Device Settings" +msgstr "Pengaturan perangkat" + +msgid "Rate Limits" +msgstr "Batas kecepatan" + +msgid "Remove Rate Limit" +msgstr "Hapus batas kecepatan" + +msgid "Save" +msgstr "Simpan" + +msgid "Cancel" +msgstr "Batal" + +msgid "Set Rate Limit" +msgstr "Atur batas kecepatan" + +msgid "Device" +msgstr "Perangkat" + +msgid "Set Hostname" +msgstr "Atur nama host" + +msgid "Please enter hostname" +msgstr "Masukkan nama host" + +msgid "Hostname set successfully" +msgstr "Nama host berhasil diatur" + +msgid "Failed to set hostname" +msgstr "Gagal mengatur nama host" + +msgid "Unlimited" +msgstr "Tidak terbatas" + +msgid "Settings saved successfully" +msgstr "Pengaturan berhasil disimpan" + +msgid "Failed to save settings" +msgstr "Gagal menyimpan pengaturan" + +msgid "Please enter a valid speed value" +msgstr "Masukkan nilai kecepatan yang valid" + +msgid "Speed value must be greater than 0" +msgstr "Nilai kecepatan harus lebih besar dari 0" + +msgid "Saving..." +msgstr "Menyimpan..." + +msgid "Rate limiting only applies to WAN traffic." +msgstr "Pembatasan kecepatan hanya berlaku untuk lalu lintas WAN." + +msgid "Tip: Enter 0 for unlimited" +msgstr "Tip: Masukkan 0 untuk tidak terbatas" + +msgid "Traffic History" +msgstr "Riwayat lalu lintas" + +msgid "Select Device" +msgstr "Pilih perangkat" + +msgid "All Devices" +msgstr "Semua perangkat" + +msgid "Time Range" +msgstr "Rentang waktu" + +msgid "Last 5 minutes" +msgstr "5 menit terakhir" + +msgid "Last 30 minutes" +msgstr "30 menit terakhir" + +msgid "Last 2 hours" +msgstr "2 jam terakhir" + +msgid "Type" +msgstr "Jenis" + +msgid "Total" +msgstr "Total" + +msgid "LAN" +msgstr "Lalu lintas LAN" + +msgid "WAN" +msgstr "Lalu lintas WAN" + +msgid "Refresh" +msgstr "Muat ulang" + +msgid "Upload Rate" +msgstr "Tingkat unggahan" + +msgid "Download Rate" +msgstr "Tingkat unduhan" + +msgid "Last" +msgstr "Terakhir" + +msgid "second" +msgstr "detik" + +msgid "minute" +msgstr "menit" + +msgid "hour" +msgstr "jam" + +msgid "day" +msgstr "hari" + +msgid "week" +msgstr "minggu" + +msgid "Other Rates" +msgstr "Tingkat lainnya" + +msgid "Cumulative" +msgstr "Kumulatif" + +msgid "Total Uploaded" +msgstr "Total terunggah" + +msgid "Total Downloaded" +msgstr "Total terunduh" + +msgid "LAN Uploaded" +msgstr "LAN terunggah" + +msgid "LAN Downloaded" +msgstr "LAN terunduh" + +msgid "WAN Uploaded" +msgstr "WAN terunggah" + +msgid "WAN Downloaded" +msgstr "WAN terunduh" + +msgid "Total Upload" +msgstr "Total unggahan" + +msgid "Total Download" +msgstr "Total unduhan" + +msgid "LAN Upload" +msgstr "Unggahan LAN" + +msgid "LAN Download" +msgstr "Unduhan LAN" + +msgid "WAN Upload" +msgstr "Unggahan WAN" + +msgid "WAN Download" +msgstr "Unduhan WAN" + +msgid "Never Online" +msgstr "Tidak pernah online" + +msgid "Just Now" +msgstr "Baru saja" + +msgid "min ago" +msgstr "menit yang lalu" + +msgid "h ago" +msgstr "jam yang lalu" + +msgid "days ago" +msgstr "hari yang lalu" + +msgid "months ago" +msgstr "bulan yang lalu" + +msgid "years ago" +msgstr "tahun yang lalu" + +msgid "Last Online" +msgstr "Terakhir online" + +msgid "Zoom" +msgstr "Perbesar" + +msgid "Sort By" +msgstr "Urutkan berdasarkan" + +msgid "Online Status" +msgstr "Status online" + +msgid "Total Traffic" +msgstr "Total lalu lintas" + +msgid "Ascending" +msgstr "Naik" + +msgid "Descending" +msgstr "Turun" + +msgid "Sort by Speed" +msgstr "Urutkan berdasarkan kecepatan" + +msgid "Sort by Traffic" +msgstr "Urutkan berdasarkan lalu lintas" + +msgid "Simple Mode" +msgstr "Mode sederhana" + +msgid "Detailed Mode" +msgstr "Mode detail" + +msgid "Bandix DNS Monitor" +msgstr "Monitor DNS Bandix" + +msgid "DNS Monitor" +msgstr "Monitor DNS" + +msgid "DNS Query Records" +msgstr "Catatan kueri DNS" + +msgid "DNS Statistics" +msgstr "Statistik DNS" + +msgid "DNS Monitoring Disabled" +msgstr "Pemantauan DNS dinonaktifkan" + +msgid "Please enable DNS monitoring in settings" +msgstr "Harap aktifkan pemantauan DNS di pengaturan" + +msgid "Go to Settings" +msgstr "Buka pengaturan" + +msgid "No Data" +msgstr "Tidak ada data" + +msgid "Time" +msgstr "Waktu" + +msgid "Domain" +msgstr "Domain" + +msgid "Query Type" +msgstr "Jenis kueri" + +msgid "Response Code" +msgstr "Kode respons" + +msgid "Response Time" +msgstr "Waktu respons" + +msgid "Source IP" +msgstr "IP sumber" + +msgid "Destination IP" +msgstr "IP tujuan" + +msgid "Response IPs" +msgstr "IP respons" + +msgid "Response Result" +msgstr "Hasil respons" + +msgid "DNS Server" +msgstr "Server DNS" + +msgid "Query" +msgstr "Kueri" + +msgid "Response" +msgstr "Respons" + +msgid "Filter" +msgstr "Filter" + +msgid "Domain Filter" +msgstr "Filter domain" + +msgid "Device Filter" +msgstr "Filter perangkat" + +msgid "DNS Server Filter" +msgstr "Filter server DNS" + +msgid "Type Filter" +msgstr "Filter jenis" + +msgid "All" +msgstr "Semua" + +msgid "Queries Only" +msgstr "Hanya kueri" + +msgid "Responses Only" +msgstr "Hanya respons" + +msgid "Search" +msgstr "Cari" + +msgid "Search Domain" +msgstr "Cari domain" + +msgid "Search Device" +msgstr "Cari perangkat" + +msgid "Search DNS Server" +msgstr "Cari server DNS" + +msgid "Clear" +msgstr "Hapus" + +msgid "Previous" +msgstr "Sebelumnya" + +msgid "Next" +msgstr "Selanjutnya" + +msgid "Page" +msgstr "Halaman" + +msgid "of" +msgstr "dari" + +msgid "Total" +msgstr "Total" + +msgid "records" +msgstr "catatan" + +msgid "Per Page" +msgstr "Per halaman" + +msgid "" +msgstr "" + +msgid "Total Queries" +msgstr "Total kueri" + +msgid "Total Responses" +msgstr "Total respons" + +msgid "Queries with Response" +msgstr "Kueri dengan respons" + +msgid "Queries without Response" +msgstr "Kueri tanpa respons" + +msgid "Avg Response Time" +msgstr "Waktu respons rata-rata" + +msgid "Min Response Time" +msgstr "Waktu respons minimum" + +msgid "Max Response Time" +msgstr "Waktu respons maksimum" + +msgid "Success Rate" +msgstr "Tingkat keberhasilan" + +msgid "Success" +msgstr "Berhasil" + +msgid "Failure" +msgstr "Gagal" + +msgid "Top Domains" +msgstr "Domain teratas" + +msgid "Top Query Types" +msgstr "Jenis kueri teratas" + +msgid "Top Devices" +msgstr "Perangkat teratas" + +msgid "Top DNS Servers" +msgstr "Server DNS teratas" + +msgid "Unique Devices" +msgstr "Perangkat unik" + +msgid "ms" +msgstr "ms" + +msgid "minutes" +msgstr "menit" + +msgid "Unknown Device" +msgstr "Perangkat tidak dikenal" + +msgid "Domain not found" +msgstr "Domain tidak ditemukan" + +msgid "Server error" +msgstr "Kesalahan server" + +msgid "Format error" +msgstr "Kesalahan format" + +msgid "Refused" +msgstr "Ditolak" + +msgid "Other" +msgstr "Lainnya" + +msgid "Does not include DoH and DoT" +msgstr "Tidak termasuk DoH dan DoT" + +msgid "Latest Response Time" +msgstr "Waktu respons terbaru" + +msgid "Response Code Distribution" +msgstr "Distribusi kode respons" + +msgid "Response Time Percentiles" +msgstr "Persentil waktu respons" + +msgid "P50" +msgstr "P50" + +msgid "P90" +msgstr "P90" + +msgid "P95" +msgstr "P95" + +msgid "P99" +msgstr "P99" + +msgid "Bandix Connection Monitor" +msgstr "Monitor Koneksi Bandix" + +msgid "Connection Monitor" +msgstr "Monitor koneksi" + +msgid "Device Connection Statistics" +msgstr "Statistik koneksi perangkat" + +msgid "Global Connection Statistics" +msgstr "Statistik koneksi global" + +msgid "Active TCP" +msgstr "TCP aktif" + +msgid "Active UDP" +msgstr "UDP aktif" + +msgid "Closed TCP" +msgstr "TCP tertutup" + +msgid "Total Connections" +msgstr "Total koneksi" + +msgid "Last Updated" +msgstr "Terakhir diperbarui" + +msgid "TCP Connections" +msgstr "Koneksi TCP" + +msgid "UDP Connections" +msgstr "Koneksi UDP" + +msgid "Established TCP" +msgstr "TCP terbentuk" + +msgid "TIME_WAIT TCP" +msgstr "TIME_WAIT TCP" + +msgid "CLOSE_WAIT TCP" +msgstr "CLOSE_WAIT TCP" + +msgid "Total Devices" +msgstr "Total perangkat" + +msgid "Connection Monitor Disabled" +msgstr "Monitor koneksi dinonaktifkan" + +msgid "Please enable connection monitoring in settings" +msgstr "Harap aktifkan pemantauan koneksi di pengaturan" + +msgid "List only shows LAN device connections, data may differ from total connections." +msgstr "Daftar hanya menampilkan koneksi perangkat LAN, data mungkin berbeda dari total koneksi." + +msgid "TCP Status Details" +msgstr "Detail status TCP" + +msgid "Basic Settings" +msgstr "Pengaturan dasar" + +msgid "Traffic Monitor Settings" +msgstr "Pengaturan monitor lalu lintas" + +msgid "Connection Monitor Settings" +msgstr "Pengaturan monitor koneksi" + +msgid "DNS Monitor Settings" +msgstr "Pengaturan monitor DNS" + +msgid "Bandix Basic Configuration" +msgstr "Konfigurasi dasar Bandix" + +msgid "Configure basic parameters for Bandix service" +msgstr "Konfigurasi parameter dasar untuk layanan Bandix" + +msgid "Bandix Traffic Monitor Configuration" +msgstr "Konfigurasi Monitor Lalu Lintas Bandix" + +msgid "Configure traffic monitoring related parameters" +msgstr "Konfigurasi parameter terkait pemantauan lalu lintas" + +msgid "Bandix Connection Monitor Configuration" +msgstr "Konfigurasi Monitor Koneksi Bandix" + +msgid "Configure connection monitoring related parameters" +msgstr "Konfigurasi parameter terkait pemantauan koneksi" + +msgid "Bandix DNS Monitor Configuration" +msgstr "Konfigurasi Monitor DNS Bandix" + +msgid "Configure DNS monitoring related parameters" +msgstr "Konfigurasi parameter terkait pemantauan DNS" + +msgid "Enable" +msgstr "Aktifkan" + +msgid "Enable Bandix Traffic Monitor Service" +msgstr "Aktifkan layanan Monitor Lalu Lintas Bandix" + +msgid "Enable Traffic Monitoring" +msgstr "Aktifkan pemantauan lalu lintas" + +msgid "Enable Connection Monitoring" +msgstr "Aktifkan pemantauan koneksi" + +msgid "Enable DNS Monitoring" +msgstr "Aktifkan pemantauan DNS" + +msgid "Simplified Chinese" +msgstr "Bahasa Cina Sederhana" + +msgid "Traditional Chinese" +msgstr "Bahasa Cina Tradisional" + +msgid "Port" +msgstr "Port" + +msgid "Port for Bandix service to listen on" +msgstr "Port untuk layanan Bandix mendengarkan" + +msgid "Monitor Interface" +msgstr "Antarmuka monitor" + +msgid "Select the LAN network interface to monitor" +msgstr "Pilih antarmuka jaringan LAN untuk dipantau" + +msgid "Speed Units" +msgstr "Satuan kecepatan" + +msgid "Select the speed display unit format" +msgstr "Pilih format satuan tampilan kecepatan" + +msgid "Bytes Units (B/s, KB/s, MB/s)" +msgstr "Satuan byte (B/s, KB/s, MB/s)" + +msgid "Bits Units (bps, Kbps, Mbps)" +msgstr "Satuan bit (bps, Kbps, Mbps)" + +msgid "Interface Theme" +msgstr "Tema antarmuka" + +msgid "Select the display theme for Bandix Traffic Monitor" +msgstr "Pilih tema tampilan untuk Monitor Lalu Lintas Bandix" + +msgid "Follow System" +msgstr "Ikuti sistem" + +msgid "Light Mode" +msgstr "Mode terang" + +msgid "Dark Mode" +msgstr "Mode gelap" + +msgid "Feedback" +msgstr "Umpan balik" + +msgid "Log Level" +msgstr "Tingkat log" + +msgid "Set the log level for Bandix service" +msgstr "Atur tingkat log untuk layanan Bandix" + +msgid "Offline Timeout" +msgstr "Timeout offline" + +msgid "Set the timeout for device offline detection (seconds). Devices inactive for longer than this time will be marked as offline" +msgstr "Atur timeout untuk deteksi perangkat offline (detik). Perangkat yang tidak aktif lebih lama dari waktu ini akan ditandai sebagai offline" + +msgid "Traffic History Period" +msgstr "Periode riwayat lalu lintas" + +msgid "10 minutes interval uses about 60 KB per device" +msgstr "Interval 10 menit menggunakan sekitar 60 KB per perangkat" + +msgid "Data Flush Interval" +msgstr "Interval flush data" + +msgid "Set the interval for flushing data to disk" +msgstr "Atur interval untuk mem-flush data ke disk" + +msgid "1 minute" +msgstr "1 menit" + +msgid "5 minutes" +msgstr "5 menit" + +msgid "10 minutes" +msgstr "10 menit" + +msgid "15 minutes" +msgstr "15 menit" + +msgid "20 minutes" +msgstr "20 menit" + +msgid "25 minutes" +msgstr "25 menit" + +msgid "30 minutes" +msgstr "30 menit" + +msgid "1 hour" +msgstr "1 jam" + +msgid "2 hours" +msgstr "2 jam" + +msgid "Data Directory" +msgstr "Direktori data" + +msgid "Bandix data storage directory" +msgstr "Direktori penyimpanan data Bandix" + +msgid "Enable Bandix connection monitoring" +msgstr "Aktifkan pemantauan koneksi Bandix" + +msgid "Enable Bandix DNS monitoring" +msgstr "Aktifkan pemantauan DNS Bandix" + +msgid "DNS Max Records" +msgstr "Maksimum catatan DNS" + +msgid "Set the maximum number of DNS query records to keep. Older records will be deleted when this limit is exceeded" +msgstr "Atur jumlah maksimum catatan kueri DNS yang disimpan. Catatan lama akan dihapus ketika batas ini terlampaui" + +msgid "Persist History Data" +msgstr "Simpan data riwayat" + +msgid "Enable data persistence functionality, data will only be persisted to disk when this option is enabled" +msgstr "Aktifkan fungsi persistensi data, data hanya akan disimpan ke disk ketika opsi ini diaktifkan" diff --git a/luci-app-bandix/po/ja/bandix.po b/luci-app-bandix/po/ja/bandix.po new file mode 100644 index 0000000..7d827fe --- /dev/null +++ b/luci-app-bandix/po/ja/bandix.po @@ -0,0 +1,735 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" + +msgid "Bandix Traffic Monitor" +msgstr "Bandix トラフィックモニター" + +msgid "Loading data..." +msgstr "データを読み込み中..." + +msgid "Unable to fetch data" +msgstr "データを取得できません" + +msgid "Unable to fetch history data" +msgstr "履歴データを取得できません" + +msgid "Hostname" +msgstr "ホスト名" + +msgid "IP Address" +msgstr "IPアドレス" + +msgid "MAC Address" +msgstr "MACアドレス" + +msgid "Download Speed" +msgstr "ダウンロード速度" + +msgid "Upload Speed" +msgstr "アップロード速度" + +msgid "Total Download" +msgstr "総ダウンロード量" + +msgid "Total Upload" +msgstr "総アップロード量" + +msgid "Download Limit" +msgstr "ダウンロード制限" + +msgid "Upload Limit" +msgstr "アップロード制限" + +msgid "Interface Language" +msgstr "インターフェース言語" + +msgid "Select the display language for Bandix Traffic Monitor" +msgstr "Bandix トラフィックモニターの表示言語を選択" + +msgid "Device Info" +msgstr "デバイス情報" + +msgid "Device List" +msgstr "デバイス一覧" + +msgid "LAN Traffic" +msgstr "LAN トラフィック" + +msgid "WAN Traffic" +msgstr "WAN トラフィック" + +msgid "Rate Limit" +msgstr "速度制限" + +msgid "Actions" +msgstr "操作" + +msgid "Online Devices" +msgstr "オンラインデバイス" + +msgid "WAN Only" +msgstr "WAN トラフィックのみ" + +msgid "Settings" +msgstr "設定" + +msgid "Device Settings" +msgstr "デバイス設定" + +msgid "Rate Limits" +msgstr "速度制限" + +msgid "Remove Rate Limit" +msgstr "速度制限を解除" + +msgid "Save" +msgstr "保存" + +msgid "Cancel" +msgstr "キャンセル" + +msgid "Set Rate Limit" +msgstr "速度制限を設定" + +msgid "Device" +msgstr "デバイス" + +msgid "Set Hostname" +msgstr "ホスト名を設定" + +msgid "Please enter hostname" +msgstr "ホスト名を入力してください" + +msgid "Hostname set successfully" +msgstr "ホスト名の設定に成功しました" + +msgid "Failed to set hostname" +msgstr "ホスト名の設定に失敗しました" + +msgid "Unlimited" +msgstr "無制限" + +msgid "Settings saved successfully" +msgstr "設定を保存しました" + +msgid "Failed to save settings" +msgstr "設定の保存に失敗しました" + +msgid "Please enter a valid speed value" +msgstr "有効な速度値を入力してください" + +msgid "Speed value must be greater than 0" +msgstr "速度値は0より大きい必要があります" + +msgid "Saving..." +msgstr "保存中..." + +msgid "Rate limiting only applies to WAN traffic." +msgstr "速度制限は WAN トラフィックにのみ適用されます。" + +msgid "Tip: Enter 0 for unlimited" +msgstr "ヒント:0を入力すると無制限になります" + +msgid "Traffic History" +msgstr "トラフィック履歴" + +msgid "Select Device" +msgstr "デバイスを選択" + +msgid "All Devices" +msgstr "すべてのデバイス" + +msgid "Time Range" +msgstr "時間範囲" + +msgid "Last 5 minutes" +msgstr "過去5分" + +msgid "Last 30 minutes" +msgstr "過去30分" + +msgid "Last 2 hours" +msgstr "過去2時間" + +msgid "Type" +msgstr "タイプ" + +msgid "Total" +msgstr "合計" + +msgid "LAN" +msgstr "LAN トラフィック" + +msgid "WAN" +msgstr "WAN トラフィック" + +msgid "Refresh" +msgstr "更新" + +msgid "Upload Rate" +msgstr "アップロード速度" + +msgid "Download Rate" +msgstr "ダウンロード速度" + +msgid "Last" +msgstr "最後" + +msgid "second" +msgstr "秒" + +msgid "minute" +msgstr "分" + +msgid "hour" +msgstr "時間" + +msgid "day" +msgstr "日" + +msgid "week" +msgstr "週" + +msgid "Other Rates" +msgstr "その他の速度" + +msgid "Cumulative" +msgstr "累計トラフィック" + +msgid "Total Uploaded" +msgstr "総アップロード" + +msgid "Total Downloaded" +msgstr "総ダウンロード" + +msgid "LAN Uploaded" +msgstr "LAN アップロード済み" + +msgid "LAN Downloaded" +msgstr "LAN ダウンロード済み" + +msgid "WAN Uploaded" +msgstr "WAN アップロード済み" + +msgid "WAN Downloaded" +msgstr "WAN ダウンロード済み" + +msgid "Total Upload" +msgstr "総アップロード速度" + +msgid "Total Download" +msgstr "総ダウンロード速度" + +msgid "LAN Upload" +msgstr "LAN アップロード速度" + +msgid "LAN Download" +msgstr "LAN ダウンロード速度" + +msgid "WAN Upload" +msgstr "WAN アップロード速度" + +msgid "WAN Download" +msgstr "WAN ダウンロード速度" + +msgid "Never Online" +msgstr "オンラインになったことがありません" + +msgid "Just Now" +msgstr "たった今" + +msgid "min ago" +msgstr "分前" + +msgid "h ago" +msgstr "時間前" + +msgid "days ago" +msgstr "日前" + +msgid "months ago" +msgstr "ヶ月前" + +msgid "years ago" +msgstr "年前" + +msgid "Last Online" +msgstr "最終オンライン" + +msgid "Zoom" +msgstr "ズーム" + +msgid "Sort By" +msgstr "並び替え" + +msgid "Online Status" +msgstr "オンライン状態" + +msgid "Total Traffic" +msgstr "総トラフィック" + +msgid "Ascending" +msgstr "昇順" + +msgid "Descending" +msgstr "降順" + +msgid "Sort by Speed" +msgstr "速度で並び替え" + +msgid "Sort by Traffic" +msgstr "トラフィックで並び替え" + +msgid "Simple Mode" +msgstr "シンプルモード" + +msgid "Detailed Mode" +msgstr "詳細モード" + +msgid "Bandix DNS Monitor" +msgstr "Bandix DNS モニター" + +msgid "DNS Monitor" +msgstr "DNS モニター" + +msgid "DNS Query Records" +msgstr "DNS クエリ記録" + +msgid "DNS Statistics" +msgstr "DNS 統計情報" + +msgid "DNS Monitoring Disabled" +msgstr "DNS監視が無効です" + +msgid "Please enable DNS monitoring in settings" +msgstr "設定でDNS監視を有効にしてください" + +msgid "Go to Settings" +msgstr "設定に移動" + +msgid "No Data" +msgstr "データなし" + +msgid "Time" +msgstr "時間" + +msgid "Domain" +msgstr "ドメイン" + +msgid "Query Type" +msgstr "クエリタイプ" + +msgid "Response Code" +msgstr "応答コード" + +msgid "Response Time" +msgstr "応答時間" + +msgid "Source IP" +msgstr "送信元IP" + +msgid "Destination IP" +msgstr "宛先IP" + +msgid "Response IPs" +msgstr "応答IP" + +msgid "Response Result" +msgstr "応答結果" + +msgid "DNS Server" +msgstr "DNSサーバー" + +msgid "Query" +msgstr "クエリ" + +msgid "Response" +msgstr "応答" + +msgid "Filter" +msgstr "フィルター" + +msgid "Domain Filter" +msgstr "ドメインフィルター" + +msgid "Device Filter" +msgstr "デバイスフィルター" + +msgid "DNS Server Filter" +msgstr "DNSサーバーフィルター" + +msgid "Type Filter" +msgstr "タイプフィルター" + +msgid "All" +msgstr "すべて" + +msgid "Queries Only" +msgstr "クエリのみ" + +msgid "Responses Only" +msgstr "応答のみ" + +msgid "Search" +msgstr "検索" + +msgid "Search Domain" +msgstr "ドメインを検索" + +msgid "Search Device" +msgstr "デバイスを検索" + +msgid "Search DNS Server" +msgstr "DNSサーバーを検索" + +msgid "Clear" +msgstr "クリア" + +msgid "Previous" +msgstr "前へ" + +msgid "Next" +msgstr "次へ" + +msgid "Page" +msgstr "ページ" + +msgid "of" +msgstr "の" + +msgid "Total" +msgstr "合計" + +msgid "records" +msgstr "件の記録" + +msgid "Per Page" +msgstr "ページあたり" + +msgid "" +msgstr "件" + +msgid "Total Queries" +msgstr "総クエリ数" + +msgid "Total Responses" +msgstr "総応答数" + +msgid "Queries with Response" +msgstr "応答ありクエリ" + +msgid "Queries without Response" +msgstr "応答なしクエリ" + +msgid "Avg Response Time" +msgstr "平均応答時間" + +msgid "Min Response Time" +msgstr "最短応答時間" + +msgid "Max Response Time" +msgstr "最長応答時間" + +msgid "Success Rate" +msgstr "成功率" + +msgid "Success" +msgstr "成功" + +msgid "Failure" +msgstr "失敗" + +msgid "Top Domains" +msgstr "最もクエリされたドメイン" + +msgid "Top Query Types" +msgstr "最も使用されたクエリタイプ" + +msgid "Top Devices" +msgstr "最もアクティブなデバイス" + +msgid "Top DNS Servers" +msgstr "最も使用されたDNSサーバー" + +msgid "Unique Devices" +msgstr "ユニークデバイス数" + +msgid "ms" +msgstr "ミリ秒" + +msgid "minutes" +msgstr "分" + +msgid "Unknown Device" +msgstr "不明なデバイス" + +msgid "Domain not found" +msgstr "ドメインが見つかりません" + +msgid "Server error" +msgstr "サーバーエラー" + +msgid "Format error" +msgstr "フォーマットエラー" + +msgid "Refused" +msgstr "拒否" + +msgid "Other" +msgstr "その他" + +msgid "Does not include DoH and DoT" +msgstr "DoH と DoT は含まれません" + +msgid "Latest Response Time" +msgstr "最新の応答時間" + +msgid "Response Code Distribution" +msgstr "応答コード分布" + +msgid "Response Time Percentiles" +msgstr "応答時間パーセンタイル" + +msgid "P50" +msgstr "P50" + +msgid "P90" +msgstr "P90" + +msgid "P95" +msgstr "P95" + +msgid "P99" +msgstr "P99" + +msgid "Bandix Connection Monitor" +msgstr "Bandix 接続モニター" + +msgid "Connection Monitor" +msgstr "接続モニター" + +msgid "Device Connection Statistics" +msgstr "デバイス接続統計" + +msgid "Global Connection Statistics" +msgstr "グローバル接続統計" + +msgid "Active TCP" +msgstr "アクティブTCP" + +msgid "Active UDP" +msgstr "アクティブUDP" + +msgid "Closed TCP" +msgstr "クローズTCP" + +msgid "Total Connections" +msgstr "総接続数" + +msgid "Last Updated" +msgstr "最終更新" + +msgid "TCP Connections" +msgstr "TCP接続数" + +msgid "UDP Connections" +msgstr "UDP接続数" + +msgid "Established TCP" +msgstr "確立済みTCP" + +msgid "TIME_WAIT TCP" +msgstr "TIME_WAIT TCP" + +msgid "CLOSE_WAIT TCP" +msgstr "CLOSE_WAIT TCP" + +msgid "Total Devices" +msgstr "デバイス総数" + +msgid "Connection Monitor Disabled" +msgstr "接続モニターが無効です" + +msgid "Please enable connection monitoring in settings" +msgstr "設定で接続モニターを有効にしてください" + +msgid "List only shows LAN device connections, data may differ from total connections." +msgstr "リストはLANデバイス接続のみを表示します。データは総接続数と異なる場合があります。" + +msgid "TCP Status Details" +msgstr "TCP 状態詳細" + +msgid "Basic Settings" +msgstr "基本設定" + +msgid "Traffic Monitor Settings" +msgstr "トラフィックモニター設定" + +msgid "Connection Monitor Settings" +msgstr "接続モニター設定" + +msgid "DNS Monitor Settings" +msgstr "DNSモニター設定" + +msgid "Bandix Basic Configuration" +msgstr "Bandix 基本設定" + +msgid "Configure basic parameters for Bandix service" +msgstr "Bandix サービスの基本パラメータを設定" + +msgid "Bandix Traffic Monitor Configuration" +msgstr "Bandix トラフィックモニター設定" + +msgid "Configure traffic monitoring related parameters" +msgstr "トラフィック監視関連のパラメータを設定" + +msgid "Bandix Connection Monitor Configuration" +msgstr "Bandix 接続モニター設定" + +msgid "Configure connection monitoring related parameters" +msgstr "接続監視関連のパラメータを設定" + +msgid "Bandix DNS Monitor Configuration" +msgstr "Bandix DNSモニター設定" + +msgid "Configure DNS monitoring related parameters" +msgstr "DNS監視関連のパラメータを設定" + +msgid "Enable" +msgstr "有効" + +msgid "Enable Bandix Traffic Monitor Service" +msgstr "Bandix トラフィックモニターサービスを有効にする" + +msgid "Enable Traffic Monitoring" +msgstr "トラフィック監視を有効にする" + +msgid "Enable Connection Monitoring" +msgstr "接続監視を有効にする" + +msgid "Enable DNS Monitoring" +msgstr "DNS監視を有効にする" + +msgid "Simplified Chinese" +msgstr "簡体字中国語" + +msgid "Traditional Chinese" +msgstr "繁体字中国語" + +msgid "Port" +msgstr "ポート" + +msgid "Port for Bandix service to listen on" +msgstr "Bandix サービスがリッスンするポート" + +msgid "Monitor Interface" +msgstr "監視インターフェース" + +msgid "Select the LAN network interface to monitor" +msgstr "監視するLANネットワークインターフェースを選択" + +msgid "Speed Units" +msgstr "速度単位" + +msgid "Select the speed display unit format" +msgstr "速度表示の単位形式を選択" + +msgid "Bytes Units (B/s, KB/s, MB/s)" +msgstr "バイト単位 (B/s, KB/s, MB/s)" + +msgid "Bits Units (bps, Kbps, Mbps)" +msgstr "ビット単位 (bps, Kbps, Mbps)" + +msgid "Interface Theme" +msgstr "インターフェーステーマ" + +msgid "Select the display theme for Bandix Traffic Monitor" +msgstr "Bandix トラフィックモニターの表示テーマを選択" + +msgid "Follow System" +msgstr "システムに従う" + +msgid "Light Mode" +msgstr "ライトモード" + +msgid "Dark Mode" +msgstr "ダークモード" + +msgid "Feedback" +msgstr "フィードバック" + +msgid "Log Level" +msgstr "ログレベル" + +msgid "Set the log level for Bandix service" +msgstr "Bandix サービスのログレベルを設定" + +msgid "Offline Timeout" +msgstr "オフラインタイムアウト" + +msgid "Set the timeout for device offline detection (seconds). Devices inactive for longer than this time will be marked as offline" +msgstr "デバイスのオフライン検出のタイムアウトを設定(秒)。この時間より長く非アクティブなデバイスはオフラインとしてマークされます" + +msgid "Traffic History Period" +msgstr "トラフィック履歴期間" + +msgid "10 minutes interval uses about 60 KB per device" +msgstr "10分間隔でデバイスあたり約60KBを使用" + +msgid "Data Flush Interval" +msgstr "データフラッシュ間隔" + +msgid "Set the interval for flushing data to disk" +msgstr "データをディスクにフラッシュする間隔を設定" + +msgid "1 minute" +msgstr "1分" + +msgid "5 minutes" +msgstr "5分" + +msgid "10 minutes" +msgstr "10分" + +msgid "15 minutes" +msgstr "15分" + +msgid "20 minutes" +msgstr "20分" + +msgid "25 minutes" +msgstr "25分" + +msgid "30 minutes" +msgstr "30分" + +msgid "1 hour" +msgstr "1時間" + +msgid "2 hours" +msgstr "2時間" + +msgid "Data Directory" +msgstr "データディレクトリ" + +msgid "Bandix data storage directory" +msgstr "Bandix データストレージディレクトリ" + +msgid "Enable Bandix connection monitoring" +msgstr "Bandix 接続監視を有効にする" + +msgid "Enable Bandix DNS monitoring" +msgstr "Bandix DNS監視を有効にする" + +msgid "DNS Max Records" +msgstr "DNS最大記録数" + +msgid "Set the maximum number of DNS query records to keep. Older records will be deleted when this limit is exceeded" +msgstr "保持するDNSクエリ記録の最大数を設定。この制限を超えると古い記録が削除されます" + +msgid "Persist History Data" +msgstr "履歴データを永続化" + +msgid "Enable data persistence functionality, data will only be persisted to disk when this option is enabled" +msgstr "データ永続化機能を有効にする。このオプションが有効な場合のみデータがディスクに永続化されます" diff --git a/luci-app-bandix/po/ru/bandix.po b/luci-app-bandix/po/ru/bandix.po new file mode 100644 index 0000000..ed3c83c --- /dev/null +++ b/luci-app-bandix/po/ru/bandix.po @@ -0,0 +1,735 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" + +msgid "Bandix Traffic Monitor" +msgstr "Монитор трафика Bandix" + +msgid "Loading data..." +msgstr "Загрузка данных..." + +msgid "Unable to fetch data" +msgstr "Не удалось получить данные" + +msgid "Unable to fetch history data" +msgstr "无法获取历史数据" + +msgid "Hostname" +msgstr "Имя хоста" + +msgid "IP Address" +msgstr "IP-адрес" + +msgid "MAC Address" +msgstr "MAC-адрес" + +msgid "Download Speed" +msgstr "Скорость загрузки" + +msgid "Upload Speed" +msgstr "Скорость выгрузки" + +msgid "Total Download" +msgstr "Всего загружено" + +msgid "Total Upload" +msgstr "Всего выгружено" + +msgid "Download Limit" +msgstr "Ограничение загрузки" + +msgid "Upload Limit" +msgstr "Ограничение выгрузки" + +msgid "Interface Language" +msgstr "Язык интерфейса" + +msgid "Select the display language for Bandix Traffic Monitor" +msgstr "Выберите язык отображения для монитора трафика Bandix" + +msgid "Device Info" +msgstr "Информация об устройстве" + +msgid "Device List" +msgstr "Список устройств" + +msgid "LAN Traffic" +msgstr "Трафик LAN" + +msgid "WAN Traffic" +msgstr "Трафик WAN" + +msgid "Rate Limit" +msgstr "Ограничение скорости" + +msgid "Actions" +msgstr "Действия" + +msgid "Online Devices" +msgstr "Устройства в сети" + +msgid "WAN Only" +msgstr "仅限WAN 流量" + +msgid "Settings" +msgstr "Настройки" + +msgid "Device Settings" +msgstr "Настройки устройства" + +msgid "Rate Limits" +msgstr "限速设置" + +msgid "Remove Rate Limit" +msgstr "取消限速" + +msgid "Save" +msgstr "Сохранить" + +msgid "Cancel" +msgstr "Отмена" + +msgid "Set Rate Limit" +msgstr "设置限速" + +msgid "Device" +msgstr "Устройство" + +msgid "Set Hostname" +msgstr "设置主机名" + +msgid "Please enter hostname" +msgstr "请输入主机名" + +msgid "Hostname set successfully" +msgstr "主机名设置成功" + +msgid "Failed to set hostname" +msgstr "主机名设置失败" + +msgid "Unlimited" +msgstr "Без ограничений" + +msgid "Settings saved successfully" +msgstr "Настройки успешно сохранены" + +msgid "Failed to save settings" +msgstr "Не удалось сохранить настройки" + +msgid "Please enter a valid speed value" +msgstr "请输入有效的速度值" + +msgid "Speed value must be greater than 0" +msgstr "速度值必须大于0" + +msgid "Saving..." +msgstr "Сохранение..." + +msgid "Rate limiting only applies to WAN traffic." +msgstr "限速功能仅对 WAN 流量生效。" + +msgid "Tip: Enter 0 for unlimited" +msgstr "提示:输入 0 表示无限制" + +msgid "Traffic History" +msgstr "История трафика" + +msgid "Select Device" +msgstr "Выбрать устройство" + +msgid "All Devices" +msgstr "Все устройства" + +msgid "Time Range" +msgstr "时间范围" + +msgid "Last 5 minutes" +msgstr "最近5分钟" + +msgid "Last 30 minutes" +msgstr "最近30分钟" + +msgid "Last 2 hours" +msgstr "最近2小时" + +msgid "Type" +msgstr "Тип" + +msgid "Total" +msgstr "Всего" + +msgid "LAN" +msgstr "LAN 流量" + +msgid "WAN" +msgstr "WAN 流量" + +msgid "Refresh" +msgstr "Обновить" + +msgid "Upload Rate" +msgstr "Скорость выгрузки" + +msgid "Download Rate" +msgstr "Скорость загрузки" + +msgid "Last" +msgstr "最近" + +msgid "second" +msgstr "秒" + +msgid "minute" +msgstr "分钟" + +msgid "hour" +msgstr "小时" + +msgid "day" +msgstr "天" + +msgid "week" +msgstr "周" + +msgid "Other Rates" +msgstr "其他速率" + +msgid "Cumulative" +msgstr "累计流量" + +msgid "Total Uploaded" +msgstr "总上传" + +msgid "Total Downloaded" +msgstr "总下载" + +msgid "LAN Uploaded" +msgstr "LAN 已上传" + +msgid "LAN Downloaded" +msgstr "LAN 已下载" + +msgid "WAN Uploaded" +msgstr "WAN 已上传" + +msgid "WAN Downloaded" +msgstr "WAN 已下载" + +msgid "Total Upload" +msgstr "Всего выгружено" + +msgid "Total Download" +msgstr "Всего загружено" + +msgid "LAN Upload" +msgstr "LAN 上传速率" + +msgid "LAN Download" +msgstr "LAN 下载速率" + +msgid "WAN Upload" +msgstr "WAN 上传速率" + +msgid "WAN Download" +msgstr "WAN 下载速率" + +msgid "Never Online" +msgstr "Никогда не был в сети" + +msgid "Just Now" +msgstr "Только что" + +msgid "min ago" +msgstr "мин назад" + +msgid "h ago" +msgstr "ч назад" + +msgid "days ago" +msgstr "дн назад" + +msgid "months ago" +msgstr "мес назад" + +msgid "years ago" +msgstr "лет назад" + +msgid "Last Online" +msgstr "Последний раз в сети" + +msgid "Zoom" +msgstr "缩放" + +msgid "Sort By" +msgstr "排序方式" + +msgid "Online Status" +msgstr "在线状态" + +msgid "Total Traffic" +msgstr "总流量" + +msgid "Ascending" +msgstr "升序" + +msgid "Descending" +msgstr "降序" + +msgid "Sort by Speed" +msgstr "按速度排序" + +msgid "Sort by Traffic" +msgstr "按用量排序" + +msgid "Simple Mode" +msgstr "Простой режим" + +msgid "Detailed Mode" +msgstr "Подробный режим" + +msgid "Bandix DNS Monitor" +msgstr "Монитор DNS Bandix" + +msgid "DNS Monitor" +msgstr "Монитор DNS" + +msgid "DNS Query Records" +msgstr "Записи запросов DNS" + +msgid "DNS Statistics" +msgstr "DNS 统计信息" + +msgid "DNS Monitoring Disabled" +msgstr "DNS监控未启用" + +msgid "Please enable DNS monitoring in settings" +msgstr "请在设置中启用DNS监控功能" + +msgid "Go to Settings" +msgstr "前往设置" + +msgid "No Data" +msgstr "无数据" + +msgid "Time" +msgstr "Время" + +msgid "Domain" +msgstr "Домен" + +msgid "Query Type" +msgstr "Тип запроса" + +msgid "Response Code" +msgstr "响应码" + +msgid "Response Time" +msgstr "Время отклика" + +msgid "Source IP" +msgstr "源IP" + +msgid "Destination IP" +msgstr "目标IP" + +msgid "Response IPs" +msgstr "响应IP" + +msgid "Response Result" +msgstr "响应结果" + +msgid "DNS Server" +msgstr "DNS-сервер" + +msgid "Query" +msgstr "Запрос" + +msgid "Response" +msgstr "Ответ" + +msgid "Filter" +msgstr "过滤" + +msgid "Domain Filter" +msgstr "域名过滤" + +msgid "Device Filter" +msgstr "设备过滤" + +msgid "DNS Server Filter" +msgstr "DNS服务器过滤" + +msgid "Type Filter" +msgstr "类型过滤" + +msgid "All" +msgstr "全部" + +msgid "Queries Only" +msgstr "仅查询" + +msgid "Responses Only" +msgstr "仅响应" + +msgid "Search" +msgstr "Поиск" + +msgid "Search Domain" +msgstr "搜索域名" + +msgid "Search Device" +msgstr "搜索设备" + +msgid "Search DNS Server" +msgstr "搜索DNS服务器" + +msgid "Clear" +msgstr "清除" + +msgid "Previous" +msgstr "Предыдущая" + +msgid "Next" +msgstr "Следующая" + +msgid "Page" +msgstr "Страница" + +msgid "of" +msgstr "из" + +msgid "Total" +msgstr "Всего" + +msgid "records" +msgstr "записей" + +msgid "Per Page" +msgstr "每页显示" + +msgid "" +msgstr "条" + +msgid "Total Queries" +msgstr "Всего запросов" + +msgid "Total Responses" +msgstr "总响应数" + +msgid "Queries with Response" +msgstr "有响应查询" + +msgid "Queries without Response" +msgstr "无响应查询" + +msgid "Avg Response Time" +msgstr "平均响应时间" + +msgid "Min Response Time" +msgstr "最快响应时间" + +msgid "Max Response Time" +msgstr "最慢响应时间" + +msgid "Success Rate" +msgstr "Процент успеха" + +msgid "Success" +msgstr "Успешно" + +msgid "Failure" +msgstr "Ошибка" + +msgid "Top Domains" +msgstr "Самые запрашиваемые домены" + +msgid "Top Query Types" +msgstr "最常用查询类型" + +msgid "Top Devices" +msgstr "Самые активные устройства" + +msgid "Top DNS Servers" +msgstr "最常用DNS服务器" + +msgid "Unique Devices" +msgstr "唯一设备数" + +msgid "ms" +msgstr "毫秒" + +msgid "minutes" +msgstr "分钟" + +msgid "Unknown Device" +msgstr "未知设备" + +msgid "Domain not found" +msgstr "域名未找到" + +msgid "Server error" +msgstr "服务器错误" + +msgid "Format error" +msgstr "格式错误" + +msgid "Refused" +msgstr "拒绝" + +msgid "Other" +msgstr "其他" + +msgid "Does not include DoH and DoT" +msgstr "不包含 DoH 和 DoT" + +msgid "Latest Response Time" +msgstr "最新响应时间" + +msgid "Response Code Distribution" +msgstr "响应码分布" + +msgid "Response Time Percentiles" +msgstr "响应时间百分位" + +msgid "P50" +msgstr "P50" + +msgid "P90" +msgstr "P90" + +msgid "P95" +msgstr "P95" + +msgid "P99" +msgstr "P99" + +msgid "Bandix Connection Monitor" +msgstr "Монитор соединений Bandix" + +msgid "Connection Monitor" +msgstr "Монитор соединений" + +msgid "Device Connection Statistics" +msgstr "设备连接统计" + +msgid "Global Connection Statistics" +msgstr "全局连接统计" + +msgid "Active TCP" +msgstr "活跃TCP" + +msgid "Active UDP" +msgstr "活跃UDP" + +msgid "Closed TCP" +msgstr "已关闭TCP" + +msgid "Total Connections" +msgstr "Всего соединений" + +msgid "Last Updated" +msgstr "最后更新" + +msgid "TCP Connections" +msgstr "Соединения TCP" + +msgid "UDP Connections" +msgstr "Соединения UDP" + +msgid "Established TCP" +msgstr "已建立TCP" + +msgid "TIME_WAIT TCP" +msgstr "TIME_WAIT TCP" + +msgid "CLOSE_WAIT TCP" +msgstr "CLOSE_WAIT TCP" + +msgid "Total Devices" +msgstr "设备总数" + +msgid "Connection Monitor Disabled" +msgstr "连接监控未启用" + +msgid "Please enable connection monitoring in settings" +msgstr "请在设置中启用连接监控功能" + +msgid "List only shows LAN device connections, data may differ from total connections." +msgstr "列表只显示局域网设备连接,数据可能和总连接数不一致。" + +msgid "TCP Status Details" +msgstr "TCP 状态详情" + +msgid "Basic Settings" +msgstr "Основные настройки" + +msgid "Traffic Monitor Settings" +msgstr "Настройки монитора трафика" + +msgid "Connection Monitor Settings" +msgstr "Настройки монитора соединений" + +msgid "DNS Monitor Settings" +msgstr "Настройки монитора DNS" + +msgid "Bandix Basic Configuration" +msgstr "Bandix 基本配置" + +msgid "Configure basic parameters for Bandix service" +msgstr "配置 Bandix 服务的基本参数" + +msgid "Bandix Traffic Monitor Configuration" +msgstr "Bandix 流量监控配置" + +msgid "Configure traffic monitoring related parameters" +msgstr "配置流量监控相关参数" + +msgid "Bandix Connection Monitor Configuration" +msgstr "Bandix 连接监控配置" + +msgid "Configure connection monitoring related parameters" +msgstr "配置连接监控相关参数" + +msgid "Bandix DNS Monitor Configuration" +msgstr "Bandix DNS监控配置" + +msgid "Configure DNS monitoring related parameters" +msgstr "配置DNS监控相关参数" + +msgid "Enable" +msgstr "Включить" + +msgid "Enable Bandix Traffic Monitor Service" +msgstr "启用 Bandix 流量监控服务" + +msgid "Enable Traffic Monitoring" +msgstr "Включить мониторинг трафика" + +msgid "Enable Connection Monitoring" +msgstr "Включить мониторинг соединений" + +msgid "Enable DNS Monitoring" +msgstr "Включить мониторинг DNS" + +msgid "Simplified Chinese" +msgstr "简体中文" + +msgid "Traditional Chinese" +msgstr "繁体中文" + +msgid "Port" +msgstr "Порт" + +msgid "Port for Bandix service to listen on" +msgstr "Bandix 服务监听的端口" + +msgid "Monitor Interface" +msgstr "Интерфейс мониторинга" + +msgid "Select the LAN network interface to monitor" +msgstr "选择要监控的LAN网络接口" + +msgid "Speed Units" +msgstr "Единицы скорости" + +msgid "Select the speed display unit format" +msgstr "选择网速显示的单位格式" + +msgid "Bytes Units (B/s, KB/s, MB/s)" +msgstr "字节单位 (B/s, KB/s, MB/s)" + +msgid "Bits Units (bps, Kbps, Mbps)" +msgstr "比特单位 (bps, Kbps, Mbps)" + +msgid "Interface Theme" +msgstr "界面主题" + +msgid "Select the display theme for Bandix Traffic Monitor" +msgstr "选择 Bandix 流量监控的显示主题" + +msgid "Follow System" +msgstr "跟随系统" + +msgid "Light Mode" +msgstr "明亮模式" + +msgid "Dark Mode" +msgstr "暗黑模式" + +msgid "Feedback" +msgstr "意见反馈" + +msgid "Log Level" +msgstr "Уровень журналирования" + +msgid "Set the log level for Bandix service" +msgstr "设置 Bandix 服务的日志级别" + +msgid "Offline Timeout" +msgstr "Таймаут офлайн" + +msgid "Set the timeout for device offline detection (seconds). Devices inactive for longer than this time will be marked as offline" +msgstr "设置设备离线判断的超时时间(秒)。超过此时间未活动的设备将被标记为离线" + +msgid "Traffic History Period" +msgstr "Период истории трафика" + +msgid "10 minutes interval uses about 60 KB per device" +msgstr "Интервал 10 минут использует около 60 КБ на устройство" + +msgid "Data Flush Interval" +msgstr "Интервал сброса данных" + +msgid "Set the interval for flushing data to disk" +msgstr "设置数据写入磁盘的时间间隔" + +msgid "1 minute" +msgstr "1 минута" + +msgid "5 minutes" +msgstr "5 минут" + +msgid "10 minutes" +msgstr "10 минут" + +msgid "15 minutes" +msgstr "15 分钟" + +msgid "20 minutes" +msgstr "20 分钟" + +msgid "25 minutes" +msgstr "25 分钟" + +msgid "30 minutes" +msgstr "30 分钟" + +msgid "1 hour" +msgstr "1 час" + +msgid "2 hours" +msgstr "2 часа" + +msgid "Data Directory" +msgstr "Каталог данных" + +msgid "Bandix data storage directory" +msgstr "Bandix 数据存储目录" + +msgid "Enable Bandix connection monitoring" +msgstr "启用 Bandix 连接监控功能" + +msgid "Enable Bandix DNS monitoring" +msgstr "启用 Bandix DNS监控功能" + +msgid "DNS Max Records" +msgstr "Максимум записей DNS" + +msgid "Set the maximum number of DNS query records to keep. Older records will be deleted when this limit is exceeded" +msgstr "设置DNS查询记录的最大保存数量,超过此数量将删除最旧的记录" + +msgid "Persist History Data" +msgstr "Сохранять историю данных" + +msgid "Enable data persistence functionality, data will only be persisted to disk when this option is enabled" +msgstr "启用数据持久化功能,只有启用此选项后才会持久化到磁盘" \ No newline at end of file diff --git a/luci-app-bandix/po/th/bandix.po b/luci-app-bandix/po/th/bandix.po new file mode 100644 index 0000000..501dc3d --- /dev/null +++ b/luci-app-bandix/po/th/bandix.po @@ -0,0 +1,735 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" + +msgid "Bandix Traffic Monitor" +msgstr "ตัวตรวจสอบการจราจร Bandix" + +msgid "Loading data..." +msgstr "กำลังโหลดข้อมูล..." + +msgid "Unable to fetch data" +msgstr "ไม่สามารถดึงข้อมูลได้" + +msgid "Unable to fetch history data" +msgstr "ไม่สามารถดึงข้อมูลประวัติได้" + +msgid "Hostname" +msgstr "ชื่อโฮสต์" + +msgid "IP Address" +msgstr "ที่อยู่ IP" + +msgid "MAC Address" +msgstr "ที่อยู่ MAC" + +msgid "Download Speed" +msgstr "ความเร็วในการดาวน์โหลด" + +msgid "Upload Speed" +msgstr "ความเร็วในการอัปโหลด" + +msgid "Total Download" +msgstr "การดาวน์โหลดทั้งหมด" + +msgid "Total Upload" +msgstr "การอัปโหลดทั้งหมด" + +msgid "Download Limit" +msgstr "ขีดจำกัดการดาวน์โหลด" + +msgid "Upload Limit" +msgstr "ขีดจำกัดการอัปโหลด" + +msgid "Interface Language" +msgstr "ภาษาของอินเทอร์เฟซ" + +msgid "Select the display language for Bandix Traffic Monitor" +msgstr "เลือกภาษาการแสดงผลสำหรับตัวตรวจสอบการจราจร Bandix" + +msgid "Device Info" +msgstr "ข้อมูลอุปกรณ์" + +msgid "Device List" +msgstr "รายการอุปกรณ์" + +msgid "LAN Traffic" +msgstr "การจราจร LAN" + +msgid "WAN Traffic" +msgstr "การจราจร WAN" + +msgid "Rate Limit" +msgstr "ขีดจำกัดอัตรา" + +msgid "Actions" +msgstr "การดำเนินการ" + +msgid "Online Devices" +msgstr "อุปกรณ์ออนไลน์" + +msgid "WAN Only" +msgstr "WAN เท่านั้น" + +msgid "Settings" +msgstr "การตั้งค่า" + +msgid "Device Settings" +msgstr "การตั้งค่าอุปกรณ์" + +msgid "Rate Limits" +msgstr "ขีดจำกัดอัตรา" + +msgid "Remove Rate Limit" +msgstr "ลบขีดจำกัดอัตรา" + +msgid "Save" +msgstr "บันทึก" + +msgid "Cancel" +msgstr "ยกเลิก" + +msgid "Set Rate Limit" +msgstr "ตั้งค่าขีดจำกัดอัตรา" + +msgid "Device" +msgstr "อุปกรณ์" + +msgid "Set Hostname" +msgstr "ตั้งชื่อโฮสต์" + +msgid "Please enter hostname" +msgstr "กรุณากรอกชื่อโฮสต์" + +msgid "Hostname set successfully" +msgstr "ตั้งชื่อโฮสต์สำเร็จ" + +msgid "Failed to set hostname" +msgstr "ตั้งชื่อโฮสต์ล้มเหลว" + +msgid "Unlimited" +msgstr "ไม่จำกัด" + +msgid "Settings saved successfully" +msgstr "บันทึกการตั้งค่าสำเร็จ" + +msgid "Failed to save settings" +msgstr "บันทึกการตั้งค่าล้มเหลว" + +msgid "Please enter a valid speed value" +msgstr "กรุณากรอกค่าความเร็วที่ถูกต้อง" + +msgid "Speed value must be greater than 0" +msgstr "ค่าความเร็วต้องมากกว่า 0" + +msgid "Saving..." +msgstr "กำลังบันทึก..." + +msgid "Rate limiting only applies to WAN traffic." +msgstr "การจำกัดอัตราใช้กับ WAN เท่านั้น" + +msgid "Tip: Enter 0 for unlimited" +msgstr "เคล็ดลับ: ใส่ 0 สำหรับไม่จำกัด" + +msgid "Traffic History" +msgstr "ประวัติการจราจร" + +msgid "Select Device" +msgstr "เลือกอุปกรณ์" + +msgid "All Devices" +msgstr "อุปกรณ์ทั้งหมด" + +msgid "Time Range" +msgstr "ช่วงเวลา" + +msgid "Last 5 minutes" +msgstr "5 นาทีที่แล้ว" + +msgid "Last 30 minutes" +msgstr "30 นาทีที่แล้ว" + +msgid "Last 2 hours" +msgstr "2 ชั่วโมงที่แล้ว" + +msgid "Type" +msgstr "ประเภท" + +msgid "Total" +msgstr "ทั้งหมด" + +msgid "LAN" +msgstr "การจราจร LAN" + +msgid "WAN" +msgstr "การจราจร WAN" + +msgid "Refresh" +msgstr "รีเฟรช" + +msgid "Upload Rate" +msgstr "อัตราการอัปโหลด" + +msgid "Download Rate" +msgstr "อัตราการดาวน์โหลด" + +msgid "Last" +msgstr "ล่าสุด" + +msgid "second" +msgstr "วินาที" + +msgid "minute" +msgstr "นาที" + +msgid "hour" +msgstr "ชั่วโมง" + +msgid "day" +msgstr "วัน" + +msgid "week" +msgstr "สัปดาห์" + +msgid "Other Rates" +msgstr "อัตราอื่นๆ" + +msgid "Cumulative" +msgstr "สะสม" + +msgid "Total Uploaded" +msgstr "อัปโหลดทั้งหมด" + +msgid "Total Downloaded" +msgstr "ดาวน์โหลดทั้งหมด" + +msgid "LAN Uploaded" +msgstr "LAN อัปโหลดแล้ว" + +msgid "LAN Downloaded" +msgstr "LAN ดาวน์โหลดแล้ว" + +msgid "WAN Uploaded" +msgstr "WAN อัปโหลดแล้ว" + +msgid "WAN Downloaded" +msgstr "WAN ดาวน์โหลดแล้ว" + +msgid "Total Upload" +msgstr "การอัปโหลดทั้งหมด" + +msgid "Total Download" +msgstr "การดาวน์โหลดทั้งหมด" + +msgid "LAN Upload" +msgstr "การอัปโหลด LAN" + +msgid "LAN Download" +msgstr "การดาวน์โหลด LAN" + +msgid "WAN Upload" +msgstr "การอัปโหลด WAN" + +msgid "WAN Download" +msgstr "การดาวน์โหลด WAN" + +msgid "Never Online" +msgstr "ไม่เคยออนไลน์" + +msgid "Just Now" +msgstr "เมื่อสักครู่" + +msgid "min ago" +msgstr "นาทีที่แล้ว" + +msgid "h ago" +msgstr "ชั่วโมงที่แล้ว" + +msgid "days ago" +msgstr "วันที่แล้ว" + +msgid "months ago" +msgstr "เดือนที่แล้ว" + +msgid "years ago" +msgstr "ปีที่แล้ว" + +msgid "Last Online" +msgstr "ออนไลน์ล่าสุด" + +msgid "Zoom" +msgstr "ซูม" + +msgid "Sort By" +msgstr "เรียงตาม" + +msgid "Online Status" +msgstr "สถานะออนไลน์" + +msgid "Total Traffic" +msgstr "การจราจรทั้งหมด" + +msgid "Ascending" +msgstr "จากน้อยไปมาก" + +msgid "Descending" +msgstr "จากมากไปน้อย" + +msgid "Sort by Speed" +msgstr "เรียงตามความเร็ว" + +msgid "Sort by Traffic" +msgstr "เรียงตามการจราจร" + +msgid "Simple Mode" +msgstr "โหมดง่าย" + +msgid "Detailed Mode" +msgstr "โหมดละเอียด" + +msgid "Bandix DNS Monitor" +msgstr "ตัวตรวจสอบ DNS Bandix" + +msgid "DNS Monitor" +msgstr "ตัวตรวจสอบ DNS" + +msgid "DNS Query Records" +msgstr "บันทึกการสอบถาม DNS" + +msgid "DNS Statistics" +msgstr "สถิติ DNS" + +msgid "DNS Monitoring Disabled" +msgstr "การตรวจสอบ DNS ถูกปิดใช้งาน" + +msgid "Please enable DNS monitoring in settings" +msgstr "กรุณาเปิดใช้งานการตรวจสอบ DNS ในการตั้งค่า" + +msgid "Go to Settings" +msgstr "ไปที่การตั้งค่า" + +msgid "No Data" +msgstr "ไม่มีข้อมูล" + +msgid "Time" +msgstr "เวลา" + +msgid "Domain" +msgstr "โดเมน" + +msgid "Query Type" +msgstr "ประเภทการสอบถาม" + +msgid "Response Code" +msgstr "รหัสการตอบกลับ" + +msgid "Response Time" +msgstr "เวลาตอบกลับ" + +msgid "Source IP" +msgstr "IP ต้นทาง" + +msgid "Destination IP" +msgstr "IP ปลายทาง" + +msgid "Response IPs" +msgstr "IP การตอบกลับ" + +msgid "Response Result" +msgstr "ผลการตอบกลับ" + +msgid "DNS Server" +msgstr "เซิร์ฟเวอร์ DNS" + +msgid "Query" +msgstr "สอบถาม" + +msgid "Response" +msgstr "ตอบกลับ" + +msgid "Filter" +msgstr "กรอง" + +msgid "Domain Filter" +msgstr "กรองโดเมน" + +msgid "Device Filter" +msgstr "กรองอุปกรณ์" + +msgid "DNS Server Filter" +msgstr "กรองเซิร์ฟเวอร์ DNS" + +msgid "Type Filter" +msgstr "กรองประเภท" + +msgid "All" +msgstr "ทั้งหมด" + +msgid "Queries Only" +msgstr "สอบถามเท่านั้น" + +msgid "Responses Only" +msgstr "ตอบกลับเท่านั้น" + +msgid "Search" +msgstr "ค้นหา" + +msgid "Search Domain" +msgstr "ค้นหาโดเมน" + +msgid "Search Device" +msgstr "ค้นหาอุปกรณ์" + +msgid "Search DNS Server" +msgstr "ค้นหาเซิร์ฟเวอร์ DNS" + +msgid "Clear" +msgstr "ล้าง" + +msgid "Previous" +msgstr "ก่อนหน้า" + +msgid "Next" +msgstr "ถัดไป" + +msgid "Page" +msgstr "หน้า" + +msgid "of" +msgstr "จาก" + +msgid "Total" +msgstr "ทั้งหมด" + +msgid "records" +msgstr "รายการ" + +msgid "Per Page" +msgstr "ต่อหน้า" + +msgid "" +msgstr "" + +msgid "Total Queries" +msgstr "การสอบถามทั้งหมด" + +msgid "Total Responses" +msgstr "การตอบกลับทั้งหมด" + +msgid "Queries with Response" +msgstr "การสอบถามที่มีการตอบกลับ" + +msgid "Queries without Response" +msgstr "การสอบถามที่ไม่มีการตอบกลับ" + +msgid "Avg Response Time" +msgstr "เวลาตอบกลับเฉลี่ย" + +msgid "Min Response Time" +msgstr "เวลาตอบกลับต่ำสุด" + +msgid "Max Response Time" +msgstr "เวลาตอบกลับสูงสุด" + +msgid "Success Rate" +msgstr "อัตราความสำเร็จ" + +msgid "Success" +msgstr "สำเร็จ" + +msgid "Failure" +msgstr "ล้มเหลว" + +msgid "Top Domains" +msgstr "โดเมนยอดนิยม" + +msgid "Top Query Types" +msgstr "ประเภทการสอบถามยอดนิยม" + +msgid "Top Devices" +msgstr "อุปกรณ์ยอดนิยม" + +msgid "Top DNS Servers" +msgstr "เซิร์ฟเวอร์ DNS ยอดนิยม" + +msgid "Unique Devices" +msgstr "จำนวนอุปกรณ์ที่ไม่ซ้ำ" + +msgid "ms" +msgstr "มิลลิวินาที" + +msgid "minutes" +msgstr "นาที" + +msgid "Unknown Device" +msgstr "อุปกรณ์ที่ไม่รู้จัก" + +msgid "Domain not found" +msgstr "ไม่พบโดเมน" + +msgid "Server error" +msgstr "ข้อผิดพลาดของเซิร์ฟเวอร์" + +msgid "Format error" +msgstr "ข้อผิดพลาดของรูปแบบ" + +msgid "Refused" +msgstr "ปฏิเสธ" + +msgid "Other" +msgstr "อื่นๆ" + +msgid "Does not include DoH and DoT" +msgstr "ไม่รวม DoH และ DoT" + +msgid "Latest Response Time" +msgstr "เวลาตอบกลับล่าสุด" + +msgid "Response Code Distribution" +msgstr "การกระจายรหัสการตอบกลับ" + +msgid "Response Time Percentiles" +msgstr "เปอร์เซ็นไทล์เวลาตอบกลับ" + +msgid "P50" +msgstr "P50" + +msgid "P90" +msgstr "P90" + +msgid "P95" +msgstr "P95" + +msgid "P99" +msgstr "P99" + +msgid "Bandix Connection Monitor" +msgstr "ตัวตรวจสอบการเชื่อมต่อ Bandix" + +msgid "Connection Monitor" +msgstr "ตัวตรวจสอบการเชื่อมต่อ" + +msgid "Device Connection Statistics" +msgstr "สถิติการเชื่อมต่ออุปกรณ์" + +msgid "Global Connection Statistics" +msgstr "สถิติการเชื่อมต่อทั่วโลก" + +msgid "Active TCP" +msgstr "TCP ที่ใช้งาน" + +msgid "Active UDP" +msgstr "UDP ที่ใช้งาน" + +msgid "Closed TCP" +msgstr "TCP ที่ปิด" + +msgid "Total Connections" +msgstr "การเชื่อมต่อทั้งหมด" + +msgid "Last Updated" +msgstr "อัปเดตล่าสุด" + +msgid "TCP Connections" +msgstr "การเชื่อมต่อ TCP" + +msgid "UDP Connections" +msgstr "การเชื่อมต่อ UDP" + +msgid "Established TCP" +msgstr "TCP ที่สร้างแล้ว" + +msgid "TIME_WAIT TCP" +msgstr "TIME_WAIT TCP" + +msgid "CLOSE_WAIT TCP" +msgstr "CLOSE_WAIT TCP" + +msgid "Total Devices" +msgstr "อุปกรณ์ทั้งหมด" + +msgid "Connection Monitor Disabled" +msgstr "ตัวตรวจสอบการเชื่อมต่อถูกปิดใช้งาน" + +msgid "Please enable connection monitoring in settings" +msgstr "กรุณาเปิดใช้งานการตรวจสอบการเชื่อมต่อในการตั้งค่า" + +msgid "List only shows LAN device connections, data may differ from total connections." +msgstr "รายการแสดงเฉพาะการเชื่อมต่ออุปกรณ์ LAN ข้อมูลอาจแตกต่างจากจำนวนการเชื่อมต่อทั้งหมด" + +msgid "TCP Status Details" +msgstr "รายละเอียดสถานะ TCP" + +msgid "Basic Settings" +msgstr "การตั้งค่าพื้นฐาน" + +msgid "Traffic Monitor Settings" +msgstr "การตั้งค่าตัวตรวจสอบการจราจร" + +msgid "Connection Monitor Settings" +msgstr "การตั้งค่าตัวตรวจสอบการเชื่อมต่อ" + +msgid "DNS Monitor Settings" +msgstr "การตั้งค่าตัวตรวจสอบ DNS" + +msgid "Bandix Basic Configuration" +msgstr "การกำหนดค่าพื้นฐาน Bandix" + +msgid "Configure basic parameters for Bandix service" +msgstr "กำหนดค่าพารามิเตอร์พื้นฐานสำหรับบริการ Bandix" + +msgid "Bandix Traffic Monitor Configuration" +msgstr "การกำหนดค่าตัวตรวจสอบการจราจร Bandix" + +msgid "Configure traffic monitoring related parameters" +msgstr "กำหนดค่าพารามิเตอร์ที่เกี่ยวข้องกับการตรวจสอบการจราจร" + +msgid "Bandix Connection Monitor Configuration" +msgstr "การกำหนดค่าตัวตรวจสอบการเชื่อมต่อ Bandix" + +msgid "Configure connection monitoring related parameters" +msgstr "กำหนดค่าพารามิเตอร์ที่เกี่ยวข้องกับการตรวจสอบการเชื่อมต่อ" + +msgid "Bandix DNS Monitor Configuration" +msgstr "การกำหนดค่าตัวตรวจสอบ DNS Bandix" + +msgid "Configure DNS monitoring related parameters" +msgstr "กำหนดค่าพารามิเตอร์ที่เกี่ยวข้องกับการตรวจสอบ DNS" + +msgid "Enable" +msgstr "เปิดใช้งาน" + +msgid "Enable Bandix Traffic Monitor Service" +msgstr "เปิดใช้งานบริการตัวตรวจสอบการจราจร Bandix" + +msgid "Enable Traffic Monitoring" +msgstr "เปิดใช้งานการตรวจสอบการจราจร" + +msgid "Enable Connection Monitoring" +msgstr "เปิดใช้งานการตรวจสอบการเชื่อมต่อ" + +msgid "Enable DNS Monitoring" +msgstr "เปิดใช้งานการตรวจสอบ DNS" + +msgid "Simplified Chinese" +msgstr "ภาษาจีนตัวย่อ" + +msgid "Traditional Chinese" +msgstr "ภาษาจีนตัวเต็ม" + +msgid "Port" +msgstr "พอร์ต" + +msgid "Port for Bandix service to listen on" +msgstr "พอร์ตสำหรับบริการ Bandix ฟัง" + +msgid "Monitor Interface" +msgstr "อินเทอร์เฟซตรวจสอบ" + +msgid "Select the LAN network interface to monitor" +msgstr "เลือกอินเทอร์เฟซเครือข่าย LAN ที่จะตรวจสอบ" + +msgid "Speed Units" +msgstr "หน่วยความเร็ว" + +msgid "Select the speed display unit format" +msgstr "เลือกรูปแบบหน่วยแสดงความเร็ว" + +msgid "Bytes Units (B/s, KB/s, MB/s)" +msgstr "หน่วยไบต์ (B/s, KB/s, MB/s)" + +msgid "Bits Units (bps, Kbps, Mbps)" +msgstr "หน่วยบิต (bps, Kbps, Mbps)" + +msgid "Interface Theme" +msgstr "ธีมอินเทอร์เฟซ" + +msgid "Select the display theme for Bandix Traffic Monitor" +msgstr "เลือกธีมการแสดงผลสำหรับตัวตรวจสอบการจราจร Bandix" + +msgid "Follow System" +msgstr "ตามระบบ" + +msgid "Light Mode" +msgstr "โหมดสว่าง" + +msgid "Dark Mode" +msgstr "โหมดมืด" + +msgid "Feedback" +msgstr "ข้อเสนอแนะ" + +msgid "Log Level" +msgstr "ระดับบันทึก" + +msgid "Set the log level for Bandix service" +msgstr "ตั้งค่าระดับบันทึกสำหรับบริการ Bandix" + +msgid "Offline Timeout" +msgstr "หมดเวลาออฟไลน์" + +msgid "Set the timeout for device offline detection (seconds). Devices inactive for longer than this time will be marked as offline" +msgstr "ตั้งค่าเวลาหมดเวลาสำหรับการตรวจจับอุปกรณ์ออฟไลน์ (วินาที) อุปกรณ์ที่ไม่ใช้งานนานกว่านี้จะถูกทำเครื่องหมายว่าออฟไลน์" + +msgid "Traffic History Period" +msgstr "ระยะเวลาประวัติการจราจร" + +msgid "10 minutes interval uses about 60 KB per device" +msgstr "ช่วงเวลา 10 นาทีใช้ประมาณ 60 KB ต่ออุปกรณ์" + +msgid "Data Flush Interval" +msgstr "ช่วงเวลาล้างข้อมูล" + +msgid "Set the interval for flushing data to disk" +msgstr "ตั้งค่าช่วงเวลาสำหรับล้างข้อมูลไปยังดิสก์" + +msgid "1 minute" +msgstr "1 นาที" + +msgid "5 minutes" +msgstr "5 นาที" + +msgid "10 minutes" +msgstr "10 นาที" + +msgid "15 minutes" +msgstr "15 นาที" + +msgid "20 minutes" +msgstr "20 นาที" + +msgid "25 minutes" +msgstr "25 นาที" + +msgid "30 minutes" +msgstr "30 นาที" + +msgid "1 hour" +msgstr "1 ชั่วโมง" + +msgid "2 hours" +msgstr "2 ชั่วโมง" + +msgid "Data Directory" +msgstr "ไดเรกทอรีข้อมูล" + +msgid "Bandix data storage directory" +msgstr "ไดเรกทอรีจัดเก็บข้อมูล Bandix" + +msgid "Enable Bandix connection monitoring" +msgstr "เปิดใช้งานการตรวจสอบการเชื่อมต่อ Bandix" + +msgid "Enable Bandix DNS monitoring" +msgstr "เปิดใช้งานการตรวจสอบ DNS Bandix" + +msgid "DNS Max Records" +msgstr "จำนวนบันทึก DNS สูงสุด" + +msgid "Set the maximum number of DNS query records to keep. Older records will be deleted when this limit is exceeded" +msgstr "ตั้งค่าจำนวนสูงสุดของบันทึกการสอบถาม DNS ที่จะเก็บ บันทึกเก่าจะถูกลบเมื่อเกินขีดจำกัดนี้" + +msgid "Persist History Data" +msgstr "เก็บข้อมูลประวัติ" + +msgid "Enable data persistence functionality, data will only be persisted to disk when this option is enabled" +msgstr "เปิดใช้งานฟังก์ชันการเก็บข้อมูล ข้อมูลจะถูกเก็บไว้ในดิสก์เมื่อเปิดใช้งานตัวเลือกนี้เท่านั้น" diff --git a/luci-app-bandix/po/zh-cn b/luci-app-bandix/po/zh-cn new file mode 120000 index 0000000..8d69574 --- /dev/null +++ b/luci-app-bandix/po/zh-cn @@ -0,0 +1 @@ +zh_Hans \ No newline at end of file diff --git a/luci-app-bandix/po/zh-cn/bandix.po b/luci-app-bandix/po/zh-cn/bandix.po deleted file mode 100644 index e919ccc..0000000 --- a/luci-app-bandix/po/zh-cn/bandix.po +++ /dev/null @@ -1,3 +0,0 @@ -msgid "Bandix" -msgstr "Bandix 流量监控" - diff --git a/luci-app-bandix/po/zh_Hans/bandix.po b/luci-app-bandix/po/zh_Hans/bandix.po index e919ccc..fab0de5 100644 --- a/luci-app-bandix/po/zh_Hans/bandix.po +++ b/luci-app-bandix/po/zh_Hans/bandix.po @@ -1,3 +1,735 @@ -msgid "Bandix" +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" + +msgid "Bandix Traffic Monitor" msgstr "Bandix 流量监控" +msgid "Loading data..." +msgstr "正在加载数据..." + +msgid "Unable to fetch data" +msgstr "无法获取数据" + +msgid "Unable to fetch history data" +msgstr "无法获取历史数据" + +msgid "Hostname" +msgstr "主机名" + +msgid "IP Address" +msgstr "IP地址" + +msgid "MAC Address" +msgstr "MAC地址" + +msgid "Download Speed" +msgstr "下载速度" + +msgid "Upload Speed" +msgstr "上传速度" + +msgid "Total Download" +msgstr "总下载量" + +msgid "Total Upload" +msgstr "总上传量" + +msgid "Download Limit" +msgstr "下载限速" + +msgid "Upload Limit" +msgstr "上传限速" + +msgid "Interface Language" +msgstr "界面语言" + +msgid "Select the display language for Bandix Traffic Monitor" +msgstr "选择 Bandix 流量监控的显示语言" + +msgid "Device Info" +msgstr "设备信息" + +msgid "Device List" +msgstr "设备列表" + +msgid "LAN Traffic" +msgstr "LAN 流量" + +msgid "WAN Traffic" +msgstr "WAN 流量" + +msgid "Rate Limit" +msgstr "限速设置" + +msgid "Actions" +msgstr "操作" + +msgid "Online Devices" +msgstr "在线设备" + +msgid "WAN Only" +msgstr "仅限WAN 流量" + +msgid "Settings" +msgstr "设置" + +msgid "Device Settings" +msgstr "设备设置" + +msgid "Rate Limits" +msgstr "限速设置" + +msgid "Remove Rate Limit" +msgstr "取消限速" + +msgid "Save" +msgstr "保存" + +msgid "Cancel" +msgstr "取消" + +msgid "Set Rate Limit" +msgstr "设置限速" + +msgid "Device" +msgstr "设备" + +msgid "Set Hostname" +msgstr "设置主机名" + +msgid "Please enter hostname" +msgstr "请输入主机名" + +msgid "Hostname set successfully" +msgstr "主机名设置成功" + +msgid "Failed to set hostname" +msgstr "主机名设置失败" + +msgid "Unlimited" +msgstr "无限制" + +msgid "Settings saved successfully" +msgstr "设置成功" + +msgid "Failed to save settings" +msgstr "设置失败" + +msgid "Please enter a valid speed value" +msgstr "请输入有效的速度值" + +msgid "Speed value must be greater than 0" +msgstr "速度值必须大于0" + +msgid "Saving..." +msgstr "保存中..." + +msgid "Rate limiting only applies to WAN traffic." +msgstr "限速功能仅对 WAN 流量生效。" + +msgid "Tip: Enter 0 for unlimited" +msgstr "提示:输入 0 表示无限制" + +msgid "Traffic History" +msgstr "历史流量趋势" + +msgid "Select Device" +msgstr "选择设备" + +msgid "All Devices" +msgstr "所有设备" + +msgid "Time Range" +msgstr "时间范围" + +msgid "Last 5 minutes" +msgstr "最近5分钟" + +msgid "Last 30 minutes" +msgstr "最近30分钟" + +msgid "Last 2 hours" +msgstr "最近2小时" + +msgid "Type" +msgstr "类型" + +msgid "Total" +msgstr "总流量" + +msgid "LAN" +msgstr "LAN 流量" + +msgid "WAN" +msgstr "WAN 流量" + +msgid "Refresh" +msgstr "刷新" + +msgid "Upload Rate" +msgstr "上传速率" + +msgid "Download Rate" +msgstr "下载速率" + +msgid "Last" +msgstr "最近" + +msgid "second" +msgstr "秒" + +msgid "minute" +msgstr "分钟" + +msgid "hour" +msgstr "小时" + +msgid "day" +msgstr "天" + +msgid "week" +msgstr "周" + +msgid "Other Rates" +msgstr "其他速率" + +msgid "Cumulative" +msgstr "累计流量" + +msgid "Total Uploaded" +msgstr "总上传" + +msgid "Total Downloaded" +msgstr "总下载" + +msgid "LAN Uploaded" +msgstr "LAN 已上传" + +msgid "LAN Downloaded" +msgstr "LAN 已下载" + +msgid "WAN Uploaded" +msgstr "WAN 已上传" + +msgid "WAN Downloaded" +msgstr "WAN 已下载" + +msgid "Total Upload" +msgstr "总上传速率" + +msgid "Total Download" +msgstr "总下载速率" + +msgid "LAN Upload" +msgstr "LAN 上传速率" + +msgid "LAN Download" +msgstr "LAN 下载速率" + +msgid "WAN Upload" +msgstr "WAN 上传速率" + +msgid "WAN Download" +msgstr "WAN 下载速率" + +msgid "Never Online" +msgstr "从未上线" + +msgid "Just Now" +msgstr "刚刚" + +msgid "min ago" +msgstr "分钟前" + +msgid "h ago" +msgstr "小时前" + +msgid "days ago" +msgstr "天前" + +msgid "months ago" +msgstr "个月前" + +msgid "years ago" +msgstr "年前" + +msgid "Last Online" +msgstr "最后上线" + +msgid "Zoom" +msgstr "缩放" + +msgid "Sort By" +msgstr "排序方式" + +msgid "Online Status" +msgstr "在线状态" + +msgid "Total Traffic" +msgstr "总流量" + +msgid "Ascending" +msgstr "升序" + +msgid "Descending" +msgstr "降序" + +msgid "Sort by Speed" +msgstr "按速度排序" + +msgid "Sort by Traffic" +msgstr "按用量排序" + +msgid "Simple Mode" +msgstr "简易模式" + +msgid "Detailed Mode" +msgstr "详细模式" + +msgid "Bandix DNS Monitor" +msgstr "Bandix DNS 监控" + +msgid "DNS Monitor" +msgstr "DNS 监控" + +msgid "DNS Query Records" +msgstr "DNS 查询记录" + +msgid "DNS Statistics" +msgstr "DNS 统计信息" + +msgid "DNS Monitoring Disabled" +msgstr "DNS监控未启用" + +msgid "Please enable DNS monitoring in settings" +msgstr "请在设置中启用DNS监控功能" + +msgid "Go to Settings" +msgstr "前往设置" + +msgid "No Data" +msgstr "无数据" + +msgid "Time" +msgstr "时间" + +msgid "Domain" +msgstr "域名" + +msgid "Query Type" +msgstr "查询类型" + +msgid "Response Code" +msgstr "响应码" + +msgid "Response Time" +msgstr "响应时间" + +msgid "Source IP" +msgstr "源IP" + +msgid "Destination IP" +msgstr "目标IP" + +msgid "Response IPs" +msgstr "响应IP" + +msgid "Response Result" +msgstr "响应结果" + +msgid "DNS Server" +msgstr "DNS服务器" + +msgid "Query" +msgstr "查询" + +msgid "Response" +msgstr "响应" + +msgid "Filter" +msgstr "过滤" + +msgid "Domain Filter" +msgstr "域名过滤" + +msgid "Device Filter" +msgstr "设备过滤" + +msgid "DNS Server Filter" +msgstr "DNS服务器过滤" + +msgid "Type Filter" +msgstr "类型过滤" + +msgid "All" +msgstr "全部" + +msgid "Queries Only" +msgstr "仅查询" + +msgid "Responses Only" +msgstr "仅响应" + +msgid "Search" +msgstr "搜索" + +msgid "Search Domain" +msgstr "搜索域名" + +msgid "Search Device" +msgstr "搜索设备" + +msgid "Search DNS Server" +msgstr "搜索DNS服务器" + +msgid "Clear" +msgstr "清除" + +msgid "Previous" +msgstr "上一页" + +msgid "Next" +msgstr "下一页" + +msgid "Page" +msgstr "第" + +msgid "of" +msgstr "页,共" + +msgid "Total" +msgstr "全部" + +msgid "records" +msgstr "条记录" + +msgid "Per Page" +msgstr "每页显示" + +msgid "" +msgstr "条" + +msgid "Total Queries" +msgstr "总查询数" + +msgid "Total Responses" +msgstr "总响应数" + +msgid "Queries with Response" +msgstr "有响应查询" + +msgid "Queries without Response" +msgstr "无响应查询" + +msgid "Avg Response Time" +msgstr "平均响应时间" + +msgid "Min Response Time" +msgstr "最快响应时间" + +msgid "Max Response Time" +msgstr "最慢响应时间" + +msgid "Success Rate" +msgstr "成功率" + +msgid "Success" +msgstr "成功" + +msgid "Failure" +msgstr "失败" + +msgid "Top Domains" +msgstr "最常查询域名" + +msgid "Top Query Types" +msgstr "最常用查询类型" + +msgid "Top Devices" +msgstr "最活跃设备" + +msgid "Top DNS Servers" +msgstr "最常用DNS服务器" + +msgid "Unique Devices" +msgstr "唯一设备数" + +msgid "ms" +msgstr "毫秒" + +msgid "minutes" +msgstr "分钟" + +msgid "Unknown Device" +msgstr "未知设备" + +msgid "Domain not found" +msgstr "域名未找到" + +msgid "Server error" +msgstr "服务器错误" + +msgid "Format error" +msgstr "格式错误" + +msgid "Refused" +msgstr "拒绝" + +msgid "Other" +msgstr "其他" + +msgid "Does not include DoH and DoT" +msgstr "不包含 DoH 和 DoT" + +msgid "Latest Response Time" +msgstr "最新响应时间" + +msgid "Response Code Distribution" +msgstr "响应码分布" + +msgid "Response Time Percentiles" +msgstr "响应时间百分位" + +msgid "P50" +msgstr "P50" + +msgid "P90" +msgstr "P90" + +msgid "P95" +msgstr "P95" + +msgid "P99" +msgstr "P99" + +msgid "Bandix Connection Monitor" +msgstr "Bandix 连接监控" + +msgid "Connection Monitor" +msgstr "连接监控" + +msgid "Device Connection Statistics" +msgstr "设备连接统计" + +msgid "Global Connection Statistics" +msgstr "全局连接统计" + +msgid "Active TCP" +msgstr "活跃TCP" + +msgid "Active UDP" +msgstr "活跃UDP" + +msgid "Closed TCP" +msgstr "已关闭TCP" + +msgid "Total Connections" +msgstr "总连接数" + +msgid "Last Updated" +msgstr "最后更新" + +msgid "TCP Connections" +msgstr "TCP连接数" + +msgid "UDP Connections" +msgstr "UDP连接数" + +msgid "Established TCP" +msgstr "已建立TCP" + +msgid "TIME_WAIT TCP" +msgstr "TIME_WAIT TCP" + +msgid "CLOSE_WAIT TCP" +msgstr "CLOSE_WAIT TCP" + +msgid "Total Devices" +msgstr "设备总数" + +msgid "Connection Monitor Disabled" +msgstr "连接监控未启用" + +msgid "Please enable connection monitoring in settings" +msgstr "请在设置中启用连接监控功能" + +msgid "List only shows LAN device connections, data may differ from total connections." +msgstr "列表只显示局域网设备连接,数据可能和总连接数不一致。" + +msgid "TCP Status Details" +msgstr "TCP 状态详情" + +msgid "Basic Settings" +msgstr "基本设置" + +msgid "Traffic Monitor Settings" +msgstr "流量监控设置" + +msgid "Connection Monitor Settings" +msgstr "连接监控设置" + +msgid "DNS Monitor Settings" +msgstr "DNS监控设置" + +msgid "Bandix Basic Configuration" +msgstr "Bandix 基本配置" + +msgid "Configure basic parameters for Bandix service" +msgstr "配置 Bandix 服务的基本参数" + +msgid "Bandix Traffic Monitor Configuration" +msgstr "Bandix 流量监控配置" + +msgid "Configure traffic monitoring related parameters" +msgstr "配置流量监控相关参数" + +msgid "Bandix Connection Monitor Configuration" +msgstr "Bandix 连接监控配置" + +msgid "Configure connection monitoring related parameters" +msgstr "配置连接监控相关参数" + +msgid "Bandix DNS Monitor Configuration" +msgstr "Bandix DNS监控配置" + +msgid "Configure DNS monitoring related parameters" +msgstr "配置DNS监控相关参数" + +msgid "Enable" +msgstr "启用" + +msgid "Enable Bandix Traffic Monitor Service" +msgstr "启用 Bandix 流量监控服务" + +msgid "Enable Traffic Monitoring" +msgstr "启用流量监控" + +msgid "Enable Connection Monitoring" +msgstr "启用连接监控" + +msgid "Enable DNS Monitoring" +msgstr "启用DNS监控" + +msgid "Simplified Chinese" +msgstr "简体中文" + +msgid "Traditional Chinese" +msgstr "繁体中文" + +msgid "Port" +msgstr "端口" + +msgid "Port for Bandix service to listen on" +msgstr "Bandix 服务监听的端口" + +msgid "Monitor Interface" +msgstr "监控网卡" + +msgid "Select the LAN network interface to monitor" +msgstr "选择要监控的LAN网络接口" + +msgid "Speed Units" +msgstr "网速单位" + +msgid "Select the speed display unit format" +msgstr "选择网速显示的单位格式" + +msgid "Bytes Units (B/s, KB/s, MB/s)" +msgstr "字节单位 (B/s, KB/s, MB/s)" + +msgid "Bits Units (bps, Kbps, Mbps)" +msgstr "比特单位 (bps, Kbps, Mbps)" + +msgid "Interface Theme" +msgstr "界面主题" + +msgid "Select the display theme for Bandix Traffic Monitor" +msgstr "选择 Bandix 流量监控的显示主题" + +msgid "Follow System" +msgstr "跟随系统" + +msgid "Light Mode" +msgstr "明亮模式" + +msgid "Dark Mode" +msgstr "暗黑模式" + +msgid "Feedback" +msgstr "意见反馈" + +msgid "Log Level" +msgstr "日志级别" + +msgid "Set the log level for Bandix service" +msgstr "设置 Bandix 服务的日志级别" + +msgid "Offline Timeout" +msgstr "离线超时时间" + +msgid "Set the timeout for device offline detection (seconds). Devices inactive for longer than this time will be marked as offline" +msgstr "设置设备离线判断的超时时间(秒)。超过此时间未活动的设备将被标记为离线" + +msgid "Traffic History Period" +msgstr "历史流量周期" + +msgid "10 minutes interval uses about 60 KB per device" +msgstr "10分钟历史周期,每个设备占用 60KB" + +msgid "Data Flush Interval" +msgstr "数据 flush 间隔" + +msgid "Set the interval for flushing data to disk" +msgstr "设置数据写入磁盘的时间间隔" + +msgid "1 minute" +msgstr "1 分钟" + +msgid "5 minutes" +msgstr "5 分钟" + +msgid "10 minutes" +msgstr "10 分钟" + +msgid "15 minutes" +msgstr "15 分钟" + +msgid "20 minutes" +msgstr "20 分钟" + +msgid "25 minutes" +msgstr "25 分钟" + +msgid "30 minutes" +msgstr "30 分钟" + +msgid "1 hour" +msgstr "1 小时" + +msgid "2 hours" +msgstr "2 小时" + +msgid "Data Directory" +msgstr "数据目录" + +msgid "Bandix data storage directory" +msgstr "Bandix 数据存储目录" + +msgid "Enable Bandix connection monitoring" +msgstr "启用 Bandix 连接监控功能" + +msgid "Enable Bandix DNS monitoring" +msgstr "启用 Bandix DNS监控功能" + +msgid "DNS Max Records" +msgstr "DNS最大记录数" + +msgid "Set the maximum number of DNS query records to keep. Older records will be deleted when this limit is exceeded" +msgstr "设置DNS查询记录的最大保存数量,超过此数量将删除最旧的记录" + +msgid "Persist History Data" +msgstr "持久化历史数据" + +msgid "Enable data persistence functionality, data will only be persisted to disk when this option is enabled" +msgstr "启用数据持久化功能,只有启用此选项后才会持久化到磁盘" \ No newline at end of file diff --git a/luci-app-bandix/po/zh_Hant/bandix.po b/luci-app-bandix/po/zh_Hant/bandix.po new file mode 100644 index 0000000..327fd9a --- /dev/null +++ b/luci-app-bandix/po/zh_Hant/bandix.po @@ -0,0 +1,735 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" + +msgid "Bandix Traffic Monitor" +msgstr "Bandix 流量監控" + +msgid "Loading data..." +msgstr "正在載入數据..." + +msgid "Unable to fetch data" +msgstr "無法取得數据" + +msgid "Unable to fetch history data" +msgstr "無法取得歷史數据" + +msgid "Hostname" +msgstr "主機名" + +msgid "IP Address" +msgstr "IP位址" + +msgid "MAC Address" +msgstr "MAC位址" + +msgid "Download Speed" +msgstr "下載速度" + +msgid "Upload Speed" +msgstr "上傳速度" + +msgid "Total Download" +msgstr "總下載量" + +msgid "Total Upload" +msgstr "總上傳量" + +msgid "Download Limit" +msgstr "下載限速" + +msgid "Upload Limit" +msgstr "上傳限速" + +msgid "Interface Language" +msgstr "介面語言" + +msgid "Select the display language for Bandix Traffic Monitor" +msgstr "選擇 Bandix 流量監控的顯示语言" + +msgid "Device Info" +msgstr "設備資訊" + +msgid "Device List" +msgstr "設備清單" + +msgid "LAN Traffic" +msgstr "LAN 流量" + +msgid "WAN Traffic" +msgstr "WAN 流量" + +msgid "Rate Limit" +msgstr "限速設定" + +msgid "Actions" +msgstr "操作" + +msgid "Online Devices" +msgstr "線上設備" + +msgid "WAN Only" +msgstr "仅限WAN 流量" + +msgid "Settings" +msgstr "設定" + +msgid "Device Settings" +msgstr "設備設定" + +msgid "Rate Limits" +msgstr "限速設定" + +msgid "Remove Rate Limit" +msgstr "取消限速" + +msgid "Save" +msgstr "儲存" + +msgid "Cancel" +msgstr "取消" + +msgid "Set Rate Limit" +msgstr "設定限速" + +msgid "Device" +msgstr "設備" + +msgid "Set Hostname" +msgstr "設定主機名" + +msgid "Please enter hostname" +msgstr "請輸入主機名" + +msgid "Hostname set successfully" +msgstr "主機名設定成功" + +msgid "Failed to set hostname" +msgstr "主機名設定失敗" + +msgid "Unlimited" +msgstr "無限制" + +msgid "Settings saved successfully" +msgstr "設定成功" + +msgid "Failed to save settings" +msgstr "設定失敗" + +msgid "Please enter a valid speed value" +msgstr "請輸入有效的速度值" + +msgid "Speed value must be greater than 0" +msgstr "速度值必須大於0" + +msgid "Saving..." +msgstr "儲存中..." + +msgid "Rate limiting only applies to WAN traffic." +msgstr "限速功能僅對 WAN 流量生效。" + +msgid "Tip: Enter 0 for unlimited" +msgstr "提示:输入 0 表示無限制" + +msgid "Traffic History" +msgstr "歷史流量趨勢" + +msgid "Select Device" +msgstr "選擇設備" + +msgid "All Devices" +msgstr "所有設備" + +msgid "Time Range" +msgstr "時間範圍" + +msgid "Last 5 minutes" +msgstr "最近5分鐘" + +msgid "Last 30 minutes" +msgstr "最近30分鐘" + +msgid "Last 2 hours" +msgstr "最近2小時" + +msgid "Type" +msgstr "類型" + +msgid "Total" +msgstr "總流量" + +msgid "LAN" +msgstr "LAN 流量" + +msgid "WAN" +msgstr "WAN 流量" + +msgid "Refresh" +msgstr "重新整理" + +msgid "Upload Rate" +msgstr "上傳速率" + +msgid "Download Rate" +msgstr "下載速率" + +msgid "Last" +msgstr "最近" + +msgid "second" +msgstr "秒" + +msgid "minute" +msgstr "分鐘" + +msgid "hour" +msgstr "小時" + +msgid "day" +msgstr "天" + +msgid "week" +msgstr "周" + +msgid "Other Rates" +msgstr "其他速率" + +msgid "Cumulative" +msgstr "累計流量" + +msgid "Total Uploaded" +msgstr "總上傳" + +msgid "Total Downloaded" +msgstr "總下載" + +msgid "LAN Uploaded" +msgstr "LAN 已上傳" + +msgid "LAN Downloaded" +msgstr "LAN 已下載" + +msgid "WAN Uploaded" +msgstr "WAN 已上傳" + +msgid "WAN Downloaded" +msgstr "WAN 已下載" + +msgid "Total Upload" +msgstr "總上傳速率" + +msgid "Total Download" +msgstr "總下載速率" + +msgid "LAN Upload" +msgstr "LAN 上傳速率" + +msgid "LAN Download" +msgstr "LAN 下載速率" + +msgid "WAN Upload" +msgstr "WAN 上傳速率" + +msgid "WAN Download" +msgstr "WAN 下載速率" + +msgid "Never Online" +msgstr "從未上線" + +msgid "Just Now" +msgstr "剛剛" + +msgid "min ago" +msgstr "分鐘前" + +msgid "h ago" +msgstr "小時前" + +msgid "days ago" +msgstr "天前" + +msgid "months ago" +msgstr "个月前" + +msgid "years ago" +msgstr "年前" + +msgid "Last Online" +msgstr "最後上線" + +msgid "Zoom" +msgstr "縮放" + +msgid "Sort By" +msgstr "排序方式" + +msgid "Online Status" +msgstr "線上狀態" + +msgid "Total Traffic" +msgstr "總流量" + +msgid "Ascending" +msgstr "升序" + +msgid "Descending" +msgstr "降序" + +msgid "Sort by Speed" +msgstr "依速度排序" + +msgid "Sort by Traffic" +msgstr "依用量排序" + +msgid "Simple Mode" +msgstr "簡易模式" + +msgid "Detailed Mode" +msgstr "詳細模式" + +msgid "Bandix DNS Monitor" +msgstr "Bandix DNS 監控" + +msgid "DNS Monitor" +msgstr "DNS 監控" + +msgid "DNS Query Records" +msgstr "DNS 查詢記錄" + +msgid "DNS Statistics" +msgstr "DNS 統計資訊" + +msgid "DNS Monitoring Disabled" +msgstr "DNS監控未啟用" + +msgid "Please enable DNS monitoring in settings" +msgstr "请在設定中啟用DNS監控功能" + +msgid "Go to Settings" +msgstr "前往設定" + +msgid "No Data" +msgstr "無資料" + +msgid "Time" +msgstr "時間" + +msgid "Domain" +msgstr "網域" + +msgid "Query Type" +msgstr "查詢類型" + +msgid "Response Code" +msgstr "回應碼" + +msgid "Response Time" +msgstr "回應時間" + +msgid "Source IP" +msgstr "來源IP" + +msgid "Destination IP" +msgstr "目標IP" + +msgid "Response IPs" +msgstr "回應IP" + +msgid "Response Result" +msgstr "回應結果" + +msgid "DNS Server" +msgstr "DNS伺服器" + +msgid "Query" +msgstr "查詢" + +msgid "Response" +msgstr "回應" + +msgid "Filter" +msgstr "篩選" + +msgid "Domain Filter" +msgstr "網域篩選" + +msgid "Device Filter" +msgstr "設備篩選" + +msgid "DNS Server Filter" +msgstr "DNS伺服器篩選" + +msgid "Type Filter" +msgstr "類型篩選" + +msgid "All" +msgstr "全部" + +msgid "Queries Only" +msgstr "仅查詢" + +msgid "Responses Only" +msgstr "仅回應" + +msgid "Search" +msgstr "搜尋" + +msgid "Search Domain" +msgstr "搜尋網域" + +msgid "Search Device" +msgstr "搜尋設備" + +msgid "Search DNS Server" +msgstr "搜尋DNS伺服器" + +msgid "Clear" +msgstr "清除" + +msgid "Previous" +msgstr "上一頁" + +msgid "Next" +msgstr "下一頁" + +msgid "Page" +msgstr "第" + +msgid "of" +msgstr "頁,共" + +msgid "Total" +msgstr "全部" + +msgid "records" +msgstr "筆記錄" + +msgid "Per Page" +msgstr "每頁顯示" + +msgid "" +msgstr "筆" + +msgid "Total Queries" +msgstr "總查詢數" + +msgid "Total Responses" +msgstr "總回應數" + +msgid "Queries with Response" +msgstr "有回應查詢" + +msgid "Queries without Response" +msgstr "無回應查詢" + +msgid "Avg Response Time" +msgstr "平均回應時間" + +msgid "Min Response Time" +msgstr "最快回應時間" + +msgid "Max Response Time" +msgstr "最慢回應時間" + +msgid "Success Rate" +msgstr "成功率" + +msgid "Success" +msgstr "成功" + +msgid "Failure" +msgstr "失敗" + +msgid "Top Domains" +msgstr "最常查詢網域" + +msgid "Top Query Types" +msgstr "最常用查詢類型" + +msgid "Top Devices" +msgstr "最活躍設備" + +msgid "Top DNS Servers" +msgstr "最常用DNS伺服器" + +msgid "Unique Devices" +msgstr "唯一設備數" + +msgid "ms" +msgstr "毫秒" + +msgid "minutes" +msgstr "分鐘" + +msgid "Unknown Device" +msgstr "未知設備" + +msgid "Domain not found" +msgstr "網域未找到" + +msgid "Server error" +msgstr "伺服器錯誤" + +msgid "Format error" +msgstr "格式錯誤" + +msgid "Refused" +msgstr "拒絕" + +msgid "Other" +msgstr "其他" + +msgid "Does not include DoH and DoT" +msgstr "不包含 DoH 和 DoT" + +msgid "Latest Response Time" +msgstr "最新回應時間" + +msgid "Response Code Distribution" +msgstr "回應碼分布" + +msgid "Response Time Percentiles" +msgstr "回應時間百分位" + +msgid "P50" +msgstr "P50" + +msgid "P90" +msgstr "P90" + +msgid "P95" +msgstr "P95" + +msgid "P99" +msgstr "P99" + +msgid "Bandix Connection Monitor" +msgstr "Bandix 連線監控" + +msgid "Connection Monitor" +msgstr "連線監控" + +msgid "Device Connection Statistics" +msgstr "設備連線統計" + +msgid "Global Connection Statistics" +msgstr "全域連線統計" + +msgid "Active TCP" +msgstr "活躍TCP" + +msgid "Active UDP" +msgstr "活躍UDP" + +msgid "Closed TCP" +msgstr "已關閉TCP" + +msgid "Total Connections" +msgstr "總連線數" + +msgid "Last Updated" +msgstr "最後更新" + +msgid "TCP Connections" +msgstr "TCP連線數" + +msgid "UDP Connections" +msgstr "UDP連線數" + +msgid "Established TCP" +msgstr "已建立TCP" + +msgid "TIME_WAIT TCP" +msgstr "TIME_WAIT TCP" + +msgid "CLOSE_WAIT TCP" +msgstr "CLOSE_WAIT TCP" + +msgid "Total Devices" +msgstr "設備總數" + +msgid "Connection Monitor Disabled" +msgstr "連線監控未啟用" + +msgid "Please enable connection monitoring in settings" +msgstr "请在設定中啟用連線監控功能" + +msgid "List only shows LAN device connections, data may differ from total connections." +msgstr "清單只顯示區域網路設備連線,數据可能和總連線數不一致。" + +msgid "TCP Status Details" +msgstr "TCP 狀態詳情" + +msgid "Basic Settings" +msgstr "基本設定" + +msgid "Traffic Monitor Settings" +msgstr "流量監控設定" + +msgid "Connection Monitor Settings" +msgstr "連線監控設定" + +msgid "DNS Monitor Settings" +msgstr "DNS監控設定" + +msgid "Bandix Basic Configuration" +msgstr "Bandix 基本配置" + +msgid "Configure basic parameters for Bandix service" +msgstr "配置 Bandix 服務的基本参數" + +msgid "Bandix Traffic Monitor Configuration" +msgstr "Bandix 流量監控配置" + +msgid "Configure traffic monitoring related parameters" +msgstr "配置流量監控相關参數" + +msgid "Bandix Connection Monitor Configuration" +msgstr "Bandix 連線監控配置" + +msgid "Configure connection monitoring related parameters" +msgstr "配置連線監控相關参數" + +msgid "Bandix DNS Monitor Configuration" +msgstr "Bandix DNS監控配置" + +msgid "Configure DNS monitoring related parameters" +msgstr "配置DNS監控相關参數" + +msgid "Enable" +msgstr "啟用" + +msgid "Enable Bandix Traffic Monitor Service" +msgstr "啟用 Bandix 流量監控服務" + +msgid "Enable Traffic Monitoring" +msgstr "啟用流量監控" + +msgid "Enable Connection Monitoring" +msgstr "啟用連線監控" + +msgid "Enable DNS Monitoring" +msgstr "啟用DNS監控" + +msgid "Simplified Chinese" +msgstr "简体中文" + +msgid "Traditional Chinese" +msgstr "繁体中文" + +msgid "Port" +msgstr "連接埠" + +msgid "Port for Bandix service to listen on" +msgstr "Bandix 服務監聽的連接埠" + +msgid "Monitor Interface" +msgstr "監控網卡" + +msgid "Select the LAN network interface to monitor" +msgstr "選擇要監控的LAN網路介面" + +msgid "Speed Units" +msgstr "网速單位" + +msgid "Select the speed display unit format" +msgstr "選擇网速顯示的單位格式" + +msgid "Bytes Units (B/s, KB/s, MB/s)" +msgstr "位元組單位 (B/s, KB/s, MB/s)" + +msgid "Bits Units (bps, Kbps, Mbps)" +msgstr "位元單位 (bps, Kbps, Mbps)" + +msgid "Interface Theme" +msgstr "界面主題" + +msgid "Select the display theme for Bandix Traffic Monitor" +msgstr "選擇 Bandix 流量監控的顯示主題" + +msgid "Follow System" +msgstr "跟隨系統" + +msgid "Light Mode" +msgstr "明亮模式" + +msgid "Dark Mode" +msgstr "暗黑模式" + +msgid "Feedback" +msgstr "意見回饋" + +msgid "Log Level" +msgstr "日誌層級" + +msgid "Set the log level for Bandix service" +msgstr "設定 Bandix 服務的日誌層級" + +msgid "Offline Timeout" +msgstr "離線超时時間" + +msgid "Set the timeout for device offline detection (seconds). Devices inactive for longer than this time will be marked as offline" +msgstr "設定設備離線判斷的超时時間(秒)。超過此時間未活動的設備将被標記为離線" + +msgid "Traffic History Period" +msgstr "歷史流量週期" + +msgid "10 minutes interval uses about 60 KB per device" +msgstr "10分鐘歷史週期,每个設備佔用 60KB" + +msgid "Data Flush Interval" +msgstr "數据 flush 間隔" + +msgid "Set the interval for flushing data to disk" +msgstr "設定數据寫入磁碟的時間間隔" + +msgid "1 minute" +msgstr "1 分鐘" + +msgid "5 minutes" +msgstr "5 分鐘" + +msgid "10 minutes" +msgstr "10 分鐘" + +msgid "15 minutes" +msgstr "15 分鐘" + +msgid "20 minutes" +msgstr "20 分鐘" + +msgid "25 minutes" +msgstr "25 分鐘" + +msgid "30 minutes" +msgstr "30 分鐘" + +msgid "1 hour" +msgstr "1 小時" + +msgid "2 hours" +msgstr "2 小時" + +msgid "Data Directory" +msgstr "數据目录" + +msgid "Bandix data storage directory" +msgstr "Bandix 數据儲存目錄" + +msgid "Enable Bandix connection monitoring" +msgstr "啟用 Bandix 連線監控功能" + +msgid "Enable Bandix DNS monitoring" +msgstr "啟用 Bandix DNS監控功能" + +msgid "DNS Max Records" +msgstr "DNS最大记录數" + +msgid "Set the maximum number of DNS query records to keep. Older records will be deleted when this limit is exceeded" +msgstr "設定DNS查詢記錄的最大儲存數量,超過此數量将刪除最舊的记录" + +msgid "Persist History Data" +msgstr "持久化歷史數据" + +msgid "Enable data persistence functionality, data will only be persisted to disk when this option is enabled" +msgstr "啟用數据持久化功能,只有啟用此选项后才會持久化到磁碟" \ No newline at end of file diff --git a/luci-app-kucat-config/Makefile b/luci-app-kucat-config/Makefile deleted file mode 100644 index 2d0d845..0000000 --- a/luci-app-kucat-config/Makefile +++ /dev/null @@ -1,24 +0,0 @@ -# -# Copyright 2023-2025 sirpdboy team -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk -NAME:=kucat -PKG_NAME:=luci-app-$(NAME) -LUCI_TITLE:=LuCI support for Kucat theme setting by sirpdboy -LUCI_DEPENDS:=+curl -LUCI_PKGARCH:=all - -PKG_VERSION:=1.1.1 -PKG_RELEASE:=20250722 - -define Package/$(PKG_NAME)/conffiles -/etc/config/kucat -endef - -include $(TOPDIR)/feeds/luci/luci.mk - -# call BuildPackage - OpenWrt buildroot signature - - diff --git a/luci-app-kucat-config/README.md b/luci-app-kucat-config/README.md deleted file mode 100644 index 172a20c..0000000 --- a/luci-app-kucat-config/README.md +++ /dev/null @@ -1,91 +0,0 @@ -![hello](https://views.whatilearened.today/views/github/sirpdboy/deplives.svg) [![](https://img.shields.io/badge/TG群-点击加入-FFFFFF.svg)](https://t.me/joinchat/AAAAAEpRF88NfOK5vBXGBQ) - -

-
luci-app-kucat-config
-

- -

- - - - -

- -[中文](README_CN.md) | [English] - -![screenshots](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/说明1.jpg) - -# [luci-app-kucat-config](https://github.com/sirpdboy/luci-app-kucat-config) -- Development time: December 2021 -- Release time: February 2023 -- Open source date: April 2023 -- Main supports LEDE18.06 and official 18.06 branch open source time: April 2023 version: 1.2.6 -- JS supports official website 19.07-24.10 branch latest version: May 2025 version: 2.5.9 compatible with OPENWRT 24.10 branch. - -# Function Introduction -- Being cool is beauty, born from movement. -- A toolbar with 5 shortcut keys. -- Basic BUG, adapted to all plugins currently available -- We have made a lot of optimizations for mobile phones and other devices -- There are matching theme setting tools, which can adjust shortcut keys, background images, and various color schemes to choose from. - -# As mentioned earlier, the development of the Cool Cat theme drew inspiration and borrowed some code from Opentopd theme, Jerryk God's Argon theme, and Thinktip God's Neobird theme. Thank you for your valuable contributions! - - -# Special Instructions -- When there are advanced settings and KUCAT theme setting tools in the system, the settings in the advanced settings shall prevail. -- If there are any issues with the settings, you can restore them using function 4 after logging in via SSH. -- If it is an advanced setting, to restore the default settings, you can use:/etc/init.d/advancedplus reset -- If it is the KUCAT setting tool, to restore the default settings, you can use:/etc/init.d/kucat reset - -## describe - -- luci-theme-kucat :https://github.com/sirpdboy/luci-theme-kucat -- luci-app-advancedplus :https://github.com/sirpdboy/luci-app-advancedplus -- luci-app-kucat-config :https://github.com/sirpdboy/luci-app-kucat-config - -## interface - -![screenshots](./doc/kucat1.png) - -![screenshots](./doc/kucat2.png) - -![screenshots](./doc/kucat3.png) - -![screenshots](./doc/kucat4.png) - -![screenshots](./doc/kucatz1.png) - -![screenshots](./doc/kucatz2.png) - - -# My other project - -- Watch Dog : https://github.com/sirpdboy/luci-app-watchdog -- Net Speedtest : https://github.com/sirpdboy/luci-app-netspeedtest -- Task Plan : https://github.com/sirpdboy/luci-app-taskplan -- Power Off Device : https://github.com/sirpdboy/luci-app-poweroffdevice -- OpentoPD Theme : https://github.com/sirpdboy/luci-theme-opentopd -- Ku Cat Theme : https://github.com/sirpdboy/luci-theme-kucat -- Ku Cat Theme Config : https://github.com/sirpdboy/luci-app-kucat-config -- NFT Time Control : https://github.com/sirpdboy/luci-app-timecontrol -- Parent Control: https://github.com/sirpdboy/luci-theme-parentcontrol -- Eqos Plus: https://github.com/sirpdboy/luci-app-eqosplus -- Advanced : https://github.com/sirpdboy/luci-app-advanced -- ddns-go : https://github.com/sirpdboy/luci-app-ddns-go -- Advanced Plus): https://github.com/sirpdboy/luci-app-advancedplus -- Net Wizard: https://github.com/sirpdboy/luci-app-netwizard -- Part Exp: https://github.com/sirpdboy/luci-app-partexp -- Lukcy: https://github.com/sirpdboy/luci-app-lukcy - -## HELP - -| 图飞了 | 图飞了 | -| :-----------------: | :-------------: | -|![xm1](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/支付宝.png) | ![xm1](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/微信.png) | - - - no - - -![hello](https://visitor-badge-deno.deno.dev/sirpdboy.sirpdboy.svg) [![](https://img.shields.io/badge/TGGroup-ClickJoin-FFFFFF.svg)](https://t.me/joinchat/AAAAAEpRF88NfOK5vBXGBQ) diff --git a/luci-app-kucat-config/README_CN.md b/luci-app-kucat-config/README_CN.md deleted file mode 100644 index 043d57b..0000000 --- a/luci-app-kucat-config/README_CN.md +++ /dev/null @@ -1,114 +0,0 @@ -![hello](https://views.whatilearened.today/views/github/sirpdboy/deplives.svg) [![](https://img.shields.io/badge/TG群-点击加入-FFFFFF.svg)](https://t.me/joinchat/AAAAAEpRF88NfOK5vBXGBQ) - -

-
luci-app-kucat-config
-

- -

- - - - -

- -[中文] | [English](README.md) - -![screenshots](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/说明1.jpg) - -# 酷猫主题链接: https://github.com/sirpdboy/luci-theme-kucat -# 进队设置系统工具-酷猫/argon/design三主题设置下载链接: [https://github.com/sirpdboy/luci-app-advancedplus](https://github.com/sirpdboy/luci-app-advancedplus/releases) -# 酷猫主题设置工具 链接: [https://github.com/sirpdboy/luci-app-kucat-config](https://github.com/sirpdboy/luci-app-kucat-config) -- 开发时间:2021年12月 -- 发布时间:2023年2月 -- 开源时间:2023年4月 -- 支持 支持官网openwrt 18.06-24.10分支 开源时间:2023年9月 最新版本:1.1.0 - -# 特殊说明 -- 当系统中 有进阶设置又有 KUCAT主题设置工具时, 以进阶设置中的设置为准。 -- 如果设置上有问题,可以在SSH登陆后,用4号功能恢复设置。 -- 如果是进阶设置,恢复默认设置,可以用:/etc/init.d/advancedplus reset - -# 功能介绍 - -- 以酷为美,因动而生. -- 带5种快捷键的导航栏. -- 适应目前18.06到23.05的所有版本,对大多数插件等进行适配优化. -- 针对手机等做了大量优化. -- 有配套的主题设置工具,可调节快捷键、背景图片、颜色多种方案可供选择。 -- 集成亮色和暗色模式。 - -#【说在前面的话】此次酷猫主题研发借鉴:Opentopd主题、Jerryk大神argon主题、以及thinktip大神的neobird主题的部分灵感及参考借用部分代码,在这里表示感谢,感谢有你们珠玉在前! -#目前源码暂不开源,如果你们需要联系本人可以免费获取。 - -## 目前最新版本,仅VIP固件中集成,开源升级时间在6个月以后。感谢大家支持与理解。 - -# 为什么叫酷猫 ? - -## 二个原因: - -## 一是这主题就是为酷而生,一切只为酷与简单!从此让你的主题不再单调!让主题活起来!按钮动起来!全面掌控主题颜色设置! - -## 二是因为这主题是在九个方案版本中测试研究后决定出来(正合猫有9条命),另外是本人(年后到现在)在无数个夜班熬呀熬,熬出来的,都熬成夜猫子了,所以定名:【英文名:KuCat】,【中文名:酷猫】。 - - -另外要说明一下就是本人弄固件不只是编译与搬运,是开发,是创新,更是爱好!请不要将本人与一些搬运工编译的固件来比较!那样会只会显得你很无知。 - -当然在OPENWRT的世界里比本人更优秀更专业的人士大有人在,本人能做的就是尽自己微薄浅湿的力量,尽量让固件更好用和更少的BUG。 - -不管是本人还是别人开发的插件,这里面的每一行代码,都凝聚着开发者在后面无数辛勤汗水和智慧的付出,请大家珍重他们的劳动成果与心血付出! - -也许某些功能某些要求还达不到你的预期要求,有道是一人难满百人意,有些可能是本身实现不了,有些可能是能力不足的原因实现不了. - -不管如何,如果有问题或者BUG请多给理解与支持【当然有能力的请给这些开发者们更多的物资支持】! - -在此要特别感谢VIP群里以及不在群里的所有为爱发电的好朋友们!是你们给本人无尽的力量!!谢谢!! - -## 界面 - -![screenshots](./doc/kucat1.png) - -![screenshots](./doc/kucat2.png) - -![screenshots](./doc/kucat3.png) - -![screenshots](./doc/kucat4.png) - -![screenshots](./doc/kucatz1.png) - -![screenshots](./doc/kucatz2.png) - - - -# My other project - -- 路由安全看门狗 :https://github.com/sirpdboy/luci-app-watchdog -- 网络速度测试 :https://github.com/sirpdboy/luci-app-netspeedtest -- 计划任务插件(原定时设置) : https://github.com/sirpdboy/luci-app-taskplan -- 关机功能插件 : https://github.com/sirpdboy/luci-app-poweroffdevice -- opentopd主题 : https://github.com/sirpdboy/luci-theme-opentopd -- kucat酷猫主题: https://github.com/sirpdboy/luci-theme-kucat -- kucat酷猫主题设置工具: https://github.com/sirpdboy/luci-app-kucat-config -- NFT版上网时间控制插件: https://github.com/sirpdboy/luci-app-timecontrol -- 家长控制: https://github.com/sirpdboy/luci-theme-parentcontrol -- 定时限速: https://github.com/sirpdboy/luci-app-eqosplus -- 系统高级设置 : https://github.com/sirpdboy/luci-app-advanced -- ddns-go动态域名: https://github.com/sirpdboy/luci-app-ddns-go -- 进阶设置(系统高级设置+主题设置kucat/agron/opentopd): https://github.com/sirpdboy/luci-app-advancedplus -- 网络设置向导: https://github.com/sirpdboy/luci-app-netwizard -- 一键分区扩容: https://github.com/sirpdboy/luci-app-partexp -- lukcy大吉: https://github.com/sirpdboy/luci-app-lukcy - -## 捐助 - -![screenshots](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/说明3.jpg) - -| 图飞了 | 图飞了 | -| :-----------------: | :-------------: | -|![xm1](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/支付宝.png) | ![xm1](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/微信.png) | - - - 图飞了 - - -![](https://visitor-badge-deno.deno.dev/sirpdboy.sirpdboy.svg) [![](https://img.shields.io/badge/TG群-点击加入-FFFFFF.svg)](https://t.me/joinchat/AAAAAEpRF88NfOK5vBXGBQ) - diff --git a/luci-app-kucat-config/doc/kucat1.png b/luci-app-kucat-config/doc/kucat1.png deleted file mode 100644 index d630f7546727890cd1ac3316c67e3c1d627f4c62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 595204 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
    XvybH|4|YJ+iGJn&a4F~dy9#06IisVsK(1j( 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 d#VFXWS#ZOUezGaYEi{f{@T9 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:Kngv$lC}q(^c81sOoBL55-$Z;ybi=>B@vC&I%J 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%0DP^=94Y=-NR9sp)=3mob4L!Q-x80?}vy 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
  1. ;pA^3cJmwS^E48q?IVD9 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�xflN;(RzS+EkBEMP%u&4#bVW7p#bSYD+`S(&k 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

    o5mcj%I21xXj~T&-O$Jt$cH9hFbMVgL4zwM)n= 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

    " + function o.write(self, section, value) + local old = m:get(section, self.option) or "0" + if old ~= value then + m:set(section, "flush_set", "1") + end + return Flag.write(self, section, value) + end end s:append(Template(appname .. "/rule/rule_version")) diff --git a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/shunt_rules.lua b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/shunt_rules.lua index b021a1b..5900c24 100644 --- a/luci-app-passwall2/luasrc/model/cbi/passwall2/client/shunt_rules.lua +++ b/luci-app-passwall2/luasrc/model/cbi/passwall2/client/shunt_rules.lua @@ -10,6 +10,10 @@ if not arg[1] or not m:get(arg[1]) then luci.http.redirect(m.redirect) end +function m.on_before_save(self) + m:set("@global[0]", "flush_set", "1") +end + -- Add inline CSS to map description m.description = (m.description or "") .. [[ <% if api.is_js_luci() then -%> @@ -100,6 +125,21 @@ table td, .table .td { return false } +<%- else %> + <%- end %> @@ -490,7 +536,7 @@ table td, .table .td { {{tcping}} {{url_test}} -
    +
    @@ -636,7 +682,7 @@ table td, .table .td { } tab_ul_li_html += - '
  2. ' + + '
  3. ' + '' + group_name + " | " + "" + group_nodes[group].length + '' + '
  4. ' tab_content_html += diff --git a/luci-app-passwall2/po/zh-cn/passwall2.po b/luci-app-passwall2/po/zh-cn/passwall2.po index c646232..b0ebdae 100644 --- a/luci-app-passwall2/po/zh-cn/passwall2.po +++ b/luci-app-passwall2/po/zh-cn/passwall2.po @@ -178,11 +178,11 @@ msgstr "DNS 重定向" msgid "Force special DNS server to need proxy devices." msgstr "强制需要代理的设备使用专用 DNS 服务器。" -msgid "Clear IPSet" -msgstr "清空 IPSet" +msgid "Clear IPSET" +msgstr "清空 IPSET" -msgid "Clear NFTSet" -msgstr "清空 NFTSet" +msgid "Clear NFTSET" +msgstr "清空 NFTSET" msgid "Try this feature if the rule modification does not take effect." msgstr "如果修改规则后没有生效,请尝试此功能。" @@ -1114,6 +1114,12 @@ msgstr "预定义域名列表:由'geosite:'开头,余下部分是一个名 msgid "Annotation: Begining with #" msgstr "注释: 由 # 开头" +msgid "Invert match result." +msgstr "反选匹配结果。" + +msgid "Only support Sing-Box." +msgstr "只支持 Sing-Box。" + msgid "IP: such as '127.0.0.1'." msgstr "IP: 形如'127.0.0.1'。" diff --git a/luci-app-passwall2/po/zh-tw/passwall2.po b/luci-app-passwall2/po/zh-tw/passwall2.po index 50caac1..7553d50 100644 --- a/luci-app-passwall2/po/zh-tw/passwall2.po +++ b/luci-app-passwall2/po/zh-tw/passwall2.po @@ -178,11 +178,11 @@ msgstr "DNS 重定向" msgid "Force special DNS server to need proxy devices." msgstr "强制需要代理的設備使用专用 DNS 服務器。" -msgid "Clear IPSet" -msgstr "清空 IPSet" +msgid "Clear IPSET" +msgstr "清空 IPSET" -msgid "Clear NFTSet" -msgstr "清空 NFTSet" +msgid "Clear NFTSET" +msgstr "清空 NFTSET" msgid "Try this feature if the rule modification does not take effect." msgstr "如果修改規則後没有生效,请尝試此功能。" @@ -1114,6 +1114,12 @@ msgstr "预定义域名列表:由'geosite:'開头,余下部分是一个名 msgid "Annotation: Begining with #" msgstr "注释: 由 # 開头" +msgid "Invert match result." +msgstr "反選匹配結果。" + +msgid "Only support Sing-Box." +msgstr "只支持 Sing-Box。" + msgid "IP: such as '127.0.0.1'." msgstr "IP: 形如'127.0.0.1'。" diff --git a/luci-app-ssr-plus/root/usr/bin/ssr-rules b/luci-app-ssr-plus/root/usr/bin/ssr-rules index c580ea6..75b8471 100755 --- a/luci-app-ssr-plus/root/usr/bin/ssr-rules +++ b/luci-app-ssr-plus/root/usr/bin/ssr-rules @@ -14,7 +14,7 @@ detect_firewall() { ! grep -q "fw3" /etc/init.d/firewall 2>/dev/null; then USE_NFT=1 NFT="nft" - FWI=$(uci get firewall.shadowsocksr.path 2>/dev/null) # firewall include file + FWI=$(uci get firewall.shadowsocksr.path 2>/dev/null) # firewall include file else USE_NFT=0 IPT="iptables -t nat" # alias of iptables @@ -82,32 +82,59 @@ flush_r() { } flush_nftables() { - # Remove nftables rules and sets more carefully - $NFT delete table inet ss_spec 2>/dev/null - $NFT delete table ip ss_spec 2>/dev/null - $NFT delete table ip ss_spec_mangle 2>/dev/null - - # Clean up routing rules + # 删除 inet ss_spec 表 + if $NFT list table inet ss_spec >/dev/null 2>&1; then + # 删除所有链 + local CHAINS=$($NFT list table inet ss_spec | awk '/chain [a-zA-Z0-9_-]+/ {print $2}' | sort -u) + for chain in $CHAINS; do + $NFT flush chain inet ss_spec $chain 2>/dev/null + $NFT delete chain inet ss_spec $chain 2>/dev/null + done + + # 删除所有集合(set) + local SETS=$($NFT list table inet ss_spec | awk '/set [a-zA-Z0-9_-]+/ {print $2}' | sort -u) + for setname in $SETS; do + $NFT flush set inet ss_spec $setname 2>/dev/null + $NFT delete set inet ss_spec $setname 2>/dev/null + done + + # 删除整个表 + $NFT delete table inet ss_spec 2>/dev/null + fi + + # 删除 ip ss_spec_mangle 表(如果存在) + if $NFT list table ip ss_spec_mangle >/dev/null 2>&1; then + # 删除所有链 + local CHAINS=$($NFT list table ip ss_spec_mangle | awk '/chain [a-zA-Z0-9_-]+/ {print $2}' | sort -u) + for chain in $CHAINS; do + $NFT flush chain ip ss_spec_mangle $chain 2>/dev/null + $NFT delete chain ip ss_spec_mangle $chain 2>/dev/null + done + + # 删除所有集合(set) + local SETS=$($NFT list table ip ss_spec_mangle | awk '/set [a-zA-Z0-9_-]+/ {print $2}' | sort -u) + for setname in $SETS; do + $NFT flush set ip ss_spec_mangle $setname 2>/dev/null + $NFT delete set ip ss_spec_mangle $setname 2>/dev/null + done + + # 删除整个表 + $NFT delete table ip ss_spec_mangle 2>/dev/null + fi + + # 删除策略路由标记规则 ip rule del fwmark 0x01/0x01 table 100 2>/dev/null ip route del local 0.0.0.0/0 dev lo table 100 2>/dev/null - # 删除 nftables 集合 - $NFT delete set inet ss_spec ss_spec_lan_ac 2>/dev/null - $NFT delete set inet ss_spec ss_spec_wan_ac 2>/dev/null - $NFT delete set inet ss_spec ssr_gen_router 2>/dev/null - $NFT delete set inet ss_spec fplan 2>/dev/null - $NFT delete set inet ss_spec bplan 2>/dev/null - $NFT delete set inet ss_spec gmlan 2>/dev/null - $NFT delete set inet ss_spec oversea 2>/dev/null - $NFT delete set inet ss_spec whitelist 2>/dev/null - $NFT delete set inet ss_spec blacklist 2>/dev/null - $NFT delete set inet ss_spec netflix 2>/dev/null - $NFT delete set inet ss_spec gfwlist 2>/dev/null - $NFT delete set inet ss_spec china 2>/dev/null - $NFT delete set inet ss_spec music 2>/dev/null + # 可选:强制删除所有 ss_spec 相关的集合(即使表被误删) + for setname in ss_spec_lan_ac ss_spec_wan_ac ssr_gen_router fplan bplan gmlan oversea whitelist blacklist netflix gfwlist china music; do + $NFT delete set inet ss_spec $setname 2>/dev/null + $NFT delete set ip ss_spec_mangle $setname 2>/dev/null + done + # 重置防火墙 include 文件 [ -n "$FWI" ] && echo '#!/bin/sh' >"$FWI" - + return 0 } @@ -148,13 +175,13 @@ ipset_r() { } ipset_nft() { - [ -f "$IGNORE_LIST" ] && /usr/share/shadowsocksr/chinaipset.sh "$IGNORE_LIST" - # Create nftables table and sets - $NFT list table inet ss_spec >/dev/null 2>&1 || $NFT add table inet ss_spec + if ! $NFT list table inet ss_spec >/dev/null 2>&1; then + $NFT add table inet ss_spec 2>/dev/null + fi # Create necessary collections - for setname in ss_spec_wan_ac gmlan fplan bplan whitelist blacklist netflix; do + for setname in ss_spec_wan_ac china gmlan fplan bplan whitelist blacklist netflix; do if ! $NFT list set inet ss_spec $setname >/dev/null 2>&1; then $NFT add set inet ss_spec $setname '{ type ipv4_addr; flags interval; auto-merge; }' 2>/dev/null else @@ -162,6 +189,11 @@ ipset_nft() { fi done + # 批量导入中国IP列表 + if [ -f "${china_ip:=/etc/ssrplus/china_ssr.txt}" ]; then + $NFT add element inet ss_spec china { $(tr '\n' ',' < "${china_ip}" | sed 's/,$//') } 2>/dev/null + fi + # Add IP addresses to sets for ip in $LAN_GM_IP; do [ -n "$ip" ] && $NFT add element inet ss_spec gmlan "{ $ip }" 2>/dev/null @@ -181,7 +213,7 @@ ipset_nft() { # Create main chain for WAN access control if ! $NFT list chain inet ss_spec ss_spec_wan_ac >/dev/null 2>&1; then - $NFT add chain inet ss_spec ss_spec_wan_ac '{ type nat hook prerouting priority dstnat - 1; policy accept; }' 2>/dev/null + $NFT add chain inet ss_spec ss_spec_wan_ac 2>/dev/null fi $NFT flush chain inet ss_spec ss_spec_wan_ac 2>/dev/null @@ -197,9 +229,7 @@ ipset_nft() { # Add basic rules $NFT add rule inet ss_spec ss_spec_wan_ac tcp dport 53 ip daddr 127.0.0.0/8 return - $NFT add rule inet ss_spec ss_spec_wan_ac udp dport 53 ip daddr 127.0.0.0/8 return $NFT add rule inet ss_spec ss_spec_wan_ac tcp dport != 53 ip daddr "$server" return - $NFT add rule inet ss_spec ss_spec_wan_ac udp dport != 53 ip daddr "$server" return # Add special IP ranges to WAN AC set for ip in $(gen_spec_iplist); do @@ -217,7 +247,9 @@ ipset_nft() { fi ;; gfw) - $NFT add set inet ss_spec gfwlist '{ type ipv4_addr; flags interval; }' 2>/dev/null + if ! $NFT list set inet ss_spec gfwlist >/dev/null 2>&1; then + $NFT add set inet ss_spec gfwlist '{ type ipv4_addr; flags interval; auto-merge; }' 2>/dev/null + fi $NFT add rule inet ss_spec ss_spec_wan_ac ip daddr @china return 2>/dev/null $NFT add rule inet ss_spec ss_spec_wan_ac ip daddr @gfwlist jump ss_spec_wan_fw 2>/dev/null if $NFT list chain inet ss_spec ss_spec_wan_fw >/dev/null 2>&1; then @@ -225,7 +257,9 @@ ipset_nft() { fi ;; oversea) - $NFT add set inet ss_spec oversea '{ type ipv4_addr; flags interval; }' 2>/dev/null + if ! $NFT list set inet ss_spec oversea >/dev/null 2>&1; then + $NFT add set inet ss_spec oversea '{ type ipv4_addr; flags interval; auto-merge; }' 2>/dev/null + fi if $NFT list chain inet ss_spec ss_spec_wan_fw >/dev/null 2>&1; then $NFT insert rule inet ss_spec ss_spec_wan_ac ip daddr @oversea jump SS_SPEC_WAN_FW 2>/dev/null $NFT add rule inet ss_spec ss_spec_wan_ac ip saddr @gmlan jump ss_spec_wan_fw 2>/dev/null @@ -309,10 +343,10 @@ ipset_iptables() { esac ipset -N fplan hash:net 2>/dev/null for ip in $LAN_FP_IP; do ipset -! add fplan "$ip"; done - $IPT -I SS_SPEC_WAN_AC -m set --match-set fplan src -j SS_SPEC_WAN_FW + $IPT -I SS_SPEC_WAN_AC -m set --match-set fplan src -j SS_SPEC_WAN_FW ipset -N bplan hash:net 2>/dev/null for ip in $LAN_BP_IP; do ipset -! add bplan "$ip"; done - $IPT -I SS_SPEC_WAN_AC -m set --match-set bplan src -j RETURN + $IPT -I SS_SPEC_WAN_AC -m set --match-set bplan src -j RETURN ipset -N whitelist hash:net 2>/dev/null ipset -N blacklist hash:net 2>/dev/null $IPT -I SS_SPEC_WAN_AC -m set --match-set blacklist dst -j SS_SPEC_WAN_FW @@ -354,31 +388,24 @@ fw_rule() { fw_rule_nft() { # Exclude special local addresses - $NFT add rule inet ss_spec ss_spec_wan_fw ip daddr 0.0.0.0/8 return - $NFT add rule inet ss_spec ss_spec_wan_fw ip daddr 10.0.0.0/8 return - $NFT add rule inet ss_spec ss_spec_wan_fw ip daddr 127.0.0.0/8 return - $NFT add rule inet ss_spec ss_spec_wan_fw ip daddr 169.254.0.0/16 return - $NFT add rule inet ss_spec ss_spec_wan_fw ip daddr 172.16.0.0/12 return - $NFT add rule inet ss_spec ss_spec_wan_fw ip daddr 192.168.0.0/16 return - $NFT add rule inet ss_spec ss_spec_wan_fw ip daddr 224.0.0.0/4 return - $NFT add rule inet ss_spec ss_spec_wan_fw ip daddr 240.0.0.0/4 return + if $NFT list chain inet ss_spec ss_spec_wan_fw >/dev/null 2>&1; then + for net in 0.0.0.0/8 10.0.0.0/8 127.0.0.0/8 169.254.0.0/16 172.16.0.0/12 192.168.0.0/16 224.0.0.0/4 240.0.0.0/4; do + $NFT add rule inet ss_spec ss_spec_wan_fw ip daddr $net return 2>/dev/null + done + fi # redirect/translation: when PROXY_PORTS present, redirect those tcp ports to local_port if [ -n "$PROXY_PORTS" ]; then PORTS=$(echo "$PROXY_PORTS" | sed 's/-m multiport --dports //') - if ! $NFT list chain inet ss_spec ss_spec_wan_fw 2>/dev/null | grep -q "tcp dport { $PORTS } redirect to :$local_port"; then - if ! $NFT add rule inet ss_spec ss_spec_wan_fw tcp dport { $PORTS } redirect to :"$local_port" 2>/dev/null; then - loger 3 "Can't redirect, please check nftables." - return 1 - fi - fi + RULE="tcp dport { $PORTS } redirect to :$local_port" else # default: redirect everything except ssh(22) - if ! $NFT list chain inet ss_spec ss_spec_wan_fw 2>/dev/null | grep -q "tcp dport != 22 redirect to :$local_port"; then - if ! $NFT add rule inet ss_spec ss_spec_wan_fw tcp dport != 22 redirect to :$local_port 2>/dev/null; then - loger 3 "Can't redirect, please check nftables." - return 1 - fi + RULE="tcp dport != 22 redirect to :$local_port" + fi + if ! $NFT list chain inet ss_spec ss_spec_wan_fw 2>/dev/null | grep -q "$RULE"; then + if ! $NFT add rule inet ss_spec ss_spec_wan_fw $RULE 2>/dev/null; then + loger 3 "Can't redirect, please check nftables." + return 1 fi fi @@ -416,7 +443,12 @@ ac_rule_nft() { if [ -n "$LAN_AC_IP" ]; then # Create LAN access control set if needed - $NFT add set inet ss_spec ss_spec_lan_ac '{ type ipv4_addr; flags interval; }' 2>/dev/null + if ! $NFT list set inet ss_spec ss_spec_lan_ac >/dev/null 2>&1; then + $NFT add set inet ss_spec ss_spec_lan_ac '{ type ipv4_addr; flags interval; }' 2>/dev/null + else + $NFT flush set inet ss_spec ss_spec_lan_ac 2>/dev/null + fi + for ip in ${LAN_AC_IP#?}; do [ -n "$ip" ] && $NFT add element inet ss_spec ss_spec_lan_ac "{ $ip }" 2>/dev/null done @@ -436,25 +468,29 @@ ac_rule_nft() { fi # 创建ss_spec_prerouting链 - if ! $NFT list chain inet ss_spec_prerouting >/dev/null 2>&1; then - $NFT add chain inet ss_spec ss_spec_prerouting '{ type filter hook prerouting priority -1; policy accept; }' + if ! $NFT list chain inet ss_spec ss_spec_prerouting >/dev/null 2>&1; then + $NFT add chain inet ss_spec ss_spec_prerouting '{ type nat hook prerouting priority -150; policy accept; }' fi $NFT flush chain inet ss_spec ss_spec_prerouting 2>/dev/null # 创建ss_spec_output链 if ! $NFT list chain inet ss_spec ss_spec_output >/dev/null 2>&1; then - $NFT add chain inet ss_spec ss_spec_output '{ type nat hook output priority -1; policy accept; }' + $NFT add chain inet ss_spec ss_spec_output '{ type nat hook output priority -100; policy accept; }' fi $NFT flush chain inet ss_spec ss_spec_output 2>/dev/null # Build a rule in the prerouting hook chain that jumps to business chain with conditions + if [ -n "$PROXY_PORTS" ]; then + EXT_ARGS=$(echo "$PROXY_PORTS" | sed 's/-m multiport --dports //') + fi + if [ -z "$Interface" ]; then # generic prerouting jump already exists (see ipset_nft), but if we have MATCH_SET_CONDITION we add a more specific rule if [ -n "$MATCH_SET" ]; then # add a more specific rule at the top of ss_spec_prerouting - $NFT insert rule inet ss_spec ss_spec_prerouting tcp dport $EXT_ARGS $MATCH_SET comment "\"$TAG\"" jump ss_spec_wan_ac 2>/dev/null + $NFT insert rule inet ss_spec ss_spec_prerouting meta l4proto tcp th dport { $EXT_ARGS } $MATCH_SET jump ss_spec_wan_ac comment "\"$TAG\"" 2>/dev/null else - $NFT insert rule inet ss_spec ss_spec_prerouting tcp dport $EXT_ARGS comment "\"$TAG\"" jump ss_spec_wan_ac + $NFT insert rule inet ss_spec ss_spec_prerouting meta l4proto tcp th dport { $EXT_ARGS } jump ss_spec_wan_ac comment "\"$TAG\"" 2>/dev/null fi else # For each Interface, find its actual ifname and add an iifname-limited prerouting rule @@ -463,9 +499,9 @@ ac_rule_nft() { [ -z "$IFNAME" ] && IFNAME=$(uci -P /var/state get network."$name".device 2>/dev/null) if [ -n "$IFNAME" ]; then if [ -n "$MATCH_SET" ]; then - $NFT insert rule inet ss_spec ss_spec_prerouting iifname "$IFNAME" tcp dport $EXT_ARGS $MATCH_SET comment "\"$TAG\"" jump ss_spec_wan_ac 2>/dev/null + $NFT insert rule inet ss_spec ss_spec_prerouting meta iifname "$IFNAME" meta l4proto tcp th dport { $EXT_ARGS } $MATCH_SET jump ss_spec_wan_ac comment "\"$TAG\"" 2>/dev/null else - $NFT insert rule inet ss_spec ss_spec_prerouting iifname "$IFNAME" tcp dport $EXT_ARGS comment "\"$TAG\"" jump ss_spec_wan_ac 2>/dev/null + $NFT insert rule inet ss_spec ss_spec_prerouting meta iifname "$IFNAME" meta l4proto tcp th dport { $EXT_ARGS } jump ss_spec_wan_ac comment "\"$TAG\"" 2>/dev/null fi fi done @@ -474,7 +510,7 @@ ac_rule_nft() { case "$OUTPUT" in 1) # create output hook chain & route output traffic into router chain - $NFT add rule inet ss_spec ss_spec_output tcp dport $EXT_ARGS comment "\"$TAG\"" jump ss_spec_wan_ac 2>/dev/null + $NFT insert rule inet ss_spec ss_spec_output meta l4proto tcp th dport { $EXT_ARGS } jump ss_spec_wan_ac comment "\"$TAG\"" 2>/dev/null ;; 2) # router mode output chain: create ssr_gen_router set & router chain @@ -485,7 +521,7 @@ ac_rule_nft() { $NFT add chain inet ss_spec ss_spec_router 2>/dev/null $NFT add rule inet ss_spec ss_spec_router ip daddr @ssr_gen_router return 2>/dev/null $NFT add rule inet ss_spec ss_spec_router jump ss_spec_wan_fw 2>/dev/null - $NFT add rule inet ss_spec ss_spec_output tcp dport $EXT_ARGS comment "\"$TAG\"" jump ss_spec_router 2>/dev/null + $NFT add rule inet ss_spec ss_spec_output meta l4proto tcp th dport { $EXT_ARGS } jump ss_spec_router comment "\"$TAG\"" 2>/dev/null ;; esac return 0 @@ -549,89 +585,170 @@ tp_rule() { } tp_rule_nft() { - [ -n "$TPROXY" ] || return 0 - # set up routing table for tproxy ip rule add fwmark 0x01/0x01 table 100 2>/dev/null ip route add local 0.0.0.0/0 dev lo table 100 2>/dev/null # create mangle table and tproxy chain - $NFT add table ip ss_spec_mangle 2>/dev/null + if ! $NFT list table ip ss_spec_mangle >/dev/null 2>&1; then + $NFT add table ip ss_spec_mangle 2>/dev/null + fi + + local MATCH_SET="" + local EXT_ARGS="" + + if [ -n "$PROXY_PORTS" ]; then + EXT_ARGS=$(echo "$PROXY_PORTS" | sed 's/-m multiport --dports //') + fi + + if [ -n "$LAN_AC_IP" ]; then + # Create LAN access control set if needed + if ! $NFT list set ip ss_spec_mangle ss_spec_lan_ac >/dev/null 2>&1; then + $NFT add set ip ss_spec_mangle ss_spec_lan_ac '{ type ipv4_addr; flags interval; auto-merge; }' 2>/dev/null + else + $NFT flush set ip ss_spec_mangle ss_spec_lan_ac 2>/dev/null + fi + + for ip in ${LAN_AC_IP#?}; do + [ -n "$ip" ] && $NFT add element ip ss_spec_mangle ss_spec_lan_ac "{ $ip }" 2>/dev/null + done + + case "${LAN_AC_IP%${LAN_AC_IP#?}}" in + w | W) + MATCH_SET="ip saddr @ss_spec_lan_ac" + ;; + b | B) + MATCH_SET="ip saddr != @ss_spec_lan_ac" + ;; + *) + loger 3 "Bad argument \`-a $LAN_AC_IP\`." + return 2 + ;; + esac + fi + + # Create necessary collections + for setname in ss_spec_wan_ac china gmlan fplan bplan whitelist; do + if ! $NFT list set ip ss_spec_mangle $setname >/dev/null 2>&1; then + $NFT add set ip ss_spec_mangle $setname '{ type ipv4_addr; flags interval; auto-merge; }' + else + $NFT flush set ip ss_spec_mangle $setname 2>/dev/null + fi + done + + # 批量导入中国IP列表 + if [ -f "${china_ip:=/etc/ssrplus/china_ssr.txt}" ]; then + $NFT add element ip ss_spec_mangle china { $(tr '\n' ',' < "${china_ip}" | sed 's/,$//') } 2>/dev/null + fi + # use priority mangle for compatibility with other rules - $NFT add chain ip ss_spec_mangle ss_spec_tproxy '{ type filter hook prerouting priority mangle; }' 2>/dev/null + if ! $NFT list chain ip ss_spec_mangle ss_spec_tproxy >/dev/null 2>&1; then + $NFT add chain ip ss_spec_mangle ss_spec_tproxy 2>/dev/null + else + $NFT flush chain ip ss_spec_mangle ss_spec_tproxy 2>/dev/null + fi # basic return rules in tproxy chain $NFT add rule ip ss_spec_mangle ss_spec_tproxy udp dport 53 return 2>/dev/null - $NFT add rule ip ss_spec_mangle ss_spec_tproxy udp ip daddr 0.0.0.0/8 return 2>/dev/null - $NFT add rule ip ss_spec_mangle ss_spec_tproxy udp ip daddr 10.0.0.0/8 return 2>/dev/null - $NFT add rule ip ss_spec_mangle ss_spec_tproxy udp ip daddr 127.0.0.0/8 return 2>/dev/null - $NFT add rule ip ss_spec_mangle ss_spec_tproxy udp ip daddr 169.254.0.0/16 return 2>/dev/null - $NFT add rule ip ss_spec_mangle ss_spec_tproxy udp ip daddr 172.16.0.0/12 return 2>/dev/null - $NFT add rule ip ss_spec_mangle ss_spec_tproxy udp ip daddr 192.168.0.0/16 return 2>/dev/null - $NFT add rule ip ss_spec_mangle ss_spec_tproxy udp ip daddr 224.0.0.0/4 return 2>/dev/null - $NFT add rule ip ss_spec_mangle ss_spec_tproxy udp ip daddr 240.0.0.0/4 return 2>/dev/null + + if $NFT list chain ip ss_spec_mangle ss_spec_tproxy >/dev/null 2>&1; then + for net in 0.0.0.0/8 10.0.0.0/8 127.0.0.0/8 169.254.0.0/16 172.16.0.0/12 192.168.0.0/16 224.0.0.0/4 240.0.0.0/4; do + $NFT add rule ip ss_spec_mangle ss_spec_tproxy ip daddr $net return 2>/dev/null + done + fi # avoid redirecting to udp server address - $NFT add rule ip ss_spec_mangle ss_spec_tproxy udp dport != 53 ip daddr "$server" return 2>/dev/null + if [ -n "$server" ]; then + $NFT add rule ip ss_spec_mangle ss_spec_tproxy udp dport != 53 ip daddr "$server" return 2>/dev/null + fi # if server != SERVER add SERVER to whitelist set (so tproxy won't touch it) - if [ "$server" != "$SERVER" ]; then - $NFT add element inet ss_spec whitelist "{ $SERVER }" 2>/dev/null + if [ -n "$server" ]; then + $NFT add rule ip ss_spec_mangle ss_spec_tproxy ip daddr "$server" return 2>/dev/null + fi + if [ -n "$SERVER" ] && [ "$server" != "$SERVER" ]; then + $NFT add element ip ss_spec_mangle whitelist "{ $SERVER }" 2>/dev/null fi # access control and tproxy rules - $NFT add rule ip ss_spec_mangle ss_spec_tproxy udp ip saddr @bplan return 2>/dev/null - if [ -n "$PROXY_PORTS" ]; then - PORTS=$(echo "$PROXY_PORTS" | sed 's/-m multiport --dports //') - $NFT add rule ip ss_spec_mangle ss_spec_tproxy udp dport { $PORTS } ip saddr @fplan tproxy to :"$LOCAL_PORT" meta mark set 0x01 2>/dev/null + $NFT add rule ip ss_spec_mangle ss_spec_tproxy meta l4proto udp ip saddr @bplan return 2>/dev/null + + if [ -n "$EXT_ARGS" ]; then + $NFT add rule ip ss_spec_mangle ss_spec_tproxy udp dport { $EXT_ARGS } ip saddr @fplan tproxy to :"$LOCAL_PORT" meta mark set 0x01 else - $NFT add rule ip ss_spec_mangle ss_spec_tproxy udp ip saddr @fplan tproxy to :"$LOCAL_PORT" meta mark set 0x01 2>/dev/null + $NFT add rule ip ss_spec_mangle ss_spec_tproxy meta l4proto udp ip saddr @fplan tproxy to :"$LOCAL_PORT" meta mark set 0x01 2>/dev/null fi - + # Handle different run modes for nftables case "$RUNMODE" in router) - $NFT add rule ip ss_spec_mangle ss_spec_tproxy udp ip daddr @ss_spec_wan_ac return 2>/dev/null - $NFT add rule ip ss_spec_mangle ss_spec_tproxy udp ip daddr @china return 2>/dev/null + $NFT add rule ip ss_spec_mangle ss_spec_tproxy meta l4proto udp ip daddr @ss_spec_wan_ac return 2>/dev/null + $NFT add rule ip ss_spec_mangle ss_spec_tproxy meta l4proto udp ip daddr @china return 2>/dev/null $NFT add rule ip ss_spec_mangle ss_spec_tproxy udp dport 80 drop 2>/dev/null - $NFT add rule ip ss_spec_mangle ss_spec_tproxy udp ip saddr @gmlan ip daddr != @china tproxy to :"$LOCAL_PORT" meta mark set 0x01 2>/dev/null - if [ -n "$PROXY_PORTS" ]; then - PORTS=$(echo "$PROXY_PORTS" | sed 's/-m multiport --dports //') - $NFT add rule ip ss_spec_mangle ss_spec_tproxy udp dport { $PORTS } ip daddr != @ss_spec_wan_ac tproxy to :"$LOCAL_PORT" meta mark set 0x01 2>/dev/null + $NFT add rule ip ss_spec_mangle ss_spec_tproxy meta l4proto udp ip saddr @gmlan ip daddr != @china tproxy to :"$LOCAL_PORT" meta mark set 0x01 2>/dev/null + if [ -n "$EXT_ARGS" ]; then + $NFT add rule ip ss_spec_mangle ss_spec_tproxy udp dport { $EXT_ARGS } ip daddr != @ss_spec_wan_ac tproxy to :"$LOCAL_PORT" meta mark set 0x01 2>/dev/null else - $NFT add rule ip ss_spec_mangle ss_spec_tproxy udp ip daddr != @ss_spec_wan_ac tproxy to :"$LOCAL_PORT" meta mark set 0x01 2>/dev/null + $NFT add rule ip ss_spec_mangle ss_spec_tproxy meta l4proto udp ip daddr != @ss_spec_wan_ac tproxy to :"$LOCAL_PORT" meta mark set 0x01 2>/dev/null fi ;; gfw) - $NFT add rule ip ss_spec_mangle ss_spec_tproxy udp ip daddr @china return 2>/dev/null + $NFT add rule ip ss_spec_mangle ss_spec_tproxy meta l4proto udp ip daddr @china return 2>/dev/null $NFT add rule ip ss_spec_mangle ss_spec_tproxy udp dport 80 drop 2>/dev/null - if [ -n "$PROXY_PORTS" ]; then - PORTS=$(echo "$PROXY_PORTS" | sed 's/-m multiport --dports //') - $NFT add rule ip ss_spec_mangle ss_spec_tproxy udp dport { $PORTS } ip daddr @gfwlist tproxy to :"$LOCAL_PORT" meta mark set 0x01 2>/dev/null + if [ -n "$EXT_ARGS" ]; then + $NFT add rule ip ss_spec_mangle ss_spec_tproxy udp dport { $EXT_ARGS } ip daddr @gfwlist tproxy to :"$LOCAL_PORT" meta mark set 0x01 2>/dev/null fi - $NFT add rule ip ss_spec_mangle ss_spec_tproxy udp ip saddr @gmlan ip daddr != @china tproxy to :"$LOCAL_PORT" meta mark set 0x01 2>/dev/null + $NFT add rule ip ss_spec_mangle ss_spec_tproxy meta l4proto udp ip saddr @gmlan ip daddr != @china tproxy to :"$LOCAL_PORT" meta mark set 0x01 2>/dev/null ;; oversea) - if [ -n "$PROXY_PORTS" ]; then - PORTS=$(echo "$PROXY_PORTS" | sed 's/-m multiport --dports //') - $NFT add rule ip ss_spec_mangle ss_spec_tproxy udp dport { $PORTS } ip saddr @oversea tproxy to :"$LOCAL_PORT" meta mark set 0x01 2>/dev/null - $NFT add rule ip ss_spec_mangle ss_spec_tproxy udp dport { $PORTS } ip daddr @china tproxy to :"$LOCAL_PORT" meta mark set 0x01 2>/dev/null + if ! $NFT list set ip ss_spec_mangle oversea >/dev/null 2>&1; then + $NFT add set ip ss_spec_mangle oversea '{ type ipv4_addr; flags interval; auto-merge; }' 2>/dev/null fi - $NFT add rule ip ss_spec_mangle ss_spec_tproxy udp ip saddr @gmlan tproxy to :"$LOCAL_PORT" meta mark set 0x01 2>/dev/null + if ! $NFT list set ip ss_spec_mangle china >/dev/null 2>&1; then + $NFT add set ip ss_spec_mangle china '{ type ipv4_addr; flags interval; auto-merge; }' 2>/dev/null + fi + if [ -n "$EXT_ARGS" ]; then + $NFT add rule ip ss_spec_mangle ss_spec_tproxy udp dport { $EXT_ARGS } ip saddr @oversea tproxy to :"$LOCAL_PORT" meta mark set 0x01 2>/dev/null + $NFT add rule ip ss_spec_mangle ss_spec_tproxy udp dport { $EXT_ARGS } ip daddr @china tproxy to :"$LOCAL_PORT" meta mark set 0x01 2>/dev/null + fi + $NFT add rule ip ss_spec_mangle ss_spec_tproxy meta l4proto udp ip saddr @gmlan tproxy to :"$LOCAL_PORT" meta mark set 0x01 2>/dev/null ;; all) - if [ -n "$PROXY_PORTS" ]; then - PORTS=$(echo "$PROXY_PORTS" | sed 's/-m multiport --dports //') - $NFT add rule ip ss_spec_mangle ss_spec_tproxy udp dport { $PORTS } tproxy to :"$LOCAL_PORT" meta mark set 0x01 2>/dev/null + if [ -n "$EXT_ARGS" ]; then + $NFT add rule ip ss_spec_mangle ss_spec_tproxy udp dport { $EXT_ARGS } tproxy to :"$LOCAL_PORT" meta mark set 0x01 2>/dev/null else $NFT add rule ip ss_spec_mangle ss_spec_tproxy udp tproxy to :"$LOCAL_PORT" meta mark set 0x01 2>/dev/null fi ;; esac - # insert jump from ip prerouting to our tproxy chain - PORTS=$(echo "$PROXY_PORTS" | sed 's/-m multiport --dports //') - $NFT add rule ip ss_spec_mangle prerouting udp dport { $PORTS } comment "\"$TAG\"" jump ss_spec_tproxy 2>/dev/null + # 创建 prerouting 链(hook prerouting) + if ! $NFT list chain ip ss_spec_mangle prerouting >/dev/null 2>&1; then + $NFT add chain ip ss_spec_mangle prerouting '{ type filter hook prerouting priority mangle; policy accept; }' + fi + + # 添加规则到 prerouting 链 + if [ -z "$Interface" ]; then + # 全局规则 + if [ -n "$MATCH_SET" ]; then + $NFT add rule ip ss_spec_mangle prerouting udp dport { $EXT_ARGS } $MATCH_SET jump ss_spec_tproxy comment "\"$TAG\"" 2>/dev/null + else + $NFT add rule ip ss_spec_mangle prerouting udp dport { $EXT_ARGS } jump ss_spec_tproxy comment "\"$TAG\"" 2>/dev/null + fi + else + # 指定接口 + for name in $Interface; do + IFNAME=$(uci -P /var/state get network."$name".ifname 2>/dev/null) + [ -z "$IFNAME" ] && IFNAME=$(uci -P /var/state get network."$name".device 2>/dev/null) + if [ -n "$IFNAME" ]; then + if [ -n "$MATCH_SET" ]; then + $NFT add rule ip ss_spec_mangle prerouting meta iifname "$IFNAME" udp dport { $EXT_ARGS } $MATCH_SET jump ss_spec_tproxy comment "\"$TAG\"" 2>/dev/null + else + $NFT add rule ip ss_spec_mangle prerouting meta iifname "$IFNAME" udp dport { $EXT_ARGS } jump ss_spec_tproxy comment "\"$TAG\"" 2>/dev/null + fi + fi + done + fi return $? } @@ -734,12 +851,12 @@ gen_include_nft() { [ -n "$FWI" ] && echo '#!/bin/sh' >"$FWI" cat <<-'EOF' >>"$FWI" # Clear existing ss_spec tables - nft add table inet ss_spec 2>/dev/null - nft add table ip ss_spec 2>/dev/null - nft add table ip ss_spec_mangle 2>/dev/null + nft delete table inet ss_spec 2>/dev/null + nft delete table ip ss_spec 2>/dev/null + nft delete table ip ss_spec_mangle 2>/dev/null # Restore shadowsocks nftables rules - nft list ruleset | awk '/table (inet|ip) ss_spec/{flag=1} flag' + nft list ruleset | awk '/^table (inet|ip) ss_spec/{flag=1} /^table / && !/^table (inet|ip) ss_spec/{flag=0} flag' EOF chmod +x "$FWI" } @@ -867,7 +984,7 @@ case "$TPROXY" in ;; esac -# 首先检查nftables是否正常工作 +# First check whether nftables is working properly if [ "$USE_NFT" = "1" ]; then if ! $NFT list tables 2>/dev/null; then loger 3 "nftables is not working properly, check if nftables is installed and running" diff --git a/luci-app-ssr-plus/root/usr/share/shadowsocksr/chinaipset.sh b/luci-app-ssr-plus/root/usr/share/shadowsocksr/chinaipset.sh index a15adc0..4015644 100755 --- a/luci-app-ssr-plus/root/usr/share/shadowsocksr/chinaipset.sh +++ b/luci-app-ssr-plus/root/usr/share/shadowsocksr/chinaipset.sh @@ -1,22 +1,7 @@ #!/bin/sh [ -f "$1" ] && china_ip=$1 - -if command -v nft >/dev/null 2>&1; then - # 确保表和集合存在 - nft add table inet ss_spec 2>/dev/null - nft add set inet ss_spec china '{ type ipv4_addr; flags interval; auto-merge; }' 2>/dev/null - nft flush set inet ss_spec china 2>/dev/null - - # 批量导入 - if [ -f "${china_ip:=/etc/ssrplus/china_ssr.txt}" ]; then - echo "批量导入中国IP列表..." - nft add element inet ss_spec china { $(tr '\n' ',' < "${china_ip}" | sed 's/,$//') } 2>/dev/null - echo "中国IP集合导入完成" - fi -else - ipset -! flush china 2>/dev/null - ipset -! -R <<-EOF || exit 1 - create china hash:net - $(cat ${china_ip:=/etc/ssrplus/china_ssr.txt} | sed -e "s/^/add china /") +ipset -! flush china 2>/dev/null +ipset -! -R <<-EOF || exit 1 + create china hash:net + $(cat ${china_ip:=/etc/ssrplus/china_ssr.txt} | sed -e "s/^/add china /") EOF -fi diff --git a/luci-app-ssr-plus/root/usr/share/shadowsocksr/gfw2ipset.sh b/luci-app-ssr-plus/root/usr/share/shadowsocksr/gfw2ipset.sh index 8c1f07b..33808cc 100755 --- a/luci-app-ssr-plus/root/usr/share/shadowsocksr/gfw2ipset.sh +++ b/luci-app-ssr-plus/root/usr/share/shadowsocksr/gfw2ipset.sh @@ -2,14 +2,18 @@ . $IPKG_INSTROOT/etc/init.d/shadowsocksr +if command -v nft >/dev/null 2>&1; then + nft_support=1 +fi + netflix() { if [ -f "$TMP_DNSMASQ_PATH/gfw_list.conf" ]; then for line in $(cat /etc/ssrplus/netflix.list); do sed -i "/$line/d" $TMP_DNSMASQ_PATH/gfw_list.conf; done for line in $(cat /etc/ssrplus/netflix.list); do sed -i "/$line/d" $TMP_DNSMASQ_PATH/gfw_base.conf; done fi - if command -v nft >/dev/null 2>&1; then + if [ "$nft_support" = "1" ]; then # 移除 ipset - cat /etc/ssrplus/netflix.list | sed '/^$/d' | sed '/#/d' | sed "/.*/s/.*/server=\/&\/127.0.0.1#$1/" >$TMP_DNSMASQ_PATH/netflix_forward.conf + cat /etc/ssrplus/netflix.list | sed '/^$/d' | sed '/#/d' | sed "/.*/s/.*/server=\/&\/127.0.0.1#$1\nnftset=\/&\/4#inet#ss_spec#netflix/" >$TMP_DNSMASQ_PATH/netflix_forward.conf else cat /etc/ssrplus/netflix.list | sed '/^$/d' | sed '/#/d' | sed "/.*/s/.*/server=\/&\/127.0.0.1#$1\nipset=\/&\/netflix/" >$TMP_DNSMASQ_PATH/netflix_forward.conf fi @@ -22,11 +26,11 @@ else cp -rf /etc/ssrplus/gfw_base.conf $TMP_DNSMASQ_PATH/ fi -if command -v nft >/dev/null 2>&1; then +if [ "$nft_support" = "1" ]; then # 移除 ipset 指令 for conf_file in gfw_base.conf gfw_list.conf; do if [ -f "$TMP_DNSMASQ_PATH/$conf_file" ]; then - sed -i '/ipset=/d' "$TMP_DNSMASQ_PATH/$conf_file" + sed -i 's|ipset=/\([^/]*\)/\([^[:space:]]*\)|nftset=/\1/4#inet#ss_spec#\2|g' "$TMP_DNSMASQ_PATH/$conf_file" fi done fi @@ -59,9 +63,9 @@ while read line; do sed -i "/$line/d" $TMP_DNSMASQ_PATH/gfw_list.conf; done < /e while read line; do sed -i "/$line/d" $TMP_DNSMASQ_PATH/gfw_base.conf; done < /etc/ssrplus/deny.list # 此处直接使用 cat 因为有 sed '/#/d' 删除了 数据 -if command -v nft >/dev/null 2>&1; then - cat /etc/ssrplus/black.list | sed '/^$/d' | sed '/#/d' | sed "/.*/s/.*/server=\/&\/127.0.0.1#$dns_port/" >$TMP_DNSMASQ_PATH/blacklist_forward.conf - cat /etc/ssrplus/white.list | sed '/^$/d' | sed '/#/d' | sed "/.*/s/.*/server=\/&\/127.0.0.1/" >$TMP_DNSMASQ_PATH/whitelist_forward.conf +if [ "$nft_support" = "1" ]; then + cat /etc/ssrplus/black.list | sed '/^$/d' | sed '/#/d' | sed "/.*/s/.*/server=\/&\/127.0.0.1#$dns_port\nnftset=\/&\/4#inet#ss_spec#blacklist/" >$TMP_DNSMASQ_PATH/blacklist_forward.conf + cat /etc/ssrplus/white.list | sed '/^$/d' | sed '/#/d' | sed "/.*/s/.*/server=\/&\/127.0.0.1\nnftset=\/&\/4#inet#ss_spec#whitelist/" >$TMP_DNSMASQ_PATH/whitelist_forward.conf else cat /etc/ssrplus/black.list | sed '/^$/d' | sed '/#/d' | sed "/.*/s/.*/server=\/&\/127.0.0.1#$dns_port\nipset=\/&\/blacklist/" >$TMP_DNSMASQ_PATH/blacklist_forward.conf cat /etc/ssrplus/white.list | sed '/^$/d' | sed '/#/d' | sed "/.*/s/.*/server=\/&\/127.0.0.1\nipset=\/&\/whitelist/" >$TMP_DNSMASQ_PATH/whitelist_forward.conf