Files
P42_API/p42api.js
T
STEINNI 6fb75a0888 1st
2025-08-30 23:26:12 +00:00

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);
});