diff --git a/config-default.json b/config-default.json index 5ab5738..715c70c 100644 --- a/config-default.json +++ b/config-default.json @@ -4,5 +4,6 @@ "port": 25, "disableWebhook": true }, - "host": "disposable.dhc-app.com" + "host": "disposable.dhc-app.com", + "keywordBlackList": ["admin", "postmaster", "system", "webmaster", "administrator", "hostmaster", "service", "server", "root"] } \ No newline at end of file diff --git a/modules/config.js b/modules/config.js new file mode 100644 index 0000000..9ba97ca --- /dev/null +++ b/modules/config.js @@ -0,0 +1,21 @@ +/** + * Created by Hongcai Deng on 2015/12/28. + */ + +'use strict'; + +const path = require('path'); +const fs = require('fs'); + +const defaultConfigJsonPath = path.join(__dirname, '..', 'config-default.json') +const defaultConfigPath = path.join(__dirname, '..', 'config-default.js') + +let config = {}; + +if (fs.existsSync(defaultConfigJsonPath)) { + config = require(defaultConfigJsonPath); +} else { + config = require(defaultConfigPath); +} + +module.exports = config; \ No newline at end of file diff --git a/modules/io.js b/modules/io.js index 19078a8..2342404 100644 --- a/modules/io.js +++ b/modules/io.js @@ -4,11 +4,25 @@ 'use strict'; -let shortid = require('shortid'); -let mailin = require('./mailin'); +const shortid = require('shortid'); +const mailin = require('./mailin'); +const config = require('./config'); let onlines = new Map(); +function checkShortIdMatchBlackList(id) { + const keywordBlackList = config.keywordBlackList; + if (keywordBlackList && keywordBlackList.length > 0) { + for (let i = 0; i < keywordBlackList.length; i++) { + const keyword = keywordBlackList[i]; + if (id.includes(keyword)) { + return true; + } + } + } + return false; +} + module.exports = function(io) { mailin.on('message', function(connection, data) { let to = data.headers.to.toLowerCase(); @@ -31,6 +45,10 @@ module.exports = function(io) { }); socket.on('set shortid', function(id) { + if (checkShortIdMatchBlackList(id)) { + // skip set shortid if match keyword blacklist + return; + } onlines.delete(socket.shortid); socket.shortid = id; onlines.set(socket.shortid, socket); diff --git a/modules/mailin.js b/modules/mailin.js index 5b2fdf5..6802711 100644 --- a/modules/mailin.js +++ b/modules/mailin.js @@ -6,7 +6,7 @@ let path = require('path'); let mailin = require('mailin'); -let config = require(path.join(__dirname, '..', 'config-default.json')); +let config = require('./config'); mailin.start(config.mailin);