Built motion from commit 616d3211.|2.6.4
[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 _0x43c3=['query','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','params','keys','fields','find','create','body','toUpperCase','STUN','readFileSync','server/files/templates/stun_multiple.ejs','utf8','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','root','render','res_stun_monitor.so','join','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','TURN','server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','util','ejs','lodash','../../components/parsers/qs','api','../../config/environment','../../mysqldb','jayson/promise','client','http','request','then','Network,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','status','json','offset','limit','count','set','update','destroy','end','stack','name','send','index','Network','rawAttributes','fieldName','type','model','map'];(function(_0x7275e9,_0x321fa5){var _0x17b99d=function(_0x54af41){while(--_0x54af41){_0x7275e9['push'](_0x7275e9['shift']());}};_0x17b99d(++_0x321fa5);}(_0x43c3,0x17d));var _0x343c=function(_0x1d238f,_0x3aa8f4){_0x1d238f=_0x1d238f-0x0;var _0x35bc2f=_0x43c3[_0x1d238f];return _0x35bc2f;};'use strict';var util=require(_0x343c('0x0'));var path=require('path');var ejs=require(_0x343c('0x1'));var fs=require('fs');var _=require(_0x343c('0x2'));var qs=require(_0x343c('0x3'));var logger=require('../../config/logger')(_0x343c('0x4'));var config=require(_0x343c('0x5'));var db=require(_0x343c('0x6'))['db'];var jayson=require(_0x343c('0x7'));var client=jayson[_0x343c('0x8')][_0x343c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x39dd3d,_0x5af57c,_0x19fc2e,_0x4de714){return new Promise(function(_0x5c91d9,_0x2333d7){var _0x5d01eb=_0x4de714||client;return _0x5d01eb[_0x343c('0xa')](_0x39dd3d,_0x19fc2e)[_0x343c('0xb')](function(_0x5d514e){logger['info'](_0x343c('0xc'),_0x5af57c,_0x343c('0xd'));logger[_0x343c('0xe')]('Network,\x20%s,\x20%s,\x20%s',_0x5af57c,_0x343c('0xd'),JSON[_0x343c('0xf')](_0x5d514e));if(_0x5d514e['error']){if(_0x5d514e[_0x343c('0x10')][_0x343c('0x11')]===0x1f4){logger[_0x343c('0x10')](_0x343c('0xc'),_0x5af57c,_0x5d514e[_0x343c('0x10')]['message']);return _0x2333d7(_0x5d514e[_0x343c('0x10')][_0x343c('0x12')]);}logger['error'](_0x343c('0xc'),_0x5af57c,_0x5d514e[_0x343c('0x10')][_0x343c('0x12')]);return _0x5c91d9(_0x5d514e['error']['message']);}else{logger['info'](_0x343c('0xc'),_0x5af57c,_0x343c('0xd'));_0x5c91d9(_0x5d514e['result'][_0x343c('0x12')]);}})[_0x343c('0x13')](function(_0x425366){logger[_0x343c('0x10')]('Network,\x20%s,\x20%s',_0x5af57c,_0x425366);_0x2333d7(_0x425366);});});}function respondWithResult(_0x947fce,_0x38b7bf){_0x38b7bf=_0x38b7bf||0xc8;return function(_0x55d69e){if(_0x55d69e){return _0x947fce[_0x343c('0x14')](_0x38b7bf)[_0x343c('0x15')](_0x55d69e);}};}function respondWithFilteredResult(_0x6ed450,_0x4b5856){return function(_0x4eb2cd){if(_0x4eb2cd){var _0x22f032=typeof _0x4b5856[_0x343c('0x16')]==='undefined'&&typeof _0x4b5856[_0x343c('0x17')]==='undefined';var _0x23faec=_0x4eb2cd[_0x343c('0x18')];var _0x1f097c=_0x22f032?0x0:_0x4b5856[_0x343c('0x16')];var _0x4401e7=_0x22f032?_0x4eb2cd[_0x343c('0x18')]:_0x4b5856['offset']+_0x4b5856[_0x343c('0x17')];var _0x255d43;if(_0x4401e7>=_0x23faec){_0x4401e7=_0x23faec;_0x255d43=0xc8;}else{_0x255d43=0xce;}_0x6ed450[_0x343c('0x14')](_0x255d43);return _0x6ed450[_0x343c('0x19')]('Content-Range',_0x1f097c+'-'+_0x4401e7+'/'+_0x23faec)[_0x343c('0x15')](_0x4eb2cd);}return null;};}function saveUpdates(_0x194942){return function(_0x4612c6){if(_0x4612c6){return _0x4612c6[_0x343c('0x1a')](_0x194942)['then'](function(_0x3dea8f){return _0x3dea8f;});}return null;};}function removeEntity(_0x211bc9){return function(_0x55c42d){if(_0x55c42d){return _0x55c42d[_0x343c('0x1b')]()[_0x343c('0xb')](function(){_0x211bc9[_0x343c('0x14')](0xcc)[_0x343c('0x1c')]();});}};}function handleEntityNotFound(_0x9c2b41){return function(_0x4f17b6){if(!_0x4f17b6){_0x9c2b41['sendStatus'](0x194);}return _0x4f17b6;};}function handleError(_0x2173c1,_0x5725ad){_0x5725ad=_0x5725ad||0x1f4;return function(_0x3fdad1){logger[_0x343c('0x10')](_0x3fdad1[_0x343c('0x1d')]);if(_0x3fdad1['name']){delete _0x3fdad1[_0x343c('0x1e')];}_0x2173c1[_0x343c('0x14')](_0x5725ad)[_0x343c('0x1f')](_0x3fdad1);};}exports[_0x343c('0x20')]=function(_0x46fa40,_0x4c929f){var _0x15cd94={},_0x1db959={},_0x499bee={'count':0x0,'rows':[]};var _0x29a7d0=_['map'](db[_0x343c('0x21')][_0x343c('0x22')],function(_0x4039ed){return{'name':_0x4039ed[_0x343c('0x23')],'type':_0x4039ed[_0x343c('0x24')]['key']};});_0x1db959[_0x343c('0x25')]=_[_0x343c('0x26')](_0x29a7d0,_0x343c('0x1e'));_0x1db959[_0x343c('0x27')]=_['keys'](_0x46fa40[_0x343c('0x27')]);_0x1db959[_0x343c('0x28')]=_[_0x343c('0x29')](_0x1db959['model'],_0x1db959['query']);_0x15cd94[_0x343c('0x2a')]=_[_0x343c('0x29')](_0x1db959[_0x343c('0x25')],qs['fields'](_0x46fa40[_0x343c('0x27')]['fields']));_0x15cd94[_0x343c('0x2a')]=_0x15cd94[_0x343c('0x2a')][_0x343c('0x2b')]?_0x15cd94[_0x343c('0x2a')]:_0x1db959[_0x343c('0x25')];if(!_0x46fa40[_0x343c('0x27')][_0x343c('0x2c')](_0x343c('0x2d'))){_0x15cd94['limit']=qs['limit'](_0x46fa40[_0x343c('0x27')]['limit']);_0x15cd94[_0x343c('0x16')]=qs[_0x343c('0x16')](_0x46fa40[_0x343c('0x27')]['offset']);}_0x15cd94[_0x343c('0x2e')]=qs[_0x343c('0x2f')](_0x46fa40['query']['sort']);_0x15cd94[_0x343c('0x30')]=qs[_0x343c('0x28')](_[_0x343c('0x31')](_0x46fa40[_0x343c('0x27')],_0x1db959['filters']),_0x29a7d0);if(_0x46fa40[_0x343c('0x27')]['filter']){_0x15cd94[_0x343c('0x30')]=_['merge'](_0x15cd94['where'],{'$or':_['map'](_0x29a7d0,function(_0x210583){if(_0x210583['type']!==_0x343c('0x32')){var _0x4d1a6b={};_0x4d1a6b[_0x210583[_0x343c('0x1e')]]={'$like':'%'+_0x46fa40['query'][_0x343c('0x33')]+'%'};return _0x4d1a6b;}})});}_0x15cd94=_[_0x343c('0x34')]({},_0x15cd94,_0x46fa40[_0x343c('0x35')]);var _0x1e8d69={'where':_0x15cd94[_0x343c('0x30')]};return db[_0x343c('0x21')]['count'](_0x1e8d69)[_0x343c('0xb')](function(_0x2c6b36){_0x499bee[_0x343c('0x18')]=_0x2c6b36;if(_0x46fa40[_0x343c('0x27')][_0x343c('0x36')]){_0x15cd94[_0x343c('0x37')]=[{'all':!![]}];}return db[_0x343c('0x21')][_0x343c('0x38')](_0x15cd94);})[_0x343c('0xb')](function(_0x5db67f){_0x499bee[_0x343c('0x39')]=_0x5db67f;return _0x499bee;})['then'](respondWithFilteredResult(_0x4c929f,_0x15cd94))[_0x343c('0x13')](handleError(_0x4c929f,null));};exports['show']=function(_0x348b4c,_0x584cda){var _0x14fd3f={'raw':!![],'where':{'id':_0x348b4c[_0x343c('0x3a')]['id']}},_0x470329={};_0x470329[_0x343c('0x25')]=_[_0x343c('0x3b')](db[_0x343c('0x21')][_0x343c('0x22')]);_0x470329[_0x343c('0x27')]=_[_0x343c('0x3b')](_0x348b4c['query']);_0x470329[_0x343c('0x28')]=_[_0x343c('0x29')](_0x470329[_0x343c('0x25')],_0x470329[_0x343c('0x27')]);_0x14fd3f['attributes']=_[_0x343c('0x29')](_0x470329['model'],qs[_0x343c('0x3c')](_0x348b4c[_0x343c('0x27')][_0x343c('0x3c')]));_0x14fd3f['attributes']=_0x14fd3f[_0x343c('0x2a')][_0x343c('0x2b')]?_0x14fd3f[_0x343c('0x2a')]:_0x470329[_0x343c('0x25')];if(_0x348b4c[_0x343c('0x27')]['includeAll']){_0x14fd3f['include']=[{'all':!![]}];}_0x14fd3f=_['merge']({},_0x14fd3f,_0x348b4c['options']);return db[_0x343c('0x21')][_0x343c('0x3d')](_0x14fd3f)[_0x343c('0xb')](handleEntityNotFound(_0x584cda,null))[_0x343c('0xb')](respondWithResult(_0x584cda,null))['catch'](handleError(_0x584cda,null));};exports[_0x343c('0x3e')]=function(_0x4e6923,_0x176e37){var _0x46013e;return db[_0x343c('0x21')][_0x343c('0x3e')](_0x4e6923[_0x343c('0x3f')],{'raw':!![]})[_0x343c('0xb')](function(_0xc0a79){_0x46013e=_0xc0a79;return db[_0x343c('0x21')][_0x343c('0x38')]({'where':{'type':_0x4e6923['body'][_0x343c('0x24')]},'raw':!![]});})[_0x343c('0xb')](function(_0x291e0b){if(_0x46013e['type'][_0x343c('0x40')]()==_0x343c('0x41')){var _0xd895c3=fs[_0x343c('0x42')](path['join'](config['root'],_0x343c('0x43')),_0x343c('0x44'));var _0x26edf8=ejs['render'](_0xd895c3,{'networks':_0x291e0b||[]});fs[_0x343c('0x45')](_0x343c('0x46'),_0x26edf8);return respondWithRpcPromise(_0x343c('0x47'),_0x343c('0x3e'),{'module':'res_stun_monitor.so'});}else if(_0x46013e['type'][_0x343c('0x40')]()=='TURN'){var _0x2ef512=fs['readFileSync'](path['join'](config[_0x343c('0x48')],'server/files/templates/turn_multiple.ejs'),_0x343c('0x44'));var _0xd3ebce=ejs[_0x343c('0x49')](_0x2ef512,{'networks':_0x291e0b||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0xd3ebce);return respondWithRpcPromise(_0x343c('0x47'),_0x343c('0x3e'),{'module':_0x343c('0x4a')});}else{var _0x480e45=fs[_0x343c('0x42')](path[_0x343c('0x4b')](config['root'],_0x343c('0x4c')),_0x343c('0x44'));var _0x10bb40=ejs['render'](_0x480e45,{'networks':_0x291e0b||[]});fs[_0x343c('0x45')](util[_0x343c('0x4d')](_0x343c('0x4e'),_0x4e6923[_0x343c('0x3f')]['type'][_0x343c('0x4f')]()),_0x10bb40);return respondWithRpcPromise(_0x343c('0x47'),_0x343c('0x3e'),{'module':_0x343c('0x50')});}})[_0x343c('0xb')](function(){return _0x46013e;})[_0x343c('0xb')](respondWithResult(_0x176e37,0xc9))['catch'](handleError(_0x176e37,null));};exports[_0x343c('0x1a')]=function(_0x1d38ed,_0x281cb2){var _0x191520;return db[_0x343c('0x21')][_0x343c('0x3d')]({'where':{'id':_0x1d38ed['params']['id']}})[_0x343c('0xb')](handleEntityNotFound(_0x281cb2,null))[_0x343c('0xb')](saveUpdates(_0x1d38ed[_0x343c('0x3f')],null))[_0x343c('0xb')](function(_0x589b0a){if(_0x589b0a){_0x191520=_0x589b0a;return db[_0x343c('0x21')][_0x343c('0x38')]({'where':{'type':_0x191520[_0x343c('0x24')]},'raw':!![]});}return null;})['then'](function(_0x1a2b51){if(_0x191520['type'][_0x343c('0x40')]()==_0x343c('0x41')){var _0x4ff06f=fs[_0x343c('0x42')](path[_0x343c('0x4b')](config['root'],_0x343c('0x43')),_0x343c('0x44'));var _0x4011ee=ejs[_0x343c('0x49')](_0x4ff06f,{'networks':_0x1a2b51||[]});fs[_0x343c('0x45')](_0x343c('0x46'),_0x4011ee);return respondWithRpcPromise(_0x343c('0x47'),_0x343c('0x1a'),{'module':_0x343c('0x4a')});}else if(_0x191520[_0x343c('0x24')][_0x343c('0x40')]()==_0x343c('0x51')){var _0x3520ad=fs[_0x343c('0x42')](path[_0x343c('0x4b')](config[_0x343c('0x48')],_0x343c('0x52')),_0x343c('0x44'));var _0x49be89=ejs['render'](_0x3520ad,{'networks':_0x1a2b51||[]});fs[_0x343c('0x45')](_0x343c('0x53'),_0x49be89);return respondWithRpcPromise(_0x343c('0x47'),'update',{'module':_0x343c('0x4a')});}else{var _0x5e8594=fs[_0x343c('0x42')](path[_0x343c('0x4b')](config[_0x343c('0x48')],_0x343c('0x4c')),'utf8');var _0x49ea0e=ejs[_0x343c('0x49')](_0x5e8594,{'networks':_0x1a2b51||[]});fs[_0x343c('0x45')](util[_0x343c('0x4d')](_0x343c('0x4e'),_0x1d38ed[_0x343c('0x3f')][_0x343c('0x24')][_0x343c('0x4f')]()),_0x49ea0e);return respondWithRpcPromise('Reload','update',{'module':'chan_sip.so'});}})[_0x343c('0xb')](function(_0x5408dc){if(_0x5408dc){return _0x191520;}return null;})[_0x343c('0xb')](respondWithResult(_0x281cb2,null))[_0x343c('0x13')](handleError(_0x281cb2,null));};exports['destroy']=function(_0x587105,_0x2cc268){var _0x1605ad;return db[_0x343c('0x21')][_0x343c('0x3d')]({'where':{'id':_0x587105[_0x343c('0x3a')]['id']}})[_0x343c('0xb')](function(_0x232b31){_0x1605ad=_0x232b31;return _0x232b31;})['then'](handleEntityNotFound(_0x2cc268,null))[_0x343c('0xb')](removeEntity(_0x2cc268,null))[_0x343c('0xb')](function(){if(_0x1605ad){return db[_0x343c('0x21')][_0x343c('0x38')]({'where':{'type':_0x1605ad['type']},'raw':!![]});}})['then'](function(_0x103a53){if(_0x1605ad['type']['toUpperCase']()==_0x343c('0x41')){var _0x2f49b0=fs[_0x343c('0x42')](path['join'](config[_0x343c('0x48')],'server/files/templates/stun_multiple.ejs'),_0x343c('0x44'));var _0x4c8bf0=ejs[_0x343c('0x49')](_0x2f49b0,{'networks':_0x103a53||[]});fs[_0x343c('0x45')](_0x343c('0x46'),_0x4c8bf0);return respondWithRpcPromise('Reload',_0x343c('0x1b'),{'module':_0x343c('0x4a')});}else if(_0x1605ad[_0x343c('0x24')][_0x343c('0x40')]()==_0x343c('0x51')){var _0x322d16=fs[_0x343c('0x42')](path[_0x343c('0x4b')](config[_0x343c('0x48')],_0x343c('0x52')),_0x343c('0x44'));var _0xa7d1a8=ejs[_0x343c('0x49')](_0x322d16,{'networks':_0x103a53||[]});fs[_0x343c('0x45')]('/etc/asterisk/turn_xcally.conf',_0xa7d1a8);return respondWithRpcPromise(_0x343c('0x47'),_0x343c('0x1b'),{'module':_0x343c('0x4a')});}else{var _0x183ad8=fs['readFileSync'](path[_0x343c('0x4b')](config[_0x343c('0x48')],_0x343c('0x4c')),_0x343c('0x44'));var _0x522ade=ejs[_0x343c('0x49')](_0x183ad8,{'networks':_0x103a53||[]});fs[_0x343c('0x45')](util[_0x343c('0x4d')](_0x343c('0x4e'),_0x1605ad[_0x343c('0x24')][_0x343c('0x4f')]()),_0x522ade);return respondWithRpcPromise(_0x343c('0x47'),'destroy',{'module':_0x343c('0x50')});}})['catch'](handleError(_0x2cc268,null));};