Compare commits

...

10 Commits

Author SHA1 Message Date
Markus Palm
e53c32f5d6
Merge a036429193 into e7fc17ae5b 2025-07-18 17:49:31 +03:00
Amir Zarrinkafsh
e7fc17ae5b
fix(wsus): add missing domains (#269)
This change looks to address some missing domains that seem to be included in the [11notes/windows-update-cache](https://github.com/11notes/docker-windows-update-cache/blob/main/rootfs/etc/nginx/.default/nginx.conf) project.

Closes #231.
2025-07-18 14:08:04 +01:00
Amir Zarrinkafsh
914630b45b
fix(nintendo): remove obsolete entry (#266)
The domain in question is already covered by a wildcard defined further in the list. In AdGuard Home this was causing said domain to have a round-robin DNS entry with the same IP twice.
2025-07-18 10:04:48 +01:00
Amir Zarrinkafsh
0fb55395bb
fix: explicitly specify ipv4 addresses in adguard script (#265)
* fix: explicitly specify ipv4 addresses

This change fixes the AdGuard Home generation script by disabling the return of ipv6 addresses. This would have been causing issues for users who are running dual stack with the addresses that accept both ipv4 and ipv6 traffic.

* fix: explicitly block returning on ipv6 queries
2025-07-18 09:39:48 +01:00
Robert Pendell
8d958802a5
Fix line endings so that scripts generate correctly. (#264) 2025-07-17 07:49:50 +01:00
James Kinsman
490f1d2c23
Merge pull request #263 from uklans/test
Add new test CDN

When a network is using lancache-dns individual service configuration can be tested using nslookup <service>.cache.lancache.net however if a network is using the generator configs these lancache domains don't exist. This PR adds a new test service for ease of memory for diagnostics
2025-07-16 21:07:19 +01:00
James Kinsman
46712eff2c
Update test.txt
missing blank line
2025-07-16 20:18:56 +01:00
James Kinsman
6c12ed6be5
Add new test CDN
Add new test cdn for the use in testing and diagnostics. Assuming the test service is enabled test.cache.lancache.net and canary.uklans.net will respond with a lancache IP
2025-07-16 20:11:18 +01:00
MarkusPalm
a036429193
updated README.md with FortiOS 2024-10-29 13:46:57 +01:00
MarkusPalm
a5e7ed8be7
add FortiOS script 2024-10-29 13:46:08 +01:00
7 changed files with 95 additions and 3 deletions

View File

@ -126,6 +126,11 @@
"name": "xboxlive",
"description": "CDN for xboxlive",
"domain_files": ["xboxlive.txt"]
},
{
"name": "test",
"description": "Test CDN, recommended to enable for additional diagnostics",
"domain_files": ["test.txt"]
}
]
}

View File

@ -1,4 +1,3 @@
ccs.cdn.wup.shop.nintendo.net
ccs.cdn.wup.shop.nintendo.net.edgesuite.net
geisha-wup.cdn.nintendo.net
geisha-wup.cdn.nintendo.net.edgekey.net

View File

@ -10,6 +10,7 @@ configuration which can be utilised with:
* Dnsmasq/Pi-hole
* Squid
* Unbound
* FortiOS
## Usage
@ -37,7 +38,7 @@ The following example assumes a single shared Cacheserver IP:
}
```
3. Run generation script relative to your DNS implementation: `bash create-dnsmasq.sh`.
4. If `combined_output` is set to `true` this will result in a single output file: `lancache.conf` with all your enabled services (applies to Adguard Home, Dnsmasq or Unbound).
4. If `combined_output` is set to `true` this will result in a single output file: `lancache.conf` with all your enabled services (applies to Adguard Home, Dnsmasq, Unbound or FortiOS).
5. Copy files from `output/{adguardhome,dnsmasq,rpz,squid,unbound}/*` to the respective locations for Dnsmasq/Unbound.
6. Restart the appropriate service.

View File

@ -60,6 +60,7 @@ while read entry; do
fi
for i in ${cacheip}; do
echo "${domainprefix}${parsed}^\$dnsrewrite=${i}" >> ${outputfile}
echo "${domainprefix}${parsed}^\$dnstype=AAAA" >> ${outputfile}
done
done <<< $(cat ${basedir}/$filename | sort);
done <<< $(jq -r ".cache_domains[${entry}].domain_files[${fileid}]" ${path})

78
scripts/create-fortios.sh Normal file
View File

@ -0,0 +1,78 @@
#!/bin/bash
basedir=".."
outputdir="output/fortios"
path="${basedir}/cache_domains.json"
export IFS=' '
test=$(which jq);
if [ $? -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"
combinedoutput=$(jq -r ".combined_output" config.json)
while read line; do
ip=$(jq ".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=$(jq -r 'if type == "array" then .[] else . end' <<< ${!cacheipname} | xargs)
while read fileid; do
while read filename; do
destfilename=$(echo ${filename} | sed -e 's/txt/conf/')
outputfile=${outputdir}/${destfilename}
touch ${outputfile}
tab=" "
echo "config system dns-database" >> ${outputfile}
while read fileentry; do
# Ignore comments and newlines
if [[ ${fileentry} == \#* ]] || [[ -z ${fileentry} ]]; then
continue
fi
parsed=$(echo ${fileentry} | sed -e "s/^\*\.//")
echo -e "${tab}edit \"${parsed}\"\n${tab}${tab}set domain \"${parsed}\"\n${tab}${tab}set authoritative disable\n${tab}${tab}config dns-entry" >> ${outputfile}
j=1
for i in ${cacheip}; do
echo -e "${tab}${tab}${tab}edit ${j}\n${tab}${tab}${tab}${tab}set hostname \"@\"\n${tab}${tab}${tab}${tab}set ip ${i}\n${tab}${tab}${tab}next" >> ${outputfile}
j=$((j+1))
done
echo -e "${tab}${tab}end\n${tab}next" >> ${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})
echo "end" >> ${outputfile}
done <<< $(jq -r '.cache_domains | to_entries[] | .key' ${path})
if [[ ${combinedoutput} == "true" ]]; then
for file in ${outputdir}/*; do f=${file//${outputdir}\/} && f=${f//.conf} && echo -e "# ${f}" >> ${outputdir}/lancache.conf && cat ${file} >> ${outputdir}/lancache.conf && rm ${file}; done
fi
cat << EOF
Configuration generation completed.
Please paste the contents of the following files:
- ./${outputdir}/*.conf to the FortiOS CLI
- Paste the configuration of each service or utilise the combined output for a single list
EOF

6
test.txt Normal file
View File

@ -0,0 +1,6 @@
canary.uklans.net
litmus.uklans.net
trigger.uklans.net
canary.lancache.net
litmus.lancache.net
trigger.lancache.net

View File

@ -9,3 +9,5 @@ amupdatedl2.microsoft.com
amupdatedl3.microsoft.com
amupdatedl4.microsoft.com
amupdatedl5.microsoft.com
officecdn.microsoft.com
officecdn.microsoft.com.edgesuite.net