64 lines
1.7 KiB
JavaScript
Executable File
64 lines
1.7 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
'use strict'
|
|
const p42apiConfig = require("./p42api.json");
|
|
const http = require('http');
|
|
const express = require("express");
|
|
const bodyParser = require('body-parser');
|
|
const session = require('express-session')
|
|
const MySQLStore = require('express-mysql-session')(session);
|
|
|
|
const corsResolver = require('./corsMiddleware')
|
|
const P42ApiEndpoints = require('./p42ApiEndpoints')
|
|
|
|
const mysqlCreds = {
|
|
// host: '127.0.0.1',
|
|
// port: 3306,
|
|
socketPath: '/var/run/mysqld/mysqld.sock',
|
|
user: 'p42',
|
|
password: 'C3h=V9!r>Mvc>skxPf9?W2P3duJTk',
|
|
database: 'p42'
|
|
}
|
|
|
|
const sessionStore = new MySQLStore({ ...mysqlCreds,
|
|
createDatabaseTable: false,
|
|
clearExpired: true,
|
|
schema: {
|
|
tableName: 'p42_sessions',
|
|
columnNames: {
|
|
session_id: 'session_id',
|
|
expires: 'expires',
|
|
data: 'data'
|
|
}
|
|
}
|
|
});
|
|
|
|
|
|
const app = express();
|
|
app.set('trust proxy', 1) // trust first proxy (nginx), so we serve http to nginx, but we still behave as if we're in https
|
|
app.use(bodyParser.urlencoded({ extended: false }));
|
|
app.use(bodyParser.json())
|
|
app.use(corsResolver);
|
|
|
|
app.use(session({
|
|
name: 'p42.api.sid',
|
|
secret: 'qNhy555Y9vyxj?!3yaYA=aKfgk+Wy5eymNtP*?4i',
|
|
store: sessionStore,
|
|
resave: false,
|
|
saveUninitialized: false,
|
|
cookie: {
|
|
maxAge: 1000 * 60 * 60 * 4,
|
|
secure: true, //See trust proxy above
|
|
sameSite: 'lax',
|
|
},
|
|
}
|
|
))
|
|
|
|
let eps = new P42ApiEndpoints(app)
|
|
eps.connectDB(mysqlCreds)
|
|
|
|
const server = http.createServer(app)
|
|
.listen(p42apiConfig.listenPort, p42apiConfig.listenHost, function (req, res) {
|
|
console.log("p42api now listening on %j:%j ", p42apiConfig.listenHost, p42apiConfig.listenPort);
|
|
});
|
|
|