mirror of
https://github.com/sqlmapproject/sqlmap.git
synced 2025-02-10 16:40:36 +03:00
poor attempt at forking a child process for sqlmap engine execution, output is not handled yet
This commit is contained in:
parent
912323c12d
commit
89d8c58fd1
|
@ -15,6 +15,17 @@ import tempfile
|
||||||
import threading
|
import threading
|
||||||
import types
|
import types
|
||||||
|
|
||||||
|
_multiprocessing = None
|
||||||
|
try:
|
||||||
|
import multiprocessing
|
||||||
|
|
||||||
|
# problems on FreeBSD (Reference: http://www.eggheadcafe.com/microsoft/Python/35880259/multiprocessing-on-freebsd.aspx)
|
||||||
|
_ = multiprocessing.Queue()
|
||||||
|
except (ImportError, OSError):
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
_multiprocessing = multiprocessing
|
||||||
|
|
||||||
from extra.bottle.bottle import abort
|
from extra.bottle.bottle import abort
|
||||||
from extra.bottle.bottle import error
|
from extra.bottle.bottle import error
|
||||||
from extra.bottle.bottle import get
|
from extra.bottle.bottle import get
|
||||||
|
@ -75,6 +86,22 @@ def init_options():
|
||||||
|
|
||||||
return options
|
return options
|
||||||
|
|
||||||
|
def start_scan():
|
||||||
|
# Wrap logger stdout onto a custom file descriptor (LOGGER_OUTPUT)
|
||||||
|
def emit(self, record):
|
||||||
|
message = stdoutencode(FORMATTER.format(record))
|
||||||
|
print >>LOGGER_OUTPUT, message.strip('\r')
|
||||||
|
|
||||||
|
LOGGER_HANDLER.emit = types.MethodType(emit, LOGGER_HANDLER, type(LOGGER_HANDLER))
|
||||||
|
|
||||||
|
# Wrap standard output onto a custom file descriptor
|
||||||
|
sys.stdout = open(str(os.getpid()) + ".out", "wb")
|
||||||
|
#sys.stderr = StringIO.StringIO()
|
||||||
|
|
||||||
|
taskid = multiprocessing.current_process().name
|
||||||
|
init(tasks[taskid], True)
|
||||||
|
start()
|
||||||
|
|
||||||
@hook("after_request")
|
@hook("after_request")
|
||||||
def security_headers():
|
def security_headers():
|
||||||
"""
|
"""
|
||||||
|
@ -263,12 +290,15 @@ def scan_start(taskid):
|
||||||
# Overwrite output directory (oDir) value to a temporary directory
|
# Overwrite output directory (oDir) value to a temporary directory
|
||||||
tasks[taskid].oDir = tempfile.mkdtemp(prefix="sqlmap-")
|
tasks[taskid].oDir = tempfile.mkdtemp(prefix="sqlmap-")
|
||||||
|
|
||||||
init(tasks[taskid], True)
|
|
||||||
|
|
||||||
# Launch sqlmap engine in a separate thread
|
# Launch sqlmap engine in a separate thread
|
||||||
thread = threading.Thread(target=start)
|
logger.debug("starting a scan for task ID %s" % taskid)
|
||||||
thread.daemon = True
|
|
||||||
thread.start()
|
if _multiprocessing:
|
||||||
|
#_multiprocessing.log_to_stderr(logging.DEBUG)
|
||||||
|
p = _multiprocessing.Process(name=taskid, target=start_scan)
|
||||||
|
p.daemon = True
|
||||||
|
p.start()
|
||||||
|
p.join()
|
||||||
|
|
||||||
return jsonize({"success": True})
|
return jsonize({"success": True})
|
||||||
|
|
||||||
|
@ -352,17 +382,6 @@ def server(host="0.0.0.0", port=RESTAPI_SERVER_PORT):
|
||||||
logger.info("running REST-JSON API server at '%s:%d'.." % (host, port))
|
logger.info("running REST-JSON API server at '%s:%d'.." % (host, port))
|
||||||
logger.info("the admin task ID is: %s" % adminid)
|
logger.info("the admin task ID is: %s" % adminid)
|
||||||
|
|
||||||
# Wrap logger stdout onto a custom file descriptor (LOGGER_OUTPUT)
|
|
||||||
def emit(self, record):
|
|
||||||
message = stdoutencode(FORMATTER.format(record))
|
|
||||||
print >>LOGGER_OUTPUT, message.strip('\r')
|
|
||||||
|
|
||||||
LOGGER_HANDLER.emit = types.MethodType(emit, LOGGER_HANDLER, type(LOGGER_HANDLER))
|
|
||||||
|
|
||||||
# Wrap standard output onto a custom file descriptor
|
|
||||||
sys.stdout = StringIO.StringIO()
|
|
||||||
#sys.stderr = StringIO.StringIO()
|
|
||||||
|
|
||||||
# Run RESTful API
|
# Run RESTful API
|
||||||
run(host=host, port=port, quiet=False, debug=False)
|
run(host=host, port=port, quiet=False, debug=False)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user