67ab704296b81cec0e3611829a2d973eaa64bbf3
[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 _0x82ee=['request','info','Network,\x20%s,\x20%s','request\x20sent','debug','code','error','message','catch','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','sendStatus','name','send','index','map','rawAttributes','type','key','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','include','Network','findAll','rows','show','params','includeAll','options','create','body','STUN','join','root','server/files/templates/stun_multiple.ejs','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','TURN','server/files/templates/turn_multiple.ejs','utf8','/etc/asterisk/turn_xcally.conf','res_stun_monitor.so','readFileSync','server/files/templates/network.ejs','render','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','find','toUpperCase','util','path','ejs','../../config/logger','../../config/environment','../../mysqldb','jayson/promise','client'];(function(_0x46ed5e,_0x161949){var _0x204cac=function(_0x3ac007){while(--_0x3ac007){_0x46ed5e['push'](_0x46ed5e['shift']());}};_0x204cac(++_0x161949);}(_0x82ee,0xf7));var _0xe82e=function(_0x55dd1e,_0x5d2b54){_0x55dd1e=_0x55dd1e-0x0;var _0x2f7ed6=_0x82ee[_0x55dd1e];return _0x2f7ed6;};'use strict';var util=require(_0xe82e('0x0'));var path=require(_0xe82e('0x1'));var ejs=require(_0xe82e('0x2'));var fs=require('fs');var _=require('lodash');var qs=require('../../components/parsers/qs');var logger=require(_0xe82e('0x3'))('api');var config=require(_0xe82e('0x4'));var db=require(_0xe82e('0x5'))['db'];var jayson=require(_0xe82e('0x6'));var client=jayson[_0xe82e('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0xebc015,_0xff8c67,_0x122788,_0x3c3f25){return new Promise(function(_0x320098,_0x4c78a0){var _0x4fd236=_0x3c3f25||client;return _0x4fd236[_0xe82e('0x8')](_0xebc015,_0x122788)['then'](function(_0x32f5b5){logger[_0xe82e('0x9')](_0xe82e('0xa'),_0xff8c67,_0xe82e('0xb'));logger[_0xe82e('0xc')]('Network,\x20%s,\x20%s,\x20%s',_0xff8c67,_0xe82e('0xb'),JSON['stringify'](_0x32f5b5));if(_0x32f5b5['error']){if(_0x32f5b5['error'][_0xe82e('0xd')]===0x1f4){logger[_0xe82e('0xe')](_0xe82e('0xa'),_0xff8c67,_0x32f5b5[_0xe82e('0xe')][_0xe82e('0xf')]);return _0x4c78a0(_0x32f5b5[_0xe82e('0xe')][_0xe82e('0xf')]);}logger[_0xe82e('0xe')]('Network,\x20%s,\x20%s',_0xff8c67,_0x32f5b5[_0xe82e('0xe')][_0xe82e('0xf')]);return _0x320098(_0x32f5b5[_0xe82e('0xe')][_0xe82e('0xf')]);}else{logger[_0xe82e('0x9')](_0xe82e('0xa'),_0xff8c67,_0xe82e('0xb'));_0x320098(_0x32f5b5['result'][_0xe82e('0xf')]);}})[_0xe82e('0x10')](function(_0x4864e1){logger[_0xe82e('0xe')](_0xe82e('0xa'),_0xff8c67,_0x4864e1);_0x4c78a0(_0x4864e1);});});}function respondWithResult(_0x29ca12,_0x3eb44b){_0x3eb44b=_0x3eb44b||0xc8;return function(_0x57f47e){if(_0x57f47e){return _0x29ca12[_0xe82e('0x11')](_0x3eb44b)[_0xe82e('0x12')](_0x57f47e);}};}function respondWithFilteredResult(_0xb85fb9,_0x2645ee){return function(_0x56c016){if(_0x56c016){var _0xa3b71a=typeof _0x2645ee[_0xe82e('0x13')]===_0xe82e('0x14')&&typeof _0x2645ee[_0xe82e('0x15')]===_0xe82e('0x14');var _0xdc13b5=_0x56c016['count'];var _0x58be9e=_0xa3b71a?0x0:_0x2645ee['offset'];var _0xc75044=_0xa3b71a?_0x56c016[_0xe82e('0x16')]:_0x2645ee[_0xe82e('0x13')]+_0x2645ee[_0xe82e('0x15')];var _0x2bd3a6;if(_0xc75044>=_0xdc13b5){_0xc75044=_0xdc13b5;_0x2bd3a6=0xc8;}else{_0x2bd3a6=0xce;}_0xb85fb9[_0xe82e('0x11')](_0x2bd3a6);return _0xb85fb9[_0xe82e('0x17')](_0xe82e('0x18'),_0x58be9e+'-'+_0xc75044+'/'+_0xdc13b5)['json'](_0x56c016);}return null;};}function saveUpdates(_0x450fd8){return function(_0x1080eb){if(_0x1080eb){return _0x1080eb[_0xe82e('0x19')](_0x450fd8)[_0xe82e('0x1a')](function(_0x14b839){return _0x14b839;});}return null;};}function removeEntity(_0x29595c){return function(_0x13e7ab){if(_0x13e7ab){return _0x13e7ab[_0xe82e('0x1b')]()[_0xe82e('0x1a')](function(){_0x29595c[_0xe82e('0x11')](0xcc)[_0xe82e('0x1c')]();});}};}function handleEntityNotFound(_0x2fd64b){return function(_0x487c80){if(!_0x487c80){_0x2fd64b[_0xe82e('0x1d')](0x194);}return _0x487c80;};}function handleError(_0x3263f5,_0x3084b9){_0x3084b9=_0x3084b9||0x1f4;return function(_0x45acd1){logger[_0xe82e('0xe')](_0x45acd1['stack']);if(_0x45acd1[_0xe82e('0x1e')]){delete _0x45acd1[_0xe82e('0x1e')];}_0x3263f5[_0xe82e('0x11')](_0x3084b9)[_0xe82e('0x1f')](_0x45acd1);};}exports[_0xe82e('0x20')]=function(_0x27fb26,_0x1ddad3){var _0x2c4d2c={},_0x2c40de={},_0x4d8aec={'count':0x0,'rows':[]};var _0x57eb33=_[_0xe82e('0x21')](db['Network'][_0xe82e('0x22')],function(_0x2a71d1){return{'name':_0x2a71d1['fieldName'],'type':_0x2a71d1[_0xe82e('0x23')][_0xe82e('0x24')]};});_0x2c40de[_0xe82e('0x25')]=_[_0xe82e('0x21')](_0x57eb33,_0xe82e('0x1e'));_0x2c40de['query']=_[_0xe82e('0x26')](_0x27fb26[_0xe82e('0x27')]);_0x2c40de[_0xe82e('0x28')]=_['intersection'](_0x2c40de[_0xe82e('0x25')],_0x2c40de['query']);_0x2c4d2c[_0xe82e('0x29')]=_[_0xe82e('0x2a')](_0x2c40de['model'],qs[_0xe82e('0x2b')](_0x27fb26[_0xe82e('0x27')][_0xe82e('0x2b')]));_0x2c4d2c[_0xe82e('0x29')]=_0x2c4d2c[_0xe82e('0x29')][_0xe82e('0x2c')]?_0x2c4d2c['attributes']:_0x2c40de['model'];if(!_0x27fb26[_0xe82e('0x27')][_0xe82e('0x2d')](_0xe82e('0x2e'))){_0x2c4d2c[_0xe82e('0x15')]=qs[_0xe82e('0x15')](_0x27fb26[_0xe82e('0x27')][_0xe82e('0x15')]);_0x2c4d2c[_0xe82e('0x13')]=qs[_0xe82e('0x13')](_0x27fb26['query'][_0xe82e('0x13')]);}_0x2c4d2c[_0xe82e('0x2f')]=qs[_0xe82e('0x30')](_0x27fb26[_0xe82e('0x27')]['sort']);_0x2c4d2c[_0xe82e('0x31')]=qs['filters'](_[_0xe82e('0x32')](_0x27fb26['query'],_0x2c40de[_0xe82e('0x28')]),_0x57eb33);if(_0x27fb26[_0xe82e('0x27')][_0xe82e('0x33')]){_0x2c4d2c[_0xe82e('0x31')]=_[_0xe82e('0x34')](_0x2c4d2c[_0xe82e('0x31')],{'$or':_[_0xe82e('0x21')](_0x57eb33,function(_0x258481){if(_0x258481[_0xe82e('0x23')]!==_0xe82e('0x35')){var _0x1b7310={};_0x1b7310[_0x258481[_0xe82e('0x1e')]]={'$like':'%'+_0x27fb26[_0xe82e('0x27')][_0xe82e('0x33')]+'%'};return _0x1b7310;}})});}_0x2c4d2c=_[_0xe82e('0x34')]({},_0x2c4d2c,_0x27fb26['options']);var _0x13c385={'where':_0x2c4d2c[_0xe82e('0x31')]};return db['Network'][_0xe82e('0x16')](_0x13c385)[_0xe82e('0x1a')](function(_0xbb07f7){_0x4d8aec[_0xe82e('0x16')]=_0xbb07f7;if(_0x27fb26[_0xe82e('0x27')]['includeAll']){_0x2c4d2c[_0xe82e('0x36')]=[{'all':!![]}];}return db[_0xe82e('0x37')][_0xe82e('0x38')](_0x2c4d2c);})[_0xe82e('0x1a')](function(_0x3ba07d){_0x4d8aec[_0xe82e('0x39')]=_0x3ba07d;return _0x4d8aec;})[_0xe82e('0x1a')](respondWithFilteredResult(_0x1ddad3,_0x2c4d2c))[_0xe82e('0x10')](handleError(_0x1ddad3,null));};exports[_0xe82e('0x3a')]=function(_0x28f38c,_0x16b499){var _0x23b091={'raw':!![],'where':{'id':_0x28f38c[_0xe82e('0x3b')]['id']}},_0x306f26={};_0x306f26['model']=_[_0xe82e('0x26')](db['Network'][_0xe82e('0x22')]);_0x306f26[_0xe82e('0x27')]=_[_0xe82e('0x26')](_0x28f38c[_0xe82e('0x27')]);_0x306f26[_0xe82e('0x28')]=_['intersection'](_0x306f26['model'],_0x306f26[_0xe82e('0x27')]);_0x23b091[_0xe82e('0x29')]=_[_0xe82e('0x2a')](_0x306f26[_0xe82e('0x25')],qs[_0xe82e('0x2b')](_0x28f38c[_0xe82e('0x27')][_0xe82e('0x2b')]));_0x23b091['attributes']=_0x23b091[_0xe82e('0x29')][_0xe82e('0x2c')]?_0x23b091[_0xe82e('0x29')]:_0x306f26['model'];if(_0x28f38c['query'][_0xe82e('0x3c')]){_0x23b091['include']=[{'all':!![]}];}_0x23b091=_[_0xe82e('0x34')]({},_0x23b091,_0x28f38c[_0xe82e('0x3d')]);return db[_0xe82e('0x37')]['find'](_0x23b091)[_0xe82e('0x1a')](handleEntityNotFound(_0x16b499,null))[_0xe82e('0x1a')](respondWithResult(_0x16b499,null))[_0xe82e('0x10')](handleError(_0x16b499,null));};exports[_0xe82e('0x3e')]=function(_0x2247ce,_0x30bb31){var _0xb9130b;return db[_0xe82e('0x37')][_0xe82e('0x3e')](_0x2247ce[_0xe82e('0x3f')],{'raw':!![]})[_0xe82e('0x1a')](function(_0x50e230){_0xb9130b=_0x50e230;return db[_0xe82e('0x37')]['findAll']({'where':{'type':_0x2247ce[_0xe82e('0x3f')][_0xe82e('0x23')]},'raw':!![]});})[_0xe82e('0x1a')](function(_0x24bda5){if(_0xb9130b[_0xe82e('0x23')]['toUpperCase']()==_0xe82e('0x40')){var _0x136dcd=fs['readFileSync'](path[_0xe82e('0x41')](config[_0xe82e('0x42')],_0xe82e('0x43')),'utf8');var _0x504002=ejs['render'](_0x136dcd,{'networks':_0x24bda5||[]});fs[_0xe82e('0x44')](_0xe82e('0x45'),_0x504002);return respondWithRpcPromise(_0xe82e('0x46'),_0xe82e('0x3e'),{'module':'res_stun_monitor.so'});}else if(_0xb9130b[_0xe82e('0x23')]['toUpperCase']()==_0xe82e('0x47')){var _0x52fb05=fs['readFileSync'](path[_0xe82e('0x41')](config[_0xe82e('0x42')],_0xe82e('0x48')),_0xe82e('0x49'));var _0x1da30a=ejs['render'](_0x52fb05,{'networks':_0x24bda5||[]});fs['writeFileSync'](_0xe82e('0x4a'),_0x1da30a);return respondWithRpcPromise(_0xe82e('0x46'),'create',{'module':_0xe82e('0x4b')});}else{var _0x523127=fs[_0xe82e('0x4c')](path[_0xe82e('0x41')](config[_0xe82e('0x42')],_0xe82e('0x4d')),'utf8');var _0xc8c61b=ejs[_0xe82e('0x4e')](_0x523127,{'networks':_0x24bda5||[]});fs[_0xe82e('0x44')](util[_0xe82e('0x4f')](_0xe82e('0x50'),_0x2247ce[_0xe82e('0x3f')]['type'][_0xe82e('0x51')]()),_0xc8c61b);return respondWithRpcPromise(_0xe82e('0x46'),_0xe82e('0x3e'),{'module':_0xe82e('0x52')});}})[_0xe82e('0x1a')](function(){return _0xb9130b;})[_0xe82e('0x1a')](respondWithResult(_0x30bb31,0xc9))[_0xe82e('0x10')](handleError(_0x30bb31,null));};exports[_0xe82e('0x19')]=function(_0xf3ec16,_0x566353){var _0x43aaf9;return db[_0xe82e('0x37')][_0xe82e('0x53')]({'where':{'id':_0xf3ec16[_0xe82e('0x3b')]['id']}})['then'](handleEntityNotFound(_0x566353,null))['then'](saveUpdates(_0xf3ec16[_0xe82e('0x3f')],null))['then'](function(_0x71f1ac){if(_0x71f1ac){_0x43aaf9=_0x71f1ac;return db['Network'][_0xe82e('0x38')]({'where':{'type':_0x43aaf9[_0xe82e('0x23')]},'raw':!![]});}return null;})[_0xe82e('0x1a')](function(_0xa675bf){if(_0x43aaf9['type'][_0xe82e('0x54')]()==_0xe82e('0x40')){var _0x1cddc3=fs[_0xe82e('0x4c')](path[_0xe82e('0x41')](config[_0xe82e('0x42')],'server/files/templates/stun_multiple.ejs'),'utf8');var _0x48fb84=ejs['render'](_0x1cddc3,{'networks':_0xa675bf||[]});fs[_0xe82e('0x44')]('/etc/asterisk/stun_xcally.conf',_0x48fb84);return respondWithRpcPromise('Reload',_0xe82e('0x19'),{'module':_0xe82e('0x4b')});}else if(_0x43aaf9[_0xe82e('0x23')][_0xe82e('0x54')]()==_0xe82e('0x47')){var _0x46e708=fs['readFileSync'](path['join'](config['root'],_0xe82e('0x48')),'utf8');var _0x3d2d57=ejs[_0xe82e('0x4e')](_0x46e708,{'networks':_0xa675bf||[]});fs[_0xe82e('0x44')](_0xe82e('0x4a'),_0x3d2d57);return respondWithRpcPromise(_0xe82e('0x46'),'update',{'module':_0xe82e('0x4b')});}else{var _0x5dff9f=fs[_0xe82e('0x4c')](path[_0xe82e('0x41')](config[_0xe82e('0x42')],_0xe82e('0x4d')),_0xe82e('0x49'));var _0x2d1889=ejs['render'](_0x5dff9f,{'networks':_0xa675bf||[]});fs[_0xe82e('0x44')](util[_0xe82e('0x4f')](_0xe82e('0x50'),_0xf3ec16[_0xe82e('0x3f')][_0xe82e('0x23')][_0xe82e('0x51')]()),_0x2d1889);return respondWithRpcPromise('Reload',_0xe82e('0x19'),{'module':_0xe82e('0x52')});}})[_0xe82e('0x1a')](function(_0x3bd7d0){if(_0x3bd7d0){return _0x43aaf9;}return null;})[_0xe82e('0x1a')](respondWithResult(_0x566353,null))[_0xe82e('0x10')](handleError(_0x566353,null));};exports['destroy']=function(_0x342ec6,_0x513d0f){var _0x3ecdd8;return db[_0xe82e('0x37')][_0xe82e('0x53')]({'where':{'id':_0x342ec6[_0xe82e('0x3b')]['id']}})[_0xe82e('0x1a')](function(_0x5f3062){_0x3ecdd8=_0x5f3062;return _0x5f3062;})['then'](handleEntityNotFound(_0x513d0f,null))['then'](removeEntity(_0x513d0f,null))['then'](function(){if(_0x3ecdd8){return db['Network'][_0xe82e('0x38')]({'where':{'type':_0x3ecdd8[_0xe82e('0x23')]},'raw':!![]});}})[_0xe82e('0x1a')](function(_0x119897){if(_0x3ecdd8[_0xe82e('0x23')][_0xe82e('0x54')]()==_0xe82e('0x40')){var _0x38eb32=fs[_0xe82e('0x4c')](path[_0xe82e('0x41')](config[_0xe82e('0x42')],_0xe82e('0x43')),_0xe82e('0x49'));var _0x387a1a=ejs[_0xe82e('0x4e')](_0x38eb32,{'networks':_0x119897||[]});fs['writeFileSync'](_0xe82e('0x45'),_0x387a1a);return respondWithRpcPromise(_0xe82e('0x46'),_0xe82e('0x1b'),{'module':_0xe82e('0x4b')});}else if(_0x3ecdd8[_0xe82e('0x23')][_0xe82e('0x54')]()=='TURN'){var _0x4ed8dc=fs[_0xe82e('0x4c')](path[_0xe82e('0x41')](config[_0xe82e('0x42')],_0xe82e('0x48')),_0xe82e('0x49'));var _0xffaea6=ejs['render'](_0x4ed8dc,{'networks':_0x119897||[]});fs[_0xe82e('0x44')](_0xe82e('0x4a'),_0xffaea6);return respondWithRpcPromise(_0xe82e('0x46'),_0xe82e('0x1b'),{'module':_0xe82e('0x4b')});}else{var _0x4b97cb=fs[_0xe82e('0x4c')](path['join'](config[_0xe82e('0x42')],_0xe82e('0x4d')),_0xe82e('0x49'));var _0xf43433=ejs[_0xe82e('0x4e')](_0x4b97cb,{'networks':_0x119897||[]});fs[_0xe82e('0x44')](util[_0xe82e('0x4f')]('/etc/asterisk/sip_xcally_%s.conf',_0x3ecdd8[_0xe82e('0x23')][_0xe82e('0x51')]()),_0xf43433);return respondWithRpcPromise(_0xe82e('0x46'),_0xe82e('0x1b'),{'module':_0xe82e('0x52')});}})[_0xe82e('0x10')](handleError(_0x513d0f,null));};