root пре 6 месеци
родитељ
комит
dd2304e085
2 измењених фајлова са 115 додато и 0 уклоњено
  1. 78 0
      install.sh
  2. 37 0
      upgrade.sh

+ 78 - 0
install.sh

@@ -0,0 +1,78 @@
+#!/bin/bash
+
+# Έλεγχος αν τρέχει ως root
+if [ "$EUID" -ne 0 ]; then
+  echo "❌ Please run as root (sudo bash install.sh)"
+  exit 1
+fi
+
+echo "🚀 [1/6] Updating APT and installing system packages..."
+apt-get update
+apt-get install -y python3 python3-pip bind9 bind9utils bind9-doc dnsutils ufw apparmor-utils zip unzip curl
+
+echo "🐍 [2/6] Installing Python dependencies..."
+# Το --break-system-packages είναι απαραίτητο στα νεότερα Debian/Ubuntu
+pip3 install Flask Werkzeug --break-system-packages
+
+echo "📂 [3/6] Setting up directories and copying files..."
+# Δημιουργία του βασικού φακέλου
+mkdir -p /opt/bindmanager
+
+# Αντιγραφή όλων των αρχείων από το current directory στο /opt/bindmanager
+cp -r ./* /opt/bindmanager/
+chmod +x /opt/bindmanager/app.py
+
+# Δημιουργία φακέλου για τα Query Logs του BIND9 και δικαιώματα
+mkdir -p /var/log/named
+touch /var/log/named/queries.log
+chown -R bind:bind /var/log/named
+chmod -R 775 /var/log/named
+
+# Δημιουργία φακέλου για την cache του BIND αν δεν υπάρχει (για τα slave/rpz zones)
+mkdir -p /var/cache/bind
+chown -R bind:bind /var/cache/bind
+
+echo "🛡️ [4/6] Patching AppArmor for BIND9 Query Logs..."
+# Το BIND9 by default μπλοκάρεται από το AppArmor αν πάει να γράψει στο /var/log/named
+if [ -f /etc/apparmor.d/usr.sbin.named ]; then
+    if ! grep -q "/var/log/named/\*\* rw," /etc/apparmor.d/usr.sbin.named; then
+        # Προσθέτει το rule πριν το κλείσιμο της αγκύλης '}'
+        sed -i '/^}/i \ \ /var/log/named/** rw,' /etc/apparmor.d/usr.sbin.named
+        systemctl reload apparmor
+        echo "✅ AppArmor patched!"
+    fi
+fi
+
+echo "⚙️ [5/6] Creating Systemd Service..."
+cat <<EOF > /etc/systemd/system/bindmanager.service
+[Unit]
+Description=BIND9 Manager Control Panel
+After=network.target
+
+[Service]
+User=root
+WorkingDirectory=/opt/bindmanager
+ExecStart=/usr/bin/python3 app.py
+Restart=always
+RestartSec=5
+
+[Install]
+WantedBy=multi-user.target
+EOF
+
+echo "🔥 [6/6] Starting Services..."
+systemctl daemon-reload
+systemctl enable bindmanager
+systemctl start bindmanager
+
+systemctl enable bind9
+systemctl restart bind9
+
+echo ""
+echo "====================================================================="
+echo "✅ BIND9 PRO Control Panel installed successfully!"
+echo "====================================================================="
+echo "👉 App is running internally on: http://127.0.0.1:5000"
+echo "🔐 Default Login: admin / admin123"
+echo "🌐 Remember to configure Caddy to point to port 5000!"
+echo "====================================================================="

+ 37 - 0
upgrade.sh

@@ -0,0 +1,37 @@
+#!/bin/bash
+
+# Έλεγχος αν τρέχει ως root
+if [ "$EUID" -ne 0 ]; then
+  echo "❌ Please run as root (sudo bash upgrade.sh)"
+  exit 1
+fi
+
+echo "🛑 [1/3] Stopping BIND Pro Manager service..."
+systemctl stop bindmanager
+
+echo "📂 [2/3] Updating application files..."
+# Αντιγράφουμε ΑΥΣΤΗΡΑ μόνο τον κώδικα, για να μην κάνουμε overwrite 
+# τα users.json, settings.json, stats.json ή τα backup αρχεία σου.
+cp -r app.py core/ templates/ config.py /opt/bindmanager/ 2>/dev/null
+
+# Δίνουμε ξανά τα σωστά δικαιώματα εκτέλεσης
+chmod +x /opt/bindmanager/app.py
+
+echo "🚀 [3/3] Restarting BIND Pro Manager service..."
+systemctl daemon-reload
+systemctl start bindmanager
+
+# Μικρή παύση για να προλάβει να σηκωθεί το Flask
+sleep 2
+
+# Έλεγχος αν το service σηκώθηκε σωστά
+if systemctl is-active --quiet bindmanager; then
+    echo "====================================================================="
+    echo "✅ Upgrade completed successfully! 🚀"
+    echo "====================================================================="
+else
+    echo "====================================================================="
+    echo "⚠️ Warning: The service failed to start. Check logs with:"
+    echo "journalctl -u bindmanager.service -e"
+    echo "====================================================================="
+fi