From dec3811066d505a820a9927dc683876a8fef4563 Mon Sep 17 00:00:00 2001 From: Kevin Brierly <72642660+kbrierly@users.noreply.github.com> Date: Sun, 13 Nov 2022 20:54:52 -0600 Subject: [PATCH 1/2] Create create-blocky.sh Add create script for blocky custom dns yaml configuration --- scripts/create-blocky.sh | 88 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 scripts/create-blocky.sh diff --git a/scripts/create-blocky.sh b/scripts/create-blocky.sh new file mode 100644 index 00000000..f001fcbb --- /dev/null +++ b/scripts/create-blocky.sh @@ -0,0 +1,88 @@ +#!/bin/bash +basedir=".." +outputdir="output/blocky" +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 -r line; do + ip=$(jq ".ips[\"${line}\"]" config.json) + declare "cacheip${line}"="${ip}" +done <<< $(jq -r '.ips | to_entries[] | .key' config.json) + + +while read -r 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} +outputfile=${outputdir}/custom_dns.yml + +cat > $outputfile << EOF +customDNS: + customTTL: 1h + filterUnmappedTypes: true + mapping: +EOF + +while read -r entry; do + unset cacheip + unset cachename + unset cacheip_count + unset ciplist + 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=$(jq -r 'if type == "array" then .[] else . end' <<< ${!cacheipname} | xargs) + while read -r fileid; do + while read -r filename; do + while read -r fileentry; do + # Ignore comments, newlines and wildcards + if [[ ${fileentry} == \#* ]] || [[ -z ${fileentry} ]]; then + continue + fi + parsed=$(echo ${fileentry} | sed -e "s/^\*\.//") + cacheip_count=1 + for i in ${cacheip}; do + if [ $cacheip_count -gt 1 ] + then + ciplist="${ciplist}, ${i}" + else + ciplist="${i}" + fi + cacheip_count=$((cacheip_count+1)) + done + if grep -qx " ${parsed}: ${ciplist}" "${outputfile}"; then + continue + fi + echo " ${parsed}: ${ciplist}" >> "${outputfile}" + done <<< $(cat ${basedir}/${filename} | sort); + 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}) + +cat << EOF +Configuration generation completed. + +Please copy output/blocky/custom_dns.yml to your blocky config directory, or integrate +it into your mail config.yml + +EOF From 56a6d2f00f0dbf272c9e3f8fbf8938357aae48c9 Mon Sep 17 00:00:00 2001 From: Kevin Brierly <72642660+kbrierly@users.noreply.github.com> Date: Sun, 13 Nov 2022 21:21:13 -0600 Subject: [PATCH 2/2] Update create-blocky.sh --- scripts/create-blocky.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/create-blocky.sh b/scripts/create-blocky.sh index f001fcbb..3a5ea2ce 100644 --- a/scripts/create-blocky.sh +++ b/scripts/create-blocky.sh @@ -83,6 +83,6 @@ cat << EOF Configuration generation completed. Please copy output/blocky/custom_dns.yml to your blocky config directory, or integrate -it into your mail config.yml +it into your main config.yml EOF