]> git.nbdom.net Git - nb.git/commitdiff
etc/profile.d/ldap.sh
authorNicolas Boisselier <nicolas.boisselier@gmail.com>
Sun, 1 Apr 2018 18:05:16 +0000 (19:05 +0100)
committerNicolas Boisselier <nicolas.boisselier@gmail.com>
Sun, 1 Apr 2018 18:05:16 +0000 (19:05 +0100)
etc/profile.d/ldap.sh
lib/awk/ldap2csv.awk

index 6585cfdba92cffa762b8e23b3dd961c1e61484e1..8c3a4fc45dcd9a342a09704e9ef7c477fe39338c 100644 (file)
@@ -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
index a2b0d223a61721d72db46fcd24ba71c8d51c2f74..a3fd2b9a411cf3d6e30743f074b685437a8565f8 100755 (executable)
@@ -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