From b4431bcfaa38ccdb3d96c66e8febe1d4bdf401cc Mon Sep 17 00:00:00 2001
From: Amir Zarrinkafsh <nightah@me.com>
Date: Thu, 22 Oct 2020 19:56:07 +1100
Subject: [PATCH] Fix wildcard domains in dnsmasq script (#143)

While #140 added support for round-robin DNS the script needs a slight modification to ensure that wildcard domains are still added with the old method due to dnsmasq limitations.
This change will include all wildcard domains in the generated `lancache.conf` along with all the `addn-hosts=` entries.
---
 scripts/create-dnsmasq.sh | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/scripts/create-dnsmasq.sh b/scripts/create-dnsmasq.sh
index ab32a80..559fd59 100755
--- a/scripts/create-dnsmasq.sh
+++ b/scripts/create-dnsmasq.sh
@@ -44,9 +44,25 @@ while read -r entry; do
         while read -r fileid; do
                 while read -r filename; do
                         destfilename=$(echo $filename | sed -e 's/txt/hosts/')
+                        lancacheconf=${outputdir}/lancache.conf
                         outputfile=${outputdir}/${destfilename}
-                        echo "addn-hosts=/etc/dnsmasq.d/${destfilename}" >> ${outputdir}/lancache.conf
+                        echo "addn-hosts=/etc/dnsmasq.d/${destfilename}" >> ${lancacheconf}
                         touch "$outputfile"
+                        # Wildcard entries
+                        while read -r fileentry; do
+                                # Ignore comments
+                                if [[ $fileentry == \#* ]]; then
+                                        continue
+                                fi
+                                wildcard=$(echo $fileentry | grep "*." | sed -e "s/^\*\.//")
+                                if grep -q "$wildcard" "$lancacheconf"; then
+                                        continue
+                                fi
+                                for i in ${cacheip}; do
+                                        echo "address=/${wildcard}/${i}" >> "$lancacheconf"
+                                done
+                        done <<< $(cat ${basedir}/$filename);
+                        # All other entries
                         while read -r fileentry; do
                                 # Ignore comments
                                 if [[ $fileentry == \#* ]]; then