mirror of
https://github.com/gSpotx2f/ruantiblock_openwrt.git
synced 2026-05-14 14:40:58 +00:00
v1.0. Support for nftables and dnsmasq 2.88.
This commit is contained in:
@@ -37,10 +37,11 @@ class Config:
|
||||
"BLLIST_GR_EXCLUDED_NETS",
|
||||
"BLLIST_MIN_ENTRIES",
|
||||
"BLLIST_STRIP_WWW",
|
||||
"DATA_DIR",
|
||||
"IPSET_DNSMASQ",
|
||||
"IPSET_IP_TMP",
|
||||
"IPSET_CIDR_TMP",
|
||||
"NFT_TABLE",
|
||||
"NFT_TABLE_DNSMASQ",
|
||||
"NFTSET_CIDR_CFG",
|
||||
"NFTSET_IP_CFG",
|
||||
"NFTSET_DNSMASQ",
|
||||
"DNSMASQ_DATA_FILE",
|
||||
"IP_DATA_FILE",
|
||||
"UPDATE_STATUS_FILE",
|
||||
@@ -49,10 +50,10 @@ class Config:
|
||||
"ZI_ALL_URL",
|
||||
"AF_IP_URL",
|
||||
"AF_FQDN_URL",
|
||||
"RA_IP_IPSET_URL",
|
||||
"RA_IP_NFTSET_URL",
|
||||
"RA_IP_DMASK_URL",
|
||||
"RA_IP_STAT_URL",
|
||||
"RA_FQDN_IPSET_URL",
|
||||
"RA_FQDN_NFTSET_URL",
|
||||
"RA_FQDN_DMASK_URL",
|
||||
"RA_FQDN_STAT_URL",
|
||||
"RBL_ENCODING",
|
||||
@@ -131,18 +132,18 @@ class FieldValueError(ParserError):
|
||||
|
||||
class BlackListParser(Config):
|
||||
def __init__(self):
|
||||
self.ip_pattern = re.compile("(([0-9]{1,3}[.]){3})[0-9]{1,3}")
|
||||
self.cidr_pattern = re.compile("([0-9]{1,3}[.]){3}[0-9]{1,3}/[0-9]{1,2}")
|
||||
self.ip_pattern = re.compile(r"(([0-9]{1,3}[.]){3})[0-9]{1,3}")
|
||||
self.cidr_pattern = re.compile(r"([0-9]{1,3}[.]){3}[0-9]{1,3}/[0-9]{1,2}")
|
||||
self.fqdn_pattern = re.compile(
|
||||
"([а-яёa-z0-9_.*-]*?)([а-яёa-z0-9_-]+[.][а-яёa-z0-9-]+)",
|
||||
r"([а-яёa-z0-9_.*-]*?)([а-яёa-z0-9_-]+[.][а-яёa-z0-9-]+)",
|
||||
re.U)
|
||||
self.www_pattern = re.compile("^www[0-9]?[.]")
|
||||
self.cyr_pattern = re.compile("[а-яё]", re.U)
|
||||
self.fqdn_set = {}
|
||||
self.sld_dict = {}
|
||||
self.www_pattern = re.compile(r"^www[0-9]?[.]")
|
||||
self.cyr_pattern = re.compile(r"[а-яё]", re.U)
|
||||
self.cidr_set = set()
|
||||
self.ip_set = {}
|
||||
self.ip_subnet_dict = {}
|
||||
self.cidr_set = set()
|
||||
self.fqdn_set = {}
|
||||
self.sld_dict = {}
|
||||
self.cidr_count = 0
|
||||
self.ip_count = 0
|
||||
self.output_fqdn_count = 0
|
||||
@@ -256,7 +257,7 @@ class BlackListParser(Config):
|
||||
subnet = self._get_subnet(i)
|
||||
if subnet in self.BLLIST_GR_EXCLUDED_NETS or (
|
||||
not self.BLLIST_IP_LIMIT or (
|
||||
subnet not in self.ip_subnet_dict or self.ip_subnet_dict[subnet] <= self.BLLIST_IP_LIMIT
|
||||
subnet not in self.ip_subnet_dict or self.ip_subnet_dict[subnet] < self.BLLIST_IP_LIMIT
|
||||
)
|
||||
):
|
||||
self.ip_set[i] = subnet
|
||||
@@ -496,18 +497,31 @@ class WriteConfigFiles(Config):
|
||||
|
||||
def write_ipset_config(self, ip_set, cidr_set):
|
||||
with open(self.IP_DATA_FILE, "wt", buffering=self.write_buffer) as file_handler:
|
||||
for i in ip_set:
|
||||
file_handler.write(f"add {self.IPSET_IP_TMP} {i}\n")
|
||||
for i in cidr_set:
|
||||
file_handler.write(f"add {self.IPSET_CIDR_TMP} {i}\n")
|
||||
file_handler.write(
|
||||
"table {} {{\n{}".format(self.NFT_TABLE, 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{}".format(self.NFTSET_CIDR_CFG)
|
||||
)
|
||||
if len(cidr_set) > 0:
|
||||
file_handler.write("elements={")
|
||||
for i in cidr_set:
|
||||
file_handler.write(f"{i},")
|
||||
file_handler.write("};")
|
||||
file_handler.write("}\n}\n")
|
||||
|
||||
def write_dnsmasq_config(self, fqdn_set):
|
||||
with open(self.DNSMASQ_DATA_FILE, "wt", buffering=self.write_buffer) as file_handler:
|
||||
for fqdn in fqdn_set:
|
||||
file_handler.write(
|
||||
f"server=/{fqdn}/{self.BLLIST_ALT_DNS_ADDR}\nipset=/{fqdn}/{self.IPSET_DNSMASQ}\n"
|
||||
f"server=/{fqdn}/{self.BLLIST_ALT_DNS_ADDR}\nnftset=/{fqdn}/{self.NFT_TABLE_DNSMASQ}#{self.NFTSET_DNSMASQ}\n"
|
||||
if self.BLLIST_ALT_NSLOOKUP else
|
||||
f"ipset=/{fqdn}/{self.IPSET_DNSMASQ}\n")
|
||||
f"nftset=/{fqdn}/{self.NFT_TABLE_DNSMASQ}#{self.NFTSET_DNSMASQ}\n")
|
||||
|
||||
def write_update_status_file(self, ip_count, cidr_count, output_fqdn_count):
|
||||
with open(self.UPDATE_STATUS_FILE, "wt") as file_handler:
|
||||
|
||||
Reference in New Issue
Block a user