Open Source im professionellen Einsatz

Übergabe per Variable

Nachdem die URL zum Ändern des Besitzers auf OTRS-Root bekannt ist, muss sie noch in der Oberfläche untergebracht werden. Dafür bietet sich die Ticket-Ansicht an. Sinnvollerweise tragen die beteiligten Perl-Module und die Templates zur Oberfläche die gleichen Namen, hier »AgentTicketZoom« und »AgentTicketZoom.dtl«. Das Ergebnis ist in Abbildung 4 zu sehen, der in der Datei »AgentTicketZoom.dtl« hinterlegte DTL-Code in Listing 5. Es geht tatsächlich nur darum, die Zeile 3 einzufügen, Perl-Code zu ändern ist nicht erforderlich.

Abbildung 4: Listing 5 erweitert die Weboberfläche um den Link »Frei«.

Abbildung 4: Listing 5 erweitert die Weboberfläche um den Link »Frei«.

DTL-Dateien in OTRS besitzen die Möglichkeit, auf relevante Informationen zum Ticket über Variablen zuzugreifen. Listing 5 nutzt beispielsweise zum Zugriff auf die Ticketdaten die Ticket-ID (»$LQData{"TicketID"}«) und für den aktuellen Agenten dessen Kennung (»$QData{"UserLogin"}«). Es legt auch eine interne Notiz (»ArticleTypeID=9«) für diesen Vorgang an.

Die Anpassung erfolgt für alle angezeigten Tickets unabhängig von derem Inhalt. Zum Implementieren reichen meist die vorhandenen Quellen als Beispiel und Vorlage. Wenn nicht, dann hilft die detaillierte Beschreibung der Templates und der Variablen in der umfangreichen Dokumentation unter [3].

Listing 5: DTL-Code zum
Einfügen eines Links

01 $QData{"UserLogin","18"} ($Quote{"$Data{"UserFirstname"} $Data{"UserLastname"}","18"})
02 <!-- custom unibwm -->
03 <a href=/otrs/index.pl?Action=AgentTicketOwner&Subaction=Store&TicketID=$LQData{"TicketID"}&NewOwnerID=1&Subject=Freigabe%20Besitzer&ArticleTypeID=9&Body=Besitzer%20zurueckgesetzt%20von%20$QData{"UserLogin"}%20auf%20root>Frei</a>

Zugriff auf den Ticketinhalt

Alle bisherigen Anpassungen waren für jedes Tickets nutzbar, unabhängig vom Inhalt. Eine sehr beliebte Möglichkeit Ticketinhalt-abhängige Funktionen zu implementieren, führt zu OTRS-Freitextfeldern. Damit lassen sich lokale Besonderheiten berücksichtigen und eigene Erweiterungen entwickeln.

Das Rechenzentrum benutzt diese Möglichkeit beispielsweise bei sicherheitsrelevanten Vorfällen im Datennetz, wo die IP-Adresse des potenziellen Verursachers bekannt ist. Der Aufruf eines externen Perl-Skripts fragt eine Datenbank ab, in welcher die Zuständigkeiten für Netzbereiche hinterlegt sind. Dadurch erweitert sich das Ticket automatisch um die Daten des zuständigen Netzbetreuers.

Abbildung 5: Der Aufruf eines externen Perl-Testskripts liefert prompt das zugehörige Ergebnis »Test-Resultat«.

Abbildung 5: Der Aufruf eines externen Perl-Testskripts liefert prompt das zugehörige Ergebnis »Test-Resultat«.

Das folgende Beispiel zeigt das Prinzip des Aufrufs eines eigenen, externen Perl-Skripts. Das Skript ist nur dann aufrufbar, wenn das erste Freitextfeld eines Tickets den Schlüssel »IP« aufweist (Abbildung 5). Der entsprechende Link zum Skript wird in »AgentTicketZoom« eingebaut, indem man den bereits für Freitextfelder vorhandenen Code anpasst (Listing 6). Generierung und Rückgabe des Resultats übernimmt das eigene Skript »test.pl«, das sein Ergebnis als »GET«-Request formuliert und nach Bestätigung des Nutzers zurückliefert (Listing 7).

Das Skript bekommt seine Parameter in der URL übergeben. Der Parameter »TicketID« ist erforderlich, damit das Skript seine Ergebnisse diesem Ticket wieder hinzufügen kann. Dazu dient das OTRS-Modul »AgentTicketFreeText«. Das Beispiel bettet das Ergebnis als neues Freitextfeld »Ergebnis« ein. Möglich wäre auch, einen neuen Artikel zum Ticket hinzuzufügen oder andere beliebig umfangreiche Skripte, die sich außerhalb von OTRS entwickeln und betreiben lassen.

Listing 6: Skript abhängig
vom Freitext-Schlüssel aufrufen

01 <dtl if ($Data{"TicketFreeKey1"} eq "IP") { $Data{"TicketFreeString1"} = "<tr valign="top"><td><b>$QData{"TicketFreeKey1","25"}:</b></td><td><div title="$QData{"TicketFreeText1"}">$QData{"TicketFreeText1"}<a href="/otrs/tools/test.pl?IP=$LQData{"TicketFreeText1"}&TicketID=$LQData{"TicketID"}"> (Skript)</a></div></td></tr>"; }>

Listing 7: Externes Perl-Skript
zur OTRS-Anbindung

01 #!/usr/bin/perl -w
02 
03 # Nutzung des Perl-CGI-Interfaces
04 use CGI qw/:standard/;
05 $query = new CGI;
06 
07 print   $query->header(),
08         $query->start_html(-title=>'Test-Skript zur OTRS-Anbindung');
09 
10 # Sicherheitsabfrage (Skript darf nur aus OTRS heraus aufgerufen werden)
11 if(!( $ENV{HTTP_REFERER} =~ /Action=AgentTicketZoom/))
12 {
13         print $query->h3("Aufruf des Skripts nicht gestattet!");
14         exit;
15 }
16 
17 # Parameter aus der URL
18 my $ip = $query->param('IP');
19 my $ticketID = $query->param('TicketID');
20 
21 my $result = "Test-Resultat";
22 
23 # Inhalt der Webseite
24 print   $query->h1("Testskript zu IP=$ip");
25 print p(
26         a({href=>$ENV{HTTP_REFERER}},"Zurück zum Ticket")
27         ,"--"
28         ,"Ergebnis: $result"
29         );
30 
31 if ($result)
32 {
33         # Rückgabe des Ergebnisses als Freitextfeld 4
34         print '<a href="/otrs/index.pl?Action=AgentTicketFreeText&Subaction=Store&TicketID='.$ticketID.'&TicketFreeKey4=Ergebnis&TicketFreeText4='.$result.'">Ergebnis übernehmen</a><br>';
35 }
36 
37 print $query->end_html();

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook