# an user is somebody having the fields defined:
#  sn givenName sAMAccountName mail memberOf
# needs: ldap_ilog_to_wikiname iconv 

ACTUAL_USER_FILTER='(&(objectClass=User)(objectCategory=person)(!(physicalDeliveryOfficeName=malibu))(|(samAccountName=*)(cn=*)))'

new_record () {
  if test -n "$firstname" -a -n "$name" -a -n "$login" -a -n "$email" -a -n "$memberof"; then
    wn=`ldap_ilog_to_wikiname $login`
    echo "$wn $login $email	${comment:+# }$comment"
  fi
  unset comment firstname name login email memberof namef dnamef dn
}

# takes first name & name
wikiname () {
  # capitalize first letter of name
  n=`echo "${2:0:1}"| tr '[a-z]' '[A-Z]'`
  # concat first name & name
  n="$1$n${2:1}"
  # remove chars: - ' space
  n="${n//[-\' ]/}"
  echo "$n"
}

ldapsearch -x  -D CN=webcoreadread,CN=Users,DC=ilog,DC=biz -w 'PASWORD' \
 -h ad.ilog.biz -b DC=ilog,DC=biz -s sub "$ACTUAL_USER_FILTER" \
 sAMAccountName mail dn givenName sn memberOf | ldif-decode |\
while read key val; do
  if test -z "$key"; then new_record
  elif test "$key" = '#'; then comment="$comment${comment:+ }$val"
  elif test "$key" = dn:; then dn="$val"
  elif test "$key" = givenName:; then firstname="$val"
  elif test "$key" = sn:; then name="$val"
  elif test "$key" = sAMAccountName:; then login="$val"
  elif test "$key" = mail:; then email="$val"
  elif test "$key" = memberOf:; then memberof="$val"
  elif test "$key" = name:; then namef="$val"
  elif test "$key" = displayName:; then dnamef="$val"
  fi
done | iconv -f utf-8 -t latin1 - | sort | sed -e 's/[ 	][ 	]*/ /g'
