{ pkgs, lib, user, host, ... }: lib.mkIf (host == "NxACE") { systemd = { timers."namecheap-dynamic-dns" = { wantedBy = [ "timers.target" ]; timerConfig = { OnBootSec = "2m"; OnUnitActiveSec = "10m"; Unit = "namecheap-dynamic-dns.service"; }; }; services."namecheap-dynamic-dns" = let u = pkgs.writeScriptBin "update_namecheap" '' my_ip=$(curl -s https://ipinfo.io/ip) dns_ip=$(nslookup nx2.site | grep -E "Address: [0-9]" | cut -c 10-) fdc="/home/nx2/nx2site/domain/count.txt" force_update=false while getopts "f" opt; do case $opt in f) force_update=true ;; \?) echo "Invalid option: -$OPTARG" >&2 exit 1 ;; esac done if [ "$force_update" == true ] || [ "$my_ip" != "$dns_ip" ]; then count=$(<$fdc) echo [ $count times ] $(date) from $dns_ip to $my_ip >> /home/nx2/nx2site/domain/updates.log pw=$(cat /home/nx2/nx2site/domain/pw.txt) # cat /home/nx2/nx2site/domain/subdomain.list | parallel -j2 "curl -s 'https://dynamicdns.park-your-domain.com/update?host={}&domain=nx2.site&password=$pw&ip=$my_ip'" curl -s "https://dynamicdns.park-your-domain.com/update?host=@&domain=nx2.site&password=$pw&ip=$my_ip" curl -s "https://dynamicdns.park-your-domain.com/update?host=*&domain=nx2.site&password=$pw&ip=$my_ip" echo curl -s "https://dynamicdns.park-your-domain.com/update?host=*&domain=nx2.site&password=$pw&ip=$my_ip" echo 0 > $fdc fi ''; in { script = '' set -eu ${u}/bin/update_namecheap ''; serviceConfig = { Type = "oneshot"; User = "nx2"; }; }; }; }