Built motion from commit b0a9a629.|2.6.33
[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 _0x7f7d=['then','end','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','sort','where','filter','VIRTUAL','merge','options','Network','includeAll','findAll','show','params','keys','find','create','body','toUpperCase','root','utf8','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','TURN','readFileSync','join','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','server/files/templates/stun_multiple.ejs','server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','destroy','STUN','util','ejs','lodash','../../components/parsers/qs','../../config/logger','api','../../config/environment','jayson/promise','http','request','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','status','json','undefined','limit','count','offset','set','update'];(function(_0x1801e1,_0x5bd410){var _0x18301d=function(_0x43a4be){while(--_0x43a4be){_0x1801e1['push'](_0x1801e1['shift']());}};_0x18301d(++_0x5bd410);}(_0x7f7d,0x8c));var _0xd7f7=function(_0x3b96cf,_0x1592f2){_0x3b96cf=_0x3b96cf-0x0;var _0x2e315a=_0x7f7d[_0x3b96cf];return _0x2e315a;};'use strict';var util=require(_0xd7f7('0x0'));var path=require('path');var ejs=require(_0xd7f7('0x1'));var fs=require('fs');var _=require(_0xd7f7('0x2'));var qs=require(_0xd7f7('0x3'));var logger=require(_0xd7f7('0x4'))(_0xd7f7('0x5'));var config=require(_0xd7f7('0x6'));var db=require('../../mysqldb')['db'];var jayson=require(_0xd7f7('0x7'));var client=jayson['client'][_0xd7f7('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3c10ac,_0x39ab8a,_0x261c57,_0x378245){return new Promise(function(_0x38543c,_0x4ac9fd){var _0x123713=_0x378245||client;return _0x123713[_0xd7f7('0x9')](_0x3c10ac,_0x261c57)['then'](function(_0xfcbc56){logger[_0xd7f7('0xa')](_0xd7f7('0xb'),_0x39ab8a,_0xd7f7('0xc'));logger[_0xd7f7('0xd')](_0xd7f7('0xe'),_0x39ab8a,_0xd7f7('0xc'),JSON[_0xd7f7('0xf')](_0xfcbc56));if(_0xfcbc56[_0xd7f7('0x10')]){if(_0xfcbc56['error']['code']===0x1f4){logger[_0xd7f7('0x10')](_0xd7f7('0xb'),_0x39ab8a,_0xfcbc56[_0xd7f7('0x10')]['message']);return _0x4ac9fd(_0xfcbc56[_0xd7f7('0x10')][_0xd7f7('0x11')]);}logger['error']('Network,\x20%s,\x20%s',_0x39ab8a,_0xfcbc56[_0xd7f7('0x10')][_0xd7f7('0x11')]);return _0x38543c(_0xfcbc56[_0xd7f7('0x10')][_0xd7f7('0x11')]);}else{logger[_0xd7f7('0xa')](_0xd7f7('0xb'),_0x39ab8a,_0xd7f7('0xc'));_0x38543c(_0xfcbc56[_0xd7f7('0x12')]['message']);}})[_0xd7f7('0x13')](function(_0x43ed1d){logger[_0xd7f7('0x10')]('Network,\x20%s,\x20%s',_0x39ab8a,_0x43ed1d);_0x4ac9fd(_0x43ed1d);});});}function respondWithResult(_0x49a990,_0x167ae3){_0x167ae3=_0x167ae3||0xc8;return function(_0x556a0b){if(_0x556a0b){return _0x49a990[_0xd7f7('0x14')](_0x167ae3)[_0xd7f7('0x15')](_0x556a0b);}};}function respondWithFilteredResult(_0x374d9e,_0x1db076){return function(_0x3316b9){if(_0x3316b9){var _0x413d75=typeof _0x1db076['offset']===_0xd7f7('0x16')&&typeof _0x1db076[_0xd7f7('0x17')]===_0xd7f7('0x16');var _0x54575d=_0x3316b9[_0xd7f7('0x18')];var _0x40b040=_0x413d75?0x0:_0x1db076['offset'];var _0x4da7dc=_0x413d75?_0x3316b9[_0xd7f7('0x18')]:_0x1db076[_0xd7f7('0x19')]+_0x1db076[_0xd7f7('0x17')];var _0x4c0794;if(_0x4da7dc>=_0x54575d){_0x4da7dc=_0x54575d;_0x4c0794=0xc8;}else{_0x4c0794=0xce;}_0x374d9e['status'](_0x4c0794);return _0x374d9e[_0xd7f7('0x1a')]('Content-Range',_0x40b040+'-'+_0x4da7dc+'/'+_0x54575d)[_0xd7f7('0x15')](_0x3316b9);}return null;};}function saveUpdates(_0x132827){return function(_0x494d94){if(_0x494d94){return _0x494d94[_0xd7f7('0x1b')](_0x132827)[_0xd7f7('0x1c')](function(_0x2546c6){return _0x2546c6;});}return null;};}function removeEntity(_0x4801e1){return function(_0x1a744f){if(_0x1a744f){return _0x1a744f['destroy']()['then'](function(){_0x4801e1[_0xd7f7('0x14')](0xcc)[_0xd7f7('0x1d')]();});}};}function handleEntityNotFound(_0x550b97){return function(_0x3d2420){if(!_0x3d2420){_0x550b97[_0xd7f7('0x1e')](0x194);}return _0x3d2420;};}function handleError(_0x3eef76,_0x10b496){_0x10b496=_0x10b496||0x1f4;return function(_0x1df859){logger[_0xd7f7('0x10')](_0x1df859[_0xd7f7('0x1f')]);if(_0x1df859[_0xd7f7('0x20')]){delete _0x1df859[_0xd7f7('0x20')];}_0x3eef76[_0xd7f7('0x14')](_0x10b496)[_0xd7f7('0x21')](_0x1df859);};}exports[_0xd7f7('0x22')]=function(_0x2ccc0b,_0x1395dc){var _0x494c7d={},_0xf2440f={},_0x42211a={'count':0x0,'rows':[]};var _0x2f3378=_[_0xd7f7('0x23')](db['Network'][_0xd7f7('0x24')],function(_0x24d50f){return{'name':_0x24d50f[_0xd7f7('0x25')],'type':_0x24d50f[_0xd7f7('0x26')][_0xd7f7('0x27')]};});_0xf2440f['model']=_[_0xd7f7('0x23')](_0x2f3378,_0xd7f7('0x20'));_0xf2440f[_0xd7f7('0x28')]=_['keys'](_0x2ccc0b[_0xd7f7('0x28')]);_0xf2440f[_0xd7f7('0x29')]=_[_0xd7f7('0x2a')](_0xf2440f[_0xd7f7('0x2b')],_0xf2440f[_0xd7f7('0x28')]);_0x494c7d[_0xd7f7('0x2c')]=_[_0xd7f7('0x2a')](_0xf2440f[_0xd7f7('0x2b')],qs[_0xd7f7('0x2d')](_0x2ccc0b[_0xd7f7('0x28')]['fields']));_0x494c7d['attributes']=_0x494c7d[_0xd7f7('0x2c')][_0xd7f7('0x2e')]?_0x494c7d['attributes']:_0xf2440f[_0xd7f7('0x2b')];if(!_0x2ccc0b[_0xd7f7('0x28')][_0xd7f7('0x2f')]('nolimit')){_0x494c7d[_0xd7f7('0x17')]=qs[_0xd7f7('0x17')](_0x2ccc0b[_0xd7f7('0x28')][_0xd7f7('0x17')]);_0x494c7d[_0xd7f7('0x19')]=qs['offset'](_0x2ccc0b[_0xd7f7('0x28')][_0xd7f7('0x19')]);}_0x494c7d['order']=qs[_0xd7f7('0x30')](_0x2ccc0b[_0xd7f7('0x28')]['sort']);_0x494c7d[_0xd7f7('0x31')]=qs[_0xd7f7('0x29')](_['pick'](_0x2ccc0b[_0xd7f7('0x28')],_0xf2440f[_0xd7f7('0x29')]),_0x2f3378);if(_0x2ccc0b[_0xd7f7('0x28')][_0xd7f7('0x32')]){_0x494c7d[_0xd7f7('0x31')]=_['merge'](_0x494c7d[_0xd7f7('0x31')],{'$or':_['map'](_0x2f3378,function(_0x31c97c){if(_0x31c97c['type']!==_0xd7f7('0x33')){var _0x5b18a4={};_0x5b18a4[_0x31c97c[_0xd7f7('0x20')]]={'$like':'%'+_0x2ccc0b[_0xd7f7('0x28')][_0xd7f7('0x32')]+'%'};return _0x5b18a4;}})});}_0x494c7d=_[_0xd7f7('0x34')]({},_0x494c7d,_0x2ccc0b[_0xd7f7('0x35')]);var _0x531bd0={'where':_0x494c7d[_0xd7f7('0x31')]};return db[_0xd7f7('0x36')][_0xd7f7('0x18')](_0x531bd0)[_0xd7f7('0x1c')](function(_0xae4471){_0x42211a[_0xd7f7('0x18')]=_0xae4471;if(_0x2ccc0b[_0xd7f7('0x28')][_0xd7f7('0x37')]){_0x494c7d['include']=[{'all':!![]}];}return db[_0xd7f7('0x36')][_0xd7f7('0x38')](_0x494c7d);})[_0xd7f7('0x1c')](function(_0x56ef65){_0x42211a['rows']=_0x56ef65;return _0x42211a;})['then'](respondWithFilteredResult(_0x1395dc,_0x494c7d))[_0xd7f7('0x13')](handleError(_0x1395dc,null));};exports[_0xd7f7('0x39')]=function(_0x264886,_0x2ec0fb){var _0x7b918a={'raw':!![],'where':{'id':_0x264886[_0xd7f7('0x3a')]['id']}},_0x40dd10={};_0x40dd10[_0xd7f7('0x2b')]=_[_0xd7f7('0x3b')](db['Network'][_0xd7f7('0x24')]);_0x40dd10[_0xd7f7('0x28')]=_[_0xd7f7('0x3b')](_0x264886['query']);_0x40dd10['filters']=_['intersection'](_0x40dd10['model'],_0x40dd10[_0xd7f7('0x28')]);_0x7b918a[_0xd7f7('0x2c')]=_['intersection'](_0x40dd10[_0xd7f7('0x2b')],qs[_0xd7f7('0x2d')](_0x264886[_0xd7f7('0x28')]['fields']));_0x7b918a[_0xd7f7('0x2c')]=_0x7b918a[_0xd7f7('0x2c')][_0xd7f7('0x2e')]?_0x7b918a['attributes']:_0x40dd10[_0xd7f7('0x2b')];if(_0x264886['query'][_0xd7f7('0x37')]){_0x7b918a['include']=[{'all':!![]}];}_0x7b918a=_['merge']({},_0x7b918a,_0x264886[_0xd7f7('0x35')]);return db[_0xd7f7('0x36')][_0xd7f7('0x3c')](_0x7b918a)[_0xd7f7('0x1c')](handleEntityNotFound(_0x2ec0fb,null))[_0xd7f7('0x1c')](respondWithResult(_0x2ec0fb,null))[_0xd7f7('0x13')](handleError(_0x2ec0fb,null));};exports[_0xd7f7('0x3d')]=function(_0x20912a,_0x13fcc1){var _0x294f5b;return db['Network'][_0xd7f7('0x3d')](_0x20912a[_0xd7f7('0x3e')],{'raw':!![]})['then'](function(_0x155c29){_0x294f5b=_0x155c29;return db[_0xd7f7('0x36')][_0xd7f7('0x38')]({'where':{'type':_0x20912a[_0xd7f7('0x3e')][_0xd7f7('0x26')]},'raw':!![]});})[_0xd7f7('0x1c')](function(_0x35e290){if(_0x294f5b['type'][_0xd7f7('0x3f')]()=='STUN'){var _0x1da9ae=fs['readFileSync'](path['join'](config[_0xd7f7('0x40')],'server/files/templates/stun_multiple.ejs'),_0xd7f7('0x41'));var _0x5b42d5=ejs[_0xd7f7('0x42')](_0x1da9ae,{'networks':_0x35e290||[]});fs[_0xd7f7('0x43')](_0xd7f7('0x44'),_0x5b42d5);return respondWithRpcPromise(_0xd7f7('0x45'),_0xd7f7('0x3d'),{'module':_0xd7f7('0x46')});}else if(_0x294f5b[_0xd7f7('0x26')][_0xd7f7('0x3f')]()==_0xd7f7('0x47')){var _0x4c4cd7=fs[_0xd7f7('0x48')](path['join'](config['root'],'server/files/templates/turn_multiple.ejs'),'utf8');var _0x4dc71c=ejs[_0xd7f7('0x42')](_0x4c4cd7,{'networks':_0x35e290||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0x4dc71c);return respondWithRpcPromise(_0xd7f7('0x45'),_0xd7f7('0x3d'),{'module':'res_stun_monitor.so'});}else{var _0x1499e4=fs['readFileSync'](path[_0xd7f7('0x49')](config[_0xd7f7('0x40')],_0xd7f7('0x4a')),_0xd7f7('0x41'));var _0x1ee3dd=ejs[_0xd7f7('0x42')](_0x1499e4,{'networks':_0x35e290||[]});fs['writeFileSync'](util[_0xd7f7('0x4b')](_0xd7f7('0x4c'),_0x20912a[_0xd7f7('0x3e')][_0xd7f7('0x26')][_0xd7f7('0x4d')]()),_0x1ee3dd);return respondWithRpcPromise(_0xd7f7('0x45'),_0xd7f7('0x3d'),{'module':_0xd7f7('0x4e')});}})[_0xd7f7('0x1c')](function(){return _0x294f5b;})[_0xd7f7('0x1c')](respondWithResult(_0x13fcc1,0xc9))[_0xd7f7('0x13')](handleError(_0x13fcc1,null));};exports[_0xd7f7('0x1b')]=function(_0x5d2724,_0x489598){var _0x523039;return db[_0xd7f7('0x36')][_0xd7f7('0x3c')]({'where':{'id':_0x5d2724['params']['id']}})[_0xd7f7('0x1c')](handleEntityNotFound(_0x489598,null))[_0xd7f7('0x1c')](saveUpdates(_0x5d2724[_0xd7f7('0x3e')],null))['then'](function(_0x30b6ca){if(_0x30b6ca){_0x523039=_0x30b6ca;return db[_0xd7f7('0x36')][_0xd7f7('0x38')]({'where':{'type':_0x523039[_0xd7f7('0x26')]},'raw':!![]});}return null;})[_0xd7f7('0x1c')](function(_0x238daa){if(_0x523039[_0xd7f7('0x26')][_0xd7f7('0x3f')]()=='STUN'){var _0x375fa8=fs[_0xd7f7('0x48')](path['join'](config[_0xd7f7('0x40')],_0xd7f7('0x4f')),'utf8');var _0x332ebe=ejs[_0xd7f7('0x42')](_0x375fa8,{'networks':_0x238daa||[]});fs['writeFileSync'](_0xd7f7('0x44'),_0x332ebe);return respondWithRpcPromise('Reload',_0xd7f7('0x1b'),{'module':_0xd7f7('0x46')});}else if(_0x523039[_0xd7f7('0x26')]['toUpperCase']()=='TURN'){var _0x4e68a6=fs[_0xd7f7('0x48')](path['join'](config[_0xd7f7('0x40')],_0xd7f7('0x50')),_0xd7f7('0x41'));var _0xb52f37=ejs[_0xd7f7('0x42')](_0x4e68a6,{'networks':_0x238daa||[]});fs[_0xd7f7('0x43')](_0xd7f7('0x51'),_0xb52f37);return respondWithRpcPromise(_0xd7f7('0x45'),_0xd7f7('0x1b'),{'module':'res_stun_monitor.so'});}else{var _0x38b1c7=fs[_0xd7f7('0x48')](path[_0xd7f7('0x49')](config[_0xd7f7('0x40')],_0xd7f7('0x4a')),_0xd7f7('0x41'));var _0x1cc1fc=ejs[_0xd7f7('0x42')](_0x38b1c7,{'networks':_0x238daa||[]});fs[_0xd7f7('0x43')](util[_0xd7f7('0x4b')]('/etc/asterisk/sip_xcally_%s.conf',_0x5d2724[_0xd7f7('0x3e')][_0xd7f7('0x26')]['toLowerCase']()),_0x1cc1fc);return respondWithRpcPromise(_0xd7f7('0x45'),_0xd7f7('0x1b'),{'module':_0xd7f7('0x4e')});}})[_0xd7f7('0x1c')](function(_0x3425a4){if(_0x3425a4){return _0x523039;}return null;})[_0xd7f7('0x1c')](respondWithResult(_0x489598,null))[_0xd7f7('0x13')](handleError(_0x489598,null));};exports[_0xd7f7('0x52')]=function(_0x23226f,_0x43ada6){var _0x13a51b;return db[_0xd7f7('0x36')]['find']({'where':{'id':_0x23226f[_0xd7f7('0x3a')]['id']}})[_0xd7f7('0x1c')](function(_0x4973aa){_0x13a51b=_0x4973aa;return _0x4973aa;})[_0xd7f7('0x1c')](handleEntityNotFound(_0x43ada6,null))[_0xd7f7('0x1c')](removeEntity(_0x43ada6,null))['then'](function(){if(_0x13a51b){return db[_0xd7f7('0x36')][_0xd7f7('0x38')]({'where':{'type':_0x13a51b[_0xd7f7('0x26')]},'raw':!![]});}})['then'](function(_0x535eeb){if(_0x13a51b[_0xd7f7('0x26')][_0xd7f7('0x3f')]()==_0xd7f7('0x53')){var _0xa2c5f0=fs[_0xd7f7('0x48')](path['join'](config[_0xd7f7('0x40')],'server/files/templates/stun_multiple.ejs'),'utf8');var _0x1ca57b=ejs['render'](_0xa2c5f0,{'networks':_0x535eeb||[]});fs[_0xd7f7('0x43')](_0xd7f7('0x44'),_0x1ca57b);return respondWithRpcPromise(_0xd7f7('0x45'),_0xd7f7('0x52'),{'module':'res_stun_monitor.so'});}else if(_0x13a51b[_0xd7f7('0x26')][_0xd7f7('0x3f')]()==_0xd7f7('0x47')){var _0x44263e=fs[_0xd7f7('0x48')](path[_0xd7f7('0x49')](config[_0xd7f7('0x40')],_0xd7f7('0x50')),_0xd7f7('0x41'));var _0x3cd8ed=ejs['render'](_0x44263e,{'networks':_0x535eeb||[]});fs[_0xd7f7('0x43')]('/etc/asterisk/turn_xcally.conf',_0x3cd8ed);return respondWithRpcPromise(_0xd7f7('0x45'),_0xd7f7('0x52'),{'module':'res_stun_monitor.so'});}else{var _0x49faf0=fs[_0xd7f7('0x48')](path[_0xd7f7('0x49')](config[_0xd7f7('0x40')],_0xd7f7('0x4a')),_0xd7f7('0x41'));var _0x490354=ejs['render'](_0x49faf0,{'networks':_0x535eeb||[]});fs[_0xd7f7('0x43')](util['format'](_0xd7f7('0x4c'),_0x13a51b[_0xd7f7('0x26')][_0xd7f7('0x4d')]()),_0x490354);return respondWithRpcPromise(_0xd7f7('0x45'),_0xd7f7('0x52'),{'module':_0xd7f7('0x4e')});}})['catch'](handleError(_0x43ada6,null));};