f5df5ddd0bded5ed65ce078715f0f16d18349a6f
[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 _0x469a=['limit','count','set','Content-Range','update','destroy','end','sendStatus','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','options','Network','includeAll','include','findAll','rows','show','params','length','find','create','body','STUN','join','server/files/templates/stun_multiple.ejs','utf8','writeFileSync','/etc/asterisk/stun_xcally.conf','res_stun_monitor.so','toUpperCase','TURN','readFileSync','root','server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','Reload','server/files/templates/network.ejs','render','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','util','ejs','lodash','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','http','request','then','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','status','json','offset','undefined'];(function(_0x497d7c,_0x376f95){var _0x9a970e=function(_0x386d64){while(--_0x386d64){_0x497d7c['push'](_0x497d7c['shift']());}};_0x9a970e(++_0x376f95);}(_0x469a,0xed));var _0xa469=function(_0x602ca8,_0x568e82){_0x602ca8=_0x602ca8-0x0;var _0x26e8ab=_0x469a[_0x602ca8];return _0x26e8ab;};'use strict';var util=require(_0xa469('0x0'));var path=require('path');var ejs=require(_0xa469('0x1'));var fs=require('fs');var _=require(_0xa469('0x2'));var qs=require(_0xa469('0x3'));var logger=require(_0xa469('0x4'))(_0xa469('0x5'));var config=require(_0xa469('0x6'));var db=require(_0xa469('0x7'))['db'];var jayson=require('jayson/promise');var client=jayson['client'][_0xa469('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5857d4,_0x349048,_0x2e668f,_0xb6abf9){return new Promise(function(_0x383b63,_0x43b72a){var _0x454698=_0xb6abf9||client;return _0x454698[_0xa469('0x9')](_0x5857d4,_0x2e668f)[_0xa469('0xa')](function(_0x1f7463){logger['info']('Network,\x20%s,\x20%s',_0x349048,_0xa469('0xb'));logger[_0xa469('0xc')](_0xa469('0xd'),_0x349048,'request\x20sent',JSON['stringify'](_0x1f7463));if(_0x1f7463[_0xa469('0xe')]){if(_0x1f7463[_0xa469('0xe')][_0xa469('0xf')]===0x1f4){logger[_0xa469('0xe')]('Network,\x20%s,\x20%s',_0x349048,_0x1f7463[_0xa469('0xe')][_0xa469('0x10')]);return _0x43b72a(_0x1f7463['error'][_0xa469('0x10')]);}logger[_0xa469('0xe')]('Network,\x20%s,\x20%s',_0x349048,_0x1f7463[_0xa469('0xe')][_0xa469('0x10')]);return _0x383b63(_0x1f7463[_0xa469('0xe')][_0xa469('0x10')]);}else{logger[_0xa469('0x11')]('Network,\x20%s,\x20%s',_0x349048,_0xa469('0xb'));_0x383b63(_0x1f7463[_0xa469('0x12')][_0xa469('0x10')]);}})[_0xa469('0x13')](function(_0x1b3d7d){logger[_0xa469('0xe')]('Network,\x20%s,\x20%s',_0x349048,_0x1b3d7d);_0x43b72a(_0x1b3d7d);});});}function respondWithResult(_0x610f61,_0x2ab927){_0x2ab927=_0x2ab927||0xc8;return function(_0x58cac5){if(_0x58cac5){return _0x610f61[_0xa469('0x14')](_0x2ab927)[_0xa469('0x15')](_0x58cac5);}};}function respondWithFilteredResult(_0x57fc7f,_0x5c5fe9){return function(_0x269802){if(_0x269802){var _0x4899cb=typeof _0x5c5fe9[_0xa469('0x16')]===_0xa469('0x17')&&typeof _0x5c5fe9[_0xa469('0x18')]==='undefined';var _0x348a44=_0x269802[_0xa469('0x19')];var _0x1c390e=_0x4899cb?0x0:_0x5c5fe9[_0xa469('0x16')];var _0x4b01d4=_0x4899cb?_0x269802[_0xa469('0x19')]:_0x5c5fe9['offset']+_0x5c5fe9[_0xa469('0x18')];var _0xe2b810;if(_0x4b01d4>=_0x348a44){_0x4b01d4=_0x348a44;_0xe2b810=0xc8;}else{_0xe2b810=0xce;}_0x57fc7f['status'](_0xe2b810);return _0x57fc7f[_0xa469('0x1a')](_0xa469('0x1b'),_0x1c390e+'-'+_0x4b01d4+'/'+_0x348a44)[_0xa469('0x15')](_0x269802);}return null;};}function saveUpdates(_0xed4ae6){return function(_0x37864f){if(_0x37864f){return _0x37864f[_0xa469('0x1c')](_0xed4ae6)[_0xa469('0xa')](function(_0x31e68c){return _0x31e68c;});}return null;};}function removeEntity(_0x583899){return function(_0x33cf2b){if(_0x33cf2b){return _0x33cf2b[_0xa469('0x1d')]()[_0xa469('0xa')](function(){_0x583899[_0xa469('0x14')](0xcc)[_0xa469('0x1e')]();});}};}function handleEntityNotFound(_0x107362){return function(_0x316ce0){if(!_0x316ce0){_0x107362[_0xa469('0x1f')](0x194);}return _0x316ce0;};}function handleError(_0x23c597,_0x5ad4ff){_0x5ad4ff=_0x5ad4ff||0x1f4;return function(_0x1bbfa1){logger['error'](_0x1bbfa1[_0xa469('0x20')]);if(_0x1bbfa1[_0xa469('0x21')]){delete _0x1bbfa1[_0xa469('0x21')];}_0x23c597[_0xa469('0x14')](_0x5ad4ff)[_0xa469('0x22')](_0x1bbfa1);};}exports['index']=function(_0x207f63,_0x2447de){var _0x1cb419={},_0xa65b05={},_0x2631be={'count':0x0,'rows':[]};var _0x1702b3=_[_0xa469('0x23')](db['Network'][_0xa469('0x24')],function(_0x2d289d){return{'name':_0x2d289d[_0xa469('0x25')],'type':_0x2d289d[_0xa469('0x26')][_0xa469('0x27')]};});_0xa65b05[_0xa469('0x28')]=_[_0xa469('0x23')](_0x1702b3,_0xa469('0x21'));_0xa65b05[_0xa469('0x29')]=_[_0xa469('0x2a')](_0x207f63['query']);_0xa65b05[_0xa469('0x2b')]=_[_0xa469('0x2c')](_0xa65b05[_0xa469('0x28')],_0xa65b05[_0xa469('0x29')]);_0x1cb419[_0xa469('0x2d')]=_[_0xa469('0x2c')](_0xa65b05[_0xa469('0x28')],qs[_0xa469('0x2e')](_0x207f63[_0xa469('0x29')][_0xa469('0x2e')]));_0x1cb419['attributes']=_0x1cb419[_0xa469('0x2d')]['length']?_0x1cb419[_0xa469('0x2d')]:_0xa65b05[_0xa469('0x28')];if(!_0x207f63['query'][_0xa469('0x2f')](_0xa469('0x30'))){_0x1cb419['limit']=qs['limit'](_0x207f63[_0xa469('0x29')]['limit']);_0x1cb419[_0xa469('0x16')]=qs[_0xa469('0x16')](_0x207f63[_0xa469('0x29')]['offset']);}_0x1cb419[_0xa469('0x31')]=qs['sort'](_0x207f63[_0xa469('0x29')]['sort']);_0x1cb419[_0xa469('0x32')]=qs['filters'](_[_0xa469('0x33')](_0x207f63[_0xa469('0x29')],_0xa65b05[_0xa469('0x2b')]),_0x1702b3);if(_0x207f63[_0xa469('0x29')][_0xa469('0x34')]){_0x1cb419[_0xa469('0x32')]=_[_0xa469('0x35')](_0x1cb419[_0xa469('0x32')],{'$or':_[_0xa469('0x23')](_0x1702b3,function(_0xa05fdc){if(_0xa05fdc[_0xa469('0x26')]!==_0xa469('0x36')){var _0x42a0d4={};_0x42a0d4[_0xa05fdc[_0xa469('0x21')]]={'$like':'%'+_0x207f63['query']['filter']+'%'};return _0x42a0d4;}})});}_0x1cb419=_[_0xa469('0x35')]({},_0x1cb419,_0x207f63[_0xa469('0x37')]);var _0x247276={'where':_0x1cb419[_0xa469('0x32')]};return db[_0xa469('0x38')][_0xa469('0x19')](_0x247276)[_0xa469('0xa')](function(_0x508caa){_0x2631be[_0xa469('0x19')]=_0x508caa;if(_0x207f63['query'][_0xa469('0x39')]){_0x1cb419[_0xa469('0x3a')]=[{'all':!![]}];}return db['Network'][_0xa469('0x3b')](_0x1cb419);})[_0xa469('0xa')](function(_0x33ba47){_0x2631be[_0xa469('0x3c')]=_0x33ba47;return _0x2631be;})[_0xa469('0xa')](respondWithFilteredResult(_0x2447de,_0x1cb419))[_0xa469('0x13')](handleError(_0x2447de,null));};exports[_0xa469('0x3d')]=function(_0x10ba65,_0x11b164){var _0x444009={'raw':!![],'where':{'id':_0x10ba65[_0xa469('0x3e')]['id']}},_0xc91d0a={};_0xc91d0a['model']=_[_0xa469('0x2a')](db[_0xa469('0x38')][_0xa469('0x24')]);_0xc91d0a['query']=_[_0xa469('0x2a')](_0x10ba65[_0xa469('0x29')]);_0xc91d0a[_0xa469('0x2b')]=_[_0xa469('0x2c')](_0xc91d0a['model'],_0xc91d0a[_0xa469('0x29')]);_0x444009[_0xa469('0x2d')]=_['intersection'](_0xc91d0a[_0xa469('0x28')],qs[_0xa469('0x2e')](_0x10ba65[_0xa469('0x29')][_0xa469('0x2e')]));_0x444009[_0xa469('0x2d')]=_0x444009['attributes'][_0xa469('0x3f')]?_0x444009[_0xa469('0x2d')]:_0xc91d0a[_0xa469('0x28')];if(_0x10ba65[_0xa469('0x29')][_0xa469('0x39')]){_0x444009[_0xa469('0x3a')]=[{'all':!![]}];}_0x444009=_['merge']({},_0x444009,_0x10ba65['options']);return db['Network'][_0xa469('0x40')](_0x444009)[_0xa469('0xa')](handleEntityNotFound(_0x11b164,null))['then'](respondWithResult(_0x11b164,null))[_0xa469('0x13')](handleError(_0x11b164,null));};exports[_0xa469('0x41')]=function(_0x30b54e,_0x4847ec){var _0x116d8d;return db[_0xa469('0x38')][_0xa469('0x41')](_0x30b54e[_0xa469('0x42')],{'raw':!![]})[_0xa469('0xa')](function(_0x3103cb){_0x116d8d=_0x3103cb;return db['Network'][_0xa469('0x3b')]({'where':{'type':_0x30b54e[_0xa469('0x42')][_0xa469('0x26')]},'raw':!![]});})['then'](function(_0x1d4df5){if(_0x116d8d[_0xa469('0x26')]['toUpperCase']()==_0xa469('0x43')){var _0x32993f=fs['readFileSync'](path[_0xa469('0x44')](config['root'],_0xa469('0x45')),_0xa469('0x46'));var _0x3aae7d=ejs['render'](_0x32993f,{'networks':_0x1d4df5||[]});fs[_0xa469('0x47')](_0xa469('0x48'),_0x3aae7d);return respondWithRpcPromise('Reload','create',{'module':_0xa469('0x49')});}else if(_0x116d8d[_0xa469('0x26')][_0xa469('0x4a')]()==_0xa469('0x4b')){var _0x17a300=fs[_0xa469('0x4c')](path[_0xa469('0x44')](config[_0xa469('0x4d')],_0xa469('0x4e')),_0xa469('0x46'));var _0x249364=ejs['render'](_0x17a300,{'networks':_0x1d4df5||[]});fs[_0xa469('0x47')](_0xa469('0x4f'),_0x249364);return respondWithRpcPromise(_0xa469('0x50'),'create',{'module':_0xa469('0x49')});}else{var _0x5cf020=fs[_0xa469('0x4c')](path[_0xa469('0x44')](config['root'],_0xa469('0x51')),_0xa469('0x46'));var _0x3405de=ejs[_0xa469('0x52')](_0x5cf020,{'networks':_0x1d4df5||[]});fs[_0xa469('0x47')](util[_0xa469('0x53')](_0xa469('0x54'),_0x30b54e['body']['type'][_0xa469('0x55')]()),_0x3405de);return respondWithRpcPromise(_0xa469('0x50'),_0xa469('0x41'),{'module':_0xa469('0x56')});}})[_0xa469('0xa')](function(){return _0x116d8d;})[_0xa469('0xa')](respondWithResult(_0x4847ec,0xc9))[_0xa469('0x13')](handleError(_0x4847ec,null));};exports[_0xa469('0x1c')]=function(_0x4818fa,_0x2d562d){var _0xcb39e3;return db[_0xa469('0x38')]['find']({'where':{'id':_0x4818fa['params']['id']}})[_0xa469('0xa')](handleEntityNotFound(_0x2d562d,null))[_0xa469('0xa')](saveUpdates(_0x4818fa[_0xa469('0x42')],null))['then'](function(_0x5e9872){if(_0x5e9872){_0xcb39e3=_0x5e9872;return db['Network'][_0xa469('0x3b')]({'where':{'type':_0xcb39e3[_0xa469('0x26')]},'raw':!![]});}return null;})[_0xa469('0xa')](function(_0xde4f0c){if(_0xcb39e3[_0xa469('0x26')]['toUpperCase']()=='STUN'){var _0x512112=fs[_0xa469('0x4c')](path[_0xa469('0x44')](config[_0xa469('0x4d')],_0xa469('0x45')),_0xa469('0x46'));var _0xa90c85=ejs[_0xa469('0x52')](_0x512112,{'networks':_0xde4f0c||[]});fs[_0xa469('0x47')](_0xa469('0x48'),_0xa90c85);return respondWithRpcPromise(_0xa469('0x50'),_0xa469('0x1c'),{'module':_0xa469('0x49')});}else if(_0xcb39e3[_0xa469('0x26')][_0xa469('0x4a')]()==_0xa469('0x4b')){var _0x55184d=fs[_0xa469('0x4c')](path[_0xa469('0x44')](config[_0xa469('0x4d')],_0xa469('0x4e')),_0xa469('0x46'));var _0x3bb5a6=ejs[_0xa469('0x52')](_0x55184d,{'networks':_0xde4f0c||[]});fs['writeFileSync'](_0xa469('0x4f'),_0x3bb5a6);return respondWithRpcPromise(_0xa469('0x50'),_0xa469('0x1c'),{'module':_0xa469('0x49')});}else{var _0x1fbbac=fs[_0xa469('0x4c')](path[_0xa469('0x44')](config[_0xa469('0x4d')],_0xa469('0x51')),'utf8');var _0x141eec=ejs[_0xa469('0x52')](_0x1fbbac,{'networks':_0xde4f0c||[]});fs[_0xa469('0x47')](util[_0xa469('0x53')](_0xa469('0x54'),_0x4818fa[_0xa469('0x42')][_0xa469('0x26')][_0xa469('0x55')]()),_0x141eec);return respondWithRpcPromise(_0xa469('0x50'),_0xa469('0x1c'),{'module':_0xa469('0x56')});}})[_0xa469('0xa')](function(_0x540743){if(_0x540743){return _0xcb39e3;}return null;})[_0xa469('0xa')](respondWithResult(_0x2d562d,null))[_0xa469('0x13')](handleError(_0x2d562d,null));};exports[_0xa469('0x1d')]=function(_0x4c0496,_0x286698){var _0x4db4b9;return db['Network']['find']({'where':{'id':_0x4c0496[_0xa469('0x3e')]['id']}})[_0xa469('0xa')](function(_0x57085e){_0x4db4b9=_0x57085e;return _0x57085e;})[_0xa469('0xa')](handleEntityNotFound(_0x286698,null))['then'](removeEntity(_0x286698,null))[_0xa469('0xa')](function(){if(_0x4db4b9){return db['Network'][_0xa469('0x3b')]({'where':{'type':_0x4db4b9['type']},'raw':!![]});}})[_0xa469('0xa')](function(_0x31582f){if(_0x4db4b9[_0xa469('0x26')][_0xa469('0x4a')]()==_0xa469('0x43')){var _0x4c718a=fs[_0xa469('0x4c')](path[_0xa469('0x44')](config[_0xa469('0x4d')],'server/files/templates/stun_multiple.ejs'),_0xa469('0x46'));var _0x51aab7=ejs[_0xa469('0x52')](_0x4c718a,{'networks':_0x31582f||[]});fs['writeFileSync'](_0xa469('0x48'),_0x51aab7);return respondWithRpcPromise(_0xa469('0x50'),'destroy',{'module':'res_stun_monitor.so'});}else if(_0x4db4b9['type'][_0xa469('0x4a')]()=='TURN'){var _0x5d0863=fs[_0xa469('0x4c')](path[_0xa469('0x44')](config['root'],_0xa469('0x4e')),'utf8');var _0x50aed9=ejs[_0xa469('0x52')](_0x5d0863,{'networks':_0x31582f||[]});fs[_0xa469('0x47')]('/etc/asterisk/turn_xcally.conf',_0x50aed9);return respondWithRpcPromise(_0xa469('0x50'),'destroy',{'module':_0xa469('0x49')});}else{var _0xf436a5=fs[_0xa469('0x4c')](path[_0xa469('0x44')](config['root'],'server/files/templates/network.ejs'),_0xa469('0x46'));var _0xd0ac84=ejs[_0xa469('0x52')](_0xf436a5,{'networks':_0x31582f||[]});fs[_0xa469('0x47')](util[_0xa469('0x53')]('/etc/asterisk/sip_xcally_%s.conf',_0x4db4b9[_0xa469('0x26')]['toLowerCase']()),_0xd0ac84);return respondWithRpcPromise(_0xa469('0x50'),_0xa469('0x1d'),{'module':_0xa469('0x56')});}})[_0xa469('0x13')](handleError(_0x286698,null));};