Skip to content

Commit 1d7c437

Browse files
committed
Improve DNS checks and config tips
1 parent c4cf5a2 commit 1d7c437

1 file changed

Lines changed: 49 additions & 34 deletions

File tree

nix/module.nix

Lines changed: 49 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -118,14 +118,12 @@ let
118118
serverIPv4Address =
119119
# bash
120120
''
121-
export ipv4Add=`${pkgs.nettools}/bin/ifconfig | ${pkgs.ripgrep}/bin/rg 'inet ' | ${pkgs.ripgrep}/bin/rg -v '127.0.0.1' | ${pkgs.gawk}/bin/awk '{ print $2}'`
122-
echo "${cfg.domainName} A $ipv4Add"
121+
${pkgs.nettools}/bin/ifconfig | ${pkgs.ripgrep}/bin/rg 'inet ' | ${pkgs.ripgrep}/bin/rg -v '127.0.0.1' | ${pkgs.gawk}/bin/awk '{ print $2}'
123122
'';
124123
serverIPv6Address =
125124
# bash
126125
''
127-
export ipv6Add=`${pkgs.nettools}/bin/ifconfig | ${pkgs.ripgrep}/bin/rg 'inet6 .*global' | ${pkgs.gawk}/bin/awk '{ print $2}'`
128-
echo "${cfg.domainName} AAAA $ipv6Add"
126+
${pkgs.nettools}/bin/ifconfig | ${pkgs.ripgrep}/bin/rg 'inet6 .*global' | ${pkgs.gawk}/bin/awk '{ print $2}'
129127
'';
130128
in
131129
{
@@ -446,8 +444,11 @@ in
446444
}
447445
];
448446

447+
# packages required to deploy and run alaveteli
448+
# tools required to build ruby gems and such do NOT go here
449449
environment.systemPackages = [
450450
pkgs.curl
451+
pkgs.dig
451452
pkgs.gnused
452453
pkgs.ripgrep
453454
pkgs.urlencode
@@ -558,6 +559,7 @@ in
558559
Group = cfg.group;
559560
PrivateTmp = true;
560561
StateDirectory = "alaveteli";
562+
561563
WorkingDirectory = cfg.package;
562564
TimeoutStartSec = 1200;
563565
RestartSec = 1;
@@ -606,37 +608,50 @@ in
606608
# TODO: improve this to help with DNS config just before activating
607609
# the new system
608610
system.activationScripts.showDNSrecords = {
609-
text = ''
610-
#!/bin/sh
611-
echo "############################"
612-
echo "DNS records to set for Alaveteli"
613-
${serverIPv4Address}
614-
echo "--------------------------------"
615-
${serverIPv6Address}
616-
echo "--------------------------------"
617-
echo "${cfg.domainName} IN MX 10 ${cfg.domainName}."
618-
echo "--------------------------------"
619-
echo 'SPF: @ 300 IN TXT "v=spf1 mx ~all"'
620-
echo "--------------------------------"
621-
echo "TLSA record:"
622-
${generateTlsaRecord}
623-
echo
624-
echo "--------------------------------"
625-
echo "CAA 0 issue \"letsencrypt.org\""
626-
echo "--------------------------------"
627-
cat /var/lib/opendkim/keys/${config.services.opendkim.selector}.txt
628-
echo "--------------------------------"
629-
echo '_dmarc.${cfg.domainName} TXT "v=DMARC1; p=quarantine;"'
630-
echo "--------------------------------"
631-
echo "############################"
632-
'';
611+
text =
612+
# bash
613+
''
614+
#!/bin/sh
615+
echo "########################################################"
616+
echo "DNS records to set for Alaveteli"
617+
echo "${cfg.domainName} A `${serverIPv4Address}`"
618+
echo "--------------------------------------------------------"
619+
echo "${cfg.domainName} AAAA `${serverIPv6Address}`"
620+
echo "--------------------------------------------------------"
621+
echo "${cfg.domainName} IN MX 10 ${cfg.domainName}."
622+
echo "--------------------------------------------------------"
623+
echo 'SPF: @ 300 IN TXT "v=spf1 mx ~all"'
624+
echo "--------------------------------------------------------"
625+
echo "TLSA record:"
626+
${generateTlsaRecord}
627+
echo
628+
echo "--------------------------------------------------------"
629+
echo "CAA 0 issue \"letsencrypt.org\""
630+
echo "--------------------------------------------------------"
631+
echo "DKIM record:"
632+
cat /var/lib/opendkim/keys/${config.services.opendkim.selector}.txt
633+
echo "--------------------------------------------------------"
634+
echo "DMARC record:"
635+
echo '_dmarc.${cfg.domainName} TXT "v=DMARC1; p=quarantine;"'
636+
echo "--------------------------------------------------------"
637+
echo "Do not forget to set the reverse DNS to ${cfg.domainName}"
638+
echo "########################################################"
639+
'';
640+
};
641+
system.preSwitchChecks = {
642+
# return false/non-0 in any check to prevent the new config from being activated
643+
verifyDNSConfig =
644+
# bash
645+
''
646+
echo "#####################################"
647+
echo "Verifying DNS config (A/AAAA records)"
648+
IPV4ADD=$(${serverIPv4Address})
649+
IPV6ADD=$(${serverIPv6Address})
650+
${pkgs.dig}/bin/dig A ${cfg.domainName} | ${pkgs.ripgrep}/bin/rg "$IPV4ADD"
651+
${pkgs.dig}/bin/dig AAAA ${cfg.domainName} | ${pkgs.ripgrep}/bin/rg "$IPV6ADD"
652+
echo "#####################################"
653+
'';
633654
};
634-
system.preSwitchChecks.verifyDNSConfig = ''
635-
echo "############################"
636-
echo "Verifying DNS config"
637-
echo "############################"
638-
# false <- to prevent the config from being activated
639-
'';
640655

641656
};
642657

0 commit comments

Comments
 (0)