Closed thenickless closed 3 months ago
Genau. Siehe #2 . Dazu hast du ja eben die Servicenummer als führende Zahl. Ab der zweiten Ziffer kommt dann der berechnete String, der dann auf eine Zahl rückrechnet. In der Serviceliste wird dann diese berechnete Zahl als Variable in dem bekannten Aufrufstring zum Service eingefügt:
1. Erstellung einer Shorturl:
Ein Ticket mit der URL
https://www.helpdesk.rrze.fau.de/otrs/index.pl?Action=AgentTicketZoom;TicketID=1167490
wird die Zahl 1167490
aut der berechnungsformel in wa22
umwandeln.
Davor kommt die Serviceid 9
. Also ist der Shortcode dann: http://go.fau.de/9wa22
2. Aufruf der Shorturl http://go.fau.de/9wa22
Auf go.fau.de wiederum kommt dann /9wa22
am.
In der .htaccess steht
RewriteRule ^(x0+[0-9A-Za-z\-\.]+)/?$ fau-redirect.php?code=$1 [L]
Das bedeutet, der Aufruf /9wa22
auf go.fau.de wird also umgeleitet auf fau-redirect.php?code=9wa22
Und in fau-redirect.php wird dann die 9 als erste Ziffer dem Dienst Helpdesk zugeordnet und die wa22
eben als Code.
wa22
wird aufgrund der Rechenformel wieder zurückgerechnet auf 1167490
.
In der Service-Datenbank steht die Target-URL so: https://www.helpdesk.rrze.fau.de/otrs/index.pl?Action=AgentZoom&TicketID=$id
. Die $id wird dann ersetzt durch 1167490
.
Somit wird die komplette URL also wieder zu https://www.helpdesk.rrze.fau.de/otrs/index.pl?Action=AgentTicketZoom;TicketID=1167490
zusammengesetzt.
Und zu dieser wird dann redirectet.
Somit braucht auch bei Shorturls, die mit einer Dienst-ID beginnen keinerlei Dateinbankeintrag gemacht werden und auch externe Dineste, wie der Helpdesk müssen nichts über irgendwelche API abfragen. Die müssen nur wissen welche Serviceid die haben und die Berechnungsformel kennen. Auch die Programmiersprache ist egal. Die Berechnungsformell ist nur einne Transformation und somit hin und zurück eindeutig kalkulierbar. Dies kann man in Perl, PHP, JS oder jeder anderen Programmiersprache umsetzen.
Weiteres steht in #2 . Dort ist auch bei dem (nicht aktiven!) Service des Blogdienst die Variante beschrieben, wo man ein Service auch mit mehr als einer Zahlenid in den Parametern nutzen kann.
Anmerkung: Bei der Verwaltung der Services reicht es nicht, nur die Domain anzugeben, du brauchst da auch eine Angabe der parameterisierten URL mit den GET Parametern. Die für Helpdesk wäre also https://www.helpdesk.rrze.fau.de/otrs/index.pl?Action=AgentZoom&TicketID=$id
Ein Beispiel für mehr zwei zahlenparameter sähe so aus: https://blogs.fau.de/skript/$p1/$p2
eines mit drei so: https://irgendwasanderes.fau.de/irgendwasanderes?blubparameter&dies=$p1&das=$p2/$p3
Es wird also immer nach $[a-z0-9]+ gesucht. ob da $id oder $p1 oder $blub steht ist egal, es wird von vorne durchgezählt. Aber auch das ist eigentlich in #2 beschrieben.
es wäre unsinnig, weil die index.php ohnehin zurückrechnet
Meldung: Domain zählt zu unseren Services, etc etc