diff --git a/plugins/available/proxy.plugin.bash b/plugins/available/proxy.plugin.bash new file mode 100644 index 00000000..3d05d79c --- /dev/null +++ b/plugins/available/proxy.plugin.bash @@ -0,0 +1,251 @@ +cite about-plugin +about-plugin 'Proxy Tools' + +disable_proxy () +{ + about 'Disables proxy settings for Bash, npm and SSH' + group 'proxy' + + unset http_proxy + unset https_proxy + unset ALL_PROXY + echo "Disabled proxy environment variables" + + npm_disable_proxy + ssh_disable_proxy +} + +enable_proxy () +{ + about 'Enables proxy settings for Bash, npm and SSH' + group 'proxy' + + export http_proxy=$BASH_IT_HTTP_PROXY + export https_proxy=$BASH_IT_HTTPS_PROXY + export ALL_PROXY=$BASH_IT_HTTP_PROXY + echo "Enabled proxy environment variables" + + npm_enable_proxy + ssh_enable_proxy +} + +show_proxy () +{ + about 'Shows the proxy settings for Bash, Git, npm and SSH' + group 'proxy' + + echo "" + echo "Environment Variables" + echo "=====================" + env | grep "proxy" + env | grep "ALL_PROXY" + + bash_it_show_proxy + npm_show_proxy + git_global_show_proxy + ssh_show_proxy +} + +proxy_help () +{ + about 'Provides an overview of the bash-it proxy configuration' + group 'proxy' + + echo "" + echo "bash-it uses the variables BASH_IT_HTTP_PROXY and BASH_IT_HTTPS_PROXY to set the shell's" + echo "proxy settings when you call 'enable_proxy'. These variables are best defined in a custom" + echo "script in bash-it's custom script folder ($BASH_IT/custom)," + echo "e.g. $BASH_IT/custom/proxy.env.bash" + + bash_it_show_proxy +} + +bash_it_show_proxy () +{ + about 'Shows the bash-it proxy settings' + group 'proxy' + + echo "" + echo "bash-it Environment Variables" + echo "=============================" + echo "(These variables will be used to set the proxy when you call 'enable_proxy')" + echo "" + env | grep -e "BASH_IT.*PROXY" +} + +npm_show_proxy () +{ + about 'Shows the npm proxy settings' + group 'proxy' + + if $(command -v npm &> /dev/null) ; then + echo "" + echo "npm" + echo "===" + echo "npm HTTP proxy: " `npm config get proxy` + echo "npm HTTPS proxy: " `npm config get https-proxy` + fi +} + +npm_disable_proxy () +{ + about 'Disables npm proxy settings' + group 'proxy' + + if $(command -v npm &> /dev/null) ; then + npm config delete proxy + npm config delete https-proxy + echo "Disabled npm proxy settings" + fi +} + +npm_enable_proxy () +{ + about 'Enables npm proxy settings' + group 'proxy' + + if $(command -v npm &> /dev/null) ; then + npm config set proxy $BASH_IT_HTTP_PROXY + npm config set https-proxy $BASH_IT_HTTPS_PROXY + echo "Enabled npm proxy settings" + fi +} + +git_global_show_proxy () +{ + about 'Shows global Git proxy settings' + group 'proxy' + + if $(command -v git &> /dev/null) ; then + echo "" + echo "Git (Global Settings)" + echo "=====================" + echo "Git (Global) HTTP proxy: " `git config --global --get http.proxy` + echo "Git (Global) HTTPS proxy: " `git config --global --get https.proxy` + fi +} + +git_global_disable_proxy () +{ + about 'Disables global Git proxy settings' + group 'proxy' + + if $(command -v git &> /dev/null) ; then + git config --global --unset-all http.proxy + git config --global --unset-all https.proxy + echo "Disabled global Git proxy settings" + fi +} + +git_global_enable_proxy () +{ + about 'Enables global Git proxy settings' + group 'proxy' + + if $(command -v git &> /dev/null) ; then + git_global_disable_proxy + + git config --global --add http.proxy $BASH_IT_HTTP_PROXY + git config --global --add https.proxy $BASH_IT_HTTPS_PROXY + echo "Enabled global Git proxy settings" + fi +} + +git_show_proxy () +{ + about 'Shows current Git project proxy settings' + group 'proxy' + + if $(command -v git &> /dev/null) ; then + echo "Git Project Proxy Settings" + echo "=====================" + echo "Git HTTP proxy: " `git config --get http.proxy` + echo "Git HTTPS proxy: " `git config --get https.proxy` + fi +} + +git_disable_proxy () +{ + about 'Disables current Git project proxy settings' + group 'proxy' + + if $(command -v git &> /dev/null) ; then + git config --unset-all http.proxy + git config --unset-all https.proxy + echo "Disabled Git project proxy settings" + fi +} + +git_enable_proxy () +{ + about 'Enables current Git project proxy settings' + group 'proxy' + + if $(command -v git &> /dev/null) ; then + git_disable_proxy + + git config --add http.proxy $BASH_IT_HTTP_PROXY + git config --add https.proxy $BASH_IT_HTTPS_PROXY + echo "Enabled Git project proxy settings" + fi +} + +ssh_show_proxy () +{ + about 'Shows SSH config proxy settings (from ~/.ssh/config)' + group 'proxy' + + if [ -f ~/.ssh/config ] ; then + echo "" + echo "SSH Config Enabled in ~/.ssh/config" + echo "===================================" + awk ' + $1 == "Host" { + host = $2; + next; + } + $1 == "ProxyCommand" { + $1 = ""; + printf "%s\t%s\n", host, $0 + } + ' ~/.ssh/config | column -t + + echo "" + echo "SSH Config Disabled in ~/.ssh/config" + echo "====================================" + awk ' + $1 == "Host" { + host = $2; + next; + } + $0 ~ "^#.*ProxyCommand.*" { + $1 = ""; + $2 = ""; + printf "%s\t%s\n", host, $0 + } + ' ~/.ssh/config | column -t + fi +} + +ssh_disable_proxy () +{ + about 'Disables SSH config proxy settings' + group 'proxy' + + if [ -f ~/.ssh/config ] ; then + sed -e's/^.*ProxyCommand/# ProxyCommand/' -i "" ~/.ssh/config + echo "Disabled SSH config proxy settings" + fi +} + + +ssh_enable_proxy () +{ + about 'Enables SSH config proxy settings' + group 'proxy' + + if [ -f ~/.ssh/config ] ; then + sed -e's/# ProxyCommand/ ProxyCommand/' -i "" ~/.ssh/config + echo "Enabled SSH config proxy settings" + fi +}