From 1525b5e2439786ede60a0b793b0fda7df2e161e1 Mon Sep 17 00:00:00 2001 From: Amir Zarrinkafsh Date: Tue, 29 Jan 2019 15:05:28 +1100 Subject: [PATCH] Add Dnsmasq variant of Unbound generation script --- scripts/create-dnsmasq.sh | 61 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 scripts/create-dnsmasq.sh diff --git a/scripts/create-dnsmasq.sh b/scripts/create-dnsmasq.sh new file mode 100644 index 0000000..e0e0d43 --- /dev/null +++ b/scripts/create-dnsmasq.sh @@ -0,0 +1,61 @@ +#!/bin/bash +basedir=".." +outputdir="output/dnsmasq" +path="${basedir}/cache_domains.json" + +export IFS=' ' + +test=$(which jq); +out=$? +if [ $out -gt 0 ] ; then + echo "This script requires jq to be installed." + echo "Your package manager should be able to find it" + exit 1 +fi + +cachenamedefault="disabled" + +while read line; do + ip=$(jq -r ".ips[\"${line}\"]" config.json) + declare "cacheip$line"="$ip" +done <<< $(jq -r '.ips | to_entries[] | .key' config.json) + +while read line; do + name=$(jq -r ".cache_domains[\"${line}\"]" config.json) + declare "cachename$line"="$name" +done <<< $(jq -r '.cache_domains | to_entries[] | .key' config.json) + +rm -rf ${outputdir} +mkdir -p ${outputdir} +while read entry; do + unset cacheip + unset cachename + key=$(jq -r ".cache_domains[$entry].name" $path) + cachename="cachename${key}" + if [ -z "${!cachename}" ]; then + cachename="cachenamedefault" + fi + if [[ ${!cachename} == "disabled" ]]; then + continue; + fi + cacheipname="cacheip${!cachename}" + cacheip=${!cacheipname} + while read fileid; do + while read filename; do + destfilename=$(echo $filename | sed -e 's/txt/conf/') + outputfile=${outputdir}/${destfilename} + touch $outputfile + while read fileentry; do + # Ignore comments + if [[ $fileentry == \#* ]]; then + continue + fi + parsed=$(echo $fileentry | sed -e "s/^\*\.//") + if grep -q "$parsed" $outputfile; then + continue + fi + echo "address=/${parsed}/${cacheip}" >> $outputfile + done <<< $(cat ${basedir}/$filename); + done <<< $(jq -r ".cache_domains[$entry].domain_files[$fileid]" $path) + done <<< $(jq -r ".cache_domains[$entry].domain_files | to_entries[] | .key" $path) +done <<< $(jq -r '.cache_domains | to_entries[] | .key' $path)