#!/bin/sh
#
# /sbin/syssetup:       Script zur Systemkonfiguration  
#
#                      Copyright (c) 1994 Ralf Flaxa
#
# Version: 1.8
# Datum: 2. Mai 1994                                              
#
# Dieses Skript soll die Systemkonfigurierung erleichtern. 
# Es ist auf die Linux Support Team Distribution (LST) Version 1.8 
# abgestimmt. Trotz mittlerweile ber 20 KB ist es leider nicht
# mglich, alle Spezielflle abzudecken. Ich hoffe trotzdem,
# da es hilfreich ist.
#
# Feedback bitte per e-mail an   rfflaxa@informatik.uni-erlangen.de
#
# Wir wollen ein feedback ! Damit trgst Du zur Weiterentwicklung bei.
# 

USERADD=useradd
USERDEL=userdel
GROUPADD=groupadd
GROUPDEL=groupdel
HARDWARE=etc/hardware

clear="c"
revon="[7m"
revoff="[27m"

echo $clear

usage()
{
	echo
	echo "$0: System konfigurieren"
	echo "Usage: $0 [-install] [-mouse] [-lilo] [-hostname] [-mtools] " 
	echo "		  [-net] [-xconfig] [-useradm] [-fstab] [-sound]"
	echo
}

banner()
{
        echo "--------------------------------------------"
        echo
        echo "       Linux Support Team Distribution"
        echo "                Version 1.8"
        echo
        echo "        System Administration Utility"
        echo
        echo "--------------------------------------------"
}


partshow()
{
fdisk -l 2>&1 | fgrep '/dev/' | sed '/Disk/d' | sed '/Using/d' 
}

error()
{
	echo $revon
	echo -n "$@"
	echo ' !!!'
	echo $revoff
}

# checkuser checks if username is unique
# Usage:  checkuser username
checkuser()
{
	if [ "`fgrep $1':' etc/passwd`" != "" ]; then
		error "Ein Benutzer $1 existiert bereits"
		return 1
	else
		return 0
	fi
}

# checkuid checks if uid is unique
# Usage:  checkuid uid
checkuid()
{
	searchuid=`cut -d ':' -f 3 etc/passwd | fgrep "$1" `
	if [ "$searchuid" != "" ]; then
		error "Die UID $1 ist bereits vergeben :"
		echo `fgrep ':'"$1"':' etc/passwd `
		return 1
	else
		return 0
	fi
}

# checkgroup checks if groupname is unique
# Usage:  checkgroup groupname
checkgroup()
{
	if [ "`fgrep $1':' etc/group`" != "" ]; then
		error "Eine Gruppe $1 existiert bereits"
		return 1
	else
		return 0
	fi
}

# checkgid checks if gid is unique
# Usage:  checkgid gid
checkgid()
{
	searchgid=`cut -d ':' -f 3 etc/group | fgrep ':'"$1"':' `
	if [ "$searchgid" != "" ]; then
		error "Die GID $1 ist bereits vergeben :"
		echo `fgrep ':'"$1"':' etc/group `
		return 1
	else
		return 0
	fi
}

newgroup()
{
	echo
	echo "Anlegen einer neuen Gruppe :"
	echo "----------------------------"
	while [ 1 ]; do
		echo
		echo -n "Bitte geben Sie den Namen der neuen Gruppe ein : "
		read newgroup
		if [ "$newgroup" != "" ]; then
			checkgroup $newgroup && break
		fi
	done

	while [ 1 ]; do
		echo 
		echo "Bitte geben Sie die GID der neuen Gruppe an"
		echo -n "oder nur return, wenn GID=$defgid ok ist : "
		read newgid
		if [ "$newgid" = "" ]; then 
			newgid=$defgid
		fi
		checkgid $newgid && defgid=$newgid && break
	done

	$GROUPADD -g $newgid $newgroup
}

removegroup()
{
	echo
	echo "Lschen eines Gruppeneintrages : "
	echo "----------------------------------"
	echo
	echo -n "Name der Gruppe, die Sie lschen wollen : "
	read delgroup
	checkgroup $delgroup >/dev/null && error "Gruppe $delgroup existiert nicht" && return
	echo
	echo "Sind Sie sicher, da Sie die Gruppe $delgroup "
	echo -n "lschen wollen ? (j/n) : "
	read ans
	echo
	if [ "$ans" = "j" ]; then
		$GROUPDEL $delgroup 2>/dev/null >/dev/null
		error "Gruppe $delgroup gelscht "
	else
		error "keine Gruppe gelscht"
	fi
}
		
newuser()
{
	echo 
	echo "Anlegen neuer Benutzer :"
	echo "------------------------"
	while [ 1 ]; do
		echo 
		echo -n "Bitte geben Sie den login-Namen des neuen Benutzers an : "
		read newuser
		if [ "$newuser" != "" ]; then
			checkuser $newuser && break
		fi
	done

	while [ 1 ]; do
		echo 
		echo "Bitte geben Sie die UID des neuen Benutzers an "
		echo -n "oder nur return, wenn UID=$nextuid ok ist : "
		read newuid
		if [ "$newuid" = "" ]; then 
			newuid=$nextuid
		fi
		checkuid $newuid && getnextuid && break
	done

	while [ 1 ]; do
		echo
		echo "Angabe der Gruppenzugehrigkeit von $newuser "
		echo "----------------------------------------------"
		echo "Vorschlag Gid=$defgid mit return bernehmen oder "
		echo "Liste der bekannten Gruppen mit \"l\" oder"
		echo "neue Gruppe definieren mit \"g\" oder"
		echo "Gruppennummer eingeben"
		echo
		echo -n "Geben Sie return, Gruppennummer, \"l\" oder \"g\" ein : "
		read ans
		if [ "$ans" = "l" ]; then 
			cat etc/group
			continue
		elif [ "$ans" = "g" ]; then
			newgroup
			continue
		elif [ "$ans" != "" ]; then
			defgid=$ans
		else
			fgrep ':'$defgid':' etc/group > /dev/null && break
			error "\"$defgid\" ist keine gltige Gruppe" 
		fi
	done

	$USERADD -g $defgid -u $newuid -d $defhome/$newuser -m $newuser 

	echo
	passwd $newuser

	chfn $newuser

	# Hier mte man erstmal prfen, welche Shells berhaupt
	# zur Verfgung stehen ...
	while [ 1 ]; do
		echo
		echo "Standardshell $defshell mit return" 
		echo -n "Welche Shell fr $newuser ? (sh/bash/tcsh/pdksh) : "
		read loginshell
		if [ "$loginshell" = "" ]; then
			loginshell=$defshell
		fi

		if [ -x bin/$loginshell ]; then
			break
		else
			error "Shell $loginshell not found"
		fi
	done

	chsh -s /bin/$loginshell $newuser

	echo
	fgrep "$newuser"':' etc/passwd
	echo
	echo -n "Waren diese Angaben korrekt ? (j/n) : "
	read ans
	if [ ! "$ans" = "j" ]; then
		$USERDEL -r $newuser
	else
		# Weil unser /bin/mail einen bug hat ...
		if [ ! -d usr/spool/mail ]; then
			mkdir usr/spool/mail
			chown root.mail usr/spool/mail
			chmod 775 usr/spool/mail
		fi
		# The symlinks will lead that automatically to /var if defined
		touch usr/spool/mail/$newuser
		chown $newuser.mail usr/spool/mail/$newuser
		chmod 660 usr/spool/mail/$newuser
	fi
}

removeuser()
{
	echo
	echo "Lschen eines Benutzereintrages : "
	echo "----------------------------------"
	echo
	echo -n "Name des Benutzers, den Sie lschen wollen : "
	read deluser
	checkuser $deluser > /dev/null && error "User $deluser existiert nicht" && return
	echo
	echo "Sind Sie sicher, da Sie den Benutzer $deluser "
	echo -n "lschen wollen ? (j/n) : "
	read ans
	echo
	if [ "$ans" = "j" ]; then
		$USERDEL -r $deluser 2>/dev/null >/dev/null
		error "Benutzer $deluser gelscht "
	else
		error "keine Benutzer gelscht"
	fi
}

showuser()
{
	echo 
	echo "Bekannte Benutzer in diesem System : "
	echo "-------------------------------------"
	echo
	cat etc/passwd
	echo
}

showgroup()
{
	echo 
	echo "Bekannte Gruppen in diesem System : "
	echo "------------------------------------"
	echo
	cat etc/group
	echo
}

getnextuid()
{
	# ermittle nchste zu vergebene UID
	# falls nextuid definiert, dann increment
	# mit Prfung auf Konflikt
	# falls nicht definiert, dann hchste UID + 1
	while [ 1 ]; do
		if [ "$nextuid" != "" ]; then
			nextuid=`expr $nextuid + 1 `
		else
			lastuid="`cut -d ':' -f 3 etc/passwd | sort -n | tail -1 `"
			nextuid=`expr $lastuid + 1 `

		fi
		checkuid $nextuid && break
		error "$nextuid already in use"
	done
}

setnextuid()
{
	echo
	echo "Setze Wert fr nchste UID :"
	echo "------------------------------"
	echo "Vorschlag: $nextuid"
	echo
	echo -n "Geben Sie nchste UID ein oder bernehmen Sie mit return : "
	read ans
	if [ "$ans" != "" ]; then
		nextuid=$ans
	fi
}

setdefgid()
{
	while [ 1 ]; do
		echo
		echo "Setze Standardwert fr GID :"
		echo "-----------------------------"
		echo "Vorschlag: $defgid"
		echo
		echo "Standardwert fr die GID eingeben oder"
		echo "Liste der bekannten Gruppen mit \"l\" oder "
		echo "neue Gruppe definieren mit \"g\" oder "
		echo "Vorschlag mit return bernehmen"
		echo
		echo -n "Geben Sie eine GID, \"l\", \"g\" oder return ein : "
		read ans
		if [ "$ans" = "l" ]; then 
			cat etc/group
		elif [ "$ans" = "g" ]; then
			newgroup
		elif [ "$ans" = "" ]; then
			error "Standardgruppe unverndert"
			return 0
		else
			fgrep ':'$ans':' etc/group > /dev/null && defgid=$ans && return 0
			error "\"$ans\" ist keine gltige Gruppe" 
		fi
	done
}

setdefhome()
{
	echo
	echo "Setze Standardwert fr HOME-prefix :"
	echo "-------------------------------------"
	echo "Das HOME-Verzeichnis setzt sich aus HOME-prefix"
	echo "und Username zusammen."
	echo "Vorschlag fr HOME-prefix: $defhome"
	echo
	echo "Standardwert fr HOME-prefix eingeben oder"
	echo -n "Vorschlag mit return bernehmen : "
	read ans
	if [ "$ans" = "" ]; then
		error "Standard HOME-prefix bleibt $defhome"
	else
		defhome=$ans
		mkdir -p $defhome
		error "Standard HOME-prefix wird $defhome"
	fi
}


setdefshell()
{
	while [ 1 ]; do
		echo
		echo "Setze Standard-Shell :"
		echo "----------------------"
		echo "Als Standard-Shell kann gewhlt werden:"
		if [ -x bin/sh ]; then
			echo "sh"
		fi
		if [ -x bin/bash ]; then
			echo "bash"
		fi
		if [ -x bin/csh ]; then
			echo "csh"
		fi
		if [ -x bin/tcsh ]; then
			echo "tcsh"
		fi
 		if [ -x bin/pdksh ]; then
			echo "pdksh"
		fi
 		if [ -x bin/zsh ]; then
			echo "zsh"
		fi
 
		echo "Vorschlag fr Standard-Shell: $defshell"
		echo
		echo "Standard-Shell angeben oder Vorschlag"
		echo -n "mit return bernehmen : "
		read ans
		if [ "$ans" = "" ]; then
			error "Standard-Shell bleibt $defshell"
			return 0
		else
			if [ -x bin/$ans ]; then
				defshell=$ans
				error "Standard-Shell wird $defshell"
				return 0
			else
				error "$ans not found"
			fi
		fi
	done
}

showdefaults()
{
	echo 
	echo "Standardeinstellungen fr Benutzereintrge : "
	echo "-----------------------------------------------"
	echo "Nchste UID  : $nextuid"
	echo "Standard GID  : $defgid"
	echo "Standard HOME : $defhome"
	echo "Standard Shell: $defshell"
	echo
}

defaultvalues()
{
while [ 1 ]; do
	echo
	echo "Standardwerte zur Benutzereinrichtung einstellen :"
	echo "--------------------------------------------------"
	echo
	echo "u     - Start der Uids"
	echo "g     - Standard Gid"
	echo "h     - Standard HOME-prefix"
	echo "s     - Standard Shell"
	echo "z     - Standards anzeigen"
	echo "e     - Ende Einstellung der Standardwerte"
	echo
	echo -n "Bitte whlen Sie (u/g/h/s/z/e) : "
	read ans
	case $ans in
	u)	setnextuid;;
	g)	setdefgid;;
	h)	setdefhome;;
	s)	setdefshell;;
	z)	showdefaults;;
	e)	return 0;;
	esac
done
}



	
useradm()
{
# Standardwerte setzen
getnextuid
defgid=100
defhome=/home
defshell=bash

while [ 1 ]; do
	echo
	echo "User Verwaltung :"
	echo "-----------------"
	echo
	echo "s     - Standardwerte einstellen"
	echo "n     - neuen Benutzer einrichten"
	echo "ng    - neue Gruppe einrichten"
	echo "l     - Benutzer lschen"
	echo "lg    - Gruppe lschen"
	echo "z     - Benutzerinformationen anzeigen"
	echo "zg    - Gruppeninformationen anzeigen"
	echo "v     - Benutzerverwaltung verlassen"
	echo
	echo -n "Bitte whlen Sie (s/n/ng/l/lg/z/zg/v) : "
	read ans
	case $ans in
	s)	defaultvalues;;
	n)	newuser;;
	ng)	newgroup;;
	l)	removeuser;;
	lg)	removegroup;;
	z)	showuser;;
	zg)	showgroup;;
	v)	return 0;;
	esac
done
}
 	

setupsound()
{
	while [ 1 ]; do
		echo 
		echo "Haben Sie eine Soundkarte und wollen Sie"
		echo -n "diese aktivieren ? (j/n): "
		read ans
		if [ "$ans" = "j" ]; then
			echo "YES" > etc/SOUND
			SOUND="yes"
			break
		elif [ "$ans" = "n" ]; then
			echo "NO" > etc/SOUND
			SOUND="no"
			break
		fi
	done
	echo
	echo "In /etc/SOUND steht nun \"`cat etc/SOUND`\" "
}



setupmouse()
{
	MOUSE=""
	XMOUSETYPE=""
	while [ 1 ]; do
        	echo ' '
        	echo -n "Haben Sie eine Maus (j/n)? "
        	read ans;
		if [ "$ans" = "j" -o "$ans" = "n" ]; then
			break
		fi
	done

        if [ "$ans" = "J" -o "$ans" = "j" ]; then
                while [ "$MOUSE" = "" ]; do
                        echo ' '
                        echo "1 - Logitech BusMouse"
                        echo "2 - PS2 Bus Mouse"
                        echo "3 - Microsoft Bus Mouse"
                        echo "4 - ATI XL Bus Mouse"
                        echo "5 - Microsoft Serial Mouse"
                        echo "6 - Logitech Serial Mouse"
			echo "(fr alle neueren Logitech Muse \"5\" whlen)"
                        echo "7 - MouseSystems Serial Mouse"
                        echo "8 - MM Serial Mouse"
                        echo ""
                        echo -n "Welchen Maustyp haben Sie (1-8)? "
                        read ans;
                        case $ans in
                        1) MOUSE=bmouselogitec 
			   XMOUSETYPE=busmouse ;;
                        2) MOUSE=ps2aux 
			   XMOUSETYPE='ps/2' ;;
                        3) MOUSE=bmousems 
			   XMOUSETYPE=busmouse ;;
                        4) MOUSE=bmouseatixl 
			   XMOUSETYPE=busmouse;;
                        5) MOUSE=serial 
                           XMOUSETYPE=microsoft ;;
                        6) MOUSE=serial 
                           XMOUSETYPE=logitech ;;
                        7) MOUSE=serial 
                           XMOUSETYPE=mousesystems ;;
                        8) MOUSE=serial 
                           XMOUSETYPE=mmseries ;;
                        *) error "Ungltiger Maustyp" ;;
                        esac
                done
                echo "XMOUSETYPE=$XMOUSETYPE" >> $HARDWARE
                while [ "$MOUSE" = "serial" ]; do
                        echo ' '
                        echo "1 - Com1 (/dev/ttyS0)" 
                        echo "2 - Com2 (/dev/ttyS1)" 
                        echo "3 - Com3 (/dev/ttyS2)" 
                        echo "4 - Com4 (/dev/ttyS3)" 
                        echo ""
                        echo -n "An welchem COM-Port ist die Maus angeschlosen (1/2/3/4)? "
                        read ans;
                        case $ans in
                        1) MOUSE=ttyS0 ;;
                        2) MOUSE=ttyS1 ;;
                        3) MOUSE=ttyS2 ;;
                        4) MOUSE=ttyS3 ;;
                        esac
                done
                if [ "$MOUSE" = "$MODEM" ]; then
                        echo "Warnung: Maus $MOUSE auf demselben COM-Port wie das Modem";
                else
                        ( cd dev; ln -sf $MOUSE mouse )
                        return 0;
                        echo "MOUSE=$MOUSE" >> $HARDWARE
                fi
        fi
}

setupmodem()
{
	MODEM=""
	MODEMSPEED=""
	while [ 1 ]; do
        	echo ' '
        	echo -n "Haben Sie ein Modem (j/n)? "
        	read ans;
		if [ "$ans" = "j" -o "$ans" = "n" ]; then
			break
		fi
	done

        if [ "$ans" = "J" -o "$ans" = "j" ]; then
                while [ "$MODEM" = "" ]; do
                        echo ' '
                        echo "1 - Com1 (/dev/ttyS0)" 
                        echo "2 - Com2 (/dev/ttyS1)" 
                        echo "3 - Com3 (/dev/ttyS2)" 
                        echo "4 - Com4 (/dev/ttyS3)" 
                        echo ""
                        echo -n "An welchem COM-Port ist das Modem angeschlossen (1/2/3/4)? "
                        read ans;
                        case $ans in
                        1) MODEM=ttyS0 ;;
                        2) MODEM=ttyS1 ;;
                        3) MODEM=ttyS2 ;;
                        4) MODEM=ttyS3 ;;
                        *) echo "ungltiger COM-Port" 
                        esac
                        echo "MODEM=$MODEM" >> $HARDWARE
                done
                ( cd dev; ln -sf $MODEM modem )

		while [ "$MODEMSPEED" = "" ]; do
			echo 
			echo "Datentransferrate zum Modem (in Baud)"
			echo 
			echo "1 - 57600"
			echo "2 - 38400"
			echo "3 - 19200"
			echo "4 - 9600"
			echo "5 - 2400"
			echo "6 - 1200"
			echo
			echo -n "Geschwindigkeit (1/2/3/4/5/6)? "
			read ans
			case $ans in
			1) MODEMSPEED=57600 ;;
			2) MODEMSPEED=38400 ;;
			3) MODEMSPEED=19200 ;;
			4) MODEMSPEED=9600 ;;
			5) MODEMSPEED=2400 ;;
			6) MODEMSPEED=1200 ;;
			*) echo 'ungltige Geschwindigkeit !! ' ;;
			esac
		done
		# Hier sollte jetzt eigentlich kermit, seyon und andere
		# Programme eingestellt werden ... Steht auf der TODO Liste
        fi
}


setuphostname()
{
	while [ 1 ]; do
	echo
	echo -n "Hostname fr diesen Rechner [`hostname`]: "
	read HOSTNAME;
	if [ ! "$HOSTNAME" = "" ]; then
		hostname $HOSTNAME
	else
		HOSTNAME=`cat etc/HOSTNAME | cut -d'.' -f 1 `
	fi

	DOMAINNAME=`cat etc/HOSTNAME | cut -d'.' -f 2- `
	echo -n "Domainname fr Ihren Rechner [$DOMAINNAME]: "
	read ans;
	if [ "$ans" != "" ]; then
		DOMAINNAME=$ans
	fi
	echo "Daraus ergibt sich ein vollstndiger Hostname als:"
	echo "$HOSTNAME.$DOMAINNAME"
	echo -n "Ist das ok ? (j/n): "
	read ans
	if [ "$ans" = "j" ]; then
		break
	fi
	done
	echo "$HOSTNAME.$DOMAINNAME" > etc/HOSTNAME
	# aus Kompatibilttsgrnden ...
	echo "$HOSTNAME" > etc/host
	echo "$DOMAINNAME" > etc/domain
#
# hosts konfigurieren
#

if [ -f etc/hosts.in ]; then
	(sed "/HOSTNAME/s/HOSTNAME/$HOSTNAME/" ) < etc/hosts.in > etc/hosts
fi

#
# smail konfigurieren
#

if [ -f usr/lib/smail/config.sample ]; then
	(sed "s/HOSTNAME/$HOSTNAME/g" | \
	sed "s/DOMAINNAME/$DOMAINNAME/g" ) < usr/lib/smail/config.sample \
		> usr/lib/smail/config
fi

#
# elm konfigurieren
#

if [ -f var/lib/elm/elm.rc.sample ]; then
	(sed "s/DOMAINNAME/$DOMAINNAME/g" | \
	sed "s/HOSTNAME/$HOSTNAME/g" ) < var/lib/elm/elm.rc.sample \
	> var/lib/elm/elm.rc
fi

}


setuplilo()
{
	echo 
	echo "Benutzen Sie bitte den LST Bootmanager statt syssetup -lilo "
	echo "Sie knnen den Bootmanager mit \"bootsetup\" aufrufen. "
	echo
}

setupfloppy()
{
	FLOPPYA=`fgrep FLOPPYA etc/hwconfig | cut -c9-20`
	if [ "/dev/fd0H1440" = "$FLOPPYA"  ]; then
		FLOPPYB=/dev/fd1h1200;
	else
		FLOPPYB=/dev/fd1H1440;
	fi
}

setupmtools()
{
	echo
	mkmtools
}

setupfstab()
{
	cp etc/fstab etc/fstab.in
	rm -f etc/fstab.tmp
	touch etc/fstab.tmp
        echo
        echo "Folgende Dateisysteme werden derzeit gemountet: "
	echo "------------------------------------------------"
	cat etc/fstab
while [ 1 ]; do
	echo
	echo "Filesystem Verwaltung :"
	echo "-----------------------"
	echo "i     - fstab initialisieren (zurcksetzen)"
	echo "a     - Partition aufnehmen (auch swap und msdos)"
	echo "e     - Eintrag aus fstab entfernen"
	echo "f     - fstab zeigen"
	echo "p     - zeigt verfgbare Partitionen an"
	echo "w     - fstab schreiben und dieses Men verlassen"
	echo "q     - fstab nicht ndern und Men verlassen"
	echo
	echo -n "Bitte whlen Sie (i/a/e/f/p/w/q) : "
	read ans
	case $ans in
	i)	cp etc/fstab etc/fstab.in
		rm -f etc/fstab.tmp
		touch etc/fstab.tmp;;
	a)      echo
		echo "Folgende Partitionen sind bekannt:"
		echo "----------------------------------"
		partshow
		echo "Sie knnen auch NFS-Partitionen angeben in der Form"
		echo "NFSHOST:/Pfad/der/an/Sie/exportiert/ist"
		echo
		echo -n "Welche Partition ? : "
		read partition
		# Typ ermitteln
		# Test auf NFS Partition...
		echo $partition | grep '\:' > /dev/null 2>&1
		if [ $? = 0 ]; then
			typ="nfs"
		else
			id=`partshow | grep $partition | cut -c49-50 `
			case $id in
			" 1"|" 4"|" 6")	typ="msdos";;
			" 7") typ="hpfs";;
			80|81)	typ="minix";;
			82)	typ="swap"
				echo "$partition	none	swap" >> etc/fstab.tmp
				continue;;
			83)	typ="ext2";;
			*)	echo 'ungltige Partition !! '
				echo
				continue;;
			esac
		fi
		echo
		echo "An welche Stelle soll die $typ-Partition"
		echo "$partition"
		echo -n "knftig gemountet werden ? :"
		read mountpoint
		if [ ! -d $mountpoint ]; then
			mkdir -p $mountpoint
		fi 
		if [ "$typ" = "nfs" ]; then
			echo "$partition	$mountpoint	$typ	soft,bg,intr,nodev,nosuid" >> etc/fstab.tmp
		else	
			echo "$partition	$mountpoint	$typ	defaults" >> etc/fstab.tmp
		fi
		echo;;
	e)      echo
		echo "Folgende Dateisysteme werden gemountet (fstab): "
		echo "-----------------------------------------------"
		cat -n etc/fstab.in etc/fstab.tmp	
		echo
		echo "Welchen Eintrag aus fstab entfernen ? "
		echo "Geben Sie dazu die Nummer der Zeile an, die Sie"
		echo -n "lschen wollen : "
		read delline
		if [ "$delline" != "" ]; then
			cat etc/fstab.in etc/fstab.tmp > etc/fstab.in2
			sed "$delline"d < etc/fstab.in2 > etc/fstab.in
			rm -f etc/fstab.tmp
			touch etc/fstab.tmp
		else
			echo "keine Zeile gelscht "'!!'
		fi
		echo;;
	f)	echo
		echo "Folgende Dateisysteme werden gemountet (fstab): "
		echo "-----------------------------------------------"
		cat etc/fstab.in etc/fstab.tmp;;	
	p)	echo
		echo "Folgende Partitionen sind bekannt: "
		echo "-----------------------------------"
		partshow;;
	w)	cat etc/fstab.in etc/fstab.tmp > etc/fstab
		rm -f etc/fstab.tmp
		rm -f etc/fstab.in
		return 0;;
	q)	rm -f etc/fstab.tmp
		rm -f etc/fstab.in
		return 0;;
		
	esac
done
	
}

setupxconfig()
{

	if [ "$MOUSE" = "" -o "$XMOUSETYPE" = "" ]; then
		setupmouse
		if [ "$MOUSE" = "" ]; then
			error "X11 ohne Maus macht keinen Sinn"
			return
		fi
	fi
	while [ 1 ]; do
		echo
		echo "Auswahl Monitor"
		echo
		echo " 1 Hercules "
		echo " 2 VGA Monochrome "
		echo " 3 VGA Farbe "
		echo
		echo -n "Welchen Typ von Monitor haben Sie (1/2/3) "
		read ans
		case $ans in 
		1)	MONITOR=Herc
			break;;
		2)	MONITOR=VGAmono
			break;;
		3)	MONITOR=VGAcolor
			break;;
		*)	echo 
			echo 'Ungltiger Monitortyp !!! '
B
			continue;;
		esac
	done


	while [ 1 ]; do
		echo
		echo "Auswahl X-Server"
		echo
		# Das ist noch sehr umstndlich ...
		declare -i countserv
		countserv=0
		for server in X386 X386mono XF86_Mono XF86_SVGA XF86_8514 XF86_S3 XF86_Mach8 XF86_Mach32 XF86_VGA16; do
			if [ -x usr/bin/X11/$server ]; then
				countserv=$countserv+1
				echo "$countserv  $server"
			fi
		done

		if [ "$countserv" = 0 ]; then
			echo
			echo "Habe keinen mir bekannten X-Server gefunden ..."
			return
		fi

		echo
		echo -n "Geben Sie die Nummer des X-Server ein, den Sie standardmig benutzen wollen : "
		read ans

		XSERVER=""
		countserv=0
		for server in X386 X386mono XF86_Mono XF86_SVGA XF86_8514 XF86_S3 XF86_Mach8 XF86_Mach32 XF86_VGA16; do
			if [ -x usr/bin/X11/$server ]; then
				countserv=$countserv+1
				if [ "$countserv" = "$ans" ]; then
					XSERVER=$server
					break
				fi
			fi
		done
		
		if [ "$XSERVER" != "" ]; then
			echo
			echo "Gewhlter X-Server : $XSERVER"
			( cd usr/X386/bin ; ln -fs $XSERVER X )
			break
		else
			echo
			echo 'ungltige Eingabe !!! '
		fi
	done

	if [ -f usr/X386/lib/X11/Xconfig.in ]; then
		if [ "$MONITOR" = "Herc" ]; then
			echo "MONITOR=Herc" >> $HARDWARE
			( sed "s/^# HGA2/HGA2/" | sed "/XMOUSE/s/XMOUSE/$XMOUSETYPE/" | sed "/MOUSE/s/MOUSE/\/dev\/$MOUSE/" ) < usr/X386/lib/X11/Xconfig.in > usr/X386/lib/X11/Xconfig
		elif [ "$MONITOR" = "VGAmono" ]; then
			echo "MONITOR=VGAmono" >> $HARDWARE
			( sed "/XMOUSE/s/XMOUSE/$XMOUSETYPE/" | sed "/MOUSE/s/MOUSE/\/dev\/$MOUSE/" ) < usr/X386/lib/X11/Xconfig.in > usr/X386/lib/X11/Xconfig
		elif [ "$MONITOR" = "VGAcolor" ]; then
			echo "MONITOR=VGAcolor" >> $HARDWARE
			(sed "/XMOUSE/s/XMOUSE/$XMOUSETYPE/" | sed "/MOUSE/s/MOUSE/\/dev\/$MOUSE/" ) < usr/X386/lib/X11/Xconfig.in > usr/X386/lib/X11/Xconfig
		else
			return 1
		fi
	else
		echo
		echo "kein Xconfig.in gefunden ..."
		return 1
	fi

}

readhardware()
{
	# Letzte Angaben ber Hardware einlesen
	if [ -f $HARDWARE ]; then
#		echo "Lese Hardwareeinstellungen aus $HARDWARE ..."
		. $HARDWARE
	else
		error "Kann Hardwareeinstellungen nicht aus $HARDWARE einlesen"' !!! '
		error "Wahrscheinlich wurde syssetup -install noch nicht aufgerufen ..."
	fi
}

savehardware()
{
	# Vernderungen speichern
	echo "MODEM=$MODEM" > $HARDWARE
	echo "MODEMSPEED=$MODEMSPEED" >> $HARDWARE
	echo "MOUSE=$MOUSE" >> $HARDWARE
	echo "XMOUSETYPE=$XMOUSETYPE" >> $HARDWARE
	echo "SOUND=$SOUND" >> $HARDWARE
	echo "MONITOR=$MONITOR" >> $HARDWARE
	echo "XSERVER=$XSERVER" >> $HARDWARE
	echo " " >> $HARDWARE
	echo "export MODEM MODEMSPEED MOUSE XMOUSETYPE" >> $HARDWARE
	echo "export SOUND MONITOR XSERVER" >> $HARDWARE
}


ROOTDEV=/

if [ "$1" = "-instroot" ]; then
	ROOTDEV=$2;
	shift 2;
fi

cd $ROOTDEV

PATH="$PATH:/sbin:/usr/sbin:/root/bin:/root/usr/bin:/root/sbin:/root/usr/sbin:/root/usr/local/bin"

if [ "$1" = '-h' -o "$1" = "-help" -o "$1" = '-?' ]; then
	usage
	exit 0
fi

if [ "$1" != '-install' ]; then
	readhardware
fi

hash -r

banner

if [ $# -lt 1 ]; then
	usage
	exit 0
fi

if [ "$1" = '-install' ]; then
	while [ 1 ]; do
		echo
		setupmodem;
		setupmouse;
		setupsound;
		setuphostname;
		setupmtools -instroot $ROOTDEV;
		setupfstab;
		setupxconfig;
		useradm;
		echo
		echo -n "Waren diese Angaben korrekt (j/n): "
		read ans;
		if [ "$ans" != "n" ]; then
			echo "Ok, Sie knnen /sbin/syssetup auch spter wieder aufrufen"
			break;
		fi
	done

	echo
	sbin/sysperms -install

	if [ -f etc/syssetup.notice ]; then	
		mv etc/syssetup.notice etc/syssetup.done
	fi

	if [ -f sbin/netsetup ]; then
		# nicht fragen , einfach aufrufen ...
		# echo
		# echo -n "Wollen Sie die Netzwerkkonfigurierung durchfhren ? (j/n) : "
		# read ans
		# if [ "$ans" = "j" ]; then
			sbin/netsetup -install
		# fi
	fi
	sync
	bootsetup 
	echo 
	echo "-------------------------------------------"
	echo "Gratulation ! Systemkonfigurierung beendet."
	echo "Drcken Sie nun die Eingabetaste, um Ihr  "
	echo "neu konfiguriertes Linuxsystem zu booten."
	echo "-------------------------------------------"
	read ans
	savehardware
	sync
	reboot
elif [ "$1" = '-modem' ]; then
	setupmodem;
elif [ "$1" = '-mouse' ]; then
	setupmouse;
elif [ "$1" = '-lilo' ]; then
	setuplilo;
elif [ "$1" = '-hostname' ]; then
	setuphostname;
elif [ "$1" = '-mtools' ]; then
	setupmtools;
elif [ "$1" = '-fstab' ]; then
	setupfstab;
elif [ "$1" = '-xconfig' ]; then
	setupxconfig;
elif [ "$1" = '-useradm' ]; then
	useradm;
elif [ "$1" = '-net' ]; then
	etc/netsetup;
elif [ "$1" = '-sound' ]; then
	setupsound;
fi

savehardware

sync
