diff --git a/config/env/comm-variable.js b/config/env/comm-variable.js index 259809bf..b6d3e772 100644 --- a/config/env/comm-variable.js +++ b/config/env/comm-variable.js @@ -52,6 +52,7 @@ module.exports = { from: process.env.MAILER_FROM || 'admin@mean.im', options: { service: process.env.MAILER_SERVICE_PROVIDER || 'Gmail', + imap: process.env.MAILER_IMAP || 'imap.gmail.com', auth: { user: process.env.MAILER_EMAIL_ID || 'sample@gmail.com', pass: process.env.MAILER_PASSWORD || 'password' diff --git a/config/lib/cron-job.js b/config/lib/cron-job.js index 424df404..db83e212 100644 --- a/config/lib/cron-job.js +++ b/config/lib/cron-job.js @@ -12,9 +12,11 @@ var path = require('path'), Complete = mongoose.model('Complete'), backup = require('mongodb-backup'); +var commonEnvConfig = require(path.resolve('./config/env/comm-variable')); var appConfig = config.meanTorrentConfig.app; var backupConfig = config.meanTorrentConfig.backup; var announceConfig = config.meanTorrentConfig.announce; +var inbox = require('inbox'); const PEERSTATE_SEEDER = 'seeder'; const PEERSTATE_LEECHER = 'leecher'; @@ -62,6 +64,7 @@ module.exports = function (app) { cronJobs.push(removeGhostPeers()); cronJobs.push(countUsersHnrWarning()); + // cronJobs.push(listenServiceEmail()); return cronJobs; }; @@ -77,9 +80,6 @@ function cronJobHnR() { onTick: function () { console.log(chalk.green('cronJob: process!')); }, - onComplete: function () { - console.log(chalk.green('cronJob: complete!')); - }, start: false, timeZone: appConfig.cronTimeZone }); @@ -108,9 +108,6 @@ function cronJobBackupMongoDB() { tar: appConfig.name + '-backup-mongodb-' + moment().format('YYYYMMDD-HHmmss') + '.tar' }); }, - onComplete: function () { - console.log(chalk.green('cronJobBackupMongoDB: complete!')); - }, start: false, timeZone: appConfig.cronTimeZone }); @@ -167,9 +164,6 @@ function removeGhostPeers() { } }); }, - onComplete: function () { - console.log(chalk.green('removeGhostPeers: complete!')); - }, start: false, timeZone: appConfig.cronTimeZone }); @@ -204,9 +198,6 @@ function countUsersHnrWarning() { } }); }, - onComplete: function () { - console.log(chalk.green('countHnrWarning: complete!')); - }, start: false, timeZone: appConfig.cronTimeZone }); @@ -215,3 +206,77 @@ function countUsersHnrWarning() { return cronJob; } + +/** + * listenServiceEmail + */ +function listenServiceEmail() { + var listenServiceEmailJob = new CronJob({ + //cronTime: '00 00 1 * * *', + cronTime: '*/10 * * * * *', + //cronTime: '00 00 * * * *', + onTick: function () { + // console.log(chalk.green('listenServiceEmail: process!')); + // console.log(chalk.green(listenServiceEmailJob.running)); + + if (!listenServiceEmailJob.listeningServiceEmail) { + var client = inbox.createConnection(false, commonEnvConfig.variable.mailer.options.imap, { + secureConnection: true, + auth: { + user: 'service.mine.pt@gmail.com', //commonEnvConfig.variable.mailer.options.auth.user, + pass: 'minept740729' //commonEnvConfig.variable.mailer.options.auth.pass + } + }); + + /** + * on connect + */ + client.on('connect', function () { + console.log(chalk.green('CONNECT to ' + commonEnvConfig.variable.mailer.options.auth.user + ' successfully!')); + listenServiceEmailJob.listeningServiceEmail = true; + client.openMailbox('INBOX', function (error, info) { + if (error) throw error; + + client.listMessages(-20, function (err, messages) { + messages.forEach(function (message) { + if (message.flags.indexOf('\\Seen') < 0) { + addNewMessageToTicket(client, message); + } + }); + }); + }); + }); + + /** + * on close + */ + client.on('close', function () { + listenServiceEmailJob.listeningServiceEmail = false; + console.log('DISCONNECTED from ' + commonEnvConfig.variable.mailer.options.auth.user); + }); + + /** + * on new + */ + client.on('new', function (message) { + addNewMessageToTicket(client, message); + }); + + client.connect(); + } + }, + start: false, + timeZone: appConfig.cronTimeZone + }); + + listenServiceEmailJob.listeningServiceEmail = false; + listenServiceEmailJob.start(); + + return listenServiceEmailJob; + + function addNewMessageToTicket(client, message) { + console.log(message); + var messageStream = client.createMessageStream(message.UID); + messageStream.pipe(process.stdout, {end: false}); + } +} diff --git a/config/lib/express.js b/config/lib/express.js index b9f08008..f7ef190e 100644 --- a/config/lib/express.js +++ b/config/lib/express.js @@ -20,6 +20,7 @@ var config = require('../config'), path = require('path'), _ = require('lodash'), lusca = require('lusca'), + cloudflare = require('cloudflare-express'), ircConfig = config.meanTorrentConfig.ircAnnounce; /** @@ -52,6 +53,14 @@ module.exports.initLocalVariables = function (app) { }); }; +/** + * Initialize application cloudflare middleware + * @param app + */ +module.exports.initCloudflare = function (app) { + app.use(cloudflare.restore({update_on_start: true})); +}; + /** * Initialize application middleware */ @@ -243,6 +252,9 @@ module.exports.init = function (db) { // Initialize express app var app = express(); + //Initialize cloudflare middleware + this.initCloudflare(app); + // Initialize local variables this.initLocalVariables(app); diff --git a/modules/announce/server/controllers/announces.server.controller.js b/modules/announce/server/controllers/announces.server.controller.js index f9c768d3..46ec20eb 100644 --- a/modules/announce/server/controllers/announces.server.controller.js +++ b/modules/announce/server/controllers/announces.server.controller.js @@ -584,7 +584,7 @@ exports.announce = function (req, res) { uploaderSalesValue: globalSalesConfig.uploader.value, agent: req.get('User-Agent'), - ip: req.headers['x-forwarded-for'] || req.connection.remoteAddress, + ip: req.cf_ip, port: query.port }); @@ -770,7 +770,7 @@ exports.announce = function (req, res) { var finished = new Finished(); finished.user = req.passkeyuser; finished.torrent = req.torrent; - finished.user_ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress; + finished.user_ip = req.cf_ip; finished.user_agent = req.get('User-Agent'); finished.user_port = query.port; finished.save(); @@ -779,7 +779,7 @@ exports.announce = function (req, res) { user: req.passkeyuser._id, torrent: req.torrent._id, agent: req.get('User-Agent'), - ip: req.headers['x-forwarded-for'] || req.connection.remoteAddress, + ip: req.cf_ip, port: query.port }); @@ -937,7 +937,7 @@ exports.announce = function (req, res) { peer.user = req.passkeyuser; peer.torrent = req.torrent; peer.peer_id = query.peer_id; - peer.peer_ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress; + peer.peer_ip = req.cf_ip; peer.peer_port = query.port; peer.peer_left = query.left; peer.peer_status = req.seeder ? PEERSTATE_SEEDER : PEERSTATE_LEECHER; diff --git a/modules/core/server/controllers/core.server.controller.js b/modules/core/server/controllers/core.server.controller.js index 18fa7eb4..dc796b9d 100644 --- a/modules/core/server/controllers/core.server.controller.js +++ b/modules/core/server/controllers/core.server.controller.js @@ -10,8 +10,7 @@ var path = require('path'), exports.renderIndex = function (req, res) { var safeUserObject = req.user || null; if (req.user) { - var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress; - req.user.addSignedIp(ip); + req.user.addSignedIp(req.cf_ip); } var cfg = getSafeMeanTorrentConfig(config.meanTorrentConfig); diff --git a/modules/users/server/controllers/users/users.authentication.server.controller.js b/modules/users/server/controllers/users/users.authentication.server.controller.js index bdbfdfc9..24b328b4 100644 --- a/modules/users/server/controllers/users/users.authentication.server.controller.js +++ b/modules/users/server/controllers/users/users.authentication.server.controller.js @@ -107,7 +107,7 @@ exports.signup = function (req, res) { traceLogCreate(req, traceConfig.action.userSignUp, { user: user._id, inviteToken: req.body.inviteToken || null, - ip: req.headers['x-forwarded-for'] || req.connection.remoteAddress + ip: req.cf_ip }); } }); diff --git a/package.json b/package.json index d36297e6..d4b90e2d 100644 --- a/package.json +++ b/package.json @@ -46,6 +46,7 @@ "body-parser": "^1.18.2", "bower": "^1.8.2", "chalk": "~2.1.0", + "cloudflare-express": "^1.0.1", "compression": "~1.7.0", "connect-flash": "~0.1.1", "connect-mongo": "~2.0.0",