#!/usr/bin/ksh # # Portions Copyright 11/02/99 Sun Microsystems, Inc. All Rights Reserved # # This command will add a new table in the mapping file then # call dsypdecl to dynamically declare it on the LDAP server # unset ENV BASEDIR=$(pkgparam SUNWdsnis BASEDIR) MAPPING_FILE=/etc/opt/SUNWconn/ldap/current/mapping/nis.mapping USAGE="Usage :\n dsypaddmap [-l] [-b] [-r] [-n naming-context] [-f mapping-file]\n [-d domain-name] -m nis_master map-name" FLAGS="" set -- `getopt lbrm:n:f:d: $*` if [ $? != 0 ] then echo $USAGE exit 2 fi for i in $* do case $i in -l) FLAGS=$FLAGS" -l"; shift;; -b) FLAGS=$FLAGS" -b"; shift;; -r) FLAGS=$FLAGS" -r"; shift;; -n) NAMING_CONTEXT=$2; shift 2;; -f) MAPPING_FILE=$2; shift 2;; -d) DOMAIN_NAME=$2; FLAGS=$FLAGS" -d "$2; shift 2;; -m) MASTER=$2; shift 2;; --) shift; break;; esac done MAP_NAME=$1 if [ "$MAP_NAME" = "" ] then echo $USAGE exit 2 fi if [ "$MASTER" = "" ] then echo $USAGE exit 2 fi if [ "$DOMAIN_NAME" = "" ] then DOMAIN_NAME=`domainname` fi if [ "$NAMING_CONTEXT" = "" ] then NAMING_CONTEXT=`egrep "^[ ]*NAMING_CONTEXT" $MAPPING_FILE | sed "s/[ ]*NAMING_CONTEXT=//"` if [ "$NAMING_CONTEXT" = "" ] then NAMING_CONTEXT=`echo $DOMAIN_NAME | sed "s/^/dc=/;s/\./,dc=/g"` fi fi cat <<% >>/tmp/$MAP_NAME.tmpmap # # $MAP_NAME map # Table: $MAP_NAME Common: MAP_NAME=$MAP_NAME CASE_SENSITIVE=yes Dynamic: LINE =>\$nisKeyT \$nisValueT nisKeyT=\$NIS_KEY MATCH_FILTER=(&(objectClass=nisSunObject)(sunNisKey=\$nisKeyT)) ALL_FILTER=(&(objectClass=nisSunObject)(sunNisKey=*)) DC_NAMING=split(\$DOMAIN_NAME, ".", "dc=", ",", left2right) rootTreeT=ou=Services,\$NAMING_CONTEXT||ou=Services,\$DC_NAMING BASE_DN=ou=\$MAP_NAME,\$rootTreeT Export: Build: NIS_KEY=\$sunNisKey NIS_VALUE=\$nisMapEntry LINE=\$sunNisKey \$nisMapEntry Import: Extract: LINE =>\$nisKeyT \$nisValueT Condense: trimNisValueT=trim(\$nisValueT) CaseNisKeyT =dprint(\$nisKeyT) Build: dn=cn="\$CaseNisKeyT",\$BASE_DN sunNisKey=\$nisKeyT nisMapEntry=\$trimNisValueT nisMapName=\$MAP_NAME objectClass=nisSunObject % unset EXIST EXISTLIST=`egrep Table $MAPPING_FILE | egrep $MAP_NAME | awk '{ print $2 }'` for i in $EXISTLIST do if [ $i = $MAP_NAME ] then EXIST=1 fi done if [ -z $EXIST ] then echo "\n #" >> $MAPPING_FILE echo " # The following map has been automatically added by dsaddmap" >> $MAPPING_FILE cat /tmp/$MAP_NAME.tmpmap >> $MAPPING_FILE fi rm /tmp/$MAP_NAME.tmpmap $BASEDIR/SUNWconn/ldap/lib/dsypdecl -R $FLAGS -m $MASTER $MAP_NAME