#!/usr/bin/bash

export NMConnTmp=""
export WhoTmp=""

function SetWpad {
NMConn=$(nmcli -t -f NAME c show --active | tr '\n' ';\n')
IFS=';' read -r -a array <<< "$NMConn"

for t in "${array[@]}"; do
  WpadURL=$(nmcli -t connection show  "$t" | grep ":wpad =" | sed -e 's/.*wpad //g' | cut -d '=' -f2 | cut -d '\' -f1 | tr -d ' ')
  if [ -z "$WpadURL" ]
      then echo "$t" "не получает опцию wpad url"
  else
      nmcli connection modify "$t" proxy.method auto
      nmcli connection modify "$t" proxy.pac-url $WpadURL
      Who=$(who | awk '{ print $1,$2 }' | grep :| tr '\n' ';\n')
      IFS=';' read -r -a usarr <<< "$Who"
      for x in "${usarr[@]}"; do
          user=$(echo $x | awk '{ print $1 }')
          mon=$(echo $x | awk '{ print $2 }')
          export DISPLAY=$mon
          sudo -Hu $user gsettings set org.gnome.system.proxy mode auto
          sudo -Hu $user gsettings set org.gnome.system.proxy autoconfig-url $WpadURL
          echo "Адрес WPAD" $WpadURL "полученный на сетевом подключении" $t "прописан в настройки сетевого подключения и прокси для пользователя" $user "на дисплее" $mon
      done
  fi
done
}


while true; do
    NMConn=$(nmcli -t -f NAME c show --active | tr '\n' ';\n')
    if [ "$NMConn" != "$NMConnTmp" ]; then
        SetWpad
    fi
    Who=$(who | awk '{ print $1,$2 }' | grep :| tr '\n' ';\n')
    if [ "$Who" != "$WhoTmp" ]; then
        SetWpad
    fi
    export NMConnTmp="$NMConn"
    export WhoTmp="$Who"
    sleep 2
done


