051d7fd51f9db7eab5b462b7fe152022a39831a3
[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 _0xb442=['is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','filter','hasOwnProperty','encryptFile','createWriteStream','createCipher','data','update','binary','write','end','final','close','unlink','decryptFile','createReadStream','encryptString','utf8','base64','createDecipher','crypto','lodash','../../config/environment','secrets','session','aes192','encrypt','algorithm','join','error'];(function(_0x3327e2,_0x251554){var _0x59fb5c=function(_0xf092ac){while(--_0xf092ac){_0x3327e2['push'](_0x3327e2['shift']());}};_0x59fb5c(++_0x251554);}(_0xb442,0x1b6));var _0x2b44=function(_0x357386,_0x40d104){_0x357386=_0x357386-0x0;var _0x3a7fa3=_0xb442[_0x357386];return _0x3a7fa3;};'use strict';var crypto=require(_0x2b44('0x0'));var fs=require('fs');var BPromise=require('bluebird');var _=require(_0x2b44('0x1'));var config=require(_0x2b44('0x2'));var logger=require('../../config/logger')('app');const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x2b44('0x3')][_0x2b44('0x4')],'algorithm':'aes-256-ctr'};const fileOptions={'algorithm':_0x2b44('0x5')};if(config[_0x2b44('0x6')]&&config[_0x2b44('0x6')][_0x2b44('0x7')]){var isSupported=isAlgorithmSupported(config[_0x2b44('0x6')][_0x2b44('0x7')]);if(isSupported){fileOptions[_0x2b44('0x7')]=config[_0x2b44('0x6')][_0x2b44('0x7')];}else{var supportedAlgorithms=getSupportedCiphers()[_0x2b44('0x8')](',\x20');logger[_0x2b44('0x9')](config[_0x2b44('0x6')][_0x2b44('0x7')],_0x2b44('0xa'),supportedAlgorithms);}}function isASupportedCipher(_0xaf790f){return AES_SUPPORTED_RX[_0x2b44('0xb')](_0xaf790f);}function getSupportedCiphers(){return crypto[_0x2b44('0xc')]()[_0x2b44('0xd')](isASupportedCipher);}function isAlgorithmSupported(_0x2aa4ef){return getSupportedCiphers()['indexOf'](_0x2aa4ef)>-0x1;}function combineOptions(_0x1ecdbb){var _0xaa7e95={};for(var _0x1aa080 in fileOptions){if(fileOptions[_0x2b44('0xe')](_0x1aa080)){_0xaa7e95[_0x1aa080]=fileOptions[_0x1aa080];}}if(_0x1ecdbb){for(var _0x517be5 in _0x1ecdbb){if(_0x1ecdbb[_0x2b44('0xe')](_0x517be5)){_0xaa7e95[_0x517be5]=_0x1ecdbb[_0x517be5];}}}return _0xaa7e95;}exports[_0x2b44('0xf')]=function(_0x41d4e8,_0x1f1e8e,_0x4d1da2,_0x466162){return new BPromise(function(_0x4b4655,_0x3f55c4){_0x466162=combineOptions(_0x466162);var _0x457346=new Buffer(_0x4d1da2);var _0x143143=fs['createReadStream'](_0x41d4e8);var _0x1d773f=fs[_0x2b44('0x10')](_0x1f1e8e);var _0x76970=crypto[_0x2b44('0x11')](_0x466162[_0x2b44('0x7')],_0x457346);_0x143143['on'](_0x2b44('0x12'),function(_0xd70769){var _0x457faa=new Buffer(_0x76970[_0x2b44('0x13')](_0xd70769),_0x2b44('0x14'));_0x1d773f[_0x2b44('0x15')](_0x457faa);});_0x143143['on'](_0x2b44('0x16'),function(){try{var _0x30df42=new Buffer(_0x76970[_0x2b44('0x17')](_0x2b44('0x14')),_0x2b44('0x14'));_0x1d773f['write'](_0x30df42);_0x1d773f[_0x2b44('0x16')]();_0x1d773f['on'](_0x2b44('0x18'),function(){return _0x4b4655(_0x1f1e8e);});}catch(_0xf3143a){fs[_0x2b44('0x19')](_0x1f1e8e);return _0x3f55c4(_0xf3143a);}});});};exports[_0x2b44('0x1a')]=function(_0x496002,_0x422a6c,_0x516047,_0x5b80bb){return new BPromise(function(_0x41d669,_0x53db43){_0x5b80bb=combineOptions(_0x5b80bb);var _0x56d560=new Buffer(_0x516047);var _0x6b2000=fs[_0x2b44('0x1b')](_0x496002);var _0x5d2287=fs['createWriteStream'](_0x422a6c);var _0x4022bd=crypto['createDecipher'](_0x5b80bb[_0x2b44('0x7')],_0x56d560);_0x6b2000['on'](_0x2b44('0x12'),function(_0x14405f){var _0x5d272d=new Buffer(_0x4022bd['update'](_0x14405f),_0x2b44('0x14'));_0x5d2287[_0x2b44('0x15')](_0x5d272d);});_0x6b2000['on'](_0x2b44('0x16'),function(){try{var _0x5cfba4=new Buffer(_0x4022bd['final'](_0x2b44('0x14')),'binary');_0x5d2287['write'](_0x5cfba4);_0x5d2287[_0x2b44('0x16')]();_0x5d2287['on'](_0x2b44('0x18'),function(){return _0x41d669(_0x422a6c);});}catch(_0x5d069d){fs[_0x2b44('0x19')](_0x422a6c);return _0x53db43(_0x5d069d);}});});};exports[_0x2b44('0x1c')]=function(_0xdeef7a,_0x392904,_0x5313c1){var _0x3c0107=_0x5313c1||stringOptions['algorithm'];var _0x571885=_0x392904||stringOptions['secret'];var _0x3ef763=crypto[_0x2b44('0x11')](_0x3c0107,_0x571885);var _0x348c92=_0x3ef763[_0x2b44('0x13')](_0xdeef7a,_0x2b44('0x1d'),_0x2b44('0x1e'));_0x348c92+=_0x3ef763['final']('base64');return _0x348c92;};exports['decryptString']=function(_0x3a0ac3,_0x4791ad,_0x2e4ea9){var _0x376538=_0x2e4ea9||stringOptions[_0x2b44('0x7')];var _0x567c53=_0x4791ad||stringOptions['secret'];var _0x534d27=crypto[_0x2b44('0x1f')](_0x376538,_0x567c53);var _0x448791=_0x534d27[_0x2b44('0x13')](_0x3a0ac3,_0x2b44('0x1e'),_0x2b44('0x1d'));_0x448791+=_0x534d27[_0x2b44('0x17')](_0x2b44('0x1d'));return _0x448791;};