Built motion from commit 43538d75.|2.5.35
[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 _0x4403=['catch','sendStatus','end','status','offset','limit','undefined','count','apply','save','update','destroy','stack','name','send','index','map','Network','rawAttributes','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','show','keys','create','sequelize','transaction','body','STUN','join','root','server/files/templates/stun_multiple.ejs','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','toUpperCase','readFileSync','server/files/templates/turn_multiple.ejs','utf8','/etc/asterisk/turn_xcally.conf','res_stun_monitor.so','/etc/asterisk/sip_xcally_%s.conf','chan_sip.so','find','params','TURN','server/files/templates/network.ejs','format','toLowerCase','fast-json-patch','moment','bluebird','mustache','util','sox','fs-extra','lodash','squel','jsforce','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','jayson/promise','http','request','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x323c60,_0x219b72){var _0x103f23=function(_0x7695b3){while(--_0x7695b3){_0x323c60['push'](_0x323c60['shift']());}};_0x103f23(++_0x219b72);}(_0x4403,0x179));var _0x3440=function(_0x3713c8,_0x2aecfb){_0x3713c8=_0x3713c8-0x0;var _0x17c79f=_0x4403[_0x3713c8];return _0x17c79f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x3440('0x0'));var rp=require('request-promise');var moment=require(_0x3440('0x1'));var BPromise=require(_0x3440('0x2'));var Mustache=require(_0x3440('0x3'));var util=require(_0x3440('0x4'));var path=require('path');var sox=require(_0x3440('0x5'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3440('0x6'));var _=require(_0x3440('0x7'));var squel=require(_0x3440('0x8'));var crypto=require('crypto');var jsforce=require(_0x3440('0x9'));var deskjs=require('desk.js');var toCsv=require(_0x3440('0xa'));var querystring=require(_0x3440('0xb'));var Papa=require(_0x3440('0xc'));var Redis=require('ioredis');var authService=require(_0x3440('0xd'));var qs=require(_0x3440('0xe'));var as=require(_0x3440('0xf'));var hardwareService=require(_0x3440('0x10'));var logger=require(_0x3440('0x11'))(_0x3440('0x12'));var utils=require(_0x3440('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x3440('0x14'));var db=require(_0x3440('0x15'))['db'];var jayson=require(_0x3440('0x16'));var client=jayson['client'][_0x3440('0x17')]({'port':0x232a});function respondWithRpcPromise(_0xb24e14,_0x3f86de,_0x3f7c99,_0x26bfc4){return new BPromise(function(_0x5201e6,_0x36dd82){var _0x55eac4=_0x26bfc4||client;return _0x55eac4[_0x3440('0x18')](_0xb24e14,_0x3f7c99)[_0x3440('0x19')](function(_0x33a5bb){logger[_0x3440('0x1a')](_0x3440('0x1b'),_0x3f86de,_0x3440('0x1c'));logger[_0x3440('0x1d')](_0x3440('0x1e'),_0x3f86de,'request\x20sent',JSON[_0x3440('0x1f')](_0x33a5bb));if(_0x33a5bb[_0x3440('0x20')]){if(_0x33a5bb[_0x3440('0x20')][_0x3440('0x21')]===0x1f4){logger[_0x3440('0x20')](_0x3440('0x1b'),_0x3f86de,_0x33a5bb['error'][_0x3440('0x22')]);return _0x36dd82(_0x33a5bb[_0x3440('0x20')][_0x3440('0x22')]);}logger[_0x3440('0x20')](_0x3440('0x1b'),_0x3f86de,_0x33a5bb[_0x3440('0x20')][_0x3440('0x22')]);return _0x5201e6(_0x33a5bb[_0x3440('0x20')][_0x3440('0x22')]);}else{logger[_0x3440('0x1a')](_0x3440('0x1b'),_0x3f86de,'request\x20sent');_0x5201e6(_0x33a5bb['result']['message']);}})[_0x3440('0x23')](function(_0x45afde){logger['error'](_0x3440('0x1b'),_0x3f86de,_0x45afde);_0x36dd82(_0x45afde);});});}function respondWithStatusCode(_0x232b8f,_0x33cfb5){_0x33cfb5=_0x33cfb5||0xcc;return function(_0x38bf02){if(_0x38bf02){return _0x232b8f[_0x3440('0x24')](_0x33cfb5);}return _0x232b8f['status'](_0x33cfb5)[_0x3440('0x25')]();};}function respondWithResult(_0x264f9d,_0x3b9e75){_0x3b9e75=_0x3b9e75||0xc8;return function(_0x15f121){if(_0x15f121){return _0x264f9d[_0x3440('0x26')](_0x3b9e75)['json'](_0x15f121);}};}function respondWithFilteredResult(_0x381942,_0x2e93c){return function(_0x1cfe3a){if(_0x1cfe3a){var _0x251646=typeof _0x2e93c[_0x3440('0x27')]==='undefined'&&typeof _0x2e93c[_0x3440('0x28')]===_0x3440('0x29');var _0x3a97d9=_0x1cfe3a[_0x3440('0x2a')];var _0x2e6e96=_0x251646?0x0:_0x2e93c[_0x3440('0x27')];var _0xe23a=_0x251646?_0x1cfe3a[_0x3440('0x2a')]:_0x2e93c[_0x3440('0x27')]+_0x2e93c[_0x3440('0x28')];var _0x2f2bdb;if(_0xe23a>=_0x3a97d9){_0xe23a=_0x3a97d9;_0x2f2bdb=0xc8;}else{_0x2f2bdb=0xce;}_0x381942['status'](_0x2f2bdb);return _0x381942['set']('Content-Range',_0x2e6e96+'-'+_0xe23a+'/'+_0x3a97d9)['json'](_0x1cfe3a);}return null;};}function patchUpdates(_0x492706){return function(_0x4ab2ef){try{jsonpatch[_0x3440('0x2b')](_0x4ab2ef,_0x492706,!![]);}catch(_0x4d3a28){return BPromise['reject'](_0x4d3a28);}return _0x4ab2ef[_0x3440('0x2c')]();};}function saveUpdates(_0x10d833,_0x276bf0){return function(_0x4de957){if(_0x4de957){return _0x4de957[_0x3440('0x2d')](_0x10d833)['then'](function(_0x561c53){return _0x561c53;});}return null;};}function removeEntity(_0xd7fc96,_0x58143a){return function(_0x5e3c6b){if(_0x5e3c6b){return _0x5e3c6b[_0x3440('0x2e')]()['then'](function(){_0xd7fc96[_0x3440('0x26')](0xcc)['end']();});}};}function handleEntityNotFound(_0x18fa2a,_0x4faa6c){return function(_0x9f5c8e){if(!_0x9f5c8e){_0x18fa2a['sendStatus'](0x194);}return _0x9f5c8e;};}function handleError(_0x1afe01,_0x299224){_0x299224=_0x299224||0x1f4;return function(_0x43d3ca){logger[_0x3440('0x20')](_0x43d3ca[_0x3440('0x2f')]);if(_0x43d3ca['name']){delete _0x43d3ca[_0x3440('0x30')];}_0x1afe01[_0x3440('0x26')](_0x299224)[_0x3440('0x31')](_0x43d3ca);};}exports[_0x3440('0x32')]=function(_0x5f3ebe,_0x4047a9){var _0x12e049={},_0x4cfce5={},_0x244088={'count':0x0,'rows':[]};var _0x1c99c7=_[_0x3440('0x33')](db[_0x3440('0x34')][_0x3440('0x35')],function(_0x1dc900){return{'name':_0x1dc900['fieldName'],'type':_0x1dc900[_0x3440('0x36')][_0x3440('0x37')]};});_0x4cfce5[_0x3440('0x38')]=_['map'](_0x1c99c7,'name');_0x4cfce5['query']=_['keys'](_0x5f3ebe[_0x3440('0x39')]);_0x4cfce5[_0x3440('0x3a')]=_[_0x3440('0x3b')](_0x4cfce5[_0x3440('0x38')],_0x4cfce5[_0x3440('0x39')]);_0x12e049['attributes']=_[_0x3440('0x3b')](_0x4cfce5[_0x3440('0x38')],qs[_0x3440('0x3c')](_0x5f3ebe['query']['fields']));_0x12e049['attributes']=_0x12e049[_0x3440('0x3d')][_0x3440('0x3e')]?_0x12e049[_0x3440('0x3d')]:_0x4cfce5[_0x3440('0x38')];if(!_0x5f3ebe[_0x3440('0x39')][_0x3440('0x3f')]('nolimit')){_0x12e049[_0x3440('0x28')]=qs[_0x3440('0x28')](_0x5f3ebe[_0x3440('0x39')]['limit']);_0x12e049[_0x3440('0x27')]=qs[_0x3440('0x27')](_0x5f3ebe[_0x3440('0x39')][_0x3440('0x27')]);}_0x12e049[_0x3440('0x40')]=qs[_0x3440('0x41')](_0x5f3ebe['query'][_0x3440('0x41')]);_0x12e049[_0x3440('0x42')]=qs['filters'](_[_0x3440('0x43')](_0x5f3ebe[_0x3440('0x39')],_0x4cfce5[_0x3440('0x3a')]),_0x1c99c7);if(_0x5f3ebe[_0x3440('0x39')][_0x3440('0x44')]){_0x12e049[_0x3440('0x42')]=_[_0x3440('0x45')](_0x12e049[_0x3440('0x42')],{'$or':_[_0x3440('0x33')](_0x1c99c7,function(_0x1a7d59){if(_0x1a7d59[_0x3440('0x36')]!=='VIRTUAL'){var _0x3a1ee8={};_0x3a1ee8[_0x1a7d59['name']]={'$like':'%'+_0x5f3ebe[_0x3440('0x39')][_0x3440('0x44')]+'%'};return _0x3a1ee8;}})});}_0x12e049=_['merge']({},_0x12e049,_0x5f3ebe[_0x3440('0x46')]);var _0x208bfb={'where':_0x12e049[_0x3440('0x42')]};return db[_0x3440('0x34')][_0x3440('0x2a')](_0x208bfb)[_0x3440('0x19')](function(_0x3c352c){_0x244088[_0x3440('0x2a')]=_0x3c352c;if(_0x5f3ebe[_0x3440('0x39')][_0x3440('0x47')]){_0x12e049[_0x3440('0x48')]=[{'all':!![]}];}return db['Network'][_0x3440('0x49')](_0x12e049);})[_0x3440('0x19')](function(_0x56505c){_0x244088[_0x3440('0x4a')]=_0x56505c;return _0x244088;})[_0x3440('0x19')](respondWithFilteredResult(_0x4047a9,_0x12e049))[_0x3440('0x23')](handleError(_0x4047a9,null));};exports[_0x3440('0x4b')]=function(_0x11ac84,_0x173b99){var _0x1c02bd={'raw':!![],'where':{'id':_0x11ac84['params']['id']}},_0x4a00e0={};_0x4a00e0[_0x3440('0x38')]=_[_0x3440('0x4c')](db[_0x3440('0x34')][_0x3440('0x35')]);_0x4a00e0[_0x3440('0x39')]=_[_0x3440('0x4c')](_0x11ac84[_0x3440('0x39')]);_0x4a00e0[_0x3440('0x3a')]=_[_0x3440('0x3b')](_0x4a00e0[_0x3440('0x38')],_0x4a00e0[_0x3440('0x39')]);_0x1c02bd[_0x3440('0x3d')]=_[_0x3440('0x3b')](_0x4a00e0['model'],qs['fields'](_0x11ac84[_0x3440('0x39')][_0x3440('0x3c')]));_0x1c02bd[_0x3440('0x3d')]=_0x1c02bd[_0x3440('0x3d')][_0x3440('0x3e')]?_0x1c02bd['attributes']:_0x4a00e0[_0x3440('0x38')];if(_0x11ac84['query'][_0x3440('0x47')]){_0x1c02bd['include']=[{'all':!![]}];}_0x1c02bd=_[_0x3440('0x45')]({},_0x1c02bd,_0x11ac84['options']);return db[_0x3440('0x34')]['find'](_0x1c02bd)[_0x3440('0x19')](handleEntityNotFound(_0x173b99,null))[_0x3440('0x19')](respondWithResult(_0x173b99,null))[_0x3440('0x23')](handleError(_0x173b99,null));};exports[_0x3440('0x4d')]=function(_0x224093,_0x4796ef,_0x3237af){var _0x24c97f;return db[_0x3440('0x4e')][_0x3440('0x4f')](function(_0x29b243){return db[_0x3440('0x34')][_0x3440('0x4d')](_0x224093[_0x3440('0x50')],{'raw':!![]})[_0x3440('0x19')](function(_0x5a33c8){_0x24c97f=_0x5a33c8;return db[_0x3440('0x34')][_0x3440('0x49')]({'where':{'type':_0x224093[_0x3440('0x50')][_0x3440('0x36')]},'raw':!![]});})['then'](function(_0x3576ab){if(_0x24c97f[_0x3440('0x36')]['toUpperCase']()==_0x3440('0x51')){var _0x64a016=fs['readFileSync'](path[_0x3440('0x52')](config[_0x3440('0x53')],_0x3440('0x54')),'utf8');var _0x380b9d=ejs[_0x3440('0x55')](_0x64a016,{'networks':_0x3576ab||[]});fs[_0x3440('0x56')](_0x3440('0x57'),_0x380b9d);return respondWithRpcPromise(_0x3440('0x58'),'create',{'module':'res_stun_monitor.so'});}else if(_0x24c97f[_0x3440('0x36')][_0x3440('0x59')]()=='TURN'){var _0x30a65a=fs[_0x3440('0x5a')](path[_0x3440('0x52')](config['root'],_0x3440('0x5b')),_0x3440('0x5c'));var _0x48fb55=ejs[_0x3440('0x55')](_0x30a65a,{'networks':_0x3576ab||[]});fs[_0x3440('0x56')](_0x3440('0x5d'),_0x48fb55);return respondWithRpcPromise(_0x3440('0x58'),_0x3440('0x4d'),{'module':_0x3440('0x5e')});}else{var _0x47a893=fs[_0x3440('0x5a')](path['join'](config[_0x3440('0x53')],'server/files/templates/network.ejs'),'utf8');var _0x42e42d=ejs[_0x3440('0x55')](_0x47a893,{'networks':_0x3576ab||[]});fs[_0x3440('0x56')](util['format'](_0x3440('0x5f'),_0x224093[_0x3440('0x50')][_0x3440('0x36')]['toLowerCase']()),_0x42e42d);return respondWithRpcPromise(_0x3440('0x58'),'create',{'module':_0x3440('0x60')});}return null;})['then'](function(){return _0x24c97f;});})['then'](respondWithResult(_0x4796ef,0xc9))[_0x3440('0x23')](handleError(_0x4796ef,null));};exports[_0x3440('0x2d')]=function(_0x4854f5,_0x49069d,_0x2f4c4d){var _0x2cd59f;return db['sequelize']['transaction'](function(_0x24281f){return db['Network'][_0x3440('0x61')]({'where':{'id':_0x4854f5[_0x3440('0x62')]['id']}})[_0x3440('0x19')](handleEntityNotFound(_0x49069d,null))[_0x3440('0x19')](saveUpdates(_0x4854f5['body'],null))['then'](function(_0x310163){if(_0x310163){_0x2cd59f=_0x310163;return db[_0x3440('0x34')]['findAll']({'where':{'type':_0x2cd59f[_0x3440('0x36')]},'raw':!![]});}return null;})[_0x3440('0x19')](function(_0x5587ab){if(_0x2cd59f[_0x3440('0x36')][_0x3440('0x59')]()==_0x3440('0x51')){var _0x4213e6=fs[_0x3440('0x5a')](path[_0x3440('0x52')](config[_0x3440('0x53')],_0x3440('0x54')),'utf8');var _0x4ae414=ejs[_0x3440('0x55')](_0x4213e6,{'networks':_0x5587ab||[]});fs[_0x3440('0x56')](_0x3440('0x57'),_0x4ae414);return respondWithRpcPromise(_0x3440('0x58'),_0x3440('0x2d'),{'module':'res_stun_monitor.so'});}else if(_0x2cd59f[_0x3440('0x36')][_0x3440('0x59')]()==_0x3440('0x63')){var _0x2d7fe1=fs['readFileSync'](path[_0x3440('0x52')](config[_0x3440('0x53')],'server/files/templates/turn_multiple.ejs'),_0x3440('0x5c'));var _0x19dda6=ejs[_0x3440('0x55')](_0x2d7fe1,{'networks':_0x5587ab||[]});fs['writeFileSync'](_0x3440('0x5d'),_0x19dda6);return respondWithRpcPromise(_0x3440('0x58'),_0x3440('0x2d'),{'module':_0x3440('0x5e')});}else{var _0x452f6e=fs[_0x3440('0x5a')](path[_0x3440('0x52')](config[_0x3440('0x53')],_0x3440('0x64')),_0x3440('0x5c'));var _0x16c40d=ejs['render'](_0x452f6e,{'networks':_0x5587ab||[]});fs['writeFileSync'](util[_0x3440('0x65')](_0x3440('0x5f'),_0x4854f5[_0x3440('0x50')][_0x3440('0x36')]['toLowerCase']()),_0x16c40d);return respondWithRpcPromise('Reload',_0x3440('0x2d'),{'module':_0x3440('0x60')});}return null;})[_0x3440('0x19')](function(_0x43b38f){if(_0x43b38f){return _0x2cd59f;}return null;});})[_0x3440('0x19')](respondWithResult(_0x49069d,null))[_0x3440('0x23')](handleError(_0x49069d,null));};exports[_0x3440('0x2e')]=function(_0x18d0e6,_0x55bc3f,_0x33ee9e){var _0x393390;return db['Network'][_0x3440('0x61')]({'where':{'id':_0x18d0e6[_0x3440('0x62')]['id']}})['then'](function(_0x2306c6){_0x393390=_0x2306c6;return _0x2306c6;})['then'](handleEntityNotFound(_0x55bc3f,null))[_0x3440('0x19')](removeEntity(_0x55bc3f,null))[_0x3440('0x19')](function(){if(_0x393390){return db[_0x3440('0x34')]['findAll']({'where':{'type':_0x393390[_0x3440('0x36')]},'raw':!![]});}})[_0x3440('0x19')](function(_0x3d53b6){if(_0x393390[_0x3440('0x36')][_0x3440('0x59')]()==_0x3440('0x51')){var _0x1fd4ee=fs[_0x3440('0x5a')](path['join'](config[_0x3440('0x53')],_0x3440('0x54')),_0x3440('0x5c'));var _0x2f7ee5=ejs[_0x3440('0x55')](_0x1fd4ee,{'networks':_0x3d53b6||[]});fs['writeFileSync']('/etc/asterisk/stun_xcally.conf',_0x2f7ee5);return respondWithRpcPromise(_0x3440('0x58'),_0x3440('0x2e'),{'module':'res_stun_monitor.so'});}else if(_0x393390[_0x3440('0x36')][_0x3440('0x59')]()==_0x3440('0x63')){var _0x1a7ae3=fs[_0x3440('0x5a')](path[_0x3440('0x52')](config['root'],'server/files/templates/turn_multiple.ejs'),_0x3440('0x5c'));var _0x5aa74b=ejs[_0x3440('0x55')](_0x1a7ae3,{'networks':_0x3d53b6||[]});fs[_0x3440('0x56')]('/etc/asterisk/turn_xcally.conf',_0x5aa74b);return respondWithRpcPromise('Reload',_0x3440('0x2e'),{'module':_0x3440('0x5e')});}else{var _0x26e2c9=fs['readFileSync'](path['join'](config['root'],_0x3440('0x64')),_0x3440('0x5c'));var _0x36ebd3=ejs[_0x3440('0x55')](_0x26e2c9,{'networks':_0x3d53b6||[]});fs[_0x3440('0x56')](util['format'](_0x3440('0x5f'),_0x18d0e6[_0x3440('0x50')][_0x3440('0x36')][_0x3440('0x66')]()),_0x36ebd3);return respondWithRpcPromise(_0x3440('0x58'),_0x3440('0x2e'),{'module':_0x3440('0x60')});}return null;})[_0x3440('0x23')](handleError(_0x55bc3f,null));};