[Allegro] Operator in #95 bzw. #96 bei avanti

Bernhard Eversberg ev at biblio.tu-bs.de
Fr Aug 27 08:55:34 CEST 2010


Thomas Berger schrieb:
> 
>>> Die von Herrn Eversberg nicht angeschnittene Frage bleibt allerdings:
>>> Wer schreib da eigentlich: Der (smybolische) Avanti-Benutzer 
 >>
>> eben derselbe! Das Schreiben besorgt ja acon, und dieses wird von dem
>> User (indirekt) gestartet, der auch avanti gestartet hat. Wegen des
>> sitzungslosen Konzepts weiß acon dann gar nicht, wer ihm den Job
>> eigentlich gegeben hat. Es entnimmt aus av_ini.php die Userkennung,
>> mit der es arbeiten soll, und die muß Berechtigung 3 haben. Mehr hat
>> acon nicht.
> 
> dass acon eine av_ini.php konsultiert, die u.U. auf einem anderen
> Host auf einem anderen Kontinent wohnt, war mir nicht gelaeufig.
> 
Berger kann allem widerstehen, nur nicht der Versuchung zu einer
Stichelei. (Frei nach O. Wilde)
Dabei ist in diesem Fall jedem Betroffenen klar, daß mir nur ein, wenn
auch unverzeihlicher, kleiner Lapsus unterlaufen ist: acon entnimmt die
Angaben nicht selber der  av_ini.php, sondern erhält sie als Teil des
jeweiligen Jobs über avanti. Gerne ergreife ich aber die Gelegenheit,
schon um den Lapsus wenn irgend möglich ansatzweise auszubügeln, den
Zusammenhang noch deutlicher zu machen als er eh schon seit 8 Jahren
sein sollte, es uns aber nicht gelungen ist:

1. Der Web-Server erhält einen Aufruf wie z.B.
    .../katalog/grec.php?urN=999
    Dieser stammt z.B. aus einer Webseite, die ein Enduser grade in
    seinem Browser vor sich hat - nicht ahnend, was er mit dem Klick
    darauf alles auslöst:

2. Der Webserver kriegt diesen Aufruf, startet den PHP-Interpreter
    (weil er ".php" sieht) und gibt ihm, was hinter  katalog/  steht.
    grec.php wird vom PHP-Interpreter vorverarbeitet und holt sich
    (da eingebunden in grec.php) die Datei av_ini.php. Dazu muß diese
    auf demselben Verzeichnis .../katalog liegen, sonst käme PHP
    nicht dran - wenn sie etwa bei der Datenbank läge.

3. grec.php  holt sich auch noch die Datei  av_grec.php  hinzu,
    in der der Job für avanti erstellt wird. Zentraler Teil dieses
    Jobs sind folgende Anweisungen
      var '# ' #urN
      find
      ...
      xport p d-khtm
      ...
      dow
    Damit wird der Satz geholt und mit den Parametern (Name in
    av_ini.php) exportiert zur Anzeige in HTML-Formatierung.
    Die Ausführung des Jobs muß aber wo ganz anders passieren:

4. In grec.php könnten dem Job noch beliebige weitere Angaben mit-
    gegeben werden, die aus av_ini.php oder sonstwoher stammen,
    die jedoch alle auf dem Webserver liegen müssen oder im Aufruf
    von grec.php gesteckt haben.

5. Der fertige Job wird an den avanti-Server geschickt, mittels der
    Funktion  sendjob(...)   (in av_ini.php enthalten)
    Die Adresse des avanti-Servers steht ebenfalls in av_ini.php:
      $Server = "www.uni-golfsburg.de";
      $Port = "4949";
      $DB="kata";
      $ID="abc/xyz";
    Daraus erzeugt sendjob(...) die Zeile
      @ DB=kata ID=abc/XYZ
    am Ende des Jobs.

~~~~~~~ und hier ist evtl. ein Ozean dazwischen ~~~~~~~~~~~~~~~~~~~~~

6. Der avanti-Server auf "www.uni-golfsburg.de" (dort lauschend auf
    dem Port 4949) erhält den Job mit der anhängenden Zeile, er
    schaut dann nach, ob er eine Datenbank "kata" kennt. Die muß
    eingetragen sein in der Datei avanti.con, die avanti auf seinem
    eigenen Verzeichnis braucht. Da steht etwa drin:
      [kata]
      directory = /var/Datenbanken/Katalog
      access = 3
      konfiguration = a
      indexparameter = cat
      opac = OPAC:1
      abc = xyz:3

7. Nur wenn abc unter [kata] eingetragen ist mit Paßwort xyz wird
    der (unter 3.-5. erstellte) Job ausgeführt. Das macht acon,
    von avanti den Job erhält. Genauer: avanti startet acon und schreibt
    den Job in seine Standardeingabe.  acon  kann nur auf Dateien
    zugreifen, die auf dem Datenverzeichznis liegen oder auf
    seinem eigenen. Daten, die aus av_ini.php stammen, stecken
    im Job - an av_ini.php kommt acon nicht dran, es liegt ja
    auf dem Webserver, und der steht womöglich in Florida, das
    weiß acon gar nicht. [Genau darauf hatte Berger angespielt]
    Etwas genauer noch: Wenn "abc = xyz:3" nicht da steht, oder
    0 statt 3, wird der Job mit Berechtigung 0 ausgeführt. Ein
    "put" würde dann nicht funktionieren (kommt aber in diesem
    Job nicht vor). Im Job kann man die Berechtigung, wie bei
    a99, mit "var A" ermitteln. Statt der 3 könnte man höhere
    Werte für andere Zwecke selber definieren und in avanti.con
    eintragen. Der betr. Username und sein Paßwort muß aber
    im Job stecken, d.h. in av_ini.php oder sonstwo auf dem Web-
    server irgendwo stehen.

8. Von acon erhält avanti, das solange gewartet hat, die Ergebnisse
    des Jobs, eine fertig aufbereitete HTML-Seite, die es nur noch
    weiterreichen muß: zurück an den Webserver, und der reicht sie
    nur noch weiter an den Browser des Endusers.

9. Wenn zusätzlich Ajax-Technik im Spiel ist, muß der Browser noch
    mittels Javascript was tun mit den Daten, die da ankommen. Das ist
    z.B. der Fall, wenn  grex.php  statt  grec.php  verwendet wird oder
    ajax3.php.  Mehr dazu ist hier zu sehen:
      http://www.allegro-c.de/doku/phpac/ajax3.htm

Die Stelle, wo vielleicht ein Ozean dazwischen ist, war in meiner
ursprünglichen Darstellung grotesk verkürzt worden. Vergebung!

Aber im Ernst war's ja vielleicht sowieso sinnvoll, die Dinge nochmal
wieder mit anderen Worten anders klarzumachen zu versuchen. Nichts
anderes ist hier intendiert, keineswegs eine Spitze gegen Berger...

B.Eversberg




Mehr Informationen über die Mailingliste Allegro