7a0c88a0cdd9075b621164529a143fb2c407491b
[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 _0xbc9a=['options','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','toUpperCase','STUN','readFileSync','join','root','server/files/templates/stun_multiple.ejs','utf8','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','TURN','server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','res_stun_monitor.so','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','destroy','server/files/templates/network.ejs','util','path','../../components/parsers/qs','../../config/logger','../../config/environment','client','http','request','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','json','undefined','count','offset','limit','set','Content-Range','update','status','sendStatus','name','send','index','map','Network','fieldName','type','key','query','keys','filters','model','attributes','intersection','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL'];(function(_0x36053b,_0x4513b9){var _0x5b073c=function(_0x257116){while(--_0x257116){_0x36053b['push'](_0x36053b['shift']());}};_0x5b073c(++_0x4513b9);}(_0xbc9a,0x11d));var _0xabc9=function(_0x534c33,_0x120ebc){_0x534c33=_0x534c33-0x0;var _0x22b732=_0xbc9a[_0x534c33];return _0x22b732;};'use strict';var util=require(_0xabc9('0x0'));var path=require(_0xabc9('0x1'));var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var qs=require(_0xabc9('0x2'));var logger=require(_0xabc9('0x3'))('api');var config=require(_0xabc9('0x4'));var db=require('../../mysqldb')['db'];var jayson=require('jayson/promise');var client=jayson[_0xabc9('0x5')][_0xabc9('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x36208e,_0x56bc36,_0x482bad,_0x8a6cb){return new Promise(function(_0x9bff75,_0x525a4b){var _0x5ebf79=_0x8a6cb||client;return _0x5ebf79[_0xabc9('0x7')](_0x36208e,_0x482bad)[_0xabc9('0x8')](function(_0x5bc0e8){logger[_0xabc9('0x9')](_0xabc9('0xa'),_0x56bc36,_0xabc9('0xb'));logger[_0xabc9('0xc')]('Network,\x20%s,\x20%s,\x20%s',_0x56bc36,_0xabc9('0xb'),JSON[_0xabc9('0xd')](_0x5bc0e8));if(_0x5bc0e8['error']){if(_0x5bc0e8[_0xabc9('0xe')][_0xabc9('0xf')]===0x1f4){logger[_0xabc9('0xe')](_0xabc9('0xa'),_0x56bc36,_0x5bc0e8[_0xabc9('0xe')][_0xabc9('0x10')]);return _0x525a4b(_0x5bc0e8[_0xabc9('0xe')][_0xabc9('0x10')]);}logger['error'](_0xabc9('0xa'),_0x56bc36,_0x5bc0e8[_0xabc9('0xe')][_0xabc9('0x10')]);return _0x9bff75(_0x5bc0e8[_0xabc9('0xe')][_0xabc9('0x10')]);}else{logger['info'](_0xabc9('0xa'),_0x56bc36,_0xabc9('0xb'));_0x9bff75(_0x5bc0e8[_0xabc9('0x11')][_0xabc9('0x10')]);}})['catch'](function(_0x3739dc){logger[_0xabc9('0xe')](_0xabc9('0xa'),_0x56bc36,_0x3739dc);_0x525a4b(_0x3739dc);});});}function respondWithResult(_0x224652,_0x297e5c){_0x297e5c=_0x297e5c||0xc8;return function(_0x16233e){if(_0x16233e){return _0x224652['status'](_0x297e5c)[_0xabc9('0x12')](_0x16233e);}};}function respondWithFilteredResult(_0x2a72e7,_0x163475){return function(_0x17de26){if(_0x17de26){var _0x3bffd6=typeof _0x163475['offset']===_0xabc9('0x13')&&typeof _0x163475['limit']===_0xabc9('0x13');var _0x38da25=_0x17de26[_0xabc9('0x14')];var _0x3e3a15=_0x3bffd6?0x0:_0x163475[_0xabc9('0x15')];var _0x52b8f8=_0x3bffd6?_0x17de26[_0xabc9('0x14')]:_0x163475[_0xabc9('0x15')]+_0x163475[_0xabc9('0x16')];var _0x45b560;if(_0x52b8f8>=_0x38da25){_0x52b8f8=_0x38da25;_0x45b560=0xc8;}else{_0x45b560=0xce;}_0x2a72e7['status'](_0x45b560);return _0x2a72e7[_0xabc9('0x17')](_0xabc9('0x18'),_0x3e3a15+'-'+_0x52b8f8+'/'+_0x38da25)[_0xabc9('0x12')](_0x17de26);}return null;};}function saveUpdates(_0x2e2225){return function(_0x419039){if(_0x419039){return _0x419039[_0xabc9('0x19')](_0x2e2225)[_0xabc9('0x8')](function(_0x17d38d){return _0x17d38d;});}return null;};}function removeEntity(_0x1182fa){return function(_0x432370){if(_0x432370){return _0x432370['destroy']()[_0xabc9('0x8')](function(){_0x1182fa[_0xabc9('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ba268){return function(_0x22a81c){if(!_0x22a81c){_0x4ba268[_0xabc9('0x1b')](0x194);}return _0x22a81c;};}function handleError(_0x43c52d,_0x5f5448){_0x5f5448=_0x5f5448||0x1f4;return function(_0xef0cf5){logger[_0xabc9('0xe')](_0xef0cf5['stack']);if(_0xef0cf5[_0xabc9('0x1c')]){delete _0xef0cf5[_0xabc9('0x1c')];}_0x43c52d[_0xabc9('0x1a')](_0x5f5448)[_0xabc9('0x1d')](_0xef0cf5);};}exports[_0xabc9('0x1e')]=function(_0x531df5,_0x3cfc4a){var _0x5a7d3e={},_0x3c3358={},_0x44cb09={'count':0x0,'rows':[]};var _0x2a61c9=_[_0xabc9('0x1f')](db[_0xabc9('0x20')]['rawAttributes'],function(_0x3ce8d6){return{'name':_0x3ce8d6[_0xabc9('0x21')],'type':_0x3ce8d6[_0xabc9('0x22')][_0xabc9('0x23')]};});_0x3c3358['model']=_[_0xabc9('0x1f')](_0x2a61c9,_0xabc9('0x1c'));_0x3c3358[_0xabc9('0x24')]=_[_0xabc9('0x25')](_0x531df5[_0xabc9('0x24')]);_0x3c3358[_0xabc9('0x26')]=_['intersection'](_0x3c3358[_0xabc9('0x27')],_0x3c3358[_0xabc9('0x24')]);_0x5a7d3e[_0xabc9('0x28')]=_[_0xabc9('0x29')](_0x3c3358[_0xabc9('0x27')],qs[_0xabc9('0x2a')](_0x531df5[_0xabc9('0x24')]['fields']));_0x5a7d3e[_0xabc9('0x28')]=_0x5a7d3e[_0xabc9('0x28')]['length']?_0x5a7d3e[_0xabc9('0x28')]:_0x3c3358['model'];if(!_0x531df5[_0xabc9('0x24')]['hasOwnProperty'](_0xabc9('0x2b'))){_0x5a7d3e[_0xabc9('0x16')]=qs[_0xabc9('0x16')](_0x531df5[_0xabc9('0x24')][_0xabc9('0x16')]);_0x5a7d3e[_0xabc9('0x15')]=qs['offset'](_0x531df5['query'][_0xabc9('0x15')]);}_0x5a7d3e[_0xabc9('0x2c')]=qs[_0xabc9('0x2d')](_0x531df5['query'][_0xabc9('0x2d')]);_0x5a7d3e[_0xabc9('0x2e')]=qs[_0xabc9('0x26')](_[_0xabc9('0x2f')](_0x531df5[_0xabc9('0x24')],_0x3c3358[_0xabc9('0x26')]),_0x2a61c9);if(_0x531df5[_0xabc9('0x24')][_0xabc9('0x30')]){_0x5a7d3e[_0xabc9('0x2e')]=_[_0xabc9('0x31')](_0x5a7d3e[_0xabc9('0x2e')],{'$or':_[_0xabc9('0x1f')](_0x2a61c9,function(_0x2bda94){if(_0x2bda94['type']!==_0xabc9('0x32')){var _0x574b88={};_0x574b88[_0x2bda94[_0xabc9('0x1c')]]={'$like':'%'+_0x531df5['query']['filter']+'%'};return _0x574b88;}})});}_0x5a7d3e=_[_0xabc9('0x31')]({},_0x5a7d3e,_0x531df5[_0xabc9('0x33')]);var _0xffc1bb={'where':_0x5a7d3e[_0xabc9('0x2e')]};return db[_0xabc9('0x20')][_0xabc9('0x14')](_0xffc1bb)[_0xabc9('0x8')](function(_0x36c0ba){_0x44cb09[_0xabc9('0x14')]=_0x36c0ba;if(_0x531df5[_0xabc9('0x24')][_0xabc9('0x34')]){_0x5a7d3e[_0xabc9('0x35')]=[{'all':!![]}];}return db[_0xabc9('0x20')][_0xabc9('0x36')](_0x5a7d3e);})['then'](function(_0x279abe){_0x44cb09[_0xabc9('0x37')]=_0x279abe;return _0x44cb09;})[_0xabc9('0x8')](respondWithFilteredResult(_0x3cfc4a,_0x5a7d3e))[_0xabc9('0x38')](handleError(_0x3cfc4a,null));};exports[_0xabc9('0x39')]=function(_0x2ad664,_0x2e0a8d){var _0x438510={'raw':!![],'where':{'id':_0x2ad664[_0xabc9('0x3a')]['id']}},_0xa33a29={};_0xa33a29[_0xabc9('0x27')]=_[_0xabc9('0x25')](db[_0xabc9('0x20')]['rawAttributes']);_0xa33a29['query']=_[_0xabc9('0x25')](_0x2ad664[_0xabc9('0x24')]);_0xa33a29[_0xabc9('0x26')]=_[_0xabc9('0x29')](_0xa33a29[_0xabc9('0x27')],_0xa33a29['query']);_0x438510[_0xabc9('0x28')]=_['intersection'](_0xa33a29['model'],qs[_0xabc9('0x2a')](_0x2ad664[_0xabc9('0x24')][_0xabc9('0x2a')]));_0x438510[_0xabc9('0x28')]=_0x438510[_0xabc9('0x28')][_0xabc9('0x3b')]?_0x438510['attributes']:_0xa33a29[_0xabc9('0x27')];if(_0x2ad664[_0xabc9('0x24')]['includeAll']){_0x438510[_0xabc9('0x35')]=[{'all':!![]}];}_0x438510=_[_0xabc9('0x31')]({},_0x438510,_0x2ad664['options']);return db[_0xabc9('0x20')][_0xabc9('0x3c')](_0x438510)[_0xabc9('0x8')](handleEntityNotFound(_0x2e0a8d,null))[_0xabc9('0x8')](respondWithResult(_0x2e0a8d,null))[_0xabc9('0x38')](handleError(_0x2e0a8d,null));};exports[_0xabc9('0x3d')]=function(_0x4761b9,_0x3c8618){var _0x376834;return db[_0xabc9('0x20')][_0xabc9('0x3d')](_0x4761b9[_0xabc9('0x3e')],{'raw':!![]})[_0xabc9('0x8')](function(_0x2f8711){_0x376834=_0x2f8711;return db[_0xabc9('0x20')]['findAll']({'where':{'type':_0x4761b9[_0xabc9('0x3e')]['type']},'raw':!![]});})[_0xabc9('0x8')](function(_0x33cdaa){if(_0x376834[_0xabc9('0x22')][_0xabc9('0x3f')]()==_0xabc9('0x40')){var _0x565044=fs[_0xabc9('0x41')](path[_0xabc9('0x42')](config[_0xabc9('0x43')],_0xabc9('0x44')),_0xabc9('0x45'));var _0xdffb15=ejs[_0xabc9('0x46')](_0x565044,{'networks':_0x33cdaa||[]});fs[_0xabc9('0x47')](_0xabc9('0x48'),_0xdffb15);return respondWithRpcPromise(_0xabc9('0x49'),_0xabc9('0x3d'),{'module':'res_stun_monitor.so'});}else if(_0x376834[_0xabc9('0x22')]['toUpperCase']()==_0xabc9('0x4a')){var _0x4dd750=fs[_0xabc9('0x41')](path[_0xabc9('0x42')](config[_0xabc9('0x43')],_0xabc9('0x4b')),_0xabc9('0x45'));var _0x3f1cbc=ejs[_0xabc9('0x46')](_0x4dd750,{'networks':_0x33cdaa||[]});fs[_0xabc9('0x47')](_0xabc9('0x4c'),_0x3f1cbc);return respondWithRpcPromise(_0xabc9('0x49'),_0xabc9('0x3d'),{'module':_0xabc9('0x4d')});}else{var _0x3f2d24=fs['readFileSync'](path[_0xabc9('0x42')](config['root'],'server/files/templates/network.ejs'),_0xabc9('0x45'));var _0x50b5c7=ejs[_0xabc9('0x46')](_0x3f2d24,{'networks':_0x33cdaa||[]});fs[_0xabc9('0x47')](util[_0xabc9('0x4e')](_0xabc9('0x4f'),_0x4761b9[_0xabc9('0x3e')][_0xabc9('0x22')][_0xabc9('0x50')]()),_0x50b5c7);return respondWithRpcPromise('Reload','create',{'module':_0xabc9('0x51')});}})[_0xabc9('0x8')](function(){return _0x376834;})['then'](respondWithResult(_0x3c8618,0xc9))[_0xabc9('0x38')](handleError(_0x3c8618,null));};exports[_0xabc9('0x19')]=function(_0x3a9c4d,_0x318338){var _0x2fa6ce;return db[_0xabc9('0x20')][_0xabc9('0x3c')]({'where':{'id':_0x3a9c4d[_0xabc9('0x3a')]['id']}})[_0xabc9('0x8')](handleEntityNotFound(_0x318338,null))['then'](saveUpdates(_0x3a9c4d['body'],null))[_0xabc9('0x8')](function(_0x288662){if(_0x288662){_0x2fa6ce=_0x288662;return db[_0xabc9('0x20')][_0xabc9('0x36')]({'where':{'type':_0x2fa6ce[_0xabc9('0x22')]},'raw':!![]});}return null;})[_0xabc9('0x8')](function(_0x2f3c0c){if(_0x2fa6ce['type'][_0xabc9('0x3f')]()==_0xabc9('0x40')){var _0x45dff5=fs[_0xabc9('0x41')](path[_0xabc9('0x42')](config[_0xabc9('0x43')],_0xabc9('0x44')),_0xabc9('0x45'));var _0x7c1b23=ejs[_0xabc9('0x46')](_0x45dff5,{'networks':_0x2f3c0c||[]});fs[_0xabc9('0x47')](_0xabc9('0x48'),_0x7c1b23);return respondWithRpcPromise(_0xabc9('0x49'),'update',{'module':'res_stun_monitor.so'});}else if(_0x2fa6ce[_0xabc9('0x22')][_0xabc9('0x3f')]()==_0xabc9('0x4a')){var _0x45b10e=fs['readFileSync'](path[_0xabc9('0x42')](config['root'],_0xabc9('0x4b')),_0xabc9('0x45'));var _0x33e18c=ejs[_0xabc9('0x46')](_0x45b10e,{'networks':_0x2f3c0c||[]});fs[_0xabc9('0x47')]('/etc/asterisk/turn_xcally.conf',_0x33e18c);return respondWithRpcPromise(_0xabc9('0x49'),_0xabc9('0x19'),{'module':'res_stun_monitor.so'});}else{var _0x18959b=fs[_0xabc9('0x41')](path[_0xabc9('0x42')](config['root'],'server/files/templates/network.ejs'),_0xabc9('0x45'));var _0x8f5071=ejs[_0xabc9('0x46')](_0x18959b,{'networks':_0x2f3c0c||[]});fs['writeFileSync'](util[_0xabc9('0x4e')](_0xabc9('0x4f'),_0x3a9c4d[_0xabc9('0x3e')][_0xabc9('0x22')]['toLowerCase']()),_0x8f5071);return respondWithRpcPromise(_0xabc9('0x49'),_0xabc9('0x19'),{'module':_0xabc9('0x51')});}})[_0xabc9('0x8')](function(_0x31372){if(_0x31372){return _0x2fa6ce;}return null;})[_0xabc9('0x8')](respondWithResult(_0x318338,null))['catch'](handleError(_0x318338,null));};exports[_0xabc9('0x52')]=function(_0x5b7039,_0x379e9a){var _0x5198ff;return db[_0xabc9('0x20')]['find']({'where':{'id':_0x5b7039['params']['id']}})[_0xabc9('0x8')](function(_0x242c2a){_0x5198ff=_0x242c2a;return _0x242c2a;})[_0xabc9('0x8')](handleEntityNotFound(_0x379e9a,null))['then'](removeEntity(_0x379e9a,null))[_0xabc9('0x8')](function(){if(_0x5198ff){return db[_0xabc9('0x20')]['findAll']({'where':{'type':_0x5198ff['type']},'raw':!![]});}})[_0xabc9('0x8')](function(_0x5f3e60){if(_0x5198ff[_0xabc9('0x22')][_0xabc9('0x3f')]()==_0xabc9('0x40')){var _0x1971d8=fs[_0xabc9('0x41')](path[_0xabc9('0x42')](config['root'],_0xabc9('0x44')),_0xabc9('0x45'));var _0x58fd38=ejs['render'](_0x1971d8,{'networks':_0x5f3e60||[]});fs[_0xabc9('0x47')](_0xabc9('0x48'),_0x58fd38);return respondWithRpcPromise(_0xabc9('0x49'),_0xabc9('0x52'),{'module':_0xabc9('0x4d')});}else if(_0x5198ff[_0xabc9('0x22')][_0xabc9('0x3f')]()==_0xabc9('0x4a')){var _0x6d8ef2=fs['readFileSync'](path[_0xabc9('0x42')](config['root'],'server/files/templates/turn_multiple.ejs'),_0xabc9('0x45'));var _0x547574=ejs[_0xabc9('0x46')](_0x6d8ef2,{'networks':_0x5f3e60||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0x547574);return respondWithRpcPromise(_0xabc9('0x49'),_0xabc9('0x52'),{'module':_0xabc9('0x4d')});}else{var _0x4ede5a=fs[_0xabc9('0x41')](path[_0xabc9('0x42')](config[_0xabc9('0x43')],_0xabc9('0x53')),_0xabc9('0x45'));var _0x5e746e=ejs[_0xabc9('0x46')](_0x4ede5a,{'networks':_0x5f3e60||[]});fs[_0xabc9('0x47')](util[_0xabc9('0x4e')]('/etc/asterisk/sip_xcally_%s.conf',_0x5198ff['type'][_0xabc9('0x50')]()),_0x5e746e);return respondWithRpcPromise(_0xabc9('0x49'),'destroy',{'module':_0xabc9('0x51')});}})['catch'](handleError(_0x379e9a,null));};