You will often want to make a front end that inspects the
current state of the machine and generates different
HTML output based upon the state. The
following
(wui/cgi-bin/server/http_logs.cgi
) script
provides an example of this. It defines a
show_log()
function which checks for the
existance of log files prior to displaying the contents. The
show_log()
function is then invoked several
times for the various log files associated with the
httpd daemon.
@bashCgiBegin("$Id: http_logs.cgi,v 1.18 2008/02/18 02:37:40 rwhalb Exp $","2003-10-22","Clear Web Server Logs") # # http_logs.cgi # # local defines... @define("exitAnchor","System") # # parse any CGI arguments... set_query_options; # # exit text... qrft="${QUERY_return_from:-"NST WUI Index"}"; qrlt="${QUERY_return_label:-"Exit"}" exit_hover_text="@jsn("${qrlt}") to page: @jsqh("${qrft}")..."; exit_hover_text_len="$(((${#qrft} * @dtm()) + 130))"; # # define vars... LOG_DIR="/var/log/httpd"; QUERY_action="${QUERY_action:-""}"; if [ "${QUERY_action}" != "clear" ]; then @bashCgiOutBegin() @wuiHtmlHeader("header","Clear Apache Web Server Log Files") @p("Use this page to clear \"@stress("All")\" log files associated with the @apacheWebSiteLink() Web Server. The log files are located within the directory: \"@bold("@wuiBrowseLink("${LOG_DIR}",,"../server/http_logs.cgi","Clear Apache Web Server Log Files")")\".") @cautionMessage(" The @apacheWebSiteLink() Web Server will be @stress("restarted") after the log files have been cleared. ","Caution: Apache Web Server Restart Required") <center> <table@htmlAttr("border","0")> <tr> <td> <form@htmlAttr("action","http_logs.cgi")> @wuiInputHidden("action","clear") @wuiInputHidden("return","http_logs.cgi") @wuiInputHidden("return_from","Clear Apache Web Server Log Files") @wuiInputHidden("return_label","Return") @wuiInputButton("submit","Clear All Log Files","@toolTipAttr("@jsn("Clear") @jsqh("All") associated @jsdh("Apache Web Server") log files...","360")") </form> </td> </tr> </table> </center> @verticalGap() @bashCgiOutEnd() fi # # clear_log FILE # # Resets the contents of the log files clear_log() { local LFILE="${LOG_DIR}/${1}"; if [ -f "${LFILE}" ]; then /usr/bin/sudo /bin/rm -f "${LFILE}"; fi /usr/bin/sudo /bin/touch "${LFILE}"; /usr/bin/sudo /bin/chmod 644 "${LFILE}"; } # # List of log files maintained by apache LOG_FILES=(ssl_error_log ssl_access_log ssl_request_log error_log access_log); # # See if user wants us to clear the log files access_log if [ "${QUERY_action:-"show"}" = "clear" ]; then cat <<EOF @wuiHtmlHeader("clearing","Clearing All Web Server Log Files") EOF for l in ${LOG_FILES[*]}; do clear_log "${l}"; done @bashCgiOutBegin() @p("The content of the following log files have been @stress("cleared"): $(for i in ${LOG_FILES[@]}; do printf "\"@bold("${i}")\" "; done) which are located within the directory: \"@bold("@wuiBrowseLink("${LOG_DIR}",,"../server/http_logs.cgi","Clear Apache Web Server Log Files")")\". The \"@apacheWebSiteLink()\" Web Server will now be \"@bold("reloaded")\" (a <u>slight</u> pause may occur).") @bashCgiOutEnd() # # set exit label and return if not already set... QUERY_return="${QUERY_return:-"@topDir()/cgi-bin/server/http_logs.cgi"}"; QUERY_return_from="@jsqh("${QUERY_return_from:-"Clear Apache Web Server Log Files"}")"; @bashCgiEnd() /usr/bin/sudo /etc/rc.d/init.d/httpd reload &> /dev/null; exit 0; fi # # Show index to log files @bashCgiOutBegin() @p("Use these convenient buttons below to view each individual @apacheWebSiteLink() Web Server log file with the \"@nst() @bold("File Viewer")\" prior to clearing.") <center> <table@htmlAttr("border","1") @htmlAttr("width","90%")> <colgroup> <col@htmlAttr("width","20%")> <col@htmlAttr("width","16%")> <col@htmlAttr("width","16%")> <col@htmlAttr("width","16%")> <col@htmlAttr("width","16%")> <col@htmlAttr("width","16%")> </colgroup> <tr> <th@htmlAttr("style","text-align: left;")>View Web Logs</th> @bashCgiOutEnd() for l in ${LOG_FILES[*]}; do @bashCgiOutBegin() <td> @tailButton("/var/log/httpd/${l}","100","${l}","../server/http_logs.cgi",,,,,,,"@htmlAttr("style","width: 100%")") </td> @bashCgiOutEnd() done @bashCgiOutBegin() </tr> </table> </center> @bashCgiOutEnd() # # set exit label/return... QUERY_return_from="@jsqh("${qrft}")"; QUERY_return_label="${qrlt}"; @bashCgiEnd("${exit_hover_text_len}")