luci-app-nikki: sync upstream

last commit: ccf106d8fb
This commit is contained in:
gitea-action 2025-02-20 20:00:31 +08:00
parent 52c0104c0d
commit d74fbc6b4d
7 changed files with 439 additions and 63 deletions

View File

@ -1,6 +1,6 @@
include $(TOPDIR)/rules.mk
PKG_VERSION:=1.17.5
PKG_VERSION:=1.18.0
LUCI_TITLE:=LuCI Support for nikki
LUCI_DEPENDS:=+luci-base +nikki

View File

@ -10,6 +10,9 @@ const subscriptionsDir = `${homeDir}/subscriptions`;
const mixinFilePath = `${homeDir}/mixin.yaml`;
const runDir = `${homeDir}/run`;
const runProfilePath = `${runDir}/config.yaml`;
const providersDir = `${runDir}/providers`;
const ruleProvidersDir = `${providersDir}/rule`;
const proxyProvidersDir = `${providersDir}/proxy`;
const logDir = `/var/log/nikki`;
const appLogPath = `${logDir}/app.log`;
const coreLogPath = `${logDir}/core.log`;
@ -21,6 +24,8 @@ return baseclass.extend({
homeDir: homeDir,
profilesDir: profilesDir,
subscriptionsDir: subscriptionsDir,
ruleProvidersDir: ruleProvidersDir,
proxyProvidersDir: proxyProvidersDir,
mixinFilePath: mixinFilePath,
runDir: runDir,
appLogPath: appLogPath,
@ -56,6 +61,14 @@ return baseclass.extend({
return L.resolveDefault(fs.list(this.profilesDir), []);
},
listRuleProviders: function () {
return L.resolveDefault(fs.list(this.ruleProvidersDir), []);
},
listProxyProviders: function () {
return L.resolveDefault(fs.list(this.proxyProvidersDir), []);
},
updateSubscription: function (section_id) {
return fs.exec_direct('/usr/libexec/nikki-call', ['subscription', 'update', section_id]);
},

View File

@ -9,12 +9,16 @@ return view.extend({
load: function () {
return Promise.all([
uci.load('nikki'),
nikki.listProfiles()
nikki.listProfiles(),
nikki.listRuleProviders(),
nikki.listProxyProviders(),
]);
},
render: function (data) {
const subscriptions = uci.sections('nikki', 'subscription');
const profiles = data[1];
const ruleProviders = data[2];
const proxyProviders = data[3];
let m, s, o;
@ -33,6 +37,14 @@ return view.extend({
o.value(nikki.subscriptionsDir + '/' + subscription['.name'] + '.yaml', _('Subscription:') + subscription.name);
};
for (const ruleProvider of ruleProviders) {
o.value(nikki.ruleProvidersDir + '/' + ruleProvider.name, _('Rule Provider:') + ruleProvider.name);
};
for (const proxyProvider of proxyProviders) {
o.value(nikki.proxyProvidersDir + '/' + proxyProvider.name, _('Proxy Provider:') + proxyProvider.name);
};
o.value(nikki.mixinFilePath, _('File for Mixin'));
o.value(nikki.runProfilePath, _('Profile for Startup'));
o.value(nikki.reservedIPNFT, _('File for Reserved IP'));

View File

@ -311,9 +311,11 @@ return view.extend({
o.rmempty = false;
o = s.taboption('sniffer', form.SectionValue, '_sniffer_sniffs', form.TableSection, 'sniff', _('Sniff By Protocol'));
o.retain = true;
o.depends('sniffer_sniff', '1');
o.subsection.anonymous = true;
o.subsection.addremove = false;
o.depends('sniffer_sniff', '1');
so = o.subsection.option(form.Flag, 'enabled', _('Enable'));
so.rmempty = false;
@ -330,6 +332,122 @@ return view.extend({
so = o.subsection.option(form.Flag, 'overwrite_destination', _('Overwrite Destination'));
so.rmempty = false;
s.tab('rule', _('Rule Config'));
o = s.taboption('rule', form.Flag, 'rule_provider', '*' + ' ' + _('Append Rule Provider'));
o.rmempty = false;
o = s.taboption('rule', form.SectionValue, '_rule_providers', form.GridSection, 'rule_provider', _('Edit Rule Providers'));
o.retain = true;
o.depends('rule_provider', '1');
o.subsection.anonymous = true;
o.subsection.addremove = true;
o.subsection.sortable = true;
so = o.subsection.option(form.Flag, 'enabled', _('Enable'));
so.default = 1;
so.editable = true;
so.modalonly = false;
so.rmempty = false;
so = o.subsection.option(form.Value, 'name', _('Name'));
so.rmempty = false;
so = o.subsection.option(form.ListValue, 'type', _('Type'));
so.default = 'http';
so.rmempty = false;
so.value('http');
so.value('file');
so = o.subsection.option(form.Value, 'url', _('Url'));
so.modalonly = true;
so.rmempty = false;
so.depends('type', 'http');
so = o.subsection.option(form.Value, 'node', _('Node'));
so.default = 'DIRECT';
so.modalonly = true;
so.depends('type', 'http');
so.value('GLOBAL');
so.value('DIRECT');
so = o.subsection.option(form.Value, 'file_size_limit', _('File Size Limit'));
so.datatype = 'uinteger';
so.default = 0;
so.modalonly = true;
so.depends('type', 'http');
so = o.subsection.option(form.FileUpload, 'file_path', _('File Path'));
so.modalonly = true;
so.rmempty = false;
so.root_directory = nikki.ruleProvidersDir;
so.depends('type', 'file');
so = o.subsection.option(form.ListValue, 'file_format', _('File Format'));
so.default = 'yaml';
so.value('mrs');
so.value('yaml');
so.value('text');
so = o.subsection.option(form.ListValue, 'behavior', _('Behavior'));
so.default = 'classical';
so.rmempty = false;
so.value('classical');
so.value('domain');
so.value('ipcidr');
so = o.subsection.option(form.Value, 'update_interval', _('Update Interval'));
so.datatype = 'uinteger';
so.default = 0;
so.modalonly = true;
so.depends('type', 'http');
o = s.taboption('rule', form.Flag, 'rule', '*' + ' ' + _('Append Rule'));
o.rmempty = false;
o = s.taboption('rule', form.SectionValue, '_rules', form.TableSection, 'rule', _('Edit Rules'));
o.retain = true;
o.depends('rule', '1');
o.subsection.anonymous = true;
o.subsection.addremove = true;
o.subsection.sortable = true;
so = o.subsection.option(form.Flag, 'enabled', _('Enable'));
so.default = 1;
so.rmempty = false;
so = o.subsection.option(form.Value, 'type', _('Type'));
so.optional = true;
so.rmempty = true;
so.value('RULE-SET', _('Rule Set'));
so.value('DOMAIN', _('Domain Name'));
so.value('DOMAIN-SUFFIX', _('Domain Name Suffix'));
so.value('DOMAIN-KEYWORD', _('Domain Name Keyword'));
so.value('DOMAIN-REGEX', _('Domain Name Regex'));
so.value('IP-CIDR', _('Destination IP'));
so.value('DST-PORT', _('Destination Port'));
so.value('PROCESS-NAME', _('Process Name'));
so.value('GEOSITE', _('Domain Name Geo'));
so.value('GEOIP', _('Destination IP Geo'));
so = o.subsection.option(form.Value, 'match', _('Matcher'));
so.rmempty = false;
so = o.subsection.option(form.Value, 'node', _('Node'));
so.default = 'GLOBAL';
so.value('GLOBAL');
so.value('DIRECT');
so.value('REJECT');
so.value('REJECT-DROP');
so = o.subsection.option(form.Flag, 'no_resolve', _('No Resolve'));
so.rmempty = false;
so.depends('type', 'IP-CIDR');
so.depends('type', 'IP-CIDR6');
so.depends('type', 'GEOIP');
s.tab('geox', _('GeoX Config'));
o = s.taboption('geox', form.ListValue, 'geoip_format', _('GeoIP Format'));

View File

@ -44,10 +44,22 @@ msgstr ""
msgid "App Version"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:406
msgid "Append Rule"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:337
msgid "Append Rule Provider"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:43
msgid "Auto"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:393
msgid "Behavior"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:199
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:66
msgid "Block Mode"
@ -73,7 +85,7 @@ msgstr ""
msgid "Bypass User"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:25
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:29
msgid "Choose File"
msgstr ""
@ -123,6 +135,18 @@ msgstr ""
msgid "DNS Port"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:429
msgid "Destination IP"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:433
msgid "Destination IP Geo"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:430
msgid "Destination Port"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:134
msgid "Destination TCP Port to Proxy"
msgstr ""
@ -164,9 +188,26 @@ msgid "DoH Prefer HTTP/3"
msgstr ""
#: 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:425
msgid "Domain Name"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:432
msgid "Domain Name Geo"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:427
msgid "Domain Name Keyword"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:428
msgid "Domain Name Regex"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:426
msgid "Domain Name Suffix"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:117
msgid "Edit Authentications"
msgstr ""
@ -191,11 +232,19 @@ msgstr ""
msgid "Edit Nameservers"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:340
msgid "Edit Rule Providers"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:409
msgid "Edit Rules"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/profile.js:32
msgid "Edit Subscription"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:23
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:27
#: applications/luci-app-nikki/root/usr/share/luci/menu.d/luci-app-nikki.json:45
msgid "Editor"
msgstr ""
@ -208,8 +257,10 @@ msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:253
#: 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:286
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:318
#: 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:320
#: 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:417
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:484
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:31
msgid "Enable"
msgstr ""
@ -242,20 +293,32 @@ msgstr ""
msgid "Fast Reload"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:36
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:387
msgid "File Format"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:381
msgid "File Path"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:375
msgid "File Size Limit"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:48
msgid "File for Mixin"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:38
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:50
msgid "File for Reserved IP"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:39
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:51
msgid "File for Reserved IP6"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:103
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:29
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:33
msgid "File:"
msgstr ""
@ -275,39 +338,39 @@ msgstr ""
msgid "General Config"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:339
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:457
msgid "GeoData Loader"
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:453
msgid "GeoIP Format"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:352
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:470
msgid "GeoIP(ASN) Url"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:349
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:467
msgid "GeoIP(DAT) Url"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:346
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:464
msgid "GeoIP(MMDB) Url"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:343
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:461
msgid "GeoSite Url"
msgstr ""
#: 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:473
msgid "GeoX Auto Update"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:333
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:451
msgid "GeoX Config"
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:476
msgid "GeoX Update Interval"
msgstr ""
@ -390,10 +453,11 @@ msgid "Match Process"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:279
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:435
msgid "Matcher"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:341
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:459
msgid "Memory Conservative Loader"
msgstr ""
@ -406,7 +470,7 @@ msgstr ""
msgid "Mixin Config"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:364
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:482
msgid "Mixin File Content"
msgstr ""
@ -419,6 +483,10 @@ msgstr ""
msgid "Mode"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:354
msgid "Name"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:263
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:282
msgid "Nameserver"
@ -429,6 +497,15 @@ msgstr ""
msgid "Nikki"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:445
msgid "No Resolve"
msgstr ""
#: 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:438
msgid "Node"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:15
msgid "Not Running"
msgstr ""
@ -450,7 +527,7 @@ msgid "Overwrite DNS Hijack"
msgstr ""
#: 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:330
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:332
msgid "Overwrite Destination"
msgstr ""
@ -486,11 +563,11 @@ msgstr ""
msgid "Password"
msgstr ""
#: 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:484
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:327
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:329
msgid "Port"
msgstr ""
@ -498,16 +575,20 @@ msgstr ""
msgid "Prefer"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:431
msgid "Process Name"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/profile.js:18
#: applications/luci-app-nikki/root/usr/share/luci/menu.d/luci-app-nikki.json:21
msgid "Profile"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:37
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:49
msgid "Profile for Startup"
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:323
msgid "Protocol"
msgstr ""
@ -516,6 +597,10 @@ msgstr ""
msgid "Proxy Config"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:45
msgid "Proxy Provider:"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:35
msgid "Redirect Mode"
msgstr ""
@ -544,10 +629,22 @@ msgstr ""
msgid "Router Proxy"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:335
msgid "Rule Config"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:39
msgid "Rule Mode"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:41
msgid "Rule Provider:"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:424
msgid "Rule Set"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:15
msgid "Running"
msgstr ""
@ -569,8 +666,8 @@ msgstr ""
msgid "Scroll To Bottom"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/tools/nikki.js:100
#: applications/luci-app-nikki/htdocs/luci-static/resources/tools/nikki.js:118
#: applications/luci-app-nikki/htdocs/luci-static/resources/tools/nikki.js:113
#: applications/luci-app-nikki/htdocs/luci-static/resources/tools/nikki.js:131
msgid "Service is not running."
msgstr ""
@ -594,7 +691,7 @@ msgstr ""
msgid "Stack"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:340
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:458
msgid "Standard Loader"
msgstr ""
@ -619,7 +716,7 @@ msgid "Subscription Url"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:107
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:33
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:37
msgid "Subscription:"
msgstr ""
@ -674,6 +771,8 @@ msgid "Transparent Proxy with Mihomo on OpenWrt."
msgstr ""
#: 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:357
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:421
msgid "Type"
msgstr ""
@ -693,8 +792,8 @@ msgstr ""
msgid "Unify Delay"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/tools/nikki.js:80
#: applications/luci-app-nikki/htdocs/luci-static/resources/tools/nikki.js:84
#: applications/luci-app-nikki/htdocs/luci-static/resources/tools/nikki.js:93
#: applications/luci-app-nikki/htdocs/luci-static/resources/tools/nikki.js:97
msgid "Unknown"
msgstr ""
@ -710,10 +809,18 @@ msgstr ""
msgid "Update Dashboard"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:400
msgid "Update Interval"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/profile.js:20
msgid "Upload Profile"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:363
msgid "Url"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:220
msgid "Use Hosts"
msgstr ""

View File

@ -51,10 +51,22 @@ msgstr "插件日志"
msgid "App Version"
msgstr "插件版本"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:406
msgid "Append Rule"
msgstr "追加规则"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:337
msgid "Append Rule Provider"
msgstr "追加规则提供者"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:43
msgid "Auto"
msgstr "自动"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:393
msgid "Behavior"
msgstr "行为"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:199
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:66
msgid "Block Mode"
@ -80,7 +92,7 @@ msgstr "绕过用户组"
msgid "Bypass User"
msgstr "绕过用户"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:25
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:29
msgid "Choose File"
msgstr "选择文件"
@ -130,6 +142,18 @@ msgstr "DNS 模式"
msgid "DNS Port"
msgstr "DNS 端口"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:429
msgid "Destination IP"
msgstr "目标 IP"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:433
msgid "Destination IP Geo"
msgstr "目标 IPGeo"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:430
msgid "Destination Port"
msgstr "目标端口"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:134
msgid "Destination TCP Port to Proxy"
msgstr "要代理的 TCP 目标端口"
@ -171,9 +195,26 @@ msgid "DoH Prefer HTTP/3"
msgstr "DoH 优先 HTTP/3"
#: 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:425
msgid "Domain Name"
msgstr "域名"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:432
msgid "Domain Name Geo"
msgstr "域名Geo"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:427
msgid "Domain Name Keyword"
msgstr "域名(关键字)"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:428
msgid "Domain Name Regex"
msgstr "域名(正则表达式)"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:426
msgid "Domain Name Suffix"
msgstr "域名(后缀)"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:117
msgid "Edit Authentications"
msgstr "编辑身份验证"
@ -198,11 +239,19 @@ msgstr "编辑 DNS 服务器查询策略"
msgid "Edit Nameservers"
msgstr "编辑 DNS 服务器"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:340
msgid "Edit Rule Providers"
msgstr "编辑规则提供者"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:409
msgid "Edit Rules"
msgstr "编辑规则"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/profile.js:32
msgid "Edit Subscription"
msgstr "编辑订阅"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:23
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:27
#: applications/luci-app-nikki/root/usr/share/luci/menu.d/luci-app-nikki.json:45
msgid "Editor"
msgstr "编辑器"
@ -215,8 +264,10 @@ msgstr "编辑器"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:253
#: 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:286
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:318
#: 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:320
#: 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:417
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:484
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:31
msgid "Enable"
msgstr "启用"
@ -249,20 +300,32 @@ msgstr "Fake-IP 范围"
msgid "Fast Reload"
msgstr "快速重载"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:36
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:387
msgid "File Format"
msgstr "文件格式"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:381
msgid "File Path"
msgstr "文件路径"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:375
msgid "File Size Limit"
msgstr "文件大小限制"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:48
msgid "File for Mixin"
msgstr "用于混入的文件"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:38
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:50
msgid "File for Reserved IP"
msgstr "IPv4 保留地址"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:39
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:51
msgid "File for Reserved IP6"
msgstr "IPv6 保留地址"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:103
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:29
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:33
msgid "File:"
msgstr "文件:"
@ -282,39 +345,39 @@ msgstr "分段最大长度"
msgid "General Config"
msgstr "全局配置"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:339
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:457
msgid "GeoData Loader"
msgstr "GeoData 加载器"
#: 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:453
msgid "GeoIP Format"
msgstr "GeoIP 格式"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:352
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:470
msgid "GeoIP(ASN) Url"
msgstr "GeoIP(ASN) 下载地址"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:349
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:467
msgid "GeoIP(DAT) Url"
msgstr "GeoIP(DAT) 下载地址"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:346
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:464
msgid "GeoIP(MMDB) Url"
msgstr "GeoIP(MMDB) 下载地址"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:343
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:461
msgid "GeoSite Url"
msgstr "GeoSite 下载地址"
#: 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:473
msgid "GeoX Auto Update"
msgstr "定时更新GeoX文件"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:333
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:451
msgid "GeoX Config"
msgstr "GeoX 配置"
#: 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:476
msgid "GeoX Update Interval"
msgstr "GeoX 文件更新间隔"
@ -397,10 +460,11 @@ msgid "Match Process"
msgstr "匹配进程"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:279
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:435
msgid "Matcher"
msgstr "匹配"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:341
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:459
msgid "Memory Conservative Loader"
msgstr "为内存受限设备优化的加载器"
@ -413,7 +477,7 @@ msgstr "混合端口"
msgid "Mixin Config"
msgstr "混入配置"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:364
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:482
msgid "Mixin File Content"
msgstr "混入文件内容"
@ -426,6 +490,10 @@ msgstr "混入选项"
msgid "Mode"
msgstr "模式"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:354
msgid "Name"
msgstr "名称"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:263
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:282
msgid "Nameserver"
@ -436,6 +504,15 @@ msgstr "DNS 服务器"
msgid "Nikki"
msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:445
msgid "No Resolve"
msgstr "不解析"
#: 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:438
msgid "Node"
msgstr "节点"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:15
msgid "Not Running"
msgstr "未在运行"
@ -457,7 +534,7 @@ msgid "Overwrite DNS Hijack"
msgstr "覆盖 DNS 劫持"
#: 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:330
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:332
msgid "Overwrite Destination"
msgstr "将嗅探结果作为连接目标"
@ -493,11 +570,11 @@ msgstr "覆盖按协议嗅探"
msgid "Password"
msgstr "密码"
#: 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:484
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:327
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:329
msgid "Port"
msgstr "端口"
@ -505,16 +582,20 @@ msgstr "端口"
msgid "Prefer"
msgstr "优先"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:431
msgid "Process Name"
msgstr "进程名"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/profile.js:18
#: applications/luci-app-nikki/root/usr/share/luci/menu.d/luci-app-nikki.json:21
msgid "Profile"
msgstr "配置文件"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:37
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:49
msgid "Profile for Startup"
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:323
msgid "Protocol"
msgstr "协议"
@ -523,6 +604,10 @@ msgstr "协议"
msgid "Proxy Config"
msgstr "代理配置"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:45
msgid "Proxy Provider:"
msgstr "代理提供者:"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:35
msgid "Redirect Mode"
msgstr "Redirect 模式"
@ -551,10 +636,22 @@ msgstr "重启服务"
msgid "Router Proxy"
msgstr "路由器代理"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:335
msgid "Rule Config"
msgstr "规则配置"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:39
msgid "Rule Mode"
msgstr "规则模式"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:41
msgid "Rule Provider:"
msgstr "规则提供者:"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:424
msgid "Rule Set"
msgstr "规则集"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:15
msgid "Running"
msgstr "运行中"
@ -576,8 +673,8 @@ msgstr "定时重启"
msgid "Scroll To Bottom"
msgstr "滚动到底部"
#: applications/luci-app-nikki/htdocs/luci-static/resources/tools/nikki.js:100
#: applications/luci-app-nikki/htdocs/luci-static/resources/tools/nikki.js:118
#: applications/luci-app-nikki/htdocs/luci-static/resources/tools/nikki.js:113
#: applications/luci-app-nikki/htdocs/luci-static/resources/tools/nikki.js:131
msgid "Service is not running."
msgstr "服务未在运行。"
@ -601,7 +698,7 @@ msgstr "嗅探器配置"
msgid "Stack"
msgstr "栈"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:340
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:458
msgid "Standard Loader"
msgstr "标准加载器"
@ -626,7 +723,7 @@ msgid "Subscription Url"
msgstr "订阅链接"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:107
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:33
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:37
msgid "Subscription:"
msgstr "订阅:"
@ -681,6 +778,8 @@ msgid "Transparent Proxy with Mihomo on OpenWrt."
msgstr "在 OpenWrt 上使用 Mihomo 进行透明代理。"
#: 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:357
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:421
msgid "Type"
msgstr "类型"
@ -700,8 +799,8 @@ msgstr "UI 下载地址"
msgid "Unify Delay"
msgstr "统一延迟"
#: applications/luci-app-nikki/htdocs/luci-static/resources/tools/nikki.js:80
#: applications/luci-app-nikki/htdocs/luci-static/resources/tools/nikki.js:84
#: applications/luci-app-nikki/htdocs/luci-static/resources/tools/nikki.js:93
#: applications/luci-app-nikki/htdocs/luci-static/resources/tools/nikki.js:97
msgid "Unknown"
msgstr "未知"
@ -717,10 +816,18 @@ msgstr "更新时间"
msgid "Update Dashboard"
msgstr "更新面板"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:400
msgid "Update Interval"
msgstr "更新间隔"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/profile.js:20
msgid "Upload Profile"
msgstr "上传配置文件"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:363
msgid "Url"
msgstr "下载地址"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:220
msgid "Use Hosts"
msgstr "使用 Hosts"
@ -740,3 +847,18 @@ msgstr "用户代理UA"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:128
msgid "Username"
msgstr "用户名"
#~ msgid "File"
#~ msgstr "文件"
#~ msgid "Proxy Provider"
#~ msgstr "代理提供者"
#~ msgid "Rule Provider"
#~ msgstr "规则提供者"
#~ msgid ": "
#~ msgstr ""
#~ msgid "Custom"
#~ msgstr "自定义"

View File

@ -15,6 +15,8 @@
"/etc/nikki/subscriptions/*.yml": ["read"],
"/etc/nikki/mixin.yaml": ["read"],
"/etc/nikki/run/config.yaml": ["read"],
"/etc/nikki/run/providers/rule/*": ["read"],
"/etc/nikki/run/providers/proxy/*": ["read"],
"/etc/nikki/nftables/reserved_ip.nft": ["read"],
"/etc/nikki/nftables/reserved_ip6.nft": ["read"],
"/var/log/nikki/*.log": ["read"],
@ -30,6 +32,8 @@
"/etc/nikki/subscriptions/*.yml": ["write"],
"/etc/nikki/mixin.yaml": ["write"],
"/etc/nikki/run/config.yaml": ["write"],
"/etc/nikki/run/providers/rule/*": ["write"],
"/etc/nikki/run/providers/proxy/*": ["write"],
"/etc/nikki/nftables/reserved_ip.nft": ["write"],
"/etc/nikki/nftables/reserved_ip6.nft": ["write"]
}