View Full Version : FTP Welcome
Michael_Wien
18-03-08, 11:22
Hallo Leute,
ich benötige auf unserer I5 - FTP Server - eine User bezogene "Welcome Message".
Habe nun schon in diverseren Foren versucht mich schlauer zu machen, konnte aber nur folgendes herausfinden:
Change the banner / welcome / hello screen
Standard FTP message 220 is shown when a client connects to an FTP server. On the AS/400, this is stored in message TCP120D in the MSGF (http://wiki.midrange.com/index.php?title=MSGF&action=edit) below can be modified. [1] (http://archive.midrange.com/midrange-l/200703/msg00728.html)
WRKMSGD MSGID(TCP120D) MSGF(QTCP/QTCPMSGF)
Kann mir da jemand weiterhelfen?
Besten Dank im voraus
lg
Michael
Da die Nachricht zentral ist, geht das nur per API.
Du benötigst eine Ausgangspunktüberwachung für QIBM_QTMF_SVR_LOGON (WRKREGINF), in dem du einen OVRMSGF je User einbaust.
Dann kannst du die Nachricht aus der QTCPMSGF in eine User-MSGF kopieren.
Ist eine Nachricht nicht vorhanden, wird die Nachricht aus der Original-MSGF genommen, so dass du nur diese eine Nachricht je User kopieren musst.
Michael_Wien
18-03-08, 12:27
besten Dank. Das war der Hinweis den ich brauchte.
lg
Michael_Wien
18-03-08, 15:30
Wars nun leider doch nicht.
Ich habe beim Exit Point: QIBM_QTMF_SVR_LOGON TCPL0100
Prg:
FTPLOGON: PGM PARM(&APPIDIN &USRIN &USRLENIN &AUTIN +
&AUTLENIN &IPADRIN &IPLENIN &RETCDOUT +
&USRPRFOUT &PASSWDOUT &CURLIBOUT)
/*DECLARE INPUT PARAMETERS */
DCL &APPIDIN *CHAR 4 /* APPLICATION ID, BINARY NUM */
DCL &USRIN *CHAR 999 /* USER ID */
DCL &USRLENIN *CHAR 4 /* LEN OF USER ID, BINARY NUM */
DCL &AUTIN *CHAR 999 /* AUTENTICATION */
DCL &AUTLENIN *CHAR 4 /* LENGTH OF AUTH, BINARY NUM */
DCL &IPADRIN *CHAR 15 /* CLIENT IP ADRESS */
DCL &IPLENIN *CHAR 4 /* IPADDRESS LENGTH BINARY NUM */
DCL &RETCDOUT *CHAR 4 /* RETURN CODE (OUT) */
DCL &USRPRFOUT *CHAR 10 /* USER PROFILE (OUT) */
DCL &PASSWDOUT *CHAR 10 /* PASSWORD (OUT) */
DCL &CURLIBOUT *CHAR 10 /* CURRENT LIBRARY */
/*DECLARE LOCAL COPIES OF PAR */
DCL VAR(&APPID) TYPE(*DEC) LEN(1 0)
DCL VAR(&USRLEN) TYPE(*DEC) LEN(5 0)
DCL VAR(&AUTLEN) TYPE(*DEC) LEN(5 0)
DCL VAR(&IPLEN) TYPE(*DEC) LEN(5 0)
/*ASSIGN INPUT PARA. TO LOCAL COPIES */
CHGVAR VAR(&APPID) VALUE(%BINARY(&APPIDIN))
CHGVAR VAR(&USRLEN) VALUE(%BINARY(&USRLENIN))
CHGVAR VAR(&AUTLEN) VALUE(%BINARY(&AUTLENIN))
CHGVAR VAR(&IPLEN) VALUE(%BINARY(&IPLENIN))
/*ASSIGN INPUT PARA. TO LOCAL COPIES */
IF COND(%SST(&USRIN 1 &USRLEN) = 'TEST') THEN(DO)
OVRMSGF MSGF(QTCPMSGF) TOMSGF(TEST/FTPMSGF)
SNDPGMMSG MSGID(TCP120D) MSGF(QTCPMSGF) MSGDTA('TEST') +
TOPGMQ(*EXT) TOMSGQ(QUSRSYS/TEST)
CHGVAR VAR(%BINARY(&RETCDOUT)) VALUE(2)
CHGVAR VAR(&CURLIBOUT) VALUE('FTPDEFAULT')
CHGVAR VAR(&USRPRFOUT) VALUE('TEST')
GOTO CMDLBL(END)
ENDDO
END:
ENDPGM
Der Overwrite funktioniert ansich, da wenn ich danach ein SNDPGMMSG absetzte schickt er die richtige Nachricht.
Hast Du vielleicht noch einen Tip für mich?
lg
Michael
Der OVRMSGF enthält leider keinen OVRSCOPE, so dass dieser wohl nicht für den Job gesetzt werden kann, also nach Programmende wieder verschwindet.
Ausserdem arbeitet FTP ggf. mit mehreren Threads und der OVRMSGF gilt nur für den Hauptthread.
Anscheinend gibts da keine direkte Lösung.
Michael_Wien
18-03-08, 15:58
Ok, trotzdem danke für die Mühe
lg