Built motion from commit 497d3d92.|2.5.43
[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 _0x9dec=['stack','name','send','index','map','Network','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','params','catch','sequelize','create','body','toUpperCase','STUN','readFileSync','server/files/templates/stun_multiple.ejs','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','TURN','join','root','server/files/templates/turn_multiple.ejs','utf8','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','chan_sip.so','toLowerCase','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../config/license/util','client','http','then','info','Network,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','Network,\x20%s,\x20%s','result','sendStatus','status','json','undefined','limit','count','offset','Content-Range','apply','save','update','destroy','end'];(function(_0x1302ce,_0x2ab975){var _0x3f8e57=function(_0x5a2db7){while(--_0x5a2db7){_0x1302ce['push'](_0x1302ce['shift']());}};_0x3f8e57(++_0x2ab975);}(_0x9dec,0x1d3));var _0xc9de=function(_0x3f6223,_0x43e2a6){_0x3f6223=_0x3f6223-0x0;var _0x2e6993=_0x9dec[_0x3f6223];return _0x2e6993;};'use strict';var emlformat=require(_0xc9de('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc9de('0x1'));var jsonpatch=require(_0xc9de('0x2'));var rp=require(_0xc9de('0x3'));var moment=require(_0xc9de('0x4'));var BPromise=require(_0xc9de('0x5'));var Mustache=require(_0xc9de('0x6'));var util=require(_0xc9de('0x7'));var path=require('path');var sox=require(_0xc9de('0x8'));var csv=require(_0xc9de('0x9'));var ejs=require(_0xc9de('0xa'));var fs=require('fs');var fs_extra=require(_0xc9de('0xb'));var _=require(_0xc9de('0xc'));var squel=require(_0xc9de('0xd'));var crypto=require('crypto');var jsforce=require(_0xc9de('0xe'));var deskjs=require(_0xc9de('0xf'));var toCsv=require('to-csv');var querystring=require(_0xc9de('0x10'));var Papa=require(_0xc9de('0x11'));var Redis=require(_0xc9de('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xc9de('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc9de('0x14'))('api');var utils=require('../../config/utils');var config=require(_0xc9de('0x15'));var licenseUtil=require(_0xc9de('0x16'));var db=require('../../mysqldb')['db'];var jayson=require('jayson/promise');var client=jayson[_0xc9de('0x17')][_0xc9de('0x18')]({'port':0x232a});function respondWithRpcPromise(_0xc25c87,_0x158006,_0x4df3a1,_0x4e902b){return new BPromise(function(_0xaad3a4,_0x39bf73){var _0x5687d7=_0x4e902b||client;return _0x5687d7['request'](_0xc25c87,_0x4df3a1)[_0xc9de('0x19')](function(_0x9d1b6e){logger[_0xc9de('0x1a')]('Network,\x20%s,\x20%s',_0x158006,'request\x20sent');logger['debug'](_0xc9de('0x1b'),_0x158006,_0xc9de('0x1c'),JSON[_0xc9de('0x1d')](_0x9d1b6e));if(_0x9d1b6e['error']){if(_0x9d1b6e[_0xc9de('0x1e')][_0xc9de('0x1f')]===0x1f4){logger['error']('Network,\x20%s,\x20%s',_0x158006,_0x9d1b6e[_0xc9de('0x1e')][_0xc9de('0x20')]);return _0x39bf73(_0x9d1b6e[_0xc9de('0x1e')][_0xc9de('0x20')]);}logger[_0xc9de('0x1e')](_0xc9de('0x21'),_0x158006,_0x9d1b6e[_0xc9de('0x1e')]['message']);return _0xaad3a4(_0x9d1b6e['error']['message']);}else{logger[_0xc9de('0x1a')](_0xc9de('0x21'),_0x158006,'request\x20sent');_0xaad3a4(_0x9d1b6e[_0xc9de('0x22')][_0xc9de('0x20')]);}})['catch'](function(_0x3bcd5b){logger[_0xc9de('0x1e')](_0xc9de('0x21'),_0x158006,_0x3bcd5b);_0x39bf73(_0x3bcd5b);});});}function respondWithStatusCode(_0x572b14,_0xc99065){_0xc99065=_0xc99065||0xcc;return function(_0x4caf22){if(_0x4caf22){return _0x572b14[_0xc9de('0x23')](_0xc99065);}return _0x572b14[_0xc9de('0x24')](_0xc99065)['end']();};}function respondWithResult(_0x1f8069,_0x52b251){_0x52b251=_0x52b251||0xc8;return function(_0x569bfa){if(_0x569bfa){return _0x1f8069[_0xc9de('0x24')](_0x52b251)[_0xc9de('0x25')](_0x569bfa);}};}function respondWithFilteredResult(_0x4f7ea1,_0x46944b){return function(_0x365ae9){if(_0x365ae9){var _0x8ac5ec=typeof _0x46944b['offset']===_0xc9de('0x26')&&typeof _0x46944b[_0xc9de('0x27')]===_0xc9de('0x26');var _0x4aa7fb=_0x365ae9[_0xc9de('0x28')];var _0x32c3b6=_0x8ac5ec?0x0:_0x46944b[_0xc9de('0x29')];var _0x559831=_0x8ac5ec?_0x365ae9[_0xc9de('0x28')]:_0x46944b[_0xc9de('0x29')]+_0x46944b[_0xc9de('0x27')];var _0x506ffb;if(_0x559831>=_0x4aa7fb){_0x559831=_0x4aa7fb;_0x506ffb=0xc8;}else{_0x506ffb=0xce;}_0x4f7ea1[_0xc9de('0x24')](_0x506ffb);return _0x4f7ea1['set'](_0xc9de('0x2a'),_0x32c3b6+'-'+_0x559831+'/'+_0x4aa7fb)[_0xc9de('0x25')](_0x365ae9);}return null;};}function patchUpdates(_0x152cda){return function(_0x1b6482){try{jsonpatch[_0xc9de('0x2b')](_0x1b6482,_0x152cda,!![]);}catch(_0x13b940){return BPromise['reject'](_0x13b940);}return _0x1b6482[_0xc9de('0x2c')]();};}function saveUpdates(_0x5b752d,_0x385052){return function(_0x332530){if(_0x332530){return _0x332530[_0xc9de('0x2d')](_0x5b752d)[_0xc9de('0x19')](function(_0xce1e7b){return _0xce1e7b;});}return null;};}function removeEntity(_0x11043b,_0xd94f7){return function(_0x43cf5a){if(_0x43cf5a){return _0x43cf5a[_0xc9de('0x2e')]()[_0xc9de('0x19')](function(){_0x11043b['status'](0xcc)[_0xc9de('0x2f')]();});}};}function handleEntityNotFound(_0x15482,_0x5f2087){return function(_0x442916){if(!_0x442916){_0x15482['sendStatus'](0x194);}return _0x442916;};}function handleError(_0x50f5f9,_0x2a5d48){_0x2a5d48=_0x2a5d48||0x1f4;return function(_0x2eebc2){logger[_0xc9de('0x1e')](_0x2eebc2[_0xc9de('0x30')]);if(_0x2eebc2[_0xc9de('0x31')]){delete _0x2eebc2['name'];}_0x50f5f9[_0xc9de('0x24')](_0x2a5d48)[_0xc9de('0x32')](_0x2eebc2);};}exports[_0xc9de('0x33')]=function(_0x307960,_0x4f987e){var _0x252c59={},_0x558013={},_0x31acd5={'count':0x0,'rows':[]};var _0x228d49=_[_0xc9de('0x34')](db[_0xc9de('0x35')][_0xc9de('0x36')],function(_0x58c027){return{'name':_0x58c027[_0xc9de('0x37')],'type':_0x58c027[_0xc9de('0x38')][_0xc9de('0x39')]};});_0x558013[_0xc9de('0x3a')]=_['map'](_0x228d49,_0xc9de('0x31'));_0x558013[_0xc9de('0x3b')]=_[_0xc9de('0x3c')](_0x307960[_0xc9de('0x3b')]);_0x558013[_0xc9de('0x3d')]=_['intersection'](_0x558013[_0xc9de('0x3a')],_0x558013['query']);_0x252c59[_0xc9de('0x3e')]=_[_0xc9de('0x3f')](_0x558013['model'],qs[_0xc9de('0x40')](_0x307960[_0xc9de('0x3b')][_0xc9de('0x40')]));_0x252c59['attributes']=_0x252c59[_0xc9de('0x3e')][_0xc9de('0x41')]?_0x252c59['attributes']:_0x558013['model'];if(!_0x307960[_0xc9de('0x3b')][_0xc9de('0x42')](_0xc9de('0x43'))){_0x252c59['limit']=qs[_0xc9de('0x27')](_0x307960[_0xc9de('0x3b')][_0xc9de('0x27')]);_0x252c59[_0xc9de('0x29')]=qs['offset'](_0x307960[_0xc9de('0x3b')]['offset']);}_0x252c59['order']=qs[_0xc9de('0x44')](_0x307960[_0xc9de('0x3b')][_0xc9de('0x44')]);_0x252c59[_0xc9de('0x45')]=qs[_0xc9de('0x3d')](_[_0xc9de('0x46')](_0x307960[_0xc9de('0x3b')],_0x558013[_0xc9de('0x3d')]),_0x228d49);if(_0x307960[_0xc9de('0x3b')][_0xc9de('0x47')]){_0x252c59[_0xc9de('0x45')]=_['merge'](_0x252c59['where'],{'$or':_[_0xc9de('0x34')](_0x228d49,function(_0x44ce7e){if(_0x44ce7e[_0xc9de('0x38')]!=='VIRTUAL'){var _0x146411={};_0x146411[_0x44ce7e['name']]={'$like':'%'+_0x307960[_0xc9de('0x3b')][_0xc9de('0x47')]+'%'};return _0x146411;}})});}_0x252c59=_[_0xc9de('0x48')]({},_0x252c59,_0x307960[_0xc9de('0x49')]);var _0x263abe={'where':_0x252c59[_0xc9de('0x45')]};return db['Network'][_0xc9de('0x28')](_0x263abe)[_0xc9de('0x19')](function(_0x1d8b11){_0x31acd5[_0xc9de('0x28')]=_0x1d8b11;if(_0x307960[_0xc9de('0x3b')][_0xc9de('0x4a')]){_0x252c59[_0xc9de('0x4b')]=[{'all':!![]}];}return db[_0xc9de('0x35')][_0xc9de('0x4c')](_0x252c59);})[_0xc9de('0x19')](function(_0x499010){_0x31acd5[_0xc9de('0x4d')]=_0x499010;return _0x31acd5;})['then'](respondWithFilteredResult(_0x4f987e,_0x252c59))['catch'](handleError(_0x4f987e,null));};exports['show']=function(_0x2945b8,_0x2b05c4){var _0x4a57ae={'raw':!![],'where':{'id':_0x2945b8[_0xc9de('0x4e')]['id']}},_0x8d144={};_0x8d144[_0xc9de('0x3a')]=_[_0xc9de('0x3c')](db[_0xc9de('0x35')][_0xc9de('0x36')]);_0x8d144[_0xc9de('0x3b')]=_[_0xc9de('0x3c')](_0x2945b8[_0xc9de('0x3b')]);_0x8d144['filters']=_[_0xc9de('0x3f')](_0x8d144[_0xc9de('0x3a')],_0x8d144['query']);_0x4a57ae[_0xc9de('0x3e')]=_[_0xc9de('0x3f')](_0x8d144[_0xc9de('0x3a')],qs[_0xc9de('0x40')](_0x2945b8[_0xc9de('0x3b')][_0xc9de('0x40')]));_0x4a57ae[_0xc9de('0x3e')]=_0x4a57ae['attributes'][_0xc9de('0x41')]?_0x4a57ae[_0xc9de('0x3e')]:_0x8d144['model'];if(_0x2945b8[_0xc9de('0x3b')]['includeAll']){_0x4a57ae['include']=[{'all':!![]}];}_0x4a57ae=_[_0xc9de('0x48')]({},_0x4a57ae,_0x2945b8[_0xc9de('0x49')]);return db[_0xc9de('0x35')]['find'](_0x4a57ae)[_0xc9de('0x19')](handleEntityNotFound(_0x2b05c4,null))[_0xc9de('0x19')](respondWithResult(_0x2b05c4,null))[_0xc9de('0x4f')](handleError(_0x2b05c4,null));};exports['create']=function(_0x48233a,_0x155c56,_0x43468d){var _0x3204da;return db[_0xc9de('0x50')]['transaction'](function(_0x4a5de3){return db[_0xc9de('0x35')][_0xc9de('0x51')](_0x48233a[_0xc9de('0x52')],{'raw':!![]})[_0xc9de('0x19')](function(_0x3e9c47){_0x3204da=_0x3e9c47;return db[_0xc9de('0x35')][_0xc9de('0x4c')]({'where':{'type':_0x48233a[_0xc9de('0x52')][_0xc9de('0x38')]},'raw':!![]});})[_0xc9de('0x19')](function(_0x5da712){if(_0x3204da[_0xc9de('0x38')][_0xc9de('0x53')]()==_0xc9de('0x54')){var _0x204d82=fs[_0xc9de('0x55')](path['join'](config['root'],_0xc9de('0x56')),'utf8');var _0x53a973=ejs[_0xc9de('0x57')](_0x204d82,{'networks':_0x5da712||[]});fs[_0xc9de('0x58')](_0xc9de('0x59'),_0x53a973);return respondWithRpcPromise(_0xc9de('0x5a'),'create',{'module':_0xc9de('0x5b')});}else if(_0x3204da[_0xc9de('0x38')][_0xc9de('0x53')]()==_0xc9de('0x5c')){var _0x5f4576=fs['readFileSync'](path[_0xc9de('0x5d')](config[_0xc9de('0x5e')],_0xc9de('0x5f')),_0xc9de('0x60'));var _0x53a94a=ejs[_0xc9de('0x57')](_0x5f4576,{'networks':_0x5da712||[]});fs[_0xc9de('0x58')](_0xc9de('0x61'),_0x53a94a);return respondWithRpcPromise(_0xc9de('0x5a'),'create',{'module':_0xc9de('0x5b')});}else{var _0x15fb87=fs[_0xc9de('0x55')](path[_0xc9de('0x5d')](config[_0xc9de('0x5e')],_0xc9de('0x62')),_0xc9de('0x60'));var _0x491ce5=ejs[_0xc9de('0x57')](_0x15fb87,{'networks':_0x5da712||[]});fs[_0xc9de('0x58')](util['format']('/etc/asterisk/sip_xcally_%s.conf',_0x48233a[_0xc9de('0x52')][_0xc9de('0x38')]['toLowerCase']()),_0x491ce5);return respondWithRpcPromise('Reload','create',{'module':'chan_sip.so'});}return null;})[_0xc9de('0x19')](function(){return _0x3204da;});})[_0xc9de('0x19')](respondWithResult(_0x155c56,0xc9))[_0xc9de('0x4f')](handleError(_0x155c56,null));};exports[_0xc9de('0x2d')]=function(_0x5a6745,_0x22b003,_0x1ddb64){var _0x5ece01;return db[_0xc9de('0x50')]['transaction'](function(_0x22a37d){return db[_0xc9de('0x35')]['find']({'where':{'id':_0x5a6745[_0xc9de('0x4e')]['id']}})[_0xc9de('0x19')](handleEntityNotFound(_0x22b003,null))[_0xc9de('0x19')](saveUpdates(_0x5a6745[_0xc9de('0x52')],null))[_0xc9de('0x19')](function(_0x1b3f3b){if(_0x1b3f3b){_0x5ece01=_0x1b3f3b;return db[_0xc9de('0x35')][_0xc9de('0x4c')]({'where':{'type':_0x5ece01[_0xc9de('0x38')]},'raw':!![]});}return null;})[_0xc9de('0x19')](function(_0x3496af){if(_0x5ece01[_0xc9de('0x38')][_0xc9de('0x53')]()==_0xc9de('0x54')){var _0x2426ce=fs['readFileSync'](path['join'](config[_0xc9de('0x5e')],'server/files/templates/stun_multiple.ejs'),_0xc9de('0x60'));var _0x7c079c=ejs[_0xc9de('0x57')](_0x2426ce,{'networks':_0x3496af||[]});fs[_0xc9de('0x58')](_0xc9de('0x59'),_0x7c079c);return respondWithRpcPromise(_0xc9de('0x5a'),_0xc9de('0x2d'),{'module':_0xc9de('0x5b')});}else if(_0x5ece01[_0xc9de('0x38')][_0xc9de('0x53')]()=='TURN'){var _0x43eeb4=fs['readFileSync'](path['join'](config['root'],_0xc9de('0x5f')),'utf8');var _0xbadf0f=ejs[_0xc9de('0x57')](_0x43eeb4,{'networks':_0x3496af||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0xbadf0f);return respondWithRpcPromise(_0xc9de('0x5a'),_0xc9de('0x2d'),{'module':'res_stun_monitor.so'});}else{var _0x37c510=fs[_0xc9de('0x55')](path[_0xc9de('0x5d')](config[_0xc9de('0x5e')],_0xc9de('0x62')),'utf8');var _0x316426=ejs[_0xc9de('0x57')](_0x37c510,{'networks':_0x3496af||[]});fs[_0xc9de('0x58')](util[_0xc9de('0x63')](_0xc9de('0x64'),_0x5a6745[_0xc9de('0x52')][_0xc9de('0x38')]['toLowerCase']()),_0x316426);return respondWithRpcPromise(_0xc9de('0x5a'),_0xc9de('0x2d'),{'module':_0xc9de('0x65')});}return null;})[_0xc9de('0x19')](function(_0x4be27a){if(_0x4be27a){return _0x5ece01;}return null;});})[_0xc9de('0x19')](respondWithResult(_0x22b003,null))[_0xc9de('0x4f')](handleError(_0x22b003,null));};exports[_0xc9de('0x2e')]=function(_0x1a43ae,_0xe05d1,_0x34450a){var _0x3831aa;return db[_0xc9de('0x35')]['find']({'where':{'id':_0x1a43ae[_0xc9de('0x4e')]['id']}})[_0xc9de('0x19')](function(_0x35add1){_0x3831aa=_0x35add1;return _0x35add1;})[_0xc9de('0x19')](handleEntityNotFound(_0xe05d1,null))[_0xc9de('0x19')](removeEntity(_0xe05d1,null))['then'](function(){if(_0x3831aa){return db[_0xc9de('0x35')][_0xc9de('0x4c')]({'where':{'type':_0x3831aa[_0xc9de('0x38')]},'raw':!![]});}})['then'](function(_0x33cec9){if(_0x3831aa['type'][_0xc9de('0x53')]()==_0xc9de('0x54')){var _0x173035=fs[_0xc9de('0x55')](path[_0xc9de('0x5d')](config[_0xc9de('0x5e')],_0xc9de('0x56')),'utf8');var _0x3683d0=ejs[_0xc9de('0x57')](_0x173035,{'networks':_0x33cec9||[]});fs[_0xc9de('0x58')](_0xc9de('0x59'),_0x3683d0);return respondWithRpcPromise(_0xc9de('0x5a'),_0xc9de('0x2e'),{'module':_0xc9de('0x5b')});}else if(_0x3831aa[_0xc9de('0x38')][_0xc9de('0x53')]()==_0xc9de('0x5c')){var _0x2fc677=fs['readFileSync'](path['join'](config['root'],_0xc9de('0x5f')),_0xc9de('0x60'));var _0x66449e=ejs['render'](_0x2fc677,{'networks':_0x33cec9||[]});fs['writeFileSync'](_0xc9de('0x61'),_0x66449e);return respondWithRpcPromise(_0xc9de('0x5a'),_0xc9de('0x2e'),{'module':_0xc9de('0x5b')});}else{var _0x21569c=fs[_0xc9de('0x55')](path['join'](config['root'],_0xc9de('0x62')),_0xc9de('0x60'));var _0x33cc85=ejs[_0xc9de('0x57')](_0x21569c,{'networks':_0x33cec9||[]});fs['writeFileSync'](util[_0xc9de('0x63')](_0xc9de('0x64'),_0x1a43ae['body'][_0xc9de('0x38')][_0xc9de('0x66')]()),_0x33cc85);return respondWithRpcPromise(_0xc9de('0x5a'),_0xc9de('0x2e'),{'module':'chan_sip.so'});}return null;})[_0xc9de('0x4f')](handleError(_0xe05d1,null));};