# SPDX-License-Identifier: GPL-3.0-or-later
post_install() {
  getent group knot-resolver &>/dev/null || groupadd -r knot-resolver >/dev/null
  getent passwd knot-resolver &>/dev/null || useradd -r -g knot-resolver -d /dev/null -s /bin/false -c knot-resolver knot-resolver >/dev/null
  chown -R root:knot-resolver /etc/knot-resolver
}

pre_upgrade() {
  # upgrade from 4.x to 5.x - save socket interfaces before package uninstall
  if [ -f /usr/lib/systemd/system/kresd.socket ] ; then
    export UPG_DIR=/var/lib/knot-resolver/.upgrade-4-to-5
    mkdir -p ${UPG_DIR}
    touch ${UPG_DIR}/.unfinished

    for sock in kresd.socket kresd-tls.socket kresd-webmgmt.socket kresd-doh.socket ; do
      if systemctl is-enabled ${sock} 2>/dev/null | grep -qv masked ; then
        systemctl show ${sock} -p Listen > ${UPG_DIR}/${sock}
        case "$(systemctl show ${sock} -p BindIPv6Only)" in
        *ipv6-only)
          touch ${UPG_DIR}/${sock}.v6only
          ;;
        *default)
          if cat /proc/sys/net/ipv6/bindv6only | grep -q 1 ; then
            touch ${UPG_DIR}/${sock}.v6only
          fi
          ;;
        esac
      fi
    done
  fi
}

post_upgrade() {
  # upgrade from 4.x to 5.x - convert systemd socket configs to net.listen() format
  export UPG_DIR=/var/lib/knot-resolver/.upgrade-4-to-5
  if [ -f ${UPG_DIR}/.unfinished ] ; then
    rm -f ${UPG_DIR}/.unfinished
    kresd -c /usr/lib/knot-resolver/upgrade-4-to-5.lua &>/dev/null
    echo -e "\n   !!! WARNING !!!"
    echo -e "Knot Resolver configuration file requires manual upgrade.\n"
    cat ${UPG_DIR}/kresd.conf.net 2>/dev/null
  fi

  chown -R root:knot-resolver /etc/knot-resolver
  chown -R root:knot-resolver /var/lib/knot-resolver
}

post_remove() {
  getent passwd knot-resolver &>/dev/null && userdel knot-resolver >/dev/null
  getent group knot-resolver &>/dev/null && groupdel knot-resolver >/dev/null
  true
}
