Built motion from commit e02f907f.|2.6.14
[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 _0x058c=['rows','catch','includeAll','create','body','toUpperCase','STUN','readFileSync','server/files/templates/stun_multiple.ejs','render','writeFileSync','Reload','res_stun_monitor.so','TURN','join','root','server/files/templates/turn_multiple.ejs','utf8','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','chan_sip.so','find','params','/etc/asterisk/stun_xcally.conf','toLowerCase','util','ejs','lodash','api','../../config/environment','../../mysqldb','client','http','request','Network,\x20%s,\x20%s','request\x20sent','Network,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','offset','undefined','limit','count','status','set','Content-Range','json','update','then','destroy','end','sendStatus','name','send','Network','rawAttributes','type','key','model','map','keys','intersection','query','attributes','fields','hasOwnProperty','sort','where','filters','filter','merge','VIRTUAL','options','include','findAll'];(function(_0x5a1fba,_0x54bd31){var _0x5bfa4a=function(_0x4a79c8){while(--_0x4a79c8){_0x5a1fba['push'](_0x5a1fba['shift']());}};_0x5bfa4a(++_0x54bd31);}(_0x058c,0xbb));var _0xc058=function(_0xd39a22,_0x956633){_0xd39a22=_0xd39a22-0x0;var _0x2d6fdb=_0x058c[_0xd39a22];return _0x2d6fdb;};'use strict';var util=require(_0xc058('0x0'));var path=require('path');var ejs=require(_0xc058('0x1'));var fs=require('fs');var _=require(_0xc058('0x2'));var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')(_0xc058('0x3'));var config=require(_0xc058('0x4'));var db=require(_0xc058('0x5'))['db'];var jayson=require('jayson/promise');var client=jayson[_0xc058('0x6')][_0xc058('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x5627c3,_0x460c32,_0x427c46,_0x40d0ba){return new Promise(function(_0x181408,_0xebaf87){var _0x4d31fe=_0x40d0ba||client;return _0x4d31fe[_0xc058('0x8')](_0x5627c3,_0x427c46)['then'](function(_0x27f49a){logger['info'](_0xc058('0x9'),_0x460c32,_0xc058('0xa'));logger['debug'](_0xc058('0xb'),_0x460c32,_0xc058('0xa'),JSON[_0xc058('0xc')](_0x27f49a));if(_0x27f49a[_0xc058('0xd')]){if(_0x27f49a[_0xc058('0xd')]['code']===0x1f4){logger[_0xc058('0xd')](_0xc058('0x9'),_0x460c32,_0x27f49a[_0xc058('0xd')][_0xc058('0xe')]);return _0xebaf87(_0x27f49a[_0xc058('0xd')][_0xc058('0xe')]);}logger['error'](_0xc058('0x9'),_0x460c32,_0x27f49a[_0xc058('0xd')]['message']);return _0x181408(_0x27f49a[_0xc058('0xd')][_0xc058('0xe')]);}else{logger[_0xc058('0xf')]('Network,\x20%s,\x20%s',_0x460c32,'request\x20sent');_0x181408(_0x27f49a[_0xc058('0x10')]['message']);}})['catch'](function(_0x56d3a9){logger[_0xc058('0xd')](_0xc058('0x9'),_0x460c32,_0x56d3a9);_0xebaf87(_0x56d3a9);});});}function respondWithResult(_0x2f4fef,_0x29ee4c){_0x29ee4c=_0x29ee4c||0xc8;return function(_0x5acfa4){if(_0x5acfa4){return _0x2f4fef['status'](_0x29ee4c)['json'](_0x5acfa4);}};}function respondWithFilteredResult(_0x299bd2,_0x5c744c){return function(_0x1fd7d4){if(_0x1fd7d4){var _0x3eca81=typeof _0x5c744c[_0xc058('0x11')]===_0xc058('0x12')&&typeof _0x5c744c[_0xc058('0x13')]===_0xc058('0x12');var _0x521d30=_0x1fd7d4[_0xc058('0x14')];var _0x5c22fa=_0x3eca81?0x0:_0x5c744c[_0xc058('0x11')];var _0xca64d1=_0x3eca81?_0x1fd7d4[_0xc058('0x14')]:_0x5c744c['offset']+_0x5c744c[_0xc058('0x13')];var _0x29f66c;if(_0xca64d1>=_0x521d30){_0xca64d1=_0x521d30;_0x29f66c=0xc8;}else{_0x29f66c=0xce;}_0x299bd2[_0xc058('0x15')](_0x29f66c);return _0x299bd2[_0xc058('0x16')](_0xc058('0x17'),_0x5c22fa+'-'+_0xca64d1+'/'+_0x521d30)[_0xc058('0x18')](_0x1fd7d4);}return null;};}function saveUpdates(_0x12dd9e){return function(_0x8122a6){if(_0x8122a6){return _0x8122a6[_0xc058('0x19')](_0x12dd9e)[_0xc058('0x1a')](function(_0x3d36a0){return _0x3d36a0;});}return null;};}function removeEntity(_0x56540a){return function(_0x51f4a5){if(_0x51f4a5){return _0x51f4a5[_0xc058('0x1b')]()[_0xc058('0x1a')](function(){_0x56540a[_0xc058('0x15')](0xcc)[_0xc058('0x1c')]();});}};}function handleEntityNotFound(_0x41dac0){return function(_0x44da6c){if(!_0x44da6c){_0x41dac0[_0xc058('0x1d')](0x194);}return _0x44da6c;};}function handleError(_0x22d6d2,_0x39b548){_0x39b548=_0x39b548||0x1f4;return function(_0x3af807){logger[_0xc058('0xd')](_0x3af807['stack']);if(_0x3af807[_0xc058('0x1e')]){delete _0x3af807['name'];}_0x22d6d2[_0xc058('0x15')](_0x39b548)[_0xc058('0x1f')](_0x3af807);};}exports['index']=function(_0x59300f,_0x493ece){var _0x3b305e={},_0x2353d0={},_0x48d13f={'count':0x0,'rows':[]};var _0x238f5f=_['map'](db[_0xc058('0x20')][_0xc058('0x21')],function(_0x2c9413){return{'name':_0x2c9413['fieldName'],'type':_0x2c9413[_0xc058('0x22')][_0xc058('0x23')]};});_0x2353d0[_0xc058('0x24')]=_[_0xc058('0x25')](_0x238f5f,_0xc058('0x1e'));_0x2353d0['query']=_[_0xc058('0x26')](_0x59300f['query']);_0x2353d0['filters']=_[_0xc058('0x27')](_0x2353d0[_0xc058('0x24')],_0x2353d0[_0xc058('0x28')]);_0x3b305e[_0xc058('0x29')]=_[_0xc058('0x27')](_0x2353d0[_0xc058('0x24')],qs[_0xc058('0x2a')](_0x59300f[_0xc058('0x28')][_0xc058('0x2a')]));_0x3b305e[_0xc058('0x29')]=_0x3b305e[_0xc058('0x29')]['length']?_0x3b305e[_0xc058('0x29')]:_0x2353d0[_0xc058('0x24')];if(!_0x59300f[_0xc058('0x28')][_0xc058('0x2b')]('nolimit')){_0x3b305e[_0xc058('0x13')]=qs[_0xc058('0x13')](_0x59300f['query'][_0xc058('0x13')]);_0x3b305e[_0xc058('0x11')]=qs[_0xc058('0x11')](_0x59300f[_0xc058('0x28')]['offset']);}_0x3b305e['order']=qs['sort'](_0x59300f['query'][_0xc058('0x2c')]);_0x3b305e[_0xc058('0x2d')]=qs[_0xc058('0x2e')](_['pick'](_0x59300f['query'],_0x2353d0[_0xc058('0x2e')]),_0x238f5f);if(_0x59300f[_0xc058('0x28')][_0xc058('0x2f')]){_0x3b305e[_0xc058('0x2d')]=_[_0xc058('0x30')](_0x3b305e['where'],{'$or':_[_0xc058('0x25')](_0x238f5f,function(_0x252db2){if(_0x252db2[_0xc058('0x22')]!==_0xc058('0x31')){var _0x3d38df={};_0x3d38df[_0x252db2[_0xc058('0x1e')]]={'$like':'%'+_0x59300f['query']['filter']+'%'};return _0x3d38df;}})});}_0x3b305e=_[_0xc058('0x30')]({},_0x3b305e,_0x59300f[_0xc058('0x32')]);var _0x473073={'where':_0x3b305e['where']};return db[_0xc058('0x20')][_0xc058('0x14')](_0x473073)[_0xc058('0x1a')](function(_0x79a3a0){_0x48d13f[_0xc058('0x14')]=_0x79a3a0;if(_0x59300f[_0xc058('0x28')]['includeAll']){_0x3b305e[_0xc058('0x33')]=[{'all':!![]}];}return db[_0xc058('0x20')][_0xc058('0x34')](_0x3b305e);})[_0xc058('0x1a')](function(_0x3e7be5){_0x48d13f[_0xc058('0x35')]=_0x3e7be5;return _0x48d13f;})['then'](respondWithFilteredResult(_0x493ece,_0x3b305e))[_0xc058('0x36')](handleError(_0x493ece,null));};exports['show']=function(_0x286a61,_0xfbfa88){var _0x3477bd={'raw':!![],'where':{'id':_0x286a61['params']['id']}},_0x18033e={};_0x18033e[_0xc058('0x24')]=_[_0xc058('0x26')](db[_0xc058('0x20')][_0xc058('0x21')]);_0x18033e['query']=_['keys'](_0x286a61[_0xc058('0x28')]);_0x18033e[_0xc058('0x2e')]=_[_0xc058('0x27')](_0x18033e[_0xc058('0x24')],_0x18033e['query']);_0x3477bd[_0xc058('0x29')]=_[_0xc058('0x27')](_0x18033e[_0xc058('0x24')],qs[_0xc058('0x2a')](_0x286a61[_0xc058('0x28')][_0xc058('0x2a')]));_0x3477bd[_0xc058('0x29')]=_0x3477bd[_0xc058('0x29')]['length']?_0x3477bd[_0xc058('0x29')]:_0x18033e['model'];if(_0x286a61[_0xc058('0x28')][_0xc058('0x37')]){_0x3477bd[_0xc058('0x33')]=[{'all':!![]}];}_0x3477bd=_[_0xc058('0x30')]({},_0x3477bd,_0x286a61[_0xc058('0x32')]);return db[_0xc058('0x20')]['find'](_0x3477bd)[_0xc058('0x1a')](handleEntityNotFound(_0xfbfa88,null))['then'](respondWithResult(_0xfbfa88,null))[_0xc058('0x36')](handleError(_0xfbfa88,null));};exports[_0xc058('0x38')]=function(_0x13ae39,_0x168b67){var _0x4bc762;return db[_0xc058('0x20')][_0xc058('0x38')](_0x13ae39[_0xc058('0x39')],{'raw':!![]})[_0xc058('0x1a')](function(_0x123423){_0x4bc762=_0x123423;return db[_0xc058('0x20')]['findAll']({'where':{'type':_0x13ae39[_0xc058('0x39')][_0xc058('0x22')]},'raw':!![]});})[_0xc058('0x1a')](function(_0x1305b2){if(_0x4bc762[_0xc058('0x22')][_0xc058('0x3a')]()==_0xc058('0x3b')){var _0x1b3bbc=fs[_0xc058('0x3c')](path['join'](config['root'],_0xc058('0x3d')),'utf8');var _0x55842c=ejs[_0xc058('0x3e')](_0x1b3bbc,{'networks':_0x1305b2||[]});fs[_0xc058('0x3f')]('/etc/asterisk/stun_xcally.conf',_0x55842c);return respondWithRpcPromise(_0xc058('0x40'),'create',{'module':_0xc058('0x41')});}else if(_0x4bc762[_0xc058('0x22')][_0xc058('0x3a')]()==_0xc058('0x42')){var _0x3e08a6=fs[_0xc058('0x3c')](path[_0xc058('0x43')](config[_0xc058('0x44')],_0xc058('0x45')),_0xc058('0x46'));var _0x2715ab=ejs[_0xc058('0x3e')](_0x3e08a6,{'networks':_0x1305b2||[]});fs[_0xc058('0x3f')](_0xc058('0x47'),_0x2715ab);return respondWithRpcPromise(_0xc058('0x40'),_0xc058('0x38'),{'module':_0xc058('0x41')});}else{var _0x4a0ea9=fs[_0xc058('0x3c')](path[_0xc058('0x43')](config['root'],_0xc058('0x48')),_0xc058('0x46'));var _0x1349d2=ejs[_0xc058('0x3e')](_0x4a0ea9,{'networks':_0x1305b2||[]});fs[_0xc058('0x3f')](util[_0xc058('0x49')](_0xc058('0x4a'),_0x13ae39[_0xc058('0x39')][_0xc058('0x22')]['toLowerCase']()),_0x1349d2);return respondWithRpcPromise(_0xc058('0x40'),_0xc058('0x38'),{'module':_0xc058('0x4b')});}})[_0xc058('0x1a')](function(){return _0x4bc762;})[_0xc058('0x1a')](respondWithResult(_0x168b67,0xc9))[_0xc058('0x36')](handleError(_0x168b67,null));};exports[_0xc058('0x19')]=function(_0x223862,_0x3ff6bb){var _0x4c0791;return db[_0xc058('0x20')][_0xc058('0x4c')]({'where':{'id':_0x223862[_0xc058('0x4d')]['id']}})[_0xc058('0x1a')](handleEntityNotFound(_0x3ff6bb,null))[_0xc058('0x1a')](saveUpdates(_0x223862[_0xc058('0x39')],null))[_0xc058('0x1a')](function(_0x9778b5){if(_0x9778b5){_0x4c0791=_0x9778b5;return db[_0xc058('0x20')][_0xc058('0x34')]({'where':{'type':_0x4c0791[_0xc058('0x22')]},'raw':!![]});}return null;})[_0xc058('0x1a')](function(_0x525ae4){if(_0x4c0791['type'][_0xc058('0x3a')]()==_0xc058('0x3b')){var _0x54d1e4=fs['readFileSync'](path[_0xc058('0x43')](config[_0xc058('0x44')],'server/files/templates/stun_multiple.ejs'),_0xc058('0x46'));var _0x5c2d9f=ejs['render'](_0x54d1e4,{'networks':_0x525ae4||[]});fs[_0xc058('0x3f')](_0xc058('0x4e'),_0x5c2d9f);return respondWithRpcPromise(_0xc058('0x40'),_0xc058('0x19'),{'module':_0xc058('0x41')});}else if(_0x4c0791[_0xc058('0x22')]['toUpperCase']()==_0xc058('0x42')){var _0x558fd8=fs[_0xc058('0x3c')](path[_0xc058('0x43')](config[_0xc058('0x44')],_0xc058('0x45')),_0xc058('0x46'));var _0x3ba378=ejs[_0xc058('0x3e')](_0x558fd8,{'networks':_0x525ae4||[]});fs[_0xc058('0x3f')]('/etc/asterisk/turn_xcally.conf',_0x3ba378);return respondWithRpcPromise(_0xc058('0x40'),_0xc058('0x19'),{'module':'res_stun_monitor.so'});}else{var _0x3e18b9=fs[_0xc058('0x3c')](path['join'](config['root'],_0xc058('0x48')),_0xc058('0x46'));var _0x487c01=ejs[_0xc058('0x3e')](_0x3e18b9,{'networks':_0x525ae4||[]});fs[_0xc058('0x3f')](util[_0xc058('0x49')](_0xc058('0x4a'),_0x223862[_0xc058('0x39')][_0xc058('0x22')][_0xc058('0x4f')]()),_0x487c01);return respondWithRpcPromise('Reload',_0xc058('0x19'),{'module':_0xc058('0x4b')});}})[_0xc058('0x1a')](function(_0x8d6ed5){if(_0x8d6ed5){return _0x4c0791;}return null;})['then'](respondWithResult(_0x3ff6bb,null))[_0xc058('0x36')](handleError(_0x3ff6bb,null));};exports[_0xc058('0x1b')]=function(_0x126a0f,_0x970fa5){var _0x14ca75;return db['Network'][_0xc058('0x4c')]({'where':{'id':_0x126a0f[_0xc058('0x4d')]['id']}})['then'](function(_0x864a93){_0x14ca75=_0x864a93;return _0x864a93;})[_0xc058('0x1a')](handleEntityNotFound(_0x970fa5,null))[_0xc058('0x1a')](removeEntity(_0x970fa5,null))[_0xc058('0x1a')](function(){if(_0x14ca75){return db[_0xc058('0x20')][_0xc058('0x34')]({'where':{'type':_0x14ca75[_0xc058('0x22')]},'raw':!![]});}})[_0xc058('0x1a')](function(_0x2acf3e){if(_0x14ca75[_0xc058('0x22')][_0xc058('0x3a')]()==_0xc058('0x3b')){var _0x480c89=fs[_0xc058('0x3c')](path['join'](config[_0xc058('0x44')],_0xc058('0x3d')),_0xc058('0x46'));var _0x2b8505=ejs[_0xc058('0x3e')](_0x480c89,{'networks':_0x2acf3e||[]});fs[_0xc058('0x3f')](_0xc058('0x4e'),_0x2b8505);return respondWithRpcPromise(_0xc058('0x40'),_0xc058('0x1b'),{'module':_0xc058('0x41')});}else if(_0x14ca75['type'][_0xc058('0x3a')]()=='TURN'){var _0x50284d=fs[_0xc058('0x3c')](path['join'](config[_0xc058('0x44')],_0xc058('0x45')),_0xc058('0x46'));var _0x1b0284=ejs[_0xc058('0x3e')](_0x50284d,{'networks':_0x2acf3e||[]});fs[_0xc058('0x3f')](_0xc058('0x47'),_0x1b0284);return respondWithRpcPromise(_0xc058('0x40'),'destroy',{'module':_0xc058('0x41')});}else{var _0x5c9c37=fs[_0xc058('0x3c')](path[_0xc058('0x43')](config[_0xc058('0x44')],_0xc058('0x48')),_0xc058('0x46'));var _0x18a692=ejs['render'](_0x5c9c37,{'networks':_0x2acf3e||[]});fs[_0xc058('0x3f')](util['format']('/etc/asterisk/sip_xcally_%s.conf',_0x14ca75[_0xc058('0x22')][_0xc058('0x4f')]()),_0x18a692);return respondWithRpcPromise(_0xc058('0x40'),_0xc058('0x1b'),{'module':_0xc058('0x4b')});}})[_0xc058('0x36')](handleError(_0x970fa5,null));};