From 49e0b58879feb60ea267c6e68afaf74f20028fa2 Mon Sep 17 00:00:00 2001 From: Nicolas Boisselier Date: Sun, 1 Apr 2018 19:05:16 +0100 Subject: [PATCH] etc/profile.d/ldap.sh --- etc/profile.d/ldap.sh | 29 ++++++++++++++++++++++++++++- lib/awk/ldap2csv.awk | 2 ++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/etc/profile.d/ldap.sh b/etc/profile.d/ldap.sh index 6585cfdb..8c3a4fc4 100644 --- a/etc/profile.d/ldap.sh +++ b/etc/profile.d/ldap.sh @@ -128,7 +128,34 @@ ldap_gup() { rec=("${rec[@]:1}") # shift for uid in ${rec[@]}; do - rec=( $(slapcat_csv "(&(uid=$uid)(userPassword=*))" userPassword $attrs) ) + + slapcat -a "(&(uid=$uid)(userPassword=*))" | awk -F":: " "@include \"base64decode.awk\"; /^userPassword/{print base64decode(\$2)}" | while read -r pass; do + echo $group:$uid:$pass + done + done + + done + ' + return +} + +_ldap_gup() { + local usage="Usage: ldap_gup [filter attrs ...]" + case "$*" in + -h|-help) echo $usage; return;; + esac + local filer=$1; shift; [ -n "$filter" ] && filter="($filter)" + local attrs=${*:-"uid"}; shift + + eval ' + local args + slapcat_csv "(&(objectClass=posixGroup)(memberUid=*)$filter)" cn memberUid | while read -r -a rec; do + + group=${rec[0]} + rec=("${rec[@]:1}") # shift + + for uid in ${rec[@]}; do + rec=( $(slapcat_csv "(&(uid=$uid)(userPassword=*)(!(uid=test)))" userPassword $attrs) ) pass=${rec[0]} rec=("${rec[@]:1}") # shift for field in ${rec[@]}; do diff --git a/lib/awk/ldap2csv.awk b/lib/awk/ldap2csv.awk index a2b0d223..a3fd2b9a 100755 --- a/lib/awk/ldap2csv.awk +++ b/lib/awk/ldap2csv.awk @@ -64,12 +64,14 @@ function header() { # Base64 B64[field] = 0 if (field ~ /:$/) { + #print "HELLO"field sub(/:$/,"",field) B64[field] = 1 } if (field in h && h[field] != "") { h[field] = h[field]""CONCAT""line + B64[field] = 0 } else { h[field] = line if (PFIELDS_OK == 0) filter = filter" "field -- 2.47.3