diff options
-rw-r--r-- | .appveyor.yml | 10 | ||||
-rw-r--r-- | mitmproxy/tools/console/common.py | 6 | ||||
-rw-r--r-- | mitmproxy/tools/console/master.py | 2 | ||||
-rw-r--r-- | mitmproxy/tools/console/window.py | 13 |
4 files changed, 26 insertions, 5 deletions
diff --git a/.appveyor.yml b/.appveyor.yml index 909a9149..160cdf73 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -46,8 +46,9 @@ test_script: ) { echo "Decrypt license..." tox -e rtool -- decrypt release\installbuilder\license.xml.enc release\installbuilder\license.xml + $ibVersion = "17.9.0" $ibSetup = "C:\projects\mitmproxy\release\installbuilder-installer.exe" - $ibVersion = "17.4.0" + $ibCli = "C:\Program Files (x86)\BitRock InstallBuilder Enterprise $ibVersion\bin\builder-cli.exe" if (!(Test-Path $ibSetup)) { echo "Download InstallBuilder..." (New-Object System.Net.WebClient).DownloadFile( @@ -56,15 +57,18 @@ test_script: ) } echo "Install InstallBuilder..." - Start-Process $ibSetup "--mode unattended --unattendedmodeui none" -Wait + Start-Process $ibSetup "--mode unattended --unattendedmodeui none" -PassThru -NoNewWindow -Wait + # Wait until executable exists - no idea why this is necessary. + while (!(Test-Path $ibCli)) { Start-Sleep 0.1 } echo "Run InstallBuilder..." - & "C:\Program Files (x86)\BitRock InstallBuilder Enterprise $ibVersion\bin\builder-cli.exe" ` + &$ibCli ` build ` .\release\installbuilder\mitmproxy.xml ` windows ` --license .\release\installbuilder\license.xml ` --setvars project.version=$Env:VERSION ` --verbose + while (!(Test-Path C:\projects\mitmproxy\release\dist\mitmproxy-*-windows-installer.exe)) { Start-Sleep 0.1 } echo "Installer build completed." } diff --git a/mitmproxy/tools/console/common.py b/mitmproxy/tools/console/common.py index de024d1a..47a30272 100644 --- a/mitmproxy/tools/console/common.py +++ b/mitmproxy/tools/console/common.py @@ -1,9 +1,13 @@ +import platform + import urwid import urwid.util from functools import lru_cache from mitmproxy.utils import human +# Detect Windows Subsystem for Linux +IS_WSL = "Microsoft" in platform.platform() METHOD_OPTIONS = [ ("get", "g"), @@ -90,7 +94,7 @@ def fcol(s, attr): ) -if urwid.util.detected_encoding: +if urwid.util.detected_encoding and not IS_WSL: SYMBOL_REPLAY = u"\u21ba" SYMBOL_RETURN = u"\u2190" SYMBOL_MARK = u"\u25cf" diff --git a/mitmproxy/tools/console/master.py b/mitmproxy/tools/console/master.py index 0d9dee9b..4c7f9cc1 100644 --- a/mitmproxy/tools/console/master.py +++ b/mitmproxy/tools/console/master.py @@ -176,7 +176,7 @@ class ConsoleMaster(master.Master): "Please run mitmproxy in an interactive shell environment.", file=sys.stderr) sys.exit(1) - self.ui = urwid.raw_display.Screen() + self.ui = window.Screen() self.ui.set_terminal_properties(256) self.set_palette(self.options, None) self.options.subscribe( diff --git a/mitmproxy/tools/console/window.py b/mitmproxy/tools/console/window.py index 6145b645..c6ff78f8 100644 --- a/mitmproxy/tools/console/window.py +++ b/mitmproxy/tools/console/window.py @@ -1,4 +1,7 @@ +import re + import urwid +from mitmproxy.tools.console import common from mitmproxy.tools.console import signals from mitmproxy.tools.console import statusbar from mitmproxy.tools.console import flowlist @@ -274,3 +277,13 @@ class Window(urwid.Frame): k = fs.keypress(size, k) if k: return self.master.keymap.handle(fs.keyctx, k) + + +class Screen(urwid.raw_display.Screen): + + def write(self, data): + if common.IS_WSL: + # replace urwid's SI/SO, which produce artifacts under WSL. + # at some point we may figure out what they actually do. + data = re.sub("[\x0e\x0f]", "", data) + super().write(data) |