X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=server.coffee;h=b3624ae64a160d653d2b30b861bb45e6a475012d;hb=89e6048a552a90df061f10d78a836358d6782b01;hp=fad63475eb06e91997a0d87dcd7e19ecdfe1ebe4;hpb=3a8a99fd78775bdd7f71470443858e19b09dc2ed;p=peach-cgt.git diff --git a/server.coffee b/server.coffee index fad6347..b3624ae 100644 --- a/server.coffee +++ b/server.coffee @@ -26,7 +26,25 @@ html_handler = (args, out, request, url_parts) -> if err return out.end 'Server failed to read index.html' out.end data - + +clean_pathname_regex = new RegExp('[^a-zA-Z/_.-]') +clean_pathname_regex2 = new RegExp('/[.]') +clean_pathname_regex3 = new RegExp('^[.-]') +clean_pathname = (str) -> + str = str.replace clean_pathname_regex, '_' + str = str.replace clean_pathname_regex2, '/_' + return str.replace clean_pathname_regex3, '_' + +# serve javascript files from within /usr/share/javascript +javascript_handler = (args, out, request, url_parts) -> + filename = clean_pathname "/usr/share/#{url_parts.pathname}" + fs.readFile filename, 'utf8', (err, data) -> + if err + out.writeHead 404 + return out.end "Server failed to read #{filename}" + out.writeHead 200, 'Content-Type': 'text/javascript' + out.end data + http_server = http.createServer (req, res) -> url_parts = url.parse req.url, true @@ -35,13 +53,15 @@ http_server = http.createServer (req, res) -> rel_path = url_parts.pathname.substr 1 - if rel_path.substr(rel_path.length - 4) is '.css' + if rel_path.substr(0, 11) is 'javascript/' + return javascript_handler url_parts.query, res, req, url_parts + else if rel_path.substr(rel_path.length - 4) is '.css' res.writeHead 200, 'Content-Type': 'text/css' return css_handler url_parts.query, res, req, url_parts else if rel_path.substr rel_path.length - 3 is '.js' res.writeHead 200, 'Content-Type': 'text/javascript' return js_handler url_parts.query, res, req, url_parts - + return html_handler url_parts.query, res, req, url_parts http_server.listen listen_port, "127.0.0.1"