Родителски контрол
Здравейте,
В продължение на публикацията ми „Мисия умен дом“ днес ще споделя как ограничавам определени уеб сайтове вкъщи – или с две думи как правя Родителски контрол.
Каква е цялата идея?
Децата ни са по цял ден на таблета или телефона. Apple имат вградена функция family sharing с която можем да ограничим часовете в които може да работи устройството, какви приложения да се отварят и какво да се тегли.
Аз обаче искам да мога да ограничавам отварянето на определени уеб сайтове (като TikTok или Facebook) и то когато реша – бързо и лесно с помощта на натискане на един бутон или с извикването на „Hey Siri“
Какво ни е нужно за направата на Родителски контрол?
На първо място ни е нужен опит с линукс и писане на шел скриптове. Знам че това не е за всеки, но съм сигурен че може да бъде направено от хора с много свободно време и желание 🙂 (при затруднения може да ми пишете в комантарите под статията – обещавам да помагам!)
- Нужен ни е работещ homebridge сървър за да може да използваме Home приложението на телефона/таблета си и Siri да може да изпълнява командите ни.
- PiHole DNS сървър през който да правим съответните ограничения на уеб сайтовете.
- Достъп до рутера ни за да може да зададем за DNS сървър по подразбиране да използваме нашият предварително настроен и конфигуриран PiHole (в моят случай – 10.0.2.253).
- Минимални умения в писането на shell скриптове.
Инсталация и конфигурация на отделните елементи.
Тук няма да изпадам в подробности как се инсталират и конфигурират homebridge и pihole. Има си документация и ако се спазва стъпка по стъпка всичко ще успеете!
При мен двете отделни услуги работят на 2 отделни raspberry pi устройства, но без проблеми могат да живеят на едно raspberry pi 4 с 4гб памет.
Ще дам пример как се правят скриптовете и за двата случая (работещи на две устройства и на едно устройство)
Ако homebridge и pihole работят на едно устройство е нужно :
- Да създадем два скрипта за спиране и пускане на достъпа до да кажем TikTok и един скрипт който да проверява дали е спрян или пуснат TikTok :
Правим си папка commands :
mkdir -p /var/lib/homebridge/commands/
и в нея създаваме state-tiktok.sh, disable-tiktok.sh и enable-tiktok.sh
в disable-tiktok.sh слагаме следният код :
#!/bin/bash sudo pihole -b --regex '(^|\.)muscdn\.com$' '(^|\.)musical\.ly$' '(^|\.)tiktok\.com$' '(^|\.)tiktokcdn\.com$' rm -f /var/lib/homebridge/commands/tiktok.flag
в enable-tiktok.sh слагаме следният код :
#!/bin/bash sudo pihole --regex -d '(^|\.)muscdn\.com$' '(^|\.)musical\.ly$' '(^|\.)tiktok\.com$' '(^|\.)tiktokcdn\.com$' touch /var/lib/homebridge/commands/tiktok.flag
Създаването и изтриването на флаговете са ни нужни за да може при натискане на бутона за спиране или пускане на tiktok статуса му да се променя на съответния.
в state-tiktok.sh слагаме следният код :
#!/bin/bash STATE_CHECK="$(ls /var/lib/homebridge/commands/tiktok.flag)" if [ -z "$STATE_CHECK" ]; then echo "false" else echo "true" fi
Правим изпълними и трите скрипта :
chmod +x disable-tiktok.sh enable-tiktok.sh state-tiktok.sh
В този момент можем да тестваме скрипта и ако изпълним спиращия скрипт би следвало TikTok да спре да ни зарежда 😀 Ако всичко е ок продължаваме напред с конфигурацията на homebridge.
Ако homebridge и pihole работят на две устройства е нужно :
state-tiktok.sh е същия като по-горе, но enable-tiktok.sh и disable-tiktok.sh се различават както следва :
enable-tiktok.sh изглежда така :
#!/bin/bash #sudo pihole --regex -d '(^|\.)muscdn\.com$' '(^|\.)musical\.ly$' '(^|\.)tiktok\.com$' '(^|\.)tiktokcdn\.com$' touch /var/lib/homebridge/commands/tiktok.flag ssh -i /home/homebridge/.ssh/control pi@10.0.2.253 "sudo pihole --regex -d '(^|\.)muscdn\.com$' '(^|\.)musical\.ly$' '(^|\.)tiktok\.com$' '(^|\.)tiktokcdn\.com$' && touch /var/lib/homebridge/commands/tiktok.flag"
disable-tiktok.sh изглежда така :
#!/bin/bash #sudo pihole -b --regex '(^|\.)muscdn\.com$' '(^|\.)musical\.ly$' '(^|\.)tiktok\.com$' '(^|\.)tiktokcdn\.com$' rm -f /var/lib/homebridge/commands/tiktok.flag ssh -i /home/homebridge/.ssh/control pi@10.0.2.253 "sudo pihole -b --regex '(^|\.)muscdn\.com$' '(^|\.)musical\.ly$' '(^|\.)tiktok\.com$' '(^|\.)tiktokcdn\.com$' && rm -f /home/homebridge/commands/tiktok.flag"
Тук използвам ssh и ssh ключове за отдалечено влизане, като 10.0.2.253 e IP адреса на pihole сървъра ни.
Homebridge
Преди да започнем със самата конфигурация е нужно да инсталираме скрипта Script2 за homebridge чрез командата :
npm i homebridge-script2
Следва да отворим конфигурационният файл на homebridge с любимия ни редактор (в моят случай vim) и да добавим следните редове :
vim /var/lib/homebridge/config.json ....... { "bridge": { "name": "Homebridge control", "username": "0E:DF:E6:88:42:DD", "port": 51403, "pin": "123-123-123", "advertiser": "ciao" }, "description": "Homebridge running on raspberry pi 4 - control", "accessories": [ { "accessory": "Script2", "name": "tiktok", "on": "/var/lib/homebridge/commands/enable-tiktok.sh", "off": "/var/lib/homebridge/commands/disable-tiktok.sh", "fileState": "/var/lib/homebridge/commands/tiktok.flag", "state": "/var/lib/homebridge/commands/state-tiktok.sh", "on_value": "true" },
Рестартираме homebridge сървиса с командата :
hb-service restart
Крайният резултат
Ако всичко тръгне от раз, би следвало да виждаме вече нов аксесоар наречен „tiktok“ който можем да пускаме или спираме през Home приложението на нашия iPhone или iPad. Също това означава, че ако кажем на Siri ; Hey Siri, turn off tiktok – тя ще спре достъпа до този сайт.
Ще дам пример как ограничавам и facebook и youtube – като и при двата сайта това става по-лесно, защото не използват външни CDN услуги както TikTok.
control:/var/lib/homebridge/commands# cat disable-facebook.sh #!/bin/bash #sudo pihole -b facebook.com #rm -f /var/lib/homebridge/commands/facebook.flag ssh -i /home/homebridge/.ssh/control pi@10.0.2.253 'sudo pihole -b facebook.com && rm -f /var/lib/homebridge/commands/facebook.flag' control:/var/lib/homebridge/commands# cat disable-youtube.sh #!/bin/bash #sudo pihole -b youtube.com rm -f /var/lib/homebridge/commands/youtube.flag ssh -i /home/homebridge/.ssh/control pi@10.0.2.253 'sudo pihole -b youtube.com && rm -f /var/lib/homebridge/commands/youtube.flag' control:/var/lib/homebridge/commands# cat enable-facebook.sh #!/bin/bash #sudo pihole -b -d facebook.com #touch /var/lib/homebridge/commands/facebook.flag ssh -i /home/homebridge/.ssh/control pi@10.0.2.253 'sudo pihole -b -d facebook.com && touch /var/lib/homebridge/commands/facebook.flag' control:/var/lib/homebridge/commands# cat enable-youtube.sh #!/bin/bash #sudo pihole -b -d youtube.com touch /var/lib/homebridge/commands/youtube.flag ssh -i /home/homebridge/.ssh/control pi@10.0.2.253 'sudo pihole -b -d youtube.com && touch /var/lib/homebridge/commands/youtube.flag'
Това е!