d2effbcdd040c8c2fb66e4f464f93715343d9a1c
[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 _0x1023=['api','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','then','info','Network,\x20%s,\x20%s','request\x20sent','Network,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','status','end','offset','undefined','count','Content-Range','json','apply','reject','save','update','destroy','stack','name','send','index','map','Network','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','length','nolimit','limit','order','sort','pick','where','VIRTUAL','merge','include','findAll','rows','includeAll','options','sequelize','transaction','create','body','toUpperCase','STUN','readFileSync','join','server/files/templates/stun_multiple.ejs','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','TURN','root','server/files/templates/turn_multiple.ejs','utf8','render','writeFileSync','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','find','params','chan_sip.so','eml-format','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger'];(function(_0x13a439,_0x42a8f5){var _0x39f1d9=function(_0xc9fe6){while(--_0xc9fe6){_0x13a439['push'](_0x13a439['shift']());}};_0x39f1d9(++_0x42a8f5);}(_0x1023,0xc1));var _0x3102=function(_0x28a2f0,_0xa7a56f){_0x28a2f0=_0x28a2f0-0x0;var _0x225536=_0x1023[_0x28a2f0];return _0x225536;};'use strict';var emlformat=require(_0x3102('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x3102('0x1'));var moment=require(_0x3102('0x2'));var BPromise=require(_0x3102('0x3'));var Mustache=require(_0x3102('0x4'));var util=require(_0x3102('0x5'));var path=require(_0x3102('0x6'));var sox=require(_0x3102('0x7'));var csv=require(_0x3102('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3102('0x9'));var _=require(_0x3102('0xa'));var squel=require('squel');var crypto=require(_0x3102('0xb'));var jsforce=require(_0x3102('0xc'));var deskjs=require(_0x3102('0xd'));var toCsv=require(_0x3102('0x8'));var querystring=require(_0x3102('0xe'));var Papa=require(_0x3102('0xf'));var Redis=require(_0x3102('0x10'));var authService=require(_0x3102('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x3102('0x12'));var hardwareService=require(_0x3102('0x13'));var logger=require(_0x3102('0x14'))(_0x3102('0x15'));var utils=require('../../config/utils');var config=require(_0x3102('0x16'));var licenseUtil=require(_0x3102('0x17'));var db=require(_0x3102('0x18'))['db'];var jayson=require(_0x3102('0x19'));var client=jayson[_0x3102('0x1a')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1f16a4,_0x197a85,_0x5180ad,_0x184bdc){return new BPromise(function(_0x2f61f8,_0x1b95db){var _0x3c3920=_0x184bdc||client;return _0x3c3920['request'](_0x1f16a4,_0x5180ad)[_0x3102('0x1b')](function(_0x36d955){logger[_0x3102('0x1c')](_0x3102('0x1d'),_0x197a85,_0x3102('0x1e'));logger['debug'](_0x3102('0x1f'),_0x197a85,'request\x20sent',JSON[_0x3102('0x20')](_0x36d955));if(_0x36d955[_0x3102('0x21')]){if(_0x36d955['error']['code']===0x1f4){logger[_0x3102('0x21')](_0x3102('0x1d'),_0x197a85,_0x36d955[_0x3102('0x21')]['message']);return _0x1b95db(_0x36d955[_0x3102('0x21')][_0x3102('0x22')]);}logger[_0x3102('0x21')]('Network,\x20%s,\x20%s',_0x197a85,_0x36d955[_0x3102('0x21')][_0x3102('0x22')]);return _0x2f61f8(_0x36d955['error'][_0x3102('0x22')]);}else{logger[_0x3102('0x1c')](_0x3102('0x1d'),_0x197a85,_0x3102('0x1e'));_0x2f61f8(_0x36d955[_0x3102('0x23')][_0x3102('0x22')]);}})[_0x3102('0x24')](function(_0x4d8212){logger[_0x3102('0x21')](_0x3102('0x1d'),_0x197a85,_0x4d8212);_0x1b95db(_0x4d8212);});});}function respondWithStatusCode(_0x2477f3,_0x55ca3f){_0x55ca3f=_0x55ca3f||0xcc;return function(_0x11e5de){if(_0x11e5de){return _0x2477f3[_0x3102('0x25')](_0x55ca3f);}return _0x2477f3[_0x3102('0x26')](_0x55ca3f)[_0x3102('0x27')]();};}function respondWithResult(_0x577cb3,_0x2770d9){_0x2770d9=_0x2770d9||0xc8;return function(_0x195039){if(_0x195039){return _0x577cb3[_0x3102('0x26')](_0x2770d9)['json'](_0x195039);}};}function respondWithFilteredResult(_0x178ebb,_0x36231e){return function(_0x598a5a){if(_0x598a5a){var _0x29b3dc=typeof _0x36231e[_0x3102('0x28')]===_0x3102('0x29')&&typeof _0x36231e['limit']===_0x3102('0x29');var _0x40a6f3=_0x598a5a[_0x3102('0x2a')];var _0x24226a=_0x29b3dc?0x0:_0x36231e[_0x3102('0x28')];var _0x1768c2=_0x29b3dc?_0x598a5a[_0x3102('0x2a')]:_0x36231e[_0x3102('0x28')]+_0x36231e['limit'];var _0x4dc9b1;if(_0x1768c2>=_0x40a6f3){_0x1768c2=_0x40a6f3;_0x4dc9b1=0xc8;}else{_0x4dc9b1=0xce;}_0x178ebb[_0x3102('0x26')](_0x4dc9b1);return _0x178ebb['set'](_0x3102('0x2b'),_0x24226a+'-'+_0x1768c2+'/'+_0x40a6f3)[_0x3102('0x2c')](_0x598a5a);}return null;};}function patchUpdates(_0x2ff248){return function(_0x408200){try{jsonpatch[_0x3102('0x2d')](_0x408200,_0x2ff248,!![]);}catch(_0x568fe0){return BPromise[_0x3102('0x2e')](_0x568fe0);}return _0x408200[_0x3102('0x2f')]();};}function saveUpdates(_0x59d16b,_0x1f2ac4){return function(_0x332b9c){if(_0x332b9c){return _0x332b9c[_0x3102('0x30')](_0x59d16b)[_0x3102('0x1b')](function(_0x1af7db){return _0x1af7db;});}return null;};}function removeEntity(_0x1c1424,_0x1901d5){return function(_0x5454e2){if(_0x5454e2){return _0x5454e2[_0x3102('0x31')]()[_0x3102('0x1b')](function(){_0x1c1424[_0x3102('0x26')](0xcc)[_0x3102('0x27')]();});}};}function handleEntityNotFound(_0x7f708,_0x21342f){return function(_0x1cb149){if(!_0x1cb149){_0x7f708[_0x3102('0x25')](0x194);}return _0x1cb149;};}function handleError(_0x6c63f1,_0x1e667d){_0x1e667d=_0x1e667d||0x1f4;return function(_0x62e328){logger[_0x3102('0x21')](_0x62e328[_0x3102('0x32')]);if(_0x62e328['name']){delete _0x62e328[_0x3102('0x33')];}_0x6c63f1['status'](_0x1e667d)[_0x3102('0x34')](_0x62e328);};}exports[_0x3102('0x35')]=function(_0x3946ad,_0x15b6e6){var _0xd6e13d={},_0x218f7b={},_0x73ebf7={'count':0x0,'rows':[]};var _0x2da221=_[_0x3102('0x36')](db[_0x3102('0x37')][_0x3102('0x38')],function(_0x29402d){return{'name':_0x29402d[_0x3102('0x39')],'type':_0x29402d[_0x3102('0x3a')][_0x3102('0x3b')]};});_0x218f7b[_0x3102('0x3c')]=_[_0x3102('0x36')](_0x2da221,'name');_0x218f7b['query']=_[_0x3102('0x3d')](_0x3946ad[_0x3102('0x3e')]);_0x218f7b[_0x3102('0x3f')]=_[_0x3102('0x40')](_0x218f7b[_0x3102('0x3c')],_0x218f7b['query']);_0xd6e13d['attributes']=_[_0x3102('0x40')](_0x218f7b['model'],qs['fields'](_0x3946ad['query'][_0x3102('0x41')]));_0xd6e13d['attributes']=_0xd6e13d[_0x3102('0x42')][_0x3102('0x43')]?_0xd6e13d['attributes']:_0x218f7b[_0x3102('0x3c')];if(!_0x3946ad['query']['hasOwnProperty'](_0x3102('0x44'))){_0xd6e13d[_0x3102('0x45')]=qs['limit'](_0x3946ad[_0x3102('0x3e')][_0x3102('0x45')]);_0xd6e13d[_0x3102('0x28')]=qs[_0x3102('0x28')](_0x3946ad[_0x3102('0x3e')][_0x3102('0x28')]);}_0xd6e13d[_0x3102('0x46')]=qs[_0x3102('0x47')](_0x3946ad[_0x3102('0x3e')][_0x3102('0x47')]);_0xd6e13d['where']=qs['filters'](_[_0x3102('0x48')](_0x3946ad['query'],_0x218f7b[_0x3102('0x3f')]),_0x2da221);if(_0x3946ad[_0x3102('0x3e')]['filter']){_0xd6e13d[_0x3102('0x49')]=_['merge'](_0xd6e13d[_0x3102('0x49')],{'$or':_[_0x3102('0x36')](_0x2da221,function(_0x2311ba){if(_0x2311ba[_0x3102('0x3a')]!==_0x3102('0x4a')){var _0x3d1d95={};_0x3d1d95[_0x2311ba[_0x3102('0x33')]]={'$like':'%'+_0x3946ad[_0x3102('0x3e')]['filter']+'%'};return _0x3d1d95;}})});}_0xd6e13d=_[_0x3102('0x4b')]({},_0xd6e13d,_0x3946ad['options']);var _0xbcfc4={'where':_0xd6e13d['where']};return db[_0x3102('0x37')]['count'](_0xbcfc4)['then'](function(_0x18231b){_0x73ebf7[_0x3102('0x2a')]=_0x18231b;if(_0x3946ad[_0x3102('0x3e')]['includeAll']){_0xd6e13d[_0x3102('0x4c')]=[{'all':!![]}];}return db[_0x3102('0x37')][_0x3102('0x4d')](_0xd6e13d);})[_0x3102('0x1b')](function(_0x1eb6f8){_0x73ebf7[_0x3102('0x4e')]=_0x1eb6f8;return _0x73ebf7;})[_0x3102('0x1b')](respondWithFilteredResult(_0x15b6e6,_0xd6e13d))[_0x3102('0x24')](handleError(_0x15b6e6,null));};exports['show']=function(_0x1fcf53,_0xbe89db){var _0x117be8={'raw':!![],'where':{'id':_0x1fcf53['params']['id']}},_0x69494c={};_0x69494c[_0x3102('0x3c')]=_['keys'](db[_0x3102('0x37')][_0x3102('0x38')]);_0x69494c[_0x3102('0x3e')]=_['keys'](_0x1fcf53[_0x3102('0x3e')]);_0x69494c[_0x3102('0x3f')]=_['intersection'](_0x69494c[_0x3102('0x3c')],_0x69494c[_0x3102('0x3e')]);_0x117be8[_0x3102('0x42')]=_['intersection'](_0x69494c[_0x3102('0x3c')],qs[_0x3102('0x41')](_0x1fcf53[_0x3102('0x3e')][_0x3102('0x41')]));_0x117be8[_0x3102('0x42')]=_0x117be8[_0x3102('0x42')][_0x3102('0x43')]?_0x117be8[_0x3102('0x42')]:_0x69494c[_0x3102('0x3c')];if(_0x1fcf53[_0x3102('0x3e')][_0x3102('0x4f')]){_0x117be8['include']=[{'all':!![]}];}_0x117be8=_[_0x3102('0x4b')]({},_0x117be8,_0x1fcf53[_0x3102('0x50')]);return db[_0x3102('0x37')]['find'](_0x117be8)[_0x3102('0x1b')](handleEntityNotFound(_0xbe89db,null))[_0x3102('0x1b')](respondWithResult(_0xbe89db,null))[_0x3102('0x24')](handleError(_0xbe89db,null));};exports['create']=function(_0x33bd5f,_0x1dd17d,_0x55211f){var _0x6d5d12;return db[_0x3102('0x51')][_0x3102('0x52')](function(_0x4551ed){return db[_0x3102('0x37')][_0x3102('0x53')](_0x33bd5f[_0x3102('0x54')],{'raw':!![]})[_0x3102('0x1b')](function(_0x38c62f){_0x6d5d12=_0x38c62f;return db[_0x3102('0x37')][_0x3102('0x4d')]({'where':{'type':_0x33bd5f[_0x3102('0x54')][_0x3102('0x3a')]},'raw':!![]});})[_0x3102('0x1b')](function(_0x557972){if(_0x6d5d12['type'][_0x3102('0x55')]()==_0x3102('0x56')){var _0x2084ad=fs[_0x3102('0x57')](path[_0x3102('0x58')](config['root'],_0x3102('0x59')),'utf8');var _0x1a6b70=ejs['render'](_0x2084ad,{'networks':_0x557972||[]});fs['writeFileSync'](_0x3102('0x5a'),_0x1a6b70);return respondWithRpcPromise(_0x3102('0x5b'),_0x3102('0x53'),{'module':_0x3102('0x5c')});}else if(_0x6d5d12[_0x3102('0x3a')]['toUpperCase']()==_0x3102('0x5d')){var _0x4dc272=fs[_0x3102('0x57')](path[_0x3102('0x58')](config[_0x3102('0x5e')],_0x3102('0x5f')),_0x3102('0x60'));var _0x11f440=ejs[_0x3102('0x61')](_0x4dc272,{'networks':_0x557972||[]});fs[_0x3102('0x62')](_0x3102('0x63'),_0x11f440);return respondWithRpcPromise(_0x3102('0x5b'),_0x3102('0x53'),{'module':'res_stun_monitor.so'});}else{var _0x18bdaa=fs[_0x3102('0x57')](path[_0x3102('0x58')](config['root'],_0x3102('0x64')),_0x3102('0x60'));var _0x1a7851=ejs[_0x3102('0x61')](_0x18bdaa,{'networks':_0x557972||[]});fs['writeFileSync'](util[_0x3102('0x65')](_0x3102('0x66'),_0x33bd5f['body']['type'][_0x3102('0x67')]()),_0x1a7851);return respondWithRpcPromise(_0x3102('0x5b'),_0x3102('0x53'),{'module':'chan_sip.so'});}return null;})[_0x3102('0x1b')](function(){return _0x6d5d12;});})[_0x3102('0x1b')](respondWithResult(_0x1dd17d,0xc9))[_0x3102('0x24')](handleError(_0x1dd17d,null));};exports[_0x3102('0x30')]=function(_0x170d76,_0x31b56d,_0x4e3e51){var _0x42f85c;return db[_0x3102('0x51')]['transaction'](function(_0x8cafd){return db['Network'][_0x3102('0x68')]({'where':{'id':_0x170d76[_0x3102('0x69')]['id']}})['then'](handleEntityNotFound(_0x31b56d,null))[_0x3102('0x1b')](saveUpdates(_0x170d76['body'],null))[_0x3102('0x1b')](function(_0x19890d){if(_0x19890d){_0x42f85c=_0x19890d;return db[_0x3102('0x37')][_0x3102('0x4d')]({'where':{'type':_0x42f85c['type']},'raw':!![]});}return null;})[_0x3102('0x1b')](function(_0x418a1c){if(_0x42f85c[_0x3102('0x3a')][_0x3102('0x55')]()==_0x3102('0x56')){var _0x5a73e3=fs[_0x3102('0x57')](path[_0x3102('0x58')](config[_0x3102('0x5e')],_0x3102('0x59')),_0x3102('0x60'));var _0x5786f3=ejs[_0x3102('0x61')](_0x5a73e3,{'networks':_0x418a1c||[]});fs[_0x3102('0x62')](_0x3102('0x5a'),_0x5786f3);return respondWithRpcPromise('Reload',_0x3102('0x30'),{'module':_0x3102('0x5c')});}else if(_0x42f85c['type'][_0x3102('0x55')]()==_0x3102('0x5d')){var _0x3a6131=fs[_0x3102('0x57')](path[_0x3102('0x58')](config[_0x3102('0x5e')],_0x3102('0x5f')),'utf8');var _0x196938=ejs[_0x3102('0x61')](_0x3a6131,{'networks':_0x418a1c||[]});fs[_0x3102('0x62')]('/etc/asterisk/turn_xcally.conf',_0x196938);return respondWithRpcPromise('Reload',_0x3102('0x30'),{'module':'res_stun_monitor.so'});}else{var _0x15de6c=fs['readFileSync'](path[_0x3102('0x58')](config[_0x3102('0x5e')],'server/files/templates/network.ejs'),_0x3102('0x60'));var _0x534453=ejs['render'](_0x15de6c,{'networks':_0x418a1c||[]});fs[_0x3102('0x62')](util[_0x3102('0x65')](_0x3102('0x66'),_0x170d76[_0x3102('0x54')][_0x3102('0x3a')][_0x3102('0x67')]()),_0x534453);return respondWithRpcPromise('Reload',_0x3102('0x30'),{'module':_0x3102('0x6a')});}return null;})[_0x3102('0x1b')](function(_0x208a18){if(_0x208a18){return _0x42f85c;}return null;});})[_0x3102('0x1b')](respondWithResult(_0x31b56d,null))[_0x3102('0x24')](handleError(_0x31b56d,null));};exports[_0x3102('0x31')]=function(_0x30f7fb,_0x1df215,_0x4d45c4){var _0x5560ef;return db['Network'][_0x3102('0x68')]({'where':{'id':_0x30f7fb['params']['id']}})[_0x3102('0x1b')](function(_0x26b1d4){_0x5560ef=_0x26b1d4;return _0x26b1d4;})[_0x3102('0x1b')](handleEntityNotFound(_0x1df215,null))[_0x3102('0x1b')](removeEntity(_0x1df215,null))[_0x3102('0x1b')](function(){if(_0x5560ef){return db[_0x3102('0x37')][_0x3102('0x4d')]({'where':{'type':_0x5560ef['type']},'raw':!![]});}})[_0x3102('0x1b')](function(_0x575d0c){if(_0x5560ef[_0x3102('0x3a')][_0x3102('0x55')]()=='STUN'){var _0xffad78=fs[_0x3102('0x57')](path['join'](config[_0x3102('0x5e')],_0x3102('0x59')),_0x3102('0x60'));var _0x5a3872=ejs['render'](_0xffad78,{'networks':_0x575d0c||[]});fs['writeFileSync'](_0x3102('0x5a'),_0x5a3872);return respondWithRpcPromise('Reload',_0x3102('0x31'),{'module':'res_stun_monitor.so'});}else if(_0x5560ef[_0x3102('0x3a')]['toUpperCase']()==_0x3102('0x5d')){var _0x3bf937=fs[_0x3102('0x57')](path['join'](config[_0x3102('0x5e')],'server/files/templates/turn_multiple.ejs'),_0x3102('0x60'));var _0x487be9=ejs[_0x3102('0x61')](_0x3bf937,{'networks':_0x575d0c||[]});fs[_0x3102('0x62')]('/etc/asterisk/turn_xcally.conf',_0x487be9);return respondWithRpcPromise(_0x3102('0x5b'),_0x3102('0x31'),{'module':'res_stun_monitor.so'});}else{var _0x50d24d=fs[_0x3102('0x57')](path[_0x3102('0x58')](config[_0x3102('0x5e')],_0x3102('0x64')),'utf8');var _0x353e13=ejs['render'](_0x50d24d,{'networks':_0x575d0c||[]});fs[_0x3102('0x62')](util[_0x3102('0x65')](_0x3102('0x66'),_0x30f7fb[_0x3102('0x54')][_0x3102('0x3a')][_0x3102('0x67')]()),_0x353e13);return respondWithRpcPromise(_0x3102('0x5b'),_0x3102('0x31'),{'module':_0x3102('0x6a')});}return null;})['catch'](handleError(_0x1df215,null));};