forked from p15670423/monkey
Fix CR
This commit is contained in:
parent
d8210bf731
commit
795885b322
|
@ -65,7 +65,7 @@ class Monkey(flask_restful.Resource):
|
||||||
# if new monkey telem, change config according to "new monkeys" config.
|
# if new monkey telem, change config according to "new monkeys" config.
|
||||||
db_monkey = mongo.db.monkey.find_one({"guid": monkey_json["guid"]})
|
db_monkey = mongo.db.monkey.find_one({"guid": monkey_json["guid"]})
|
||||||
if not db_monkey:
|
if not db_monkey:
|
||||||
new_config = ConfigService.get_flat_config()
|
new_config = ConfigService.get_flat_config(False, True)
|
||||||
monkey_json['config'] = monkey_json.get('config', {})
|
monkey_json['config'] = monkey_json.get('config', {})
|
||||||
monkey_json['config'].update(new_config)
|
monkey_json['config'].update(new_config)
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -12,7 +12,7 @@ __author__ = 'Barak'
|
||||||
class MonkeyConfiguration(flask_restful.Resource):
|
class MonkeyConfiguration(flask_restful.Resource):
|
||||||
@jwt_required()
|
@jwt_required()
|
||||||
def get(self):
|
def get(self):
|
||||||
return jsonify(schema=ConfigService.get_config_schema(), configuration=ConfigService.get_config())
|
return jsonify(schema=ConfigService.get_config_schema(), configuration=ConfigService.get_config(False, True))
|
||||||
|
|
||||||
@jwt_required()
|
@jwt_required()
|
||||||
def post(self):
|
def post(self):
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import copy
|
import copy
|
||||||
|
import functools
|
||||||
from jsonschema import Draft4Validator, validators
|
from jsonschema import Draft4Validator, validators
|
||||||
|
|
||||||
from cc.database import mongo
|
from cc.database import mongo
|
||||||
|
@ -813,6 +813,12 @@ class ConfigService:
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_config(is_initial_config=False, should_decrypt=True):
|
def get_config(is_initial_config=False, should_decrypt=True):
|
||||||
|
"""
|
||||||
|
Gets the entire global config.
|
||||||
|
:param is_initial_config: If True, the initial config will be returned instead of the current config.
|
||||||
|
:param should_decrypt: If True, all config values which are set as encrypted will be decrypted.
|
||||||
|
:return: The entire global config.
|
||||||
|
"""
|
||||||
config = mongo.db.config.find_one({'name': 'initial' if is_initial_config else 'newconfig'}) or {}
|
config = mongo.db.config.find_one({'name': 'initial' if is_initial_config else 'newconfig'}) or {}
|
||||||
for field in ('name', '_id'):
|
for field in ('name', '_id'):
|
||||||
config.pop(field, None)
|
config.pop(field, None)
|
||||||
|
@ -822,7 +828,15 @@ class ConfigService:
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_config_value(config_key_as_arr, is_initial_config=False, should_decrypt=True):
|
def get_config_value(config_key_as_arr, is_initial_config=False, should_decrypt=True):
|
||||||
config_key = reduce(lambda x, y: x + '.' + y, config_key_as_arr)
|
"""
|
||||||
|
Get a specific config value.
|
||||||
|
:param config_key_as_arr: The config key as an array. e.g. ['basic', 'credentials', 'exploit_password_list'].
|
||||||
|
:param is_initial_config: If True, returns the value of the initial config instead of the current config.
|
||||||
|
:param should_decrypt: If True, the value of the config key will be decrypted
|
||||||
|
(if it's in the list of encrypted config values).
|
||||||
|
:return: The value of the requested config key.
|
||||||
|
"""
|
||||||
|
config_key = functools.reduce(lambda x, y: x + '.' + y, config_key_as_arr)
|
||||||
config = mongo.db.config.find_one({'name': 'initial' if is_initial_config else 'newconfig'}, {config_key: 1})
|
config = mongo.db.config.find_one({'name': 'initial' if is_initial_config else 'newconfig'}, {config_key: 1})
|
||||||
for config_key_part in config_key_as_arr:
|
for config_key_part in config_key_as_arr:
|
||||||
config = config[config_key_part]
|
config = config[config_key_part]
|
||||||
|
@ -890,10 +904,10 @@ class ConfigService:
|
||||||
ConfigService.default_config = config
|
ConfigService.default_config = config
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_default_config(should_decrypt=True):
|
def get_default_config(should_encrypt=False):
|
||||||
ConfigService.init_default_config()
|
ConfigService.init_default_config()
|
||||||
config = copy.deepcopy(ConfigService.default_config)
|
config = copy.deepcopy(ConfigService.default_config)
|
||||||
if not should_decrypt:
|
if should_encrypt:
|
||||||
ConfigService.encrypt_config(config)
|
ConfigService.encrypt_config(config)
|
||||||
return config
|
return config
|
||||||
|
|
||||||
|
@ -905,7 +919,7 @@ class ConfigService:
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def reset_config():
|
def reset_config():
|
||||||
config = ConfigService.get_default_config(should_decrypt=False)
|
config = ConfigService.get_default_config(True)
|
||||||
ConfigService.set_server_ips_in_config(config)
|
ConfigService.set_server_ips_in_config(config)
|
||||||
ConfigService.update_config(config, should_encrypt=False)
|
ConfigService.update_config(config, should_encrypt=False)
|
||||||
|
|
||||||
|
@ -952,14 +966,14 @@ class ConfigService:
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def decrypt_config(config):
|
def decrypt_config(config):
|
||||||
ConfigService._encrypt_config(config, True)
|
ConfigService._encrypt_or_decrypt_config(config, True)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def encrypt_config(config):
|
def encrypt_config(config):
|
||||||
ConfigService._encrypt_config(config, False)
|
ConfigService._encrypt_or_decrypt_config(config, False)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _encrypt_config(config, is_decrypt=False):
|
def _encrypt_or_decrypt_config(config, is_decrypt=False):
|
||||||
for config_arr_as_array in ENCRYPTED_CONFIG_ARRAYS:
|
for config_arr_as_array in ENCRYPTED_CONFIG_ARRAYS:
|
||||||
config_arr = config
|
config_arr = config
|
||||||
for config_key_part in config_arr_as_array:
|
for config_key_part in config_arr_as_array:
|
||||||
|
|
|
@ -293,19 +293,19 @@ class ReportService:
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_config_users():
|
def get_config_users():
|
||||||
return ConfigService.get_config_value(['basic', 'credentials', 'exploit_user_list'], True)
|
return ConfigService.get_config_value(['basic', 'credentials', 'exploit_user_list'], True, True)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_config_passwords():
|
def get_config_passwords():
|
||||||
return ConfigService.get_config_value(['basic', 'credentials', 'exploit_password_list'], True)
|
return ConfigService.get_config_value(['basic', 'credentials', 'exploit_password_list'], True, True)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_config_exploits():
|
def get_config_exploits():
|
||||||
exploits_config_value = ['exploits', 'general', 'exploiter_classes']
|
exploits_config_value = ['exploits', 'general', 'exploiter_classes']
|
||||||
default_exploits = ConfigService.get_default_config()
|
default_exploits = ConfigService.get_default_config(False)
|
||||||
for namespace in exploits_config_value:
|
for namespace in exploits_config_value:
|
||||||
default_exploits = default_exploits[namespace]
|
default_exploits = default_exploits[namespace]
|
||||||
exploits = ConfigService.get_config_value(exploits_config_value, True)
|
exploits = ConfigService.get_config_value(exploits_config_value, True, True)
|
||||||
|
|
||||||
if exploits == default_exploits:
|
if exploits == default_exploits:
|
||||||
return ['default']
|
return ['default']
|
||||||
|
@ -315,13 +315,13 @@ class ReportService:
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_config_ips():
|
def get_config_ips():
|
||||||
if ConfigService.get_config_value(['basic_network', 'network_range', 'range_class'], True) != 'FixedRange':
|
if ConfigService.get_config_value(['basic_network', 'network_range', 'range_class'], True, True) != 'FixedRange':
|
||||||
return []
|
return []
|
||||||
return ConfigService.get_config_value(['basic_network', 'network_range', 'range_fixed'], True)
|
return ConfigService.get_config_value(['basic_network', 'network_range', 'range_fixed'], True, True)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_config_scan():
|
def get_config_scan():
|
||||||
return ConfigService.get_config_value(['basic_network', 'general', 'local_network_scan'], True)
|
return ConfigService.get_config_value(['basic_network', 'general', 'local_network_scan'], True, True)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_issues_overview(issues, config_users, config_passwords):
|
def get_issues_overview(issues, config_users, config_passwords):
|
||||||
|
|
Loading…
Reference in New Issue