# 1 Inside: Detektor für Software-Versionen

Um Mitarbeiter*innen einen Überblick über alle aktuell laufenden und supporteten Projekte zu geben, wurde bereits im Jahr 2016 ifabrik-intern der "Versionsdetektor" entwickelt. Seine Aufgabe ist es, die Versionen aller im Projekt verwendeten Komponenten auszulesen und sie im Detektor-Backend darzustellen. Durch den Einsatz des Tools sehen die Verantwortlichen auf einen Blick, welche Projekte aktualisiert werden müssen. Dadurch sinkt der Wartungsaufwand und unsere Arbeit wird effizienter, wovon nicht zuletzt unsere Kunden profitieren.

Grundsätzlich besteht der Detektor selbst aus zwei Komponenten:

  1. dem Detektor an sich
  2. dem Backend inklusive dem dort implementierten Collector

Detektor extrahiert Software-Infos

Grundsätzlich unterstützt der Detektor neben den drei Content-Management-Systemen „TYPO3“, „WordPress“ und dem ifabrik-eigenen „namRED“-CMS auch die zwei Shop-Systeme „Oxid 4“ und „Gambio“.

Für die Verwendung des Detektors muss dieser initial im jeweiligen Projekt hinterlegt werden. Beim Abruf des Detektors über das Detektor-Backend wird zuerst festgestellt, um welchen Projekttyp es sich handelt. Daraufhin wird eine Klasse aufgerufen, welche die Daten für den jeweiligen Typ abfragt und in einer Collection sammelt. Zu diesen Daten zählen:

  • die Version des CMS
  • die verwendete PHP-Version
  • eine Liste aller Extensions samt ihrer im Projekt verwendeten Version (TYPO3)
  • die Versionen aller hinterlegten Themes, Plugins und Frameworks (WordPress)

Sowohl bei TYPO3 als auch bei WordPress wird zuerst versucht über den Composer an die wichtigsten Daten zu gelangen. Sollte dieser Versuch fehlschlagen, so werden die Informationen direkt aus dem Projekt extrahiert.

Bei TYPO3 Projekten gelingt das, indem die Core-Version aus der LocalConfiguration.php und die Extensions aus der ext_emconf.php ausgelesen werden. In WordPress-Projekten wird die Core-Version innerhalb der version.php gefunden und die benötigten Daten für die Plugins können aus der pluginname.php, die sich im Verzeichnis des jeweiligen Plugins befindet, ausgelesen werden. Auf die Theme-Daten kann über die style.css, die sich im Theme Verzeichnis befindet, zugegriffen werden.

Auf die nun in einer Collection gesammelten Daten eines Projektes greift das Backend des Versionsdetektors nun zu und stellt es dar.

Backend des ifabrik-Versionsdetektors

Um die Daten der Collection darstellen zu können, muss das Projekt zuerst dem Backend vertraut gemacht werden. Dazu bietet es die Option, ein neues Projekt hinzuzufügen. Dabei muss beachtet werden, dass der Pfad zum Detektor korrekt angegeben ist, damit das Backend auch auf ihn zugreifen kann. Ist dies geschehen, übernimmt der Cronjob die tägliche Aktualisierung der Daten durch das Aufrufen des Detektors.

Um eine übersichtliche Darstellung aller Projekte zu gewährleisten, werden die Projekte mit farblichen Panels dargestellt. Ersichtlich ist zunächst nur der Name des Projektes, der Link und die Core-Version. Durch Aufklappen der Panels werden alle weiteren Ressourcen, deren Versionen und sonstige Informationen angezeigt.

Die farbliche Kennzeichnung in Rot, Gelb oder Blau der Panels ist dabei abhängig von der aktuellen Core-Version des Projektes. Rot werden Projekte hinterlegt, deren Version kleiner ist als die des letzten Security-Updates oder deren LTS nicht mehr unterstützt wird. Gelb werden Projekte gekennzeichnet, die zwar der aktuellen Version ihrer LTS entsprechen, diese LTS aber nicht die neuste ist und blau sind alle Projekte, die sich auf der aktuellen LTS mit der aktuellen Version befinden. Abgeglichen werden die Daten bei TYPO3 Projekten mit den aktuellen Daten, die aus der TYPO3-API (Link: https://get.typo3.org/api/doc) ausgelesen werden können. Da es von WordPress keine vernünftige API zum Abruf der aktuellen Versionen gibt und sich WordPress im begrenzten Rahmen selbstständig aktualisiert, werden diese Daten händisch im Detektor-Backend gepflegt.

Um das Handling des Detektor-Backends zu verbessern, wurde zudem ein Filtersystem entwickelt, welches Betrachter*innen eine schnelle Suche nach bestimmten Projekten ermöglicht. Gefiltert werden kann nach folgenden Kriterien:

  • Name der Ressource
  • Projektname
  • Versionsstatus (rot, gelb oder blau)
  • Typ des Projektes
  • Sprache der Ressource
Der ifabrik-Versionsdetektor hält, was es verspricht: weniger Wartungsaufwand und mehr Effizienz in unserem Arbeitsalltag.
Marco, ifabrik
Projektmanager Marcoifabrik

Auch interessant