6377418882f0d2c8cae788f36ae6df6ef946cf84
[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 _0x3416=['count','set','Content-Range','json','update','destroy','end','stack','name','send','index','Network','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','map','VIRTUAL','options','includeAll','include','findAll','rows','show','params','keys','rawAttributes','find','create','STUN','readFileSync','root','server/files/templates/stun_multiple.ejs','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','toUpperCase','TURN','join','server/files/templates/turn_multiple.ejs','utf8','server/files/templates/network.ejs','/etc/asterisk/sip_xcally_%s.conf','body','toLowerCase','/etc/asterisk/turn_xcally.conf','format','chan_sip.so','util','lodash','../../config/logger','api','../../mysqldb','jayson/promise','client','http','request','then','Network,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','result','catch','status','offset','undefined','limit'];(function(_0x3ebb69,_0x3e612e){var _0x421e59=function(_0x5a8c66){while(--_0x5a8c66){_0x3ebb69['push'](_0x3ebb69['shift']());}};_0x421e59(++_0x3e612e);}(_0x3416,0x97));var _0x6341=function(_0x5bd1a9,_0x313714){_0x5bd1a9=_0x5bd1a9-0x0;var _0x2ba345=_0x3416[_0x5bd1a9];return _0x2ba345;};'use strict';var util=require(_0x6341('0x0'));var path=require('path');var ejs=require('ejs');var fs=require('fs');var _=require(_0x6341('0x1'));var qs=require('../../components/parsers/qs');var logger=require(_0x6341('0x2'))(_0x6341('0x3'));var config=require('../../config/environment');var db=require(_0x6341('0x4'))['db'];var jayson=require(_0x6341('0x5'));var client=jayson[_0x6341('0x6')][_0x6341('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x577a91,_0x22406c,_0x379d7a,_0x5d4153){return new Promise(function(_0x49de62,_0x685a1d){var _0x32e212=_0x5d4153||client;return _0x32e212[_0x6341('0x8')](_0x577a91,_0x379d7a)[_0x6341('0x9')](function(_0x199489){logger['info'](_0x6341('0xa'),_0x22406c,_0x6341('0xb'));logger[_0x6341('0xc')]('Network,\x20%s,\x20%s,\x20%s',_0x22406c,'request\x20sent',JSON['stringify'](_0x199489));if(_0x199489['error']){if(_0x199489[_0x6341('0xd')][_0x6341('0xe')]===0x1f4){logger['error'](_0x6341('0xa'),_0x22406c,_0x199489[_0x6341('0xd')][_0x6341('0xf')]);return _0x685a1d(_0x199489[_0x6341('0xd')][_0x6341('0xf')]);}logger['error']('Network,\x20%s,\x20%s',_0x22406c,_0x199489[_0x6341('0xd')][_0x6341('0xf')]);return _0x49de62(_0x199489[_0x6341('0xd')][_0x6341('0xf')]);}else{logger[_0x6341('0x10')](_0x6341('0xa'),_0x22406c,_0x6341('0xb'));_0x49de62(_0x199489[_0x6341('0x11')]['message']);}})[_0x6341('0x12')](function(_0x38f2a0){logger[_0x6341('0xd')](_0x6341('0xa'),_0x22406c,_0x38f2a0);_0x685a1d(_0x38f2a0);});});}function respondWithResult(_0x2e7468,_0x3125ae){_0x3125ae=_0x3125ae||0xc8;return function(_0x2f9eb8){if(_0x2f9eb8){return _0x2e7468[_0x6341('0x13')](_0x3125ae)['json'](_0x2f9eb8);}};}function respondWithFilteredResult(_0x1ef4e0,_0x2fb8f1){return function(_0x3766d5){if(_0x3766d5){var _0x40538d=typeof _0x2fb8f1[_0x6341('0x14')]===_0x6341('0x15')&&typeof _0x2fb8f1[_0x6341('0x16')]===_0x6341('0x15');var _0x362fea=_0x3766d5[_0x6341('0x17')];var _0x45d829=_0x40538d?0x0:_0x2fb8f1['offset'];var _0x4b233b=_0x40538d?_0x3766d5['count']:_0x2fb8f1[_0x6341('0x14')]+_0x2fb8f1[_0x6341('0x16')];var _0x5bbd24;if(_0x4b233b>=_0x362fea){_0x4b233b=_0x362fea;_0x5bbd24=0xc8;}else{_0x5bbd24=0xce;}_0x1ef4e0[_0x6341('0x13')](_0x5bbd24);return _0x1ef4e0[_0x6341('0x18')](_0x6341('0x19'),_0x45d829+'-'+_0x4b233b+'/'+_0x362fea)[_0x6341('0x1a')](_0x3766d5);}return null;};}function saveUpdates(_0x23437a){return function(_0x3b730c){if(_0x3b730c){return _0x3b730c[_0x6341('0x1b')](_0x23437a)[_0x6341('0x9')](function(_0x363d69){return _0x363d69;});}return null;};}function removeEntity(_0x190974){return function(_0x242c1c){if(_0x242c1c){return _0x242c1c[_0x6341('0x1c')]()[_0x6341('0x9')](function(){_0x190974[_0x6341('0x13')](0xcc)[_0x6341('0x1d')]();});}};}function handleEntityNotFound(_0x41dc85){return function(_0x1d9adf){if(!_0x1d9adf){_0x41dc85['sendStatus'](0x194);}return _0x1d9adf;};}function handleError(_0x29d68f,_0x3bd7ca){_0x3bd7ca=_0x3bd7ca||0x1f4;return function(_0x443f37){logger[_0x6341('0xd')](_0x443f37[_0x6341('0x1e')]);if(_0x443f37['name']){delete _0x443f37[_0x6341('0x1f')];}_0x29d68f[_0x6341('0x13')](_0x3bd7ca)[_0x6341('0x20')](_0x443f37);};}exports[_0x6341('0x21')]=function(_0x3abb47,_0x22cac0){var _0x2bfe35={},_0x5d1f53={},_0x140f25={'count':0x0,'rows':[]};var _0x3e6103=_['map'](db[_0x6341('0x22')]['rawAttributes'],function(_0xaef225){return{'name':_0xaef225[_0x6341('0x23')],'type':_0xaef225[_0x6341('0x24')][_0x6341('0x25')]};});_0x5d1f53[_0x6341('0x26')]=_['map'](_0x3e6103,_0x6341('0x1f'));_0x5d1f53[_0x6341('0x27')]=_['keys'](_0x3abb47['query']);_0x5d1f53[_0x6341('0x28')]=_[_0x6341('0x29')](_0x5d1f53[_0x6341('0x26')],_0x5d1f53[_0x6341('0x27')]);_0x2bfe35[_0x6341('0x2a')]=_[_0x6341('0x29')](_0x5d1f53['model'],qs['fields'](_0x3abb47[_0x6341('0x27')][_0x6341('0x2b')]));_0x2bfe35[_0x6341('0x2a')]=_0x2bfe35[_0x6341('0x2a')][_0x6341('0x2c')]?_0x2bfe35[_0x6341('0x2a')]:_0x5d1f53[_0x6341('0x26')];if(!_0x3abb47[_0x6341('0x27')][_0x6341('0x2d')](_0x6341('0x2e'))){_0x2bfe35[_0x6341('0x16')]=qs[_0x6341('0x16')](_0x3abb47[_0x6341('0x27')][_0x6341('0x16')]);_0x2bfe35[_0x6341('0x14')]=qs[_0x6341('0x14')](_0x3abb47[_0x6341('0x27')]['offset']);}_0x2bfe35[_0x6341('0x2f')]=qs['sort'](_0x3abb47['query'][_0x6341('0x30')]);_0x2bfe35['where']=qs['filters'](_[_0x6341('0x31')](_0x3abb47[_0x6341('0x27')],_0x5d1f53[_0x6341('0x28')]),_0x3e6103);if(_0x3abb47['query'][_0x6341('0x32')]){_0x2bfe35[_0x6341('0x33')]=_[_0x6341('0x34')](_0x2bfe35[_0x6341('0x33')],{'$or':_[_0x6341('0x35')](_0x3e6103,function(_0x597584){if(_0x597584[_0x6341('0x24')]!==_0x6341('0x36')){var _0x4d4aaf={};_0x4d4aaf[_0x597584[_0x6341('0x1f')]]={'$like':'%'+_0x3abb47['query'][_0x6341('0x32')]+'%'};return _0x4d4aaf;}})});}_0x2bfe35=_['merge']({},_0x2bfe35,_0x3abb47[_0x6341('0x37')]);var _0x4d4a00={'where':_0x2bfe35[_0x6341('0x33')]};return db[_0x6341('0x22')][_0x6341('0x17')](_0x4d4a00)[_0x6341('0x9')](function(_0x4cb7a3){_0x140f25['count']=_0x4cb7a3;if(_0x3abb47[_0x6341('0x27')][_0x6341('0x38')]){_0x2bfe35[_0x6341('0x39')]=[{'all':!![]}];}return db['Network'][_0x6341('0x3a')](_0x2bfe35);})[_0x6341('0x9')](function(_0xe9008c){_0x140f25[_0x6341('0x3b')]=_0xe9008c;return _0x140f25;})[_0x6341('0x9')](respondWithFilteredResult(_0x22cac0,_0x2bfe35))['catch'](handleError(_0x22cac0,null));};exports[_0x6341('0x3c')]=function(_0x13a9cd,_0x25e128){var _0x53a476={'raw':!![],'where':{'id':_0x13a9cd[_0x6341('0x3d')]['id']}},_0x283ecb={};_0x283ecb[_0x6341('0x26')]=_[_0x6341('0x3e')](db[_0x6341('0x22')][_0x6341('0x3f')]);_0x283ecb['query']=_[_0x6341('0x3e')](_0x13a9cd[_0x6341('0x27')]);_0x283ecb[_0x6341('0x28')]=_['intersection'](_0x283ecb[_0x6341('0x26')],_0x283ecb[_0x6341('0x27')]);_0x53a476[_0x6341('0x2a')]=_[_0x6341('0x29')](_0x283ecb[_0x6341('0x26')],qs[_0x6341('0x2b')](_0x13a9cd[_0x6341('0x27')]['fields']));_0x53a476[_0x6341('0x2a')]=_0x53a476[_0x6341('0x2a')]['length']?_0x53a476[_0x6341('0x2a')]:_0x283ecb[_0x6341('0x26')];if(_0x13a9cd[_0x6341('0x27')][_0x6341('0x38')]){_0x53a476[_0x6341('0x39')]=[{'all':!![]}];}_0x53a476=_['merge']({},_0x53a476,_0x13a9cd[_0x6341('0x37')]);return db[_0x6341('0x22')][_0x6341('0x40')](_0x53a476)['then'](handleEntityNotFound(_0x25e128,null))[_0x6341('0x9')](respondWithResult(_0x25e128,null))[_0x6341('0x12')](handleError(_0x25e128,null));};exports[_0x6341('0x41')]=function(_0x4e4809,_0x3abe9b){var _0x214170;return db[_0x6341('0x22')][_0x6341('0x41')](_0x4e4809['body'],{'raw':!![]})[_0x6341('0x9')](function(_0x115187){_0x214170=_0x115187;return db[_0x6341('0x22')]['findAll']({'where':{'type':_0x4e4809['body'][_0x6341('0x24')]},'raw':!![]});})['then'](function(_0x2df917){if(_0x214170[_0x6341('0x24')]['toUpperCase']()==_0x6341('0x42')){var _0x142654=fs[_0x6341('0x43')](path['join'](config[_0x6341('0x44')],_0x6341('0x45')),'utf8');var _0x1c176c=ejs[_0x6341('0x46')](_0x142654,{'networks':_0x2df917||[]});fs[_0x6341('0x47')](_0x6341('0x48'),_0x1c176c);return respondWithRpcPromise(_0x6341('0x49'),_0x6341('0x41'),{'module':_0x6341('0x4a')});}else if(_0x214170[_0x6341('0x24')][_0x6341('0x4b')]()==_0x6341('0x4c')){var _0x4379d9=fs[_0x6341('0x43')](path[_0x6341('0x4d')](config['root'],_0x6341('0x4e')),_0x6341('0x4f'));var _0x4ccab3=ejs[_0x6341('0x46')](_0x4379d9,{'networks':_0x2df917||[]});fs[_0x6341('0x47')]('/etc/asterisk/turn_xcally.conf',_0x4ccab3);return respondWithRpcPromise(_0x6341('0x49'),_0x6341('0x41'),{'module':_0x6341('0x4a')});}else{var _0x54c521=fs[_0x6341('0x43')](path[_0x6341('0x4d')](config[_0x6341('0x44')],_0x6341('0x50')),_0x6341('0x4f'));var _0x1d00af=ejs[_0x6341('0x46')](_0x54c521,{'networks':_0x2df917||[]});fs[_0x6341('0x47')](util['format'](_0x6341('0x51'),_0x4e4809[_0x6341('0x52')][_0x6341('0x24')][_0x6341('0x53')]()),_0x1d00af);return respondWithRpcPromise('Reload',_0x6341('0x41'),{'module':'chan_sip.so'});}})[_0x6341('0x9')](function(){return _0x214170;})[_0x6341('0x9')](respondWithResult(_0x3abe9b,0xc9))['catch'](handleError(_0x3abe9b,null));};exports[_0x6341('0x1b')]=function(_0x1165c7,_0x48feb4){var _0x4f23c4;return db['Network']['find']({'where':{'id':_0x1165c7[_0x6341('0x3d')]['id']}})['then'](handleEntityNotFound(_0x48feb4,null))[_0x6341('0x9')](saveUpdates(_0x1165c7['body'],null))[_0x6341('0x9')](function(_0x3b0796){if(_0x3b0796){_0x4f23c4=_0x3b0796;return db[_0x6341('0x22')][_0x6341('0x3a')]({'where':{'type':_0x4f23c4[_0x6341('0x24')]},'raw':!![]});}return null;})[_0x6341('0x9')](function(_0x539477){if(_0x4f23c4['type'][_0x6341('0x4b')]()==_0x6341('0x42')){var _0x592e80=fs[_0x6341('0x43')](path['join'](config[_0x6341('0x44')],_0x6341('0x45')),_0x6341('0x4f'));var _0x53e88a=ejs[_0x6341('0x46')](_0x592e80,{'networks':_0x539477||[]});fs[_0x6341('0x47')](_0x6341('0x48'),_0x53e88a);return respondWithRpcPromise(_0x6341('0x49'),_0x6341('0x1b'),{'module':'res_stun_monitor.so'});}else if(_0x4f23c4[_0x6341('0x24')][_0x6341('0x4b')]()=='TURN'){var _0xbd7692=fs[_0x6341('0x43')](path[_0x6341('0x4d')](config['root'],_0x6341('0x4e')),'utf8');var _0x1f86ca=ejs[_0x6341('0x46')](_0xbd7692,{'networks':_0x539477||[]});fs[_0x6341('0x47')](_0x6341('0x54'),_0x1f86ca);return respondWithRpcPromise('Reload',_0x6341('0x1b'),{'module':_0x6341('0x4a')});}else{var _0x4a8578=fs[_0x6341('0x43')](path['join'](config['root'],_0x6341('0x50')),_0x6341('0x4f'));var _0x4a2644=ejs['render'](_0x4a8578,{'networks':_0x539477||[]});fs['writeFileSync'](util[_0x6341('0x55')](_0x6341('0x51'),_0x1165c7[_0x6341('0x52')]['type']['toLowerCase']()),_0x4a2644);return respondWithRpcPromise('Reload',_0x6341('0x1b'),{'module':_0x6341('0x56')});}})[_0x6341('0x9')](function(_0x634758){if(_0x634758){return _0x4f23c4;}return null;})[_0x6341('0x9')](respondWithResult(_0x48feb4,null))[_0x6341('0x12')](handleError(_0x48feb4,null));};exports[_0x6341('0x1c')]=function(_0x37fe91,_0x282f91){var _0x24069e;return db[_0x6341('0x22')][_0x6341('0x40')]({'where':{'id':_0x37fe91[_0x6341('0x3d')]['id']}})[_0x6341('0x9')](function(_0x5f047a){_0x24069e=_0x5f047a;return _0x5f047a;})[_0x6341('0x9')](handleEntityNotFound(_0x282f91,null))[_0x6341('0x9')](removeEntity(_0x282f91,null))[_0x6341('0x9')](function(){if(_0x24069e){return db[_0x6341('0x22')][_0x6341('0x3a')]({'where':{'type':_0x24069e['type']},'raw':!![]});}})[_0x6341('0x9')](function(_0x48bedf){if(_0x24069e['type']['toUpperCase']()==_0x6341('0x42')){var _0x19ccf1=fs['readFileSync'](path['join'](config['root'],_0x6341('0x45')),_0x6341('0x4f'));var _0x3d5fad=ejs[_0x6341('0x46')](_0x19ccf1,{'networks':_0x48bedf||[]});fs[_0x6341('0x47')]('/etc/asterisk/stun_xcally.conf',_0x3d5fad);return respondWithRpcPromise(_0x6341('0x49'),_0x6341('0x1c'),{'module':'res_stun_monitor.so'});}else if(_0x24069e[_0x6341('0x24')][_0x6341('0x4b')]()==_0x6341('0x4c')){var _0x2382c0=fs[_0x6341('0x43')](path['join'](config[_0x6341('0x44')],_0x6341('0x4e')),'utf8');var _0x5cc43f=ejs[_0x6341('0x46')](_0x2382c0,{'networks':_0x48bedf||[]});fs[_0x6341('0x47')](_0x6341('0x54'),_0x5cc43f);return respondWithRpcPromise(_0x6341('0x49'),_0x6341('0x1c'),{'module':'res_stun_monitor.so'});}else{var _0x22dd74=fs['readFileSync'](path[_0x6341('0x4d')](config['root'],_0x6341('0x50')),_0x6341('0x4f'));var _0x3d4c07=ejs['render'](_0x22dd74,{'networks':_0x48bedf||[]});fs[_0x6341('0x47')](util[_0x6341('0x55')](_0x6341('0x51'),_0x24069e[_0x6341('0x24')][_0x6341('0x53')]()),_0x3d4c07);return respondWithRpcPromise(_0x6341('0x49'),_0x6341('0x1c'),{'module':_0x6341('0x56')});}})[_0x6341('0x12')](handleError(_0x282f91,null));};