#!/bin/sh
set -e

oldversion="$2"

if [ -f /usr/share/debconf/confmodule ]; then
	. /usr/share/debconf/confmodule
fi


case "$1" in
	configure)
		# begin-remove-after: released:forky
		# Drop legacy dpkg-statoverride entries now handled by tmpfiles.d.
		for path in \
			/var/log/smstools \
			/var/log/smstools/smsd_stats \
			/var/spool/sms \
			/var/spool/sms/incoming \
			/var/spool/sms/outgoing \
			/var/spool/sms/failed \
			/var/spool/sms/sent \
			/var/spool/sms/checked \
			/var/run/smstools
		do
			dpkg-statoverride --remove "$path" 2>/dev/null || true
		done
		# end-remove-after

		# Create configuration if it is wanted
		db_get smstools/configure || true
		if [ "$RET" = 'true' ]; then
			TEMPLATE_PATH="/usr/share/smstools/conf-templates"

			# Register configuration file with ucf
			ucfr smstools /etc/smsd.conf

			# Create temp files
			CONFIG_TEMP="/etc/smsd.conf.new"
			MODEM="`mktemp`"

			# Write out temporary global configuration into temp file
			cat ${TEMPLATE_PATH}/smsd.conf.template > $CONFIG_TEMP

			db_get smstools/eventhandler || true
			if [ ! -z "$RET" ]; then
				EVENTHANDLER="$RET"
				echo $EVENTHANDLER
				sed -i "s|@EVENTHANDLER@|$EVENTHANDLER|g" $CONFIG_TEMP
				sed -i 's|# eventhandler|eventhandler|g' $CONFIG_TEMP
			fi

			# Determine which devices we need to configure

			devices=""
			for i in $(seq 1 32); do
				if db_get smstools/modems/devicename$i; then
					if [ ! -z "$RET" ]; then
						devices="$devices $i"
						devicenames="$devicenames $RET"
					fi
				fi
			done

			# Normalize device lists
			devices="`echo $devices|sed 's|^ ||g;s| $||g'`"
			devicenames="`echo $devicenames|sed 's|^ ||g;s| $||g'`"

			# Update global smsd configuration to contain modems
			DEVICES="`echo $devicenames|sed 's| |, |g'`"
			sed -i "s|@DEVICES@|$DEVICES|g" $CONFIG_TEMP

			# Create configuration for devices
			for n in $devices
			do
				cat ${TEMPLATE_PATH}/smsd.modem.template > $MODEM

				db_get smstools/modems/devicename$n || true
				DEVICENAME="$RET"
				sed -i "s|@DEVICENAME@|$DEVICENAME|g" $MODEM

				db_get smstools/modems/devicenode$n || true
				if [ ! "$RET" = 'Other' ]
				then
					DEVICENODE="$RET"
				else
					db_get smstools/modems/devicenodeother$n || true
					DEVICENODE="$RET"
				fi

				sed -i "s|@DEVICE@|$DEVICENODE|g" $MODEM


				db_get smstools/modems/deviceinit$n || true
				if [ -z "$RET" ]
				then
					INIT=''
					sed -i 's|init = |#init = |g' $MODEM
				else
					INIT="$RET"
				fi
				sed -i "s|@INIT@|$INIT|g" $MODEM

				db_get smstools/modems/deviceincoming$n || true
				if [ -z "$RET" ]
				then
					INCOMING="yes"
				else
					if [ "$RET" = 'true' ]
					then
						INCOMING='yes'
					else
						INCOMING='no'
					fi
				fi
				sed -i "s|@INCOMING@|$INCOMING|g" $MODEM

				db_get smstools/modems/devicepin$n || true
				if [ -z "$RET" ]
				then
					PIN=''
					sed -i 's|pin = |#pin = |g' $MODEM
				else
					PIN="$RET"
				fi
				sed -i "s|@PIN@|$PIN|g" $MODEM

				db_get smstools/modems/devicebaudrate$n || true

				if [ "$RET" = 'Other' ]; then
					db_get smstools/modems/devicebaudrateother$n || true
				fi

				if [ -z "$RET" ]
				then
					BAUDRATE='19200'
				else
					BAUDRATE="$RET"
				fi
				sed -i "s|@BAUDRATE@|$BAUDRATE|g" $MODEM

				cat $MODEM >> $CONFIG_TEMP
				rm $MODEM
			done

			sed -i "s|Last changed: .*|Last changed: `date`|g" $CONFIG_TEMP

			if [ -f /etc/smsd.conf ]; then
				ucf --debconf-ok /etc/smsd.conf.new /etc/smsd.conf
				rm -f /etc/smsd.conf.new
			else
				mv /etc/smsd.conf.new /etc/smsd.conf
			fi

			rm -f $MODEM

		fi
	;;
esac

#DEBHELPER#

