Created
January 4, 2020 19:26
-
-
Save shouth/51f53e7ba0009cf22517b0d3b8f707b3 to your computer and use it in GitHub Desktop.
Detect Wi-Fi connection to KITnet and switch proxy variables of gnome desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
user=$(users | cut -d ' ' -f1) | |
user_gnome_pid=$(pgrep -U $user gnome-session | head -n 1) | |
user_gnome_dbus_session=$(strings "/proc/$user_gnome_pid/environ" | grep DBUS_SESSION_BUS_ADDRESS) | |
export $user_gnome_dbus_session | |
host='proxy.cis.kit.ac.jp' | |
port='8080' | |
case "$2" in | |
"up" ) | |
access_point=$(iwgetid -r) | |
case "$access_point" in | |
"KITnet" | "KITnetW" ) | |
filename="/tmp/kit-proxy-$access_point-$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)" | |
touch "$filename" | |
echo "ACCESS_POINT='$access_point'" >> "$filename" | |
echo "PROXY_MODE=$(sudo -u $user -E gsettings get org.gnome.system.proxy mode)" >> "$filename" | |
echo "PROXY_HTTP_HOST=$(sudo -u $user -E gsettings get org.gnome.system.proxy.http host)" >> "$filename" | |
echo "PROXY_HTTP_PORT=$(sudo -u $user -E gsettings get org.gnome.system.proxy.http port)" >> "$filename" | |
echo "PROXY_HTTPS_HOST=$(sudo -u $user -E gsettings get org.gnome.system.proxy.https host)" >> "$filename" | |
echo "PROXY_HTTPS_PORT=$(sudo -u $user -E gsettings get org.gnome.system.proxy.https port)" >> "$filename" | |
echo "PROXY_FTP_HOST=$(sudo -u $user -E gsettings get org.gnome.system.proxy.ftp host)" >> "$filename" | |
echo "PROXY_FTP_PORT=$(sudo -u $user -E gsettings get org.gnome.system.proxy.ftp port)" >> "$filename" | |
echo "PROXY_SOCKS_HOST=$(sudo -u $user -E gsettings get org.gnome.system.proxy.socks host)" >> "$filename" | |
echo "PROXY_SOCKS_PORT=$(sudo -u $user -E gsettings get org.gnome.system.proxy.socks port)" >> "$filename" | |
echo "PROXY_IGNORE_HOSTS=\"$(sudo -u $user -E gsettings get org.gnome.system.proxy ignore-hosts)\"" >> "$filename" | |
sudo -u $user -E gsettings set org.gnome.system.proxy mode 'manual' | |
sudo -u $user -E gsettings set org.gnome.system.proxy.http host $host | |
sudo -u $user -E gsettings set org.gnome.system.proxy.http port $port | |
sudo -u $user -E gsettings set org.gnome.system.proxy.https host $host | |
sudo -u $user -E gsettings set org.gnome.system.proxy.https port $port | |
sudo -u $user -E gsettings set org.gnome.system.proxy.ftp host $host | |
sudo -u $user -E gsettings set org.gnome.system.proxy.ftp port $port | |
sudo -u $user -E gsettings set org.gnome.system.proxy.socks host '' | |
sudo -u $user -E gsettings set org.gnome.system.proxy.socks port '' | |
sudo -u $user -E gsettings set org.gnome.system.proxy ignore-hosts "['sp-sw01.cis.kit.ac.jp', 'netauth.cis.kit.ac.jp', 'auth.cis.kit.ac.jp', 'localhost', '127.0.0.0/8', '10.0.0.0/8', '172.16.0.0/12', '192.168.0.0/16']" | |
sudo -u $user -E notify-send "Enabled proxy settings for $access_point" | |
;; | |
esac | |
;; | |
"down" ) | |
for file in /tmp/kit-proxy-*; do [[ -f "$file" ]] && . "$file"; done | |
if [[ "$ACCESS_POINT" != '' ]]; then | |
sudo -u $user -E gsettings set org.gnome.system.proxy mode "$PROXY_MODE" | |
sudo -u $user -E gsettings set org.gnome.system.proxy.http host "$PROXY_HTTP_HOST" | |
sudo -u $user -E gsettings set org.gnome.system.proxy.http port "$PROXY_HTTP_PORT" | |
sudo -u $user -E gsettings set org.gnome.system.proxy.https host "$PROXY_HTTPS_HOST" | |
sudo -u $user -E gsettings set org.gnome.system.proxy.https port "$PROXY_HTTPS_PORT" | |
sudo -u $user -E gsettings set org.gnome.system.proxy.ftp host "$PROXY_FTP_HOST" | |
sudo -u $user -E gsettings set org.gnome.system.proxy.ftp port "$PROXY_FTP_PORT" | |
sudo -u $user -E gsettings set org.gnome.system.proxy.socks host "$PROXY_SOCKS_HOST" | |
sudo -u $user -E gsettings set org.gnome.system.proxy.socks port "$PROXY_SOCKS_PORT" | |
sudo -u $user -E gsettings set org.gnome.system.proxy ignore-hosts "$PROXY_IGNORE_HOSTS" | |
sudo -u $user -E notify-send "Disabled proxy settings for $ACCESS_POINT" | |
fi | |
find /tmp/kit-proxy-* -exec rm {} \; | |
;; | |
esac |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This script runs on Ubuntu18.04 with NetworkManager. To use this script, just put this script under
/etc/NetworkManager/dispatcher.d
and runsudo systemctl restart NetworkManager.service