v1.1. Removed separate nftsets for user entries.

This commit is contained in:
gSpot
2023-02-18 15:52:13 +03:00
parent 32a267f9a8
commit 03ec2ce632
12 changed files with 70 additions and 112 deletions
+1 -1
View File
@@ -4,7 +4,7 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_VERSION:=1.0-0 PKG_VERSION:=1.1-0
LUCI_TITLE:=LuCI support for ruantiblock LUCI_TITLE:=LuCI support for ruantiblock
LUCI_DEPENDS:=+ruantiblock LUCI_DEPENDS:=+ruantiblock
LUCI_PKGARCH:=all LUCI_PKGARCH:=all
@@ -47,7 +47,6 @@ return view.extend({
if(data.rules.nftables && data.rules.nftables.length > 1) { if(data.rules.nftables && data.rules.nftables.length > 1) {
for(let i of data.rules.nftables) { for(let i of data.rules.nftables) {
if(!i.rule) continue; if(!i.rule) continue;
let set, bytes; let set, bytes;
i.rule.expr.forEach(e => { i.rule.expr.forEach(e => {
if(e.match) { if(e.match) {
@@ -58,7 +57,6 @@ return view.extend({
}; };
}); });
output.rules.push([ set, bytes ]); output.rules.push([ set, bytes ]);
}; };
function parseDnsmasqData(set) { function parseDnsmasqData(set) {
@@ -77,8 +75,7 @@ return view.extend({
return sArray; return sArray;
}; };
output.dnsmasq = parseDnsmasqData('dnsmasq'); output.dnsmasq = parseDnsmasqData('dnsmasq');
output.dnsmasq_u = parseDnsmasqData('dnsmasq_u');
}; };
return output; return output;
}, },
@@ -185,11 +182,6 @@ return view.extend({
rdTableWrapper.append(this.makeDnsmasqTable(nft_data.dnsmasq)); rdTableWrapper.append(this.makeDnsmasqTable(nft_data.dnsmasq));
}; };
if(nft_data.dnsmasq_u.length > 0) {
let rduTableWrapper = document.getElementById('rduTableWrapper');
rduTableWrapper.innerHTML = '';
rduTableWrapper.append(this.makeDnsmasqTable(nft_data.dnsmasq_u));
};
} else { } else {
if(poll.active()) { if(poll.active()) {
poll.stop(); poll.stop();
@@ -217,8 +209,7 @@ return view.extend({
let update_status = null, let update_status = null,
rules = null, rules = null,
dnsmasq = null, dnsmasq = null;
dnsmasq_u = 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' });
@@ -278,7 +269,7 @@ return view.extend({
E('td',{ E('td',{
'class' : 'td left', 'class' : 'td left',
'data-title': _('Match-set'), 'data-title': _('Match-set'),
}, set + ' (' + set.replace(/^c/, 'CIDR').replace(/^i/, 'IP').replace(/^d/, 'dnsmasq').replace(/u$/, '-user') + ')'), }, set + ' (' + set.replace(/^c/, 'CIDR').replace(/^i/, 'IP').replace(/^d/, 'dnsmasq') + ')'),
E('td', { E('td', {
'class' : 'td left', 'class' : 'td left',
'id' : 'rules.' + set, 'id' : 'rules.' + set,
@@ -306,18 +297,6 @@ return view.extend({
]); ]);
}; };
if(nft_data.dnsmasq_u) {
let rduTableWrapper = E('div', {
'id' : 'rduTableWrapper',
'style': 'width:100%'
}, this.makeDnsmasqTable(nft_data.dnsmasq_u));
dnsmasq_u = E([
E('h3', {}, _('Dnsmasq') + ' - ' + _('User entries')),
rduTableWrapper,
]);
};
poll.add(L.bind(this.pollInfo, this), this.pollInterval); poll.add(L.bind(this.pollInfo, this), this.pollInterval);
} else { } else {
update_status = E('em', {}, _('Status') + ' : ' + _('disabled')); update_status = E('em', {}, _('Status') + ' : ' + _('disabled'));
@@ -337,9 +316,6 @@ return view.extend({
E('div', { 'class': 'cbi-section fade-in' }, E('div', { 'class': 'cbi-section fade-in' },
E('div', { 'class': 'cbi-section-node' }, dnsmasq) E('div', { 'class': 'cbi-section-node' }, dnsmasq)
), ),
E('div', { 'class': 'cbi-section fade-in' },
E('div', { 'class': 'cbi-section-node' }, dnsmasq_u)
),
]); ]);
}, },
+1 -1
View File
@@ -5,7 +5,7 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=ruantiblock-mod-lua PKG_NAME:=ruantiblock-mod-lua
PKG_VERSION:=1.0 PKG_VERSION:=1.1
PKG_RELEASE:=0 PKG_RELEASE:=0
PKG_MAINTAINER:=gSpot <https://github.com/gSpotx2f/ruantiblock_openwrt> PKG_MAINTAINER:=gSpot <https://github.com/gSpotx2f/ruantiblock_openwrt>
@@ -58,9 +58,6 @@ local Config = Class(nil, {
["NFTSET_CIDR"] = true, ["NFTSET_CIDR"] = true,
["NFTSET_IP"] = true, ["NFTSET_IP"] = true,
["NFTSET_DNSMASQ"] = true, ["NFTSET_DNSMASQ"] = true,
["NFTSET_CIDR_USER"] = true,
["NFTSET_IP_USER"] = true,
["NFTSET_DNSMASQ_USER"] = true,
["NFTSET_CIDR_CFG"] = true, ["NFTSET_CIDR_CFG"] = true,
["NFTSET_IP_CFG"] = true, ["NFTSET_IP_CFG"] = true,
["NFTSET_DNSMASQ"] = true, ["NFTSET_DNSMASQ"] = true,
@@ -395,25 +392,12 @@ end
function BlackListParser:write_ipset_config() function BlackListParser:write_ipset_config()
local file_handler = assert(io.open(self.IP_DATA_FILE, "w"), "Could not open nftset config") local file_handler = assert(io.open(self.IP_DATA_FILE, "w"), "Could not open nftset config")
for _, v in ipairs({ self.NFTSET_CIDR, self.NFTSET_IP, self.NFTSET_CIDR_USER, self.NFTSET_IP_USER }) do for _, v in ipairs({ self.NFTSET_CIDR, self.NFTSET_IP }) do
file_handler:write(string.format("flush set %s %s\n", self.NFT_TABLE, v)) file_handler:write(string.format("flush set %s %s\n", self.NFT_TABLE, v))
end end
file_handler:write( file_handler:write(
string.format("table %s {\n%s", self.NFT_TABLE, self.NFTSET_IP_CFG) string.format("table %s {\n%s", self.NFT_TABLE, self.NFTSET_CIDR_CFG)
) )
local i = 0
if next(self.ip_table) then
file_handler:write("elements={")
for ipaddr in pairs(self.ip_table) do
file_handler:write(string.format("%s,", ipaddr))
i = i + 1
end
file_handler:write("};")
end
file_handler:write(
string.format("}\n%s", self.NFTSET_CIDR_CFG)
)
self.ip_records_count = i
local c = 0 local c = 0
if next(self.cidr_table) then if next(self.cidr_table) then
file_handler:write("elements={") file_handler:write("elements={")
@@ -424,6 +408,19 @@ function BlackListParser:write_ipset_config()
file_handler:write("};") file_handler:write("};")
end end
self.cidr_count = c self.cidr_count = c
file_handler:write(
string.format("}\n%s", self.NFTSET_IP_CFG)
)
local i = 0
if next(self.ip_table) then
file_handler:write("elements={")
for ipaddr in pairs(self.ip_table) do
file_handler:write(string.format("%s,", ipaddr))
i = i + 1
end
file_handler:write("};")
end
self.ip_records_count = i
file_handler:write("}\n}\n") file_handler:write("}\n}\n")
file_handler:close() file_handler:close()
end end
+1 -1
View File
@@ -5,7 +5,7 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=ruantiblock-mod-py PKG_NAME:=ruantiblock-mod-py
PKG_VERSION:=1.0 PKG_VERSION:=1.1
PKG_RELEASE:=0 PKG_RELEASE:=0
PKG_MAINTAINER:=gSpot <https://github.com/gSpotx2f/ruantiblock_openwrt> PKG_MAINTAINER:=gSpot <https://github.com/gSpotx2f/ruantiblock_openwrt>
@@ -42,9 +42,6 @@ class Config:
"NFTSET_CIDR", "NFTSET_CIDR",
"NFTSET_IP", "NFTSET_IP",
"NFTSET_DNSMASQ", "NFTSET_DNSMASQ",
"NFTSET_CIDR_USER",
"NFTSET_IP_USER",
"NFTSET_DNSMASQ_USER",
"NFTSET_CIDR_CFG", "NFTSET_CIDR_CFG",
"NFTSET_IP_CFG", "NFTSET_IP_CFG",
"NFTSET_DNSMASQ", "NFTSET_DNSMASQ",
@@ -503,25 +500,24 @@ class WriteConfigFiles(Config):
def write_ipset_config(self, ip_set, cidr_set): def write_ipset_config(self, ip_set, cidr_set):
with open(self.IP_DATA_FILE, "wt", buffering=self.write_buffer) as file_handler: with open(self.IP_DATA_FILE, "wt", buffering=self.write_buffer) as file_handler:
for i in (self.NFTSET_CIDR, self.NFTSET_IP, for i in (self.NFTSET_CIDR, self.NFTSET_IP):
self.NFTSET_CIDR_USER, self.NFTSET_IP_USER):
file_handler.write("flush set {} {}\n".format(self.NFT_TABLE, i)) file_handler.write("flush set {} {}\n".format(self.NFT_TABLE, i))
file_handler.write( file_handler.write(
"table {} {{\n{}".format(self.NFT_TABLE, self.NFTSET_IP_CFG) "table {} {{\n{}".format(self.NFT_TABLE, self.NFTSET_CIDR_CFG)
)
if len(ip_set) > 0:
file_handler.write("elements={")
for i in ip_set:
file_handler.write(f"{i},")
file_handler.write("};")
file_handler.write(
"}}\n{}".format(self.NFTSET_CIDR_CFG)
) )
if len(cidr_set) > 0: if len(cidr_set) > 0:
file_handler.write("elements={") file_handler.write("elements={")
for i in cidr_set: for i in cidr_set:
file_handler.write(f"{i},") file_handler.write(f"{i},")
file_handler.write("};") file_handler.write("};")
file_handler.write(
"}}\n{}".format(self.NFTSET_IP_CFG)
)
if len(ip_set) > 0:
file_handler.write("elements={")
for i in ip_set:
file_handler.write(f"{i},")
file_handler.write("};")
file_handler.write("}\n}\n") file_handler.write("}\n}\n")
def write_dnsmasq_config(self, fqdn_set): def write_dnsmasq_config(self, fqdn_set):
+1 -1
View File
@@ -5,7 +5,7 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=ruantiblock PKG_NAME:=ruantiblock
PKG_VERSION:=1.0 PKG_VERSION:=1.1
PKG_RELEASE:=0 PKG_RELEASE:=0
PKG_MAINTAINER:=gSpot <https://github.com/gSpotx2f/ruantiblock_openwrt> PKG_MAINTAINER:=gSpot <https://github.com/gSpotx2f/ruantiblock_openwrt>
@@ -58,8 +58,8 @@ VPN_PKTS_MARK=8
NFTSET_MAXELEM_IP=1000000 NFTSET_MAXELEM_IP=1000000
NFTSET_MAXELEM_DNSMASQ=65535 NFTSET_MAXELEM_DNSMASQ=65535
### Политика отбора элементов в сетах nftables. "performance" - производительность и большее потребление RAM. "memory" - хуже производительность и меньше потребление RAM ### Политика отбора элементов в сетах nftables. "performance" - производительность и большее потребление RAM. "memory" - хуже производительность и меньше потребление RAM
NFTSET_POLICY_CIDR="performance" NFTSET_POLICY_CIDR="memory"
NFTSET_POLICY_IP="performance" NFTSET_POLICY_IP="memory"
NFTSET_POLICY_DNSMASQ="performance" NFTSET_POLICY_DNSMASQ="performance"
### Таймаут для записей в сете $NFTSET_DNSMASQ ### Таймаут для записей в сете $NFTSET_DNSMASQ
NFTSET_DNSMASQ_TIMEOUT="1h" NFTSET_DNSMASQ_TIMEOUT="1h"
@@ -120,12 +120,12 @@ ZI_ALL_URL="https://raw.githubusercontent.com/zapret-info/z-i/master/dump.csv"
#ZI_ALL_URL="https://app.assembla.com/spaces/z-i/git/source/master/dump.csv?_format=raw" #ZI_ALL_URL="https://app.assembla.com/spaces/z-i/git/source/master/dump.csv?_format=raw"
AF_IP_URL="https://antifilter.download/list/allyouneed.lst" AF_IP_URL="https://antifilter.download/list/allyouneed.lst"
AF_FQDN_URL="https://antifilter.download/list/domains.lst" AF_FQDN_URL="https://antifilter.download/list/domains.lst"
RA_IP_IPSET_URL="https://raw.githubusercontent.com/gSpotx2f/ruantiblock_blacklist/master/blacklist-1.0/ip/ruantiblock.ip" RA_IP_IPSET_URL="https://raw.githubusercontent.com/gSpotx2f/ruantiblock_blacklist/master/blacklist-1.1/ip/ruantiblock.ip"
RA_IP_DMASK_URL="https://raw.githubusercontent.com/gSpotx2f/ruantiblock_blacklist/master/blacklist-1.0/ip/ruantiblock.dnsmasq" RA_IP_DMASK_URL="https://raw.githubusercontent.com/gSpotx2f/ruantiblock_blacklist/master/blacklist-1.1/ip/ruantiblock.dnsmasq"
RA_IP_STAT_URL="https://raw.githubusercontent.com/gSpotx2f/ruantiblock_blacklist/master/blacklist-1.0/ip/update_status" RA_IP_STAT_URL="https://raw.githubusercontent.com/gSpotx2f/ruantiblock_blacklist/master/blacklist-1.1/ip/update_status"
RA_FQDN_IPSET_URL="https://raw.githubusercontent.com/gSpotx2f/ruantiblock_blacklist/master/blacklist-1.0/fqdn/ruantiblock.ip" RA_FQDN_IPSET_URL="https://raw.githubusercontent.com/gSpotx2f/ruantiblock_blacklist/master/blacklist-1.1/fqdn/ruantiblock.ip"
RA_FQDN_DMASK_URL="https://raw.githubusercontent.com/gSpotx2f/ruantiblock_blacklist/master/blacklist-1.0/fqdn/ruantiblock.dnsmasq" RA_FQDN_DMASK_URL="https://raw.githubusercontent.com/gSpotx2f/ruantiblock_blacklist/master/blacklist-1.1/fqdn/ruantiblock.dnsmasq"
RA_FQDN_STAT_URL="https://raw.githubusercontent.com/gSpotx2f/ruantiblock_blacklist/master/blacklist-1.0/fqdn/update_status" RA_FQDN_STAT_URL="https://raw.githubusercontent.com/gSpotx2f/ruantiblock_blacklist/master/blacklist-1.1/fqdn/update_status"
RBL_ENCODING="" RBL_ENCODING=""
ZI_ENCODING="CP1251" ZI_ENCODING="CP1251"
AF_ENCODING="" AF_ENCODING=""
@@ -29,8 +29,6 @@ Info() {
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
printf ",\"dnsmasq\":" printf ",\"dnsmasq\":"
$NFT_CMD -j list set $NFT_TABLE "$NFTSET_DNSMASQ" 2> /dev/null $NFT_CMD -j list set $NFT_TABLE "$NFTSET_DNSMASQ" 2> /dev/null
printf ",\"dnsmasq_u\":"
$NFT_CMD -j list set $NFT_TABLE "$NFTSET_DNSMASQ_USER" 2> /dev/null
printf "}" printf "}"
fi fi
} }
@@ -38,16 +38,16 @@ NftCmdWrapper() {
return $_return_code return $_return_code
} }
IptVpnRouteDel() { NftVpnRouteDelete() {
$IP_CMD route flush table $VPN_ROUTE_TABLE_ID $IP_CMD route flush table $VPN_ROUTE_TABLE_ID
$IP_CMD rule del table $VPN_ROUTE_TABLE_ID $IP_CMD rule del table $VPN_ROUTE_TABLE_ID
} }
IptVpnRouteAdd() { NftVpnRouteAdd() {
VPN_IP=`$IP_CMD addr list dev $IF_VPN 2> /dev/null | $AWK_CMD '/inet/{sub("/[0-9]{1,2}$", "", $2); print $2; exit}'` VPN_IP=`$IP_CMD addr list dev $IF_VPN 2> /dev/null | $AWK_CMD '/inet/{sub("/[0-9]{1,2}$", "", $2); print $2; exit}'`
if [ -n "$VPN_IP" ]; then if [ -n "$VPN_IP" ]; then
echo 0 > /proc/sys/net/ipv4/conf/$IF_VPN/rp_filter echo 0 > /proc/sys/net/ipv4/conf/$IF_VPN/rp_filter
IptVpnRouteDel 2> /dev/null NftVpnRouteDelete 2> /dev/null
$IP_CMD rule add fwmark $VPN_PKTS_MARK table $VPN_ROUTE_TABLE_ID priority 1000 $IP_CMD rule add fwmark $VPN_PKTS_MARK table $VPN_ROUTE_TABLE_ID priority 1000
$IP_CMD route add default via $VPN_IP table $VPN_ROUTE_TABLE_ID $IP_CMD route add default via $VPN_IP table $VPN_ROUTE_TABLE_ID
fi fi
@@ -59,7 +59,7 @@ NftVpnRouteStatus() {
} }
NftMainAdd() { NftMainAdd() {
local _nft_sets="${NFTSET_CIDR} ${NFTSET_CIDR_USER} ${NFTSET_IP} ${NFTSET_IP_USER} ${NFTSET_DNSMASQ} ${NFTSET_DNSMASQ_USER}" _set local _nft_sets="${NFTSET_CIDR} ${NFTSET_IP} ${NFTSET_DNSMASQ}" _set
$NFT_CMD add chain $NFT_TABLE "$NFT_LOCAL_CLIENTS_CHAIN" { $LOCAL_CLIENTS_CHAIN_TYPE } $NFT_CMD add chain $NFT_TABLE "$NFT_LOCAL_CLIENTS_CHAIN" { $LOCAL_CLIENTS_CHAIN_TYPE }
$NFT_CMD add chain $NFT_TABLE "$NFT_ACTION_CHAIN" $NFT_CMD add chain $NFT_TABLE "$NFT_ACTION_CHAIN"
$NFT_CMD add chain $NFT_TABLE "$NFT_BLLIST_CHAIN" $NFT_CMD add chain $NFT_TABLE "$NFT_BLLIST_CHAIN"
@@ -84,7 +84,7 @@ NftMainAdd() {
NftCmdWrapper $NFT_CMD add rule $NFT_TABLE "$NFT_BLLIST_CHAIN" ip daddr "@${_set}" counter goto "$NFT_ACTION_CHAIN" NftCmdWrapper $NFT_CMD add rule $NFT_TABLE "$NFT_BLLIST_CHAIN" ip daddr "@${_set}" counter goto "$NFT_ACTION_CHAIN"
done done
if [ "$PROXY_MODE" = "2" ]; then if [ "$PROXY_MODE" = "2" ]; then
IptVpnRouteAdd NftVpnRouteAdd
fi fi
} }
@@ -97,7 +97,7 @@ NftMainDelete() {
$NFT_CMD delete chain $NFT_TABLE "$NFT_BLLIST_CHAIN" $NFT_CMD delete chain $NFT_TABLE "$NFT_BLLIST_CHAIN"
$NFT_CMD flush chain $NFT_TABLE "$NFT_ACTION_CHAIN" $NFT_CMD flush chain $NFT_TABLE "$NFT_ACTION_CHAIN"
$NFT_CMD delete chain $NFT_TABLE "$NFT_ACTION_CHAIN" $NFT_CMD delete chain $NFT_TABLE "$NFT_ACTION_CHAIN"
IptVpnRouteDel 2> /dev/null NftVpnRouteDelete 2> /dev/null
} }
NftLocalClientsAdd() { NftLocalClientsAdd() {
+24 -33
View File
@@ -70,8 +70,8 @@ export NFTSET_MAXELEM_CIDR=65535
export NFTSET_MAXELEM_IP=1000000 export NFTSET_MAXELEM_IP=1000000
export NFTSET_MAXELEM_DNSMASQ=65535 export NFTSET_MAXELEM_DNSMASQ=65535
### Политика отбора элементов в сетах nftables. "performance" - производительность и большее потребление RAM. "memory" - хуже производительность и меньше потребление RAM ### Политика отбора элементов в сетах nftables. "performance" - производительность и большее потребление RAM. "memory" - хуже производительность и меньше потребление RAM
export NFTSET_POLICY_CIDR="performance" export NFTSET_POLICY_CIDR="memory"
export NFTSET_POLICY_IP="performance" export NFTSET_POLICY_IP="memory"
export NFTSET_POLICY_DNSMASQ="performance" export NFTSET_POLICY_DNSMASQ="performance"
### Таймаут для записей в сете $NFTSET_DNSMASQ ### Таймаут для записей в сете $NFTSET_DNSMASQ
export NFTSET_DNSMASQ_TIMEOUT="1h" export NFTSET_DNSMASQ_TIMEOUT="1h"
@@ -131,12 +131,12 @@ export RBL_IP_URL="https://reestr.rublacklist.net/api/v3/ips/"
export ZI_ALL_URL="https://raw.githubusercontent.com/zapret-info/z-i/master/dump.csv" export ZI_ALL_URL="https://raw.githubusercontent.com/zapret-info/z-i/master/dump.csv"
export AF_IP_URL="https://antifilter.download/list/allyouneed.lst" export AF_IP_URL="https://antifilter.download/list/allyouneed.lst"
export AF_FQDN_URL="https://antifilter.download/list/domains.lst" export AF_FQDN_URL="https://antifilter.download/list/domains.lst"
export RA_IP_IPSET_URL="https://raw.githubusercontent.com/gSpotx2f/ruantiblock_blacklist/master/blacklist-1.0/ip/ruantiblock.ip" export RA_IP_IPSET_URL="https://raw.githubusercontent.com/gSpotx2f/ruantiblock_blacklist/master/blacklist-1.1/ip/ruantiblock.ip"
export RA_IP_DMASK_URL="https://raw.githubusercontent.com/gSpotx2f/ruantiblock_blacklist/master/blacklist-1.0/ip/ruantiblock.dnsmasq" export RA_IP_DMASK_URL="https://raw.githubusercontent.com/gSpotx2f/ruantiblock_blacklist/master/blacklist-1.1/ip/ruantiblock.dnsmasq"
export RA_IP_STAT_URL="https://raw.githubusercontent.com/gSpotx2f/ruantiblock_blacklist/master/blacklist-1.0/ip/update_status" export RA_IP_STAT_URL="https://raw.githubusercontent.com/gSpotx2f/ruantiblock_blacklist/master/blacklist-1.1/ip/update_status"
export RA_FQDN_IPSET_URL="https://raw.githubusercontent.com/gSpotx2f/ruantiblock_blacklist/master/blacklist-1.0/fqdn/ruantiblock.ip" export RA_FQDN_IPSET_URL="https://raw.githubusercontent.com/gSpotx2f/ruantiblock_blacklist/master/blacklist-1.1/fqdn/ruantiblock.ip"
export RA_FQDN_DMASK_URL="https://raw.githubusercontent.com/gSpotx2f/ruantiblock_blacklist/master/blacklist-1.0/fqdn/ruantiblock.dnsmasq" export RA_FQDN_DMASK_URL="https://raw.githubusercontent.com/gSpotx2f/ruantiblock_blacklist/master/blacklist-1.1/fqdn/ruantiblock.dnsmasq"
export RA_FQDN_STAT_URL="https://raw.githubusercontent.com/gSpotx2f/ruantiblock_blacklist/master/blacklist-1.0/fqdn/update_status" export RA_FQDN_STAT_URL="https://raw.githubusercontent.com/gSpotx2f/ruantiblock_blacklist/master/blacklist-1.1/fqdn/update_status"
export RBL_ENCODING="" export RBL_ENCODING=""
export ZI_ENCODING="CP1251" export ZI_ENCODING="CP1251"
export AF_ENCODING="" export AF_ENCODING=""
@@ -182,15 +182,12 @@ export NFTSET_ONION="onion"
export NFTSET_CIDR="c" export NFTSET_CIDR="c"
export NFTSET_IP="i" export NFTSET_IP="i"
export NFTSET_DNSMASQ="d" export NFTSET_DNSMASQ="d"
export NFTSET_CIDR_USER="cu"
export NFTSET_IP_USER="iu"
export NFTSET_DNSMASQ_USER="du"
export NFTSET_ALLOWED_HOSTS_TYPE="ipv4_addr" export NFTSET_ALLOWED_HOSTS_TYPE="ipv4_addr"
export NFTSET_CIDR_TYPE="ipv4_addr" export NFTSET_CIDR_TYPE="ipv4_addr"
export NFTSET_IP_TYPE="ipv4_addr" export NFTSET_IP_TYPE="ipv4_addr"
export NFTSET_DNSMASQ_TYPE="ipv4_addr" export NFTSET_DNSMASQ_TYPE="ipv4_addr"
export NFTSET_CIDR_CFG="set ${NFTSET_CIDR} {type ${NFTSET_CIDR_TYPE};size ${NFTSET_MAXELEM_CIDR};policy ${NFTSET_POLICY_CIDR};flags interval;auto-merge;" export NFTSET_CIDR_CFG="set ${NFTSET_CIDR} {type ${NFTSET_CIDR_TYPE};size ${NFTSET_MAXELEM_CIDR};policy ${NFTSET_POLICY_CIDR};flags interval;auto-merge;"
export NFTSET_IP_CFG="set ${NFTSET_IP} {type ${NFTSET_IP_TYPE};size ${NFTSET_MAXELEM_IP};policy ${NFTSET_POLICY_IP};" export NFTSET_IP_CFG="set ${NFTSET_IP} {type ${NFTSET_IP_TYPE};size ${NFTSET_MAXELEM_IP};policy ${NFTSET_POLICY_IP};flags dynamic;"
export UPDATE_STATUS_FILE="${DATA_DIR}/update_status" export UPDATE_STATUS_FILE="${DATA_DIR}/update_status"
U_PID_FILE="/var/run/${NAME}_update.pid" U_PID_FILE="/var/run/${NAME}_update.pid"
START_PID_FILE="/var/run/${NAME}_start.pid" START_PID_FILE="/var/run/${NAME}_start.pid"
@@ -214,9 +211,9 @@ Help() {
cat << EOF cat << EOF
Usage: `basename $0` start|force-start|stop|destroy|restart|reload|update|force-update|data-files|status|raw-status|html-info|help Usage: `basename $0` start|force-start|stop|destroy|restart|reload|update|force-update|data-files|status|raw-status|html-info|help
start : Start start : Start
force-start : Removing the pid-file before running force-start : Removing the PID-file before running
stop : Stop stop : Stop
destroy : Stop + remove nft table and clear all data files destroy : Stop, remove nft table and clear all data files
restart : Restart restart : Restart
reload : Renew nftables configuration reload : Renew nftables configuration
update : Update blacklist update : Update blacklist
@@ -273,7 +270,7 @@ DownloadRuabBlacklist() {
esac esac
} }
DnsmasqRestart() { RestartDnsmasq() {
eval `echo "$DNSMASQ_RESTART_CMD"` eval `echo "$DNSMASQ_RESTART_CMD"`
} }
@@ -288,13 +285,10 @@ FlushNftSets() {
AddNftSets() { AddNftSets() {
local _hosts local _hosts
$NFT_CMD add set $NFT_TABLE "$NFTSET_CIDR" { type "$NFTSET_CIDR_TYPE"\; size $NFTSET_MAXELEM_CIDR\; policy "$NFTSET_POLICY_CIDR"\; flags interval\; auto-merge\; } $NFT_CMD add set $NFT_TABLE "$NFTSET_CIDR" { type "$NFTSET_CIDR_TYPE"\; size $NFTSET_MAXELEM_CIDR\; policy "$NFTSET_POLICY_CIDR"\; flags interval\; auto-merge\; }
$NFT_CMD add set $NFT_TABLE "$NFTSET_CIDR_USER" { type "$NFTSET_CIDR_TYPE"\; size $NFTSET_MAXELEM_CIDR\; policy "$NFTSET_POLICY_CIDR"\; flags interval\; auto-merge\; } $NFT_CMD add set $NFT_TABLE "$NFTSET_IP" { type "$NFTSET_IP_TYPE"\; size $NFTSET_MAXELEM_IP\; policy "$NFTSET_POLICY_IP"\; flags dynamic\; }
$NFT_CMD add set $NFT_TABLE "$NFTSET_IP" { type "$NFTSET_IP_TYPE"\; size $NFTSET_MAXELEM_IP\; policy "$NFTSET_POLICY_IP"\; } $NFT_CMD add set $NFT_TABLE "$NFTSET_DNSMASQ" { type "$NFTSET_DNSMASQ_TYPE"\; size $NFTSET_MAXELEM_DNSMASQ\; policy "$NFTSET_POLICY_DNSMASQ"\; flags dynamic,timeout\; timeout "$NFTSET_DNSMASQ_TIMEOUT"\; }
$NFT_CMD add set $NFT_TABLE "$NFTSET_IP_USER" { type "$NFTSET_IP_TYPE"\; size $NFTSET_MAXELEM_IP\; policy "$NFTSET_POLICY_IP"\; } $NFT_CMD add set $NFT_TABLE "$NFTSET_ONION" { type "$NFTSET_DNSMASQ_TYPE"\; size $NFTSET_MAXELEM_DNSMASQ\; policy "$NFTSET_POLICY_DNSMASQ"\; flags dynamic,timeout\; timeout "$NFTSET_DNSMASQ_TIMEOUT"\; }
$NFT_CMD add set $NFT_TABLE "$NFTSET_DNSMASQ" { type "$NFTSET_DNSMASQ_TYPE"\; size $NFTSET_MAXELEM_DNSMASQ\; policy "$NFTSET_POLICY_DNSMASQ"\; flags timeout\; timeout "$NFTSET_DNSMASQ_TIMEOUT"\; } $NFT_CMD add set $NFT_TABLE "$NFTSET_ALLOWED_HOSTS" { type "$NFTSET_ALLOWED_HOSTS_TYPE"\; policy "$NFTSET_POLICY_IP"\; flags dynamic\; }
$NFT_CMD add set $NFT_TABLE "$NFTSET_DNSMASQ_USER" { type "$NFTSET_DNSMASQ_TYPE"\; size $NFTSET_MAXELEM_DNSMASQ\; policy "$NFTSET_POLICY_DNSMASQ"\; flags timeout\; timeout "$NFTSET_DNSMASQ_TIMEOUT"\; }
$NFT_CMD add set $NFT_TABLE "$NFTSET_ONION" { type "$NFTSET_DNSMASQ_TYPE"\; size $NFTSET_MAXELEM_DNSMASQ\; policy "$NFTSET_POLICY_DNSMASQ"\; flags timeout\; timeout "$NFTSET_DNSMASQ_TIMEOUT"\; }
$NFT_CMD add set $NFT_TABLE "$NFTSET_ALLOWED_HOSTS" { type "$NFTSET_ALLOWED_HOSTS_TYPE"\; policy "$NFTSET_POLICY_IP"\; }
_hosts=`printf "$ALLOWED_HOSTS_LIST" | $AWK_CMD '{gsub(/[ ]+/, ",", $0); printf $0;}'` _hosts=`printf "$ALLOWED_HOSTS_LIST" | $AWK_CMD '{gsub(/[ ]+/, ",", $0); printf $0;}'`
if [ -n "$_hosts" ]; then if [ -n "$_hosts" ]; then
$NFT_CMD add element $NFT_TABLE "$NFTSET_ALLOWED_HOSTS" { "$_hosts" } $NFT_CMD add element $NFT_TABLE "$NFTSET_ALLOWED_HOSTS" { "$_hosts" }
@@ -336,7 +330,7 @@ SetNetConfig() {
DropNetConfig() { DropNetConfig() {
DeleteNftRules DeleteNftRules
FlushNftSets "$NFTSET_ALLOWED_HOSTS" "$NFTSET_CIDR" "$NFTSET_CIDR_USER" "$NFTSET_IP" "$NFTSET_IP_USER" "$NFTSET_DNSMASQ" "$NFTSET_DNSMASQ_USER" "$NFTSET_ONION" FlushNftSets "$NFTSET_ALLOWED_HOSTS" "$NFTSET_CIDR" "$NFTSET_IP" "$NFTSET_DNSMASQ" "$NFTSET_ONION"
} }
DestroyNetConfig() { DestroyNetConfig() {
@@ -387,7 +381,7 @@ AddUserEntries() {
if(length(dns) > 0) { if(length(dns) > 0) {
printf "server=/%s/%s\n", val, dns >> ENVIRON["DNSMASQ_DATA_FILE"]; printf "server=/%s/%s\n", val, dns >> ENVIRON["DNSMASQ_DATA_FILE"];
}; };
printf "nftset=/%s/%s#%s\n", val, ENVIRON["NFT_TABLE_DNSMASQ"], ENVIRON["NFTSET_DNSMASQ_USER"] >> ENVIRON["DNSMASQ_DATA_FILE"]; printf "nftset=/%s/%s#%s\n", val, ENVIRON["NFT_TABLE_DNSMASQ"], ENVIRON["NFTSET_DNSMASQ"] >> ENVIRON["DNSMASQ_DATA_FILE"];
}; };
function writeFqdnEntries() { function writeFqdnEntries() {
delete fqdn_array[0]; delete fqdn_array[0];
@@ -408,12 +402,12 @@ AddUserEntries() {
}; };
} }
END { END {
printf "table %s {\nset %s {type %s;size %s;flags interval;auto-merge;", ENVIRON["NFT_TABLE"], ENVIRON["NFTSET_CIDR_USER"], ENVIRON["NFTSET_CIDR_TYPE"], ENVIRON["NFTSET_MAXELEM_CIDR"] >> ENVIRON["IP_DATA_FILE"]; printf "table %s {\n%s", ENVIRON["NFT_TABLE"], ENVIRON["NFTSET_CIDR_CFG"] >> ENVIRON["IP_DATA_FILE"];
delete cidr_array[0]; delete cidr_array[0];
if(length(cidr_array) > 0) { if(length(cidr_array) > 0) {
printf "elements={%s};", writeIpList(cidr_array) >> ENVIRON["IP_DATA_FILE"]; printf "elements={%s};", writeIpList(cidr_array) >> ENVIRON["IP_DATA_FILE"];
}; };
printf "}\nset %s {type %s;size %s;", ENVIRON["NFTSET_IP_USER"], ENVIRON["NFTSET_IP_TYPE"], ENVIRON["NFTSET_MAXELEM_IP"] >> ENVIRON["IP_DATA_FILE"]; printf "}\n%s", ENVIRON["NFTSET_IP_CFG"] >> ENVIRON["IP_DATA_FILE"];
delete ip_array[0]; delete ip_array[0];
if(length(ip_array) > 0) { if(length(ip_array) > 0) {
printf "elements={%s};", writeIpList(ip_array) >> ENVIRON["IP_DATA_FILE"]; printf "elements={%s};", writeIpList(ip_array) >> ENVIRON["IP_DATA_FILE"];
@@ -502,7 +496,7 @@ Update() {
echo " ${NAME} ${1}..." echo " ${NAME} ${1}..."
MakeLogRecord "notice" "${1}..." MakeLogRecord "notice" "${1}..."
if [ "$NFTSET_CLEAR_SETS" = "1" ]; then if [ "$NFTSET_CLEAR_SETS" = "1" ]; then
FlushNftSets "$NFTSET_CIDR" "$NFTSET_CIDR_USER" "$NFTSET_IP" "$NFTSET_IP_USER" "$NFTSET_DNSMASQ" "$NFTSET_DNSMASQ_USER" FlushNftSets "$NFTSET_CIDR" "$NFTSET_IP" "$NFTSET_DNSMASQ"
elif [ -z "$BLLIST_PRESET" -a -z "$BLLIST_MODULE" ]; then elif [ -z "$BLLIST_PRESET" -a -z "$BLLIST_MODULE" ]; then
FlushNftSets "$NFTSET_IP" "$NFTSET_CIDR" FlushNftSets "$NFTSET_IP" "$NFTSET_CIDR"
fi fi
@@ -523,13 +517,10 @@ Update() {
_return_code=1 _return_code=1
;; ;;
esac esac
FlushNftSets "$NFTSET_DNSMASQ" "$NFTSET_ONION" "$NFTSET_DNSMASQ_USER" FlushNftSets "$NFTSET_DNSMASQ" "$NFTSET_ONION"
if [ "$ADD_USER_ENTRIES" != "1" ]; then
FlushNftSets "$NFTSET_CIDR_USER" "$NFTSET_IP_USER"
fi
UpdateBllistSets UpdateBllistSets
_return_code=$? _return_code=$?
DnsmasqRestart RestartDnsmasq
ToggleUPIDFile del ToggleUPIDFile del
fi fi
MakeToken MakeToken
@@ -722,7 +713,7 @@ case "$1" in
ClearDataFiles ClearDataFiles
return_code=$? return_code=$?
ToggleUPIDFile del ToggleUPIDFile del
DnsmasqRestart RestartDnsmasq
StatusOutput StatusOutput
;; ;;
update|force-update) update|force-update)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 187 KiB

After

Width:  |  Height:  |  Size: 121 KiB