0f652656017cea4d032d00524d4f139b822dc3f3
[motion2.git] / server / api / network / network.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 _0xc1c6=['../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','info','debug','Network,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','Network,\x20%s,\x20%s','result','catch','sendStatus','status','end','count','offset','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','stack','name','send','index','map','Network','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','params','find','sequelize','transaction','create','body','STUN','readFileSync','join','root','server/files/templates/stun_multiple.ejs','utf8','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','format','toLowerCase','toUpperCase','TURN','chan_sip.so','/etc/asterisk/sip_xcally_%s.conf','html-pdf','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x47032a,_0x3750d3){var _0x5609ba=function(_0x4428ce){while(--_0x4428ce){_0x47032a['push'](_0x47032a['shift']());}};_0x5609ba(++_0x3750d3);}(_0xc1c6,0xd0));var _0x6c1c=function(_0x1eb5c5,_0x4e1319){_0x1eb5c5=_0x1eb5c5-0x0;var _0x705f8e=_0xc1c6[_0x1eb5c5];return _0x705f8e;};'use strict';var pdf=require(_0x6c1c('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x6c1c('0x1'));var zipdir=require(_0x6c1c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6c1c('0x3'));var moment=require(_0x6c1c('0x4'));var BPromise=require(_0x6c1c('0x5'));var Mustache=require(_0x6c1c('0x6'));var util=require(_0x6c1c('0x7'));var path=require(_0x6c1c('0x8'));var sox=require('sox');var csv=require(_0x6c1c('0x9'));var ejs=require(_0x6c1c('0xa'));var fs=require('fs');var _=require(_0x6c1c('0xb'));var squel=require(_0x6c1c('0xc'));var crypto=require('crypto');var jsforce=require(_0x6c1c('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x6c1c('0xe'));var Papa=require(_0x6c1c('0xf'));var Redis=require(_0x6c1c('0x10'));var authService=require(_0x6c1c('0x11'));var qs=require(_0x6c1c('0x12'));var as=require(_0x6c1c('0x13'));var hardwareService=require(_0x6c1c('0x14'));var logger=require(_0x6c1c('0x15'))('api');var utils=require(_0x6c1c('0x16'));var config=require(_0x6c1c('0x17'));var licenseUtil=require(_0x6c1c('0x18'));var db=require(_0x6c1c('0x19'))['db'];var jayson=require(_0x6c1c('0x1a'));var client=jayson[_0x6c1c('0x1b')][_0x6c1c('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x32bc67,_0x39d1cf,_0x24060f,_0x5c1c84){return new BPromise(function(_0x1db64a,_0x3550b8){var _0x57c3b6=_0x5c1c84||client;return _0x57c3b6[_0x6c1c('0x1d')](_0x32bc67,_0x24060f)['then'](function(_0x379eda){logger[_0x6c1c('0x1e')]('Network,\x20%s,\x20%s',_0x39d1cf,'request\x20sent');logger[_0x6c1c('0x1f')](_0x6c1c('0x20'),_0x39d1cf,_0x6c1c('0x21'),JSON[_0x6c1c('0x22')](_0x379eda));if(_0x379eda[_0x6c1c('0x23')]){if(_0x379eda[_0x6c1c('0x23')][_0x6c1c('0x24')]===0x1f4){logger['error']('Network,\x20%s,\x20%s',_0x39d1cf,_0x379eda[_0x6c1c('0x23')][_0x6c1c('0x25')]);return _0x3550b8(_0x379eda[_0x6c1c('0x23')]['message']);}logger['error'](_0x6c1c('0x26'),_0x39d1cf,_0x379eda['error'][_0x6c1c('0x25')]);return _0x1db64a(_0x379eda[_0x6c1c('0x23')][_0x6c1c('0x25')]);}else{logger['info'](_0x6c1c('0x26'),_0x39d1cf,_0x6c1c('0x21'));_0x1db64a(_0x379eda[_0x6c1c('0x27')]['message']);}})[_0x6c1c('0x28')](function(_0x1f2d0b){logger[_0x6c1c('0x23')]('Network,\x20%s,\x20%s',_0x39d1cf,_0x1f2d0b);_0x3550b8(_0x1f2d0b);});});}function respondWithStatusCode(_0x20ddf1,_0xdba07d){_0xdba07d=_0xdba07d||0xcc;return function(_0x4fd5c1){if(_0x4fd5c1){return _0x20ddf1[_0x6c1c('0x29')](_0xdba07d);}return _0x20ddf1[_0x6c1c('0x2a')](_0xdba07d)[_0x6c1c('0x2b')]();};}function respondWithResult(_0x313676,_0x31af49){_0x31af49=_0x31af49||0xc8;return function(_0x25af89){if(_0x25af89){return _0x313676[_0x6c1c('0x2a')](_0x31af49)['json'](_0x25af89);}};}function respondWithFilteredResult(_0x1f0d82,_0x2385a4){return function(_0x449dbe){if(_0x449dbe){var _0x8bf346=_0x449dbe[_0x6c1c('0x2c')],_0x2f68b6=_0x2385a4[_0x6c1c('0x2d')],_0x218b21=_0x2385a4['offset']+_0x2385a4[_0x6c1c('0x2e')],_0x2c2471;if(_0x218b21>=_0x8bf346){_0x218b21=_0x8bf346;_0x2c2471=0xc8;}else{_0x2c2471=0xce;}_0x1f0d82[_0x6c1c('0x2a')](_0x2c2471);return _0x1f0d82[_0x6c1c('0x2f')](_0x6c1c('0x30'),_0x2f68b6+'-'+_0x218b21+'/'+_0x8bf346)[_0x6c1c('0x31')](_0x449dbe);}return null;};}function patchUpdates(_0x4128e1){return function(_0x10b846){try{jsonpatch[_0x6c1c('0x32')](_0x10b846,_0x4128e1,!![]);}catch(_0x4ce947){return BPromise[_0x6c1c('0x33')](_0x4ce947);}return _0x10b846[_0x6c1c('0x34')]();};}function saveUpdates(_0x54f8ae,_0x1ff8b1){return function(_0x578687){if(_0x578687){return _0x578687[_0x6c1c('0x35')](_0x54f8ae)[_0x6c1c('0x36')](function(_0x295817){return _0x295817;});}return null;};}function removeEntity(_0x286924,_0x466216){return function(_0x4de97c){if(_0x4de97c){return _0x4de97c[_0x6c1c('0x37')]()[_0x6c1c('0x36')](function(){_0x286924['status'](0xcc)[_0x6c1c('0x2b')]();});}};}function handleEntityNotFound(_0x166d8d,_0x31d10a){return function(_0x446904){if(!_0x446904){_0x166d8d[_0x6c1c('0x29')](0x194);}return _0x446904;};}function handleError(_0x3d4628,_0x307dca){_0x307dca=_0x307dca||0x1f4;return function(_0x4437dd){logger[_0x6c1c('0x23')](_0x4437dd[_0x6c1c('0x38')]);if(_0x4437dd[_0x6c1c('0x39')]){delete _0x4437dd['name'];}_0x3d4628['status'](_0x307dca)[_0x6c1c('0x3a')](_0x4437dd);};}exports[_0x6c1c('0x3b')]=function(_0x58b1d7,_0x3e8ab7){var _0x56747d={},_0x2493d5={},_0x161b85={'count':0x0,'rows':[]};var _0x1076d3=_[_0x6c1c('0x3c')](db[_0x6c1c('0x3d')][_0x6c1c('0x3e')],function(_0x4dbf7b){return{'name':_0x4dbf7b[_0x6c1c('0x3f')],'type':_0x4dbf7b[_0x6c1c('0x40')][_0x6c1c('0x41')]};});_0x2493d5[_0x6c1c('0x42')]=_[_0x6c1c('0x3c')](_0x1076d3,_0x6c1c('0x39'));_0x2493d5['query']=_[_0x6c1c('0x43')](_0x58b1d7[_0x6c1c('0x44')]);_0x2493d5[_0x6c1c('0x45')]=_[_0x6c1c('0x46')](_0x2493d5[_0x6c1c('0x42')],_0x2493d5[_0x6c1c('0x44')]);_0x56747d[_0x6c1c('0x47')]=_[_0x6c1c('0x46')](_0x2493d5[_0x6c1c('0x42')],qs[_0x6c1c('0x48')](_0x58b1d7[_0x6c1c('0x44')][_0x6c1c('0x48')]));_0x56747d[_0x6c1c('0x47')]=_0x56747d[_0x6c1c('0x47')]['length']?_0x56747d[_0x6c1c('0x47')]:_0x2493d5['model'];if(!_0x58b1d7[_0x6c1c('0x44')][_0x6c1c('0x49')](_0x6c1c('0x4a'))){_0x56747d[_0x6c1c('0x2e')]=qs[_0x6c1c('0x2e')](_0x58b1d7['query'][_0x6c1c('0x2e')]);_0x56747d['offset']=qs[_0x6c1c('0x2d')](_0x58b1d7[_0x6c1c('0x44')]['offset']);}_0x56747d[_0x6c1c('0x4b')]=qs[_0x6c1c('0x4c')](_0x58b1d7[_0x6c1c('0x44')][_0x6c1c('0x4c')]);_0x56747d[_0x6c1c('0x4d')]=qs[_0x6c1c('0x45')](_[_0x6c1c('0x4e')](_0x58b1d7[_0x6c1c('0x44')],_0x2493d5[_0x6c1c('0x45')]),_0x1076d3);if(_0x58b1d7[_0x6c1c('0x44')][_0x6c1c('0x4f')]){_0x56747d[_0x6c1c('0x4d')]=_['merge'](_0x56747d[_0x6c1c('0x4d')],{'$or':_[_0x6c1c('0x3c')](_0x1076d3,function(_0x551f38){if(_0x551f38['type']!==_0x6c1c('0x50')){var _0x37bb40={};_0x37bb40[_0x551f38['name']]={'$like':'%'+_0x58b1d7[_0x6c1c('0x44')][_0x6c1c('0x4f')]+'%'};return _0x37bb40;}})});}_0x56747d=_[_0x6c1c('0x51')]({},_0x56747d,_0x58b1d7[_0x6c1c('0x52')]);var _0x353188={'where':_0x56747d[_0x6c1c('0x4d')]};return db['Network']['count'](_0x353188)[_0x6c1c('0x36')](function(_0x535c75){_0x161b85[_0x6c1c('0x2c')]=_0x535c75;if(_0x58b1d7[_0x6c1c('0x44')][_0x6c1c('0x53')]){_0x56747d[_0x6c1c('0x54')]=[{'all':!![]}];}return db[_0x6c1c('0x3d')][_0x6c1c('0x55')](_0x56747d);})['then'](function(_0x466d69){_0x161b85[_0x6c1c('0x56')]=_0x466d69;return _0x161b85;})[_0x6c1c('0x36')](respondWithFilteredResult(_0x3e8ab7,_0x56747d))[_0x6c1c('0x28')](handleError(_0x3e8ab7,null));};exports[_0x6c1c('0x57')]=function(_0x8c3917,_0x3c8a34){var _0x221b42={'raw':!![],'where':{'id':_0x8c3917[_0x6c1c('0x58')]['id']}},_0x33a147={};_0x33a147[_0x6c1c('0x42')]=_['keys'](db[_0x6c1c('0x3d')]['rawAttributes']);_0x33a147[_0x6c1c('0x44')]=_[_0x6c1c('0x43')](_0x8c3917[_0x6c1c('0x44')]);_0x33a147['filters']=_[_0x6c1c('0x46')](_0x33a147['model'],_0x33a147['query']);_0x221b42[_0x6c1c('0x47')]=_['intersection'](_0x33a147[_0x6c1c('0x42')],qs[_0x6c1c('0x48')](_0x8c3917[_0x6c1c('0x44')][_0x6c1c('0x48')]));_0x221b42['attributes']=_0x221b42['attributes']['length']?_0x221b42[_0x6c1c('0x47')]:_0x33a147[_0x6c1c('0x42')];if(_0x8c3917[_0x6c1c('0x44')][_0x6c1c('0x53')]){_0x221b42[_0x6c1c('0x54')]=[{'all':!![]}];}_0x221b42=_[_0x6c1c('0x51')]({},_0x221b42,_0x8c3917['options']);return db[_0x6c1c('0x3d')][_0x6c1c('0x59')](_0x221b42)[_0x6c1c('0x36')](handleEntityNotFound(_0x3c8a34,null))[_0x6c1c('0x36')](respondWithResult(_0x3c8a34,null))['catch'](handleError(_0x3c8a34,null));};exports['create']=function(_0x5e0f38,_0xec561,_0x5545b8){var _0x124a04;return db[_0x6c1c('0x5a')][_0x6c1c('0x5b')](function(_0xf96f1c){return db['Network'][_0x6c1c('0x5c')](_0x5e0f38['body'],{'raw':!![]})[_0x6c1c('0x36')](function(_0x55de11){_0x124a04=_0x55de11;return db['Network']['findAll']({'where':{'type':_0x5e0f38[_0x6c1c('0x5d')]['type']},'raw':!![]});})['then'](function(_0x4e5266){if(_0x124a04[_0x6c1c('0x40')]['toUpperCase']()==_0x6c1c('0x5e')){var _0x4c6ff2=fs[_0x6c1c('0x5f')](path[_0x6c1c('0x60')](config[_0x6c1c('0x61')],_0x6c1c('0x62')),_0x6c1c('0x63'));var _0x30827f=ejs[_0x6c1c('0x64')](_0x4c6ff2,{'networks':_0x4e5266||[]});fs[_0x6c1c('0x65')](_0x6c1c('0x66'),_0x30827f);return respondWithRpcPromise(_0x6c1c('0x67'),'create',{'module':_0x6c1c('0x68')});}else if(_0x124a04['type']['toUpperCase']()=='TURN'){var _0x2f8297=fs[_0x6c1c('0x5f')](path[_0x6c1c('0x60')](config['root'],_0x6c1c('0x69')),_0x6c1c('0x63'));var _0x3f1b9b=ejs[_0x6c1c('0x64')](_0x2f8297,{'networks':_0x4e5266||[]});fs[_0x6c1c('0x65')](_0x6c1c('0x6a'),_0x3f1b9b);return respondWithRpcPromise(_0x6c1c('0x67'),_0x6c1c('0x5c'),{'module':_0x6c1c('0x68')});}else{var _0x4829a4=fs['readFileSync'](path[_0x6c1c('0x60')](config[_0x6c1c('0x61')],_0x6c1c('0x6b')),_0x6c1c('0x63'));var _0x4b99f0=ejs[_0x6c1c('0x64')](_0x4829a4,{'networks':_0x4e5266||[]});fs[_0x6c1c('0x65')](util[_0x6c1c('0x6c')]('/etc/asterisk/sip_xcally_%s.conf',_0x5e0f38[_0x6c1c('0x5d')][_0x6c1c('0x40')][_0x6c1c('0x6d')]()),_0x4b99f0);return respondWithRpcPromise(_0x6c1c('0x67'),'create',{'module':'chan_sip.so'});}return null;})[_0x6c1c('0x36')](function(){return _0x124a04;});})[_0x6c1c('0x36')](respondWithResult(_0xec561,0xc9))[_0x6c1c('0x28')](handleError(_0xec561,null));};exports[_0x6c1c('0x35')]=function(_0x21fcd0,_0x2fbd71,_0x2c0434){var _0x2f5b29;return db[_0x6c1c('0x5a')][_0x6c1c('0x5b')](function(_0x4ad009){return db[_0x6c1c('0x3d')][_0x6c1c('0x59')]({'where':{'id':_0x21fcd0['params']['id']}})[_0x6c1c('0x36')](handleEntityNotFound(_0x2fbd71,null))[_0x6c1c('0x36')](saveUpdates(_0x21fcd0[_0x6c1c('0x5d')],null))[_0x6c1c('0x36')](function(_0x306ff0){if(_0x306ff0){_0x2f5b29=_0x306ff0;return db[_0x6c1c('0x3d')][_0x6c1c('0x55')]({'where':{'type':_0x2f5b29['type']},'raw':!![]});}return null;})[_0x6c1c('0x36')](function(_0x3eda67){if(_0x2f5b29[_0x6c1c('0x40')][_0x6c1c('0x6e')]()=='STUN'){var _0x359d1e=fs[_0x6c1c('0x5f')](path[_0x6c1c('0x60')](config['root'],_0x6c1c('0x62')),_0x6c1c('0x63'));var _0x1d8995=ejs['render'](_0x359d1e,{'networks':_0x3eda67||[]});fs[_0x6c1c('0x65')]('/etc/asterisk/stun_xcally.conf',_0x1d8995);return respondWithRpcPromise(_0x6c1c('0x67'),'update',{'module':_0x6c1c('0x68')});}else if(_0x2f5b29[_0x6c1c('0x40')][_0x6c1c('0x6e')]()==_0x6c1c('0x6f')){var _0x3e6e33=fs[_0x6c1c('0x5f')](path[_0x6c1c('0x60')](config[_0x6c1c('0x61')],_0x6c1c('0x69')),_0x6c1c('0x63'));var _0x3c2208=ejs['render'](_0x3e6e33,{'networks':_0x3eda67||[]});fs[_0x6c1c('0x65')]('/etc/asterisk/turn_xcally.conf',_0x3c2208);return respondWithRpcPromise(_0x6c1c('0x67'),'update',{'module':_0x6c1c('0x68')});}else{var _0x247d43=fs[_0x6c1c('0x5f')](path[_0x6c1c('0x60')](config[_0x6c1c('0x61')],'server/files/templates/network.ejs'),_0x6c1c('0x63'));var _0x27c2fc=ejs['render'](_0x247d43,{'networks':_0x3eda67||[]});fs[_0x6c1c('0x65')](util[_0x6c1c('0x6c')]('/etc/asterisk/sip_xcally_%s.conf',_0x21fcd0['body'][_0x6c1c('0x40')][_0x6c1c('0x6d')]()),_0x27c2fc);return respondWithRpcPromise('Reload',_0x6c1c('0x35'),{'module':_0x6c1c('0x70')});}return null;})[_0x6c1c('0x36')](function(_0x4a892d){if(_0x4a892d){return _0x2f5b29;}return null;});})[_0x6c1c('0x36')](respondWithResult(_0x2fbd71,null))[_0x6c1c('0x28')](handleError(_0x2fbd71,null));};exports[_0x6c1c('0x37')]=function(_0x58d23b,_0x87a061,_0x218adb){var _0x4a8e96;return db[_0x6c1c('0x3d')]['find']({'where':{'id':_0x58d23b['params']['id']}})['then'](function(_0x2fa807){_0x4a8e96=_0x2fa807;return _0x2fa807;})[_0x6c1c('0x36')](handleEntityNotFound(_0x87a061,null))['then'](removeEntity(_0x87a061,null))['then'](function(){if(_0x4a8e96){return db[_0x6c1c('0x3d')]['findAll']({'where':{'type':_0x4a8e96[_0x6c1c('0x40')]},'raw':!![]});}})[_0x6c1c('0x36')](function(_0x307411){if(_0x4a8e96['type']['toUpperCase']()==_0x6c1c('0x5e')){var _0x49d119=fs[_0x6c1c('0x5f')](path[_0x6c1c('0x60')](config[_0x6c1c('0x61')],_0x6c1c('0x62')),'utf8');var _0x14014e=ejs[_0x6c1c('0x64')](_0x49d119,{'networks':_0x307411||[]});fs['writeFileSync'](_0x6c1c('0x66'),_0x14014e);return respondWithRpcPromise(_0x6c1c('0x67'),_0x6c1c('0x37'),{'module':_0x6c1c('0x68')});}else if(_0x4a8e96[_0x6c1c('0x40')]['toUpperCase']()=='TURN'){var _0x460d28=fs[_0x6c1c('0x5f')](path[_0x6c1c('0x60')](config[_0x6c1c('0x61')],_0x6c1c('0x69')),_0x6c1c('0x63'));var _0x35d8af=ejs[_0x6c1c('0x64')](_0x460d28,{'networks':_0x307411||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0x35d8af);return respondWithRpcPromise(_0x6c1c('0x67'),_0x6c1c('0x37'),{'module':_0x6c1c('0x68')});}else{var _0x38e053=fs['readFileSync'](path['join'](config[_0x6c1c('0x61')],'server/files/templates/network.ejs'),'utf8');var _0x5e3828=ejs['render'](_0x38e053,{'networks':_0x307411||[]});fs[_0x6c1c('0x65')](util['format'](_0x6c1c('0x71'),_0x58d23b[_0x6c1c('0x5d')][_0x6c1c('0x40')][_0x6c1c('0x6d')]()),_0x5e3828);return respondWithRpcPromise(_0x6c1c('0x67'),'destroy',{'module':'chan_sip.so'});}return null;})['catch'](handleError(_0x87a061,null));};