mirror of
https://github.com/gSpotx2f/ruantiblock_openwrt.git
synced 2026-05-13 22:20:59 +00:00
luci-app-ruantiblock: info.js - ipset dnsmasq
This commit is contained in:
@@ -8,9 +8,9 @@ LUA_MODULE=1
|
|||||||
LUCI_APP=1
|
LUCI_APP=1
|
||||||
|
|
||||||
OWRT_VERSION="current"
|
OWRT_VERSION="current"
|
||||||
RUAB_VERSION="0.9.4-0"
|
RUAB_VERSION="0.9.4-1"
|
||||||
RUAB_MOD_LUA_VERSION="0.9.4-0"
|
RUAB_MOD_LUA_VERSION="0.9.4-1"
|
||||||
RUAB_LUCI_APP_VERSION="0.9.4-0"
|
RUAB_LUCI_APP_VERSION="0.9.4-1"
|
||||||
BASE_URL="https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master"
|
BASE_URL="https://raw.githubusercontent.com/gSpotx2f/packages-openwrt/master"
|
||||||
PKG_DIR="/tmp"
|
PKG_DIR="/tmp"
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_VERSION:=0.9.4-0
|
PKG_VERSION:=0.9.4-1
|
||||||
LUCI_TITLE:=LuCI support for ruantiblock
|
LUCI_TITLE:=LuCI support for ruantiblock
|
||||||
LUCI_DEPENDS:=+ruantiblock
|
LUCI_DEPENDS:=+ruantiblock
|
||||||
LUCI_PKGARCH:=all
|
LUCI_PKGARCH:=all
|
||||||
|
|||||||
@@ -6,6 +6,69 @@
|
|||||||
'require view.ruantiblock.tools as tools';
|
'require view.ruantiblock.tools as tools';
|
||||||
|
|
||||||
return view.extend({
|
return view.extend({
|
||||||
|
secToTimeString: function(value) {
|
||||||
|
let string = '';
|
||||||
|
if(/^\d+$/.test(value)) {
|
||||||
|
value = Number(value);
|
||||||
|
let hours = 0, mins = 0, sec = 0, rest = value;
|
||||||
|
if(value >= 3600) {
|
||||||
|
hours = Math.floor(value / 3600);
|
||||||
|
rest = value % 3600;
|
||||||
|
};
|
||||||
|
if(rest >= 60) {
|
||||||
|
mins = Math.floor(rest / 60);
|
||||||
|
rest = rest % 60;
|
||||||
|
};
|
||||||
|
sec = rest;
|
||||||
|
if(hours > 0) {
|
||||||
|
string = string + hours + _('h');
|
||||||
|
};
|
||||||
|
if(mins > 0) {
|
||||||
|
string = string + ' ' + mins + _('m');
|
||||||
|
};
|
||||||
|
string = string + ' ' + sec + _('s');
|
||||||
|
};
|
||||||
|
return string;
|
||||||
|
},
|
||||||
|
|
||||||
|
makeDnsmasqTable: function(ipDataArray) {
|
||||||
|
let lines = `<tr class="tr"><td class="td center">${_('No entries available...')}</td></tr>`;
|
||||||
|
let ipTable = E('table', { 'id': 'ipTable', 'class': 'table' });
|
||||||
|
|
||||||
|
if(ipDataArray.length > 1) {
|
||||||
|
lines = [];
|
||||||
|
ipDataArray.forEach((e, i) => {
|
||||||
|
if(e) {
|
||||||
|
lines.push(
|
||||||
|
`<tr class="tr"><td class="td left" data-title="${_('IP address')}">${e[0]}</td>` +
|
||||||
|
((e[1]) ? `<td class="td left" data-title="${_('Timeout')}">${this.secToTimeString(e[1])}</td>` : '') +
|
||||||
|
`</tr>`
|
||||||
|
);
|
||||||
|
};
|
||||||
|
});
|
||||||
|
lines = lines.join('');
|
||||||
|
|
||||||
|
ipTable.append(
|
||||||
|
E('tr', { 'class': 'tr table-titles' }, [
|
||||||
|
E('th', { 'class': 'th left', 'style': 'min-width:33%' }, _('IP address')),
|
||||||
|
(ipDataArray[0][1]) ? E('th', { 'class': 'th left' }, _('Timeout')) : ''
|
||||||
|
])
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
try {
|
||||||
|
ipTable.insertAdjacentHTML('beforeend', lines);
|
||||||
|
} catch(err) {
|
||||||
|
if(err.name === 'SyntaxError') {
|
||||||
|
ui.addNotification(null,
|
||||||
|
E('p', {}, _('HTML/XML error') + ': ' + err.message), 'error');
|
||||||
|
};
|
||||||
|
throw err;
|
||||||
|
};
|
||||||
|
|
||||||
|
return ipTable;
|
||||||
|
},
|
||||||
|
|
||||||
infoPoll: function() {
|
infoPoll: function() {
|
||||||
return fs.exec_direct(tools.execPath, [ 'html-info' ], 'json').catch(e => {
|
return fs.exec_direct(tools.execPath, [ 'html-info' ], 'json').catch(e => {
|
||||||
ui.addNotification(null, E('p', _('Unable to execute or read contents')
|
ui.addNotification(null, E('p', _('Unable to execute or read contents')
|
||||||
@@ -72,6 +135,12 @@ return view.extend({
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if(data.dnsmasq) {
|
||||||
|
let rdTableWrapper = document.getElementById('rdTableWrapper');
|
||||||
|
rdTableWrapper.innerHTML = '';
|
||||||
|
rdTableWrapper.append(this.makeDnsmasqTable(data.dnsmasq));
|
||||||
|
};
|
||||||
} else {
|
} else {
|
||||||
if(poll.active()) {
|
if(poll.active()) {
|
||||||
poll.stop();
|
poll.stop();
|
||||||
@@ -99,7 +168,8 @@ return view.extend({
|
|||||||
|
|
||||||
let update_status = null,
|
let update_status = null,
|
||||||
iptables = null,
|
iptables = null,
|
||||||
ipset = null;
|
ipset = null,
|
||||||
|
dnsmasq = null;
|
||||||
if(data) {
|
if(data) {
|
||||||
if(data.status === 'enabled') {
|
if(data.status === 'enabled') {
|
||||||
update_status = E('table', { 'class': 'table' });
|
update_status = E('table', { 'class': 'table' });
|
||||||
@@ -110,25 +180,25 @@ return view.extend({
|
|||||||
E('td', { 'class': 'td left', 'style': 'min-width:33%' },
|
E('td', { 'class': 'td left', 'style': 'min-width:33%' },
|
||||||
_('Last blacklist update') + ':'),
|
_('Last blacklist update') + ':'),
|
||||||
E('td', { 'class': 'td left',
|
E('td', { 'class': 'td left',
|
||||||
'id': 'last_blacklist_update.date' },
|
'id' : 'last_blacklist_update.date' },
|
||||||
data.last_blacklist_update.date),
|
data.last_blacklist_update.date),
|
||||||
]),
|
]),
|
||||||
E('tr', { 'class': 'tr' }, [
|
E('tr', { 'class': 'tr' }, [
|
||||||
E('td', { 'class': 'td left' }, 'CIDR:'),
|
E('td', { 'class': 'td left' }, 'CIDR:'),
|
||||||
E('td', { 'class': 'td left',
|
E('td', { 'class': 'td left',
|
||||||
'id': 'last_blacklist_update.cidr' },
|
'id' : 'last_blacklist_update.cidr' },
|
||||||
data.last_blacklist_update.cidr),
|
data.last_blacklist_update.cidr),
|
||||||
]),
|
]),
|
||||||
E('tr', { 'class': 'tr' }, [
|
E('tr', { 'class': 'tr' }, [
|
||||||
E('td', { 'class': 'td left' }, 'IP:'),
|
E('td', { 'class': 'td left' }, 'IP:'),
|
||||||
E('td', { 'class': 'td left',
|
E('td', { 'class': 'td left',
|
||||||
'id': 'last_blacklist_update.ip' },
|
'id' : 'last_blacklist_update.ip' },
|
||||||
data.last_blacklist_update.ip),
|
data.last_blacklist_update.ip),
|
||||||
]),
|
]),
|
||||||
E('tr', { 'class': 'tr' }, [
|
E('tr', { 'class': 'tr' }, [
|
||||||
E('td', { 'class': 'td left' }, 'FQDN:'),
|
E('td', { 'class': 'td left' }, 'FQDN:'),
|
||||||
E('td', { 'class': 'td left',
|
E('td', { 'class': 'td left',
|
||||||
'id': 'last_blacklist_update.fqdn' },
|
'id' : 'last_blacklist_update.fqdn' },
|
||||||
data.last_blacklist_update.fqdn),
|
data.last_blacklist_update.fqdn),
|
||||||
])
|
])
|
||||||
);
|
);
|
||||||
@@ -153,6 +223,7 @@ return view.extend({
|
|||||||
|
|
||||||
for(let [k, v] of Object.entries(data.iptables)) {
|
for(let [k, v] of Object.entries(data.iptables)) {
|
||||||
if(k === '_dummy') continue;
|
if(k === '_dummy') continue;
|
||||||
|
|
||||||
table_iptables.append(
|
table_iptables.append(
|
||||||
E('tr', { 'class': 'tr' }, [
|
E('tr', { 'class': 'tr' }, [
|
||||||
E('td', {
|
E('td', {
|
||||||
@@ -215,7 +286,19 @@ return view.extend({
|
|||||||
]);
|
]);
|
||||||
};
|
};
|
||||||
|
|
||||||
poll.add(this.infoPoll);
|
if(data.dnsmasq) {
|
||||||
|
let rdTableWrapper = E('div', {
|
||||||
|
'id' : 'rdTableWrapper',
|
||||||
|
'style': 'width:100%'
|
||||||
|
}, this.makeDnsmasqTable(data.dnsmasq));
|
||||||
|
|
||||||
|
dnsmasq = E([
|
||||||
|
E('h3', {}, _('Dnsmasq')),
|
||||||
|
rdTableWrapper,
|
||||||
|
]);
|
||||||
|
};
|
||||||
|
|
||||||
|
poll.add(L.bind(this.infoPoll, this));
|
||||||
} else {
|
} else {
|
||||||
update_status = E('em', {}, _('Status') + ' : ' + _('disabled'));
|
update_status = E('em', {}, _('Status') + ' : ' + _('disabled'));
|
||||||
};
|
};
|
||||||
@@ -234,6 +317,10 @@ return view.extend({
|
|||||||
E('div', { 'class': 'cbi-section fade-in' },
|
E('div', { 'class': 'cbi-section fade-in' },
|
||||||
E('div', { 'class': 'cbi-section-node' }, ipset)
|
E('div', { 'class': 'cbi-section-node' }, ipset)
|
||||||
),
|
),
|
||||||
|
E('div', { 'class': 'cbi-section fade-in' },
|
||||||
|
E('div', { 'class': 'cbi-section-node' }, dnsmasq)
|
||||||
|
),
|
||||||
|
|
||||||
]);
|
]);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -161,8 +161,11 @@ msgstr "Фильтр хостов"
|
|||||||
msgid "Hour"
|
msgid "Hour"
|
||||||
msgstr "Час"
|
msgstr "Час"
|
||||||
|
|
||||||
|
msgid "IP address"
|
||||||
|
msgstr "IP-адрес"
|
||||||
|
|
||||||
msgid "IP addresses of hosts"
|
msgid "IP addresses of hosts"
|
||||||
msgstr "IP адреса хостов"
|
msgstr "IP-адреса хостов"
|
||||||
|
|
||||||
msgid "IP filter"
|
msgid "IP filter"
|
||||||
msgstr "Фильтр IP"
|
msgstr "Фильтр IP"
|
||||||
@@ -380,6 +383,9 @@ msgstr ""
|
|||||||
msgid "Time"
|
msgid "Time"
|
||||||
msgstr "Время"
|
msgstr "Время"
|
||||||
|
|
||||||
|
msgid "Timeout"
|
||||||
|
msgstr "Таймаут"
|
||||||
|
|
||||||
msgid "Timestamp"
|
msgid "Timestamp"
|
||||||
msgstr "Время"
|
msgstr "Время"
|
||||||
|
|
||||||
|
|||||||
@@ -144,6 +144,9 @@ msgstr ""
|
|||||||
msgid "Hour"
|
msgid "Hour"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "IP address"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "IP addresses of hosts"
|
msgid "IP addresses of hosts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -344,6 +347,9 @@ msgstr ""
|
|||||||
msgid "Time"
|
msgid "Time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Timeout"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Timestamp"
|
msgid "Timestamp"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk
|
|||||||
|
|
||||||
PKG_NAME:=ruantiblock-mod-lua
|
PKG_NAME:=ruantiblock-mod-lua
|
||||||
PKG_VERSION:=0.9.4
|
PKG_VERSION:=0.9.4
|
||||||
PKG_RELEASE:=0
|
PKG_RELEASE:=1
|
||||||
PKG_MAINTAINER:=gSpot <https://github.com/gSpotx2f/ruantiblock_openwrt>
|
PKG_MAINTAINER:=gSpot <https://github.com/gSpotx2f/ruantiblock_openwrt>
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/package.mk
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk
|
|||||||
|
|
||||||
PKG_NAME:=ruantiblock-mod-py
|
PKG_NAME:=ruantiblock-mod-py
|
||||||
PKG_VERSION:=0.9.4
|
PKG_VERSION:=0.9.4
|
||||||
PKG_RELEASE:=0
|
PKG_RELEASE:=1
|
||||||
PKG_MAINTAINER:=gSpot <https://github.com/gSpotx2f/ruantiblock_openwrt>
|
PKG_MAINTAINER:=gSpot <https://github.com/gSpotx2f/ruantiblock_openwrt>
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/package.mk
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk
|
|||||||
|
|
||||||
PKG_NAME:=ruantiblock
|
PKG_NAME:=ruantiblock
|
||||||
PKG_VERSION:=0.9.4
|
PKG_VERSION:=0.9.4
|
||||||
PKG_RELEASE:=0
|
PKG_RELEASE:=1
|
||||||
PKG_MAINTAINER:=gSpot <https://github.com/gSpotx2f/ruantiblock_openwrt>
|
PKG_MAINTAINER:=gSpot <https://github.com/gSpotx2f/ruantiblock_openwrt>
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/package.mk
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|||||||
@@ -25,19 +25,41 @@ Info() {
|
|||||||
printf "\"_dummy\":false},";
|
printf "\"_dummy\":false},";
|
||||||
}'
|
}'
|
||||||
printf "\"ipset\":{";
|
printf "\"ipset\":{";
|
||||||
for _set in "$IPSET_ALLOWED_HOSTS" "$IPSET_ONION" "$IPSET_CIDR_TMP" "$IPSET_CIDR" "$IPSET_IP_TMP" "$IPSET_IP" "$IPSET_DNSMASQ"
|
for _set in "$IPSET_ALLOWED_HOSTS" "$IPSET_ONION" "$IPSET_CIDR_TMP" "$IPSET_CIDR" "$IPSET_IP_TMP" "$IPSET_IP"
|
||||||
do
|
do
|
||||||
$IPSET_CMD list "$_set" -terse | $AWK_CMD -F ": " '
|
$IPSET_CMD list "$_set" -terse | $AWK_CMD -F ": " '
|
||||||
{
|
{
|
||||||
if($1 ~ /^Name/)
|
if($1 ~ /^Name/) {
|
||||||
printf "\""$2"\":[";
|
printf "\""$2"\":[";
|
||||||
else if($1 ~ /^Size in memory/)
|
}
|
||||||
|
else if($1 ~ /^Size in memory/) {
|
||||||
printf "\""$2"\",";
|
printf "\""$2"\",";
|
||||||
else if($1 ~ /^Number of entries/)
|
}
|
||||||
|
else if($1 ~ /^Number of entries/) {
|
||||||
printf "\""$2"\"],";
|
printf "\""$2"\"],";
|
||||||
|
};
|
||||||
}'
|
}'
|
||||||
done
|
done
|
||||||
printf "\"_dummy\":false}}"
|
$IPSET_CMD list "$IPSET_DNSMASQ" | $AWK_CMD -F ": " '
|
||||||
|
{
|
||||||
|
if($1 ~ /^Name/) {
|
||||||
|
printf "\""$2"\":[";
|
||||||
|
}
|
||||||
|
else if($1 ~ /^Size in memory/) {
|
||||||
|
printf "\""$2"\",";
|
||||||
|
}
|
||||||
|
else if($1 ~ /^Number of entries/) {
|
||||||
|
printf "\""$2"\"]},\"dnsmasq\":[";
|
||||||
|
}
|
||||||
|
else if($0 ~ /^[0-9]/) {
|
||||||
|
split($0, a, " ");
|
||||||
|
printf "[\"" a[1] "\",\"" a[3] "\"],";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
END {
|
||||||
|
printf "false],";
|
||||||
|
}'
|
||||||
|
printf "\"_dummy\":false}"
|
||||||
else
|
else
|
||||||
printf "{\"status\": \"disabled\"}"
|
printf "{\"status\": \"disabled\"}"
|
||||||
fi
|
fi
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 136 KiB After Width: | Height: | Size: 187 KiB |
Reference in New Issue
Block a user