/zsh-proxy

:nut_and_bolt: An oh-my-zsh plugin to configure proxy

Primary LanguageShellMIT LicenseMIT

zsh-proxy

Author License

🔩 An oh-my-zsh plugin to configure proxy for some packages manager and software.

Installation

oh-my-zsh

Firstly, clone this repository in oh-my-zsh's plugins directory.

git clone https://github.com/sukkaw/zsh-proxy.git ~/.oh-my-zsh/custom/plugins/zsh-proxy

Secondly, activate the plugin in ~/.zshrc. Enable it by adding zsh-proxy to the plugins array.

plugins=(
    [plugins
     ...]
    zsh-proxy
)

Antigen

Antigen is a zsh plugin manager, and it support oh-my-zsh plugin as well. You only need to add antigen bundle sukkaw/zsh-proxy to your .zshrc with your other bundle commands if you are using Antigen. Antigen will handle cloning the plugin for you automatically the next time you start zsh. You can also add the plugin to a running zsh with antigen bundle sukkaw/zsh-proxy for testing before adding it to your .zshrc.


Congratulations! Open a new terminal or run source $HOME/.zshrc. If you see following lines, you have successfully installed zsh-proxy:

----------------------------------------
You should run following command first:
$ init_proxy
----------------------------------------

Usage

init_proxy

The tip mentioned below will show up next time you open a new terminal if you haven't initialized the plugin with init_proxy.

After you run init_proxy, it is time to configure the plugin.

config_proxy

Execute config_proxy will lead you to zsh-proxy configuration. Fill in socks5 & http proxy address in format address:port like 127.0.0.1:1080 & 127.0.0.1:8080.

Default configuration of socks5 proxy is 127.0.0.1:1080, and http proxy is 127.0.0.1:8080. You can leave any of them blank during configuration to use their default configuration.

Currently zsh-proxy doesn't support proxy with authentication, but I am working on it.

proxy

After you configure the zsh-proxy, you are good to go. Try following command will enable proxy for supported package manager & software:

$ proxy

And next time you open a new terminal, zsh-proxy will automatically enable proxy for you.

noproxy

If you want to disable proxy, you can run following command:

$ noproxy

myip

If you forget whether you have enabled proxy or not, it is fine to run proxy command directly, as proxy will reset all the proxy before enable them. But the smarter way is to use following command to check which IP you are using now:

$ myip

Check procedure will use curl and the IP data come from ipip.net, ip.cn & ip.gs.

Uninstallation

If you install zsh-proxy with Antigen, you need to remove antigen bundle sukkaw/zsh-proxy to disable the plugin. If you install zsh-proxy with oh-myzsh, you need to remove zsh-proxy item from plugin array, then run rm -rf ~/.oh-my-zsh/custom/plugins/zsh-proxy to remove the plugin.

And you can clean up files & folders created by zsh-proxy using following command:

$ rm -rf ~/.zsh-proxy

Supported

zsh-proxy currently support those package manager & software:

  • http_proxy
  • https_proxy
  • ftp_proxy
  • rsync_proxy
  • all_proxy
  • git (http)
  • npm & yarn
  • apt

Todo List

  • socks5 & http proxy with authentication.
  • check whether the program exist before enable proxy for it
  • proxy for sudo user (env_keep or sorts of things)
  • proxy for:
    • yum
    • pip
    • gradle
    • git with ssh
    • gem
  • no_proxy config
  • learn some from arch wiki

Author

zsh-proxy © Sukka, Released under the MIT License.
Authored and maintained by Sukka with help from contributors (list).

Personal Website · Blog · GitHub @SukkaW · Telegram Channel @SukkaChannel · Twitter @isukkaw · Keybase @sukka