58 lines
1.8 KiB
Nix
58 lines
1.8 KiB
Nix
{ 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";
|
|
};
|
|
};
|
|
};
|
|
}
|