Skip to content

Instantly share code, notes, and snippets.

@likair
Created February 3, 2023 19:22
Show Gist options
  • Save likair/095d565969a149f5c61da7d83ec32289 to your computer and use it in GitHub Desktop.
Save likair/095d565969a149f5c61da7d83ec32289 to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash
# This script is used to set proxy environment variables
# and proxy settings for gnome, apt and docker.
##############################################################
# Configuration (change these values to your proxy settings)
PROXY_HOST=
PROXY_PORT=
PROXY_PAC=
NO_PROXY=
GNOME_PROXY_MODE=auto
##############################################################
PROXY="http://$PROXY_HOST:$PROXY_PORT/"
# Set proxy environment variables
export http_proxy=$PROXY
export HTTP_PROXY=$PROXY
export https_proxy=$PROXY
export HTTPS_PROXY=$PROXY
export ftp_proxy=$PROXY
export FTP_PROXY=$PROXY
export socks_proxy=$PROXY
export SOCKS_PROXY=$PROXY
export all_proxy=$PROXY
export ALL_PROXY=$PROXY
export no_proxy=$NO_PROXY
export NO_PROXY=$no_proxy
if [ "auto" = "$GNOME_PROXY_MODE" ]; then
echo "Set Gnome system proxy as auto mode."
gsettings set org.gnome.system.proxy mode 'auto'
gsettings set org.gnome.system.proxy autoconfig-url "${PROXY_PAC}"
else
echo "Set Gnome system proxy as manual mode"
gsettings set org.gnome.system.proxy mode 'manual';
gsettings set org.gnome.system.proxy.http host "'$PROXY_HOST'";
gsettings set org.gnome.system.proxy.http port $PROXY_PORT;
gsettings set org.gnome.system.proxy.https host "'$PROXY_HOST'";
gsettings set org.gnome.system.proxy.https port $PROXY_PORT;
gsettings set org.gnome.system.proxy.ftp host "'$PROXY_HOST'";
gsettings set org.gnome.system.proxy.ftp port $PROXY_PORT;
gsettings set org.gnome.system.proxy.socks host "'$PROXY_HOST'";
gsettings set org.gnome.system.proxy.socks port $PROXY_PORT;
fi
echo "Set apt proxy: /etc/apt/apt.conf.d/proxy"
cat <<_EOF_ | sudo tee /etc/apt/apt.conf.d/proxy > /dev/null
Acquire::http::Proxy "${PROXY}";
Acquire::https::Proxy "${PROXY}";
Acquire::ftp::Proxy "${PROXY}";
_EOF_
echo "Set docker proxy: /etc/systemd/system/docker.service.d/http-proxy.conf"
sudo mkdir -p /etc/systemd/system/docker.service.d
cat <<_EOF_ | sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf > /dev/null
[Service]
Environment="HTTP_PROXY=${PROXY}"
Environment="HTTPS_PROXY=${PROXY}"
Environment="NO_PROXY=${NO_PROXY}"
_EOF_
docker info | grep -i "HTTP Proxy:" > /dev/null || (
echo "Restarting docker service..."
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl status docker | grep -i "active (running)" > /dev/null && echo "Docker is running." || echo "Docker is not running, check your settings.")
echo "Checking Internet..."
curl -s -I http://www.google.com | grep -i "HTTP/1.1 200 OK" > /dev/null && echo "Proxy enabled." || echo "Proxy does not work, check your settings."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment