#!/bin/bash
# 번역 : 박신조, 신재훈
# Knoppix 한글 메시지 출력을 위한 코드 수정 : 신재훈

PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin"
export PATH

if [ ! -d /KNOPPIX/etc ] ; then 
	echo -e "FATAL ERROR!\nThis Knoppix script must not be run on a regular system.\nAborting."
	exit 1
fi

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

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

XDIALOG_HIGH_DIALOG_COMPAT=1
export XDIALOG_HIGH_DIALOG_COMPAT

DIALOG="dialog"
[ -n "$DISPLAY" ] && [ -x /usr/bin/Xdialog ] && DIALOG="Xdialog"
TMP="/tmp/sambastart.tmp.$$"

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#stop server if running
/etc/init.d/samba stop

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#samba password file must be not be a link to the CD
SMBPASS=/etc/samba/smbpasswd
if [ -L $SMBPASS ] ; then
	rm -f $SMBPASS
	cp -a /KNOPPIX$SMBPASS $SMBPASS
fi
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#make sure password is set
case "$LANGUAGE" in
	de*) MESSAGE1="Passwort fr Benutzer 'knoppix' setzen";
	     MESSAGE2="Wiederhole Passwort";
	     MESSAGE3="Passwoerter stimmen nicht berein";
             TITLE="Einrichten und starten von Samba";
             MESSAGE_EXPORTS="Sollen alle Laufwerke exportiert werden, so dass sie vom Fremdrechener aus gemounted, gelesen und beschrieben werden knnen?"; ;;
        ko)  MESSAGE1="사용자 'knoppix'의 비밀번호를 설정하십시오";
             MESSAGE2="확인을 위해 비밀번호를 다시 입력하십시오";
             MESSAGE3="비밀번호가 맞지 않습니다.";
             TITLE="삼바 설정과 시작";
             MESSAGE_EXPORTS="네트워크를 통해 원격에서 사용할 수 있도록 모든 하드드라이브를 공개할까요?"; ;;
	*)   MESSAGE1="Set password for user 'knoppix'";
	     MESSAGE2="Retype password";
	     MESSAGE3="Passwords did not match";
             TITLE="Configure and start Samba";
             MESSAGE_EXPORTS="Export all harddrives so that they can be mounted, read and written from the remote machine?"; ;;

esac

echo ""

FORCE=false
FORCEEXPORT=false
echo "$@" | grep force && FORCE=true
echo "$@" | grep export && FORCEEXPORT=true

#loop while password is not set
while grep -q '^knoppix:1000:XXXXX' /etc/samba/smbpasswd || $FORCE ; do
	rm -f "$TMP"
	$DIALOG --passwordbox "$MESSAGE1" 0 0 2>"$TMP" || break
	PASSWORD1="$(<$TMP)"
	rm -f "$TMP"
	$DIALOG --passwordbox "$MESSAGE2" 0 0 2>"$TMP" || break
	PASSWORD2="$(<$TMP)"
	rm -f "$TMP"
	if [ "$PASSWORD1" == "$PASSWORD2" ] ; then
		#set samba password
		echo -e "$PASSWORD1\n$PASSWORD1" | smbpasswd -a knoppix -s
	else
		$DIALOG --msgbox "$MESSAGE3" 0 0
	fi
	#force is only executed once
	FORCE=false
done

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#update samba config, make home writeable
SMBCONF=/etc/samba/smb.conf
rm -f $SMBCONF
sed "s/read only = yes/read only = no/" /KNOPPIX$SMBCONF >$SMBCONF

#ask user and export hardisks if he decides to do so
#can be done with append to smb.conf as its always a fresh copy
#(made above)
if $FORCEEXPORT || $DIALOG --title "$TITLE" --defaultno --yesno "$MESSAGE_EXPORTS" 0 0 ; then
for HD in $(cut -d " " -f 2 /etc/fstab|grep /mnt) ; do
NAME=$(basename $HD)
cat >>$SMBCONF <<EOF
[$NAME]
	comment = $HD
	browseable = yes
	path = $HD
	writeable = yes
	preexec = /bin/mount $HD
	postexec = /bin/umount $HD
EOF
done
fi

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#and finaly start the server
/etc/init.d/samba start

