Named Triggers

Named Trig­gers wur­den ein­ge­führt um Trig­ger im lau­fen­den Be­trieb ein­zu­fü­gen und wie­der ent­fer­nen zu kön­nen.

Triggerliste

Bevor wir an­fan­gen kön­nen, Trig­ger im lau­fen­den Be­trieb ein­zu­fü­gen und wie­der zu ent­fer­nen be­nö­ti­gen wir ei­ne Aus­ga­be der ak­tu­ell in­stal­lier­ten Trig­ger.

Ich ha­be mich hier für ei­ne et­was kom­ple­xe­re je­doch uni­ver­sel­le­re Mög­lich­keit ent­schie­den. rleibd gibt bei Ab­fra­ge der URL "/def/eibdef.xml" ei­ne XML-Da­tei der fol­gen­den Struk­tur zu­rück:

<eib>
    ...
    <grp adr="1.2.3">
        <trigger name="abc" cmd="Com­mand">
        </trigger>
        ...
    </grp>
    ...
</eib>
Die­se ist zwar, im Ge­gen­satz zu ei­nem simp­len Text­block oder ei­ner HTML-Ta­bel­le, di­rekt kaum zur An­zei­ge ge­eig­net, Sie kön­nen sie je­doch z.B. mit ei­nem Ajax-Skript nach be­lie­ben for­ma­tie­ren. In den Da­tei­en im "ex­am­ple"-Ord­ner ist ein ent­spre­chen­des Skript ent­hal­ten (triggerlist.html).
Die Ver­wen­dung des Ajax-Skripts er­for­dert in Ihrer Apa­che-Kon­fi­gu­ra­tions­da­tei ei­nen Ein­trag der fol­gen­den Art:
ProxyPass /rleibd http://localhost:1215
Der Grund da­für ist, daß sich die meis­ten Brow­ser aus Si­cher­heits­grün­den wei­gern, Ab­fra­gen von an­de­ren Do­mä­nen, mit an­de­ren Pro­to­kol­len oder eben auch nur mit an­de­ren Ports als dem der auf­ru­fen­den Sei­te zu er­lau­ben. Mit der vor­ste­hen­den Zei­le er­zeu­gen wir ein vir­tu­el­les Di­rec­to­ry "rleibd", das Apa­che nun auf den Port des rleibd um­lei­tet.
Si­cher­heits­hin­weis: mit die­sem Ein­trag ist rleibd auch von Ihrem Port 80 aus er­reich­bar (und nicht nur von Port 1215)!
Wenn er das nicht tut, ha­ben Sie wahr­schein­lich das mod_proxy nicht ak­ti­viert ("a2enmod proxy" und "a2enmod proxy_http").

Einfügen von Triggern

Um ei­nen Trig­ger ein­zu­fü­gen sen­den Sie ei­ne URL der Form

/trigger/ins/?name=myname&grp=1.2.3&cmd=path-to-myprogram%20%25v
Achten Sie da­r­auf, das %-Zei­chen vor dem 'v' als %25 zu escapen da es sonst nicht rich­tig aus­ge­wer­tet wer­den kann.

Der Na­me des Trig­gers ist op­tio­nal, aber wenn Sie ihn spä­ter ein­mal lö­schen wol­len muss er an­ge­ge­ben wer­den und ein­deu­tig sein.
Für den Na­men ei­nes Trig­gers sind nur Stan­dard-Ascii-Zei­chen zu­läs­sig (al­so kei­ne Um­lau­te oder Son­der­zei­chen). Dies ist ein De­sign­li­mit und wird sich in na­her Zu­kunft nicht än­dern.

Entfernen von Triggern

Zum Lö­schen ei­nes Trig­gers sen­den Sie ei­ne An­for­de­rung der Form

/trigger/del/?name=myname
(Hier wird of­fen­sicht­­lich, wie­so der Na­me ein­deu­tig sein muss)
Et­waige lau­fen­de Pro­gram­me des Trig­gers wer­den nicht be­en­det aber es wird kein Neues mehr ge­star­tet. Ein lee­rer Na­me ist nicht zu­läs­sig. Un­be­nann­te Trig­ger kön­nen nicht ge­löscht wer­den.

Auf die­se Weise ein­ge­füg­te Trig­ger sind auf die Lauf­zeit von rleibd be­grenzt und ge­hen bei ei­nem Neu­start von rleibd ver­lo­ren.

Sie kön­nen na­tür­lich auch in Ihrer eibdef.xml be­nann­te Trig­ger an­ge­ben. Für die­se gilt ge­nau um­ge­kehrt: Sie kön­nen im lau­fen­den Be­trieb ge­löscht wer­den, sind je­doch nach ei­nem Neu­start wie­der vor­han­den.