Built motion from commit 25580385.|2.6.2
[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 _0x625b=['papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','client','http','request','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','error','message','result','sendStatus','status','json','undefined','limit','count','offset','Content-Range','save','update','then','destroy','stack','name','index','map','Network','rawAttributes','fieldName','type','key','query','keys','model','attributes','fields','sort','where','filters','pick','filter','options','includeAll','findAll','rows','params','intersection','length','include','merge','find','catch','sequelize','transaction','body','toUpperCase','STUN','readFileSync','join','root','server/files/templates/stun_multiple.ejs','/etc/asterisk/stun_xcally.conf','res_stun_monitor.so','TURN','render','Reload','create','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','utf8','writeFileSync','server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','querystring'];(function(_0x5c3751,_0x1741ac){var _0xa3c2f=function(_0x14a810){while(--_0x14a810){_0x5c3751['push'](_0x5c3751['shift']());}};_0xa3c2f(++_0x1741ac);}(_0x625b,0x121));var _0xb625=function(_0x1fe288,_0xc1734){_0x1fe288=_0x1fe288-0x0;var _0x2d35e8=_0x625b[_0x1fe288];return _0x2d35e8;};'use strict';var emlformat=require(_0xb625('0x0'));var rimraf=require(_0xb625('0x1'));var zipdir=require(_0xb625('0x2'));var jsonpatch=require(_0xb625('0x3'));var rp=require(_0xb625('0x4'));var moment=require(_0xb625('0x5'));var BPromise=require(_0xb625('0x6'));var Mustache=require(_0xb625('0x7'));var util=require(_0xb625('0x8'));var path=require(_0xb625('0x9'));var sox=require(_0xb625('0xa'));var csv=require(_0xb625('0xb'));var ejs=require(_0xb625('0xc'));var fs=require('fs');var fs_extra=require(_0xb625('0xd'));var _=require(_0xb625('0xe'));var squel=require(_0xb625('0xf'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xb625('0xb'));var querystring=require(_0xb625('0x10'));var Papa=require(_0xb625('0x11'));var Redis=require(_0xb625('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xb625('0x13'));var hardwareService=require(_0xb625('0x14'));var logger=require(_0xb625('0x15'))(_0xb625('0x16'));var utils=require(_0xb625('0x17'));var config=require(_0xb625('0x18'));var licenseUtil=require(_0xb625('0x19'));var db=require('../../mysqldb')['db'];var jayson=require('jayson/promise');var client=jayson[_0xb625('0x1a')][_0xb625('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x206847,_0x1e167c,_0x47f45b,_0x5c8b7f){return new BPromise(function(_0x38d369,_0xce6caf){var _0x534711=_0x5c8b7f||client;return _0x534711[_0xb625('0x1c')](_0x206847,_0x47f45b)['then'](function(_0x57a610){logger['info'](_0xb625('0x1d'),_0x1e167c,_0xb625('0x1e'));logger[_0xb625('0x1f')](_0xb625('0x20'),_0x1e167c,_0xb625('0x1e'),JSON['stringify'](_0x57a610));if(_0x57a610[_0xb625('0x21')]){if(_0x57a610['error']['code']===0x1f4){logger[_0xb625('0x21')]('Network,\x20%s,\x20%s',_0x1e167c,_0x57a610['error'][_0xb625('0x22')]);return _0xce6caf(_0x57a610[_0xb625('0x21')][_0xb625('0x22')]);}logger[_0xb625('0x21')](_0xb625('0x1d'),_0x1e167c,_0x57a610[_0xb625('0x21')][_0xb625('0x22')]);return _0x38d369(_0x57a610[_0xb625('0x21')][_0xb625('0x22')]);}else{logger['info'](_0xb625('0x1d'),_0x1e167c,_0xb625('0x1e'));_0x38d369(_0x57a610[_0xb625('0x23')][_0xb625('0x22')]);}})['catch'](function(_0x158a7f){logger[_0xb625('0x21')](_0xb625('0x1d'),_0x1e167c,_0x158a7f);_0xce6caf(_0x158a7f);});});}function respondWithStatusCode(_0x11cb40,_0x2a9d94){_0x2a9d94=_0x2a9d94||0xcc;return function(_0x4bb46d){if(_0x4bb46d){return _0x11cb40[_0xb625('0x24')](_0x2a9d94);}return _0x11cb40[_0xb625('0x25')](_0x2a9d94)['end']();};}function respondWithResult(_0x36b812,_0x15146b){_0x15146b=_0x15146b||0xc8;return function(_0x5de765){if(_0x5de765){return _0x36b812[_0xb625('0x25')](_0x15146b)[_0xb625('0x26')](_0x5de765);}};}function respondWithFilteredResult(_0x428c11,_0x1a04ab){return function(_0x473125){if(_0x473125){var _0x3fa90=typeof _0x1a04ab['offset']===_0xb625('0x27')&&typeof _0x1a04ab[_0xb625('0x28')]===_0xb625('0x27');var _0x290057=_0x473125[_0xb625('0x29')];var _0x18d8d8=_0x3fa90?0x0:_0x1a04ab[_0xb625('0x2a')];var _0x1f9516=_0x3fa90?_0x473125[_0xb625('0x29')]:_0x1a04ab['offset']+_0x1a04ab[_0xb625('0x28')];var _0x53d15f;if(_0x1f9516>=_0x290057){_0x1f9516=_0x290057;_0x53d15f=0xc8;}else{_0x53d15f=0xce;}_0x428c11[_0xb625('0x25')](_0x53d15f);return _0x428c11['set'](_0xb625('0x2b'),_0x18d8d8+'-'+_0x1f9516+'/'+_0x290057)[_0xb625('0x26')](_0x473125);}return null;};}function patchUpdates(_0x12015f){return function(_0x582e3d){try{jsonpatch['apply'](_0x582e3d,_0x12015f,!![]);}catch(_0x224b26){return BPromise['reject'](_0x224b26);}return _0x582e3d[_0xb625('0x2c')]();};}function saveUpdates(_0xe7a6e8,_0x270b82){return function(_0x1cfabf){if(_0x1cfabf){return _0x1cfabf[_0xb625('0x2d')](_0xe7a6e8)[_0xb625('0x2e')](function(_0x625c84){return _0x625c84;});}return null;};}function removeEntity(_0x38e812,_0x1d3c11){return function(_0xf9be7f){if(_0xf9be7f){return _0xf9be7f[_0xb625('0x2f')]()[_0xb625('0x2e')](function(){_0x38e812[_0xb625('0x25')](0xcc)['end']();});}};}function handleEntityNotFound(_0xefa1de,_0x1449f1){return function(_0x13e464){if(!_0x13e464){_0xefa1de[_0xb625('0x24')](0x194);}return _0x13e464;};}function handleError(_0x26ba34,_0x122ae7){_0x122ae7=_0x122ae7||0x1f4;return function(_0x3473de){logger[_0xb625('0x21')](_0x3473de[_0xb625('0x30')]);if(_0x3473de[_0xb625('0x31')]){delete _0x3473de[_0xb625('0x31')];}_0x26ba34[_0xb625('0x25')](_0x122ae7)['send'](_0x3473de);};}exports[_0xb625('0x32')]=function(_0x4ad0de,_0x5cb914){var _0x4f0538={},_0x50e8bf={},_0x17efc8={'count':0x0,'rows':[]};var _0x52a131=_[_0xb625('0x33')](db[_0xb625('0x34')][_0xb625('0x35')],function(_0x133e14){return{'name':_0x133e14[_0xb625('0x36')],'type':_0x133e14[_0xb625('0x37')][_0xb625('0x38')]};});_0x50e8bf['model']=_['map'](_0x52a131,_0xb625('0x31'));_0x50e8bf[_0xb625('0x39')]=_[_0xb625('0x3a')](_0x4ad0de[_0xb625('0x39')]);_0x50e8bf['filters']=_['intersection'](_0x50e8bf[_0xb625('0x3b')],_0x50e8bf['query']);_0x4f0538[_0xb625('0x3c')]=_['intersection'](_0x50e8bf[_0xb625('0x3b')],qs[_0xb625('0x3d')](_0x4ad0de['query'][_0xb625('0x3d')]));_0x4f0538[_0xb625('0x3c')]=_0x4f0538[_0xb625('0x3c')]['length']?_0x4f0538[_0xb625('0x3c')]:_0x50e8bf['model'];if(!_0x4ad0de[_0xb625('0x39')]['hasOwnProperty']('nolimit')){_0x4f0538[_0xb625('0x28')]=qs[_0xb625('0x28')](_0x4ad0de[_0xb625('0x39')]['limit']);_0x4f0538['offset']=qs['offset'](_0x4ad0de['query'][_0xb625('0x2a')]);}_0x4f0538['order']=qs[_0xb625('0x3e')](_0x4ad0de[_0xb625('0x39')][_0xb625('0x3e')]);_0x4f0538[_0xb625('0x3f')]=qs[_0xb625('0x40')](_[_0xb625('0x41')](_0x4ad0de[_0xb625('0x39')],_0x50e8bf[_0xb625('0x40')]),_0x52a131);if(_0x4ad0de[_0xb625('0x39')][_0xb625('0x42')]){_0x4f0538[_0xb625('0x3f')]=_['merge'](_0x4f0538[_0xb625('0x3f')],{'$or':_[_0xb625('0x33')](_0x52a131,function(_0x5154dc){if(_0x5154dc[_0xb625('0x37')]!=='VIRTUAL'){var _0x136ec9={};_0x136ec9[_0x5154dc[_0xb625('0x31')]]={'$like':'%'+_0x4ad0de['query'][_0xb625('0x42')]+'%'};return _0x136ec9;}})});}_0x4f0538=_['merge']({},_0x4f0538,_0x4ad0de[_0xb625('0x43')]);var _0x2d19ad={'where':_0x4f0538[_0xb625('0x3f')]};return db[_0xb625('0x34')][_0xb625('0x29')](_0x2d19ad)[_0xb625('0x2e')](function(_0xc1be34){_0x17efc8[_0xb625('0x29')]=_0xc1be34;if(_0x4ad0de[_0xb625('0x39')][_0xb625('0x44')]){_0x4f0538['include']=[{'all':!![]}];}return db['Network'][_0xb625('0x45')](_0x4f0538);})[_0xb625('0x2e')](function(_0x50f39a){_0x17efc8[_0xb625('0x46')]=_0x50f39a;return _0x17efc8;})['then'](respondWithFilteredResult(_0x5cb914,_0x4f0538))['catch'](handleError(_0x5cb914,null));};exports['show']=function(_0xa5a4cc,_0x20c4c6){var _0x5e8f3e={'raw':!![],'where':{'id':_0xa5a4cc[_0xb625('0x47')]['id']}},_0x22a00a={};_0x22a00a[_0xb625('0x3b')]=_[_0xb625('0x3a')](db['Network']['rawAttributes']);_0x22a00a['query']=_['keys'](_0xa5a4cc[_0xb625('0x39')]);_0x22a00a[_0xb625('0x40')]=_['intersection'](_0x22a00a[_0xb625('0x3b')],_0x22a00a[_0xb625('0x39')]);_0x5e8f3e[_0xb625('0x3c')]=_[_0xb625('0x48')](_0x22a00a[_0xb625('0x3b')],qs[_0xb625('0x3d')](_0xa5a4cc[_0xb625('0x39')]['fields']));_0x5e8f3e[_0xb625('0x3c')]=_0x5e8f3e[_0xb625('0x3c')][_0xb625('0x49')]?_0x5e8f3e['attributes']:_0x22a00a['model'];if(_0xa5a4cc[_0xb625('0x39')][_0xb625('0x44')]){_0x5e8f3e[_0xb625('0x4a')]=[{'all':!![]}];}_0x5e8f3e=_[_0xb625('0x4b')]({},_0x5e8f3e,_0xa5a4cc[_0xb625('0x43')]);return db['Network'][_0xb625('0x4c')](_0x5e8f3e)[_0xb625('0x2e')](handleEntityNotFound(_0x20c4c6,null))['then'](respondWithResult(_0x20c4c6,null))[_0xb625('0x4d')](handleError(_0x20c4c6,null));};exports['create']=function(_0x297c05,_0x3089fb,_0x283679){var _0x3b57ff;return db[_0xb625('0x4e')][_0xb625('0x4f')](function(_0x2f7821){return db[_0xb625('0x34')]['create'](_0x297c05[_0xb625('0x50')],{'raw':!![]})[_0xb625('0x2e')](function(_0x497266){_0x3b57ff=_0x497266;return db[_0xb625('0x34')]['findAll']({'where':{'type':_0x297c05[_0xb625('0x50')][_0xb625('0x37')]},'raw':!![]});})[_0xb625('0x2e')](function(_0x475fa8){if(_0x3b57ff['type'][_0xb625('0x51')]()==_0xb625('0x52')){var _0x139d7c=fs[_0xb625('0x53')](path[_0xb625('0x54')](config[_0xb625('0x55')],_0xb625('0x56')),'utf8');var _0x2334aa=ejs['render'](_0x139d7c,{'networks':_0x475fa8||[]});fs['writeFileSync'](_0xb625('0x57'),_0x2334aa);return respondWithRpcPromise('Reload','create',{'module':_0xb625('0x58')});}else if(_0x3b57ff['type'][_0xb625('0x51')]()==_0xb625('0x59')){var _0x556248=fs['readFileSync'](path[_0xb625('0x54')](config['root'],'server/files/templates/turn_multiple.ejs'),'utf8');var _0x508307=ejs[_0xb625('0x5a')](_0x556248,{'networks':_0x475fa8||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0x508307);return respondWithRpcPromise(_0xb625('0x5b'),_0xb625('0x5c'),{'module':_0xb625('0x58')});}else{var _0xb6b115=fs[_0xb625('0x53')](path['join'](config[_0xb625('0x55')],_0xb625('0x5d')),'utf8');var _0x416e9c=ejs[_0xb625('0x5a')](_0xb6b115,{'networks':_0x475fa8||[]});fs['writeFileSync'](util[_0xb625('0x5e')](_0xb625('0x5f'),_0x297c05['body'][_0xb625('0x37')][_0xb625('0x60')]()),_0x416e9c);return respondWithRpcPromise('Reload','create',{'module':_0xb625('0x61')});}return null;})[_0xb625('0x2e')](function(){return _0x3b57ff;});})[_0xb625('0x2e')](respondWithResult(_0x3089fb,0xc9))[_0xb625('0x4d')](handleError(_0x3089fb,null));};exports['update']=function(_0xc03539,_0x36ab19,_0x3f283e){var _0x3cc1d6;return db['sequelize']['transaction'](function(_0x434eed){return db[_0xb625('0x34')][_0xb625('0x4c')]({'where':{'id':_0xc03539[_0xb625('0x47')]['id']}})[_0xb625('0x2e')](handleEntityNotFound(_0x36ab19,null))['then'](saveUpdates(_0xc03539[_0xb625('0x50')],null))[_0xb625('0x2e')](function(_0x8e0643){if(_0x8e0643){_0x3cc1d6=_0x8e0643;return db['Network'][_0xb625('0x45')]({'where':{'type':_0x3cc1d6['type']},'raw':!![]});}return null;})[_0xb625('0x2e')](function(_0xe330fc){if(_0x3cc1d6[_0xb625('0x37')][_0xb625('0x51')]()==_0xb625('0x52')){var _0x1074cd=fs[_0xb625('0x53')](path['join'](config[_0xb625('0x55')],_0xb625('0x56')),_0xb625('0x62'));var _0xb97317=ejs[_0xb625('0x5a')](_0x1074cd,{'networks':_0xe330fc||[]});fs[_0xb625('0x63')]('/etc/asterisk/stun_xcally.conf',_0xb97317);return respondWithRpcPromise('Reload',_0xb625('0x2d'),{'module':'res_stun_monitor.so'});}else if(_0x3cc1d6[_0xb625('0x37')][_0xb625('0x51')]()==_0xb625('0x59')){var _0x52cd2c=fs[_0xb625('0x53')](path['join'](config[_0xb625('0x55')],_0xb625('0x64')),_0xb625('0x62'));var _0x58cdcb=ejs[_0xb625('0x5a')](_0x52cd2c,{'networks':_0xe330fc||[]});fs['writeFileSync'](_0xb625('0x65'),_0x58cdcb);return respondWithRpcPromise(_0xb625('0x5b'),_0xb625('0x2d'),{'module':_0xb625('0x58')});}else{var _0x213f03=fs[_0xb625('0x53')](path[_0xb625('0x54')](config[_0xb625('0x55')],'server/files/templates/network.ejs'),_0xb625('0x62'));var _0x5aa176=ejs[_0xb625('0x5a')](_0x213f03,{'networks':_0xe330fc||[]});fs[_0xb625('0x63')](util['format'](_0xb625('0x5f'),_0xc03539[_0xb625('0x50')][_0xb625('0x37')][_0xb625('0x60')]()),_0x5aa176);return respondWithRpcPromise('Reload','update',{'module':_0xb625('0x61')});}return null;})[_0xb625('0x2e')](function(_0x5ec731){if(_0x5ec731){return _0x3cc1d6;}return null;});})['then'](respondWithResult(_0x36ab19,null))[_0xb625('0x4d')](handleError(_0x36ab19,null));};exports[_0xb625('0x2f')]=function(_0x337336,_0x2e361e,_0x3a9b36){var _0x5df2c1;return db[_0xb625('0x34')]['find']({'where':{'id':_0x337336[_0xb625('0x47')]['id']}})[_0xb625('0x2e')](function(_0x3f9841){_0x5df2c1=_0x3f9841;return _0x3f9841;})[_0xb625('0x2e')](handleEntityNotFound(_0x2e361e,null))['then'](removeEntity(_0x2e361e,null))['then'](function(){if(_0x5df2c1){return db['Network']['findAll']({'where':{'type':_0x5df2c1[_0xb625('0x37')]},'raw':!![]});}})[_0xb625('0x2e')](function(_0x506b34){if(_0x5df2c1[_0xb625('0x37')][_0xb625('0x51')]()==_0xb625('0x52')){var _0x21f248=fs[_0xb625('0x53')](path[_0xb625('0x54')](config[_0xb625('0x55')],_0xb625('0x56')),_0xb625('0x62'));var _0x36c1e1=ejs[_0xb625('0x5a')](_0x21f248,{'networks':_0x506b34||[]});fs[_0xb625('0x63')](_0xb625('0x57'),_0x36c1e1);return respondWithRpcPromise('Reload',_0xb625('0x2f'),{'module':_0xb625('0x58')});}else if(_0x5df2c1[_0xb625('0x37')][_0xb625('0x51')]()=='TURN'){var _0x4f33e3=fs[_0xb625('0x53')](path[_0xb625('0x54')](config[_0xb625('0x55')],_0xb625('0x64')),_0xb625('0x62'));var _0x304dd4=ejs[_0xb625('0x5a')](_0x4f33e3,{'networks':_0x506b34||[]});fs[_0xb625('0x63')](_0xb625('0x65'),_0x304dd4);return respondWithRpcPromise(_0xb625('0x5b'),'destroy',{'module':_0xb625('0x58')});}else{var _0x32e7b7=fs['readFileSync'](path[_0xb625('0x54')](config[_0xb625('0x55')],_0xb625('0x5d')),_0xb625('0x62'));var _0x26de0e=ejs[_0xb625('0x5a')](_0x32e7b7,{'networks':_0x506b34||[]});fs[_0xb625('0x63')](util['format']('/etc/asterisk/sip_xcally_%s.conf',_0x337336[_0xb625('0x50')]['type']['toLowerCase']()),_0x26de0e);return respondWithRpcPromise(_0xb625('0x5b'),_0xb625('0x2f'),{'module':_0xb625('0x61')});}return null;})[_0xb625('0x4d')](handleError(_0x2e361e,null));};