f8d050521a282cd79f4274a6fe19f3a2a0349644
[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 _0x1b65=['catch','status','offset','undefined','limit','count','set','Content-Range','json','update','then','end','sendStatus','name','send','map','Network','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','include','findAll','rows','show','params','keys','length','includeAll','find','create','body','toUpperCase','STUN','root','server/files/templates/stun_multiple.ejs','utf8','render','writeFileSync','/etc/asterisk/stun_xcally.conf','res_stun_monitor.so','TURN','readFileSync','server/files/templates/turn_multiple.ejs','join','server/files/templates/network.ejs','format','Reload','chan_sip.so','/etc/asterisk/sip_xcally_%s.conf','/etc/asterisk/turn_xcally.conf','destroy','toLowerCase','util','path','ejs','lodash','../../components/parsers/qs','../../config/logger','../../mysqldb','jayson/promise','http','request','info','request\x20sent','Network,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Network,\x20%s,\x20%s','result'];(function(_0x14aaae,_0x2da6cd){var _0x4584b7=function(_0x20ee3f){while(--_0x20ee3f){_0x14aaae['push'](_0x14aaae['shift']());}};_0x4584b7(++_0x2da6cd);}(_0x1b65,0xf2));var _0x51b6=function(_0x97501e,_0x48c8fd){_0x97501e=_0x97501e-0x0;var _0x5919c8=_0x1b65[_0x97501e];return _0x5919c8;};'use strict';var util=require(_0x51b6('0x0'));var path=require(_0x51b6('0x1'));var ejs=require(_0x51b6('0x2'));var fs=require('fs');var _=require(_0x51b6('0x3'));var qs=require(_0x51b6('0x4'));var logger=require(_0x51b6('0x5'))('api');var config=require('../../config/environment');var db=require(_0x51b6('0x6'))['db'];var jayson=require(_0x51b6('0x7'));var client=jayson['client'][_0x51b6('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x364667,_0x20341b,_0x5a7633,_0x697b9c){return new Promise(function(_0x20ae35,_0x427d5c){var _0x58ce68=_0x697b9c||client;return _0x58ce68[_0x51b6('0x9')](_0x364667,_0x5a7633)['then'](function(_0x94fbe){logger[_0x51b6('0xa')]('Network,\x20%s,\x20%s',_0x20341b,_0x51b6('0xb'));logger['debug'](_0x51b6('0xc'),_0x20341b,_0x51b6('0xb'),JSON[_0x51b6('0xd')](_0x94fbe));if(_0x94fbe[_0x51b6('0xe')]){if(_0x94fbe[_0x51b6('0xe')][_0x51b6('0xf')]===0x1f4){logger[_0x51b6('0xe')]('Network,\x20%s,\x20%s',_0x20341b,_0x94fbe['error'][_0x51b6('0x10')]);return _0x427d5c(_0x94fbe[_0x51b6('0xe')]['message']);}logger[_0x51b6('0xe')](_0x51b6('0x11'),_0x20341b,_0x94fbe[_0x51b6('0xe')][_0x51b6('0x10')]);return _0x20ae35(_0x94fbe[_0x51b6('0xe')][_0x51b6('0x10')]);}else{logger[_0x51b6('0xa')]('Network,\x20%s,\x20%s',_0x20341b,_0x51b6('0xb'));_0x20ae35(_0x94fbe[_0x51b6('0x12')]['message']);}})[_0x51b6('0x13')](function(_0x7bee98){logger[_0x51b6('0xe')](_0x51b6('0x11'),_0x20341b,_0x7bee98);_0x427d5c(_0x7bee98);});});}function respondWithResult(_0x4f866a,_0x202ae9){_0x202ae9=_0x202ae9||0xc8;return function(_0x82d9e){if(_0x82d9e){return _0x4f866a[_0x51b6('0x14')](_0x202ae9)['json'](_0x82d9e);}};}function respondWithFilteredResult(_0x372699,_0x2c23f3){return function(_0x290d88){if(_0x290d88){var _0x1b7fc7=typeof _0x2c23f3[_0x51b6('0x15')]===_0x51b6('0x16')&&typeof _0x2c23f3[_0x51b6('0x17')]===_0x51b6('0x16');var _0xe3af84=_0x290d88['count'];var _0x372868=_0x1b7fc7?0x0:_0x2c23f3[_0x51b6('0x15')];var _0x2f58c2=_0x1b7fc7?_0x290d88[_0x51b6('0x18')]:_0x2c23f3[_0x51b6('0x15')]+_0x2c23f3[_0x51b6('0x17')];var _0x2097be;if(_0x2f58c2>=_0xe3af84){_0x2f58c2=_0xe3af84;_0x2097be=0xc8;}else{_0x2097be=0xce;}_0x372699[_0x51b6('0x14')](_0x2097be);return _0x372699[_0x51b6('0x19')](_0x51b6('0x1a'),_0x372868+'-'+_0x2f58c2+'/'+_0xe3af84)[_0x51b6('0x1b')](_0x290d88);}return null;};}function saveUpdates(_0x2ef995){return function(_0x65fe28){if(_0x65fe28){return _0x65fe28[_0x51b6('0x1c')](_0x2ef995)[_0x51b6('0x1d')](function(_0x2c2410){return _0x2c2410;});}return null;};}function removeEntity(_0x4d1444){return function(_0x1b62ed){if(_0x1b62ed){return _0x1b62ed['destroy']()['then'](function(){_0x4d1444[_0x51b6('0x14')](0xcc)[_0x51b6('0x1e')]();});}};}function handleEntityNotFound(_0x3bef46){return function(_0x1d8ed1){if(!_0x1d8ed1){_0x3bef46[_0x51b6('0x1f')](0x194);}return _0x1d8ed1;};}function handleError(_0x5d1077,_0x34ba47){_0x34ba47=_0x34ba47||0x1f4;return function(_0x599fed){logger[_0x51b6('0xe')](_0x599fed['stack']);if(_0x599fed[_0x51b6('0x20')]){delete _0x599fed['name'];}_0x5d1077[_0x51b6('0x14')](_0x34ba47)[_0x51b6('0x21')](_0x599fed);};}exports['index']=function(_0x460f8e,_0x25aea2){var _0x700d23={},_0x52db4f={},_0x6093d7={'count':0x0,'rows':[]};var _0x4da01a=_[_0x51b6('0x22')](db[_0x51b6('0x23')][_0x51b6('0x24')],function(_0x519ef7){return{'name':_0x519ef7[_0x51b6('0x25')],'type':_0x519ef7[_0x51b6('0x26')][_0x51b6('0x27')]};});_0x52db4f[_0x51b6('0x28')]=_[_0x51b6('0x22')](_0x4da01a,'name');_0x52db4f[_0x51b6('0x29')]=_['keys'](_0x460f8e['query']);_0x52db4f[_0x51b6('0x2a')]=_[_0x51b6('0x2b')](_0x52db4f['model'],_0x52db4f[_0x51b6('0x29')]);_0x700d23[_0x51b6('0x2c')]=_[_0x51b6('0x2b')](_0x52db4f[_0x51b6('0x28')],qs[_0x51b6('0x2d')](_0x460f8e[_0x51b6('0x29')][_0x51b6('0x2d')]));_0x700d23[_0x51b6('0x2c')]=_0x700d23[_0x51b6('0x2c')]['length']?_0x700d23[_0x51b6('0x2c')]:_0x52db4f[_0x51b6('0x28')];if(!_0x460f8e[_0x51b6('0x29')][_0x51b6('0x2e')](_0x51b6('0x2f'))){_0x700d23[_0x51b6('0x17')]=qs[_0x51b6('0x17')](_0x460f8e['query']['limit']);_0x700d23[_0x51b6('0x15')]=qs[_0x51b6('0x15')](_0x460f8e['query'][_0x51b6('0x15')]);}_0x700d23[_0x51b6('0x30')]=qs['sort'](_0x460f8e[_0x51b6('0x29')][_0x51b6('0x31')]);_0x700d23[_0x51b6('0x32')]=qs[_0x51b6('0x2a')](_[_0x51b6('0x33')](_0x460f8e[_0x51b6('0x29')],_0x52db4f[_0x51b6('0x2a')]),_0x4da01a);if(_0x460f8e[_0x51b6('0x29')][_0x51b6('0x34')]){_0x700d23['where']=_[_0x51b6('0x35')](_0x700d23[_0x51b6('0x32')],{'$or':_[_0x51b6('0x22')](_0x4da01a,function(_0x28932a){if(_0x28932a['type']!=='VIRTUAL'){var _0x55f8f2={};_0x55f8f2[_0x28932a[_0x51b6('0x20')]]={'$like':'%'+_0x460f8e['query'][_0x51b6('0x34')]+'%'};return _0x55f8f2;}})});}_0x700d23=_[_0x51b6('0x35')]({},_0x700d23,_0x460f8e[_0x51b6('0x36')]);var _0x1bd123={'where':_0x700d23['where']};return db['Network']['count'](_0x1bd123)[_0x51b6('0x1d')](function(_0x389b23){_0x6093d7[_0x51b6('0x18')]=_0x389b23;if(_0x460f8e['query']['includeAll']){_0x700d23[_0x51b6('0x37')]=[{'all':!![]}];}return db['Network'][_0x51b6('0x38')](_0x700d23);})[_0x51b6('0x1d')](function(_0x240531){_0x6093d7[_0x51b6('0x39')]=_0x240531;return _0x6093d7;})['then'](respondWithFilteredResult(_0x25aea2,_0x700d23))['catch'](handleError(_0x25aea2,null));};exports[_0x51b6('0x3a')]=function(_0x4e1b05,_0x26882a){var _0x646069={'raw':!![],'where':{'id':_0x4e1b05[_0x51b6('0x3b')]['id']}},_0x57687f={};_0x57687f[_0x51b6('0x28')]=_[_0x51b6('0x3c')](db[_0x51b6('0x23')]['rawAttributes']);_0x57687f[_0x51b6('0x29')]=_[_0x51b6('0x3c')](_0x4e1b05[_0x51b6('0x29')]);_0x57687f[_0x51b6('0x2a')]=_['intersection'](_0x57687f[_0x51b6('0x28')],_0x57687f['query']);_0x646069[_0x51b6('0x2c')]=_[_0x51b6('0x2b')](_0x57687f[_0x51b6('0x28')],qs['fields'](_0x4e1b05['query'][_0x51b6('0x2d')]));_0x646069[_0x51b6('0x2c')]=_0x646069[_0x51b6('0x2c')][_0x51b6('0x3d')]?_0x646069[_0x51b6('0x2c')]:_0x57687f['model'];if(_0x4e1b05[_0x51b6('0x29')][_0x51b6('0x3e')]){_0x646069[_0x51b6('0x37')]=[{'all':!![]}];}_0x646069=_['merge']({},_0x646069,_0x4e1b05[_0x51b6('0x36')]);return db[_0x51b6('0x23')][_0x51b6('0x3f')](_0x646069)[_0x51b6('0x1d')](handleEntityNotFound(_0x26882a,null))[_0x51b6('0x1d')](respondWithResult(_0x26882a,null))['catch'](handleError(_0x26882a,null));};exports[_0x51b6('0x40')]=function(_0x41facb,_0x1fbb6b){var _0x504f49;return db[_0x51b6('0x23')][_0x51b6('0x40')](_0x41facb['body'],{'raw':!![]})[_0x51b6('0x1d')](function(_0x1a8eec){_0x504f49=_0x1a8eec;return db['Network'][_0x51b6('0x38')]({'where':{'type':_0x41facb[_0x51b6('0x41')][_0x51b6('0x26')]},'raw':!![]});})['then'](function(_0xd442ff){if(_0x504f49[_0x51b6('0x26')][_0x51b6('0x42')]()==_0x51b6('0x43')){var _0xb234d3=fs['readFileSync'](path['join'](config[_0x51b6('0x44')],_0x51b6('0x45')),_0x51b6('0x46'));var _0x3222db=ejs[_0x51b6('0x47')](_0xb234d3,{'networks':_0xd442ff||[]});fs[_0x51b6('0x48')](_0x51b6('0x49'),_0x3222db);return respondWithRpcPromise('Reload',_0x51b6('0x40'),{'module':_0x51b6('0x4a')});}else if(_0x504f49[_0x51b6('0x26')]['toUpperCase']()==_0x51b6('0x4b')){var _0x3f3777=fs[_0x51b6('0x4c')](path['join'](config[_0x51b6('0x44')],_0x51b6('0x4d')),_0x51b6('0x46'));var _0x5e9afd=ejs[_0x51b6('0x47')](_0x3f3777,{'networks':_0xd442ff||[]});fs[_0x51b6('0x48')]('/etc/asterisk/turn_xcally.conf',_0x5e9afd);return respondWithRpcPromise('Reload',_0x51b6('0x40'),{'module':_0x51b6('0x4a')});}else{var _0x3d56ed=fs[_0x51b6('0x4c')](path[_0x51b6('0x4e')](config[_0x51b6('0x44')],_0x51b6('0x4f')),'utf8');var _0x4584ad=ejs[_0x51b6('0x47')](_0x3d56ed,{'networks':_0xd442ff||[]});fs[_0x51b6('0x48')](util[_0x51b6('0x50')]('/etc/asterisk/sip_xcally_%s.conf',_0x41facb[_0x51b6('0x41')][_0x51b6('0x26')]['toLowerCase']()),_0x4584ad);return respondWithRpcPromise(_0x51b6('0x51'),_0x51b6('0x40'),{'module':_0x51b6('0x52')});}})[_0x51b6('0x1d')](function(){return _0x504f49;})[_0x51b6('0x1d')](respondWithResult(_0x1fbb6b,0xc9))[_0x51b6('0x13')](handleError(_0x1fbb6b,null));};exports[_0x51b6('0x1c')]=function(_0xba93b2,_0x3ab4c1){var _0x1c11ba;return db['Network'][_0x51b6('0x3f')]({'where':{'id':_0xba93b2['params']['id']}})[_0x51b6('0x1d')](handleEntityNotFound(_0x3ab4c1,null))[_0x51b6('0x1d')](saveUpdates(_0xba93b2['body'],null))[_0x51b6('0x1d')](function(_0x3cc214){if(_0x3cc214){_0x1c11ba=_0x3cc214;return db[_0x51b6('0x23')]['findAll']({'where':{'type':_0x1c11ba['type']},'raw':!![]});}return null;})['then'](function(_0x2d9b86){if(_0x1c11ba[_0x51b6('0x26')][_0x51b6('0x42')]()==_0x51b6('0x43')){var _0x5050e8=fs['readFileSync'](path[_0x51b6('0x4e')](config[_0x51b6('0x44')],_0x51b6('0x45')),_0x51b6('0x46'));var _0x441cd2=ejs[_0x51b6('0x47')](_0x5050e8,{'networks':_0x2d9b86||[]});fs['writeFileSync']('/etc/asterisk/stun_xcally.conf',_0x441cd2);return respondWithRpcPromise('Reload',_0x51b6('0x1c'),{'module':_0x51b6('0x4a')});}else if(_0x1c11ba[_0x51b6('0x26')][_0x51b6('0x42')]()==_0x51b6('0x4b')){var _0x53c6c1=fs[_0x51b6('0x4c')](path['join'](config[_0x51b6('0x44')],_0x51b6('0x4d')),'utf8');var _0x47258f=ejs[_0x51b6('0x47')](_0x53c6c1,{'networks':_0x2d9b86||[]});fs[_0x51b6('0x48')]('/etc/asterisk/turn_xcally.conf',_0x47258f);return respondWithRpcPromise(_0x51b6('0x51'),_0x51b6('0x1c'),{'module':'res_stun_monitor.so'});}else{var _0x9c8723=fs[_0x51b6('0x4c')](path[_0x51b6('0x4e')](config['root'],'server/files/templates/network.ejs'),_0x51b6('0x46'));var _0x2580ee=ejs['render'](_0x9c8723,{'networks':_0x2d9b86||[]});fs[_0x51b6('0x48')](util[_0x51b6('0x50')](_0x51b6('0x53'),_0xba93b2[_0x51b6('0x41')][_0x51b6('0x26')]['toLowerCase']()),_0x2580ee);return respondWithRpcPromise(_0x51b6('0x51'),_0x51b6('0x1c'),{'module':'chan_sip.so'});}})['then'](function(_0x382270){if(_0x382270){return _0x1c11ba;}return null;})[_0x51b6('0x1d')](respondWithResult(_0x3ab4c1,null))[_0x51b6('0x13')](handleError(_0x3ab4c1,null));};exports['destroy']=function(_0x2a5a4d,_0x3c1624){var _0x4dea88;return db[_0x51b6('0x23')]['find']({'where':{'id':_0x2a5a4d[_0x51b6('0x3b')]['id']}})['then'](function(_0x5840eb){_0x4dea88=_0x5840eb;return _0x5840eb;})[_0x51b6('0x1d')](handleEntityNotFound(_0x3c1624,null))[_0x51b6('0x1d')](removeEntity(_0x3c1624,null))[_0x51b6('0x1d')](function(){if(_0x4dea88){return db['Network'][_0x51b6('0x38')]({'where':{'type':_0x4dea88[_0x51b6('0x26')]},'raw':!![]});}})[_0x51b6('0x1d')](function(_0x23feb3){if(_0x4dea88[_0x51b6('0x26')]['toUpperCase']()=='STUN'){var _0x153691=fs[_0x51b6('0x4c')](path[_0x51b6('0x4e')](config[_0x51b6('0x44')],_0x51b6('0x45')),_0x51b6('0x46'));var _0x127695=ejs[_0x51b6('0x47')](_0x153691,{'networks':_0x23feb3||[]});fs['writeFileSync'](_0x51b6('0x49'),_0x127695);return respondWithRpcPromise(_0x51b6('0x51'),'destroy',{'module':_0x51b6('0x4a')});}else if(_0x4dea88[_0x51b6('0x26')][_0x51b6('0x42')]()==_0x51b6('0x4b')){var _0x1fa7ff=fs[_0x51b6('0x4c')](path[_0x51b6('0x4e')](config[_0x51b6('0x44')],_0x51b6('0x4d')),_0x51b6('0x46'));var _0x54bf04=ejs[_0x51b6('0x47')](_0x1fa7ff,{'networks':_0x23feb3||[]});fs[_0x51b6('0x48')](_0x51b6('0x54'),_0x54bf04);return respondWithRpcPromise(_0x51b6('0x51'),_0x51b6('0x55'),{'module':_0x51b6('0x4a')});}else{var _0x242762=fs[_0x51b6('0x4c')](path[_0x51b6('0x4e')](config[_0x51b6('0x44')],'server/files/templates/network.ejs'),_0x51b6('0x46'));var _0x290a91=ejs[_0x51b6('0x47')](_0x242762,{'networks':_0x23feb3||[]});fs['writeFileSync'](util[_0x51b6('0x50')](_0x51b6('0x53'),_0x4dea88['type'][_0x51b6('0x56')]()),_0x290a91);return respondWithRpcPromise(_0x51b6('0x51'),_0x51b6('0x55'),{'module':_0x51b6('0x52')});}})['catch'](handleError(_0x3c1624,null));};