// ------------------------------------------------------------------
// 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;
.