900bea38a0fe810f2be6f9b6418ebbb239f5172b
[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 _0x5f24=['request','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','status','json','offset','limit','undefined','count','update','destroy','end','sendStatus','stack','name','send','index','map','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','sort','where','filter','merge','type','VIRTUAL','options','Network','includeAll','include','findAll','rows','catch','show','find','create','body','STUN','readFileSync','join','root','server/files/templates/stun_multiple.ejs','utf8','writeFileSync','Reload','toUpperCase','TURN','server/files/templates/turn_multiple.ejs','render','res_stun_monitor.so','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','chan_sip.so','params','/etc/asterisk/stun_xcally.conf','/etc/asterisk/turn_xcally.conf','toLowerCase','path','ejs','../../components/parsers/qs','api','client','http'];(function(_0x51ddaf,_0x2367a8){var _0x38bd07=function(_0x2536c8){while(--_0x2536c8){_0x51ddaf['push'](_0x51ddaf['shift']());}};_0x38bd07(++_0x2367a8);}(_0x5f24,0x9a));var _0x45f2=function(_0x129479,_0x256c7e){_0x129479=_0x129479-0x0;var _0x3fa0ce=_0x5f24[_0x129479];return _0x3fa0ce;};'use strict';var util=require('util');var path=require(_0x45f2('0x0'));var ejs=require(_0x45f2('0x1'));var fs=require('fs');var _=require('lodash');var qs=require(_0x45f2('0x2'));var logger=require('../../config/logger')(_0x45f2('0x3'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];var jayson=require('jayson/promise');var client=jayson[_0x45f2('0x4')][_0x45f2('0x5')]({'port':0x232a});function respondWithRpcPromise(_0x2c6285,_0x418330,_0x45dc95,_0x14332f){return new Promise(function(_0x2b5d5e,_0x258671){var _0x5ed2bc=_0x14332f||client;return _0x5ed2bc[_0x45f2('0x6')](_0x2c6285,_0x45dc95)[_0x45f2('0x7')](function(_0x3293be){logger[_0x45f2('0x8')](_0x45f2('0x9'),_0x418330,_0x45f2('0xa'));logger[_0x45f2('0xb')](_0x45f2('0xc'),_0x418330,_0x45f2('0xa'),JSON[_0x45f2('0xd')](_0x3293be));if(_0x3293be['error']){if(_0x3293be[_0x45f2('0xe')][_0x45f2('0xf')]===0x1f4){logger['error'](_0x45f2('0x9'),_0x418330,_0x3293be[_0x45f2('0xe')][_0x45f2('0x10')]);return _0x258671(_0x3293be['error'][_0x45f2('0x10')]);}logger[_0x45f2('0xe')](_0x45f2('0x9'),_0x418330,_0x3293be[_0x45f2('0xe')][_0x45f2('0x10')]);return _0x2b5d5e(_0x3293be[_0x45f2('0xe')][_0x45f2('0x10')]);}else{logger[_0x45f2('0x8')](_0x45f2('0x9'),_0x418330,_0x45f2('0xa'));_0x2b5d5e(_0x3293be[_0x45f2('0x11')][_0x45f2('0x10')]);}})['catch'](function(_0x1d0984){logger[_0x45f2('0xe')]('Network,\x20%s,\x20%s',_0x418330,_0x1d0984);_0x258671(_0x1d0984);});});}function respondWithResult(_0x243895,_0x13a4b7){_0x13a4b7=_0x13a4b7||0xc8;return function(_0x145a89){if(_0x145a89){return _0x243895[_0x45f2('0x12')](_0x13a4b7)[_0x45f2('0x13')](_0x145a89);}};}function respondWithFilteredResult(_0xe0ceb7,_0x5308fd){return function(_0x14d8c8){if(_0x14d8c8){var _0x2df9a8=typeof _0x5308fd[_0x45f2('0x14')]==='undefined'&&typeof _0x5308fd[_0x45f2('0x15')]===_0x45f2('0x16');var _0x4684df=_0x14d8c8[_0x45f2('0x17')];var _0x5d6caa=_0x2df9a8?0x0:_0x5308fd[_0x45f2('0x14')];var _0x4e12c5=_0x2df9a8?_0x14d8c8[_0x45f2('0x17')]:_0x5308fd[_0x45f2('0x14')]+_0x5308fd[_0x45f2('0x15')];var _0x5bbc33;if(_0x4e12c5>=_0x4684df){_0x4e12c5=_0x4684df;_0x5bbc33=0xc8;}else{_0x5bbc33=0xce;}_0xe0ceb7[_0x45f2('0x12')](_0x5bbc33);return _0xe0ceb7['set']('Content-Range',_0x5d6caa+'-'+_0x4e12c5+'/'+_0x4684df)[_0x45f2('0x13')](_0x14d8c8);}return null;};}function saveUpdates(_0xff2a80){return function(_0x114935){if(_0x114935){return _0x114935[_0x45f2('0x18')](_0xff2a80)[_0x45f2('0x7')](function(_0x330d40){return _0x330d40;});}return null;};}function removeEntity(_0x2bd9ca){return function(_0x539c5b){if(_0x539c5b){return _0x539c5b[_0x45f2('0x19')]()['then'](function(){_0x2bd9ca[_0x45f2('0x12')](0xcc)[_0x45f2('0x1a')]();});}};}function handleEntityNotFound(_0x5f0a31){return function(_0x170c15){if(!_0x170c15){_0x5f0a31[_0x45f2('0x1b')](0x194);}return _0x170c15;};}function handleError(_0xff3cd8,_0x2a45fc){_0x2a45fc=_0x2a45fc||0x1f4;return function(_0x1aef29){logger[_0x45f2('0xe')](_0x1aef29[_0x45f2('0x1c')]);if(_0x1aef29[_0x45f2('0x1d')]){delete _0x1aef29[_0x45f2('0x1d')];}_0xff3cd8['status'](_0x2a45fc)[_0x45f2('0x1e')](_0x1aef29);};}exports[_0x45f2('0x1f')]=function(_0x1d6070,_0x16ff42){var _0x81dd36={},_0x3d5b53={},_0x4731a6={'count':0x0,'rows':[]};var _0x47aa44=_['map'](db['Network']['rawAttributes'],function(_0x1b6238){return{'name':_0x1b6238['fieldName'],'type':_0x1b6238['type']['key']};});_0x3d5b53['model']=_[_0x45f2('0x20')](_0x47aa44,_0x45f2('0x1d'));_0x3d5b53['query']=_[_0x45f2('0x21')](_0x1d6070[_0x45f2('0x22')]);_0x3d5b53[_0x45f2('0x23')]=_[_0x45f2('0x24')](_0x3d5b53[_0x45f2('0x25')],_0x3d5b53[_0x45f2('0x22')]);_0x81dd36[_0x45f2('0x26')]=_[_0x45f2('0x24')](_0x3d5b53[_0x45f2('0x25')],qs[_0x45f2('0x27')](_0x1d6070[_0x45f2('0x22')][_0x45f2('0x27')]));_0x81dd36[_0x45f2('0x26')]=_0x81dd36['attributes'][_0x45f2('0x28')]?_0x81dd36[_0x45f2('0x26')]:_0x3d5b53['model'];if(!_0x1d6070[_0x45f2('0x22')][_0x45f2('0x29')]('nolimit')){_0x81dd36[_0x45f2('0x15')]=qs[_0x45f2('0x15')](_0x1d6070[_0x45f2('0x22')][_0x45f2('0x15')]);_0x81dd36[_0x45f2('0x14')]=qs[_0x45f2('0x14')](_0x1d6070[_0x45f2('0x22')]['offset']);}_0x81dd36['order']=qs[_0x45f2('0x2a')](_0x1d6070[_0x45f2('0x22')][_0x45f2('0x2a')]);_0x81dd36[_0x45f2('0x2b')]=qs[_0x45f2('0x23')](_['pick'](_0x1d6070[_0x45f2('0x22')],_0x3d5b53[_0x45f2('0x23')]),_0x47aa44);if(_0x1d6070[_0x45f2('0x22')][_0x45f2('0x2c')]){_0x81dd36[_0x45f2('0x2b')]=_[_0x45f2('0x2d')](_0x81dd36['where'],{'$or':_['map'](_0x47aa44,function(_0x401b7c){if(_0x401b7c[_0x45f2('0x2e')]!==_0x45f2('0x2f')){var _0x5a671e={};_0x5a671e[_0x401b7c[_0x45f2('0x1d')]]={'$like':'%'+_0x1d6070[_0x45f2('0x22')][_0x45f2('0x2c')]+'%'};return _0x5a671e;}})});}_0x81dd36=_[_0x45f2('0x2d')]({},_0x81dd36,_0x1d6070[_0x45f2('0x30')]);var _0x37afcd={'where':_0x81dd36[_0x45f2('0x2b')]};return db[_0x45f2('0x31')][_0x45f2('0x17')](_0x37afcd)[_0x45f2('0x7')](function(_0x40530a){_0x4731a6['count']=_0x40530a;if(_0x1d6070[_0x45f2('0x22')][_0x45f2('0x32')]){_0x81dd36[_0x45f2('0x33')]=[{'all':!![]}];}return db['Network'][_0x45f2('0x34')](_0x81dd36);})[_0x45f2('0x7')](function(_0x4638fa){_0x4731a6[_0x45f2('0x35')]=_0x4638fa;return _0x4731a6;})[_0x45f2('0x7')](respondWithFilteredResult(_0x16ff42,_0x81dd36))[_0x45f2('0x36')](handleError(_0x16ff42,null));};exports[_0x45f2('0x37')]=function(_0x3141f5,_0x3b4a95){var _0x55be58={'raw':!![],'where':{'id':_0x3141f5['params']['id']}},_0x1980f8={};_0x1980f8[_0x45f2('0x25')]=_['keys'](db['Network']['rawAttributes']);_0x1980f8[_0x45f2('0x22')]=_[_0x45f2('0x21')](_0x3141f5['query']);_0x1980f8[_0x45f2('0x23')]=_[_0x45f2('0x24')](_0x1980f8[_0x45f2('0x25')],_0x1980f8['query']);_0x55be58[_0x45f2('0x26')]=_[_0x45f2('0x24')](_0x1980f8[_0x45f2('0x25')],qs['fields'](_0x3141f5[_0x45f2('0x22')][_0x45f2('0x27')]));_0x55be58['attributes']=_0x55be58[_0x45f2('0x26')][_0x45f2('0x28')]?_0x55be58['attributes']:_0x1980f8[_0x45f2('0x25')];if(_0x3141f5[_0x45f2('0x22')]['includeAll']){_0x55be58[_0x45f2('0x33')]=[{'all':!![]}];}_0x55be58=_[_0x45f2('0x2d')]({},_0x55be58,_0x3141f5[_0x45f2('0x30')]);return db[_0x45f2('0x31')][_0x45f2('0x38')](_0x55be58)[_0x45f2('0x7')](handleEntityNotFound(_0x3b4a95,null))[_0x45f2('0x7')](respondWithResult(_0x3b4a95,null))[_0x45f2('0x36')](handleError(_0x3b4a95,null));};exports[_0x45f2('0x39')]=function(_0x5d17ef,_0x7f5d63){var _0x35358a;return db['Network']['create'](_0x5d17ef[_0x45f2('0x3a')],{'raw':!![]})[_0x45f2('0x7')](function(_0x4918c0){_0x35358a=_0x4918c0;return db[_0x45f2('0x31')][_0x45f2('0x34')]({'where':{'type':_0x5d17ef[_0x45f2('0x3a')][_0x45f2('0x2e')]},'raw':!![]});})[_0x45f2('0x7')](function(_0x2525bc){if(_0x35358a[_0x45f2('0x2e')]['toUpperCase']()==_0x45f2('0x3b')){var _0x576d5c=fs[_0x45f2('0x3c')](path[_0x45f2('0x3d')](config[_0x45f2('0x3e')],_0x45f2('0x3f')),_0x45f2('0x40'));var _0x1d8c36=ejs['render'](_0x576d5c,{'networks':_0x2525bc||[]});fs[_0x45f2('0x41')]('/etc/asterisk/stun_xcally.conf',_0x1d8c36);return respondWithRpcPromise(_0x45f2('0x42'),_0x45f2('0x39'),{'module':'res_stun_monitor.so'});}else if(_0x35358a[_0x45f2('0x2e')][_0x45f2('0x43')]()==_0x45f2('0x44')){var _0x16bdd8=fs['readFileSync'](path[_0x45f2('0x3d')](config[_0x45f2('0x3e')],_0x45f2('0x45')),_0x45f2('0x40'));var _0x50b866=ejs[_0x45f2('0x46')](_0x16bdd8,{'networks':_0x2525bc||[]});fs[_0x45f2('0x41')]('/etc/asterisk/turn_xcally.conf',_0x50b866);return respondWithRpcPromise(_0x45f2('0x42'),_0x45f2('0x39'),{'module':_0x45f2('0x47')});}else{var _0x2a1353=fs[_0x45f2('0x3c')](path[_0x45f2('0x3d')](config['root'],_0x45f2('0x48')),_0x45f2('0x40'));var _0x4b5af4=ejs[_0x45f2('0x46')](_0x2a1353,{'networks':_0x2525bc||[]});fs[_0x45f2('0x41')](util[_0x45f2('0x49')](_0x45f2('0x4a'),_0x5d17ef['body'][_0x45f2('0x2e')]['toLowerCase']()),_0x4b5af4);return respondWithRpcPromise(_0x45f2('0x42'),_0x45f2('0x39'),{'module':_0x45f2('0x4b')});}})[_0x45f2('0x7')](function(){return _0x35358a;})[_0x45f2('0x7')](respondWithResult(_0x7f5d63,0xc9))[_0x45f2('0x36')](handleError(_0x7f5d63,null));};exports[_0x45f2('0x18')]=function(_0x4bf813,_0xab7d2e){var _0x22b943;return db[_0x45f2('0x31')][_0x45f2('0x38')]({'where':{'id':_0x4bf813[_0x45f2('0x4c')]['id']}})[_0x45f2('0x7')](handleEntityNotFound(_0xab7d2e,null))[_0x45f2('0x7')](saveUpdates(_0x4bf813[_0x45f2('0x3a')],null))['then'](function(_0x320939){if(_0x320939){_0x22b943=_0x320939;return db[_0x45f2('0x31')][_0x45f2('0x34')]({'where':{'type':_0x22b943[_0x45f2('0x2e')]},'raw':!![]});}return null;})[_0x45f2('0x7')](function(_0x590dc9){if(_0x22b943[_0x45f2('0x2e')][_0x45f2('0x43')]()==_0x45f2('0x3b')){var _0x4d1fec=fs[_0x45f2('0x3c')](path['join'](config[_0x45f2('0x3e')],_0x45f2('0x3f')),_0x45f2('0x40'));var _0x51a90e=ejs[_0x45f2('0x46')](_0x4d1fec,{'networks':_0x590dc9||[]});fs[_0x45f2('0x41')](_0x45f2('0x4d'),_0x51a90e);return respondWithRpcPromise(_0x45f2('0x42'),'update',{'module':'res_stun_monitor.so'});}else if(_0x22b943[_0x45f2('0x2e')][_0x45f2('0x43')]()==_0x45f2('0x44')){var _0x52993a=fs[_0x45f2('0x3c')](path['join'](config[_0x45f2('0x3e')],'server/files/templates/turn_multiple.ejs'),_0x45f2('0x40'));var _0x1800a6=ejs[_0x45f2('0x46')](_0x52993a,{'networks':_0x590dc9||[]});fs[_0x45f2('0x41')](_0x45f2('0x4e'),_0x1800a6);return respondWithRpcPromise(_0x45f2('0x42'),_0x45f2('0x18'),{'module':_0x45f2('0x47')});}else{var _0x497152=fs[_0x45f2('0x3c')](path[_0x45f2('0x3d')](config[_0x45f2('0x3e')],_0x45f2('0x48')),_0x45f2('0x40'));var _0x207789=ejs['render'](_0x497152,{'networks':_0x590dc9||[]});fs[_0x45f2('0x41')](util[_0x45f2('0x49')](_0x45f2('0x4a'),_0x4bf813[_0x45f2('0x3a')]['type'][_0x45f2('0x4f')]()),_0x207789);return respondWithRpcPromise(_0x45f2('0x42'),_0x45f2('0x18'),{'module':_0x45f2('0x4b')});}})[_0x45f2('0x7')](function(_0x1497c5){if(_0x1497c5){return _0x22b943;}return null;})['then'](respondWithResult(_0xab7d2e,null))[_0x45f2('0x36')](handleError(_0xab7d2e,null));};exports['destroy']=function(_0x2a1613,_0x2f61a6){var _0x527688;return db[_0x45f2('0x31')][_0x45f2('0x38')]({'where':{'id':_0x2a1613[_0x45f2('0x4c')]['id']}})[_0x45f2('0x7')](function(_0x15ea5f){_0x527688=_0x15ea5f;return _0x15ea5f;})[_0x45f2('0x7')](handleEntityNotFound(_0x2f61a6,null))['then'](removeEntity(_0x2f61a6,null))['then'](function(){if(_0x527688){return db[_0x45f2('0x31')][_0x45f2('0x34')]({'where':{'type':_0x527688[_0x45f2('0x2e')]},'raw':!![]});}})[_0x45f2('0x7')](function(_0x48d6a8){if(_0x527688[_0x45f2('0x2e')][_0x45f2('0x43')]()=='STUN'){var _0x2d9a98=fs[_0x45f2('0x3c')](path[_0x45f2('0x3d')](config[_0x45f2('0x3e')],_0x45f2('0x3f')),_0x45f2('0x40'));var _0x4bbdf0=ejs[_0x45f2('0x46')](_0x2d9a98,{'networks':_0x48d6a8||[]});fs['writeFileSync'](_0x45f2('0x4d'),_0x4bbdf0);return respondWithRpcPromise(_0x45f2('0x42'),_0x45f2('0x19'),{'module':_0x45f2('0x47')});}else if(_0x527688[_0x45f2('0x2e')][_0x45f2('0x43')]()==_0x45f2('0x44')){var _0x29a9eb=fs[_0x45f2('0x3c')](path[_0x45f2('0x3d')](config[_0x45f2('0x3e')],_0x45f2('0x45')),_0x45f2('0x40'));var _0x2c4899=ejs[_0x45f2('0x46')](_0x29a9eb,{'networks':_0x48d6a8||[]});fs[_0x45f2('0x41')]('/etc/asterisk/turn_xcally.conf',_0x2c4899);return respondWithRpcPromise(_0x45f2('0x42'),'destroy',{'module':_0x45f2('0x47')});}else{var _0x5935a5=fs[_0x45f2('0x3c')](path[_0x45f2('0x3d')](config[_0x45f2('0x3e')],_0x45f2('0x48')),_0x45f2('0x40'));var _0xd86c8a=ejs[_0x45f2('0x46')](_0x5935a5,{'networks':_0x48d6a8||[]});fs['writeFileSync'](util['format'](_0x45f2('0x4a'),_0x527688[_0x45f2('0x2e')][_0x45f2('0x4f')]()),_0xd86c8a);return respondWithRpcPromise(_0x45f2('0x42'),'destroy',{'module':'chan_sip.so'});}})[_0x45f2('0x36')](handleError(_0x2f61a6,null));};