517305adc9709d8db21595add6181b0a3d06bec5
[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 _0xe6fc=['http','then','info','Network,\x20%s,\x20%s','Network,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','status','json','offset','undefined','count','limit','set','update','destroy','sendStatus','stack','name','send','map','Network','rawAttributes','fieldName','key','model','query','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','type','VIRTUAL','merge','options','includeAll','findAll','show','params','keys','intersection','include','find','create','body','STUN','readFileSync','join','server/files/templates/stun_multiple.ejs','utf8','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','TURN','root','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','toUpperCase','server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','util','path','lodash','../../components/parsers/qs','api','../../config/environment','../../mysqldb','jayson/promise'];(function(_0x13c75c,_0x2d07e4){var _0x2c687e=function(_0x33c87a){while(--_0x33c87a){_0x13c75c['push'](_0x13c75c['shift']());}};_0x2c687e(++_0x2d07e4);}(_0xe6fc,0x19c));var _0xce6f=function(_0x2e55ad,_0x1d6a64){_0x2e55ad=_0x2e55ad-0x0;var _0xdcc15a=_0xe6fc[_0x2e55ad];return _0xdcc15a;};'use strict';var util=require(_0xce6f('0x0'));var path=require(_0xce6f('0x1'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xce6f('0x2'));var qs=require(_0xce6f('0x3'));var logger=require('../../config/logger')(_0xce6f('0x4'));var config=require(_0xce6f('0x5'));var db=require(_0xce6f('0x6'))['db'];var jayson=require(_0xce6f('0x7'));var client=jayson['client'][_0xce6f('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x18ab74,_0x1c2d27,_0x35b1da,_0x4a2773){return new Promise(function(_0x96bb1a,_0x445cc8){var _0x17305b=_0x4a2773||client;return _0x17305b['request'](_0x18ab74,_0x35b1da)[_0xce6f('0x9')](function(_0x445ac0){logger[_0xce6f('0xa')](_0xce6f('0xb'),_0x1c2d27,'request\x20sent');logger['debug'](_0xce6f('0xc'),_0x1c2d27,'request\x20sent',JSON[_0xce6f('0xd')](_0x445ac0));if(_0x445ac0['error']){if(_0x445ac0['error'][_0xce6f('0xe')]===0x1f4){logger['error'](_0xce6f('0xb'),_0x1c2d27,_0x445ac0['error']['message']);return _0x445cc8(_0x445ac0['error']['message']);}logger[_0xce6f('0xf')](_0xce6f('0xb'),_0x1c2d27,_0x445ac0[_0xce6f('0xf')]['message']);return _0x96bb1a(_0x445ac0['error'][_0xce6f('0x10')]);}else{logger[_0xce6f('0xa')](_0xce6f('0xb'),_0x1c2d27,'request\x20sent');_0x96bb1a(_0x445ac0[_0xce6f('0x11')][_0xce6f('0x10')]);}})[_0xce6f('0x12')](function(_0xd7ccc2){logger[_0xce6f('0xf')]('Network,\x20%s,\x20%s',_0x1c2d27,_0xd7ccc2);_0x445cc8(_0xd7ccc2);});});}function respondWithResult(_0x2e8e52,_0x3d6451){_0x3d6451=_0x3d6451||0xc8;return function(_0x35615c){if(_0x35615c){return _0x2e8e52[_0xce6f('0x13')](_0x3d6451)[_0xce6f('0x14')](_0x35615c);}};}function respondWithFilteredResult(_0x4203f9,_0x3693b6){return function(_0x39c4b1){if(_0x39c4b1){var _0x272a8a=typeof _0x3693b6[_0xce6f('0x15')]===_0xce6f('0x16')&&typeof _0x3693b6['limit']===_0xce6f('0x16');var _0x47e699=_0x39c4b1[_0xce6f('0x17')];var _0x3d410f=_0x272a8a?0x0:_0x3693b6['offset'];var _0x536f8f=_0x272a8a?_0x39c4b1[_0xce6f('0x17')]:_0x3693b6[_0xce6f('0x15')]+_0x3693b6[_0xce6f('0x18')];var _0x45b8b0;if(_0x536f8f>=_0x47e699){_0x536f8f=_0x47e699;_0x45b8b0=0xc8;}else{_0x45b8b0=0xce;}_0x4203f9[_0xce6f('0x13')](_0x45b8b0);return _0x4203f9[_0xce6f('0x19')]('Content-Range',_0x3d410f+'-'+_0x536f8f+'/'+_0x47e699)[_0xce6f('0x14')](_0x39c4b1);}return null;};}function saveUpdates(_0x1a5674){return function(_0x363c4f){if(_0x363c4f){return _0x363c4f[_0xce6f('0x1a')](_0x1a5674)[_0xce6f('0x9')](function(_0x5b8004){return _0x5b8004;});}return null;};}function removeEntity(_0x5d5b33){return function(_0x3fa671){if(_0x3fa671){return _0x3fa671[_0xce6f('0x1b')]()[_0xce6f('0x9')](function(){_0x5d5b33[_0xce6f('0x13')](0xcc)['end']();});}};}function handleEntityNotFound(_0x46e3af){return function(_0x310caf){if(!_0x310caf){_0x46e3af[_0xce6f('0x1c')](0x194);}return _0x310caf;};}function handleError(_0x521382,_0x1a854e){_0x1a854e=_0x1a854e||0x1f4;return function(_0xafa725){logger[_0xce6f('0xf')](_0xafa725[_0xce6f('0x1d')]);if(_0xafa725[_0xce6f('0x1e')]){delete _0xafa725[_0xce6f('0x1e')];}_0x521382[_0xce6f('0x13')](_0x1a854e)[_0xce6f('0x1f')](_0xafa725);};}exports['index']=function(_0x116fd8,_0x2cd9bb){var _0x3cc7da={},_0x457ea5={},_0x53f43d={'count':0x0,'rows':[]};var _0x25f2ad=_[_0xce6f('0x20')](db[_0xce6f('0x21')][_0xce6f('0x22')],function(_0x54ab3a){return{'name':_0x54ab3a[_0xce6f('0x23')],'type':_0x54ab3a['type'][_0xce6f('0x24')]};});_0x457ea5[_0xce6f('0x25')]=_['map'](_0x25f2ad,'name');_0x457ea5[_0xce6f('0x26')]=_['keys'](_0x116fd8['query']);_0x457ea5[_0xce6f('0x27')]=_['intersection'](_0x457ea5[_0xce6f('0x25')],_0x457ea5[_0xce6f('0x26')]);_0x3cc7da[_0xce6f('0x28')]=_['intersection'](_0x457ea5[_0xce6f('0x25')],qs[_0xce6f('0x29')](_0x116fd8['query'][_0xce6f('0x29')]));_0x3cc7da[_0xce6f('0x28')]=_0x3cc7da[_0xce6f('0x28')][_0xce6f('0x2a')]?_0x3cc7da[_0xce6f('0x28')]:_0x457ea5[_0xce6f('0x25')];if(!_0x116fd8[_0xce6f('0x26')][_0xce6f('0x2b')](_0xce6f('0x2c'))){_0x3cc7da['limit']=qs[_0xce6f('0x18')](_0x116fd8[_0xce6f('0x26')][_0xce6f('0x18')]);_0x3cc7da[_0xce6f('0x15')]=qs[_0xce6f('0x15')](_0x116fd8['query'][_0xce6f('0x15')]);}_0x3cc7da[_0xce6f('0x2d')]=qs[_0xce6f('0x2e')](_0x116fd8[_0xce6f('0x26')][_0xce6f('0x2e')]);_0x3cc7da['where']=qs['filters'](_[_0xce6f('0x2f')](_0x116fd8[_0xce6f('0x26')],_0x457ea5['filters']),_0x25f2ad);if(_0x116fd8[_0xce6f('0x26')][_0xce6f('0x30')]){_0x3cc7da['where']=_['merge'](_0x3cc7da[_0xce6f('0x31')],{'$or':_[_0xce6f('0x20')](_0x25f2ad,function(_0x36cfb0){if(_0x36cfb0[_0xce6f('0x32')]!==_0xce6f('0x33')){var _0x2334fe={};_0x2334fe[_0x36cfb0[_0xce6f('0x1e')]]={'$like':'%'+_0x116fd8['query'][_0xce6f('0x30')]+'%'};return _0x2334fe;}})});}_0x3cc7da=_[_0xce6f('0x34')]({},_0x3cc7da,_0x116fd8[_0xce6f('0x35')]);var _0x23cf23={'where':_0x3cc7da[_0xce6f('0x31')]};return db[_0xce6f('0x21')]['count'](_0x23cf23)[_0xce6f('0x9')](function(_0x5eed51){_0x53f43d[_0xce6f('0x17')]=_0x5eed51;if(_0x116fd8[_0xce6f('0x26')][_0xce6f('0x36')]){_0x3cc7da['include']=[{'all':!![]}];}return db['Network'][_0xce6f('0x37')](_0x3cc7da);})[_0xce6f('0x9')](function(_0x3262f4){_0x53f43d['rows']=_0x3262f4;return _0x53f43d;})[_0xce6f('0x9')](respondWithFilteredResult(_0x2cd9bb,_0x3cc7da))[_0xce6f('0x12')](handleError(_0x2cd9bb,null));};exports[_0xce6f('0x38')]=function(_0x1529e9,_0x4928e1){var _0x4dc20f={'raw':!![],'where':{'id':_0x1529e9[_0xce6f('0x39')]['id']}},_0x32999a={};_0x32999a[_0xce6f('0x25')]=_['keys'](db['Network'][_0xce6f('0x22')]);_0x32999a[_0xce6f('0x26')]=_[_0xce6f('0x3a')](_0x1529e9['query']);_0x32999a[_0xce6f('0x27')]=_[_0xce6f('0x3b')](_0x32999a[_0xce6f('0x25')],_0x32999a[_0xce6f('0x26')]);_0x4dc20f[_0xce6f('0x28')]=_[_0xce6f('0x3b')](_0x32999a[_0xce6f('0x25')],qs[_0xce6f('0x29')](_0x1529e9[_0xce6f('0x26')][_0xce6f('0x29')]));_0x4dc20f[_0xce6f('0x28')]=_0x4dc20f[_0xce6f('0x28')][_0xce6f('0x2a')]?_0x4dc20f[_0xce6f('0x28')]:_0x32999a[_0xce6f('0x25')];if(_0x1529e9[_0xce6f('0x26')][_0xce6f('0x36')]){_0x4dc20f[_0xce6f('0x3c')]=[{'all':!![]}];}_0x4dc20f=_[_0xce6f('0x34')]({},_0x4dc20f,_0x1529e9['options']);return db[_0xce6f('0x21')][_0xce6f('0x3d')](_0x4dc20f)[_0xce6f('0x9')](handleEntityNotFound(_0x4928e1,null))[_0xce6f('0x9')](respondWithResult(_0x4928e1,null))[_0xce6f('0x12')](handleError(_0x4928e1,null));};exports[_0xce6f('0x3e')]=function(_0x1b4249,_0x331471){var _0x17cd8b;return db['Network']['create'](_0x1b4249[_0xce6f('0x3f')],{'raw':!![]})[_0xce6f('0x9')](function(_0x39efcb){_0x17cd8b=_0x39efcb;return db[_0xce6f('0x21')][_0xce6f('0x37')]({'where':{'type':_0x1b4249[_0xce6f('0x3f')][_0xce6f('0x32')]},'raw':!![]});})[_0xce6f('0x9')](function(_0x3bc677){if(_0x17cd8b['type']['toUpperCase']()==_0xce6f('0x40')){var _0x3b2f4b=fs[_0xce6f('0x41')](path[_0xce6f('0x42')](config['root'],_0xce6f('0x43')),_0xce6f('0x44'));var _0xedc2d=ejs[_0xce6f('0x45')](_0x3b2f4b,{'networks':_0x3bc677||[]});fs[_0xce6f('0x46')](_0xce6f('0x47'),_0xedc2d);return respondWithRpcPromise(_0xce6f('0x48'),_0xce6f('0x3e'),{'module':_0xce6f('0x49')});}else if(_0x17cd8b[_0xce6f('0x32')]['toUpperCase']()==_0xce6f('0x4a')){var _0x47499c=fs[_0xce6f('0x41')](path[_0xce6f('0x42')](config[_0xce6f('0x4b')],'server/files/templates/turn_multiple.ejs'),_0xce6f('0x44'));var _0x3574f2=ejs[_0xce6f('0x45')](_0x47499c,{'networks':_0x3bc677||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0x3574f2);return respondWithRpcPromise(_0xce6f('0x48'),'create',{'module':_0xce6f('0x49')});}else{var _0x6b7962=fs['readFileSync'](path['join'](config[_0xce6f('0x4b')],'server/files/templates/network.ejs'),_0xce6f('0x44'));var _0x13859a=ejs['render'](_0x6b7962,{'networks':_0x3bc677||[]});fs['writeFileSync'](util[_0xce6f('0x4c')](_0xce6f('0x4d'),_0x1b4249[_0xce6f('0x3f')][_0xce6f('0x32')][_0xce6f('0x4e')]()),_0x13859a);return respondWithRpcPromise(_0xce6f('0x48'),_0xce6f('0x3e'),{'module':_0xce6f('0x4f')});}})[_0xce6f('0x9')](function(){return _0x17cd8b;})[_0xce6f('0x9')](respondWithResult(_0x331471,0xc9))['catch'](handleError(_0x331471,null));};exports[_0xce6f('0x1a')]=function(_0xf61cce,_0x21e1cd){var _0x217d24;return db[_0xce6f('0x21')]['find']({'where':{'id':_0xf61cce[_0xce6f('0x39')]['id']}})['then'](handleEntityNotFound(_0x21e1cd,null))[_0xce6f('0x9')](saveUpdates(_0xf61cce[_0xce6f('0x3f')],null))[_0xce6f('0x9')](function(_0x2f9c04){if(_0x2f9c04){_0x217d24=_0x2f9c04;return db[_0xce6f('0x21')]['findAll']({'where':{'type':_0x217d24[_0xce6f('0x32')]},'raw':!![]});}return null;})['then'](function(_0x30bcb0){if(_0x217d24['type'][_0xce6f('0x50')]()==_0xce6f('0x40')){var _0x37f854=fs[_0xce6f('0x41')](path[_0xce6f('0x42')](config['root'],_0xce6f('0x43')),_0xce6f('0x44'));var _0x5bb170=ejs[_0xce6f('0x45')](_0x37f854,{'networks':_0x30bcb0||[]});fs[_0xce6f('0x46')]('/etc/asterisk/stun_xcally.conf',_0x5bb170);return respondWithRpcPromise(_0xce6f('0x48'),_0xce6f('0x1a'),{'module':_0xce6f('0x49')});}else if(_0x217d24[_0xce6f('0x32')][_0xce6f('0x50')]()==_0xce6f('0x4a')){var _0x358950=fs[_0xce6f('0x41')](path[_0xce6f('0x42')](config[_0xce6f('0x4b')],_0xce6f('0x51')),_0xce6f('0x44'));var _0x2553c6=ejs[_0xce6f('0x45')](_0x358950,{'networks':_0x30bcb0||[]});fs[_0xce6f('0x46')](_0xce6f('0x52'),_0x2553c6);return respondWithRpcPromise(_0xce6f('0x48'),_0xce6f('0x1a'),{'module':_0xce6f('0x49')});}else{var _0x4617d2=fs[_0xce6f('0x41')](path[_0xce6f('0x42')](config['root'],_0xce6f('0x53')),_0xce6f('0x44'));var _0x1d46f7=ejs[_0xce6f('0x45')](_0x4617d2,{'networks':_0x30bcb0||[]});fs[_0xce6f('0x46')](util['format']('/etc/asterisk/sip_xcally_%s.conf',_0xf61cce['body'][_0xce6f('0x32')]['toLowerCase']()),_0x1d46f7);return respondWithRpcPromise(_0xce6f('0x48'),_0xce6f('0x1a'),{'module':_0xce6f('0x4f')});}})[_0xce6f('0x9')](function(_0x4c19b5){if(_0x4c19b5){return _0x217d24;}return null;})[_0xce6f('0x9')](respondWithResult(_0x21e1cd,null))[_0xce6f('0x12')](handleError(_0x21e1cd,null));};exports[_0xce6f('0x1b')]=function(_0x1dba5a,_0x5867b6){var _0x18d200;return db[_0xce6f('0x21')][_0xce6f('0x3d')]({'where':{'id':_0x1dba5a['params']['id']}})[_0xce6f('0x9')](function(_0x227893){_0x18d200=_0x227893;return _0x227893;})[_0xce6f('0x9')](handleEntityNotFound(_0x5867b6,null))['then'](removeEntity(_0x5867b6,null))[_0xce6f('0x9')](function(){if(_0x18d200){return db[_0xce6f('0x21')][_0xce6f('0x37')]({'where':{'type':_0x18d200[_0xce6f('0x32')]},'raw':!![]});}})[_0xce6f('0x9')](function(_0x546bda){if(_0x18d200[_0xce6f('0x32')][_0xce6f('0x50')]()==_0xce6f('0x40')){var _0x88014c=fs[_0xce6f('0x41')](path['join'](config[_0xce6f('0x4b')],_0xce6f('0x43')),_0xce6f('0x44'));var _0x2b6da0=ejs[_0xce6f('0x45')](_0x88014c,{'networks':_0x546bda||[]});fs['writeFileSync'](_0xce6f('0x47'),_0x2b6da0);return respondWithRpcPromise('Reload','destroy',{'module':_0xce6f('0x49')});}else if(_0x18d200[_0xce6f('0x32')][_0xce6f('0x50')]()==_0xce6f('0x4a')){var _0x4e6dba=fs['readFileSync'](path[_0xce6f('0x42')](config['root'],_0xce6f('0x51')),_0xce6f('0x44'));var _0x556379=ejs[_0xce6f('0x45')](_0x4e6dba,{'networks':_0x546bda||[]});fs['writeFileSync'](_0xce6f('0x52'),_0x556379);return respondWithRpcPromise(_0xce6f('0x48'),_0xce6f('0x1b'),{'module':'res_stun_monitor.so'});}else{var _0x5151ad=fs[_0xce6f('0x41')](path[_0xce6f('0x42')](config[_0xce6f('0x4b')],_0xce6f('0x53')),_0xce6f('0x44'));var _0x3ba1b4=ejs[_0xce6f('0x45')](_0x5151ad,{'networks':_0x546bda||[]});fs[_0xce6f('0x46')](util[_0xce6f('0x4c')](_0xce6f('0x4d'),_0x18d200[_0xce6f('0x32')]['toLowerCase']()),_0x3ba1b4);return respondWithRpcPromise(_0xce6f('0x48'),_0xce6f('0x1b'),{'module':'chan_sip.so'});}})[_0xce6f('0x12')](handleError(_0x5867b6,null));};