Built motion from commit f7863d46.|2.5.41
[motion2.git] / server / components / encryptor / index.js
1 // *************************************************************************
2 // *                                                                       *
3 // * xCALLY Motion -  The Omnichannel Contact Center                       *
4 // * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
5 // *                                                                       *
6 // *************************************************************************
7 // *                                                                       *
8 // * Email: info@xcally.com                                                *
9 // * Website: https://www.xcally.com                                       *
10 // *                                                                       *
11 // *************************************************************************
12 // *                                                                       *
13 // * The SOFTWARE PRODUCT is protected by copyright laws and international *
14 // * copyright treaties, as well as other intellectual property laws and   *
15 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                         *
16 // *                                                                       *
17 // *************************************************************************
18 var _0xdc4b=['join','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','filter','indexOf','hasOwnProperty','createReadStream','createWriteStream','createCipher','update','write','end','final','binary','close','decryptFile','data','unlink','encryptString','secret','utf8','base64','decryptString','createDecipher','bluebird','../../config/environment','../../config/logger','app','session','aes-256-ctr','aes192','encrypt','algorithm'];(function(_0x5ee65e,_0x409c32){var _0x6670a=function(_0x50a030){while(--_0x50a030){_0x5ee65e['push'](_0x5ee65e['shift']());}};_0x6670a(++_0x409c32);}(_0xdc4b,0x1e1));var _0xbdc4=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0xdc4b[_0x4a9fb1];return _0x348672;};'use strict';var crypto=require('crypto');var fs=require('fs');var BPromise=require(_0xbdc4('0x0'));var _=require('lodash');var config=require(_0xbdc4('0x1'));var logger=require(_0xbdc4('0x2'))(_0xbdc4('0x3'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config['secrets'][_0xbdc4('0x4')],'algorithm':_0xbdc4('0x5')};const fileOptions={'algorithm':_0xbdc4('0x6')};if(config['encrypt']&&config[_0xbdc4('0x7')][_0xbdc4('0x8')]){var isSupported=isAlgorithmSupported(config[_0xbdc4('0x7')][_0xbdc4('0x8')]);if(isSupported){fileOptions['algorithm']=config[_0xbdc4('0x7')][_0xbdc4('0x8')];}else{var supportedAlgorithms=getSupportedCiphers()[_0xbdc4('0x9')](',\x20');logger[_0xbdc4('0xa')](config[_0xbdc4('0x7')][_0xbdc4('0x8')],_0xbdc4('0xb'),supportedAlgorithms);}}function isASupportedCipher(_0x398694){return AES_SUPPORTED_RX[_0xbdc4('0xc')](_0x398694);}function getSupportedCiphers(){return crypto[_0xbdc4('0xd')]()[_0xbdc4('0xe')](isASupportedCipher);}function isAlgorithmSupported(_0x275e65){return getSupportedCiphers()[_0xbdc4('0xf')](_0x275e65)>-0x1;}function combineOptions(_0x2894c8){var _0x87fa13={};for(var _0x3b0418 in fileOptions){if(fileOptions['hasOwnProperty'](_0x3b0418)){_0x87fa13[_0x3b0418]=fileOptions[_0x3b0418];}}if(_0x2894c8){for(var _0x3597e4 in _0x2894c8){if(_0x2894c8[_0xbdc4('0x10')](_0x3597e4)){_0x87fa13[_0x3597e4]=_0x2894c8[_0x3597e4];}}}return _0x87fa13;}exports['encryptFile']=function(_0x5b9b99,_0x4ebc99,_0x3372af,_0x1f0dd1){return new BPromise(function(_0x15145c,_0xbe277f){_0x1f0dd1=combineOptions(_0x1f0dd1);var _0x5b9793=new Buffer(_0x3372af);var _0x4dcef0=fs[_0xbdc4('0x11')](_0x5b9b99);var _0x1edd35=fs[_0xbdc4('0x12')](_0x4ebc99);var _0x1e60d2=crypto[_0xbdc4('0x13')](_0x1f0dd1[_0xbdc4('0x8')],_0x5b9793);_0x4dcef0['on']('data',function(_0x5c1247){var _0xf2867=new Buffer(_0x1e60d2[_0xbdc4('0x14')](_0x5c1247),'binary');_0x1edd35[_0xbdc4('0x15')](_0xf2867);});_0x4dcef0['on'](_0xbdc4('0x16'),function(){try{var _0x2ade93=new Buffer(_0x1e60d2[_0xbdc4('0x17')](_0xbdc4('0x18')),_0xbdc4('0x18'));_0x1edd35[_0xbdc4('0x15')](_0x2ade93);_0x1edd35[_0xbdc4('0x16')]();_0x1edd35['on'](_0xbdc4('0x19'),function(){return _0x15145c(_0x4ebc99);});}catch(_0x931140){fs['unlink'](_0x4ebc99);return _0xbe277f(_0x931140);}});});};exports[_0xbdc4('0x1a')]=function(_0x18ec64,_0xd28a00,_0x266cf2,_0x4aa836){return new BPromise(function(_0x490d4a,_0x4be3ed){_0x4aa836=combineOptions(_0x4aa836);var _0x304b4d=new Buffer(_0x266cf2);var _0x48c0ef=fs['createReadStream'](_0x18ec64);var _0x123f84=fs[_0xbdc4('0x12')](_0xd28a00);var _0x1b1ff8=crypto['createDecipher'](_0x4aa836[_0xbdc4('0x8')],_0x304b4d);_0x48c0ef['on'](_0xbdc4('0x1b'),function(_0xa7fc3b){var _0x6c8ebf=new Buffer(_0x1b1ff8['update'](_0xa7fc3b),_0xbdc4('0x18'));_0x123f84[_0xbdc4('0x15')](_0x6c8ebf);});_0x48c0ef['on'](_0xbdc4('0x16'),function(){try{var _0x467398=new Buffer(_0x1b1ff8[_0xbdc4('0x17')](_0xbdc4('0x18')),'binary');_0x123f84[_0xbdc4('0x15')](_0x467398);_0x123f84[_0xbdc4('0x16')]();_0x123f84['on'](_0xbdc4('0x19'),function(){return _0x490d4a(_0xd28a00);});}catch(_0x1ba00e){fs[_0xbdc4('0x1c')](_0xd28a00);return _0x4be3ed(_0x1ba00e);}});});};exports[_0xbdc4('0x1d')]=function(_0x515cc5,_0x52310c,_0x5bf5b3){var _0x9d8ab1=_0x5bf5b3||stringOptions[_0xbdc4('0x8')];var _0x4bfffc=_0x52310c||stringOptions[_0xbdc4('0x1e')];var _0x1e9772=crypto[_0xbdc4('0x13')](_0x9d8ab1,_0x4bfffc);var _0x2ee8f3=_0x1e9772[_0xbdc4('0x14')](_0x515cc5,_0xbdc4('0x1f'),'base64');_0x2ee8f3+=_0x1e9772[_0xbdc4('0x17')](_0xbdc4('0x20'));return _0x2ee8f3;};exports[_0xbdc4('0x21')]=function(_0x4de1ea,_0x27e061,_0x25bf1f){var _0x25a610=_0x25bf1f||stringOptions['algorithm'];var _0x374b79=_0x27e061||stringOptions[_0xbdc4('0x1e')];var _0x11d56a=crypto[_0xbdc4('0x22')](_0x25a610,_0x374b79);var _0x12a991=_0x11d56a[_0xbdc4('0x14')](_0x4de1ea,_0xbdc4('0x20'),_0xbdc4('0x1f'));_0x12a991+=_0x11d56a[_0xbdc4('0x17')]('utf8');return _0x12a991;};