# Autor: zz_indigo (Oct. 2012)
# License: GPL

# konfiguracne premenne
# Pocet dni do skoncenia platnosti hesla odkedy sa generuju emaily.
DAYS=8

# Ldap URI
URI="ldaps://ad.test.com"

# MS DOMENA
DOMAIN="TEST"

# Ldap BASE
BASE="dc=test,dc=com"

# User LDAP OU
UOU="CN=Users"

# Ldap konto pod ktorym sa hlada
BIND_DN="CN=spamer,CN=Users,dc=slsp,dc=sk"

# Heslo 
BIND_PWD="Tajne Heslo"

# Filter na email domeny (Egrep format)
MAILS="@test.sk\|@test.com"

# subject spravy (nutne exportovat kvoli sialenstvu za xargs)
export SUBJ="Upozornenie! Platnost Vasho hesla v domene \"$DOMAIN\" skonci za menej ako $DAYS dni"

# Telo spravy (nutne exportovat kvoli sialenstvu za xargs)
export DATA="Dobry den.\n\nPlatnost Vasho hesla v domene \"$DOMAIN\" skonci za menej ako $DAYS dni.\n\nTato sprava je automaticky generovana, prosim neodpovedajte na nu."

# odvodene premenne
SEC=$(expr $DAYS \* 86400)

# Zistime maximalnu zivotnost hesla
MAXAGE=$(ldapsearch -LLL -s base -H "$URI" -b "$BASE" -D "$BIND_DN" -w "$BIND_PWD"  maxPwdAge | awk -F- '/maxPwdAge/ {print $2/10000000}')

AGE=$(expr $(date +%s) + 11644473600 - $MAXAGE + $SEC )0000000

ldapsearch -LLL -H "$URI" -b "$UOU,$BASE" -D "$BIND_DN" -w "$BIND_PWD" "(&(objectCategory=person)(objectclass=user)(userAccountControl=512)(pwdLastSet<=$AGE)(!(pwdLastSet=0)))" mail | grep mail | grep  -e $MAILS | cut -f 2 -d " " | xargs -n 1 -I '{}' sh -c 'echo $DATA | mail -s "$SUBJ" -r no-reply@test.com {}' 

