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

Skip to content

Commit ec80009

Browse files
committed
Minor refactoring
1 parent 19e0841 commit ec80009

3 files changed

Lines changed: 80 additions & 52 deletions

File tree

lib/core/log.py

Lines changed: 73 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"""
77

88
import logging
9+
import re
910
import sys
1011

1112
from lib.core.enums import CUSTOM_LOGGING
@@ -20,6 +21,77 @@
2021
try:
2122
from thirdparty.ansistrm.ansistrm import ColorizingStreamHandler
2223

24+
class _ColorizingStreamHandler(ColorizingStreamHandler):
25+
def colorize(self, message, levelno):
26+
if levelno in self.level_map and self.is_tty:
27+
bg, fg, bold = self.level_map[levelno]
28+
params = []
29+
30+
if bg in self.color_map:
31+
params.append(str(self.color_map[bg] + 40))
32+
33+
if fg in self.color_map:
34+
params.append(str(self.color_map[fg] + 30))
35+
36+
if bold:
37+
params.append('1')
38+
39+
if params and message:
40+
match = re.search(r"\A(\s+)", message)
41+
prefix = match.group(1) if match else ""
42+
message = message[len(prefix):]
43+
44+
match = re.search(r"\[([A-Z ]+)\]", message) # log level
45+
if match:
46+
level = match.group(1)
47+
if message.startswith(self.bold):
48+
message = message.replace(self.bold, "")
49+
reset = self.reset + self.bold
50+
params.append('1')
51+
else:
52+
reset = self.reset
53+
message = message.replace(level, ''.join((self.csi, ';'.join(params), 'm', level, reset)), 1)
54+
55+
match = re.search(r"\A\s*\[([\d:]+)\]", message) # time
56+
if match:
57+
time = match.group(1)
58+
message = message.replace(time, ''.join((self.csi, str(self.color_map["cyan"] + 30), 'm', time, self._reset(message))), 1)
59+
60+
match = re.search(r"\[(#\d+)\]", message) # counter
61+
if match:
62+
counter = match.group(1)
63+
message = message.replace(counter, ''.join((self.csi, str(self.color_map["yellow"] + 30), 'm', counter, self._reset(message))), 1)
64+
65+
if level != "PAYLOAD":
66+
if any(_ in message for _ in ("parsed DBMS error message",)):
67+
match = re.search(r": '(.+)'", message)
68+
if match:
69+
string = match.group(1)
70+
message = message.replace("'%s'" % string, "'%s'" % ''.join((self.csi, str(self.color_map["white"] + 30), 'm', string, self._reset(message))), 1)
71+
else:
72+
match = re.search(r"\bresumed: '(.+\.\.\.)", message)
73+
if match:
74+
string = match.group(1)
75+
message = message.replace("'%s" % string, "'%s" % ''.join((self.csi, str(self.color_map["white"] + 30), 'm', string, self._reset(message))), 1)
76+
else:
77+
match = re.search(r" \('(.+)'\)\Z", message)
78+
if match:
79+
string = match.group(1)
80+
message = message.replace("'%s'" % string, "'%s'" % ''.join((self.csi, str(self.color_map["white"] + 30), 'm', string, self._reset(message))), 1)
81+
else:
82+
for match in re.finditer(r"[^\w]'([^']+)'", message): # single-quoted
83+
string = match.group(1)
84+
message = message.replace("'%s'" % string, "'%s'" % ''.join((self.csi, str(self.color_map["white"] + 30), 'm', string, self._reset(message))), 1)
85+
else:
86+
message = ''.join((self.csi, ';'.join(params), 'm', message, self.reset))
87+
88+
if prefix:
89+
message = "%s%s" % (prefix, message)
90+
91+
message = message.replace("%s]" % self.bold, "]%s" % self.bold) # dirty patch
92+
93+
return message
94+
2395
disableColor = False
2496

2597
for argument in sys.argv:
@@ -30,7 +102,7 @@
30102
if disableColor:
31103
LOGGER_HANDLER = logging.StreamHandler(sys.stdout)
32104
else:
33-
LOGGER_HANDLER = ColorizingStreamHandler(sys.stdout)
105+
LOGGER_HANDLER = _ColorizingStreamHandler(sys.stdout)
34106
LOGGER_HANDLER.level_map[logging.getLevelName("PAYLOAD")] = (None, "cyan", False)
35107
LOGGER_HANDLER.level_map[logging.getLevelName("TRAFFIC OUT")] = (None, "magenta", False)
36108
LOGGER_HANDLER.level_map[logging.getLevelName("TRAFFIC IN")] = ("magenta", None, False)

lib/core/settings.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
from thirdparty.six import unichr as _unichr
1919

2020
# sqlmap version (<major>.<minor>.<month>.<monthly commit>)
21-
VERSION = "1.4.2.20"
21+
VERSION = "1.4.2.21"
2222
TYPE = "dev" if VERSION.count('.') > 2 and VERSION.split('.')[-1] != '0' else "stable"
2323
TYPE_COLORS = {"dev": 33, "stable": 90, "pip": 34}
2424
VERSION_STRING = "sqlmap/%s#%s" % ('.'.join(VERSION.split('.')[:-1]) if VERSION.count('.') > 2 and VERSION.split('.')[-1] == '0' else VERSION, TYPE)

thirdparty/ansistrm/ansistrm.py

Lines changed: 6 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -156,58 +156,14 @@ def colorize(self, message, levelno):
156156
params.append('1')
157157

158158
if params and message:
159-
match = re.search(r"\A(\s+)", message)
160-
prefix = match.group(1) if match else ""
161-
message = message[len(prefix):]
162-
163-
match = re.search(r"\[([A-Z ]+)\]", message) # log level
164-
if match:
165-
level = match.group(1)
166-
if message.startswith(self.bold):
167-
message = message.replace(self.bold, "")
168-
reset = self.reset + self.bold
169-
params.append('1')
170-
else:
171-
reset = self.reset
172-
message = message.replace(level, ''.join((self.csi, ';'.join(params), 'm', level, reset)), 1)
173-
174-
match = re.search(r"\A\s*\[([\d:]+)\]", message) # time
175-
if match:
176-
time = match.group(1)
177-
message = message.replace(time, ''.join((self.csi, str(self.color_map["cyan"] + 30), 'm', time, self._reset(message))), 1)
178-
179-
match = re.search(r"\[(#\d+)\]", message) # counter
180-
if match:
181-
counter = match.group(1)
182-
message = message.replace(counter, ''.join((self.csi, str(self.color_map["yellow"] + 30), 'm', counter, self._reset(message))), 1)
183-
184-
if level != "PAYLOAD":
185-
if any(_ in message for _ in ("parsed DBMS error message",)):
186-
match = re.search(r": '(.+)'", message)
187-
if match:
188-
string = match.group(1)
189-
message = message.replace("'%s'" % string, "'%s'" % ''.join((self.csi, str(self.color_map["white"] + 30), 'm', string, self._reset(message))), 1)
190-
else:
191-
match = re.search(r"\bresumed: '(.+\.\.\.)", message)
192-
if match:
193-
string = match.group(1)
194-
message = message.replace("'%s" % string, "'%s" % ''.join((self.csi, str(self.color_map["white"] + 30), 'm', string, self._reset(message))), 1)
195-
else:
196-
match = re.search(r" \('(.+)'\)\Z", message)
197-
if match:
198-
string = match.group(1)
199-
message = message.replace("'%s'" % string, "'%s'" % ''.join((self.csi, str(self.color_map["white"] + 30), 'm', string, self._reset(message))), 1)
200-
else:
201-
for match in re.finditer(r"[^\w]'([^']+)'", message): # single-quoted
202-
string = match.group(1)
203-
message = message.replace("'%s'" % string, "'%s'" % ''.join((self.csi, str(self.color_map["white"] + 30), 'm', string, self._reset(message))), 1)
159+
if message.lstrip() != message:
160+
prefix = re.search(r"\s+", message).group(0)
161+
message = message[len(prefix):]
204162
else:
205-
message = ''.join((self.csi, ';'.join(params), 'm', message, self.reset))
206-
207-
if prefix:
208-
message = "%s%s" % (prefix, message)
163+
prefix = ""
209164

210-
message = message.replace("%s]" % self.bold, "]%s" % self.bold) # dirty patch
165+
message = "%s%s" % (prefix, ''.join((self.csi, ';'.join(params),
166+
'm', message, self.reset)))
211167

212168
return message
213169

0 commit comments

Comments
 (0)