updated domain script
This commit is contained in:
@@ -19,7 +19,39 @@ let
|
||||
DDNS_LINE=$(echo "$DDNS_LINE" | sed 's/&a=&a=/\&a=/g')
|
||||
'';
|
||||
|
||||
confirmDomain = name: ''
|
||||
while true; do
|
||||
echo ""
|
||||
echo -e " ''${YELLOW}You entered:''${NC}"
|
||||
echo -e " Domain: ''${CYAN}$DOMAIN''${NC}"
|
||||
if [ -n "''${DDNS_DISPLAY:-}" ]; then
|
||||
echo -e " DDNS URL: ''${CYAN}$DDNS_DISPLAY''${NC}"
|
||||
fi
|
||||
echo ""
|
||||
read -p " Is this correct? (y/n): " CONFIRM
|
||||
case "$CONFIRM" in
|
||||
[yY])
|
||||
echo "$DOMAIN" > "/var/lib/domains/${name}"
|
||||
echo -e " ''${GREEN}Saved.''${NC}"
|
||||
break
|
||||
;;
|
||||
[nN])
|
||||
echo " Let's try again."
|
||||
REDO=true
|
||||
break
|
||||
;;
|
||||
*)
|
||||
echo " Please enter y or n."
|
||||
;;
|
||||
esac
|
||||
done
|
||||
'';
|
||||
|
||||
domainPrompts = lib.concatMapStringsSep "\n" (d: ''
|
||||
REDO=true
|
||||
while [ "$REDO" = true ]; do
|
||||
REDO=false
|
||||
DDNS_DISPLAY=""
|
||||
echo ""
|
||||
echo -e "''${GREEN}── ${d.label} ──''${NC}"
|
||||
EXISTING=""
|
||||
@@ -31,38 +63,56 @@ let
|
||||
DOMAIN="''${DOMAIN_INPUT:-$EXISTING}"
|
||||
|
||||
if [ -n "$DOMAIN" ]; then
|
||||
echo "$DOMAIN" > "/var/lib/domains/${d.name}"
|
||||
echo " Saved: $DOMAIN"
|
||||
${lib.optionalString d.needsDDNS ''
|
||||
${ddnsPrompt}
|
||||
NJALLA_ENTRIES="$NJALLA_ENTRIES
|
||||
curl \"$DDNS_LINE\""
|
||||
DDNS_DISPLAY="$DDNS_LINE"
|
||||
PENDING_NJALLA="curl \"$DDNS_LINE\""
|
||||
fi
|
||||
''}
|
||||
|
||||
${confirmDomain d.name}
|
||||
|
||||
if [ "$REDO" = false ] && [ -n "''${PENDING_NJALLA:-}" ]; then
|
||||
NJALLA_ENTRIES="$NJALLA_ENTRIES
|
||||
$PENDING_NJALLA"
|
||||
PENDING_NJALLA=""
|
||||
fi
|
||||
else
|
||||
echo " Skipped."
|
||||
fi
|
||||
done
|
||||
'') domains;
|
||||
|
||||
missingDomainPrompts = lib.concatMapStringsSep "\n" (d: ''
|
||||
if [ ! -f "/var/lib/domains/${d.name}" ]; then
|
||||
MISSING=true
|
||||
REDO=true
|
||||
while [ "$REDO" = true ]; do
|
||||
REDO=false
|
||||
DDNS_DISPLAY=""
|
||||
echo ""
|
||||
echo -e "''${GREEN}── ${d.label} (NEW) ──''${NC}"
|
||||
read -p " Subdomain (e.g. ${d.example}): " DOMAIN
|
||||
|
||||
if [ -n "$DOMAIN" ]; then
|
||||
echo "$DOMAIN" > "/var/lib/domains/${d.name}"
|
||||
echo " Saved: $DOMAIN"
|
||||
${lib.optionalString d.needsDDNS ''
|
||||
${ddnsPrompt}
|
||||
NEW_NJALLA_ENTRIES="$NEW_NJALLA_ENTRIES
|
||||
curl \"$DDNS_LINE\""
|
||||
DDNS_DISPLAY="$DDNS_LINE"
|
||||
PENDING_NJALLA="curl \"$DDNS_LINE\""
|
||||
fi
|
||||
''}
|
||||
|
||||
${confirmDomain d.name}
|
||||
|
||||
if [ "$REDO" = false ] && [ -n "''${PENDING_NJALLA:-}" ]; then
|
||||
NEW_NJALLA_ENTRIES="$NEW_NJALLA_ENTRIES
|
||||
$PENDING_NJALLA"
|
||||
PENDING_NJALLA=""
|
||||
fi
|
||||
else
|
||||
echo " Skipped."
|
||||
fi
|
||||
done
|
||||
fi
|
||||
'') domains;
|
||||
|
||||
@@ -104,8 +154,12 @@ curl \"$DDNS_LINE\""
|
||||
mkdir -p /var/lib/njalla
|
||||
|
||||
NJALLA_ENTRIES=""
|
||||
PENDING_NJALLA=""
|
||||
|
||||
# ── SSL Email ─────────────────────────────────────
|
||||
REDO=true
|
||||
while [ "$REDO" = true ]; do
|
||||
REDO=false
|
||||
echo ""
|
||||
echo -e "''${GREEN}── SSL Certificate Email ──''${NC}"
|
||||
echo "Let's Encrypt needs an email for certificate notifications."
|
||||
@@ -117,13 +171,58 @@ curl \"$DDNS_LINE\""
|
||||
read -p " Email address (or Enter to keep current): " EMAIL_INPUT
|
||||
SSL_EMAIL="''${EMAIL_INPUT:-$EXISTING_EMAIL}"
|
||||
if [ -n "$SSL_EMAIL" ]; then
|
||||
while true; do
|
||||
echo ""
|
||||
echo -e " ''${YELLOW}You entered:''${NC}"
|
||||
echo -e " Email: ''${CYAN}$SSL_EMAIL''${NC}"
|
||||
echo ""
|
||||
read -p " Is this correct? (y/n): " CONFIRM
|
||||
case "$CONFIRM" in
|
||||
[yY])
|
||||
echo "$SSL_EMAIL" > /var/lib/domains/sslemail
|
||||
echo " Saved."
|
||||
echo -e " ''${GREEN}Saved.''${NC}"
|
||||
break
|
||||
;;
|
||||
[nN])
|
||||
echo " Let's try again."
|
||||
REDO=true
|
||||
break
|
||||
;;
|
||||
*)
|
||||
echo " Please enter y or n."
|
||||
;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
done
|
||||
|
||||
# ── All module domains ────────────────────────────
|
||||
${domainPrompts}
|
||||
|
||||
# ── Final review ──────────────────────────────────
|
||||
echo ""
|
||||
echo -e "''${CYAN}══════════════════════════════════════════════''${NC}"
|
||||
echo -e "''${CYAN} Review All Entries''${NC}"
|
||||
echo -e "''${CYAN}══════════════════════════════════════════════''${NC}"
|
||||
echo ""
|
||||
echo " Configured domains:"
|
||||
${domainSummary}
|
||||
echo ""
|
||||
echo " DDNS entries:"
|
||||
if [ -n "$NJALLA_ENTRIES" ]; then
|
||||
echo "$NJALLA_ENTRIES"
|
||||
else
|
||||
echo " (none)"
|
||||
fi
|
||||
echo ""
|
||||
read -p " Does everything look correct? (y/n): " FINAL_CONFIRM
|
||||
if [ "$FINAL_CONFIRM" != "y" ] && [ "$FINAL_CONFIRM" != "Y" ]; then
|
||||
echo ""
|
||||
echo -e " ''${YELLOW}Setup cancelled. Run 'sudo sovran-setup-domains' to start over.''${NC}"
|
||||
echo ""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# ── Write njalla.sh ───────────────────────────────
|
||||
echo ""
|
||||
echo -e "''${GREEN}── Generating DDNS script ──''${NC}"
|
||||
@@ -154,9 +253,6 @@ SCRIPT
|
||||
echo -e "''${CYAN} Setup Complete!''${NC}"
|
||||
echo -e "''${CYAN}══════════════════════════════════════════════''${NC}"
|
||||
echo ""
|
||||
echo " Configured domains:"
|
||||
${domainSummary}
|
||||
echo ""
|
||||
echo " Domain files: /var/lib/domains/"
|
||||
echo " DDNS script: /var/lib/njalla/njalla.sh"
|
||||
echo " DDNS cron: Every 15 minutes (already configured)"
|
||||
@@ -177,6 +273,7 @@ SCRIPT
|
||||
|
||||
MISSING=false
|
||||
NEW_NJALLA_ENTRIES=""
|
||||
PENDING_NJALLA=""
|
||||
|
||||
echo ""
|
||||
echo -e "''${CYAN}══════════════════════════════════════════════''${NC}"
|
||||
@@ -197,6 +294,30 @@ SCRIPT
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# ── Final review ──────────────────────────────────
|
||||
echo ""
|
||||
echo -e "''${CYAN}══════════════════════════════════════════════''${NC}"
|
||||
echo -e "''${CYAN} Review New Entries''${NC}"
|
||||
echo -e "''${CYAN}══════════════════════════════════════════════''${NC}"
|
||||
echo ""
|
||||
echo " All configured domains:"
|
||||
${domainSummary}
|
||||
echo ""
|
||||
echo " New DDNS entries:"
|
||||
if [ -n "$NEW_NJALLA_ENTRIES" ]; then
|
||||
echo "$NEW_NJALLA_ENTRIES"
|
||||
else
|
||||
echo " (none)"
|
||||
fi
|
||||
echo ""
|
||||
read -p " Does everything look correct? (y/n): " FINAL_CONFIRM
|
||||
if [ "$FINAL_CONFIRM" != "y" ] && [ "$FINAL_CONFIRM" != "Y" ]; then
|
||||
echo ""
|
||||
echo -e " ''${YELLOW}Setup cancelled. Run 'sudo sovran-add-domains' to start over.''${NC}"
|
||||
echo ""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# ── Append new entries to njalla.sh ───────────────
|
||||
if [ -n "$NEW_NJALLA_ENTRIES" ]; then
|
||||
echo ""
|
||||
@@ -225,7 +346,7 @@ SCRIPT
|
||||
|
||||
# ── Summary ───────────────────────────────────────
|
||||
echo ""
|
||||
echo -e "''${CYAN}══════════════════════════════════════════════''${NC}"
|
||||
echo -e "''${CYAN}═<EFBFBD><EFBFBD>════════════════════════════════════════════''${NC}"
|
||||
echo -e "''${CYAN} New Domains Added!''${NC}"
|
||||
echo -e "''${CYAN}══════════════════════════════════════════════''${NC}"
|
||||
echo ""
|
||||
@@ -234,7 +355,7 @@ SCRIPT
|
||||
echo ""
|
||||
echo -e "''${YELLOW} Rebuilding to activate services with new domains...''${NC}"
|
||||
echo ""
|
||||
nixos-rebuild switch --impure --flake /etc/nixos#nixos
|
||||
nixos-rebuild switch --flake /etc/nixos#nixos
|
||||
'';
|
||||
|
||||
needsSetup = pkgs.writeShellScriptBin "sovran-domains-need-setup" ''
|
||||
|
||||
Reference in New Issue
Block a user