#ident "@(#)nis.mapping 1.86 11/02/99 SMI" # # # Copyright 11/02/99 Sun Microsystems, Inc. All Rights Reserved # # # Exercise great caution if you edit this file. Make sure that you # cannot make the changes you require through the Admin Console. # Do not delete map definitions. Comment out a map definition if you do # not need it. If you add a map definition, before running a make, # test your new definition by running dsimport. # # Front-End: NIS Common: ###################################### # configuration variables # ###################################### # The name of the NIS domain DOMAIN_NAME=airius.com # # NAMING_CONTEXT, if defined, gives the root of the naming tree # if it is not defined, the naming tree root is derived from # the DOMAIN_NAME variable using dc attributes for each # element in the domain name (airius.com --> dc=airius,dc=com) # NAMING_CONTEXT=O=XYZ,C=US # # Where to create the LDAP admnistrative entries associated with the maps. ADMIN_SUFFIX=ou=admin,ou=Services,o=airius,c=us # directory where NIS binaries maps are generated DBM_DIRECTORY=/var/yp # Specifies whether to push changes to NIS maps automatically, # and the delay (in minutes) AUTOMATIC_PUSH=disabled AUTOMATIC_PUSH_DELAY=5 # ####################################### # ## generic map ## # ####################################### # # # # # map # # # # Table: # # Common: # MAP_NAME= # # Dynamic: # LINE =>$nisKeyT $nisValueT # nisKeyT=$NIS_KEY # MATCH_FILTER=(&(objectClass=nisObject)(sunNisKey=$nisKeyT)) # ALL_FILTER=(&(objectClass=nisObject)(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: # CaseNisKeyT =dprint($nisKeyT) # Build: # dn=cn=$CaseNisKeyT,$BASE_DN # sunNisKey=$nisKeyT # nisMapEntry=$nisValueT # nisMapName=$MAP_NAME # objectClass=nisSunObject # ####################################### ## bootparams ## ####################################### Table: bootparams Common: MAP_NAME=bootparams PRIVATE_OBJECTCLASSES=bootableDevice Dynamic: LINE =>$ipHostNameT $remainderT ipHostNameT=$NIS_KEY MATCH_FILTER=(&(objectClass=bootableDevice)(cn=$ipHostNameT)) ALL_FILTER=(&(objectClass=bootableDevice)(cn=*)) DC_NAMING=split($DOMAIN_NAME, ".", "dc=", ",", left2right) rootTreeT=ou=Services,$NAMING_CONTEXT||ou=Services,$DC_NAMING BASE_DN=ou=Hosts,$rootTreeT Export: Condense: ipHostnameT=getrdn() parametersT=instances2string($bootParameter," ") Build: NIS_KEY=$ipHostnameT NIS_VALUE=$parametersT LINE=$ipHostnameT $parametersT Import: Extract: LINE =>$ipHostNameT $parametersT Condense: bootParameterT=string2instances($parametersT," ") trimbootParameterT=trim($bootParameterT) objectClassT=string2instances("top device bootableDevice", " ") Build: dn=cn=$ipHostNameT,$BASE_DN bootParameter=$trimbootParameterT objectClass=$objectClassT ####################################### ## ethers ## ####################################### Table: ethers.byaddr Common: MAP_NAME=ethers.byaddr PRIVATE_OBJECTCLASSES=ieee802Device Dynamic: LINE =>$macAddressT $remainderT macAddressT=$NIS_KEY MATCH_FILTER=(&(objectClass=ieee802Device)(macAddress=$macAddressT)) ALL_FILTER=(&(objectClass=ieee802Device)(macAddress=*)) DC_NAMING=split($DOMAIN_NAME, ".", "dc=", ",", left2right) rootTreeT=ou=Services,$NAMING_CONTEXT||ou=Services,$DC_NAMING BASE_DN=ou=Hosts,$rootTreeT Export: Condense: ipHostnameT=getrdn() optionalCommentT=#$description||"" Build: NIS_KEY=$macAddress NIS_VALUE=$NIS_KEY $ipHostNameT $optionalCommentT LINE=$macAddress $ipHostNameT $optionalCommentT Import: Extract: LINE =>$dummy $macAddressT $ipHostNameT #$descriptionT||\ $dummy $macAddressT $ipHostNameT Condense: objectClassT=string2instances("top device ieee802Device", " ") AllmacAddress=string2instances($macAddressT,",") Build: dn=cn=$ipHostNameT,$BASE_DN macAddress=$AllmacAddress objectClass=$objectClassT Table: ethers.byname Common: MAP_NAME=ethers.byname Dynamic: hostNameT=$NIS_KEY MATCH_FILTER=(&(objectClass=ieee802Device)(cn=$hostNameT)) ALL_FILTER=(&(objectClass=ieee802Device)(macAddress=*)) DC_NAMING=split($DOMAIN_NAME, ".", "dc=", ",", left2right) rootTreeT=ou=Services,$NAMING_CONTEXT||ou=Services,$DC_NAMING BASE_DN=ou=Hosts,$rootTreeT Export: Condense: ipHostNameT=getrdn() optionalCommentT=#$description||"" Build: NIS_KEY=$ipHostNameT NIS_VALUE=$macAddress $ipHostNameT $optionalCommentT ####################################### ## group ## ####################################### Table: group.byname Common: MAP_NAME=group.byname # The LDAP attribute used to store the key (cn) is case insensitive! CASE_SENSITIVE=yes Dynamic: LINE =>$dummy $groupNameT:$remainderT* groupNameT=$NIS_KEY MATCH_FILTER=(&(objectClass=posixGroup)(cn=$groupNameT)) ALL_FILTER=(&(objectClass=posixGroup)(cn=*)) DC_NAMING=split($DOMAIN_NAME, ".", "dc=", ",", left2right) rootTreeT=ou=Services,$NAMING_CONTEXT||ou=Services,$DC_NAMING BASE_DN=ou=Group,$rootTreeT Export: Extract: userPassword =>{crypt}$PasswordT* Condense: groupNameT=getrdn() membersUidListT=instances2string($memberUid, ",") optionalMembersUidListT=$membersUidListT||"" optionaluserPasswordT=$PasswordT||"" # # This list is used by the NIS to return the encrypted password even when it is # stored in clear in the datastore. # groupPasswordsT=instances2string($userPassword,",") groupPasswordListT=$groupPasswordsT||"" Build: NIS_KEY=$groupNameT NIS_VALUE=$groupNameT:$groupPasswordListT:$gidNumber:$optionalMembersUidListT LINE=$groupNameT:$optionaluserPasswordT:$gidNumber:$optionalMembersUidListT Import: Extract: LINE =>$dummy $groupNameT:$userPasswordT*:$gidNumberT:$membersUidListT* Condense: memberUidT=string2instances($membersUidListT,",") trimmemberUidT=trim($memberUidT) objectClassT=string2instances("top posixGroup", " ") Build: dn=cn=$groupNameT,$BASE_DN cn=$groupNameT gidNumber=$gidNumberT memberUid=$trimmemberUidT userPassword={crypt}$userPasswordT objectClass=$objectClassT Table: group.bygid Common: MAP_NAME=group.bygid Dynamic: gidNumberT=$NIS_KEY MATCH_FILTER=(&(objectClass=posixGroup)(gidNumber=$gidNumberT)) ALL_FILTER=(&(objectClass=posixGroup)(gidNumber=*)) DC_NAMING=split($DOMAIN_NAME, ".", "dc=", ",", left2right) rootTreeT=ou=Services,$NAMING_CONTEXT||ou=Services,$DC_NAMING BASE_DN=ou=Group,$rootTreeT Export: Extract: userPassword =>{crypt}$PasswordT* Condense: groupNameT=getrdn() membersUidListT=instances2string($memberUid, ",") optionalMembersUidListT=$membersUidListT||"" optionaluserPasswordT=$userPassword||"" # # This list is used by the NIS to return the encrypted password even when it is # stored in clear in the datastore. # groupPasswordsT=instances2string($userPassword,",") groupPasswordListT=$groupPasswordsT||"" Build: NIS_KEY=$gidNumber NIS_VALUE=$groupNameT:$groupPasswordListT:$gidNumber:$optionalMembersUidListT LINE=$groupNameT:$optionaluserPasswordT:$gidNumber:$optionalMembersUidListT ####################################### ## hosts ## ####################################### Table: hosts.byaddr Common: MAP_NAME=hosts.byaddr PRIVATE_OBJECTCLASSES=ipHost Dynamic: LINE =>$ipHostNumberT $remainderT ipHostNumberT=$NIS_KEY MATCH_FILTER=(&(objectClass=ipHost)(ipHostNumber=$ipHostNumberT)) ALL_FILTER=(&(objectClass=ipHost)(ipHostNumber=*)) DC_NAMING=split($DOMAIN_NAME, ".", "dc=", ",", left2right) rootTreeT=ou=Services,$NAMING_CONTEXT||ou=Services,$DC_NAMING BASE_DN=ou=Hosts,$rootTreeT Export: Condense: ihostsT=instances2string($cn," ") hostsT=exclude($ihostsT, "YP_MULTI_", "") ipHostNT=getrdn() ipHostnameT=exclude($ipHostNT, "YP_MULTI_", "") ipHostAliasesT=exclude($hostsT, $ipHostNameT, " ") optionalCommentT=#$description||"" Build: NIS_KEY=$ipHostNumber NIS_VALUE=$NIS_KEY $ipHostNameT $ipHostAliasesT $optionalCommentT LINE=$ipHostNumber $ipHostNameT $ipHostAliasesT $optionalCommentT Import: Extract: LINE =>$dummy $ipHostNumberT $ipHostNameT $allIpHostAliasesT*#$descriptionT*||\ $dummy $ipHostNumberT $ipHostNameT $allIpHostAliasesT||\ $dummy $ipHostNumberT $ipHostNameT Condense: ipHostAliasesLineT=exclude($allIpHostAliasesT,$ipHostNameT, " ") allIpHostNamesLineT=$ipHostNameT $ipHostAliasesLineT||$ipHostNameT allIpHostNamesT=string2instances($allIpHostNamesLineT," ") trimallIpHostNamesT=trim($allIpHostNamesT) objectClassT=string2instances("top device ipHost", " ") ipHostNumT=string2instances($ipHostNumberT, ":") Build: dn=cn=$ipHostNameT,$BASE_DN cn=$trimallIpHostNamesT ipHostNumber=$ipHostNumT description=$descriptionT objectClass=$objectClassT Table: hosts.byname Common: MAP_NAME=hosts.byname Dynamic: ipHostNameT=$NIS_KEY MATCH_FILTER=(&(objectClass=ipHost)(cn=$ipHostNameT)) ALL_FILTER=(&(objectClass=ipHost)(cn=*)) DC_NAMING=split($DOMAIN_NAME, ".", "dc=", ",", left2right) rootTreeT=ou=Services,$NAMING_CONTEXT||ou=Services,$DC_NAMING BASE_DN=ou=Hosts,$rootTreeT Export: Condense: ihostsT=instances2string($cn," ") hostsT=exclude($ihostsT, "YP_MULTI_", "") ipHostNameT=getrdn() ipHostAliasesT=exclude($hostsT, $ipHostNameT, " ") optionalCommentT=#$description||"" # # This list is created for the multihomed hosts. If you have only # one ip address you won't have any comma, otherwise you'll have the # list of ip addresses separated by commas # ipHostNumberListT=instances2string($ipHostNumber,",") Build: NIS_KEY=$ipHostNameT NIS_VALUE=$ipHostNumberListT $ipHostNameT $ipHostAliasesT $optionalCommentT ####################################### ## aliases ## ####################################### Table: mail.aliases Common: MAP_NAME=mail.aliases CASE_SENSITIVE=yes Dynamic: LINE =>$aliasNameT $aliasListT aliasNameT=$NIS_KEY MATCH_FILTER=(&(objectClass=nisMailAlias)(cn=$aliasNameT)) ALL_FILTER=(&(objectClass=nisMailAlias)(cn=*)) DC_NAMING=split($DOMAIN_NAME, ".", "dc=", ",", left2right) rootTreeT=ou=Services,$NAMING_CONTEXT||ou=Services,$DC_NAMING BASE_DN=ou=aliases,$rootTreeT Export: Condense: aliasNameT=getrdn() aliasListT=instances2string($rfc822mailMember, ",") Build: NIS_KEY=$aliasNameT NIS_VALUE=$aliasListT LINE=$aliasNameT:$aliaslistT Import: Extract: LINE =>$aliasNameT $aliasListT Condense: rfc822mailMembersT=string2instances($aliasListT,",") trimrfc822mailMembersT=trim($rfc822mailMembersT) objectClassT=string2instances("top nisMailAlias", " ") Build: dn=cn="$aliasNameT",$BASE_DN cn=$aliasNameT rfc822mailMember=$trimrfc822mailMembersT objectClass=$objectClassT ####################################### ## netgroup ## ####################################### Table: netgroup Common: MAP_NAME=netgroup CASE_SENSITIVE=yes Dynamic: LINE =>$nisNetGroupNameT $remainderT nisNetGroupNameT=$NIS_KEY MATCH_FILTER=(&(objectClass=nisNetgroup)(cn=$nisNetGroupNameT)) ALL_FILTER=(&(objectClass=nisNetgroup)(cn=*)) DC_NAMING=split($DOMAIN_NAME, ".", "dc=", ",", left2right) rootTreeT=ou=Services,$NAMING_CONTEXT||ou=Services,$DC_NAMING BASE_DN=ou=netgroup,$rootTreeT Export: Condense: nisNetGroupNameT=getrdn() nisNetGroupMembersT=instances2string($memberNisNetGroup, " ") nisNetGroupMembersT1=$nisNetGroupMembersT||"" nisNetGroupTripleT=instances2string($nisNetGroupTriple, " ") nisNetGroupTripleT1=$nisNetGroupTripleT||"" Build: NIS_KEY=$nisNetGroupNameT NIS_VALUE=$nisNetGroupMembersT1 $nisNetGroupTripleT1 LINE=$nisNetGroupNameT $nisNetGroupMembersT1 $nisNetGroupTripleT1 Import: Extract: NIS_KEY =>$nisNetGroupNameT NIS_VALUE =>$nisNetGroupTripleT LINE =>$nisNetGroupNameT $nisNetGroupTripleT Condense: # # First, fill in memberNisNetGroup attribute # nisGroupMembersT0=replace($nisNetGroupTripleT,"[(][^()]*[)]"," ") # Mind the tab in the replace arguments nisGroupMembersT1=replace($nisGroupMembersT0,"[ ][ ]*"," ") nisGroupMembersT11=replace($nisGroupMembersT1,"[ ][ ]*"," ") nisGroupMembersT2=string2instances($nisGroupMembersT11," ") nisGroupMembersT3=trim($nisGroupMembersT2) # # Then, fill in nisNetGroupTriple attribute # nisGroupTripleT0=replace($nisNetGroupTripleT,"[^()][^()]*[(]","(") nisGroupTripleT1=replace($nisGroupTripleT0,"[^()][^()]*$","") nisGroupTripleT2=replace($nisGroupTripleT1,"[)][(]",") (") nisGroupTripleT3=string2instances($nisGroupTripleT2," ") nisGroupTripleT4=trim($nisGroupTripleT3) # objectClassT=string2instances("top nisNetGroup", " ") Build: dn=cn=$nisNetGroupNameT,$BASE_DN cn=$nisNetGroupNameT nisNetGroupTriple=$nisGroupTripleT4 memberNisNetGroup=$nisGroupMembersT3 objectClass=$objectClassT Table: netgroup.byhost Common: MAP_NAME=netgroup.byhost CASE_SENSITIVE=yes Dynamic: LINE =>$nisKeyT $nisValueT nisKeyT=$NIS_KEY MATCH_FILTER=(&(objectClass=nisObject)(cn=$nisKeyT)) ALL_FILTER=(&(objectClass=nisObject)(cn=*)) 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=$cn NIS_VALUE=$nisMapEntry LINE=$cn $nisMapEntry Import: Extract: LINE =>$nisKeyT $nisValueT Build: dn=cn=$nisKeyT,$BASE_DN cn=$nisKeyT nisMapEntry=$nisValueT nisMapName=$MAP_NAME objectClass=nisObject Table: netgroup.byuser Common: MAP_NAME=netgroup.byuser CASE_SENSITIVE=yes Dynamic: LINE =>$nisKeyT $nisValueT nisKeyT=$NIS_KEY MATCH_FILTER=(&(objectClass=nisObject)(cn=$nisKeyT)) ALL_FILTER=(&(objectClass=nisObject)(cn=*)) 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=$cn NIS_VALUE=$nisMapEntry LINE=$cn $nisMapEntry Import: Extract: LINE =>$nisKeyT $nisValueT Build: dn=cn=$nisKeyT,$BASE_DN cn=$nisKeyT nisMapEntry=$nisValueT nisMapName=$MAP_NAME objectClass=nisObject ####################################### ## networks ## ####################################### Table: networks.byname Common: MAP_NAME=networks.byname Dynamic: ipNetworkNameT=$NIS_KEY MATCH_FILTER=(&(objectClass=ipNetwork)(cn=$ipNetworkNameT)) ALL_FILTER=(&(objectClass=ipNetwork)(cn=*)) DC_NAMING=split($DOMAIN_NAME, ".", "dc=", ",", left2right) rootTreeT=ou=Services,$NAMING_CONTEXT||ou=Services,$DC_NAMING BASE_DN=ou=networks,$rootTreeT Export: Condense: ipNetworkNameT=getrdn() nameListT=instances2string($cn," ") aliasListT=exclude($nameListT,$ipNetworkNameT," ") ipNetworkAliasesT=$aliasListT||"" optionalCommentT=#$description||"" Build: NIS_KEY=$ipNetworkNameT NIS_VALUE=$ipNetworkNameT $ipNetworkNumber $ipNetworkAliasesT $optionalCommentT Table: networks.byaddr Common: MAP_NAME=networks.byaddr Dynamic: LINE =>$dummy $ipNetworkNameT $ipNetworkNumberT #$remainderT*||\ $dummy $ipNetworkNameT $ipNetworkNumberT ipNetworkNumberT=$NIS_KEY MATCH_FILTER=(&(objectClass=ipNetwork)(ipNetworkNumber=$ipNetworkNumberT)) ALL_FILTER=(&(objectClass=ipNetwork)(ipNetworkNumber=*)) DC_NAMING=split($DOMAIN_NAME, ".", "dc=", ",", left2right) rootTreeT=ou=Services,$NAMING_CONTEXT||ou=Services,$DC_NAMING BASE_DN=ou=networks,$rootTreeT Export: Condense: ipNetworkNameT=getrdn() ipNetworkAliasesT=instances2string($cn," ") aliasListT=exclude($ipNetworkAliasesT,$ipNetworkNameT," ") optionalAliasListT=$aliasListT||"" optionalCommentT=#$description||"" Build: NIS_KEY=$ipNetworkNumber NIS_VALUE=$ipNetworkNameT $ipNetworkNumber $optionalAliasListT $optionalCommentT LINE=$ipNetworkNameT $ipNetworkNumber $ipNetworkAliasesT $optionalCommentT Import: Extract: LINE =>$dummy $ipNetworkNameT $ipNetworkNumberT $allIpNetworkAliasesT*#$descriptionT*||\ $dummy $ipNetworkNameT $ipNetworkNumberT $allIpNetworkAliasesT||\ $dummy $ipNetworkNameT $ipNetworkNumberT Condense: ipNetworkAliasesLineT=exclude($allIpNetworkAliasesT, $ipNetworkNameT, " ") allIpNetworkNamesLineT=$ipNetworkNameT $ipNetworkAliasesLineT||$ipNetworkNameT allIpNetworkNamesT=string2instances($allIpNetworkNamesLineT," ") trimallIpNetworkNamesT=trim($allIpNetworkNamesT) objectClassT=string2instances("top ipNetwork", " ") Build: dn=cn=$ipNetworkNameT,$BASE_DN cn=$trimallIpNetworkNamesT ipNetworkNumber=$ipNetworkNumberT objectClass=$objectClassT description=$descriptionT ####################################### ## passwd ## ####################################### Table: passwd.byname Common: MAP_NAME=passwd.byname CASE_SENSITIVE=yes Dynamic: LINE =>$dummy $uidT:$remainder uidT=$NIS_KEY MATCH_FILTER=(&(objectClass=posixAccount)(uid=$uidT)) ALL_FILTER=(&(objectClass=posixAccount)(uid=*)) DC_NAMING=split($DOMAIN_NAME, ".", "dc=", ",", left2right) rootTreeT=ou=People,$NAMING_CONTEXT||ou=People,$DC_NAMING BASE_DN=$rootTreeT Export: Extract: userPassword =>{crypt}$PasswordT* Condense: gecosT=$gecos||"" homeDirectoryT=$homeDirectory||"" loginShellT=$loginShell||"" userPasswordT=$PasswordT||"" # # This list is used by the NIS to return the encrypted password even when it is # stored in clear in the datastore. # userPasswordsT=instances2string($userPassword,",") userPasswordListT=$userPasswordsT||"" Build: NIS_KEY=$uid DSPASSWD_VALUE=$uid:$userPasswordListT:$uidNumber:$gidNumber:$gecosT:$homeDirectoryT:$loginShellT NIS_VALUE=$uid:$userPasswordListT:$uidNumber:$gidNumber:$gecosT:$homeDirectoryT:$loginShellT LINE=$uid:$userPasswordT:$uidNumber:$gidNumber:$gecosT:$homeDirectoryT:$loginShellT Import: Extract: NIS_KEY =>$uidT # This line is used ONLY by dsyppasswdd. Please do not change it. DSPASSWD_VALUE =>$uidT:$userPasswordListT*:$uidNumberT:$gidNumberT:$commentT*:$homeDirT*:$loginShellT* LINE =>$dummy $uidT:$rawUserPasswordT*:$uidNumberT:$gidNumberT:$firstNameT $initialsT $lastNameT -$commentT*:$homeDirT*:$loginShellT*||\ $dummy $uidT:$rawUserPasswordT*:$uidNumberT:$gidNumberT:$firstNameT $lastNameT -$commentT*:$homeDirT*:$loginShellT*||\ $dummy $uidT:$rawUserPasswordT*:$uidNumberT:$gidNumberT: $firstNameT $lastNameT -$commentT*:$homeDirT*:$loginShellT*||\ $dummy $uidT:$rawUserPasswordT*:$uidNumberT:$gidNumberT:$NameT-$commentT*:$homeDirT*:$loginShellT*||\ $dummy $uidT:$rawUserPasswordT*:$uidNumberT:$gidNumberT:$commentT*:$homeDirT*:$loginShellT* Condense: CommonNameT=$firstNameT $initialsT $lastNameT||\ $firstNameT $lastNameT||\ $NameT||\ $uidT gecosT=$firstNameT $initialsT $lastNameT -$commentT||\ $firstNameT $initialsT $lastNameT -||\ $firstNameT $lastNameT -$commentT||\ $firstNameT $lastNameT -||\ $NameT -$commentT||\ $NameT -||\ $commentT objectClassT=string2instances("top account posixAccount"," ") opthomeDirT=$homeDirT||"" cryptedPasswordT={crypt}$rawUserPasswordT||"" userPasswordLineT=string2instances($userPasswordListT,",") userPasswordT=$userPasswordLineT||$cryptedPasswordT Build: dn=cn="$CommonNameT",$BASE_DN uid=$uidT userpassword=$userPasswordT uidNumber=$uidNumberT gidNumber=$gidNumberT gecos=$gecosT homeDirectory=$opthomeDirT loginShell=$loginShellT objectClass=$objectClassT Table: passwd.byuid Common: MAP_NAME=passwd.byuid # The LDAP attribute used to store the key (uid) is case insensitive! CASE_SENSITIVE=yes Dynamic: uidNumberT=$NIS_KEY MATCH_FILTER=(&(objectClass=posixAccount)(uidNumber=$uidNumberT)) ALL_FILTER=(&(objectClass=posixAccount)(uidNumber=*)) DC_NAMING=split($DOMAIN_NAME, ".", "dc=", ",", left2right) rootTreeT=ou=People,$NAMING_CONTEXT||ou=People,$DC_NAMING BASE_DN=$rootTreeT Export: Extract: userPassword =>{crypt}$PasswordT* Condense: gecosT=$gecos||"" homeDirectoryT=$homeDirectory||"" loginShellT=$loginShell||"" userPasswordT=$PasswordT||"" # # This list is used by the NIS to return the encrypted password even when it is # stored in clear in the datastore. # userPasswordsT=instances2string($userPassword,",") userPasswordListT=$userPasswordsT||"" Build: NIS_KEY=$uidNumber DSPASSWD_VALUE=$uid:$userPasswordT:$uidNumber:$gidNumber:$gecosT:$homeDirectoryT:$loginShellT NIS_VALUE=$uid:$userPasswordListT:$uidNumber:$gidNumber:$gecosT:$homeDirectoryT:$loginShellT ####################################### ## protocols ## ####################################### Table: protocols.byname Common: MAP_NAME=protocols.byname Dynamic: ipProtocolNameT=$NIS_KEY MATCH_FILTER=(&(objectClass=ipProtocol)(cn=$ipProtocolNameT)) ALL_FILTER=(&(objectClass=ipProtocol)(cn=*)) DC_NAMING=split($DOMAIN_NAME, ".", "dc=", ",", left2right) rootTreeT=ou=Services,$NAMING_CONTEXT||ou=Services,$DC_NAMING BASE_DN=ou=protocols,$rootTreeT Export: Condense: allIpProtocolNamesT=instances2string($cn," ") ipProtocolNameT=getrdn() ipProtocolAliasesT=exclude($allIpProtocolNamesT, $ipProtocolNameT, " ") optionalCommentT=#$description||"" Build: NIS_KEY=$ipProtocolNameT NIS_VALUE=$ipProtocolNameT $ipProtocolNumber $ipProtocolAliasesT $optionalCommentT Table: protocols.bynumber Common: MAP_NAME=protocols.bynumber Dynamic: LINE =>$dummy $ipProtocolNameT $ipProtocolNumberT $remainderT* ||\ $dummy $ipProtocolNameT $ipProtocolNumberT ipProtocolNumberT=$NIS_KEY MATCH_FILTER=(&(objectClass=ipProtocol)(ipProtocolNumber=$ipProtocolNumberT)) ALL_FILTER=(&(objectClass=ipProtocol)(ipProtocolNumber=*)) DC_NAMING=split($DOMAIN_NAME, ".", "dc=", ",", left2right) rootTreeT=ou=Services,$NAMING_CONTEXT||ou=Services,$DC_NAMING BASE_DN=ou=protocols,$rootTreeT Export: Condense: allIpProtocolNamesT=instances2string($cn," ") ipProtocolNameT=getrdn() ipProtocolAliasesT=exclude($allIpProtocolNamesT, $ipProtocolNameT, " ") optionalCommentT=#$description||"" Build: NIS_KEY=$ipProtocolNumber NIS_VALUE=$ipProtocolNameT $ipProtocolNumber $ipProtocolAliasesT $optionalCommentT LINE=$ipProtocolNameT $ipProtocolNumber $ipProtocolAliasesT $optionalCommentT Import: Extract: LINE =>$dummy $ipProtocolNameT $ipProtocolNumberT $allIpProtocolAliasesT*#$descriptionT*||\ $dummy $ipProtocolNameT $ipProtocolNumberT $allIpProtocolAliasesT||\ $dummy $ipProtocolNameT $ipProtocolNumberT Condense: ipProtocolAliasesLineT=exclude($allIpProtocolAliasesT,$ipProtocolNameT, " ") allIpProtocolNamesLineT=$ipProtocolNameT $ipProtocolAliasesLineT||\ $ipProtocolNameT allIpProtocolNamesT=string2instances($allIpProtocolNamesLineT," ") trimallIpProtocolNamesT=trim($allIpProtocolNamesT) objectClassT=string2instances("top ipProtocol", " ") Build: dn=cn=$ipProtocolNameT,$BASE_DN cn=$trimallIpProtocolNamesT ipProtocolNumber=$ipProtocolNumberT description=$descriptionT objectClass=$objectClassT ####################################### ## rpc ## ####################################### Table: rpc.bynumber Common: MAP_NAME=rpc.bynumber Dynamic: LINE =>$dummy $oncRpcNumberT $remainderT*||\ $dummy $oncRpcNumberT oncRpcNumberT=$NIS_KEY MATCH_FILTER=(&(objectClass=oncRpc)(oncRpcNumber=$oncRpcNumberT)) ALL_FILTER=(&(objectClass=oncRpc)(oncRpcNumber=*)) DC_NAMING=split($DOMAIN_NAME, ".", "dc=", ",", left2right) rootTreeT=ou=Services,$NAMING_CONTEXT||ou=Services,$DC_NAMING BASE_DN=ou=rpc,$rootTreeT Export: Condense: allRpcNamesT=instances2string($cn," ") oncRpcNameT=getrdn() oncRpcAliasesT=exclude($allRpcNamesT, $oncRpcNameT, " ") optionalCommentT=#$description||"" Build: NIS_KEY=$oncRpcNumber NIS_VALUE=$oncRpcNameT $oncRpcNumber $oncRpcAliasesT $optionalCommentT LINE=$oncRpcNameT $oncRpcNumber $oncRpcAliasesT $optionalCommentT Import: Extract: LINE =>$dummy $oncRpcNameT $oncRpcNumberT $allOncRpcAliasesT*#$descriptionT*||\ $dummy $oncRpcNameT $oncRpcNumberT $allOncRpcAliasesT||\ $dummy $oncRpcNameT $oncRpcNumberT Condense: oncRpcAliasesLineT=exclude($allOncRpcAliasesT,$oncRpcNameT, " ") allOncRpcNamesLineT=$oncRpcNameT $oncRpcAliasesLineT||$oncRpcNameT allOncRpcNamesT=string2instances($allOncRpcNamesLineT," ") trimallOncRpcNamesT=trim($allOncRpcNamesT) objectClassT=string2instances("top oncRpc", " ") Build: dn=cn=$oncRpcNameT,$BASE_DN cn=$trimallOncRpcNamesT oncRpcNumber=$oncRpcNumberT description=$descriptionT objectClass=$objectClassT ####################################### ## ypservers ## ####################################### Table: ypservers Common: MAP_NAME=ypservers Dynamic: LINE=>$ypServerNameT ypServerNameT=$NIS_KEY MATCH_FILTER=(&(objectClass=sunNisServer)(cn=$ypServerNameT)) ALL_FILTER=(&(objectClass=sunNisServer)(cn=*)) DC_NAMING=split($DOMAIN_NAME, ".", "dc=", ",", left2right) rootTreeT=ou=Services,$NAMING_CONTEXT||ou=Services,$DC_NAMING BASE_DN=ou=ypservers,$rootTreeT Export: Condense: ypServerNameT=getrdn() emptyValT="" Build: NIS_KEY=$ypServerNameT NIS_VALUE=$emptyValT LINE=$ypServerNameT Import: Extract: LINE =>$ypServerNameT Condense: objectClassT=string2instances("top sunNisServer", " ") trimypServerNameT=trim($ypServerNameT) Build: dn=cn=$trimypServerNameT,$BASE_DN cn=$trimypServerNameT objectClass=$objectClassT