# Extra env variables for this snippet:
#  - TANG_PORT
#
# Extra packages required in this snippet:
#  * tang
#  * firewalld
#  * policycoreutils-python-utils
#  * policycoreutils-python

LOG_FILE=/root/postinstall-tang-custom-port.log
[ -n "@NO_SAVE@" ] && LOG_FILE=/dev/null

exec < /dev/tty3 > /dev/tty3
chvt 3
echo "############################"
echo "# %tang-custom-port post   #"
echo "############################"
(
  TANG_PORT='@TANG_PORT@'
  EL_MAJOR='@EL_MAJOR@'

  SEMANAGE_PKG=policycoreutils-python-utils
  [ -n "${EL_MAJOR}" ] && [ "${EL_MAJOR}" = '7' ] \
    && SEMANAGE_PKG=policycoreutils-python

  REQ_PKGS="tang firewalld ${SEMANAGE_PKG}"

  # Sanity check.
  skip=
  [ -z "${TANG_PORT}" ] && skip=true
  for _pkg in ${REQ_PKGS}; do
    rpm -q "${_pkg}" >/dev/null || skip=true
  done

  if [ -z "${skip}" ]; then

    mkdir -p /etc/systemd/system/tangd.socket.d
    cat > /etc/systemd/system/tangd.socket.d/override.conf << EOF
[Socket]
ListenStream=
ListenStream=${TANG_PORT}
EOF
    systemctl daemon-reload ||:

    systemctl enable tangd.socket
    firewall-offline-cmd --add-port=${TANG_PORT}/tcp
    semanage port -a -t tangd_port_t -p tcp ${TANG_PORT}

  else
    echo "##################################################################"
    echo "#    Kickstart snippet skipped. Please make sure the required    #"
    echo "# variables are defined and the required packages are installed. #"
    echo "##################################################################"
    echo
    echo "* Required variables:"
    echo "TANG_PORT(${TANG_PORT})"
    echo
    echo "* Required packages: ${REQ_PKGS}"
    echo
    echo "* Installed packages:"
    rpm -qa | sort
    echo
  fi
) 2>&1 | tee "${LOG_FILE}"
chvt 1

# vim:set ts=2 sw=2 et:

