antizapret-pac-generator-light/scripts/generate-pac-domains.awk

59 lines
1.4 KiB
Awk
Raw Normal View History

2019-12-01 04:58:25 +03:00
{
domainzone = gensub(/(.*)\.([^.]+$)/, "\\2", 1)
domainname = gensub(/(.*)\.([^.]+$)/, "\\1", 1)
}
@include "temp/replace-common-sequences.awk"
{
2019-12-01 04:58:25 +03:00
domainlength = length(domainname)
domainarray[domainzone][domainlength][domainname] = domainname
#print "adding", $0, ":", domainzone, domainlength, domainname
}
function printarray(arrname, arr) {
firsttime_1 = 1
firsttime_2 = 1
print arrname, "= {"
for (domainzone in arr) {
if (firsttime_1 == 0) {printf ",\n"} firsttime_1 = 0;
2024-03-24 14:32:07 +03:00
printf "\"" domainzone "\":{"
2019-12-01 04:58:25 +03:00
for (domainlength in arr[domainzone]) {
2024-03-24 14:32:07 +03:00
if (firsttime_2 == 0) {printf ","} firsttime_2 = 0;
printf "%s", "" domainlength ":"
printf "%d", length(arr[domainzone][domainlength]) * domainlength
#for (domainname in arr[domainzone][domainlength]) {
# printf "%d", length(domainname)
#}
#printf "\""
}
firsttime_2 = 1;
printf "}"
}
print "};"
}
2019-12-01 04:58:25 +03:00
2024-03-24 14:32:07 +03:00
function printarray_oneline(arr) {
for (domainzone in arr) {
for (domainlength in arr[domainzone]) {
2019-12-01 04:58:25 +03:00
for (domainname in arr[domainzone][domainlength]) {
printf "%s", domainname
}
}
}
}
# Final function
END {
2024-03-24 14:32:07 +03:00
if (lzp) {
printarray_oneline(domainarray)
} else {
printarray("domains", domainarray)
}
2019-12-01 04:58:25 +03:00
}