ea84d985b85b59837bccab3d86bb79f8687b15d5
[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 _0x615b=['send','index','map','rawAttributes','fieldName','type','key','query','filters','model','fields','length','attributes','hasOwnProperty','nolimit','order','pick','filter','where','merge','VIRTUAL','options','Network','include','findAll','show','params','keys','intersection','find','create','toUpperCase','STUN','readFileSync','join','root','server/files/templates/stun_multiple.ejs','utf8','render','Reload','res_stun_monitor.so','TURN','server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','writeFileSync','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','/etc/asterisk/stun_xcally.conf','path','ejs','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','jayson/promise','client','http','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','status','offset','undefined','count','limit','set','Content-Range','json','update','then','destroy','end','sendStatus','stack'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x615b,0xdd));var _0xb615=function(_0x4983f4,_0x107731){_0x4983f4=_0x4983f4-0x0;var _0xbac14f=_0x615b[_0x4983f4];return _0xbac14f;};'use strict';var util=require('util');var path=require(_0xb615('0x0'));var ejs=require(_0xb615('0x1'));var fs=require('fs');var _=require('lodash');var qs=require(_0xb615('0x2'));var logger=require(_0xb615('0x3'))(_0xb615('0x4'));var config=require(_0xb615('0x5'));var db=require(_0xb615('0x6'))['db'];var jayson=require(_0xb615('0x7'));var client=jayson[_0xb615('0x8')][_0xb615('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x51c8b1,_0x54d789,_0x4d74f7,_0x26f31f){return new Promise(function(_0x1eb1f8,_0x2199cb){var _0x233d0c=_0x26f31f||client;return _0x233d0c['request'](_0x51c8b1,_0x4d74f7)['then'](function(_0xc49574){logger[_0xb615('0xa')](_0xb615('0xb'),_0x54d789,_0xb615('0xc'));logger[_0xb615('0xd')](_0xb615('0xe'),_0x54d789,_0xb615('0xc'),JSON[_0xb615('0xf')](_0xc49574));if(_0xc49574[_0xb615('0x10')]){if(_0xc49574[_0xb615('0x10')][_0xb615('0x11')]===0x1f4){logger[_0xb615('0x10')](_0xb615('0xb'),_0x54d789,_0xc49574[_0xb615('0x10')][_0xb615('0x12')]);return _0x2199cb(_0xc49574[_0xb615('0x10')][_0xb615('0x12')]);}logger['error'](_0xb615('0xb'),_0x54d789,_0xc49574[_0xb615('0x10')][_0xb615('0x12')]);return _0x1eb1f8(_0xc49574[_0xb615('0x10')][_0xb615('0x12')]);}else{logger[_0xb615('0xa')](_0xb615('0xb'),_0x54d789,_0xb615('0xc'));_0x1eb1f8(_0xc49574['result'][_0xb615('0x12')]);}})[_0xb615('0x13')](function(_0x3172f9){logger['error'](_0xb615('0xb'),_0x54d789,_0x3172f9);_0x2199cb(_0x3172f9);});});}function respondWithResult(_0x59f271,_0x2034ec){_0x2034ec=_0x2034ec||0xc8;return function(_0x4cd84d){if(_0x4cd84d){return _0x59f271[_0xb615('0x14')](_0x2034ec)['json'](_0x4cd84d);}};}function respondWithFilteredResult(_0x1bddcf,_0x3acda1){return function(_0xe4a728){if(_0xe4a728){var _0x131aec=typeof _0x3acda1[_0xb615('0x15')]===_0xb615('0x16')&&typeof _0x3acda1['limit']===_0xb615('0x16');var _0x12fd98=_0xe4a728[_0xb615('0x17')];var _0x4711b5=_0x131aec?0x0:_0x3acda1['offset'];var _0x186e02=_0x131aec?_0xe4a728[_0xb615('0x17')]:_0x3acda1[_0xb615('0x15')]+_0x3acda1[_0xb615('0x18')];var _0xd474c7;if(_0x186e02>=_0x12fd98){_0x186e02=_0x12fd98;_0xd474c7=0xc8;}else{_0xd474c7=0xce;}_0x1bddcf['status'](_0xd474c7);return _0x1bddcf[_0xb615('0x19')](_0xb615('0x1a'),_0x4711b5+'-'+_0x186e02+'/'+_0x12fd98)[_0xb615('0x1b')](_0xe4a728);}return null;};}function saveUpdates(_0xcb5a){return function(_0x10a875){if(_0x10a875){return _0x10a875[_0xb615('0x1c')](_0xcb5a)[_0xb615('0x1d')](function(_0x1ab4d6){return _0x1ab4d6;});}return null;};}function removeEntity(_0x41cfda){return function(_0x3a7a29){if(_0x3a7a29){return _0x3a7a29[_0xb615('0x1e')]()['then'](function(){_0x41cfda[_0xb615('0x14')](0xcc)[_0xb615('0x1f')]();});}};}function handleEntityNotFound(_0x3999e0){return function(_0x3af07a){if(!_0x3af07a){_0x3999e0[_0xb615('0x20')](0x194);}return _0x3af07a;};}function handleError(_0x413285,_0x1a0463){_0x1a0463=_0x1a0463||0x1f4;return function(_0x193396){logger['error'](_0x193396[_0xb615('0x21')]);if(_0x193396['name']){delete _0x193396['name'];}_0x413285[_0xb615('0x14')](_0x1a0463)[_0xb615('0x22')](_0x193396);};}exports[_0xb615('0x23')]=function(_0x44a3b3,_0x59495c){var _0x257203={},_0x34e339={},_0x570147={'count':0x0,'rows':[]};var _0x2c55fb=_[_0xb615('0x24')](db['Network'][_0xb615('0x25')],function(_0x10965d){return{'name':_0x10965d[_0xb615('0x26')],'type':_0x10965d[_0xb615('0x27')][_0xb615('0x28')]};});_0x34e339['model']=_['map'](_0x2c55fb,'name');_0x34e339[_0xb615('0x29')]=_['keys'](_0x44a3b3[_0xb615('0x29')]);_0x34e339[_0xb615('0x2a')]=_['intersection'](_0x34e339['model'],_0x34e339['query']);_0x257203['attributes']=_['intersection'](_0x34e339[_0xb615('0x2b')],qs[_0xb615('0x2c')](_0x44a3b3[_0xb615('0x29')]['fields']));_0x257203['attributes']=_0x257203['attributes'][_0xb615('0x2d')]?_0x257203[_0xb615('0x2e')]:_0x34e339[_0xb615('0x2b')];if(!_0x44a3b3['query'][_0xb615('0x2f')](_0xb615('0x30'))){_0x257203[_0xb615('0x18')]=qs[_0xb615('0x18')](_0x44a3b3[_0xb615('0x29')]['limit']);_0x257203[_0xb615('0x15')]=qs[_0xb615('0x15')](_0x44a3b3['query'][_0xb615('0x15')]);}_0x257203[_0xb615('0x31')]=qs['sort'](_0x44a3b3['query']['sort']);_0x257203['where']=qs[_0xb615('0x2a')](_[_0xb615('0x32')](_0x44a3b3['query'],_0x34e339[_0xb615('0x2a')]),_0x2c55fb);if(_0x44a3b3['query'][_0xb615('0x33')]){_0x257203[_0xb615('0x34')]=_[_0xb615('0x35')](_0x257203['where'],{'$or':_[_0xb615('0x24')](_0x2c55fb,function(_0x6b33dc){if(_0x6b33dc['type']!==_0xb615('0x36')){var _0x5571f4={};_0x5571f4[_0x6b33dc['name']]={'$like':'%'+_0x44a3b3[_0xb615('0x29')][_0xb615('0x33')]+'%'};return _0x5571f4;}})});}_0x257203=_[_0xb615('0x35')]({},_0x257203,_0x44a3b3[_0xb615('0x37')]);var _0x2e8e96={'where':_0x257203['where']};return db[_0xb615('0x38')]['count'](_0x2e8e96)[_0xb615('0x1d')](function(_0xf1018b){_0x570147[_0xb615('0x17')]=_0xf1018b;if(_0x44a3b3[_0xb615('0x29')]['includeAll']){_0x257203[_0xb615('0x39')]=[{'all':!![]}];}return db[_0xb615('0x38')][_0xb615('0x3a')](_0x257203);})['then'](function(_0x11e9c1){_0x570147['rows']=_0x11e9c1;return _0x570147;})[_0xb615('0x1d')](respondWithFilteredResult(_0x59495c,_0x257203))['catch'](handleError(_0x59495c,null));};exports[_0xb615('0x3b')]=function(_0xb4e1f,_0x2c66ab){var _0x5ac37a={'raw':!![],'where':{'id':_0xb4e1f[_0xb615('0x3c')]['id']}},_0x2bdc96={};_0x2bdc96['model']=_[_0xb615('0x3d')](db['Network'][_0xb615('0x25')]);_0x2bdc96[_0xb615('0x29')]=_[_0xb615('0x3d')](_0xb4e1f[_0xb615('0x29')]);_0x2bdc96[_0xb615('0x2a')]=_[_0xb615('0x3e')](_0x2bdc96[_0xb615('0x2b')],_0x2bdc96[_0xb615('0x29')]);_0x5ac37a['attributes']=_[_0xb615('0x3e')](_0x2bdc96['model'],qs[_0xb615('0x2c')](_0xb4e1f[_0xb615('0x29')]['fields']));_0x5ac37a[_0xb615('0x2e')]=_0x5ac37a[_0xb615('0x2e')][_0xb615('0x2d')]?_0x5ac37a['attributes']:_0x2bdc96[_0xb615('0x2b')];if(_0xb4e1f['query']['includeAll']){_0x5ac37a[_0xb615('0x39')]=[{'all':!![]}];}_0x5ac37a=_['merge']({},_0x5ac37a,_0xb4e1f[_0xb615('0x37')]);return db[_0xb615('0x38')][_0xb615('0x3f')](_0x5ac37a)[_0xb615('0x1d')](handleEntityNotFound(_0x2c66ab,null))[_0xb615('0x1d')](respondWithResult(_0x2c66ab,null))[_0xb615('0x13')](handleError(_0x2c66ab,null));};exports['create']=function(_0x490199,_0x148101){var _0x37f06c;return db[_0xb615('0x38')][_0xb615('0x40')](_0x490199['body'],{'raw':!![]})['then'](function(_0x4b3f72){_0x37f06c=_0x4b3f72;return db[_0xb615('0x38')]['findAll']({'where':{'type':_0x490199['body'][_0xb615('0x27')]},'raw':!![]});})[_0xb615('0x1d')](function(_0xaf6b61){if(_0x37f06c[_0xb615('0x27')][_0xb615('0x41')]()==_0xb615('0x42')){var _0x22e381=fs[_0xb615('0x43')](path[_0xb615('0x44')](config[_0xb615('0x45')],_0xb615('0x46')),_0xb615('0x47'));var _0xc23c81=ejs[_0xb615('0x48')](_0x22e381,{'networks':_0xaf6b61||[]});fs['writeFileSync']('/etc/asterisk/stun_xcally.conf',_0xc23c81);return respondWithRpcPromise(_0xb615('0x49'),_0xb615('0x40'),{'module':_0xb615('0x4a')});}else if(_0x37f06c[_0xb615('0x27')][_0xb615('0x41')]()==_0xb615('0x4b')){var _0x3669f0=fs['readFileSync'](path['join'](config[_0xb615('0x45')],_0xb615('0x4c')),_0xb615('0x47'));var _0xfc8638=ejs['render'](_0x3669f0,{'networks':_0xaf6b61||[]});fs['writeFileSync'](_0xb615('0x4d'),_0xfc8638);return respondWithRpcPromise(_0xb615('0x49'),_0xb615('0x40'),{'module':_0xb615('0x4a')});}else{var _0xe7d39b=fs[_0xb615('0x43')](path[_0xb615('0x44')](config[_0xb615('0x45')],_0xb615('0x4e')),_0xb615('0x47'));var _0x370f19=ejs[_0xb615('0x48')](_0xe7d39b,{'networks':_0xaf6b61||[]});fs[_0xb615('0x4f')](util[_0xb615('0x50')](_0xb615('0x51'),_0x490199['body'][_0xb615('0x27')][_0xb615('0x52')]()),_0x370f19);return respondWithRpcPromise(_0xb615('0x49'),_0xb615('0x40'),{'module':_0xb615('0x53')});}})['then'](function(){return _0x37f06c;})[_0xb615('0x1d')](respondWithResult(_0x148101,0xc9))[_0xb615('0x13')](handleError(_0x148101,null));};exports[_0xb615('0x1c')]=function(_0x33ce16,_0x90a98d){var _0x3d8589;return db[_0xb615('0x38')][_0xb615('0x3f')]({'where':{'id':_0x33ce16[_0xb615('0x3c')]['id']}})['then'](handleEntityNotFound(_0x90a98d,null))[_0xb615('0x1d')](saveUpdates(_0x33ce16['body'],null))[_0xb615('0x1d')](function(_0x5aa921){if(_0x5aa921){_0x3d8589=_0x5aa921;return db[_0xb615('0x38')]['findAll']({'where':{'type':_0x3d8589[_0xb615('0x27')]},'raw':!![]});}return null;})[_0xb615('0x1d')](function(_0x41e5db){if(_0x3d8589[_0xb615('0x27')][_0xb615('0x41')]()==_0xb615('0x42')){var _0x1c126f=fs['readFileSync'](path[_0xb615('0x44')](config['root'],'server/files/templates/stun_multiple.ejs'),'utf8');var _0x1f2ff1=ejs['render'](_0x1c126f,{'networks':_0x41e5db||[]});fs[_0xb615('0x4f')](_0xb615('0x54'),_0x1f2ff1);return respondWithRpcPromise('Reload',_0xb615('0x1c'),{'module':_0xb615('0x4a')});}else if(_0x3d8589[_0xb615('0x27')][_0xb615('0x41')]()==_0xb615('0x4b')){var _0x3e5b01=fs[_0xb615('0x43')](path[_0xb615('0x44')](config[_0xb615('0x45')],_0xb615('0x4c')),_0xb615('0x47'));var _0x23d046=ejs['render'](_0x3e5b01,{'networks':_0x41e5db||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0x23d046);return respondWithRpcPromise('Reload',_0xb615('0x1c'),{'module':'res_stun_monitor.so'});}else{var _0xb31839=fs[_0xb615('0x43')](path[_0xb615('0x44')](config['root'],_0xb615('0x4e')),_0xb615('0x47'));var _0x5f3310=ejs['render'](_0xb31839,{'networks':_0x41e5db||[]});fs[_0xb615('0x4f')](util[_0xb615('0x50')]('/etc/asterisk/sip_xcally_%s.conf',_0x33ce16['body'][_0xb615('0x27')]['toLowerCase']()),_0x5f3310);return respondWithRpcPromise(_0xb615('0x49'),_0xb615('0x1c'),{'module':'chan_sip.so'});}})[_0xb615('0x1d')](function(_0x376650){if(_0x376650){return _0x3d8589;}return null;})['then'](respondWithResult(_0x90a98d,null))['catch'](handleError(_0x90a98d,null));};exports[_0xb615('0x1e')]=function(_0x57c1bf,_0x39581d){var _0x247427;return db[_0xb615('0x38')][_0xb615('0x3f')]({'where':{'id':_0x57c1bf[_0xb615('0x3c')]['id']}})[_0xb615('0x1d')](function(_0x5592d7){_0x247427=_0x5592d7;return _0x5592d7;})['then'](handleEntityNotFound(_0x39581d,null))['then'](removeEntity(_0x39581d,null))[_0xb615('0x1d')](function(){if(_0x247427){return db[_0xb615('0x38')]['findAll']({'where':{'type':_0x247427[_0xb615('0x27')]},'raw':!![]});}})[_0xb615('0x1d')](function(_0x3adbfb){if(_0x247427[_0xb615('0x27')][_0xb615('0x41')]()==_0xb615('0x42')){var _0x5d1b9a=fs[_0xb615('0x43')](path['join'](config[_0xb615('0x45')],_0xb615('0x46')),_0xb615('0x47'));var _0x5ebd47=ejs[_0xb615('0x48')](_0x5d1b9a,{'networks':_0x3adbfb||[]});fs[_0xb615('0x4f')](_0xb615('0x54'),_0x5ebd47);return respondWithRpcPromise(_0xb615('0x49'),_0xb615('0x1e'),{'module':_0xb615('0x4a')});}else if(_0x247427[_0xb615('0x27')][_0xb615('0x41')]()=='TURN'){var _0x1d8fb0=fs[_0xb615('0x43')](path['join'](config['root'],_0xb615('0x4c')),'utf8');var _0x966629=ejs[_0xb615('0x48')](_0x1d8fb0,{'networks':_0x3adbfb||[]});fs['writeFileSync'](_0xb615('0x4d'),_0x966629);return respondWithRpcPromise(_0xb615('0x49'),_0xb615('0x1e'),{'module':'res_stun_monitor.so'});}else{var _0x15db2a=fs['readFileSync'](path[_0xb615('0x44')](config[_0xb615('0x45')],_0xb615('0x4e')),_0xb615('0x47'));var _0x57480c=ejs[_0xb615('0x48')](_0x15db2a,{'networks':_0x3adbfb||[]});fs[_0xb615('0x4f')](util['format'](_0xb615('0x51'),_0x247427[_0xb615('0x27')][_0xb615('0x52')]()),_0x57480c);return respondWithRpcPromise('Reload',_0xb615('0x1e'),{'module':_0xb615('0x53')});}})[_0xb615('0x13')](handleError(_0x39581d,null));};