Hmmm... Let me guess. Update for an Issue #287

This commit is contained in:
Miroslav Stampar 2012-12-12 16:31:20 +01:00
parent 921000bd87
commit e381158058
3 changed files with 26 additions and 13 deletions

View File

@ -59,7 +59,7 @@ def xmlRpcServe():
server = XMLRPCServer(cmdLineOptions.xmlRpcPort or XMLRPC_SERVER_PORT)
def emit(self, 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))
sys.stdout = StringIO.StringIO()
sys.stderr = StringIO.StringIO()

View File

@ -760,7 +760,8 @@ def cmdLineParser():
expandMnemonics(sys.argv[i+1], parser, args)
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 += "use -h for basic or -hh for advanced help"
parser.error(errMsg)

View File

@ -7,6 +7,7 @@ See the file 'doc/COPYING' for copying permission
import sys
import threading
import types
import xmlrpclib
try:
@ -29,11 +30,9 @@ class XMLRPCServer:
self.reset()
self.server = SimpleXMLRPCServer(addr=("", self.port), logRequests=False, allow_none=True, encoding=UNICODE_ENCODING)
self.server.register_function(self.reset)
self.server.register_function(self.set_option)
self.server.register_function(self.get_option)
self.server.register_function(self.get_option_names)
self.server.register_function(self.run)
for _ in dir(self):
if not _.startswith('_') and isinstance(getattr(self, _), types.MethodType):
self.server.register_function(getattr(self, _))
logger.info("Registering RPC methods: %s" % str(self.server.system_listMethods()).strip("[]"))
self.server.register_introspection_functions()
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):
self.options[name] = value
return value
def get_option(self, name):
return self.options[name]
def get_option_names(self):
return self.options.keys()
return sorted(self.options.keys())
def is_busy(self):
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):
if not self.is_busy():
init(self.options, True)
@ -85,11 +96,12 @@ if __name__ == "__main__":
else:
while True:
try:
_ = raw_input("> ")
if not _.startswith("print"):
print eval(_) or ""
else:
exec(_)
cmd = raw_input("> ")
try:
result = eval(cmd)
print result if result is not None else ""
except SyntaxError:
exec(cmd)
except KeyboardInterrupt:
exit(0)
except Exception, ex: