fixup hostname for vpn

This commit is contained in:
Tim Schubert 2022-04-13 17:26:55 +02:00
parent 743b84363c
commit 38e910fb46
Signed by: dadada
GPG key ID: EEB8D1CE62C4DFEA
3 changed files with 54 additions and 28 deletions

View file

@ -2,35 +2,11 @@
let
hostAliases = [
"ifrit.dadada.li"
"bs.vpn.dadada.li"
"vpn.dadada.li"
"media.dadada.li"
"backup.dadada.li"
"backup0.dadada.li"
];
backups = "/mnt/storage/backup";
ddns = hostname: {
timers."ddns-${hostname}" = {
wantedBy = [ "timers.target" ];
partOf = [ "ddns-${hostname}.service" ];
timerConfig.OnCalendar = "hourly";
};
services."ddns-${hostname}" = {
serviceConfig.Type = "oneshot";
script = ''
function url() {
echo "https://svc.joker.com/nic/update?username=$1&password=$2&hostname=$3"
}
IFS=':'
read -r user password < /var/lib/ddns/credentials
unset IFS
curl_url=$(url "$user" "$password" ${hostname})
${pkgs.curl}/bin/curl -4 "$curl_url"
${pkgs.curl}/bin/curl -6 "$curl_url"
'';
};
};
in
{
imports = [
@ -72,6 +48,10 @@ in
key = "5EaLm7uC8XzoN8+BaGzgGRUU4q5shM7gQJcs/d7n+Vo=";
};
};
ddns.domains = [
"vpn.dadada.li"
"backup0.dadada.li"
];
};
users.users.borg.home = "/mnt/storage/backup";
@ -202,7 +182,5 @@ in
environment.systemPackages = [ pkgs.curl ];
systemd = (ddns "bs.vpn.dadada.li") // (ddns "backup0.dadada.li");
system.stateVersion = "20.03";
}

47
nixos/modules/ddns.nix Normal file
View file

@ -0,0 +1,47 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.dadada.ddns;
ddnsConfig = hostNames: {
systemd.timers = listToAttrs (forEach hostNames (hostname: nameValuePair "ddns-${hostname}"
{
wantedBy = [ "timers.target" ];
partOf = [ "ddns-${hostname}.service" ];
timerConfig.OnCalendar = "hourly";
}));
systemd.services = listToAttrs (forEach hostNames (hostname: nameValuePair "ddns-${hostname}"
{
serviceConfig.Type = "oneshot";
script = ''
function url() {
echo "https://svc.joker.com/nic/update?username=$1&password=$2&hostname=$3"
}
IFS=':'
read -r user password < /var/lib/ddns/credentials
unset IFS
curl_url=$(url "$user" "$password" ${hostname})
${pkgs.curl}/bin/curl -4 "$curl_url"
${pkgs.curl}/bin/curl -6 "$curl_url"
'';
}));
};
in {
options = {
dadada.ddns.domains = mkOption {
type = types.listOf types.str;
description = ''
Enables DDNS for these domains.
'';
example = ''
[ "example.com" ]
'';
default = [];
};
};
config = ddnsConfig cfg.domains;
}

View file

@ -2,6 +2,7 @@
{
admin = import ./admin.nix;
backup = import ./backup.nix;
ddns = import ./ddns.nix;
element = import ./element.nix;
fido2 = import ./fido2.nix;
fileShare = import ./fileShare.nix;