#! /bin/sh

if getent passwd asterisk >/dev/null ;then
	# Some halfbaked Sarge versions needed their home dir fixed:
        if [ "`getent passwd asterisk|awk -F: '{print $6}'`" = \
		"/var/run/asterisk" ];then
		usermod -d /var/lib/asterisk asterisk
        fi
else
	adduser_extra_opts=""
	# Cosmetic noise reduction
	if [ -d "/var/lib/asterisk" ]; then
		adduser_extra_opts="--no-create-home"
	fi
	adduser --system --group --home /var/lib/asterisk \
	    $adduser_extra_opts \
		--gecos "Asterisk PBX daemon" asterisk
fi

for group in dialout audio; do
	if groups asterisk | grep -w -q -v $group; then
		adduser asterisk $group
	fi
done

# Update from /usr/share/asterisk/sounds/priv-callerintros to
#             /var/lib/asterisk/sounds/priv-callerintros
if [ -d /usr/share/asterisk/sounds/priv-callerintros ] && [ ! -L /usr/share/asterisk/sounds/priv-callerintros ];then
	if [ ! -d /var/lib/asterisk/sounds/priv-callerintros ];then
		mkdir -p /var/lib/asterisk/sounds/priv-callerintros
	fi

	echo -n "Updating private callerintros location to /var/lib/asterisk/sounds/priv-callerintros"
	find /usr/share/asterisk/sounds/priv-callerintros -mindepth 1 -maxdepth 1 -exec mv '{}' /var/lib/asterisk/sounds/priv-callerintros \;
	rmdir /usr/share/asterisk/sounds/priv-callerintros
	ln -s /var/lib/asterisk/sounds/priv-callerintros /usr/share/asterisk/sounds/priv-callerintros
	echo "."
fi

# Make sure all (possibly) used dirs exist and is owned by asterisk

# /var/run/asterisk is not yet handled by init.d :-(
# (/var/run/asterisk is handled in sysV script /etc/init.d/asterisk)

dirs="
        /var/log/asterisk
        /var/spool/asterisk
        /var/lib/asterisk
        /var/run/asterisk
        /etc/asterisk
"

subdirs="
        /var/lib/asterisk/sounds/priv-callerintros
        /var/lib/asterisk/sounds/meetme
        /var/log/asterisk/cdr-csv
        /var/log/asterisk/cdr-custom
        /var/spool/asterisk/dictate
        /var/spool/asterisk/meetme
        /var/spool/asterisk/monitor
        /var/spool/asterisk/system
        /var/spool/asterisk/tmp
        /var/spool/asterisk/voicemail
"

for dir in $subdirs $dirs; do
        mkdir -p "$dir"
done

for dir in $dirs; do
        chown -R asterisk: "$dir"
done

###################################
asterisk_dirs="/etc/asterisk /var/lib/asterisk /var/spool/asterisk/monitor"

chown -R asterisk:asterisk $asterisk_dirs
for dir in $asterisk_dirs; do
    find $dir -type d -exec chmod 2775 {} \;
    find $dir -name 'agi-bin' -prune -o -type f -exec chmod 660 {} \;
done

####################################
# If asterisk in running, reload it
# otherwise start it
if [ -x "/etc/init.d/asterisk" ];then
	if [ -f /var/run/asterisk/asterisk.pid ];then
	    invoke-rc.d asterisk reload || exit $?
	else
	    invoke-rc.d asterisk restart || exit $?
	fi
fi
