#!/bin/sh
set -eu

if [ "$(id -u)" -ne 0 ]; then
  echo 'Run with administrator privileges: sudo citadel-configure-license' >&2
  exit 1
fi

restore_echo() { stty echo 2>/dev/null || true; }
trap restore_echo EXIT HUP INT TERM
printf 'Citadel license key: '
stty -echo
IFS= read -r license
stty echo
printf '\n'
trap - EXIT HUP INT TERM

case "$license" in
  CIT-*) ;;
  *) echo 'The license key must begin with CIT-.' >&2; exit 1 ;;
esac
[ "${#license}" -le 64 ] || { echo 'The license key is too long.' >&2; exit 1; }

install -d -o root -g root -m 0750 /etc/citadel
temporary=$(mktemp /etc/citadel/.license.XXXXXX)
trap 'rm -f "$temporary"' EXIT HUP INT TERM
chmod 0600 "$temporary"
printf '%s\n' "$license" > "$temporary"
mv -f "$temporary" /etc/citadel/license.key
chown root:root /etc/citadel/license.key
chmod 0600 /etc/citadel/license.key
trap - EXIT HUP INT TERM
echo 'Citadel license stored in protected system configuration.'
