Built motion from commit d5e4af8c.|2.6.23
[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 _0x5485=['http','request','then','info','request\x20sent','Network,\x20%s,\x20%s,\x20%s','stringify','error','code','Network,\x20%s,\x20%s','message','result','status','json','offset','undefined','count','limit','set','Content-Range','update','destroy','stack','name','send','map','rawAttributes','fieldName','type','key','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','options','includeAll','include','findAll','rows','catch','params','Network','find','create','body','toUpperCase','STUN','readFileSync','join','root','server/files/templates/stun_multiple.ejs','utf8','render','/etc/asterisk/stun_xcally.conf','Reload','server/files/templates/turn_multiple.ejs','writeFileSync','res_stun_monitor.so','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','TURN','chan_sip.so','util','path','lodash','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb'];(function(_0xf310ac,_0x4ea1ef){var _0xed806b=function(_0x2f5aca){while(--_0x2f5aca){_0xf310ac['push'](_0xf310ac['shift']());}};_0xed806b(++_0x4ea1ef);}(_0x5485,0xa0));var _0x5548=function(_0xe08f0e,_0x527e44){_0xe08f0e=_0xe08f0e-0x0;var _0x402cf1=_0x5485[_0xe08f0e];return _0x402cf1;};'use strict';var util=require(_0x5548('0x0'));var path=require(_0x5548('0x1'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x5548('0x2'));var qs=require(_0x5548('0x3'));var logger=require(_0x5548('0x4'))(_0x5548('0x5'));var config=require(_0x5548('0x6'));var db=require(_0x5548('0x7'))['db'];var jayson=require('jayson/promise');var client=jayson['client'][_0x5548('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2ec1c2,_0x18f301,_0x1d66a9,_0x10445c){return new Promise(function(_0x29b7d9,_0x158417){var _0x2b6409=_0x10445c||client;return _0x2b6409[_0x5548('0x9')](_0x2ec1c2,_0x1d66a9)[_0x5548('0xa')](function(_0x521625){logger[_0x5548('0xb')]('Network,\x20%s,\x20%s',_0x18f301,_0x5548('0xc'));logger['debug'](_0x5548('0xd'),_0x18f301,_0x5548('0xc'),JSON[_0x5548('0xe')](_0x521625));if(_0x521625[_0x5548('0xf')]){if(_0x521625[_0x5548('0xf')][_0x5548('0x10')]===0x1f4){logger[_0x5548('0xf')](_0x5548('0x11'),_0x18f301,_0x521625[_0x5548('0xf')][_0x5548('0x12')]);return _0x158417(_0x521625['error']['message']);}logger[_0x5548('0xf')](_0x5548('0x11'),_0x18f301,_0x521625[_0x5548('0xf')][_0x5548('0x12')]);return _0x29b7d9(_0x521625[_0x5548('0xf')]['message']);}else{logger['info'](_0x5548('0x11'),_0x18f301,_0x5548('0xc'));_0x29b7d9(_0x521625[_0x5548('0x13')]['message']);}})['catch'](function(_0xbc6c45){logger[_0x5548('0xf')](_0x5548('0x11'),_0x18f301,_0xbc6c45);_0x158417(_0xbc6c45);});});}function respondWithResult(_0x1f01b3,_0x290b4e){_0x290b4e=_0x290b4e||0xc8;return function(_0x48da40){if(_0x48da40){return _0x1f01b3[_0x5548('0x14')](_0x290b4e)[_0x5548('0x15')](_0x48da40);}};}function respondWithFilteredResult(_0x8ebb6e,_0x14ef67){return function(_0x45730b){if(_0x45730b){var _0x17cd25=typeof _0x14ef67[_0x5548('0x16')]===_0x5548('0x17')&&typeof _0x14ef67['limit']===_0x5548('0x17');var _0x4b1791=_0x45730b['count'];var _0x3d115e=_0x17cd25?0x0:_0x14ef67['offset'];var _0x3c05da=_0x17cd25?_0x45730b[_0x5548('0x18')]:_0x14ef67['offset']+_0x14ef67[_0x5548('0x19')];var _0x5f53cd;if(_0x3c05da>=_0x4b1791){_0x3c05da=_0x4b1791;_0x5f53cd=0xc8;}else{_0x5f53cd=0xce;}_0x8ebb6e['status'](_0x5f53cd);return _0x8ebb6e[_0x5548('0x1a')](_0x5548('0x1b'),_0x3d115e+'-'+_0x3c05da+'/'+_0x4b1791)[_0x5548('0x15')](_0x45730b);}return null;};}function saveUpdates(_0x4f27e9){return function(_0xc13a01){if(_0xc13a01){return _0xc13a01[_0x5548('0x1c')](_0x4f27e9)[_0x5548('0xa')](function(_0x48612f){return _0x48612f;});}return null;};}function removeEntity(_0x324134){return function(_0x3b50d4){if(_0x3b50d4){return _0x3b50d4[_0x5548('0x1d')]()[_0x5548('0xa')](function(){_0x324134['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5c7227){return function(_0x3139bd){if(!_0x3139bd){_0x5c7227['sendStatus'](0x194);}return _0x3139bd;};}function handleError(_0x464131,_0x3875c6){_0x3875c6=_0x3875c6||0x1f4;return function(_0x59968f){logger['error'](_0x59968f[_0x5548('0x1e')]);if(_0x59968f[_0x5548('0x1f')]){delete _0x59968f[_0x5548('0x1f')];}_0x464131[_0x5548('0x14')](_0x3875c6)[_0x5548('0x20')](_0x59968f);};}exports['index']=function(_0x5d7b66,_0x24fc99){var _0x4d4f7e={},_0x59bc8c={},_0x16382f={'count':0x0,'rows':[]};var _0x1c2bad=_[_0x5548('0x21')](db['Network'][_0x5548('0x22')],function(_0xe143a){return{'name':_0xe143a[_0x5548('0x23')],'type':_0xe143a[_0x5548('0x24')][_0x5548('0x25')]};});_0x59bc8c['model']=_[_0x5548('0x21')](_0x1c2bad,_0x5548('0x1f'));_0x59bc8c[_0x5548('0x26')]=_[_0x5548('0x27')](_0x5d7b66[_0x5548('0x26')]);_0x59bc8c['filters']=_[_0x5548('0x28')](_0x59bc8c[_0x5548('0x29')],_0x59bc8c['query']);_0x4d4f7e[_0x5548('0x2a')]=_['intersection'](_0x59bc8c['model'],qs[_0x5548('0x2b')](_0x5d7b66['query'][_0x5548('0x2b')]));_0x4d4f7e[_0x5548('0x2a')]=_0x4d4f7e[_0x5548('0x2a')][_0x5548('0x2c')]?_0x4d4f7e[_0x5548('0x2a')]:_0x59bc8c[_0x5548('0x29')];if(!_0x5d7b66[_0x5548('0x26')][_0x5548('0x2d')](_0x5548('0x2e'))){_0x4d4f7e['limit']=qs[_0x5548('0x19')](_0x5d7b66[_0x5548('0x26')][_0x5548('0x19')]);_0x4d4f7e[_0x5548('0x16')]=qs[_0x5548('0x16')](_0x5d7b66[_0x5548('0x26')][_0x5548('0x16')]);}_0x4d4f7e[_0x5548('0x2f')]=qs[_0x5548('0x30')](_0x5d7b66['query']['sort']);_0x4d4f7e[_0x5548('0x31')]=qs[_0x5548('0x32')](_[_0x5548('0x33')](_0x5d7b66['query'],_0x59bc8c['filters']),_0x1c2bad);if(_0x5d7b66[_0x5548('0x26')][_0x5548('0x34')]){_0x4d4f7e['where']=_['merge'](_0x4d4f7e[_0x5548('0x31')],{'$or':_['map'](_0x1c2bad,function(_0x33fa1d){if(_0x33fa1d[_0x5548('0x24')]!=='VIRTUAL'){var _0x40c6e2={};_0x40c6e2[_0x33fa1d[_0x5548('0x1f')]]={'$like':'%'+_0x5d7b66[_0x5548('0x26')][_0x5548('0x34')]+'%'};return _0x40c6e2;}})});}_0x4d4f7e=_[_0x5548('0x35')]({},_0x4d4f7e,_0x5d7b66[_0x5548('0x36')]);var _0xe889c={'where':_0x4d4f7e[_0x5548('0x31')]};return db['Network'][_0x5548('0x18')](_0xe889c)['then'](function(_0x1f25b7){_0x16382f['count']=_0x1f25b7;if(_0x5d7b66[_0x5548('0x26')][_0x5548('0x37')]){_0x4d4f7e[_0x5548('0x38')]=[{'all':!![]}];}return db['Network'][_0x5548('0x39')](_0x4d4f7e);})[_0x5548('0xa')](function(_0x32d2a){_0x16382f[_0x5548('0x3a')]=_0x32d2a;return _0x16382f;})[_0x5548('0xa')](respondWithFilteredResult(_0x24fc99,_0x4d4f7e))[_0x5548('0x3b')](handleError(_0x24fc99,null));};exports['show']=function(_0xbdbef5,_0x22a29f){var _0xab736e={'raw':!![],'where':{'id':_0xbdbef5[_0x5548('0x3c')]['id']}},_0x186ddf={};_0x186ddf[_0x5548('0x29')]=_[_0x5548('0x27')](db[_0x5548('0x3d')][_0x5548('0x22')]);_0x186ddf[_0x5548('0x26')]=_[_0x5548('0x27')](_0xbdbef5[_0x5548('0x26')]);_0x186ddf[_0x5548('0x32')]=_[_0x5548('0x28')](_0x186ddf[_0x5548('0x29')],_0x186ddf[_0x5548('0x26')]);_0xab736e[_0x5548('0x2a')]=_['intersection'](_0x186ddf[_0x5548('0x29')],qs[_0x5548('0x2b')](_0xbdbef5[_0x5548('0x26')][_0x5548('0x2b')]));_0xab736e[_0x5548('0x2a')]=_0xab736e['attributes'][_0x5548('0x2c')]?_0xab736e['attributes']:_0x186ddf['model'];if(_0xbdbef5[_0x5548('0x26')][_0x5548('0x37')]){_0xab736e[_0x5548('0x38')]=[{'all':!![]}];}_0xab736e=_[_0x5548('0x35')]({},_0xab736e,_0xbdbef5[_0x5548('0x36')]);return db[_0x5548('0x3d')][_0x5548('0x3e')](_0xab736e)[_0x5548('0xa')](handleEntityNotFound(_0x22a29f,null))[_0x5548('0xa')](respondWithResult(_0x22a29f,null))[_0x5548('0x3b')](handleError(_0x22a29f,null));};exports[_0x5548('0x3f')]=function(_0x2c05e7,_0x2833e6){var _0x5d97b2;return db[_0x5548('0x3d')][_0x5548('0x3f')](_0x2c05e7[_0x5548('0x40')],{'raw':!![]})[_0x5548('0xa')](function(_0x283279){_0x5d97b2=_0x283279;return db[_0x5548('0x3d')][_0x5548('0x39')]({'where':{'type':_0x2c05e7[_0x5548('0x40')][_0x5548('0x24')]},'raw':!![]});})['then'](function(_0x6a8877){if(_0x5d97b2['type'][_0x5548('0x41')]()==_0x5548('0x42')){var _0x31d065=fs[_0x5548('0x43')](path[_0x5548('0x44')](config[_0x5548('0x45')],_0x5548('0x46')),_0x5548('0x47'));var _0x14e98c=ejs[_0x5548('0x48')](_0x31d065,{'networks':_0x6a8877||[]});fs['writeFileSync'](_0x5548('0x49'),_0x14e98c);return respondWithRpcPromise(_0x5548('0x4a'),'create',{'module':'res_stun_monitor.so'});}else if(_0x5d97b2[_0x5548('0x24')][_0x5548('0x41')]()=='TURN'){var _0x2a72b6=fs[_0x5548('0x43')](path[_0x5548('0x44')](config[_0x5548('0x45')],_0x5548('0x4b')),'utf8');var _0x517cce=ejs[_0x5548('0x48')](_0x2a72b6,{'networks':_0x6a8877||[]});fs[_0x5548('0x4c')]('/etc/asterisk/turn_xcally.conf',_0x517cce);return respondWithRpcPromise(_0x5548('0x4a'),_0x5548('0x3f'),{'module':_0x5548('0x4d')});}else{var _0xcf2be7=fs[_0x5548('0x43')](path[_0x5548('0x44')](config[_0x5548('0x45')],_0x5548('0x4e')),_0x5548('0x47'));var _0x3f9138=ejs['render'](_0xcf2be7,{'networks':_0x6a8877||[]});fs[_0x5548('0x4c')](util[_0x5548('0x4f')](_0x5548('0x50'),_0x2c05e7[_0x5548('0x40')][_0x5548('0x24')][_0x5548('0x51')]()),_0x3f9138);return respondWithRpcPromise(_0x5548('0x4a'),_0x5548('0x3f'),{'module':'chan_sip.so'});}})[_0x5548('0xa')](function(){return _0x5d97b2;})[_0x5548('0xa')](respondWithResult(_0x2833e6,0xc9))[_0x5548('0x3b')](handleError(_0x2833e6,null));};exports[_0x5548('0x1c')]=function(_0x2880ae,_0x9d958b){var _0x3c89d8;return db[_0x5548('0x3d')][_0x5548('0x3e')]({'where':{'id':_0x2880ae[_0x5548('0x3c')]['id']}})[_0x5548('0xa')](handleEntityNotFound(_0x9d958b,null))['then'](saveUpdates(_0x2880ae[_0x5548('0x40')],null))['then'](function(_0x596ade){if(_0x596ade){_0x3c89d8=_0x596ade;return db['Network']['findAll']({'where':{'type':_0x3c89d8['type']},'raw':!![]});}return null;})[_0x5548('0xa')](function(_0x490f9a){if(_0x3c89d8[_0x5548('0x24')][_0x5548('0x41')]()==_0x5548('0x42')){var _0x5683cb=fs[_0x5548('0x43')](path['join'](config[_0x5548('0x45')],_0x5548('0x46')),_0x5548('0x47'));var _0x27f136=ejs[_0x5548('0x48')](_0x5683cb,{'networks':_0x490f9a||[]});fs[_0x5548('0x4c')](_0x5548('0x49'),_0x27f136);return respondWithRpcPromise(_0x5548('0x4a'),'update',{'module':_0x5548('0x4d')});}else if(_0x3c89d8[_0x5548('0x24')][_0x5548('0x41')]()==_0x5548('0x52')){var _0x2986c9=fs[_0x5548('0x43')](path['join'](config['root'],_0x5548('0x4b')),_0x5548('0x47'));var _0x7284c8=ejs[_0x5548('0x48')](_0x2986c9,{'networks':_0x490f9a||[]});fs[_0x5548('0x4c')]('/etc/asterisk/turn_xcally.conf',_0x7284c8);return respondWithRpcPromise(_0x5548('0x4a'),_0x5548('0x1c'),{'module':_0x5548('0x4d')});}else{var _0x5c7e8c=fs[_0x5548('0x43')](path[_0x5548('0x44')](config[_0x5548('0x45')],_0x5548('0x4e')),_0x5548('0x47'));var _0xcde047=ejs[_0x5548('0x48')](_0x5c7e8c,{'networks':_0x490f9a||[]});fs[_0x5548('0x4c')](util[_0x5548('0x4f')](_0x5548('0x50'),_0x2880ae[_0x5548('0x40')]['type'][_0x5548('0x51')]()),_0xcde047);return respondWithRpcPromise('Reload',_0x5548('0x1c'),{'module':'chan_sip.so'});}})[_0x5548('0xa')](function(_0x2dc769){if(_0x2dc769){return _0x3c89d8;}return null;})[_0x5548('0xa')](respondWithResult(_0x9d958b,null))[_0x5548('0x3b')](handleError(_0x9d958b,null));};exports['destroy']=function(_0x382622,_0x473096){var _0x2d86a1;return db[_0x5548('0x3d')]['find']({'where':{'id':_0x382622['params']['id']}})[_0x5548('0xa')](function(_0xf4c1b8){_0x2d86a1=_0xf4c1b8;return _0xf4c1b8;})[_0x5548('0xa')](handleEntityNotFound(_0x473096,null))[_0x5548('0xa')](removeEntity(_0x473096,null))[_0x5548('0xa')](function(){if(_0x2d86a1){return db[_0x5548('0x3d')][_0x5548('0x39')]({'where':{'type':_0x2d86a1[_0x5548('0x24')]},'raw':!![]});}})['then'](function(_0x72cc34){if(_0x2d86a1[_0x5548('0x24')][_0x5548('0x41')]()==_0x5548('0x42')){var _0xc760f8=fs[_0x5548('0x43')](path[_0x5548('0x44')](config[_0x5548('0x45')],_0x5548('0x46')),_0x5548('0x47'));var _0x2a28d4=ejs['render'](_0xc760f8,{'networks':_0x72cc34||[]});fs[_0x5548('0x4c')](_0x5548('0x49'),_0x2a28d4);return respondWithRpcPromise(_0x5548('0x4a'),_0x5548('0x1d'),{'module':'res_stun_monitor.so'});}else if(_0x2d86a1[_0x5548('0x24')]['toUpperCase']()==_0x5548('0x52')){var _0x43ee40=fs[_0x5548('0x43')](path[_0x5548('0x44')](config[_0x5548('0x45')],_0x5548('0x4b')),_0x5548('0x47'));var _0x1a706a=ejs[_0x5548('0x48')](_0x43ee40,{'networks':_0x72cc34||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0x1a706a);return respondWithRpcPromise(_0x5548('0x4a'),_0x5548('0x1d'),{'module':_0x5548('0x4d')});}else{var _0xbb80f0=fs[_0x5548('0x43')](path['join'](config['root'],_0x5548('0x4e')),_0x5548('0x47'));var _0x5324bd=ejs[_0x5548('0x48')](_0xbb80f0,{'networks':_0x72cc34||[]});fs[_0x5548('0x4c')](util[_0x5548('0x4f')](_0x5548('0x50'),_0x2d86a1[_0x5548('0x24')][_0x5548('0x51')]()),_0x5324bd);return respondWithRpcPromise(_0x5548('0x4a'),'destroy',{'module':_0x5548('0x53')});}})[_0x5548('0x3b')](handleError(_0x473096,null));};