Ü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.
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 |
|---|
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«.
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 |
|---|
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 |
|---|
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&uuml;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 &uuml;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
Weitere Produkte im Medialinx Shop »
Versandartikel
Onlineartikel
Alle Rezensionen aus dem Linux-Magazin
- Buecher/07 Bücher über 3-D-Programmierung sowie die Sprache Dart
- Buecher/06 Bücher über Map-Reduce und über die Sprache Erlang
- Buecher/05 Bücher über Scala und über Suchmaschinen-Optimierung
- Buecher/04 Bücher über Metasploit sowie über Erlang/OTP
- Buecher/03 Bücher über die LPI-Level-2-Zertifizierung
- Buecher/02 Bücher über Node.js und über nebenläufige Programmierung
- Buecher/01 Bücher über Linux-HA sowie über PHP-Webprogrammierung
- Buecher/12 Bücher über HTML-5-Apps sowie Computer Vision mit Python
- Buecher/11 Bücher über Statistik sowie über C++-Metaprogrammierung
- Buecher/10 Bücher zu PHP-Webbots sowie zur Emacs-Programmierung
Insecurity Bulletin
Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...





