From 36094611ce2c3430a9f8bb8bbe0bebf8d9cca750 Mon Sep 17 00:00:00 2001 From: Joe Testa Date: Fri, 5 Feb 2021 20:39:12 -0500 Subject: [PATCH] Fixed unicode errors when printing the man page on Windows. --- src/ssh_audit/ssh_audit.py | 17 +++++++++++------ update_windows_man_page.sh | 2 +- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/ssh_audit/ssh_audit.py b/src/ssh_audit/ssh_audit.py index 62adf53..d188d42 100755 --- a/src/ssh_audit/ssh_audit.py +++ b/src/ssh_audit/ssh_audit.py @@ -58,12 +58,13 @@ from ssh_audit.ssh_socket import SSH_Socket from ssh_audit.utils import Utils from ssh_audit.versionvulnerabilitydb import VersionVulnerabilityDB - -try: # pragma: nocover - from colorama import init as colorama_init - colorama_init(strip=False) # pragma: nocover -except ImportError: # pragma: nocover - pass +# Only import colorama under Windows. Other OSes can natively handle terminal colors. +if sys.platform == 'win32': + try: + from colorama import init as colorama_init + colorama_init() + except ImportError: + pass def usage(err: Optional[str] = None) -> None: @@ -1014,6 +1015,10 @@ def main() -> int: out = OutputBuffer() aconf = process_commandline(out, sys.argv[1:], usage) + # If we're on Windows, but the colorama module could not be imported, print a warning if we're in verbose mode. + if (sys.platform == 'win32') and ('colorama' not in sys.modules): + out.v("WARNING: colorama module not found. Colorized output will be ddisabled.", write_now=True) + # If we're outputting JSON, turn off colors and ensure 'info' level messages go through. if aconf.json: out.json = True diff --git a/update_windows_man_page.sh b/update_windows_man_page.sh index 0bf4bd0..ab27e96 100755 --- a/update_windows_man_page.sh +++ b/update_windows_man_page.sh @@ -106,7 +106,7 @@ echo "Processing man page at ${MAN_PAGE} and placing output into ${GLOBALS_PY}.. echo WINDOWS_MAN_PAGE = '"""' >> "$GLOBALS_PY" # The 'ul' tool would be necessary if running under Linux to convert the overstrike characters into ANSI escape sequences. # MANWIDTH=80 MAN_KEEP_FORMATTING=1 man "$MAN_PAGE" | ul >> "$GLOBALS_PY" -MANWIDTH=80 MAN_KEEP_FORMATTING=1 man "./$MAN_PAGE" >> "$GLOBALS_PY" +MANWIDTH=80 MAN_KEEP_FORMATTING=1 man "./$MAN_PAGE" | sed $'s/\u2010/-/g' >> "$GLOBALS_PY" echo '"""' >> "$GLOBALS_PY" echo "Done."