mirror of
https://github.com/uklans/cache-domains
synced 2024-11-24 20:33:03 +00:00
Add script to create the acl files for squid
Importing these files into squid and creating the relevant upstream proxies is left as an exercise for the user!
This commit is contained in:
parent
0cf9233dc1
commit
6730915c73
1 changed files with 68 additions and 0 deletions
68
scripts/create-squid.sh
Executable file
68
scripts/create-squid.sh
Executable file
|
@ -0,0 +1,68 @@
|
|||
#!/bin/bash
|
||||
basedir=".."
|
||||
outputdir="output/squid"
|
||||
path="${basedir}/cache_domains.json"
|
||||
REGEX="^\\*\\.(.*)$"
|
||||
|
||||
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
|
||||
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 -r entry; do
|
||||
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
|
||||
while read -r fileid; do
|
||||
while read -r filename; do
|
||||
destfilename=$(echo ${!cachename}.txt)
|
||||
outputfile=${outputdir}/${destfilename}
|
||||
touch ${outputfile}
|
||||
while read -r fileentry; do
|
||||
# Ignore comments
|
||||
if [[ ${fileentry} == \#* ]] || [[ -z ${fileentry} ]]; then
|
||||
continue
|
||||
fi
|
||||
# Handle wildcards to squid wildcards
|
||||
parsed=$(echo ${fileentry} | sed -e "s/^\*\./\./")
|
||||
# If we have cdn.thing and *.cdn.thing in cache_domains
|
||||
# Squid requires ONLY cdn.thing
|
||||
if [[ ${fileentry} =~ $REGEX ]]; then
|
||||
grep "${BASH_REMATCH[1]}" ${basedir}/${filename} | grep -v "${fileentry}" > /dev/null
|
||||
if [[ $? -eq 0 ]]; then
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "${parsed}" >> "${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 the following files:
|
||||
- ./${outputdir}/*.txt to /etc/squid/domains/
|
||||
EOF
|
Loading…
Reference in a new issue