Built motion from commit f25620e4.|2.6.30
[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 _0x11af=['binary','write','end','close','unlink','decryptFile','createDecipher','update','final','encryptString','secret','createCipher','utf8','base64','decryptString','crypto','bluebird','lodash','../../config/environment','../../config/logger','app','secrets','session','aes-256-ctr','encrypt','algorithm','join','getCiphers','filter','hasOwnProperty','encryptFile','createReadStream','createWriteStream','data'];(function(_0x504eef,_0x155f27){var _0x2116f5=function(_0x816c4f){while(--_0x816c4f){_0x504eef['push'](_0x504eef['shift']());}};_0x2116f5(++_0x155f27);}(_0x11af,0xdb));var _0xf11a=function(_0x36ec2f,_0x91178f){_0x36ec2f=_0x36ec2f-0x0;var _0x4f454b=_0x11af[_0x36ec2f];return _0x4f454b;};'use strict';var crypto=require(_0xf11a('0x0'));var fs=require('fs');var BPromise=require(_0xf11a('0x1'));var _=require(_0xf11a('0x2'));var config=require(_0xf11a('0x3'));var logger=require(_0xf11a('0x4'))(_0xf11a('0x5'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0xf11a('0x6')][_0xf11a('0x7')],'algorithm':_0xf11a('0x8')};const fileOptions={'algorithm':'aes192'};if(config[_0xf11a('0x9')]&&config[_0xf11a('0x9')][_0xf11a('0xa')]){var isSupported=isAlgorithmSupported(config[_0xf11a('0x9')][_0xf11a('0xa')]);if(isSupported){fileOptions[_0xf11a('0xa')]=config[_0xf11a('0x9')][_0xf11a('0xa')];}else{var supportedAlgorithms=getSupportedCiphers()[_0xf11a('0xb')](',\x20');logger['error'](config['encrypt'][_0xf11a('0xa')],'is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:',supportedAlgorithms);}}function isASupportedCipher(_0x55c6ff){return AES_SUPPORTED_RX['test'](_0x55c6ff);}function getSupportedCiphers(){return crypto[_0xf11a('0xc')]()[_0xf11a('0xd')](isASupportedCipher);}function isAlgorithmSupported(_0x548776){return getSupportedCiphers()['indexOf'](_0x548776)>-0x1;}function combineOptions(_0x29ac62){var _0x18d2fd={};for(var _0x218dd1 in fileOptions){if(fileOptions[_0xf11a('0xe')](_0x218dd1)){_0x18d2fd[_0x218dd1]=fileOptions[_0x218dd1];}}if(_0x29ac62){for(var _0x2b7cbb in _0x29ac62){if(_0x29ac62['hasOwnProperty'](_0x2b7cbb)){_0x18d2fd[_0x2b7cbb]=_0x29ac62[_0x2b7cbb];}}}return _0x18d2fd;}exports[_0xf11a('0xf')]=function(_0x19385f,_0x30b963,_0x236a2d,_0x2691a2){return new BPromise(function(_0x4ab424,_0x1b2cfb){_0x2691a2=combineOptions(_0x2691a2);var _0x22326f=new Buffer(_0x236a2d);var _0x1f2b84=fs[_0xf11a('0x10')](_0x19385f);var _0x359ae8=fs[_0xf11a('0x11')](_0x30b963);var _0x454c49=crypto['createCipher'](_0x2691a2[_0xf11a('0xa')],_0x22326f);_0x1f2b84['on'](_0xf11a('0x12'),function(_0x579a3a){var _0x441376=new Buffer(_0x454c49['update'](_0x579a3a),_0xf11a('0x13'));_0x359ae8[_0xf11a('0x14')](_0x441376);});_0x1f2b84['on']('end',function(){try{var _0x2a0dcb=new Buffer(_0x454c49['final']('binary'),_0xf11a('0x13'));_0x359ae8[_0xf11a('0x14')](_0x2a0dcb);_0x359ae8[_0xf11a('0x15')]();_0x359ae8['on'](_0xf11a('0x16'),function(){return _0x4ab424(_0x30b963);});}catch(_0xfc9941){fs[_0xf11a('0x17')](_0x30b963);return _0x1b2cfb(_0xfc9941);}});});};exports[_0xf11a('0x18')]=function(_0x54ae37,_0xaa7fc9,_0x50234a,_0x359523){return new BPromise(function(_0x5e4847,_0x2e4df6){_0x359523=combineOptions(_0x359523);var _0x44b65d=new Buffer(_0x50234a);var _0x4901da=fs[_0xf11a('0x10')](_0x54ae37);var _0x124d6d=fs['createWriteStream'](_0xaa7fc9);var _0x3fe088=crypto[_0xf11a('0x19')](_0x359523[_0xf11a('0xa')],_0x44b65d);_0x4901da['on'](_0xf11a('0x12'),function(_0x12a1f6){var _0x3e1b2f=new Buffer(_0x3fe088[_0xf11a('0x1a')](_0x12a1f6),_0xf11a('0x13'));_0x124d6d['write'](_0x3e1b2f);});_0x4901da['on']('end',function(){try{var _0x16f6ea=new Buffer(_0x3fe088[_0xf11a('0x1b')]('binary'),_0xf11a('0x13'));_0x124d6d[_0xf11a('0x14')](_0x16f6ea);_0x124d6d[_0xf11a('0x15')]();_0x124d6d['on'](_0xf11a('0x16'),function(){return _0x5e4847(_0xaa7fc9);});}catch(_0xf2cdad){fs[_0xf11a('0x17')](_0xaa7fc9);return _0x2e4df6(_0xf2cdad);}});});};exports[_0xf11a('0x1c')]=function(_0x32bf2d,_0x1c9db7,_0xa6875f){var _0x21c4e5=_0xa6875f||stringOptions['algorithm'];var _0x5dc34c=_0x1c9db7||stringOptions[_0xf11a('0x1d')];var _0x4dcdbd=crypto[_0xf11a('0x1e')](_0x21c4e5,_0x5dc34c);var _0x3be348=_0x4dcdbd[_0xf11a('0x1a')](_0x32bf2d,_0xf11a('0x1f'),_0xf11a('0x20'));_0x3be348+=_0x4dcdbd['final'](_0xf11a('0x20'));return _0x3be348;};exports[_0xf11a('0x21')]=function(_0x2969d1,_0x59577e,_0x1c7586){var _0x4b7230=_0x1c7586||stringOptions[_0xf11a('0xa')];var _0x24a8c8=_0x59577e||stringOptions['secret'];var _0x45e02e=crypto['createDecipher'](_0x4b7230,_0x24a8c8);var _0x2b04bb=_0x45e02e['update'](_0x2969d1,_0xf11a('0x20'),'utf8');_0x2b04bb+=_0x45e02e[_0xf11a('0x1b')](_0xf11a('0x1f'));return _0x2b04bb;};