85bac32936e45fcb15b0b8668b084de2a3067135
[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 _0x389e=['error','message','result','catch','sendStatus','status','end','json','undefined','count','offset','Content-Range','apply','reject','save','update','stack','name','send','index','map','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','limit','order','sort','pick','filter','where','type','VIRTUAL','merge','options','Network','include','findAll','rows','params','includeAll','find','create','sequelize','transaction','body','toUpperCase','STUN','readFileSync','join','root','server/files/templates/stun_multiple.ejs','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','TURN','utf8','/etc/asterisk/turn_xcally.conf','res_stun_monitor.so','format','toLowerCase','server/files/templates/network.ejs','/etc/asterisk/sip_xcally_%s.conf','chan_sip.so','destroy','server/files/templates/turn_multiple.ejs','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','client','http','request','then','info','Network,\x20%s,\x20%s','request\x20sent','code'];(function(_0x17928f,_0x4ad33f){var _0x500b63=function(_0x127644){while(--_0x127644){_0x17928f['push'](_0x17928f['shift']());}};_0x500b63(++_0x4ad33f);}(_0x389e,0x188));var _0xe389=function(_0x739550,_0x57aa93){_0x739550=_0x739550-0x0;var _0x5c17ef=_0x389e[_0x739550];return _0x5c17ef;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xe389('0x0'));var rp=require(_0xe389('0x1'));var moment=require('moment');var BPromise=require(_0xe389('0x2'));var Mustache=require(_0xe389('0x3'));var util=require(_0xe389('0x4'));var path=require(_0xe389('0x5'));var sox=require(_0xe389('0x6'));var csv=require(_0xe389('0x7'));var ejs=require(_0xe389('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe389('0x9'));var squel=require(_0xe389('0xa'));var crypto=require(_0xe389('0xb'));var jsforce=require(_0xe389('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xe389('0x7'));var querystring=require(_0xe389('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xe389('0xe'));var qs=require(_0xe389('0xf'));var as=require(_0xe389('0x10'));var hardwareService=require(_0xe389('0x11'));var logger=require(_0xe389('0x12'))(_0xe389('0x13'));var utils=require(_0xe389('0x14'));var config=require(_0xe389('0x15'));var licenseUtil=require(_0xe389('0x16'));var db=require(_0xe389('0x17'))['db'];var jayson=require('jayson/promise');var client=jayson[_0xe389('0x18')][_0xe389('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x2672c0,_0x5487cb,_0x5a7df4,_0x5b4580){return new BPromise(function(_0x389e29,_0x587d75){var _0x5661c8=_0x5b4580||client;return _0x5661c8[_0xe389('0x1a')](_0x2672c0,_0x5a7df4)[_0xe389('0x1b')](function(_0x67a626){logger[_0xe389('0x1c')](_0xe389('0x1d'),_0x5487cb,_0xe389('0x1e'));logger['debug']('Network,\x20%s,\x20%s,\x20%s',_0x5487cb,_0xe389('0x1e'),JSON['stringify'](_0x67a626));if(_0x67a626['error']){if(_0x67a626['error'][_0xe389('0x1f')]===0x1f4){logger['error'](_0xe389('0x1d'),_0x5487cb,_0x67a626[_0xe389('0x20')][_0xe389('0x21')]);return _0x587d75(_0x67a626[_0xe389('0x20')][_0xe389('0x21')]);}logger['error'](_0xe389('0x1d'),_0x5487cb,_0x67a626['error'][_0xe389('0x21')]);return _0x389e29(_0x67a626['error'][_0xe389('0x21')]);}else{logger['info'](_0xe389('0x1d'),_0x5487cb,_0xe389('0x1e'));_0x389e29(_0x67a626[_0xe389('0x22')][_0xe389('0x21')]);}})[_0xe389('0x23')](function(_0x4cc220){logger[_0xe389('0x20')]('Network,\x20%s,\x20%s',_0x5487cb,_0x4cc220);_0x587d75(_0x4cc220);});});}function respondWithStatusCode(_0x38d9d5,_0x462a71){_0x462a71=_0x462a71||0xcc;return function(_0x2a39aa){if(_0x2a39aa){return _0x38d9d5[_0xe389('0x24')](_0x462a71);}return _0x38d9d5[_0xe389('0x25')](_0x462a71)[_0xe389('0x26')]();};}function respondWithResult(_0x38d311,_0xe2465f){_0xe2465f=_0xe2465f||0xc8;return function(_0x566016){if(_0x566016){return _0x38d311[_0xe389('0x25')](_0xe2465f)[_0xe389('0x27')](_0x566016);}};}function respondWithFilteredResult(_0x2f9512,_0x100f12){return function(_0x5a9ce1){if(_0x5a9ce1){var _0x31571a=typeof _0x100f12['offset']===_0xe389('0x28')&&typeof _0x100f12['limit']==='undefined';var _0x20a9cc=_0x5a9ce1[_0xe389('0x29')];var _0x50dbef=_0x31571a?0x0:_0x100f12['offset'];var _0x367043=_0x31571a?_0x5a9ce1[_0xe389('0x29')]:_0x100f12[_0xe389('0x2a')]+_0x100f12['limit'];var _0x5bf7b2;if(_0x367043>=_0x20a9cc){_0x367043=_0x20a9cc;_0x5bf7b2=0xc8;}else{_0x5bf7b2=0xce;}_0x2f9512['status'](_0x5bf7b2);return _0x2f9512['set'](_0xe389('0x2b'),_0x50dbef+'-'+_0x367043+'/'+_0x20a9cc)['json'](_0x5a9ce1);}return null;};}function patchUpdates(_0x2906a0){return function(_0x47e669){try{jsonpatch[_0xe389('0x2c')](_0x47e669,_0x2906a0,!![]);}catch(_0x266fa0){return BPromise[_0xe389('0x2d')](_0x266fa0);}return _0x47e669[_0xe389('0x2e')]();};}function saveUpdates(_0x40d90a,_0x391563){return function(_0x137edf){if(_0x137edf){return _0x137edf[_0xe389('0x2f')](_0x40d90a)['then'](function(_0xac88bf){return _0xac88bf;});}return null;};}function removeEntity(_0x278ee3,_0x10a229){return function(_0x520300){if(_0x520300){return _0x520300['destroy']()[_0xe389('0x1b')](function(){_0x278ee3[_0xe389('0x25')](0xcc)[_0xe389('0x26')]();});}};}function handleEntityNotFound(_0x375e63,_0x26d920){return function(_0x266624){if(!_0x266624){_0x375e63['sendStatus'](0x194);}return _0x266624;};}function handleError(_0x3dbba7,_0x273ad8){_0x273ad8=_0x273ad8||0x1f4;return function(_0x44c469){logger[_0xe389('0x20')](_0x44c469[_0xe389('0x30')]);if(_0x44c469[_0xe389('0x31')]){delete _0x44c469[_0xe389('0x31')];}_0x3dbba7[_0xe389('0x25')](_0x273ad8)[_0xe389('0x32')](_0x44c469);};}exports[_0xe389('0x33')]=function(_0x295090,_0x57aa95){var _0x3995e8={},_0x13a496={},_0x29e766={'count':0x0,'rows':[]};var _0x310a05=_[_0xe389('0x34')](db['Network'][_0xe389('0x35')],function(_0x326798){return{'name':_0x326798['fieldName'],'type':_0x326798['type'][_0xe389('0x36')]};});_0x13a496[_0xe389('0x37')]=_[_0xe389('0x34')](_0x310a05,_0xe389('0x31'));_0x13a496[_0xe389('0x38')]=_[_0xe389('0x39')](_0x295090[_0xe389('0x38')]);_0x13a496[_0xe389('0x3a')]=_[_0xe389('0x3b')](_0x13a496[_0xe389('0x37')],_0x13a496[_0xe389('0x38')]);_0x3995e8[_0xe389('0x3c')]=_[_0xe389('0x3b')](_0x13a496['model'],qs['fields'](_0x295090['query'][_0xe389('0x3d')]));_0x3995e8['attributes']=_0x3995e8[_0xe389('0x3c')][_0xe389('0x3e')]?_0x3995e8[_0xe389('0x3c')]:_0x13a496[_0xe389('0x37')];if(!_0x295090[_0xe389('0x38')]['hasOwnProperty'](_0xe389('0x3f'))){_0x3995e8[_0xe389('0x40')]=qs[_0xe389('0x40')](_0x295090[_0xe389('0x38')][_0xe389('0x40')]);_0x3995e8[_0xe389('0x2a')]=qs[_0xe389('0x2a')](_0x295090[_0xe389('0x38')][_0xe389('0x2a')]);}_0x3995e8[_0xe389('0x41')]=qs[_0xe389('0x42')](_0x295090['query'][_0xe389('0x42')]);_0x3995e8['where']=qs[_0xe389('0x3a')](_[_0xe389('0x43')](_0x295090[_0xe389('0x38')],_0x13a496[_0xe389('0x3a')]),_0x310a05);if(_0x295090[_0xe389('0x38')][_0xe389('0x44')]){_0x3995e8[_0xe389('0x45')]=_['merge'](_0x3995e8[_0xe389('0x45')],{'$or':_[_0xe389('0x34')](_0x310a05,function(_0x4c7073){if(_0x4c7073[_0xe389('0x46')]!==_0xe389('0x47')){var _0xd1e819={};_0xd1e819[_0x4c7073[_0xe389('0x31')]]={'$like':'%'+_0x295090['query'][_0xe389('0x44')]+'%'};return _0xd1e819;}})});}_0x3995e8=_[_0xe389('0x48')]({},_0x3995e8,_0x295090[_0xe389('0x49')]);var _0x5d5335={'where':_0x3995e8['where']};return db[_0xe389('0x4a')][_0xe389('0x29')](_0x5d5335)[_0xe389('0x1b')](function(_0x29f0ea){_0x29e766['count']=_0x29f0ea;if(_0x295090[_0xe389('0x38')]['includeAll']){_0x3995e8[_0xe389('0x4b')]=[{'all':!![]}];}return db[_0xe389('0x4a')][_0xe389('0x4c')](_0x3995e8);})['then'](function(_0x19cd99){_0x29e766[_0xe389('0x4d')]=_0x19cd99;return _0x29e766;})[_0xe389('0x1b')](respondWithFilteredResult(_0x57aa95,_0x3995e8))['catch'](handleError(_0x57aa95,null));};exports['show']=function(_0x14026f,_0x19cebf){var _0x2ee5b3={'raw':!![],'where':{'id':_0x14026f[_0xe389('0x4e')]['id']}},_0xbcf9ef={};_0xbcf9ef['model']=_['keys'](db[_0xe389('0x4a')][_0xe389('0x35')]);_0xbcf9ef[_0xe389('0x38')]=_[_0xe389('0x39')](_0x14026f['query']);_0xbcf9ef['filters']=_[_0xe389('0x3b')](_0xbcf9ef['model'],_0xbcf9ef[_0xe389('0x38')]);_0x2ee5b3[_0xe389('0x3c')]=_['intersection'](_0xbcf9ef[_0xe389('0x37')],qs[_0xe389('0x3d')](_0x14026f[_0xe389('0x38')][_0xe389('0x3d')]));_0x2ee5b3[_0xe389('0x3c')]=_0x2ee5b3[_0xe389('0x3c')][_0xe389('0x3e')]?_0x2ee5b3[_0xe389('0x3c')]:_0xbcf9ef[_0xe389('0x37')];if(_0x14026f[_0xe389('0x38')][_0xe389('0x4f')]){_0x2ee5b3[_0xe389('0x4b')]=[{'all':!![]}];}_0x2ee5b3=_['merge']({},_0x2ee5b3,_0x14026f['options']);return db[_0xe389('0x4a')][_0xe389('0x50')](_0x2ee5b3)[_0xe389('0x1b')](handleEntityNotFound(_0x19cebf,null))['then'](respondWithResult(_0x19cebf,null))[_0xe389('0x23')](handleError(_0x19cebf,null));};exports[_0xe389('0x51')]=function(_0x4e56e8,_0x3d5fb5,_0x419ffd){var _0x3525a7;return db[_0xe389('0x52')][_0xe389('0x53')](function(_0x48a629){return db[_0xe389('0x4a')][_0xe389('0x51')](_0x4e56e8['body'],{'raw':!![]})['then'](function(_0x501341){_0x3525a7=_0x501341;return db[_0xe389('0x4a')]['findAll']({'where':{'type':_0x4e56e8[_0xe389('0x54')]['type']},'raw':!![]});})[_0xe389('0x1b')](function(_0x438439){if(_0x3525a7['type'][_0xe389('0x55')]()==_0xe389('0x56')){var _0x107940=fs[_0xe389('0x57')](path[_0xe389('0x58')](config[_0xe389('0x59')],_0xe389('0x5a')),'utf8');var _0x3262ab=ejs[_0xe389('0x5b')](_0x107940,{'networks':_0x438439||[]});fs[_0xe389('0x5c')](_0xe389('0x5d'),_0x3262ab);return respondWithRpcPromise(_0xe389('0x5e'),_0xe389('0x51'),{'module':'res_stun_monitor.so'});}else if(_0x3525a7[_0xe389('0x46')][_0xe389('0x55')]()==_0xe389('0x5f')){var _0x3077f9=fs[_0xe389('0x57')](path['join'](config[_0xe389('0x59')],'server/files/templates/turn_multiple.ejs'),_0xe389('0x60'));var _0x48f4cd=ejs[_0xe389('0x5b')](_0x3077f9,{'networks':_0x438439||[]});fs['writeFileSync'](_0xe389('0x61'),_0x48f4cd);return respondWithRpcPromise(_0xe389('0x5e'),_0xe389('0x51'),{'module':_0xe389('0x62')});}else{var _0x2f659f=fs[_0xe389('0x57')](path['join'](config['root'],'server/files/templates/network.ejs'),_0xe389('0x60'));var _0x34dec8=ejs['render'](_0x2f659f,{'networks':_0x438439||[]});fs[_0xe389('0x5c')](util[_0xe389('0x63')]('/etc/asterisk/sip_xcally_%s.conf',_0x4e56e8[_0xe389('0x54')]['type'][_0xe389('0x64')]()),_0x34dec8);return respondWithRpcPromise(_0xe389('0x5e'),_0xe389('0x51'),{'module':'chan_sip.so'});}return null;})[_0xe389('0x1b')](function(){return _0x3525a7;});})['then'](respondWithResult(_0x3d5fb5,0xc9))[_0xe389('0x23')](handleError(_0x3d5fb5,null));};exports[_0xe389('0x2f')]=function(_0x4c1302,_0x5b6142,_0x1bace4){var _0x3cb9cf;return db['sequelize'][_0xe389('0x53')](function(_0xea942b){return db[_0xe389('0x4a')][_0xe389('0x50')]({'where':{'id':_0x4c1302[_0xe389('0x4e')]['id']}})[_0xe389('0x1b')](handleEntityNotFound(_0x5b6142,null))['then'](saveUpdates(_0x4c1302[_0xe389('0x54')],null))[_0xe389('0x1b')](function(_0x11fec9){if(_0x11fec9){_0x3cb9cf=_0x11fec9;return db[_0xe389('0x4a')][_0xe389('0x4c')]({'where':{'type':_0x3cb9cf[_0xe389('0x46')]},'raw':!![]});}return null;})['then'](function(_0x3fdc55){if(_0x3cb9cf[_0xe389('0x46')][_0xe389('0x55')]()=='STUN'){var _0x28eb9a=fs[_0xe389('0x57')](path[_0xe389('0x58')](config['root'],_0xe389('0x5a')),_0xe389('0x60'));var _0x4dcd0b=ejs[_0xe389('0x5b')](_0x28eb9a,{'networks':_0x3fdc55||[]});fs[_0xe389('0x5c')](_0xe389('0x5d'),_0x4dcd0b);return respondWithRpcPromise(_0xe389('0x5e'),_0xe389('0x2f'),{'module':_0xe389('0x62')});}else if(_0x3cb9cf[_0xe389('0x46')][_0xe389('0x55')]()=='TURN'){var _0x2b7e56=fs[_0xe389('0x57')](path[_0xe389('0x58')](config['root'],'server/files/templates/turn_multiple.ejs'),_0xe389('0x60'));var _0x1b19c9=ejs[_0xe389('0x5b')](_0x2b7e56,{'networks':_0x3fdc55||[]});fs[_0xe389('0x5c')]('/etc/asterisk/turn_xcally.conf',_0x1b19c9);return respondWithRpcPromise('Reload',_0xe389('0x2f'),{'module':'res_stun_monitor.so'});}else{var _0x4e3ae8=fs[_0xe389('0x57')](path[_0xe389('0x58')](config['root'],_0xe389('0x65')),_0xe389('0x60'));var _0x4c262c=ejs['render'](_0x4e3ae8,{'networks':_0x3fdc55||[]});fs['writeFileSync'](util[_0xe389('0x63')](_0xe389('0x66'),_0x4c1302[_0xe389('0x54')][_0xe389('0x46')][_0xe389('0x64')]()),_0x4c262c);return respondWithRpcPromise('Reload',_0xe389('0x2f'),{'module':_0xe389('0x67')});}return null;})[_0xe389('0x1b')](function(_0x3f9acb){if(_0x3f9acb){return _0x3cb9cf;}return null;});})[_0xe389('0x1b')](respondWithResult(_0x5b6142,null))[_0xe389('0x23')](handleError(_0x5b6142,null));};exports[_0xe389('0x68')]=function(_0x138363,_0x5955ee,_0x57d6ec){var _0xf56aa9;return db[_0xe389('0x4a')][_0xe389('0x50')]({'where':{'id':_0x138363[_0xe389('0x4e')]['id']}})[_0xe389('0x1b')](function(_0x5eaa25){_0xf56aa9=_0x5eaa25;return _0x5eaa25;})[_0xe389('0x1b')](handleEntityNotFound(_0x5955ee,null))[_0xe389('0x1b')](removeEntity(_0x5955ee,null))[_0xe389('0x1b')](function(){if(_0xf56aa9){return db['Network'][_0xe389('0x4c')]({'where':{'type':_0xf56aa9['type']},'raw':!![]});}})[_0xe389('0x1b')](function(_0x409407){if(_0xf56aa9[_0xe389('0x46')][_0xe389('0x55')]()==_0xe389('0x56')){var _0x731f30=fs[_0xe389('0x57')](path[_0xe389('0x58')](config[_0xe389('0x59')],_0xe389('0x5a')),_0xe389('0x60'));var _0x17e844=ejs['render'](_0x731f30,{'networks':_0x409407||[]});fs['writeFileSync'](_0xe389('0x5d'),_0x17e844);return respondWithRpcPromise(_0xe389('0x5e'),_0xe389('0x68'),{'module':_0xe389('0x62')});}else if(_0xf56aa9['type']['toUpperCase']()==_0xe389('0x5f')){var _0x28209f=fs['readFileSync'](path[_0xe389('0x58')](config['root'],_0xe389('0x69')),_0xe389('0x60'));var _0x4d916d=ejs[_0xe389('0x5b')](_0x28209f,{'networks':_0x409407||[]});fs[_0xe389('0x5c')](_0xe389('0x61'),_0x4d916d);return respondWithRpcPromise(_0xe389('0x5e'),'destroy',{'module':_0xe389('0x62')});}else{var _0x234f10=fs['readFileSync'](path[_0xe389('0x58')](config[_0xe389('0x59')],_0xe389('0x65')),'utf8');var _0x4e0db7=ejs['render'](_0x234f10,{'networks':_0x409407||[]});fs['writeFileSync'](util[_0xe389('0x63')](_0xe389('0x66'),_0x138363[_0xe389('0x54')]['type'][_0xe389('0x64')]()),_0x4e0db7);return respondWithRpcPromise(_0xe389('0x5e'),_0xe389('0x68'),{'module':'chan_sip.so'});}return null;})[_0xe389('0x23')](handleError(_0x5955ee,null));};