Built motion from commit 5ae82ce5.|2.6.7
[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 _0x9a91=['includeAll','include','findAll','rows','show','params','keys','length','find','create','body','readFileSync','server/files/templates/stun_multiple.ejs','utf8','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','toUpperCase','TURN','join','root','render','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','format','toLowerCase','chan_sip.so','server/files/templates/turn_multiple.ejs','/etc/asterisk/sip_xcally_%s.conf','STUN','util','path','ejs','lodash','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','jayson/promise','client','http','request','then','Network,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','status','undefined','count','offset','limit','set','Content-Range','json','update','destroy','end','stack','name','send','index','map','Network','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','order','sort','where','filter','VIRTUAL','merge'];(function(_0x559f6c,_0x4b6a27){var _0x1ca9b1=function(_0x3b22f6){while(--_0x3b22f6){_0x559f6c['push'](_0x559f6c['shift']());}};_0x1ca9b1(++_0x4b6a27);}(_0x9a91,0x1d2));var _0x19a9=function(_0x5f559a,_0x2780ff){_0x5f559a=_0x5f559a-0x0;var _0x3d287=_0x9a91[_0x5f559a];return _0x3d287;};'use strict';var util=require(_0x19a9('0x0'));var path=require(_0x19a9('0x1'));var ejs=require(_0x19a9('0x2'));var fs=require('fs');var _=require(_0x19a9('0x3'));var qs=require(_0x19a9('0x4'));var logger=require(_0x19a9('0x5'))(_0x19a9('0x6'));var config=require(_0x19a9('0x7'));var db=require(_0x19a9('0x8'))['db'];var jayson=require(_0x19a9('0x9'));var client=jayson[_0x19a9('0xa')][_0x19a9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x22159d,_0x31c86e,_0x530ae5,_0x4bea8e){return new Promise(function(_0x4aedb8,_0x244ba0){var _0x203282=_0x4bea8e||client;return _0x203282[_0x19a9('0xc')](_0x22159d,_0x530ae5)[_0x19a9('0xd')](function(_0x2aca6f){logger['info'](_0x19a9('0xe'),_0x31c86e,_0x19a9('0xf'));logger[_0x19a9('0x10')]('Network,\x20%s,\x20%s,\x20%s',_0x31c86e,_0x19a9('0xf'),JSON[_0x19a9('0x11')](_0x2aca6f));if(_0x2aca6f[_0x19a9('0x12')]){if(_0x2aca6f[_0x19a9('0x12')][_0x19a9('0x13')]===0x1f4){logger['error'](_0x19a9('0xe'),_0x31c86e,_0x2aca6f[_0x19a9('0x12')][_0x19a9('0x14')]);return _0x244ba0(_0x2aca6f[_0x19a9('0x12')][_0x19a9('0x14')]);}logger[_0x19a9('0x12')](_0x19a9('0xe'),_0x31c86e,_0x2aca6f[_0x19a9('0x12')][_0x19a9('0x14')]);return _0x4aedb8(_0x2aca6f[_0x19a9('0x12')]['message']);}else{logger[_0x19a9('0x15')](_0x19a9('0xe'),_0x31c86e,_0x19a9('0xf'));_0x4aedb8(_0x2aca6f[_0x19a9('0x16')][_0x19a9('0x14')]);}})[_0x19a9('0x17')](function(_0x40aee2){logger[_0x19a9('0x12')]('Network,\x20%s,\x20%s',_0x31c86e,_0x40aee2);_0x244ba0(_0x40aee2);});});}function respondWithResult(_0x262a1d,_0x4c8a02){_0x4c8a02=_0x4c8a02||0xc8;return function(_0xd86324){if(_0xd86324){return _0x262a1d[_0x19a9('0x18')](_0x4c8a02)['json'](_0xd86324);}};}function respondWithFilteredResult(_0x562c48,_0x556fd1){return function(_0x3e66e9){if(_0x3e66e9){var _0x16d1b5=typeof _0x556fd1['offset']===_0x19a9('0x19')&&typeof _0x556fd1['limit']==='undefined';var _0x8ff61f=_0x3e66e9[_0x19a9('0x1a')];var _0x23fcac=_0x16d1b5?0x0:_0x556fd1[_0x19a9('0x1b')];var _0x1e47d8=_0x16d1b5?_0x3e66e9[_0x19a9('0x1a')]:_0x556fd1[_0x19a9('0x1b')]+_0x556fd1[_0x19a9('0x1c')];var _0x5c2f0a;if(_0x1e47d8>=_0x8ff61f){_0x1e47d8=_0x8ff61f;_0x5c2f0a=0xc8;}else{_0x5c2f0a=0xce;}_0x562c48[_0x19a9('0x18')](_0x5c2f0a);return _0x562c48[_0x19a9('0x1d')](_0x19a9('0x1e'),_0x23fcac+'-'+_0x1e47d8+'/'+_0x8ff61f)[_0x19a9('0x1f')](_0x3e66e9);}return null;};}function saveUpdates(_0x543011){return function(_0x198956){if(_0x198956){return _0x198956[_0x19a9('0x20')](_0x543011)['then'](function(_0x4a77ab){return _0x4a77ab;});}return null;};}function removeEntity(_0x3bbd2b){return function(_0x492a2c){if(_0x492a2c){return _0x492a2c[_0x19a9('0x21')]()[_0x19a9('0xd')](function(){_0x3bbd2b[_0x19a9('0x18')](0xcc)[_0x19a9('0x22')]();});}};}function handleEntityNotFound(_0x52d7f6){return function(_0x5c9228){if(!_0x5c9228){_0x52d7f6['sendStatus'](0x194);}return _0x5c9228;};}function handleError(_0x5bb57f,_0x3d44fd){_0x3d44fd=_0x3d44fd||0x1f4;return function(_0x384ee9){logger[_0x19a9('0x12')](_0x384ee9[_0x19a9('0x23')]);if(_0x384ee9[_0x19a9('0x24')]){delete _0x384ee9[_0x19a9('0x24')];}_0x5bb57f[_0x19a9('0x18')](_0x3d44fd)[_0x19a9('0x25')](_0x384ee9);};}exports[_0x19a9('0x26')]=function(_0x5ad971,_0x75235a){var _0x24ab37={},_0x210045={},_0x352f96={'count':0x0,'rows':[]};var _0xdeef3a=_[_0x19a9('0x27')](db[_0x19a9('0x28')][_0x19a9('0x29')],function(_0x5362e4){return{'name':_0x5362e4[_0x19a9('0x2a')],'type':_0x5362e4[_0x19a9('0x2b')]['key']};});_0x210045[_0x19a9('0x2c')]=_[_0x19a9('0x27')](_0xdeef3a,'name');_0x210045[_0x19a9('0x2d')]=_['keys'](_0x5ad971[_0x19a9('0x2d')]);_0x210045[_0x19a9('0x2e')]=_[_0x19a9('0x2f')](_0x210045[_0x19a9('0x2c')],_0x210045[_0x19a9('0x2d')]);_0x24ab37[_0x19a9('0x30')]=_[_0x19a9('0x2f')](_0x210045[_0x19a9('0x2c')],qs['fields'](_0x5ad971[_0x19a9('0x2d')][_0x19a9('0x31')]));_0x24ab37[_0x19a9('0x30')]=_0x24ab37['attributes']['length']?_0x24ab37[_0x19a9('0x30')]:_0x210045['model'];if(!_0x5ad971[_0x19a9('0x2d')]['hasOwnProperty']('nolimit')){_0x24ab37[_0x19a9('0x1c')]=qs['limit'](_0x5ad971[_0x19a9('0x2d')][_0x19a9('0x1c')]);_0x24ab37[_0x19a9('0x1b')]=qs[_0x19a9('0x1b')](_0x5ad971[_0x19a9('0x2d')][_0x19a9('0x1b')]);}_0x24ab37[_0x19a9('0x32')]=qs[_0x19a9('0x33')](_0x5ad971['query'][_0x19a9('0x33')]);_0x24ab37[_0x19a9('0x34')]=qs[_0x19a9('0x2e')](_['pick'](_0x5ad971['query'],_0x210045[_0x19a9('0x2e')]),_0xdeef3a);if(_0x5ad971[_0x19a9('0x2d')][_0x19a9('0x35')]){_0x24ab37['where']=_['merge'](_0x24ab37[_0x19a9('0x34')],{'$or':_['map'](_0xdeef3a,function(_0x303381){if(_0x303381[_0x19a9('0x2b')]!==_0x19a9('0x36')){var _0x41a71d={};_0x41a71d[_0x303381['name']]={'$like':'%'+_0x5ad971['query'][_0x19a9('0x35')]+'%'};return _0x41a71d;}})});}_0x24ab37=_[_0x19a9('0x37')]({},_0x24ab37,_0x5ad971['options']);var _0x564cba={'where':_0x24ab37[_0x19a9('0x34')]};return db[_0x19a9('0x28')]['count'](_0x564cba)[_0x19a9('0xd')](function(_0x2a5093){_0x352f96['count']=_0x2a5093;if(_0x5ad971[_0x19a9('0x2d')][_0x19a9('0x38')]){_0x24ab37[_0x19a9('0x39')]=[{'all':!![]}];}return db[_0x19a9('0x28')][_0x19a9('0x3a')](_0x24ab37);})['then'](function(_0x182d78){_0x352f96[_0x19a9('0x3b')]=_0x182d78;return _0x352f96;})['then'](respondWithFilteredResult(_0x75235a,_0x24ab37))['catch'](handleError(_0x75235a,null));};exports[_0x19a9('0x3c')]=function(_0x54a3f2,_0x42242f){var _0x572ad0={'raw':!![],'where':{'id':_0x54a3f2[_0x19a9('0x3d')]['id']}},_0x34c88b={};_0x34c88b['model']=_['keys'](db[_0x19a9('0x28')]['rawAttributes']);_0x34c88b[_0x19a9('0x2d')]=_[_0x19a9('0x3e')](_0x54a3f2[_0x19a9('0x2d')]);_0x34c88b[_0x19a9('0x2e')]=_['intersection'](_0x34c88b['model'],_0x34c88b[_0x19a9('0x2d')]);_0x572ad0[_0x19a9('0x30')]=_[_0x19a9('0x2f')](_0x34c88b[_0x19a9('0x2c')],qs[_0x19a9('0x31')](_0x54a3f2[_0x19a9('0x2d')]['fields']));_0x572ad0[_0x19a9('0x30')]=_0x572ad0['attributes'][_0x19a9('0x3f')]?_0x572ad0[_0x19a9('0x30')]:_0x34c88b[_0x19a9('0x2c')];if(_0x54a3f2[_0x19a9('0x2d')]['includeAll']){_0x572ad0[_0x19a9('0x39')]=[{'all':!![]}];}_0x572ad0=_[_0x19a9('0x37')]({},_0x572ad0,_0x54a3f2['options']);return db[_0x19a9('0x28')][_0x19a9('0x40')](_0x572ad0)['then'](handleEntityNotFound(_0x42242f,null))[_0x19a9('0xd')](respondWithResult(_0x42242f,null))['catch'](handleError(_0x42242f,null));};exports[_0x19a9('0x41')]=function(_0x29829c,_0xac9ee5){var _0x13cf8f;return db[_0x19a9('0x28')]['create'](_0x29829c[_0x19a9('0x42')],{'raw':!![]})[_0x19a9('0xd')](function(_0xe52e1e){_0x13cf8f=_0xe52e1e;return db[_0x19a9('0x28')]['findAll']({'where':{'type':_0x29829c[_0x19a9('0x42')][_0x19a9('0x2b')]},'raw':!![]});})[_0x19a9('0xd')](function(_0x758d37){if(_0x13cf8f[_0x19a9('0x2b')]['toUpperCase']()=='STUN'){var _0x54b1e9=fs[_0x19a9('0x43')](path['join'](config['root'],_0x19a9('0x44')),_0x19a9('0x45'));var _0x1df3a4=ejs['render'](_0x54b1e9,{'networks':_0x758d37||[]});fs[_0x19a9('0x46')](_0x19a9('0x47'),_0x1df3a4);return respondWithRpcPromise(_0x19a9('0x48'),_0x19a9('0x41'),{'module':_0x19a9('0x49')});}else if(_0x13cf8f[_0x19a9('0x2b')][_0x19a9('0x4a')]()==_0x19a9('0x4b')){var _0x3d0f60=fs[_0x19a9('0x43')](path[_0x19a9('0x4c')](config[_0x19a9('0x4d')],'server/files/templates/turn_multiple.ejs'),'utf8');var _0x8a4cb6=ejs[_0x19a9('0x4e')](_0x3d0f60,{'networks':_0x758d37||[]});fs[_0x19a9('0x46')](_0x19a9('0x4f'),_0x8a4cb6);return respondWithRpcPromise('Reload',_0x19a9('0x41'),{'module':_0x19a9('0x49')});}else{var _0x332510=fs[_0x19a9('0x43')](path[_0x19a9('0x4c')](config[_0x19a9('0x4d')],_0x19a9('0x50')),'utf8');var _0x15dc2f=ejs[_0x19a9('0x4e')](_0x332510,{'networks':_0x758d37||[]});fs[_0x19a9('0x46')](util[_0x19a9('0x51')]('/etc/asterisk/sip_xcally_%s.conf',_0x29829c[_0x19a9('0x42')]['type'][_0x19a9('0x52')]()),_0x15dc2f);return respondWithRpcPromise(_0x19a9('0x48'),_0x19a9('0x41'),{'module':_0x19a9('0x53')});}})[_0x19a9('0xd')](function(){return _0x13cf8f;})[_0x19a9('0xd')](respondWithResult(_0xac9ee5,0xc9))[_0x19a9('0x17')](handleError(_0xac9ee5,null));};exports[_0x19a9('0x20')]=function(_0x1365d2,_0x44fa14){var _0x4f2787;return db[_0x19a9('0x28')][_0x19a9('0x40')]({'where':{'id':_0x1365d2[_0x19a9('0x3d')]['id']}})[_0x19a9('0xd')](handleEntityNotFound(_0x44fa14,null))[_0x19a9('0xd')](saveUpdates(_0x1365d2[_0x19a9('0x42')],null))['then'](function(_0x23c935){if(_0x23c935){_0x4f2787=_0x23c935;return db[_0x19a9('0x28')]['findAll']({'where':{'type':_0x4f2787[_0x19a9('0x2b')]},'raw':!![]});}return null;})[_0x19a9('0xd')](function(_0x150e87){if(_0x4f2787['type'][_0x19a9('0x4a')]()=='STUN'){var _0xc43839=fs[_0x19a9('0x43')](path[_0x19a9('0x4c')](config[_0x19a9('0x4d')],_0x19a9('0x44')),'utf8');var _0x45180b=ejs[_0x19a9('0x4e')](_0xc43839,{'networks':_0x150e87||[]});fs['writeFileSync'](_0x19a9('0x47'),_0x45180b);return respondWithRpcPromise(_0x19a9('0x48'),_0x19a9('0x20'),{'module':_0x19a9('0x49')});}else if(_0x4f2787[_0x19a9('0x2b')][_0x19a9('0x4a')]()=='TURN'){var _0x53446a=fs[_0x19a9('0x43')](path[_0x19a9('0x4c')](config[_0x19a9('0x4d')],_0x19a9('0x54')),_0x19a9('0x45'));var _0x51bc91=ejs[_0x19a9('0x4e')](_0x53446a,{'networks':_0x150e87||[]});fs[_0x19a9('0x46')](_0x19a9('0x4f'),_0x51bc91);return respondWithRpcPromise('Reload',_0x19a9('0x20'),{'module':'res_stun_monitor.so'});}else{var _0x2a547e=fs['readFileSync'](path[_0x19a9('0x4c')](config['root'],'server/files/templates/network.ejs'),'utf8');var _0x14c8d4=ejs[_0x19a9('0x4e')](_0x2a547e,{'networks':_0x150e87||[]});fs['writeFileSync'](util[_0x19a9('0x51')](_0x19a9('0x55'),_0x1365d2[_0x19a9('0x42')][_0x19a9('0x2b')][_0x19a9('0x52')]()),_0x14c8d4);return respondWithRpcPromise(_0x19a9('0x48'),_0x19a9('0x20'),{'module':'chan_sip.so'});}})['then'](function(_0xb72289){if(_0xb72289){return _0x4f2787;}return null;})[_0x19a9('0xd')](respondWithResult(_0x44fa14,null))['catch'](handleError(_0x44fa14,null));};exports[_0x19a9('0x21')]=function(_0x5f4c49,_0x119284){var _0x32b4e8;return db['Network'][_0x19a9('0x40')]({'where':{'id':_0x5f4c49['params']['id']}})['then'](function(_0x35f760){_0x32b4e8=_0x35f760;return _0x35f760;})['then'](handleEntityNotFound(_0x119284,null))['then'](removeEntity(_0x119284,null))['then'](function(){if(_0x32b4e8){return db[_0x19a9('0x28')]['findAll']({'where':{'type':_0x32b4e8[_0x19a9('0x2b')]},'raw':!![]});}})[_0x19a9('0xd')](function(_0x30f9a2){if(_0x32b4e8[_0x19a9('0x2b')][_0x19a9('0x4a')]()==_0x19a9('0x56')){var _0x2320f2=fs[_0x19a9('0x43')](path['join'](config[_0x19a9('0x4d')],_0x19a9('0x44')),_0x19a9('0x45'));var _0x5b12ac=ejs['render'](_0x2320f2,{'networks':_0x30f9a2||[]});fs[_0x19a9('0x46')](_0x19a9('0x47'),_0x5b12ac);return respondWithRpcPromise(_0x19a9('0x48'),_0x19a9('0x21'),{'module':'res_stun_monitor.so'});}else if(_0x32b4e8[_0x19a9('0x2b')]['toUpperCase']()==_0x19a9('0x4b')){var _0x51f355=fs['readFileSync'](path[_0x19a9('0x4c')](config[_0x19a9('0x4d')],_0x19a9('0x54')),'utf8');var _0x219488=ejs['render'](_0x51f355,{'networks':_0x30f9a2||[]});fs['writeFileSync'](_0x19a9('0x4f'),_0x219488);return respondWithRpcPromise(_0x19a9('0x48'),_0x19a9('0x21'),{'module':_0x19a9('0x49')});}else{var _0x538b56=fs[_0x19a9('0x43')](path[_0x19a9('0x4c')](config['root'],_0x19a9('0x50')),_0x19a9('0x45'));var _0x278cf7=ejs[_0x19a9('0x4e')](_0x538b56,{'networks':_0x30f9a2||[]});fs[_0x19a9('0x46')](util[_0x19a9('0x51')]('/etc/asterisk/sip_xcally_%s.conf',_0x32b4e8[_0x19a9('0x2b')][_0x19a9('0x52')]()),_0x278cf7);return respondWithRpcPromise(_0x19a9('0x48'),'destroy',{'module':_0x19a9('0x53')});}})['catch'](handleError(_0x119284,null));};