#!/bin/sh # # Copyright (c) 2021 Gregory L. Dietsche <Gregory.Dietsche@cuw.edu> # This is free software, licensed under the MIT License # HasIpAddressChanged() { # Create a sorted, unique list of addresses using DNS HOST_LIVE=$(nslookup "$1" | grep "Address\ [0-9]\+:" | sed -r 's/^Address [0-9]+: //' | sort | uniq -i) # Create a sorted, unique list of addresess currently in use HOST_SAFE=$(grep -i "^[:0-9a-f]" "$2" | sed 's/ .*//' | sort | uniq -i) # dns resolution errors / not being connected to the internet can cause this. if [ -z "$HOST_LIVE" ]; then return 1 fi #If the lists do not match, then we want to update to match the DNS records. if [ "$HOST_LIVE" = "$HOST_SAFE" ]; then return 1 # IP has NOT changed fi return 0 # IP has changed } StartIpAddressUpdate(){ echo Updating "$1" RELOAD_DNSMASQ=1 #Create the new hosts file... cat >"$1"<<EOL ########################################################################## # **** IMPORTANT **** # # Do not make changes to this file instead please execute: # # /usr/sbin/safe-search-maintenance # # If this file is not working, please ensure dnsmasq is able to READ it! # ########################################################################## # Last Updated On: $(date) EOL } MakeHost(){ for ipAddr in $HOST_LIVE do echo "$ipAddr $1" done } ################################################# ### strict.bing.com ### ################################################# HOST_FILE=/etc/safe-search/available/bing.default if HasIpAddressChanged strict.bing.com $HOST_FILE; then StartIpAddressUpdate $HOST_FILE MakeHost "bing.com www.bing.com">>$HOST_FILE fi ################################################# ### safe.duckduckgo.com ### ################################################# HOST_FILE=/etc/safe-search/available/duckduckgo.default if HasIpAddressChanged safe.duckduckgo.com $HOST_FILE; then StartIpAddressUpdate $HOST_FILE MakeHost "duckduckgo.com">>$HOST_FILE fi ################################################# ### restrict.youtube.com ### ################################################# HOST_FILE=/etc/safe-search/available/youtube.restrict if HasIpAddressChanged restrict.youtube.com $HOST_FILE; then StartIpAddressUpdate $HOST_FILE MakeHost "www.youtube.com m.youtube.com youtubei.googleapis.com youtube.googleapis.com www.youtube-nocookie.com">>$HOST_FILE fi ################################################# ### restrictmoderate.youtube.com ### ################################################# HOST_FILE=/etc/safe-search/available/youtube.restrictmoderate if HasIpAddressChanged restrictmoderate.youtube.com $HOST_FILE; then StartIpAddressUpdate $HOST_FILE MakeHost "www.youtube.com m.youtube.com youtubei.googleapis.com youtube.googleapis.com www.youtube-nocookie.com">>$HOST_FILE fi ################################################# ### forcesafesearch.google.com ### ### https://www.google.com/supported_domains ### ################################################# HOST_FILE=/etc/safe-search/available/google.default if HasIpAddressChanged forcesafesearch.google.com $HOST_FILE; then StartIpAddressUpdate $HOST_FILE cat >>"$HOST_FILE"<<EOL $(MakeHost "google.com") $(MakeHost "google.ad") $(MakeHost "google.ae") $(MakeHost "google.com.af") $(MakeHost "google.com.ag") $(MakeHost "google.com.ai") $(MakeHost "google.al") $(MakeHost "google.am") $(MakeHost "google.co.ao") $(MakeHost "google.com.ar") $(MakeHost "google.as") $(MakeHost "google.at") $(MakeHost "google.com.au") $(MakeHost "google.az") $(MakeHost "google.ba") $(MakeHost "google.com.bd") $(MakeHost "google.be") $(MakeHost "google.bf") $(MakeHost "google.bg") $(MakeHost "google.com.bh") $(MakeHost "google.bi") $(MakeHost "google.bj") $(MakeHost "google.com.bn") $(MakeHost "google.com.bo") $(MakeHost "google.com.br") $(MakeHost "google.bs") $(MakeHost "google.bt") $(MakeHost "google.co.bw") $(MakeHost "google.by") $(MakeHost "google.com.bz") $(MakeHost "google.ca") $(MakeHost "google.cd") $(MakeHost "google.cf") $(MakeHost "google.cg") $(MakeHost "google.ch") $(MakeHost "google.ci") $(MakeHost "google.co.ck") $(MakeHost "google.cl") $(MakeHost "google.cm") $(MakeHost "google.cn") $(MakeHost "google.com.co") $(MakeHost "google.co.cr") $(MakeHost "google.com.cu") $(MakeHost "google.cv") $(MakeHost "google.com.cy") $(MakeHost "google.cz") $(MakeHost "google.de") $(MakeHost "google.dj") $(MakeHost "google.dk") $(MakeHost "google.dm") $(MakeHost "google.com.do") $(MakeHost "google.dz") $(MakeHost "google.com.ec") $(MakeHost "google.ee") $(MakeHost "google.com.eg") $(MakeHost "google.es") $(MakeHost "google.com.et") $(MakeHost "google.fi") $(MakeHost "google.com.fj") $(MakeHost "google.fm") $(MakeHost "google.fr") $(MakeHost "google.ga") $(MakeHost "google.ge") $(MakeHost "google.gg") $(MakeHost "google.com.gh") $(MakeHost "google.com.gi") $(MakeHost "google.gl") $(MakeHost "google.gm") $(MakeHost "google.gp") $(MakeHost "google.gr") $(MakeHost "google.com.gt") $(MakeHost "google.gy") $(MakeHost "google.com.hk") $(MakeHost "google.hn") $(MakeHost "google.hr") $(MakeHost "google.ht") $(MakeHost "google.hu") $(MakeHost "google.co.id") $(MakeHost "google.ie") $(MakeHost "google.co.il") $(MakeHost "google.im") $(MakeHost "google.co.in") $(MakeHost "google.iq") $(MakeHost "google.is") $(MakeHost "google.it") $(MakeHost "google.je") $(MakeHost "google.com.jm") $(MakeHost "google.jo") $(MakeHost "google.co.jp") $(MakeHost "google.co.ke") $(MakeHost "google.com.kh") $(MakeHost "google.ki") $(MakeHost "google.kg") $(MakeHost "google.co.kr") $(MakeHost "google.com.kw") $(MakeHost "google.kz") $(MakeHost "google.la") $(MakeHost "google.com.lb") $(MakeHost "google.li") $(MakeHost "google.lk") $(MakeHost "google.co.ls") $(MakeHost "google.lt") $(MakeHost "google.lu") $(MakeHost "google.lv") $(MakeHost "google.com.ly") $(MakeHost "google.co.ma") $(MakeHost "google.md") $(MakeHost "google.me") $(MakeHost "google.mg") $(MakeHost "google.mk") $(MakeHost "google.ml") $(MakeHost "google.com.mm") $(MakeHost "google.mn") $(MakeHost "google.ms") $(MakeHost "google.com.mt") $(MakeHost "google.mu") $(MakeHost "google.mv") $(MakeHost "google.mw") $(MakeHost "google.com.mx") $(MakeHost "google.com.my") $(MakeHost "google.co.mz") $(MakeHost "google.com.na") $(MakeHost "google.com.nf") $(MakeHost "google.com.ng") $(MakeHost "google.com.ni") $(MakeHost "google.ne") $(MakeHost "google.nl") $(MakeHost "google.no") $(MakeHost "google.com.np") $(MakeHost "google.nr") $(MakeHost "google.nu") $(MakeHost "google.co.nz") $(MakeHost "google.com.om") $(MakeHost "google.com.pa") $(MakeHost "google.com.pe") $(MakeHost "google.com.pg") $(MakeHost "google.com.ph") $(MakeHost "google.com.pk") $(MakeHost "google.pl") $(MakeHost "google.pn") $(MakeHost "google.com.pr") $(MakeHost "google.ps") $(MakeHost "google.pt") $(MakeHost "google.com.py") $(MakeHost "google.com.qa") $(MakeHost "google.ro") $(MakeHost "google.ru") $(MakeHost "google.rw") $(MakeHost "google.com.sa") $(MakeHost "google.com.sb") $(MakeHost "google.sc") $(MakeHost "google.se") $(MakeHost "google.com.sg") $(MakeHost "google.sh") $(MakeHost "google.si") $(MakeHost "google.sk") $(MakeHost "google.com.sl") $(MakeHost "google.sn") $(MakeHost "google.so") $(MakeHost "google.sm") $(MakeHost "google.sr") $(MakeHost "google.st") $(MakeHost "google.com.sv") $(MakeHost "google.td") $(MakeHost "google.tg") $(MakeHost "google.co.th") $(MakeHost "google.com.tj") $(MakeHost "google.tk") $(MakeHost "google.tl") $(MakeHost "google.tm") $(MakeHost "google.tn") $(MakeHost "google.to") $(MakeHost "google.com.tr") $(MakeHost "google.tt") $(MakeHost "google.com.tw") $(MakeHost "google.co.tz") $(MakeHost "google.com.ua") $(MakeHost "google.co.ug") $(MakeHost "google.co.uk") $(MakeHost "google.com.uy") $(MakeHost "google.co.uz") $(MakeHost "google.com.vc") $(MakeHost "google.co.ve") $(MakeHost "google.vg") $(MakeHost "google.co.vi") $(MakeHost "google.com.vn") $(MakeHost "google.vu") $(MakeHost "google.ws") $(MakeHost "google.rs") $(MakeHost "google.co.za") $(MakeHost "google.co.zm") $(MakeHost "google.co.zw") $(MakeHost "google.cat") $(MakeHost "www.google.com") $(MakeHost "www.google.ad") $(MakeHost "www.google.ae") $(MakeHost "www.google.com.af") $(MakeHost "www.google.com.ag") $(MakeHost "www.google.com.ai") $(MakeHost "www.google.al") $(MakeHost "www.google.am") $(MakeHost "www.google.co.ao") $(MakeHost "www.google.com.ar") $(MakeHost "www.google.as") $(MakeHost "www.google.at") $(MakeHost "www.google.com.au") $(MakeHost "www.google.az") $(MakeHost "www.google.ba") $(MakeHost "www.google.com.bd") $(MakeHost "www.google.be") $(MakeHost "www.google.bf") $(MakeHost "www.google.bg") $(MakeHost "www.google.com.bh") $(MakeHost "www.google.bi") $(MakeHost "www.google.bj") $(MakeHost "www.google.com.bn") $(MakeHost "www.google.com.bo") $(MakeHost "www.google.com.br") $(MakeHost "www.google.bs") $(MakeHost "www.google.bt") $(MakeHost "www.google.co.bw") $(MakeHost "www.google.by") $(MakeHost "www.google.com.bz") $(MakeHost "www.google.ca") $(MakeHost "www.google.cd") $(MakeHost "www.google.cf") $(MakeHost "www.google.cg") $(MakeHost "www.google.ch") $(MakeHost "www.google.ci") $(MakeHost "www.google.co.ck") $(MakeHost "www.google.cl") $(MakeHost "www.google.cm") $(MakeHost "www.google.cn") $(MakeHost "www.google.com.co") $(MakeHost "www.google.co.cr") $(MakeHost "www.google.com.cu") $(MakeHost "www.google.cv") $(MakeHost "www.google.com.cy") $(MakeHost "www.google.cz") $(MakeHost "www.google.de") $(MakeHost "www.google.dj") $(MakeHost "www.google.dk") $(MakeHost "www.google.dm") $(MakeHost "www.google.com.do") $(MakeHost "www.google.dz") $(MakeHost "www.google.com.ec") $(MakeHost "www.google.ee") $(MakeHost "www.google.com.eg") $(MakeHost "www.google.es") $(MakeHost "www.google.com.et") $(MakeHost "www.google.fi") $(MakeHost "www.google.com.fj") $(MakeHost "www.google.fm") $(MakeHost "www.google.fr") $(MakeHost "www.google.ga") $(MakeHost "www.google.ge") $(MakeHost "www.google.gg") $(MakeHost "www.google.com.gh") $(MakeHost "www.google.com.gi") $(MakeHost "www.google.gl") $(MakeHost "www.google.gm") $(MakeHost "www.google.gp") $(MakeHost "www.google.gr") $(MakeHost "www.google.com.gt") $(MakeHost "www.google.gy") $(MakeHost "www.google.com.hk") $(MakeHost "www.google.hn") $(MakeHost "www.google.hr") $(MakeHost "www.google.ht") $(MakeHost "www.google.hu") $(MakeHost "www.google.co.id") $(MakeHost "www.google.ie") $(MakeHost "www.google.co.il") $(MakeHost "www.google.im") $(MakeHost "www.google.co.in") $(MakeHost "www.google.iq") $(MakeHost "www.google.is") $(MakeHost "www.google.it") $(MakeHost "www.google.je") $(MakeHost "www.google.com.jm") $(MakeHost "www.google.jo") $(MakeHost "www.google.co.jp") $(MakeHost "www.google.co.ke") $(MakeHost "www.google.com.kh") $(MakeHost "www.google.ki") $(MakeHost "www.google.kg") $(MakeHost "www.google.co.kr") $(MakeHost "www.google.com.kw") $(MakeHost "www.google.kz") $(MakeHost "www.google.la") $(MakeHost "www.google.com.lb") $(MakeHost "www.google.li") $(MakeHost "www.google.lk") $(MakeHost "www.google.co.ls") $(MakeHost "www.google.lt") $(MakeHost "www.google.lu") $(MakeHost "www.google.lv") $(MakeHost "www.google.com.ly") $(MakeHost "www.google.co.ma") $(MakeHost "www.google.md") $(MakeHost "www.google.me") $(MakeHost "www.google.mg") $(MakeHost "www.google.mk") $(MakeHost "www.google.ml") $(MakeHost "www.google.com.mm") $(MakeHost "www.google.mn") $(MakeHost "www.google.ms") $(MakeHost "www.google.com.mt") $(MakeHost "www.google.mu") $(MakeHost "www.google.mv") $(MakeHost "www.google.mw") $(MakeHost "www.google.com.mx") $(MakeHost "www.google.com.my") $(MakeHost "www.google.co.mz") $(MakeHost "www.google.com.na") $(MakeHost "www.google.com.nf") $(MakeHost "www.google.com.ng") $(MakeHost "www.google.com.ni") $(MakeHost "www.google.ne") $(MakeHost "www.google.nl") $(MakeHost "www.google.no") $(MakeHost "www.google.com.np") $(MakeHost "www.google.nr") $(MakeHost "www.google.nu") $(MakeHost "www.google.co.nz") $(MakeHost "www.google.com.om") $(MakeHost "www.google.com.pa") $(MakeHost "www.google.com.pe") $(MakeHost "www.google.com.pg") $(MakeHost "www.google.com.ph") $(MakeHost "www.google.com.pk") $(MakeHost "www.google.pl") $(MakeHost "www.google.pn") $(MakeHost "www.google.com.pr") $(MakeHost "www.google.ps") $(MakeHost "www.google.pt") $(MakeHost "www.google.com.py") $(MakeHost "www.google.com.qa") $(MakeHost "www.google.ro") $(MakeHost "www.google.ru") $(MakeHost "www.google.rw") $(MakeHost "www.google.com.sa") $(MakeHost "www.google.com.sb") $(MakeHost "www.google.sc") $(MakeHost "www.google.se") $(MakeHost "www.google.com.sg") $(MakeHost "www.google.sh") $(MakeHost "www.google.si") $(MakeHost "www.google.sk") $(MakeHost "www.google.com.sl") $(MakeHost "www.google.sn") $(MakeHost "www.google.so") $(MakeHost "www.google.sm") $(MakeHost "www.google.sr") $(MakeHost "www.google.st") $(MakeHost "www.google.com.sv") $(MakeHost "www.google.td") $(MakeHost "www.google.tg") $(MakeHost "www.google.co.th") $(MakeHost "www.google.com.tj") $(MakeHost "www.google.tk") $(MakeHost "www.google.tl") $(MakeHost "www.google.tm") $(MakeHost "www.google.tn") $(MakeHost "www.google.to") $(MakeHost "www.google.com.tr") $(MakeHost "www.google.tt") $(MakeHost "www.google.com.tw") $(MakeHost "www.google.co.tz") $(MakeHost "www.google.com.ua") $(MakeHost "www.google.co.ug") $(MakeHost "www.google.co.uk") $(MakeHost "www.google.com.uy") $(MakeHost "www.google.co.uz") $(MakeHost "www.google.com.vc") $(MakeHost "www.google.co.ve") $(MakeHost "www.google.vg") $(MakeHost "www.google.co.vi") $(MakeHost "www.google.com.vn") $(MakeHost "www.google.vu") $(MakeHost "www.google.ws") $(MakeHost "www.google.rs") $(MakeHost "www.google.co.za") $(MakeHost "www.google.co.zm") $(MakeHost "www.google.co.zw") $(MakeHost "www.google.cat") EOL fi if [ "$RELOAD_DNSMASQ" = "1" ]; then echo restarting dnsmasq to activate new IP addresses. /etc/init.d/dnsmasq restart fi