#!/bin/sh
#Changes the password of the Freetz-Webif
# Usage: modwebpw freetz

TMP=/var/tmp
FLASH=$TMP/flash

case $1 in
	freetz)
		echo 'Changing password for freetz webconfig'
		echo 'This password should be different from root'"'"'s password.'
		echo 'No "weak password" warnings are generated.'
		echo ''
		echo 'The webinterface may have major bugs allowing to execute'
		echo 'arbitrary code. USE AT YOUR OWN RISK!'
		echo ''

		. /mod/etc/conf/mod.cfg

		read -p 'Enter old password: ' -r -s oldpasswd
		echo

		salt=${MOD_HTTPD_PASSWD#'$1$'}
		salt=${salt%%\$*}
		if [ "$(/usr/bin/mkpasswd -m md5 "$oldpasswd" "$salt")" != "$MOD_HTTPD_PASSWD" ]; then
			echo 'Wrong password.' >&2
			exit 2
		fi

		read -p 'Enter new password: ' -r -s passwd1
		echo
		read -p 'Re-enter new password: ' -r -s passwd2
		echo

		if [ "$passwd1" != "$passwd2" -o -z "$passwd1" ]; then
			echo 'Passwords do not match or empty password.' 1>&2
			echo 'modwebpw: The password for freetz webconfig is unchanged.' 1>&2
			echo '' 1>&2
			exit 1
		fi

		/usr/bin/modconf set mod MOD_HTTPD_PASSWD=$(/usr/sbin/httpd -m "$passwd1")

		echo 'modwebpw: Password for freetz webconfig changed.'
		echo ''

		/usr/bin/modconf save mod
		[ "$2" = "noflash" ] || /usr/bin/modsave flash
		;;
	*)
		echo "Usage: modwebpw freetz" >&2
		exit 1
		;;
esac

exit 0