b3e7afb368e190393f2edaba7b7ebf4655067a93
[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 _0x6eb7=['model','name','query','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','VIRTUAL','options','Network','includeAll','include','findAll','rows','show','params','keys','intersection','find','create','body','toUpperCase','STUN','join','server/files/templates/stun_multiple.ejs','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','readFileSync','root','server/files/templates/turn_multiple.ejs','utf8','render','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','update','TURN','/etc/asterisk/turn_xcally.conf','util','path','ejs','lodash','../../config/logger','api','../../config/environment','jayson/promise','client','http','then','Network,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','result','catch','status','json','offset','undefined','limit','count','set','destroy','end','send','index','map','rawAttributes','fieldName','key'];(function(_0x47e7cb,_0x4c1b8d){var _0x2a8874=function(_0x36498f){while(--_0x36498f){_0x47e7cb['push'](_0x47e7cb['shift']());}};_0x2a8874(++_0x4c1b8d);}(_0x6eb7,0x87));var _0x76eb=function(_0x116359,_0x346111){_0x116359=_0x116359-0x0;var _0x4b4367=_0x6eb7[_0x116359];return _0x4b4367;};'use strict';var util=require(_0x76eb('0x0'));var path=require(_0x76eb('0x1'));var ejs=require(_0x76eb('0x2'));var fs=require('fs');var _=require(_0x76eb('0x3'));var qs=require('../../components/parsers/qs');var logger=require(_0x76eb('0x4'))(_0x76eb('0x5'));var config=require(_0x76eb('0x6'));var db=require('../../mysqldb')['db'];var jayson=require(_0x76eb('0x7'));var client=jayson[_0x76eb('0x8')][_0x76eb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3fc3cf,_0x54eede,_0x2994ea,_0x1a450f){return new Promise(function(_0xb81a19,_0x1c1f6a){var _0x39e540=_0x1a450f||client;return _0x39e540['request'](_0x3fc3cf,_0x2994ea)[_0x76eb('0xa')](function(_0x4864d6){logger['info'](_0x76eb('0xb'),_0x54eede,_0x76eb('0xc'));logger[_0x76eb('0xd')]('Network,\x20%s,\x20%s,\x20%s',_0x54eede,_0x76eb('0xc'),JSON['stringify'](_0x4864d6));if(_0x4864d6[_0x76eb('0xe')]){if(_0x4864d6['error'][_0x76eb('0xf')]===0x1f4){logger['error'](_0x76eb('0xb'),_0x54eede,_0x4864d6[_0x76eb('0xe')][_0x76eb('0x10')]);return _0x1c1f6a(_0x4864d6['error'][_0x76eb('0x10')]);}logger[_0x76eb('0xe')]('Network,\x20%s,\x20%s',_0x54eede,_0x4864d6[_0x76eb('0xe')][_0x76eb('0x10')]);return _0xb81a19(_0x4864d6[_0x76eb('0xe')][_0x76eb('0x10')]);}else{logger[_0x76eb('0x11')](_0x76eb('0xb'),_0x54eede,'request\x20sent');_0xb81a19(_0x4864d6[_0x76eb('0x12')][_0x76eb('0x10')]);}})[_0x76eb('0x13')](function(_0x2e8f30){logger[_0x76eb('0xe')]('Network,\x20%s,\x20%s',_0x54eede,_0x2e8f30);_0x1c1f6a(_0x2e8f30);});});}function respondWithResult(_0x33107b,_0x28b764){_0x28b764=_0x28b764||0xc8;return function(_0x156600){if(_0x156600){return _0x33107b[_0x76eb('0x14')](_0x28b764)[_0x76eb('0x15')](_0x156600);}};}function respondWithFilteredResult(_0x139163,_0x3ed34d){return function(_0x503b52){if(_0x503b52){var _0x818a02=typeof _0x3ed34d[_0x76eb('0x16')]===_0x76eb('0x17')&&typeof _0x3ed34d[_0x76eb('0x18')]===_0x76eb('0x17');var _0xa447b5=_0x503b52[_0x76eb('0x19')];var _0x15c2de=_0x818a02?0x0:_0x3ed34d[_0x76eb('0x16')];var _0x4a463f=_0x818a02?_0x503b52['count']:_0x3ed34d['offset']+_0x3ed34d[_0x76eb('0x18')];var _0x3af428;if(_0x4a463f>=_0xa447b5){_0x4a463f=_0xa447b5;_0x3af428=0xc8;}else{_0x3af428=0xce;}_0x139163[_0x76eb('0x14')](_0x3af428);return _0x139163[_0x76eb('0x1a')]('Content-Range',_0x15c2de+'-'+_0x4a463f+'/'+_0xa447b5)[_0x76eb('0x15')](_0x503b52);}return null;};}function saveUpdates(_0x2af824){return function(_0x514156){if(_0x514156){return _0x514156['update'](_0x2af824)[_0x76eb('0xa')](function(_0x131d8d){return _0x131d8d;});}return null;};}function removeEntity(_0x263fbd){return function(_0x4ff3a0){if(_0x4ff3a0){return _0x4ff3a0[_0x76eb('0x1b')]()[_0x76eb('0xa')](function(){_0x263fbd[_0x76eb('0x14')](0xcc)[_0x76eb('0x1c')]();});}};}function handleEntityNotFound(_0x20bf48){return function(_0x237b2a){if(!_0x237b2a){_0x20bf48['sendStatus'](0x194);}return _0x237b2a;};}function handleError(_0x2788aa,_0x54f43c){_0x54f43c=_0x54f43c||0x1f4;return function(_0x427637){logger[_0x76eb('0xe')](_0x427637['stack']);if(_0x427637['name']){delete _0x427637['name'];}_0x2788aa[_0x76eb('0x14')](_0x54f43c)[_0x76eb('0x1d')](_0x427637);};}exports[_0x76eb('0x1e')]=function(_0x42c923,_0x48f9f6){var _0x58dda6={},_0x563642={},_0x4419fe={'count':0x0,'rows':[]};var _0x4365e4=_[_0x76eb('0x1f')](db['Network'][_0x76eb('0x20')],function(_0x443920){return{'name':_0x443920[_0x76eb('0x21')],'type':_0x443920['type'][_0x76eb('0x22')]};});_0x563642[_0x76eb('0x23')]=_[_0x76eb('0x1f')](_0x4365e4,_0x76eb('0x24'));_0x563642['query']=_['keys'](_0x42c923[_0x76eb('0x25')]);_0x563642[_0x76eb('0x26')]=_['intersection'](_0x563642[_0x76eb('0x23')],_0x563642[_0x76eb('0x25')]);_0x58dda6[_0x76eb('0x27')]=_['intersection'](_0x563642[_0x76eb('0x23')],qs['fields'](_0x42c923[_0x76eb('0x25')][_0x76eb('0x28')]));_0x58dda6[_0x76eb('0x27')]=_0x58dda6[_0x76eb('0x27')][_0x76eb('0x29')]?_0x58dda6[_0x76eb('0x27')]:_0x563642[_0x76eb('0x23')];if(!_0x42c923[_0x76eb('0x25')][_0x76eb('0x2a')](_0x76eb('0x2b'))){_0x58dda6['limit']=qs[_0x76eb('0x18')](_0x42c923[_0x76eb('0x25')]['limit']);_0x58dda6[_0x76eb('0x16')]=qs[_0x76eb('0x16')](_0x42c923[_0x76eb('0x25')][_0x76eb('0x16')]);}_0x58dda6[_0x76eb('0x2c')]=qs[_0x76eb('0x2d')](_0x42c923[_0x76eb('0x25')][_0x76eb('0x2d')]);_0x58dda6[_0x76eb('0x2e')]=qs[_0x76eb('0x26')](_[_0x76eb('0x2f')](_0x42c923[_0x76eb('0x25')],_0x563642[_0x76eb('0x26')]),_0x4365e4);if(_0x42c923[_0x76eb('0x25')]['filter']){_0x58dda6[_0x76eb('0x2e')]=_[_0x76eb('0x30')](_0x58dda6['where'],{'$or':_['map'](_0x4365e4,function(_0x246fd1){if(_0x246fd1[_0x76eb('0x31')]!==_0x76eb('0x32')){var _0xe39fa8={};_0xe39fa8[_0x246fd1['name']]={'$like':'%'+_0x42c923[_0x76eb('0x25')]['filter']+'%'};return _0xe39fa8;}})});}_0x58dda6=_[_0x76eb('0x30')]({},_0x58dda6,_0x42c923[_0x76eb('0x33')]);var _0x10789a={'where':_0x58dda6[_0x76eb('0x2e')]};return db[_0x76eb('0x34')][_0x76eb('0x19')](_0x10789a)[_0x76eb('0xa')](function(_0x5bd6ed){_0x4419fe['count']=_0x5bd6ed;if(_0x42c923[_0x76eb('0x25')][_0x76eb('0x35')]){_0x58dda6[_0x76eb('0x36')]=[{'all':!![]}];}return db[_0x76eb('0x34')][_0x76eb('0x37')](_0x58dda6);})[_0x76eb('0xa')](function(_0x4a1d0c){_0x4419fe[_0x76eb('0x38')]=_0x4a1d0c;return _0x4419fe;})[_0x76eb('0xa')](respondWithFilteredResult(_0x48f9f6,_0x58dda6))[_0x76eb('0x13')](handleError(_0x48f9f6,null));};exports[_0x76eb('0x39')]=function(_0x1a69e8,_0xae2298){var _0x577e11={'raw':!![],'where':{'id':_0x1a69e8[_0x76eb('0x3a')]['id']}},_0x366695={};_0x366695[_0x76eb('0x23')]=_['keys'](db[_0x76eb('0x34')]['rawAttributes']);_0x366695[_0x76eb('0x25')]=_[_0x76eb('0x3b')](_0x1a69e8[_0x76eb('0x25')]);_0x366695[_0x76eb('0x26')]=_[_0x76eb('0x3c')](_0x366695['model'],_0x366695[_0x76eb('0x25')]);_0x577e11[_0x76eb('0x27')]=_[_0x76eb('0x3c')](_0x366695[_0x76eb('0x23')],qs[_0x76eb('0x28')](_0x1a69e8['query'][_0x76eb('0x28')]));_0x577e11[_0x76eb('0x27')]=_0x577e11['attributes'][_0x76eb('0x29')]?_0x577e11[_0x76eb('0x27')]:_0x366695[_0x76eb('0x23')];if(_0x1a69e8[_0x76eb('0x25')][_0x76eb('0x35')]){_0x577e11['include']=[{'all':!![]}];}_0x577e11=_[_0x76eb('0x30')]({},_0x577e11,_0x1a69e8['options']);return db[_0x76eb('0x34')][_0x76eb('0x3d')](_0x577e11)[_0x76eb('0xa')](handleEntityNotFound(_0xae2298,null))[_0x76eb('0xa')](respondWithResult(_0xae2298,null))[_0x76eb('0x13')](handleError(_0xae2298,null));};exports[_0x76eb('0x3e')]=function(_0x3132cf,_0x4b1fb6){var _0x5e125d;return db[_0x76eb('0x34')][_0x76eb('0x3e')](_0x3132cf[_0x76eb('0x3f')],{'raw':!![]})['then'](function(_0x851c5a){_0x5e125d=_0x851c5a;return db[_0x76eb('0x34')][_0x76eb('0x37')]({'where':{'type':_0x3132cf[_0x76eb('0x3f')][_0x76eb('0x31')]},'raw':!![]});})['then'](function(_0x49148c){if(_0x5e125d[_0x76eb('0x31')][_0x76eb('0x40')]()==_0x76eb('0x41')){var _0x446514=fs['readFileSync'](path[_0x76eb('0x42')](config['root'],_0x76eb('0x43')),'utf8');var _0x56d230=ejs['render'](_0x446514,{'networks':_0x49148c||[]});fs[_0x76eb('0x44')](_0x76eb('0x45'),_0x56d230);return respondWithRpcPromise(_0x76eb('0x46'),_0x76eb('0x3e'),{'module':_0x76eb('0x47')});}else if(_0x5e125d['type'][_0x76eb('0x40')]()=='TURN'){var _0x310789=fs[_0x76eb('0x48')](path[_0x76eb('0x42')](config[_0x76eb('0x49')],_0x76eb('0x4a')),_0x76eb('0x4b'));var _0x26ad8c=ejs[_0x76eb('0x4c')](_0x310789,{'networks':_0x49148c||[]});fs[_0x76eb('0x44')]('/etc/asterisk/turn_xcally.conf',_0x26ad8c);return respondWithRpcPromise(_0x76eb('0x46'),_0x76eb('0x3e'),{'module':_0x76eb('0x47')});}else{var _0xff33da=fs[_0x76eb('0x48')](path[_0x76eb('0x42')](config[_0x76eb('0x49')],_0x76eb('0x4d')),_0x76eb('0x4b'));var _0x20ad2d=ejs[_0x76eb('0x4c')](_0xff33da,{'networks':_0x49148c||[]});fs[_0x76eb('0x44')](util[_0x76eb('0x4e')](_0x76eb('0x4f'),_0x3132cf[_0x76eb('0x3f')]['type'][_0x76eb('0x50')]()),_0x20ad2d);return respondWithRpcPromise('Reload','create',{'module':_0x76eb('0x51')});}})['then'](function(){return _0x5e125d;})['then'](respondWithResult(_0x4b1fb6,0xc9))[_0x76eb('0x13')](handleError(_0x4b1fb6,null));};exports[_0x76eb('0x52')]=function(_0x27496b,_0x3e899d){var _0x2721bb;return db[_0x76eb('0x34')]['find']({'where':{'id':_0x27496b[_0x76eb('0x3a')]['id']}})[_0x76eb('0xa')](handleEntityNotFound(_0x3e899d,null))[_0x76eb('0xa')](saveUpdates(_0x27496b[_0x76eb('0x3f')],null))[_0x76eb('0xa')](function(_0x51e37a){if(_0x51e37a){_0x2721bb=_0x51e37a;return db['Network'][_0x76eb('0x37')]({'where':{'type':_0x2721bb[_0x76eb('0x31')]},'raw':!![]});}return null;})[_0x76eb('0xa')](function(_0x4a5c03){if(_0x2721bb[_0x76eb('0x31')][_0x76eb('0x40')]()=='STUN'){var _0x453214=fs[_0x76eb('0x48')](path[_0x76eb('0x42')](config[_0x76eb('0x49')],'server/files/templates/stun_multiple.ejs'),_0x76eb('0x4b'));var _0x1270b0=ejs['render'](_0x453214,{'networks':_0x4a5c03||[]});fs[_0x76eb('0x44')]('/etc/asterisk/stun_xcally.conf',_0x1270b0);return respondWithRpcPromise(_0x76eb('0x46'),_0x76eb('0x52'),{'module':_0x76eb('0x47')});}else if(_0x2721bb['type']['toUpperCase']()==_0x76eb('0x53')){var _0xce2314=fs[_0x76eb('0x48')](path[_0x76eb('0x42')](config['root'],'server/files/templates/turn_multiple.ejs'),_0x76eb('0x4b'));var _0x506783=ejs[_0x76eb('0x4c')](_0xce2314,{'networks':_0x4a5c03||[]});fs[_0x76eb('0x44')]('/etc/asterisk/turn_xcally.conf',_0x506783);return respondWithRpcPromise(_0x76eb('0x46'),_0x76eb('0x52'),{'module':_0x76eb('0x47')});}else{var _0xf89e3f=fs[_0x76eb('0x48')](path[_0x76eb('0x42')](config[_0x76eb('0x49')],_0x76eb('0x4d')),_0x76eb('0x4b'));var _0x14f6e3=ejs[_0x76eb('0x4c')](_0xf89e3f,{'networks':_0x4a5c03||[]});fs[_0x76eb('0x44')](util[_0x76eb('0x4e')]('/etc/asterisk/sip_xcally_%s.conf',_0x27496b[_0x76eb('0x3f')][_0x76eb('0x31')][_0x76eb('0x50')]()),_0x14f6e3);return respondWithRpcPromise(_0x76eb('0x46'),_0x76eb('0x52'),{'module':_0x76eb('0x51')});}})['then'](function(_0x5e3df8){if(_0x5e3df8){return _0x2721bb;}return null;})[_0x76eb('0xa')](respondWithResult(_0x3e899d,null))[_0x76eb('0x13')](handleError(_0x3e899d,null));};exports['destroy']=function(_0xb946ed,_0x437956){var _0x212fc1;return db['Network']['find']({'where':{'id':_0xb946ed[_0x76eb('0x3a')]['id']}})['then'](function(_0xbfc4b3){_0x212fc1=_0xbfc4b3;return _0xbfc4b3;})[_0x76eb('0xa')](handleEntityNotFound(_0x437956,null))['then'](removeEntity(_0x437956,null))[_0x76eb('0xa')](function(){if(_0x212fc1){return db[_0x76eb('0x34')][_0x76eb('0x37')]({'where':{'type':_0x212fc1[_0x76eb('0x31')]},'raw':!![]});}})[_0x76eb('0xa')](function(_0x5c8443){if(_0x212fc1[_0x76eb('0x31')][_0x76eb('0x40')]()==_0x76eb('0x41')){var _0x5afb55=fs[_0x76eb('0x48')](path[_0x76eb('0x42')](config[_0x76eb('0x49')],_0x76eb('0x43')),_0x76eb('0x4b'));var _0x145717=ejs[_0x76eb('0x4c')](_0x5afb55,{'networks':_0x5c8443||[]});fs['writeFileSync'](_0x76eb('0x45'),_0x145717);return respondWithRpcPromise(_0x76eb('0x46'),_0x76eb('0x1b'),{'module':_0x76eb('0x47')});}else if(_0x212fc1[_0x76eb('0x31')][_0x76eb('0x40')]()=='TURN'){var _0x82cfdf=fs[_0x76eb('0x48')](path[_0x76eb('0x42')](config[_0x76eb('0x49')],_0x76eb('0x4a')),_0x76eb('0x4b'));var _0x4de1ee=ejs[_0x76eb('0x4c')](_0x82cfdf,{'networks':_0x5c8443||[]});fs[_0x76eb('0x44')](_0x76eb('0x54'),_0x4de1ee);return respondWithRpcPromise(_0x76eb('0x46'),_0x76eb('0x1b'),{'module':_0x76eb('0x47')});}else{var _0x480309=fs[_0x76eb('0x48')](path[_0x76eb('0x42')](config[_0x76eb('0x49')],'server/files/templates/network.ejs'),_0x76eb('0x4b'));var _0x1ced04=ejs['render'](_0x480309,{'networks':_0x5c8443||[]});fs[_0x76eb('0x44')](util[_0x76eb('0x4e')](_0x76eb('0x4f'),_0x212fc1[_0x76eb('0x31')]['toLowerCase']()),_0x1ced04);return respondWithRpcPromise(_0x76eb('0x46'),'destroy',{'module':'chan_sip.so'});}})[_0x76eb('0x13')](handleError(_0x437956,null));};