fixup hostname for vpn
This commit is contained in:
parent
743b84363c
commit
38e910fb46
3 changed files with 54 additions and 28 deletions
|
@ -2,35 +2,11 @@
|
||||||
let
|
let
|
||||||
hostAliases = [
|
hostAliases = [
|
||||||
"ifrit.dadada.li"
|
"ifrit.dadada.li"
|
||||||
"bs.vpn.dadada.li"
|
"vpn.dadada.li"
|
||||||
"media.dadada.li"
|
"media.dadada.li"
|
||||||
"backup.dadada.li"
|
"backup0.dadada.li"
|
||||||
];
|
];
|
||||||
backups = "/mnt/storage/backup";
|
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
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
@ -72,6 +48,10 @@ in
|
||||||
key = "5EaLm7uC8XzoN8+BaGzgGRUU4q5shM7gQJcs/d7n+Vo=";
|
key = "5EaLm7uC8XzoN8+BaGzgGRUU4q5shM7gQJcs/d7n+Vo=";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
ddns.domains = [
|
||||||
|
"vpn.dadada.li"
|
||||||
|
"backup0.dadada.li"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
users.users.borg.home = "/mnt/storage/backup";
|
users.users.borg.home = "/mnt/storage/backup";
|
||||||
|
@ -202,7 +182,5 @@ in
|
||||||
|
|
||||||
environment.systemPackages = [ pkgs.curl ];
|
environment.systemPackages = [ pkgs.curl ];
|
||||||
|
|
||||||
systemd = (ddns "bs.vpn.dadada.li") // (ddns "backup0.dadada.li");
|
|
||||||
|
|
||||||
system.stateVersion = "20.03";
|
system.stateVersion = "20.03";
|
||||||
}
|
}
|
||||||
|
|
47
nixos/modules/ddns.nix
Normal file
47
nixos/modules/ddns.nix
Normal 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;
|
||||||
|
}
|
|
@ -2,6 +2,7 @@
|
||||||
{
|
{
|
||||||
admin = import ./admin.nix;
|
admin = import ./admin.nix;
|
||||||
backup = import ./backup.nix;
|
backup = import ./backup.nix;
|
||||||
|
ddns = import ./ddns.nix;
|
||||||
element = import ./element.nix;
|
element = import ./element.nix;
|
||||||
fido2 = import ./fido2.nix;
|
fido2 = import ./fido2.nix;
|
||||||
fileShare = import ./fileShare.nix;
|
fileShare = import ./fileShare.nix;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue