#!/bin/sh -e

plymouth_quit ()
{
	local PLYMOTH=plymouth
	$PLYMOTH quit 2>/dev/null || :
}

CONFIG=/etc/alterator-setup/config
[ ! -s "$CONFIG" ] || . "$CONFIG"

export ALTERATOR_DESTDIR="/"
ALTERATOR_INSTALL2=
ALTERATOR_INSTALL2_FILE=/usr/share/install2/installer-steps
ALTERATOR_VNC_SERVER=/usr/bin/x11vnc
ALTERATOR_VNC_SERVER_W=/usr/bin/wayvnc
PASS_FILE="/root/.vnc/passwd"
WAYVNC_CONF_FILE="/root/.vnc/conf"
ALTERATOR_VNC_OPTS="-usepw -rfbauth $PASS_FILE"
vncip="0.0.0.0"

wayvnc_passwd(){
	cat > "$WAYVNC_CONF_FILE" << EOF
use_relative_paths=true
address=$vncip
enable_auth=true
username=altlinux
password=$vnc_passwd
rsa_private_key_file=/root/rsa_key.pem
EOF
}

alterator_setup_cleanup()
{
	[ -L "$ALTERATOR_INSTALL2_FILE" ] && rm -f "$ALTERATOR_INSTALL2_FILE"
	[ -n "$ALTERATOR_INSTALL2" ] && rm -rf "${ALTERATOR_INSTALL2_FILE%/*}"
}

trap alterator_setup_cleanup EXIT HUP INT QUIT TERM

if [ ! -d "${ALTERATOR_INSTALL2_FILE%/*}" ]; then
	mkdir "${ALTERATOR_INSTALL2_FILE%/*}"
	ALTERATOR_INSTALL2=1
fi

plymouth_quit

if [ -n "${ALTERATOR_SETUP_VNC-}" ]; then
	mkdir -p /root/.vnc
	vnc_passwd="$(pwqgen random=24)"
	if [ -z "$WAYLAND_DISPLAY" ]; then
		"$ALTERATOR_VNC_SERVER" -storepasswd "$vnc_passwd" $PASS_FILE
		chmod 600 $PASS_FILE
	fi
	default_dev="$(route | awk '/^default/{print $8}')"
	default_ipv4="$(ip a s "$default_dev" | awk '/^[ ]*inet /{print $2}')"
	default_ipv6="$(ip a s "$default_dev" | awk '/^[ ]*inet6 /{print $2}')"
	cat << EOF
ALTERATOR SETUP === VNC access enabled
ALTERATOR SETUP === VNC Password="$vnc_passwd"
ALTERATOR SETUP === Default network device: "$default_dev"
ALTERATOR SETUP === IPv4: "$default_ipv4"
ALTERATOR SETUP === IPv6: "$default_ipv6"
EOF
	if [ -n "$WAYLAND_DISPLAY" ]; then
		wayvnc_passwd
		rm -f /root/rsa_key.pem
		ssh-keygen -m pem -f /root/rsa_key.pem -t rsa -N ""
		$ALTERATOR_VNC_SERVER_W --config $WAYVNC_CONF_FILE 0.0.0.0 > /var/log/wayvnc 2>&1 &
		# remove vnc step
		sed -i '/^vnc$/d' "$ALTERATOR_SETUP_STEPS"
	else
		set -- ${ALTERATOR_VNC_OPTS-}
		"${ALTERATOR_VNC_SERVER-}" "$@" &
		# add vnc step before setup-finish
		grep '^vnc$' "$ALTERATOR_SETUP_STEPS" -q ||
		sed -i '0,/^setup-finish$/s/^setup-finish$/vnc\n&/' "$ALTERATOR_SETUP_STEPS"
	fi
else
	# remove vnc step
	sed -i '/^vnc$/d' "$ALTERATOR_SETUP_STEPS"
fi

ln -s "$ALTERATOR_SETUP_STEPS" "$ALTERATOR_INSTALL2_FILE"
alterator-wizard -f "$ALTERATOR_SETUP_STEPS"
