c0cec5026a3ced93ab1327f26ac962843d749427
[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 _0x6b9c=['rows','show','params','keys','body','toUpperCase','STUN','readFileSync','join','root','server/files/templates/stun_multiple.ejs','utf8','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','create','TURN','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','sequelize','transaction','res_stun_monitor.so','find','server/files/templates/turn_multiple.ejs','html-pdf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','jayson/promise','client','request','then','info','Network,\x20%s,\x20%s','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','status','end','json','count','offset','limit','set','Content-Range','apply','reject','update','destroy','sendStatus','stack','name','send','index','Network','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','fields','attributes','length','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll'];(function(_0x26793a,_0x49cf51){var _0x575efb=function(_0x2f4db7){while(--_0x2f4db7){_0x26793a['push'](_0x26793a['shift']());}};_0x575efb(++_0x49cf51);}(_0x6b9c,0x8a));var _0xc6b9=function(_0x29914a,_0x380e39){_0x29914a=_0x29914a-0x0;var _0x37fb65=_0x6b9c[_0x29914a];return _0x37fb65;};'use strict';var pdf=require(_0xc6b9('0x0'));var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xc6b9('0x1'));var jsonpatch=require(_0xc6b9('0x2'));var rp=require(_0xc6b9('0x3'));var moment=require(_0xc6b9('0x4'));var BPromise=require(_0xc6b9('0x5'));var Mustache=require(_0xc6b9('0x6'));var util=require(_0xc6b9('0x7'));var path=require(_0xc6b9('0x8'));var sox=require('sox');var csv=require(_0xc6b9('0x9'));var ejs=require(_0xc6b9('0xa'));var fs=require('fs');var _=require(_0xc6b9('0xb'));var squel=require(_0xc6b9('0xc'));var crypto=require(_0xc6b9('0xd'));var jsforce=require(_0xc6b9('0xe'));var deskjs=require(_0xc6b9('0xf'));var toCsv=require('to-csv');var querystring=require(_0xc6b9('0x10'));var Papa=require(_0xc6b9('0x11'));var Redis=require(_0xc6b9('0x12'));var authService=require(_0xc6b9('0x13'));var qs=require(_0xc6b9('0x14'));var as=require(_0xc6b9('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc6b9('0x16'))('api');var utils=require(_0xc6b9('0x17'));var config=require(_0xc6b9('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var jayson=require(_0xc6b9('0x19'));var client=jayson[_0xc6b9('0x1a')]['http']({'port':0x232a});function respondWithRpcPromise(_0x275984,_0x2a0206,_0xfe23f3,_0x5ab07b){return new BPromise(function(_0x5842c5,_0x134c5e){var _0x4175e7=_0x5ab07b||client;return _0x4175e7[_0xc6b9('0x1b')](_0x275984,_0xfe23f3)[_0xc6b9('0x1c')](function(_0x5ef14c){logger[_0xc6b9('0x1d')](_0xc6b9('0x1e'),_0x2a0206,'request\x20sent');logger[_0xc6b9('0x1f')](_0xc6b9('0x20'),_0x2a0206,'request\x20sent',JSON[_0xc6b9('0x21')](_0x5ef14c));if(_0x5ef14c[_0xc6b9('0x22')]){if(_0x5ef14c[_0xc6b9('0x22')]['code']===0x1f4){logger[_0xc6b9('0x22')]('Network,\x20%s,\x20%s',_0x2a0206,_0x5ef14c[_0xc6b9('0x22')]['message']);return _0x134c5e(_0x5ef14c['error'][_0xc6b9('0x23')]);}logger[_0xc6b9('0x22')]('Network,\x20%s,\x20%s',_0x2a0206,_0x5ef14c['error'][_0xc6b9('0x23')]);return _0x5842c5(_0x5ef14c[_0xc6b9('0x22')]['message']);}else{logger[_0xc6b9('0x1d')](_0xc6b9('0x1e'),_0x2a0206,'request\x20sent');_0x5842c5(_0x5ef14c[_0xc6b9('0x24')][_0xc6b9('0x23')]);}})[_0xc6b9('0x25')](function(_0x52f001){logger[_0xc6b9('0x22')](_0xc6b9('0x1e'),_0x2a0206,_0x52f001);_0x134c5e(_0x52f001);});});}function respondWithStatusCode(_0x1d1dbd,_0x428236){_0x428236=_0x428236||0xcc;return function(_0x315000){if(_0x315000){return _0x1d1dbd['sendStatus'](_0x428236);}return _0x1d1dbd[_0xc6b9('0x26')](_0x428236)[_0xc6b9('0x27')]();};}function respondWithResult(_0x5b6e7a,_0x150e01){_0x150e01=_0x150e01||0xc8;return function(_0xf37760){if(_0xf37760){return _0x5b6e7a['status'](_0x150e01)[_0xc6b9('0x28')](_0xf37760);}};}function respondWithFilteredResult(_0x1898b8,_0x4ed301){return function(_0x3fd499){if(_0x3fd499){var _0xe61ff0=_0x3fd499[_0xc6b9('0x29')],_0x1b285a=_0x4ed301[_0xc6b9('0x2a')],_0x265eec=_0x4ed301['offset']+_0x4ed301[_0xc6b9('0x2b')],_0x2ce824;if(_0x265eec>=_0xe61ff0){_0x265eec=_0xe61ff0;_0x2ce824=0xc8;}else{_0x2ce824=0xce;}_0x1898b8[_0xc6b9('0x26')](_0x2ce824);return _0x1898b8[_0xc6b9('0x2c')](_0xc6b9('0x2d'),_0x1b285a+'-'+_0x265eec+'/'+_0xe61ff0)[_0xc6b9('0x28')](_0x3fd499);}return null;};}function patchUpdates(_0x2455fc){return function(_0x4dc729){try{jsonpatch[_0xc6b9('0x2e')](_0x4dc729,_0x2455fc,!![]);}catch(_0x2d09fb){return BPromise[_0xc6b9('0x2f')](_0x2d09fb);}return _0x4dc729['save']();};}function saveUpdates(_0x5a1489,_0x25e970){return function(_0x1ea0ae){if(_0x1ea0ae){return _0x1ea0ae[_0xc6b9('0x30')](_0x5a1489)[_0xc6b9('0x1c')](function(_0xd067fc){return _0xd067fc;});}return null;};}function removeEntity(_0x3f2676,_0x76b715){return function(_0x2c7ba7){if(_0x2c7ba7){return _0x2c7ba7[_0xc6b9('0x31')]()[_0xc6b9('0x1c')](function(){_0x3f2676['status'](0xcc)[_0xc6b9('0x27')]();});}};}function handleEntityNotFound(_0x1a8dbe,_0x5af41d){return function(_0xe258da){if(!_0xe258da){_0x1a8dbe[_0xc6b9('0x32')](0x194);}return _0xe258da;};}function handleError(_0x31f176,_0x36ee05){_0x36ee05=_0x36ee05||0x1f4;return function(_0x1edf2b){logger[_0xc6b9('0x22')](_0x1edf2b[_0xc6b9('0x33')]);if(_0x1edf2b[_0xc6b9('0x34')]){delete _0x1edf2b[_0xc6b9('0x34')];}_0x31f176[_0xc6b9('0x26')](_0x36ee05)[_0xc6b9('0x35')](_0x1edf2b);};}exports[_0xc6b9('0x36')]=function(_0xde6137,_0x31c533){var _0x4b24d6={},_0x2ba7e6={},_0x5e6173={'count':0x0,'rows':[]};var _0x3c0aa2=_['map'](db[_0xc6b9('0x37')][_0xc6b9('0x38')],function(_0x2bb48d){return{'name':_0x2bb48d[_0xc6b9('0x39')],'type':_0x2bb48d[_0xc6b9('0x3a')][_0xc6b9('0x3b')]};});_0x2ba7e6[_0xc6b9('0x3c')]=_[_0xc6b9('0x3d')](_0x3c0aa2,_0xc6b9('0x34'));_0x2ba7e6[_0xc6b9('0x3e')]=_['keys'](_0xde6137[_0xc6b9('0x3e')]);_0x2ba7e6[_0xc6b9('0x3f')]=_[_0xc6b9('0x40')](_0x2ba7e6['model'],_0x2ba7e6[_0xc6b9('0x3e')]);_0x4b24d6['attributes']=_[_0xc6b9('0x40')](_0x2ba7e6['model'],qs[_0xc6b9('0x41')](_0xde6137[_0xc6b9('0x3e')][_0xc6b9('0x41')]));_0x4b24d6['attributes']=_0x4b24d6[_0xc6b9('0x42')][_0xc6b9('0x43')]?_0x4b24d6[_0xc6b9('0x42')]:_0x2ba7e6[_0xc6b9('0x3c')];if(!_0xde6137[_0xc6b9('0x3e')]['hasOwnProperty'](_0xc6b9('0x44'))){_0x4b24d6[_0xc6b9('0x2b')]=qs['limit'](_0xde6137['query']['limit']);_0x4b24d6[_0xc6b9('0x2a')]=qs['offset'](_0xde6137[_0xc6b9('0x3e')][_0xc6b9('0x2a')]);}_0x4b24d6[_0xc6b9('0x45')]=qs[_0xc6b9('0x46')](_0xde6137[_0xc6b9('0x3e')][_0xc6b9('0x46')]);_0x4b24d6['where']=qs[_0xc6b9('0x3f')](_[_0xc6b9('0x47')](_0xde6137[_0xc6b9('0x3e')],_0x2ba7e6[_0xc6b9('0x3f')]),_0x3c0aa2);if(_0xde6137[_0xc6b9('0x3e')][_0xc6b9('0x48')]){_0x4b24d6[_0xc6b9('0x49')]=_[_0xc6b9('0x4a')](_0x4b24d6[_0xc6b9('0x49')],{'$or':_[_0xc6b9('0x3d')](_0x3c0aa2,function(_0x1b1da4){if(_0x1b1da4['type']!==_0xc6b9('0x4b')){var _0x1f95aa={};_0x1f95aa[_0x1b1da4[_0xc6b9('0x34')]]={'$like':'%'+_0xde6137[_0xc6b9('0x3e')]['filter']+'%'};return _0x1f95aa;}})});}_0x4b24d6=_[_0xc6b9('0x4a')]({},_0x4b24d6,_0xde6137[_0xc6b9('0x4c')]);var _0x1659e6={'where':_0x4b24d6[_0xc6b9('0x49')]};return db[_0xc6b9('0x37')]['count'](_0x1659e6)[_0xc6b9('0x1c')](function(_0x1896f2){_0x5e6173[_0xc6b9('0x29')]=_0x1896f2;if(_0xde6137[_0xc6b9('0x3e')][_0xc6b9('0x4d')]){_0x4b24d6[_0xc6b9('0x4e')]=[{'all':!![]}];}return db[_0xc6b9('0x37')][_0xc6b9('0x4f')](_0x4b24d6);})[_0xc6b9('0x1c')](function(_0xfb6bdf){_0x5e6173[_0xc6b9('0x50')]=_0xfb6bdf;return _0x5e6173;})['then'](respondWithFilteredResult(_0x31c533,_0x4b24d6))[_0xc6b9('0x25')](handleError(_0x31c533,null));};exports[_0xc6b9('0x51')]=function(_0x13e189,_0x15744b){var _0x156490={'raw':!![],'where':{'id':_0x13e189[_0xc6b9('0x52')]['id']}},_0x18d3d6={};_0x18d3d6[_0xc6b9('0x3c')]=_[_0xc6b9('0x53')](db[_0xc6b9('0x37')][_0xc6b9('0x38')]);_0x18d3d6[_0xc6b9('0x3e')]=_[_0xc6b9('0x53')](_0x13e189[_0xc6b9('0x3e')]);_0x18d3d6[_0xc6b9('0x3f')]=_[_0xc6b9('0x40')](_0x18d3d6[_0xc6b9('0x3c')],_0x18d3d6[_0xc6b9('0x3e')]);_0x156490['attributes']=_[_0xc6b9('0x40')](_0x18d3d6['model'],qs[_0xc6b9('0x41')](_0x13e189[_0xc6b9('0x3e')][_0xc6b9('0x41')]));_0x156490[_0xc6b9('0x42')]=_0x156490[_0xc6b9('0x42')]['length']?_0x156490[_0xc6b9('0x42')]:_0x18d3d6[_0xc6b9('0x3c')];if(_0x13e189[_0xc6b9('0x3e')][_0xc6b9('0x4d')]){_0x156490[_0xc6b9('0x4e')]=[{'all':!![]}];}_0x156490=_['merge']({},_0x156490,_0x13e189[_0xc6b9('0x4c')]);return db[_0xc6b9('0x37')]['find'](_0x156490)[_0xc6b9('0x1c')](handleEntityNotFound(_0x15744b,null))[_0xc6b9('0x1c')](respondWithResult(_0x15744b,null))[_0xc6b9('0x25')](handleError(_0x15744b,null));};exports['create']=function(_0x3f537b,_0x2edc28,_0x4b9c12){var _0xf993e7;return db['sequelize']['transaction'](function(_0x135acb){return db[_0xc6b9('0x37')]['create'](_0x3f537b[_0xc6b9('0x54')],{'raw':!![]})[_0xc6b9('0x1c')](function(_0x2fe623){_0xf993e7=_0x2fe623;return db[_0xc6b9('0x37')][_0xc6b9('0x4f')]({'where':{'type':_0x3f537b['body']['type']},'raw':!![]});})['then'](function(_0x7966d8){if(_0xf993e7['type'][_0xc6b9('0x55')]()==_0xc6b9('0x56')){var _0x2a3204=fs[_0xc6b9('0x57')](path[_0xc6b9('0x58')](config[_0xc6b9('0x59')],_0xc6b9('0x5a')),_0xc6b9('0x5b'));var _0x3ac368=ejs[_0xc6b9('0x5c')](_0x2a3204,{'networks':_0x7966d8||[]});fs[_0xc6b9('0x5d')](_0xc6b9('0x5e'),_0x3ac368);return respondWithRpcPromise(_0xc6b9('0x5f'),_0xc6b9('0x60'),{'module':'res_stun_monitor.so'});}else if(_0xf993e7[_0xc6b9('0x3a')][_0xc6b9('0x55')]()==_0xc6b9('0x61')){var _0x1976f6=fs[_0xc6b9('0x57')](path[_0xc6b9('0x58')](config[_0xc6b9('0x59')],'server/files/templates/turn_multiple.ejs'),'utf8');var _0x28ec02=ejs['render'](_0x1976f6,{'networks':_0x7966d8||[]});fs[_0xc6b9('0x5d')](_0xc6b9('0x62'),_0x28ec02);return respondWithRpcPromise(_0xc6b9('0x5f'),_0xc6b9('0x60'),{'module':'res_stun_monitor.so'});}else{var _0x15f830=fs['readFileSync'](path['join'](config['root'],_0xc6b9('0x63')),_0xc6b9('0x5b'));var _0x286f0c=ejs['render'](_0x15f830,{'networks':_0x7966d8||[]});fs[_0xc6b9('0x5d')](util[_0xc6b9('0x64')](_0xc6b9('0x65'),_0x3f537b[_0xc6b9('0x54')][_0xc6b9('0x3a')][_0xc6b9('0x66')]()),_0x286f0c);return respondWithRpcPromise(_0xc6b9('0x5f'),_0xc6b9('0x60'),{'module':_0xc6b9('0x67')});}return null;})[_0xc6b9('0x1c')](function(){return _0xf993e7;});})[_0xc6b9('0x1c')](respondWithResult(_0x2edc28,0xc9))[_0xc6b9('0x25')](handleError(_0x2edc28,null));};exports[_0xc6b9('0x30')]=function(_0x31b4f7,_0x35fd8d,_0x47f2b0){var _0x30ba34;return db[_0xc6b9('0x68')][_0xc6b9('0x69')](function(_0x362b56){return db[_0xc6b9('0x37')]['find']({'where':{'id':_0x31b4f7[_0xc6b9('0x52')]['id']}})[_0xc6b9('0x1c')](handleEntityNotFound(_0x35fd8d,null))[_0xc6b9('0x1c')](saveUpdates(_0x31b4f7[_0xc6b9('0x54')],null))[_0xc6b9('0x1c')](function(_0x508e37){if(_0x508e37){_0x30ba34=_0x508e37;return db['Network'][_0xc6b9('0x4f')]({'where':{'type':_0x30ba34['type']},'raw':!![]});}return null;})[_0xc6b9('0x1c')](function(_0x5e1ef1){if(_0x30ba34[_0xc6b9('0x3a')][_0xc6b9('0x55')]()=='STUN'){var _0x2f3a6e=fs[_0xc6b9('0x57')](path[_0xc6b9('0x58')](config[_0xc6b9('0x59')],_0xc6b9('0x5a')),_0xc6b9('0x5b'));var _0x5c4895=ejs[_0xc6b9('0x5c')](_0x2f3a6e,{'networks':_0x5e1ef1||[]});fs[_0xc6b9('0x5d')](_0xc6b9('0x5e'),_0x5c4895);return respondWithRpcPromise(_0xc6b9('0x5f'),_0xc6b9('0x30'),{'module':_0xc6b9('0x6a')});}else if(_0x30ba34[_0xc6b9('0x3a')][_0xc6b9('0x55')]()==_0xc6b9('0x61')){var _0x5d0ea5=fs[_0xc6b9('0x57')](path[_0xc6b9('0x58')](config['root'],'server/files/templates/turn_multiple.ejs'),_0xc6b9('0x5b'));var _0x31b603=ejs[_0xc6b9('0x5c')](_0x5d0ea5,{'networks':_0x5e1ef1||[]});fs[_0xc6b9('0x5d')](_0xc6b9('0x62'),_0x31b603);return respondWithRpcPromise(_0xc6b9('0x5f'),_0xc6b9('0x30'),{'module':_0xc6b9('0x6a')});}else{var _0x1bbb5d=fs[_0xc6b9('0x57')](path[_0xc6b9('0x58')](config[_0xc6b9('0x59')],_0xc6b9('0x63')),'utf8');var _0x155f83=ejs['render'](_0x1bbb5d,{'networks':_0x5e1ef1||[]});fs[_0xc6b9('0x5d')](util[_0xc6b9('0x64')]('/etc/asterisk/sip_xcally_%s.conf',_0x31b4f7[_0xc6b9('0x54')][_0xc6b9('0x3a')][_0xc6b9('0x66')]()),_0x155f83);return respondWithRpcPromise(_0xc6b9('0x5f'),'update',{'module':_0xc6b9('0x67')});}return null;})[_0xc6b9('0x1c')](function(_0xff46b7){if(_0xff46b7){return _0x30ba34;}return null;});})['then'](respondWithResult(_0x35fd8d,null))[_0xc6b9('0x25')](handleError(_0x35fd8d,null));};exports['destroy']=function(_0x523c2c,_0x24a409,_0x1c9063){var _0x3294a3;return db[_0xc6b9('0x37')][_0xc6b9('0x6b')]({'where':{'id':_0x523c2c[_0xc6b9('0x52')]['id']}})[_0xc6b9('0x1c')](function(_0x27ed0d){_0x3294a3=_0x27ed0d;return _0x27ed0d;})[_0xc6b9('0x1c')](handleEntityNotFound(_0x24a409,null))[_0xc6b9('0x1c')](removeEntity(_0x24a409,null))[_0xc6b9('0x1c')](function(){if(_0x3294a3){return db[_0xc6b9('0x37')]['findAll']({'where':{'type':_0x3294a3[_0xc6b9('0x3a')]},'raw':!![]});}})[_0xc6b9('0x1c')](function(_0x5af899){if(_0x3294a3[_0xc6b9('0x3a')]['toUpperCase']()==_0xc6b9('0x56')){var _0x108774=fs[_0xc6b9('0x57')](path[_0xc6b9('0x58')](config[_0xc6b9('0x59')],_0xc6b9('0x5a')),_0xc6b9('0x5b'));var _0x1672b8=ejs[_0xc6b9('0x5c')](_0x108774,{'networks':_0x5af899||[]});fs[_0xc6b9('0x5d')]('/etc/asterisk/stun_xcally.conf',_0x1672b8);return respondWithRpcPromise(_0xc6b9('0x5f'),'destroy',{'module':'res_stun_monitor.so'});}else if(_0x3294a3[_0xc6b9('0x3a')][_0xc6b9('0x55')]()==_0xc6b9('0x61')){var _0x5807cc=fs[_0xc6b9('0x57')](path[_0xc6b9('0x58')](config['root'],_0xc6b9('0x6c')),_0xc6b9('0x5b'));var _0x2ff3e2=ejs['render'](_0x5807cc,{'networks':_0x5af899||[]});fs[_0xc6b9('0x5d')]('/etc/asterisk/turn_xcally.conf',_0x2ff3e2);return respondWithRpcPromise(_0xc6b9('0x5f'),_0xc6b9('0x31'),{'module':'res_stun_monitor.so'});}else{var _0x1d16e8=fs['readFileSync'](path[_0xc6b9('0x58')](config[_0xc6b9('0x59')],'server/files/templates/network.ejs'),_0xc6b9('0x5b'));var _0x376002=ejs[_0xc6b9('0x5c')](_0x1d16e8,{'networks':_0x5af899||[]});fs[_0xc6b9('0x5d')](util[_0xc6b9('0x64')](_0xc6b9('0x65'),_0x523c2c[_0xc6b9('0x54')][_0xc6b9('0x3a')][_0xc6b9('0x66')]()),_0x376002);return respondWithRpcPromise('Reload',_0xc6b9('0x31'),{'module':_0xc6b9('0x67')});}return null;})[_0xc6b9('0x25')](handleError(_0x24a409,null));};