diff options
author | septs <github@septs.pw> | 2022-04-12 19:26:22 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-12 13:26:22 +0200 |
commit | 9fa3f4612224ed1db75d2e3cf1fc8d09d76adb45 (patch) | |
tree | 5f7ad1b450a78d20e2fcf3bf124b460d9c67314c /plugins/shell-proxy/ssh-proxy.py | |
parent | 846f417eb8ec76e8eee70000e289b8b81f19d480 (diff) | |
download | zsh-9fa3f4612224ed1db75d2e3cf1fc8d09d76adb45.tar.gz zsh-9fa3f4612224ed1db75d2e3cf1fc8d09d76adb45.tar.bz2 zsh-9fa3f4612224ed1db75d2e3cf1fc8d09d76adb45.zip |
fix(shell-proxy): make ssh-proxy compatible with macOS (#10640)
Diffstat (limited to 'plugins/shell-proxy/ssh-proxy.py')
-rwxr-xr-x | plugins/shell-proxy/ssh-proxy.py | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/plugins/shell-proxy/ssh-proxy.py b/plugins/shell-proxy/ssh-proxy.py index 6773a77bc..a498c84bc 100755 --- a/plugins/shell-proxy/ssh-proxy.py +++ b/plugins/shell-proxy/ssh-proxy.py @@ -20,14 +20,17 @@ proxy_protocols = { if parsed.scheme not in proxy_protocols: raise TypeError('unsupported proxy protocol: "{}"'.format(parsed.scheme)) -argv = [ - "nc", - "-X", - proxy_protocols[parsed.scheme], # Supported protocols are 4 (SOCKS v4), 5 (SOCKS v5) and connect (HTTP proxy). Default SOCKS v5 is used. - "-x", - parsed.netloc, # proxy-host:proxy-port - sys.argv[1], # host - sys.argv[2], # port -] +def make_argv(): + yield "nc" + if sys.platform == 'linux': + # caveats: macOS built-in netcat command not supported proxy-type + yield "-X" # --proxy-type + # Supported protocols are 4 (SOCKS v4), 5 (SOCKS v5) and connect (HTTP proxy). + # Default SOCKS v5 is used. + yield proxy_protocols[parsed.scheme] + yield "-x" # --proxy + yield parsed.netloc # proxy-host:proxy-port + yield sys.argv[1] # host + yield sys.argv[2] # port -subprocess.call(argv) +subprocess.call(make_argv()) |