#!/bin/ash
# postinst script for autodisconnect
#
# see: dh_installdeb(1)

set -e

# summary of how this script can be called:
#        * <postinst> `configure' <most-recently-configured-version>
#        * <old-postinst> `abort-upgrade' <new version>
#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
#          <new-version>
#        * <postinst> `abort-remove'
#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
#          <failed-install-package> <version> `removing'
#          <conflicting-package> <version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package

case "$1" in
    configure)
        # Parameters
		echo "Updating configuration ..."

        # Network 
        val="`gconftool-2 --get /apps/autodisconnect/param_interval 2>/dev/null`" # AutoDisconnect < v.0.3 settings        
        if [[ -z "$val" ]]; then
            val=5
        else
            gconftool-2 --unset /apps/autodisconnect/param_interval
        fi
        [[ -z "`gconftool-2 --get /apps/autodisconnect/param_gprs_interval 2>/dev/null`" ]] && gconftool-2 --set /apps/autodisconnect/param_gprs_interval --type int "$val"
        [[ -z "`gconftool-2 --get /apps/autodisconnect/param_wlan_interval 2>/dev/null`" ]] && gconftool-2 --set /apps/autodisconnect/param_wlan_interval --type int "$val"

        [[ -z "`gconftool-2 --get /apps/autodisconnect/param_gprs_pre_interval 2>/dev/null`" ]] && gconftool-2 --set /apps/autodisconnect/param_gprs_pre_interval --type int 30
        [[ -z "`gconftool-2 --get /apps/autodisconnect/param_wlan_pre_interval 2>/dev/null`" ]] && gconftool-2 --set /apps/autodisconnect/param_wlan_pre_interval --type int 30

        val="`gconftool-2 --get /apps/autodisconnect/param_min_bytes 2>/dev/null`" # AutoDisconnect < v.0.3 settings
        if [[ -z "$val" ]]; then
            val=2048
        else
            gconftool-2 --unset /apps/autodisconnect/param_min_bytes
        fi

        [[ -z "`gconftool-2 --get /apps/autodisconnect/param_gprs_traffic 2>/dev/null`" ]] && gconftool-2 --set /apps/autodisconnect/param_gprs_traffic --type int "$val"
        [[ -z "`gconftool-2 --get /apps/autodisconnect/param_wlan_traffic 2>/dev/null`" ]] && gconftool-2 --set /apps/autodisconnect/param_wlan_traffic --type int "$val"
        
        [[ -z "`gconftool-2 --get /apps/autodisconnect/param_exception_ssh 2>/dev/null`" ]] && gconftool-2 --set /apps/autodisconnect/param_exception_ssh --type bool true
        [[ -z "`gconftool-2 --get /apps/autodisconnect/param_exception_openvpn 2>/dev/null`" ]] && gconftool-2 --set /apps/autodisconnect/param_exception_openvpn --type bool true
        [[ -z "`gconftool-2 --get /apps/autodisconnect/param_exception_voip 2>/dev/null`" ]] && gconftool-2 --set /apps/autodisconnect/param_exception_voip --type bool true
        [[ -z "`gconftool-2 --get /apps/autodisconnect/param_exception_im_accounts 2>/dev/null`" ]] && gconftool-2 --set /apps/autodisconnect/param_exception_im_accounts --type bool true
        [[ -z "`gconftool-2 --get /apps/autodisconnesct/param_connection_wlan 2>/dev/null`" ]] && gconftool-2 --set /apps/autodisconnect/param_connection_wlan --type bool true
        [[ -z "`gconftool-2 --get /apps/autodisconnect/param_connection_gprs 2>/dev/null`" ]] && gconftool-2 --set /apps/autodisconnect/param_connection_gprs --type bool true
        
        # Idle Network Mode
        if [[ "`gconftool-2 --get /apps/autodisconnect/param_use_2g 2>/dev/null`" = true ]]; then # AutoDisconnect < v.0.4.5 settings
            val="3g"
            val_duration=3
            gconftool-2 --unset /apps/autodisconnect/param_use_2g
        else
            val="none"
            val_duration=0
        fi

        [[ -z "`gconftool-2 --get /apps/autodisconnect/param_idle_network_mode_type 2>/dev/null`" ]] && gconftool-2 --set /apps/autodisconnect/param_idle_network_mode_type --type string "$val"
        [[ -z "`gconftool-2 --get /apps/autodisconnect/param_idle_network_mode_duration 2>/dev/null`" ]] && gconftool-2 --set /apps/autodisconnect/param_idle_network_mode_duration --type int "$val_duration"

        # Bluetooth
        [[ -z "`gconftool-2 --get /apps/autodisconnect/param_bluetooth_enable 2>/dev/null`" ]] && gconftool-2 --set /apps/autodisconnect/param_bluetooth_enable --type bool false
        [[ -z "`gconftool-2 --get /apps/autodisconnect/param_bluetooth_interval 2>/dev/null`" ]] && gconftool-2 --set /apps/autodisconnect/param_bluetooth_interval --type int 10
        
        # General
        [[ -n "`gconftool-2 --get /apps/autodisconnect/param_enabled 2>/dev/null`" ]] && {
            # Remove AutoDisconnect < v.0.3 settings
            [[ "`gconftool-2 --get /apps/autodisconnect/param_enabled 2>/dev/null`" = false ]] && gconftool-2 --set /apps/autodisconnect/param_running_options --type int 0
            [[ "`gconftool-2 --get /apps/autodisconnect/param_enabled 2>/dev/null`" = true ]] && gconftool-2 --set /apps/autodisconnect/param_running_options --type int 1
            gconftool-2 --unset /apps/autodisconnect/param_enabled
        }
        [[ -z "`gconftool-2 --get /apps/autodisconnect/param_running_options 2>/dev/null`" ]] && gconftool-2 --set /apps/autodisconnect/param_running_options --type int 1
        [[ -z "`gconftool-2 --get /apps/autodisconnect/param_notifications 2>/dev/null`" ]] && gconftool-2 --set /apps/autodisconnect/param_notifications --type bool false

        # Remove AutoDisconnect < v.0.4.5 settings
        [[ -n "`gconftool-2 --get /apps/autodisconnect/current_instance 2>/dev/null`" ]] && gconftool-2 --unset /apps/autodisconnect/current_instance

        # Version
        gconftool-2 --set /apps/autodisconnect/version --type string "`dpkg -l autodisconnect | grep autodisconnect | awk '{print $3}'`"

        # Log file rights (User)
        [[ ! -e /var/log/autodisconnect.log ]] && touch /var/log/autodisconnect.log
        chmod 666 /var/log/autodisconnect.log

        # Network triggers
        echo "Installing network and bluetooth triggers ..."
        [[ -e /etc/network/if-up.d/99_autodisconnect ]] && rm -f /etc/network/if-up.d/99_autodisconnect # AutoDisconnect v.0.2
        [[ -e /etc/network/if-down.d/99_autodisconnect ]] && rm -f /etc/network/if-down.d/99_autodisconnect # AutoDisconnect v.0.1
        cp /opt/autodisconnect/autodisconnect_runner_network /etc/network/if-up.d/99_autodisconnect_network
        cp /opt/autodisconnect/autodisconnect_runner_pre_network /etc/network/if-pre-up.d/99_autodisconnect_pre_network
        cp /opt/autodisconnect/autodisconnect_runner_post_network /etc/network/if-post-down.d/99_autodisconnect_post_network        
        
        # Bluetooth triggers
        cp /opt/autodisconnect/autodisconnect_runner_bluetooth /etc/event.d/autodisconnect
        su user -c "/opt/autodisconnect/autodisconnect-bluetooth-check &"
    ;;

    abort-upgrade|abort-remove|abort-deconfigure)
    ;;

    *)
        echo "postinst called with unknown argument \`$1'" >&2
        exit 1
    ;;
esac

# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.

#DEBHELPER#

exit 0


