/********************************************************************/ /* CL program WRKHTTP -- CPP for command WRKHTTP */ /* */ /* Use this command to perform the following functions: */ /* - create a backup of the current CONFIG member */ /* - edit the current CONFIG member with SEU or the system */ /* command QSYS/WRKHTTPCFG */ /* - print the current CONFIG member */ /* - start PDM for file QUSRSYS/QATMHTTPC */ /* - restart the HTTP server */ /* */ /* Backups are created as CONFIGnnnn where "nnnn" is a four digit */ /* generation number, starting with 0001. */ /********************************************************************/ /* */ /* Copyright (c) 1997, 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(&edit /* edit CONFIG SEU/SYS/NO */ + &print /* print CONFIG */ + &backup /* create backup of CONFIG */ + &pdm /* start PDM for QATMHTTPC */ + &restart) /* restart the HTTP server */ /********************************************************************/ /* Parameter values */ /* */ /* &EDIT */ /* *SEU - edit using SEU (default) */ /* *SYS - edit using system provided WRKHTTPCFG editor */ /* *NO - do not perform editing on CONFIG */ /* */ /* &PRINT */ /* *BEFORE - print CONFIG before editing */ /* *AFTER - print CONFIG after editing */ /* *BOTH - print CONFIG before and after editing */ /* *NO - do not print CONFIG (default) */ /* */ /* &BACKUP */ /* *YES - create generation backup of CONFIG in QATMHTTPC */ /* (default) */ /* *NO - do not create backup of CONFIG */ /* */ /* &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 */ /********************************************************************/ 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(&after ) type(*char) value('*AFTER') dcl var(&before ) type(*char) value('*BEFORE') dcl var(&blank4 ) type(*char) value(' ') dcl var(&both ) type(*char) value('*BOTH') dcl var(&config ) type(*char) value('CONFIG') 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 CONFIG') 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 */ /********************************************************************/ chgvar var(&refmbr) value(&config) chgvar var(&savmbr) value(&config) /********************************************************************/ /* Retrieve all CONFIG* members, 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) = &config) 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 7 4) = &blank4) 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(&config *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(CONFIG) + 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 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(CONFIG) + tombr(CONFIG) + mbropt(*add) + fmtopt(*cvtsrc) strseu srcfile(qtemp/$httpsrcwk) + srcmbr(CONFIG) cpyf fromfile(qtemp/$httpsrcwk) + tofile(qusrsys/qatmhttpc) + frommbr(CONFIG) + tombr(CONFIG) + 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) wrkobjpdm lib(qusrsys) + obj(qatmhttpc) + objtype(*file) enddo /********************************************************************/ /* RESTART SECTION -- PROCESS RESTART OF AS/400 HTTP SERVER */ /********************************************************************/ if (&restart = &yes) then(do) strtcpsvr server(*HTTP) + restart(*HTTP) 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(CONFIG) + tombr(CONFIG) + mbropt(*add) + fmtopt(*nochk) cpyf fromfile(qtemp/$httpwk1) + tofile(*print) if (&prtrtn = &prtbefore) then(goto prtbefore) if (&prtrtn = &prtafter ) then(goto prtafter) endpgm