Ruize Tang 53c4c4671a fix(shell-proxy): support ssh-proxy using http proxy in cygwin (#12340) 2 weeks ago
..
.editorconfig 9fa3f46122 fix(shell-proxy): make ssh-proxy compatible with macOS (#10640) 2 years ago
README.md f36c6db0ea feat(shell-proxy): allow excluding endpoints with `NO_PROXY` (#11924) 7 months ago
proxy.py f36c6db0ea feat(shell-proxy): allow excluding endpoints with `NO_PROXY` (#11924) 7 months ago
shell-proxy.plugin.zsh f36c6db0ea feat(shell-proxy): allow excluding endpoints with `NO_PROXY` (#11924) 7 months ago
ssh-agent.py d57131dc49 fix(shell-proxy): change NAME env variable for WSL clash (#9447) 3 years ago
ssh-proxy.py 53c4c4671a fix(shell-proxy): support ssh-proxy using http proxy in cygwin (#12340) 2 weeks ago

README.md

shell-proxy plugin

This a pure user-space program, shell-proxy setter, written in Python3 and Zsh.

To use it, add shell-proxy to the plugins array in your zshrc file:

plugins=(... shell-proxy)

Key features

  • Supports macOS and Linux (Ubuntu, Archlinux, etc.)
  • Supports git via setting $GIT_SSH
  • Supports ssh, sftp, scp, slogin and ssh-copy-id via setting aliases
  • Built-in autocomplete

Usage

Method 1

Set SHELLPROXY_URL environment variable to the URL of the proxy server:

SHELLPROXY_URL="http://127.0.0.1:8123"
SHELLPROXY_NO_PROXY="localhost,127.0.0.1"
proxy enable

Method 2

Write a program file in $HOME/.config/proxy so that the proxy URL is defined dynamically. Note that the program file must be executable.

Example:

#!/bin/bash

# HTTP Proxy
if [[ "$(uname)" = Darwin ]]; then
  echo "http://127.0.0.1:6152" # Surge Mac
else
  echo "http://127.0.0.1:8123" # polipo
fi

# No Proxy
echo "localhost,127.0.0.1"

Method 3

Use method 2 but define the location of the program file by setting the SHELLPROXY_CONFIG environment variable:

SHELLPROXY_CONFIG="$HOME/.dotfiles/proxy-config"

Reference

Maintainer