b608dfe3b0fe488a7938ae5ee32e01c9462f57d8
[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 _0x9c1d=['send','map','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','Network','includeAll','rows','show','params','rawAttributes','length','find','create','body','toUpperCase','STUN','readFileSync','join','root','utf8','render','writeFileSync','Reload','res_stun_monitor.so','TURN','server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','format','toLowerCase','chan_sip.so','findAll','server/files/templates/stun_multiple.ejs','/etc/asterisk/stun_xcally.conf','/etc/asterisk/sip_xcally_%s.conf','destroy','util','path','ejs','../../components/parsers/qs','../../config/logger','api','../../mysqldb','jayson/promise','client','http','request','then','info','Network,\x20%s,\x20%s','request\x20sent','Network,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','json','offset','undefined','limit','count','set','Content-Range','update','end','sendStatus','stack','name'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x9c1d,0x1e8));var _0xd9c1=function(_0x2dd8c9,_0x59c2d6){_0x2dd8c9=_0x2dd8c9-0x0;var _0xa2a5c7=_0x9c1d[_0x2dd8c9];return _0xa2a5c7;};'use strict';var util=require(_0xd9c1('0x0'));var path=require(_0xd9c1('0x1'));var ejs=require(_0xd9c1('0x2'));var fs=require('fs');var _=require('lodash');var qs=require(_0xd9c1('0x3'));var logger=require(_0xd9c1('0x4'))(_0xd9c1('0x5'));var config=require('../../config/environment');var db=require(_0xd9c1('0x6'))['db'];var jayson=require(_0xd9c1('0x7'));var client=jayson[_0xd9c1('0x8')][_0xd9c1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x545b2d,_0x33daec,_0x8107b3,_0x3d62ed){return new Promise(function(_0x5acd7c,_0x4f891c){var _0x5790bf=_0x3d62ed||client;return _0x5790bf[_0xd9c1('0xa')](_0x545b2d,_0x8107b3)[_0xd9c1('0xb')](function(_0x380d27){logger[_0xd9c1('0xc')](_0xd9c1('0xd'),_0x33daec,_0xd9c1('0xe'));logger['debug'](_0xd9c1('0xf'),_0x33daec,_0xd9c1('0xe'),JSON[_0xd9c1('0x10')](_0x380d27));if(_0x380d27[_0xd9c1('0x11')]){if(_0x380d27['error'][_0xd9c1('0x12')]===0x1f4){logger[_0xd9c1('0x11')](_0xd9c1('0xd'),_0x33daec,_0x380d27['error'][_0xd9c1('0x13')]);return _0x4f891c(_0x380d27[_0xd9c1('0x11')]['message']);}logger['error'](_0xd9c1('0xd'),_0x33daec,_0x380d27['error'][_0xd9c1('0x13')]);return _0x5acd7c(_0x380d27[_0xd9c1('0x11')]['message']);}else{logger[_0xd9c1('0xc')](_0xd9c1('0xd'),_0x33daec,_0xd9c1('0xe'));_0x5acd7c(_0x380d27[_0xd9c1('0x14')][_0xd9c1('0x13')]);}})[_0xd9c1('0x15')](function(_0x5d0740){logger[_0xd9c1('0x11')](_0xd9c1('0xd'),_0x33daec,_0x5d0740);_0x4f891c(_0x5d0740);});});}function respondWithResult(_0x333b8f,_0x3f36fa){_0x3f36fa=_0x3f36fa||0xc8;return function(_0x14d5fc){if(_0x14d5fc){return _0x333b8f['status'](_0x3f36fa)[_0xd9c1('0x16')](_0x14d5fc);}};}function respondWithFilteredResult(_0x243c29,_0x4a5fba){return function(_0xef2c0c){if(_0xef2c0c){var _0x5bda4c=typeof _0x4a5fba[_0xd9c1('0x17')]===_0xd9c1('0x18')&&typeof _0x4a5fba[_0xd9c1('0x19')]===_0xd9c1('0x18');var _0x3be98e=_0xef2c0c[_0xd9c1('0x1a')];var _0x573791=_0x5bda4c?0x0:_0x4a5fba[_0xd9c1('0x17')];var _0x5d057e=_0x5bda4c?_0xef2c0c['count']:_0x4a5fba[_0xd9c1('0x17')]+_0x4a5fba[_0xd9c1('0x19')];var _0x3f8bf7;if(_0x5d057e>=_0x3be98e){_0x5d057e=_0x3be98e;_0x3f8bf7=0xc8;}else{_0x3f8bf7=0xce;}_0x243c29['status'](_0x3f8bf7);return _0x243c29[_0xd9c1('0x1b')](_0xd9c1('0x1c'),_0x573791+'-'+_0x5d057e+'/'+_0x3be98e)[_0xd9c1('0x16')](_0xef2c0c);}return null;};}function saveUpdates(_0x9bcb1b){return function(_0xced11c){if(_0xced11c){return _0xced11c[_0xd9c1('0x1d')](_0x9bcb1b)[_0xd9c1('0xb')](function(_0x3b80e6){return _0x3b80e6;});}return null;};}function removeEntity(_0xad6aeb){return function(_0x12f1a7){if(_0x12f1a7){return _0x12f1a7['destroy']()[_0xd9c1('0xb')](function(){_0xad6aeb['status'](0xcc)[_0xd9c1('0x1e')]();});}};}function handleEntityNotFound(_0x4cc0ef){return function(_0x316d5f){if(!_0x316d5f){_0x4cc0ef[_0xd9c1('0x1f')](0x194);}return _0x316d5f;};}function handleError(_0x340828,_0x22d6cc){_0x22d6cc=_0x22d6cc||0x1f4;return function(_0x5b6c28){logger[_0xd9c1('0x11')](_0x5b6c28[_0xd9c1('0x20')]);if(_0x5b6c28[_0xd9c1('0x21')]){delete _0x5b6c28[_0xd9c1('0x21')];}_0x340828['status'](_0x22d6cc)[_0xd9c1('0x22')](_0x5b6c28);};}exports['index']=function(_0x16c41f,_0x5e394f){var _0x1f2344={},_0x378b37={},_0x22e772={'count':0x0,'rows':[]};var _0x591f8c=_[_0xd9c1('0x23')](db['Network']['rawAttributes'],function(_0x21f292){return{'name':_0x21f292['fieldName'],'type':_0x21f292['type'][_0xd9c1('0x24')]};});_0x378b37[_0xd9c1('0x25')]=_[_0xd9c1('0x23')](_0x591f8c,_0xd9c1('0x21'));_0x378b37[_0xd9c1('0x26')]=_[_0xd9c1('0x27')](_0x16c41f['query']);_0x378b37['filters']=_[_0xd9c1('0x28')](_0x378b37['model'],_0x378b37[_0xd9c1('0x26')]);_0x1f2344[_0xd9c1('0x29')]=_['intersection'](_0x378b37[_0xd9c1('0x25')],qs[_0xd9c1('0x2a')](_0x16c41f['query'][_0xd9c1('0x2a')]));_0x1f2344[_0xd9c1('0x29')]=_0x1f2344[_0xd9c1('0x29')]['length']?_0x1f2344[_0xd9c1('0x29')]:_0x378b37[_0xd9c1('0x25')];if(!_0x16c41f[_0xd9c1('0x26')][_0xd9c1('0x2b')](_0xd9c1('0x2c'))){_0x1f2344[_0xd9c1('0x19')]=qs[_0xd9c1('0x19')](_0x16c41f[_0xd9c1('0x26')][_0xd9c1('0x19')]);_0x1f2344[_0xd9c1('0x17')]=qs['offset'](_0x16c41f['query'][_0xd9c1('0x17')]);}_0x1f2344[_0xd9c1('0x2d')]=qs[_0xd9c1('0x2e')](_0x16c41f[_0xd9c1('0x26')][_0xd9c1('0x2e')]);_0x1f2344[_0xd9c1('0x2f')]=qs[_0xd9c1('0x30')](_[_0xd9c1('0x31')](_0x16c41f[_0xd9c1('0x26')],_0x378b37[_0xd9c1('0x30')]),_0x591f8c);if(_0x16c41f['query'][_0xd9c1('0x32')]){_0x1f2344[_0xd9c1('0x2f')]=_[_0xd9c1('0x33')](_0x1f2344[_0xd9c1('0x2f')],{'$or':_[_0xd9c1('0x23')](_0x591f8c,function(_0x5ca517){if(_0x5ca517[_0xd9c1('0x34')]!==_0xd9c1('0x35')){var _0x458574={};_0x458574[_0x5ca517['name']]={'$like':'%'+_0x16c41f[_0xd9c1('0x26')][_0xd9c1('0x32')]+'%'};return _0x458574;}})});}_0x1f2344=_[_0xd9c1('0x33')]({},_0x1f2344,_0x16c41f[_0xd9c1('0x36')]);var _0x440c7a={'where':_0x1f2344[_0xd9c1('0x2f')]};return db[_0xd9c1('0x37')][_0xd9c1('0x1a')](_0x440c7a)[_0xd9c1('0xb')](function(_0x25e56c){_0x22e772[_0xd9c1('0x1a')]=_0x25e56c;if(_0x16c41f[_0xd9c1('0x26')][_0xd9c1('0x38')]){_0x1f2344['include']=[{'all':!![]}];}return db[_0xd9c1('0x37')]['findAll'](_0x1f2344);})[_0xd9c1('0xb')](function(_0x28726f){_0x22e772[_0xd9c1('0x39')]=_0x28726f;return _0x22e772;})[_0xd9c1('0xb')](respondWithFilteredResult(_0x5e394f,_0x1f2344))[_0xd9c1('0x15')](handleError(_0x5e394f,null));};exports[_0xd9c1('0x3a')]=function(_0x1b9db4,_0x2f1e47){var _0x2cf340={'raw':!![],'where':{'id':_0x1b9db4[_0xd9c1('0x3b')]['id']}},_0x4b5957={};_0x4b5957[_0xd9c1('0x25')]=_[_0xd9c1('0x27')](db['Network'][_0xd9c1('0x3c')]);_0x4b5957[_0xd9c1('0x26')]=_[_0xd9c1('0x27')](_0x1b9db4[_0xd9c1('0x26')]);_0x4b5957[_0xd9c1('0x30')]=_[_0xd9c1('0x28')](_0x4b5957[_0xd9c1('0x25')],_0x4b5957[_0xd9c1('0x26')]);_0x2cf340[_0xd9c1('0x29')]=_['intersection'](_0x4b5957[_0xd9c1('0x25')],qs['fields'](_0x1b9db4[_0xd9c1('0x26')][_0xd9c1('0x2a')]));_0x2cf340[_0xd9c1('0x29')]=_0x2cf340['attributes'][_0xd9c1('0x3d')]?_0x2cf340[_0xd9c1('0x29')]:_0x4b5957[_0xd9c1('0x25')];if(_0x1b9db4['query'][_0xd9c1('0x38')]){_0x2cf340['include']=[{'all':!![]}];}_0x2cf340=_[_0xd9c1('0x33')]({},_0x2cf340,_0x1b9db4[_0xd9c1('0x36')]);return db[_0xd9c1('0x37')][_0xd9c1('0x3e')](_0x2cf340)[_0xd9c1('0xb')](handleEntityNotFound(_0x2f1e47,null))['then'](respondWithResult(_0x2f1e47,null))[_0xd9c1('0x15')](handleError(_0x2f1e47,null));};exports['create']=function(_0x240034,_0x56c123){var _0x4c1d4c;return db[_0xd9c1('0x37')][_0xd9c1('0x3f')](_0x240034[_0xd9c1('0x40')],{'raw':!![]})[_0xd9c1('0xb')](function(_0x289aef){_0x4c1d4c=_0x289aef;return db[_0xd9c1('0x37')]['findAll']({'where':{'type':_0x240034[_0xd9c1('0x40')][_0xd9c1('0x34')]},'raw':!![]});})['then'](function(_0x62ec9c){if(_0x4c1d4c[_0xd9c1('0x34')][_0xd9c1('0x41')]()==_0xd9c1('0x42')){var _0x45e202=fs[_0xd9c1('0x43')](path[_0xd9c1('0x44')](config[_0xd9c1('0x45')],'server/files/templates/stun_multiple.ejs'),_0xd9c1('0x46'));var _0x3cd4ff=ejs[_0xd9c1('0x47')](_0x45e202,{'networks':_0x62ec9c||[]});fs[_0xd9c1('0x48')]('/etc/asterisk/stun_xcally.conf',_0x3cd4ff);return respondWithRpcPromise(_0xd9c1('0x49'),_0xd9c1('0x3f'),{'module':_0xd9c1('0x4a')});}else if(_0x4c1d4c[_0xd9c1('0x34')][_0xd9c1('0x41')]()==_0xd9c1('0x4b')){var _0x3a0bf4=fs['readFileSync'](path[_0xd9c1('0x44')](config[_0xd9c1('0x45')],_0xd9c1('0x4c')),'utf8');var _0x2535ee=ejs[_0xd9c1('0x47')](_0x3a0bf4,{'networks':_0x62ec9c||[]});fs[_0xd9c1('0x48')](_0xd9c1('0x4d'),_0x2535ee);return respondWithRpcPromise('Reload',_0xd9c1('0x3f'),{'module':_0xd9c1('0x4a')});}else{var _0x259ef9=fs[_0xd9c1('0x43')](path[_0xd9c1('0x44')](config[_0xd9c1('0x45')],_0xd9c1('0x4e')),_0xd9c1('0x46'));var _0x347d47=ejs[_0xd9c1('0x47')](_0x259ef9,{'networks':_0x62ec9c||[]});fs['writeFileSync'](util[_0xd9c1('0x4f')]('/etc/asterisk/sip_xcally_%s.conf',_0x240034['body'][_0xd9c1('0x34')][_0xd9c1('0x50')]()),_0x347d47);return respondWithRpcPromise('Reload',_0xd9c1('0x3f'),{'module':_0xd9c1('0x51')});}})[_0xd9c1('0xb')](function(){return _0x4c1d4c;})[_0xd9c1('0xb')](respondWithResult(_0x56c123,0xc9))[_0xd9c1('0x15')](handleError(_0x56c123,null));};exports[_0xd9c1('0x1d')]=function(_0x1e6170,_0x2f3671){var _0x2ad7bd;return db[_0xd9c1('0x37')][_0xd9c1('0x3e')]({'where':{'id':_0x1e6170['params']['id']}})[_0xd9c1('0xb')](handleEntityNotFound(_0x2f3671,null))[_0xd9c1('0xb')](saveUpdates(_0x1e6170[_0xd9c1('0x40')],null))[_0xd9c1('0xb')](function(_0x3cd19e){if(_0x3cd19e){_0x2ad7bd=_0x3cd19e;return db[_0xd9c1('0x37')][_0xd9c1('0x52')]({'where':{'type':_0x2ad7bd['type']},'raw':!![]});}return null;})['then'](function(_0x2b556b){if(_0x2ad7bd[_0xd9c1('0x34')][_0xd9c1('0x41')]()==_0xd9c1('0x42')){var _0x4ce6c3=fs[_0xd9c1('0x43')](path['join'](config[_0xd9c1('0x45')],_0xd9c1('0x53')),_0xd9c1('0x46'));var _0x283501=ejs[_0xd9c1('0x47')](_0x4ce6c3,{'networks':_0x2b556b||[]});fs['writeFileSync'](_0xd9c1('0x54'),_0x283501);return respondWithRpcPromise('Reload','update',{'module':'res_stun_monitor.so'});}else if(_0x2ad7bd[_0xd9c1('0x34')]['toUpperCase']()==_0xd9c1('0x4b')){var _0x588656=fs[_0xd9c1('0x43')](path['join'](config[_0xd9c1('0x45')],_0xd9c1('0x4c')),'utf8');var _0x2eca54=ejs['render'](_0x588656,{'networks':_0x2b556b||[]});fs[_0xd9c1('0x48')](_0xd9c1('0x4d'),_0x2eca54);return respondWithRpcPromise(_0xd9c1('0x49'),_0xd9c1('0x1d'),{'module':_0xd9c1('0x4a')});}else{var _0xc12f3a=fs['readFileSync'](path[_0xd9c1('0x44')](config[_0xd9c1('0x45')],_0xd9c1('0x4e')),'utf8');var _0xa8f533=ejs[_0xd9c1('0x47')](_0xc12f3a,{'networks':_0x2b556b||[]});fs[_0xd9c1('0x48')](util['format'](_0xd9c1('0x55'),_0x1e6170['body']['type'][_0xd9c1('0x50')]()),_0xa8f533);return respondWithRpcPromise(_0xd9c1('0x49'),'update',{'module':_0xd9c1('0x51')});}})['then'](function(_0x4477ce){if(_0x4477ce){return _0x2ad7bd;}return null;})[_0xd9c1('0xb')](respondWithResult(_0x2f3671,null))[_0xd9c1('0x15')](handleError(_0x2f3671,null));};exports['destroy']=function(_0x44ed12,_0x3879bc){var _0x5271fb;return db[_0xd9c1('0x37')][_0xd9c1('0x3e')]({'where':{'id':_0x44ed12[_0xd9c1('0x3b')]['id']}})[_0xd9c1('0xb')](function(_0x5b5a1e){_0x5271fb=_0x5b5a1e;return _0x5b5a1e;})[_0xd9c1('0xb')](handleEntityNotFound(_0x3879bc,null))['then'](removeEntity(_0x3879bc,null))['then'](function(){if(_0x5271fb){return db[_0xd9c1('0x37')][_0xd9c1('0x52')]({'where':{'type':_0x5271fb[_0xd9c1('0x34')]},'raw':!![]});}})[_0xd9c1('0xb')](function(_0x5a2375){if(_0x5271fb['type']['toUpperCase']()==_0xd9c1('0x42')){var _0xdae6f6=fs[_0xd9c1('0x43')](path[_0xd9c1('0x44')](config[_0xd9c1('0x45')],_0xd9c1('0x53')),_0xd9c1('0x46'));var _0x463a0d=ejs[_0xd9c1('0x47')](_0xdae6f6,{'networks':_0x5a2375||[]});fs[_0xd9c1('0x48')](_0xd9c1('0x54'),_0x463a0d);return respondWithRpcPromise('Reload',_0xd9c1('0x56'),{'module':_0xd9c1('0x4a')});}else if(_0x5271fb['type'][_0xd9c1('0x41')]()==_0xd9c1('0x4b')){var _0x59965a=fs[_0xd9c1('0x43')](path['join'](config[_0xd9c1('0x45')],_0xd9c1('0x4c')),'utf8');var _0x237714=ejs[_0xd9c1('0x47')](_0x59965a,{'networks':_0x5a2375||[]});fs[_0xd9c1('0x48')]('/etc/asterisk/turn_xcally.conf',_0x237714);return respondWithRpcPromise(_0xd9c1('0x49'),_0xd9c1('0x56'),{'module':_0xd9c1('0x4a')});}else{var _0x41ea5c=fs[_0xd9c1('0x43')](path[_0xd9c1('0x44')](config[_0xd9c1('0x45')],'server/files/templates/network.ejs'),_0xd9c1('0x46'));var _0x232af4=ejs[_0xd9c1('0x47')](_0x41ea5c,{'networks':_0x5a2375||[]});fs[_0xd9c1('0x48')](util['format']('/etc/asterisk/sip_xcally_%s.conf',_0x5271fb[_0xd9c1('0x34')][_0xd9c1('0x50')]()),_0x232af4);return respondWithRpcPromise(_0xd9c1('0x49'),_0xd9c1('0x56'),{'module':'chan_sip.so'});}})[_0xd9c1('0x15')](handleError(_0x3879bc,null));};