User_entries changes.

This commit is contained in:
gSpot
2023-02-08 01:00:46 +03:00
parent 5d2c716795
commit 5b57b94e9d
+18 -9
View File
@@ -363,13 +363,20 @@ PreStartCheck() {
AddUserEntries() { AddUserEntries() {
if [ "$ADD_USER_ENTRIES" = "1" ]; then if [ "$ADD_USER_ENTRIES" = "1" ]; then
if [ -f "$USER_ENTRIES_FILE" -a -s "$USER_ENTRIES_FILE" ]; then if [ -f "$USER_ENTRIES_FILE" ]; then
$AWK_CMD 'BEGIN { $AWK_CMD 'BEGIN {
null=""; null="";
ip_array[0]=null;
cidr_array[0]=null;
fqdn_array[0]=null; fqdn_array[0]=null;
ip_list="";
cidr_list="";
} }
function writeIpList(array, _str) {
_str="";
for(i in array) {
_str=_str i ",";
};
return _str;
};
function writeDNSData(val, dns) { function writeDNSData(val, dns) {
if(length(dns) == 0 && length(ENVIRON["USER_ENTRIES_DNS"]) > 0) { if(length(dns) == 0 && length(ENVIRON["USER_ENTRIES_DNS"]) > 0) {
dns=ENVIRON["USER_ENTRIES_DNS"]; dns=ENVIRON["USER_ENTRIES_DNS"];
@@ -388,10 +395,10 @@ AddUserEntries() {
}; };
($0 !~ /^([\040\011]*$|#)/) { ($0 !~ /^([\040\011]*$|#)/) {
if($0 ~ /^[0-9]{1,3}([.][0-9]{1,3}){3}$/) { if($0 ~ /^[0-9]{1,3}([.][0-9]{1,3}){3}$/) {
ip_list=ip_list $0 ","; ip_array[$0]=null;
} }
else if($0 ~ /^[0-9]{1,3}([.][0-9]{1,3}){3}[\057][0-9]{1,2}$/) { else if($0 ~ /^[0-9]{1,3}([.][0-9]{1,3}){3}[\057][0-9]{1,2}$/) {
cidr_list=cidr_list $0 ","; cidr_array[$0]=null;
} }
else if($0 ~ /^[a-z0-9.\052-]+[.]([a-z]{2,}|xn--[a-z0-9]+)([ ][0-9]{1,3}([.][0-9]{1,3}){3}([#][0-9]{2,5})?)?$/) { else if($0 ~ /^[a-z0-9.\052-]+[.]([a-z]{2,}|xn--[a-z0-9]+)([ ][0-9]{1,3}([.][0-9]{1,3}){3}([#][0-9]{2,5})?)?$/) {
fqdn_array[length(fqdn_array)]=$1 " " $2; fqdn_array[length(fqdn_array)]=$1 " " $2;
@@ -399,12 +406,14 @@ 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 {\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"];
if(length(cidr_list) > 0) { delete cidr_array[0];
printf "elements={%s};", cidr_list >> ENVIRON["IP_DATA_FILE"]; if(length(cidr_array) > 0) {
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 "}\nset %s {type %s;size %s;", ENVIRON["NFTSET_IP_USER"], ENVIRON["NFTSET_IP_TYPE"], ENVIRON["NFTSET_MAXELEM_IP"] >> ENVIRON["IP_DATA_FILE"];
if(length(ip_list) > 0) { delete ip_array[0];
printf "elements={%s};", ip_list >> ENVIRON["IP_DATA_FILE"]; if(length(ip_array) > 0) {
printf "elements={%s};", writeIpList(ip_array) >> ENVIRON["IP_DATA_FILE"];
}; };
printf "}\n}\n" >> ENVIRON["IP_DATA_FILE"]; printf "}\n}\n" >> ENVIRON["IP_DATA_FILE"];
writeFqdnEntries(); writeFqdnEntries();