a8c3fef66f9e6028e773f9561e5eb4ff82e43d41
[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 _0xee74=['nolimit','order','sort','where','pick','VIRTUAL','filter','includeAll','rows','show','rawAttributes','keys','include','merge','options','find','create','sequelize','body','STUN','join','root','server/files/templates/stun_multiple.ejs','utf8','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','toUpperCase','TURN','server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','readFileSync','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','chan_sip.so','update','transaction','findAll','params','toLowerCase','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','jayson/promise','client','http','request','then','info','Network,\x20%s,\x20%s','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','destroy','name','send','index','map','Network','fieldName','type','key','model','query','filters','intersection','attributes','fields','length'];(function(_0x24761a,_0x4fe5bd){var _0x205b4e=function(_0x30da60){while(--_0x30da60){_0x24761a['push'](_0x24761a['shift']());}};_0x205b4e(++_0x4fe5bd);}(_0xee74,0x1eb));var _0x4ee7=function(_0x2928e8,_0x423b1c){_0x2928e8=_0x2928e8-0x0;var _0x1d9aaa=_0xee74[_0x2928e8];return _0x1d9aaa;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4ee7('0x0'));var zipdir=require(_0x4ee7('0x1'));var jsonpatch=require(_0x4ee7('0x2'));var rp=require(_0x4ee7('0x3'));var moment=require(_0x4ee7('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x4ee7('0x5'));var util=require(_0x4ee7('0x6'));var path=require(_0x4ee7('0x7'));var sox=require(_0x4ee7('0x8'));var csv=require('to-csv');var ejs=require(_0x4ee7('0x9'));var fs=require('fs');var fs_extra=require(_0x4ee7('0xa'));var _=require(_0x4ee7('0xb'));var squel=require(_0x4ee7('0xc'));var crypto=require(_0x4ee7('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x4ee7('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x4ee7('0xf'));var Redis=require(_0x4ee7('0x10'));var authService=require(_0x4ee7('0x11'));var qs=require(_0x4ee7('0x12'));var as=require(_0x4ee7('0x13'));var hardwareService=require(_0x4ee7('0x14'));var logger=require(_0x4ee7('0x15'))(_0x4ee7('0x16'));var utils=require('../../config/utils');var config=require(_0x4ee7('0x17'));var licenseUtil=require(_0x4ee7('0x18'));var db=require('../../mysqldb')['db'];var jayson=require(_0x4ee7('0x19'));var client=jayson[_0x4ee7('0x1a')][_0x4ee7('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x328dd2,_0x5f02d3,_0x5cff0b,_0x4682c0){return new BPromise(function(_0x244e3d,_0x3544d0){var _0x8865d0=_0x4682c0||client;return _0x8865d0[_0x4ee7('0x1c')](_0x328dd2,_0x5cff0b)[_0x4ee7('0x1d')](function(_0x1fa756){logger[_0x4ee7('0x1e')](_0x4ee7('0x1f'),_0x5f02d3,'request\x20sent');logger[_0x4ee7('0x20')](_0x4ee7('0x21'),_0x5f02d3,'request\x20sent',JSON[_0x4ee7('0x22')](_0x1fa756));if(_0x1fa756[_0x4ee7('0x23')]){if(_0x1fa756[_0x4ee7('0x23')][_0x4ee7('0x24')]===0x1f4){logger['error']('Network,\x20%s,\x20%s',_0x5f02d3,_0x1fa756[_0x4ee7('0x23')][_0x4ee7('0x25')]);return _0x3544d0(_0x1fa756[_0x4ee7('0x23')]['message']);}logger[_0x4ee7('0x23')](_0x4ee7('0x1f'),_0x5f02d3,_0x1fa756[_0x4ee7('0x23')][_0x4ee7('0x25')]);return _0x244e3d(_0x1fa756[_0x4ee7('0x23')][_0x4ee7('0x25')]);}else{logger[_0x4ee7('0x1e')]('Network,\x20%s,\x20%s',_0x5f02d3,_0x4ee7('0x26'));_0x244e3d(_0x1fa756[_0x4ee7('0x27')][_0x4ee7('0x25')]);}})[_0x4ee7('0x28')](function(_0x191750){logger[_0x4ee7('0x23')](_0x4ee7('0x1f'),_0x5f02d3,_0x191750);_0x3544d0(_0x191750);});});}function respondWithStatusCode(_0x5d504d,_0x56afeb){_0x56afeb=_0x56afeb||0xcc;return function(_0x3bfcf6){if(_0x3bfcf6){return _0x5d504d[_0x4ee7('0x29')](_0x56afeb);}return _0x5d504d[_0x4ee7('0x2a')](_0x56afeb)[_0x4ee7('0x2b')]();};}function respondWithResult(_0x17a67b,_0x28de8f){_0x28de8f=_0x28de8f||0xc8;return function(_0x4b0fab){if(_0x4b0fab){return _0x17a67b[_0x4ee7('0x2a')](_0x28de8f)[_0x4ee7('0x2c')](_0x4b0fab);}};}function respondWithFilteredResult(_0x2a72bf,_0x20b34c){return function(_0x1bbb57){if(_0x1bbb57){var _0x3bdf95=typeof _0x20b34c['offset']===_0x4ee7('0x2d')&&typeof _0x20b34c[_0x4ee7('0x2e')]===_0x4ee7('0x2d');var _0x1db158=_0x1bbb57[_0x4ee7('0x2f')];var _0xe9658a=_0x3bdf95?0x0:_0x20b34c['offset'];var _0x2767f0=_0x3bdf95?_0x1bbb57['count']:_0x20b34c[_0x4ee7('0x30')]+_0x20b34c['limit'];var _0x393457;if(_0x2767f0>=_0x1db158){_0x2767f0=_0x1db158;_0x393457=0xc8;}else{_0x393457=0xce;}_0x2a72bf[_0x4ee7('0x2a')](_0x393457);return _0x2a72bf['set'](_0x4ee7('0x31'),_0xe9658a+'-'+_0x2767f0+'/'+_0x1db158)['json'](_0x1bbb57);}return null;};}function patchUpdates(_0x54c73d){return function(_0xdd1b63){try{jsonpatch[_0x4ee7('0x32')](_0xdd1b63,_0x54c73d,!![]);}catch(_0x1fcf45){return BPromise[_0x4ee7('0x33')](_0x1fcf45);}return _0xdd1b63[_0x4ee7('0x34')]();};}function saveUpdates(_0x5e5d5b,_0x3e13f6){return function(_0x15289d){if(_0x15289d){return _0x15289d['update'](_0x5e5d5b)[_0x4ee7('0x1d')](function(_0x3c7f29){return _0x3c7f29;});}return null;};}function removeEntity(_0x596d6b,_0x27c548){return function(_0x2115df){if(_0x2115df){return _0x2115df[_0x4ee7('0x35')]()[_0x4ee7('0x1d')](function(){_0x596d6b['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x43c0ab,_0x5da127){return function(_0x5d0ebf){if(!_0x5d0ebf){_0x43c0ab['sendStatus'](0x194);}return _0x5d0ebf;};}function handleError(_0x190276,_0x721404){_0x721404=_0x721404||0x1f4;return function(_0x39a80f){logger[_0x4ee7('0x23')](_0x39a80f['stack']);if(_0x39a80f[_0x4ee7('0x36')]){delete _0x39a80f[_0x4ee7('0x36')];}_0x190276[_0x4ee7('0x2a')](_0x721404)[_0x4ee7('0x37')](_0x39a80f);};}exports[_0x4ee7('0x38')]=function(_0x3e66e3,_0x34774b){var _0x39d606={},_0x196180={},_0x408568={'count':0x0,'rows':[]};var _0x301315=_[_0x4ee7('0x39')](db[_0x4ee7('0x3a')]['rawAttributes'],function(_0xd9c657){return{'name':_0xd9c657[_0x4ee7('0x3b')],'type':_0xd9c657[_0x4ee7('0x3c')][_0x4ee7('0x3d')]};});_0x196180[_0x4ee7('0x3e')]=_[_0x4ee7('0x39')](_0x301315,_0x4ee7('0x36'));_0x196180[_0x4ee7('0x3f')]=_['keys'](_0x3e66e3[_0x4ee7('0x3f')]);_0x196180[_0x4ee7('0x40')]=_[_0x4ee7('0x41')](_0x196180['model'],_0x196180[_0x4ee7('0x3f')]);_0x39d606[_0x4ee7('0x42')]=_[_0x4ee7('0x41')](_0x196180[_0x4ee7('0x3e')],qs[_0x4ee7('0x43')](_0x3e66e3['query'][_0x4ee7('0x43')]));_0x39d606[_0x4ee7('0x42')]=_0x39d606[_0x4ee7('0x42')][_0x4ee7('0x44')]?_0x39d606[_0x4ee7('0x42')]:_0x196180['model'];if(!_0x3e66e3[_0x4ee7('0x3f')]['hasOwnProperty'](_0x4ee7('0x45'))){_0x39d606[_0x4ee7('0x2e')]=qs[_0x4ee7('0x2e')](_0x3e66e3[_0x4ee7('0x3f')]['limit']);_0x39d606['offset']=qs['offset'](_0x3e66e3[_0x4ee7('0x3f')]['offset']);}_0x39d606[_0x4ee7('0x46')]=qs[_0x4ee7('0x47')](_0x3e66e3[_0x4ee7('0x3f')]['sort']);_0x39d606[_0x4ee7('0x48')]=qs[_0x4ee7('0x40')](_[_0x4ee7('0x49')](_0x3e66e3['query'],_0x196180['filters']),_0x301315);if(_0x3e66e3[_0x4ee7('0x3f')]['filter']){_0x39d606[_0x4ee7('0x48')]=_['merge'](_0x39d606[_0x4ee7('0x48')],{'$or':_[_0x4ee7('0x39')](_0x301315,function(_0x46cfb8){if(_0x46cfb8[_0x4ee7('0x3c')]!==_0x4ee7('0x4a')){var _0x54170f={};_0x54170f[_0x46cfb8[_0x4ee7('0x36')]]={'$like':'%'+_0x3e66e3['query'][_0x4ee7('0x4b')]+'%'};return _0x54170f;}})});}_0x39d606=_['merge']({},_0x39d606,_0x3e66e3['options']);var _0x2daeaf={'where':_0x39d606[_0x4ee7('0x48')]};return db['Network'][_0x4ee7('0x2f')](_0x2daeaf)[_0x4ee7('0x1d')](function(_0x4d3411){_0x408568[_0x4ee7('0x2f')]=_0x4d3411;if(_0x3e66e3[_0x4ee7('0x3f')][_0x4ee7('0x4c')]){_0x39d606['include']=[{'all':!![]}];}return db[_0x4ee7('0x3a')]['findAll'](_0x39d606);})['then'](function(_0x1f4f93){_0x408568[_0x4ee7('0x4d')]=_0x1f4f93;return _0x408568;})[_0x4ee7('0x1d')](respondWithFilteredResult(_0x34774b,_0x39d606))[_0x4ee7('0x28')](handleError(_0x34774b,null));};exports[_0x4ee7('0x4e')]=function(_0x515ff4,_0x36369f){var _0x98dcfb={'raw':!![],'where':{'id':_0x515ff4['params']['id']}},_0x205f72={};_0x205f72[_0x4ee7('0x3e')]=_['keys'](db['Network'][_0x4ee7('0x4f')]);_0x205f72['query']=_[_0x4ee7('0x50')](_0x515ff4[_0x4ee7('0x3f')]);_0x205f72[_0x4ee7('0x40')]=_[_0x4ee7('0x41')](_0x205f72[_0x4ee7('0x3e')],_0x205f72[_0x4ee7('0x3f')]);_0x98dcfb[_0x4ee7('0x42')]=_['intersection'](_0x205f72[_0x4ee7('0x3e')],qs[_0x4ee7('0x43')](_0x515ff4[_0x4ee7('0x3f')][_0x4ee7('0x43')]));_0x98dcfb['attributes']=_0x98dcfb[_0x4ee7('0x42')][_0x4ee7('0x44')]?_0x98dcfb[_0x4ee7('0x42')]:_0x205f72[_0x4ee7('0x3e')];if(_0x515ff4['query'][_0x4ee7('0x4c')]){_0x98dcfb[_0x4ee7('0x51')]=[{'all':!![]}];}_0x98dcfb=_[_0x4ee7('0x52')]({},_0x98dcfb,_0x515ff4[_0x4ee7('0x53')]);return db[_0x4ee7('0x3a')][_0x4ee7('0x54')](_0x98dcfb)[_0x4ee7('0x1d')](handleEntityNotFound(_0x36369f,null))['then'](respondWithResult(_0x36369f,null))[_0x4ee7('0x28')](handleError(_0x36369f,null));};exports[_0x4ee7('0x55')]=function(_0x2773d0,_0x52741f,_0x6ef2e){var _0x1608cc;return db[_0x4ee7('0x56')]['transaction'](function(_0x3ac99d){return db[_0x4ee7('0x3a')][_0x4ee7('0x55')](_0x2773d0[_0x4ee7('0x57')],{'raw':!![]})['then'](function(_0x5a9b88){_0x1608cc=_0x5a9b88;return db[_0x4ee7('0x3a')]['findAll']({'where':{'type':_0x2773d0['body']['type']},'raw':!![]});})[_0x4ee7('0x1d')](function(_0xc1dab5){if(_0x1608cc['type']['toUpperCase']()==_0x4ee7('0x58')){var _0x30df69=fs['readFileSync'](path[_0x4ee7('0x59')](config[_0x4ee7('0x5a')],_0x4ee7('0x5b')),_0x4ee7('0x5c'));var _0x1f9a62=ejs[_0x4ee7('0x5d')](_0x30df69,{'networks':_0xc1dab5||[]});fs[_0x4ee7('0x5e')](_0x4ee7('0x5f'),_0x1f9a62);return respondWithRpcPromise(_0x4ee7('0x60'),_0x4ee7('0x55'),{'module':_0x4ee7('0x61')});}else if(_0x1608cc[_0x4ee7('0x3c')][_0x4ee7('0x62')]()==_0x4ee7('0x63')){var _0x2d1848=fs['readFileSync'](path[_0x4ee7('0x59')](config['root'],_0x4ee7('0x64')),_0x4ee7('0x5c'));var _0x3cdcd4=ejs[_0x4ee7('0x5d')](_0x2d1848,{'networks':_0xc1dab5||[]});fs[_0x4ee7('0x5e')](_0x4ee7('0x65'),_0x3cdcd4);return respondWithRpcPromise('Reload','create',{'module':'res_stun_monitor.so'});}else{var _0x431ddf=fs[_0x4ee7('0x66')](path[_0x4ee7('0x59')](config[_0x4ee7('0x5a')],_0x4ee7('0x67')),_0x4ee7('0x5c'));var _0x3e8bd4=ejs[_0x4ee7('0x5d')](_0x431ddf,{'networks':_0xc1dab5||[]});fs[_0x4ee7('0x5e')](util[_0x4ee7('0x68')](_0x4ee7('0x69'),_0x2773d0[_0x4ee7('0x57')][_0x4ee7('0x3c')]['toLowerCase']()),_0x3e8bd4);return respondWithRpcPromise('Reload','create',{'module':_0x4ee7('0x6a')});}return null;})['then'](function(){return _0x1608cc;});})[_0x4ee7('0x1d')](respondWithResult(_0x52741f,0xc9))[_0x4ee7('0x28')](handleError(_0x52741f,null));};exports[_0x4ee7('0x6b')]=function(_0x45694e,_0x5cef03,_0x39b8ec){var _0x175859;return db[_0x4ee7('0x56')][_0x4ee7('0x6c')](function(_0x298f08){return db[_0x4ee7('0x3a')]['find']({'where':{'id':_0x45694e['params']['id']}})[_0x4ee7('0x1d')](handleEntityNotFound(_0x5cef03,null))[_0x4ee7('0x1d')](saveUpdates(_0x45694e['body'],null))[_0x4ee7('0x1d')](function(_0x335bee){if(_0x335bee){_0x175859=_0x335bee;return db[_0x4ee7('0x3a')][_0x4ee7('0x6d')]({'where':{'type':_0x175859['type']},'raw':!![]});}return null;})[_0x4ee7('0x1d')](function(_0x5d0bf2){if(_0x175859[_0x4ee7('0x3c')]['toUpperCase']()==_0x4ee7('0x58')){var _0x585f5f=fs[_0x4ee7('0x66')](path['join'](config[_0x4ee7('0x5a')],_0x4ee7('0x5b')),_0x4ee7('0x5c'));var _0x3a92b7=ejs[_0x4ee7('0x5d')](_0x585f5f,{'networks':_0x5d0bf2||[]});fs[_0x4ee7('0x5e')](_0x4ee7('0x5f'),_0x3a92b7);return respondWithRpcPromise(_0x4ee7('0x60'),'update',{'module':'res_stun_monitor.so'});}else if(_0x175859[_0x4ee7('0x3c')]['toUpperCase']()==_0x4ee7('0x63')){var _0x10bb17=fs[_0x4ee7('0x66')](path[_0x4ee7('0x59')](config[_0x4ee7('0x5a')],_0x4ee7('0x64')),_0x4ee7('0x5c'));var _0x371e89=ejs[_0x4ee7('0x5d')](_0x10bb17,{'networks':_0x5d0bf2||[]});fs['writeFileSync'](_0x4ee7('0x65'),_0x371e89);return respondWithRpcPromise('Reload',_0x4ee7('0x6b'),{'module':'res_stun_monitor.so'});}else{var _0x4c28cc=fs[_0x4ee7('0x66')](path[_0x4ee7('0x59')](config[_0x4ee7('0x5a')],_0x4ee7('0x67')),_0x4ee7('0x5c'));var _0x2c6d69=ejs[_0x4ee7('0x5d')](_0x4c28cc,{'networks':_0x5d0bf2||[]});fs[_0x4ee7('0x5e')](util['format']('/etc/asterisk/sip_xcally_%s.conf',_0x45694e[_0x4ee7('0x57')][_0x4ee7('0x3c')]['toLowerCase']()),_0x2c6d69);return respondWithRpcPromise(_0x4ee7('0x60'),'update',{'module':_0x4ee7('0x6a')});}return null;})[_0x4ee7('0x1d')](function(_0x199fde){if(_0x199fde){return _0x175859;}return null;});})[_0x4ee7('0x1d')](respondWithResult(_0x5cef03,null))[_0x4ee7('0x28')](handleError(_0x5cef03,null));};exports[_0x4ee7('0x35')]=function(_0x588b1e,_0x5354a5,_0x467a66){var _0x3e64a3;return db[_0x4ee7('0x3a')][_0x4ee7('0x54')]({'where':{'id':_0x588b1e[_0x4ee7('0x6e')]['id']}})[_0x4ee7('0x1d')](function(_0x2b0469){_0x3e64a3=_0x2b0469;return _0x2b0469;})[_0x4ee7('0x1d')](handleEntityNotFound(_0x5354a5,null))[_0x4ee7('0x1d')](removeEntity(_0x5354a5,null))[_0x4ee7('0x1d')](function(){if(_0x3e64a3){return db[_0x4ee7('0x3a')]['findAll']({'where':{'type':_0x3e64a3[_0x4ee7('0x3c')]},'raw':!![]});}})['then'](function(_0x1bd291){if(_0x3e64a3[_0x4ee7('0x3c')][_0x4ee7('0x62')]()=='STUN'){var _0x86ce63=fs[_0x4ee7('0x66')](path[_0x4ee7('0x59')](config['root'],_0x4ee7('0x5b')),'utf8');var _0x39f11f=ejs[_0x4ee7('0x5d')](_0x86ce63,{'networks':_0x1bd291||[]});fs['writeFileSync']('/etc/asterisk/stun_xcally.conf',_0x39f11f);return respondWithRpcPromise('Reload',_0x4ee7('0x35'),{'module':_0x4ee7('0x61')});}else if(_0x3e64a3[_0x4ee7('0x3c')][_0x4ee7('0x62')]()=='TURN'){var _0x4402de=fs[_0x4ee7('0x66')](path[_0x4ee7('0x59')](config[_0x4ee7('0x5a')],_0x4ee7('0x64')),_0x4ee7('0x5c'));var _0x46f47f=ejs[_0x4ee7('0x5d')](_0x4402de,{'networks':_0x1bd291||[]});fs[_0x4ee7('0x5e')]('/etc/asterisk/turn_xcally.conf',_0x46f47f);return respondWithRpcPromise(_0x4ee7('0x60'),_0x4ee7('0x35'),{'module':'res_stun_monitor.so'});}else{var _0x3285e3=fs[_0x4ee7('0x66')](path[_0x4ee7('0x59')](config[_0x4ee7('0x5a')],'server/files/templates/network.ejs'),_0x4ee7('0x5c'));var _0x52af76=ejs[_0x4ee7('0x5d')](_0x3285e3,{'networks':_0x1bd291||[]});fs[_0x4ee7('0x5e')](util['format'](_0x4ee7('0x69'),_0x588b1e[_0x4ee7('0x57')]['type'][_0x4ee7('0x6f')]()),_0x52af76);return respondWithRpcPromise('Reload','destroy',{'module':_0x4ee7('0x6a')});}return null;})[_0x4ee7('0x28')](handleError(_0x5354a5,null));};