12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #!/usr/bin/env node
- var config = require("./modules/config");
- var logging = require("./modules/logging");
- var clean = require("./modules/cleaner");
- var http = require("http");
- var mime = require("mime");
- var url = require("url");
- var fs = require("fs");
- var routes = {
- index: require("./routes/index"),
- avatars: require("./routes/avatars"),
- skins: require("./routes/skins"),
- renders: require("./routes/renders")
- };
- function asset_request(req, res) {
- var filename = __dirname + "/public/" + req.url.pathname;
- fs.exists(filename, function(exists) {
- if (exists) {
- fs.readFile(filename, function(err, contents) {
- if (err) {
- res.writeHead(500, {"Content-type" : "text/plain"});
- res.end("Internal Server Error");
- } else {
- res.writeHead(200, {
- "Content-type" : mime.lookup(filename),
- "Content-Length": contents.length
- });
- res.end(contents);
- }
- });
- } else {
- res.writeHead(404, {
- "Content-type" : "text/plain"
- });
- res.end("Not Found");
- }
- });
- }
- function requestHandler(req, res) {
- var querystring = url.parse(req.url).query;
- var request = req;
- // we need to use url.parse and give the result to url.parse because nodejs
- request.url = url.parse(req.url, querystring);
- request.url.query = request.url.query || {};
- var local_path = request.url.pathname.split("/")[1];
- console.log(request.method + " " + request.url.href);
- if (request.method == "GET" || request.method == "HEAD") {
- try {
- switch (local_path) {
- case "":
- routes.index(request, res);
- break;
- case "avatars":
- routes.avatars(request, res);
- break;
- case "skins":
- routes.skins(request, res);
- break;
- case "renders":
- routes.renders(request, res);
- break;
- default:
- asset_request(request, res);
- }
- } catch(e) {
- var error = JSON.stringify(req.headers) + "\n" + e.stack;
- logging.error("Error: " + error);
- res.writeHead(500, {
- "Content-Type": "text/plain"
- });
- res.end(config.debug_enabled ? error : "Internal Server Error");
- }
- } else {
- res.writeHead(405, {
- "Content-Type": "text/plain"
- });
- res.end("Method Not Allowed");
- }
- }
- http.createServer(requestHandler).listen(process.env.PORT || 3000);
- // cleaning worker
- setInterval(clean.run, config.cleaning_interval * 1000);
|