Der Plugin-Ordner muss exakt api-key-wildcard heißen und unter include/plugins/ deiner osTicket-Installation liegen. Der Endpoint lädt seine Hilfsdatei über den fest eingetragenen Pfad include/plugins/api-key-wildcard/api.wildcard.inc.php, ein anderer Ordnername bricht den Endpoint daher.
/pfad/zu/osticket/include/plugins/api-key-wildcard/
api-key-wildcard nach include/plugins/ auf deinen osTicket-Server hoch.cd /pfad/zu/osticket/include/plugins
git clone https://github.com/markus-michalski/osticket-api-key-wildcard.git api-key-wildcard
Das Plugin braucht weder Composer noch weitere Abhängigkeiten. Der Zielordner
api-key-wildcardim Clone-Befehl ist wichtig, weil der Repository-Name sonst einen anderen Ordner erzeugt.
Beim Aktivieren läuft enable() und erledigt der Reihe nach:
enable() automatisch eine aktive Instanz mit dem Plugin-Namen an. Schlägt das fehl, bricht enable() an dieser Stelle ab und liefert die Fehlermeldungen der Instanz-Erstellung zurück.wildcard.php wird aus dem Plugin-Ordner nach api/wildcard.php kopiert und mit chmod 0755 versehen.api/.htaccess: Das Plugin ergänzt die Datei um Options -MultiViews und die Wildcard-Rewrite-Regel (Details unten).installed_version in der Plugin-Konfiguration gespeichert.Schlägt ein Schritt fehl, liefert enable() die Fehlermeldungen zurück:
Source file not found: ...Failed to copy wildcard.php to ... Please copy manually.Failed to set permissions on ....htaccess file not found at ...Failed to add Options -MultiViews to .htaccessFailed to add wildcard rewrite rule. Could not find osTicket API rewrite pattern.enable() bricht dann vorzeitig ab)api/.htaccess geändert wirdDas Plugin ändert ausschließlich api/.htaccess im osTicket-Hauptverzeichnis, nicht die .htaccess im Plugin-Ordner. Die Datei im Plugin-Ordner ist nur eine Referenz.
RewriteEngine On in der Datei (nicht nur das erste) durch RewriteEngine On, eine Leerzeile, den Kommentar # Disable MultiViews for wildcard endpoint (prevents mod_negotiation) mit zwei Leerzeichen Einrückung und darunter Options -MultiViews, ebenfalls mit zwei Leerzeichen Einrückung. Steht Options -MultiViews schon irgendwo in der Datei, ändert das Plugin an dieser Stelle nichts.!-f/!-d gefolgt von der Bedingung auf .../api im Request-URI) wird die Wildcard-Regel eingefügt:# Wildcard API endpoint (must come BEFORE the default rule)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^wildcard/(.*)$ wildcard.php/$1 [L]
# Default API endpoint (standard osTicket)
Steht wildcard/ schon in der Datei, wird die Regel nicht noch einmal eingefügt. Findet das Plugin den Standard-Block nicht, wird die Regel nicht eingefügt und die Fehlermeldung oben ausgegeben.
Das Plugin ändert keine PHP-Dateien von osTicket. Es kopiert
wildcard.phpnachapi/und ergänztapi/.htaccess.
0.0.0.0 ein.Nur Keys mit der IP
0.0.0.0gelten auf dem Wildcard-Endpoint für beliebige Absender-IPs. Ein Key, der an die IP des Aufrufers gebunden ist, wird dort ebenfalls akzeptiert.
Schlägt die automatische Installation fehl (zum Beispiel wegen Dateiberechtigungen), erledigst du die Schritte von Hand.
cp /pfad/zu/osticket/include/plugins/api-key-wildcard/wildcard.php /pfad/zu/osticket/api/wildcard.php
chmod 755 /pfad/zu/osticket/api/wildcard.php
api/.htaccess nach RewriteEngine On einfügen:Options -MultiViews
api/.htaccess vor dem Standard-API-Block einfügen:RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^wildcard/(.*)$ wildcard.php/$1 [L]
Das Plugin automatisiert nur Apache über api/.htaccess (mit aktiviertem mod_rewrite). Setzt du einen anderen Webserver ein, wird .htaccess nicht ausgewertet und du musst die Umleitung selbst einrichten.
/api/wildcard/<pfad> müssen intern auf /api/wildcard.php/<pfad> umgeleitet werden.wildcard.php muss als PATH_INFO bei PHP ankommen, weil der Endpoint daraus die Route (/tickets.json) bestimmt.Beim Deaktivieren löscht disable() die Datei api/wildcard.php und entfernt die Wildcard-Regel sowie Options -MultiViews aus api/.htaccess. Der Plugin-Ordner bleibt bestehen. Schlägt das Löschen der Datei fehl, wird das nur ins PHP-Error-Log geschrieben, disable() meldet trotzdem Erfolg. Prüfe in diesem Fall, ob api/wildcard.php noch existiert.
Deaktiviere das Plugin, bevor du eine Umgebung produktiv schaltest. Danach existiert der Wildcard-Endpoint nicht mehr.