1736fde1783f42da84bc99123df43d3be8a35312
[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 _0xa17a=['Content-Range','update','destroy','end','sendStatus','stack','name','index','rawAttributes','fieldName','type','key','map','query','attributes','model','fields','hasOwnProperty','order','sort','where','filters','merge','VIRTUAL','filter','Network','rows','params','keys','intersection','length','include','options','find','create','findAll','body','toUpperCase','STUN','readFileSync','join','root','utf8','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','TURN','server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','render','writeFileSync','format','toLowerCase','chan_sip.so','server/files/templates/stun_multiple.ejs','/etc/asterisk/sip_xcally_%s.conf','util','ejs','lodash','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','client','http','then','info','request\x20sent','Network,\x20%s,\x20%s,\x20%s','error','Network,\x20%s,\x20%s','message','result','catch','status','json','offset','undefined','limit','count'];(function(_0x5e33dc,_0xc92144){var _0x2e1a91=function(_0x3fd5d2){while(--_0x3fd5d2){_0x5e33dc['push'](_0x5e33dc['shift']());}};_0x2e1a91(++_0xc92144);}(_0xa17a,0x17d));var _0xaa17=function(_0x5d75ff,_0x5bc7ac){_0x5d75ff=_0x5d75ff-0x0;var _0x1c1894=_0xa17a[_0x5d75ff];return _0x1c1894;};'use strict';var util=require(_0xaa17('0x0'));var path=require('path');var ejs=require(_0xaa17('0x1'));var fs=require('fs');var _=require(_0xaa17('0x2'));var qs=require(_0xaa17('0x3'));var logger=require(_0xaa17('0x4'))('api');var config=require(_0xaa17('0x5'));var db=require(_0xaa17('0x6'))['db'];var jayson=require('jayson/promise');var client=jayson[_0xaa17('0x7')][_0xaa17('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x40eeb4,_0x5f3007,_0x8c0386,_0x5d36ec){return new Promise(function(_0x197fc5,_0x21deb0){var _0x4fdf38=_0x5d36ec||client;return _0x4fdf38['request'](_0x40eeb4,_0x8c0386)[_0xaa17('0x9')](function(_0x5725ee){logger[_0xaa17('0xa')]('Network,\x20%s,\x20%s',_0x5f3007,_0xaa17('0xb'));logger['debug'](_0xaa17('0xc'),_0x5f3007,_0xaa17('0xb'),JSON['stringify'](_0x5725ee));if(_0x5725ee['error']){if(_0x5725ee[_0xaa17('0xd')]['code']===0x1f4){logger['error'](_0xaa17('0xe'),_0x5f3007,_0x5725ee[_0xaa17('0xd')][_0xaa17('0xf')]);return _0x21deb0(_0x5725ee[_0xaa17('0xd')][_0xaa17('0xf')]);}logger[_0xaa17('0xd')](_0xaa17('0xe'),_0x5f3007,_0x5725ee[_0xaa17('0xd')]['message']);return _0x197fc5(_0x5725ee[_0xaa17('0xd')][_0xaa17('0xf')]);}else{logger[_0xaa17('0xa')](_0xaa17('0xe'),_0x5f3007,_0xaa17('0xb'));_0x197fc5(_0x5725ee[_0xaa17('0x10')][_0xaa17('0xf')]);}})[_0xaa17('0x11')](function(_0x19380d){logger[_0xaa17('0xd')](_0xaa17('0xe'),_0x5f3007,_0x19380d);_0x21deb0(_0x19380d);});});}function respondWithResult(_0x25f49a,_0x52c35a){_0x52c35a=_0x52c35a||0xc8;return function(_0x498f8f){if(_0x498f8f){return _0x25f49a[_0xaa17('0x12')](_0x52c35a)[_0xaa17('0x13')](_0x498f8f);}};}function respondWithFilteredResult(_0x50c1e0,_0x49e8f3){return function(_0xef7517){if(_0xef7517){var _0x5d8ddb=typeof _0x49e8f3[_0xaa17('0x14')]===_0xaa17('0x15')&&typeof _0x49e8f3[_0xaa17('0x16')]===_0xaa17('0x15');var _0x2e38f7=_0xef7517[_0xaa17('0x17')];var _0x5ca382=_0x5d8ddb?0x0:_0x49e8f3['offset'];var _0x13a0b3=_0x5d8ddb?_0xef7517[_0xaa17('0x17')]:_0x49e8f3[_0xaa17('0x14')]+_0x49e8f3[_0xaa17('0x16')];var _0x42d35b;if(_0x13a0b3>=_0x2e38f7){_0x13a0b3=_0x2e38f7;_0x42d35b=0xc8;}else{_0x42d35b=0xce;}_0x50c1e0[_0xaa17('0x12')](_0x42d35b);return _0x50c1e0['set'](_0xaa17('0x18'),_0x5ca382+'-'+_0x13a0b3+'/'+_0x2e38f7)[_0xaa17('0x13')](_0xef7517);}return null;};}function saveUpdates(_0x454530){return function(_0x5e23d8){if(_0x5e23d8){return _0x5e23d8[_0xaa17('0x19')](_0x454530)[_0xaa17('0x9')](function(_0xd4975e){return _0xd4975e;});}return null;};}function removeEntity(_0x37bbd0){return function(_0x366630){if(_0x366630){return _0x366630[_0xaa17('0x1a')]()['then'](function(){_0x37bbd0[_0xaa17('0x12')](0xcc)[_0xaa17('0x1b')]();});}};}function handleEntityNotFound(_0x197434){return function(_0xfb6edf){if(!_0xfb6edf){_0x197434[_0xaa17('0x1c')](0x194);}return _0xfb6edf;};}function handleError(_0x449514,_0x1993bb){_0x1993bb=_0x1993bb||0x1f4;return function(_0x4db800){logger[_0xaa17('0xd')](_0x4db800[_0xaa17('0x1d')]);if(_0x4db800[_0xaa17('0x1e')]){delete _0x4db800[_0xaa17('0x1e')];}_0x449514['status'](_0x1993bb)['send'](_0x4db800);};}exports[_0xaa17('0x1f')]=function(_0xb10884,_0x36b56a){var _0x4051ac={},_0x56cf61={},_0x122b92={'count':0x0,'rows':[]};var _0x372ce8=_['map'](db['Network'][_0xaa17('0x20')],function(_0x97e490){return{'name':_0x97e490[_0xaa17('0x21')],'type':_0x97e490[_0xaa17('0x22')][_0xaa17('0x23')]};});_0x56cf61['model']=_[_0xaa17('0x24')](_0x372ce8,_0xaa17('0x1e'));_0x56cf61['query']=_['keys'](_0xb10884['query']);_0x56cf61['filters']=_['intersection'](_0x56cf61['model'],_0x56cf61[_0xaa17('0x25')]);_0x4051ac[_0xaa17('0x26')]=_['intersection'](_0x56cf61[_0xaa17('0x27')],qs[_0xaa17('0x28')](_0xb10884[_0xaa17('0x25')]['fields']));_0x4051ac['attributes']=_0x4051ac[_0xaa17('0x26')]['length']?_0x4051ac[_0xaa17('0x26')]:_0x56cf61[_0xaa17('0x27')];if(!_0xb10884[_0xaa17('0x25')][_0xaa17('0x29')]('nolimit')){_0x4051ac[_0xaa17('0x16')]=qs[_0xaa17('0x16')](_0xb10884[_0xaa17('0x25')][_0xaa17('0x16')]);_0x4051ac[_0xaa17('0x14')]=qs[_0xaa17('0x14')](_0xb10884[_0xaa17('0x25')]['offset']);}_0x4051ac[_0xaa17('0x2a')]=qs[_0xaa17('0x2b')](_0xb10884['query'][_0xaa17('0x2b')]);_0x4051ac[_0xaa17('0x2c')]=qs['filters'](_['pick'](_0xb10884[_0xaa17('0x25')],_0x56cf61[_0xaa17('0x2d')]),_0x372ce8);if(_0xb10884['query']['filter']){_0x4051ac['where']=_[_0xaa17('0x2e')](_0x4051ac[_0xaa17('0x2c')],{'$or':_['map'](_0x372ce8,function(_0x51b691){if(_0x51b691[_0xaa17('0x22')]!==_0xaa17('0x2f')){var _0x45db76={};_0x45db76[_0x51b691[_0xaa17('0x1e')]]={'$like':'%'+_0xb10884[_0xaa17('0x25')][_0xaa17('0x30')]+'%'};return _0x45db76;}})});}_0x4051ac=_[_0xaa17('0x2e')]({},_0x4051ac,_0xb10884['options']);var _0x99e03f={'where':_0x4051ac['where']};return db[_0xaa17('0x31')][_0xaa17('0x17')](_0x99e03f)['then'](function(_0x20ff6a){_0x122b92['count']=_0x20ff6a;if(_0xb10884['query']['includeAll']){_0x4051ac['include']=[{'all':!![]}];}return db['Network']['findAll'](_0x4051ac);})[_0xaa17('0x9')](function(_0x2f52af){_0x122b92[_0xaa17('0x32')]=_0x2f52af;return _0x122b92;})[_0xaa17('0x9')](respondWithFilteredResult(_0x36b56a,_0x4051ac))[_0xaa17('0x11')](handleError(_0x36b56a,null));};exports['show']=function(_0x1f3166,_0x22a1e0){var _0x119340={'raw':!![],'where':{'id':_0x1f3166[_0xaa17('0x33')]['id']}},_0x58f974={};_0x58f974['model']=_[_0xaa17('0x34')](db[_0xaa17('0x31')]['rawAttributes']);_0x58f974[_0xaa17('0x25')]=_[_0xaa17('0x34')](_0x1f3166[_0xaa17('0x25')]);_0x58f974[_0xaa17('0x2d')]=_['intersection'](_0x58f974[_0xaa17('0x27')],_0x58f974[_0xaa17('0x25')]);_0x119340[_0xaa17('0x26')]=_[_0xaa17('0x35')](_0x58f974['model'],qs[_0xaa17('0x28')](_0x1f3166[_0xaa17('0x25')][_0xaa17('0x28')]));_0x119340[_0xaa17('0x26')]=_0x119340['attributes'][_0xaa17('0x36')]?_0x119340['attributes']:_0x58f974['model'];if(_0x1f3166[_0xaa17('0x25')]['includeAll']){_0x119340[_0xaa17('0x37')]=[{'all':!![]}];}_0x119340=_['merge']({},_0x119340,_0x1f3166[_0xaa17('0x38')]);return db['Network'][_0xaa17('0x39')](_0x119340)[_0xaa17('0x9')](handleEntityNotFound(_0x22a1e0,null))[_0xaa17('0x9')](respondWithResult(_0x22a1e0,null))[_0xaa17('0x11')](handleError(_0x22a1e0,null));};exports[_0xaa17('0x3a')]=function(_0x524951,_0x2a1df1){var _0x2ee723;return db[_0xaa17('0x31')][_0xaa17('0x3a')](_0x524951['body'],{'raw':!![]})[_0xaa17('0x9')](function(_0x420990){_0x2ee723=_0x420990;return db['Network'][_0xaa17('0x3b')]({'where':{'type':_0x524951[_0xaa17('0x3c')][_0xaa17('0x22')]},'raw':!![]});})[_0xaa17('0x9')](function(_0x1e8bbf){if(_0x2ee723[_0xaa17('0x22')][_0xaa17('0x3d')]()==_0xaa17('0x3e')){var _0x29cade=fs[_0xaa17('0x3f')](path[_0xaa17('0x40')](config[_0xaa17('0x41')],'server/files/templates/stun_multiple.ejs'),_0xaa17('0x42'));var _0x372cf2=ejs['render'](_0x29cade,{'networks':_0x1e8bbf||[]});fs['writeFileSync'](_0xaa17('0x43'),_0x372cf2);return respondWithRpcPromise(_0xaa17('0x44'),_0xaa17('0x3a'),{'module':_0xaa17('0x45')});}else if(_0x2ee723[_0xaa17('0x22')]['toUpperCase']()==_0xaa17('0x46')){var _0x52bc12=fs[_0xaa17('0x3f')](path[_0xaa17('0x40')](config[_0xaa17('0x41')],_0xaa17('0x47')),_0xaa17('0x42'));var _0x437004=ejs['render'](_0x52bc12,{'networks':_0x1e8bbf||[]});fs['writeFileSync'](_0xaa17('0x48'),_0x437004);return respondWithRpcPromise('Reload',_0xaa17('0x3a'),{'module':_0xaa17('0x45')});}else{var _0x37f20d=fs[_0xaa17('0x3f')](path[_0xaa17('0x40')](config[_0xaa17('0x41')],_0xaa17('0x49')),_0xaa17('0x42'));var _0x16a319=ejs[_0xaa17('0x4a')](_0x37f20d,{'networks':_0x1e8bbf||[]});fs[_0xaa17('0x4b')](util[_0xaa17('0x4c')]('/etc/asterisk/sip_xcally_%s.conf',_0x524951[_0xaa17('0x3c')][_0xaa17('0x22')][_0xaa17('0x4d')]()),_0x16a319);return respondWithRpcPromise(_0xaa17('0x44'),_0xaa17('0x3a'),{'module':_0xaa17('0x4e')});}})[_0xaa17('0x9')](function(){return _0x2ee723;})[_0xaa17('0x9')](respondWithResult(_0x2a1df1,0xc9))[_0xaa17('0x11')](handleError(_0x2a1df1,null));};exports[_0xaa17('0x19')]=function(_0x14b526,_0x4fa86f){var _0x21216e;return db['Network']['find']({'where':{'id':_0x14b526[_0xaa17('0x33')]['id']}})[_0xaa17('0x9')](handleEntityNotFound(_0x4fa86f,null))[_0xaa17('0x9')](saveUpdates(_0x14b526['body'],null))[_0xaa17('0x9')](function(_0x3cd1f6){if(_0x3cd1f6){_0x21216e=_0x3cd1f6;return db['Network'][_0xaa17('0x3b')]({'where':{'type':_0x21216e[_0xaa17('0x22')]},'raw':!![]});}return null;})[_0xaa17('0x9')](function(_0x307f8c){if(_0x21216e['type'][_0xaa17('0x3d')]()==_0xaa17('0x3e')){var _0x2d1e89=fs[_0xaa17('0x3f')](path['join'](config['root'],_0xaa17('0x4f')),'utf8');var _0x1fb0b3=ejs['render'](_0x2d1e89,{'networks':_0x307f8c||[]});fs[_0xaa17('0x4b')](_0xaa17('0x43'),_0x1fb0b3);return respondWithRpcPromise('Reload','update',{'module':_0xaa17('0x45')});}else if(_0x21216e['type'][_0xaa17('0x3d')]()==_0xaa17('0x46')){var _0x4249d7=fs[_0xaa17('0x3f')](path['join'](config['root'],_0xaa17('0x47')),_0xaa17('0x42'));var _0x474854=ejs['render'](_0x4249d7,{'networks':_0x307f8c||[]});fs[_0xaa17('0x4b')](_0xaa17('0x48'),_0x474854);return respondWithRpcPromise(_0xaa17('0x44'),_0xaa17('0x19'),{'module':_0xaa17('0x45')});}else{var _0x5a8b6b=fs['readFileSync'](path[_0xaa17('0x40')](config['root'],_0xaa17('0x49')),_0xaa17('0x42'));var _0x4a07f7=ejs['render'](_0x5a8b6b,{'networks':_0x307f8c||[]});fs[_0xaa17('0x4b')](util[_0xaa17('0x4c')](_0xaa17('0x50'),_0x14b526[_0xaa17('0x3c')][_0xaa17('0x22')][_0xaa17('0x4d')]()),_0x4a07f7);return respondWithRpcPromise('Reload',_0xaa17('0x19'),{'module':_0xaa17('0x4e')});}})[_0xaa17('0x9')](function(_0x2864aa){if(_0x2864aa){return _0x21216e;}return null;})[_0xaa17('0x9')](respondWithResult(_0x4fa86f,null))[_0xaa17('0x11')](handleError(_0x4fa86f,null));};exports[_0xaa17('0x1a')]=function(_0x2bbceb,_0x591d05){var _0xbbba96;return db[_0xaa17('0x31')][_0xaa17('0x39')]({'where':{'id':_0x2bbceb['params']['id']}})['then'](function(_0x45fe14){_0xbbba96=_0x45fe14;return _0x45fe14;})['then'](handleEntityNotFound(_0x591d05,null))[_0xaa17('0x9')](removeEntity(_0x591d05,null))[_0xaa17('0x9')](function(){if(_0xbbba96){return db[_0xaa17('0x31')][_0xaa17('0x3b')]({'where':{'type':_0xbbba96[_0xaa17('0x22')]},'raw':!![]});}})[_0xaa17('0x9')](function(_0x45cf32){if(_0xbbba96[_0xaa17('0x22')][_0xaa17('0x3d')]()==_0xaa17('0x3e')){var _0x1fd194=fs['readFileSync'](path[_0xaa17('0x40')](config[_0xaa17('0x41')],'server/files/templates/stun_multiple.ejs'),_0xaa17('0x42'));var _0xae388c=ejs[_0xaa17('0x4a')](_0x1fd194,{'networks':_0x45cf32||[]});fs[_0xaa17('0x4b')](_0xaa17('0x43'),_0xae388c);return respondWithRpcPromise(_0xaa17('0x44'),_0xaa17('0x1a'),{'module':_0xaa17('0x45')});}else if(_0xbbba96[_0xaa17('0x22')]['toUpperCase']()=='TURN'){var _0x4dfa26=fs[_0xaa17('0x3f')](path['join'](config[_0xaa17('0x41')],_0xaa17('0x47')),_0xaa17('0x42'));var _0x1e6a21=ejs['render'](_0x4dfa26,{'networks':_0x45cf32||[]});fs[_0xaa17('0x4b')]('/etc/asterisk/turn_xcally.conf',_0x1e6a21);return respondWithRpcPromise(_0xaa17('0x44'),_0xaa17('0x1a'),{'module':_0xaa17('0x45')});}else{var _0x87c38a=fs[_0xaa17('0x3f')](path[_0xaa17('0x40')](config[_0xaa17('0x41')],_0xaa17('0x49')),_0xaa17('0x42'));var _0x1a9d27=ejs['render'](_0x87c38a,{'networks':_0x45cf32||[]});fs[_0xaa17('0x4b')](util['format'](_0xaa17('0x50'),_0xbbba96[_0xaa17('0x22')][_0xaa17('0x4d')]()),_0x1a9d27);return respondWithRpcPromise(_0xaa17('0x44'),_0xaa17('0x1a'),{'module':'chan_sip.so'});}})[_0xaa17('0x11')](handleError(_0x591d05,null));};