forked from p34709852/monkey
First fix: No indication for bad configuration file loaded via the "Import" button in configuration page.
Added specific error handling for that part.
This commit is contained in:
parent
84c2a5fa51
commit
bdda578920
|
@ -1,7 +1,7 @@
|
|||
import json
|
||||
|
||||
import flask_restful
|
||||
from flask import request, jsonify
|
||||
from flask import request, jsonify, abort
|
||||
|
||||
from cc.auth import jwt_required
|
||||
from cc.services.config import ConfigService
|
||||
|
@ -20,5 +20,6 @@ class MonkeyConfiguration(flask_restful.Resource):
|
|||
if 'reset' in config_json:
|
||||
ConfigService.reset_config()
|
||||
else:
|
||||
ConfigService.update_config(config_json, should_encrypt=True)
|
||||
if not ConfigService.update_config(config_json, should_encrypt=True):
|
||||
abort(400)
|
||||
return self.get()
|
||||
|
|
|
@ -977,9 +977,14 @@ class ConfigService:
|
|||
@staticmethod
|
||||
def update_config(config_json, should_encrypt):
|
||||
if should_encrypt:
|
||||
ConfigService.encrypt_config(config_json)
|
||||
try:
|
||||
ConfigService.encrypt_config(config_json)
|
||||
except KeyError as e:
|
||||
logger.error('Bad configuration file was submitted.')
|
||||
return False
|
||||
mongo.db.config.update({'name': 'newconfig'}, {"$set": config_json}, upsert=True)
|
||||
logger.info('monkey config was updated')
|
||||
return True
|
||||
|
||||
@staticmethod
|
||||
def init_default_config():
|
||||
|
|
|
@ -50,6 +50,13 @@ class ConfigurePageComponent extends AuthComponent {
|
|||
headers: {'Content-Type': 'application/json'},
|
||||
body: JSON.stringify(this.state.configuration)
|
||||
})
|
||||
.then(res => {
|
||||
if (!res.ok)
|
||||
{
|
||||
throw Error()
|
||||
}
|
||||
return res;
|
||||
})
|
||||
.then(res => res.json())
|
||||
.then(res => {
|
||||
this.setState({
|
||||
|
@ -58,6 +65,9 @@ class ConfigurePageComponent extends AuthComponent {
|
|||
configuration: res.configuration
|
||||
});
|
||||
this.props.onStatusChange();
|
||||
}).catch(error => {
|
||||
console.log('bad configuration');
|
||||
this.setState({lastAction: 'invalid_configuration'});
|
||||
});
|
||||
};
|
||||
|
||||
|
@ -217,6 +227,12 @@ class ConfigurePageComponent extends AuthComponent {
|
|||
Failed importing configuration. Invalid config file.
|
||||
</div>
|
||||
: ''}
|
||||
{ this.state.lastAction === 'invalid_configuration' ?
|
||||
<div className="alert alert-danger">
|
||||
<i className="glyphicon glyphicon-exclamation-sign" style={{'marginRight': '5px'}}/>
|
||||
An invalid configuration file was imported and submitted, probably outdated.
|
||||
</div>
|
||||
: ''}
|
||||
{ this.state.lastAction === 'import_success' ?
|
||||
<div className="alert alert-success">
|
||||
<i className="glyphicon glyphicon-ok-sign" style={{'marginRight': '5px'}}/>
|
||||
|
|
Loading…
Reference in New Issue