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) 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()

View File

@ -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)

View File

@ -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: