// ------------------------------------------------------------------ // Object parent $root object $sys var $sys name "ColdWeb Experimental Server" var $sys htmlv "text/html; level=3" var $sys codes #[[200, "Ok"], [201, "Created"], [202, "Accepted"], [203, "Provisional Information"], [204, "No Content"], [300, "Multiple Choices"], [301, "Moved Permanently"], [302, "Moved Temporarily"], [303, "Method"], [304, "Not Modified"], [400, "Bad Request"], [401, "Unauthorized"], [402, "Payment Required"], [403, "Forbidden"], [404, "Not Found"], [405, "Method Not Allowed"], [406, "None Acceptable"], [407, "Proxy Authentication Required"], [408, "Request Timeout"], [409, "Conflict"], [410, "Gone"], [500, "Internal Server Error"], [501, "Not Implemented"], [502, "Bad Gateway"], [503, "Service Unavailable"], [504, "Gateway Timeout"]] var $sys gateways #[] var $sys methods ["GET", "HEAD"] var $sys page_tail ["<hr><i><b><a href=\"/\">Cold Web</a></b></i>"] method htmlv return htmlv; . method starting_parent return $http; . method daemon return $http; . method startup arg args; var obj; catch any { for obj in (.starting_parent().children()) (| obj.destroy() |); (> .daemon().startup(toint(sublist(args, 3).to_string()) || 8080) <); // the server is screwed, we have to set the heartbeat to SOMETHING // so lets make it something we'll never hit set_heartbeat(30); } with handler { .log("** Error Encountered upon startup:"); .log($parse.traceback(traceback())); shutdown(); } . method response arg code, message; var name, x; if (!(name = (| codes[code] |))) return .response(500, "We had a booboo! Invalid code: " + tostr(code)); if (type(message) == 'string) message = ["<p align=center><b>" + message + "</b></p>"]; return ["<head><title>" + tostr(code) + " " + name + "</title></head>", "<body>", "<h1 align=center>" + tostr(code) + " " + name + "</h1>", "<hr>", @message, @.page_tail()]; . method filter_text arg text; var x, line; for x in [1 .. listlen(text)] { if (text[x]) { line = strsub(text[x], "&", "&"); line = strsub(line, "<", "<"); line = strsub(line, ">", ">"); text = replace(text, x, line); } } return text; . method gateways return gateways; . method page_tail return page_tail; . method methods return methods; .