Built motion from commit f7863d46.|2.5.41
[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 _0xcb79=['model','query','keys','filters','attributes','intersection','fields','length','limit','order','sort','pick','filter','where','merge','type','VIRTUAL','options','Network','includeAll','include','findAll','show','params','find','create','sequelize','body','readFileSync','join','root','server/files/templates/stun_multiple.ejs','utf8','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','toUpperCase','server/files/templates/turn_multiple.ejs','render','writeFileSync','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','format','chan_sip.so','STUN','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','TURN','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/environment','../../config/license/util','jayson/promise','client','request','then','info','Network,\x20%s,\x20%s','debug','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','count','Content-Range','apply','reject','update','destroy','stack','name','send','map','rawAttributes'];(function(_0x5ecf8c,_0xcb8460){var _0x31e967=function(_0x14a767){while(--_0x14a767){_0x5ecf8c['push'](_0x5ecf8c['shift']());}};_0x31e967(++_0xcb8460);}(_0xcb79,0x15f));var _0x9cb7=function(_0x270880,_0x2968e6){_0x270880=_0x270880-0x0;var _0x50cfe1=_0xcb79[_0x270880];return _0x50cfe1;};'use strict';var emlformat=require(_0x9cb7('0x0'));var rimraf=require(_0x9cb7('0x1'));var zipdir=require(_0x9cb7('0x2'));var jsonpatch=require(_0x9cb7('0x3'));var rp=require(_0x9cb7('0x4'));var moment=require(_0x9cb7('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x9cb7('0x6'));var util=require(_0x9cb7('0x7'));var path=require(_0x9cb7('0x8'));var sox=require(_0x9cb7('0x9'));var csv=require(_0x9cb7('0xa'));var ejs=require(_0x9cb7('0xb'));var fs=require('fs');var fs_extra=require(_0x9cb7('0xc'));var _=require('lodash');var squel=require(_0x9cb7('0xd'));var crypto=require('crypto');var jsforce=require(_0x9cb7('0xe'));var deskjs=require(_0x9cb7('0xf'));var toCsv=require('to-csv');var querystring=require(_0x9cb7('0x10'));var Papa=require('papaparse');var Redis=require(_0x9cb7('0x11'));var authService=require(_0x9cb7('0x12'));var qs=require(_0x9cb7('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9cb7('0x14'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x9cb7('0x15'));var licenseUtil=require(_0x9cb7('0x16'));var db=require('../../mysqldb')['db'];var jayson=require(_0x9cb7('0x17'));var client=jayson[_0x9cb7('0x18')]['http']({'port':0x232a});function respondWithRpcPromise(_0x468b2b,_0x30f166,_0x599e09,_0x43041e){return new BPromise(function(_0x5a9958,_0x226173){var _0x3c9afe=_0x43041e||client;return _0x3c9afe[_0x9cb7('0x19')](_0x468b2b,_0x599e09)[_0x9cb7('0x1a')](function(_0xfb283c){logger[_0x9cb7('0x1b')](_0x9cb7('0x1c'),_0x30f166,'request\x20sent');logger[_0x9cb7('0x1d')]('Network,\x20%s,\x20%s,\x20%s',_0x30f166,'request\x20sent',JSON[_0x9cb7('0x1e')](_0xfb283c));if(_0xfb283c[_0x9cb7('0x1f')]){if(_0xfb283c[_0x9cb7('0x1f')][_0x9cb7('0x20')]===0x1f4){logger[_0x9cb7('0x1f')](_0x9cb7('0x1c'),_0x30f166,_0xfb283c[_0x9cb7('0x1f')][_0x9cb7('0x21')]);return _0x226173(_0xfb283c[_0x9cb7('0x1f')][_0x9cb7('0x21')]);}logger['error']('Network,\x20%s,\x20%s',_0x30f166,_0xfb283c[_0x9cb7('0x1f')]['message']);return _0x5a9958(_0xfb283c['error']['message']);}else{logger[_0x9cb7('0x1b')]('Network,\x20%s,\x20%s',_0x30f166,'request\x20sent');_0x5a9958(_0xfb283c[_0x9cb7('0x22')][_0x9cb7('0x21')]);}})[_0x9cb7('0x23')](function(_0x79a2c){logger[_0x9cb7('0x1f')]('Network,\x20%s,\x20%s',_0x30f166,_0x79a2c);_0x226173(_0x79a2c);});});}function respondWithStatusCode(_0x3255a6,_0x30a4aa){_0x30a4aa=_0x30a4aa||0xcc;return function(_0x1b1bca){if(_0x1b1bca){return _0x3255a6[_0x9cb7('0x24')](_0x30a4aa);}return _0x3255a6[_0x9cb7('0x25')](_0x30a4aa)[_0x9cb7('0x26')]();};}function respondWithResult(_0x5bb3e1,_0x3c5922){_0x3c5922=_0x3c5922||0xc8;return function(_0x2ff45e){if(_0x2ff45e){return _0x5bb3e1['status'](_0x3c5922)[_0x9cb7('0x27')](_0x2ff45e);}};}function respondWithFilteredResult(_0x1b5c16,_0xf33b2c){return function(_0x3c7461){if(_0x3c7461){var _0x5507d2=typeof _0xf33b2c[_0x9cb7('0x28')]===_0x9cb7('0x29')&&typeof _0xf33b2c['limit']===_0x9cb7('0x29');var _0x51d8a3=_0x3c7461[_0x9cb7('0x2a')];var _0x508546=_0x5507d2?0x0:_0xf33b2c[_0x9cb7('0x28')];var _0x3b1de5=_0x5507d2?_0x3c7461[_0x9cb7('0x2a')]:_0xf33b2c[_0x9cb7('0x28')]+_0xf33b2c['limit'];var _0x29d633;if(_0x3b1de5>=_0x51d8a3){_0x3b1de5=_0x51d8a3;_0x29d633=0xc8;}else{_0x29d633=0xce;}_0x1b5c16[_0x9cb7('0x25')](_0x29d633);return _0x1b5c16['set'](_0x9cb7('0x2b'),_0x508546+'-'+_0x3b1de5+'/'+_0x51d8a3)[_0x9cb7('0x27')](_0x3c7461);}return null;};}function patchUpdates(_0x1527c6){return function(_0x3ac804){try{jsonpatch[_0x9cb7('0x2c')](_0x3ac804,_0x1527c6,!![]);}catch(_0x2cdc49){return BPromise[_0x9cb7('0x2d')](_0x2cdc49);}return _0x3ac804['save']();};}function saveUpdates(_0x15ba4d,_0x703551){return function(_0x52dad4){if(_0x52dad4){return _0x52dad4[_0x9cb7('0x2e')](_0x15ba4d)[_0x9cb7('0x1a')](function(_0x55485a){return _0x55485a;});}return null;};}function removeEntity(_0x232378,_0x374d4e){return function(_0xd7294c){if(_0xd7294c){return _0xd7294c[_0x9cb7('0x2f')]()[_0x9cb7('0x1a')](function(){_0x232378[_0x9cb7('0x25')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2980b9,_0x9720c){return function(_0x101e82){if(!_0x101e82){_0x2980b9['sendStatus'](0x194);}return _0x101e82;};}function handleError(_0x320952,_0x1d42d6){_0x1d42d6=_0x1d42d6||0x1f4;return function(_0x28f76c){logger[_0x9cb7('0x1f')](_0x28f76c[_0x9cb7('0x30')]);if(_0x28f76c[_0x9cb7('0x31')]){delete _0x28f76c[_0x9cb7('0x31')];}_0x320952[_0x9cb7('0x25')](_0x1d42d6)[_0x9cb7('0x32')](_0x28f76c);};}exports['index']=function(_0x25ea57,_0x109c06){var _0x2def03={},_0x3e8604={},_0x2a9eb0={'count':0x0,'rows':[]};var _0x11b495=_[_0x9cb7('0x33')](db['Network'][_0x9cb7('0x34')],function(_0x1119df){return{'name':_0x1119df['fieldName'],'type':_0x1119df['type']['key']};});_0x3e8604[_0x9cb7('0x35')]=_[_0x9cb7('0x33')](_0x11b495,'name');_0x3e8604[_0x9cb7('0x36')]=_[_0x9cb7('0x37')](_0x25ea57['query']);_0x3e8604[_0x9cb7('0x38')]=_['intersection'](_0x3e8604[_0x9cb7('0x35')],_0x3e8604['query']);_0x2def03[_0x9cb7('0x39')]=_[_0x9cb7('0x3a')](_0x3e8604[_0x9cb7('0x35')],qs[_0x9cb7('0x3b')](_0x25ea57['query']['fields']));_0x2def03[_0x9cb7('0x39')]=_0x2def03[_0x9cb7('0x39')][_0x9cb7('0x3c')]?_0x2def03[_0x9cb7('0x39')]:_0x3e8604[_0x9cb7('0x35')];if(!_0x25ea57[_0x9cb7('0x36')]['hasOwnProperty']('nolimit')){_0x2def03['limit']=qs[_0x9cb7('0x3d')](_0x25ea57[_0x9cb7('0x36')][_0x9cb7('0x3d')]);_0x2def03[_0x9cb7('0x28')]=qs[_0x9cb7('0x28')](_0x25ea57['query'][_0x9cb7('0x28')]);}_0x2def03[_0x9cb7('0x3e')]=qs[_0x9cb7('0x3f')](_0x25ea57[_0x9cb7('0x36')]['sort']);_0x2def03['where']=qs['filters'](_[_0x9cb7('0x40')](_0x25ea57[_0x9cb7('0x36')],_0x3e8604[_0x9cb7('0x38')]),_0x11b495);if(_0x25ea57[_0x9cb7('0x36')][_0x9cb7('0x41')]){_0x2def03[_0x9cb7('0x42')]=_[_0x9cb7('0x43')](_0x2def03[_0x9cb7('0x42')],{'$or':_['map'](_0x11b495,function(_0x43af4a){if(_0x43af4a[_0x9cb7('0x44')]!==_0x9cb7('0x45')){var _0x386093={};_0x386093[_0x43af4a['name']]={'$like':'%'+_0x25ea57[_0x9cb7('0x36')][_0x9cb7('0x41')]+'%'};return _0x386093;}})});}_0x2def03=_['merge']({},_0x2def03,_0x25ea57[_0x9cb7('0x46')]);var _0x8fb60={'where':_0x2def03[_0x9cb7('0x42')]};return db[_0x9cb7('0x47')][_0x9cb7('0x2a')](_0x8fb60)[_0x9cb7('0x1a')](function(_0x284ed4){_0x2a9eb0[_0x9cb7('0x2a')]=_0x284ed4;if(_0x25ea57[_0x9cb7('0x36')][_0x9cb7('0x48')]){_0x2def03[_0x9cb7('0x49')]=[{'all':!![]}];}return db[_0x9cb7('0x47')][_0x9cb7('0x4a')](_0x2def03);})[_0x9cb7('0x1a')](function(_0x40d23c){_0x2a9eb0['rows']=_0x40d23c;return _0x2a9eb0;})[_0x9cb7('0x1a')](respondWithFilteredResult(_0x109c06,_0x2def03))[_0x9cb7('0x23')](handleError(_0x109c06,null));};exports[_0x9cb7('0x4b')]=function(_0x4b279a,_0x3bd999){var _0x516479={'raw':!![],'where':{'id':_0x4b279a[_0x9cb7('0x4c')]['id']}},_0x1f9111={};_0x1f9111['model']=_[_0x9cb7('0x37')](db[_0x9cb7('0x47')]['rawAttributes']);_0x1f9111[_0x9cb7('0x36')]=_[_0x9cb7('0x37')](_0x4b279a[_0x9cb7('0x36')]);_0x1f9111[_0x9cb7('0x38')]=_[_0x9cb7('0x3a')](_0x1f9111[_0x9cb7('0x35')],_0x1f9111[_0x9cb7('0x36')]);_0x516479[_0x9cb7('0x39')]=_[_0x9cb7('0x3a')](_0x1f9111[_0x9cb7('0x35')],qs[_0x9cb7('0x3b')](_0x4b279a[_0x9cb7('0x36')][_0x9cb7('0x3b')]));_0x516479[_0x9cb7('0x39')]=_0x516479[_0x9cb7('0x39')][_0x9cb7('0x3c')]?_0x516479['attributes']:_0x1f9111['model'];if(_0x4b279a[_0x9cb7('0x36')][_0x9cb7('0x48')]){_0x516479[_0x9cb7('0x49')]=[{'all':!![]}];}_0x516479=_[_0x9cb7('0x43')]({},_0x516479,_0x4b279a['options']);return db[_0x9cb7('0x47')][_0x9cb7('0x4d')](_0x516479)[_0x9cb7('0x1a')](handleEntityNotFound(_0x3bd999,null))[_0x9cb7('0x1a')](respondWithResult(_0x3bd999,null))[_0x9cb7('0x23')](handleError(_0x3bd999,null));};exports[_0x9cb7('0x4e')]=function(_0x146dfd,_0x475576,_0x3ba2fc){var _0x203feb;return db[_0x9cb7('0x4f')]['transaction'](function(_0x4c6b0d){return db[_0x9cb7('0x47')][_0x9cb7('0x4e')](_0x146dfd[_0x9cb7('0x50')],{'raw':!![]})[_0x9cb7('0x1a')](function(_0x47c45c){_0x203feb=_0x47c45c;return db[_0x9cb7('0x47')]['findAll']({'where':{'type':_0x146dfd[_0x9cb7('0x50')]['type']},'raw':!![]});})[_0x9cb7('0x1a')](function(_0x77d3b4){if(_0x203feb['type']['toUpperCase']()=='STUN'){var _0x202cf9=fs[_0x9cb7('0x51')](path[_0x9cb7('0x52')](config[_0x9cb7('0x53')],_0x9cb7('0x54')),_0x9cb7('0x55'));var _0x42d215=ejs['render'](_0x202cf9,{'networks':_0x77d3b4||[]});fs['writeFileSync'](_0x9cb7('0x56'),_0x42d215);return respondWithRpcPromise(_0x9cb7('0x57'),'create',{'module':_0x9cb7('0x58')});}else if(_0x203feb[_0x9cb7('0x44')][_0x9cb7('0x59')]()=='TURN'){var _0x34076e=fs[_0x9cb7('0x51')](path[_0x9cb7('0x52')](config[_0x9cb7('0x53')],_0x9cb7('0x5a')),_0x9cb7('0x55'));var _0xd2c7af=ejs[_0x9cb7('0x5b')](_0x34076e,{'networks':_0x77d3b4||[]});fs[_0x9cb7('0x5c')](_0x9cb7('0x5d'),_0xd2c7af);return respondWithRpcPromise(_0x9cb7('0x57'),'create',{'module':_0x9cb7('0x58')});}else{var _0x330e04=fs[_0x9cb7('0x51')](path[_0x9cb7('0x52')](config['root'],_0x9cb7('0x5e')),_0x9cb7('0x55'));var _0x3d9e02=ejs[_0x9cb7('0x5b')](_0x330e04,{'networks':_0x77d3b4||[]});fs[_0x9cb7('0x5c')](util[_0x9cb7('0x5f')]('/etc/asterisk/sip_xcally_%s.conf',_0x146dfd[_0x9cb7('0x50')][_0x9cb7('0x44')]['toLowerCase']()),_0x3d9e02);return respondWithRpcPromise(_0x9cb7('0x57'),_0x9cb7('0x4e'),{'module':_0x9cb7('0x60')});}return null;})[_0x9cb7('0x1a')](function(){return _0x203feb;});})[_0x9cb7('0x1a')](respondWithResult(_0x475576,0xc9))[_0x9cb7('0x23')](handleError(_0x475576,null));};exports[_0x9cb7('0x2e')]=function(_0x1fb1f2,_0x55cb2e,_0x4fc4d1){var _0x3c4a93;return db[_0x9cb7('0x4f')]['transaction'](function(_0x48675e){return db['Network'][_0x9cb7('0x4d')]({'where':{'id':_0x1fb1f2[_0x9cb7('0x4c')]['id']}})[_0x9cb7('0x1a')](handleEntityNotFound(_0x55cb2e,null))['then'](saveUpdates(_0x1fb1f2[_0x9cb7('0x50')],null))['then'](function(_0x25b3b1){if(_0x25b3b1){_0x3c4a93=_0x25b3b1;return db[_0x9cb7('0x47')]['findAll']({'where':{'type':_0x3c4a93[_0x9cb7('0x44')]},'raw':!![]});}return null;})[_0x9cb7('0x1a')](function(_0x38467e){if(_0x3c4a93[_0x9cb7('0x44')][_0x9cb7('0x59')]()==_0x9cb7('0x61')){var _0xe71a3b=fs['readFileSync'](path['join'](config[_0x9cb7('0x53')],_0x9cb7('0x54')),_0x9cb7('0x55'));var _0x1accea=ejs[_0x9cb7('0x5b')](_0xe71a3b,{'networks':_0x38467e||[]});fs['writeFileSync'](_0x9cb7('0x56'),_0x1accea);return respondWithRpcPromise(_0x9cb7('0x57'),_0x9cb7('0x2e'),{'module':'res_stun_monitor.so'});}else if(_0x3c4a93[_0x9cb7('0x44')]['toUpperCase']()=='TURN'){var _0x3866c0=fs[_0x9cb7('0x51')](path[_0x9cb7('0x52')](config[_0x9cb7('0x53')],_0x9cb7('0x5a')),_0x9cb7('0x55'));var _0x5e16fd=ejs[_0x9cb7('0x5b')](_0x3866c0,{'networks':_0x38467e||[]});fs[_0x9cb7('0x5c')](_0x9cb7('0x5d'),_0x5e16fd);return respondWithRpcPromise(_0x9cb7('0x57'),_0x9cb7('0x2e'),{'module':_0x9cb7('0x58')});}else{var _0x3d7645=fs['readFileSync'](path[_0x9cb7('0x52')](config[_0x9cb7('0x53')],_0x9cb7('0x5e')),_0x9cb7('0x55'));var _0x6c7117=ejs['render'](_0x3d7645,{'networks':_0x38467e||[]});fs[_0x9cb7('0x5c')](util[_0x9cb7('0x5f')](_0x9cb7('0x62'),_0x1fb1f2[_0x9cb7('0x50')][_0x9cb7('0x44')][_0x9cb7('0x63')]()),_0x6c7117);return respondWithRpcPromise('Reload',_0x9cb7('0x2e'),{'module':_0x9cb7('0x60')});}return null;})[_0x9cb7('0x1a')](function(_0x35b007){if(_0x35b007){return _0x3c4a93;}return null;});})['then'](respondWithResult(_0x55cb2e,null))[_0x9cb7('0x23')](handleError(_0x55cb2e,null));};exports[_0x9cb7('0x2f')]=function(_0x3ab034,_0xf9ca00,_0x2da34b){var _0x451a92;return db['Network'][_0x9cb7('0x4d')]({'where':{'id':_0x3ab034[_0x9cb7('0x4c')]['id']}})[_0x9cb7('0x1a')](function(_0x207c26){_0x451a92=_0x207c26;return _0x207c26;})[_0x9cb7('0x1a')](handleEntityNotFound(_0xf9ca00,null))[_0x9cb7('0x1a')](removeEntity(_0xf9ca00,null))['then'](function(){if(_0x451a92){return db['Network'][_0x9cb7('0x4a')]({'where':{'type':_0x451a92[_0x9cb7('0x44')]},'raw':!![]});}})[_0x9cb7('0x1a')](function(_0x499375){if(_0x451a92[_0x9cb7('0x44')]['toUpperCase']()==_0x9cb7('0x61')){var _0x574488=fs['readFileSync'](path[_0x9cb7('0x52')](config['root'],_0x9cb7('0x54')),_0x9cb7('0x55'));var _0x22999b=ejs[_0x9cb7('0x5b')](_0x574488,{'networks':_0x499375||[]});fs[_0x9cb7('0x5c')]('/etc/asterisk/stun_xcally.conf',_0x22999b);return respondWithRpcPromise(_0x9cb7('0x57'),_0x9cb7('0x2f'),{'module':'res_stun_monitor.so'});}else if(_0x451a92[_0x9cb7('0x44')]['toUpperCase']()==_0x9cb7('0x64')){var _0x4ddec4=fs[_0x9cb7('0x51')](path[_0x9cb7('0x52')](config[_0x9cb7('0x53')],_0x9cb7('0x5a')),'utf8');var _0x2b35f3=ejs[_0x9cb7('0x5b')](_0x4ddec4,{'networks':_0x499375||[]});fs[_0x9cb7('0x5c')](_0x9cb7('0x5d'),_0x2b35f3);return respondWithRpcPromise(_0x9cb7('0x57'),_0x9cb7('0x2f'),{'module':'res_stun_monitor.so'});}else{var _0x47da00=fs[_0x9cb7('0x51')](path['join'](config[_0x9cb7('0x53')],_0x9cb7('0x5e')),_0x9cb7('0x55'));var _0x47d900=ejs[_0x9cb7('0x5b')](_0x47da00,{'networks':_0x499375||[]});fs[_0x9cb7('0x5c')](util['format']('/etc/asterisk/sip_xcally_%s.conf',_0x3ab034[_0x9cb7('0x50')][_0x9cb7('0x44')]['toLowerCase']()),_0x47d900);return respondWithRpcPromise('Reload',_0x9cb7('0x2f'),{'module':_0x9cb7('0x60')});}return null;})[_0x9cb7('0x23')](handleError(_0xf9ca00,null));};