#!/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); });