const express = require('express'); const bodyParser = require('body-parser'); const expressMongoDb = require('./middleware/mongo'); const users = require('./routes/user'); const vehicles = require('./routes/vehicles'); const events = require('./routes/events'); const app = express(); const bearerToken = require('express-bearer-token'); const jwt = require('./middleware/jwt'); const https = require('https'); const fs = require('fs'); const compression = require('compression'); const dotenv = require('dotenv'); const dotenvExpand = require('dotenv-expand'); const responseTime = require('response-time'); let dotenvConf = dotenv.config(); dotenvExpand(dotenvConf); app.use(responseTime(function (req, res, time) { var stat = (req.method + req.url).toLowerCase() .replace(/[:.]/g, '') .replace(/\//g, '_'); console.log(`${stat} - ${time}`); })); app.use(compression()); app.use(bodyParser.json()); app.use(expressMongoDb(process.env.MONGO_CONNECTION_STRING)); app.use(bearerToken()); app.use(jwt({ secret: process.env.JWT_SECRET_AUTH, exclude: ['/user/signup', '/user/login', '/vehicles/shared_report'] })); app.use('/user', users); app.use('/vehicles', vehicles); app.use('/events', events); if(process.env.NODE_ENV == 'production') { const httpsServer = https.createServer({ key: fs.readFileSync(process.env.PRIVATE_KEY_PATH), cert: fs.readFileSync(process.env.CERT_PATH) }, app); httpsServer.listen(8443); } else { app.listen(3000); }