Site Info Center LIGHT

Übersicht über aktive Sites mit deren soeben abgerufenen Versionsdaten.

Als Agentur oder Freelancer im Bereich Webdesign- und Webentwicklung kennt man dieses Szenario: Über die Zeit sammeln sich dutzende Websites mit verschiedenen Content Management Systemen (CMS) auf verschiedenen Servern an, welche man alle irgendwie im Blick haben muss, um sie bei Bedarf mit wichtigen Updates zu versorgen. Und so pflegte auch ich lange Zeit eine Liste, in welcher ich händisch die PHP-Version sowie die Version des eingesetzten CMS notierte. Da mir das aber auf Dauer und mit wachsender Anzahl an Sites zu mühselig wurde, habe ich mir ein kleines Tool geschrieben, welches diese Daten aller Websites mit einem Klick abruft und in einer Versionshistorie speichert.

Das von mir Site Info Center LIGHT getaufte Tool (kurz SIC) ist mittels Webtechniken realisiert – da das nun mal mein Metier ist – und läuft somit im Browser. Dort findet man hinter jeder eingetragenen Website Buttons zum Aktualisieren der Informationen und zum Zugriff auf die Versionshistorie. Am wichtigsten ist jedoch der Button oben rechts, zum automatischen Aktualisieren der Versionsinformationen aller Sites.

Nach dem Klick auf „Refresh all“ werden alle Sites hintereinander abgefragt.

Anforderungen

SIC und der zugehörige Satellit (mehr dazu in Kürze) sind in PHP geschrieben. SIC, das im Browser sichtbare User Interface oder Frontend, nutzt CURL, um mit dem jeweiligen Satellit zu kommunizieren. Der (lokale) Server, auf dem das SIC läuft, muss also CURL unterstützen – was in den meisten Umgebungen der Fall sein sollte, insbesondere wenn der lokale Server via XAMPP oder MAMP angetrieben wird.

WICHTIGER HINWEIS: Die derzeitige Version von SIC ist für den Betrieb auf einem Server im lokalen (!) Netzwerk konzipiert – also z.B. auf dem lokalen Entwicklungsserver der Agentur. Es gibt keinerlei Login- oder Schutzmechanismen, die ein Zugriff auf SIC durch Fremde verhindern (daher der Zusatz „LIGHT”). Theoretisch könnte SIC auch auf einem Remote Server betrieben und z.B. mittels HTTP BASIC AUTH geschützt werden – aber ich empfehle das ausdrücklich NICHT. Aber: Selbstverständlich kann ein im lokalen Netzwerk platziertes SIC informationen von Remote Server abrufen – sonst würde das Alles ja gar keinen Sinn machen.

Wie funktioniert es

Das System besteht aus zwei Komponenten:

  • SIC – Das ist der Teil, der auf dem lokalen Server abgelegt und via Browser erreicht wird. Er liefert das User Interface und die Funktionalität zum Abfragen der Versionsinformationen von den Satelliten.
  • Satellit – Das ist ein kleines PHP-Skript, welches im Root-Verzeichnis der zu überwachenden Website abgelegt werden muss. Der Satellit antwortet auf die Anfragen vom SIC mit Informationen zur aktuellen CMS- und PHP-Version. Das Satelliten-Skript kommt mit einer Hand voll Funktionen zum Auslesen von Versionsinformationen von CM-Systemen, mit welchen ich bisher gearbeitet habe und/oder noch immer arbeite – kann jedoch jederzeit um weitere Funktionen für andere CMS erweitert werden. Mehr dazu später.

Um zu verhindern, dass der Satellite auf alle eingehenden Anfragen antwortet und somit potentiell vertrauliche Informationen durch die Leitung schickt, wird ein Shared Secret genutzt, welches je Website im SIC und im Satellite hinterlegt werden muss.

Nach dem Klick auf den Refresh-Button im SIC, fragt dieses den Satelliten an (über ein Proxy-Skript, um die Same-Origin Policy für AJAX Request zum umschiffen), teilt dem Satelliten mit, für welches CMS er Versionsdaten liefern soll (welche Funktion der Satellit ausführen soll) und übergibt ihm das Shared Secret. Nachdem der Satellit geantwortet hat, werden die empfangenen Informationen im SIC dargestellt und zusätzlich in einer CSV-Datei im Verzeichnis /history gespeichert. Durch die Speicherung als CSV-Dateien wird nicht nur eine Datenbank überflüssig, sondern die Versionshistorie jeder Website kann so auch problemlos z.B. in Microsoft Excel oder Apple Numbers weiterverarbeitet werden.

Versions-Historie einer bereits mehrfach abgefragten Site

Konfiguration: SIC

Nach dem Download des Projektes von GitHub, muss zunächst die Datei sites-config.NEW.php in sites-config.php umbenannt werden. Anschließend werden dort in folgender Syntax die zu überwachenden Sites definiert:

$sites = array( 
    "example.com" => array(                                     // human readable title of the site to monitor
        "url"       => "https://www.example.com/satellite.php", // full URL of the satellite script
        "sys"       => "PROCESSWIRE",                           // system identifier, the satellite has a function for
        "secret"    => "T0tallY5ecret",                         // the shared secret of the site, HAVE TO match the one in the satellite
        "inact"     => false                                    // set to "true" if the site should not longer monitored but you want access to the history
    ),
    "another-site.com" => array(                                     
        "url"       => "https://www.another-site.com/obscured-filename.php", 
        "sys"       => "WORDPRESS",                                  
        "secret"    => "Y0uN3v3RKn0w",                         
        "inact"     => true                                    
    )
); 

Ist das abgeschlossen, wird der Ordner /sic aus dem Download auf dem lokalen Webserver abgelegt, an einer Stelle die per URL im Browser erreichbar ist. Selbstverständlich kann der Ordnername auch nach eigenen Wünschen geändert werden. Nach dem Aufruf von SIC im Browser sollte nun die Liste der eben konfigurierten Sites zu sehen sein.

Derzeit unterstützte CMS (Stand 11/2017)

System identifier CMS available since satellite version
STATIC (Statische Site, gibt nur PHP-Version aus) v0.1
LEPTON Lepton CMS, vor Version 2.4 v0.1
WEBSITEBAKER WebsiteBaker v0.2
WORDPRESS WordPress v0.3
WBCE WBCE v0.4
PROCESSWIRE ProcessWire v0.5
MODX MODX Revolution v0.6
GETSIMPLE GetSimple CMS v0.7
LEPTON24 Lepton CMS, ab Version 2.4 v0.8
SHOPWARE Shopware, ab Version 5 v0.9
PAGEKIT Pagekit, ab Version 1 v0.9
BLACKCAT BlackCat CMS, 1.x Serie v0.10
JOOMLA Joomla! CMS, getestet mit Version 3.6 & 3.8.2 v0.11
CONCRETE5 Concrete5 CMS, getestet mit Ver. 8.1.0 & 8.2.1 v0.12
JOOMLA15 alte Joomla! CMS Version 1.5 v0.13

Hinweis: Ich werde diese Liste zukünftig nur noch auf GitHub pflegen – also bitte dort nachschauen, um den aktuellen Stand zu erfahren.

Inacktive Seiten: Wird in der sites-config.php „inact“ auf true gesetzt, so wird die betroffene Site nicht mehr beim Abruf der Versionsinformationen einbezogen. Die bereits erfasste Versionshistorie ist jedoch weiterhin im SIC einsehbar.

Konfiguration: Satellit

Im Ordner /satellite des Downloads befindet sich das Satelliten-Skript mit dem Dateinamen satellite.php. Eine Kopie dieser Datei muss via FTP im Root (Document Root) jeder Website abgelegt werden. Anschließend muss in der satellite.php das im SIC eingetragene Shared Secret hinterlegt werden – in der Variable $sat_secret. An dieser Stelle kann auch gleich noch geprüft werden, ob der Satellit eine passende Funktion für das CMS der Website besitzt (falls nicht, beim Abschnitt „Weitere CMS-Funktionen zum Satellit hinzufügen” weiterlesen).

Anschließend kann im SIC der „Refresh all“ Button oben rechts betätigt werden, um zu sehen ob die Satelliten korrekt antworten und die Versionsinformationen ankommen.

Weitere CMS-Funktionen zum Satellit hinzufügen

Das Satelliten-Skript kommt wie oben schon geschrieben bereits mit einer Anzahl von Funktionen zum Auslesen von Versionsnummern aus CMS, die ich so nutzte und nutze (siehe auch Tabelle oben bzw. bei GitHub). Weitere Funktionen können jedoch recht einfach nach dem Vorbild der bereits vorhandenen nachgerüstet werden.

Das Satelliten-Skript ist recht einfach gestrickt: Nachdem das Shared Secret überprüft wurde, wird eine simple switch-Funktion dazu genutzt, den vom SIC gelieferten System Identifier (z.B. „WORDPRESS”) einem entsprechenden Funktionsaufruf zu zu ordnen.

Funktionen für weitere CMS werden also einfach in der satellite.php ergänzt, und in der switch-Funktion zusammen mit einem neu ausgedachten System Identifier hinterlegt.

Falls Du, lieber Leser dieses Artikels, weitere CMS im Satelliten aufnimmst, schreibe mir gern eine Nachricht oder sende mir einen entsprechenden Pull Request auf GitHub. Sicher würden auch Andere gern Deine Funktion(en) nutzen.

Download des Site Info Center LIGHT

Das Projekt ist hier auf GitHub zu finden und kann dort herunter geladen werden:
https://github.com/digitalbricks/siclight

Fragen? Wünsche?
Schreibt mir gern einen Kommentar.

2 Kommentare Schreibe einen Kommentar

    • Hallo Andreas,

      vielen Dank für den Hinweis! Nur bin ich mir nicht sicher, ob das WordPress Plugin Verzeichnis der richtige Ort dafür ist – schließlich ist es ja kein Plugin für WordPress. Ich vermute, das würde zu Verwirrung führen. Was meinst Du?

      Beste Grüße
      André

Schreibe einen Kommentar