Alle Updates und Verbesserungen im Überblick
Aktuelle Version: 3.0.0
[+] Neu
- Controlbot (JTS3ServerMod Basis)
- Verschlüsselte Speicherung von Query-Passwörtern
[~] Änderungen
- UI-Fix: Antivpn
- UI-Fix: Clockbot
- Antivpn: Multi-Gruppen-Schutz
[*] Fixes
- Allgemeine Bugfixes und Performance-Optimierungen
Beim Klick auf eine vorgefertigte Antwort im Ticket-View wurde immer dieselbe Antwort eingefügt. Ursache: Suche nach predefined_id (nur pro Kategorie eindeutig), sodass bei mehreren Kategorien der erste Treffer genommen wurde. Anpassung: Auswahl und Suche nutzen jetzt die eindeutige Zeilen-ID (id) aus ticket_predefined; jede Antwort wird korrekt zugeordnet.
Profilbild (Avatar)
- Eigenes Formular nur für Avatar-Upload (kein Dropify), zuverlässiges Absenden der Datei. Klick auf Vorschau öffnet Dateiauswahl; kleines „ד zum Entfernen des Bildes. Profilbilder werden unter /account/profile-image/<dateiname> per PHP ausgeliefert (umgeht Server-Konfiguration für statische Dateien). Speicherung in img/uploads/user/profile/; Anzeige in Navbar, Admin, Tickets, API angepasst.
Registrierung & E-Mail-Blacklist
- Spam-E-Mail-Domains blockieren: Tabelle user_email_blacklist (Domain z. B. test.de oder vollständige E-Mail). Registrierung mit geblockter Domain/Adresse wird mit Fehlermeldung abgelehnt. Migration migration_email_blacklist_defaults.sql mit Beispiel-Domains (test.de, example.com, tempmail.com, …). Admin-Oberfläche unter Admin → Tools → E-Mail-Blacklist: Einträge hinzufügen (einzeln oder kommagetrennt) und löschen. Route /admin/tools/email-blacklist/ in .htaccess und Router ergänzt.
Profil-Pflicht vor Bestellung
- Bestellung nur möglich, wenn das Profil vollständig ist (wie cpinfrahost). Erforderlich: Vorname, Nachname, Straße, Hausnummer, PLZ, Stadt, Land. User::hasCompleteProfile($user_id); Prüfung im Warenkorb – bei fehlenden Daten Redirect auf /account mit Hinweis.
IBAN nur für Businesskunden Pflicht
- IBAN für SEPA-Lastschrift ist nur noch für Rolle „Businesskunden“ Pflicht. Vertragskunden können IBAN optional lassen. Anpassung in Account (Adressdaten), Guthaben/Aufladen und Fehlermeldungen; Hinweistexte auf „nur Businesskunden“ umgestellt.
Gutscheine / Rabattcodes nach Kundentyp getrennt
- Kunden und Vertragskunden nutzen dieselben Gutscheincodes; Businesskunden haben eigene Codes. Neue Spalte coupons.for_business_only (0 = Kunden & Vertrag, 1 = nur Business). Migration migration_coupons_for_business_only.sql. Request::checkCoupon prüft Nutzerrolle (kundennummer) und lehnt falschen Kundentyp mit warenkorb_error_coupon_customer_type ab. Admin Gutscheine: neues Feld „Gültig für Kundentyp“ (Kunden & Vertragskunden / Nur Businesskunden), Tabellenspalte „Kundentyp“. Sprachkeys DE/EN ergänzt.
Cron & Technik
- Cron Runtime: Unbekannte Produkttypen (z. B. Reseller, SSL) werden still übersprungen (continue 2), kein „Type not found“-Spam mehr in den Logs. CRONJOBS.md mit Übersicht aller Cron-URLs/CLI-Befehle und empfohlenen Intervallen.
Icons & Admin-UI
- Icons auf Font Awesome 6 umgestellt (Admin, Kunde, Reseller). Feather-Icons entfernt. Font Awesome in head_admin.php früh geladen; doppelten Import in admin-buchhaltung-dashboard und admin-support-dashboard entfernt. Icons auf allen Admin-Seiten einheitlich.
Admin Live-Chat (ACP)
- Neuer Team-Chat für Admins/Teamler (nur auf Team-Seiten sichtbar). Panel rechts ein- und ausklappbar; Teamliste mit Online-Status; Direkt- und Gruppenchat „Team“. API: /api/admin-chat/ (team_list, conversations, messages, send, get_or_create_direct). Neue Tabellen: admin_chat_conversation, admin_chat_participant, admin_chat_message. Zwei Ping-Töne (Gruppe/Privat); Benachrichtigung im Hintergrund (Polling 10s); Nachrichten-Polling 2s wenn Chat offen; Echtzeit/SSE entfernt. UX: Letzte Nachricht in der Liste zweizeilig; Absendername sofort sichtbar; Scroll per requestAnimationFrame (Performance).
Sicherheit
- CSP: font-src um https://cdnjs.cloudflare.com ergänzt (Font-Awesome-CDN).
Rollen & Vertragskunden
- Rollen: Partner Level I/II/III zu „Partner“ zusammengeführt; neu: Vertragskunden, Businesskunden. users.ust_id für Businesskunden; users.iban für SEPA-Lastschrift (Vertrags-/Businesskunden). product_status: for_vertragskunden, for_businesskunden. user_logs: auto_renew, billing_period_days für Auto-Verlängerung.
KVM Firewall
- user_logs.firewall_id für Reselling.Services Firewall-API. Neue Tabelle kvm_firewall_rules (server_id, port, protocol, source, action) als lokaler Cache/Fallback.
Reseller Webspace
- webspace_price.for_reseller; user_webspace_server.is_reseller_package; webspace_order_queue.is_reseller_order für Trennung Reseller-Webspace-Pakete.
API-Preise-Sync: Neues Admin-Tool. Token aus api_prices_token. Sync für KVM (ohne IPv6), Domains, SSL, MS365, WHMCS, Plesk, IP-Netzwerke, VLANs. Neue Tabellen: ssl_price, ms365_price, whmcs_price, ip_nets_price, vlans_price. Plesk: product_type, api_id, title – /licenses/plesk nur Lizenzen, Preisliste alle. Neue Settings: profit_percent_reseller (5%), profit_percent_whmcs (10%). Reseller-API: eigener Profit. Preislisten-Generator: SSL, MS365, WHMCS, ipNets, vlans; PDF nur speichern. KVM-Konfigurator: Preise aus DB, Disk 1€/10GB. Domains: Profit aus DB, Reseller-Parameter.
Benutzer können sich jetzt mit E-Mail-Adresse, automatisch generiertem Benutzernamen oder Kundennummer einloggen.
Der Benutzername wird automatisch bei der Registrierung basierend auf Vorname und Nachname generiert
(z.B. "max_muasterman" für "Max Musterman").
Unterstützt auch mehrere Vornamen (z.B. "Max Kevin Musterman" wird zu "max_kevin_musterman").
Falls ein Benutzername bereits existiert, wird automatisch eine Nummer angehängt (z.B. "max_musterman_1").
Neue Datenbank-Spalte "username" wurde hinzugefügt.
Integration von spatie/browsershot (Composer-Paket, Version 5.2). Unterstützung für mehrere Screenshot-Methoden: Browsershot (Composer - Empfohlen), Puppeteer (Node.js - Fallback), Playwright (Node.js - Fallback), Wkhtmltoimage (System-Tool - Fallback). Neue Tabelle "domain_screenshots" für Screenshot-Verwaltung. Domains werden automatisch zur Warteschlange hinzugefügt bei neuer Domain-Bestellung oder manueller Domain-Erstellung durch Admin.
KVM Server und Gameserver werden jetzt in einem "Server & Gameserver" Block angezeigt. Icons zur Unterscheidung zwischen KVM und Gameserver. Einheitliche Darstellung mit Fallback-Nachricht für beide Server-Typen.
Falsches Ablaufdatum (z.B. "-56y") bei Domain-Bestellungen.
Verbesserte Datum-Parsing-Logik mit Fallback auf "time() + 1 year".
Prüft ob geparstes Datum in der Zukunft liegt und loggt Fehler bei ungültigen Datumswerten.
Behoben: 404 Fehler nach Domain-Bestellung durch Prüfung ob addProductByID() eine gültige ID zurückgibt.
Bessere Fehlerbehandlung bei fehlgeschlagener Produkterstellung.
- Behoben: PHP Warning "Undefined array key 'sex'" in domain_handle.php
- Behoben: PHP Warning "Undefined array key 'authcode'" in domain-api.php
- Verbesserte Fehlerbehandlung für API-Responses mit Prüfung auf erfolgreiche Antwort und Existenz der Keys
Korrigiert Tippfehler "expries" → "expires" in navbar.php und navbar_admin.php.
Cookie wird jetzt korrekt mit Ablaufdatum gesetzt und muss nicht mehr bei jedem Seitenaufruf akzeptiert werden.
Behebung von undefinierten Variablen im Plesk-Lizenz Bestellprozess und Plesk-View.
Behobene Fehler:
• Undefinierte Variablen $price, $license, $domain, $tld behoben
• Null-Checks für Plesk-View API-Daten hinzugefügt
• Fallback-Werte implementiert (PLSK.00000000, SERIAL-KEY-DEMO)
• Verbesserte Validierung für License-Typ vor API-Request
AntiVPN Bot API-Integration gemäß offizieller Dokumentation aktualisiert.
Änderungen:
• API-Endpunkt von /lookup/{ip} auf /api/v1/{ip} geändert
• Explizite Prüfung auf 'Y' (nicht auf !== 'N') gemäß API-Dokumentation
• Korrekte Behandlung von 'E' (Fehler) Antworten
• Sicherheit: Clients werden nur gebannt, wenn die API explizit 'Y' zurückgibt
Behebung von Timeout-Problemen bei Cron-Jobs.
Änderungen:
• Sofortige Antwort an Web-Server mit fastcgi_finish_request()
• Web-Server wartet nicht mehr auf vollständige Ausführung
• Maximale Ausführungszeit-Check nach 4 Minuten implementiert
• Behebt 503-Fehler und Nginx/Apache Timeouts beim /cron/teamspeak/bots/ Endpoint
Optimierungen für die AntiVPN Bot API-Anfragen implementiert.
Verbesserungen:
• file_get_contents() durch robuste cURL-Implementierung ersetzt
• Timeout von 10 auf 3 Sekunden reduziert für schnellere Verarbeitung
• Reduziertes Logging: Timeouts werden nicht mehr geloggt (verhindert Log-Spam)
• Bessere Fehlerbehandlung mit detaillierter Fehlererkennung
Neue Admin-Verwaltungsseite für die Aktivierung und Deaktivierung von Produkttypen hinzugefügt.
Features:
• Übersichtliche Verwaltung aller Produkttypen (KVM, TeamSpeak, Webspace, Domains, Plesk, TS3 Bots)
• Einzelne Aktivierung/Deaktivierung per Button
• Bulk-Aktionen für mehrere Produkttypen gleichzeitig
• Alternative: Alle Produkttypen auf einmal mit Checkboxen bearbeiten
• Anzeige der letzten Änderung mit relativer Zeitangabe
• Automatisches Tracking von Statusänderungen mit Timestamp
• Vollständige Unterstützung aller Bot-Typen (Control, Stream, Anti-VPN, Clock)
E-Mail-System komplett überarbeitet:
• Dynamische Logos: Header- und Footer-Logos werden jetzt aus der Datenbank geladen (header_footer_logo, invoice_logo)
• Firmendaten aus Datenbank: Adresse, E-Mail und Telefonnummer werden dynamisch aus den Invoice-Einstellungen geladen
• Social-Media-Links: Alle Social-Media-Links (Twitter, Instagram, Facebook, YouTube, Discord) werden jetzt aus der Datenbank geladen
• E-Mail-Versand verbessert: sendMail() gibt jetzt korrekt true/false zurück statt Strings
• Registrierung: E-Mail-Versand bei der Registrierung funktioniert jetzt korrekt, auch wenn der User noch nicht in der DB existiert
• Datenbank-Speicherung: Alle E-Mails werden jetzt IMMER in der user_mails Tabelle gespeichert, auch bei Versand-Fehlern (mit Fehlerinformationen)
• PHP-Syntax-Fehler behoben: Alle PHP-Tags im E-Mail-Template wurden durch String-Verkettung ersetzt
Admin-Verbesserungen:
• Produkttyp-Übersetzungen: Fehlende Übersetzung für "STREAM BOT" hinzugefügt
• Fallback-Lösung: Produkttypen ohne Übersetzung zeigen jetzt den Originalnamen statt einer Warnung
• Datenbank-Fehler behoben: Korrekte Spaltennamen für Logo-Abfragen (header_footer_logo statt header_logo/footer_logo)
Technische Details:
• sendMail.php: Verbesserte Fehlerbehandlung und Logging
• new_mail_style.php: Alle dynamischen Werte verwenden jetzt String-Verkettung statt PHP-Tags
• products.php: Fallback für fehlende Übersetzungen implementiert
• german.php: Übersetzung für "STREAM BOT" hinzugefügt
Die Funktionalität zum Ändern von TeamSpeak Server-Einstellungen wurde vollständig überarbeitet:
• Validierung für Servername, Sicherheitsstufe (0-20) und Banner-Modus (0-3) hinzugefügt
• Korrekte Fehlerbehandlung bei ungültigen Eingaben
• Verbesserte Behandlung leerer Werte (z.B. Passwort entfernen)
• JSON-Antworten werden nun immer zurückgegeben (Erfolg oder Fehler)
• Nur geänderte Werte werden an den TeamSpeak-Server gesendet
• Exception-Handling in der editServer-Funktion verbessert
• Spezifische Fehlermeldungen für verschiedene Validierungsfehler
Servername, Serverpasswort und Sicherheitsstufe können nun zuverlässig geändert werden.
Die Upgrade-Funktionalität für TeamSpeak Server wurde vollständig überarbeitet und behoben:
• Fehlende Fehlerbehandlung bei ungültigen Eingaben wurde hinzugefügt
• Korrekte JSON-Antworten bei Erfolg und Fehlern werden nun zurückgegeben
• Guthabenabzug funktioniert jetzt zuverlässig bei Upgrades
• Automatische Rechnungserstellung wurde für alle TeamSpeak-Upgrades implementiert
• Verbesserte Validierung der Upgrade-Parameter (Slots, Backups)
• Fehlermeldungen bei unzureichendem Guthaben werden nun korrekt angezeigt
Kunden erhalten nun automatisch eine Rechnung für alle durchgeführten Upgrades, die im Kundenbereich einsehbar ist.
Die ControlBot-Funktionalität wurde vollständig überarbeitet und kritische Fehler behoben.
• Datenbankverbindungsfehler behoben: Die ControlBot-Datenbankverbindung wurde fälschlicherweise auf null gesetzt, was zu "Call to a member function prepare() on null" Fehlern führte
• Null-Prüfungen hinzugefügt: Alle ControlBot-Methoden prüfen jetzt, ob die Datenbankverbindung verfügbar ist, bevor sie verwendet wird
• Verbessertes Error-Logging: Fehlermeldungen werden jetzt korrekt geloggt und an den Benutzer zurückgegeben
• Stabilität verbessert: ControlBot-Accounts können jetzt wieder zuverlässig erstellt, gesperrt und gelöscht werden
Die ControlBot-Funktionalität ist jetzt vollständig funktionsfähig und produktionsbereit.
Erste Version des Systems