fb98dd5bb54b44012312873aba61ad8985c0f2fe
[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 _0xda20=['model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','limit','order','sort','where','filter','options','includeAll','include','rows','show','params','merge','create','sequelize','transaction','body','findAll','STUN','readFileSync','join','root','server/files/templates/stun_multiple.ejs','utf8','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','toUpperCase','server/files/templates/turn_multiple.ejs','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','update','/etc/asterisk/turn_xcally.conf','chan_sip.so','destroy','find','TURN','html-pdf','rimraf','request-promise','bluebird','mustache','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','then','info','Network,\x20%s,\x20%s','debug','Network,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','catch','sendStatus','status','end','count','offset','Content-Range','json','apply','reject','save','stack','name','send','index','map','Network','rawAttributes','type','key'];(function(_0x5b7428,_0xfb032){var _0x1bb14b=function(_0x192ccd){while(--_0x192ccd){_0x5b7428['push'](_0x5b7428['shift']());}};_0x1bb14b(++_0xfb032);}(_0xda20,0x1d9));var _0x0da2=function(_0x1c52a5,_0x58673f){_0x1c52a5=_0x1c52a5-0x0;var _0x34a8cc=_0xda20[_0x1c52a5];return _0x34a8cc;};'use strict';var pdf=require(_0x0da2('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x0da2('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x0da2('0x2'));var moment=require('moment');var BPromise=require(_0x0da2('0x3'));var Mustache=require(_0x0da2('0x4'));var util=require('util');var path=require(_0x0da2('0x5'));var sox=require(_0x0da2('0x6'));var csv=require('to-csv');var ejs=require(_0x0da2('0x7'));var fs=require('fs');var _=require(_0x0da2('0x8'));var squel=require(_0x0da2('0x9'));var crypto=require(_0x0da2('0xa'));var jsforce=require(_0x0da2('0xb'));var deskjs=require(_0x0da2('0xc'));var toCsv=require(_0x0da2('0xd'));var querystring=require(_0x0da2('0xe'));var Papa=require(_0x0da2('0xf'));var Redis=require('ioredis');var authService=require(_0x0da2('0x10'));var qs=require(_0x0da2('0x11'));var as=require(_0x0da2('0x12'));var hardwareService=require(_0x0da2('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0x0da2('0x14'));var config=require(_0x0da2('0x15'));var licenseUtil=require(_0x0da2('0x16'));var db=require(_0x0da2('0x17'))['db'];var jayson=require(_0x0da2('0x18'));var client=jayson[_0x0da2('0x19')][_0x0da2('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x4d2a3d,_0x7dfc07,_0x570d68,_0x5496f5){return new BPromise(function(_0x4cc28c,_0x2289c2){var _0x51bb68=_0x5496f5||client;return _0x51bb68[_0x0da2('0x1b')](_0x4d2a3d,_0x570d68)[_0x0da2('0x1c')](function(_0x5d0f4e){logger[_0x0da2('0x1d')](_0x0da2('0x1e'),_0x7dfc07,'request\x20sent');logger[_0x0da2('0x1f')](_0x0da2('0x20'),_0x7dfc07,_0x0da2('0x21'),JSON['stringify'](_0x5d0f4e));if(_0x5d0f4e[_0x0da2('0x22')]){if(_0x5d0f4e[_0x0da2('0x22')]['code']===0x1f4){logger['error'](_0x0da2('0x1e'),_0x7dfc07,_0x5d0f4e['error'][_0x0da2('0x23')]);return _0x2289c2(_0x5d0f4e['error']['message']);}logger['error']('Network,\x20%s,\x20%s',_0x7dfc07,_0x5d0f4e[_0x0da2('0x22')][_0x0da2('0x23')]);return _0x4cc28c(_0x5d0f4e[_0x0da2('0x22')]['message']);}else{logger['info']('Network,\x20%s,\x20%s',_0x7dfc07,_0x0da2('0x21'));_0x4cc28c(_0x5d0f4e[_0x0da2('0x24')][_0x0da2('0x23')]);}})[_0x0da2('0x25')](function(_0x262630){logger['error'](_0x0da2('0x1e'),_0x7dfc07,_0x262630);_0x2289c2(_0x262630);});});}function respondWithStatusCode(_0x113c40,_0x1c3ab0){_0x1c3ab0=_0x1c3ab0||0xcc;return function(_0x3c3dbc){if(_0x3c3dbc){return _0x113c40[_0x0da2('0x26')](_0x1c3ab0);}return _0x113c40[_0x0da2('0x27')](_0x1c3ab0)[_0x0da2('0x28')]();};}function respondWithResult(_0x7c4de3,_0x3604d3){_0x3604d3=_0x3604d3||0xc8;return function(_0x484543){if(_0x484543){return _0x7c4de3[_0x0da2('0x27')](_0x3604d3)['json'](_0x484543);}};}function respondWithFilteredResult(_0x40fc6a,_0x437090){return function(_0x2aa651){if(_0x2aa651){var _0x3c0fb0=_0x2aa651[_0x0da2('0x29')],_0x4b9333=_0x437090[_0x0da2('0x2a')],_0x1e9ac4=_0x437090[_0x0da2('0x2a')]+_0x437090['limit'],_0x2a931d;if(_0x1e9ac4>=_0x3c0fb0){_0x1e9ac4=_0x3c0fb0;_0x2a931d=0xc8;}else{_0x2a931d=0xce;}_0x40fc6a[_0x0da2('0x27')](_0x2a931d);return _0x40fc6a['set'](_0x0da2('0x2b'),_0x4b9333+'-'+_0x1e9ac4+'/'+_0x3c0fb0)[_0x0da2('0x2c')](_0x2aa651);}return null;};}function patchUpdates(_0x19058e){return function(_0x3a2625){try{jsonpatch[_0x0da2('0x2d')](_0x3a2625,_0x19058e,!![]);}catch(_0x103857){return BPromise[_0x0da2('0x2e')](_0x103857);}return _0x3a2625[_0x0da2('0x2f')]();};}function saveUpdates(_0x1f2b6f,_0x20d591){return function(_0x3981a5){if(_0x3981a5){return _0x3981a5['update'](_0x1f2b6f)['then'](function(_0x51a83e){return _0x51a83e;});}return null;};}function removeEntity(_0x94accb,_0x45d53d){return function(_0x54eda5){if(_0x54eda5){return _0x54eda5['destroy']()[_0x0da2('0x1c')](function(){_0x94accb[_0x0da2('0x27')](0xcc)[_0x0da2('0x28')]();});}};}function handleEntityNotFound(_0x1e6a75,_0x516e63){return function(_0x58b9ea){if(!_0x58b9ea){_0x1e6a75['sendStatus'](0x194);}return _0x58b9ea;};}function handleError(_0x281829,_0x5fccd){_0x5fccd=_0x5fccd||0x1f4;return function(_0x339d33){logger[_0x0da2('0x22')](_0x339d33[_0x0da2('0x30')]);if(_0x339d33[_0x0da2('0x31')]){delete _0x339d33[_0x0da2('0x31')];}_0x281829['status'](_0x5fccd)[_0x0da2('0x32')](_0x339d33);};}exports[_0x0da2('0x33')]=function(_0x41cd52,_0xbef5da){var _0x2cfddc={},_0x1b3c60={},_0x540c8f={'count':0x0,'rows':[]};var _0x408b21=_[_0x0da2('0x34')](db[_0x0da2('0x35')][_0x0da2('0x36')],function(_0x578299){return{'name':_0x578299['fieldName'],'type':_0x578299[_0x0da2('0x37')][_0x0da2('0x38')]};});_0x1b3c60[_0x0da2('0x39')]=_[_0x0da2('0x34')](_0x408b21,_0x0da2('0x31'));_0x1b3c60[_0x0da2('0x3a')]=_[_0x0da2('0x3b')](_0x41cd52[_0x0da2('0x3a')]);_0x1b3c60[_0x0da2('0x3c')]=_['intersection'](_0x1b3c60[_0x0da2('0x39')],_0x1b3c60[_0x0da2('0x3a')]);_0x2cfddc[_0x0da2('0x3d')]=_[_0x0da2('0x3e')](_0x1b3c60[_0x0da2('0x39')],qs[_0x0da2('0x3f')](_0x41cd52[_0x0da2('0x3a')][_0x0da2('0x3f')]));_0x2cfddc['attributes']=_0x2cfddc[_0x0da2('0x3d')]['length']?_0x2cfddc['attributes']:_0x1b3c60[_0x0da2('0x39')];if(!_0x41cd52['query'][_0x0da2('0x40')](_0x0da2('0x41'))){_0x2cfddc[_0x0da2('0x42')]=qs[_0x0da2('0x42')](_0x41cd52['query'][_0x0da2('0x42')]);_0x2cfddc[_0x0da2('0x2a')]=qs[_0x0da2('0x2a')](_0x41cd52[_0x0da2('0x3a')][_0x0da2('0x2a')]);}_0x2cfddc[_0x0da2('0x43')]=qs[_0x0da2('0x44')](_0x41cd52[_0x0da2('0x3a')]['sort']);_0x2cfddc['where']=qs[_0x0da2('0x3c')](_['pick'](_0x41cd52[_0x0da2('0x3a')],_0x1b3c60['filters']),_0x408b21);if(_0x41cd52[_0x0da2('0x3a')]['filter']){_0x2cfddc['where']=_['merge'](_0x2cfddc[_0x0da2('0x45')],{'$or':_[_0x0da2('0x34')](_0x408b21,function(_0x11ade3){if(_0x11ade3[_0x0da2('0x37')]!=='VIRTUAL'){var _0x10ffdc={};_0x10ffdc[_0x11ade3['name']]={'$like':'%'+_0x41cd52[_0x0da2('0x3a')][_0x0da2('0x46')]+'%'};return _0x10ffdc;}})});}_0x2cfddc=_['merge']({},_0x2cfddc,_0x41cd52[_0x0da2('0x47')]);var _0x2dd376={'where':_0x2cfddc[_0x0da2('0x45')]};return db[_0x0da2('0x35')]['count'](_0x2dd376)[_0x0da2('0x1c')](function(_0x3b0e28){_0x540c8f['count']=_0x3b0e28;if(_0x41cd52[_0x0da2('0x3a')][_0x0da2('0x48')]){_0x2cfddc[_0x0da2('0x49')]=[{'all':!![]}];}return db[_0x0da2('0x35')]['findAll'](_0x2cfddc);})[_0x0da2('0x1c')](function(_0x5265f2){_0x540c8f[_0x0da2('0x4a')]=_0x5265f2;return _0x540c8f;})[_0x0da2('0x1c')](respondWithFilteredResult(_0xbef5da,_0x2cfddc))[_0x0da2('0x25')](handleError(_0xbef5da,null));};exports[_0x0da2('0x4b')]=function(_0x2e36c6,_0x520804){var _0x37ace0={'raw':!![],'where':{'id':_0x2e36c6[_0x0da2('0x4c')]['id']}},_0xbdcb74={};_0xbdcb74[_0x0da2('0x39')]=_['keys'](db[_0x0da2('0x35')][_0x0da2('0x36')]);_0xbdcb74[_0x0da2('0x3a')]=_[_0x0da2('0x3b')](_0x2e36c6[_0x0da2('0x3a')]);_0xbdcb74['filters']=_[_0x0da2('0x3e')](_0xbdcb74[_0x0da2('0x39')],_0xbdcb74[_0x0da2('0x3a')]);_0x37ace0[_0x0da2('0x3d')]=_[_0x0da2('0x3e')](_0xbdcb74[_0x0da2('0x39')],qs[_0x0da2('0x3f')](_0x2e36c6['query'][_0x0da2('0x3f')]));_0x37ace0['attributes']=_0x37ace0['attributes']['length']?_0x37ace0[_0x0da2('0x3d')]:_0xbdcb74[_0x0da2('0x39')];if(_0x2e36c6[_0x0da2('0x3a')][_0x0da2('0x48')]){_0x37ace0['include']=[{'all':!![]}];}_0x37ace0=_[_0x0da2('0x4d')]({},_0x37ace0,_0x2e36c6['options']);return db['Network']['find'](_0x37ace0)[_0x0da2('0x1c')](handleEntityNotFound(_0x520804,null))[_0x0da2('0x1c')](respondWithResult(_0x520804,null))[_0x0da2('0x25')](handleError(_0x520804,null));};exports[_0x0da2('0x4e')]=function(_0x4efcc1,_0xe1000e,_0x42dcd9){var _0x3a0d6f;return db[_0x0da2('0x4f')][_0x0da2('0x50')](function(_0x1cf2ff){return db[_0x0da2('0x35')]['create'](_0x4efcc1[_0x0da2('0x51')],{'raw':!![]})[_0x0da2('0x1c')](function(_0x3e5425){_0x3a0d6f=_0x3e5425;return db[_0x0da2('0x35')][_0x0da2('0x52')]({'where':{'type':_0x4efcc1['body']['type']},'raw':!![]});})[_0x0da2('0x1c')](function(_0x34f672){if(_0x3a0d6f['type']['toUpperCase']()==_0x0da2('0x53')){var _0x2e6353=fs[_0x0da2('0x54')](path[_0x0da2('0x55')](config[_0x0da2('0x56')],_0x0da2('0x57')),_0x0da2('0x58'));var _0x3ee485=ejs[_0x0da2('0x59')](_0x2e6353,{'networks':_0x34f672||[]});fs[_0x0da2('0x5a')](_0x0da2('0x5b'),_0x3ee485);return respondWithRpcPromise(_0x0da2('0x5c'),_0x0da2('0x4e'),{'module':_0x0da2('0x5d')});}else if(_0x3a0d6f['type'][_0x0da2('0x5e')]()=='TURN'){var _0x47abf2=fs[_0x0da2('0x54')](path[_0x0da2('0x55')](config[_0x0da2('0x56')],_0x0da2('0x5f')),_0x0da2('0x58'));var _0x282352=ejs[_0x0da2('0x59')](_0x47abf2,{'networks':_0x34f672||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0x282352);return respondWithRpcPromise(_0x0da2('0x5c'),'create',{'module':'res_stun_monitor.so'});}else{var _0x3dd02f=fs[_0x0da2('0x54')](path[_0x0da2('0x55')](config[_0x0da2('0x56')],_0x0da2('0x60')),_0x0da2('0x58'));var _0x571728=ejs[_0x0da2('0x59')](_0x3dd02f,{'networks':_0x34f672||[]});fs[_0x0da2('0x5a')](util[_0x0da2('0x61')](_0x0da2('0x62'),_0x4efcc1['body'][_0x0da2('0x37')][_0x0da2('0x63')]()),_0x571728);return respondWithRpcPromise('Reload',_0x0da2('0x4e'),{'module':'chan_sip.so'});}return null;})[_0x0da2('0x1c')](function(){return _0x3a0d6f;});})[_0x0da2('0x1c')](respondWithResult(_0xe1000e,0xc9))[_0x0da2('0x25')](handleError(_0xe1000e,null));};exports[_0x0da2('0x64')]=function(_0x31910d,_0x26dd55,_0x5c1840){var _0x4c8800;return db['sequelize'][_0x0da2('0x50')](function(_0x3313b2){return db[_0x0da2('0x35')]['find']({'where':{'id':_0x31910d['params']['id']}})[_0x0da2('0x1c')](handleEntityNotFound(_0x26dd55,null))['then'](saveUpdates(_0x31910d[_0x0da2('0x51')],null))[_0x0da2('0x1c')](function(_0x15c7a2){if(_0x15c7a2){_0x4c8800=_0x15c7a2;return db[_0x0da2('0x35')][_0x0da2('0x52')]({'where':{'type':_0x4c8800[_0x0da2('0x37')]},'raw':!![]});}return null;})[_0x0da2('0x1c')](function(_0x36d9de){if(_0x4c8800[_0x0da2('0x37')]['toUpperCase']()=='STUN'){var _0xb71616=fs[_0x0da2('0x54')](path[_0x0da2('0x55')](config[_0x0da2('0x56')],_0x0da2('0x57')),_0x0da2('0x58'));var _0x220d4d=ejs[_0x0da2('0x59')](_0xb71616,{'networks':_0x36d9de||[]});fs[_0x0da2('0x5a')](_0x0da2('0x5b'),_0x220d4d);return respondWithRpcPromise(_0x0da2('0x5c'),_0x0da2('0x64'),{'module':_0x0da2('0x5d')});}else if(_0x4c8800[_0x0da2('0x37')][_0x0da2('0x5e')]()=='TURN'){var _0x3a43e7=fs[_0x0da2('0x54')](path['join'](config[_0x0da2('0x56')],_0x0da2('0x5f')),_0x0da2('0x58'));var _0x161e5c=ejs['render'](_0x3a43e7,{'networks':_0x36d9de||[]});fs['writeFileSync'](_0x0da2('0x65'),_0x161e5c);return respondWithRpcPromise(_0x0da2('0x5c'),_0x0da2('0x64'),{'module':_0x0da2('0x5d')});}else{var _0x1a80a1=fs[_0x0da2('0x54')](path[_0x0da2('0x55')](config['root'],_0x0da2('0x60')),_0x0da2('0x58'));var _0x1806df=ejs[_0x0da2('0x59')](_0x1a80a1,{'networks':_0x36d9de||[]});fs[_0x0da2('0x5a')](util['format'](_0x0da2('0x62'),_0x31910d[_0x0da2('0x51')]['type'][_0x0da2('0x63')]()),_0x1806df);return respondWithRpcPromise(_0x0da2('0x5c'),_0x0da2('0x64'),{'module':_0x0da2('0x66')});}return null;})[_0x0da2('0x1c')](function(_0x3a6fa8){if(_0x3a6fa8){return _0x4c8800;}return null;});})[_0x0da2('0x1c')](respondWithResult(_0x26dd55,null))[_0x0da2('0x25')](handleError(_0x26dd55,null));};exports[_0x0da2('0x67')]=function(_0x382a95,_0x169f2b,_0x2e61b6){var _0x49524f;return db['Network'][_0x0da2('0x68')]({'where':{'id':_0x382a95[_0x0da2('0x4c')]['id']}})['then'](function(_0x1a7308){_0x49524f=_0x1a7308;return _0x1a7308;})[_0x0da2('0x1c')](handleEntityNotFound(_0x169f2b,null))[_0x0da2('0x1c')](removeEntity(_0x169f2b,null))[_0x0da2('0x1c')](function(){if(_0x49524f){return db[_0x0da2('0x35')][_0x0da2('0x52')]({'where':{'type':_0x49524f[_0x0da2('0x37')]},'raw':!![]});}})[_0x0da2('0x1c')](function(_0x4fb21e){if(_0x49524f[_0x0da2('0x37')][_0x0da2('0x5e')]()==_0x0da2('0x53')){var _0x33c191=fs[_0x0da2('0x54')](path[_0x0da2('0x55')](config[_0x0da2('0x56')],_0x0da2('0x57')),_0x0da2('0x58'));var _0x5cb3a8=ejs['render'](_0x33c191,{'networks':_0x4fb21e||[]});fs[_0x0da2('0x5a')]('/etc/asterisk/stun_xcally.conf',_0x5cb3a8);return respondWithRpcPromise('Reload',_0x0da2('0x67'),{'module':_0x0da2('0x5d')});}else if(_0x49524f[_0x0da2('0x37')][_0x0da2('0x5e')]()==_0x0da2('0x69')){var _0xb9a70b=fs[_0x0da2('0x54')](path[_0x0da2('0x55')](config[_0x0da2('0x56')],'server/files/templates/turn_multiple.ejs'),_0x0da2('0x58'));var _0x466258=ejs[_0x0da2('0x59')](_0xb9a70b,{'networks':_0x4fb21e||[]});fs['writeFileSync'](_0x0da2('0x65'),_0x466258);return respondWithRpcPromise(_0x0da2('0x5c'),_0x0da2('0x67'),{'module':_0x0da2('0x5d')});}else{var _0x3fa6a0=fs[_0x0da2('0x54')](path[_0x0da2('0x55')](config[_0x0da2('0x56')],_0x0da2('0x60')),_0x0da2('0x58'));var _0x15ac52=ejs['render'](_0x3fa6a0,{'networks':_0x4fb21e||[]});fs[_0x0da2('0x5a')](util[_0x0da2('0x61')]('/etc/asterisk/sip_xcally_%s.conf',_0x382a95[_0x0da2('0x51')]['type'][_0x0da2('0x63')]()),_0x15ac52);return respondWithRpcPromise(_0x0da2('0x5c'),_0x0da2('0x67'),{'module':_0x0da2('0x66')});}return null;})[_0x0da2('0x25')](handleError(_0x169f2b,null));};