mirror of
https://github.com/sqlmapproject/sqlmap.git
synced 2024-11-22 01:26:42 +03:00
Update for an Issue #405 (fix for persistent options problem)
This commit is contained in:
parent
aad102378a
commit
f6c7b398fd
|
@ -98,16 +98,18 @@ class Task(object):
|
||||||
def __init__(self, taskid):
|
def __init__(self, taskid):
|
||||||
self.process = None
|
self.process = None
|
||||||
self.output_directory = None
|
self.output_directory = None
|
||||||
|
self.options = None
|
||||||
|
self._original_options = None
|
||||||
self.initialize_options(taskid)
|
self.initialize_options(taskid)
|
||||||
|
|
||||||
def initialize_options(self, taskid):
|
def initialize_options(self, taskid):
|
||||||
dataype = {"boolean": False, "string": None, "integer": None, "float": None}
|
datatype = {"boolean": False, "string": None, "integer": None, "float": None}
|
||||||
self.options = AttribDict()
|
self.options = AttribDict()
|
||||||
|
|
||||||
for _ in optDict:
|
for _ in optDict:
|
||||||
for name, type_ in optDict[_].items():
|
for name, type_ in optDict[_].items():
|
||||||
type_ = unArrayizeValue(type_)
|
type_ = unArrayizeValue(type_)
|
||||||
self.options[name] = _defaults.get(name, dataype[type_])
|
self.options[name] = _defaults.get(name, datatype[type_])
|
||||||
|
|
||||||
# Let sqlmap engine knows it is getting called by the API, the task ID and the file path of the IPC database
|
# Let sqlmap engine knows it is getting called by the API, the task ID and the file path of the IPC database
|
||||||
self.options.api = True
|
self.options.api = True
|
||||||
|
@ -119,6 +121,8 @@ class Task(object):
|
||||||
self.options.disableColoring = True
|
self.options.disableColoring = True
|
||||||
self.options.eta = False
|
self.options.eta = False
|
||||||
|
|
||||||
|
self._original_options = AttribDict(self.options)
|
||||||
|
|
||||||
def set_option(self, option, value):
|
def set_option(self, option, value):
|
||||||
self.options[option] = value
|
self.options[option] = value
|
||||||
|
|
||||||
|
@ -128,6 +132,9 @@ class Task(object):
|
||||||
def get_options(self):
|
def get_options(self):
|
||||||
return self.options
|
return self.options
|
||||||
|
|
||||||
|
def reset_options(self):
|
||||||
|
self.options = AttribDict(self._original_options)
|
||||||
|
|
||||||
def set_output_directory(self):
|
def set_output_directory(self):
|
||||||
if not self.output_directory or not os.path.isdir(self.output_directory):
|
if not self.output_directory or not os.path.isdir(self.output_directory):
|
||||||
self.output_directory = tempfile.mkdtemp(prefix="sqlmapoutput-")
|
self.output_directory = tempfile.mkdtemp(prefix="sqlmapoutput-")
|
||||||
|
@ -419,6 +426,8 @@ def scan_start(taskid):
|
||||||
if taskid not in tasks:
|
if taskid not in tasks:
|
||||||
abort(500, "Invalid task ID")
|
abort(500, "Invalid task ID")
|
||||||
|
|
||||||
|
tasks[taskid].reset_options()
|
||||||
|
|
||||||
# Initialize sqlmap engine's options with user's provided options, if any
|
# Initialize sqlmap engine's options with user's provided options, if any
|
||||||
for option, value in request.json.items():
|
for option, value in request.json.items():
|
||||||
tasks[taskid].set_option(option, value)
|
tasks[taskid].set_option(option, value)
|
||||||
|
|
|
@ -42,3 +42,5 @@ if __name__ == "__main__":
|
||||||
server(args.host, args.port)
|
server(args.host, args.port)
|
||||||
elif args.client is True:
|
elif args.client is True:
|
||||||
client(args.host, args.port)
|
client(args.host, args.port)
|
||||||
|
else:
|
||||||
|
apiparser.print_help()
|
||||||
|
|
Loading…
Reference in New Issue
Block a user