Simple image host.
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

server.js 1.9KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. var http = require("http");
  2. var https = require("https");
  3. var fs = require("fs");
  4. var domain = require("domain");
  5. var loader = require("./lib/loader.js");
  6. var pg = require("pg");
  7. var Context = require("./lib/context.js");
  8. var conf = JSON.parse(fs.readFileSync("conf.json"));
  9. var endpoints = {
  10. //General files
  11. "/favicon.ico": "favicon.ico",
  12. "/global.css": "global.css",
  13. "/global.js": "global.js",
  14. "/404": "404.node.js",
  15. //Index files
  16. "/": "index/index.node.js",
  17. "/index/script.js": "index/script.js",
  18. "/index/style.css": "index/style.css",
  19. //Viewer files
  20. "/view": "view/index.node.js",
  21. "/view/style.css": "view/style.css",
  22. //Plain image files
  23. "/i": "i/index.node.js",
  24. //API files
  25. "/api/image_create": "api/image_create.node.js",
  26. "/api/collection_create": "api/collection_create.node.js"
  27. }
  28. var loaded = loader.load(endpoints, conf);
  29. var db = new pg.Client(conf.db);
  30. //Function to run on each request
  31. function onRequest(req, res) {
  32. console.log("Request for "+req.url);
  33. var ep = loaded.endpoints[req.url.split("?")[0]];
  34. //If the file doesn't exist, we 404.
  35. if (!ep) {
  36. ep = loaded.endpoints["/404"];
  37. res.writeHead(404);
  38. }
  39. //Execute if it's a .node.js, or just respond with the contents of the file
  40. if (typeof ep == "function") {
  41. ep(new Context({
  42. req: req,
  43. res: res,
  44. templates: loaded.templates,
  45. views: loaded.views,
  46. db: db,
  47. conf: conf
  48. }));
  49. } else {
  50. res.end(ep);
  51. }
  52. }
  53. //Initiate a postgresql client
  54. db.connect(function() {
  55. //Create HTTP or HTTPS server
  56. var server;
  57. if (conf.use_https) {
  58. server = https.createServer(conf.https, onRequest);
  59. } else {
  60. server = http.createServer(onRequest);
  61. }
  62. server.listen(conf.port);
  63. console.log("Listening on port "+conf.port+".");
  64. });
  65. //We don't want to crash even if something throws an uncaught exception.
  66. var d = domain.create();
  67. d.on("error", function(err) {
  68. console.trace(err);
  69. });
  70. process.on("uncaughtException", function(err) {
  71. console.trace(err);
  72. });