summaryrefslogtreecommitdiff
path: root/plugins/shell-proxy
diff options
context:
space:
mode:
authorsepts <github@septs.pw>2022-04-12 19:26:22 +0800
committerGitHub <noreply@github.com>2022-04-12 13:26:22 +0200
commit9fa3f4612224ed1db75d2e3cf1fc8d09d76adb45 (patch)
tree5f7ad1b450a78d20e2fcf3bf124b460d9c67314c /plugins/shell-proxy
parent846f417eb8ec76e8eee70000e289b8b81f19d480 (diff)
downloadzsh-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')
-rw-r--r--plugins/shell-proxy/.editorconfig3
-rwxr-xr-xplugins/shell-proxy/ssh-proxy.py23
2 files changed, 16 insertions, 10 deletions
diff --git a/plugins/shell-proxy/.editorconfig b/plugins/shell-proxy/.editorconfig
new file mode 100644
index 000000000..b7c70d16d
--- /dev/null
+++ b/plugins/shell-proxy/.editorconfig
@@ -0,0 +1,3 @@
+[*.py]
+indent_size = 4
+indent_style = space
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())