96fa1ecf93b27d20ec940a70d29afd4134d3822f
[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 _0xc5e4=['chan_sip.so','update','server/files/templates/stun_multiple.ejs','utf8','/etc/asterisk/turn_xcally.conf','server/files/templates/turn_multiple.ejs','util','path','ejs','lodash','api','../../config/environment','../../mysqldb','jayson/promise','http','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','status','json','undefined','count','offset','limit','set','Content-Range','then','destroy','end','sendStatus','name','index','model','map','query','keys','filters','intersection','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','Network','findAll','show','params','rawAttributes','fields','find','body','toUpperCase','STUN','readFileSync','join','root','render','writeFileSync','/etc/asterisk/stun_xcally.conf','create','res_stun_monitor.so','TURN','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','Reload'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xc5e4,0x156));var _0x4c5e=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xc5e4[_0x122ef9];return _0x42fba0;};'use strict';var util=require(_0x4c5e('0x0'));var path=require(_0x4c5e('0x1'));var ejs=require(_0x4c5e('0x2'));var fs=require('fs');var _=require(_0x4c5e('0x3'));var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')(_0x4c5e('0x4'));var config=require(_0x4c5e('0x5'));var db=require(_0x4c5e('0x6'))['db'];var jayson=require(_0x4c5e('0x7'));var client=jayson['client'][_0x4c5e('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x433bb1,_0x2cc5e5,_0x289e48,_0x1103a9){return new Promise(function(_0x76dc84,_0x2e0cd2){var _0x894718=_0x1103a9||client;return _0x894718['request'](_0x433bb1,_0x289e48)['then'](function(_0xd055f1){logger[_0x4c5e('0x9')](_0x4c5e('0xa'),_0x2cc5e5,_0x4c5e('0xb'));logger[_0x4c5e('0xc')](_0x4c5e('0xd'),_0x2cc5e5,_0x4c5e('0xb'),JSON[_0x4c5e('0xe')](_0xd055f1));if(_0xd055f1[_0x4c5e('0xf')]){if(_0xd055f1['error'][_0x4c5e('0x10')]===0x1f4){logger[_0x4c5e('0xf')](_0x4c5e('0xa'),_0x2cc5e5,_0xd055f1['error'][_0x4c5e('0x11')]);return _0x2e0cd2(_0xd055f1[_0x4c5e('0xf')][_0x4c5e('0x11')]);}logger[_0x4c5e('0xf')](_0x4c5e('0xa'),_0x2cc5e5,_0xd055f1[_0x4c5e('0xf')][_0x4c5e('0x11')]);return _0x76dc84(_0xd055f1[_0x4c5e('0xf')][_0x4c5e('0x11')]);}else{logger[_0x4c5e('0x9')](_0x4c5e('0xa'),_0x2cc5e5,_0x4c5e('0xb'));_0x76dc84(_0xd055f1[_0x4c5e('0x12')]['message']);}})[_0x4c5e('0x13')](function(_0x5be6d8){logger[_0x4c5e('0xf')](_0x4c5e('0xa'),_0x2cc5e5,_0x5be6d8);_0x2e0cd2(_0x5be6d8);});});}function respondWithResult(_0x5c8c42,_0x487897){_0x487897=_0x487897||0xc8;return function(_0x2808fc){if(_0x2808fc){return _0x5c8c42[_0x4c5e('0x14')](_0x487897)[_0x4c5e('0x15')](_0x2808fc);}};}function respondWithFilteredResult(_0x49a6f0,_0x2395a0){return function(_0x285892){if(_0x285892){var _0x251c19=typeof _0x2395a0['offset']===_0x4c5e('0x16')&&typeof _0x2395a0['limit']===_0x4c5e('0x16');var _0x159222=_0x285892[_0x4c5e('0x17')];var _0x4b5c57=_0x251c19?0x0:_0x2395a0[_0x4c5e('0x18')];var _0xd99332=_0x251c19?_0x285892[_0x4c5e('0x17')]:_0x2395a0[_0x4c5e('0x18')]+_0x2395a0[_0x4c5e('0x19')];var _0x1ba50c;if(_0xd99332>=_0x159222){_0xd99332=_0x159222;_0x1ba50c=0xc8;}else{_0x1ba50c=0xce;}_0x49a6f0[_0x4c5e('0x14')](_0x1ba50c);return _0x49a6f0[_0x4c5e('0x1a')](_0x4c5e('0x1b'),_0x4b5c57+'-'+_0xd99332+'/'+_0x159222)[_0x4c5e('0x15')](_0x285892);}return null;};}function saveUpdates(_0x72fd93){return function(_0x1039b3){if(_0x1039b3){return _0x1039b3['update'](_0x72fd93)[_0x4c5e('0x1c')](function(_0x38e3a5){return _0x38e3a5;});}return null;};}function removeEntity(_0xe5af35){return function(_0xd983ad){if(_0xd983ad){return _0xd983ad[_0x4c5e('0x1d')]()[_0x4c5e('0x1c')](function(){_0xe5af35[_0x4c5e('0x14')](0xcc)[_0x4c5e('0x1e')]();});}};}function handleEntityNotFound(_0x47d5e1){return function(_0x23e9e9){if(!_0x23e9e9){_0x47d5e1[_0x4c5e('0x1f')](0x194);}return _0x23e9e9;};}function handleError(_0x5a6d7f,_0x441775){_0x441775=_0x441775||0x1f4;return function(_0x5673b4){logger[_0x4c5e('0xf')](_0x5673b4['stack']);if(_0x5673b4[_0x4c5e('0x20')]){delete _0x5673b4[_0x4c5e('0x20')];}_0x5a6d7f[_0x4c5e('0x14')](_0x441775)['send'](_0x5673b4);};}exports[_0x4c5e('0x21')]=function(_0xb2a8bb,_0x24cd3a){var _0xb15ce2={},_0x11b148={},_0x5309ab={'count':0x0,'rows':[]};var _0x9ed927=_['map'](db['Network']['rawAttributes'],function(_0x1c7681){return{'name':_0x1c7681['fieldName'],'type':_0x1c7681['type']['key']};});_0x11b148[_0x4c5e('0x22')]=_[_0x4c5e('0x23')](_0x9ed927,_0x4c5e('0x20'));_0x11b148[_0x4c5e('0x24')]=_[_0x4c5e('0x25')](_0xb2a8bb[_0x4c5e('0x24')]);_0x11b148[_0x4c5e('0x26')]=_[_0x4c5e('0x27')](_0x11b148[_0x4c5e('0x22')],_0x11b148[_0x4c5e('0x24')]);_0xb15ce2[_0x4c5e('0x28')]=_['intersection'](_0x11b148[_0x4c5e('0x22')],qs['fields'](_0xb2a8bb[_0x4c5e('0x24')]['fields']));_0xb15ce2[_0x4c5e('0x28')]=_0xb15ce2[_0x4c5e('0x28')][_0x4c5e('0x29')]?_0xb15ce2['attributes']:_0x11b148['model'];if(!_0xb2a8bb['query'][_0x4c5e('0x2a')]('nolimit')){_0xb15ce2[_0x4c5e('0x19')]=qs[_0x4c5e('0x19')](_0xb2a8bb[_0x4c5e('0x24')]['limit']);_0xb15ce2[_0x4c5e('0x18')]=qs[_0x4c5e('0x18')](_0xb2a8bb[_0x4c5e('0x24')][_0x4c5e('0x18')]);}_0xb15ce2[_0x4c5e('0x2b')]=qs[_0x4c5e('0x2c')](_0xb2a8bb[_0x4c5e('0x24')][_0x4c5e('0x2c')]);_0xb15ce2[_0x4c5e('0x2d')]=qs[_0x4c5e('0x26')](_[_0x4c5e('0x2e')](_0xb2a8bb[_0x4c5e('0x24')],_0x11b148[_0x4c5e('0x26')]),_0x9ed927);if(_0xb2a8bb[_0x4c5e('0x24')][_0x4c5e('0x2f')]){_0xb15ce2[_0x4c5e('0x2d')]=_[_0x4c5e('0x30')](_0xb15ce2[_0x4c5e('0x2d')],{'$or':_['map'](_0x9ed927,function(_0x49b867){if(_0x49b867[_0x4c5e('0x31')]!==_0x4c5e('0x32')){var _0x4b8c0a={};_0x4b8c0a[_0x49b867[_0x4c5e('0x20')]]={'$like':'%'+_0xb2a8bb['query'][_0x4c5e('0x2f')]+'%'};return _0x4b8c0a;}})});}_0xb15ce2=_[_0x4c5e('0x30')]({},_0xb15ce2,_0xb2a8bb[_0x4c5e('0x33')]);var _0x502a10={'where':_0xb15ce2[_0x4c5e('0x2d')]};return db['Network'][_0x4c5e('0x17')](_0x502a10)['then'](function(_0x1210f8){_0x5309ab[_0x4c5e('0x17')]=_0x1210f8;if(_0xb2a8bb[_0x4c5e('0x24')][_0x4c5e('0x34')]){_0xb15ce2[_0x4c5e('0x35')]=[{'all':!![]}];}return db[_0x4c5e('0x36')][_0x4c5e('0x37')](_0xb15ce2);})[_0x4c5e('0x1c')](function(_0x5a03bd){_0x5309ab['rows']=_0x5a03bd;return _0x5309ab;})[_0x4c5e('0x1c')](respondWithFilteredResult(_0x24cd3a,_0xb15ce2))[_0x4c5e('0x13')](handleError(_0x24cd3a,null));};exports[_0x4c5e('0x38')]=function(_0x5168ff,_0x23449d){var _0x5c2b1b={'raw':!![],'where':{'id':_0x5168ff[_0x4c5e('0x39')]['id']}},_0x29060a={};_0x29060a[_0x4c5e('0x22')]=_[_0x4c5e('0x25')](db[_0x4c5e('0x36')][_0x4c5e('0x3a')]);_0x29060a[_0x4c5e('0x24')]=_[_0x4c5e('0x25')](_0x5168ff['query']);_0x29060a[_0x4c5e('0x26')]=_[_0x4c5e('0x27')](_0x29060a[_0x4c5e('0x22')],_0x29060a[_0x4c5e('0x24')]);_0x5c2b1b[_0x4c5e('0x28')]=_[_0x4c5e('0x27')](_0x29060a['model'],qs[_0x4c5e('0x3b')](_0x5168ff[_0x4c5e('0x24')][_0x4c5e('0x3b')]));_0x5c2b1b['attributes']=_0x5c2b1b['attributes']['length']?_0x5c2b1b[_0x4c5e('0x28')]:_0x29060a[_0x4c5e('0x22')];if(_0x5168ff[_0x4c5e('0x24')][_0x4c5e('0x34')]){_0x5c2b1b[_0x4c5e('0x35')]=[{'all':!![]}];}_0x5c2b1b=_['merge']({},_0x5c2b1b,_0x5168ff['options']);return db[_0x4c5e('0x36')][_0x4c5e('0x3c')](_0x5c2b1b)['then'](handleEntityNotFound(_0x23449d,null))[_0x4c5e('0x1c')](respondWithResult(_0x23449d,null))['catch'](handleError(_0x23449d,null));};exports['create']=function(_0x5013ee,_0x10675d){var _0x524306;return db[_0x4c5e('0x36')]['create'](_0x5013ee['body'],{'raw':!![]})[_0x4c5e('0x1c')](function(_0x297d57){_0x524306=_0x297d57;return db['Network']['findAll']({'where':{'type':_0x5013ee[_0x4c5e('0x3d')]['type']},'raw':!![]});})[_0x4c5e('0x1c')](function(_0x491c2a){if(_0x524306[_0x4c5e('0x31')][_0x4c5e('0x3e')]()==_0x4c5e('0x3f')){var _0x424750=fs[_0x4c5e('0x40')](path[_0x4c5e('0x41')](config[_0x4c5e('0x42')],'server/files/templates/stun_multiple.ejs'),'utf8');var _0x3dd7c1=ejs[_0x4c5e('0x43')](_0x424750,{'networks':_0x491c2a||[]});fs[_0x4c5e('0x44')](_0x4c5e('0x45'),_0x3dd7c1);return respondWithRpcPromise('Reload',_0x4c5e('0x46'),{'module':_0x4c5e('0x47')});}else if(_0x524306['type'][_0x4c5e('0x3e')]()==_0x4c5e('0x48')){var _0x4fdf77=fs[_0x4c5e('0x40')](path[_0x4c5e('0x41')](config[_0x4c5e('0x42')],'server/files/templates/turn_multiple.ejs'),'utf8');var _0x21a471=ejs[_0x4c5e('0x43')](_0x4fdf77,{'networks':_0x491c2a||[]});fs[_0x4c5e('0x44')]('/etc/asterisk/turn_xcally.conf',_0x21a471);return respondWithRpcPromise('Reload',_0x4c5e('0x46'),{'module':_0x4c5e('0x47')});}else{var _0x56eb10=fs[_0x4c5e('0x40')](path[_0x4c5e('0x41')](config['root'],_0x4c5e('0x49')),'utf8');var _0x5bcc71=ejs[_0x4c5e('0x43')](_0x56eb10,{'networks':_0x491c2a||[]});fs[_0x4c5e('0x44')](util[_0x4c5e('0x4a')](_0x4c5e('0x4b'),_0x5013ee[_0x4c5e('0x3d')]['type'][_0x4c5e('0x4c')]()),_0x5bcc71);return respondWithRpcPromise(_0x4c5e('0x4d'),_0x4c5e('0x46'),{'module':_0x4c5e('0x4e')});}})[_0x4c5e('0x1c')](function(){return _0x524306;})[_0x4c5e('0x1c')](respondWithResult(_0x10675d,0xc9))[_0x4c5e('0x13')](handleError(_0x10675d,null));};exports[_0x4c5e('0x4f')]=function(_0x8c234e,_0x49630b){var _0x3ee231;return db[_0x4c5e('0x36')][_0x4c5e('0x3c')]({'where':{'id':_0x8c234e['params']['id']}})[_0x4c5e('0x1c')](handleEntityNotFound(_0x49630b,null))[_0x4c5e('0x1c')](saveUpdates(_0x8c234e[_0x4c5e('0x3d')],null))[_0x4c5e('0x1c')](function(_0x23d27f){if(_0x23d27f){_0x3ee231=_0x23d27f;return db[_0x4c5e('0x36')][_0x4c5e('0x37')]({'where':{'type':_0x3ee231[_0x4c5e('0x31')]},'raw':!![]});}return null;})[_0x4c5e('0x1c')](function(_0x3e575a){if(_0x3ee231[_0x4c5e('0x31')]['toUpperCase']()==_0x4c5e('0x3f')){var _0x46020b=fs[_0x4c5e('0x40')](path[_0x4c5e('0x41')](config[_0x4c5e('0x42')],_0x4c5e('0x50')),_0x4c5e('0x51'));var _0x4ff05f=ejs[_0x4c5e('0x43')](_0x46020b,{'networks':_0x3e575a||[]});fs[_0x4c5e('0x44')](_0x4c5e('0x45'),_0x4ff05f);return respondWithRpcPromise(_0x4c5e('0x4d'),_0x4c5e('0x4f'),{'module':_0x4c5e('0x47')});}else if(_0x3ee231['type'][_0x4c5e('0x3e')]()==_0x4c5e('0x48')){var _0x314c27=fs[_0x4c5e('0x40')](path['join'](config[_0x4c5e('0x42')],'server/files/templates/turn_multiple.ejs'),'utf8');var _0x4953a8=ejs[_0x4c5e('0x43')](_0x314c27,{'networks':_0x3e575a||[]});fs['writeFileSync'](_0x4c5e('0x52'),_0x4953a8);return respondWithRpcPromise(_0x4c5e('0x4d'),'update',{'module':_0x4c5e('0x47')});}else{var _0x16740e=fs['readFileSync'](path[_0x4c5e('0x41')](config['root'],'server/files/templates/network.ejs'),_0x4c5e('0x51'));var _0x3597c2=ejs[_0x4c5e('0x43')](_0x16740e,{'networks':_0x3e575a||[]});fs['writeFileSync'](util[_0x4c5e('0x4a')](_0x4c5e('0x4b'),_0x8c234e[_0x4c5e('0x3d')]['type']['toLowerCase']()),_0x3597c2);return respondWithRpcPromise('Reload','update',{'module':'chan_sip.so'});}})[_0x4c5e('0x1c')](function(_0x1c59cc){if(_0x1c59cc){return _0x3ee231;}return null;})['then'](respondWithResult(_0x49630b,null))['catch'](handleError(_0x49630b,null));};exports[_0x4c5e('0x1d')]=function(_0x17e8d5,_0x21b9ab){var _0x47ef1d;return db[_0x4c5e('0x36')][_0x4c5e('0x3c')]({'where':{'id':_0x17e8d5['params']['id']}})[_0x4c5e('0x1c')](function(_0x10ccae){_0x47ef1d=_0x10ccae;return _0x10ccae;})[_0x4c5e('0x1c')](handleEntityNotFound(_0x21b9ab,null))[_0x4c5e('0x1c')](removeEntity(_0x21b9ab,null))[_0x4c5e('0x1c')](function(){if(_0x47ef1d){return db[_0x4c5e('0x36')][_0x4c5e('0x37')]({'where':{'type':_0x47ef1d['type']},'raw':!![]});}})[_0x4c5e('0x1c')](function(_0x357b02){if(_0x47ef1d['type'][_0x4c5e('0x3e')]()==_0x4c5e('0x3f')){var _0x731f4a=fs[_0x4c5e('0x40')](path['join'](config[_0x4c5e('0x42')],_0x4c5e('0x50')),_0x4c5e('0x51'));var _0x499530=ejs['render'](_0x731f4a,{'networks':_0x357b02||[]});fs[_0x4c5e('0x44')](_0x4c5e('0x45'),_0x499530);return respondWithRpcPromise('Reload',_0x4c5e('0x1d'),{'module':_0x4c5e('0x47')});}else if(_0x47ef1d[_0x4c5e('0x31')][_0x4c5e('0x3e')]()=='TURN'){var _0x355835=fs['readFileSync'](path['join'](config['root'],_0x4c5e('0x53')),_0x4c5e('0x51'));var _0x2b7317=ejs[_0x4c5e('0x43')](_0x355835,{'networks':_0x357b02||[]});fs[_0x4c5e('0x44')](_0x4c5e('0x52'),_0x2b7317);return respondWithRpcPromise('Reload',_0x4c5e('0x1d'),{'module':_0x4c5e('0x47')});}else{var _0x206878=fs[_0x4c5e('0x40')](path[_0x4c5e('0x41')](config['root'],'server/files/templates/network.ejs'),'utf8');var _0x28f7e3=ejs[_0x4c5e('0x43')](_0x206878,{'networks':_0x357b02||[]});fs[_0x4c5e('0x44')](util[_0x4c5e('0x4a')](_0x4c5e('0x4b'),_0x47ef1d[_0x4c5e('0x31')][_0x4c5e('0x4c')]()),_0x28f7e3);return respondWithRpcPromise(_0x4c5e('0x4d'),_0x4c5e('0x1d'),{'module':_0x4c5e('0x4e')});}})[_0x4c5e('0x13')](handleError(_0x21b9ab,null));};