revere.dev/safelock/dashboard/server.js

96 lines
3.1 KiB
JavaScript

/* eslint-disable no-useless-escape */
const express = require('express')
require("dotenv").config();
const app = express()
const mongoose = require('mongoose')
const helmet = require('helmet')
const path = require('path')
const cors = require('cors')
const cookieParser = require('cookie-parser')
// Constants
const { PORT, MONGODB_URI } = require('./src/config/config')
const { consoleLog } = require('./src/utils/consoleLog')
const { firstStartup } = require('./src/utils/firstStartup')
const { cronHandler } = require('./src/utils/cronHandler')
const { isDeveloper } = require("./src/utils/dateHandler");
// Express Bodyparser
app.use(express.urlencoded({ extended: true, limit: '50mb' }))
app.use(express.json({ limit: '50mb' }))
// Helmet setup
app.use(
helmet({
contentSecurityPolicy: false,
})
)
// CookieParser
app.use(cookieParser())
// Cross-Origin Resource Sharing
const corsOptionsProd = {
origin: process.env.BASE_URL,
credentials: true,
optionsSuccessStatus: 200, // some legacy browsers (IE11, various SmartTVs) choke on 204
}
app.use(cors(corsOptionsProd))
// Trust proxy
app.set('trust proxy', 1)
// API / Routes;
app.use('/api/users', require('./src/routes/userRouter'))
app.use('/api/client', require('./src/routes/apiRouter'))
app.use('/api/dev', require('./src/routes/devRouter'))
app.use('/', require('./src/routes/publicRouter'));
// React build
if (!process.env.NODE_ENV || process.env.NODE_ENV === 'production') {
app.use(express.static(path.join(__dirname, 'src/client/build')))
app.get('*', (req, res) => {
res.sendFile(path.join(__dirname, 'src/client/build', 'index.html'))
})
}
// Remove warning
process.removeAllListeners('warning');
consoleLog().then(async () => {
console.log(`\u001B[35m ! \u001B[0mDetected Node.js version \u001B[35m${process.version}\u001B.\n`)
console.log('\u001B[35m ? \u001B[0mConnecting to MongoDB...')
try {
await mongoose.connect(MONGODB_URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
})
console.log('\u001B[35m ! \u001B[0mSuccessfully connected to MongoDB\n')
} catch (error) {
console.log(
'\u001B[35m # \u001B[0mError while connection to database... This IS NOT Safelock related error. Make sure you are using valid connection string and your MongoDB service is running. If you are using MongoDB Atlas make sure you have allowed your IP from network settings.\n'
)
return console.log(error)
}
await firstStartup()
// Register cron tasks
cronHandler()
// Listen for configured port
try {
app.listen(PORT, () => {
console.log(`\u001B[35m ? \u001B[0mServer listening port ${PORT}`)
console.log('\u001B[35m ? \u001B[0mSafelock is ready to use!\n')
})
} catch (error) {
console.log(
`\u001B[35m # \u001B[0mTried to listen port \u001B[35m${PORT}\u001B[0m, but something else is already listening it? Other website probably? This IS NOT Safelock related issue. You can change Safelock port or shut down the application listening port ${PORT}.\n`
)
return console.log(error)
}
})