Secutest-Protokolle für Bugzilla 3.6.2
Es sollte eigentlich kein Problem sein, Protokolle in Form von RTF-Dateien zu “parsen”, in eine SQL-Datenbank zu schreiben und dann mit einem einfachen PHP-Script jene übersichtlich in einer Tabelle darzustellen. Auch praktische Filteroptionen oder Suchfelder sind schnell implementiert. In meiner Zivildienststelle wird jetzt genau so eine tabellarische Übersicht für Protokolle benötigt. Der Vorteil einer webbasierten Anwendung liegt hierbei klar auf der Hand: Mehrere Angestellte können gleichzeitig, Betriebssystem unabhängig, kollaborativ auf die Daten zugreifen und diese bearbeiten. Von Vorteil wäre in diesem Fall auch eine Benutzerverwaltung, die in der Lage ist, anstehende VDE-Prüfungen ordsveränderlicher Geräte an verschiedene Benutzer zeitlich korrekt zu verteilen und ggf. diese über Mail informiert.
Die Opensource-Anwendung Bugzilla ist für diese Aufgabe vielleicht zu umfangreich, aber zum Glück lässt sich diese Bugtracking-Software gut anpassen, sodass sie auch für solche Einsatzgebiete praktikabel erscheint.
Die Installation von Bugzilla ist nicht ganz einfach, dafür aber gut auf bugzilla.org dokumentiert. Der Download des Archives http://ftp.mozilla.org/pub/mozilla.org/webtools/bugzilla-3.6.2.tar.gz sowie die Installation eines MySQL- und Apache-Servers mit mod_perl (perl-apache-mod) sind hierbei notwendig. Desweiteren muss der Mod in die Apache-Conf eingetragen werden, danach erfolgt die Installation einiger Perl-Module über CPAN. Z.B.:
cd /var/www/bugzilla
./install-module --all
# edit localconfig
groupadd apache
# rerun checksetup
Das original GermZilla-Template habe ich noch ein wenig angepasst, damit Cookies für die Extraspalten automatisch gesetzt werden und dass Zeitangaben in der “Buglist” nach ihrer Priorität farblich markiert werden (modifiziert: bugzilla/template/de/default/list/table.html.tmpl sowie bugzilla/template/de/default/global/header.html.tmpl).
“Produkte” (Prüfungskategorien) und Protokollkategorien werden mit folgendem MySQL-Befehl in die Datenbank hinzugefügt:
ALTER TABLE bugs ADD cf_hersteller VARCHAR(255);
ALTER TABLE bugs ADD cf_geraeteart VARCHAR(255);
ALTER TABLE bugs ADD cf_type VARCHAR(255);
ALTER TABLE bugs ADD cf_ergebnis VARCHAR(255);
ALTER TABLE bugs ADD cf_kategorie VARCHAR(255);
ALTER TABLE bugs ADD cf_pruefung DATE;
ALTER TABLE bugs ADD cf_gedruckt DATE;
ALTER TABLE bugs ADD cf_schutzklasse VARCHAR(255);
ALTER TABLE bugs ADD cf_baujahr VARCHAR(255);
ALTER TABLE bugs ADD cf_naechstepruefung DATE;
ALTER TABLE bugs ADD cf_auftragnummer VARCHAR(255);
ALTER TABLE bugs ADD cf_fabrnr VARCHAR(255);
ALTER TABLE bugs ADD cf_nennstr VARCHAR(255);
ALTER TABLE bugs ADD cf_nennspg VARCHAR(255);
ALTER TABLE bugs ADD cf_nennleistg VARCHAR(255);
ALTER TABLE bugs ADD cf_pruefungnach VARCHAR(255);
ALTER TABLE bugs ADD cf_rtfpath VARCHAR(255);
Das sieht dann ungefähr so aus (show columns from bugs;):
+---------------------+--------------+------+-----+---------+----------------+
| cf_hersteller | mediumtext | YES | | NULL | |
| cf_geraeteart | varchar(255) | YES | | NULL | |
| cf_type | varchar(255) | YES | | NULL | |
| cf_ergebnis | varchar(255) | YES | | NULL | |
| cf_kategorie | varchar(255) | YES | | NULL | |
| cf_pruefung | date | YES | | NULL | |
| cf_gedruckt | date | YES | | NULL | |
| cf_schutzklasse | varchar(255) | YES | | NULL | |
| cf_baujahr | varchar(255) | YES | | NULL | |
| cf_naechstepruefung | date | YES | | NULL | |
| cf_auftragnummer | varchar(255) | YES | | NULL | |
| cf_fabrnr | varchar(255) | YES | | NULL | |
| cf_nennstr | varchar(255) | YES | | NULL | |
| cf_nennspg | varchar(255) | YES | | NULL | |
| cf_nennleistg | varchar(255) | YES | | NULL | |
| cf_pruefungnach | varchar(255) | YES | | NULL | |
| cf_rtfpath | varchar(255) | YES | | NULL | |
+---------------------+--------------+------+-----+---------+----------------+
Damit Bugzilla gleich die Übersicht verschiedener Protokolle anzeigt, wird in der Datei bugzilla/index.cgi “welcome-admin.html.tmpl” und “index.html.tmpl” mit “redirect.php” ersetzt. Redirect.php wird wiederum in bugzilla/template/en/default/ angelegt mit folgendem Inhalt:
<meta HTTP-EQUIV="REFRESH" content="0; url=describecomponents.cgi">
Das englische Template soll automatisch alle Benutzer auf das deutsche Template umleiten und dabei noch die wichtigsten Cookies, für die richtige Darstellung der Buglist, setzen. An einer passenden Stelle muss dazu in bugzilla/template/en/default/global/head.html.tmlp folgender Javascript-Code hinzugefügt werden:
<script type="text/javascript">
document.cookie = "LASTORDER=cf_naechstepruefung";
document.cookie = "COLUMNLIST=cf_kategorie cf_geraeteart cf_hersteller cf_type cf_ergebnis cf_pruefung cf_naechstepruefung";
document.cookie = "TUI=expert_fields=1";
document.cookie = "DEFAULTFORMAT=specific";
document.cookie = "style=default";
set_language('DE');
</script>
Die Sprachvariablen “Bugs” und “Bug” ersetzt man mit “Protokoll” und “Protokolle” in der Datei template/de/default/global/variables.none.tmpl. Jetzt sollte Bugzilla nach hinzugefügten Protokollen ungefähr so aussehen:
Das Programm, welches die SecuTest-Protokolldateien einliest und im richtigen Format in die Bugzilla-Datenbank schiebt (zurzeit noch automatisch zu Produkt Nr. 1), kann hier heruntergeladen werden: vdeprotadd.exe.
In den kommenden Tagen wird sich zeigen, ob das Programm gut für den dauerhaften Einsatz zur erfassung zahlreicher elektrischer Geräte geeignet ist. Ggf. muss noch einiges angepasst werden …