mirror of
https://github.com/sqlmapproject/sqlmap.git
synced 2025-12-20 22:49:01 +00:00
Where things could go kaboom (changing terminal coloring)
This commit is contained in:
35
thirdparty/ansistrm/ansistrm.py
vendored
35
thirdparty/ansistrm/ansistrm.py
vendored
@@ -1,6 +1,8 @@
|
||||
#
|
||||
# Copyright (C) 2010-2012 Vinay Sajip. All rights reserved. Licensed under the new BSD license.
|
||||
# (Note: 2018 modifications by @stamparm)
|
||||
#
|
||||
|
||||
import logging
|
||||
import os
|
||||
import re
|
||||
@@ -127,9 +129,9 @@ class ColorizingStreamHandler(logging.StreamHandler):
|
||||
|
||||
ctypes.windll.kernel32.SetConsoleTextAttribute(h, color)
|
||||
|
||||
def colorize(self, message, record):
|
||||
if record.levelno in self.level_map and self.is_tty:
|
||||
bg, fg, bold = self.level_map[record.levelno]
|
||||
def colorize(self, message, levelno):
|
||||
if levelno in self.level_map and self.is_tty:
|
||||
bg, fg, bold = self.level_map[levelno]
|
||||
params = []
|
||||
|
||||
if bg in self.color_map:
|
||||
@@ -148,11 +150,32 @@ class ColorizingStreamHandler(logging.StreamHandler):
|
||||
else:
|
||||
prefix = ""
|
||||
|
||||
message = "%s%s" % (prefix, ''.join((self.csi, ';'.join(params),
|
||||
'm', message, self.reset)))
|
||||
match = re.search(r"\[([A-Z]+)\]", message)
|
||||
if match:
|
||||
level = match.group(1)
|
||||
if message.startswith("\x1b[1m"):
|
||||
message = message.replace("\x1b[1m", "")
|
||||
reset = self.reset + "\x1b[1m"
|
||||
params.append('1')
|
||||
else:
|
||||
reset = self.reset
|
||||
message = message.replace(level, ''.join((self.csi, ';'.join(params), 'm', level, reset)), 1)
|
||||
else:
|
||||
message = "%s%s" % (prefix, ''.join((self.csi, ';'.join(params), 'm', message, self.reset)))
|
||||
|
||||
match = re.search(r"\A\s*\[([\d:]+)\]", message)
|
||||
if match:
|
||||
time = match.group(1)
|
||||
if not message.endswith(self.reset):
|
||||
reset = self.reset
|
||||
elif message.startswith("\x1b[1m"): # bold
|
||||
reset = self.reset + "\x1b[1m"
|
||||
else:
|
||||
reset = self.reset
|
||||
message = message.replace(time, ''.join((self.csi, str(self.color_map["cyan"] + 30), 'm', time, reset)), 1)
|
||||
|
||||
return message
|
||||
|
||||
def format(self, record):
|
||||
message = logging.StreamHandler.format(self, record)
|
||||
return self.colorize(message, record)
|
||||
return self.colorize(message, record.levelno)
|
||||
|
||||
Reference in New Issue
Block a user