This repository was archived by the owner on Jan 11, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.js
More file actions
80 lines (65 loc) · 2.49 KB
/
app.js
File metadata and controls
80 lines (65 loc) · 2.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
"use strict";
const http = require('http');
const express = require('express');
const app = express();
const compression = require('compression');
const logger = require("morgan");
const jade = require("jade");
const api = require("./syake/api2");
const cache = require("comp-cache");
app.use(function(req, res, next) {
if (!api.host) api.host = req.hostname + ":" + (process.env.PORT || 3000);
if (req.ip.match(api.config.vistor)) { next(); } else { res.sendStatus(403); }
});
app.use("/file", express.static('cache', { maxAge: 86400000 * 31, etag: false, lastModified: false }));
app.use(compression({ threshold: 0 }));
app.use("/", express.static('www', { maxAge: 86400000 * 7 }));
app.use(logger('combined', {
skip: function(req, res) { return req.path.startsWith("/server.cgi"); }
}));
const server = express.Router();
app.use("/server.cgi", server);
require('./syake/server').set(server);
app.use(function(req, res, next) {
if (req.headers["origin"]) {
var i = req.headers["origin"].indexOf("://");
if (req.headers["origin"].substr(i + 3) !== api.host) res.sendStatus(400);
return;
}
res.setHeader("X-Frame-Options", "DENY");
if (req.accepts("html")) {
// res.setHeader("Content-Security-Policy","default-src 'none';img-src * data:;media-src * ;font-src cdn.honokak.osaka;script-src 'self' cdn.honokak.osaka cdnjs.cloudflare.com; style-src 'self' cdn.honokak.osaka cdnjs.cloudflare.com;")
}
next();
});
app.use(cache.get);
app.use(cache.put);
const fs = require("fs");
fs.watch('views', function(event, path0) {
if (event !== "change") return;
cache.clear();
});
api.update.on("update", cache.clear);
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true }));
app.set('view engine', 'jade');
app.set('views', './views');
setTimeout(function() {
const options = { cache: true };
jade.compileFile('./views/base.jade', options);
}, 250);
const admin = express.Router();
app.use("/admin.cgi", admin);
require('./syake/admin').set(admin);
const gateway = express.Router();
app.use("/", gateway);
require('./syake/gateway').set(gateway);
const dat = express.Router();
app.use("/", dat);
require('./syake/dat').set(dat);
app.use(function(err, req, res, next) { res.status(500).end("sorry,something wrong");
console.log(err); });
app.use(function(req, res, next) { res.sendStatus(404); });
http.createServer(app).listen(process.env.PORT || 3000, function() {
console.log("Express server started");
});