luci-app-nikki: sync upstream

last commit: a73c3678e8
This commit is contained in:
gitea-action 2025-03-15 01:00:27 +08:00
parent 66b31f8b3f
commit e31f33a586
7 changed files with 54 additions and 38 deletions

View File

@ -38,6 +38,12 @@ const callNikkiUpdateSubscription = rpc.declare({
expect: { '': {} } expect: { '': {} }
}); });
const callNikkiGetIdentifiers = rpc.declare({
object: 'luci.nikki',
method: 'get_identifiers',
expect: { '': {} }
});
const callNikkiDebug = rpc.declare({ const callNikkiDebug = rpc.declare({
object: 'luci.nikki', object: 'luci.nikki',
method: 'debug', method: 'debug',
@ -136,6 +142,10 @@ return baseclass.extend({
return this.api('POST', '/upgrade/ui'); return this.api('POST', '/upgrade/ui');
}, },
getIdentifiers: function () {
return callNikkiGetIdentifiers();
},
listProfiles: function () { listProfiles: function () {
return L.resolveDefault(fs.list(this.profilesDir), []); return L.resolveDefault(fs.list(this.profilesDir), []);
}, },
@ -167,16 +177,4 @@ return baseclass.extend({
debug: function () { debug: function () {
return callNikkiDebug(); return callNikkiDebug();
}, },
getUsers: function () {
return fs.lines('/etc/passwd').then(function (lines) {
return lines.map(function (line) { return line.split(/:/)[0] }).filter(function (user) { return user !== 'root' && user !== 'nikki' });
});
},
getGroups: function () {
return fs.lines('/etc/group').then(function (lines) {
return lines.map(function (line) { return line.split(/:/)[0] }).filter(function (group) { return group !== 'root' && group !== 'nikki' });
});
},
}) })

View File

@ -12,15 +12,15 @@ return view.extend({
uci.load('nikki'), uci.load('nikki'),
network.getHostHints(), network.getHostHints(),
network.getNetworks(), network.getNetworks(),
nikki.getUsers(), nikki.getIdentifiers(),
nikki.getGroups()
]); ]);
}, },
render: function (data) { render: function (data) {
const hosts = data[1].hosts; const hosts = data[1].hosts;
const networks = data[2]; const networks = data[2];
const users = data[3]; const users = data[3]?.users ?? [];
const groups = data[4]; const groups = data[3]?.groups ?? [];
const cgroups = data[3]?.cgroups ?? [];
let m, s, o; let m, s, o;
@ -144,6 +144,13 @@ return view.extend({
o.value(group); o.value(group);
}; };
o = s.taboption('bypass', form.MultiValue, 'bypass_cgroup', _('Bypass cgroup'));
o.create = true;
for (const cgroup of cgroups) {
o.value(cgroup);
};
o = s.taboption('bypass', form.Flag, 'bypass_china_mainland_ip', _('Bypass China Mainland IP')); o = s.taboption('bypass', form.Flag, 'bypass_china_mainland_ip', _('Bypass China Mainland IP'));
o.rmempty = false; o.rmempty = false;

View File

@ -17,8 +17,8 @@ msgstr ""
msgid "All Mode" msgid "All Mode"
msgstr "" msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:152 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:159
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:157 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:164
msgid "All Port" msgid "All Port"
msgstr "" msgstr ""
@ -65,11 +65,11 @@ msgstr ""
msgid "Bypass" msgid "Bypass"
msgstr "" msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:147 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:154
msgid "Bypass China Mainland IP" msgid "Bypass China Mainland IP"
msgstr "" msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:160 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:167
msgid "Bypass DSCP" msgid "Bypass DSCP"
msgstr "" msgstr ""
@ -81,6 +81,10 @@ msgstr ""
msgid "Bypass User" msgid "Bypass User"
msgstr "" msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:147
msgid "Bypass cgroup"
msgstr ""
#: 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:29
msgid "Choose File" msgid "Choose File"
msgstr "" msgstr ""
@ -94,8 +98,8 @@ msgstr ""
msgid "Clear Log" msgid "Clear Log"
msgstr "" msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:153 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:160
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:158 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:165
msgid "Commonly Used Port" msgid "Commonly Used Port"
msgstr "" msgstr ""
@ -147,11 +151,11 @@ msgstr ""
msgid "Destination Port" msgid "Destination Port"
msgstr "" msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:150 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:157
msgid "Destination TCP Port to Proxy" msgid "Destination TCP Port to Proxy"
msgstr "" msgstr ""
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:155 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:162
msgid "Destination UDP Port to Proxy" msgid "Destination UDP Port to Proxy"
msgstr "" msgstr ""

View File

@ -24,8 +24,8 @@ msgstr "访问控制"
msgid "All Mode" msgid "All Mode"
msgstr "全部模式" msgstr "全部模式"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:152 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:159
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:157 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:164
msgid "All Port" msgid "All Port"
msgstr "全部端口" msgstr "全部端口"
@ -72,11 +72,11 @@ msgstr "黑名单模式"
msgid "Bypass" msgid "Bypass"
msgstr "绕过" msgstr "绕过"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:147 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:154
msgid "Bypass China Mainland IP" msgid "Bypass China Mainland IP"
msgstr "绕过中国大陆 IP" msgstr "绕过中国大陆 IP"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:160 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:167
msgid "Bypass DSCP" msgid "Bypass DSCP"
msgstr "绕过 DSCP" msgstr "绕过 DSCP"
@ -88,6 +88,10 @@ msgstr "绕过用户组"
msgid "Bypass User" msgid "Bypass User"
msgstr "绕过用户" msgstr "绕过用户"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:147
msgid "Bypass cgroup"
msgstr "绕过资源控制组"
#: 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:29
msgid "Choose File" msgid "Choose File"
msgstr "选择文件" msgstr "选择文件"
@ -101,8 +105,8 @@ msgstr "选择配置文件"
msgid "Clear Log" msgid "Clear Log"
msgstr "清空日志" msgstr "清空日志"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:153 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:160
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:158 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:165
msgid "Commonly Used Port" msgid "Commonly Used Port"
msgstr "常用端口" msgstr "常用端口"
@ -154,11 +158,11 @@ msgstr "目标 IPGeo"
msgid "Destination Port" msgid "Destination Port"
msgstr "目标端口" msgstr "目标端口"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:150 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:157
msgid "Destination TCP Port to Proxy" msgid "Destination TCP Port to Proxy"
msgstr "要代理的 TCP 目标端口" msgstr "要代理的 TCP 目标端口"
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:155 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:162
msgid "Destination UDP Port to Proxy" msgid "Destination UDP Port to Proxy"
msgstr "要代理的 UDP 目标端口" msgstr "要代理的 UDP 目标端口"

View File

@ -1,4 +0,0 @@
#!/bin/sh
rm -rf /var/luci-modulecache/; rm -f /var/luci-indexcache;
[ -x /etc/init.d/rpcd ] && /etc/init.d/rpcd reload;
exit 0

View File

@ -8,8 +8,6 @@
"luci.nikki": [ "*" ] "luci.nikki": [ "*" ]
}, },
"file": { "file": {
"/etc/passwd": ["read"],
"/etc/group": ["read"],
"/etc/nikki/profiles/*.yaml": ["read"], "/etc/nikki/profiles/*.yaml": ["read"],
"/etc/nikki/profiles/*.yml": ["read"], "/etc/nikki/profiles/*.yml": ["read"],
"/etc/nikki/subscriptions/*.yaml": ["read"], "/etc/nikki/subscriptions/*.yaml": ["read"],

View File

@ -3,6 +3,7 @@
'use strict'; 'use strict';
import { access, popen } from 'fs'; import { access, popen } from 'fs';
import { get_users, get_groups, get_cgroups } from '/etc/nikki/ucode/include.uc';
const methods = { const methods = {
version: { version: {
@ -56,6 +57,14 @@ const methods = {
return { success: success }; return { success: success };
} }
}, },
get_identifiers: {
call: function() {
const users = filter(get_users(), (x) => x != '' && x != 'root');
const groups = filter(get_groups(), (x) => x != '' && x != 'root');
const cgroups = filter(get_cgroups(), (x) => x != '' && x != 'nikki');
return { users: users, groups: groups, cgroups: cgroups };
}
},
debug: { debug: {
call: function() { call: function() {
const success = system('/etc/nikki/scripts/debug.sh > /var/run/nikki/debug.md') == 0; const success = system('/etc/nikki/scripts/debug.sh > /var/run/nikki/debug.md') == 0;