Built motion from commit (unavailable).|2.5.4
[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 _0x0102=['update','destroy','Trunks','UserProfileResource','name','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','pick','filter','where','merge','options','Trunk','includeAll','include','catch','show','params','find','clone','get','omit','updatedAt','body','createdAt','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','findAll','readFileSync','join','root','utf8','render','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','/etc/asterisk/sip_xcally_registers.conf','chan_sip.so','userProfileId','Reload','server/files/templates/trunk.ejs','server/files/templates/registry.ejs','eml-format','rimraf','zip-dir','fast-json-patch','path','sox','to-csv','ejs','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','client','http','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','stringify','error','code','message','sendStatus','status','end','json','count','offset','limit','Content-Range','reject','save'];(function(_0xf9762,_0x4557f0){var _0x26ef2a=function(_0x5e34ae){while(--_0x5e34ae){_0xf9762['push'](_0xf9762['shift']());}};_0x26ef2a(++_0x4557f0);}(_0x0102,0x186));var _0x2010=function(_0xa6bf2b,_0x205cc3){_0xa6bf2b=_0xa6bf2b-0x0;var _0x3727d0=_0x0102[_0xa6bf2b];return _0x3727d0;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x2010('0x0'));var rimraf=require(_0x2010('0x1'));var zipdir=require(_0x2010('0x2'));var jsonpatch=require(_0x2010('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x2010('0x4'));var sox=require(_0x2010('0x5'));var csv=require(_0x2010('0x6'));var ejs=require(_0x2010('0x7'));var fs=require('fs');var _=require('lodash');var squel=require(_0x2010('0x8'));var crypto=require('crypto');var jsforce=require(_0x2010('0x9'));var deskjs=require(_0x2010('0xa'));var toCsv=require('to-csv');var querystring=require(_0x2010('0xb'));var Papa=require(_0x2010('0xc'));var Redis=require(_0x2010('0xd'));var authService=require(_0x2010('0xe'));var qs=require(_0x2010('0xf'));var as=require(_0x2010('0x10'));var hardwareService=require(_0x2010('0x11'));var logger=require(_0x2010('0x12'))(_0x2010('0x13'));var utils=require(_0x2010('0x14'));var config=require(_0x2010('0x15'));var db=require(_0x2010('0x16'))['db'];var jayson=require(_0x2010('0x17'));var client=jayson[_0x2010('0x18')][_0x2010('0x19')]({'port':0x232a});function checkPasswordPattern(_0x388991,_0x528a38,_0x579340){if(_0x579340){var _0x3be3d3=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(_0x3be3d3[_0x2010('0x1a')](_0x528a38)){return _0x388991;}else{throw new db[(_0x2010('0x1b'))][(_0x2010('0x1c'))](_0x2010('0x1d'));}}else{return _0x388991;}}function respondWithRpcPromise(_0x335be4,_0x517ff4,_0x3195fa,_0x136418){return new BPromise(function(_0x5ad412,_0x41e267){var _0x11c94b=_0x136418||client;return _0x11c94b[_0x2010('0x1e')](_0x335be4,_0x3195fa)[_0x2010('0x1f')](function(_0x2d0bf2){logger[_0x2010('0x20')](_0x2010('0x21'),_0x517ff4,_0x2010('0x22'));logger[_0x2010('0x23')]('Trunk,\x20%s,\x20%s,\x20%s',_0x517ff4,'request\x20sent',JSON[_0x2010('0x24')](_0x2d0bf2));if(_0x2d0bf2[_0x2010('0x25')]){if(_0x2d0bf2[_0x2010('0x25')][_0x2010('0x26')]===0x1f4){logger['error']('Trunk,\x20%s,\x20%s',_0x517ff4,_0x2d0bf2[_0x2010('0x25')][_0x2010('0x27')]);return _0x41e267(_0x2d0bf2[_0x2010('0x25')][_0x2010('0x27')]);}logger[_0x2010('0x25')](_0x2010('0x21'),_0x517ff4,_0x2d0bf2['error'][_0x2010('0x27')]);return _0x5ad412(_0x2d0bf2[_0x2010('0x25')]['message']);}else{logger['info']('Trunk,\x20%s,\x20%s',_0x517ff4,_0x2010('0x22'));_0x5ad412(_0x2d0bf2['result'][_0x2010('0x27')]);}})['catch'](function(_0x5cd8a9){logger[_0x2010('0x25')](_0x2010('0x21'),_0x517ff4,_0x5cd8a9);_0x41e267(_0x5cd8a9);});});}function respondWithStatusCode(_0x52b4fe,_0x99ebe0){_0x99ebe0=_0x99ebe0||0xcc;return function(_0x4cff59){if(_0x4cff59){return _0x52b4fe[_0x2010('0x28')](_0x99ebe0);}return _0x52b4fe[_0x2010('0x29')](_0x99ebe0)[_0x2010('0x2a')]();};}function respondWithResult(_0x3dcea4,_0x3c5862){_0x3c5862=_0x3c5862||0xc8;return function(_0x2f63bb){if(_0x2f63bb){return _0x3dcea4[_0x2010('0x29')](_0x3c5862)[_0x2010('0x2b')](_0x2f63bb);}};}function respondWithFilteredResult(_0x405f04,_0x103460){return function(_0x122ee3){if(_0x122ee3){var _0x2ebdbb=_0x122ee3[_0x2010('0x2c')],_0x499cbe=_0x103460[_0x2010('0x2d')],_0x2a4691=_0x103460[_0x2010('0x2d')]+_0x103460[_0x2010('0x2e')],_0x52fe5e;if(_0x2a4691>=_0x2ebdbb){_0x2a4691=_0x2ebdbb;_0x52fe5e=0xc8;}else{_0x52fe5e=0xce;}_0x405f04['status'](_0x52fe5e);return _0x405f04['set'](_0x2010('0x2f'),_0x499cbe+'-'+_0x2a4691+'/'+_0x2ebdbb)['json'](_0x122ee3);}return null;};}function patchUpdates(_0x2839f2){return function(_0x1d5d7a){try{jsonpatch['apply'](_0x1d5d7a,_0x2839f2,!![]);}catch(_0xe5fd24){return BPromise[_0x2010('0x30')](_0xe5fd24);}return _0x1d5d7a[_0x2010('0x31')]();};}function saveUpdates(_0x1288cf,_0x692ddc){return function(_0x4e4379){if(_0x4e4379){return _0x4e4379[_0x2010('0x32')](_0x1288cf)[_0x2010('0x1f')](function(_0x33a339){return _0x33a339;});}return null;};}function removeEntity(_0x4b6476,_0x4b1884){return function(_0x113bc0){if(_0x113bc0){return _0x113bc0[_0x2010('0x33')]()[_0x2010('0x1f')](function(){var _0x5b887e=_0x113bc0['get']({'plain':!![]});var _0xac64e1=_0x2010('0x34');return db[_0x2010('0x35')][_0x2010('0x33')]({'where':{'type':_0xac64e1,'resourceId':_0x5b887e['id']}})[_0x2010('0x1f')](function(){return _0x113bc0;});})['then'](function(){_0x4b6476['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x238129,_0x447eed){return function(_0x3a74fa){if(!_0x3a74fa){_0x238129['sendStatus'](0x194);}return _0x3a74fa;};}function handleError(_0x1f7f49,_0x2d0ee6){_0x2d0ee6=_0x2d0ee6||0x1f4;return function(_0x2009cb){logger[_0x2010('0x25')](_0x2009cb['stack']);if(_0x2009cb[_0x2010('0x36')]){delete _0x2009cb[_0x2010('0x36')];}_0x1f7f49[_0x2010('0x29')](_0x2d0ee6)['send'](_0x2009cb);};}exports[_0x2010('0x37')]=function(_0x5e5dac,_0x13f88a){var _0x194221={},_0xcababc={},_0x337711={'count':0x0,'rows':[]};var _0x7b4a4d=_[_0x2010('0x38')](db['Trunk'][_0x2010('0x39')],function(_0x4ff805){return{'name':_0x4ff805[_0x2010('0x3a')],'type':_0x4ff805[_0x2010('0x3b')][_0x2010('0x3c')]};});_0xcababc[_0x2010('0x3d')]=_[_0x2010('0x38')](_0x7b4a4d,_0x2010('0x36'));_0xcababc[_0x2010('0x3e')]=_[_0x2010('0x3f')](_0x5e5dac[_0x2010('0x3e')]);_0xcababc[_0x2010('0x40')]=_[_0x2010('0x41')](_0xcababc[_0x2010('0x3d')],_0xcababc[_0x2010('0x3e')]);_0x194221[_0x2010('0x42')]=_['intersection'](_0xcababc['model'],qs[_0x2010('0x43')](_0x5e5dac[_0x2010('0x3e')][_0x2010('0x43')]));_0x194221[_0x2010('0x42')]=_0x194221[_0x2010('0x42')][_0x2010('0x44')]?_0x194221[_0x2010('0x42')]:_0xcababc['model'];if(!_0x5e5dac[_0x2010('0x3e')]['hasOwnProperty'](_0x2010('0x45'))){_0x194221[_0x2010('0x2e')]=qs[_0x2010('0x2e')](_0x5e5dac[_0x2010('0x3e')][_0x2010('0x2e')]);_0x194221['offset']=qs[_0x2010('0x2d')](_0x5e5dac[_0x2010('0x3e')][_0x2010('0x2d')]);}_0x194221[_0x2010('0x46')]=qs['sort'](_0x5e5dac[_0x2010('0x3e')]['sort']);_0x194221['where']=qs['filters'](_[_0x2010('0x47')](_0x5e5dac[_0x2010('0x3e')],_0xcababc[_0x2010('0x40')]),_0x7b4a4d);if(_0x5e5dac[_0x2010('0x3e')][_0x2010('0x48')]){_0x194221[_0x2010('0x49')]=_['merge'](_0x194221[_0x2010('0x49')],{'$or':_[_0x2010('0x38')](_0x7b4a4d,function(_0x192a20){if(_0x192a20['type']!=='VIRTUAL'){var _0x46608e={};_0x46608e[_0x192a20['name']]={'$like':'%'+_0x5e5dac[_0x2010('0x3e')][_0x2010('0x48')]+'%'};return _0x46608e;}})});}_0x194221=_[_0x2010('0x4a')]({},_0x194221,_0x5e5dac[_0x2010('0x4b')]);var _0x53498c={'where':_0x194221[_0x2010('0x49')]};return db[_0x2010('0x4c')][_0x2010('0x2c')](_0x53498c)[_0x2010('0x1f')](function(_0x3ec24c){_0x337711[_0x2010('0x2c')]=_0x3ec24c;if(_0x5e5dac['query'][_0x2010('0x4d')]){_0x194221[_0x2010('0x4e')]=[{'all':!![]}];}return db[_0x2010('0x4c')]['findAll'](_0x194221);})[_0x2010('0x1f')](function(_0x1dd027){_0x337711['rows']=_0x1dd027;return _0x337711;})[_0x2010('0x1f')](respondWithFilteredResult(_0x13f88a,_0x194221))[_0x2010('0x4f')](handleError(_0x13f88a,null));};exports[_0x2010('0x50')]=function(_0x242274,_0x307ab6){var _0x9dc3c4={'raw':![],'where':{'id':_0x242274[_0x2010('0x51')]['id']}},_0x273241={};_0x273241['model']=_['keys'](db[_0x2010('0x4c')][_0x2010('0x39')]);_0x273241['query']=_[_0x2010('0x3f')](_0x242274[_0x2010('0x3e')]);_0x273241[_0x2010('0x40')]=_[_0x2010('0x41')](_0x273241[_0x2010('0x3d')],_0x273241['query']);_0x9dc3c4['attributes']=_[_0x2010('0x41')](_0x273241[_0x2010('0x3d')],qs[_0x2010('0x43')](_0x242274[_0x2010('0x3e')][_0x2010('0x43')]));_0x9dc3c4[_0x2010('0x42')]=_0x9dc3c4[_0x2010('0x42')][_0x2010('0x44')]?_0x9dc3c4[_0x2010('0x42')]:_0x273241[_0x2010('0x3d')];if(_0x242274[_0x2010('0x3e')]['includeAll']){_0x9dc3c4[_0x2010('0x4e')]=[{'all':!![]}];}_0x9dc3c4=_[_0x2010('0x4a')]({},_0x9dc3c4,_0x242274['options']);return db[_0x2010('0x4c')][_0x2010('0x52')](_0x9dc3c4)[_0x2010('0x1f')](handleEntityNotFound(_0x307ab6,null))[_0x2010('0x1f')](respondWithResult(_0x307ab6,null))[_0x2010('0x4f')](handleError(_0x307ab6,null));};exports[_0x2010('0x53')]=function(_0x4679c2,_0x2fba22){var _0x252863={'where':{'id':_0x4679c2[_0x2010('0x51')]['id']}},_0x2dbc2c={};_0x2dbc2c[_0x2010('0x3d')]=_[_0x2010('0x3f')](db[_0x2010('0x4c')][_0x2010('0x39')]);_0x252863[_0x2010('0x42')]=_[_0x2010('0x41')](_0x2dbc2c[_0x2010('0x3d')],qs[_0x2010('0x43')](_0x4679c2[_0x2010('0x3e')][_0x2010('0x43')]));_0x252863[_0x2010('0x42')]=_0x252863[_0x2010('0x42')]['length']?_0x252863[_0x2010('0x42')]:_0x2dbc2c['model'];if(_0x4679c2['query'][_0x2010('0x4d')]){_0x252863[_0x2010('0x4e')]=[{'all':!![]}];}_0x252863=_['merge']({},_0x252863,_0x4679c2[_0x2010('0x4b')]);return db[_0x2010('0x4c')][_0x2010('0x52')](_0x252863)[_0x2010('0x1f')](handleEntityNotFound(_0x2fba22,null))['then'](function(_0x3c6484){if(_0x3c6484){var _0x44816e=_0x3c6484[_0x2010('0x54')]({'plain':!![]});_0x44816e=qs[_0x2010('0x55')](_0x44816e,['id','createdAt',_0x2010('0x56')]);_0x4679c2['body']=_[_0x2010('0x55')](_0x4679c2[_0x2010('0x57')],['id',_0x2010('0x58'),_0x2010('0x56')]);return db['Trunk']['create'](_[_0x2010('0x4a')](_0x44816e,_0x4679c2[_0x2010('0x57')]),{'include':_0x4679c2['query']['includeAll']?[{'all':!![]}]:undefined})[_0x2010('0x1f')](function(_0x1b7387){var _0x419860=_0x4679c2[_0x2010('0x59')]['get']({'plain':!![]});if(!_0x419860)throw new Error(_0x2010('0x5a'));if(_0x419860['role']===_0x2010('0x59')){var _0x28df61=_0x1b7387[_0x2010('0x54')]({'plain':!![]});var _0x1d81e1='Trunks';return db[_0x2010('0x5b')][_0x2010('0x52')]({'where':{'name':_0x1d81e1,'userProfileId':_0x419860['userProfileId']},'raw':!![]})[_0x2010('0x1f')](function(_0x3a608e){if(_0x3a608e&&_0x3a608e[_0x2010('0x5c')]===0x0){return db[_0x2010('0x35')][_0x2010('0x5d')]({'name':_0x28df61[_0x2010('0x36')],'resourceId':_0x28df61['id'],'type':_0x3a608e[_0x2010('0x36')],'sectionId':_0x3a608e['id']},{})[_0x2010('0x1f')](function(){return _0x1b7387;});}else{return _0x1b7387;}})[_0x2010('0x4f')](function(_0x14b196){logger[_0x2010('0x25')](_0x2010('0x5e'),_0x14b196);throw _0x14b196;});}return _0x1b7387;});}})['then'](respondWithResult(_0x2fba22,0xc9))[_0x2010('0x4f')](handleError(_0x2fba22,null));};exports[_0x2010('0x5d')]=function(_0x124f3e,_0x5f5230,_0x5ca75a){var _0x24466f;return db[_0x2010('0x4c')][_0x2010('0x5d')](_0x124f3e[_0x2010('0x57')],{'raw':!![]})[_0x2010('0x1f')](function(_0x33758d){_0x24466f=_0x33758d;return db['Trunk'][_0x2010('0x5f')]({'raw':!![]});})[_0x2010('0x1f')](function(_0x2facf8){var _0x4d637c=fs[_0x2010('0x60')](path[_0x2010('0x61')](config[_0x2010('0x62')],'server/files/templates/trunk.ejs'),_0x2010('0x63'));var _0x22f654=fs['readFileSync'](path['join'](config[_0x2010('0x62')],'server/files/templates/registry.ejs'),'utf8');var _0x166143=ejs[_0x2010('0x64')](_0x4d637c,{'trunks':_0x2facf8||[]});fs[_0x2010('0x65')](_0x2010('0x66'),_0x166143);if(_0x24466f[_0x2010('0x67')]){var _0x262391=ejs[_0x2010('0x64')](_0x22f654,{'trunks':_0x2facf8||[]});fs[_0x2010('0x65')](_0x2010('0x68'),_0x262391);}})[_0x2010('0x1f')](function(){return respondWithRpcPromise('Reload',_0x2010('0x5d'),{'module':_0x2010('0x69')});})['then'](function(){var _0x449295=_0x124f3e[_0x2010('0x59')][_0x2010('0x54')]({'plain':!![]});if(!_0x449295)throw new Error(_0x2010('0x5a'));if(_0x449295['role']===_0x2010('0x59')){var _0x2a5cb3=_0x24466f['get']({'plain':!![]});return db['UserProfileSection'][_0x2010('0x52')]({'where':{'name':'Trunks','userProfileId':_0x449295[_0x2010('0x6a')]},'raw':!![]})[_0x2010('0x1f')](function(_0x27d1d0){if(_0x27d1d0&&_0x27d1d0[_0x2010('0x5c')]===0x0){return db[_0x2010('0x35')][_0x2010('0x5d')]({'name':_0x2a5cb3[_0x2010('0x36')],'resourceId':_0x2a5cb3['id'],'type':_0x27d1d0['name'],'sectionId':_0x27d1d0['id']},{})[_0x2010('0x1f')](function(){return _0x24466f;});}else{return _0x24466f;}})[_0x2010('0x4f')](function(_0x3c32c0){logger['error'](_0x2010('0x5e'),_0x3c32c0);throw _0x3c32c0;});}return _0x24466f;})[_0x2010('0x1f')](respondWithResult(_0x5f5230,0xc9))[_0x2010('0x4f')](handleError(_0x5f5230,null));};exports[_0x2010('0x32')]=function(_0x5aeafd,_0x41c3cc,_0x40885b){var _0x120c26;return db['Trunk'][_0x2010('0x52')]({'where':{'id':_0x5aeafd[_0x2010('0x51')]['id']}})[_0x2010('0x1f')](handleEntityNotFound(_0x41c3cc,null))['then'](saveUpdates(_0x5aeafd[_0x2010('0x57')],null))[_0x2010('0x1f')](function(_0x490483){if(_0x490483){_0x120c26=_0x490483;return db[_0x2010('0x4c')][_0x2010('0x5f')]({'raw':!![]});}})[_0x2010('0x1f')](function(_0x61921d){if(_0x61921d){var _0x38e733=fs['readFileSync'](path[_0x2010('0x61')](config[_0x2010('0x62')],'server/files/templates/trunk.ejs'),_0x2010('0x63'));var _0x3f31db=fs['readFileSync'](path[_0x2010('0x61')](config['root'],'server/files/templates/registry.ejs'),_0x2010('0x63'));var _0x17f7c5=ejs[_0x2010('0x64')](_0x38e733,{'trunks':_0x61921d||[]});fs[_0x2010('0x65')](_0x2010('0x66'),_0x17f7c5);var _0x16650a=ejs['render'](_0x3f31db,{'trunks':_0x61921d||[]});fs[_0x2010('0x65')](_0x2010('0x68'),_0x16650a);return respondWithRpcPromise(_0x2010('0x6b'),_0x2010('0x32'),{'module':'chan_sip.so'});}return null;})[_0x2010('0x1f')](function(_0x48b45b){if(_0x48b45b){return _0x120c26;}})[_0x2010('0x1f')](respondWithResult(_0x41c3cc,null))[_0x2010('0x4f')](handleError(_0x41c3cc,null));};exports[_0x2010('0x33')]=function(_0x15f51a,_0x4d0e44,_0x496280){var _0x4e3cc9;return db[_0x2010('0x4c')]['find']({'where':{'id':_0x15f51a[_0x2010('0x51')]['id']}})[_0x2010('0x1f')](handleEntityNotFound(_0x4d0e44,null))['then'](removeEntity(_0x4d0e44,null))[_0x2010('0x1f')](function(){return db['Trunk'][_0x2010('0x5f')]({'raw':!![]});})[_0x2010('0x1f')](function(_0x3506c7){var _0x29c057=fs['readFileSync'](path['join'](config['root'],_0x2010('0x6c')),_0x2010('0x63'));var _0x5021c1=fs[_0x2010('0x60')](path['join'](config[_0x2010('0x62')],_0x2010('0x6d')),_0x2010('0x63'));var _0x3fc848=ejs[_0x2010('0x64')](_0x29c057,{'trunks':_0x3506c7});var _0x21ac94=ejs[_0x2010('0x64')](_0x5021c1,{'trunks':_0x3506c7});fs['writeFileSync'](_0x2010('0x66'),_0x3fc848);fs[_0x2010('0x65')]('/etc/asterisk/sip_xcally_registers.conf',_0x21ac94);return respondWithRpcPromise(_0x2010('0x6b'),_0x2010('0x33'),{'module':_0x2010('0x69')});})[_0x2010('0x4f')](handleError(_0x4d0e44,null));};