blob: 78bf23c7cda91082947daaa0510196047be25c73 (
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
|
#!/bin/bash
MY_PID=$$
perror() {
echo "[ERROR] $*"
[ "$MY_PID" != "$$" ] && kill "$MY_PID"
if ! grep -q "rclocal_script.sh has thrown an error" /etc/motd; then
cat <<-EOF >> /etc/motd
WARNING!
rclocal_script.sh has thrown an error!
Please read /root/init.log and take appropriate measures!
This server may not work correctly!
EOF
fi
exit 5
}
# Logfile
exec &> /root/init.log
echo "+++ $(basename "$0") gestartet: $(date "+%Y-%m-%d %H:%m:%S")"
[ -r "/root/installer/config" ] || perror "Installationsfehler: Keine firstrun-config gefunden!"
source "/root/installer/config" || perror "Fehler beim Sourcen der firstrun-config."
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
}
echo "+++ Lösche alte ssh-Schlüssel ..."
rm -f -- /etc/ssh/ssh_host_*key* 2>/dev/null
echo "+++ Generating new ssh keys..."
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
ssh-keygen -f /etc/ssh/ssh_host_ed25519_key -N "" -t ed25519 -q
export LANG=de_DE.UTF-8
echo "+++ Generiere intern genutzte Passwörter (z.B. MySQL-Zugänge) neu ..."
umask 0077
MYSQL_SAT_NEW=$(generate_password)
echo "SET PASSWORD FOR 'sat'@'localhost' = PASSWORD('$MYSQL_SAT_NEW');" | mysql -u root || perror "Neusetzen des sat-MySQL-Passworts fehlgeschlagen."
MYSQL_OPENSLX_NEW=$(generate_password)
echo "SET PASSWORD FOR 'openslx'@'localhost' = PASSWORD('$MYSQL_OPENSLX_NEW');" | mysql -u root || perror "Neusetzen des openslx-MySQL-Passworts fehlgeschlagen."
echo "+++ Konfigurationsdateien werden aktualisiert..."
# sat mysql pass
# Patch dmsd
patchfiles "%MYSQL_SAT_PASS%" "$MYSQL_SAT_NEW" "$DMSDDIR/config.properties"
# openslx mysql pass
# Patching openslx-mysql-userpass into slx-admin config:
patchfiles "%MYSQL_OPENSLX_PASS%" "$MYSQL_OPENSLX_NEW" "$WWWDIR/slx-admin/config.php"
# taskmanager password
TASKMANAGER_PASS=$(generate_password)
patchfile "%TM_OPENSLX_PASS%" "$TASKMANAGER_PASS" "$WWWDIR/slx-admin/config.php" "$TASKMANDIR/config/config"
echo "+++ Dienste werden aktiviert..."
# Enable bwLehrpool related services
for i in dmsd.service taskmanager.service; do
systemctl enable "$i" || echo "Warnung - konnte systemd-Service $i nicht aktivieren!"
systemctl --no-block start "$i"
done
# Write MOTD
cat > /etc/motd <<THEREDOC
*** bwLehrpool Satelliten-Server, Version $VERSION ***
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 "+++ Daten des Firstrun-Scripts werden aufgeräumt..."
unlink "/root/installer/config"
unlink "/root/installer/rclocal_script.sh"
unlink "/etc/systemd/system/firstboot.service"
unlink "/etc/systemd/system/multi-user.target.wants/firstboot.service"
exit 0
|