Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit e381158

Browse files
committed
Hmmm... Let me guess. Update for an Issue #287
1 parent 921000b commit e381158

3 files changed

Lines changed: 26 additions & 13 deletions

File tree

_sqlmap.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ def xmlRpcServe():
5959
server = XMLRPCServer(cmdLineOptions.xmlRpcPort or XMLRPC_SERVER_PORT)
6060
def emit(self, record):
6161
message = stdoutencode(FORMATTER.format(record))
62-
sys.stdout.write("%s\n" % message)
62+
sys.stdout.write("%s" % message)
6363
LOGGER_HANDLER.emit = types.MethodType(emit, LOGGER_HANDLER, type(LOGGER_HANDLER))
6464
sys.stdout = StringIO.StringIO()
6565
sys.stderr = StringIO.StringIO()

lib/parse/cmdline.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -760,7 +760,8 @@ def _(self, *args):
760760
expandMnemonics(sys.argv[i+1], parser, args)
761761

762762
if not any((args.direct, args.url, args.logFile, args.bulkFile, args.googleDork, args.configFile, \
763-
args.requestFile, args.updateAll, args.smokeTest, args.liveTest, args.wizard, args.dependencies, args.purgeOutput)):
763+
args.requestFile, args.updateAll, args.smokeTest, args.liveTest, args.wizard, args.dependencies, \
764+
args.xmlRpc, args.purgeOutput)):
764765
errMsg = "missing a mandatory option (-d, -u, -l, -m, -r, -g, -c, --wizard, --update, --purge-output or --dependencies), "
765766
errMsg += "use -h for basic or -hh for advanced help"
766767
parser.error(errMsg)

lib/utils/xmlrpc.py

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import sys
99
import threading
10+
import types
1011
import xmlrpclib
1112

1213
try:
@@ -29,11 +30,9 @@ def __init__(self, port):
2930
self.reset()
3031

3132
self.server = SimpleXMLRPCServer(addr=("", self.port), logRequests=False, allow_none=True, encoding=UNICODE_ENCODING)
32-
self.server.register_function(self.reset)
33-
self.server.register_function(self.set_option)
34-
self.server.register_function(self.get_option)
35-
self.server.register_function(self.get_option_names)
36-
self.server.register_function(self.run)
33+
for _ in dir(self):
34+
if not _.startswith('_') and isinstance(getattr(self, _), types.MethodType):
35+
self.server.register_function(getattr(self, _))
3736
logger.info("Registering RPC methods: %s" % str(self.server.system_listMethods()).strip("[]"))
3837
self.server.register_introspection_functions()
3938
logger.info("Running XML-RPC server at '0.0.0.0:%d'..." % self.port)
@@ -43,16 +42,28 @@ def reset(self):
4342

4443
def set_option(self, name, value):
4544
self.options[name] = value
45+
return value
4646

4747
def get_option(self, name):
4848
return self.options[name]
4949

5050
def get_option_names(self):
51-
return self.options.keys()
51+
return sorted(self.options.keys())
5252

5353
def is_busy(self):
5454
return kb.get("busyFlag")
5555

56+
def read_output(self):
57+
retval = []
58+
for _ in ("stdout", "stderr"):
59+
stream = getattr(sys, _)
60+
stream.seek(0)
61+
retval.append(stream.read())
62+
stream.truncate(0)
63+
if not filter(None, retval) and not self.is_busy():
64+
retval = None
65+
return retval
66+
5667
def run(self):
5768
if not self.is_busy():
5869
init(self.options, True)
@@ -85,11 +96,12 @@ def serve(self):
8596
else:
8697
while True:
8798
try:
88-
_ = raw_input("> ")
89-
if not _.startswith("print"):
90-
print eval(_) or ""
91-
else:
92-
exec(_)
99+
cmd = raw_input("> ")
100+
try:
101+
result = eval(cmd)
102+
print result if result is not None else ""
103+
except SyntaxError:
104+
exec(cmd)
93105
except KeyboardInterrupt:
94106
exit(0)
95107
except Exception, ex:

0 commit comments

Comments
 (0)