summaryrefslogblamecommitdiffstats
path: root/satellit_installer/static_files/firstrun_script.sh
blob: 0dee03421c682984000da629d507d4959882f6c8 (plain) (tree)

















































































                                                                                                                                                                                                   
 








                                                                                     
 




















                                                                                                                                                                                   
                                                           


                            
                                               



                                                                           
                                               
                                                                        

  

















                                                                                
#!/bin/bash

if [ ! -r "/root/installer/config" ]; then
	echo "Keine firstrun-config gefunden! Tue nichts..."
	exit 0
fi

source "/root/installer/config" || { echo "Fehler beim Sourcen der firstrun-config."; exit 1; }

if [ -z "$MYSQL_ROOT_PASS" ]; then
	echo "WARNUNG: Aktuelles MySQL-root-Passwort nicht bekannt!"
	echo "**** Installationsfehler ****"
	exit 1
fi

MY_PID=$$
perror() {
	echo "$@"
	[ "$MY_PID" != "$$" ] && kill "$MY_PID"
	exit 5
}

generate_password() {
	tr -dc _A-Za-z0-9 < /dev/urandom | head -c 16
}

patchfiles() {
	# <find> <replace> <file1> <file2> ... <fileN>
	# Warning: does not escape!
	FIND=$1
	REPLACE=$2
	shift 2
	while [ $# -gt 0 ]; do
		sed -i "s/${FIND}/${REPLACE}/g" "$1"
		shift
	done
}

export LANG=de_DE.UTF-8

cat <<-HEREDOC
Willkommen zur Grundkonfiguration des bwLehrpool-Satellitenservers.

Diese einmalige Konfiguration dient dazu, das root-Passwort des Servers
zu ändern, sowie ggf. die Netzwerkkonfiguration des Servers anzupassen.

Aus Sicherheitsgründen ist es dringend zu empfehlen, das root-Passwort
im Produktivbetrieb zu ändern!

HEREDOC

passwd

echo
echo "Nun werden einige intern genutzte Passwörter (z.B. MySQL-Zugänge) neu"
echo "generiert....."
umask 0077

MYSQL_ROOT_NEW=$(generate_password)
mysqladmin -u root -p"${MYSQL_ROOT_PASS}" password "${MYSQL_ROOT_NEW}" || perror "Neusetzen des root-MySQL-Passworts fehlgeschlagen"
# Just in case...
sed -i "s/^MYSQL_ROOT_PASS=.*\$/${MYSQL_ROOT_NEW}/g" "/root/installer/config"

MYSQL_BWLEHRPOOL_NEW=$(generate_password)
echo "SET PASSWORD FOR 'bwLehrpool'@'localhost' = PASSWORD('$MYSQL_BWLEHRPOOL_NEW');" | mysql -u root -p"${MYSQL_ROOT_NEW}" || perror "Neusetzen des bwLehrpool-MySQL-Passworts fehlgeschlagen"

MYSQL_OPENSLX_NEW=$(generate_password)
echo "SET PASSWORD FOR 'openslx'@'localhost' = PASSWORD('$MYSQL_OPENSLX_NEW');" | mysql -u root -p"${MYSQL_ROOT_NEW}" || perror "Neusetzen des openslx-MySQL-Passworts fehlgeschlagen"

MYSQL_SYSMAINT_NEW=$(generate_password)
echo "SET PASSWORD FOR 'debian-sys-maint'@'localhost' = PASSWORD('$MYSQL_SYSMAINT_NEW');" | mysql -u root -p"${MYSQL_ROOT_NEW}" || perror "Neusetzen des debian-sys-maint-Passworts fehlgeschlagen"

# Store mysql root pass in root's home
echo "$MYSQL_ROOT_NEW" > /root/mysqlpass
chmod 600 /root/mysqlpass

# No more going back
unlink "/root/installer/config" 2>/dev/null
sed -i "/firstrun.sh/d" /root/.profile

# Write MOTD
cat > /etc/motd <<-THEREDOC

	*** bwLehrpool Satelliten-Server ***
	Eingerichtet am $(date)

	Wenn Sie sich als root eingeloggt haben, haben Sie nun folgende Optionen:
	netsetup       - Konfiguriert das Netzwerk-Interface neu (DHCP oder statisch)
	reboot         - System neustarten
	poweroff       - System herunterfahren

	Andere Modifikationen am System sind in der Regel nicht notwendig.

THEREDOC

echo "Konfigurationsdateien werden aktualisiert..."

# bwLehrpool mysql pass
# Patch dmsd, syncdaemon, vmchooser-query-script
patchfiles "%MYSQL_BWLEHRPOOL_PASS%" "$MYSQL_BWLEHRPOOL_NEW"           "$DMSDDIR/Server_Config.ini" "/opt/syncdaemon/config/mysql.properties" "/srv/openslx/www/vmchooser/list.php"
# Pureftpd
patchfiles 'MYSQLPassword.*$' "MYSQLPassword $MYSQL_BWLEHRPOOL_NEW"    "/etc/pure-ftpd/db/mysql.conf"

# openslx mysql pass
# Patching openslx-mysql-userpass into slx-admin config:
patchfiles "%MYSQL_OPENSLX_PASS%" "$MYSQL_OPENSLX_NEW"                 "$WWWDIR/slx-admin/config.php"

# Patching debian-sys-maint password into /etc/mysql/debian.cnf:
patchfiles 'password *=.*$' "password = $MYSQL_SYSMAINT_NEW"           "/etc/mysql/debian.cnf"

echo "Dienste werden aktiviert..."

# inittab-entry dmsd:
if ! grep -q "dmsd.*respawn" /etc/inittab; then
	echo "dmsd:2:once:$DMSDDIR/dmsd.sh" >> /etc/inittab
fi

# inittab-entry taskmanager:
if ! grep -q "tman.*respawn" /etc/inittab; then
	echo "tman:2345:respawn:$TASKMANDIR/taskmanager.sh" >> /etc/inittab
fi

# inittab-entry syncdaemon:
if ! grep -q "synd.*respawn" /etc/inittab; then
	echo "synd:2:once:/opt/syncdaemon/syncdaemon.sh" >> /etc/inittab
fi

echo "Abschließend können Sie festlegen, ob der Server seine IP-Konfiguration"
echo "per DHCP erhält, oder eine statische Konfiguration verwendet wird."
/usr/local/sbin/netsetup

cat <<HEREDOC

Damit ist die Einrichtung abgeschlossen. Die weitere Konfiguration des
bwLehrpool-Systems erfolgt über die Webschnittstelle, die über die
IP-Addresse oder den Hostnamen des Servers erreichbar ist.

Der Server wird sich jetzt neustarten.

HEREDOC

sleep 4
unlink "/root/installer/firstrun.sh"
reboot