04767738a8c617f472f8b5e37ed0658f11639209
[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 _0x0f24=['error','message','result','catch','status','end','json','limit','undefined','count','offset','set','reject','save','update','destroy','sendStatus','name','send','map','rawAttributes','fieldName','type','keys','query','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','VIRTUAL','filter','options','Network','include','rows','params','length','includeAll','find','create','sequelize','transaction','body','toUpperCase','readFileSync','join','root','server/files/templates/stun_multiple.ejs','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','TURN','server/files/templates/turn_multiple.ejs','utf8','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','/etc/asterisk/sip_xcally_%s.conf','findAll','toLowerCase','chan_sip.so','STUN','format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','client','http','request','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x27638d,_0x4094db){var _0x35da35=function(_0x538095){while(--_0x538095){_0x27638d['push'](_0x27638d['shift']());}};_0x35da35(++_0x4094db);}(_0x0f24,0xac));var _0x40f2=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x0f24[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x40f2('0x0'));var zipdir=require(_0x40f2('0x1'));var jsonpatch=require(_0x40f2('0x2'));var rp=require(_0x40f2('0x3'));var moment=require(_0x40f2('0x4'));var BPromise=require(_0x40f2('0x5'));var Mustache=require(_0x40f2('0x6'));var util=require('util');var path=require(_0x40f2('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x40f2('0x8'));var fs=require('fs');var fs_extra=require(_0x40f2('0x9'));var _=require(_0x40f2('0xa'));var squel=require(_0x40f2('0xb'));var crypto=require('crypto');var jsforce=require(_0x40f2('0xc'));var deskjs=require(_0x40f2('0xd'));var toCsv=require(_0x40f2('0xe'));var querystring=require('querystring');var Papa=require(_0x40f2('0xf'));var Redis=require(_0x40f2('0x10'));var authService=require(_0x40f2('0x11'));var qs=require(_0x40f2('0x12'));var as=require(_0x40f2('0x13'));var hardwareService=require(_0x40f2('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x40f2('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var jayson=require('jayson/promise');var client=jayson[_0x40f2('0x16')][_0x40f2('0x17')]({'port':0x232a});function respondWithRpcPromise(_0x199e10,_0x31b4c1,_0x3163b9,_0x99d4e8){return new BPromise(function(_0x3be6a6,_0x43fcd2){var _0x3d3549=_0x99d4e8||client;return _0x3d3549[_0x40f2('0x18')](_0x199e10,_0x3163b9)[_0x40f2('0x19')](function(_0x104f94){logger[_0x40f2('0x1a')](_0x40f2('0x1b'),_0x31b4c1,_0x40f2('0x1c'));logger[_0x40f2('0x1d')](_0x40f2('0x1e'),_0x31b4c1,'request\x20sent',JSON[_0x40f2('0x1f')](_0x104f94));if(_0x104f94[_0x40f2('0x20')]){if(_0x104f94[_0x40f2('0x20')]['code']===0x1f4){logger[_0x40f2('0x20')](_0x40f2('0x1b'),_0x31b4c1,_0x104f94[_0x40f2('0x20')][_0x40f2('0x21')]);return _0x43fcd2(_0x104f94[_0x40f2('0x20')][_0x40f2('0x21')]);}logger[_0x40f2('0x20')]('Network,\x20%s,\x20%s',_0x31b4c1,_0x104f94[_0x40f2('0x20')][_0x40f2('0x21')]);return _0x3be6a6(_0x104f94['error'][_0x40f2('0x21')]);}else{logger['info']('Network,\x20%s,\x20%s',_0x31b4c1,'request\x20sent');_0x3be6a6(_0x104f94[_0x40f2('0x22')][_0x40f2('0x21')]);}})[_0x40f2('0x23')](function(_0x54418d){logger[_0x40f2('0x20')](_0x40f2('0x1b'),_0x31b4c1,_0x54418d);_0x43fcd2(_0x54418d);});});}function respondWithStatusCode(_0x4357aa,_0x580a72){_0x580a72=_0x580a72||0xcc;return function(_0x4cf8a8){if(_0x4cf8a8){return _0x4357aa['sendStatus'](_0x580a72);}return _0x4357aa[_0x40f2('0x24')](_0x580a72)[_0x40f2('0x25')]();};}function respondWithResult(_0x4aaef0,_0x29522d){_0x29522d=_0x29522d||0xc8;return function(_0x5eb5a3){if(_0x5eb5a3){return _0x4aaef0['status'](_0x29522d)[_0x40f2('0x26')](_0x5eb5a3);}};}function respondWithFilteredResult(_0x1bd2d1,_0x414f2f){return function(_0x41afe9){if(_0x41afe9){var _0x190d47=typeof _0x414f2f['offset']==='undefined'&&typeof _0x414f2f[_0x40f2('0x27')]===_0x40f2('0x28');var _0x54aeac=_0x41afe9[_0x40f2('0x29')];var _0x262d2b=_0x190d47?0x0:_0x414f2f[_0x40f2('0x2a')];var _0x3bd0bc=_0x190d47?_0x41afe9[_0x40f2('0x29')]:_0x414f2f[_0x40f2('0x2a')]+_0x414f2f[_0x40f2('0x27')];var _0x13b357;if(_0x3bd0bc>=_0x54aeac){_0x3bd0bc=_0x54aeac;_0x13b357=0xc8;}else{_0x13b357=0xce;}_0x1bd2d1[_0x40f2('0x24')](_0x13b357);return _0x1bd2d1[_0x40f2('0x2b')]('Content-Range',_0x262d2b+'-'+_0x3bd0bc+'/'+_0x54aeac)[_0x40f2('0x26')](_0x41afe9);}return null;};}function patchUpdates(_0x2aa976){return function(_0x22a6f2){try{jsonpatch['apply'](_0x22a6f2,_0x2aa976,!![]);}catch(_0x9be752){return BPromise[_0x40f2('0x2c')](_0x9be752);}return _0x22a6f2[_0x40f2('0x2d')]();};}function saveUpdates(_0x13d105,_0x1e6937){return function(_0x550f1d){if(_0x550f1d){return _0x550f1d[_0x40f2('0x2e')](_0x13d105)['then'](function(_0x234904){return _0x234904;});}return null;};}function removeEntity(_0xd2aa35,_0x7201ac){return function(_0x1cfc46){if(_0x1cfc46){return _0x1cfc46[_0x40f2('0x2f')]()['then'](function(){_0xd2aa35[_0x40f2('0x24')](0xcc)[_0x40f2('0x25')]();});}};}function handleEntityNotFound(_0x1ea5d9,_0x365660){return function(_0x5f0f20){if(!_0x5f0f20){_0x1ea5d9[_0x40f2('0x30')](0x194);}return _0x5f0f20;};}function handleError(_0xdeb00d,_0x57fd77){_0x57fd77=_0x57fd77||0x1f4;return function(_0x11b9dc){logger[_0x40f2('0x20')](_0x11b9dc['stack']);if(_0x11b9dc[_0x40f2('0x31')]){delete _0x11b9dc[_0x40f2('0x31')];}_0xdeb00d[_0x40f2('0x24')](_0x57fd77)[_0x40f2('0x32')](_0x11b9dc);};}exports['index']=function(_0x58c938,_0x117450){var _0x259acf={},_0x44184f={},_0x39ef59={'count':0x0,'rows':[]};var _0x37e03a=_[_0x40f2('0x33')](db['Network'][_0x40f2('0x34')],function(_0x19e11a){return{'name':_0x19e11a[_0x40f2('0x35')],'type':_0x19e11a[_0x40f2('0x36')]['key']};});_0x44184f['model']=_[_0x40f2('0x33')](_0x37e03a,'name');_0x44184f['query']=_[_0x40f2('0x37')](_0x58c938[_0x40f2('0x38')]);_0x44184f[_0x40f2('0x39')]=_[_0x40f2('0x3a')](_0x44184f[_0x40f2('0x3b')],_0x44184f['query']);_0x259acf[_0x40f2('0x3c')]=_[_0x40f2('0x3a')](_0x44184f[_0x40f2('0x3b')],qs[_0x40f2('0x3d')](_0x58c938[_0x40f2('0x38')][_0x40f2('0x3d')]));_0x259acf[_0x40f2('0x3c')]=_0x259acf[_0x40f2('0x3c')]['length']?_0x259acf[_0x40f2('0x3c')]:_0x44184f[_0x40f2('0x3b')];if(!_0x58c938[_0x40f2('0x38')][_0x40f2('0x3e')](_0x40f2('0x3f'))){_0x259acf[_0x40f2('0x27')]=qs[_0x40f2('0x27')](_0x58c938[_0x40f2('0x38')][_0x40f2('0x27')]);_0x259acf[_0x40f2('0x2a')]=qs[_0x40f2('0x2a')](_0x58c938[_0x40f2('0x38')][_0x40f2('0x2a')]);}_0x259acf[_0x40f2('0x40')]=qs[_0x40f2('0x41')](_0x58c938[_0x40f2('0x38')]['sort']);_0x259acf[_0x40f2('0x42')]=qs[_0x40f2('0x39')](_['pick'](_0x58c938[_0x40f2('0x38')],_0x44184f[_0x40f2('0x39')]),_0x37e03a);if(_0x58c938[_0x40f2('0x38')]['filter']){_0x259acf['where']=_['merge'](_0x259acf[_0x40f2('0x42')],{'$or':_[_0x40f2('0x33')](_0x37e03a,function(_0x29b9ee){if(_0x29b9ee[_0x40f2('0x36')]!==_0x40f2('0x43')){var _0x48daaa={};_0x48daaa[_0x29b9ee['name']]={'$like':'%'+_0x58c938[_0x40f2('0x38')][_0x40f2('0x44')]+'%'};return _0x48daaa;}})});}_0x259acf=_['merge']({},_0x259acf,_0x58c938[_0x40f2('0x45')]);var _0x2d4182={'where':_0x259acf[_0x40f2('0x42')]};return db[_0x40f2('0x46')][_0x40f2('0x29')](_0x2d4182)[_0x40f2('0x19')](function(_0x2c97fb){_0x39ef59['count']=_0x2c97fb;if(_0x58c938[_0x40f2('0x38')]['includeAll']){_0x259acf[_0x40f2('0x47')]=[{'all':!![]}];}return db['Network']['findAll'](_0x259acf);})[_0x40f2('0x19')](function(_0x12a7f3){_0x39ef59[_0x40f2('0x48')]=_0x12a7f3;return _0x39ef59;})[_0x40f2('0x19')](respondWithFilteredResult(_0x117450,_0x259acf))[_0x40f2('0x23')](handleError(_0x117450,null));};exports['show']=function(_0x440b6f,_0x6dc28e){var _0x50d15c={'raw':!![],'where':{'id':_0x440b6f[_0x40f2('0x49')]['id']}},_0x4dd948={};_0x4dd948[_0x40f2('0x3b')]=_[_0x40f2('0x37')](db[_0x40f2('0x46')][_0x40f2('0x34')]);_0x4dd948['query']=_['keys'](_0x440b6f[_0x40f2('0x38')]);_0x4dd948[_0x40f2('0x39')]=_[_0x40f2('0x3a')](_0x4dd948[_0x40f2('0x3b')],_0x4dd948['query']);_0x50d15c['attributes']=_['intersection'](_0x4dd948[_0x40f2('0x3b')],qs[_0x40f2('0x3d')](_0x440b6f[_0x40f2('0x38')][_0x40f2('0x3d')]));_0x50d15c[_0x40f2('0x3c')]=_0x50d15c[_0x40f2('0x3c')][_0x40f2('0x4a')]?_0x50d15c['attributes']:_0x4dd948[_0x40f2('0x3b')];if(_0x440b6f[_0x40f2('0x38')][_0x40f2('0x4b')]){_0x50d15c[_0x40f2('0x47')]=[{'all':!![]}];}_0x50d15c=_['merge']({},_0x50d15c,_0x440b6f['options']);return db[_0x40f2('0x46')][_0x40f2('0x4c')](_0x50d15c)['then'](handleEntityNotFound(_0x6dc28e,null))[_0x40f2('0x19')](respondWithResult(_0x6dc28e,null))[_0x40f2('0x23')](handleError(_0x6dc28e,null));};exports[_0x40f2('0x4d')]=function(_0x566f08,_0x33f267,_0x5e131d){var _0x301e06;return db[_0x40f2('0x4e')][_0x40f2('0x4f')](function(_0x560c4b){return db[_0x40f2('0x46')]['create'](_0x566f08[_0x40f2('0x50')],{'raw':!![]})['then'](function(_0x261eb8){_0x301e06=_0x261eb8;return db[_0x40f2('0x46')]['findAll']({'where':{'type':_0x566f08['body'][_0x40f2('0x36')]},'raw':!![]});})[_0x40f2('0x19')](function(_0x4f7806){if(_0x301e06[_0x40f2('0x36')][_0x40f2('0x51')]()=='STUN'){var _0x2499ca=fs[_0x40f2('0x52')](path[_0x40f2('0x53')](config[_0x40f2('0x54')],_0x40f2('0x55')),'utf8');var _0x50bdd9=ejs[_0x40f2('0x56')](_0x2499ca,{'networks':_0x4f7806||[]});fs[_0x40f2('0x57')](_0x40f2('0x58'),_0x50bdd9);return respondWithRpcPromise(_0x40f2('0x59'),_0x40f2('0x4d'),{'module':_0x40f2('0x5a')});}else if(_0x301e06['type'][_0x40f2('0x51')]()==_0x40f2('0x5b')){var _0x17cb75=fs['readFileSync'](path['join'](config[_0x40f2('0x54')],_0x40f2('0x5c')),_0x40f2('0x5d'));var _0x299b9f=ejs[_0x40f2('0x56')](_0x17cb75,{'networks':_0x4f7806||[]});fs[_0x40f2('0x57')](_0x40f2('0x5e'),_0x299b9f);return respondWithRpcPromise(_0x40f2('0x59'),_0x40f2('0x4d'),{'module':_0x40f2('0x5a')});}else{var _0x312875=fs['readFileSync'](path[_0x40f2('0x53')](config[_0x40f2('0x54')],_0x40f2('0x5f')),_0x40f2('0x5d'));var _0x406b44=ejs['render'](_0x312875,{'networks':_0x4f7806||[]});fs['writeFileSync'](util['format'](_0x40f2('0x60'),_0x566f08[_0x40f2('0x50')][_0x40f2('0x36')]['toLowerCase']()),_0x406b44);return respondWithRpcPromise(_0x40f2('0x59'),_0x40f2('0x4d'),{'module':'chan_sip.so'});}return null;})['then'](function(){return _0x301e06;});})[_0x40f2('0x19')](respondWithResult(_0x33f267,0xc9))[_0x40f2('0x23')](handleError(_0x33f267,null));};exports[_0x40f2('0x2e')]=function(_0x14e68b,_0x175b14,_0x5d8602){var _0x39fbaa;return db['sequelize'][_0x40f2('0x4f')](function(_0x32f497){return db[_0x40f2('0x46')][_0x40f2('0x4c')]({'where':{'id':_0x14e68b[_0x40f2('0x49')]['id']}})[_0x40f2('0x19')](handleEntityNotFound(_0x175b14,null))[_0x40f2('0x19')](saveUpdates(_0x14e68b['body'],null))[_0x40f2('0x19')](function(_0x2a3425){if(_0x2a3425){_0x39fbaa=_0x2a3425;return db[_0x40f2('0x46')][_0x40f2('0x61')]({'where':{'type':_0x39fbaa[_0x40f2('0x36')]},'raw':!![]});}return null;})[_0x40f2('0x19')](function(_0x3b9c0d){if(_0x39fbaa[_0x40f2('0x36')][_0x40f2('0x51')]()=='STUN'){var _0x3c8208=fs[_0x40f2('0x52')](path[_0x40f2('0x53')](config[_0x40f2('0x54')],'server/files/templates/stun_multiple.ejs'),'utf8');var _0x3e0be2=ejs['render'](_0x3c8208,{'networks':_0x3b9c0d||[]});fs['writeFileSync']('/etc/asterisk/stun_xcally.conf',_0x3e0be2);return respondWithRpcPromise(_0x40f2('0x59'),_0x40f2('0x2e'),{'module':_0x40f2('0x5a')});}else if(_0x39fbaa[_0x40f2('0x36')][_0x40f2('0x51')]()==_0x40f2('0x5b')){var _0x487169=fs['readFileSync'](path[_0x40f2('0x53')](config['root'],_0x40f2('0x5c')),_0x40f2('0x5d'));var _0x30f722=ejs['render'](_0x487169,{'networks':_0x3b9c0d||[]});fs['writeFileSync'](_0x40f2('0x5e'),_0x30f722);return respondWithRpcPromise(_0x40f2('0x59'),_0x40f2('0x2e'),{'module':'res_stun_monitor.so'});}else{var _0x265811=fs[_0x40f2('0x52')](path[_0x40f2('0x53')](config[_0x40f2('0x54')],'server/files/templates/network.ejs'),'utf8');var _0x575a14=ejs[_0x40f2('0x56')](_0x265811,{'networks':_0x3b9c0d||[]});fs[_0x40f2('0x57')](util['format'](_0x40f2('0x60'),_0x14e68b['body'][_0x40f2('0x36')][_0x40f2('0x62')]()),_0x575a14);return respondWithRpcPromise(_0x40f2('0x59'),_0x40f2('0x2e'),{'module':_0x40f2('0x63')});}return null;})[_0x40f2('0x19')](function(_0x26fcc7){if(_0x26fcc7){return _0x39fbaa;}return null;});})[_0x40f2('0x19')](respondWithResult(_0x175b14,null))[_0x40f2('0x23')](handleError(_0x175b14,null));};exports['destroy']=function(_0x576c8e,_0x5c27d2,_0x3c42f4){var _0xfb21a4;return db['Network'][_0x40f2('0x4c')]({'where':{'id':_0x576c8e[_0x40f2('0x49')]['id']}})['then'](function(_0x9a50fa){_0xfb21a4=_0x9a50fa;return _0x9a50fa;})[_0x40f2('0x19')](handleEntityNotFound(_0x5c27d2,null))[_0x40f2('0x19')](removeEntity(_0x5c27d2,null))[_0x40f2('0x19')](function(){if(_0xfb21a4){return db[_0x40f2('0x46')][_0x40f2('0x61')]({'where':{'type':_0xfb21a4[_0x40f2('0x36')]},'raw':!![]});}})[_0x40f2('0x19')](function(_0x3390eb){if(_0xfb21a4[_0x40f2('0x36')]['toUpperCase']()==_0x40f2('0x64')){var _0x4ec5bb=fs[_0x40f2('0x52')](path['join'](config['root'],_0x40f2('0x55')),'utf8');var _0x35f2c1=ejs[_0x40f2('0x56')](_0x4ec5bb,{'networks':_0x3390eb||[]});fs[_0x40f2('0x57')](_0x40f2('0x58'),_0x35f2c1);return respondWithRpcPromise('Reload',_0x40f2('0x2f'),{'module':'res_stun_monitor.so'});}else if(_0xfb21a4[_0x40f2('0x36')][_0x40f2('0x51')]()=='TURN'){var _0x34fb60=fs['readFileSync'](path[_0x40f2('0x53')](config['root'],'server/files/templates/turn_multiple.ejs'),_0x40f2('0x5d'));var _0x10365f=ejs[_0x40f2('0x56')](_0x34fb60,{'networks':_0x3390eb||[]});fs[_0x40f2('0x57')](_0x40f2('0x5e'),_0x10365f);return respondWithRpcPromise('Reload','destroy',{'module':_0x40f2('0x5a')});}else{var _0x42eb73=fs[_0x40f2('0x52')](path[_0x40f2('0x53')](config['root'],_0x40f2('0x5f')),_0x40f2('0x5d'));var _0x587fc7=ejs['render'](_0x42eb73,{'networks':_0x3390eb||[]});fs['writeFileSync'](util[_0x40f2('0x65')](_0x40f2('0x60'),_0x576c8e[_0x40f2('0x50')]['type'][_0x40f2('0x62')]()),_0x587fc7);return respondWithRpcPromise(_0x40f2('0x59'),_0x40f2('0x2f'),{'module':'chan_sip.so'});}return null;})['catch'](handleError(_0x5c27d2,null));};