スキップしてメイン コンテンツに移動

NetworkManager proxy設定 dispatcher

proxyだって?どこの田舎よ?

/etc/NetworkManager/dispatcher.d/99-proxy
#!/bin/bash

PATH=/bin:/usr/bin:/sbin

if [ ! -f /etc/sysconfig/proxy ]; then
  exit
fi
. /etc/sysconfig/proxy

if [ x"$2" = x"down" ]; then
  exit
fi

i=0
while [ "x$(eval echo '$'PROXYTARGET$i)x" != "xx" ]; do
  for t in `echo $(eval echo '$'PROXYTARGET$i) | sed s/:/\ /g`; do
    if [ x"$t" = x"$CONNECTION_ID" ]; then
      PROXY=$(eval echo '$'PROXYTARGET${i}_PROXY)
      NO_PROXY=$(eval echo '$'PROXYTARGET${i}_NO_PROXY)
      break
    fi
  done
  if [ -n "$PROXY" ]; then
    break
  fi
  let i=$i+1
done

if [ -n "$PROXY" ]; then
  PROXY=`echo $PROXY | sed s,http://,,`
  HOST=`echo $PROXY | cut -d: -f1`
  PORT=`echo $PROXY | cut -d: -f2|sed s,/,,g`
fi

for pid in `pgrep gnome-session`; do
  uid=`cat /proc/$pid/loginuid`
  uname=`getent passwd $uid | cut -d: -f 1`
  bus=`strings /proc/$pid/environ|grep DBUS_SESSION_BUS_ADDRESS`
  if [ -n "$PROXY" ]; then
    su -c "$bus gsettings set org.gnome.system.proxy mode manual" $uname
    su -c "$bus gsettings set org.gnome.system.proxy.http host $HOST" $uname
    su -c "$bus gsettings set org.gnome.system.proxy.http port $PORT" $uname
    su -c "$bus gsettings set org.gnome.system.proxy.https host $HOST" $uname
    su -c "$bus gsettings set org.gnome.system.proxy.https port $PORT" $uname
  else
    su -c "$bus gsettings set org.gnome.system.proxy mode none" $uname
  fi
done

/etc/sysconfig/proxy
PROXYTARGET0="プロファイル名:プロファイル名:プロファイル名"
PROXYTARGET0_PROXY="http://プロキシ:ポート/"
PROXYTARGET0_NO_PROXY="除外,リスト,たち"

PROXYTARGET? リストに一致するプロファイルに切り換えられたとき、ログインしている人のgnomeプロキシ設定を変更する。もちろん、gnome専用。
少なくとも、chromeは追従してくれるので大変便利。
追従しない子用には、libproxyを使うニセproxyをローカルに立てとけばよいかな...

コメント

このブログの人気の投稿

日産 K6384-C9910

HC308/508/309/509にバックカメラ、サイドブラインドモニタ、AV入力を繋ぐみたいなハーネス。

サイドブラインドモニタ入力はやはりB41B5-89900にぴったり。バックカメラ入力はClarion方式緑の5Pカプラ。AV入力は何が挿せるのかわからない。

HC308/508以降はClarionというよりもXanaviそのものみたいなので、まったく役にたたなかったTT
購入価格 5,000 円

今日の都電