581a0171793cdc6adeefcca3776bb90b77c3332a
[motion2.git] / server / api / pm2 / pm2.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 _0x3079=['../../config/logger','path','child_process','exec','sendStatus','status','json','error','stack','name','send','info','index','list','then','reject','catch','show','params','create','body','script','join','../../files/plugins','chdir','dirname','start','dump','Missing\x20name\x20and/or\x20path','update','Unknown\x20status','delete','Unknown\x20id','lodash'];(function(_0x3748dd,_0x8c08eb){var _0x4b4a37=function(_0x3daba8){while(--_0x3daba8){_0x3748dd['push'](_0x3748dd['shift']());}};_0x4b4a37(++_0x8c08eb);}(_0x3079,0x87));var _0x9307=function(_0x3b4df9,_0x18ad5c){_0x3b4df9=_0x3b4df9-0x0;var _0x2d226d=_0x3079[_0x3b4df9];return _0x2d226d;};'use strict';var _=require(_0x9307('0x0'));var pm2=require('../../config/pm2');var logger=require(_0x9307('0x1'))('api');var path=require(_0x9307('0x2'));var exec=require(_0x9307('0x3'))[_0x9307('0x4')];var BPromise=require('bluebird');function handleEntityNotFound(_0x41a441,_0x4b9e6f){return function(_0x32a9d6){if(!_0x32a9d6){_0x41a441[_0x9307('0x5')](0x194);;}return _0x32a9d6;};}function respondWithResult(_0x162e8e,_0x4d7251){_0x4d7251=_0x4d7251||0xc8;return function(_0x2a42ae){if(_0x2a42ae){return _0x162e8e[_0x9307('0x6')](_0x4d7251)[_0x9307('0x7')](_0x2a42ae);}return null;};}function handleError(_0x2e4d80,_0x4ac0e8){_0x4ac0e8=_0x4ac0e8||0x1f4;return function(_0x50f642){logger[_0x9307('0x8')](_0x50f642[_0x9307('0x9')]);if(_0x50f642['name']){delete _0x50f642[_0x9307('0xa')];}_0x2e4d80[_0x9307('0x6')](_0x4ac0e8)[_0x9307('0xb')](_0x50f642);};}function execChildProcess(){return new BPromise(function(_0x2a3ffc,_0x56b30a){exec('npm\x20install',function(_0x335fab,_0x9ef1ad,_0x1ce32c){logger[_0x9307('0xc')](_0x9ef1ad);logger[_0x9307('0xc')](_0x1ce32c);if(_0x335fab){logger[_0x9307('0x8')](_0x335fab);return _0x56b30a(_0x335fab);}return _0x2a3ffc(_0x9ef1ad);});});}exports[_0x9307('0xd')]=function(_0x34f411,_0x53c5b0){return pm2[_0x9307('0xe')]()[_0x9307('0xf')](function(_0x413d9d){if(_0x413d9d){var _0x5ae507=_[_0x9307('0x10')](_0x413d9d,function(_0x2a5369){return _0x2a5369[_0x9307('0xa')]==='express'||_0x2a5369[_0x9307('0xa')]==='motion2';});return{'rows':_0x5ae507,'count':_0x5ae507['length']};}return null;})[_0x9307('0xf')](respondWithResult(_0x53c5b0,null))[_0x9307('0x11')](handleError(_0x53c5b0,null));};exports[_0x9307('0x12')]=function(_0x519e7d,_0x1fd73d){return pm2['describe'](_0x519e7d[_0x9307('0x13')]['id'])[_0x9307('0xf')](respondWithResult(_0x1fd73d,null))['then'](handleEntityNotFound(_0x1fd73d,null))['catch'](handleError(_0x1fd73d,null));};exports[_0x9307('0x14')]=function(_0x464e7e,_0xe03f50){if(_0x464e7e['body'][_0x9307('0xa')]&&_0x464e7e[_0x9307('0x15')][_0x9307('0x16')]){var _0x58755f=path[_0x9307('0x17')](__dirname,_0x9307('0x18'),_0x464e7e['body']['script']);var _0x41a6f9=process['cwd']();process[_0x9307('0x19')](path[_0x9307('0x1a')](_0x58755f));return execChildProcess()[_0x9307('0xf')](function(_0x5c2867){process['chdir'](_0x41a6f9);return pm2[_0x9307('0x1b')]({'name':_0x464e7e[_0x9307('0x15')][_0x9307('0xa')],'script':_0x58755f});})[_0x9307('0xf')](function(_0x7c2c6d){pm2[_0x9307('0x1c')]();return _0x7c2c6d[0x0];})[_0x9307('0xf')](respondWithResult(_0xe03f50,0xc9))[_0x9307('0x11')](handleError(_0xe03f50,null));}else{return _0xe03f50[_0x9307('0x6')](0x1f4)[_0x9307('0xb')]({'message':_0x9307('0x1d')});}};exports[_0x9307('0x1e')]=function(_0x25175d,_0x26c6b8){if(_0x25175d['body']['id']){delete _0x25175d[_0x9307('0x15')]['id'];}var _0x18db58={'online':'restart','stopped':'stop'};if(_0x18db58['hasOwnProperty'](_0x25175d['body'][_0x9307('0x6')])){return pm2[_0x18db58[_0x25175d[_0x9307('0x15')]['status']]](_0x25175d[_0x9307('0x13')]['id'])[_0x9307('0xf')](respondWithResult(_0x26c6b8,0xc8))[_0x9307('0x11')](handleError(_0x26c6b8,null));}else{return _0x26c6b8[_0x9307('0x6')](0x1f4)[_0x9307('0xb')]({'message':_0x9307('0x1f')});}};exports['destroy']=function(_0x5803e3,_0x1ac363){if(_0x5803e3[_0x9307('0x15')]['id']){delete _0x5803e3[_0x9307('0x15')]['id'];}if(_0x5803e3[_0x9307('0x13')]['id']){return pm2[_0x9307('0x20')](_0x5803e3['params']['id'])[_0x9307('0xf')](function(_0x56aa11){pm2[_0x9307('0x1c')]();return _0x56aa11[0x0];})[_0x9307('0xf')](respondWithResult(_0x1ac363,null))[_0x9307('0x11')](handleError(_0x1ac363,null));}else{return _0x1ac363[_0x9307('0x6')](0x1f4)[_0x9307('0xb')]({'message':_0x9307('0x21')});}};