mirror of
https://github.com/sqlmapproject/sqlmap.git
synced 2025-02-03 05:04:11 +03:00
Hmmm... Let me guess. Update for an Issue #287
This commit is contained in:
parent
921000bd87
commit
e381158058
|
@ -59,7 +59,7 @@ def xmlRpcServe():
|
||||||
server = XMLRPCServer(cmdLineOptions.xmlRpcPort or XMLRPC_SERVER_PORT)
|
server = XMLRPCServer(cmdLineOptions.xmlRpcPort or XMLRPC_SERVER_PORT)
|
||||||
def emit(self, record):
|
def emit(self, record):
|
||||||
message = stdoutencode(FORMATTER.format(record))
|
message = stdoutencode(FORMATTER.format(record))
|
||||||
sys.stdout.write("%s\n" % message)
|
sys.stdout.write("%s" % message)
|
||||||
LOGGER_HANDLER.emit = types.MethodType(emit, LOGGER_HANDLER, type(LOGGER_HANDLER))
|
LOGGER_HANDLER.emit = types.MethodType(emit, LOGGER_HANDLER, type(LOGGER_HANDLER))
|
||||||
sys.stdout = StringIO.StringIO()
|
sys.stdout = StringIO.StringIO()
|
||||||
sys.stderr = StringIO.StringIO()
|
sys.stderr = StringIO.StringIO()
|
||||||
|
|
|
@ -760,7 +760,8 @@ def cmdLineParser():
|
||||||
expandMnemonics(sys.argv[i+1], parser, args)
|
expandMnemonics(sys.argv[i+1], parser, args)
|
||||||
|
|
||||||
if not any((args.direct, args.url, args.logFile, args.bulkFile, args.googleDork, args.configFile, \
|
if not any((args.direct, args.url, args.logFile, args.bulkFile, args.googleDork, args.configFile, \
|
||||||
args.requestFile, args.updateAll, args.smokeTest, args.liveTest, args.wizard, args.dependencies, args.purgeOutput)):
|
args.requestFile, args.updateAll, args.smokeTest, args.liveTest, args.wizard, args.dependencies, \
|
||||||
|
args.xmlRpc, args.purgeOutput)):
|
||||||
errMsg = "missing a mandatory option (-d, -u, -l, -m, -r, -g, -c, --wizard, --update, --purge-output or --dependencies), "
|
errMsg = "missing a mandatory option (-d, -u, -l, -m, -r, -g, -c, --wizard, --update, --purge-output or --dependencies), "
|
||||||
errMsg += "use -h for basic or -hh for advanced help"
|
errMsg += "use -h for basic or -hh for advanced help"
|
||||||
parser.error(errMsg)
|
parser.error(errMsg)
|
||||||
|
|
|
@ -7,6 +7,7 @@ See the file 'doc/COPYING' for copying permission
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import threading
|
import threading
|
||||||
|
import types
|
||||||
import xmlrpclib
|
import xmlrpclib
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -29,11 +30,9 @@ class XMLRPCServer:
|
||||||
self.reset()
|
self.reset()
|
||||||
|
|
||||||
self.server = SimpleXMLRPCServer(addr=("", self.port), logRequests=False, allow_none=True, encoding=UNICODE_ENCODING)
|
self.server = SimpleXMLRPCServer(addr=("", self.port), logRequests=False, allow_none=True, encoding=UNICODE_ENCODING)
|
||||||
self.server.register_function(self.reset)
|
for _ in dir(self):
|
||||||
self.server.register_function(self.set_option)
|
if not _.startswith('_') and isinstance(getattr(self, _), types.MethodType):
|
||||||
self.server.register_function(self.get_option)
|
self.server.register_function(getattr(self, _))
|
||||||
self.server.register_function(self.get_option_names)
|
|
||||||
self.server.register_function(self.run)
|
|
||||||
logger.info("Registering RPC methods: %s" % str(self.server.system_listMethods()).strip("[]"))
|
logger.info("Registering RPC methods: %s" % str(self.server.system_listMethods()).strip("[]"))
|
||||||
self.server.register_introspection_functions()
|
self.server.register_introspection_functions()
|
||||||
logger.info("Running XML-RPC server at '0.0.0.0:%d'..." % self.port)
|
logger.info("Running XML-RPC server at '0.0.0.0:%d'..." % self.port)
|
||||||
|
@ -43,16 +42,28 @@ class XMLRPCServer:
|
||||||
|
|
||||||
def set_option(self, name, value):
|
def set_option(self, name, value):
|
||||||
self.options[name] = value
|
self.options[name] = value
|
||||||
|
return value
|
||||||
|
|
||||||
def get_option(self, name):
|
def get_option(self, name):
|
||||||
return self.options[name]
|
return self.options[name]
|
||||||
|
|
||||||
def get_option_names(self):
|
def get_option_names(self):
|
||||||
return self.options.keys()
|
return sorted(self.options.keys())
|
||||||
|
|
||||||
def is_busy(self):
|
def is_busy(self):
|
||||||
return kb.get("busyFlag")
|
return kb.get("busyFlag")
|
||||||
|
|
||||||
|
def read_output(self):
|
||||||
|
retval = []
|
||||||
|
for _ in ("stdout", "stderr"):
|
||||||
|
stream = getattr(sys, _)
|
||||||
|
stream.seek(0)
|
||||||
|
retval.append(stream.read())
|
||||||
|
stream.truncate(0)
|
||||||
|
if not filter(None, retval) and not self.is_busy():
|
||||||
|
retval = None
|
||||||
|
return retval
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
if not self.is_busy():
|
if not self.is_busy():
|
||||||
init(self.options, True)
|
init(self.options, True)
|
||||||
|
@ -85,11 +96,12 @@ if __name__ == "__main__":
|
||||||
else:
|
else:
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
_ = raw_input("> ")
|
cmd = raw_input("> ")
|
||||||
if not _.startswith("print"):
|
try:
|
||||||
print eval(_) or ""
|
result = eval(cmd)
|
||||||
else:
|
print result if result is not None else ""
|
||||||
exec(_)
|
except SyntaxError:
|
||||||
|
exec(cmd)
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
exit(0)
|
exit(0)
|
||||||
except Exception, ex:
|
except Exception, ex:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user