Skip to content
Snippets Groups Projects
Select Git revision
  • 5414201b491c8030265cf76e6d02b2e4feed4de7
  • master default protected
  • 9.0
  • 8.0
  • nt-tools
  • 7.8
  • 7.6
  • 7.4
  • 7.2
  • 7.0
  • 0.6
  • rosuav/latex-markdown-renderer
  • rxnpatch/rxnpatch
  • marcus/gobject-introspection
  • rxnpatch/8.0
  • rosuav/pre-listening-ports
  • rosuav/async-annotations
  • rosuav/pgsql-ssl
  • rxnpatch/rxnpatch-broken/2023-10-06T094250
  • grubba/fdlib
  • grubba/wip/sakura/8.0
  • v8.0.2020
  • v8.0.2018
  • v8.0.2016
  • v8.0.2014
  • v8.0.2012
  • v8.0.2008
  • v8.0.2006
  • v8.0.2004
  • v8.0.2002
  • v8.0.2000
  • v8.0.1998
  • v8.0.1996
  • v8.0.1994
  • v8.0.1992
  • v8.0.1990
  • v8.0.1988
  • v8.0.1986
  • rxnpatch/clusters/8.0/2025-04-29T124414
  • rxnpatch/2025-04-29T124414
  • v8.0.1984
41 results

udp.c

Blame
  • include_ldap 2.50 KiB
    #!/bin/sh
    #
    # $FreeBSD: releng/12.1/usr.sbin/autofs/autofs/include_ldap 280321 2015-03-21 09:42:37Z trasz $
    #
    
    query_ldap()
    {
    	# Modify this to suit your needs.  The "$1" is the map name, eg. "auto_master".
    	# To debug, simply run this script with map name as the only parameter.  It's
    	# supposed to output map contents ("key location" pairs) to standard output.
    	SEARCHBASE="automountmapname=$1,cn=default,cn=automount,dc=ad,dc=lysator,dc=liu,dc=se"
    	ENTRY_ATTRIBUTE="description"
    	VALUE_ATTRIBUTE="automountInformation"
    
    	# fstype=nfs4 fungerar inte på FreeBSD då det inte finns något
    	# NFS-filsystem. Använd sed för att byta det till något vettigare.
    	/usr/local/bin/ldapsearch -LLL -x -o ldif-wrap=no -b "$SEARCHBASE" "$ENTRY_ATTRIBUTE" "$VALUE_ATTRIBUTE" |
    		sed 's/fstype=nfs4/nfsv4,minorversion=1,retrycnt=1/' | grep -v 'mail' | awk '
    	$1 == "'$ENTRY_ATTRIBUTE':" {
    		key = $2
    	}
    
    	$1 == "'$VALUE_ATTRIBUTE':" {
    		for (i = 2; i <= NF; i++) {
    			value[i] = $(i)
    		}
    		nvalues = NF
    		b64 = 0
    	}
    
    	# Double colon after attribute name means the value is in Base64.
    	$1 == "'$VALUE_ATTRIBUTE'::" {
    		for (i = 2; i <= NF; i++) {
    			value[i] = $(i)
    		}
    		nvalues = NF
    		b64 = 1
    	}
    
    	# Empty line - end of record.
    	NF == 0 && key != "" && nvalues > 0 {
    		printf "%s%s", key, OFS
    		for (i = 2; i < nvalues; i++) {
    			printf "%s%s", value[i], OFS
    		}
    		if (b64 == 1) {
    			printf "%s", value[nvalues] | "b64decode -rp"
    			close("b64decode -rp")
    			printf "%s", ORS
    		} else {
    			printf "%s%s", value[nvalues], ORS
    		}
    	}
    
    	NF == 0 {
    		key = ""
    		nvalues = 0
    		delete value
    	}
    	'
    }
    
    # Hämta en lista med alla användarnamn
    get_users()
    {
    	/usr/local/bin/ldapsearch -LLL -x -o ldif-wrap=no -b "cn=users,cn=accounts,dc=ad,dc=lysator,dc=liu,dc=se" uid |
    		awk '$1 == "uid:" { print $2; }'
    }
    
    # Specialhantera auto.home genom att konstruera en yttricklig lista
    # med vilka användarmonteringar som finns. Detta för att undvika att
    # automount försöker montera kataloger som inte finns under /home.
    if [ "$1" = "auto.home" ]
    then
    	# Plocka ut monteringsinställningar, borde ge något liknande
    	# -nfsv4,minorversion=1,sec=sys,nosuid,rw home:/ceph-home/users/
    	HOME_MOUNT="$(query_ldap "auto.home" | head -n 1 |
    		awk '{ sub("\\&", "", $3); print($2 " " $3); }')"
    	# Konstruera en uttrycklig lista med hemkatalogmonteringar på
    	# formen:
    	# $användarnamn -nfsv4,minorversion=1,sec=sys,nosuid,rw home:/ceph-home/users/$användarnamn
    	{ echo defaults; get_users; } |
    		awk -v home_mount="$HOME_MOUNT" '{ print($1 " " home_mount $1); }'
    else
    	query_ldap "$1"
    fi