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