-
Notifications
You must be signed in to change notification settings - Fork 96
/
Copy pathahem.js
54 lines (50 loc) · 1.96 KB
/
ahem.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/**
* Created by ogeva on 7/3/2017.
*/
'use strict';
const dotenv = require('dotenv');
const logger = require('./server/app/logger');
const fs = require('fs');
const path = require('path');
const mongo = require('mongodb');
const assert = require('assert');
const http = require('http');
require('dotenv').config();
const properties = {
serverBaseUri: process.env.serverBaseUri,
mongoConnectUrl: process.env.mongoConnectUrl,
dbName: process.env.dbName || 'ahem',
appListenPort: parseInt(process.env.appListenPort) || 3000,
smtpPort: parseInt(process.env.smtpPort) || 25,
emailDeleteInterval: parseInt(process.env.emailDeleteInterval) || 3600,
emailDeleteAge: parseInt(process.env.emailDeleteAge) || 86400,
allowAutocomplete: JSON.parse(process.env.allowAutocomplete),
allowedDomains: process.env.allowedDomains.split(','),
jwtSecret: process.env.jwtSecret,
jwtExpiresIn: parseInt(process.env.jwtExpiresIn) || 3600,
maxAllowedApiCalls: parseInt(process.env.maxAllowedApiCalls) || 10000,
webHookUrl: process.env.webHookUrl
};
logger.info('connecting to db', properties.mongoConnectUrl);
mongo.MongoClient.connect(properties.mongoConnectUrl, { useNewUrlParser: true }, function (err, client) {
assert.equal(null, err);
logger.info('Connected successfully to mongodb server');
// creating indexes
const db = client.db(properties.dbName);
db.collection('mailboxes').createIndex( {'name': 1}, { unique: true } );
db.collection('tokens').createIndex( {'ip': 1}, { unique: true } );
const serverApp = require('./server/app/serverapp')(properties, db);
/**
* Create HTTP server.
*/
const server = http.createServer(serverApp);
const io = require('socket.io')(server);
const port = process.env.PORT || properties.appListenPort || '3000';
/**
* Listen on provided port, on all network interfaces.
*/
server.listen(port, function () {
logger.info('API server listening');
});
const smtp = require('./server/app/smtp')(properties, db, io);
});