103 lines
14 KiB
HTML
103 lines
14 KiB
HTML
<h1>Plugins</h1>
|
||
<p>Mit Plugins rüstet ihr Funktionen nach, ohne DeskHub selbst zu verändern. Alles läuft unter Adminportal → <b>Plugins</b> (nur echte Administratoren).</p>
|
||
|
||
<h2>Die Plugin-Verwaltung</h2>
|
||
<p>Die Seite hat drei Reiter:</p>
|
||
<ul>
|
||
<li><b>Installiert:</b> jedes Plugin als Zeile mit Zustand (Aktiv, Inaktiv, Fehler, Update), Beschreibung, Version, Berechtigungen und den Aktionen Aktivieren/Deaktivieren, Öffnen, Aktualisieren und Entfernen; oben Filter mit Zahlen (Alle, Aktiv, Inaktiv, Mit Fehler, Update verfügbar) und eine Suche.</li>
|
||
<li><b>Plugin hinzufügen:</b> der Katalog als Kacheln (mit Suche) und der ZIP-Upload für eigene Plugins.</li>
|
||
<li><b>Katalog & Schlüssel:</b> Katalog-Adresse und Herausgeber-Schlüssel.</li>
|
||
</ul>
|
||
<fig n="admin-plugins-installiert">Installierte Plugins.</fig>
|
||
<fig n="admin-plugins-hinzufuegen">Plugin hinzufügen (ZIP-Upload mit Prüfsumme und Quellenbestätigung).</fig>
|
||
<fig n="admin-plugins-katalog">Katalog und Herausgeber-Schlüssel.</fig>
|
||
|
||
<h2>Installieren, Berechtigungen, Updates</h2>
|
||
<ol class="steps">
|
||
<li>Plugin als ZIP bereithalten; wenn der Anbieter eine Prüfsumme (SHA-256) oder Signatur nennt, tragt sie ein.</li>
|
||
<li>ZIP hochladen und bestätigen, dass ihr der Quelle vertraut. Das Plugin ist danach <b>noch inaktiv</b>.</li>
|
||
<li>Mit <b>„Aktivieren“</b> einschalten und vorher die angeforderten <b>Berechtigungen</b> bestätigen. Dabei entsteht automatisch ein Backup; das Plugin legt bei Bedarf eigene Tabellen an.</li>
|
||
</ol>
|
||
<p><b>Berechtigungen</b> nennen, welche Erweiterungspunkte ein Plugin nutzt: Ticket-Ereignisse (<code>hooks.tickets</code>), Hintergrundläufe (<code>hooks.cron</code>), Menüpunkte (<code>ui.menu</code>), Seitenleistenbausteine (<code>ui.sidebar</code>), eigene Datenbank-Tabellen (<code>db.migrations</code>), öffentliche Adressen (<code>api.public</code>), Anmeldung für Mitarbeiter (<code>auth.login</code>) und Kunden (<code>auth.customer</code>). Fordert eine neue Version zusätzliche Berechtigungen an, wird das Plugin automatisch angehalten, bis ihr sie bestätigt habt – auch wenn jemand Dateien per FTP austauscht.</p>
|
||
<ul>
|
||
<li><b>Geprüfter Modus:</b> Bringt eure DeskHub-Version einen offiziellen Katalog mit, müssen Katalog-Plugins mit dem Schlüssel des Herausgebers <b>signiert</b> sein. Der Katalog lädt automatisch (alle 30 Minuten im Hintergrund); ein verfügbares Update zeigt ein Hinweis für Admins, installiert wird es nie von selbst. Eigene Plugins lassen sich zusätzlich hochladen und sind als „nicht vom Herausgeber geprüft“ markiert.</li>
|
||
<li><b>Verwalten:</b> deaktivieren, durch neuere Version ersetzen, entfernen (mit Wahl, ob die Daten des Plugins gelöscht werden).</li>
|
||
<li><b>Fehlerverhalten:</b> Ein Fehler legt das System nicht lahm; nach drei Fehlern wird das Plugin automatisch deaktiviert, der Fehlertext steht in der Liste.</li>
|
||
<li><b>Notausschalter:</b> Eine leere Datei <code>.disabled</code> im Ordner <code>plugins</code> verhindert, dass irgendein Plugin geladen wird.</li>
|
||
</ul>
|
||
<div class="warn">Ein Plugin ist Programmcode und läuft mit allen Rechten des Systems, auch mit Zugriff auf die gesamte Datenbank. Die Berechtigungen begrenzen nur die Erweiterungspunkte. Installiert nur Plugins aus vertrauenswürdigen Quellen und aktiviert „Nur signierte Plugins installieren“.</div>
|
||
|
||
<h2>Mitgelieferte Plugins</h2>
|
||
<p>Alle außer dem Discord/Telegram-Bot laufen auf jedem DeskHub ohne Änderung am Server. Jedes Plugin bringt eine eigene Seite im Menü mit.</p>
|
||
<table>
|
||
<tr><th>Plugin</th><th>Was es tut</th></tr>
|
||
<tr><td><b>Tagesbericht per E-Mail</b></td><td>Morgens eine Übersicht: offene, unzugewiesene, überfällige und eigene Tickets, Zu- und Abgänge der letzten 24 Stunden, die fünf ältesten offenen Tickets</td></tr>
|
||
<tr><td><b>Anhänge-Virenscan</b></td><td>Prüft Anhänge und sperrt Gefährliches (Quarantäne, Notiz, Tag „Virus-Verdacht“, Mail)</td></tr>
|
||
<tr><td><b>VirusTotal-Anhangsprüfung</b></td><td>Hält Anhänge zurück, bis VirusTotal sie anhand des Fingerabdrucks geprüft hat</td></tr>
|
||
<tr><td><b>Spam- und Missbrauchsfilter</b></td><td>Bewertet neue Tickets mit Punkten; legt Spam automatisch ab</td></tr>
|
||
<tr><td><b>Discord- und Telegram-Bot</b></td><td>Mitglieder legen per <code>/ticket</code> Tickets an und werden benachrichtigt</td></tr>
|
||
<tr><td><b>Urlaub und Vertretung</b></td><td>Abwesenheit mit Vertretung; Tickets wandern zur Vertretung und zurück</td></tr>
|
||
<tr><td><b>Schichtübergabe</b></td><td>Notizen für die nächste Schicht, sichtbar nach der Anmeldung</td></tr>
|
||
<tr><td><b>Störungsmitteilung und Rundmail</b></td><td>Eine Nachricht an viele Kunden gleichzeitig</td></tr>
|
||
<tr><td><b>Website- und Server-Überwachung</b></td><td>Prüft Webseiten, Ports und Zertifikate; legt bei Ausfall Tickets an</td></tr>
|
||
<tr><td><b>Datenschutz</b></td><td>Anonymisiert Kundendaten nach einer wählbaren Frist; löscht auf Antrag</td></tr>
|
||
<tr><td><b>authentik-Anmeldung</b></td><td>Anmeldung von Mitarbeitern und Kunden über authentik (OpenID Connect)</td></tr>
|
||
<tr><td><b>Synology NAS Backup</b></td><td>Kopiert Backups automatisch auf eine Synology NAS (WebDAV)</td></tr>
|
||
<tr><td><b>Cloudflare-Schutz</b></td><td>Prüft Cloudflare-Anfragen und gleicht die Cloudflare-Proxy-Netze ab, damit Besucher-IP und HTTPS sicher erkannt werden</td></tr>
|
||
<tr><td><b>Cache & Performance</b></td><td>Beschleunigt die öffentliche Wissensdatenbank mit einem einstellbaren Datenbankcache und zeigt den PHP-OPcache-Status</td></tr>
|
||
<tr><td><b>Code-Issue-Synchronisierung</b></td><td>Gibt einzelne Git-Repositories frei, importiert Issues als Tickets (mit gewählter Abteilung und Priorität) und gleicht den Ticketstatus ab</td></tr>
|
||
<tr><td><b>Sprachpakete</b> (<code>lang-en</code>, <code>lang-de</code>)</td><td>Weitere Sprachen für Portal und Mitarbeiterbereich</td></tr>
|
||
</table>
|
||
<p>Die folgenden Abschnitte zeigen die Seiten der Plugins mit Beispieldaten.</p>
|
||
|
||
<h3>Tagesbericht</h3>
|
||
<p>Im Menü „Tagesbericht“ schaltet ihr den Versand ein, legt Uhrzeit, <b>Rhythmus</b> (täglich, nur Werktage oder einmal pro Woche mit Wochentag) und Empfänger fest und schickt einen <b>Testbericht</b>. Standardmäßig kommt der Bericht nur, wenn es etwas zu tun gibt (unzugewiesene oder überfällige Tickets). Jeder Mitarbeiter wählt unter <b>„Mein Tagesbericht“</b>: <i>wie eingestellt</i>, <i>nur wenn Tickets überfällig sind</i>, <i>nur einmal pro Woche (montags)</i> oder <i>gar nicht mehr</i>; jede Mail enthält dazu einen Link. Jeder sieht nur Tickets seiner Abteilungen.</p>
|
||
<fig n="plugin-tagesbericht-einstellungen">Tagesbericht: Einstellungen (Administrator).</fig>
|
||
<fig n="plugin-tagesbericht-persoenlich">Tagesbericht: „Mein Tagesbericht“.</fig>
|
||
|
||
<h3>Virenscan und VirusTotal</h3>
|
||
<p>Der <b>Virenscan</b> braucht nichts auf dem Server: Die eingebaute Analyse erkennt Programme, Skripte, getarnte Dateien (eine .exe als PDF), doppelte Endungen, Office-Makros, PDF-Tricks, Skripte in HTML/SVG und Archive mit solchen Dateien. Optional gleicht er per Hash-Abfrage bei VirusTotal ab, und ClamAV wird mitgenutzt, falls vorhanden. Er erkennt keine ganz neuen Viren in normal aussehenden Dokumenten.</p>
|
||
<p>Die <b>VirusTotal-Anhangsprüfung</b> sperrt dagegen zuerst: Jeder neue Anhang bleibt <code>[IN PRÜFUNG]</code>, bis der SHA-256-Fingerabdruck abgefragt wurde – sauber: frei; ab der Schwelle (Standard 3 Scanner) Schadsoftware: gesperrt mit Tag, Notiz und Mail; unbekannt: zurückgehalten, bis ein Administrator freigibt oder löscht. Standardmäßig verlässt keine Datei den Server. Der kostenlose API-Schlüssel erlaubt 4 Abfragen pro Minute und 500 pro Tag; das Plugin hält sich daran.</p>
|
||
<fig n="plugin-virenscan-virenscan">Virenscan.</fig>
|
||
<fig n="plugin-virustotal-virustotal">VirusTotal-Anhangsprüfung.</fig>
|
||
|
||
<h3>Spam- und Missbrauchsfilter</h3>
|
||
<p>Bewertet jedes neue Ticket (Phishing-Wendungen, Marken-Nachahmung im Absendernamen, Link-Verkürzer, Wegwerf-Adressen, Wiederholungen; bekannte Absender bekommen Abzug). Ab 70 Punkten wird das Ticket als Spam abgelegt, ab 35 erhält es den Tag „Spam-Verdacht“. Freigabe- und Sperrliste, eigene Wörter, Protokoll mit „Kein Spam“ / „Doch Spam“ und eine Bewertung in der Seitenleiste des Tickets.</p>
|
||
<fig n="plugin-spamfilter-spamfilter">Spam- und Missbrauchsfilter.</fig>
|
||
|
||
<h3>Discord- und Telegram-Bot</h3>
|
||
<p>Mitglieder legen mit <code>/ticket</code> im Discord oder in Telegram ein Ticket an, bekommen die Nummer zurück und werden bei Antworten und Lösung benachrichtigt; weitere Befehle <code>/status</code> und <code>/antwort</code>. Der Server nimmt die Anfragen direkt entgegen (kein eigener Bot-Server); sie werden per Signatur (Discord) bzw. Geheimtoken (Telegram) geprüft, je Person gilt eine Stundenobergrenze. Braucht Server 1.0.30 oder neuer, für Discord die PHP-Erweiterung <code>sodium</code> und die Berechtigung <code>api.public</code>.</p>
|
||
<fig n="plugin-community-bot-community-bot">Community-Bot.</fig>
|
||
|
||
<h3>Urlaub und Vertretung, Schichtübergabe, Rundmail</h3>
|
||
<p><b>Vertretung:</b> Abwesenheit mit Vertretung eintragen; zum Beginn gehen offene und neue Tickets an die Vertretung, am Ende kommen die noch offenen zurück; die Vertretung sieht währenddessen auch die Abteilungen des Abwesenden (Ketten bis drei Stufen). <b>Schichtübergabe:</b> Am Schichtende eine kurze Notiz (für alle oder eine Abteilung); die nächste Schicht sieht sie als Hinweis oben auf jeder Seite (rot bei wichtigen), mit „neu“-Zähler im Menü; der Verfasser sieht, wer sie gelesen hat. <b>Rundmail:</b> eine Nachricht an Kunden mit offenen Tickets, einer Abteilung oder Organisation, mit Vorlagen, Empfängerprüfung, Probemail und Protokoll; jede Mail geht einzeln raus (höchstens 200 Empfänger, 5 Rundmails pro Stunde).</p>
|
||
<fig n="plugin-vertretung-vertretung">Urlaub und Vertretung.</fig>
|
||
<fig n="plugin-schichtuebergabe-schichtuebergabe">Schichtübergabe.</fig>
|
||
<fig n="plugin-rundmail-rundmail">Störungsmitteilung und Rundmail.</fig>
|
||
|
||
<h3>Überwachung und Datenschutz</h3>
|
||
<p>Die <b>Website- und Server-Überwachung</b> prüft Webseiten, Ports und Zertifikate; bei Ausfall (nach 2 Fehlschlägen in Folge) oder einem Zertifikat, das in 14 Tagen abläuft, legt das Plugin ein Ticket an und schickt eine Mail; nach der Behebung kommt die Entwarnung und das Ticket wird gelöst. Das <b>Datenschutz-Plugin</b> anonymisiert Kundendaten aus Tickets ohne Registrierung nach einer wählbaren Frist (Name, E-Mail oder beides, auch IP, Mitleser, Zusatzfelder, Nachrichten, Anhänge); die automatische Anonymisierung ist nach der Installation <b>aus</b>. Daten registrierter Kunden löscht der Administrator auf Antrag mit einem Klick.</p>
|
||
<fig n="plugin-ueberwachung-ueberwachung">Website- und Server-Überwachung.</fig>
|
||
<fig n="plugin-datenschutz-datenschutz">Datenschutz-Plugin.</fig>
|
||
|
||
<h3>authentik-Anmeldung</h3>
|
||
<p>Mitarbeiter <b>und Kunden</b> melden sich mit authentik an (OpenID Connect mit PKCE). In authentik legt ihr einen OAuth2/OpenID-Provider an und tragt die Rückkehr-Adresse <code>https://<DeskHub>/staff/plugin_login.php?p=authentik&e=callback</code> ein; in DeskHub tragt ihr Issuer-Adresse, Client-ID und Geheimnis ein und prüft mit „Verbindung testen“. Mitarbeiter verknüpfen ihr Konto selbst („Mein authentik-Konto“); Mitarbeiterkonten werden nie automatisch angelegt, Kundenkonten bei Bedarf schon. E-Mail und Passwort funktionieren weiter, auch wenn authentik ausfällt. Braucht Server 1.0.52.</p>
|
||
<fig n="plugin-authentik-einstellungen">authentik: Einstellungen.</fig>
|
||
<fig n="plugin-authentik-konto">authentik: „Mein Konto“.</fig>
|
||
|
||
<h3>Synology NAS Backup</h3>
|
||
<p>Kopiert die Backups des Servers automatisch per WebDAV auf eine Synology NAS (oder einen anderen WebDAV-Server) und erscheint als Reiter „Synology NAS Backup“ auf der Seite „Backup“. Einstellbar: Verbindung (Adresse, Port 5005/5006, Benutzer, Passwort, HTTPS, Zielverzeichnis) mit „Verbindung testen“, Aufbewahrung (maximales Alter und maximale Anzahl), einzelnes Verschieben von Backups, eigene Backups mit Zeitplan und – für große Backups hinter Proxys mit Größengrenze – Hochladen in Stücken. Jedes Backup wird nach dem Hochladen auf vollständige Größe geprüft; das Passwort wird verschlüsselt gespeichert.</p>
|
||
<fig n="plugin-nas-backup-einstellungen">Synology NAS Backup.</fig>
|
||
|
||
<h3>Cloudflare-Schutz, Cache & Performance, Code-Issue-Synchronisierung</h3>
|
||
<fig n="plugin-cloudflare-protection-status">Cloudflare-Schutz: Status.</fig>
|
||
<fig n="plugin-deskhub-cache-manager-status">Cache-Manager: Status.</fig>
|
||
<fig n="plugin-code-issue-sync-manage">Code-Issue-Sync: Verwaltung.</fig>
|
||
<p><b>Cloudflare-Schutz</b> und <b>Cache & Performance</b> sind reine Betriebs-Zusätze mit je einer Statusseite. Die <b>Code-Issue-Synchronisierung</b> braucht mehrere Berechtigungen (u. a. <code>api.public</code>, <code>hooks.cron</code>), weil sie Issues aus Git-Repositories abholt und Statusänderungen zurückmeldet.</p>
|
||
|
||
<h2>Eigene Plugins entwickeln (Kurzüberblick)</h2>
|
||
<p>Ein Plugin ist ein ZIP mit <code>plugin.json</code> (Name, Version, Berechtigungen, optional Sprachpaket-Angaben), <code>plugin.php</code> (Code), optionalen Seiten, Migrationen und <code>lang/<Code>.json</code> für Übersetzungen. Es registriert Menüpunkte, Seiten, Ereignisse (Hooks), Hintergrundjobs, API-Endpunkte oder Anmeldeverfahren – jeweils nur mit der entsprechenden Berechtigung. Pakete lassen sich mit dem Herausgeber-Schlüssel signieren. Die technische Dokumentation steht im Abschnitt „Plugins entwickeln“ der README.</p>
|
||
|
||
<h2>Die Plugin- und Theme-Webseite</h2>
|
||
<p>Die Plugin-Webseite ist der Katalog für Plugins, Themes und App-Dateien. Betreiber veröffentlichen dort signierte Pakete; DeskHub-Installationen lesen den Katalog, prüfen Prüfsumme und Signatur und installieren per Klick. Dort liegen auch die Apps (Windows, Android, Chrome-Erweiterung, WordPress- und Minecraft-Plugin), die der Update-Hinweis der Apps abfragt, und der Push-Dienst für die Android-Benachrichtigungen.</p>
|