#!/bin/sh -e
# Config module for greylistd.

. /usr/share/debconf/confmodule                                         
db_version 2.0

owner=greylistd
questions="ugid autoconfig_notdone_exim4 autoconfig_notdone"

action="$1"
priorversion="$2"

running_exim4()
{
    test -x /usr/sbin/exim4 -a -d /etc/exim4
}


bound_process_owner()
{
    proto=${1:-tcp}
    port=${2:-25}
    rex="s/^$proto .*:$port.*:\* *LISTEN *\([0-9]*\)\/.*/\1/p"
    pid=$(netstat -nlp|sed -ne "$rex")
    [ "$pid" ] && uid=$(ps h ouser p$pid)
    [ "$uid" ] && echo "${uid}:$(id -ng $uid)"
}


config_ugid()
{
    unset ugid

    db_get "$owner/ugid"
    if [ "$RET" ]
    then
	ugid=$RET

    elif running_exim4
    then
	ugid=Debian-exim:Debian-exim

    else
	ugid=$(bound_process_owner tcp 25)
        [ "$ugid" ] || ugid="mail:mail"
    fi

    db_set "$owner/ugid" "$ugid"
    echo "medium"
}


config_autoconfig_notdone_exim4()
{
    running_exim4 && echo "high"
}


config_autoconfig_notdone()
{
    running_exim4 || echo "high"
}



for question in $questions
do
    priority=$(config_$question)
    if [ "$priority" ]
    then
        db_input "$priority" "$owner/$question" && db_go
    fi
done


#DEBHELPER#

db_stop
exit 0
