summaryrefslogtreecommitdiffstats
path: root/satellit_installer/static_files/dropped_script
blob: 8ffc9481865809ca688e35117c1afab4e7f7afcb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#!/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:2345:respawn:$DMSDDIR/dmsd.sh" >> /etc/inittab
fi

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

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

echo
echo "Neue SSH host keys werden generiert"
echo "(Beim nächsten Verbinden mit dem Satelliten-Server werden Sie möglicherweise"
echo "eine entsprechende Warnung erhalten)"
echo

rm -f /etc/ssh/ssh_host_*key* 2>/dev/null

ssh-keygen -f /etc/ssh/ssh_host_rsa_key -N "" -t rsa -q
ssh-keygen -f /etc/ssh/ssh_host_dsa_key -N "" -t dsa -q
ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key -N "" -t ecdsa -q

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