@@ -35,29 +35,35 @@ readonly dnsmasqAddnhostsGzip="${packageName}.dnsmasq.addnhosts.gz"
3535readonly dnsmasqAddnhostsOutputFormatFilter=' s|^|127.0.0.1 |;s|$||'
3636readonly dnsmasqAddnhostsOutputFormatFilterIPv6=' s|^|:: |;s|$||'
3737readonly dnsmasqAddnhostsOutputParseFilter=' s|^127.0.0.1 ||;s|^:: ||;'
38+ readonly dnsmasqAddnhostsGrepPatternIPv4=' s|^|^127\.0\.0\.1 |'
39+ readonly dnsmasqAddnhostsGrepPatternIPv6=' s|^|^:: |'
3840readonly dnsmasqConfFile=" $dnsmasqUnifiedFile "
3941readonly dnsmasqConfCache=" /var/run/${packageName} /dnsmasq.conf.cache"
4042readonly dnsmasqConfGzip=" ${packageName} .dnsmasq.conf.gz"
4143readonly dnsmasqConfOutputFormatFilter=' s|^|local=/|;s|$|/|'
4244readonly dnsmasqConfOutputParseFilter=' s|local=/||;s|/$||;'
45+ readonly dnsmasqConfGrepPattern=' s|^|^local=/|;s|$|/$|'
4346readonly dnsmasqIpsetFile=" $dnsmasqUnifiedFile "
4447readonly dnsmasqIpsetCache=" /var/run/${packageName} /dnsmasq.ipset.cache"
4548readonly dnsmasqIpsetGzip=" ${packageName} .dnsmasq.ipset.gz"
4649readonly dnsmasqIpsetOutputFormatFilter=' s|^|ipset=/|;s|$|/adb|'
4750readonly dnsmasqIpsetOutputParseFilter=' s|ipset=/||;s|/adb$||;'
51+ readonly dnsmasqIpsetGrepPattern=' s|^|^ipset=/|;s|$|/adb$|'
4852readonly dnsmasqNftsetFile=" $dnsmasqUnifiedFile "
4953readonly dnsmasqNftsetCache=" /var/run/${packageName} /dnsmasq.nftset.cache"
5054readonly dnsmasqNftsetGzip=" ${packageName} .dnsmasq.nftset.gz"
5155readonly dnsmasqNftsetOutputFormatFilter=' s|^|nftset=/|;s|$|/4#inet#fw4#adb4|'
5256readonly dnsmasqNftsetOutputFormatFilterIPv6=' s|^|nftset=/|;s|$|/4#inet#fw4#adb4,6#inet#fw4#adb6|'
5357readonly dnsmasqNftsetOutputParseFilter=' s|nftset=/||;s|/4#.*$||;'
58+ readonly dnsmasqNftsetGrepPattern=' s|^|^nftset=/|;s|$|/4#.*$|'
5459readonly dnsmasqServersFile=" /var/run/${packageName} /dnsmasq.servers"
5560readonly dnsmasqServersCache=" /var/run/${packageName} /dnsmasq.servers.cache"
5661readonly dnsmasqServersGzip=" ${packageName} .dnsmasq.servers.gz"
5762readonly dnsmasqServersOutputFormatFilter=' s|^|server=/|;s|$|/|'
5863readonly dnsmasqServersAllowFilter=' s|(.*)|server=/\1/#|'
5964readonly dnsmasqServersBlockedCountFilter=' \|/#|d'
6065readonly dnsmasqServersOutputParseFilter=' s|server=/||;s|/.*$||;'
66+ readonly dnsmasqServersGrepPattern=' s|^|^server=/|;s|$|/$|'
6167readonly smartdnsDomainSetFile=" /var/run/${packageName} /smartdns.domainset"
6268readonly smartdnsDomainSetCache=" /var/run/${packageName} /smartdns.domainset.cache"
6369readonly smartdnsDomainSetConfig=" /var/run/${packageName} /smartdns.domainset.conf"
@@ -81,13 +87,7 @@ readonly unboundCache="/var/run/${packageName}/unbound.cache"
8187readonly unboundGzip=" ${packageName} .unbound.gz"
8288readonly unboundOutputFormatFilter=' s|^|local-zone: "|;s|$|." always_nxdomain|'
8389readonly unboundOutputParseFilter=' s|^local-zone: "||;s|." always_nxdomain$||;'
84- # Grep pattern generators (for invalid entry removal)
85- readonly dnsmasqConfGrepPattern=' s|^|^local=/|;s|$|/$|'
86- readonly dnsmasqIpsetGrepPattern=' s|^|^ipset=/|;s|$|/adb$|'
87- readonly dnsmasqNftsetGrepPattern=' s|^|^nftset=/|;s|$|/4#.*$|'
88- readonly dnsmasqServersGrepPattern=' s|^|^server=/|;s|$|/$|'
89- readonly dnsmasqAddnhostsGrepPatternIPv4=' s|^|^127\.0\.0\.1 |'
90- readonly dnsmasqAddnhostsGrepPatternIPv6=' s|^|^:: |'
90+
9191readonly ALLOWED_TMP=" /var/${packageName} .allowed.tmp"
9292readonly A_TMP=" /var/${packageName} .a.tmp"
9393readonly B_TMP=" /var/${packageName} .b.tmp"
@@ -97,9 +97,10 @@ readonly runningConfigFile="/dev/shm/${packageName}"
9797readonly runningStatusFile=" /dev/shm/${packageName} .status.json"
9898readonly runningStatusFileLock=" /var/lock/${packageName} .lock"
9999readonly hostsFilter=' /localhost/d;/^#/d;/^[^0-9]/d;s/^0\.0\.0\.0.//;s/^127\.0\.0\.1.//;s/[[:space:]]*#.*$//;s/[[:cntrl:]]$//;s/[[:space:]]//g;/[`~!@#\$%\^&\*()=+;:"' \' ' ,<>?/\|[{}]/d;/]/d;/\./!d;/^$/d;/[^[:alnum:]_.-]/d;'
100- # Restrictive filter (commented out due to over-filtering)
101- # readonly domainsFilter='/^#/d;s/[[:space:]]*#.*|[[:space:]]*$|[[:cntrl:]]$//g;/^[[:space:]]*$/d;/^-|^\.|\.\.|-$|\.$|^[0-9.]+$|^[^[:alnum:]]|[`~!@#\$%\^&\*()=+;:"'"'"',<>?/\|{}]/d;/\./!d'
102- readonly domainsFilter=' /^#/d;s/[[:space:]]*#.*|[[:space:]]*$|[[:cntrl:]]$//g;/^[[:space:]]*$/d;/^[^[:alnum:]._-]|[`~!@#\$%\^&\*()=+;:"' " '" ' ,<>?/\|{}]/d'
100+ # Validating domains filter
101+ readonly domainsFilter=' /^#/d;s/[[:space:]]*#.*|[[:space:]]*$|[[:cntrl:]]$//g;/^[[:space:]]*$/d;/^-|^\.|\.\.|-$|\.$|^[0-9.]+$|^[^[:alnum:]]|[`~!@#\$%\^&\*()=+;:"' " '" ' ,<>?/\|{}]/d;/\./!d'
102+ # Lax domains filter
103+ # readonly domainsFilter='/^#/d;s/[[:space:]]*#.*|[[:space:]]*$|[[:cntrl:]]$//g;/^[[:space:]]*$/d;/^[^[:alnum:]._-]|[`~!@#\$%\^&\*()=+;:"'"'"',<>?/\|{}]/d;/\./!d'
103104readonly adBlockPlusFilter=' /^#/d;/^!/d;s/[[:space:]]*#.*$//;s/^||//;s/\^$//;s/[[:space:]]*$//;s/[[:cntrl:]]$//;/[[:space:]]/d;/[`~!@#\$%\^&\*()=+;:"' \' ' ,<>?/\|[{}]/d;/]/d;/\./!d;/^$/d;/[^[:alnum:]_.-]/d;'
104105readonly dnsmasqFileFilter=' \|^server=/[[:alnum:]_.-].*/|!d;s|server=/||;s|/.*$||'
105106readonly dnsmasq2FileFilter=' \|^local=/[[:alnum:]_.-].*/|!d;s|local=/||;s|/.*$||'
0 commit comments