Skip to content

Instantly share code, notes, and snippets.

@tiberiosantos

tiberiosantos/proxy.sh

Last active Sep 27, 2020
Embed
What would you like to do?
#!/bin/bash
# The MIT License (MIT)
#
# Copyright (c) 2016 Tiberio A. Santos
#
# Permission is hereby granted, free of charge, to any person obtaining a copy of
# this software and associated documentation files (the "Software"), to deal in
# the Software without restriction, including without limitation the rights to
# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
# the Software, and to permit persons to whom the Software is furnished to do so,
# subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# Function for proxy configuration on a linux shell
## Additional notes ##
# Include the following line on your ~/.bashrc or ~/.zshrc
# source /path/to/script/proxy.sh
# For keep sudo working after use this function, insert the following line in your /etc/sudoers:
# Defaults env_keep += "ftp_proxy http_proxy https_proxy"
green=$(tput setaf 2)
normal=$(tput sgr0)
#from https://gist.github.com/cdown/1163649
function qurl() {
local LANG=C
for ((i=0;i<${#1};i++)); do
if [[ ${1:$i:1} =~ ^[a-zA-Z0-9\.\~\_\-]$ ]]; then
printf "${1:$i:1}"
else
printf '%%%02X' "'${1:$i:1}"
fi
done
}
function proxy_on() {
server="192.168.0.1:3128"
printf "username: "
read username
printf "password: "
read -s password
username=$(qurl $username)
password=$(qurl $password)
export {http,https,ftp,rsync}_proxy="http://$username:$password@$server/"
export no_proxy="localhost,127.0.0.1"
printf "\n\n%s\n" "[ ${green}OK${normal} ] Proxy enabled."
}
function proxy_off() {
unset {http,https,ftp,rsync}_proxy
printf "\n\n%s\n" "[ ${green}OK${normal} ] Proxy disabled."
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.