Implement checkVersion middleware
Checks version on each request, terminating the application if version mdoes not matchmaster
parent
35aa0914a2
commit
21650994d2
|
@ -8,6 +8,7 @@ import session from "express-session";
|
||||||
import pg from "pg";
|
import pg from "pg";
|
||||||
import pgSessionStore from "connect-pg-simple";
|
import pgSessionStore from "connect-pg-simple";
|
||||||
import fetch, { Response as FetchResponse } from "node-fetch";
|
import fetch, { Response as FetchResponse } from "node-fetch";
|
||||||
|
import { log, LogLevel } from "./logging"
|
||||||
import cron from "./cron";
|
import cron from "./cron";
|
||||||
import db from "./db";
|
import db from "./db";
|
||||||
import errorHandler from "./errors";
|
import errorHandler from "./errors";
|
||||||
|
@ -26,6 +27,7 @@ async function validateApiToken(session: Express.Session) {
|
||||||
}
|
}
|
||||||
|
|
||||||
const app = express();
|
const app = express();
|
||||||
|
app.use(version.checkVersionMiddleware);
|
||||||
app.use(express.static('public'));
|
app.use(express.static('public'));
|
||||||
app.use(express.urlencoded({extended: false}));
|
app.use(express.urlencoded({extended: false}));
|
||||||
app.use(session({
|
app.use(session({
|
||||||
|
@ -340,4 +342,8 @@ version.checkVersion().then(_ => app.listen(config.port, () => {
|
||||||
cron.run();
|
cron.run();
|
||||||
setInterval(cron.run,config.cronInterval);
|
setInterval(cron.run,config.cronInterval);
|
||||||
console.log(`Listening on port ${config.port}`);
|
console.log(`Listening on port ${config.port}`);
|
||||||
}));
|
}))
|
||||||
|
.catch((e) => {
|
||||||
|
log(LogLevel.ERROR,e)
|
||||||
|
process.exit(1);
|
||||||
|
});
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
import * as queries from "./queries";
|
import * as queries from "./queries";
|
||||||
|
import { log, LogLevel } from "./logging"
|
||||||
|
import express from "express";
|
||||||
import pg from "pg";
|
import pg from "pg";
|
||||||
import db from "./db";
|
import db from "./db";
|
||||||
|
|
||||||
|
@ -10,6 +12,19 @@ export function getVersion() {
|
||||||
return `${versionMajor}.${versionMinor}.${versionPatch}`
|
return `${versionMajor}.${versionMinor}.${versionPatch}`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function checkVersionMiddleware(_req: express.Request, _res: express.Response, next: express.NextFunction) {
|
||||||
|
try {
|
||||||
|
await checkVersion();
|
||||||
|
} catch (e) {
|
||||||
|
log(LogLevel.ERROR,e)
|
||||||
|
// Terminate the nodejs process with error. If restarted, the app will
|
||||||
|
// never start listening for new requests so this will not result in a
|
||||||
|
// restart loop.
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
next();
|
||||||
|
}
|
||||||
|
|
||||||
export async function checkVersion() {
|
export async function checkVersion() {
|
||||||
var dbver = await db.query(queries.getDbVersion).then((result: pg.QueryResult) => result.rows[0]['get_version']);
|
var dbver = await db.query(queries.getDbVersion).then((result: pg.QueryResult) => result.rows[0]['get_version']);
|
||||||
if (dbver != `${versionMajor}.${versionMinor}`) {
|
if (dbver != `${versionMajor}.${versionMinor}`) {
|
||||||
|
|
Loading…
Reference in New Issue