eb4969e87a03bca4161de353b4aa5863964c8f67
[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 _0x3fa4=['rows','show','params','keys','rawAttributes','sequelize','transaction','body','toUpperCase','STUN','readFileSync','join','root','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','TURN','server/files/templates/turn_multiple.ejs','utf8','/etc/asterisk/turn_xcally.conf','create','res_stun_monitor.so','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','chan_sip.so','server/files/templates/stun_multiple.ejs','toLowerCase','find','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','jayson/promise','client','http','request','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','json','offset','count','limit','set','Content-Range','apply','reject','update','then','destroy','end','name','send','map','Network','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','type','options','includeAll','include','findAll'];(function(_0x4fd9b9,_0x4baad2){var _0x41907a=function(_0x9d862a){while(--_0x9d862a){_0x4fd9b9['push'](_0x4fd9b9['shift']());}};_0x41907a(++_0x4baad2);}(_0x3fa4,0x87));var _0x43fa=function(_0x637311,_0x3faa49){_0x637311=_0x637311-0x0;var _0x1dfbca=_0x3fa4[_0x637311];return _0x1dfbca;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x43fa('0x0'));var zipdir=require(_0x43fa('0x1'));var jsonpatch=require(_0x43fa('0x2'));var rp=require(_0x43fa('0x3'));var moment=require(_0x43fa('0x4'));var BPromise=require(_0x43fa('0x5'));var Mustache=require(_0x43fa('0x6'));var util=require(_0x43fa('0x7'));var path=require(_0x43fa('0x8'));var sox=require(_0x43fa('0x9'));var csv=require(_0x43fa('0xa'));var ejs=require(_0x43fa('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x43fa('0xc'));var squel=require(_0x43fa('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x43fa('0xa'));var querystring=require(_0x43fa('0xe'));var Papa=require(_0x43fa('0xf'));var Redis=require(_0x43fa('0x10'));var authService=require(_0x43fa('0x11'));var qs=require(_0x43fa('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x43fa('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0x43fa('0x14'));var config=require(_0x43fa('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var jayson=require(_0x43fa('0x16'));var client=jayson[_0x43fa('0x17')][_0x43fa('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x25fadc,_0x2b165d,_0x2c8232,_0x3a65ec){return new BPromise(function(_0x2cca5d,_0x3002d4){var _0x23acd4=_0x3a65ec||client;return _0x23acd4[_0x43fa('0x19')](_0x25fadc,_0x2c8232)['then'](function(_0x256189){logger[_0x43fa('0x1a')](_0x43fa('0x1b'),_0x2b165d,_0x43fa('0x1c'));logger[_0x43fa('0x1d')](_0x43fa('0x1e'),_0x2b165d,'request\x20sent',JSON[_0x43fa('0x1f')](_0x256189));if(_0x256189[_0x43fa('0x20')]){if(_0x256189[_0x43fa('0x20')][_0x43fa('0x21')]===0x1f4){logger[_0x43fa('0x20')](_0x43fa('0x1b'),_0x2b165d,_0x256189[_0x43fa('0x20')]['message']);return _0x3002d4(_0x256189['error'][_0x43fa('0x22')]);}logger[_0x43fa('0x20')](_0x43fa('0x1b'),_0x2b165d,_0x256189['error']['message']);return _0x2cca5d(_0x256189['error'][_0x43fa('0x22')]);}else{logger[_0x43fa('0x1a')](_0x43fa('0x1b'),_0x2b165d,'request\x20sent');_0x2cca5d(_0x256189['result'][_0x43fa('0x22')]);}})[_0x43fa('0x23')](function(_0x58e43d){logger['error'](_0x43fa('0x1b'),_0x2b165d,_0x58e43d);_0x3002d4(_0x58e43d);});});}function respondWithStatusCode(_0x2b6710,_0xee58b5){_0xee58b5=_0xee58b5||0xcc;return function(_0x89342f){if(_0x89342f){return _0x2b6710[_0x43fa('0x24')](_0xee58b5);}return _0x2b6710[_0x43fa('0x25')](_0xee58b5)['end']();};}function respondWithResult(_0xe48b2b,_0x184257){_0x184257=_0x184257||0xc8;return function(_0x108505){if(_0x108505){return _0xe48b2b[_0x43fa('0x25')](_0x184257)[_0x43fa('0x26')](_0x108505);}};}function respondWithFilteredResult(_0x111237,_0x30f62b){return function(_0x5ee4cf){if(_0x5ee4cf){var _0x62ffe7=typeof _0x30f62b[_0x43fa('0x27')]==='undefined'&&typeof _0x30f62b['limit']==='undefined';var _0x2cfd45=_0x5ee4cf['count'];var _0x2650dc=_0x62ffe7?0x0:_0x30f62b[_0x43fa('0x27')];var _0x55d350=_0x62ffe7?_0x5ee4cf[_0x43fa('0x28')]:_0x30f62b[_0x43fa('0x27')]+_0x30f62b[_0x43fa('0x29')];var _0x7a42e6;if(_0x55d350>=_0x2cfd45){_0x55d350=_0x2cfd45;_0x7a42e6=0xc8;}else{_0x7a42e6=0xce;}_0x111237[_0x43fa('0x25')](_0x7a42e6);return _0x111237[_0x43fa('0x2a')](_0x43fa('0x2b'),_0x2650dc+'-'+_0x55d350+'/'+_0x2cfd45)['json'](_0x5ee4cf);}return null;};}function patchUpdates(_0x1164b7){return function(_0x339a93){try{jsonpatch[_0x43fa('0x2c')](_0x339a93,_0x1164b7,!![]);}catch(_0x5e8d33){return BPromise[_0x43fa('0x2d')](_0x5e8d33);}return _0x339a93['save']();};}function saveUpdates(_0x1305f5,_0x495f22){return function(_0x2293d9){if(_0x2293d9){return _0x2293d9[_0x43fa('0x2e')](_0x1305f5)[_0x43fa('0x2f')](function(_0xd74054){return _0xd74054;});}return null;};}function removeEntity(_0x21431f,_0x1b5e7a){return function(_0x454f88){if(_0x454f88){return _0x454f88[_0x43fa('0x30')]()[_0x43fa('0x2f')](function(){_0x21431f[_0x43fa('0x25')](0xcc)[_0x43fa('0x31')]();});}};}function handleEntityNotFound(_0x39d664,_0x41c2a2){return function(_0x13193d){if(!_0x13193d){_0x39d664['sendStatus'](0x194);}return _0x13193d;};}function handleError(_0x167295,_0x361639){_0x361639=_0x361639||0x1f4;return function(_0x3e070c){logger['error'](_0x3e070c['stack']);if(_0x3e070c['name']){delete _0x3e070c[_0x43fa('0x32')];}_0x167295[_0x43fa('0x25')](_0x361639)[_0x43fa('0x33')](_0x3e070c);};}exports['index']=function(_0x104fb6,_0x226682){var _0x3c7933={},_0x43daa1={},_0xb59977={'count':0x0,'rows':[]};var _0x288cfa=_[_0x43fa('0x34')](db[_0x43fa('0x35')]['rawAttributes'],function(_0x268224){return{'name':_0x268224['fieldName'],'type':_0x268224['type'][_0x43fa('0x36')]};});_0x43daa1[_0x43fa('0x37')]=_[_0x43fa('0x34')](_0x288cfa,_0x43fa('0x32'));_0x43daa1[_0x43fa('0x38')]=_['keys'](_0x104fb6[_0x43fa('0x38')]);_0x43daa1[_0x43fa('0x39')]=_[_0x43fa('0x3a')](_0x43daa1[_0x43fa('0x37')],_0x43daa1[_0x43fa('0x38')]);_0x3c7933[_0x43fa('0x3b')]=_['intersection'](_0x43daa1[_0x43fa('0x37')],qs[_0x43fa('0x3c')](_0x104fb6[_0x43fa('0x38')][_0x43fa('0x3c')]));_0x3c7933[_0x43fa('0x3b')]=_0x3c7933[_0x43fa('0x3b')][_0x43fa('0x3d')]?_0x3c7933['attributes']:_0x43daa1['model'];if(!_0x104fb6[_0x43fa('0x38')][_0x43fa('0x3e')](_0x43fa('0x3f'))){_0x3c7933[_0x43fa('0x29')]=qs['limit'](_0x104fb6[_0x43fa('0x38')][_0x43fa('0x29')]);_0x3c7933[_0x43fa('0x27')]=qs[_0x43fa('0x27')](_0x104fb6[_0x43fa('0x38')]['offset']);}_0x3c7933[_0x43fa('0x40')]=qs[_0x43fa('0x41')](_0x104fb6['query'][_0x43fa('0x41')]);_0x3c7933['where']=qs[_0x43fa('0x39')](_[_0x43fa('0x42')](_0x104fb6[_0x43fa('0x38')],_0x43daa1[_0x43fa('0x39')]),_0x288cfa);if(_0x104fb6[_0x43fa('0x38')][_0x43fa('0x43')]){_0x3c7933[_0x43fa('0x44')]=_[_0x43fa('0x45')](_0x3c7933[_0x43fa('0x44')],{'$or':_[_0x43fa('0x34')](_0x288cfa,function(_0x3c8fd4){if(_0x3c8fd4[_0x43fa('0x46')]!=='VIRTUAL'){var _0x311cdf={};_0x311cdf[_0x3c8fd4[_0x43fa('0x32')]]={'$like':'%'+_0x104fb6['query'][_0x43fa('0x43')]+'%'};return _0x311cdf;}})});}_0x3c7933=_['merge']({},_0x3c7933,_0x104fb6[_0x43fa('0x47')]);var _0x1197b8={'where':_0x3c7933['where']};return db[_0x43fa('0x35')][_0x43fa('0x28')](_0x1197b8)['then'](function(_0x42f6ed){_0xb59977[_0x43fa('0x28')]=_0x42f6ed;if(_0x104fb6[_0x43fa('0x38')][_0x43fa('0x48')]){_0x3c7933[_0x43fa('0x49')]=[{'all':!![]}];}return db[_0x43fa('0x35')][_0x43fa('0x4a')](_0x3c7933);})['then'](function(_0x52de4c){_0xb59977[_0x43fa('0x4b')]=_0x52de4c;return _0xb59977;})['then'](respondWithFilteredResult(_0x226682,_0x3c7933))[_0x43fa('0x23')](handleError(_0x226682,null));};exports[_0x43fa('0x4c')]=function(_0x1a64a9,_0x560bec){var _0x5df47f={'raw':!![],'where':{'id':_0x1a64a9[_0x43fa('0x4d')]['id']}},_0x9f71e4={};_0x9f71e4[_0x43fa('0x37')]=_[_0x43fa('0x4e')](db['Network'][_0x43fa('0x4f')]);_0x9f71e4[_0x43fa('0x38')]=_[_0x43fa('0x4e')](_0x1a64a9[_0x43fa('0x38')]);_0x9f71e4['filters']=_['intersection'](_0x9f71e4[_0x43fa('0x37')],_0x9f71e4[_0x43fa('0x38')]);_0x5df47f['attributes']=_[_0x43fa('0x3a')](_0x9f71e4['model'],qs[_0x43fa('0x3c')](_0x1a64a9[_0x43fa('0x38')][_0x43fa('0x3c')]));_0x5df47f['attributes']=_0x5df47f[_0x43fa('0x3b')][_0x43fa('0x3d')]?_0x5df47f['attributes']:_0x9f71e4[_0x43fa('0x37')];if(_0x1a64a9[_0x43fa('0x38')]['includeAll']){_0x5df47f[_0x43fa('0x49')]=[{'all':!![]}];}_0x5df47f=_[_0x43fa('0x45')]({},_0x5df47f,_0x1a64a9['options']);return db[_0x43fa('0x35')]['find'](_0x5df47f)[_0x43fa('0x2f')](handleEntityNotFound(_0x560bec,null))['then'](respondWithResult(_0x560bec,null))['catch'](handleError(_0x560bec,null));};exports['create']=function(_0x408b6c,_0x4b5573,_0x2b349c){var _0x17d067;return db[_0x43fa('0x50')][_0x43fa('0x51')](function(_0x583988){return db['Network']['create'](_0x408b6c['body'],{'raw':!![]})[_0x43fa('0x2f')](function(_0x5f4e3a){_0x17d067=_0x5f4e3a;return db[_0x43fa('0x35')]['findAll']({'where':{'type':_0x408b6c[_0x43fa('0x52')][_0x43fa('0x46')]},'raw':!![]});})[_0x43fa('0x2f')](function(_0x44381c){if(_0x17d067[_0x43fa('0x46')][_0x43fa('0x53')]()==_0x43fa('0x54')){var _0x21851a=fs[_0x43fa('0x55')](path[_0x43fa('0x56')](config[_0x43fa('0x57')],'server/files/templates/stun_multiple.ejs'),'utf8');var _0x116fdc=ejs[_0x43fa('0x58')](_0x21851a,{'networks':_0x44381c||[]});fs[_0x43fa('0x59')](_0x43fa('0x5a'),_0x116fdc);return respondWithRpcPromise(_0x43fa('0x5b'),'create',{'module':'res_stun_monitor.so'});}else if(_0x17d067[_0x43fa('0x46')]['toUpperCase']()==_0x43fa('0x5c')){var _0x45efea=fs[_0x43fa('0x55')](path[_0x43fa('0x56')](config['root'],_0x43fa('0x5d')),_0x43fa('0x5e'));var _0x516ac8=ejs['render'](_0x45efea,{'networks':_0x44381c||[]});fs[_0x43fa('0x59')](_0x43fa('0x5f'),_0x516ac8);return respondWithRpcPromise('Reload',_0x43fa('0x60'),{'module':_0x43fa('0x61')});}else{var _0x301fa9=fs[_0x43fa('0x55')](path['join'](config[_0x43fa('0x57')],_0x43fa('0x62')),_0x43fa('0x5e'));var _0x505f9d=ejs[_0x43fa('0x58')](_0x301fa9,{'networks':_0x44381c||[]});fs[_0x43fa('0x59')](util[_0x43fa('0x63')](_0x43fa('0x64'),_0x408b6c['body'][_0x43fa('0x46')]['toLowerCase']()),_0x505f9d);return respondWithRpcPromise(_0x43fa('0x5b'),_0x43fa('0x60'),{'module':_0x43fa('0x65')});}return null;})[_0x43fa('0x2f')](function(){return _0x17d067;});})['then'](respondWithResult(_0x4b5573,0xc9))['catch'](handleError(_0x4b5573,null));};exports[_0x43fa('0x2e')]=function(_0x4e354f,_0x5261e4,_0x37ce97){var _0x4e0cf4;return db[_0x43fa('0x50')][_0x43fa('0x51')](function(_0x2ea081){return db[_0x43fa('0x35')]['find']({'where':{'id':_0x4e354f[_0x43fa('0x4d')]['id']}})['then'](handleEntityNotFound(_0x5261e4,null))['then'](saveUpdates(_0x4e354f[_0x43fa('0x52')],null))[_0x43fa('0x2f')](function(_0x3f5398){if(_0x3f5398){_0x4e0cf4=_0x3f5398;return db[_0x43fa('0x35')][_0x43fa('0x4a')]({'where':{'type':_0x4e0cf4['type']},'raw':!![]});}return null;})[_0x43fa('0x2f')](function(_0x4497ba){if(_0x4e0cf4[_0x43fa('0x46')][_0x43fa('0x53')]()==_0x43fa('0x54')){var _0x21ad44=fs[_0x43fa('0x55')](path[_0x43fa('0x56')](config[_0x43fa('0x57')],_0x43fa('0x66')),'utf8');var _0x4f7054=ejs[_0x43fa('0x58')](_0x21ad44,{'networks':_0x4497ba||[]});fs[_0x43fa('0x59')](_0x43fa('0x5a'),_0x4f7054);return respondWithRpcPromise(_0x43fa('0x5b'),'update',{'module':_0x43fa('0x61')});}else if(_0x4e0cf4[_0x43fa('0x46')]['toUpperCase']()==_0x43fa('0x5c')){var _0x5f05dd=fs[_0x43fa('0x55')](path[_0x43fa('0x56')](config[_0x43fa('0x57')],_0x43fa('0x5d')),_0x43fa('0x5e'));var _0x422a7c=ejs[_0x43fa('0x58')](_0x5f05dd,{'networks':_0x4497ba||[]});fs[_0x43fa('0x59')](_0x43fa('0x5f'),_0x422a7c);return respondWithRpcPromise(_0x43fa('0x5b'),_0x43fa('0x2e'),{'module':_0x43fa('0x61')});}else{var _0x35fccb=fs['readFileSync'](path['join'](config['root'],_0x43fa('0x62')),_0x43fa('0x5e'));var _0x459673=ejs[_0x43fa('0x58')](_0x35fccb,{'networks':_0x4497ba||[]});fs[_0x43fa('0x59')](util[_0x43fa('0x63')]('/etc/asterisk/sip_xcally_%s.conf',_0x4e354f['body'][_0x43fa('0x46')][_0x43fa('0x67')]()),_0x459673);return respondWithRpcPromise(_0x43fa('0x5b'),_0x43fa('0x2e'),{'module':_0x43fa('0x65')});}return null;})[_0x43fa('0x2f')](function(_0x328b74){if(_0x328b74){return _0x4e0cf4;}return null;});})['then'](respondWithResult(_0x5261e4,null))['catch'](handleError(_0x5261e4,null));};exports['destroy']=function(_0x3b7014,_0x53a420,_0x57fb08){var _0x3c3084;return db[_0x43fa('0x35')][_0x43fa('0x68')]({'where':{'id':_0x3b7014[_0x43fa('0x4d')]['id']}})[_0x43fa('0x2f')](function(_0x5d2837){_0x3c3084=_0x5d2837;return _0x5d2837;})[_0x43fa('0x2f')](handleEntityNotFound(_0x53a420,null))['then'](removeEntity(_0x53a420,null))[_0x43fa('0x2f')](function(){if(_0x3c3084){return db[_0x43fa('0x35')][_0x43fa('0x4a')]({'where':{'type':_0x3c3084[_0x43fa('0x46')]},'raw':!![]});}})[_0x43fa('0x2f')](function(_0x89670){if(_0x3c3084[_0x43fa('0x46')][_0x43fa('0x53')]()==_0x43fa('0x54')){var _0x4502ff=fs[_0x43fa('0x55')](path[_0x43fa('0x56')](config[_0x43fa('0x57')],'server/files/templates/stun_multiple.ejs'),_0x43fa('0x5e'));var _0x4594b6=ejs[_0x43fa('0x58')](_0x4502ff,{'networks':_0x89670||[]});fs[_0x43fa('0x59')](_0x43fa('0x5a'),_0x4594b6);return respondWithRpcPromise(_0x43fa('0x5b'),'destroy',{'module':_0x43fa('0x61')});}else if(_0x3c3084[_0x43fa('0x46')]['toUpperCase']()=='TURN'){var _0x4cd454=fs[_0x43fa('0x55')](path['join'](config[_0x43fa('0x57')],_0x43fa('0x5d')),_0x43fa('0x5e'));var _0x3afe9c=ejs[_0x43fa('0x58')](_0x4cd454,{'networks':_0x89670||[]});fs[_0x43fa('0x59')](_0x43fa('0x5f'),_0x3afe9c);return respondWithRpcPromise(_0x43fa('0x5b'),_0x43fa('0x30'),{'module':'res_stun_monitor.so'});}else{var _0x1f8db4=fs[_0x43fa('0x55')](path[_0x43fa('0x56')](config['root'],'server/files/templates/network.ejs'),_0x43fa('0x5e'));var _0x4e9a1f=ejs['render'](_0x1f8db4,{'networks':_0x89670||[]});fs[_0x43fa('0x59')](util[_0x43fa('0x63')](_0x43fa('0x64'),_0x3b7014[_0x43fa('0x52')][_0x43fa('0x46')][_0x43fa('0x67')]()),_0x4e9a1f);return respondWithRpcPromise(_0x43fa('0x5b'),_0x43fa('0x30'),{'module':'chan_sip.so'});}return null;})[_0x43fa('0x23')](handleError(_0x53a420,null));};