Built motion from commit d5e4af8c.|2.6.23
[motion2.git] / server / api / plugin / plugin.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 _0xc8a9=['Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','icon','test','Warning:\x20admin\x20view\x20not\x20specified','agent','plugins','Warning:\x20agent\x20view\x20not\x20specified','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','autoAssociation','UserProfileResource','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','update','webhookGet','\x27PATH\x27\x20parameter\x20not\x20specified','port','hostname','http://localhost:','encoding','method','%s%s','headers','content-length','content-type','set','endsWith','statusCode','webhookPost','resolve','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','extract-zip','archiver','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./plugin.socket','status','end','json','undefined','count','offset','limit','Content-Range','apply','reject','save','then','get','destroy','sendStatus','error','send','map','Plugin','fieldName','type','name','query','filters','model','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','include','findAll','rows','show','params','keys','rawAttributes','includeAll','find','catch','download','path','root','server/files/plugins','format','zip','warning','code','Sequelize','Error\x20while\x20generating\x20the\x20zip\x20archive','glob','**/*','join','dirname','basename','node_modules/**/*','attachments/**/*','finalize','close','existsSync','Plugin\x20not\x20found','%s.zip','Error','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','Download\x20completed','upload','file','filename','extname','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','0777','readdirSync','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','some','manifest.json','Plugin\x20manifest\x20missing','readFileSync','parse','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','Invalid\x20manifest:\x20parameters\x20missing','html','parameters','views','admin','script','scriptName'];(function(_0x39d481,_0x23c1a2){var _0x3b22d0=function(_0xea81e6){while(--_0xea81e6){_0x39d481['push'](_0x39d481['shift']());}};_0x3b22d0(++_0x23c1a2);}(_0xc8a9,0xd8));var _0x9c8a=function(_0x1dbb78,_0x363527){_0x1dbb78=_0x1dbb78-0x0;var _0x97030a=_0xc8a9[_0x1dbb78];return _0x97030a;};'use strict';var emlformat=require(_0x9c8a('0x0'));var rimraf=require(_0x9c8a('0x1'));var zipdir=require(_0x9c8a('0x2'));var jsonpatch=require(_0x9c8a('0x3'));var rp=require(_0x9c8a('0x4'));var moment=require(_0x9c8a('0x5'));var BPromise=require(_0x9c8a('0x6'));var Mustache=require(_0x9c8a('0x7'));var util=require(_0x9c8a('0x8'));var path=require('path');var sox=require(_0x9c8a('0x9'));var csv=require(_0x9c8a('0xa'));var ejs=require(_0x9c8a('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x9c8a('0xc'));var crypto=require(_0x9c8a('0xd'));var jsforce=require(_0x9c8a('0xe'));var deskjs=require(_0x9c8a('0xf'));var toCsv=require('to-csv');var querystring=require(_0x9c8a('0x10'));var Papa=require(_0x9c8a('0x11'));var extract=require(_0x9c8a('0x12'));var rimraf=require(_0x9c8a('0x1'));var archiver=require(_0x9c8a('0x13'));var Redis=require(_0x9c8a('0x14'));var authService=require(_0x9c8a('0x15'));var qs=require(_0x9c8a('0x16'));var as=require(_0x9c8a('0x17'));var hardwareService=require(_0x9c8a('0x18'));var logger=require(_0x9c8a('0x19'))(_0x9c8a('0x1a'));var utils=require(_0x9c8a('0x1b'));var config=require(_0x9c8a('0x1c'));var licenseUtil=require('../../config/license/util');var db=require(_0x9c8a('0x1d'))['db'];config['redis']=_[_0x9c8a('0x1e')](config[_0x9c8a('0x1f')],{'host':_0x9c8a('0x20'),'port':0x18eb});var socket=require(_0x9c8a('0x21'))(new Redis(config['redis']));require(_0x9c8a('0x22'))['register'](socket);function respondWithStatusCode(_0x497f58,_0x421690){_0x421690=_0x421690||0xcc;return function(_0x4b730f){if(_0x4b730f){return _0x497f58['sendStatus'](_0x421690);}return _0x497f58[_0x9c8a('0x23')](_0x421690)[_0x9c8a('0x24')]();};}function respondWithResult(_0x4d7b8c,_0x47fe1){_0x47fe1=_0x47fe1||0xc8;return function(_0x1c2334){if(_0x1c2334){return _0x4d7b8c[_0x9c8a('0x23')](_0x47fe1)[_0x9c8a('0x25')](_0x1c2334);}};}function respondWithFilteredResult(_0x48185e,_0x7c89bb){return function(_0x25abe9){if(_0x25abe9){var _0x430698=typeof _0x7c89bb['offset']===_0x9c8a('0x26')&&typeof _0x7c89bb['limit']==='undefined';var _0x3e7456=_0x25abe9[_0x9c8a('0x27')];var _0x53b273=_0x430698?0x0:_0x7c89bb[_0x9c8a('0x28')];var _0x2c1450=_0x430698?_0x25abe9['count']:_0x7c89bb[_0x9c8a('0x28')]+_0x7c89bb[_0x9c8a('0x29')];var _0x1ee284;if(_0x2c1450>=_0x3e7456){_0x2c1450=_0x3e7456;_0x1ee284=0xc8;}else{_0x1ee284=0xce;}_0x48185e[_0x9c8a('0x23')](_0x1ee284);return _0x48185e['set'](_0x9c8a('0x2a'),_0x53b273+'-'+_0x2c1450+'/'+_0x3e7456)['json'](_0x25abe9);}return null;};}function patchUpdates(_0x552f3a){return function(_0x5cd2f0){try{jsonpatch[_0x9c8a('0x2b')](_0x5cd2f0,_0x552f3a,!![]);}catch(_0x2d6b4e){return BPromise[_0x9c8a('0x2c')](_0x2d6b4e);}return _0x5cd2f0[_0x9c8a('0x2d')]();};}function saveUpdates(_0x1b493c,_0xb8aca2){return function(_0x220ad6){if(_0x220ad6){return _0x220ad6['update'](_0x1b493c)[_0x9c8a('0x2e')](function(_0x46b567){return _0x46b567;});}return null;};}function removeEntity(_0x1cfd04,_0x509dd0){return function(_0x478aac){if(_0x478aac){return _0x478aac['destroy']()[_0x9c8a('0x2e')](function(){var _0x46d2cd=_0x478aac[_0x9c8a('0x2f')]({'plain':!![]});var _0x453377='Plugins';return db['UserProfileResource'][_0x9c8a('0x30')]({'where':{'type':_0x453377,'resourceId':_0x46d2cd['id']}})[_0x9c8a('0x2e')](function(){return _0x478aac;});})['then'](function(){_0x1cfd04[_0x9c8a('0x23')](0xcc)[_0x9c8a('0x24')]();});}};}function handleEntityNotFound(_0x4c61ba,_0x215f8e){return function(_0x5b348e){if(!_0x5b348e){_0x4c61ba[_0x9c8a('0x31')](0x194);}return _0x5b348e;};}function handleError(_0x3763c4,_0x2e864b){_0x2e864b=_0x2e864b||0x1f4;return function(_0x4f28f1){logger[_0x9c8a('0x32')](_0x4f28f1['stack']);if(_0x4f28f1['name']){delete _0x4f28f1['name'];}_0x3763c4[_0x9c8a('0x23')](_0x2e864b)[_0x9c8a('0x33')](_0x4f28f1);};}exports['index']=function(_0x321866,_0x3663dd){var _0x11d063={},_0x31b70d={},_0x4d2b4f={'count':0x0,'rows':[]};var _0xc62998=_[_0x9c8a('0x34')](db[_0x9c8a('0x35')]['rawAttributes'],function(_0x586ffe){return{'name':_0x586ffe[_0x9c8a('0x36')],'type':_0x586ffe[_0x9c8a('0x37')]['key']};});_0x31b70d['model']=_[_0x9c8a('0x34')](_0xc62998,_0x9c8a('0x38'));_0x31b70d[_0x9c8a('0x39')]=_['keys'](_0x321866['query']);_0x31b70d[_0x9c8a('0x3a')]=_['intersection'](_0x31b70d[_0x9c8a('0x3b')],_0x31b70d[_0x9c8a('0x39')]);_0x11d063['attributes']=_[_0x9c8a('0x3c')](_0x31b70d[_0x9c8a('0x3b')],qs[_0x9c8a('0x3d')](_0x321866['query'][_0x9c8a('0x3d')]));_0x11d063[_0x9c8a('0x3e')]=_0x11d063[_0x9c8a('0x3e')][_0x9c8a('0x3f')]?_0x11d063['attributes']:_0x31b70d[_0x9c8a('0x3b')];if(!_0x321866['query'][_0x9c8a('0x40')](_0x9c8a('0x41'))){_0x11d063[_0x9c8a('0x29')]=qs['limit'](_0x321866[_0x9c8a('0x39')][_0x9c8a('0x29')]);_0x11d063[_0x9c8a('0x28')]=qs['offset'](_0x321866['query']['offset']);}_0x11d063['order']=qs['sort'](_0x321866[_0x9c8a('0x39')][_0x9c8a('0x42')]);_0x11d063[_0x9c8a('0x43')]=qs[_0x9c8a('0x3a')](_[_0x9c8a('0x44')](_0x321866['query'],_0x31b70d[_0x9c8a('0x3a')]),_0xc62998);if(_0x321866[_0x9c8a('0x39')][_0x9c8a('0x45')]){_0x11d063[_0x9c8a('0x43')]=_[_0x9c8a('0x46')](_0x11d063[_0x9c8a('0x43')],{'$or':_['map'](_0xc62998,function(_0x48cdb6){if(_0x48cdb6[_0x9c8a('0x37')]!=='VIRTUAL'){var _0x2069c8={};_0x2069c8[_0x48cdb6[_0x9c8a('0x38')]]={'$like':'%'+_0x321866[_0x9c8a('0x39')][_0x9c8a('0x45')]+'%'};return _0x2069c8;}})});}_0x11d063=_['merge']({},_0x11d063,_0x321866['options']);var _0x418fab={'where':_0x11d063['where']};return db['Plugin']['count'](_0x418fab)[_0x9c8a('0x2e')](function(_0x3fbf96){_0x4d2b4f[_0x9c8a('0x27')]=_0x3fbf96;if(_0x321866[_0x9c8a('0x39')]['includeAll']){_0x11d063[_0x9c8a('0x47')]=[{'all':!![]}];}return db[_0x9c8a('0x35')][_0x9c8a('0x48')](_0x11d063);})[_0x9c8a('0x2e')](function(_0x59eec4){_0x4d2b4f[_0x9c8a('0x49')]=_0x59eec4;return _0x4d2b4f;})[_0x9c8a('0x2e')](respondWithFilteredResult(_0x3663dd,_0x11d063))['catch'](handleError(_0x3663dd,null));};exports[_0x9c8a('0x4a')]=function(_0x1993cc,_0x2e5029){var _0x3352fb={'raw':!![],'where':{'id':_0x1993cc[_0x9c8a('0x4b')]['id']}},_0x28d2b1={};_0x28d2b1[_0x9c8a('0x3b')]=_[_0x9c8a('0x4c')](db[_0x9c8a('0x35')][_0x9c8a('0x4d')]);_0x28d2b1['query']=_['keys'](_0x1993cc[_0x9c8a('0x39')]);_0x28d2b1[_0x9c8a('0x3a')]=_[_0x9c8a('0x3c')](_0x28d2b1[_0x9c8a('0x3b')],_0x28d2b1[_0x9c8a('0x39')]);_0x3352fb[_0x9c8a('0x3e')]=_['intersection'](_0x28d2b1['model'],qs[_0x9c8a('0x3d')](_0x1993cc[_0x9c8a('0x39')][_0x9c8a('0x3d')]));_0x3352fb[_0x9c8a('0x3e')]=_0x3352fb[_0x9c8a('0x3e')][_0x9c8a('0x3f')]?_0x3352fb['attributes']:_0x28d2b1[_0x9c8a('0x3b')];if(_0x1993cc[_0x9c8a('0x39')][_0x9c8a('0x4e')]){_0x3352fb['include']=[{'all':!![]}];}_0x3352fb=_[_0x9c8a('0x46')]({},_0x3352fb,_0x1993cc['options']);return db[_0x9c8a('0x35')][_0x9c8a('0x4f')](_0x3352fb)['then'](handleEntityNotFound(_0x2e5029,null))[_0x9c8a('0x2e')](respondWithResult(_0x2e5029,null))[_0x9c8a('0x50')](handleError(_0x2e5029,null));};exports[_0x9c8a('0x51')]=function(_0x179c96,_0x397083,_0x28039b){return db['Plugin'][_0x9c8a('0x4f')]({'where':{'id':_0x179c96[_0x9c8a('0x4b')]['id']},'attributes':[_0x9c8a('0x38'),_0x9c8a('0x52')],'raw':!![]})[_0x9c8a('0x2e')](handleEntityNotFound(_0x397083,null))[_0x9c8a('0x2e')](function(_0x1f9234){if(_0x1f9234){var _0x4b7b87=path['join'](config[_0x9c8a('0x53')],_0x9c8a('0x54'),util[_0x9c8a('0x55')]('%s.zip',path['basename'](_0x1f9234[_0x9c8a('0x52')])));var _0xce55d5=fs['createWriteStream'](_0x4b7b87);var _0x34d40c=archiver(_0x9c8a('0x56'),{'zlib':{'level':0x9}});_0x34d40c['on'](_0x9c8a('0x57'),function(_0x24d860){if(_0x24d860[_0x9c8a('0x58')]==='ENOENT'){logger[_0x9c8a('0x32')](_0x24d860);}else{throw new db['Sequelize']['Error']('Error\x20while\x20generating\x20the\x20zip\x20archive');}});_0x34d40c['on'](_0x9c8a('0x32'),function(_0x5b37b8){throw new db[(_0x9c8a('0x59'))]['Error'](_0x9c8a('0x5a'));});_0x34d40c['pipe'](_0xce55d5);_0x34d40c[_0x9c8a('0x5b')](_0x9c8a('0x5c'),{'cwd':path[_0x9c8a('0x5d')](config[_0x9c8a('0x53')],_0x9c8a('0x54'),path[_0x9c8a('0x5e')](_0x1f9234['path'])),'ignore':[path[_0x9c8a('0x5d')](path[_0x9c8a('0x5f')](_0x1f9234[_0x9c8a('0x52')]),_0x9c8a('0x60')),path['join'](path[_0x9c8a('0x5f')](_0x1f9234[_0x9c8a('0x52')]),_0x9c8a('0x61'))],'nodir':!![]})[_0x9c8a('0x62')]();_0xce55d5['on'](_0x9c8a('0x63'),function(){if(!fs[_0x9c8a('0x64')](_0x4b7b87)){throw new db[(_0x9c8a('0x59'))]['Error'](_0x9c8a('0x65'));}return _0x397083[_0x9c8a('0x51')](_0x4b7b87,util[_0x9c8a('0x55')](_0x9c8a('0x66'),path['basename'](_0x1f9234[_0x9c8a('0x52')])),function(_0x5c4d2e){if(_0x5c4d2e){throw new db[(_0x9c8a('0x59'))][(_0x9c8a('0x67'))](_0x9c8a('0x68'));}fs[_0x9c8a('0x69')](_0x4b7b87);logger[_0x9c8a('0x6a')](_0x9c8a('0x6b'));logger[_0x9c8a('0x6a')]('Temporary\x20file\x20removed');});});}return null;})['catch'](handleError(_0x397083,null));};exports[_0x9c8a('0x6c')]=function(_0x5a534b,_0x42fa7e,_0x203536){var _0x16c44c=path[_0x9c8a('0x5f')](_0x5a534b[_0x9c8a('0x6d')][_0x9c8a('0x6e')],path[_0x9c8a('0x6f')](_0x5a534b[_0x9c8a('0x6d')][_0x9c8a('0x6e')]));var _0xdea4ba=path[_0x9c8a('0x5d')](config[_0x9c8a('0x53')],'server/files/plugins',_0x5a534b[_0x9c8a('0x6d')][_0x9c8a('0x6e')]);var _0x42210a=path[_0x9c8a('0x5d')](config['root'],'server/files/plugins',_0x16c44c);logger[_0x9c8a('0x6a')](_0x9c8a('0x70'),_0xdea4ba);logger[_0x9c8a('0x6a')](_0x9c8a('0x71'),_0x42210a);try{fs['chmodSync'](_0xdea4ba,parseInt(_0x9c8a('0x72'),0x8));extract(_0xdea4ba,{'dir':_0x42210a},function(_0x1045bc){if(_0x1045bc){logger[_0x9c8a('0x32')](_0x1045bc);handleError(_0x1045bc,!![]);};var _0xa0b6f3=fs[_0x9c8a('0x73')](_0x42210a);if(_0xa0b6f3[_0x9c8a('0x3f')]>0x1){removeReferences(_0xdea4ba,_0x42210a);logger['error']('Invalid\x20plugin\x20structure');return _0x203536(new Error(_0x9c8a('0x74')));}var _0x3f0614=fs[_0x9c8a('0x75')](path[_0x9c8a('0x5d')](_0x42210a,_0xa0b6f3[0x0]));if(_0x3f0614[_0x9c8a('0x76')]()){removeReferences(_0xdea4ba,_0x42210a);logger[_0x9c8a('0x32')](_0x9c8a('0x74'));return _0x203536(new Error('Invalid\x20plugin\x20structure'));}if(_0x3f0614[_0x9c8a('0x77')]()){var _0x120ed6=fs[_0x9c8a('0x73')](path[_0x9c8a('0x5d')](_0x42210a,_0xa0b6f3[0x0]));if(_0x120ed6[_0x9c8a('0x3f')]===0x0){removeReferences(_0xdea4ba,_0x42210a);logger[_0x9c8a('0x32')](_0x9c8a('0x74'));return _0x203536(new Error(_0x9c8a('0x74')));}var _0x384c13=_0x120ed6[_0x9c8a('0x78')](function(_0x210da0){return _0x210da0===_0x9c8a('0x79');});if(!_0x384c13){return _0x203536(new Error(_0x9c8a('0x7a')));}var _0x6b22bc=fs[_0x9c8a('0x7b')](path['join'](_0x42210a,_0xa0b6f3[0x0],_0x9c8a('0x79')));var _0x3e519a=JSON[_0x9c8a('0x7c')](_0x6b22bc);if(_0x9c8a('0x26')==typeof _0x3e519a['name']){return _0x203536(new Error(_0x9c8a('0x7d')));}if(_0x9c8a('0x26')==typeof _0x3e519a[_0x9c8a('0x37')]){return _0x203536(new Error(_0x9c8a('0x7e')));}if(_0x9c8a('0x26')==typeof _0x3e519a[_0x9c8a('0x7f')]){return _0x203536(new Error(_0x9c8a('0x80')));}if(_0x9c8a('0x26')==typeof _0x3e519a['parameters']){return _0x203536(new Error(_0x9c8a('0x81')));}if(_0x3e519a[_0x9c8a('0x37')]===_0x9c8a('0x82')){if(_0x9c8a('0x26')==typeof _0x3e519a[_0x9c8a('0x83')][_0x9c8a('0x84')]){return _0x203536(new Error('Invalid\x20manifest:\x20views\x20missing'));}if(_0x9c8a('0x26')==typeof _0x3e519a['parameters'][_0x9c8a('0x84')][_0x9c8a('0x85')]&&_0x9c8a('0x26')==typeof _0x3e519a[_0x9c8a('0x83')][_0x9c8a('0x84')]['agent']){return _0x203536(new Error('Invalid\x20manifest:\x20no\x20view\x20specified'));}}else if(_0x3e519a[_0x9c8a('0x37')]===_0x9c8a('0x86')){if(_0x9c8a('0x26')==typeof _0x3e519a[_0x9c8a('0x83')][_0x9c8a('0x87')]){return _0x203536(new Error(_0x9c8a('0x88')));}if(_0x9c8a('0x26')==typeof _0x3e519a[_0x9c8a('0x83')][_0x9c8a('0x89')]){return _0x203536(new Error('Invalid\x20manifest:\x20script\x20path\x20missing'));}}else{return _0x203536(new Error(_0x9c8a('0x8a')));}var _0x3884e6=_0x3e519a[_0x9c8a('0x38')];var _0x53fe1a=_0x3e519a[_0x9c8a('0x8b')];var _0x3a1316=_0x3e519a[_0x9c8a('0x37')];var _0x3c1e77=_0x3e519a[_0x9c8a('0x8c')]?_0x3e519a['sidebar']:'always';var _0x1744ac=_0x3e519a[_0x9c8a('0x8d')]?_0x3e519a[_0x9c8a('0x8d')]:'icon-apps';var _0x9230fd='';var _0x506e37='';var _0x3f52ae='';var _0x14c9a8='';var _0x15554e=_0x3e519a[_0x9c8a('0x7f')];if(_0x3a1316===_0x9c8a('0x82')){if(_0x9c8a('0x26')!=typeof _0x3e519a['parameters'][_0x9c8a('0x84')][_0x9c8a('0x85')]){var _0x4912ae=_0x3e519a[_0x9c8a('0x83')]['views'][_0x9c8a('0x85')];if(!/^(f|ht)tps?:\/\//i[_0x9c8a('0x8e')](_0x4912ae)){_0x9230fd=path[_0x9c8a('0x5d')]('plugins',_0x16c44c,_0xa0b6f3[0x0],_0x4912ae);}else{_0x9230fd=_0x4912ae;}}else{logger[_0x9c8a('0x6a')](_0x9c8a('0x8f'));}if('undefined'!=typeof _0x3e519a[_0x9c8a('0x83')][_0x9c8a('0x84')]['agent']){var _0x2a61ff=_0x3e519a[_0x9c8a('0x83')]['views'][_0x9c8a('0x90')];if(!/^(f|ht)tps?:\/\//i[_0x9c8a('0x8e')](_0x2a61ff)){_0x506e37=path[_0x9c8a('0x5d')](_0x9c8a('0x91'),_0x16c44c,_0xa0b6f3[0x0],_0x2a61ff);}else{_0x506e37=_0x2a61ff;}}else{logger[_0x9c8a('0x6a')](_0x9c8a('0x92'));}}else if(_0x3a1316==='script'){_0x3f52ae=_0x3e519a[_0x9c8a('0x83')]['scriptName'];_0x14c9a8=_0x3e519a['parameters']['scriptPath'];if('undefined'!=typeof _0x3e519a[_0x9c8a('0x83')][_0x9c8a('0x84')]){if(_0x9c8a('0x26')!=typeof _0x3e519a[_0x9c8a('0x83')][_0x9c8a('0x84')][_0x9c8a('0x85')]){var _0x4912ae=_0x3e519a[_0x9c8a('0x83')]['views'][_0x9c8a('0x85')];if(!/^(f|ht)tps?:\/\//i[_0x9c8a('0x8e')](_0x4912ae)){_0x9230fd=path[_0x9c8a('0x5d')]('plugins',_0x16c44c,_0xa0b6f3[0x0],_0x4912ae);}else{_0x9230fd=_0x4912ae;}}if(_0x9c8a('0x26')!=typeof _0x3e519a[_0x9c8a('0x83')][_0x9c8a('0x84')]['agent']){var _0x2a61ff=_0x3e519a[_0x9c8a('0x83')][_0x9c8a('0x84')]['agent'];if(!/^(f|ht)tps?:\/\//i[_0x9c8a('0x8e')](_0x2a61ff)){_0x506e37=path[_0x9c8a('0x5d')](_0x9c8a('0x91'),_0x16c44c,_0xa0b6f3[0x0],_0x2a61ff);}else{_0x506e37=_0x2a61ff;}}}}var _0x58890d={'name':_0x3884e6,'description':_0x53fe1a,'path':path['join'](_0x16c44c,_0xa0b6f3[0x0]),'type':_0x3a1316,'sidebar':_0x3c1e77,'icon':_0x1744ac,'adminUrl':_0x9230fd,'agentUrl':_0x506e37,'scriptName':_0x3f52ae,'scriptPath':_0x14c9a8,'version':_0x15554e};removeReferences(_0xdea4ba,null);return db[_0x9c8a('0x35')]['create'](_0x58890d)[_0x9c8a('0x2e')](function(_0x47def6){var _0x1ea2cb={'role':_0x5a534b[_0x9c8a('0x93')][_0x9c8a('0x94')],'userProfileId':_0x5a534b[_0x9c8a('0x93')][_0x9c8a('0x95')]};if(!_0x1ea2cb)throw new Error(_0x9c8a('0x96'));if(_0x1ea2cb['role']===_0x9c8a('0x97')){var _0x3e34b6=_0x47def6[_0x9c8a('0x2f')]({'plain':!![]});return db[_0x9c8a('0x98')][_0x9c8a('0x4f')]({'where':{'name':'Plugins','userProfileId':_0x1ea2cb['userProfileId']},'raw':!![]})['then'](function(_0x841c2f){if(_0x841c2f&&_0x841c2f[_0x9c8a('0x99')]===0x0){return db[_0x9c8a('0x9a')][_0x9c8a('0x9b')]({'name':_0x3e34b6['name'],'resourceId':_0x3e34b6['id'],'type':_0x841c2f['name'],'sectionId':_0x841c2f['id']},{})[_0x9c8a('0x2e')](function(){return _0x47def6;});}else{return _0x47def6;}})[_0x9c8a('0x50')](function(_0x427cb2){logger[_0x9c8a('0x32')](_0x9c8a('0x9c'),_0x427cb2);throw _0x427cb2;});}return _0x47def6;})['then'](respondWithResult(_0x42fa7e,null))['catch'](handleError(_0x42fa7e,null));}});}catch(_0x80e33){_0x42fa7e[_0x9c8a('0x23')](0x1f4)[_0x9c8a('0x33')](_0x80e33);}};function removeReferences(_0x4880af,_0x2acda7){try{if(_0x4880af){fs[_0x9c8a('0x69')](_0x4880af);logger['info'](_0x9c8a('0x9d'));}if(_0x2acda7){rimraf(_0x2acda7,function(){});logger[_0x9c8a('0x6a')](_0x9c8a('0x9e'));}}catch(_0x51fbe9){logger[_0x9c8a('0x32')](_0x51fbe9);}}exports[_0x9c8a('0x9f')]=function(_0x9e4120,_0x4f2388,_0x22e8c9){return db[_0x9c8a('0x35')]['find']({'where':{'id':_0x9e4120[_0x9c8a('0x4b')]['id']}})[_0x9c8a('0x2e')](handleEntityNotFound(_0x4f2388,null))[_0x9c8a('0x2e')](saveUpdates(_0x9e4120[_0x9c8a('0x93')],null))['then'](respondWithResult(_0x4f2388,null))[_0x9c8a('0x50')](handleError(_0x4f2388,null));};exports['delete']=function(_0x256e4c,_0x2d362e,_0x2f4a27){return db[_0x9c8a('0x35')][_0x9c8a('0x4f')]({'where':{'id':_0x256e4c['params']['id']}})[_0x9c8a('0x2e')](function(_0x7444bb){if(_0x7444bb){return _0x7444bb[_0x9c8a('0x30')]();}})['then'](function(_0x2ecd70){rimraf(path[_0x9c8a('0x5d')](config[_0x9c8a('0x53')],'server/files/plugins',path[_0x9c8a('0x5e')](_0x2ecd70[_0x9c8a('0x52')])),function(){});return _0x2ecd70;})[_0x9c8a('0x2e')](handleEntityNotFound(_0x2d362e,null))[_0x9c8a('0x2e')](respondWithStatusCode(_0x2d362e,null))[_0x9c8a('0x50')](handleError(_0x2d362e,null));};exports[_0x9c8a('0xa0')]=function(_0x971bc2,_0x212ab7,_0x47bb8c){return BPromise['resolve']()[_0x9c8a('0x2e')](function(){if(!_0x971bc2['query'][_0x9c8a('0x52')]){throw new Error(_0x9c8a('0xa1'));}if(!_0x971bc2[_0x9c8a('0x39')][_0x9c8a('0xa2')]){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0x197d04=_0x971bc2[_0x9c8a('0x39')]['hostname']?_0x971bc2[_0x9c8a('0x39')][_0x9c8a('0xa3')]+':'+_0x971bc2[_0x9c8a('0x39')]['port']:_0x9c8a('0xa4')+_0x971bc2[_0x9c8a('0x39')]['port'];var _0x48f65d=_0x971bc2[_0x9c8a('0x39')]['json']?_0x971bc2[_0x9c8a('0x39')]['json']:!![];var _0x27a33e=_0x971bc2['query'][_0x9c8a('0xa5')]?_0x971bc2[_0x9c8a('0x39')][_0x9c8a('0xa5')]:null;var _0x4c0f26={'method':_0x971bc2[_0x9c8a('0xa6')],'uri':util[_0x9c8a('0x55')](_0x9c8a('0xa7'),_0x197d04,_0x971bc2[_0x9c8a('0x39')][_0x9c8a('0x52')]),'json':_0x48f65d,'resolveWithFullResponse':!![],'encoding':_0x27a33e,'qs':_0x971bc2[_0x9c8a('0x39')]};if(_0x971bc2[_0x9c8a('0xa8')]){_0x4c0f26[_0x9c8a('0xa8')]=_0x971bc2[_0x9c8a('0xa8')];if(_0x4c0f26['headers'][_0x9c8a('0xa9')]){delete _0x4c0f26[_0x9c8a('0xa8')][_0x9c8a('0xa9')];}}if(_0x4c0f26[_0x9c8a('0xa8')][_0x9c8a('0xaa')]){delete _0x4c0f26[_0x9c8a('0xa8')][_0x9c8a('0xaa')];}return rp(_0x4c0f26);})[_0x9c8a('0x2e')](function(_0x395906){if(_0x395906){_0x212ab7[_0x9c8a('0xab')](_0x395906[_0x9c8a('0xa8')]);logger['info'](_0x395906['body']);if(_[_0x9c8a('0xac')](_0x971bc2[_0x9c8a('0x39')][_0x9c8a('0x52')],'download')&&_0x395906['statusCode']==0x1f4){return _0x212ab7[_0x9c8a('0x31')](_0x395906[_0x9c8a('0xad')]);}else{return _0x212ab7['status'](_0x395906[_0x9c8a('0xad')])['send'](_0x395906[_0x9c8a('0x93')]);}}else{return _0x212ab7[_0x9c8a('0x31')](0xc8);}})[_0x9c8a('0x50')](handleError(_0x212ab7,null));};exports[_0x9c8a('0xae')]=function(_0x5a3c6f,_0x3a4e76,_0x1b4aa0){return BPromise[_0x9c8a('0xaf')]()[_0x9c8a('0x2e')](function(){if(!_0x5a3c6f['query'][_0x9c8a('0x52')]){throw new Error(_0x9c8a('0xa1'));}if(!_0x5a3c6f[_0x9c8a('0x39')][_0x9c8a('0xa2')]){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0x51fd16=_0x5a3c6f[_0x9c8a('0x39')]['hostname']?_0x5a3c6f[_0x9c8a('0x39')][_0x9c8a('0xa3')]+':'+_0x5a3c6f[_0x9c8a('0x39')][_0x9c8a('0xa2')]:_0x9c8a('0xa4')+_0x5a3c6f[_0x9c8a('0x39')][_0x9c8a('0xa2')];var _0x3a2b78=_0x5a3c6f['query'][_0x9c8a('0x25')]?_0x5a3c6f[_0x9c8a('0x39')][_0x9c8a('0x25')]:!![];var _0x30473e=_0x5a3c6f['query']['encoding']?_0x5a3c6f[_0x9c8a('0x39')][_0x9c8a('0xa5')]:null;var _0x554676={'method':_0x5a3c6f[_0x9c8a('0xa6')],'uri':util[_0x9c8a('0x55')](_0x9c8a('0xa7'),_0x51fd16,_0x5a3c6f['query'][_0x9c8a('0x52')]),'json':_0x3a2b78,'resolveWithFullResponse':!![],'encoding':_0x30473e,'body':_0x5a3c6f[_0x9c8a('0x93')]};if(_0x5a3c6f['headers']){_0x554676[_0x9c8a('0xa8')]=_0x5a3c6f[_0x9c8a('0xa8')];if(_0x554676[_0x9c8a('0xa8')][_0x9c8a('0xa9')]){delete _0x554676['headers'][_0x9c8a('0xa9')];}}if(_0x554676[_0x9c8a('0xa8')][_0x9c8a('0xaa')]){delete _0x554676[_0x9c8a('0xa8')][_0x9c8a('0xaa')];}return rp(_0x554676);})['then'](function(_0x565d3c){if(_0x565d3c){_0x3a4e76[_0x9c8a('0xab')](_0x565d3c[_0x9c8a('0xa8')]);logger[_0x9c8a('0x6a')](_0x565d3c[_0x9c8a('0x93')]);return _0x3a4e76['status'](_0x565d3c[_0x9c8a('0xad')])['send'](_0x565d3c[_0x9c8a('0x93')]);}else{return _0x3a4e76[_0x9c8a('0x31')](0xc8);}})['catch'](handleError(_0x3a4e76,null));};