#!/bin/bash

set -e
export DEBIAN_FRONTEND=noninteractive

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

echo "[+] STOP SERVICES"
systemctl stop apache2 mariadb || true

echo "[+] PURGE"
apt-get purge -y apache2 apache2-* mariadb-server mariadb-client mariadb-common php php-* libapache2-mod-php || true
apt-get autoremove -y
apt-get autoclean

echo "[+] REMOVE REMNANTS"
rm -rf /var/www/html/*
rm -rf /etc/apache2 /etc/php /etc/mysql
rm -rf /var/lib/mysql
rm -rf /var/log/apache2 /var/log/mysql

echo "[+] INSTALL"
apt-get update
apt-get install -y apache2 mariadb-server php php-mysql libapache2-mod-php

echo "[+] START SERVICES"
systemctl enable --now apache2 mariadb

echo "[+] WAIT FOR DB"
sleep 5

echo "[+] CREATE DATABASE + USER"
mysql -u root <<EOF
CREATE DATABASE serververwaltung;

CREATE USER 'webuser'@'localhost' IDENTIFIED BY 'webpass';
GRANT ALL PRIVILEGES ON serververwaltung.* TO 'webuser'@'localhost';

FLUSH PRIVILEGES;

USE serververwaltung;

CREATE TABLE server (
  id INT AUTO_INCREMENT PRIMARY KEY,
  rechnername VARCHAR(50) NOT NULL,
  ip_adresse VARCHAR(50) NOT NULL,
  betriebssystem VARCHAR(50) NOT NULL,
  festplattenspeicher INT NOT NULL,
  ram INT NOT NULL,
  hauptdienst VARCHAR(50) NOT NULL
);
EOF

echo "[+] CREATE WEBROOT"
mkdir -p "$WEBROOT"
chown -R www-data:www-data "$WEBROOT"

echo "[+] WRITE db.php"
cat <<'EOF' > "$WEBROOT/db.php"
<?php
$conn = new mysqli("localhost", "webuser", "webpass", "serververwaltung");
if ($conn->connect_error) {
    die("DB Fehler: " . $conn->connect_error);
}
?>
EOF

echo "[+] WRITE index.php"
cat <<'EOF' > "$WEBROOT/index.php"
<?php
include 'db.php';
$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></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 "</tr>";
    }
    echo "</table>";
} else {
    echo "Keine Server vorhanden.";
}
?>
</body>
</html>
EOF

echo "[+] WRITE add.php"
cat <<'EOF' > "$WEBROOT/add.php"
<?php
include 'db.php';

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 "[+] RESTART APACHE"
systemctl restart apache2

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

echo "[+] DONE"
echo "http://$IP/server"
