Saturday, 26 September 2009

Well that was easy, 0.2.1 (ish)

It turns out that porting the majority of it to bash was much easier than expected
#!/bin/sh
profilemap="/etc/netprofiles/profilemap"
settingsFile="/etc/netprofiles/NMsettings"
executable="/etc/netprofiles/run-netprofile"
log="/var/log/netprofiles.log"
logstr="NM LOG:"

read_settings () {
 declare -i number offlineDelay
 [ -r $settingsFile ] && . $settingsFile
 [ $unknownProfile ] || $unknownProfile = "public"
}

[ -r /var/run/NMnetprofile.pid ] && ( . /var/run/NMnetprofile.pid ; kill $pid )
echo "pid="$$ > /var/run/NMnetprofile.pid

echo $logstr "Called as" $0 $1 $2 "uuid=" $CONNECTION_UUID >> $log
case $2 in
up)
 profile=$(sed -n "s/^$CONNECTION_UUID=//p;q" $profilemap)
 if [ $profile ] ; then 
  echo  $logstr "connected to" $CONNECTION_UUID "switching to" $profile >> $log
  $executable  $profile
 else
  read_settings
  echo  $logstr $CONNECTION_UUID "unknown switching to" $unknownProfile >> $log 
  $executable  $unkownProfile
 fi
;;
down)
 read_settings
 [ -x $offlineCommand ] && $offlineCommand 
 if [ $offlineProfile ] ; then
  [ $offlineDelay ] && sleep $offlineDelay 
  echo $logstr "Switching to" $offlineProfile "on shutdown" >> $log
  $executable  $offlineProfile
 else 
  echo $logstr "No action taken on network shutdown" >> $log
 fi
;;
*)
 echo $logstr "Change to"  $2 "Not coded yet" >> $log
;;
esac
exit 0

It requires changing the config (and I moved it to /etc/netprofile/NMsettings) and replacing any , in the profilemap (also moved to /etc/netprofile/) with =
unknownProfile=public     #if absent defaults to public
offlineDelay=10           #remove if 0 to safe upto 90ms on execution
offlineProfile=public     #remove to take no action on going offline

As it doesn't seam anybody is actually using this yet, I wont bother repackaging it, if for you stumble across this and want to give it a try, email me or install the core and profiles, then put the above as your dispatcher script (and install the uuid-changer as that still requires dbus, its the same as the one i posted but with line 32 edited to filename="/etc/netprofiles/profilemap")

In other news I'm worked on GUI tools to make it easier to setup/maintain the profiles. Unfortunately looking at the current tools is somewhat depressing (other than sysv-rc-conf, props to Joe Oppegaard), so I either have to learn the basics of perl to adapt his code or I have to start from scratch.

No comments:

Post a Comment