Files
kno-logic-api/index.js

70 lines
2.1 KiB
JavaScript

require('log-timestamp');
const express = require('express');
const app = express();
const PORT = 4000;
const cors = require('cors');
const mongoose = require('mongoose');
const utils = require ('./utils/utils');
const CronJob = require('cron').CronJob;
const config = require('./config.js');
const adminRoutes = require('./routes/admin.route');
const userRoutes = require('./routes/user.route');
const postRoutes = require('./routes/post.route');
const categoryRoutes = require('./routes/category.route');
const mongoSanitize = require('express-mongo-sanitize');
const fs = require("fs");
const { Http2ServerRequest } = require('http2');
const https = require('https');
console.log("Starting Kno-Logic Backend Server");
// Handle MongoDB connection
mongoose.Promise = global.Promise;
mongoose.connect(config.db.connection, { useNewUrlParser: true, useUnifiedTopology: true }).then(
() => {
console.log('Connected to dabase');
utils.mail.loadDefaultTemplates();
utils.cron.purgeSessions();
},
err => {
console.error('Could not connect to database: ');
console.error(err);
}
);
// Express server
app.use(cors());
app.use(express.urlencoded({ extended: true }))
app.use(express.json());
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*"); // update to match the domain you will make the request from
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
// Sanitize data to prevent NoSQL injections
app.use(mongoSanitize());
// Express routes
app.use('/admin', adminRoutes);
app.use('/user', userRoutes);
app.use('/post', postRoutes);
app.use('/category', categoryRoutes);
app.listen(config.http.port, () => {
console.log('Express server running on port:', PORT);
});
if (config.ssl.use) {
const options = {
key: fs.readFileSync(config.ssl.key),
cert: fs.readFileSync(config.ssl.cert)
}
https.createServer(options, app).listen(config.ssl.port);
}
// Cron jobs
var purge = new CronJob('*/5 * * * *', utils.cron.purgeSessions);
purge.start();