Refactor Dnsmasq script to support multiple cache ips

This change is a continuation of #54, it modifies the output of the dnsmasq script to host file format which allows round robin DNS entries.

There is a caveat with round robin DNS entries in dnsmasq, they only supports a single address for wildcard domains, for example: *.cdn.blizzard.com.

If previously you had the generated .conf files dumped into a directory where dnsmasq automatically loaded on start-up, you will need to create config that loads all the host files, for example:

**lancache.conf**
```conf
addn-hosts=/etc/dnsmasq/conf.d/blizzard.hosts
addn-hosts=/etc/dnsmasq/conf.d/steam.hosts
addn-hosts=/etc/dnsmasq/conf.d/uplay.hosts
```

Closes #107.
This commit is contained in:
Amir Zarrinkafsh 2020-06-06 20:32:24 +10:00
parent a5eab76953
commit 85f05fcc77
No known key found for this signature in database
GPG key ID: ECDB8EF9E77E4EBF

View file

@ -42,7 +42,7 @@ while read -r entry; do
cacheip=$(jq -r 'if type == "array" then .[] else . end' <<< ${!cacheipname} | xargs)
while read -r fileid; do
while read -r filename; do
destfilename=$(echo $filename | sed -e 's/txt/conf/')
destfilename=$(echo $filename | sed -e 's/txt/hosts/')
outputfile=${outputdir}/${destfilename}
touch "$outputfile"
while read -r fileentry; do
@ -55,7 +55,7 @@ while read -r entry; do
continue
fi
for i in ${cacheip}; do
echo "address=/${parsed}/${i}" >> "$outputfile"
echo "${i} ${parsed}" >> "$outputfile"
done
done <<< $(cat ${basedir}/$filename);
done <<< $(jq -r ".cache_domains[$entry].domain_files[$fileid]" $path)