ba563c814202b6a3be02f6fcddaa5c7d8d2c11e6
[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 _0x6522=['request','then','info','Network,\x20%s,\x20%s','request\x20sent','Network,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','status','json','offset','undefined','limit','count','update','destroy','end','sendStatus','stack','name','index','map','Network','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','order','sort','filter','where','merge','includeAll','include','findAll','rows','show','params','length','options','find','body','toUpperCase','STUN','readFileSync','root','server/files/templates/stun_multiple.ejs','utf8','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','TURN','create','join','server/files/templates/network.ejs','format','toLowerCase','chan_sip.so','server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','/etc/asterisk/sip_xcally_%s.conf','util','path','ejs','lodash','../../components/parsers/qs','../../config/logger','api','../../mysqldb','client'];(function(_0x45dabf,_0x4e6bfe){var _0xa83e3d=function(_0x269115){while(--_0x269115){_0x45dabf['push'](_0x45dabf['shift']());}};_0xa83e3d(++_0x4e6bfe);}(_0x6522,0xed));var _0x2652=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x6522[_0x17d9e3];return _0x14192d;};'use strict';var util=require(_0x2652('0x0'));var path=require(_0x2652('0x1'));var ejs=require(_0x2652('0x2'));var fs=require('fs');var _=require(_0x2652('0x3'));var qs=require(_0x2652('0x4'));var logger=require(_0x2652('0x5'))(_0x2652('0x6'));var config=require('../../config/environment');var db=require(_0x2652('0x7'))['db'];var jayson=require('jayson/promise');var client=jayson[_0x2652('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5e1086,_0x3e2663,_0x456473,_0x4cc033){return new Promise(function(_0x5ea7cb,_0x3acebb){var _0x45cdda=_0x4cc033||client;return _0x45cdda[_0x2652('0x9')](_0x5e1086,_0x456473)[_0x2652('0xa')](function(_0x46dcb3){logger[_0x2652('0xb')](_0x2652('0xc'),_0x3e2663,_0x2652('0xd'));logger['debug'](_0x2652('0xe'),_0x3e2663,_0x2652('0xd'),JSON[_0x2652('0xf')](_0x46dcb3));if(_0x46dcb3[_0x2652('0x10')]){if(_0x46dcb3[_0x2652('0x10')][_0x2652('0x11')]===0x1f4){logger[_0x2652('0x10')]('Network,\x20%s,\x20%s',_0x3e2663,_0x46dcb3[_0x2652('0x10')]['message']);return _0x3acebb(_0x46dcb3['error'][_0x2652('0x12')]);}logger[_0x2652('0x10')](_0x2652('0xc'),_0x3e2663,_0x46dcb3[_0x2652('0x10')][_0x2652('0x12')]);return _0x5ea7cb(_0x46dcb3['error'][_0x2652('0x12')]);}else{logger['info'](_0x2652('0xc'),_0x3e2663,_0x2652('0xd'));_0x5ea7cb(_0x46dcb3['result'][_0x2652('0x12')]);}})[_0x2652('0x13')](function(_0x24dc76){logger[_0x2652('0x10')](_0x2652('0xc'),_0x3e2663,_0x24dc76);_0x3acebb(_0x24dc76);});});}function respondWithResult(_0x22a2f2,_0x28b574){_0x28b574=_0x28b574||0xc8;return function(_0x1bdbd8){if(_0x1bdbd8){return _0x22a2f2[_0x2652('0x14')](_0x28b574)[_0x2652('0x15')](_0x1bdbd8);}};}function respondWithFilteredResult(_0x333542,_0x200199){return function(_0xfb06d5){if(_0xfb06d5){var _0x4f6b94=typeof _0x200199[_0x2652('0x16')]===_0x2652('0x17')&&typeof _0x200199[_0x2652('0x18')]===_0x2652('0x17');var _0x5e874c=_0xfb06d5[_0x2652('0x19')];var _0xc98d4=_0x4f6b94?0x0:_0x200199[_0x2652('0x16')];var _0x2060ec=_0x4f6b94?_0xfb06d5[_0x2652('0x19')]:_0x200199[_0x2652('0x16')]+_0x200199[_0x2652('0x18')];var _0x2eca9c;if(_0x2060ec>=_0x5e874c){_0x2060ec=_0x5e874c;_0x2eca9c=0xc8;}else{_0x2eca9c=0xce;}_0x333542[_0x2652('0x14')](_0x2eca9c);return _0x333542['set']('Content-Range',_0xc98d4+'-'+_0x2060ec+'/'+_0x5e874c)[_0x2652('0x15')](_0xfb06d5);}return null;};}function saveUpdates(_0x204acb){return function(_0x2b62d1){if(_0x2b62d1){return _0x2b62d1[_0x2652('0x1a')](_0x204acb)[_0x2652('0xa')](function(_0x500b7f){return _0x500b7f;});}return null;};}function removeEntity(_0x3e67b3){return function(_0x54da0d){if(_0x54da0d){return _0x54da0d[_0x2652('0x1b')]()[_0x2652('0xa')](function(){_0x3e67b3[_0x2652('0x14')](0xcc)[_0x2652('0x1c')]();});}};}function handleEntityNotFound(_0x57cbf5){return function(_0x8ac9c){if(!_0x8ac9c){_0x57cbf5[_0x2652('0x1d')](0x194);}return _0x8ac9c;};}function handleError(_0x168f3e,_0x5d3f61){_0x5d3f61=_0x5d3f61||0x1f4;return function(_0x43114f){logger[_0x2652('0x10')](_0x43114f[_0x2652('0x1e')]);if(_0x43114f[_0x2652('0x1f')]){delete _0x43114f[_0x2652('0x1f')];}_0x168f3e['status'](_0x5d3f61)['send'](_0x43114f);};}exports[_0x2652('0x20')]=function(_0x3d23c7,_0x3a1e27){var _0x147ef5={},_0x2eead2={},_0x78177={'count':0x0,'rows':[]};var _0x475154=_[_0x2652('0x21')](db[_0x2652('0x22')][_0x2652('0x23')],function(_0x1c43f7){return{'name':_0x1c43f7[_0x2652('0x24')],'type':_0x1c43f7[_0x2652('0x25')][_0x2652('0x26')]};});_0x2eead2[_0x2652('0x27')]=_[_0x2652('0x21')](_0x475154,_0x2652('0x1f'));_0x2eead2[_0x2652('0x28')]=_[_0x2652('0x29')](_0x3d23c7['query']);_0x2eead2[_0x2652('0x2a')]=_['intersection'](_0x2eead2[_0x2652('0x27')],_0x2eead2[_0x2652('0x28')]);_0x147ef5[_0x2652('0x2b')]=_[_0x2652('0x2c')](_0x2eead2[_0x2652('0x27')],qs[_0x2652('0x2d')](_0x3d23c7[_0x2652('0x28')][_0x2652('0x2d')]));_0x147ef5[_0x2652('0x2b')]=_0x147ef5[_0x2652('0x2b')]['length']?_0x147ef5[_0x2652('0x2b')]:_0x2eead2[_0x2652('0x27')];if(!_0x3d23c7[_0x2652('0x28')]['hasOwnProperty']('nolimit')){_0x147ef5[_0x2652('0x18')]=qs[_0x2652('0x18')](_0x3d23c7[_0x2652('0x28')][_0x2652('0x18')]);_0x147ef5[_0x2652('0x16')]=qs[_0x2652('0x16')](_0x3d23c7[_0x2652('0x28')][_0x2652('0x16')]);}_0x147ef5[_0x2652('0x2e')]=qs[_0x2652('0x2f')](_0x3d23c7['query'][_0x2652('0x2f')]);_0x147ef5['where']=qs[_0x2652('0x2a')](_['pick'](_0x3d23c7[_0x2652('0x28')],_0x2eead2[_0x2652('0x2a')]),_0x475154);if(_0x3d23c7['query'][_0x2652('0x30')]){_0x147ef5[_0x2652('0x31')]=_[_0x2652('0x32')](_0x147ef5['where'],{'$or':_[_0x2652('0x21')](_0x475154,function(_0x2ebacd){if(_0x2ebacd[_0x2652('0x25')]!=='VIRTUAL'){var _0x247602={};_0x247602[_0x2ebacd['name']]={'$like':'%'+_0x3d23c7[_0x2652('0x28')][_0x2652('0x30')]+'%'};return _0x247602;}})});}_0x147ef5=_[_0x2652('0x32')]({},_0x147ef5,_0x3d23c7['options']);var _0x2a1e78={'where':_0x147ef5[_0x2652('0x31')]};return db[_0x2652('0x22')][_0x2652('0x19')](_0x2a1e78)[_0x2652('0xa')](function(_0x4d3bb8){_0x78177[_0x2652('0x19')]=_0x4d3bb8;if(_0x3d23c7['query'][_0x2652('0x33')]){_0x147ef5[_0x2652('0x34')]=[{'all':!![]}];}return db[_0x2652('0x22')][_0x2652('0x35')](_0x147ef5);})[_0x2652('0xa')](function(_0x375af4){_0x78177[_0x2652('0x36')]=_0x375af4;return _0x78177;})[_0x2652('0xa')](respondWithFilteredResult(_0x3a1e27,_0x147ef5))[_0x2652('0x13')](handleError(_0x3a1e27,null));};exports[_0x2652('0x37')]=function(_0x296172,_0x2b11e8){var _0xa2f786={'raw':!![],'where':{'id':_0x296172[_0x2652('0x38')]['id']}},_0x58dee2={};_0x58dee2['model']=_[_0x2652('0x29')](db[_0x2652('0x22')][_0x2652('0x23')]);_0x58dee2[_0x2652('0x28')]=_[_0x2652('0x29')](_0x296172[_0x2652('0x28')]);_0x58dee2['filters']=_[_0x2652('0x2c')](_0x58dee2['model'],_0x58dee2[_0x2652('0x28')]);_0xa2f786[_0x2652('0x2b')]=_[_0x2652('0x2c')](_0x58dee2[_0x2652('0x27')],qs[_0x2652('0x2d')](_0x296172[_0x2652('0x28')][_0x2652('0x2d')]));_0xa2f786['attributes']=_0xa2f786[_0x2652('0x2b')][_0x2652('0x39')]?_0xa2f786[_0x2652('0x2b')]:_0x58dee2[_0x2652('0x27')];if(_0x296172[_0x2652('0x28')]['includeAll']){_0xa2f786[_0x2652('0x34')]=[{'all':!![]}];}_0xa2f786=_[_0x2652('0x32')]({},_0xa2f786,_0x296172[_0x2652('0x3a')]);return db[_0x2652('0x22')][_0x2652('0x3b')](_0xa2f786)[_0x2652('0xa')](handleEntityNotFound(_0x2b11e8,null))[_0x2652('0xa')](respondWithResult(_0x2b11e8,null))[_0x2652('0x13')](handleError(_0x2b11e8,null));};exports['create']=function(_0x291753,_0x1ac7c1){var _0x3d149b;return db[_0x2652('0x22')]['create'](_0x291753[_0x2652('0x3c')],{'raw':!![]})['then'](function(_0x265f66){_0x3d149b=_0x265f66;return db[_0x2652('0x22')]['findAll']({'where':{'type':_0x291753[_0x2652('0x3c')][_0x2652('0x25')]},'raw':!![]});})[_0x2652('0xa')](function(_0x4b4c8f){if(_0x3d149b[_0x2652('0x25')][_0x2652('0x3d')]()==_0x2652('0x3e')){var _0xa48869=fs[_0x2652('0x3f')](path['join'](config[_0x2652('0x40')],_0x2652('0x41')),_0x2652('0x42'));var _0x44e3b1=ejs[_0x2652('0x43')](_0xa48869,{'networks':_0x4b4c8f||[]});fs[_0x2652('0x44')](_0x2652('0x45'),_0x44e3b1);return respondWithRpcPromise(_0x2652('0x46'),'create',{'module':_0x2652('0x47')});}else if(_0x3d149b[_0x2652('0x25')]['toUpperCase']()==_0x2652('0x48')){var _0x1affb2=fs['readFileSync'](path['join'](config[_0x2652('0x40')],'server/files/templates/turn_multiple.ejs'),'utf8');var _0x431dc6=ejs[_0x2652('0x43')](_0x1affb2,{'networks':_0x4b4c8f||[]});fs[_0x2652('0x44')]('/etc/asterisk/turn_xcally.conf',_0x431dc6);return respondWithRpcPromise(_0x2652('0x46'),_0x2652('0x49'),{'module':_0x2652('0x47')});}else{var _0x160cf2=fs[_0x2652('0x3f')](path[_0x2652('0x4a')](config[_0x2652('0x40')],_0x2652('0x4b')),_0x2652('0x42'));var _0x3c16aa=ejs[_0x2652('0x43')](_0x160cf2,{'networks':_0x4b4c8f||[]});fs[_0x2652('0x44')](util[_0x2652('0x4c')]('/etc/asterisk/sip_xcally_%s.conf',_0x291753[_0x2652('0x3c')][_0x2652('0x25')][_0x2652('0x4d')]()),_0x3c16aa);return respondWithRpcPromise(_0x2652('0x46'),_0x2652('0x49'),{'module':_0x2652('0x4e')});}})[_0x2652('0xa')](function(){return _0x3d149b;})[_0x2652('0xa')](respondWithResult(_0x1ac7c1,0xc9))[_0x2652('0x13')](handleError(_0x1ac7c1,null));};exports[_0x2652('0x1a')]=function(_0x3637c4,_0xdeec8f){var _0x5432d0;return db[_0x2652('0x22')][_0x2652('0x3b')]({'where':{'id':_0x3637c4['params']['id']}})[_0x2652('0xa')](handleEntityNotFound(_0xdeec8f,null))[_0x2652('0xa')](saveUpdates(_0x3637c4[_0x2652('0x3c')],null))[_0x2652('0xa')](function(_0x5d0ea6){if(_0x5d0ea6){_0x5432d0=_0x5d0ea6;return db[_0x2652('0x22')]['findAll']({'where':{'type':_0x5432d0[_0x2652('0x25')]},'raw':!![]});}return null;})['then'](function(_0x2c8d88){if(_0x5432d0[_0x2652('0x25')][_0x2652('0x3d')]()==_0x2652('0x3e')){var _0x1d3f52=fs[_0x2652('0x3f')](path[_0x2652('0x4a')](config[_0x2652('0x40')],_0x2652('0x41')),_0x2652('0x42'));var _0x4a90ee=ejs[_0x2652('0x43')](_0x1d3f52,{'networks':_0x2c8d88||[]});fs['writeFileSync']('/etc/asterisk/stun_xcally.conf',_0x4a90ee);return respondWithRpcPromise(_0x2652('0x46'),'update',{'module':'res_stun_monitor.so'});}else if(_0x5432d0['type'][_0x2652('0x3d')]()==_0x2652('0x48')){var _0x15761a=fs[_0x2652('0x3f')](path['join'](config['root'],_0x2652('0x4f')),_0x2652('0x42'));var _0x2b3789=ejs[_0x2652('0x43')](_0x15761a,{'networks':_0x2c8d88||[]});fs['writeFileSync'](_0x2652('0x50'),_0x2b3789);return respondWithRpcPromise(_0x2652('0x46'),'update',{'module':_0x2652('0x47')});}else{var _0x1538ac=fs[_0x2652('0x3f')](path[_0x2652('0x4a')](config['root'],_0x2652('0x4b')),_0x2652('0x42'));var _0x37bbad=ejs[_0x2652('0x43')](_0x1538ac,{'networks':_0x2c8d88||[]});fs[_0x2652('0x44')](util[_0x2652('0x4c')](_0x2652('0x51'),_0x3637c4['body'][_0x2652('0x25')][_0x2652('0x4d')]()),_0x37bbad);return respondWithRpcPromise(_0x2652('0x46'),_0x2652('0x1a'),{'module':'chan_sip.so'});}})[_0x2652('0xa')](function(_0x1aad58){if(_0x1aad58){return _0x5432d0;}return null;})['then'](respondWithResult(_0xdeec8f,null))[_0x2652('0x13')](handleError(_0xdeec8f,null));};exports[_0x2652('0x1b')]=function(_0x4839e6,_0x19d140){var _0x1b16ad;return db[_0x2652('0x22')][_0x2652('0x3b')]({'where':{'id':_0x4839e6['params']['id']}})[_0x2652('0xa')](function(_0x4b58d7){_0x1b16ad=_0x4b58d7;return _0x4b58d7;})['then'](handleEntityNotFound(_0x19d140,null))['then'](removeEntity(_0x19d140,null))[_0x2652('0xa')](function(){if(_0x1b16ad){return db[_0x2652('0x22')][_0x2652('0x35')]({'where':{'type':_0x1b16ad[_0x2652('0x25')]},'raw':!![]});}})[_0x2652('0xa')](function(_0xe5a7dc){if(_0x1b16ad[_0x2652('0x25')]['toUpperCase']()==_0x2652('0x3e')){var _0x44ed36=fs['readFileSync'](path[_0x2652('0x4a')](config[_0x2652('0x40')],_0x2652('0x41')),'utf8');var _0x52c015=ejs[_0x2652('0x43')](_0x44ed36,{'networks':_0xe5a7dc||[]});fs[_0x2652('0x44')](_0x2652('0x45'),_0x52c015);return respondWithRpcPromise(_0x2652('0x46'),_0x2652('0x1b'),{'module':_0x2652('0x47')});}else if(_0x1b16ad[_0x2652('0x25')][_0x2652('0x3d')]()=='TURN'){var _0x42e733=fs['readFileSync'](path[_0x2652('0x4a')](config['root'],_0x2652('0x4f')),_0x2652('0x42'));var _0x2ed7b6=ejs[_0x2652('0x43')](_0x42e733,{'networks':_0xe5a7dc||[]});fs[_0x2652('0x44')](_0x2652('0x50'),_0x2ed7b6);return respondWithRpcPromise(_0x2652('0x46'),_0x2652('0x1b'),{'module':_0x2652('0x47')});}else{var _0x403088=fs[_0x2652('0x3f')](path['join'](config[_0x2652('0x40')],_0x2652('0x4b')),_0x2652('0x42'));var _0x59fa49=ejs[_0x2652('0x43')](_0x403088,{'networks':_0xe5a7dc||[]});fs[_0x2652('0x44')](util[_0x2652('0x4c')]('/etc/asterisk/sip_xcally_%s.conf',_0x1b16ad[_0x2652('0x25')][_0x2652('0x4d')]()),_0x59fa49);return respondWithRpcPromise(_0x2652('0x46'),'destroy',{'module':_0x2652('0x4e')});}})[_0x2652('0x13')](handleError(_0x19d140,null));};