parent
66b31f8b3f
commit
e31f33a586
@ -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' });
|
|
||||||
});
|
|
||||||
},
|
|
||||||
})
|
})
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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 ""
|
||||||
|
|
||||||
|
@ -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 "目标 IP(Geo)"
|
|||||||
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 目标端口"
|
||||||
|
|
||||||
|
@ -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
|
|
@ -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"],
|
||||||
|
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user