#!/bin/sh # # NetworkManager trigger for in dispatcher.d # config items nmcli="nmcli" # if we're run from NM, fire of a second child after 60s for post-portal check if test $0 != "/usr/bin/fccdnsgrade"; then if test -z "`echo $* | grep DelayChild`"; then # run a second copy in 60s if run from nm hook (/etc/NetworkManager/dispatcher.d/00-fccdnsgrade-hook $* DelayChild) & else # waiting for user to authenticate at a portal sleep 60 fi fi # implementation ifname="$1" action="$2" # get ips from NetworkManager if test -x "`which $nmcli 2>&1`"; then ips="`$nmcli -f IP4,IP6 dev list | fgrep 'DNS' | awk '{print $2;}'`" else ips="`nm-tool | grep 'DNS:' | awk '{print $2;}'`" fi # fix whitespace ips=`echo $ips` if test -z "$ips"; then logger -t fccgrade "fccdnsgrade-hook(networkmanager): called without resolver IPs to check - aborted" exit 0 fi # get essid - perhaps they can make it even harder! active_connection_path="`dbus-send --system --print-reply \ --dest=org.freedesktop.NetworkManager \ /org/freedesktop/NetworkManager \ org.freedesktop.DBus.Properties.Get \ string:"org.freedesktop.NetworkManager" \ string:"ActiveConnections" \ | grep ActiveConnection/ | cut -d'"' -f2`" access_point_path="`dbus-send --system --print-reply \ --dest=org.freedesktop.NetworkManager \ "$active_connection_path" \ org.freedesktop.DBus.Properties.Get \ string:"org.freedesktop.NetworkManager.Connection.Active" \ string:"SpecificObject" \ | grep variant | cut -d'"' -f2 `" essid="`dbus-send --system --print-reply \ --dest=org.freedesktop.NetworkManager \ "$access_point_path" \ org.freedesktop.DBus.Properties.Get \ string:"org.freedesktop.NetworkManager.AccessPoint" \ string:"Ssid" \ | grep variant | cut -d'"' -f2 | sed 's/ /_/g'`" loc="$essid:`geome -q`" || loc="$essid:CaptivePortal" logger -t fccgrade "fccdnsgrade-hook(networkmanager): java -jar /usr/share/java/fccgrade.jar -m '$loc' -r $ips" report="`java -jar /usr/share/java/fccgrade.jar -m \'$loc\' -r $ips`" logger -t fccgrade $report if test $0 = "/usr/bin/fccdnsgrade"; then echo $report fi exit 0