Browse Source

fix: 🐛 add default keyword blacklist

Hongcai Deng 4 years ago
parent
commit
a9ba767457
4 changed files with 44 additions and 4 deletions
  1. 2 1
      config-default.json
  2. 21 0
      modules/config.js
  3. 20 2
      modules/io.js
  4. 1 1
      modules/mailin.js

+ 2 - 1
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"]
 }

+ 21 - 0
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;

+ 20 - 2
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);

+ 1 - 1
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);