Named Triggers

Named Triggers wurden eingeführt um Trigger im laufenden Betrieb einzufügen und wieder entfernen zu können.

Triggerliste

Bevor wir anfangen können, Trigger im laufenden Betrieb einzufügen und wieder zu entfernen benötigen wir eine Ausgabe der aktuell installierten Trigger.

Ich habe mich hier für eine etwas komplexere jedoch universellere Möglichkeit entschieden. rleibd gibt bei Abfrage der URL "/def/eibdef.xml" eine XML-Datei der folgenden Struktur zurück:

<eib>
    ...
    <grp adr="1.2.3">
        <trigger name="abc" cmd="command">
        </trigger>
        ...
    </grp>
    ...
</eib>
Diese ist zwar, im Gegensatz zu einem simplen Textblock oder einer HTML-Tabelle, direkt kaum zur Anzeige geeignet, Sie können sie jedoch z.B. mit einem Ajax-Script nach belieben formatieren. In den Dateien im "example"-Ordner ist ein entsprechendes Script enthalten (triggerlist.html).
Die Verwendung des Ajax-Scripts erfordert in Ihrer Apache-Konfigurationsdatei einen Eintrag der folgenden Art:
ProxyPass /rleibd http://localhost:1215
Der Grund dafür ist, daß sich die meisten Browser aus Sicherheitsgründen weigern, Abfragen von anderen Domänen, mit anderen Protokollen oder eben auch nur mit anderen Ports als dem der aufrufenden Seite zu erlauben. Mit der vorstehenden Zeile erzeugen wir ein virtuelles Directory "rleibd", das Apache nun auf den Port des rleibd umleitet.
Sicherheitshinweis: mit diesem Eintrag ist rleibd auch von Ihrem Port 80 aus erreichbar (und nicht nur von Port 1215)!
Wenn er das nicht tut, haben Sie warscheinlich das mod_proxy nicht aktiviert ("a2enmod proxy" und "a2enmod proxy_http").

Einfügen von Triggern

Um einen Trigger einzufügen senden Sie eine URL der Form

/trigger/ins/?name=myname&grp=1.2.3&cmd=path-to-myprogram%20%25v
Achten Sie darauf, das %-Zeichen vor dem 'v' als %25 zu escapen da es sonst nicht richtig ausgewertet werden kann.

Der Name des Triggers ist optional, aber wenn Sie ihn später einmal löschen wollen muss er angegeben werden und eindeutig sein.
Für den Namen eines Triggers sind nur Standard-Ascii-Zeichen zulässig (also keine Umlaute oder Sonderzeichen). Dies ist ein Designlimit und wird sich in naher Zukunft nicht ändern.

Entfernen von Triggern

Zum Löschen eines Triggers senden Sie eine Anforderung der Form

/trigger/del/?name=myname
(Hier wird offensichtlich, wieso der Name eindeutig sein muss)
Etwaige laufende Programme des Triggers werden nicht beendet aber es wird kein Neues mehr gestartet. Ein leerer Name ist nicht zulässig. Unbenannte Trigger können nicht gelöscht werden.

Auf diese Weise eingefügte Trigger sind auf die Laufzeit von rleibd begrenzt und gehen bei einem Neustart von rleibd verloren.

Sie können natürlich auch in Ihrer eibdef.xml benannte Trigger angeben. Für diese gilt genau umgekehrt: Sie können im laufenden Betrieb gelöscht werden, sind jedoch nach einem Neustart wieder vorhanden.