diff --git a/luci-app-nikki/Makefile b/luci-app-nikki/Makefile
index 34fc839f..c4faa169 100644
--- a/luci-app-nikki/Makefile
+++ b/luci-app-nikki/Makefile
@@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk
PKG_VERSION:=1.25.3
-PKG_RELEASE:=2
+PKG_RELEASE:=3
LUCI_TITLE:=LuCI Support for nikki
LUCI_DEPENDS:=+luci-base +nikki
diff --git a/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js b/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js
index d54b26cd..b2f017b6 100644
--- a/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js
+++ b/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js
@@ -114,7 +114,7 @@ return view.extend({
o = s.option(form.Flag, 'scheduled_restart', _('Scheduled Restart'));
o.rmempty = false;
- o = s.option(form.Value, 'cron_expression', _('Cron Expression'));
+ o = s.option(form.Value, 'scheduled_restart_cron', _('Scheduled Restart Cron'));
o.retain = true;
o.rmempty = false;
o.depends('scheduled_restart', '1');
diff --git a/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js b/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js
index 7705a5e6..dd920a67 100644
--- a/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js
+++ b/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js
@@ -24,6 +24,30 @@ return view.extend({
s = m.section(form.NamedSection, 'log', 'log', _('Log'));
+ s.tab('log_config', _('Log Config'));
+
+ o = s.taboption('log_config', form.Flag, 'scheduled_clear', _('Scheduled Clear'));
+ o.rmempty = false;
+
+ o = s.taboption('log_config', form.Value, 'scheduled_clear_cron', _('Scheduled Clear Cron'));
+ o.retain = true;
+ o.rmempty = false;
+ o.depends('scheduled_clear', '1');
+
+ o = s.taboption('log_config', form.Value, 'scheduled_clear_size_limit', _('Scheduled Clear Size Limit'));
+ o.retain = true;
+ o.rmempty = false;
+ o.datatype = 'uinteger';
+ o.depends('scheduled_clear', '1');
+
+ o = s.taboption('log_config', form.ListValue, 'scheduled_clear_size_limit_unit', _('Scheduled Clear Size Limit Unit'));
+ o.retain = true;
+ o.rmempty = false;
+ o.depends('scheduled_clear', '1');
+ o.value('KB', 'KB');
+ o.value('MB', 'MB');
+ o.value('GB', 'GB');
+
s.tab('app_log', _('App Log'));
o = s.taboption('app_log', form.Button, 'clear_app_log');
@@ -117,8 +141,5 @@ return view.extend({
};
return m.render();
- },
- handleSaveApply: null,
- handleSave: null,
- handleReset: null
+ }
});
\ No newline at end of file
diff --git a/luci-app-nikki/po/ru/nikki.po b/luci-app-nikki/po/ru/nikki.po
index 1db03eab..078cd2d1 100644
--- a/luci-app-nikki/po/ru/nikki.po
+++ b/luci-app-nikki/po/ru/nikki.po
@@ -12,16 +12,32 @@ msgstr ""
msgid "API Listen"
msgstr "Прослушивание API"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:116
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:129
msgid "API Secret"
msgstr "Секрет API"
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:120
+msgid "API TLS Cert"
+msgstr "Сертификат TLS API"
+
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:126
+msgid "API TLS ECH Key"
+msgstr "Ключ ECH TLS API"
+
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:123
+msgid "API TLS Key"
+msgstr "Ключ TLS API"
+
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:116
+msgid "API TLS Listen"
+msgstr "Прослушивание TLS API"
+
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:69
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:122
msgid "Access Control"
msgstr "Контроль доступа"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:228
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:241
msgid "Adaptive Replacement Cache (ARC)"
msgstr "Адаптивный кэш замещения (ARC)"
@@ -38,11 +54,11 @@ msgstr "Мягкий лимит адресного пространства"
msgid "All Port"
msgstr "Все порты"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:128
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:141
msgid "Allow Lan"
msgstr "Разрешить LAN"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:269
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:282
msgid "Allow Mode"
msgstr "Режим разрешения"
@@ -51,7 +67,7 @@ msgstr "Режим разрешения"
msgid "App Config"
msgstr "Настройки приложения"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:27
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:51
msgid "App Log"
msgstr "Лог приложения"
@@ -59,19 +75,19 @@ msgstr "Лог приложения"
msgid "App Version"
msgstr "Версия приложения"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:518
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:531
msgid "Append Rule"
msgstr "Добавить правило"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:449
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:462
msgid "Append Rule Provider"
msgstr "Добавить список правил"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:505
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:518
msgid "Behavior"
msgstr "Поведение"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:268
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:281
msgid "Block Mode"
msgstr "Режим блокировки"
@@ -107,8 +123,8 @@ msgstr "Выбрать файл"
msgid "Choose Profile"
msgstr "Выбрать профиль"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:31
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:64
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:55
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:88
msgid "Clear Log"
msgstr "Очистить лог"
@@ -117,7 +133,7 @@ msgstr "Очистить лог"
msgid "Commonly Used Port"
msgstr "Часто используемые порты"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:60
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:84
msgid "Core Log"
msgstr "Лог ядра"
@@ -133,44 +149,40 @@ msgstr "Статус ядра"
msgid "Core Version"
msgstr "Версия ядра"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:117
-msgid "Cron Expression"
-msgstr "Выражение Cron"
-
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:99
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:165
msgid "DNS"
msgstr "DNS"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:224
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:237
msgid "DNS Cache Algorithm"
msgstr "Алгоритм кэша DNS"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:216
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:229
msgid "DNS Config"
msgstr "Настройки DNS"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:230
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:243
msgid "DNS Listen"
msgstr "Прослушивание DNS"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:240
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:253
msgid "DNS Mode"
msgstr "Режим DNS"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:93
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:117
msgid "Debug Log"
msgstr "Отладочный лог"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:541
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:554
msgid "Destination IP"
msgstr "IP назначения"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:545
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:558
msgid "Destination IP Geo"
msgstr "Гео-IP назначения"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:542
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:555
msgid "Destination Port"
msgstr "Порт назначения"
@@ -182,7 +194,7 @@ msgstr "TCP-порт назначения для прокси"
msgid "Destination UDP Port to Proxy"
msgstr "UDP-порт назначения для прокси"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:183
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:196
msgid "Device Name"
msgstr "Имя устройства"
@@ -190,7 +202,7 @@ msgstr "Имя устройства"
msgid "Direct Mode"
msgstr "Прямой режим"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:363
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:376
msgid "Direct Nameserver Follow Policy"
msgstr "Политика прямого DNS-сервера"
@@ -198,22 +210,22 @@ msgstr "Политика прямого DNS-сервера"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:73
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:79
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:85
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:123
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:131
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:180
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:200
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:221
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:237
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:275
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:281
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:287
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:293
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:299
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:366
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:393
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:399
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:405
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:593
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:136
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:144
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:193
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:213
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:234
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:250
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:288
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:294
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:300
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:306
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:312
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:379
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:406
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:412
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:418
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:606
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:38
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:45
msgid "Disable"
@@ -235,68 +247,68 @@ msgstr "Отключить детектор петли"
msgid "Disable TCP Keep Alive"
msgstr "Отключить TCP Keep-Alive"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:284
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:297
msgid "DoH Prefer HTTP/3"
msgstr "Предпочитать HTTP/3 для DoH"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:316
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:536
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:329
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:549
msgid "Domain Name"
msgstr "Доменное имя"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:544
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:557
msgid "Domain Name Geo"
msgstr "Гео по доменному имени"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:539
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:552
msgid "Domain Name Keyword"
msgstr "Ключевое слово домена"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:540
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:553
msgid "Domain Name Regex"
msgstr "Регулярное выражение домена"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:537
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:550
msgid "Domain Name Suffix"
msgstr "Суффикс домена"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:538
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:551
msgid "Domain Name Wildcard"
msgstr "Шаблон домена"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:157
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:170
msgid "Edit Authentications"
msgstr "Редактировать учётные данные"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:210
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:223
msgid "Edit DNS Hijacks"
msgstr "Редактировать подмену DNS"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:261
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:274
msgid "Edit Fake-IP Filters"
msgstr "Редактировать фильтры Fake-IP"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:305
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:318
msgid "Edit Hosts"
msgstr "Редактировать hosts"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:372
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:385
msgid "Edit Nameserver Policies"
msgstr "Редактировать политики DNS-серверов"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:324
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:337
msgid "Edit Nameservers"
msgstr "Редактировать DNS-серверы"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:347
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:360
msgid "Edit Proxy Server Nameserver Policies"
msgstr "Редактировать политики DNS-сервера прокси"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:452
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:465
msgid "Edit Rule Providers"
msgstr "Редактировать источники правил"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:521
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:534
msgid "Edit Rules"
msgstr "Редактировать правила"
@@ -314,34 +326,34 @@ msgstr "Редактор"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:74
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:80
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:86
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:124
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:132
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:165
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:177
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:181
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:201
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:218
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:222
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:238
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:276
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:282
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:288
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:294
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:300
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:137
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:145
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:178
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:190
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:194
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:214
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:231
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:235
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:251
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:289
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:295
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:301
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:307
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:313
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:332
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:355
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:367
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:326
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:345
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:368
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:380
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:390
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:394
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:400
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:406
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:432
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:460
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:529
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:594
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:602
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:393
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:403
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:407
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:413
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:419
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:445
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:473
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:542
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:607
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:615
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:33
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:66
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:77
@@ -362,11 +374,11 @@ msgstr "Истекает"
msgid "External Control Config"
msgstr "Настройки внешнего управления"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:272
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:285
msgid "Fake-IP Cache"
msgstr "Кэш Fake-IP"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:265
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:278
msgid "Fake-IP Filter Mode"
msgstr "Режим фильтрации Fake-IP"
@@ -374,15 +386,15 @@ msgstr "Режим фильтрации Fake-IP"
msgid "Fake-IP Ping Hijack"
msgstr "Перехват ping для Fake-IP"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:246
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:259
msgid "Fake-IP Range"
msgstr "Диапазон Fake-IP"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:254
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:267
msgid "Fake-IP TTL"
msgstr "TTL Fake-IP"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:250
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:263
msgid "Fake-IP6 Range"
msgstr "Диапазон Fake-IP6"
@@ -390,15 +402,15 @@ msgstr "Диапазон Fake-IP6"
msgid "Fast Reload"
msgstr "Быстрая перезагрузка"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:499
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:512
msgid "File Format"
msgstr "Формат файла"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:493
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:506
msgid "File Path"
msgstr "Путь к файлу"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:487
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:500
msgid "File Size Limit"
msgstr "Ограничение размера файла"
@@ -411,15 +423,15 @@ msgstr "Файл для mixin"
msgid "File:"
msgstr "Файл:"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:411
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:424
msgid "Force Sniff Domain Name"
msgstr "Принудительно определять домены"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:197
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:210
msgid "GSO"
msgstr "GSO"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:203
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:216
msgid "GSO Max Size"
msgstr "Макс. размер GSO"
@@ -428,43 +440,43 @@ msgstr "Макс. размер GSO"
msgid "General Config"
msgstr "Основные настройки"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:97
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:121
msgid "Generate & Download"
msgstr "Сформировать и скачать"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:572
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:585
msgid "GeoData Loader"
msgstr "Загрузчик GeoData"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:566
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:579
msgid "GeoIP Format"
msgstr "Формат GeoIP"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:587
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:600
msgid "GeoIP(ASN) Url"
msgstr "URL GeoIP(ASN)"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:584
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:597
msgid "GeoIP(DAT) Url"
msgstr "URL GeoIP(DAT)"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:581
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:594
msgid "GeoIP(MMDB) Url"
msgstr "URL GeoIP(MMDB)"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:578
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:591
msgid "GeoSite Url"
msgstr "URL GeoSite"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:590
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:603
msgid "GeoX Auto Update"
msgstr "Автообновление GeoX"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:564
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:577
msgid "GeoX Config"
msgstr "Настройки GeoX"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:596
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:609
msgid "GeoX Update Interval"
msgstr "Интервал обновления GeoX"
@@ -480,7 +492,7 @@ msgstr "Предоставить доступ к процедурам nikki"
msgid "Group"
msgstr "Группа"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:134
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:147
msgid "HTTP Port"
msgstr "Порт HTTP"
@@ -512,11 +524,11 @@ msgstr "Перехват DNS IPv6"
msgid "IPv6 Proxy"
msgstr "Прокси IPv6"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:418
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:431
msgid "Ignore Sniff Domain Name"
msgstr "Игнорировать определение доменов"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:126
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:139
msgid "Inbound Config"
msgstr "Настройки входящих"
@@ -528,7 +540,7 @@ msgstr "Входящий интерфейс"
msgid "LAN Proxy"
msgstr "LAN-прокси"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:227
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:240
msgid "Least Recently Used (LRU)"
msgstr "Наименее недавно использованный (LRU)"
@@ -541,11 +553,15 @@ msgstr "Локально"
msgid "Log"
msgstr "Журнал"
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:27
+msgid "Log Config"
+msgstr "Настройки журнала"
+
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:30
msgid "Log Level"
msgstr "Уровень логирования"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:193
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:206
msgid "MTU"
msgstr "MTU"
@@ -553,13 +569,13 @@ msgstr "MTU"
msgid "Match Process"
msgstr "Сопоставление процесса"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:358
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:383
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:547
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:371
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:396
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:560
msgid "Matcher"
msgstr "Сопоставитель"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:576
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:589
msgid "Memory Conservative Loader"
msgstr "Загрузчик с экономией памяти"
@@ -567,7 +583,7 @@ msgstr "Загрузчик с экономией памяти"
msgid "Misc"
msgstr "Прочее"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:142
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:155
msgid "Mixed Port"
msgstr "Смешанный порт"
@@ -575,7 +591,7 @@ msgstr "Смешанный порт"
msgid "Mixin Config"
msgstr "Настройки mixin"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:600
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:613
msgid "Mixin File Content"
msgstr "Содержимое файла mixin"
@@ -587,13 +603,13 @@ msgstr "Опции mixin"
msgid "Mode"
msgstr "Режим"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:466
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:479
msgid "Name"
msgstr "Имя"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:342
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:361
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:386
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:355
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:374
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:399
msgid "Nameserver"
msgstr "DNS-сервер"
@@ -602,12 +618,12 @@ msgstr "DNS-сервер"
msgid "Nikki"
msgstr "Nikki"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:558
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:571
msgid "No Resolve"
msgstr "Не выполнять разрешение"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:480
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:551
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:493
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:564
msgid "Node"
msgstr "Узел"
@@ -631,59 +647,59 @@ msgstr "Открыть панель"
msgid "Outbound Interface"
msgstr "Исходящий интерфейс"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:154
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:167
msgid "Overwrite Authentication"
msgstr "Заменить учётные данные"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:207
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:220
msgid "Overwrite DNS Hijack"
msgstr "Переопределить перехват DNS"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:444
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:457
msgid "Overwrite Destination"
msgstr "Переопределить назначение"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:258
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:271
msgid "Overwrite Fake-IP Filter"
msgstr "Переопределить фильтр Fake-IP"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:408
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:421
msgid "Overwrite Force Sniff Domain Name"
msgstr "Переопределить принудительное определение доменов"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:302
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:315
msgid "Overwrite Hosts"
msgstr "Переопределить hosts"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:415
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:428
msgid "Overwrite Ignore Sniff Domain Name"
msgstr "Переопределить игнорирование определения доменов"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:321
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:334
msgid "Overwrite Nameserver"
msgstr "Переопределить DNS-сервер"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:369
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:382
msgid "Overwrite Nameserver Policy"
msgstr "Переопределить политику DNS-серверов"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:344
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:357
msgid "Overwrite Proxy Server Nameserver Policy"
msgstr "Перезаписать политику DNS-сервера прокси"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:422
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:435
msgid "Overwrite Sniff By Protocol"
msgstr "Переопределить определение по протоколу"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:171
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:184
msgid "Password"
msgstr "Пароль"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:602
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:615
msgid "Please go to the editor tab to edit the file for mixin"
msgstr "Перейдите на вкладку редактора, чтобы изменить файл mixin"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:441
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:454
msgid "Port"
msgstr "Порт"
@@ -691,7 +707,7 @@ msgstr "Порт"
msgid "Prefer"
msgstr "Предпочтение"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:543
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:556
msgid "Process Name"
msgstr "Имя процесса"
@@ -704,7 +720,7 @@ msgstr "Профиль"
msgid "Profile for Startup"
msgstr "Профиль для автозапуска"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:435
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:448
msgid "Protocol"
msgstr "Протокол"
@@ -731,7 +747,7 @@ msgstr "Настройки RLIMIT"
msgid "Redirect Mode"
msgstr "Режим перенаправления"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:146
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:159
msgid "Redirect Port"
msgstr "Порт перенаправления"
@@ -751,7 +767,7 @@ msgstr "Зарезервированные IP"
msgid "Reserved IP6"
msgstr "Зарезервированные IPv6"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:278
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:291
msgid "Respect Rules"
msgstr "Учитывать правила"
@@ -763,12 +779,12 @@ msgstr "Перезапустить сервис"
msgid "Router Proxy"
msgstr "Прокси роутера"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:447
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:460
msgid "Rule Config"
msgstr "Настройки правил"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:43
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:270
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:283
msgid "Rule Mode"
msgstr "Режим правил"
@@ -776,7 +792,7 @@ msgstr "Режим правил"
msgid "Rule Provider:"
msgstr "Провайдер правил:"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:535
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:548
msgid "Rule Set"
msgstr "Набор правил"
@@ -784,7 +800,7 @@ msgstr "Набор правил"
msgid "Running"
msgstr "Запущен"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:138
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:151
msgid "SOCKS Port"
msgstr "Порт SOCKS"
@@ -792,16 +808,36 @@ msgstr "Порт SOCKS"
msgid "Safe Paths"
msgstr "Разрешённые пути"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:120
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:133
msgid "Save Proxy Selection"
msgstr "Сохранять выбор прокси"
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:29
+msgid "Scheduled Clear"
+msgstr "Запланированная очистка"
+
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:32
+msgid "Scheduled Clear Cron"
+msgstr "Cron-выражение"
+
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:37
+msgid "Scheduled Clear Size Limit"
+msgstr "Ограничение размера журнала"
+
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:43
+msgid "Scheduled Clear Size Limit Unit"
+msgstr "Единица ограничения размера журнала"
+
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:114
msgid "Scheduled Restart"
msgstr "Запланированный перезапуск"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:54
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:87
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:117
+msgid "Scheduled Restart Cron"
+msgstr "Cron-выражение"
+
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:78
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:111
msgid "Scroll To Bottom"
msgstr "Прокрутить вниз"
@@ -809,23 +845,23 @@ msgstr "Прокрутить вниз"
msgid "Skip System IPv6 Check"
msgstr "Пропустить проверку системного IPv6"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:425
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:438
msgid "Sniff By Protocol"
msgstr "Определять по протоколу"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:402
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:415
msgid "Sniff Pure IP"
msgstr "Определять чистые IP"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:396
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:409
msgid "Sniff Redir-Host"
msgstr "Определять Redir-Host"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:388
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:401
msgid "Sniffer Config"
msgstr "Настройки сниффера"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:186
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:199
msgid "Stack"
msgstr "Стек"
@@ -837,7 +873,7 @@ msgstr "Жёсткий лимит размера стека"
msgid "Stack Size Soft Limit"
msgstr "Мягкий лимит размера стека"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:575
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:588
msgid "Standard Loader"
msgstr "Стандартный загрузчик"
@@ -895,11 +931,11 @@ msgstr "Режим TCP"
msgid "TPROXY Mode"
msgstr "Режим TPROXY"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:150
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:163
msgid "TPROXY Port"
msgstr "Порт TPROXY"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:175
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:188
msgid "TUN Config"
msgstr "Настройки TUN"
@@ -928,9 +964,9 @@ msgstr "Всего"
msgid "Transparent Proxy with Mihomo on OpenWrt."
msgstr "Прозрачный прокси Mihomo для OpenWrt."
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:335
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:469
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:533
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:348
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:482
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:546
msgid "Type"
msgstr "Тип"
@@ -978,45 +1014,49 @@ msgstr "Без ограничений"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:105
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:114
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:118
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:122
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:130
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:136
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:140
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:144
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:148
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:152
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:179
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:184
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:188
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:195
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:199
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:205
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:220
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:226
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:232
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:236
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:242
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:248
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:252
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:256
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:267
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:274
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:121
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:124
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:127
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:131
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:135
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:143
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:149
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:153
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:157
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:161
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:165
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:192
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:197
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:201
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:208
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:212
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:218
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:233
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:239
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:245
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:249
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:255
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:261
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:265
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:269
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:280
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:286
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:292
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:298
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:365
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:392
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:398
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:404
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:568
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:574
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:579
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:582
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:585
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:588
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:287
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:293
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:299
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:305
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:311
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:378
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:405
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:411
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:417
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:581
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:587
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:592
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:595
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:598
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:601
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:605
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:611
msgid "Unmodified"
msgstr "Без изменений"
@@ -1032,7 +1072,7 @@ msgstr "Обновлено"
msgid "Update Dashboard"
msgstr "Обновить панель"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:512
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:525
msgid "Update Interval"
msgstr "Интервал обновления"
@@ -1040,15 +1080,15 @@ msgstr "Интервал обновления"
msgid "Upload Profile"
msgstr "Загрузить профиль"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:475
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:488
msgid "Url"
msgstr "URL"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:296
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:309
msgid "Use Hosts"
msgstr "Использовать hosts"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:290
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:303
msgid "Use System Hosts"
msgstr "Использовать системный hosts"
@@ -1064,7 +1104,7 @@ msgstr "Пользователь"
msgid "User Agent"
msgstr "User-Agent"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:168
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:181
msgid "Username"
msgstr "Имя пользователя"
diff --git a/luci-app-nikki/po/templates/nikki.pot b/luci-app-nikki/po/templates/nikki.pot
index b63ec687..734bc7bd 100644
--- a/luci-app-nikki/po/templates/nikki.pot
+++ b/luci-app-nikki/po/templates/nikki.pot
@@ -5,16 +5,32 @@ msgstr "Content-Type: text/plain; charset=UTF-8"
msgid "API Listen"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:116
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:129
msgid "API Secret"
msgstr ""
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:120
+msgid "API TLS Cert"
+msgstr ""
+
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:126
+msgid "API TLS ECH Key"
+msgstr ""
+
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:123
+msgid "API TLS Key"
+msgstr ""
+
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:116
+msgid "API TLS Listen"
+msgstr ""
+
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:69
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:122
msgid "Access Control"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:228
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:241
msgid "Adaptive Replacement Cache (ARC)"
msgstr ""
@@ -31,11 +47,11 @@ msgstr ""
msgid "All Port"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:128
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:141
msgid "Allow Lan"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:269
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:282
msgid "Allow Mode"
msgstr ""
@@ -44,7 +60,7 @@ msgstr ""
msgid "App Config"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:27
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:51
msgid "App Log"
msgstr ""
@@ -52,19 +68,19 @@ msgstr ""
msgid "App Version"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:518
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:531
msgid "Append Rule"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:449
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:462
msgid "Append Rule Provider"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:505
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:518
msgid "Behavior"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:268
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:281
msgid "Block Mode"
msgstr ""
@@ -100,8 +116,8 @@ msgstr ""
msgid "Choose Profile"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:31
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:64
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:55
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:88
msgid "Clear Log"
msgstr ""
@@ -110,7 +126,7 @@ msgstr ""
msgid "Commonly Used Port"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:60
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:84
msgid "Core Log"
msgstr ""
@@ -126,44 +142,40 @@ msgstr ""
msgid "Core Version"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:117
-msgid "Cron Expression"
-msgstr ""
-
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:99
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:165
msgid "DNS"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:224
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:237
msgid "DNS Cache Algorithm"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:216
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:229
msgid "DNS Config"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:230
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:243
msgid "DNS Listen"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:240
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:253
msgid "DNS Mode"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:93
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:117
msgid "Debug Log"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:541
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:554
msgid "Destination IP"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:545
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:558
msgid "Destination IP Geo"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:542
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:555
msgid "Destination Port"
msgstr ""
@@ -175,7 +187,7 @@ msgstr ""
msgid "Destination UDP Port to Proxy"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:183
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:196
msgid "Device Name"
msgstr ""
@@ -183,7 +195,7 @@ msgstr ""
msgid "Direct Mode"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:363
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:376
msgid "Direct Nameserver Follow Policy"
msgstr ""
@@ -191,22 +203,22 @@ msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:73
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:79
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:85
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:123
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:131
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:180
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:200
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:221
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:237
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:275
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:281
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:287
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:293
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:299
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:366
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:393
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:399
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:405
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:593
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:136
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:144
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:193
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:213
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:234
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:250
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:288
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:294
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:300
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:306
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:312
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:379
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:406
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:412
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:418
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:606
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:38
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:45
msgid "Disable"
@@ -228,68 +240,68 @@ msgstr ""
msgid "Disable TCP Keep Alive"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:284
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:297
msgid "DoH Prefer HTTP/3"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:316
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:536
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:329
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:549
msgid "Domain Name"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:544
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:557
msgid "Domain Name Geo"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:539
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:552
msgid "Domain Name Keyword"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:540
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:553
msgid "Domain Name Regex"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:537
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:550
msgid "Domain Name Suffix"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:538
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:551
msgid "Domain Name Wildcard"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:157
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:170
msgid "Edit Authentications"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:210
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:223
msgid "Edit DNS Hijacks"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:261
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:274
msgid "Edit Fake-IP Filters"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:305
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:318
msgid "Edit Hosts"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:372
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:385
msgid "Edit Nameserver Policies"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:324
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:337
msgid "Edit Nameservers"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:347
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:360
msgid "Edit Proxy Server Nameserver Policies"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:452
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:465
msgid "Edit Rule Providers"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:521
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:534
msgid "Edit Rules"
msgstr ""
@@ -307,34 +319,34 @@ msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:74
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:80
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:86
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:124
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:132
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:165
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:177
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:181
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:201
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:218
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:222
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:238
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:276
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:282
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:288
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:294
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:300
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:137
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:145
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:178
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:190
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:194
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:214
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:231
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:235
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:251
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:289
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:295
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:301
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:307
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:313
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:332
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:355
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:367
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:326
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:345
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:368
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:380
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:390
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:394
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:400
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:406
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:432
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:460
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:529
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:594
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:602
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:393
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:403
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:407
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:413
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:419
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:445
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:473
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:542
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:607
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:615
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:33
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:66
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:77
@@ -355,11 +367,11 @@ msgstr ""
msgid "External Control Config"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:272
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:285
msgid "Fake-IP Cache"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:265
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:278
msgid "Fake-IP Filter Mode"
msgstr ""
@@ -367,15 +379,15 @@ msgstr ""
msgid "Fake-IP Ping Hijack"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:246
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:259
msgid "Fake-IP Range"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:254
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:267
msgid "Fake-IP TTL"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:250
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:263
msgid "Fake-IP6 Range"
msgstr ""
@@ -383,15 +395,15 @@ msgstr ""
msgid "Fast Reload"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:499
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:512
msgid "File Format"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:493
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:506
msgid "File Path"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:487
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:500
msgid "File Size Limit"
msgstr ""
@@ -404,15 +416,15 @@ msgstr ""
msgid "File:"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:411
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:424
msgid "Force Sniff Domain Name"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:197
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:210
msgid "GSO"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:203
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:216
msgid "GSO Max Size"
msgstr ""
@@ -421,43 +433,43 @@ msgstr ""
msgid "General Config"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:97
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:121
msgid "Generate & Download"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:572
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:585
msgid "GeoData Loader"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:566
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:579
msgid "GeoIP Format"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:587
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:600
msgid "GeoIP(ASN) Url"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:584
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:597
msgid "GeoIP(DAT) Url"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:581
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:594
msgid "GeoIP(MMDB) Url"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:578
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:591
msgid "GeoSite Url"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:590
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:603
msgid "GeoX Auto Update"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:564
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:577
msgid "GeoX Config"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:596
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:609
msgid "GeoX Update Interval"
msgstr ""
@@ -473,7 +485,7 @@ msgstr ""
msgid "Group"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:134
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:147
msgid "HTTP Port"
msgstr ""
@@ -505,11 +517,11 @@ msgstr ""
msgid "IPv6 Proxy"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:418
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:431
msgid "Ignore Sniff Domain Name"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:126
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:139
msgid "Inbound Config"
msgstr ""
@@ -521,7 +533,7 @@ msgstr ""
msgid "LAN Proxy"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:227
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:240
msgid "Least Recently Used (LRU)"
msgstr ""
@@ -534,11 +546,15 @@ msgstr ""
msgid "Log"
msgstr ""
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:27
+msgid "Log Config"
+msgstr ""
+
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:30
msgid "Log Level"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:193
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:206
msgid "MTU"
msgstr ""
@@ -546,13 +562,13 @@ msgstr ""
msgid "Match Process"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:358
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:383
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:547
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:371
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:396
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:560
msgid "Matcher"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:576
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:589
msgid "Memory Conservative Loader"
msgstr ""
@@ -560,7 +576,7 @@ msgstr ""
msgid "Misc"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:142
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:155
msgid "Mixed Port"
msgstr ""
@@ -568,7 +584,7 @@ msgstr ""
msgid "Mixin Config"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:600
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:613
msgid "Mixin File Content"
msgstr ""
@@ -580,13 +596,13 @@ msgstr ""
msgid "Mode"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:466
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:479
msgid "Name"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:342
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:361
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:386
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:355
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:374
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:399
msgid "Nameserver"
msgstr ""
@@ -595,12 +611,12 @@ msgstr ""
msgid "Nikki"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:558
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:571
msgid "No Resolve"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:480
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:551
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:493
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:564
msgid "Node"
msgstr ""
@@ -624,59 +640,59 @@ msgstr ""
msgid "Outbound Interface"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:154
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:167
msgid "Overwrite Authentication"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:207
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:220
msgid "Overwrite DNS Hijack"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:444
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:457
msgid "Overwrite Destination"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:258
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:271
msgid "Overwrite Fake-IP Filter"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:408
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:421
msgid "Overwrite Force Sniff Domain Name"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:302
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:315
msgid "Overwrite Hosts"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:415
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:428
msgid "Overwrite Ignore Sniff Domain Name"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:321
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:334
msgid "Overwrite Nameserver"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:369
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:382
msgid "Overwrite Nameserver Policy"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:344
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:357
msgid "Overwrite Proxy Server Nameserver Policy"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:422
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:435
msgid "Overwrite Sniff By Protocol"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:171
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:184
msgid "Password"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:602
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:615
msgid "Please go to the editor tab to edit the file for mixin"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:441
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:454
msgid "Port"
msgstr ""
@@ -684,7 +700,7 @@ msgstr ""
msgid "Prefer"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:543
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:556
msgid "Process Name"
msgstr ""
@@ -697,7 +713,7 @@ msgstr ""
msgid "Profile for Startup"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:435
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:448
msgid "Protocol"
msgstr ""
@@ -724,7 +740,7 @@ msgstr ""
msgid "Redirect Mode"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:146
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:159
msgid "Redirect Port"
msgstr ""
@@ -744,7 +760,7 @@ msgstr ""
msgid "Reserved IP6"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:278
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:291
msgid "Respect Rules"
msgstr ""
@@ -756,12 +772,12 @@ msgstr ""
msgid "Router Proxy"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:447
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:460
msgid "Rule Config"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:43
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:270
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:283
msgid "Rule Mode"
msgstr ""
@@ -769,7 +785,7 @@ msgstr ""
msgid "Rule Provider:"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:535
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:548
msgid "Rule Set"
msgstr ""
@@ -777,7 +793,7 @@ msgstr ""
msgid "Running"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:138
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:151
msgid "SOCKS Port"
msgstr ""
@@ -785,16 +801,36 @@ msgstr ""
msgid "Safe Paths"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:120
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:133
msgid "Save Proxy Selection"
msgstr ""
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:29
+msgid "Scheduled Clear"
+msgstr ""
+
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:32
+msgid "Scheduled Clear Cron"
+msgstr ""
+
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:37
+msgid "Scheduled Clear Size Limit"
+msgstr ""
+
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:43
+msgid "Scheduled Clear Size Limit Unit"
+msgstr ""
+
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:114
msgid "Scheduled Restart"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:54
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:87
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:117
+msgid "Scheduled Restart Cron"
+msgstr ""
+
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:78
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:111
msgid "Scroll To Bottom"
msgstr ""
@@ -802,23 +838,23 @@ msgstr ""
msgid "Skip System IPv6 Check"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:425
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:438
msgid "Sniff By Protocol"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:402
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:415
msgid "Sniff Pure IP"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:396
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:409
msgid "Sniff Redir-Host"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:388
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:401
msgid "Sniffer Config"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:186
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:199
msgid "Stack"
msgstr ""
@@ -830,7 +866,7 @@ msgstr ""
msgid "Stack Size Soft Limit"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:575
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:588
msgid "Standard Loader"
msgstr ""
@@ -888,11 +924,11 @@ msgstr ""
msgid "TPROXY Mode"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:150
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:163
msgid "TPROXY Port"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:175
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:188
msgid "TUN Config"
msgstr ""
@@ -921,9 +957,9 @@ msgstr ""
msgid "Transparent Proxy with Mihomo on OpenWrt."
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:335
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:469
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:533
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:348
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:482
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:546
msgid "Type"
msgstr ""
@@ -971,45 +1007,49 @@ msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:105
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:114
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:118
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:122
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:130
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:136
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:140
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:144
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:148
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:152
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:179
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:184
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:188
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:195
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:199
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:205
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:220
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:226
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:232
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:236
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:242
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:248
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:252
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:256
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:267
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:274
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:121
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:124
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:127
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:131
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:135
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:143
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:149
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:153
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:157
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:161
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:165
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:192
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:197
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:201
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:208
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:212
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:218
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:233
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:239
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:245
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:249
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:255
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:261
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:265
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:269
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:280
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:286
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:292
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:298
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:365
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:392
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:398
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:404
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:568
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:574
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:579
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:582
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:585
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:588
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:287
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:293
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:299
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:305
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:311
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:378
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:405
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:411
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:417
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:581
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:587
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:592
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:595
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:598
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:601
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:605
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:611
msgid "Unmodified"
msgstr ""
@@ -1025,7 +1065,7 @@ msgstr ""
msgid "Update Dashboard"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:512
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:525
msgid "Update Interval"
msgstr ""
@@ -1033,15 +1073,15 @@ msgstr ""
msgid "Upload Profile"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:475
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:488
msgid "Url"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:296
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:309
msgid "Use Hosts"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:290
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:303
msgid "Use System Hosts"
msgstr ""
@@ -1057,7 +1097,7 @@ msgstr ""
msgid "User Agent"
msgstr ""
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:168
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:181
msgid "Username"
msgstr ""
diff --git a/luci-app-nikki/po/zh_Hans/nikki.po b/luci-app-nikki/po/zh_Hans/nikki.po
index 86311743..9d263433 100644
--- a/luci-app-nikki/po/zh_Hans/nikki.po
+++ b/luci-app-nikki/po/zh_Hans/nikki.po
@@ -12,16 +12,32 @@ msgstr ""
msgid "API Listen"
msgstr "API 监听"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:116
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:129
msgid "API Secret"
-msgstr "API 密钥"
+msgstr "API 密码"
+
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:120
+msgid "API TLS Cert"
+msgstr "API TLS 证书"
+
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:126
+msgid "API TLS ECH Key"
+msgstr "APL TLS ECH 密钥"
+
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:123
+msgid "API TLS Key"
+msgstr "API TLS 密钥"
+
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:116
+msgid "API TLS Listen"
+msgstr "API TLS 监听"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:69
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:122
msgid "Access Control"
msgstr "访问控制"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:228
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:241
msgid "Adaptive Replacement Cache (ARC)"
msgstr "自适应替换缓存(ARC)"
@@ -38,11 +54,11 @@ msgstr "地址空间大小软限制"
msgid "All Port"
msgstr "全部端口"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:128
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:141
msgid "Allow Lan"
msgstr "允许局域网访问"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:269
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:282
msgid "Allow Mode"
msgstr "白名单模式"
@@ -51,7 +67,7 @@ msgstr "白名单模式"
msgid "App Config"
msgstr "插件配置"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:27
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:51
msgid "App Log"
msgstr "插件日志"
@@ -59,19 +75,19 @@ msgstr "插件日志"
msgid "App Version"
msgstr "插件版本"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:518
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:531
msgid "Append Rule"
msgstr "追加规则"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:449
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:462
msgid "Append Rule Provider"
msgstr "追加规则提供者"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:505
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:518
msgid "Behavior"
msgstr "行为"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:268
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:281
msgid "Block Mode"
msgstr "黑名单模式"
@@ -107,8 +123,8 @@ msgstr "选择文件"
msgid "Choose Profile"
msgstr "选择配置文件"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:31
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:64
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:55
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:88
msgid "Clear Log"
msgstr "清空日志"
@@ -117,7 +133,7 @@ msgstr "清空日志"
msgid "Commonly Used Port"
msgstr "常用端口"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:60
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:84
msgid "Core Log"
msgstr "核心日志"
@@ -133,44 +149,40 @@ msgstr "核心状态"
msgid "Core Version"
msgstr "核心版本"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:117
-msgid "Cron Expression"
-msgstr "Cron 表达式"
-
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:99
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:165
msgid "DNS"
msgstr "DNS"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:224
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:237
msgid "DNS Cache Algorithm"
msgstr "DNS 缓存算法"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:216
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:229
msgid "DNS Config"
msgstr "DNS 配置"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:230
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:243
msgid "DNS Listen"
msgstr "DNS 监听"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:240
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:253
msgid "DNS Mode"
msgstr "DNS 模式"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:93
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:117
msgid "Debug Log"
msgstr "调试日志"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:541
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:554
msgid "Destination IP"
msgstr "目标 IP"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:545
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:558
msgid "Destination IP Geo"
msgstr "目标 IP(Geo)"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:542
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:555
msgid "Destination Port"
msgstr "目标端口"
@@ -182,7 +194,7 @@ msgstr "要代理的 TCP 目标端口"
msgid "Destination UDP Port to Proxy"
msgstr "要代理的 UDP 目标端口"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:183
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:196
msgid "Device Name"
msgstr "设备名称"
@@ -190,7 +202,7 @@ msgstr "设备名称"
msgid "Direct Mode"
msgstr "直连模式"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:363
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:376
msgid "Direct Nameserver Follow Policy"
msgstr "Direct Nameserver 跟随查询策略"
@@ -198,22 +210,22 @@ msgstr "Direct Nameserver 跟随查询策略"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:73
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:79
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:85
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:123
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:131
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:180
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:200
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:221
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:237
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:275
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:281
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:287
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:293
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:299
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:366
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:393
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:399
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:405
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:593
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:136
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:144
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:193
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:213
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:234
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:250
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:288
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:294
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:300
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:306
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:312
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:379
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:406
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:412
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:418
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:606
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:38
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:45
msgid "Disable"
@@ -235,68 +247,68 @@ msgstr "禁用回环检测"
msgid "Disable TCP Keep Alive"
msgstr "禁用 TCP Keep Alive"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:284
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:297
msgid "DoH Prefer HTTP/3"
msgstr "DoH 优先 HTTP/3"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:316
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:536
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:329
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:549
msgid "Domain Name"
msgstr "域名"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:544
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:557
msgid "Domain Name Geo"
msgstr "域名(Geo)"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:539
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:552
msgid "Domain Name Keyword"
msgstr "域名(关键字)"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:540
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:553
msgid "Domain Name Regex"
msgstr "域名(正则表达式)"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:537
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:550
msgid "Domain Name Suffix"
msgstr "域名(后缀)"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:538
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:551
msgid "Domain Name Wildcard"
msgstr "域名(通配符)"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:157
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:170
msgid "Edit Authentications"
msgstr "编辑身份验证"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:210
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:223
msgid "Edit DNS Hijacks"
msgstr "编辑 DNS 劫持"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:261
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:274
msgid "Edit Fake-IP Filters"
msgstr "编辑 Fake-IP 过滤列表"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:305
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:318
msgid "Edit Hosts"
msgstr "编辑 Hosts"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:372
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:385
msgid "Edit Nameserver Policies"
msgstr "编辑 DNS 服务器查询策略"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:324
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:337
msgid "Edit Nameservers"
msgstr "编辑 DNS 服务器"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:347
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:360
msgid "Edit Proxy Server Nameserver Policies"
msgstr "编辑 DNS 服务器查询策略(节点用)"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:452
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:465
msgid "Edit Rule Providers"
msgstr "编辑规则提供者"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:521
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:534
msgid "Edit Rules"
msgstr "编辑规则"
@@ -314,34 +326,34 @@ msgstr "编辑器"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:74
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:80
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:86
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:124
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:132
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:165
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:177
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:181
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:201
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:218
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:222
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:238
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:276
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:282
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:288
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:294
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:300
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:137
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:145
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:178
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:190
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:194
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:214
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:231
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:235
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:251
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:289
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:295
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:301
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:307
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:313
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:332
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:355
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:367
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:326
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:345
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:368
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:380
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:390
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:394
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:400
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:406
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:432
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:460
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:529
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:594
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:602
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:393
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:403
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:407
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:413
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:419
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:445
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:473
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:542
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:607
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:615
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:33
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:66
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:77
@@ -362,11 +374,11 @@ msgstr "到期时间"
msgid "External Control Config"
msgstr "外部控制配置"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:272
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:285
msgid "Fake-IP Cache"
msgstr "Fake-IP 缓存"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:265
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:278
msgid "Fake-IP Filter Mode"
msgstr "Fake-IP 过滤模式"
@@ -374,15 +386,15 @@ msgstr "Fake-IP 过滤模式"
msgid "Fake-IP Ping Hijack"
msgstr "Fake-IP Ping 劫持"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:246
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:259
msgid "Fake-IP Range"
msgstr "Fake-IP 范围"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:254
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:267
msgid "Fake-IP TTL"
msgstr "Fake-IP TTL"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:250
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:263
msgid "Fake-IP6 Range"
msgstr "Fake-IP6 范围"
@@ -390,15 +402,15 @@ msgstr "Fake-IP6 范围"
msgid "Fast Reload"
msgstr "快速重载"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:499
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:512
msgid "File Format"
msgstr "文件格式"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:493
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:506
msgid "File Path"
msgstr "文件路径"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:487
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:500
msgid "File Size Limit"
msgstr "文件大小限制"
@@ -411,15 +423,15 @@ msgstr "用于混入的文件"
msgid "File:"
msgstr "文件:"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:411
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:424
msgid "Force Sniff Domain Name"
msgstr "强制嗅探的域名"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:197
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:210
msgid "GSO"
msgstr "通用分段卸载"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:203
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:216
msgid "GSO Max Size"
msgstr "分段最大长度"
@@ -428,43 +440,43 @@ msgstr "分段最大长度"
msgid "General Config"
msgstr "全局配置"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:97
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:121
msgid "Generate & Download"
msgstr "生成并下载"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:572
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:585
msgid "GeoData Loader"
msgstr "GeoData 加载器"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:566
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:579
msgid "GeoIP Format"
msgstr "GeoIP 格式"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:587
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:600
msgid "GeoIP(ASN) Url"
msgstr "GeoIP(ASN) 下载地址"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:584
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:597
msgid "GeoIP(DAT) Url"
msgstr "GeoIP(DAT) 下载地址"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:581
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:594
msgid "GeoIP(MMDB) Url"
msgstr "GeoIP(MMDB) 下载地址"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:578
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:591
msgid "GeoSite Url"
msgstr "GeoSite 下载地址"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:590
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:603
msgid "GeoX Auto Update"
msgstr "定时更新GeoX文件"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:564
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:577
msgid "GeoX Config"
msgstr "GeoX 配置"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:596
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:609
msgid "GeoX Update Interval"
msgstr "GeoX 文件更新间隔"
@@ -480,7 +492,7 @@ msgstr "授予访问 nikki 程序的权限"
msgid "Group"
msgstr "用户组"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:134
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:147
msgid "HTTP Port"
msgstr "HTTP 端口"
@@ -512,11 +524,11 @@ msgstr "IPv6 DNS 劫持"
msgid "IPv6 Proxy"
msgstr "IPv6 代理"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:418
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:431
msgid "Ignore Sniff Domain Name"
msgstr "忽略嗅探的域名"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:126
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:139
msgid "Inbound Config"
msgstr "入站配置"
@@ -528,7 +540,7 @@ msgstr "入站接口"
msgid "LAN Proxy"
msgstr "局域网代理"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:227
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:240
msgid "Least Recently Used (LRU)"
msgstr "最近最少使用(LRU)"
@@ -541,11 +553,15 @@ msgstr "本地"
msgid "Log"
msgstr "日志"
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:27
+msgid "Log Config"
+msgstr "日志配置"
+
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:30
msgid "Log Level"
msgstr "日志级别"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:193
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:206
msgid "MTU"
msgstr "最大传输单元"
@@ -553,13 +569,13 @@ msgstr "最大传输单元"
msgid "Match Process"
msgstr "匹配进程"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:358
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:383
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:547
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:371
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:396
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:560
msgid "Matcher"
msgstr "匹配"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:576
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:589
msgid "Memory Conservative Loader"
msgstr "为内存受限设备优化的加载器"
@@ -567,7 +583,7 @@ msgstr "为内存受限设备优化的加载器"
msgid "Misc"
msgstr "杂项"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:142
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:155
msgid "Mixed Port"
msgstr "混合端口"
@@ -575,7 +591,7 @@ msgstr "混合端口"
msgid "Mixin Config"
msgstr "混入配置"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:600
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:613
msgid "Mixin File Content"
msgstr "混入文件内容"
@@ -587,13 +603,13 @@ msgstr "混入选项"
msgid "Mode"
msgstr "模式"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:466
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:479
msgid "Name"
msgstr "名称"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:342
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:361
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:386
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:355
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:374
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:399
msgid "Nameserver"
msgstr "DNS 服务器"
@@ -602,12 +618,12 @@ msgstr "DNS 服务器"
msgid "Nikki"
msgstr "Nikki"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:558
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:571
msgid "No Resolve"
msgstr "不解析"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:480
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:551
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:493
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:564
msgid "Node"
msgstr "节点"
@@ -631,59 +647,59 @@ msgstr "打开面板"
msgid "Outbound Interface"
msgstr "出站接口"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:154
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:167
msgid "Overwrite Authentication"
msgstr "覆盖身份验证"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:207
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:220
msgid "Overwrite DNS Hijack"
msgstr "覆盖 DNS 劫持"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:444
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:457
msgid "Overwrite Destination"
msgstr "将嗅探结果作为连接目标"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:258
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:271
msgid "Overwrite Fake-IP Filter"
msgstr "覆盖 Fake-IP 过滤列表"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:408
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:421
msgid "Overwrite Force Sniff Domain Name"
msgstr "覆盖强制嗅探的域名"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:302
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:315
msgid "Overwrite Hosts"
msgstr "覆盖 Hosts"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:415
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:428
msgid "Overwrite Ignore Sniff Domain Name"
msgstr "覆盖忽略嗅探的域名"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:321
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:334
msgid "Overwrite Nameserver"
msgstr "覆盖 DNS 服务器"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:369
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:382
msgid "Overwrite Nameserver Policy"
msgstr "覆盖 DNS 服务器查询策略"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:344
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:357
msgid "Overwrite Proxy Server Nameserver Policy"
msgstr "覆盖 DNS 服务器查询策略(节点用)"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:422
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:435
msgid "Overwrite Sniff By Protocol"
msgstr "覆盖按协议嗅探"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:171
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:184
msgid "Password"
msgstr "密码"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:602
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:615
msgid "Please go to the editor tab to edit the file for mixin"
msgstr "请前往编辑器标签编辑用于混入的文件"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:441
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:454
msgid "Port"
msgstr "端口"
@@ -691,7 +707,7 @@ msgstr "端口"
msgid "Prefer"
msgstr "优先"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:543
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:556
msgid "Process Name"
msgstr "进程名"
@@ -704,7 +720,7 @@ msgstr "配置文件"
msgid "Profile for Startup"
msgstr "用于启动的配置文件"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:435
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:448
msgid "Protocol"
msgstr "协议"
@@ -731,7 +747,7 @@ msgstr "资源限制配置"
msgid "Redirect Mode"
msgstr "Redirect 模式"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:146
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:159
msgid "Redirect Port"
msgstr "Redirect 端口"
@@ -751,7 +767,7 @@ msgstr "IPv4 保留地址"
msgid "Reserved IP6"
msgstr "IPv6 保留地址"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:278
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:291
msgid "Respect Rules"
msgstr "遵循分流规则"
@@ -763,12 +779,12 @@ msgstr "重启服务"
msgid "Router Proxy"
msgstr "路由器代理"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:447
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:460
msgid "Rule Config"
msgstr "规则配置"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:43
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:270
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:283
msgid "Rule Mode"
msgstr "规则模式"
@@ -776,7 +792,7 @@ msgstr "规则模式"
msgid "Rule Provider:"
msgstr "规则提供者:"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:535
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:548
msgid "Rule Set"
msgstr "规则集"
@@ -784,7 +800,7 @@ msgstr "规则集"
msgid "Running"
msgstr "运行中"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:138
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:151
msgid "SOCKS Port"
msgstr "SOCKS 端口"
@@ -792,16 +808,36 @@ msgstr "SOCKS 端口"
msgid "Safe Paths"
msgstr "安全路径"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:120
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:133
msgid "Save Proxy Selection"
msgstr "保存节点/策略组选择"
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:29
+msgid "Scheduled Clear"
+msgstr "定时清除"
+
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:32
+msgid "Scheduled Clear Cron"
+msgstr "Cron 表达式"
+
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:37
+msgid "Scheduled Clear Size Limit"
+msgstr "日志大小上限"
+
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:43
+msgid "Scheduled Clear Size Limit Unit"
+msgstr "日志大小上限单位"
+
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:114
msgid "Scheduled Restart"
msgstr "定时重启"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:54
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:87
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:117
+msgid "Scheduled Restart Cron"
+msgstr "Cron 表达式"
+
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:78
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:111
msgid "Scroll To Bottom"
msgstr "滚动到底部"
@@ -809,23 +845,23 @@ msgstr "滚动到底部"
msgid "Skip System IPv6 Check"
msgstr "跳过系统 IPv6 检查"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:425
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:438
msgid "Sniff By Protocol"
msgstr "按协议嗅探"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:402
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:415
msgid "Sniff Pure IP"
msgstr "嗅探纯 IP 连接"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:396
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:409
msgid "Sniff Redir-Host"
msgstr "嗅探 Redir-Host 流量"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:388
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:401
msgid "Sniffer Config"
msgstr "嗅探器配置"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:186
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:199
msgid "Stack"
msgstr "栈"
@@ -837,7 +873,7 @@ msgstr "栈大小硬限制"
msgid "Stack Size Soft Limit"
msgstr "栈大小软限制"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:575
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:588
msgid "Standard Loader"
msgstr "标准加载器"
@@ -895,11 +931,11 @@ msgstr "TCP 模式"
msgid "TPROXY Mode"
msgstr "TPROXY 模式"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:150
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:163
msgid "TPROXY Port"
msgstr "TPROXY 端口"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:175
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:188
msgid "TUN Config"
msgstr "TUN 配置"
@@ -928,9 +964,9 @@ msgstr "总量"
msgid "Transparent Proxy with Mihomo on OpenWrt."
msgstr "在 OpenWrt 上使用 Mihomo 进行透明代理。"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:335
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:469
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:533
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:348
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:482
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:546
msgid "Type"
msgstr "类型"
@@ -978,45 +1014,49 @@ msgstr "无限制"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:105
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:114
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:118
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:122
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:130
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:136
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:140
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:144
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:148
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:152
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:179
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:184
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:188
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:195
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:199
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:205
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:220
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:226
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:232
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:236
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:242
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:248
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:252
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:256
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:267
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:274
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:121
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:124
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:127
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:131
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:135
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:143
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:149
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:153
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:157
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:161
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:165
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:192
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:197
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:201
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:208
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:212
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:218
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:233
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:239
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:245
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:249
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:255
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:261
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:265
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:269
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:280
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:286
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:292
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:298
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:365
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:392
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:398
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:404
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:568
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:574
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:579
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:582
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:585
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:588
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:287
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:293
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:299
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:305
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:311
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:378
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:405
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:411
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:417
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:581
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:587
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:592
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:595
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:598
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:601
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:605
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:611
msgid "Unmodified"
msgstr "不修改"
@@ -1032,7 +1072,7 @@ msgstr "更新时间"
msgid "Update Dashboard"
msgstr "更新面板"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:512
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:525
msgid "Update Interval"
msgstr "更新间隔"
@@ -1040,15 +1080,15 @@ msgstr "更新间隔"
msgid "Upload Profile"
msgstr "上传配置文件"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:475
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:488
msgid "Url"
msgstr "下载地址"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:296
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:309
msgid "Use Hosts"
msgstr "使用 Hosts"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:290
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:303
msgid "Use System Hosts"
msgstr "使用系统的 Hosts"
@@ -1064,16 +1104,10 @@ msgstr "用户"
msgid "User Agent"
msgstr "用户代理(UA)"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:168
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:181
msgid "Username"
msgstr "用户名"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:128
msgid "procd Config"
msgstr "procd 配置"
-
-#~ msgid "Global Client Fingerprint"
-#~ msgstr "全局客户端指纹"
-
-#~ msgid "Random"
-#~ msgstr "随机"
diff --git a/luci-app-nikki/po/zh_Hant/nikki.po b/luci-app-nikki/po/zh_Hant/nikki.po
index 5b9d77ed..1a455334 100644
--- a/luci-app-nikki/po/zh_Hant/nikki.po
+++ b/luci-app-nikki/po/zh_Hant/nikki.po
@@ -12,16 +12,32 @@ msgstr ""
msgid "API Listen"
msgstr "API 監聽"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:116
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:129
msgid "API Secret"
-msgstr "API 密鑰"
+msgstr "API 密碼"
+
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:120
+msgid "API TLS Cert"
+msgstr "API TLS 憑證"
+
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:126
+msgid "API TLS ECH Key"
+msgstr "API TLS ECH 金鑰"
+
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:123
+msgid "API TLS Key"
+msgstr "API TLS 金鑰"
+
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:116
+msgid "API TLS Listen"
+msgstr "API TLS 監聽"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:69
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:122
msgid "Access Control"
msgstr "存取控制"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:228
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:241
msgid "Adaptive Replacement Cache (ARC)"
msgstr "調適型替換快取(ARC)"
@@ -38,11 +54,11 @@ msgstr "位址空間大小軟限制"
msgid "All Port"
msgstr "所有埠"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:128
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:141
msgid "Allow Lan"
msgstr "允許區域網路存取"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:269
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:282
msgid "Allow Mode"
msgstr "白名單模式"
@@ -51,7 +67,7 @@ msgstr "白名單模式"
msgid "App Config"
msgstr "應用程式設定"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:27
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:51
msgid "App Log"
msgstr "應用程式日誌"
@@ -59,19 +75,19 @@ msgstr "應用程式日誌"
msgid "App Version"
msgstr "應用程式版本"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:518
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:531
msgid "Append Rule"
msgstr "追加規則"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:449
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:462
msgid "Append Rule Provider"
msgstr "追加規則提供者"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:505
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:518
msgid "Behavior"
msgstr "行為"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:268
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:281
msgid "Block Mode"
msgstr "黑名單模式"
@@ -107,8 +123,8 @@ msgstr "選擇檔案"
msgid "Choose Profile"
msgstr "選擇設定檔"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:31
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:64
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:55
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:88
msgid "Clear Log"
msgstr "清空日誌"
@@ -117,7 +133,7 @@ msgstr "清空日誌"
msgid "Commonly Used Port"
msgstr "常用埠"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:60
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:84
msgid "Core Log"
msgstr "核心日誌"
@@ -133,44 +149,40 @@ msgstr "核心狀態"
msgid "Core Version"
msgstr "核心版本"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:117
-msgid "Cron Expression"
-msgstr "Cron 表達式"
-
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:99
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:165
msgid "DNS"
msgstr "DNS"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:224
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:237
msgid "DNS Cache Algorithm"
msgstr "DNS 快取演算法"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:216
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:229
msgid "DNS Config"
msgstr "DNS 設定"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:230
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:243
msgid "DNS Listen"
msgstr "DNS 監聽"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:240
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:253
msgid "DNS Mode"
msgstr "DNS 模式"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:93
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:117
msgid "Debug Log"
msgstr "除錯日誌"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:541
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:554
msgid "Destination IP"
msgstr "目標 IP"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:545
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:558
msgid "Destination IP Geo"
msgstr "目標 IP(地理位置)"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:542
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:555
msgid "Destination Port"
msgstr "目標埠"
@@ -182,7 +194,7 @@ msgstr "要代理的 TCP 目標埠"
msgid "Destination UDP Port to Proxy"
msgstr "要代理的 UDP 目標埠"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:183
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:196
msgid "Device Name"
msgstr "裝置名稱"
@@ -190,7 +202,7 @@ msgstr "裝置名稱"
msgid "Direct Mode"
msgstr "直連模式"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:363
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:376
msgid "Direct Nameserver Follow Policy"
msgstr "Direct Nameserver 跟隨查詢策略"
@@ -198,22 +210,22 @@ msgstr "Direct Nameserver 跟隨查詢策略"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:73
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:79
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:85
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:123
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:131
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:180
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:200
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:221
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:237
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:275
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:281
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:287
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:293
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:299
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:366
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:393
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:399
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:405
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:593
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:136
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:144
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:193
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:213
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:234
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:250
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:288
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:294
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:300
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:306
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:312
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:379
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:406
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:412
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:418
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:606
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:38
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:45
msgid "Disable"
@@ -235,68 +247,68 @@ msgstr "停用迴路檢測"
msgid "Disable TCP Keep Alive"
msgstr "停用 TCP Keep Alive"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:284
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:297
msgid "DoH Prefer HTTP/3"
msgstr "DoH 優先使用 HTTP/3"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:316
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:536
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:329
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:549
msgid "Domain Name"
msgstr "網域名稱"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:544
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:557
msgid "Domain Name Geo"
msgstr "網域名稱(地理位置)"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:539
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:552
msgid "Domain Name Keyword"
msgstr "網域名稱(關鍵字)"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:540
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:553
msgid "Domain Name Regex"
msgstr "網域名稱(正則表達式)"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:537
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:550
msgid "Domain Name Suffix"
msgstr "網域名稱(後綴)"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:538
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:551
msgid "Domain Name Wildcard"
msgstr "網域名稱(通配符)"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:157
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:170
msgid "Edit Authentications"
msgstr "編輯身分驗證"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:210
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:223
msgid "Edit DNS Hijacks"
msgstr "編輯 DNS 劫持"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:261
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:274
msgid "Edit Fake-IP Filters"
msgstr "編輯 Fake-IP 過濾清單"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:305
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:318
msgid "Edit Hosts"
msgstr "編輯 Hosts"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:372
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:385
msgid "Edit Nameserver Policies"
msgstr "編輯 DNS 伺服器查詢策略"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:324
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:337
msgid "Edit Nameservers"
msgstr "編輯 DNS 伺服器"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:347
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:360
msgid "Edit Proxy Server Nameserver Policies"
msgstr "編輯 DNS 伺服器查詢策略(節點用)"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:452
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:465
msgid "Edit Rule Providers"
msgstr "編輯規則提供者"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:521
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:534
msgid "Edit Rules"
msgstr "編輯規則"
@@ -314,34 +326,34 @@ msgstr "編輯器"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:74
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:80
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:86
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:124
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:132
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:165
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:177
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:181
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:201
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:218
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:222
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:238
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:276
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:282
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:288
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:294
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:300
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:137
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:145
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:178
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:190
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:194
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:214
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:231
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:235
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:251
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:289
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:295
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:301
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:307
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:313
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:332
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:355
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:367
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:326
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:345
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:368
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:380
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:390
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:394
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:400
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:406
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:432
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:460
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:529
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:594
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:602
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:393
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:403
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:407
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:413
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:419
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:445
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:473
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:542
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:607
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:615
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:33
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:66
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:77
@@ -362,11 +374,11 @@ msgstr "到期時間"
msgid "External Control Config"
msgstr "外部控制設定"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:272
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:285
msgid "Fake-IP Cache"
msgstr "Fake-IP 快取"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:265
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:278
msgid "Fake-IP Filter Mode"
msgstr "Fake-IP 過濾模式"
@@ -374,15 +386,15 @@ msgstr "Fake-IP 過濾模式"
msgid "Fake-IP Ping Hijack"
msgstr "Fake-IP Ping 劫持"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:246
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:259
msgid "Fake-IP Range"
msgstr "Fake-IP 範圍"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:254
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:267
msgid "Fake-IP TTL"
msgstr "Fake-IP TTL"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:250
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:263
msgid "Fake-IP6 Range"
msgstr "Fake-IP6 範圍"
@@ -390,15 +402,15 @@ msgstr "Fake-IP6 範圍"
msgid "Fast Reload"
msgstr "快速重載"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:499
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:512
msgid "File Format"
msgstr "檔案格式"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:493
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:506
msgid "File Path"
msgstr "檔案路徑"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:487
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:500
msgid "File Size Limit"
msgstr "檔案大小限制"
@@ -411,15 +423,15 @@ msgstr "用於混入的檔案"
msgid "File:"
msgstr "檔案:"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:411
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:424
msgid "Force Sniff Domain Name"
msgstr "強制嗅探的網域名稱"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:197
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:210
msgid "GSO"
msgstr "通用分段卸載"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:203
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:216
msgid "GSO Max Size"
msgstr "分段最大長度"
@@ -428,43 +440,43 @@ msgstr "分段最大長度"
msgid "General Config"
msgstr "一般設定"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:97
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:121
msgid "Generate & Download"
msgstr "生成並下載"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:572
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:585
msgid "GeoData Loader"
msgstr "GeoData 載入器"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:566
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:579
msgid "GeoIP Format"
msgstr "GeoIP 格式"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:587
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:600
msgid "GeoIP(ASN) Url"
msgstr "GeoIP(ASN) 下載網址"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:584
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:597
msgid "GeoIP(DAT) Url"
msgstr "GeoIP(DAT) 下載網址"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:581
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:594
msgid "GeoIP(MMDB) Url"
msgstr "GeoIP(MMDB) 下載網址"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:578
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:591
msgid "GeoSite Url"
msgstr "GeoSite 下載網址"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:590
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:603
msgid "GeoX Auto Update"
msgstr "定時更新 GeoX 檔案"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:564
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:577
msgid "GeoX Config"
msgstr "GeoX 設定"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:596
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:609
msgid "GeoX Update Interval"
msgstr "GeoX 檔案更新間隔"
@@ -480,7 +492,7 @@ msgstr "授予存取 nikki 程序的權限"
msgid "Group"
msgstr "使用者群組"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:134
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:147
msgid "HTTP Port"
msgstr "HTTP 埠"
@@ -512,11 +524,11 @@ msgstr "IPv6 DNS 劫持"
msgid "IPv6 Proxy"
msgstr "IPv6 代理"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:418
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:431
msgid "Ignore Sniff Domain Name"
msgstr "忽略嗅探的網域名稱"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:126
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:139
msgid "Inbound Config"
msgstr "入站設定"
@@ -528,7 +540,7 @@ msgstr "入站介面"
msgid "LAN Proxy"
msgstr "區域網路代理"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:227
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:240
msgid "Least Recently Used (LRU)"
msgstr "最近最少使用(LRU)"
@@ -541,11 +553,15 @@ msgstr "本地"
msgid "Log"
msgstr "日誌"
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:27
+msgid "Log Config"
+msgstr "日誌設定"
+
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:30
msgid "Log Level"
msgstr "日誌等級"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:193
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:206
msgid "MTU"
msgstr "最大傳輸單元"
@@ -553,13 +569,13 @@ msgstr "最大傳輸單元"
msgid "Match Process"
msgstr "匹配程序"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:358
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:383
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:547
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:371
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:396
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:560
msgid "Matcher"
msgstr "匹配器"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:576
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:589
msgid "Memory Conservative Loader"
msgstr "為記憶體受限裝置最佳化的載入器"
@@ -567,7 +583,7 @@ msgstr "為記憶體受限裝置最佳化的載入器"
msgid "Misc"
msgstr "雜項"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:142
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:155
msgid "Mixed Port"
msgstr "混合埠"
@@ -575,7 +591,7 @@ msgstr "混合埠"
msgid "Mixin Config"
msgstr "混入設定"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:600
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:613
msgid "Mixin File Content"
msgstr "混入檔案內容"
@@ -587,13 +603,13 @@ msgstr "混入選項"
msgid "Mode"
msgstr "模式"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:466
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:479
msgid "Name"
msgstr "名稱"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:342
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:361
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:386
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:355
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:374
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:399
msgid "Nameserver"
msgstr "DNS 伺服器"
@@ -602,12 +618,12 @@ msgstr "DNS 伺服器"
msgid "Nikki"
msgstr "Nikki"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:558
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:571
msgid "No Resolve"
msgstr "不解析"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:480
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:551
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:493
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:564
msgid "Node"
msgstr "節點"
@@ -631,59 +647,59 @@ msgstr "開啟儀表板"
msgid "Outbound Interface"
msgstr "出站介面"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:154
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:167
msgid "Overwrite Authentication"
msgstr "覆寫身分驗證"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:207
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:220
msgid "Overwrite DNS Hijack"
msgstr "覆寫 DNS 劫持"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:444
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:457
msgid "Overwrite Destination"
msgstr "將嗅探結果作為連線目標"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:258
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:271
msgid "Overwrite Fake-IP Filter"
msgstr "覆寫 Fake-IP 過濾清單"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:408
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:421
msgid "Overwrite Force Sniff Domain Name"
msgstr "覆寫強制嗅探的網域名稱"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:302
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:315
msgid "Overwrite Hosts"
msgstr "覆寫 Hosts"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:415
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:428
msgid "Overwrite Ignore Sniff Domain Name"
msgstr "覆寫忽略嗅探的網域名稱"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:321
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:334
msgid "Overwrite Nameserver"
msgstr "覆寫 DNS 伺服器"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:369
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:382
msgid "Overwrite Nameserver Policy"
msgstr "覆寫 DNS 伺服器查詢策略"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:344
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:357
msgid "Overwrite Proxy Server Nameserver Policy"
msgstr "覆蓋 DNS 伺服器查詢策略(節點用)"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:422
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:435
msgid "Overwrite Sniff By Protocol"
msgstr "覆寫按協定嗅探"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:171
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:184
msgid "Password"
msgstr "密碼"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:602
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:615
msgid "Please go to the editor tab to edit the file for mixin"
msgstr "請前往編輯器標籤編輯用於混入的檔案"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:441
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:454
msgid "Port"
msgstr "埠"
@@ -691,7 +707,7 @@ msgstr "埠"
msgid "Prefer"
msgstr "優先"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:543
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:556
msgid "Process Name"
msgstr "程序名稱"
@@ -704,7 +720,7 @@ msgstr "設定檔"
msgid "Profile for Startup"
msgstr "用於啟動的設定檔"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:435
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:448
msgid "Protocol"
msgstr "協定"
@@ -731,7 +747,7 @@ msgstr "RLIMIT 設定"
msgid "Redirect Mode"
msgstr "Redirect 模式"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:146
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:159
msgid "Redirect Port"
msgstr "Redirect 埠"
@@ -751,7 +767,7 @@ msgstr "IPv4 保留位址"
msgid "Reserved IP6"
msgstr "IPv6 保留位址"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:278
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:291
msgid "Respect Rules"
msgstr "遵循分流規則"
@@ -763,12 +779,12 @@ msgstr "重新啟動服務"
msgid "Router Proxy"
msgstr "路由器代理"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:447
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:460
msgid "Rule Config"
msgstr "規則設定"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:43
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:270
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:283
msgid "Rule Mode"
msgstr "規則模式"
@@ -776,7 +792,7 @@ msgstr "規則模式"
msgid "Rule Provider:"
msgstr "規則提供者:"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:535
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:548
msgid "Rule Set"
msgstr "規則集"
@@ -784,7 +800,7 @@ msgstr "規則集"
msgid "Running"
msgstr "執行中"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:138
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:151
msgid "SOCKS Port"
msgstr "SOCKS 埠"
@@ -792,16 +808,36 @@ msgstr "SOCKS 埠"
msgid "Safe Paths"
msgstr "安全路徑"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:120
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:133
msgid "Save Proxy Selection"
msgstr "儲存節點/策略群組選擇"
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:29
+msgid "Scheduled Clear"
+msgstr "定時清除"
+
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:32
+msgid "Scheduled Clear Cron"
+msgstr "Cron 表達式"
+
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:37
+msgid "Scheduled Clear Size Limit"
+msgstr "日誌大小上限"
+
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:43
+msgid "Scheduled Clear Size Limit Unit"
+msgstr "日誌大小上限單位"
+
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:114
msgid "Scheduled Restart"
msgstr "定時重新啟動"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:54
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:87
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:117
+msgid "Scheduled Restart Cron"
+msgstr "Cron 表達式"
+
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:78
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:111
msgid "Scroll To Bottom"
msgstr "捲動到底部"
@@ -809,23 +845,23 @@ msgstr "捲動到底部"
msgid "Skip System IPv6 Check"
msgstr "跳過系統 IPv6 檢查"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:425
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:438
msgid "Sniff By Protocol"
msgstr "按協定嗅探"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:402
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:415
msgid "Sniff Pure IP"
msgstr "嗅探純 IP 連線"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:396
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:409
msgid "Sniff Redir-Host"
msgstr "嗅探 Redir-Host 流量"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:388
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:401
msgid "Sniffer Config"
msgstr "嗅探器設定"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:186
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:199
msgid "Stack"
msgstr "堆疊"
@@ -837,7 +873,7 @@ msgstr "堆疊大小硬限制"
msgid "Stack Size Soft Limit"
msgstr "堆疊大小軟限制"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:575
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:588
msgid "Standard Loader"
msgstr "標準載入器"
@@ -895,11 +931,11 @@ msgstr "TCP 模式"
msgid "TPROXY Mode"
msgstr "TPROXY 模式"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:150
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:163
msgid "TPROXY Port"
msgstr "TPROXY 埠"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:175
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:188
msgid "TUN Config"
msgstr "TUN 設定"
@@ -928,9 +964,9 @@ msgstr "總計"
msgid "Transparent Proxy with Mihomo on OpenWrt."
msgstr "在 OpenWrt 上使用 Mihomo 進行透明代理."
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:335
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:469
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:533
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:348
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:482
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:546
msgid "Type"
msgstr "類型"
@@ -978,45 +1014,49 @@ msgstr "無限制"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:105
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:114
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:118
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:122
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:130
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:136
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:140
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:144
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:148
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:152
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:179
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:184
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:188
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:195
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:199
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:205
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:220
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:226
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:232
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:236
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:242
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:248
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:252
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:256
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:267
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:274
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:121
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:124
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:127
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:131
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:135
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:143
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:149
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:153
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:157
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:161
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:165
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:192
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:197
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:201
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:208
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:212
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:218
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:233
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:239
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:245
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:249
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:255
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:261
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:265
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:269
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:280
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:286
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:292
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:298
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:365
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:392
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:398
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:404
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:568
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:574
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:579
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:582
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:585
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:588
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:287
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:293
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:299
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:305
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:311
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:378
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:405
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:411
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:417
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:581
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:587
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:592
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:595
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:598
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:601
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:605
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:611
msgid "Unmodified"
msgstr "不修改"
@@ -1032,7 +1072,7 @@ msgstr "更新時間"
msgid "Update Dashboard"
msgstr "更新儀表板"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:512
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:525
msgid "Update Interval"
msgstr "更新間隔"
@@ -1040,15 +1080,15 @@ msgstr "更新間隔"
msgid "Upload Profile"
msgstr "上傳設定檔"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:475
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:488
msgid "Url"
msgstr "下載網址"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:296
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:309
msgid "Use Hosts"
msgstr "使用 Hosts"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:290
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:303
msgid "Use System Hosts"
msgstr "使用系統的 Hosts"
@@ -1064,16 +1104,10 @@ msgstr "使用者"
msgid "User Agent"
msgstr "使用者代理(UA)"
-#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:168
+#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:181
msgid "Username"
msgstr "使用者名稱"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:128
msgid "procd Config"
msgstr "procd 設定"
-
-#~ msgid "Global Client Fingerprint"
-#~ msgstr "全局客戶端指紋"
-
-#~ msgid "Random"
-#~ msgstr "隨機"
diff --git a/luci-app-passwall/luasrc/controller/passwall.lua b/luci-app-passwall/luasrc/controller/passwall.lua
index 37af41b7..070a7ea2 100644
--- a/luci-app-passwall/luasrc/controller/passwall.lua
+++ b/luci-app-passwall/luasrc/controller/passwall.lua
@@ -28,6 +28,7 @@ function index()
entry({"admin", "services", appname, "show"}, call("show_menu")).leaf = true
entry({"admin", "services", appname, "hide"}, call("hide_menu")).leaf = true
entry({"admin", "services", appname, "ip"}, call('check_ip')).leaf = true
+ entry({"admin", "services", appname, "adblock_refresh"}, call('adblock_refresh')).leaf = true
local e
if uci:get(appname, "@global[0]", "hide_from_luci") ~= "1" then
e = entry({"admin", "services", appname}, alias("admin", "services", appname, "settings"), _("Pass Wall"), -1)
@@ -296,6 +297,26 @@ function clear_log()
luci.sys.call("echo '' > /tmp/log/passwall.log")
end
+function adblock_refresh()
+ local icount = 0
+
+ local status = luci.sys.call("/usr/share/passwall/adblock.sh >/dev/null 2>&1")
+ if status == 0 then
+ icount = tonumber(luci.sys.exec("wc -l < /usr/share/passwall/rules/block_host"))
+ if icount>0 then
+ retstring = tostring(math.ceil(icount))
+ else
+ retstring = "-1"
+ end
+ elseif status == 2 then
+ retstring = "0"
+ else
+ retstring = "-1"
+ end
+ luci.http.prepare_content("application/json")
+ luci.http.write_json({ret=retstring})
+end
+
function check_site(host, port)
local nixio = require "nixio"
local socket = nixio.socket("inet", "stream")
diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua
index 6ede8a4d..0ead2671 100644
--- a/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua
+++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua
@@ -547,6 +547,27 @@ function o.cfgvalue(self, section)
api.url("flush_set") .. "?redirect=1&reload=1", set_title)
end
+o = s:taboption("DNS", Flag, "adblock", translate("Enable adblock"))
+o.rmempty = false
+
+local UD="" rule_count="0"
+if nixio.fs.access("/usr/share/passwall/rules/block_host") then
+UD = os.date("%Y-%m-%d %H:%M", nixio.fs.stat("/usr/share/passwall/rules/block_host").ctime)
+rule_count = tonumber(luci.sys.exec("wc -l < /usr/share/passwall/rules/block_host"))
+end
+o = s:taboption("DNS", DummyValue, "refresh_data", translate("Subscribe Rules Data"))
+o.rawhtml = true
+o.template = appname .. "/global/adblock_refresh"
+o.value = rule_count.." "..translate("Records")
+o.description = string.format(translate("Domain / DNSMASQ rules auto-convert").."
"..translate("Last Update Checked")..": %s
",UD)
+o:depends("adblock",1)
+
+o = s:taboption("DNS", DynamicList, "ad_url", translate("Anti-AD Rules Subscribe"))
+o:value("https://cdn.jsdelivr.net/gh/privacy-protection-tools/anti-AD/anti-ad-domains.txt", translate("anti-AD"))
+o:value("https://cdn.jsdelivr.net/gh/neodevpro/neodevhost/domain", translate("NEO DEV HOST"))
+o.default = "https://cdn.jsdelivr.net/gh/privacy-protection-tools/anti-AD/anti-ad-domains.txt"
+o:depends("adblock",1)
+
s:tab("Proxy", translate("Mode"))
o = s:taboption("Proxy", Flag, "use_direct_list", translatef("Use %s", translate("Direct List")))
diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/rule_list.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/rule_list.lua
index 6ad3f058..ac2fcdba 100644
--- a/luci-app-passwall/luasrc/model/cbi/passwall/client/rule_list.lua
+++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/rule_list.lua
@@ -152,7 +152,7 @@ o.validate = function(self, value)
end
---- Block Hosts
-local block_host = path .. "block_host"
+local block_host = path .. "my_block_host"
o = s:taboption("block_list", TextValue, "block_host", "", "" .. translate("These had been joined websites will be block. Please input the domain names of websites, every line can input only one website domain. For example: twitter.com.") .. "")
o.rows = 15
o.wrap = "off"
diff --git a/luci-app-passwall/luasrc/view/passwall/global/adblock_refresh.htm b/luci-app-passwall/luasrc/view/passwall/global/adblock_refresh.htm
new file mode 100644
index 00000000..321334db
--- /dev/null
+++ b/luci-app-passwall/luasrc/view/passwall/global/adblock_refresh.htm
@@ -0,0 +1,34 @@
+<%+cbi/valueheader%>
+
+
+<%=self.value%>
+<%+cbi/valuefooter%>
diff --git a/luci-app-passwall/po/zh-cn/passwall.po b/luci-app-passwall/po/zh-cn/passwall.po
index 93a40372..754fbbe4 100644
--- a/luci-app-passwall/po/zh-cn/passwall.po
+++ b/luci-app-passwall/po/zh-cn/passwall.po
@@ -1,6 +1,42 @@
msgid "Pass Wall"
msgstr "PassWall"
+msgid "Enable adblock"
+msgstr "启用广告屏蔽"
+
+msgid "Records"
+msgstr "条记录"
+
+msgid "Refresh..."
+msgstr "正在更新,请稍候.."
+
+msgid "No new data!"
+msgstr "你已经是最新数据,无需更新!"
+
+msgid "Refresh Error!"
+msgstr "更新失败!"
+
+msgid "Refresh OK!"
+msgstr "更新成功!"
+
+msgid "Total Records:"
+msgstr "新的总规则数:"
+
+msgid "Refresh Data"
+msgstr "更新订阅规则"
+
+msgid "Last Update Checked"
+msgstr "上一次规则更新时间"
+
+msgid "Subscribe Rules Data"
+msgstr "去广告规则"
+
+msgid "AdGuardHome / Host / DNSMASQ / Domain rules auto-convert"
+msgstr "Domain / DNSMASQ 规则自动识别, 自动去重"
+
+msgid "Anti-AD Rules Subscribe"
+msgstr "广告过滤规则订阅 URL"
+
msgid "Auto"
msgstr "自动"
diff --git a/luci-app-passwall/root/usr/share/passwall/adblock.sh b/luci-app-passwall/root/usr/share/passwall/adblock.sh
index 35c21848..1cc97c90 100755
--- a/luci-app-passwall/root/usr/share/passwall/adblock.sh
+++ b/luci-app-passwall/root/usr/share/passwall/adblock.sh
@@ -5,6 +5,9 @@ LOCK_FILE="/var/lock/ad_download.lock"
TMP_DIR="/tmp/ad_download"
RULES_PATH="/usr/share/passwall/rules"
+# ========== 白名单:合并后需要排除的域名 ==========
+WHITELIST="ip-api.com"
+
# ========== 加锁,防止重复运行 ==========
exec 200>"$LOCK_FILE"
if ! flock -n 200; then
@@ -94,32 +97,42 @@ INDEX=0
for url in $AD_URLS; do
[ -z "$url" ] && continue
INDEX=$((INDEX + 1))
- process_url "$INDEX" "$url" &
+ process_url "$INDEX" "$url"
done
-# 等待所有后台任务完成
-wait
-
-# ========== 合并、去重、去空行 ==========
+# ========== 合并、去重、去空行、排除白名单 ==========
+[ -f $RULES_PATH/my_block_host ] || touch $RULES_PATH/my_block_host
if ls "$TMP_DIR"/parsed_*.txt >/dev/null 2>&1; then
- awk '!seen[$0]++ && NF' "$TMP_DIR"/parsed_*.txt > $RULES_PATH/ads_host
- COUNT=$(wc -l < "$RULES_PATH/ads_host")
- echo "========================================"
- echo "[DONE] 合并完成: $RULES_PATH/ads_host"
- echo "[DONE] 总域名数: $COUNT"
- echo "========================================"
+ NEW_FILE="$TMP_DIR/ad_domains_new.txt"
+ awk -v wl="$WHITELIST" '
+ BEGIN {
+ n = split(wl, a, " ")
+ for (i = 1; i <= n; i++) white[a[i]] = 1
+ }
+ NF && !seen[$0]++ && !($0 in white)
+ ' "$TMP_DIR"/parsed_*.txt $RULES_PATH/my_block_host > "$NEW_FILE"
+
+ # ========== 比较新旧文件 hash ==========
+ if [ -f "$RULES_PATH/block_host" ]; then
+ OLD_HASH=$(md5sum "$RULES_PATH/block_host" | awk '{print $1}')
+ else
+ OLD_HASH=""
+ fi
+ NEW_HASH=$(md5sum "$NEW_FILE" | awk '{print $1}')
+
+ if [ "$OLD_HASH" = "$NEW_HASH" ]; then
+ rm -f "$NEW_FILE"
+ else
+ [ -s $NEW_FILE ] && {
+ rm -f $RULES_PATH/block_host
+ mv -f "$NEW_FILE" "$RULES_PATH/block_host"
+ /etc/init.d/passwall reload > /dev/null 2>&1 &
+ }
+ fi
else
echo "[ERROR] 没有成功解析任何文件"
exit 1
fi
-[ -s $RULES_PATH/ads_host ] && {
-[ -s $RULES_PATH/my_block_host ] && {
-rm -f $RULES_PATH/block_host
-awk '!/^[[:space:]]*(#|$)/ && !seen[$0]++' $RULES_PATH/ads_host $RULES_PATH/my_block_host > $RULES_PATH/block_host
-} || ln -sf $RULES_PATH/ads_host $RULES_PATH/block_host
-}
+[ "$OLD_HASH" != "$NEW_HASH" ] && exit 0 || exit 2
-/etc/init.d/passwall reload > /dev/null 2>&1 &
-
-exit 0
diff --git a/luci-app-passwall/root/usr/share/passwall/app.sh b/luci-app-passwall/root/usr/share/passwall/app.sh
index 2283c386..7a5290c4 100755
--- a/luci-app-passwall/root/usr/share/passwall/app.sh
+++ b/luci-app-passwall/root/usr/share/passwall/app.sh
@@ -1085,8 +1085,8 @@ socks_node_switch() {
done
for filename in $(ls ${TMP_SCRIPT_FUNC_PATH}); do
- cmd=$(cat ${TMP_SCRIPT_FUNC_PATH}/${filename})
- [ -n "$(echo $cmd | grep "${flag}")" ] && rm -f ${TMP_SCRIPT_FUNC_PATH}/${filename}
+ grep -q "${flag}" "${TMP_SCRIPT_FUNC_PATH}/${filename}" && \
+ rm -f "${TMP_SCRIPT_FUNC_PATH}/${filename}" "${TMP_PATH}/script_rstats/${filename}.count"
done
local bind_local=$(config_n_get $flag bind_local 0)
local bind="0.0.0.0"
@@ -1539,6 +1539,14 @@ start_dns() {
fi
}
+start_adblock() {
+ [ "$(config_t_get global adblock 0)" != "1" ] && {
+ [ -s $RULES_PATH/my_block_host ] && ln -sf $RULES_PATH/my_block_host $RULES_PATH/block_host
+ return
+ }
+ "$APP_PATH/adblock.sh" > /dev/null 2>&1 &
+}
+
start_haproxy() {
[ "$(config_t_get global_haproxy balancing_enable 0)" != "1" ] && return
haproxy_path=$TMP_PATH/haproxy
@@ -1853,6 +1861,7 @@ start() {
export ENABLE_DEPRECATED_GEOIP=true
export SS_SYSTEM_DNS_RESOLVER_FORCE_BUILTIN=1
ulimit -n 65535
+ start_adblock
start_haproxy
start_socks
nftflag=0
diff --git a/luci-app-passwall/root/usr/share/passwall/socks_auto_switch.sh b/luci-app-passwall/root/usr/share/passwall/socks_auto_switch.sh
index 7ff7cf94..9673486b 100755
--- a/luci-app-passwall/root/usr/share/passwall/socks_auto_switch.sh
+++ b/luci-app-passwall/root/usr/share/passwall/socks_auto_switch.sh
@@ -49,7 +49,7 @@ test_node() {
local _type=$(echo $(config_n_get ${node_id} type) | tr 'A-Z' 'a-z')
[ -n "${_type}" ] && {
local _tmp_port=$(get_new_port 48800 tcp,udp)
- $APP_FILE run_socks flag="test_node_${node_id}" node=${node_id} bind=127.0.0.1 socks_port=${_tmp_port} config_file=test_node_${node_id}.json
+ NO_REC_PROCESS=1 $APP_FILE run_socks flag="test_node_${node_id}" node=${node_id} bind=127.0.0.1 socks_port=${_tmp_port} config_file=test_node_${node_id}.json
local curlx="socks5h://127.0.0.1:${_tmp_port}"
sleep 1s
local _proxy_status=$(test_url "${probe_url}" ${retry_num} ${connect_timeout} "-x $curlx")
diff --git a/luci-app-passwall/root/usr/share/passwall/test.sh b/luci-app-passwall/root/usr/share/passwall/test.sh
index 525ec70f..42df2d07 100755
--- a/luci-app-passwall/root/usr/share/passwall/test.sh
+++ b/luci-app-passwall/root/usr/share/passwall/test.sh
@@ -57,7 +57,7 @@ url_test_node() {
}
else
local _tmp_port=$(get_new_port 48900 tcp,udp)
- /usr/share/${CONFIG}/app.sh run_socks flag="url_test_${node_id}" node=${node_id} bind=127.0.0.1 socks_port=${_tmp_port} config_file=url_test_${node_id}.json
+ NO_REC_PROCESS=1 /usr/share/${CONFIG}/app.sh run_socks flag="url_test_${node_id}" node=${node_id} bind=127.0.0.1 socks_port=${_tmp_port} config_file=url_test_${node_id}.json
local curlx="socks5h://127.0.0.1:${_tmp_port}"
fi
sleep 1s
diff --git a/luci-app-passwall/root/usr/share/passwall/utils.sh b/luci-app-passwall/root/usr/share/passwall/utils.sh
index 7ed57021..749c9db8 100755
--- a/luci-app-passwall/root/usr/share/passwall/utils.sh
+++ b/luci-app-passwall/root/usr/share/passwall/utils.sh
@@ -455,6 +455,7 @@ ln_run() {
${file_func:-echolog " - ${ln_name}"} "$@" 2>&1 | logger -t PASSWALL_${protocol}_${ln_name} &
fi
fi
+ [ -n "$NO_REC_PROCESS" ] && return
process_count=$(ls $TMP_SCRIPT_FUNC_PATH | wc -l)
process_count=$((process_count + 1))
echo "${file_func:-echolog " - ${ln_name}"} $@ >${output}" > $TMP_SCRIPT_FUNC_PATH/$process_count
diff --git a/nikki/Makefile b/nikki/Makefile
index f2898f07..26cf2223 100644
--- a/nikki/Makefile
+++ b/nikki/Makefile
@@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=nikki
PKG_VERSION:=2026.04.08
-PKG_RELEASE:=10
+PKG_RELEASE:=11
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
diff --git a/nikki/files/nikki.conf b/nikki/files/nikki.conf
index ea5afa68..d5ffee5b 100644
--- a/nikki/files/nikki.conf
+++ b/nikki/files/nikki.conf
@@ -6,7 +6,7 @@ config config 'config'
option 'profile' 'subscription:subscription'
option 'start_delay' '0'
option 'scheduled_restart' '0'
- option 'cron_expression' '0 3 * * *'
+ option 'scheduled_restart_cron' '0 3 * * *'
option 'test_profile' '1'
option 'core_only' '0'
@@ -234,3 +234,7 @@ config routing 'routing'
config editor 'editor'
config log 'log'
+ option 'scheduled_clear' '1'
+ option 'scheduled_clear_cron' '*/5 * * * *'
+ option 'scheduled_clear_size_limit' '1'
+ option 'scheduled_clear_size_limit_unit' 'MB'
diff --git a/nikki/files/nikki.init b/nikki/files/nikki.init
index 5bc88777..41a3308c 100644
--- a/nikki/files/nikki.init
+++ b/nikki/files/nikki.init
@@ -9,6 +9,7 @@ PROG="/usr/bin/mihomo"
. "$IPKG_INSTROOT/etc/nikki/scripts/include.sh"
extra_command 'update_subscription' 'Update subscription by section id'
+extra_command 'clear_logs' 'Clear logs if size exceeds the limit'
boot_func() {
# prepare files
@@ -55,9 +56,9 @@ start_service() {
fi
# get config
## app config
- local scheduled_restart cron_expression profile test_profile core_only
+ local scheduled_restart scheduled_restart_cron profile test_profile core_only
config_get_bool scheduled_restart "config" "scheduled_restart" 0
- config_get cron_expression "config" "cron_expression"
+ config_get scheduled_restart_cron "config" "scheduled_restart_cron"
config_get profile "config" "profile"
config_get_bool test_profile "config" "test_profile" 0
config_get_bool core_only "config" "core_only" 0
@@ -109,6 +110,10 @@ start_service() {
config_get_bool ipv6_dns_hijack "proxy" "ipv6_dns_hijack" 0
config_get tcp_mode "proxy" "tcp_mode"
config_get udp_mode "proxy" "udp_mode"
+ ## log config
+ local log_scheduled_clear log_scheduled_clear_cron
+ config_get_bool log_scheduled_clear "log" "scheduled_clear" 0
+ config_get log_scheduled_clear_cron "log" "scheduled_clear_cron"
# get profile
local profile_type; profile_type=$(echo "$profile" | cut -d ':' -f 1)
local profile_id; profile_id=$(echo "$profile" | cut -d ':' -f 2)
@@ -259,9 +264,18 @@ start_service() {
procd_close_instance
# cron
- if [ "$scheduled_restart" = 1 ] && [ -n "$cron_expression" ]; then
+ local reload_cron; reload_cron=0
+ if [ "$scheduled_restart" = 1 ] && [ -n "$scheduled_restart_cron" ]; then
log "App" "Set scheduled restart."
- echo "$cron_expression /etc/init.d/nikki restart #nikki" >> "/etc/crontabs/root"
+ echo "$scheduled_restart_cron /etc/init.d/nikki restart #nikki scheduled restart" >> "/etc/crontabs/root"
+ reload_cron=1
+ fi
+ if [ "$log_scheduled_clear" = 1 ] && [ -n "$log_scheduled_clear_cron" ]; then
+ log "App" "Set log scheduled clear."
+ echo "$log_scheduled_clear_cron /etc/init.d/nikki clear_logs #nikki log scheduled clear" >> "/etc/crontabs/root"
+ reload_cron=1
+ fi
+ if [ "$reload_cron" = 1 ]; then
/etc/init.d/cron restart
fi
# set started flag
@@ -422,8 +436,6 @@ service_triggers() {
}
cleanup() {
- # clear log
- clear_log
# load config
config_load nikki
# get config
@@ -470,6 +482,41 @@ cleanup() {
/etc/init.d/cron restart
}
+clear_logs() {
+ # load config
+ config_load nikki
+ # get config
+ ## log config
+ local log_scheduled_clear_size_limit log_scheduled_clear_size_limit_unit
+ config_get log_scheduled_clear_size_limit "log" "scheduled_clear_size_limit" 1
+ config_get log_scheduled_clear_size_limit_unit "log" "scheduled_clear_size_limit_unit" "MB"
+ # prepare config
+ local log_scheduled_clear_size_limit_in_bytes; log_scheduled_clear_size_limit_in_bytes=0
+ case "$log_scheduled_clear_size_limit_unit" in
+ B)
+ log_scheduled_clear_size_limit_in_bytes=$((log_scheduled_clear_size_limit))
+ ;;
+ KB)
+ log_scheduled_clear_size_limit_in_bytes=$((log_scheduled_clear_size_limit * 1024))
+ ;;
+ MB)
+ log_scheduled_clear_size_limit_in_bytes=$((log_scheduled_clear_size_limit * 1024 * 1024))
+ ;;
+ GB)
+ log_scheduled_clear_size_limit_in_bytes=$((log_scheduled_clear_size_limit * 1024 * 1024 * 1024))
+ ;;
+ esac
+ # clear logs
+ if [ -f "$APP_LOG_PATH" ] && [ "$(wc -c < "$APP_LOG_PATH")" -ge "$log_scheduled_clear_size_limit_in_bytes" ]; then
+ echo -n > "$APP_LOG_PATH"
+ log "Log" "App log is cleared due to scheduled clear and exceeding size limits."
+ fi
+ if [ -f "$CORE_LOG_PATH" ] && [ "$(wc -c < "$CORE_LOG_PATH")" -ge "$log_scheduled_clear_size_limit_in_bytes" ]; then
+ echo -n > "$CORE_LOG_PATH"
+ log "Log" "Core log is cleared due to scheduled clear and exceeding size limits."
+ fi
+}
+
update_subscription() {
local subscription_section; subscription_section="$1"
if [ -z "$subscription_section" ]; then
diff --git a/nikki/files/scripts/include.sh b/nikki/files/scripts/include.sh
index bff99a37..4321b0e1 100644
--- a/nikki/files/scripts/include.sh
+++ b/nikki/files/scripts/include.sh
@@ -80,11 +80,6 @@ prepare_files() {
fi
}
-clear_log() {
- echo -n > "$APP_LOG_PATH"
- echo -n > "$CORE_LOG_PATH"
-}
-
log() {
echo "[$(date "+%Y-%m-%d %H:%M:%S")] [$1] $2" >> "$APP_LOG_PATH"
}
diff --git a/nikki/files/uci-defaults/migrate.sh b/nikki/files/uci-defaults/migrate.sh
index 6e21baf5..2016dbaf 100644
--- a/nikki/files/uci-defaults/migrate.sh
+++ b/nikki/files/uci-defaults/migrate.sh
@@ -110,7 +110,7 @@ proxy_transparent_proxy=$(uci -q get nikki.proxy.transparent_proxy); [ -n "$prox
# since v1.23.0
-routing=$(uci -q get nikki.routing); [ -z "$routing" ] && {
+section_routing=$(uci -q get nikki.routing); [ -z "$section_routing" ] && {
uci set nikki.routing=routing
uci set nikki.routing.tproxy_fw_mark=0x80
uci set nikki.routing.tun_fw_mark=0x81
@@ -191,7 +191,7 @@ proxy_bypass_china_mainland_ip6=$(uci -q get nikki.proxy.bypass_china_mainland_i
routing_tproxy_fw_mask=$(uci -q get nikki.routing.tproxy_fw_mask); [ -z "$routing_tproxy_fw_mask" ] && uci set nikki.routing.tproxy_fw_mask=0xFF
routing_tun_fw_mask=$(uci -q get nikki.routing.tun_fw_mask); [ -z "$routing_tun_fw_mask" ] && uci set nikki.routing.tun_fw_mask=0xFF
-procd=$(uci -q get nikki.procd); [ -z "$procd" ] && {
+section_procd=$(uci -q get nikki.procd); [ -z "$section_procd" ] && {
uci set nikki.procd=procd
uci set nikki.procd.fast_reload=$(uci -q get nikki.config.fast_reload)
uci set nikki.procd.env_safe_paths=$(uci -q get nikki.env.safe_paths)
@@ -205,17 +205,26 @@ procd=$(uci -q get nikki.procd); [ -z "$procd" ] && {
# since v1.25.1
-dummy_device=$(uci -q get nikki.routing.dummy_device); [ -z "$dummy_device" ] && uci set nikki.routing.dummy_device=nikki-dummy
+routing_dummy_device=$(uci -q get nikki.routing.dummy_device); [ -z "$routing_dummy_device" ] && uci set nikki.routing.dummy_device=nikki-dummy
# since v1.25.2
-core=$(uci -q get nikki.core); [ -z "$core" ] && {
+section_core=$(uci -q get nikki.core); [ -z "$section_core" ] && {
uci set nikki.core=core
uci set nikki.core.redirect_listener_name=redir-in
uci set nikki.core.tproxy_listener_name=tproxy-in
uci set nikki.core.tun_listener_name=tun-in
}
+# since v1.25.3
+
+config_scheduled_restart_cron=$(uci -q get nikki.config.scheduled_restart_cron); [ -z "$config_scheduled_restart_cron" ] && uci rename nikki.config.cron_expression="scheduled_restart_cron"
+
+log_scheduled_clear=$(uci -q get nikki.log.scheduled_clear); [ -z "$log_scheduled_clear" ] && uci set nikki.log.scheduled_clear=1
+log_scheduled_clear_cron=$(uci -q get nikki.log.scheduled_clear_cron); [ -z "$log_scheduled_clear_cron" ] && uci set nikki.log.scheduled_clear_cron="*/5 * * * *"
+log_scheduled_clear_size_limit=$(uci -q get nikki.log.scheduled_clear_size_limit); [ -z "$log_scheduled_clear_size_limit" ] && uci set nikki.log.scheduled_clear_size_limit=1
+log_scheduled_clear_size_limit_unit=$(uci -q get nikki.log.scheduled_clear_size_limit_unit); [ -z "$log_scheduled_clear_size_limit_unit" ] && uci set nikki.log.scheduled_clear_size_limit_unit=MB
+
# commit
uci commit nikki
diff --git a/openlist2/Makefile b/openlist2/Makefile
index c2e8cb54..baa9e448 100644
--- a/openlist2/Makefile
+++ b/openlist2/Makefile
@@ -7,9 +7,9 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=openlist2
-PKG_VERSION:=4.1.10
+PKG_VERSION:=4.2.0
PKG_WEB_VERSION:=4.1.10
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=openlist-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/OpenListTeam/OpenList/tar.gz/v$(PKG_VERSION)?