-
Notifications
You must be signed in to change notification settings - Fork 0
/
database-host-config.sh
115 lines (94 loc) · 5.07 KB
/
database-host-config.sh
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
#!/bin/bash
# Sicherheitshinweis anzeigen
if ! whiptail --title "⚠️ Sicherheitshinweis" --yesno "Dieses Script beinhaltet möglicherweise ein Sicherheitsrisiko, wofür du alleine verantwortlich bist wenn du keine weiteren Sicherheitsvorkehrungen triffst.\n\nDurch diesen Script wird ein Datenbank-Host angelegt, die für alle öffentlich erreichbar ist. Der direkte Zugriff verweigert nur das nötige Passwort.\n\nUm es unautorisierten Nutzern schwer zu machen, wird ein 256-stelliges Passwort verwendet. Das Passwort wirst du nach Abschluss der Konfiguration nicht mehr brauchen.\n\nDiese wird rein zufällig generiert.\n\nMöchtest du fortfahren?" 22 78; then
echo "Benutzer hat abgebrochen."
curl -sSL https://setup.germandactyl.de/ | sudo bash -s --
exit 1
fi
clear
echo ""
echo ""
echo "### Passwortgenerierung gestartet ###"
sleep 0.5
### Prüfe, ob notwendige Pakete vorhanden sind* ###
apt install jq curl lolcat -y
# Funktion zur Passwortgenerierung
generate_password() {
tr -dc '[:alnum:]' </dev/urandom | head -c 256
}
# Fortschrittsanzeige-Funktion mit Passwortanzeige - Is unnötig, aber funny. :D
show_progress() {
for ((i = 0; i <= 100; i++)); do
sleep 0.125 # Kurze Wartezeit zwischen den Iterationen
password=$(generate_password)
echo $i
echo "XXX"
echo "Generiere Passwort: $password"
done
}
{
show_progress
} | whiptail --title "🔑 Passwortgenerator läuft gerade" --gauge "Generiere Passwort..." 8 78 0
PASSWORD=$(generate_password)
echo "Passwort wurde generiert: $PASSWORD"
sleep 0.5
echo "### Benutzernamengenerierung gestartet ###"
USERNAME=$(curl -s 'https://randomuser.me/api/?nat=de' | jq -r '.results[0].name.first + .results[0].name.last' | tr -d 'äöü')
echo "Benutzername generiert: $USERNAME"
sleep 0.5
echo "### Ermittlung der öffentlichen IP-Adresse ###"
IP_ADDRESS=$(curl -s http://ipinfo.io/ip)
echo "Öffentliche IP-Adresse: $IP_ADDRESS"
sleep 0.5
echo "### MySQL-Benutzer und Berechtigungen werden erstellt ###"
sudo mysql -e "CREATE USER '${USERNAME}'@'${IP_ADDRESS}' IDENTIFIED BY '${PASSWORD}';"
sudo mysql -e "GRANT ALL PRIVILEGES ON *.* TO '${USERNAME}'@'${IP_ADDRESS}' WITH GRANT OPTION;"
sudo mysql -e "FLUSH PRIVILEGES;"
echo "MySQL-Benutzer und Berechtigungen erstellt."
sleep 0.5
echo "### MySQL-Konfiguration wird angepasst und MySQL neu gestartet ###"
echo -e "[mysqld]\nbind-address=0.0.0.0" | sudo tee -a /etc/mysql/my.cnf
sudo systemctl restart mysql
echo "MySQL-Konfiguration angepasst und MySQL neu gestartet."
sleep 0.5
# Zugangsdaten anzeigen
clear
whiptail --title "🎉 Database Host angelegt" --msgbox "Der Database Host wurde erfolgreich erstellt und steht nun zur Einrichtung zur Verfügung. Navigiere nun in deinem Admin Panel auf das Menü namens 'Alle Datenbanken'. Klicke auf Erstellen, wenn du soweit bist, bestätige es DANN ERST mit ENTER. Dir werden dann einmalig die angelegten Zugangsdaten angezeigt, die hinzugefügt werden können." 20 78
# Zugangsdaten des Database Host
whiptail --title "🔐 Zugangsdaten des Database Host" --msgbox "Hier sind die Zugangsdaten des MySQL Host, sobald es erfolgreich erstellt wurde brauchst du die Daten nicht mehr.\n\nName: (Darfst du selbst benennen)\nHost: ${IP_ADDRESS}\nPort: 3306\nBenutzername: ${USERNAME}\nPasswort: (wird nach Bestätigung extra gezeigt)\n\nUnter Linked Node musst du nichts verändern.\nDrücke Enter, um das Passwort zu sehen." 20 78
# Passwort in der Konsole ausgeben
clear
echo ""
echo ""
echo "PASSWORT FREIGEGEBEN - - - - - - - - - - - - - - -"
echo -e "\nPasswort zum Kopieren:"
echo -e "$PASSWORD\n" | /usr/games/lolcat
echo "Sobald du es kopiert und eingefügt hast, drücke bitte ERST DANN die Taste 'ENTER'."
echo ""
echo "-> Warte auf Eingabe der Taste Enter..."
read -r # Warten auf Eingabe des Benutzers
# Marker für das Ende dieses Skriptteils
echo -e "\n### Passwortgenerierung und Anzeige abgeschlossen ###\n"
# Erfolgsmeldung und Datenlöschung bei Fehlschlag, wenn man sagt will nicht
if ! whiptail --title "✅ Erreichbarkeit prüfen" --yesno "Hat die Einrichtung des Database Hosts geklappt?" 20 78; then
whiptail --title "❗ Fehler" --msgbox "Bitte überprüfe die Eingaben auf mögliche Schreibfehler und versuche es erneut. Die Daten werden dann aus Sicherheitsgründen gelöscht." 20 78
clear
echo ""
echo ""
echo "### Einrichtung fehlgeschlagen ###"
echo "Benutzer $USERNAME und zugehörige Daten werden gelöscht..."
sleep 0.5
# Befehl zum Löschen des Datenbankbenutzers
sudo mysql -e "DROP USER '${USERNAME}'@'${IP_ADDRESS}';"
sudo mysql -e "FLUSH PRIVILEGES;"
echo "Datenbankbenutzer $USERNAME wurde gelöscht."
whiptail --title "Vorgang zurückgesetzt" --msgbox "Da der Vorgang laut Eingabe nicht erfolgreich war, wurden sämtliche Änderungen rückgänig gemacht." 20 78
else
whiptail --title "🎊 Erfolg" --msgbox "Super! Nun ist der Database Host eingerichtet und du kannst deine eigenen Datenbanken erstellen." 20 78
fi
clear
echo ""
echo ""
echo "================== Aufgabe beendet =================="
sleep 1
sudo bash -c "$(curl -sSL https://setup.germandactyl.de/)"