class XMLRPCServer: def __init__(self): self.reset() def reset(self): self.options = AttribDict(cmdLineOptions) def set_option(self, name, value): self.options[name] = value def get_option(self, name): return self.options[name] def get_option_names(self): return self.options.keys() def run(self): init(self.options, True) return start() def serve(self): server = SimpleXMLRPCServer(addr=("", XML_RPC_SERVER_PORT), logRequests=False, allow_none=True, encoding=UNICODE_ENCODING) server.register_introspection_functions() server.register_function(self.reset) server.register_function(self.set_option) server.register_function(self.get_option) server.register_function(self.get_option_names) server.register_function(self.run) server.serve_forever()
class XMLRPCServer: def __init__(self, port): self.port = port self.reset() self.server = SimpleXMLRPCServer(addr=("", self.port), logRequests=False, allow_none=True, encoding=UNICODE_ENCODING) for _ in dir(self): if _.startswith("serve"): continue 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) def reset(self): self.options = AttribDict(cmdLineOptions) 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 sorted(self.options.keys()) def is_busy(self): return kb.get("busyFlag") def read_output(self): sys.stdout.seek(0) retval = sys.stdout.read() sys.stdout.truncate(0) if not retval and not self.is_busy(): retval = None return retval def run(self): if not self.is_busy(): init(self.options, True) thread = threading.Thread(target=start) thread.daemon = True thread.start() else: raise Exception, "sqlmap busy" def serve(self): self.server.serve_forever()