/********************************************************************/ /* CL program WRKHTTP -- CPP for command WRKHTTP */ /********************************************************************/ /* Version for V4Rx - support for multiple configuration files */ /********************************************************************/ /* Use this command to perform the following functions: */ /* - create a backup of the current selected configuration mbr */ /* - edit the current selected configuration member with SEU */ /* or the system provided HTTP configuration editor */ /* - print the current selected configuration member */ /* - start PDM for file QUSRSYS/QATMHTTPC */ /* - restart the HTTP server */ /* */ /* Backups are created as mmmmmmnnnn where "nnnn" is a four digit */ /* generation number, starting with 0001. (mmmmmm is member) */ /********************************************************************/ /* 1/31/98 - changed for V4Rx, add parameter for Configuration */ /* File (MBR) to accomodate other than CONFIG */ /********************************************************************/ /* */ /* Copyright (c) 1997, 1998 Bits & Bytes Programming */ /* ALL RIGHTS RESERVED */ /* */ /* Craig Pelkie */ /* Bits & Bytes Programming */ /* P.O. Box 1473 */ /* Valley Center, CA 92082-1473 */ /* craig@web400.com */ /********************************************************************/ wrkhttp: pgm parm(&mbr /* member to edit */ + &edit /* editor SEU/SYS/NO */ + &print /* print member */ + &backup /* create backup of member */ + &pdm /* start PDM for QATMHTTPC */ + &restart /* restart the HTTP server */ + &httpsvr) /* server instance */ /********************************************************************/ /* Parameter values */ /* */ /* &MBR */ /* name of configuration member to edit */ /* */ /* &EDIT */ /* *SEU - edit using SEU (default) */ /* *SYS - edit using system provided WRKHTTPCFG editor */ /* *NO - do not perform editing on member */ /* */ /* &PRINT */ /* *BEFORE - print member before editing */ /* *AFTER - print member after editing */ /* *BOTH - print member before and after editing */ /* *NO - do not print member (default) */ /* */ /* &BACKUP */ /* *YES - create generation backup of member in QATMHTTPC */ /* (default) */ /* *NO - do not create backup of member */ /* */ /* &PDM */ /* *YES - invoke PDM for QATMHTTPC after all other functions */ /* *NO - do not invoke PDM (default) */ /* */ /* &RESTART */ /* *YES - restart the AS/400 HTTP server (default) */ /* *NO - do not restart the AS/400 HTTP server */ /* */ /* &HTTPSVR */ /* *ALL - restart all instances of HTTP server */ /* *MBR - restart the instance identified in the MBR parameter */ /* name - restart the named instance */ /********************************************************************/ dcl var(&mbr ) type(*char) len(10) dcl var(&edit ) type(*char) len(4) dcl var(&print ) type(*char) len(7) dcl var(&backup ) type(*char) len(4) dcl var(&pdm ) type(*char) len(4) dcl var(&restart ) type(*char) len(4) dcl var(&httpsvr ) type(*char) len(10) dcl var(&after ) type(*char) value('*AFTER') dcl var(&all ) type(*char) value('*ALL') dcl var(&before ) type(*char) value('*BEFORE') dcl var(&blank4 ) type(*char) value(' ') dcl var(&both ) type(*char) value('*BOTH') dcl var(&httpmbr ) type(*char) value('*MBR') dcl var(&no ) type(*char) value('*NO') dcl var(&prtafter ) type(*char) value('PRTAFTER' ) dcl var(&prtbefore) type(*char) value('PRTBEFORE') dcl var(&seu ) type(*char) value('*SEU') dcl var(&sys ) type(*char) value('*SYS') dcl var(&textstr ) type(*char) value('Backup of + HTTP member') dcl var(&yes ) type(*char) value('*YES') dcl var(&zero4 ) type(*char) value('0000') dcl var(&backupmbr) type(*char) len(10) dcl var(&mbrtxt ) type(*char) len(50) dcl var(&prtrtn ) type(*char) len(10) dcl var(&qdate ) type(*char) len(6 ) dcl var(&qdayofwk ) type(*char) len(4 ) dcl var(&qtime ) type(*char) len(6 ) dcl var(&refmbr ) type(*char) len(10) dcl var(&rtnmbr ) type(*char) len(10) dcl var(&savmbr ) type(*char) len(10) dcl var(&suffixa ) type(*char) len(4) dcl var(&suffix ) type(*dec ) len(4 0) dcl var(&suffix1 ) type(*char) len(1) dcl var(&suffix2 ) type(*char) len(1) dcl var(&suffix3 ) type(*char) len(1) dcl var(&suffix4 ) type(*char) len(1) /********************************************************************/ /* BACKUP SECTION */ /********************************************************************/ if (&backup *eq &yes) then(do) /********************************************************************/ /* Set initial values for members */ /* */ /* The first six characters of the member name are used as the */ /* root name, followed by a four-digit generation number. */ /* */ /* If the configuration member name is less than six characters */ /* the name is padded with "_" characters. */ /********************************************************************/ chgvar var(&refmbr) value(%sst(&mbr 1 6)) if (%sst(&mbr 2 1) *eq ' ') then( + chgvar var(%sst(&refmbr 2 1)) value('_')) if (%sst(&mbr 3 1) *eq ' ') then( + chgvar var(%sst(&refmbr 3 1)) value('_')) if (%sst(&mbr 4 1) *eq ' ') then( + chgvar var(%sst(&refmbr 4 1)) value('_')) if (%sst(&mbr 5 1) *eq ' ') then( + chgvar var(%sst(&refmbr 5 1)) value('_')) if (%sst(&mbr 6 1) *eq ' ') then( + chgvar var(%sst(&refmbr 6 1)) value('_')) chgvar var(&savmbr) value(&mbr) /********************************************************************/ /* Retrieve all members with this root name, look for highest */ /* numbered backup. */ /********************************************************************/ loop: rtvmbrd file(qusrsys/qatmhttpc) + mbr((&refmbr)(*next)) + rtnmbr(&rtnmbr) monmsg msgid(cpf3049 cpf0000 cpf9999) + exec(goto increment) if (%sst(&rtnmbr 1 6) = + %sst(&refmbr 1 6)) then(do) if (%sst(&rtnmbr 7 4) = &blank4) then(do) chgvar var(%sst(&rtnmbr 7 4)) value(&zero4) enddo chgvar var(&suffix1) value(%sst(&rtnmbr 7 1)) chgvar var(&suffix2) value(%sst(&rtnmbr 8 1)) chgvar var(&suffix3) value(%sst(&rtnmbr 9 1)) chgvar var(&suffix4) value(%sst(&rtnmbr 10 1)) if (((&suffix1 >= '0') & (&suffix1 <= '9')) & + ((&suffix2 >= '0') & (&suffix2 <= '9')) & + ((&suffix3 >= '0') & (&suffix3 <= '9')) & + ((&suffix4 >= '0') & (&suffix4 <= '9'))) + then(do) chgvar var(&savmbr) value(&rtnmbr) enddo chgvar var(&refmbr) value(&rtnmbr) goto loop enddo /********************************************************************/ /* Increment backup number by 1 */ /********************************************************************/ increment: if (%sst(&savmbr 10 1) < '0') then( + chgvar var(%sst(&savmbr 7 4)) value(&zero4)) chgvar var(&suffix ) value(%sst(&savmbr 7 4)) chgvar var(&suffix ) value(&suffix + 1) chgvar var(&suffixa ) value(&suffix) chgvar var(&backupmbr) + value(%sst(&refmbr 1 6) *cat &suffixa) /********************************************************************/ /* Retrieve system date/time values, format new member text */ /********************************************************************/ rtvsysval sysval(qdate ) rtnvar(&qdate) rtvsysval sysval(qdayofweek) rtnvar(&qdayofwk) rtvsysval sysval(qtime ) rtnvar(&qtime) chgvar var(&mbrtxt) value(&textstr) chgvar var(&mbrtxt) value(&mbrtxt *bcat &qdayofwk) chgvar var(&mbrtxt) value(&mbrtxt *bcat &qdate) chgvar var(&mbrtxt) value(&mbrtxt *bcat &qtime) /********************************************************************/ /* Add new member to file, copy existing for backup */ /********************************************************************/ addpfm file(qusrsys/qatmhttpc) + mbr(&backupmbr) + text(&mbrtxt) cpyf fromfile(qusrsys/qatmhttpc) + frommbr(&mbr) + tofile(qusrsys/qatmhttpc) + tombr(&backupmbr) + mbropt(*add) enddo /********************************************************************/ /* PRINT SECTION -- BEFORE EDIT */ /********************************************************************/ if ((&print *eq &before) *or + (&print *eq &both)) then(do) chgvar var(&prtrtn) value(&prtbefore) goto print enddo prtbefore: /********************************************************************/ /* EDIT SECTION -- USE SYSTEM WRKHTTPCFG EDIT COMMAND */ /********************************************************************/ if (&edit = &sys) then(do) qsys/wrkhttpcfg cfg(&mbr) enddo /********************************************************************/ /* EDIT SECTION -- COPY CONFIG TO SOURCE MEMBER, START SEU */ /********************************************************************/ if (&edit = &seu) then(do) dltf file(qtemp/$httpsrcwk) monmsg msgid(cpf0000) crtsrcpf file(qtemp/$httpsrcwk) + rcdlen(240) cpyf fromfile(qusrsys/qatmhttpc) + tofile(qtemp/$httpsrcwk) + frommbr(&mbr) + tombr(&mbr) + mbropt(*add) + fmtopt(*cvtsrc) strseu srcfile(qtemp/$httpsrcwk) + srcmbr(&mbr) cpyf fromfile(qtemp/$httpsrcwk) + tofile(qusrsys/qatmhttpc) + frommbr(&mbr) + tombr(&mbr) + mbropt(*replace) + fmtopt(*cvtsrc) enddo /********************************************************************/ /* PRINT SECTION -- AFTER EDIT */ /********************************************************************/ if ((&print *eq &after) *or + (&print *eq &both)) then(do) chgvar var(&prtrtn) value(&prtafter) goto print enddo prtafter: /********************************************************************/ /* PDM SECTION -- START PDM FOR FILE QUSRSYS/QATMHTTPC */ /********************************************************************/ if (&pdm = &yes) then(do) wrkmbrpdm file(qusrsys/qatmhttpc) + mbr(*all) enddo /********************************************************************/ /* RESTART SECTION -- PROCESS RESTART OF AS/400 HTTP SERVER */ /********************************************************************/ if (&restart = &yes) then(do) if (&httpsvr *eq &httpmbr) then(do) chgvar &httpsvr &mbr enddo strtcpsvr server(*HTTP) + restart(*HTTP) + httpsvr(&httpsvr) monmsg msgid(cpf0000) enddo /********************************************************************/ /* NORMAL END OF PROGRAM */ /********************************************************************/ return /********************************************************************/ /* PRINT ROUTINE -- RETURNS TO SELECTED LABEL */ /********************************************************************/ print: dltf file(qtemp/$httpwk1) monmsg msgid(cpf0000) crtpf file(qtemp/$httpwk1) + rcdlen(100) + mbr(*none) + maxmbrs(*nomax) cpyf fromfile(qusrsys/qatmhttpc) + tofile(qtemp/$httpwk1) + frommbr(&mbr) + tombr(&mbr) + mbropt(*add) + fmtopt(*nochk) cpyf fromfile(qtemp/$httpwk1) + tofile(*print) if (&prtrtn = &prtbefore) then(goto prtbefore) if (&prtrtn = &prtafter ) then(goto prtafter) endpgm