#!/bin/bash

set -e

WEBROOT="/var/www/html/server"

echo "[+] LEVEL 2 – Benutzerverwaltung + Unsicherheiten"

echo "[+] Datenbank erweitern"

mysql -u root <<EOF
USE serververwaltung;

CREATE TABLE IF NOT EXISTS benutzer (
  id INT AUTO_INCREMENT PRIMARY KEY,
  benutzername VARCHAR(50),
  passwort VARCHAR(50)
);

INSERT INTO benutzer (benutzername, passwort) VALUES ('admin','admin');
INSERT INTO benutzer (benutzername, passwort) VALUES ('user','user');
EOF

echo "[+] login.html erstellen"

cat <<'EOF' > "$WEBROOT/login.html"
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>

<h2>Login</h2>

<form method="post" action="login.php">
Benutzername: <input type="text" name="benutzername"><br>
Passwort: <input type="password" name="passwort"><br>
<input type="submit" value="Login">
</form>

</body>
</html>
EOF

echo "[+] login.php erstellen"

cat <<'EOF' > "$WEBROOT/login.php"
<?php
include 'db.php';
session_start();

$benutzername = $_POST['benutzername'];
$passwort = $_POST['passwort'];

$sql = "SELECT * FROM benutzer WHERE benutzername='$benutzername' AND passwort='$passwort'";
$result = $conn->query($sql);

if ($result->num_rows == 1) {
    $_SESSION['user'] = $benutzername;
    header("Location: index.php");
} else {
    echo "Login fehlgeschlagen";
}
?>
EOF

echo "[+] delete.php erstellen (unsicher)"

cat <<'EOF' > "$WEBROOT/delete.php"
<?php
include 'db.php';
session_start();

if (!isset($_SESSION['user'])) {
    die("Nicht eingeloggt");
}

$id = $_GET['id'];

$sql = "DELETE FROM server WHERE id = $id";

if ($conn->query($sql)) {
    echo "Server gelöscht";
} else {
    echo "Fehler";
}
?>
EOF

echo "[+] index.php erweitern (Session + Login + Delete)"

cp "$WEBROOT/index.php" "$WEBROOT/index.php.bak"

cat <<'EOF' > "$WEBROOT/index.php"
<?php
include 'db.php';
session_start();

if (isset($_SESSION['user'])) {
    echo "Eingeloggt als: " . $_SESSION['user'] . "<br>";
} else {
    echo "<a href='login.html'>Login</a><br>";
}

$result = $conn->query("SELECT * FROM server");
?>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Serververwaltung</title>
</head>
<body>

<h2>Neuen Server eintragen</h2>
<form method="post" action="add.php">
Rechnername: <input type="text" name="rechnername" required><br>
IP-Adresse: <input type="text" name="ip_adresse" required><br>
Betriebssystem: <input type="text" name="betriebssystem" required><br>
Festplatte (GB): <input type="number" name="festplattenspeicher" required><br>
RAM (GB): <input type="number" name="ram" required><br>
Hauptdienst: <input type="text" name="hauptdienst" required><br>
<input type="submit" value="Speichern">
</form>

<h2>Serverliste</h2>

<?php
if ($result->num_rows > 0) {
    echo "<table border='1'>";
    echo "<tr><th>ID</th><th>Name</th><th>IP</th><th>OS</th><th>Disk</th><th>RAM</th><th>Dienst</th><th>Aktion</th></tr>";

    while ($row = $result->fetch_assoc()) {
        echo "<tr>";
        echo "<td>".$row["id"]."</td>";
        echo "<td>".$row["rechnername"]."</td>";
        echo "<td>".$row["ip_adresse"]."</td>";
        echo "<td>".$row["betriebssystem"]."</td>";
        echo "<td>".$row["festplattenspeicher"]."</td>";
        echo "<td>".$row["ram"]."</td>";
        echo "<td>".$row["hauptdienst"]."</td>";
        echo "<td><a href='delete.php?id=".$row["id"]."'>löschen</a></td>";
        echo "</tr>";
    }

    echo "</table>";
} else {
    echo "Keine Server vorhanden.";
}
?>

</body>
</html>
EOF

echo "[+] add.php schützen"

cp "$WEBROOT/add.php" "$WEBROOT/add.php.bak"

cat <<'EOF' > "$WEBROOT/add.php"
<?php
include 'db.php';
session_start();

if (!isset($_SESSION['user'])) {
    die("Nicht eingeloggt");
}

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $rechnername = $_POST["rechnername"];
    $ip_adresse = $_POST["ip_adresse"];
    $betriebssystem = $_POST["betriebssystem"];
    $festplattenspeicher = $_POST["festplattenspeicher"];
    $ram = $_POST["ram"];
    $hauptdienst = $_POST["hauptdienst"];

    $sql = "INSERT INTO server (rechnername, ip_adresse, betriebssystem, festplattenspeicher, ram, hauptdienst)
            VALUES ('$rechnername', '$ip_adresse', '$betriebssystem', '$festplattenspeicher', '$ram', '$hauptdienst')";

    if ($conn->query($sql) === TRUE) {
        header("Location: index.php");
        exit;
    } else {
        echo "Fehler: " . $conn->error;
    }
}
?>
EOF

echo "[+] Apache neu starten"
systemctl restart apache2

IP=$(hostname -I | awk '{print $1}')

echo "[+] LEVEL 2 FERTIG"
echo "Login: http://$IP/server/login.html"
echo "App:   http://$IP/server"
