f7b10f0d91414ac4be1541ace3f2e7368c84e1e5
[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 _0xab81=['sendStatus','stack','name','index','map','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','Network','includeAll','findAll','rows','show','params','fields','include','find','create','body','toUpperCase','STUN','readFileSync','join','server/files/templates/stun_multiple.ejs','render','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','utf8','writeFileSync','/etc/asterisk/turn_xcally.conf','root','server/files/templates/network.ejs','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','TURN','format','destroy','path','ejs','lodash','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','jayson/promise','client','http','then','request\x20sent','debug','error','code','Network,\x20%s,\x20%s','message','info','catch','status','offset','limit','undefined','count','Content-Range','update','end'];(function(_0x2ba66e,_0x5a390d){var _0x48584b=function(_0x2e92e9){while(--_0x2e92e9){_0x2ba66e['push'](_0x2ba66e['shift']());}};_0x48584b(++_0x5a390d);}(_0xab81,0x130));var _0x1ab8=function(_0x4f71dd,_0x59bf3c){_0x4f71dd=_0x4f71dd-0x0;var _0x524aa9=_0xab81[_0x4f71dd];return _0x524aa9;};'use strict';var util=require('util');var path=require(_0x1ab8('0x0'));var ejs=require(_0x1ab8('0x1'));var fs=require('fs');var _=require(_0x1ab8('0x2'));var qs=require(_0x1ab8('0x3'));var logger=require(_0x1ab8('0x4'))(_0x1ab8('0x5'));var config=require(_0x1ab8('0x6'));var db=require(_0x1ab8('0x7'))['db'];var jayson=require(_0x1ab8('0x8'));var client=jayson[_0x1ab8('0x9')][_0x1ab8('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x401555,_0x35e8fd,_0x1e49b0,_0x3b57b9){return new Promise(function(_0x37e15e,_0x56b22f){var _0x5f364b=_0x3b57b9||client;return _0x5f364b['request'](_0x401555,_0x1e49b0)[_0x1ab8('0xb')](function(_0x5ba543){logger['info']('Network,\x20%s,\x20%s',_0x35e8fd,_0x1ab8('0xc'));logger[_0x1ab8('0xd')]('Network,\x20%s,\x20%s,\x20%s',_0x35e8fd,'request\x20sent',JSON['stringify'](_0x5ba543));if(_0x5ba543[_0x1ab8('0xe')]){if(_0x5ba543['error'][_0x1ab8('0xf')]===0x1f4){logger['error'](_0x1ab8('0x10'),_0x35e8fd,_0x5ba543['error'][_0x1ab8('0x11')]);return _0x56b22f(_0x5ba543['error'][_0x1ab8('0x11')]);}logger[_0x1ab8('0xe')](_0x1ab8('0x10'),_0x35e8fd,_0x5ba543[_0x1ab8('0xe')]['message']);return _0x37e15e(_0x5ba543[_0x1ab8('0xe')][_0x1ab8('0x11')]);}else{logger[_0x1ab8('0x12')]('Network,\x20%s,\x20%s',_0x35e8fd,'request\x20sent');_0x37e15e(_0x5ba543['result']['message']);}})[_0x1ab8('0x13')](function(_0x1db53b){logger[_0x1ab8('0xe')](_0x1ab8('0x10'),_0x35e8fd,_0x1db53b);_0x56b22f(_0x1db53b);});});}function respondWithResult(_0x59ecce,_0xdfa1d7){_0xdfa1d7=_0xdfa1d7||0xc8;return function(_0x4ee746){if(_0x4ee746){return _0x59ecce[_0x1ab8('0x14')](_0xdfa1d7)['json'](_0x4ee746);}};}function respondWithFilteredResult(_0x4a41e3,_0x4f4cd5){return function(_0x272c43){if(_0x272c43){var _0x10822f=typeof _0x4f4cd5[_0x1ab8('0x15')]==='undefined'&&typeof _0x4f4cd5[_0x1ab8('0x16')]===_0x1ab8('0x17');var _0x3a165a=_0x272c43['count'];var _0x487e6a=_0x10822f?0x0:_0x4f4cd5[_0x1ab8('0x15')];var _0x4c3f59=_0x10822f?_0x272c43[_0x1ab8('0x18')]:_0x4f4cd5[_0x1ab8('0x15')]+_0x4f4cd5[_0x1ab8('0x16')];var _0x46c44d;if(_0x4c3f59>=_0x3a165a){_0x4c3f59=_0x3a165a;_0x46c44d=0xc8;}else{_0x46c44d=0xce;}_0x4a41e3['status'](_0x46c44d);return _0x4a41e3['set'](_0x1ab8('0x19'),_0x487e6a+'-'+_0x4c3f59+'/'+_0x3a165a)['json'](_0x272c43);}return null;};}function saveUpdates(_0x5e7d43){return function(_0x2d438d){if(_0x2d438d){return _0x2d438d[_0x1ab8('0x1a')](_0x5e7d43)[_0x1ab8('0xb')](function(_0x37ac36){return _0x37ac36;});}return null;};}function removeEntity(_0x3c0681){return function(_0x3e2333){if(_0x3e2333){return _0x3e2333['destroy']()['then'](function(){_0x3c0681[_0x1ab8('0x14')](0xcc)[_0x1ab8('0x1b')]();});}};}function handleEntityNotFound(_0x355608){return function(_0x533fc4){if(!_0x533fc4){_0x355608[_0x1ab8('0x1c')](0x194);}return _0x533fc4;};}function handleError(_0x4e95df,_0x3acea8){_0x3acea8=_0x3acea8||0x1f4;return function(_0x4bc4bf){logger[_0x1ab8('0xe')](_0x4bc4bf[_0x1ab8('0x1d')]);if(_0x4bc4bf[_0x1ab8('0x1e')]){delete _0x4bc4bf[_0x1ab8('0x1e')];}_0x4e95df[_0x1ab8('0x14')](_0x3acea8)['send'](_0x4bc4bf);};}exports[_0x1ab8('0x1f')]=function(_0x4d35ff,_0x3e00b6){var _0x246a3d={},_0x363239={},_0x3a9794={'count':0x0,'rows':[]};var _0x1c0f10=_[_0x1ab8('0x20')](db['Network'][_0x1ab8('0x21')],function(_0x3ae918){return{'name':_0x3ae918['fieldName'],'type':_0x3ae918[_0x1ab8('0x22')][_0x1ab8('0x23')]};});_0x363239[_0x1ab8('0x24')]=_[_0x1ab8('0x20')](_0x1c0f10,_0x1ab8('0x1e'));_0x363239[_0x1ab8('0x25')]=_[_0x1ab8('0x26')](_0x4d35ff[_0x1ab8('0x25')]);_0x363239[_0x1ab8('0x27')]=_[_0x1ab8('0x28')](_0x363239[_0x1ab8('0x24')],_0x363239[_0x1ab8('0x25')]);_0x246a3d[_0x1ab8('0x29')]=_['intersection'](_0x363239[_0x1ab8('0x24')],qs['fields'](_0x4d35ff[_0x1ab8('0x25')]['fields']));_0x246a3d['attributes']=_0x246a3d['attributes'][_0x1ab8('0x2a')]?_0x246a3d[_0x1ab8('0x29')]:_0x363239[_0x1ab8('0x24')];if(!_0x4d35ff[_0x1ab8('0x25')][_0x1ab8('0x2b')](_0x1ab8('0x2c'))){_0x246a3d[_0x1ab8('0x16')]=qs['limit'](_0x4d35ff[_0x1ab8('0x25')][_0x1ab8('0x16')]);_0x246a3d[_0x1ab8('0x15')]=qs[_0x1ab8('0x15')](_0x4d35ff['query'][_0x1ab8('0x15')]);}_0x246a3d[_0x1ab8('0x2d')]=qs[_0x1ab8('0x2e')](_0x4d35ff[_0x1ab8('0x25')][_0x1ab8('0x2e')]);_0x246a3d[_0x1ab8('0x2f')]=qs[_0x1ab8('0x27')](_[_0x1ab8('0x30')](_0x4d35ff['query'],_0x363239[_0x1ab8('0x27')]),_0x1c0f10);if(_0x4d35ff[_0x1ab8('0x25')][_0x1ab8('0x31')]){_0x246a3d[_0x1ab8('0x2f')]=_[_0x1ab8('0x32')](_0x246a3d[_0x1ab8('0x2f')],{'$or':_['map'](_0x1c0f10,function(_0xed966b){if(_0xed966b[_0x1ab8('0x22')]!=='VIRTUAL'){var _0x2b6839={};_0x2b6839[_0xed966b[_0x1ab8('0x1e')]]={'$like':'%'+_0x4d35ff['query'][_0x1ab8('0x31')]+'%'};return _0x2b6839;}})});}_0x246a3d=_[_0x1ab8('0x32')]({},_0x246a3d,_0x4d35ff[_0x1ab8('0x33')]);var _0x1e0cfd={'where':_0x246a3d[_0x1ab8('0x2f')]};return db[_0x1ab8('0x34')][_0x1ab8('0x18')](_0x1e0cfd)[_0x1ab8('0xb')](function(_0x29ada4){_0x3a9794[_0x1ab8('0x18')]=_0x29ada4;if(_0x4d35ff[_0x1ab8('0x25')][_0x1ab8('0x35')]){_0x246a3d['include']=[{'all':!![]}];}return db[_0x1ab8('0x34')][_0x1ab8('0x36')](_0x246a3d);})[_0x1ab8('0xb')](function(_0x57f4a3){_0x3a9794[_0x1ab8('0x37')]=_0x57f4a3;return _0x3a9794;})['then'](respondWithFilteredResult(_0x3e00b6,_0x246a3d))[_0x1ab8('0x13')](handleError(_0x3e00b6,null));};exports[_0x1ab8('0x38')]=function(_0xa5ebf1,_0x33c7b1){var _0x5557e1={'raw':!![],'where':{'id':_0xa5ebf1[_0x1ab8('0x39')]['id']}},_0x27f599={};_0x27f599['model']=_[_0x1ab8('0x26')](db[_0x1ab8('0x34')]['rawAttributes']);_0x27f599[_0x1ab8('0x25')]=_[_0x1ab8('0x26')](_0xa5ebf1[_0x1ab8('0x25')]);_0x27f599[_0x1ab8('0x27')]=_[_0x1ab8('0x28')](_0x27f599[_0x1ab8('0x24')],_0x27f599['query']);_0x5557e1[_0x1ab8('0x29')]=_['intersection'](_0x27f599[_0x1ab8('0x24')],qs[_0x1ab8('0x3a')](_0xa5ebf1[_0x1ab8('0x25')][_0x1ab8('0x3a')]));_0x5557e1['attributes']=_0x5557e1[_0x1ab8('0x29')][_0x1ab8('0x2a')]?_0x5557e1[_0x1ab8('0x29')]:_0x27f599[_0x1ab8('0x24')];if(_0xa5ebf1['query']['includeAll']){_0x5557e1[_0x1ab8('0x3b')]=[{'all':!![]}];}_0x5557e1=_[_0x1ab8('0x32')]({},_0x5557e1,_0xa5ebf1['options']);return db[_0x1ab8('0x34')][_0x1ab8('0x3c')](_0x5557e1)[_0x1ab8('0xb')](handleEntityNotFound(_0x33c7b1,null))[_0x1ab8('0xb')](respondWithResult(_0x33c7b1,null))[_0x1ab8('0x13')](handleError(_0x33c7b1,null));};exports[_0x1ab8('0x3d')]=function(_0x35d64d,_0x27f5f4){var _0x50f9e;return db[_0x1ab8('0x34')][_0x1ab8('0x3d')](_0x35d64d[_0x1ab8('0x3e')],{'raw':!![]})[_0x1ab8('0xb')](function(_0x36264c){_0x50f9e=_0x36264c;return db[_0x1ab8('0x34')]['findAll']({'where':{'type':_0x35d64d[_0x1ab8('0x3e')]['type']},'raw':!![]});})[_0x1ab8('0xb')](function(_0x106846){if(_0x50f9e[_0x1ab8('0x22')][_0x1ab8('0x3f')]()==_0x1ab8('0x40')){var _0x2f2236=fs[_0x1ab8('0x41')](path[_0x1ab8('0x42')](config['root'],_0x1ab8('0x43')),'utf8');var _0x550862=ejs[_0x1ab8('0x44')](_0x2f2236,{'networks':_0x106846||[]});fs['writeFileSync'](_0x1ab8('0x45'),_0x550862);return respondWithRpcPromise(_0x1ab8('0x46'),_0x1ab8('0x3d'),{'module':_0x1ab8('0x47')});}else if(_0x50f9e['type']['toUpperCase']()=='TURN'){var _0x5d0765=fs[_0x1ab8('0x41')](path[_0x1ab8('0x42')](config['root'],'server/files/templates/turn_multiple.ejs'),_0x1ab8('0x48'));var _0xf79df=ejs[_0x1ab8('0x44')](_0x5d0765,{'networks':_0x106846||[]});fs[_0x1ab8('0x49')](_0x1ab8('0x4a'),_0xf79df);return respondWithRpcPromise('Reload',_0x1ab8('0x3d'),{'module':_0x1ab8('0x47')});}else{var _0x27bd7a=fs[_0x1ab8('0x41')](path[_0x1ab8('0x42')](config[_0x1ab8('0x4b')],_0x1ab8('0x4c')),'utf8');var _0x361474=ejs[_0x1ab8('0x44')](_0x27bd7a,{'networks':_0x106846||[]});fs[_0x1ab8('0x49')](util['format'](_0x1ab8('0x4d'),_0x35d64d[_0x1ab8('0x3e')][_0x1ab8('0x22')][_0x1ab8('0x4e')]()),_0x361474);return respondWithRpcPromise(_0x1ab8('0x46'),'create',{'module':_0x1ab8('0x4f')});}})[_0x1ab8('0xb')](function(){return _0x50f9e;})['then'](respondWithResult(_0x27f5f4,0xc9))[_0x1ab8('0x13')](handleError(_0x27f5f4,null));};exports[_0x1ab8('0x1a')]=function(_0x160080,_0x3052b0){var _0x326389;return db[_0x1ab8('0x34')][_0x1ab8('0x3c')]({'where':{'id':_0x160080[_0x1ab8('0x39')]['id']}})[_0x1ab8('0xb')](handleEntityNotFound(_0x3052b0,null))['then'](saveUpdates(_0x160080['body'],null))[_0x1ab8('0xb')](function(_0x1ef88d){if(_0x1ef88d){_0x326389=_0x1ef88d;return db[_0x1ab8('0x34')][_0x1ab8('0x36')]({'where':{'type':_0x326389[_0x1ab8('0x22')]},'raw':!![]});}return null;})[_0x1ab8('0xb')](function(_0x38a8e7){if(_0x326389[_0x1ab8('0x22')][_0x1ab8('0x3f')]()=='STUN'){var _0x5e085e=fs[_0x1ab8('0x41')](path[_0x1ab8('0x42')](config[_0x1ab8('0x4b')],_0x1ab8('0x43')),'utf8');var _0x538975=ejs['render'](_0x5e085e,{'networks':_0x38a8e7||[]});fs[_0x1ab8('0x49')](_0x1ab8('0x45'),_0x538975);return respondWithRpcPromise(_0x1ab8('0x46'),_0x1ab8('0x1a'),{'module':_0x1ab8('0x47')});}else if(_0x326389['type'][_0x1ab8('0x3f')]()==_0x1ab8('0x50')){var _0x8b18e5=fs['readFileSync'](path[_0x1ab8('0x42')](config[_0x1ab8('0x4b')],'server/files/templates/turn_multiple.ejs'),_0x1ab8('0x48'));var _0x1db97c=ejs[_0x1ab8('0x44')](_0x8b18e5,{'networks':_0x38a8e7||[]});fs[_0x1ab8('0x49')]('/etc/asterisk/turn_xcally.conf',_0x1db97c);return respondWithRpcPromise(_0x1ab8('0x46'),_0x1ab8('0x1a'),{'module':_0x1ab8('0x47')});}else{var _0x885d31=fs[_0x1ab8('0x41')](path['join'](config['root'],_0x1ab8('0x4c')),'utf8');var _0x1a29e7=ejs[_0x1ab8('0x44')](_0x885d31,{'networks':_0x38a8e7||[]});fs[_0x1ab8('0x49')](util[_0x1ab8('0x51')]('/etc/asterisk/sip_xcally_%s.conf',_0x160080[_0x1ab8('0x3e')]['type'][_0x1ab8('0x4e')]()),_0x1a29e7);return respondWithRpcPromise(_0x1ab8('0x46'),_0x1ab8('0x1a'),{'module':_0x1ab8('0x4f')});}})['then'](function(_0x4f8614){if(_0x4f8614){return _0x326389;}return null;})[_0x1ab8('0xb')](respondWithResult(_0x3052b0,null))[_0x1ab8('0x13')](handleError(_0x3052b0,null));};exports[_0x1ab8('0x52')]=function(_0x3ee72f,_0x30c01e){var _0x3bbb60;return db['Network'][_0x1ab8('0x3c')]({'where':{'id':_0x3ee72f[_0x1ab8('0x39')]['id']}})[_0x1ab8('0xb')](function(_0x5ab568){_0x3bbb60=_0x5ab568;return _0x5ab568;})[_0x1ab8('0xb')](handleEntityNotFound(_0x30c01e,null))[_0x1ab8('0xb')](removeEntity(_0x30c01e,null))[_0x1ab8('0xb')](function(){if(_0x3bbb60){return db[_0x1ab8('0x34')][_0x1ab8('0x36')]({'where':{'type':_0x3bbb60['type']},'raw':!![]});}})[_0x1ab8('0xb')](function(_0x28ffa2){if(_0x3bbb60[_0x1ab8('0x22')][_0x1ab8('0x3f')]()==_0x1ab8('0x40')){var _0x4bf669=fs[_0x1ab8('0x41')](path[_0x1ab8('0x42')](config[_0x1ab8('0x4b')],'server/files/templates/stun_multiple.ejs'),_0x1ab8('0x48'));var _0x5e77eb=ejs[_0x1ab8('0x44')](_0x4bf669,{'networks':_0x28ffa2||[]});fs[_0x1ab8('0x49')](_0x1ab8('0x45'),_0x5e77eb);return respondWithRpcPromise(_0x1ab8('0x46'),_0x1ab8('0x52'),{'module':_0x1ab8('0x47')});}else if(_0x3bbb60[_0x1ab8('0x22')][_0x1ab8('0x3f')]()==_0x1ab8('0x50')){var _0x8b3de9=fs[_0x1ab8('0x41')](path[_0x1ab8('0x42')](config[_0x1ab8('0x4b')],'server/files/templates/turn_multiple.ejs'),'utf8');var _0x821442=ejs[_0x1ab8('0x44')](_0x8b3de9,{'networks':_0x28ffa2||[]});fs[_0x1ab8('0x49')](_0x1ab8('0x4a'),_0x821442);return respondWithRpcPromise('Reload',_0x1ab8('0x52'),{'module':_0x1ab8('0x47')});}else{var _0x3b07d8=fs['readFileSync'](path[_0x1ab8('0x42')](config[_0x1ab8('0x4b')],_0x1ab8('0x4c')),_0x1ab8('0x48'));var _0x165914=ejs[_0x1ab8('0x44')](_0x3b07d8,{'networks':_0x28ffa2||[]});fs[_0x1ab8('0x49')](util[_0x1ab8('0x51')](_0x1ab8('0x4d'),_0x3bbb60[_0x1ab8('0x22')][_0x1ab8('0x4e')]()),_0x165914);return respondWithRpcPromise(_0x1ab8('0x46'),_0x1ab8('0x52'),{'module':'chan_sip.so'});}})[_0x1ab8('0x13')](handleError(_0x30c01e,null));};