Built motion from commit (unavailable).|2.5.26
[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 _0x9c16=['map','fieldName','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','filter','merge','type','VIRTUAL','options','Network','includeAll','findAll','rows','show','params','keys','rawAttributes','include','find','create','transaction','body','STUN','readFileSync','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','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','server/files/templates/network.ejs','format','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','fs-extra','squel','jsforce','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../mysqldb','jayson/promise','http','request','then','Network,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','status','json','count','offset','limit','set','Content-Range','reject','save','update','destroy','end','sendStatus','stack','name','send','index'];(function(_0x5437ae,_0x3de18e){var _0x44a1ad=function(_0x4c9175){while(--_0x4c9175){_0x5437ae['push'](_0x5437ae['shift']());}};_0x44a1ad(++_0x3de18e);}(_0x9c16,0x163));var _0x69c1=function(_0x12afed,_0x83cd2b){_0x12afed=_0x12afed-0x0;var _0x5f5ce7=_0x9c16[_0x12afed];return _0x5f5ce7;};'use strict';var emlformat=require(_0x69c1('0x0'));var rimraf=require(_0x69c1('0x1'));var zipdir=require(_0x69c1('0x2'));var jsonpatch=require(_0x69c1('0x3'));var rp=require(_0x69c1('0x4'));var moment=require(_0x69c1('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x69c1('0x6'));var util=require(_0x69c1('0x7'));var path=require('path');var sox=require(_0x69c1('0x8'));var csv=require(_0x69c1('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x69c1('0xa'));var _=require('lodash');var squel=require(_0x69c1('0xb'));var crypto=require('crypto');var jsforce=require(_0x69c1('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x69c1('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x69c1('0xd'));var authService=require(_0x69c1('0xe'));var qs=require(_0x69c1('0xf'));var as=require(_0x69c1('0x10'));var hardwareService=require(_0x69c1('0x11'));var logger=require('../../config/logger')(_0x69c1('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x69c1('0x13'))['db'];var jayson=require(_0x69c1('0x14'));var client=jayson['client'][_0x69c1('0x15')]({'port':0x232a});function respondWithRpcPromise(_0x27408a,_0x236087,_0x552b52,_0x1e77f7){return new BPromise(function(_0x119af0,_0x55f753){var _0x45c5d0=_0x1e77f7||client;return _0x45c5d0[_0x69c1('0x16')](_0x27408a,_0x552b52)[_0x69c1('0x17')](function(_0x23edba){logger['info'](_0x69c1('0x18'),_0x236087,_0x69c1('0x19'));logger[_0x69c1('0x1a')]('Network,\x20%s,\x20%s,\x20%s',_0x236087,_0x69c1('0x19'),JSON['stringify'](_0x23edba));if(_0x23edba[_0x69c1('0x1b')]){if(_0x23edba[_0x69c1('0x1b')][_0x69c1('0x1c')]===0x1f4){logger['error'](_0x69c1('0x18'),_0x236087,_0x23edba[_0x69c1('0x1b')][_0x69c1('0x1d')]);return _0x55f753(_0x23edba[_0x69c1('0x1b')][_0x69c1('0x1d')]);}logger[_0x69c1('0x1b')](_0x69c1('0x18'),_0x236087,_0x23edba[_0x69c1('0x1b')][_0x69c1('0x1d')]);return _0x119af0(_0x23edba['error'][_0x69c1('0x1d')]);}else{logger[_0x69c1('0x1e')](_0x69c1('0x18'),_0x236087,_0x69c1('0x19'));_0x119af0(_0x23edba['result'][_0x69c1('0x1d')]);}})[_0x69c1('0x1f')](function(_0x388e38){logger[_0x69c1('0x1b')](_0x69c1('0x18'),_0x236087,_0x388e38);_0x55f753(_0x388e38);});});}function respondWithStatusCode(_0x30b758,_0x570e76){_0x570e76=_0x570e76||0xcc;return function(_0x130ef4){if(_0x130ef4){return _0x30b758['sendStatus'](_0x570e76);}return _0x30b758[_0x69c1('0x20')](_0x570e76)['end']();};}function respondWithResult(_0x4bf5c9,_0x42e532){_0x42e532=_0x42e532||0xc8;return function(_0x3f45f6){if(_0x3f45f6){return _0x4bf5c9[_0x69c1('0x20')](_0x42e532)[_0x69c1('0x21')](_0x3f45f6);}};}function respondWithFilteredResult(_0x5e49ca,_0x2556e4){return function(_0x59d82b){if(_0x59d82b){var _0x1d12c2=_0x59d82b[_0x69c1('0x22')],_0x4d3f76=_0x2556e4[_0x69c1('0x23')],_0x22bc06=_0x2556e4[_0x69c1('0x23')]+_0x2556e4[_0x69c1('0x24')],_0x38c2d8;if(_0x22bc06>=_0x1d12c2){_0x22bc06=_0x1d12c2;_0x38c2d8=0xc8;}else{_0x38c2d8=0xce;}_0x5e49ca[_0x69c1('0x20')](_0x38c2d8);return _0x5e49ca[_0x69c1('0x25')](_0x69c1('0x26'),_0x4d3f76+'-'+_0x22bc06+'/'+_0x1d12c2)[_0x69c1('0x21')](_0x59d82b);}return null;};}function patchUpdates(_0x4bf631){return function(_0x7a1c85){try{jsonpatch['apply'](_0x7a1c85,_0x4bf631,!![]);}catch(_0x108043){return BPromise[_0x69c1('0x27')](_0x108043);}return _0x7a1c85[_0x69c1('0x28')]();};}function saveUpdates(_0x2f3549,_0x3b9c85){return function(_0x1d8055){if(_0x1d8055){return _0x1d8055[_0x69c1('0x29')](_0x2f3549)[_0x69c1('0x17')](function(_0x2d9fa7){return _0x2d9fa7;});}return null;};}function removeEntity(_0xf71f49,_0x31b33c){return function(_0x394b78){if(_0x394b78){return _0x394b78[_0x69c1('0x2a')]()[_0x69c1('0x17')](function(){_0xf71f49[_0x69c1('0x20')](0xcc)[_0x69c1('0x2b')]();});}};}function handleEntityNotFound(_0x5b5ba1,_0x269469){return function(_0x1f8cc3){if(!_0x1f8cc3){_0x5b5ba1[_0x69c1('0x2c')](0x194);}return _0x1f8cc3;};}function handleError(_0x2b0797,_0x5358d1){_0x5358d1=_0x5358d1||0x1f4;return function(_0x373ca5){logger[_0x69c1('0x1b')](_0x373ca5[_0x69c1('0x2d')]);if(_0x373ca5[_0x69c1('0x2e')]){delete _0x373ca5[_0x69c1('0x2e')];}_0x2b0797['status'](_0x5358d1)[_0x69c1('0x2f')](_0x373ca5);};}exports[_0x69c1('0x30')]=function(_0xdd9fd9,_0x2fc721){var _0x22efcd={},_0x721cf4={},_0x97474e={'count':0x0,'rows':[]};var _0x3b9a5f=_[_0x69c1('0x31')](db['Network']['rawAttributes'],function(_0x491e84){return{'name':_0x491e84[_0x69c1('0x32')],'type':_0x491e84['type'][_0x69c1('0x33')]};});_0x721cf4[_0x69c1('0x34')]=_[_0x69c1('0x31')](_0x3b9a5f,'name');_0x721cf4['query']=_['keys'](_0xdd9fd9[_0x69c1('0x35')]);_0x721cf4[_0x69c1('0x36')]=_['intersection'](_0x721cf4[_0x69c1('0x34')],_0x721cf4[_0x69c1('0x35')]);_0x22efcd[_0x69c1('0x37')]=_[_0x69c1('0x38')](_0x721cf4['model'],qs[_0x69c1('0x39')](_0xdd9fd9[_0x69c1('0x35')][_0x69c1('0x39')]));_0x22efcd[_0x69c1('0x37')]=_0x22efcd['attributes'][_0x69c1('0x3a')]?_0x22efcd[_0x69c1('0x37')]:_0x721cf4[_0x69c1('0x34')];if(!_0xdd9fd9['query'][_0x69c1('0x3b')]('nolimit')){_0x22efcd[_0x69c1('0x24')]=qs[_0x69c1('0x24')](_0xdd9fd9[_0x69c1('0x35')][_0x69c1('0x24')]);_0x22efcd[_0x69c1('0x23')]=qs[_0x69c1('0x23')](_0xdd9fd9[_0x69c1('0x35')][_0x69c1('0x23')]);}_0x22efcd[_0x69c1('0x3c')]=qs[_0x69c1('0x3d')](_0xdd9fd9['query'][_0x69c1('0x3d')]);_0x22efcd[_0x69c1('0x3e')]=qs['filters'](_['pick'](_0xdd9fd9[_0x69c1('0x35')],_0x721cf4[_0x69c1('0x36')]),_0x3b9a5f);if(_0xdd9fd9[_0x69c1('0x35')][_0x69c1('0x3f')]){_0x22efcd[_0x69c1('0x3e')]=_[_0x69c1('0x40')](_0x22efcd['where'],{'$or':_['map'](_0x3b9a5f,function(_0x126762){if(_0x126762[_0x69c1('0x41')]!==_0x69c1('0x42')){var _0x968aa8={};_0x968aa8[_0x126762[_0x69c1('0x2e')]]={'$like':'%'+_0xdd9fd9[_0x69c1('0x35')][_0x69c1('0x3f')]+'%'};return _0x968aa8;}})});}_0x22efcd=_['merge']({},_0x22efcd,_0xdd9fd9[_0x69c1('0x43')]);var _0x3adc90={'where':_0x22efcd[_0x69c1('0x3e')]};return db[_0x69c1('0x44')][_0x69c1('0x22')](_0x3adc90)[_0x69c1('0x17')](function(_0x437c7f){_0x97474e[_0x69c1('0x22')]=_0x437c7f;if(_0xdd9fd9[_0x69c1('0x35')][_0x69c1('0x45')]){_0x22efcd['include']=[{'all':!![]}];}return db[_0x69c1('0x44')][_0x69c1('0x46')](_0x22efcd);})['then'](function(_0x413a7a){_0x97474e[_0x69c1('0x47')]=_0x413a7a;return _0x97474e;})[_0x69c1('0x17')](respondWithFilteredResult(_0x2fc721,_0x22efcd))[_0x69c1('0x1f')](handleError(_0x2fc721,null));};exports[_0x69c1('0x48')]=function(_0x5350d9,_0x9efc0e){var _0x43fe67={'raw':!![],'where':{'id':_0x5350d9[_0x69c1('0x49')]['id']}},_0x269715={};_0x269715[_0x69c1('0x34')]=_[_0x69c1('0x4a')](db[_0x69c1('0x44')][_0x69c1('0x4b')]);_0x269715[_0x69c1('0x35')]=_['keys'](_0x5350d9[_0x69c1('0x35')]);_0x269715[_0x69c1('0x36')]=_[_0x69c1('0x38')](_0x269715[_0x69c1('0x34')],_0x269715[_0x69c1('0x35')]);_0x43fe67[_0x69c1('0x37')]=_[_0x69c1('0x38')](_0x269715['model'],qs[_0x69c1('0x39')](_0x5350d9[_0x69c1('0x35')]['fields']));_0x43fe67[_0x69c1('0x37')]=_0x43fe67[_0x69c1('0x37')][_0x69c1('0x3a')]?_0x43fe67[_0x69c1('0x37')]:_0x269715['model'];if(_0x5350d9[_0x69c1('0x35')][_0x69c1('0x45')]){_0x43fe67[_0x69c1('0x4c')]=[{'all':!![]}];}_0x43fe67=_[_0x69c1('0x40')]({},_0x43fe67,_0x5350d9['options']);return db[_0x69c1('0x44')][_0x69c1('0x4d')](_0x43fe67)['then'](handleEntityNotFound(_0x9efc0e,null))[_0x69c1('0x17')](respondWithResult(_0x9efc0e,null))[_0x69c1('0x1f')](handleError(_0x9efc0e,null));};exports[_0x69c1('0x4e')]=function(_0x5d3194,_0x3b6b21,_0x1eb6ff){var _0x2709c3;return db['sequelize'][_0x69c1('0x4f')](function(_0x596f6c){return db[_0x69c1('0x44')][_0x69c1('0x4e')](_0x5d3194[_0x69c1('0x50')],{'raw':!![]})[_0x69c1('0x17')](function(_0x137f87){_0x2709c3=_0x137f87;return db['Network'][_0x69c1('0x46')]({'where':{'type':_0x5d3194[_0x69c1('0x50')]['type']},'raw':!![]});})[_0x69c1('0x17')](function(_0x28fb13){if(_0x2709c3['type']['toUpperCase']()==_0x69c1('0x51')){var _0x4ed221=fs[_0x69c1('0x52')](path[_0x69c1('0x53')](config[_0x69c1('0x54')],_0x69c1('0x55')),_0x69c1('0x56'));var _0x4bcdf0=ejs[_0x69c1('0x57')](_0x4ed221,{'networks':_0x28fb13||[]});fs[_0x69c1('0x58')](_0x69c1('0x59'),_0x4bcdf0);return respondWithRpcPromise(_0x69c1('0x5a'),'create',{'module':_0x69c1('0x5b')});}else if(_0x2709c3['type'][_0x69c1('0x5c')]()==_0x69c1('0x5d')){var _0x42b60b=fs['readFileSync'](path['join'](config[_0x69c1('0x54')],_0x69c1('0x5e')),_0x69c1('0x56'));var _0xb4091c=ejs[_0x69c1('0x57')](_0x42b60b,{'networks':_0x28fb13||[]});fs[_0x69c1('0x58')](_0x69c1('0x5f'),_0xb4091c);return respondWithRpcPromise(_0x69c1('0x5a'),'create',{'module':'res_stun_monitor.so'});}else{var _0x5dc5bd=fs[_0x69c1('0x52')](path['join'](config['root'],'server/files/templates/network.ejs'),_0x69c1('0x56'));var _0x20691f=ejs[_0x69c1('0x57')](_0x5dc5bd,{'networks':_0x28fb13||[]});fs[_0x69c1('0x58')](util['format'](_0x69c1('0x60'),_0x5d3194[_0x69c1('0x50')][_0x69c1('0x41')][_0x69c1('0x61')]()),_0x20691f);return respondWithRpcPromise(_0x69c1('0x5a'),_0x69c1('0x4e'),{'module':_0x69c1('0x62')});}return null;})[_0x69c1('0x17')](function(){return _0x2709c3;});})[_0x69c1('0x17')](respondWithResult(_0x3b6b21,0xc9))[_0x69c1('0x1f')](handleError(_0x3b6b21,null));};exports[_0x69c1('0x29')]=function(_0x2def21,_0x14e8f2,_0x748de0){var _0xf3e253;return db['sequelize'][_0x69c1('0x4f')](function(_0xef9e61){return db[_0x69c1('0x44')]['find']({'where':{'id':_0x2def21['params']['id']}})[_0x69c1('0x17')](handleEntityNotFound(_0x14e8f2,null))['then'](saveUpdates(_0x2def21[_0x69c1('0x50')],null))[_0x69c1('0x17')](function(_0x349c66){if(_0x349c66){_0xf3e253=_0x349c66;return db[_0x69c1('0x44')][_0x69c1('0x46')]({'where':{'type':_0xf3e253[_0x69c1('0x41')]},'raw':!![]});}return null;})[_0x69c1('0x17')](function(_0x302670){if(_0xf3e253[_0x69c1('0x41')][_0x69c1('0x5c')]()==_0x69c1('0x51')){var _0x18ef00=fs[_0x69c1('0x52')](path[_0x69c1('0x53')](config[_0x69c1('0x54')],_0x69c1('0x55')),'utf8');var _0x25ce8e=ejs[_0x69c1('0x57')](_0x18ef00,{'networks':_0x302670||[]});fs[_0x69c1('0x58')]('/etc/asterisk/stun_xcally.conf',_0x25ce8e);return respondWithRpcPromise(_0x69c1('0x5a'),_0x69c1('0x29'),{'module':_0x69c1('0x5b')});}else if(_0xf3e253[_0x69c1('0x41')][_0x69c1('0x5c')]()==_0x69c1('0x5d')){var _0x1fb9f6=fs[_0x69c1('0x52')](path[_0x69c1('0x53')](config['root'],_0x69c1('0x5e')),_0x69c1('0x56'));var _0x29c8b8=ejs[_0x69c1('0x57')](_0x1fb9f6,{'networks':_0x302670||[]});fs[_0x69c1('0x58')](_0x69c1('0x5f'),_0x29c8b8);return respondWithRpcPromise('Reload',_0x69c1('0x29'),{'module':_0x69c1('0x5b')});}else{var _0x2e0b12=fs[_0x69c1('0x52')](path['join'](config[_0x69c1('0x54')],_0x69c1('0x63')),'utf8');var _0xe27e19=ejs[_0x69c1('0x57')](_0x2e0b12,{'networks':_0x302670||[]});fs[_0x69c1('0x58')](util[_0x69c1('0x64')](_0x69c1('0x60'),_0x2def21[_0x69c1('0x50')]['type'][_0x69c1('0x61')]()),_0xe27e19);return respondWithRpcPromise(_0x69c1('0x5a'),_0x69c1('0x29'),{'module':'chan_sip.so'});}return null;})['then'](function(_0x2d33dd){if(_0x2d33dd){return _0xf3e253;}return null;});})[_0x69c1('0x17')](respondWithResult(_0x14e8f2,null))[_0x69c1('0x1f')](handleError(_0x14e8f2,null));};exports[_0x69c1('0x2a')]=function(_0x3c42e2,_0x1550a4,_0x512a87){var _0x29ea02;return db[_0x69c1('0x44')][_0x69c1('0x4d')]({'where':{'id':_0x3c42e2[_0x69c1('0x49')]['id']}})[_0x69c1('0x17')](function(_0x904443){_0x29ea02=_0x904443;return _0x904443;})['then'](handleEntityNotFound(_0x1550a4,null))[_0x69c1('0x17')](removeEntity(_0x1550a4,null))[_0x69c1('0x17')](function(){if(_0x29ea02){return db[_0x69c1('0x44')][_0x69c1('0x46')]({'where':{'type':_0x29ea02['type']},'raw':!![]});}})[_0x69c1('0x17')](function(_0xcd4500){if(_0x29ea02[_0x69c1('0x41')]['toUpperCase']()=='STUN'){var _0x24d42d=fs['readFileSync'](path[_0x69c1('0x53')](config[_0x69c1('0x54')],_0x69c1('0x55')),_0x69c1('0x56'));var _0x269a1b=ejs[_0x69c1('0x57')](_0x24d42d,{'networks':_0xcd4500||[]});fs[_0x69c1('0x58')]('/etc/asterisk/stun_xcally.conf',_0x269a1b);return respondWithRpcPromise('Reload',_0x69c1('0x2a'),{'module':_0x69c1('0x5b')});}else if(_0x29ea02['type'][_0x69c1('0x5c')]()==_0x69c1('0x5d')){var _0x4ac9b2=fs[_0x69c1('0x52')](path[_0x69c1('0x53')](config['root'],_0x69c1('0x5e')),_0x69c1('0x56'));var _0x230949=ejs['render'](_0x4ac9b2,{'networks':_0xcd4500||[]});fs['writeFileSync'](_0x69c1('0x5f'),_0x230949);return respondWithRpcPromise('Reload',_0x69c1('0x2a'),{'module':_0x69c1('0x5b')});}else{var _0x1d70a2=fs[_0x69c1('0x52')](path[_0x69c1('0x53')](config[_0x69c1('0x54')],_0x69c1('0x63')),'utf8');var _0x4d62c2=ejs[_0x69c1('0x57')](_0x1d70a2,{'networks':_0xcd4500||[]});fs[_0x69c1('0x58')](util[_0x69c1('0x64')](_0x69c1('0x60'),_0x3c42e2[_0x69c1('0x50')][_0x69c1('0x41')]['toLowerCase']()),_0x4d62c2);return respondWithRpcPromise(_0x69c1('0x5a'),_0x69c1('0x2a'),{'module':_0x69c1('0x62')});}return null;})[_0x69c1('0x1f')](handleError(_0x1550a4,null));};