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
|