Files
message-pusher/app.js
T

83 lines
2.0 KiB
JavaScript
Raw Normal View History

2021-01-17 10:49:19 +08:00
const express = require('express');
const path = require('path');
2021-01-17 14:26:33 +08:00
const session = require('express-session');
const flash = require('connect-flash');
const rateLimit = require('express-rate-limit');
const compression = require('compression');
2021-01-17 10:49:19 +08:00
const cookieParser = require('cookie-parser');
const logger = require('morgan');
const http = require('http');
2021-01-17 14:26:33 +08:00
const serveStatic = require('serve-static');
2021-01-17 10:49:19 +08:00
const config = require('./config');
const indexRouter = require('./routers/index');
const messageRouter = require('./routers/message');
2021-01-17 14:26:33 +08:00
const userRouter = require('./routers/user');
2021-01-17 10:49:19 +08:00
const { refreshToken } = require('./common/wechat');
const { initializeTokenStore } = require('./common/token');
2020-09-01 15:21:10 +08:00
const app = express();
2021-01-17 14:26:33 +08:00
app.locals.isLogged = false;
app.locals.isAdmin = false;
2021-01-17 10:49:19 +08:00
setTimeout(async () => {
// TODO: Here we need an improvement! I have tried EventEmitter but it's not working. :(
await initializeTokenStore();
await refreshToken(app);
setInterval(async () => refreshToken(), 100 * 60 * 1000);
}, 1000);
2020-09-01 16:28:09 +08:00
2021-01-17 10:49:19 +08:00
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.set('trust proxy', true);
2020-09-01 19:27:16 +08:00
2021-01-17 14:26:33 +08:00
app.use(
rateLimit({
windowMs: 30 * 1000,
max: 30,
})
);
app.use(
'/login',
rateLimit({
windowMs: 60 * 1000,
max: 5,
})
);
app.use(compression());
2021-01-17 10:49:19 +08:00
app.use(logger('dev'));
2020-09-01 15:21:10 +08:00
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
2021-01-17 14:26:33 +08:00
app.use(cookieParser(config.cookie_secret));
app.use(
session({
resave: true,
saveUninitialized: true,
secret: config.session_secret,
})
);
app.use(flash());
2021-01-17 10:49:19 +08:00
app.use(express.static(path.join(__dirname, 'public')));
2021-01-17 14:26:33 +08:00
app.use(
'/public',
serveStatic(path.join(__dirname, `public`), {
maxAge: '600000',
})
);
app.use('*', (req, res, next) => {
if (req.session.user !== undefined) {
res.locals.isLogged = true;
res.locals.isAdmin = req.session.user.isAdmin;
}
next();
});
2021-01-17 10:49:19 +08:00
app.use('/message', messageRouter);
2021-01-17 14:26:33 +08:00
app.use('/', indexRouter);
app.use('/', userRouter);
2020-09-01 15:21:10 +08:00
const server = http.createServer(app);
2021-01-17 10:49:19 +08:00
server.listen(config.port);
2020-09-01 15:21:10 +08:00
module.exports = app;