Source code for owtf.api.handlers.config
"""
owtf.api.handlers.config
~~~~~~~~~~~~~~~~~~~~~~~~
"""
from owtf.api.handlers.base import APIRequestHandler
from owtf.lib import exceptions
from owtf.lib.exceptions import APIError
from owtf.managers.config import get_all_config_dicts, update_config_val
__all__ = ["ConfigurationHandler"]
[docs]
class ConfigurationHandler(APIRequestHandler):
"""Update framework settings and tool paths."""
SUPPORTED_METHODS = ["GET", "PATCH", "OPTIONS"]
[docs]
def get(self):
"""Return all configuration items.
**Example request**:
.. sourcecode:: http
GET /api/v1/configuration HTTP/1.1
Accept: application/json
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Content-Type: application/json
{
"status": "success",
"data": [
{
"dirty": false,
"key": "ATTACHMENT_NAME",
"descrip": "Filename for the attachment to be sent",
"section": "AUX_PLUGIN_DATA",
"value": "report"
},
{
"dirty": false,
"key": "BRUTEFORCER",
"descrip": "",
"section": "DICTIONARIES",
"value": "hydra"
},
]
}
"""
filter_data = dict(self.request.arguments)
configurations = get_all_config_dicts(self.session, filter_data)
grouped_configurations = {}
for config in configurations:
if config["section"] not in grouped_configurations:
grouped_configurations[config["section"]] = []
grouped_configurations[config["section"]].append(config)
self.success(grouped_configurations)
[docs]
def patch(self):
"""Update configuration item
**Example request**:
.. sourcecode:: http
PATCH /api/v1/configuration/ HTTP/1.1
Accept: */*
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
**Example response**:
.. sourcecode:: http
HTTP/1.1 200 OK
Content-Type: application/json
{
"status": "success",
"data": null
}
"""
for key, value_list in list(self.request.arguments.items()):
try:
update_config_val(self.session, key, value_list[0])
self.success(None)
except exceptions.InvalidConfigurationReference:
raise APIError(422, "Invalid configuration item specified")