Für die Exit-Behandlung mit eigenen Prozeduren ergänzen Sie den Modul EXITTEL.C um den entsprechenden Code.
Wenn Sie einen Exit für send oder receive definieren, sind Sie auch für die Behandlung aller Sonderzeichen zuständig. Insbesondere müssen Sie dafür sorgen, dass
ein Zeichen ’0xff’ beim Senden verdoppelt wird,
zwei aufeinanderfolgende Zeichen ’0xff’ beim Empfangen in ein einzelnes ’0xff’ verwandelt werden.
Benutzerdefinierte Server-Exits im TELNET-Server aktivieren
Den so erstellten Code aktivieren Sie im TELNET-Server mit der Option -e:
-e [open:<selector1>!][close:<selector2>!][receive:<selector3>!][send:<selector4>]
Bei Angabe von * für <selector> wird grundsätzlich der Exit-Mechanismus ohne die genauer spezifizierende Angabe von <selector> gestartet.
Benutzerdefinierte Server-Exits im TELNET-Client aktivieren
Im TELNET-Client können Sie Server-Exits für send und receive mit dem Kommando rexit (remote exit) aktivieren. Dabei beschränkt sich die Wirkung von rexit jedoch auf die Verbindung dieses speziellen Clients zum Server.
Das rexit-Kommando hat folgende Syntax:
rexit [receive:<selector1>][<send:<selector2>]
Folgende Fälle sind zu unterscheiden:
Server-Options sind angegeben:
Wenn für eine Verbindung zwischen Client und Server kein rexit-Kommando angegeben wurde, gilt die Einstellung der Server-Option -e.
Gibt es für eine Exit-Routine Angaben sowohl im rexit-Kommando als auch in der Server-Option -e, so gelten die Angaben des rexit-Kommandos. Eine spätere Angabe von * für <selector1> bzw. <selector2> im rexit-Kommando bewirkt ein Rücksetzen auf die Angabe in der Server-Option. Durch eine leere Angabe für <selector1> bzw. <selector2> wird der Exit ausgeschaltet.
Es sind keine Server-Options angegeben:
Die Angabe von * für <selector> im rexit-Kommando aktiviert die Exit-Routine. Eine genauere Unterscheidung der Behandlungsart, wie sie durch die Angabe von <selector> ermöglicht wird, ist in diesem Fall nicht vorgesehen. Durch eine leere Angabe für <selector1> bzw. <selector2> wird der Exit ausgeschaltet.
Benutzerdefinierte Client-Exits im TELNET-Client aktivieren
Benutzerdefinierte Exit-Routinen für den Client stellen Sie mit dem Kommando exit im Client ein:
exit [receive:<selector1>][<send:<selector2>]
Bei Angabe von * für <selector1> bzw. <selector2> wird zwar der Entry YAPTEXIT angesprungen, jedoch ohne die genauer spezifzierende Angabe von selector. Fehlt die Angabe für <selector>, so wird keine Exit-Routine angesprungen. Durch eine leere Angabe für <selector1> bzw. <selector2> wird der Exit ausgeschaltet.
Beispiele
Clients vom Rechner Rechner sollen keinen Zugang zum TELNET-Server erhalten.
Dies lässt sich mit folgendem benutzerdefinierten Modul mit Entry YAPTEXIT erreichen:YAPTEXIT (struct yaptx *exparam) { switch (exparam->action) { case telopen: if (strcmp(exparam->hname,"Rechner") == 0) return(-1); break; default; break; } }
Dieser Modul muss in der Bibliothek SYSLNK.TCP-IP-AP.nnn den EXITTEL-Modul ersetzen und mit Option
-e open:*
aktiviert werden. Zur Ablaufzeit wird der Externverweis YAPTEXIT aus dem benutzerdefinierten Modul befriedigt.Für einen TELNET-Server sind zwei verschiedene benutzerdefinierte Open-Exits definiert:
Meldet sich ein Client von Rechner1, so soll exit1 angesprungen werden.
Meldet sich ein Client von Rechner2, so soll exit2 angesprungen werden.
YAPTEXIT (struct yaptx *exparam) { if ((exparam->action) == telopen) if (strcmp(exparam.hname,"Rechner1")==0) exit1(exparam) else if ((strcmp(exparam.hname,"Rechner2")==0) exit2(exparam); }
Die entsprechende Option lautet:
-e open;*
Es sollen zwei verschiedene Code-Umsetzungen für die Daten definiert werden, die vom Client zum Server gesendet werden. So soll z.B. x’0102’ nach x’0a’ bzw. x’0a0b’ umgesetzt werden. Im nachfolgend dargestellten Beispiel heissen die Code-Umsetzungsroutinen proc1 bzw. proc2. Die Erkennungsstrings sind "proc1" bzw. "proc2".
YAPTEXIT (struct yaptx *exparam) { if ((exparam->caller) == client) && (exparam->action == telsend)) if (strcmp(exparam->selector,"proc1")==0) proc1(exparam); else if ((strcmp(exparam->selector,"proc2")==0) proc2(exparam); }
Die entsprechenden Kommandos zu Einschalten dieser Exits lauten:
exit send:proc1
bzw.exit send:proc2
Benutzerdefinierte TELNET-Exits unter POSIX
Der POSIX-TELNET entsteht aus dem Zusammenbinden der LLMs TELPOSIX und EXITTEL. Somit können Sie auch unter POSIX mit den TELNET-Exits arbeiten.
Der Lieferumfang von interNet Services beinhaltet den Dummy-Modul EXITTEL, der nur einen Rücksprung ausführt.
Eigene TELNET-Exits schreiben Sie wie folgt:
- Erstellen Sie Ihre gewünschte Version des EXITTEL.
- Binden Sie diese Version mit TELPOSIX aus der SYSLNK.TCP-IP-AP.nnn zusammen.
- Schreiben Sie das resultierende LLM unter dem Namen TELNET in die SINLIB.TCP-IP-AP.nnn.
- Installieren Sie POSIX-TELNET (siehe Abschnitt „Installation und Deinstallation von FTP- und TELNET-Client in POSIX“).