fa8ebe432715baf596da20641ab621d4c3480970
[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 _0x9978=['name','options','includeAll','findAll','rows','show','params','include','find','create','body','type','toUpperCase','readFileSync','join','root','server/files/templates/stun_multiple.ejs','utf8','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','server/files/templates/turn_multiple.ejs','res_stun_monitor.so','server/files/templates/network.ejs','/etc/asterisk/sip_xcally_%s.conf','chan_sip.so','STUN','TURN','format','toLowerCase','path','lodash','../../components/parsers/qs','../../config/logger','api','../../mysqldb','jayson/promise','request','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','status','offset','undefined','limit','count','set','Content-Range','update','destroy','then','end','sendStatus','stack','index','Network','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','merge','VIRTUAL'];(function(_0x533be6,_0x1fbcbd){var _0x4fd700=function(_0x31c6b2){while(--_0x31c6b2){_0x533be6['push'](_0x533be6['shift']());}};_0x4fd700(++_0x1fbcbd);}(_0x9978,0x11b));var _0x8997=function(_0x1e3c02,_0x5c07a2){_0x1e3c02=_0x1e3c02-0x0;var _0x4d26d7=_0x9978[_0x1e3c02];return _0x4d26d7;};'use strict';var util=require('util');var path=require(_0x8997('0x0'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x8997('0x1'));var qs=require(_0x8997('0x2'));var logger=require(_0x8997('0x3'))(_0x8997('0x4'));var config=require('../../config/environment');var db=require(_0x8997('0x5'))['db'];var jayson=require(_0x8997('0x6'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x421a65,_0x4c4222,_0xdb9df4,_0xff47fe){return new Promise(function(_0x3653a0,_0x52ab3e){var _0x5d2dc8=_0xff47fe||client;return _0x5d2dc8[_0x8997('0x7')](_0x421a65,_0xdb9df4)['then'](function(_0x4254e7){logger[_0x8997('0x8')](_0x8997('0x9'),_0x4c4222,_0x8997('0xa'));logger[_0x8997('0xb')](_0x8997('0xc'),_0x4c4222,_0x8997('0xa'),JSON[_0x8997('0xd')](_0x4254e7));if(_0x4254e7[_0x8997('0xe')]){if(_0x4254e7[_0x8997('0xe')][_0x8997('0xf')]===0x1f4){logger[_0x8997('0xe')]('Network,\x20%s,\x20%s',_0x4c4222,_0x4254e7[_0x8997('0xe')]['message']);return _0x52ab3e(_0x4254e7[_0x8997('0xe')][_0x8997('0x10')]);}logger[_0x8997('0xe')](_0x8997('0x9'),_0x4c4222,_0x4254e7['error'][_0x8997('0x10')]);return _0x3653a0(_0x4254e7['error']['message']);}else{logger['info'](_0x8997('0x9'),_0x4c4222,_0x8997('0xa'));_0x3653a0(_0x4254e7[_0x8997('0x11')][_0x8997('0x10')]);}})[_0x8997('0x12')](function(_0x3b2774){logger[_0x8997('0xe')](_0x8997('0x9'),_0x4c4222,_0x3b2774);_0x52ab3e(_0x3b2774);});});}function respondWithResult(_0x34867d,_0x4a2b75){_0x4a2b75=_0x4a2b75||0xc8;return function(_0x4ed91c){if(_0x4ed91c){return _0x34867d[_0x8997('0x13')](_0x4a2b75)['json'](_0x4ed91c);}};}function respondWithFilteredResult(_0x48a761,_0x414502){return function(_0xb7072){if(_0xb7072){var _0x1758a0=typeof _0x414502[_0x8997('0x14')]===_0x8997('0x15')&&typeof _0x414502[_0x8997('0x16')]===_0x8997('0x15');var _0x38692d=_0xb7072[_0x8997('0x17')];var _0x333759=_0x1758a0?0x0:_0x414502[_0x8997('0x14')];var _0xf4939e=_0x1758a0?_0xb7072['count']:_0x414502['offset']+_0x414502['limit'];var _0x348753;if(_0xf4939e>=_0x38692d){_0xf4939e=_0x38692d;_0x348753=0xc8;}else{_0x348753=0xce;}_0x48a761[_0x8997('0x13')](_0x348753);return _0x48a761[_0x8997('0x18')](_0x8997('0x19'),_0x333759+'-'+_0xf4939e+'/'+_0x38692d)['json'](_0xb7072);}return null;};}function saveUpdates(_0x5417de){return function(_0x5cd6fb){if(_0x5cd6fb){return _0x5cd6fb[_0x8997('0x1a')](_0x5417de)['then'](function(_0x8929e1){return _0x8929e1;});}return null;};}function removeEntity(_0x66e568){return function(_0x8ea38b){if(_0x8ea38b){return _0x8ea38b[_0x8997('0x1b')]()[_0x8997('0x1c')](function(){_0x66e568['status'](0xcc)[_0x8997('0x1d')]();});}};}function handleEntityNotFound(_0x3ec0f4){return function(_0x55fc76){if(!_0x55fc76){_0x3ec0f4[_0x8997('0x1e')](0x194);}return _0x55fc76;};}function handleError(_0x4212e8,_0x5eceb0){_0x5eceb0=_0x5eceb0||0x1f4;return function(_0x51cbaa){logger['error'](_0x51cbaa[_0x8997('0x1f')]);if(_0x51cbaa['name']){delete _0x51cbaa['name'];}_0x4212e8[_0x8997('0x13')](_0x5eceb0)['send'](_0x51cbaa);};}exports[_0x8997('0x20')]=function(_0x220676,_0x36b7f4){var _0x39f58d={},_0x234327={},_0x267b54={'count':0x0,'rows':[]};var _0x17b53d=_['map'](db[_0x8997('0x21')][_0x8997('0x22')],function(_0x19740a){return{'name':_0x19740a[_0x8997('0x23')],'type':_0x19740a['type'][_0x8997('0x24')]};});_0x234327[_0x8997('0x25')]=_[_0x8997('0x26')](_0x17b53d,'name');_0x234327[_0x8997('0x27')]=_[_0x8997('0x28')](_0x220676['query']);_0x234327[_0x8997('0x29')]=_[_0x8997('0x2a')](_0x234327['model'],_0x234327[_0x8997('0x27')]);_0x39f58d[_0x8997('0x2b')]=_[_0x8997('0x2a')](_0x234327[_0x8997('0x25')],qs[_0x8997('0x2c')](_0x220676[_0x8997('0x27')][_0x8997('0x2c')]));_0x39f58d[_0x8997('0x2b')]=_0x39f58d['attributes'][_0x8997('0x2d')]?_0x39f58d[_0x8997('0x2b')]:_0x234327[_0x8997('0x25')];if(!_0x220676['query']['hasOwnProperty'](_0x8997('0x2e'))){_0x39f58d[_0x8997('0x16')]=qs[_0x8997('0x16')](_0x220676[_0x8997('0x27')][_0x8997('0x16')]);_0x39f58d[_0x8997('0x14')]=qs[_0x8997('0x14')](_0x220676[_0x8997('0x27')][_0x8997('0x14')]);}_0x39f58d[_0x8997('0x2f')]=qs[_0x8997('0x30')](_0x220676[_0x8997('0x27')][_0x8997('0x30')]);_0x39f58d[_0x8997('0x31')]=qs['filters'](_['pick'](_0x220676['query'],_0x234327[_0x8997('0x29')]),_0x17b53d);if(_0x220676['query'][_0x8997('0x32')]){_0x39f58d['where']=_[_0x8997('0x33')](_0x39f58d[_0x8997('0x31')],{'$or':_[_0x8997('0x26')](_0x17b53d,function(_0x2dbad0){if(_0x2dbad0['type']!==_0x8997('0x34')){var _0x58da46={};_0x58da46[_0x2dbad0[_0x8997('0x35')]]={'$like':'%'+_0x220676[_0x8997('0x27')][_0x8997('0x32')]+'%'};return _0x58da46;}})});}_0x39f58d=_['merge']({},_0x39f58d,_0x220676[_0x8997('0x36')]);var _0xdd75eb={'where':_0x39f58d['where']};return db['Network'][_0x8997('0x17')](_0xdd75eb)[_0x8997('0x1c')](function(_0x112ff5){_0x267b54[_0x8997('0x17')]=_0x112ff5;if(_0x220676[_0x8997('0x27')][_0x8997('0x37')]){_0x39f58d['include']=[{'all':!![]}];}return db[_0x8997('0x21')][_0x8997('0x38')](_0x39f58d);})[_0x8997('0x1c')](function(_0x12f16d){_0x267b54[_0x8997('0x39')]=_0x12f16d;return _0x267b54;})[_0x8997('0x1c')](respondWithFilteredResult(_0x36b7f4,_0x39f58d))[_0x8997('0x12')](handleError(_0x36b7f4,null));};exports[_0x8997('0x3a')]=function(_0x25f194,_0x2a817f){var _0x4d8542={'raw':!![],'where':{'id':_0x25f194[_0x8997('0x3b')]['id']}},_0x569ed5={};_0x569ed5['model']=_[_0x8997('0x28')](db['Network'][_0x8997('0x22')]);_0x569ed5['query']=_[_0x8997('0x28')](_0x25f194[_0x8997('0x27')]);_0x569ed5[_0x8997('0x29')]=_['intersection'](_0x569ed5[_0x8997('0x25')],_0x569ed5['query']);_0x4d8542[_0x8997('0x2b')]=_[_0x8997('0x2a')](_0x569ed5[_0x8997('0x25')],qs[_0x8997('0x2c')](_0x25f194[_0x8997('0x27')][_0x8997('0x2c')]));_0x4d8542[_0x8997('0x2b')]=_0x4d8542[_0x8997('0x2b')][_0x8997('0x2d')]?_0x4d8542[_0x8997('0x2b')]:_0x569ed5['model'];if(_0x25f194[_0x8997('0x27')][_0x8997('0x37')]){_0x4d8542[_0x8997('0x3c')]=[{'all':!![]}];}_0x4d8542=_[_0x8997('0x33')]({},_0x4d8542,_0x25f194[_0x8997('0x36')]);return db[_0x8997('0x21')][_0x8997('0x3d')](_0x4d8542)[_0x8997('0x1c')](handleEntityNotFound(_0x2a817f,null))[_0x8997('0x1c')](respondWithResult(_0x2a817f,null))['catch'](handleError(_0x2a817f,null));};exports[_0x8997('0x3e')]=function(_0xf376c0,_0x4ecfbd){var _0x2edb76;return db[_0x8997('0x21')]['create'](_0xf376c0[_0x8997('0x3f')],{'raw':!![]})[_0x8997('0x1c')](function(_0x3e385f){_0x2edb76=_0x3e385f;return db[_0x8997('0x21')][_0x8997('0x38')]({'where':{'type':_0xf376c0[_0x8997('0x3f')][_0x8997('0x40')]},'raw':!![]});})[_0x8997('0x1c')](function(_0x4e8f20){if(_0x2edb76[_0x8997('0x40')][_0x8997('0x41')]()=='STUN'){var _0x1642d4=fs[_0x8997('0x42')](path[_0x8997('0x43')](config[_0x8997('0x44')],_0x8997('0x45')),_0x8997('0x46'));var _0x5a1b67=ejs[_0x8997('0x47')](_0x1642d4,{'networks':_0x4e8f20||[]});fs[_0x8997('0x48')](_0x8997('0x49'),_0x5a1b67);return respondWithRpcPromise(_0x8997('0x4a'),'create',{'module':'res_stun_monitor.so'});}else if(_0x2edb76[_0x8997('0x40')][_0x8997('0x41')]()=='TURN'){var _0x5040c1=fs[_0x8997('0x42')](path[_0x8997('0x43')](config[_0x8997('0x44')],_0x8997('0x4b')),_0x8997('0x46'));var _0x50426f=ejs[_0x8997('0x47')](_0x5040c1,{'networks':_0x4e8f20||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0x50426f);return respondWithRpcPromise(_0x8997('0x4a'),_0x8997('0x3e'),{'module':_0x8997('0x4c')});}else{var _0x43dbf6=fs['readFileSync'](path[_0x8997('0x43')](config[_0x8997('0x44')],_0x8997('0x4d')),_0x8997('0x46'));var _0xe17b48=ejs[_0x8997('0x47')](_0x43dbf6,{'networks':_0x4e8f20||[]});fs[_0x8997('0x48')](util['format'](_0x8997('0x4e'),_0xf376c0['body'][_0x8997('0x40')]['toLowerCase']()),_0xe17b48);return respondWithRpcPromise(_0x8997('0x4a'),_0x8997('0x3e'),{'module':_0x8997('0x4f')});}})[_0x8997('0x1c')](function(){return _0x2edb76;})[_0x8997('0x1c')](respondWithResult(_0x4ecfbd,0xc9))[_0x8997('0x12')](handleError(_0x4ecfbd,null));};exports[_0x8997('0x1a')]=function(_0x40f1d1,_0x4e58a5){var _0x1a2846;return db[_0x8997('0x21')]['find']({'where':{'id':_0x40f1d1[_0x8997('0x3b')]['id']}})[_0x8997('0x1c')](handleEntityNotFound(_0x4e58a5,null))[_0x8997('0x1c')](saveUpdates(_0x40f1d1[_0x8997('0x3f')],null))[_0x8997('0x1c')](function(_0x563c98){if(_0x563c98){_0x1a2846=_0x563c98;return db['Network'][_0x8997('0x38')]({'where':{'type':_0x1a2846[_0x8997('0x40')]},'raw':!![]});}return null;})[_0x8997('0x1c')](function(_0x35de4e){if(_0x1a2846[_0x8997('0x40')]['toUpperCase']()==_0x8997('0x50')){var _0x30a835=fs[_0x8997('0x42')](path[_0x8997('0x43')](config['root'],_0x8997('0x45')),_0x8997('0x46'));var _0x529328=ejs[_0x8997('0x47')](_0x30a835,{'networks':_0x35de4e||[]});fs['writeFileSync'](_0x8997('0x49'),_0x529328);return respondWithRpcPromise(_0x8997('0x4a'),_0x8997('0x1a'),{'module':_0x8997('0x4c')});}else if(_0x1a2846[_0x8997('0x40')][_0x8997('0x41')]()==_0x8997('0x51')){var _0xa4fd54=fs[_0x8997('0x42')](path['join'](config[_0x8997('0x44')],_0x8997('0x4b')),'utf8');var _0x3ce32e=ejs[_0x8997('0x47')](_0xa4fd54,{'networks':_0x35de4e||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0x3ce32e);return respondWithRpcPromise(_0x8997('0x4a'),_0x8997('0x1a'),{'module':_0x8997('0x4c')});}else{var _0x10bf66=fs[_0x8997('0x42')](path[_0x8997('0x43')](config['root'],'server/files/templates/network.ejs'),_0x8997('0x46'));var _0x1afb25=ejs[_0x8997('0x47')](_0x10bf66,{'networks':_0x35de4e||[]});fs[_0x8997('0x48')](util[_0x8997('0x52')](_0x8997('0x4e'),_0x40f1d1['body'][_0x8997('0x40')]['toLowerCase']()),_0x1afb25);return respondWithRpcPromise(_0x8997('0x4a'),'update',{'module':_0x8997('0x4f')});}})[_0x8997('0x1c')](function(_0xde3ab7){if(_0xde3ab7){return _0x1a2846;}return null;})[_0x8997('0x1c')](respondWithResult(_0x4e58a5,null))['catch'](handleError(_0x4e58a5,null));};exports[_0x8997('0x1b')]=function(_0x44291f,_0x1b19fd){var _0x1187c0;return db[_0x8997('0x21')][_0x8997('0x3d')]({'where':{'id':_0x44291f[_0x8997('0x3b')]['id']}})[_0x8997('0x1c')](function(_0x1a19d5){_0x1187c0=_0x1a19d5;return _0x1a19d5;})['then'](handleEntityNotFound(_0x1b19fd,null))[_0x8997('0x1c')](removeEntity(_0x1b19fd,null))['then'](function(){if(_0x1187c0){return db[_0x8997('0x21')][_0x8997('0x38')]({'where':{'type':_0x1187c0['type']},'raw':!![]});}})[_0x8997('0x1c')](function(_0x5af3ab){if(_0x1187c0[_0x8997('0x40')]['toUpperCase']()==_0x8997('0x50')){var _0x1ca34f=fs[_0x8997('0x42')](path['join'](config[_0x8997('0x44')],_0x8997('0x45')),_0x8997('0x46'));var _0x4fc23f=ejs[_0x8997('0x47')](_0x1ca34f,{'networks':_0x5af3ab||[]});fs['writeFileSync'](_0x8997('0x49'),_0x4fc23f);return respondWithRpcPromise(_0x8997('0x4a'),_0x8997('0x1b'),{'module':_0x8997('0x4c')});}else if(_0x1187c0[_0x8997('0x40')]['toUpperCase']()=='TURN'){var _0x43a04f=fs[_0x8997('0x42')](path[_0x8997('0x43')](config[_0x8997('0x44')],_0x8997('0x4b')),'utf8');var _0x1195a1=ejs[_0x8997('0x47')](_0x43a04f,{'networks':_0x5af3ab||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0x1195a1);return respondWithRpcPromise(_0x8997('0x4a'),_0x8997('0x1b'),{'module':'res_stun_monitor.so'});}else{var _0xb88474=fs[_0x8997('0x42')](path[_0x8997('0x43')](config[_0x8997('0x44')],_0x8997('0x4d')),_0x8997('0x46'));var _0x325fc2=ejs[_0x8997('0x47')](_0xb88474,{'networks':_0x5af3ab||[]});fs['writeFileSync'](util[_0x8997('0x52')](_0x8997('0x4e'),_0x1187c0[_0x8997('0x40')][_0x8997('0x53')]()),_0x325fc2);return respondWithRpcPromise('Reload','destroy',{'module':_0x8997('0x4f')});}})['catch'](handleError(_0x1b19fd,null));};