Monday, November 08, 2010 at 12:05 AM.
system.verbs.builtins.radio.html.viewWebServerLog
on viewWebServerLog () { <<Changes: <<1/6/02; 4:28:23 AM by JES <<Added table css classes. <<1/25/01; 6:36:14 PM by DW <<Created. <<2/12/01; 3:54:56 PM by PBS <<Added column headings, to be consistent with the Events page. Headings are: Time, IP address, Secs, Size, Type, and Path. <<2/15/01; 4:07:26 PM by PBS <<Prevent macros. <<2/20/01; 4:08:42 PM by PBS <<Don't untaint text here -- it's now untainted before it's stored in the log guest database. <<2/24/01; 5:51:57 PM by PBS <<Help link. <<2/25/01; 8:34:32 PM by JES <<If the uri ends with a '/', make the link text "/", instead of the empty string. local (pta = html.getpagetableaddress ()); pta^.title = radio.string.getlocalizedstring ("webServerLog.title"); local (adrlog = log.getGuestSubTable ("webServer")); local (maxitems = 100); local (htmltext = "\r", indentlevel = 0); on add (s) { htmltext = htmltext + string.filledstring ("\t", indentlevel) + s + "\r\n"}; bundle { //show the intro local (t); new (tabletype, @t); t.maxitems = maxitems; add ("<p>" + radio.string.getlocalizedstring ("webServerLog.intro", @t) + " " + radio.userInterface.helpLink ("The Web Server Log page") + "</p>")}; add ("<table class=\"dwsFrameTable\" cellspacing=\"0\" cellpadding=\"0\"><tr bgcolor=\"" + radio.data.htmlColors.framecolor + "\"><td>"); indentlevel++; add ("<table class=\"dwsTable\" border=\"0\" cellspacing=\"1\" cellpadding=\"5\">"); indentlevel++; add ("<tr bgcolor=\"" + radio.data.htmlColors.cellbgcolor + "\"><td class=\"dwsTableCell\"><b>Time</b></td><td class=\"dwsTableCell\"><b>IP address</b></td><td class=\"dwsTableCell\" align=\"right\"><b>Secs</b></td><td class=\"dwsTableCell\" align=\"right\"><b>Size</b></td><td class=\"dwsTableCell\"><b>Type</b></td><td class=\"dwsTableCell\"><b>Path</b></td></tr>"); local (adrhour, adritem, i, j, fname, ct = 0); for i = sizeof (adrlog^) downto 1 { adrhour = @adrlog^ [i]; for j = sizeof (adrhour^) downto 1 { adritem = @adrhour^ [j]; add ("<tr bgcolor=\"" + radio.data.htmlColors.cellbgcolor + "\">"); indentlevel++; add ("<td class=\"dwsTableCell\">" + date.timestring (timeCreated (adritem)) + "</td>"); add ("<td class=\"dwsTableCell\">" + adritem^.client + "</td>"); <<add ("<td>" + adritem^.code + "</td>") add ("<td class=\"dwsTableCell\" align=\"right\">" + adritem^.secs + "</td>"); add ("<td class=\"dwsTableCell\" align=\"right\">" + string.megabytestring (adritem^.size) + "</td>"); add ("<td class=\"dwsTableCell\">" + adritem^.type + "</td>"); if adritem^.uri endsWith "/" { fname = "/"} else { fname = string.nthfield (adritem^.uri, "/", string.countfields (adritem^.uri, "/"))}; add ("<td class=\"dwsTableCell\">" + "<a href=\"" + adritem^.uri + "\"><font size=\"-1\">" + fname + "</font></a></td>"); add ("</tr>"); indentlevel--; if ++ct > maxitems { break}}}; add ("</table>"); indentlevel--; add ("</td></tr></table>"); indentlevel--; <<add ("<a name=\"helpText\"></a>" + radio.string.getlocalizedstring ("webServerLog.helpText")) return (htmltext)}; bundle { //test code local (pagetable); new (tabletype, @pagetable); html.setpagetableaddress (@pagetable); viewwebserverlog ()}
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.