b2f6490c4ab7ab004deb47e51e8debd237cd9716
[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 _0x4592=['crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','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','debug','Trunk,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','status','end','json','offset','limit','set','apply','reject','save','destroy','get','Trunks','UserProfileResource','sendStatus','name','send','index','map','Trunk','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','count','includeAll','findAll','show','include','clone','find','omit','createdAt','updatedAt','body','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','server/files/templates/trunk.ejs','utf8','root','server/files/templates/registry.ejs','render','/etc/asterisk/sip_xcally_trunks.conf','registry','writeFileSync','/etc/asterisk/sip_xcally_registers.conf','update','readFileSync','join','Reload','params','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel'];(function(_0x5b6990,_0x26309e){var _0x14db4a=function(_0x4ccc82){while(--_0x4ccc82){_0x5b6990['push'](_0x5b6990['shift']());}};_0x14db4a(++_0x26309e);}(_0x4592,0x69));var _0x2459=function(_0x57e9b2,_0x2813cf){_0x57e9b2=_0x57e9b2-0x0;var _0x5503d7=_0x4592[_0x57e9b2];return _0x5503d7;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x2459('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2459('0x1'));var jsonpatch=require(_0x2459('0x2'));var rp=require('request-promise');var moment=require(_0x2459('0x3'));var BPromise=require(_0x2459('0x4'));var Mustache=require(_0x2459('0x5'));var util=require(_0x2459('0x6'));var path=require('path');var sox=require(_0x2459('0x7'));var csv=require(_0x2459('0x8'));var ejs=require(_0x2459('0x9'));var fs=require('fs');var _=require(_0x2459('0xa'));var squel=require(_0x2459('0xb'));var crypto=require(_0x2459('0xc'));var jsforce=require(_0x2459('0xd'));var deskjs=require(_0x2459('0xe'));var toCsv=require(_0x2459('0x8'));var querystring=require(_0x2459('0xf'));var Papa=require(_0x2459('0x10'));var Redis=require(_0x2459('0x11'));var authService=require(_0x2459('0x12'));var qs=require(_0x2459('0x13'));var as=require(_0x2459('0x14'));var hardwareService=require(_0x2459('0x15'));var logger=require(_0x2459('0x16'))(_0x2459('0x17'));var utils=require('../../config/utils');var config=require(_0x2459('0x18'));var db=require(_0x2459('0x19'))['db'];var jayson=require(_0x2459('0x1a'));var client=jayson[_0x2459('0x1b')]['http']({'port':0x232a});function checkPasswordPattern(_0x2121b3,_0x2b090f,_0x591eea){if(_0x591eea){var _0x5db421=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(_0x5db421[_0x2459('0x1c')](_0x2b090f)){return _0x2121b3;}else{throw new db[(_0x2459('0x1d'))][(_0x2459('0x1e'))](_0x2459('0x1f'));}}else{return _0x2121b3;}}function respondWithRpcPromise(_0x22ac36,_0x198740,_0x27c721,_0x299196){return new BPromise(function(_0x26f163,_0x399203){var _0x207fad=_0x299196||client;return _0x207fad[_0x2459('0x20')](_0x22ac36,_0x27c721)[_0x2459('0x21')](function(_0x5ed6e6){logger[_0x2459('0x22')](_0x2459('0x23'),_0x198740,'request\x20sent');logger[_0x2459('0x24')](_0x2459('0x25'),_0x198740,_0x2459('0x26'),JSON[_0x2459('0x27')](_0x5ed6e6));if(_0x5ed6e6['error']){if(_0x5ed6e6[_0x2459('0x28')][_0x2459('0x29')]===0x1f4){logger['error'](_0x2459('0x23'),_0x198740,_0x5ed6e6[_0x2459('0x28')][_0x2459('0x2a')]);return _0x399203(_0x5ed6e6[_0x2459('0x28')][_0x2459('0x2a')]);}logger['error'](_0x2459('0x23'),_0x198740,_0x5ed6e6['error'][_0x2459('0x2a')]);return _0x26f163(_0x5ed6e6[_0x2459('0x28')][_0x2459('0x2a')]);}else{logger['info'](_0x2459('0x23'),_0x198740,_0x2459('0x26'));_0x26f163(_0x5ed6e6['result'][_0x2459('0x2a')]);}})[_0x2459('0x2b')](function(_0x125846){logger[_0x2459('0x28')](_0x2459('0x23'),_0x198740,_0x125846);_0x399203(_0x125846);});});}function respondWithStatusCode(_0x323884,_0x1ab3af){_0x1ab3af=_0x1ab3af||0xcc;return function(_0x4fe70c){if(_0x4fe70c){return _0x323884['sendStatus'](_0x1ab3af);}return _0x323884[_0x2459('0x2c')](_0x1ab3af)[_0x2459('0x2d')]();};}function respondWithResult(_0x1e5c97,_0x3e01cd){_0x3e01cd=_0x3e01cd||0xc8;return function(_0x536e87){if(_0x536e87){return _0x1e5c97['status'](_0x3e01cd)[_0x2459('0x2e')](_0x536e87);}};}function respondWithFilteredResult(_0x86370d,_0x239c01){return function(_0x13f16b){if(_0x13f16b){var _0x290451=_0x13f16b['count'],_0x157a53=_0x239c01['offset'],_0x14e4fc=_0x239c01[_0x2459('0x2f')]+_0x239c01[_0x2459('0x30')],_0x47e17d;if(_0x14e4fc>=_0x290451){_0x14e4fc=_0x290451;_0x47e17d=0xc8;}else{_0x47e17d=0xce;}_0x86370d[_0x2459('0x2c')](_0x47e17d);return _0x86370d[_0x2459('0x31')]('Content-Range',_0x157a53+'-'+_0x14e4fc+'/'+_0x290451)[_0x2459('0x2e')](_0x13f16b);}return null;};}function patchUpdates(_0x26ecde){return function(_0x1d70c0){try{jsonpatch[_0x2459('0x32')](_0x1d70c0,_0x26ecde,!![]);}catch(_0x49b70f){return BPromise[_0x2459('0x33')](_0x49b70f);}return _0x1d70c0[_0x2459('0x34')]();};}function saveUpdates(_0x5303d4,_0x5a622e){return function(_0x58c34f){if(_0x58c34f){return _0x58c34f['update'](_0x5303d4)[_0x2459('0x21')](function(_0x402525){return _0x402525;});}return null;};}function removeEntity(_0x1d8eaa,_0x37b6bc){return function(_0xf602e0){if(_0xf602e0){return _0xf602e0[_0x2459('0x35')]()[_0x2459('0x21')](function(){var _0x42ba18=_0xf602e0[_0x2459('0x36')]({'plain':!![]});var _0x21e3c0=_0x2459('0x37');return db[_0x2459('0x38')][_0x2459('0x35')]({'where':{'type':_0x21e3c0,'resourceId':_0x42ba18['id']}})[_0x2459('0x21')](function(){return _0xf602e0;});})[_0x2459('0x21')](function(){_0x1d8eaa[_0x2459('0x2c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2976f7,_0x5444e6){return function(_0x184d68){if(!_0x184d68){_0x2976f7[_0x2459('0x39')](0x194);}return _0x184d68;};}function handleError(_0x31c005,_0x542d57){_0x542d57=_0x542d57||0x1f4;return function(_0x2c02b1){logger[_0x2459('0x28')](_0x2c02b1['stack']);if(_0x2c02b1[_0x2459('0x3a')]){delete _0x2c02b1[_0x2459('0x3a')];}_0x31c005[_0x2459('0x2c')](_0x542d57)[_0x2459('0x3b')](_0x2c02b1);};}exports[_0x2459('0x3c')]=function(_0x2e1d65,_0x4da189){var _0x179cd0={},_0x1fc295={},_0x3b384c={'count':0x0,'rows':[]};var _0x32fc31=_[_0x2459('0x3d')](db[_0x2459('0x3e')][_0x2459('0x3f')],function(_0x17d55f){return{'name':_0x17d55f[_0x2459('0x40')],'type':_0x17d55f['type'][_0x2459('0x41')]};});_0x1fc295[_0x2459('0x42')]=_[_0x2459('0x3d')](_0x32fc31,_0x2459('0x3a'));_0x1fc295[_0x2459('0x43')]=_[_0x2459('0x44')](_0x2e1d65[_0x2459('0x43')]);_0x1fc295['filters']=_[_0x2459('0x45')](_0x1fc295[_0x2459('0x42')],_0x1fc295[_0x2459('0x43')]);_0x179cd0[_0x2459('0x46')]=_[_0x2459('0x45')](_0x1fc295['model'],qs[_0x2459('0x47')](_0x2e1d65[_0x2459('0x43')][_0x2459('0x47')]));_0x179cd0[_0x2459('0x46')]=_0x179cd0[_0x2459('0x46')][_0x2459('0x48')]?_0x179cd0[_0x2459('0x46')]:_0x1fc295[_0x2459('0x42')];if(!_0x2e1d65[_0x2459('0x43')][_0x2459('0x49')]('nolimit')){_0x179cd0[_0x2459('0x30')]=qs[_0x2459('0x30')](_0x2e1d65[_0x2459('0x43')][_0x2459('0x30')]);_0x179cd0['offset']=qs[_0x2459('0x2f')](_0x2e1d65[_0x2459('0x43')][_0x2459('0x2f')]);}_0x179cd0[_0x2459('0x4a')]=qs['sort'](_0x2e1d65[_0x2459('0x43')][_0x2459('0x4b')]);_0x179cd0[_0x2459('0x4c')]=qs[_0x2459('0x4d')](_[_0x2459('0x4e')](_0x2e1d65[_0x2459('0x43')],_0x1fc295[_0x2459('0x4d')]));if(_0x2e1d65[_0x2459('0x43')][_0x2459('0x4f')]){_0x179cd0[_0x2459('0x4c')]=_[_0x2459('0x50')](_0x179cd0[_0x2459('0x4c')],{'$or':_['map'](_0x32fc31,function(_0x195736){if(_0x195736[_0x2459('0x51')]!==_0x2459('0x52')){var _0x35de30={};_0x35de30[_0x195736['name']]={'$like':'%'+_0x2e1d65['query'][_0x2459('0x4f')]+'%'};return _0x35de30;}})});}_0x179cd0=_[_0x2459('0x50')]({},_0x179cd0,_0x2e1d65[_0x2459('0x53')]);var _0x3a60f6={'where':_0x179cd0[_0x2459('0x4c')]};return db['Trunk'][_0x2459('0x54')](_0x3a60f6)[_0x2459('0x21')](function(_0x44fbc5){_0x3b384c[_0x2459('0x54')]=_0x44fbc5;if(_0x2e1d65[_0x2459('0x43')][_0x2459('0x55')]){_0x179cd0['include']=[{'all':!![]}];}return db['Trunk'][_0x2459('0x56')](_0x179cd0);})[_0x2459('0x21')](function(_0x1a4922){_0x3b384c['rows']=_0x1a4922;return _0x3b384c;})['then'](respondWithFilteredResult(_0x4da189,_0x179cd0))[_0x2459('0x2b')](handleError(_0x4da189,null));};exports[_0x2459('0x57')]=function(_0x48db63,_0x485149){var _0x39623e={'raw':![],'where':{'id':_0x48db63['params']['id']}},_0x4499c7={};_0x4499c7[_0x2459('0x42')]=_['keys'](db[_0x2459('0x3e')][_0x2459('0x3f')]);_0x4499c7[_0x2459('0x43')]=_[_0x2459('0x44')](_0x48db63[_0x2459('0x43')]);_0x4499c7[_0x2459('0x4d')]=_[_0x2459('0x45')](_0x4499c7[_0x2459('0x42')],_0x4499c7[_0x2459('0x43')]);_0x39623e['attributes']=_[_0x2459('0x45')](_0x4499c7[_0x2459('0x42')],qs[_0x2459('0x47')](_0x48db63['query'][_0x2459('0x47')]));_0x39623e[_0x2459('0x46')]=_0x39623e[_0x2459('0x46')][_0x2459('0x48')]?_0x39623e[_0x2459('0x46')]:_0x4499c7['model'];if(_0x48db63[_0x2459('0x43')]['includeAll']){_0x39623e[_0x2459('0x58')]=[{'all':!![]}];}_0x39623e=_[_0x2459('0x50')]({},_0x39623e,_0x48db63['options']);return db[_0x2459('0x3e')]['find'](_0x39623e)[_0x2459('0x21')](handleEntityNotFound(_0x485149,null))['then'](respondWithResult(_0x485149,null))['catch'](handleError(_0x485149,null));};exports[_0x2459('0x59')]=function(_0x789167,_0x51c1a6){var _0x5da1ba={'where':{'id':_0x789167['params']['id']}},_0x4c171f={};_0x4c171f['model']=_['keys'](db[_0x2459('0x3e')]['rawAttributes']);_0x5da1ba[_0x2459('0x46')]=_[_0x2459('0x45')](_0x4c171f['model'],qs[_0x2459('0x47')](_0x789167[_0x2459('0x43')][_0x2459('0x47')]));_0x5da1ba['attributes']=_0x5da1ba[_0x2459('0x46')][_0x2459('0x48')]?_0x5da1ba['attributes']:_0x4c171f[_0x2459('0x42')];if(_0x789167[_0x2459('0x43')][_0x2459('0x55')]){_0x5da1ba[_0x2459('0x58')]=[{'all':!![]}];}_0x5da1ba=_[_0x2459('0x50')]({},_0x5da1ba,_0x789167[_0x2459('0x53')]);return db['Trunk'][_0x2459('0x5a')](_0x5da1ba)[_0x2459('0x21')](handleEntityNotFound(_0x51c1a6,null))[_0x2459('0x21')](function(_0x680e3){if(_0x680e3){var _0x52f541=_0x680e3[_0x2459('0x36')]({'plain':!![]});_0x52f541=qs[_0x2459('0x5b')](_0x52f541,['id',_0x2459('0x5c'),_0x2459('0x5d')]);_0x789167[_0x2459('0x5e')]=_[_0x2459('0x5b')](_0x789167[_0x2459('0x5e')],['id','createdAt',_0x2459('0x5d')]);return db[_0x2459('0x3e')][_0x2459('0x5f')](_[_0x2459('0x50')](_0x52f541,_0x789167['body']),{'include':_0x789167[_0x2459('0x43')][_0x2459('0x55')]?[{'all':!![]}]:undefined})[_0x2459('0x21')](function(_0x2ffe80){var _0x6debde=_0x789167[_0x2459('0x60')][_0x2459('0x36')]({'plain':!![]});if(!_0x6debde)throw new Error(_0x2459('0x61'));if(_0x6debde[_0x2459('0x62')]===_0x2459('0x60')){var _0x306ce3=_0x2ffe80[_0x2459('0x36')]({'plain':!![]});var _0x4db3a1='Trunks';return db[_0x2459('0x63')][_0x2459('0x5a')]({'where':{'name':_0x4db3a1,'userProfileId':_0x6debde[_0x2459('0x64')]},'raw':!![]})['then'](function(_0x21f535){if(_0x21f535&&_0x21f535[_0x2459('0x65')]===0x0){return db[_0x2459('0x38')][_0x2459('0x5f')]({'name':_0x306ce3[_0x2459('0x3a')],'resourceId':_0x306ce3['id'],'type':_0x21f535[_0x2459('0x3a')],'sectionId':_0x21f535['id']},{})[_0x2459('0x21')](function(){return _0x2ffe80;});}else{return _0x2ffe80;}})['catch'](function(_0x5ac731){logger['error'](_0x2459('0x66'),_0x5ac731);throw _0x5ac731;});}return _0x2ffe80;});}})[_0x2459('0x21')](respondWithResult(_0x51c1a6,0xc9))[_0x2459('0x2b')](handleError(_0x51c1a6,null));};exports['create']=function(_0x20bc67,_0x5646df,_0x4caede){var _0x18a20a;return db[_0x2459('0x3e')]['create'](_0x20bc67[_0x2459('0x5e')],{'raw':!![]})[_0x2459('0x21')](function(_0x35084b){_0x18a20a=_0x35084b;return db[_0x2459('0x3e')]['findAll']({'raw':!![]});})['then'](function(_0x5ae35d){var _0x5c0a92=fs['readFileSync'](path['join'](config['root'],_0x2459('0x67')),_0x2459('0x68'));var _0x4ea064=fs['readFileSync'](path['join'](config[_0x2459('0x69')],_0x2459('0x6a')),_0x2459('0x68'));var _0x27f9f0=ejs[_0x2459('0x6b')](_0x5c0a92,{'trunks':_0x5ae35d||[]});fs['writeFileSync'](_0x2459('0x6c'),_0x27f9f0);if(_0x18a20a[_0x2459('0x6d')]){var _0x4fe85b=ejs[_0x2459('0x6b')](_0x4ea064,{'trunks':_0x5ae35d||[]});fs[_0x2459('0x6e')](_0x2459('0x6f'),_0x4fe85b);}})['then'](function(){return respondWithRpcPromise('Reload',_0x2459('0x5f'),{'module':'chan_sip.so'});})[_0x2459('0x21')](function(){var _0x1978ba=_0x20bc67['user'][_0x2459('0x36')]({'plain':!![]});if(!_0x1978ba)throw new Error(_0x2459('0x61'));if(_0x1978ba['role']===_0x2459('0x60')){var _0x10c563=_0x18a20a[_0x2459('0x36')]({'plain':!![]});return db['UserProfileSection'][_0x2459('0x5a')]({'where':{'name':_0x2459('0x37'),'userProfileId':_0x1978ba[_0x2459('0x64')]},'raw':!![]})[_0x2459('0x21')](function(_0x556e0e){if(_0x556e0e&&_0x556e0e[_0x2459('0x65')]===0x0){return db[_0x2459('0x38')][_0x2459('0x5f')]({'name':_0x10c563[_0x2459('0x3a')],'resourceId':_0x10c563['id'],'type':_0x556e0e[_0x2459('0x3a')],'sectionId':_0x556e0e['id']},{})[_0x2459('0x21')](function(){return _0x18a20a;});}else{return _0x18a20a;}})[_0x2459('0x2b')](function(_0x43a997){logger[_0x2459('0x28')](_0x2459('0x66'),_0x43a997);throw _0x43a997;});}return _0x18a20a;})['then'](respondWithResult(_0x5646df,0xc9))[_0x2459('0x2b')](handleError(_0x5646df,null));};exports[_0x2459('0x70')]=function(_0x21c218,_0x5a0a4d,_0x3f0243){var _0x40e213;return db[_0x2459('0x3e')]['find']({'where':{'id':_0x21c218['params']['id']}})[_0x2459('0x21')](handleEntityNotFound(_0x5a0a4d,null))[_0x2459('0x21')](saveUpdates(_0x21c218['body'],null))[_0x2459('0x21')](function(_0x5d469c){if(_0x5d469c){_0x40e213=_0x5d469c;return db[_0x2459('0x3e')][_0x2459('0x56')]({'raw':!![]});}})['then'](function(_0x483700){if(_0x483700){var _0x464691=fs[_0x2459('0x71')](path[_0x2459('0x72')](config['root'],_0x2459('0x67')),_0x2459('0x68'));var _0x5c1d05=fs[_0x2459('0x71')](path[_0x2459('0x72')](config[_0x2459('0x69')],_0x2459('0x6a')),'utf8');var _0x1c92db=ejs[_0x2459('0x6b')](_0x464691,{'trunks':_0x483700||[]});fs[_0x2459('0x6e')](_0x2459('0x6c'),_0x1c92db);var _0x4bc5e4=ejs['render'](_0x5c1d05,{'trunks':_0x483700||[]});fs['writeFileSync']('/etc/asterisk/sip_xcally_registers.conf',_0x4bc5e4);return respondWithRpcPromise(_0x2459('0x73'),_0x2459('0x70'),{'module':'chan_sip.so'});}return null;})[_0x2459('0x21')](function(_0x26aadb){if(_0x26aadb){return _0x40e213;}})['then'](respondWithResult(_0x5a0a4d,null))['catch'](handleError(_0x5a0a4d,null));};exports[_0x2459('0x35')]=function(_0x3213bc,_0x12b140,_0x23cbb7){var _0x106e30;return db[_0x2459('0x3e')][_0x2459('0x5a')]({'where':{'id':_0x3213bc[_0x2459('0x74')]['id']}})[_0x2459('0x21')](handleEntityNotFound(_0x12b140,null))[_0x2459('0x21')](removeEntity(_0x12b140,null))['then'](function(){return db['Trunk'][_0x2459('0x56')]({'raw':!![]});})[_0x2459('0x21')](function(_0x2f1ec6){var _0x4a2a73=fs['readFileSync'](path[_0x2459('0x72')](config[_0x2459('0x69')],_0x2459('0x67')),_0x2459('0x68'));var _0x2f3111=fs[_0x2459('0x71')](path[_0x2459('0x72')](config[_0x2459('0x69')],_0x2459('0x6a')),_0x2459('0x68'));var _0x35517c=ejs['render'](_0x4a2a73,{'trunks':_0x2f1ec6});var _0x4deab8=ejs[_0x2459('0x6b')](_0x2f3111,{'trunks':_0x2f1ec6});fs[_0x2459('0x6e')]('/etc/asterisk/sip_xcally_trunks.conf',_0x35517c);fs['writeFileSync']('/etc/asterisk/sip_xcally_registers.conf',_0x4deab8);return respondWithRpcPromise(_0x2459('0x73'),_0x2459('0x35'),{'module':'chan_sip.so'});})[_0x2459('0x2b')](handleError(_0x12b140,null));};