From 663703ab564c54a75ed54ebf1eec48eb94473c87 Mon Sep 17 00:00:00 2001 From: Matias Alejo Garcia Date: Sun, 5 Jul 2015 10:53:00 -0300 Subject: [PATCH] rm unused plugins --- README.md | 3 - config/config.js | 15 ---- config/routes.js | 12 --- plugins/cleaner.js | 25 ------ plugins/config-cleaner.js | 5 -- plugins/config-mailbox.js | 3 - plugins/credentialstore.js | 160 ------------------------------------- plugins/mailbox.js | 65 --------------- 8 files changed, 288 deletions(-) delete mode 100644 plugins/cleaner.js delete mode 100644 plugins/config-cleaner.js delete mode 100644 plugins/config-mailbox.js delete mode 100644 plugins/credentialstore.js delete mode 100644 plugins/mailbox.js diff --git a/README.md b/README.md index 8bcae33..ea04cac 100644 --- a/README.md +++ b/README.md @@ -79,9 +79,6 @@ INSIGHT_PORT # insight api port INSIGHT_DB # Path where to store insight's internal DB. (defaults to $HOME/.insight) INSIGHT_SAFE_CONFIRMATIONS=6 # Nr. of confirmation needed to start caching transaction information INSIGHT_IGNORE_CACHE # True to ignore cache of spents in transaction, with more than INSIGHT_SAFE_CONFIRMATIONS confirmations. This is useful for tracking double spents for old transactions. -ENABLE_MAILBOX # if "true" will enable mailbox plugin -ENABLE_CLEANER # if "true" will enable message db cleaner plugin -ENABLE_MONITOR # if "true" will enable message db monitor plugin ENABLE_CURRENCYRATES # if "true" will enable a plugin to obtain historic conversion rates for various currencies ENABLE_RATELIMITER # if "true" will enable the ratelimiter plugin LOGGER_LEVEL # defaults to 'info', can be 'debug','verbose','error', etc. diff --git a/config/config.js b/config/config.js index 3294245..b15e040 100644 --- a/config/config.js +++ b/config/config.js @@ -80,13 +80,8 @@ var bitcoindConf = { disableAgent: true }; -var enableMonitor = process.env.ENABLE_MONITOR === 'true'; -var enableCleaner = process.env.ENABLE_CLEANER === 'true'; -var enableMailbox = process.env.ENABLE_MAILBOX === 'true'; var enableRatelimiter = process.env.ENABLE_RATELIMITER === 'true'; -var enableCredentialstore = process.env.ENABLE_CREDSTORE === 'true'; var enableEmailstore = process.env.ENABLE_EMAILSTORE === 'true'; -var enablePublicInfo = process.env.ENABLE_PUBLICINFO === 'true'; var loggerLevel = process.env.LOGGER_LEVEL || 'info'; var enableHTTPS = process.env.ENABLE_HTTPS === 'true'; var enableCurrencyRates = process.env.ENABLE_CURRENCYRATES === 'true'; @@ -96,22 +91,12 @@ if (!fs.existsSync(db)) { } module.exports = { - enableMonitor: enableMonitor, - monitor: require('../plugins/config-monitor.js'), - enableCleaner: enableCleaner, - cleaner: require('../plugins/config-cleaner.js'), - enableMailbox: enableMailbox, - mailbox: require('../plugins/config-mailbox.js'), enableRatelimiter: enableRatelimiter, ratelimiter: require('../plugins/config-ratelimiter.js'), - enableCredentialstore: enableCredentialstore, - credentialstore: require('../plugins/config-credentialstore'), enableEmailstore: enableEmailstore, emailstore: require('../plugins/config-emailstore'), enableCurrencyRates: enableCurrencyRates, currencyrates: require('../plugins/config-currencyrates'), - enablePublicInfo: enablePublicInfo, - publicInfo: require('../plugins/publicInfo/config'), loggerLevel: loggerLevel, enableHTTPS: enableHTTPS, version: version, diff --git a/config/routes.js b/config/routes.js index 96de41d..d4ba952 100644 --- a/config/routes.js +++ b/config/routes.js @@ -60,20 +60,8 @@ module.exports = function(app) { // Email store plugin if (config.enableEmailstore) { var emailPlugin = require('../plugins/emailstore'); - app.post(apiPrefix + '/email/save', emailPlugin.save); app.get(apiPrefix + '/email/retrieve', emailPlugin.retrieve); - app.post(apiPrefix + '/email/change_passphrase', emailPlugin.changePassphrase); - - app.post(apiPrefix + '/email/validate', emailPlugin.validate); - app.get(apiPrefix + '/email/validate', emailPlugin.validate); - - app.post(apiPrefix + '/email/register', emailPlugin.oldSave); app.get(apiPrefix + '/email/retrieve/:email', emailPlugin.oldRetrieve); - - app.post(apiPrefix + '/email/delete/profile', emailPlugin.eraseProfile); - app.get(apiPrefix + '/email/delete/item', emailPlugin.erase); - - app.get(apiPrefix + '/email/resend_email', emailPlugin.resendEmail); } // Currency rates plugin diff --git a/plugins/cleaner.js b/plugins/cleaner.js deleted file mode 100644 index 84b5b1f..0000000 --- a/plugins/cleaner.js +++ /dev/null @@ -1,25 +0,0 @@ -var mdb = require('../lib/MessageDb').default(); -var logger = require('../lib/logger').logger; -var preconditions = require('preconditions').singleton(); -var microtime = require('microtime'); -var cron = require('cron'); -var CronJob = cron.CronJob; -var Threshold = (process.env.CLEANER_THRESHOLD_DAYS || 30) *24*60*60; // in seconds - -module.exports.init = function(config) { - var cronTime = config.cronTime || '0 * * * *'; - logger.info('Using cleaner plugin with cronTime ' + cronTime + ' and threshold of ' + Threshold + ' seconds'); - var onTick = function() { - var limit = microtime.now() - 1000 * 1000 * Threshold; - mdb.removeUpTo(limit, function(err, n) { - if (err) logger.error(err); - else logger.info('Ran cleaner task, removed ' + n); - }); - }; - var job = new CronJob({ - cronTime: cronTime, - onTick: onTick - }); - onTick(); - job.start(); -}; diff --git a/plugins/config-cleaner.js b/plugins/config-cleaner.js deleted file mode 100644 index 1f3e140..0000000 --- a/plugins/config-cleaner.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - - cronTime: '0 * * * *', // run each hour - -}; diff --git a/plugins/config-mailbox.js b/plugins/config-mailbox.js deleted file mode 100644 index f4d6253..0000000 --- a/plugins/config-mailbox.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - -}; diff --git a/plugins/credentialstore.js b/plugins/credentialstore.js deleted file mode 100644 index 5deff52..0000000 --- a/plugins/credentialstore.js +++ /dev/null @@ -1,160 +0,0 @@ -/** - * Credentials storage service - * - * Allows users to store encrypted data on the server, useful to store the user's credentials. - * - * Steps for the user would be: - * - * 1. Choose an username - * 2. Choose a password - * 3. Create a strong key for encryption using PBKDF2 or scrypt with the username and password - * 4. Use that key to AES-CRT encrypt the private key - * 5. Take the double SHA256 hash of "salt"+"username"+"password" and use that as a secret - * 6. Send a POST request to resource /credentials with the params: - * username=johndoe - * secret=2413fb3709b05939f04cf2e92f7d0897fc2596f9ad0b8a9ea855c7bfebaae892 - * record=YjU1MTI2YTM5ZjliMTE3MGEzMmU2ZjYxZTRhNjk0YzQ1MjM1ZTVhYzExYzA1ZWNkNmZm - * NjM5NWRlNmExMTE4NzIzYzYyYWMwODU1MTdkNWMyNjRiZTVmNmJjYTMxMGQyYmFiNjc4YzdiODV - * lZjg5YWIxYzQ4YjJmY2VkYWJjMDQ2NDYzODhkODFiYTU1NjZmMzgwYzhiODdiMzlmYjQ5ZTc1Nz - * FjYzQzYjk1YTEyYWU1OGMxYmQ3OGFhOTZmNGMz - * - * To retrieve data: - * - * 1. Recover the secret from the double sha256 of the salt, username, and password - * 2. Send a GET request to resource /credentials/username?secret=...... - * 3. Decrypt the data received - */ -(function() { - -'use strict'; - -var logger = require('../lib/logger').logger, - levelup = require('levelup'), - querystring = require('querystring'); - -var storePlugin = {}; - -/** - * Constant enum with the errors that the application may return - */ -var errors = { - MISSING_PARAMETER: { - code: 400, - message: 'Missing required parameter' - }, - INVALID_REQUEST: { - code: 400, - message: 'Invalid request parameter' - }, - NOT_FOUND: { - code: 404, - message: 'Credentials were not found' - } -}; - -var NAMESPACE = 'credentials-store-'; -var MAX_ALLOWED_STORAGE = 1024 /* no more than 1 kb */; - -/** - * Initializes the plugin - * - * @param {Express} expressApp - * @param {Object} config - */ -storePlugin.init = function(expressApp, config) { - var globalConfig = require('../config/config'); - logger.info('Using credentialstore plugin'); - - var path = globalConfig.leveldb + '/credentialstore' + (globalConfig.name ? ('-' + globalConfig.name) : ''); - storePlugin.db = config.db || globalConfig.db || levelup(path); - - expressApp.post(globalConfig.apiPrefix + '/credentials', storePlugin.post); - expressApp.get(globalConfig.apiPrefix + '/credentials/:username', storePlugin.get); -}; - -/** - * Helper function that ends a requests showing the user an error. The response body will be a JSON - * encoded object with only one property with key "error" and value error.message, one of - * the parameters of the function - * - * @param {Object} error - The error that caused the request to be terminated - * @param {number} error.code - the HTTP code to return - * @param {string} error.message - the message to send in the body - * @param {Express.Response} response - the express.js response. the methods status, json, and end - * will be called, terminating the request. - */ -var returnError = function(error, response) { - response.status(error.code).json({error: error.message}).end(); -}; - -/** - * Store a record in the database. The underlying database is merely a levelup instance (a key - * value store) that uses the username concatenated with the secret as a key to store the record. - * The request is expected to contain the parameters: - * * username - * * secret - * * record - * - * @param {Express.Request} request - * @param {Express.Response} response - */ -storePlugin.post = function(request, response) { - - var queryData = ''; - - request.on('data', function(data) { - queryData += data; - if (queryData.length > MAX_ALLOWED_STORAGE) { - queryData = ''; - response.writeHead(413, {'Content-Type': 'text/plain'}).end(); - request.connection.destroy(); - } - }).on('end', function() { - var params = querystring.parse(queryData); - var username = params.username; - var secret = params.secret; - var record = params.record; - if (!username || !secret || !record) { - return returnError(errors.MISSING_PARAMETER, response); - } - - storePlugin.db.put(NAMESPACE + username + secret, record, function (err) { - if (err) { - return returnError({code: 500, message: err}, response); - } - response.json({success: true}).end(); - }); - }); -}; - -/** - * Retrieve a record from the database. - * - * The request is expected to contain the parameters: - * * username - * * secret - * - * @param {Express.Request} request - * @param {Express.Response} response - */ -storePlugin.get = function(request, response) { - var username = request.param('username'); - var secret = request.param('secret'); - if (!username || !secret) { - return returnError(errors.MISSING_PARAMETER, response); - } - - storePlugin.db.get(NAMESPACE + username + secret, function (err, value) { - if (err) { - if (err.notFound) { - return returnError(errors.NOT_FOUND, response); - } - return returnError({code: 500, message: err}, response); - } - response.send(value).end(); - }); -}; - -module.exports = storePlugin; - -})(); diff --git a/plugins/mailbox.js b/plugins/mailbox.js deleted file mode 100644 index 8619252..0000000 --- a/plugins/mailbox.js +++ /dev/null @@ -1,65 +0,0 @@ -var microtime = require('microtime'); -var mdb = require('../lib/MessageDb').default(); -var logger = require('../lib/logger').logger; -var preconditions = require('preconditions').singleton(); - -var io; -module.exports.init = function(ext_io, config) { - logger.info('Using mailbox plugin'); - preconditions.checkArgument(ext_io); - io = ext_io; - io.sockets.on('connection', function(socket) { - // when it requests sync, send him all pending messages - socket.on('sync', function(ts) { - logger.verbose('Sync requested by ' + socket.id); - logger.debug(' from timestamp ' + ts); - var rooms = socket.rooms; - if (rooms.length !== 2) { - socket.emit('insight-error', 'Must subscribe with public key before syncing'); - return; - } - var to = rooms[1]; - var upper_ts = Math.round(microtime.now()); - logger.debug(' to timestamp ' + upper_ts); - mdb.getMessages(to, ts, upper_ts, function(err, messages) { - // TODO: return error to the user - if (err) { - logger.debug('Couldn\'t get messages on sync request: ' + err); - } - logger.verbose('\tFound ' + messages.length + ' message' + (messages.length !== 1 ? 's' : '')); - - if (messages.length) { - for (var i = 0; i < messages.length; i++) { - broadcastMessage(messages[i], socket); - } - } else { - socket.emit('no messages'); - } - }); - }); - - // when it sends a message, add it to db - socket.on('message', function(m) { - logger.debug('Message sent from ' + m.pubkey + ' to ' + m.to); - mdb.addMessage(m, function(err) { - // TODO: return error to the user - if (err) { - logger.debug('Couldn\'t add message to database: ' + err); - } - }); - }); - - }); - - mdb.on('message', broadcastMessage); - -}; - - - -var broadcastMessage = module.exports.broadcastMessage = function(message, socket) { - preconditions.checkState(io); - var s = socket || io.sockets.in(message.to); - logger.debug('sending message to ' + message.to); - s.emit('message', message); -}