mirror of
https://github.com/ysoftdevs/wapifuzz.git
synced 2026-01-11 22:30:35 +01:00
81 lines
3.1 KiB
Python
81 lines
3.1 KiB
Python
import sys
|
|
import json
|
|
from typing import Union, List
|
|
|
|
|
|
class ConfigurationManager:
|
|
config = None
|
|
|
|
def __init__(self, config_file_pointer):
|
|
ConfigurationManager.config = json.load(config_file_pointer)
|
|
self._config_validation()
|
|
|
|
@staticmethod
|
|
def get_startup_command():
|
|
return ConfigurationManager.config["startup_command"] if "startup_command" in ConfigurationManager.config else None
|
|
|
|
@staticmethod
|
|
def get_payloads_folders_for_boolean_json_primitive() -> Union[List, None]:
|
|
return ConfigurationManager._get_payloads_folders_for_specific_json_primitive("boolean")
|
|
|
|
@staticmethod
|
|
def get_payloads_folders_for_number_json_primitive() -> Union[List, None]:
|
|
return ConfigurationManager._get_payloads_folders_for_specific_json_primitive("number")
|
|
|
|
@staticmethod
|
|
def get_payloads_folders_for_string_json_primitive() -> Union[List, None]:
|
|
return ConfigurationManager._get_payloads_folders_for_specific_json_primitive("string")
|
|
|
|
@staticmethod
|
|
def _get_payloads_folders_for_specific_json_primitive(json_type: str) -> Union[List, None]:
|
|
mapping = ConfigurationManager._get_payloads_to_json_primitives_mapping()
|
|
if mapping:
|
|
return mapping[json_type] if json_type in mapping else None
|
|
else:
|
|
return None
|
|
|
|
@staticmethod
|
|
def _get_payloads_to_json_primitives_mapping():
|
|
return ConfigurationManager.config["payloads_to_json_primitives_mapping"] if "payloads_to_json_primitives_mapping" in ConfigurationManager.config else None
|
|
|
|
@staticmethod
|
|
def are_non_required_attributes_in_requests():
|
|
return ConfigurationManager.config["are_non_required_attributes_in_requests"] if "are_non_required_attributes_in_requests" in ConfigurationManager.config else True
|
|
|
|
@staticmethod
|
|
def get_receive_timeout():
|
|
return ConfigurationManager.config["receive_timeout"]
|
|
|
|
@staticmethod
|
|
def get_reporting_interval():
|
|
return ConfigurationManager.config["reporting_interval"]
|
|
|
|
@staticmethod
|
|
def get_keywords_for_endpoints_skipping() -> List:
|
|
return ConfigurationManager.config["skipping_endpoints_keywords"]
|
|
|
|
@staticmethod
|
|
def get_target():
|
|
return ConfigurationManager.config["target"]
|
|
|
|
@staticmethod
|
|
def is_http_fuzzing_allowed():
|
|
return ConfigurationManager.config["http_fuzzing"]
|
|
|
|
def _config_validation(self):
|
|
reporting_interval: Union[int, float] = self.config["reporting_interval"]
|
|
receive_timeout: Union[int, float] = self.config["receive_timeout"]
|
|
http_fuzzing: bool = self.config["http_fuzzing"]
|
|
|
|
if reporting_interval <= 0 or reporting_interval < receive_timeout:
|
|
print("Wrong reporting interval. Should be smaller than receive_timeout.")
|
|
sys.exit(2)
|
|
|
|
if "target" not in ConfigurationManager.config:
|
|
print("Missing configuration of target.")
|
|
sys.exit(2)
|
|
|
|
if http_fuzzing is None:
|
|
print("Missing flag for enabling / disabling HTTP fuzzing.")
|
|
sys.exit(2)
|