0d374c3d5db400cd62420fa9c2554cf65a5ee4fe
[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 _0xa7ee=['rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','count','includeAll','findAll','rows','show','params','keys','find','transaction','create','body','toUpperCase','STUN','readFileSync','join','root','server/files/templates/stun_multiple.ejs','utf8','render','writeFileSync','/etc/asterisk/stun_xcally.conf','res_stun_monitor.so','TURN','server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','Reload','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','client','http','test','Sequelize','ValidationError','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','request','then','info','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code','Network,\x20%s,\x20%s','message','catch','sendStatus','json','offset','limit','status','set','Content-Range','apply','reject','update','destroy','end','stack','name','send','index','map','Network'];(function(_0x1c9f90,_0x538898){var _0x2e0c4c=function(_0x458786){while(--_0x458786){_0x1c9f90['push'](_0x1c9f90['shift']());}};_0x2e0c4c(++_0x538898);}(_0xa7ee,0x119));var _0xea7e=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0xa7ee[_0x2b10c6];return _0x3789d2;};'use strict';var pdf=require(_0xea7e('0x0'));var emlformat=require(_0xea7e('0x1'));var rimraf=require(_0xea7e('0x2'));var zipdir=require(_0xea7e('0x3'));var jsonpatch=require(_0xea7e('0x4'));var rp=require(_0xea7e('0x5'));var moment=require(_0xea7e('0x6'));var BPromise=require(_0xea7e('0x7'));var Mustache=require(_0xea7e('0x8'));var util=require(_0xea7e('0x9'));var path=require(_0xea7e('0xa'));var sox=require(_0xea7e('0xb'));var csv=require(_0xea7e('0xc'));var ejs=require(_0xea7e('0xd'));var fs=require('fs');var _=require(_0xea7e('0xe'));var squel=require('squel');var crypto=require(_0xea7e('0xf'));var jsforce=require(_0xea7e('0x10'));var deskjs=require(_0xea7e('0x11'));var toCsv=require(_0xea7e('0xc'));var querystring=require(_0xea7e('0x12'));var Papa=require(_0xea7e('0x13'));var Redis=require(_0xea7e('0x14'));var authService=require('../../components/auth/service');var qs=require(_0xea7e('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xea7e('0x16'));var logger=require(_0xea7e('0x17'))('api');var utils=require(_0xea7e('0x18'));var config=require(_0xea7e('0x19'));var db=require(_0xea7e('0x1a'))['db'];var jayson=require(_0xea7e('0x1b'));var client=jayson[_0xea7e('0x1c')][_0xea7e('0x1d')]({'port':0x232a});function checkPasswordPattern(_0x4454e8,_0x112beb,_0x40c17c){if(_0x40c17c){var _0x5cfcd8=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(_0x5cfcd8[_0xea7e('0x1e')](_0x112beb)){return _0x4454e8;}else{throw new db[(_0xea7e('0x1f'))][(_0xea7e('0x20'))](_0xea7e('0x21'));}}else{return _0x4454e8;}}function respondWithRpcPromise(_0x57868e,_0xcf30d2,_0x31ae12,_0x57251f){return new BPromise(function(_0x2d1b65,_0xbf2ba2){var _0x1ec2ef=_0x57251f||client;return _0x1ec2ef[_0xea7e('0x22')](_0x57868e,_0x31ae12)[_0xea7e('0x23')](function(_0x11344e){logger[_0xea7e('0x24')]('Network,\x20%s,\x20%s',_0xcf30d2,_0xea7e('0x25'));logger[_0xea7e('0x26')](_0xea7e('0x27'),_0xcf30d2,_0xea7e('0x25'),JSON[_0xea7e('0x28')](_0x11344e));if(_0x11344e[_0xea7e('0x29')]){if(_0x11344e[_0xea7e('0x29')][_0xea7e('0x2a')]===0x1f4){logger[_0xea7e('0x29')](_0xea7e('0x2b'),_0xcf30d2,_0x11344e[_0xea7e('0x29')][_0xea7e('0x2c')]);return _0xbf2ba2(_0x11344e[_0xea7e('0x29')][_0xea7e('0x2c')]);}logger[_0xea7e('0x29')](_0xea7e('0x2b'),_0xcf30d2,_0x11344e[_0xea7e('0x29')][_0xea7e('0x2c')]);return _0x2d1b65(_0x11344e['error'][_0xea7e('0x2c')]);}else{logger['info'](_0xea7e('0x2b'),_0xcf30d2,_0xea7e('0x25'));_0x2d1b65(_0x11344e['result'][_0xea7e('0x2c')]);}})[_0xea7e('0x2d')](function(_0xf86a2f){logger[_0xea7e('0x29')]('Network,\x20%s,\x20%s',_0xcf30d2,_0xf86a2f);_0xbf2ba2(_0xf86a2f);});});}function respondWithStatusCode(_0x1cc8d6,_0x1c4590){_0x1c4590=_0x1c4590||0xcc;return function(_0x1fe1d3){if(_0x1fe1d3){return _0x1cc8d6[_0xea7e('0x2e')](_0x1c4590);}return _0x1cc8d6['status'](_0x1c4590)['end']();};}function respondWithResult(_0x193dac,_0x2fbc22){_0x2fbc22=_0x2fbc22||0xc8;return function(_0x2a5925){if(_0x2a5925){return _0x193dac['status'](_0x2fbc22)[_0xea7e('0x2f')](_0x2a5925);}};}function respondWithFilteredResult(_0x47b635,_0x21641){return function(_0x574c13){if(_0x574c13){var _0x38e865=_0x574c13['count'],_0x1c1720=_0x21641[_0xea7e('0x30')],_0x3090ba=_0x21641[_0xea7e('0x30')]+_0x21641[_0xea7e('0x31')],_0x3b30b4;if(_0x3090ba>=_0x38e865){_0x3090ba=_0x38e865;_0x3b30b4=0xc8;}else{_0x3b30b4=0xce;}_0x47b635[_0xea7e('0x32')](_0x3b30b4);return _0x47b635[_0xea7e('0x33')](_0xea7e('0x34'),_0x1c1720+'-'+_0x3090ba+'/'+_0x38e865)[_0xea7e('0x2f')](_0x574c13);}return null;};}function patchUpdates(_0x5d016a){return function(_0x5df56a){try{jsonpatch[_0xea7e('0x35')](_0x5df56a,_0x5d016a,!![]);}catch(_0x5838b3){return BPromise[_0xea7e('0x36')](_0x5838b3);}return _0x5df56a['save']();};}function saveUpdates(_0x125e5c,_0x2fb76b){return function(_0xef1847){if(_0xef1847){return _0xef1847[_0xea7e('0x37')](_0x125e5c)['then'](function(_0x1f98fd){return _0x1f98fd;});}return null;};}function removeEntity(_0x1fe81f,_0x460fd9){return function(_0x16e7cf){if(_0x16e7cf){return _0x16e7cf[_0xea7e('0x38')]()['then'](function(){_0x1fe81f['status'](0xcc)[_0xea7e('0x39')]();});}};}function handleEntityNotFound(_0x36d346,_0x2618e6){return function(_0x162d2a){if(!_0x162d2a){_0x36d346[_0xea7e('0x2e')](0x194);}return _0x162d2a;};}function handleError(_0x139ea1,_0x24c5e1){_0x24c5e1=_0x24c5e1||0x1f4;return function(_0x16f809){logger['error'](_0x16f809[_0xea7e('0x3a')]);if(_0x16f809[_0xea7e('0x3b')]){delete _0x16f809[_0xea7e('0x3b')];}_0x139ea1[_0xea7e('0x32')](_0x24c5e1)[_0xea7e('0x3c')](_0x16f809);};}exports[_0xea7e('0x3d')]=function(_0x40007d,_0xf993fc){var _0x4974df={},_0x265b0a={},_0x180e3d={'count':0x0,'rows':[]};var _0x151074=_[_0xea7e('0x3e')](db[_0xea7e('0x3f')][_0xea7e('0x40')],function(_0x3735b8){return{'name':_0x3735b8[_0xea7e('0x41')],'type':_0x3735b8[_0xea7e('0x42')][_0xea7e('0x43')]};});_0x265b0a[_0xea7e('0x44')]=_['map'](_0x151074,'name');_0x265b0a[_0xea7e('0x45')]=_['keys'](_0x40007d[_0xea7e('0x45')]);_0x265b0a[_0xea7e('0x46')]=_[_0xea7e('0x47')](_0x265b0a['model'],_0x265b0a[_0xea7e('0x45')]);_0x4974df[_0xea7e('0x48')]=_[_0xea7e('0x47')](_0x265b0a[_0xea7e('0x44')],qs[_0xea7e('0x49')](_0x40007d[_0xea7e('0x45')][_0xea7e('0x49')]));_0x4974df['attributes']=_0x4974df[_0xea7e('0x48')][_0xea7e('0x4a')]?_0x4974df[_0xea7e('0x48')]:_0x265b0a[_0xea7e('0x44')];if(!_0x40007d['query'][_0xea7e('0x4b')]('nolimit')){_0x4974df['limit']=qs['limit'](_0x40007d[_0xea7e('0x45')]['limit']);_0x4974df[_0xea7e('0x30')]=qs['offset'](_0x40007d['query'][_0xea7e('0x30')]);}_0x4974df[_0xea7e('0x4c')]=qs[_0xea7e('0x4d')](_0x40007d['query'][_0xea7e('0x4d')]);_0x4974df[_0xea7e('0x4e')]=qs[_0xea7e('0x46')](_[_0xea7e('0x4f')](_0x40007d['query'],_0x265b0a[_0xea7e('0x46')]),_0x151074);if(_0x40007d[_0xea7e('0x45')][_0xea7e('0x50')]){_0x4974df[_0xea7e('0x4e')]=_[_0xea7e('0x51')](_0x4974df[_0xea7e('0x4e')],{'$or':_[_0xea7e('0x3e')](_0x151074,function(_0x543407){if(_0x543407['type']!==_0xea7e('0x52')){var _0x442098={};_0x442098[_0x543407[_0xea7e('0x3b')]]={'$like':'%'+_0x40007d['query'][_0xea7e('0x50')]+'%'};return _0x442098;}})});}_0x4974df=_[_0xea7e('0x51')]({},_0x4974df,_0x40007d[_0xea7e('0x53')]);var _0x377be1={'where':_0x4974df[_0xea7e('0x4e')]};return db[_0xea7e('0x3f')][_0xea7e('0x54')](_0x377be1)['then'](function(_0x3a56be){_0x180e3d[_0xea7e('0x54')]=_0x3a56be;if(_0x40007d[_0xea7e('0x45')][_0xea7e('0x55')]){_0x4974df['include']=[{'all':!![]}];}return db['Network'][_0xea7e('0x56')](_0x4974df);})[_0xea7e('0x23')](function(_0x24f59d){_0x180e3d[_0xea7e('0x57')]=_0x24f59d;return _0x180e3d;})[_0xea7e('0x23')](respondWithFilteredResult(_0xf993fc,_0x4974df))['catch'](handleError(_0xf993fc,null));};exports[_0xea7e('0x58')]=function(_0x476002,_0x4ae8cc){var _0x44e244={'raw':!![],'where':{'id':_0x476002[_0xea7e('0x59')]['id']}},_0x4fc19b={};_0x4fc19b[_0xea7e('0x44')]=_[_0xea7e('0x5a')](db['Network'][_0xea7e('0x40')]);_0x4fc19b[_0xea7e('0x45')]=_['keys'](_0x476002[_0xea7e('0x45')]);_0x4fc19b[_0xea7e('0x46')]=_['intersection'](_0x4fc19b[_0xea7e('0x44')],_0x4fc19b[_0xea7e('0x45')]);_0x44e244[_0xea7e('0x48')]=_[_0xea7e('0x47')](_0x4fc19b[_0xea7e('0x44')],qs[_0xea7e('0x49')](_0x476002[_0xea7e('0x45')][_0xea7e('0x49')]));_0x44e244[_0xea7e('0x48')]=_0x44e244[_0xea7e('0x48')][_0xea7e('0x4a')]?_0x44e244[_0xea7e('0x48')]:_0x4fc19b['model'];if(_0x476002['query'][_0xea7e('0x55')]){_0x44e244['include']=[{'all':!![]}];}_0x44e244=_[_0xea7e('0x51')]({},_0x44e244,_0x476002[_0xea7e('0x53')]);return db[_0xea7e('0x3f')][_0xea7e('0x5b')](_0x44e244)[_0xea7e('0x23')](handleEntityNotFound(_0x4ae8cc,null))[_0xea7e('0x23')](respondWithResult(_0x4ae8cc,null))[_0xea7e('0x2d')](handleError(_0x4ae8cc,null));};exports['create']=function(_0x446948,_0x2b1093,_0x21c084){var _0x2697c5;return db['sequelize'][_0xea7e('0x5c')](function(_0x503ac0){return db[_0xea7e('0x3f')][_0xea7e('0x5d')](_0x446948[_0xea7e('0x5e')],{'raw':!![]})[_0xea7e('0x23')](function(_0x3ae78c){_0x2697c5=_0x3ae78c;return db[_0xea7e('0x3f')][_0xea7e('0x56')]({'where':{'type':_0x446948[_0xea7e('0x5e')]['type']},'raw':!![]});})['then'](function(_0x280126){if(_0x2697c5[_0xea7e('0x42')][_0xea7e('0x5f')]()==_0xea7e('0x60')){var _0x96d05c=fs[_0xea7e('0x61')](path[_0xea7e('0x62')](config[_0xea7e('0x63')],_0xea7e('0x64')),_0xea7e('0x65'));var _0x94625d=ejs[_0xea7e('0x66')](_0x96d05c,{'networks':_0x280126||[]});fs[_0xea7e('0x67')](_0xea7e('0x68'),_0x94625d);return respondWithRpcPromise('Reload','create',{'module':_0xea7e('0x69')});}else if(_0x2697c5[_0xea7e('0x42')][_0xea7e('0x5f')]()==_0xea7e('0x6a')){var _0x31f1a0=fs[_0xea7e('0x61')](path['join'](config[_0xea7e('0x63')],_0xea7e('0x6b')),'utf8');var _0x57ab4d=ejs[_0xea7e('0x66')](_0x31f1a0,{'networks':_0x280126||[]});fs['writeFileSync'](_0xea7e('0x6c'),_0x57ab4d);return respondWithRpcPromise(_0xea7e('0x6d'),'create',{'module':_0xea7e('0x69')});}else{var _0xbd5b11=fs[_0xea7e('0x61')](path[_0xea7e('0x62')](config['root'],_0xea7e('0x6e')),_0xea7e('0x65'));var _0x38edbb=ejs['render'](_0xbd5b11,{'networks':_0x280126||[]});fs['writeFileSync'](util[_0xea7e('0x6f')](_0xea7e('0x70'),_0x446948[_0xea7e('0x5e')][_0xea7e('0x42')][_0xea7e('0x71')]()),_0x38edbb);return respondWithRpcPromise(_0xea7e('0x6d'),_0xea7e('0x5d'),{'module':'chan_sip.so'});}return null;})[_0xea7e('0x23')](function(){return _0x2697c5;});})[_0xea7e('0x23')](respondWithResult(_0x2b1093,0xc9))['catch'](handleError(_0x2b1093,null));};exports[_0xea7e('0x37')]=function(_0x5d0e8e,_0x1a4548,_0x30cd9c){var _0x5aa1ee;return db['sequelize']['transaction'](function(_0x11fba3){return db[_0xea7e('0x3f')][_0xea7e('0x5b')]({'where':{'id':_0x5d0e8e['params']['id']}})[_0xea7e('0x23')](handleEntityNotFound(_0x1a4548,null))['then'](saveUpdates(_0x5d0e8e[_0xea7e('0x5e')],null))[_0xea7e('0x23')](function(_0x32628d){if(_0x32628d){_0x5aa1ee=_0x32628d;return db[_0xea7e('0x3f')][_0xea7e('0x56')]({'where':{'type':_0x5aa1ee[_0xea7e('0x42')]},'raw':!![]});}return null;})['then'](function(_0x59459d){if(_0x5aa1ee['type'][_0xea7e('0x5f')]()==_0xea7e('0x60')){var _0x532063=fs['readFileSync'](path[_0xea7e('0x62')](config['root'],_0xea7e('0x64')),_0xea7e('0x65'));var _0x2a9bb4=ejs['render'](_0x532063,{'networks':_0x59459d||[]});fs['writeFileSync']('/etc/asterisk/stun_xcally.conf',_0x2a9bb4);return respondWithRpcPromise('Reload',_0xea7e('0x37'),{'module':'res_stun_monitor.so'});}else if(_0x5aa1ee['type'][_0xea7e('0x5f')]()=='TURN'){var _0x3a9961=fs['readFileSync'](path[_0xea7e('0x62')](config[_0xea7e('0x63')],_0xea7e('0x6b')),_0xea7e('0x65'));var _0x15bd25=ejs[_0xea7e('0x66')](_0x3a9961,{'networks':_0x59459d||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0x15bd25);return respondWithRpcPromise(_0xea7e('0x6d'),_0xea7e('0x37'),{'module':'res_stun_monitor.so'});}else{var _0x2cc1b3=fs[_0xea7e('0x61')](path['join'](config['root'],_0xea7e('0x6e')),_0xea7e('0x65'));var _0x4867da=ejs['render'](_0x2cc1b3,{'networks':_0x59459d||[]});fs[_0xea7e('0x67')](util[_0xea7e('0x6f')](_0xea7e('0x70'),_0x5d0e8e[_0xea7e('0x5e')][_0xea7e('0x42')][_0xea7e('0x71')]()),_0x4867da);return respondWithRpcPromise(_0xea7e('0x6d'),_0xea7e('0x37'),{'module':_0xea7e('0x72')});}return null;})[_0xea7e('0x23')](function(_0x3cec81){if(_0x3cec81){return _0x5aa1ee;}return null;});})[_0xea7e('0x23')](respondWithResult(_0x1a4548,null))['catch'](handleError(_0x1a4548,null));};exports['destroy']=function(_0x108ee9,_0x245322,_0x470122){var _0x12d496;return db['Network'][_0xea7e('0x5b')]({'where':{'id':_0x108ee9['params']['id']}})['then'](function(_0x30801c){_0x12d496=_0x30801c;return _0x30801c;})[_0xea7e('0x23')](handleEntityNotFound(_0x245322,null))[_0xea7e('0x23')](removeEntity(_0x245322,null))[_0xea7e('0x23')](function(){if(_0x12d496){return db[_0xea7e('0x3f')]['findAll']({'where':{'type':_0x12d496[_0xea7e('0x42')]},'raw':!![]});}})[_0xea7e('0x23')](function(_0xeade9){if(_0x12d496['type']['toUpperCase']()=='STUN'){var _0x58d025=fs['readFileSync'](path[_0xea7e('0x62')](config[_0xea7e('0x63')],_0xea7e('0x64')),'utf8');var _0x1e708f=ejs[_0xea7e('0x66')](_0x58d025,{'networks':_0xeade9||[]});fs[_0xea7e('0x67')](_0xea7e('0x68'),_0x1e708f);return respondWithRpcPromise(_0xea7e('0x6d'),_0xea7e('0x38'),{'module':'res_stun_monitor.so'});}else if(_0x12d496[_0xea7e('0x42')][_0xea7e('0x5f')]()==_0xea7e('0x6a')){var _0x2a289f=fs[_0xea7e('0x61')](path[_0xea7e('0x62')](config[_0xea7e('0x63')],_0xea7e('0x6b')),'utf8');var _0xcb53db=ejs[_0xea7e('0x66')](_0x2a289f,{'networks':_0xeade9||[]});fs[_0xea7e('0x67')]('/etc/asterisk/turn_xcally.conf',_0xcb53db);return respondWithRpcPromise(_0xea7e('0x6d'),'destroy',{'module':_0xea7e('0x69')});}else{var _0x42e208=fs['readFileSync'](path[_0xea7e('0x62')](config[_0xea7e('0x63')],_0xea7e('0x6e')),_0xea7e('0x65'));var _0x1f8517=ejs[_0xea7e('0x66')](_0x42e208,{'networks':_0xeade9||[]});fs[_0xea7e('0x67')](util['format'](_0xea7e('0x70'),_0x108ee9[_0xea7e('0x5e')][_0xea7e('0x42')][_0xea7e('0x71')]()),_0x1f8517);return respondWithRpcPromise('Reload',_0xea7e('0x38'),{'module':_0xea7e('0x72')});}return null;})['catch'](handleError(_0x245322,null));};