f4e12a6488697a18d1c33193b780272df0e38e3e
[motion2.git] / server / api / trunk / trunk.controller.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 _0x2f68=['pick','filters','filter','type','VIRTUAL','merge','options','includeAll','include','Trunk','catch','show','params','find','clone','omit','createdAt','updatedAt','body','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','root','server/files/templates/trunk.ejs','utf8','readFileSync','server/files/templates/registry.ejs','render','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','UserProfileSection','autoAssociation','findAll','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','sox','to-csv','squel','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','jayson/promise','client','test','Sequelize','ValidationError','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','request','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','message','result','status','json','count','offset','limit','set','Content-Range','reject','save','update','destroy','get','Trunks','end','sendStatus','stack','name','index','map','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','length','nolimit','order','sort','where'];(function(_0x1f1fbb,_0x4124c6){var _0x24b173=function(_0x25e251){while(--_0x25e251){_0x1f1fbb['push'](_0x1f1fbb['shift']());}};_0x24b173(++_0x4124c6);}(_0x2f68,0x9a));var _0x82f6=function(_0x5bad4b,_0x5c44a6){_0x5bad4b=_0x5bad4b-0x0;var _0x53a64b=_0x2f68[_0x5bad4b];return _0x53a64b;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x82f6('0x0'));var rimraf=require(_0x82f6('0x1'));var zipdir=require(_0x82f6('0x2'));var jsonpatch=require(_0x82f6('0x3'));var rp=require('request-promise');var moment=require(_0x82f6('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x82f6('0x5'));var util=require(_0x82f6('0x6'));var path=require('path');var sox=require(_0x82f6('0x7'));var csv=require(_0x82f6('0x8'));var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var squel=require(_0x82f6('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x82f6('0xa'));var toCsv=require(_0x82f6('0x8'));var querystring=require(_0x82f6('0xb'));var Papa=require('papaparse');var Redis=require(_0x82f6('0xc'));var authService=require(_0x82f6('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0x82f6('0xe'));var hardwareService=require(_0x82f6('0xf'));var logger=require(_0x82f6('0x10'))(_0x82f6('0x11'));var utils=require(_0x82f6('0x12'));var config=require(_0x82f6('0x13'));var db=require('../../mysqldb')['db'];var jayson=require(_0x82f6('0x14'));var client=jayson[_0x82f6('0x15')]['http']({'port':0x232a});function checkPasswordPattern(_0x194da7,_0x1f8bf5,_0x397527){if(_0x397527){var _0x465e5d=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(_0x465e5d[_0x82f6('0x16')](_0x1f8bf5)){return _0x194da7;}else{throw new db[(_0x82f6('0x17'))][(_0x82f6('0x18'))](_0x82f6('0x19'));}}else{return _0x194da7;}}function respondWithRpcPromise(_0x1e7cbc,_0x55b58e,_0x389949,_0x5d0827){return new BPromise(function(_0x249222,_0x1d0263){var _0x31b4fb=_0x5d0827||client;return _0x31b4fb[_0x82f6('0x1a')](_0x1e7cbc,_0x389949)[_0x82f6('0x1b')](function(_0x2326ae){logger[_0x82f6('0x1c')](_0x82f6('0x1d'),_0x55b58e,_0x82f6('0x1e'));logger[_0x82f6('0x1f')](_0x82f6('0x20'),_0x55b58e,_0x82f6('0x1e'),JSON[_0x82f6('0x21')](_0x2326ae));if(_0x2326ae[_0x82f6('0x22')]){if(_0x2326ae[_0x82f6('0x22')]['code']===0x1f4){logger[_0x82f6('0x22')](_0x82f6('0x1d'),_0x55b58e,_0x2326ae['error'][_0x82f6('0x23')]);return _0x1d0263(_0x2326ae[_0x82f6('0x22')][_0x82f6('0x23')]);}logger[_0x82f6('0x22')]('Trunk,\x20%s,\x20%s',_0x55b58e,_0x2326ae[_0x82f6('0x22')]['message']);return _0x249222(_0x2326ae[_0x82f6('0x22')][_0x82f6('0x23')]);}else{logger['info']('Trunk,\x20%s,\x20%s',_0x55b58e,_0x82f6('0x1e'));_0x249222(_0x2326ae[_0x82f6('0x24')]['message']);}})['catch'](function(_0x9f2272){logger[_0x82f6('0x22')]('Trunk,\x20%s,\x20%s',_0x55b58e,_0x9f2272);_0x1d0263(_0x9f2272);});});}function respondWithStatusCode(_0xfd8b68,_0x304e83){_0x304e83=_0x304e83||0xcc;return function(_0x5037f8){if(_0x5037f8){return _0xfd8b68['sendStatus'](_0x304e83);}return _0xfd8b68[_0x82f6('0x25')](_0x304e83)['end']();};}function respondWithResult(_0x469b6b,_0x5a6d69){_0x5a6d69=_0x5a6d69||0xc8;return function(_0x54ce11){if(_0x54ce11){return _0x469b6b[_0x82f6('0x25')](_0x5a6d69)[_0x82f6('0x26')](_0x54ce11);}};}function respondWithFilteredResult(_0x33ef08,_0x1125a0){return function(_0x4f9fa4){if(_0x4f9fa4){var _0x40a071=_0x4f9fa4[_0x82f6('0x27')],_0x1fb461=_0x1125a0[_0x82f6('0x28')],_0x14a309=_0x1125a0[_0x82f6('0x28')]+_0x1125a0[_0x82f6('0x29')],_0x400137;if(_0x14a309>=_0x40a071){_0x14a309=_0x40a071;_0x400137=0xc8;}else{_0x400137=0xce;}_0x33ef08[_0x82f6('0x25')](_0x400137);return _0x33ef08[_0x82f6('0x2a')](_0x82f6('0x2b'),_0x1fb461+'-'+_0x14a309+'/'+_0x40a071)[_0x82f6('0x26')](_0x4f9fa4);}return null;};}function patchUpdates(_0x6ce179){return function(_0x91117b){try{jsonpatch['apply'](_0x91117b,_0x6ce179,!![]);}catch(_0x3bbf5c){return BPromise[_0x82f6('0x2c')](_0x3bbf5c);}return _0x91117b[_0x82f6('0x2d')]();};}function saveUpdates(_0x5a51b4,_0x36f37a){return function(_0x3807c0){if(_0x3807c0){return _0x3807c0[_0x82f6('0x2e')](_0x5a51b4)[_0x82f6('0x1b')](function(_0x41cd65){return _0x41cd65;});}return null;};}function removeEntity(_0x457f09,_0x37025c){return function(_0x299c36){if(_0x299c36){return _0x299c36[_0x82f6('0x2f')]()[_0x82f6('0x1b')](function(){var _0x38942c=_0x299c36[_0x82f6('0x30')]({'plain':!![]});var _0x1e028a=_0x82f6('0x31');return db['UserProfileResource'][_0x82f6('0x2f')]({'where':{'type':_0x1e028a,'resourceId':_0x38942c['id']}})[_0x82f6('0x1b')](function(){return _0x299c36;});})[_0x82f6('0x1b')](function(){_0x457f09[_0x82f6('0x25')](0xcc)[_0x82f6('0x32')]();});}};}function handleEntityNotFound(_0x4390a9,_0x34c2f1){return function(_0x383987){if(!_0x383987){_0x4390a9[_0x82f6('0x33')](0x194);}return _0x383987;};}function handleError(_0x30c6f8,_0x458041){_0x458041=_0x458041||0x1f4;return function(_0x28a740){logger[_0x82f6('0x22')](_0x28a740[_0x82f6('0x34')]);if(_0x28a740['name']){delete _0x28a740[_0x82f6('0x35')];}_0x30c6f8['status'](_0x458041)['send'](_0x28a740);};}exports[_0x82f6('0x36')]=function(_0x18c81e,_0x5e8828){var _0x249cae={},_0x3a3ccb={},_0xb7146b={'count':0x0,'rows':[]};var _0x56e5f1=_[_0x82f6('0x37')](db['Trunk'][_0x82f6('0x38')],function(_0x5f48cf){return{'name':_0x5f48cf[_0x82f6('0x39')],'type':_0x5f48cf['type'][_0x82f6('0x3a')]};});_0x3a3ccb[_0x82f6('0x3b')]=_['map'](_0x56e5f1,_0x82f6('0x35'));_0x3a3ccb[_0x82f6('0x3c')]=_[_0x82f6('0x3d')](_0x18c81e[_0x82f6('0x3c')]);_0x3a3ccb['filters']=_[_0x82f6('0x3e')](_0x3a3ccb[_0x82f6('0x3b')],_0x3a3ccb[_0x82f6('0x3c')]);_0x249cae[_0x82f6('0x3f')]=_['intersection'](_0x3a3ccb[_0x82f6('0x3b')],qs[_0x82f6('0x40')](_0x18c81e['query'][_0x82f6('0x40')]));_0x249cae[_0x82f6('0x3f')]=_0x249cae[_0x82f6('0x3f')][_0x82f6('0x41')]?_0x249cae[_0x82f6('0x3f')]:_0x3a3ccb['model'];if(!_0x18c81e[_0x82f6('0x3c')]['hasOwnProperty'](_0x82f6('0x42'))){_0x249cae[_0x82f6('0x29')]=qs[_0x82f6('0x29')](_0x18c81e[_0x82f6('0x3c')][_0x82f6('0x29')]);_0x249cae[_0x82f6('0x28')]=qs[_0x82f6('0x28')](_0x18c81e['query'][_0x82f6('0x28')]);}_0x249cae[_0x82f6('0x43')]=qs[_0x82f6('0x44')](_0x18c81e[_0x82f6('0x3c')]['sort']);_0x249cae[_0x82f6('0x45')]=qs['filters'](_[_0x82f6('0x46')](_0x18c81e[_0x82f6('0x3c')],_0x3a3ccb[_0x82f6('0x47')]),_0x56e5f1);if(_0x18c81e[_0x82f6('0x3c')][_0x82f6('0x48')]){_0x249cae[_0x82f6('0x45')]=_['merge'](_0x249cae[_0x82f6('0x45')],{'$or':_[_0x82f6('0x37')](_0x56e5f1,function(_0x14a3c4){if(_0x14a3c4[_0x82f6('0x49')]!==_0x82f6('0x4a')){var _0x95c1fa={};_0x95c1fa[_0x14a3c4[_0x82f6('0x35')]]={'$like':'%'+_0x18c81e[_0x82f6('0x3c')]['filter']+'%'};return _0x95c1fa;}})});}_0x249cae=_[_0x82f6('0x4b')]({},_0x249cae,_0x18c81e[_0x82f6('0x4c')]);var _0x4bacd7={'where':_0x249cae[_0x82f6('0x45')]};return db['Trunk'][_0x82f6('0x27')](_0x4bacd7)['then'](function(_0x227ab8){_0xb7146b[_0x82f6('0x27')]=_0x227ab8;if(_0x18c81e[_0x82f6('0x3c')][_0x82f6('0x4d')]){_0x249cae[_0x82f6('0x4e')]=[{'all':!![]}];}return db[_0x82f6('0x4f')]['findAll'](_0x249cae);})[_0x82f6('0x1b')](function(_0xdc77ca){_0xb7146b['rows']=_0xdc77ca;return _0xb7146b;})['then'](respondWithFilteredResult(_0x5e8828,_0x249cae))[_0x82f6('0x50')](handleError(_0x5e8828,null));};exports[_0x82f6('0x51')]=function(_0x2c2b64,_0x596360){var _0x1f7abc={'raw':![],'where':{'id':_0x2c2b64[_0x82f6('0x52')]['id']}},_0x7614da={};_0x7614da[_0x82f6('0x3b')]=_['keys'](db['Trunk'][_0x82f6('0x38')]);_0x7614da[_0x82f6('0x3c')]=_[_0x82f6('0x3d')](_0x2c2b64['query']);_0x7614da[_0x82f6('0x47')]=_[_0x82f6('0x3e')](_0x7614da['model'],_0x7614da['query']);_0x1f7abc['attributes']=_[_0x82f6('0x3e')](_0x7614da['model'],qs[_0x82f6('0x40')](_0x2c2b64['query'][_0x82f6('0x40')]));_0x1f7abc['attributes']=_0x1f7abc[_0x82f6('0x3f')]['length']?_0x1f7abc[_0x82f6('0x3f')]:_0x7614da[_0x82f6('0x3b')];if(_0x2c2b64[_0x82f6('0x3c')][_0x82f6('0x4d')]){_0x1f7abc[_0x82f6('0x4e')]=[{'all':!![]}];}_0x1f7abc=_[_0x82f6('0x4b')]({},_0x1f7abc,_0x2c2b64['options']);return db[_0x82f6('0x4f')][_0x82f6('0x53')](_0x1f7abc)[_0x82f6('0x1b')](handleEntityNotFound(_0x596360,null))['then'](respondWithResult(_0x596360,null))['catch'](handleError(_0x596360,null));};exports[_0x82f6('0x54')]=function(_0x81e595,_0x39ebce){var _0x6932b1={'where':{'id':_0x81e595[_0x82f6('0x52')]['id']}},_0x49a204={};_0x49a204[_0x82f6('0x3b')]=_[_0x82f6('0x3d')](db['Trunk']['rawAttributes']);_0x6932b1['attributes']=_[_0x82f6('0x3e')](_0x49a204[_0x82f6('0x3b')],qs[_0x82f6('0x40')](_0x81e595[_0x82f6('0x3c')][_0x82f6('0x40')]));_0x6932b1[_0x82f6('0x3f')]=_0x6932b1[_0x82f6('0x3f')][_0x82f6('0x41')]?_0x6932b1['attributes']:_0x49a204[_0x82f6('0x3b')];if(_0x81e595[_0x82f6('0x3c')][_0x82f6('0x4d')]){_0x6932b1[_0x82f6('0x4e')]=[{'all':!![]}];}_0x6932b1=_['merge']({},_0x6932b1,_0x81e595['options']);return db[_0x82f6('0x4f')][_0x82f6('0x53')](_0x6932b1)['then'](handleEntityNotFound(_0x39ebce,null))[_0x82f6('0x1b')](function(_0xa12f6e){if(_0xa12f6e){var _0x404d09=_0xa12f6e['get']({'plain':!![]});_0x404d09=qs[_0x82f6('0x55')](_0x404d09,['id',_0x82f6('0x56'),_0x82f6('0x57')]);_0x81e595[_0x82f6('0x58')]=_[_0x82f6('0x55')](_0x81e595[_0x82f6('0x58')],['id','createdAt',_0x82f6('0x57')]);return db[_0x82f6('0x4f')][_0x82f6('0x59')](_[_0x82f6('0x4b')](_0x404d09,_0x81e595[_0x82f6('0x58')]),{'include':_0x81e595['query'][_0x82f6('0x4d')]?[{'all':!![]}]:undefined})[_0x82f6('0x1b')](function(_0x182ad8){var _0x2ba70b=_0x81e595[_0x82f6('0x5a')][_0x82f6('0x30')]({'plain':!![]});if(!_0x2ba70b)throw new Error(_0x82f6('0x5b'));if(_0x2ba70b[_0x82f6('0x5c')]==='user'){var _0x22964c=_0x182ad8['get']({'plain':!![]});var _0x3f0337=_0x82f6('0x31');return db['UserProfileSection'][_0x82f6('0x53')]({'where':{'name':_0x3f0337,'userProfileId':_0x2ba70b[_0x82f6('0x5d')]},'raw':!![]})[_0x82f6('0x1b')](function(_0x5705f2){if(_0x5705f2&&_0x5705f2['autoAssociation']===0x0){return db[_0x82f6('0x5e')][_0x82f6('0x59')]({'name':_0x22964c['name'],'resourceId':_0x22964c['id'],'type':_0x5705f2['name'],'sectionId':_0x5705f2['id']},{})[_0x82f6('0x1b')](function(){return _0x182ad8;});}else{return _0x182ad8;}})[_0x82f6('0x50')](function(_0x1c37d2){logger[_0x82f6('0x22')](_0x82f6('0x5f'),_0x1c37d2);throw _0x1c37d2;});}return _0x182ad8;});}})[_0x82f6('0x1b')](respondWithResult(_0x39ebce,0xc9))[_0x82f6('0x50')](handleError(_0x39ebce,null));};exports[_0x82f6('0x59')]=function(_0x2d0d7c,_0x353508,_0x385902){var _0x41354f;return db['Trunk'][_0x82f6('0x59')](_0x2d0d7c[_0x82f6('0x58')],{'raw':!![]})[_0x82f6('0x1b')](function(_0x27b160){_0x41354f=_0x27b160;return db[_0x82f6('0x4f')]['findAll']({'raw':!![]});})[_0x82f6('0x1b')](function(_0x46d5af){var _0x337050=fs['readFileSync'](path[_0x82f6('0x60')](config[_0x82f6('0x61')],_0x82f6('0x62')),_0x82f6('0x63'));var _0xeec407=fs[_0x82f6('0x64')](path[_0x82f6('0x60')](config['root'],_0x82f6('0x65')),'utf8');var _0x28f36a=ejs[_0x82f6('0x66')](_0x337050,{'trunks':_0x46d5af||[]});fs[_0x82f6('0x67')](_0x82f6('0x68'),_0x28f36a);if(_0x41354f[_0x82f6('0x69')]){var _0x341fde=ejs[_0x82f6('0x66')](_0xeec407,{'trunks':_0x46d5af||[]});fs[_0x82f6('0x67')](_0x82f6('0x6a'),_0x341fde);}})['then'](function(){return respondWithRpcPromise(_0x82f6('0x6b'),_0x82f6('0x59'),{'module':_0x82f6('0x6c')});})[_0x82f6('0x1b')](function(){var _0x36599f=_0x2d0d7c[_0x82f6('0x5a')]['get']({'plain':!![]});if(!_0x36599f)throw new Error(_0x82f6('0x5b'));if(_0x36599f[_0x82f6('0x5c')]==='user'){var _0x51ba65=_0x41354f[_0x82f6('0x30')]({'plain':!![]});return db[_0x82f6('0x6d')][_0x82f6('0x53')]({'where':{'name':_0x82f6('0x31'),'userProfileId':_0x36599f[_0x82f6('0x5d')]},'raw':!![]})[_0x82f6('0x1b')](function(_0x5bf933){if(_0x5bf933&&_0x5bf933[_0x82f6('0x6e')]===0x0){return db['UserProfileResource'][_0x82f6('0x59')]({'name':_0x51ba65['name'],'resourceId':_0x51ba65['id'],'type':_0x5bf933[_0x82f6('0x35')],'sectionId':_0x5bf933['id']},{})['then'](function(){return _0x41354f;});}else{return _0x41354f;}})[_0x82f6('0x50')](function(_0xc21e55){logger[_0x82f6('0x22')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xc21e55);throw _0xc21e55;});}return _0x41354f;})[_0x82f6('0x1b')](respondWithResult(_0x353508,0xc9))['catch'](handleError(_0x353508,null));};exports[_0x82f6('0x2e')]=function(_0x476ecb,_0x3e69f6,_0x4d1bfd){var _0x2646b2;return db[_0x82f6('0x4f')][_0x82f6('0x53')]({'where':{'id':_0x476ecb['params']['id']}})['then'](handleEntityNotFound(_0x3e69f6,null))[_0x82f6('0x1b')](saveUpdates(_0x476ecb[_0x82f6('0x58')],null))[_0x82f6('0x1b')](function(_0x1a1082){if(_0x1a1082){_0x2646b2=_0x1a1082;return db[_0x82f6('0x4f')][_0x82f6('0x6f')]({'raw':!![]});}})[_0x82f6('0x1b')](function(_0x286f4e){if(_0x286f4e){var _0x4df767=fs[_0x82f6('0x64')](path[_0x82f6('0x60')](config['root'],_0x82f6('0x62')),_0x82f6('0x63'));var _0x1c1901=fs['readFileSync'](path[_0x82f6('0x60')](config[_0x82f6('0x61')],_0x82f6('0x65')),_0x82f6('0x63'));var _0x50ab5c=ejs[_0x82f6('0x66')](_0x4df767,{'trunks':_0x286f4e||[]});fs[_0x82f6('0x67')](_0x82f6('0x68'),_0x50ab5c);var _0x320ccc=ejs[_0x82f6('0x66')](_0x1c1901,{'trunks':_0x286f4e||[]});fs[_0x82f6('0x67')]('/etc/asterisk/sip_xcally_registers.conf',_0x320ccc);return respondWithRpcPromise(_0x82f6('0x6b'),_0x82f6('0x2e'),{'module':_0x82f6('0x6c')});}return null;})[_0x82f6('0x1b')](function(_0x3f2033){if(_0x3f2033){return _0x2646b2;}})['then'](respondWithResult(_0x3e69f6,null))[_0x82f6('0x50')](handleError(_0x3e69f6,null));};exports['destroy']=function(_0x455afa,_0x1d545a,_0x425e33){var _0xc580c1;return db[_0x82f6('0x4f')][_0x82f6('0x53')]({'where':{'id':_0x455afa[_0x82f6('0x52')]['id']}})['then'](handleEntityNotFound(_0x1d545a,null))[_0x82f6('0x1b')](removeEntity(_0x1d545a,null))[_0x82f6('0x1b')](function(){return db['Trunk'][_0x82f6('0x6f')]({'raw':!![]});})[_0x82f6('0x1b')](function(_0xadf40b){var _0x5c65c7=fs[_0x82f6('0x64')](path['join'](config[_0x82f6('0x61')],_0x82f6('0x62')),'utf8');var _0x450f3e=fs[_0x82f6('0x64')](path[_0x82f6('0x60')](config[_0x82f6('0x61')],'server/files/templates/registry.ejs'),_0x82f6('0x63'));var _0x51b830=ejs['render'](_0x5c65c7,{'trunks':_0xadf40b});var _0x463cd6=ejs[_0x82f6('0x66')](_0x450f3e,{'trunks':_0xadf40b});fs[_0x82f6('0x67')](_0x82f6('0x68'),_0x51b830);fs[_0x82f6('0x67')]('/etc/asterisk/sip_xcally_registers.conf',_0x463cd6);return respondWithRpcPromise('Reload',_0x82f6('0x2f'),{'module':'chan_sip.so'});})[_0x82f6('0x50')](handleError(_0x1d545a,null));};