#!/bin/sh
# set root password dialog for Knoppix
# (C) Klaus Knopper 2005
# 한글메시지 번역 : 서민구, 신재훈
# Xdialog에서 gdialog로 출력방법 수정 : 신재훈
      
PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin"
export PATH

[ "`id -u`" != "0" ] && exec sudo "$0" "$@"

XDIALOG_HIGH_DIALOG_COMPAT=1
export XDIALOG_HIGH_DIALOG_COMPAT

TMP="/tmp/knoppix-password.tmp$$"

DIALOG="gialog"
[ -n "$DISPLAY" ] && [ -x /usr/bin/gdialog ] && DIALOG="gdialog"

# LANG et al.
[ -f /etc/sysconfig/i18n ] && . /etc/sysconfig/i18n

case "$LANGUAGE" in
	de*|at*|ch*)
	     TITLE="Root-Passwort"
             MESSAGE1="Passwort fr 'root' setzen:"
	     MESSAGE2="Wiederhole Passwort:"
	     MESSAGE3="Passwrter stimmen nicht berein" ;;
	ko)  TITLE="루트 비밀번호"
             MESSAGE1="루트 비밀번호 입력"
	     MESSAGE2="확인을 위하여 비밀번호 재입력"
	     MESSAGE3="비밀번호가 일치하지 않습니다." ;;
	*)   TITLE="Root Password"
             MESSAGE1="Set password for 'root':"
	     MESSAGE2="Retype password:"
	     MESSAGE3="Passwords did not match" ;;
esac

while true; do
#	PASSWORD1=$($DIALOG --stdout --passwordbox "$MESSAGE1" 0 0) || break
#	PASSWORD2=$($DIALOG --stdout --passwordbox "$MESSAGE2" 0 0) || break
# gdialog에는 password box가 존재하지 않기 때문에 직접 /usr/bin/gdialog에
# password box 기능을 구현하였습니다.
PASSWORD1=""
PASSWORD2=""
$DIALOG --title "$TITLE" --password "$MESSAGE1" 0 0 "" 2>"$TMP.pass" || break
PASSWORD1="$(<$TMP.pass)"
$DIALOG --title "$TITLE" --password "$MESSAGE2" 0 0 "" 2>"$TMP.pass"  || break
PASSWORD2="$(<$TMP.pass)"
# 무슨 이유에서인지 모르겠으나 gdialog의 password box로부터 직접 쉘 변수를 
# 입력받아 비교하는 기존의 방법은 PASSWORD1과 PASSWORD2의 값을 제대로 비교하지
# 못하였습니다. 그래서 /usr/sbin/knoppix-mkimage의 password box의 구현 내용을
# 토대로 위와 같이 변경하였습니다. (임시 파일을 만들어 입력받은 쉘변수 비교)
	if [ "$PASSWORD1" = "$PASSWORD2" ]; then
		echo "root:$PASSWORD1" | chpasswd
		rm -f "$TMP.pass"
		# 임시파일을 삭제
		break
		# echo -e "$PASSWORD1\n$PASSWORD1" | smbpasswd -a root -s
	else
		$DIALOG --title "$TITLE" --msgbox "$MESSAGE3" 0 0
	fi
done

exit 0
