summaryrefslogtreecommitdiff
path: root/plugins/shell-proxy/README.md
blob: 102e46b6b807751b7221de02619f5fc3b3a69ed9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# 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:

```zsh
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:

```sh
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:

```sh
#!/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](#method-2) but define the location of the program file by setting the
`SHELLPROXY_CONFIG` environment variable:

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

## Reference

- `$GIT_SSH`: <https://www.git-scm.com/docs/git#Documentation/git.txt-codeGITSSHcode>
- OpenSSH manual: <https://man.openbsd.org/ssh>

## Maintainer

- [@septs](https://github.com/septs)