summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Andersson <tor@ccxvii.net>2021-11-02 20:08:41 +0000
committerTor Andersson <tor@ccxvii.net>2021-11-06 13:25:27 +0100
commitdf3b42121f297c326fa8b481215252603c8937c4 (patch)
tree9d8f213c17ae14dbeb9f6e37aad4a8df419e8cab
parent35c3df0bf9209e79fb93875b1fc3e5afee032028 (diff)
downloadserver-df3b42121f297c326fa8b481215252603c8937c4.tar.gz
Tweak HTTPS setup stuff.
Serve both HTTP and HTTPS without redirection.
-rw-r--r--connect-better-sqlite3.js2
-rw-r--r--package.json2
-rw-r--r--server.js47
3 files changed, 19 insertions, 32 deletions
diff --git a/connect-better-sqlite3.js b/connect-better-sqlite3.js
index de858ed..008114b 100644
--- a/connect-better-sqlite3.js
+++ b/connect-better-sqlite3.js
@@ -30,7 +30,7 @@ module.exports = function (session) {
let db = new SQLite(db_path, options.mode);
db.pragma("journal_mode = WAL");
- db.pragma("synchronous = NORMAL");
+ db.pragma("synchronous = OFF");
db.exec("CREATE TABLE IF NOT EXISTS "+table+" (sid PRIMARY KEY, expires INTEGER, sess TEXT)");
db.exec("DELETE FROM "+table+" WHERE "+now()+" > expires");
db.exec("VACUUM");
diff --git a/package.json b/package.json
index 5a58b5c..2306457 100644
--- a/package.json
+++ b/package.json
@@ -11,12 +11,10 @@
"ejs": "^3.1.5",
"express": "^4.17.1",
"express-session": "^1.17.1",
- "morgan": "^1.10.0",
"nodemailer": "^6.7.0",
"passport": "^0.5.0",
"passport-local": "^1.0.0",
"passport.socketio": "^3.7.0",
- "rotating-file-stream": "^2.1.6",
"socket.io": "^4.3.1"
}
}
diff --git a/server.js b/server.js
index 321ff44..71f47cc 100644
--- a/server.js
+++ b/server.js
@@ -1,6 +1,9 @@
"use strict";
const fs = require('fs');
+const http = require('http');
+const https = require('https');
+const socket_io = require('socket.io');
const express = require('express');
const express_session = require('express-session');
const passport = require('passport');
@@ -28,28 +31,27 @@ db.pragma("journal_mode = WAL");
db.pragma("synchronous = NORMAL");
let app = express();
-let server = null;
+
let http_port = process.env.HTTP_PORT || 8080;
+let http_server = http.createServer(app);
+let http_io = socket_io(http_server);
+http_server.listen(http_port, '0.0.0.0', () => console.log('listening HTTP on *:' + http_port));
+let io = http_io;
+
let https_port = process.env.HTTPS_PORT;
if (https_port) {
- server = require('https').createServer({
+ let https_server = https.createServer({
key: fs.readFileSync(process.env.SSL_KEY || "key.pem"),
cert: fs.readFileSync(process.env.SSL_CERT || "cert.pem")
}, app);
- server.listen(https_port, '0.0.0.0', () => { console.log('listening HTTPS on *:' + https_port); });
-
- // Redirect HTTP to HTTPS if we're running HTTPS
- let http_app = express();
- let http_server = require('http').createServer(http_app);
- http_app.use((req, res) => res.redirect(301, 'https://' + req.hostname + req.originalUrl));
- http_server.listen(http_port, '0.0.0.0', () => { console.log('listening HTTP on *:' + http_port); });
-} else {
- server = require('http').createServer(app);
- server.listen(http_port, '0.0.0.0', () => { console.log('listening HTTP on *:' + http_port); });
+ let https_io = socket_io(https_server);
+ https_server.listen(https_port, '0.0.0.0', () => console.log('listening HTTPS on *:' + https_port));
+ io = {
+ use: function (fn) { http_io.use(fn); https_io.use(fn); },
+ on: function (ev,fn) { http_io.on(ev,fn); https_io.on(ev,fn); },
+ };
}
-let io = require('socket.io')(server);
-
let mailer = null;
if (process.env.MAIL_HOST && process.env.MAIL_PORT) {
mailer = require('nodemailer').createTransport({
@@ -62,12 +64,7 @@ if (process.env.MAIL_HOST && process.env.MAIL_PORT) {
console.log("Mail notifications disabled.");
}
-const morgan = require('morgan');
-const rfs = require('rotating-file-stream');
-const log_file = rfs.createStream('access.log', { interval: '1d', path: 'log' });
-app.use(morgan('combined', {stream: log_file}));
-
-app.disable('etag');
+app.disable('x-powered-by');
app.set('view engine', 'ejs');
app.use(body_parser.urlencoded({extended:false}));
app.use(express_session({
@@ -89,14 +86,7 @@ io.use(passport_socket.authorize({
store: session_store,
}));
-const is_immutable = /\.(svg|png|jpg|jpeg|woff2)$/;
-
-function setHeaders(res, path) {
- if (is_immutable.test(path))
- res.set("Cache-Control", "public, max-age=86400, immutable");
-}
-
-app.use(express.static('public', { setHeaders: setHeaders }));
+app.use(express.static('public'));
function LOG(req, ...msg) {
let name;
@@ -249,7 +239,6 @@ function local_signup(req, name, password, done) {
return done(null, false, req.flash('message', "Password is too short!"));
if (password.length > 100)
return done(null, false, req.flash('message', "Password is too long!"));
- // TODO: actual verification if process.env.VERIFY_EMAIL
if (!is_email(mail))
return done(null, false, req.flash('message', "Invalid mail address!"));
let row = sql_signup_check.get(name, mail);