summaryrefslogtreecommitdiffstats
path: root/ldap/clients/dsgw
diff options
context:
space:
mode:
authorcvsadm <cvsadm>2005-01-21 00:44:34 +0000
committercvsadm <cvsadm>2005-01-21 00:44:34 +0000
commitb2093e3016027d6b5cf06b3f91f30769bfc099e2 (patch)
treecf58939393a9032182c4fbc4441164a9456e82f8 /ldap/clients/dsgw
downloadds-b2093e3016027d6b5cf06b3f91f30769bfc099e2.tar.gz
ds-b2093e3016027d6b5cf06b3f91f30769bfc099e2.tar.xz
ds-b2093e3016027d6b5cf06b3f91f30769bfc099e2.zip
Moving NSCP Directory Server from DirectoryBranch to TRUNK, initial drop. (foxworth)ldapserver7x
Diffstat (limited to 'ldap/clients/dsgw')
-rw-r--r--ldap/clients/dsgw/Makefile305
-rw-r--r--ldap/clients/dsgw/Versiongw.c25
-rw-r--r--ldap/clients/dsgw/admhtml/Makefile52
-rw-r--r--ldap/clients/dsgw/admhtml/display-country.html52
-rw-r--r--ldap/clients/dsgw/admhtml/display-dnedit.html74
-rw-r--r--ldap/clients/dsgw/admhtml/display-dnedittop.html19
-rw-r--r--ldap/clients/dsgw/admhtml/display-group.html122
-rw-r--r--ldap/clients/dsgw/admhtml/display-groupun.html122
-rw-r--r--ldap/clients/dsgw/admhtml/display-licensed-user.html71
-rw-r--r--ldap/clients/dsgw/admhtml/display-mailgroup.html121
-rw-r--r--ldap/clients/dsgw/admhtml/display-org.html129
-rw-r--r--ldap/clients/dsgw/admhtml/display-orgperson.html142
-rw-r--r--ldap/clients/dsgw/admhtml/display-orgunit.html95
-rw-r--r--ldap/clients/dsgw/admhtml/display-person.html133
-rw-r--r--ldap/clients/dsgw/admhtml/display-umperson.html177
-rw-r--r--ldap/clients/dsgw/admhtml/dsconfig.html191
-rw-r--r--ldap/clients/dsgw/admhtml/dscrgroup.html114
-rw-r--r--ldap/clients/dsgw/admhtml/dscrou.html103
-rw-r--r--ldap/clients/dsgw/admhtml/dscruser.html172
-rw-r--r--ldap/clients/dsgw/admhtml/dsexpldif.html76
-rw-r--r--ldap/clients/dsgw/admhtml/dsimpldif.html85
-rw-r--r--ldap/clients/dsgw/admhtml/dslsgroups.html164
-rw-r--r--ldap/clients/dsgw/admhtml/dslsous.html172
-rw-r--r--ldap/clients/dsgw/admhtml/dslsusers.html166
-rw-r--r--ldap/clients/dsgw/admhtml/edit-passwd.html103
-rw-r--r--ldap/clients/dsgw/admhtml/index.lst87
-rw-r--r--ldap/clients/dsgw/admhtml/list-Anything.html42
-rw-r--r--ldap/clients/dsgw/admhtml/list-Auth.html72
-rw-r--r--ldap/clients/dsgw/admhtml/list-Groups-report.html56
-rw-r--r--ldap/clients/dsgw/admhtml/list-Groups-rm.html80
-rw-r--r--ldap/clients/dsgw/admhtml/list-Groups.html62
-rw-r--r--ldap/clients/dsgw/admhtml/list-Org-Units.html62
-rw-r--r--ldap/clients/dsgw/admhtml/list-OrgUnits-report.html56
-rw-r--r--ldap/clients/dsgw/admhtml/list-OrgUnits.html62
-rw-r--r--ldap/clients/dsgw/admhtml/list-Organizations.html38
-rw-r--r--ldap/clients/dsgw/admhtml/list-Ous-rm.html80
-rw-r--r--ldap/clients/dsgw/admhtml/list-People-report.html60
-rw-r--r--ldap/clients/dsgw/admhtml/list-People-rm.html81
-rw-r--r--ldap/clients/dsgw/admhtml/list-People.html61
-rw-r--r--ldap/clients/dsgw/admhtml/list-fa-Groups.html24
-rw-r--r--ldap/clients/dsgw/admhtml/list-fa-People.html24
-rw-r--r--ldap/clients/dsgw/admhtml/list-fa_people.html24
-rw-r--r--ldap/clients/dsgw/admhtml/list-urlsearch.html39
-rw-r--r--ldap/clients/dsgw/auth.c120
-rw-r--r--ldap/clients/dsgw/cgiutil.c512
-rw-r--r--ldap/clients/dsgw/ckdel.c30
-rw-r--r--ldap/clients/dsgw/ckdump.c38
-rw-r--r--ldap/clients/dsgw/ckget.c46
-rw-r--r--ldap/clients/dsgw/ckpurge.c33
-rw-r--r--ldap/clients/dsgw/ckput.c63
-rw-r--r--ldap/clients/dsgw/collate.c400
-rw-r--r--ldap/clients/dsgw/config.c2080
-rw-r--r--ldap/clients/dsgw/config/Makefile77
-rw-r--r--ldap/clients/dsgw/config/authPassword.html30
-rw-r--r--ldap/clients/dsgw/config/authSearch.html35
-rw-r--r--ldap/clients/dsgw/config/csearch.html28
-rw-r--r--ldap/clients/dsgw/config/csearchAttr.html23
-rw-r--r--ldap/clients/dsgw/config/csearchBase.html22
-rw-r--r--ldap/clients/dsgw/config/csearchMatch.html21
-rw-r--r--ldap/clients/dsgw/config/csearchString.html26
-rw-r--r--ldap/clients/dsgw/config/csearchType.html24
-rw-r--r--ldap/clients/dsgw/config/de/authPassword.html29
-rw-r--r--ldap/clients/dsgw/config/de/authSearch.html33
-rw-r--r--ldap/clients/dsgw/config/de/csearchAttr.html17
-rw-r--r--ldap/clients/dsgw/config/de/csearchBase.html17
-rw-r--r--ldap/clients/dsgw/config/de/csearchString.html28
-rw-r--r--ldap/clients/dsgw/config/de/csearchType.html18
-rw-r--r--ldap/clients/dsgw/config/de/display-country.html54
-rw-r--r--ldap/clients/dsgw/config/de/display-dnedit.html76
-rw-r--r--ldap/clients/dsgw/config/de/display-dneditpeople.html75
-rw-r--r--ldap/clients/dsgw/config/de/display-group.html150
-rw-r--r--ldap/clients/dsgw/config/de/display-groupun.html150
-rw-r--r--ldap/clients/dsgw/config/de/display-mailgroup.html124
-rw-r--r--ldap/clients/dsgw/config/de/display-ntgroup.html216
-rw-r--r--ldap/clients/dsgw/config/de/display-ntperson.html505
-rw-r--r--ldap/clients/dsgw/config/de/display-org.html136
-rw-r--r--ldap/clients/dsgw/config/de/display-orgperson.html345
-rw-r--r--ldap/clients/dsgw/config/de/display-orgunit.html136
-rw-r--r--ldap/clients/dsgw/config/de/display-person.html231
-rw-r--r--ldap/clients/dsgw/config/de/display-umperson.html200
-rw-r--r--ldap/clients/dsgw/config/de/dsgw-l10n.conf18
-rw-r--r--ldap/clients/dsgw/config/de/dsgw.conf133
-rw-r--r--ldap/clients/dsgw/config/de/dsgw.tmpl116
-rw-r--r--ldap/clients/dsgw/config/de/dsgw_adm.conf46
-rw-r--r--ldap/clients/dsgw/config/de/dsgwfilter.conf139
-rw-r--r--ldap/clients/dsgw/config/de/dsgwfilter_adm.conf73
-rw-r--r--ldap/clients/dsgw/config/de/dsgwsearchprefs.conf213
-rw-r--r--ldap/clients/dsgw/config/de/edit-passwd.html78
-rw-r--r--ldap/clients/dsgw/config/de/list-Anything.html42
-rw-r--r--ldap/clients/dsgw/config/de/list-Auth.html73
-rw-r--r--ldap/clients/dsgw/config/de/list-Groups.html38
-rw-r--r--ldap/clients/dsgw/config/de/list-NT-Groups.html44
-rw-r--r--ldap/clients/dsgw/config/de/list-NT-People.html48
-rw-r--r--ldap/clients/dsgw/config/de/list-Org-Units.html38
-rw-r--r--ldap/clients/dsgw/config/de/list-Organizations.html38
-rw-r--r--ldap/clients/dsgw/config/de/list-People.html48
-rw-r--r--ldap/clients/dsgw/config/de/list-fa-Groups.html22
-rw-r--r--ldap/clients/dsgw/config/de/list-fa-People.html22
-rw-r--r--ldap/clients/dsgw/config/de/list-urlsearch.html38
-rw-r--r--ldap/clients/dsgw/config/de/newentry.html25
-rw-r--r--ldap/clients/dsgw/config/de/newentryName.html48
-rw-r--r--ldap/clients/dsgw/config/de/newentryType.html14
-rw-r--r--ldap/clients/dsgw/config/de/search.html18
-rw-r--r--ldap/clients/dsgw/config/de/searchString.html30
-rw-r--r--ldap/clients/dsgw/config/display-country.html61
-rw-r--r--ldap/clients/dsgw/config/display-dc.html188
-rw-r--r--ldap/clients/dsgw/config/display-dnedit.html85
-rw-r--r--ldap/clients/dsgw/config/display-dneditpeople.html83
-rw-r--r--ldap/clients/dsgw/config/display-group.html186
-rw-r--r--ldap/clients/dsgw/config/display-groupun.html186
-rw-r--r--ldap/clients/dsgw/config/display-ntgroup.html277
-rw-r--r--ldap/clients/dsgw/config/display-ntperson.html670
-rw-r--r--ldap/clients/dsgw/config/display-org.html189
-rw-r--r--ldap/clients/dsgw/config/display-orgperson.html501
-rw-r--r--ldap/clients/dsgw/config/display-orgunit.html191
-rw-r--r--ldap/clients/dsgw/config/display-person.html366
-rw-r--r--ldap/clients/dsgw/config/dsgw-l10n.conf18
-rw-r--r--ldap/clients/dsgw/config/dsgw.tmpl148
-rw-r--r--ldap/clients/dsgw/config/dsgw_adm.conf46
-rw-r--r--ldap/clients/dsgw/config/dsgwfilter.conf154
-rw-r--r--ldap/clients/dsgw/config/dsgwfilter_adm.conf73
-rw-r--r--ldap/clients/dsgw/config/dsgwsearchprefs.conf234
-rw-r--r--ldap/clients/dsgw/config/edit-passwd.html78
-rw-r--r--ldap/clients/dsgw/config/en-us/dsgw-l10n.conf18
-rw-r--r--ldap/clients/dsgw/config/en-us/dsgwcollate.conf8
-rw-r--r--ldap/clients/dsgw/config/en/dsgw-l10n.conf18
-rw-r--r--ldap/clients/dsgw/config/en/dsgwcollate.conf41
-rw-r--r--ldap/clients/dsgw/config/es/authPassword.html29
-rw-r--r--ldap/clients/dsgw/config/es/authSearch.html33
-rw-r--r--ldap/clients/dsgw/config/es/csearch.html23
-rw-r--r--ldap/clients/dsgw/config/es/csearchAttr.html18
-rw-r--r--ldap/clients/dsgw/config/es/csearchBase.html17
-rw-r--r--ldap/clients/dsgw/config/es/csearchString.html28
-rw-r--r--ldap/clients/dsgw/config/es/csearchType.html19
-rw-r--r--ldap/clients/dsgw/config/es/display-country.html54
-rw-r--r--ldap/clients/dsgw/config/es/display-dnedit.html76
-rw-r--r--ldap/clients/dsgw/config/es/display-dneditpeople.html75
-rw-r--r--ldap/clients/dsgw/config/es/display-group.html149
-rw-r--r--ldap/clients/dsgw/config/es/display-groupun.html149
-rw-r--r--ldap/clients/dsgw/config/es/display-ntgroup.html215
-rw-r--r--ldap/clients/dsgw/config/es/display-ntperson.html493
-rw-r--r--ldap/clients/dsgw/config/es/display-org.html135
-rw-r--r--ldap/clients/dsgw/config/es/display-orgperson.html342
-rw-r--r--ldap/clients/dsgw/config/es/display-orgunit.html135
-rw-r--r--ldap/clients/dsgw/config/es/display-person.html229
-rw-r--r--ldap/clients/dsgw/config/es/dsgw-l10n.conf18
-rw-r--r--ldap/clients/dsgw/config/es/dsgw.tmpl116
-rw-r--r--ldap/clients/dsgw/config/es/dsgw_adm.conf46
-rw-r--r--ldap/clients/dsgw/config/es/dsgwfilter.conf139
-rw-r--r--ldap/clients/dsgw/config/es/dsgwfilter_adm.conf73
-rw-r--r--ldap/clients/dsgw/config/es/dsgwsearchprefs.conf213
-rw-r--r--ldap/clients/dsgw/config/es/edit-passwd.html78
-rw-r--r--ldap/clients/dsgw/config/es/list-Anything.html42
-rw-r--r--ldap/clients/dsgw/config/es/list-Auth.html73
-rw-r--r--ldap/clients/dsgw/config/es/list-Groups.html38
-rw-r--r--ldap/clients/dsgw/config/es/list-NT-Groups.html44
-rw-r--r--ldap/clients/dsgw/config/es/list-NT-People.html48
-rw-r--r--ldap/clients/dsgw/config/es/list-Org-Units.html38
-rw-r--r--ldap/clients/dsgw/config/es/list-Organizations.html38
-rw-r--r--ldap/clients/dsgw/config/es/list-People.html48
-rw-r--r--ldap/clients/dsgw/config/es/list-fa-Groups.html22
-rw-r--r--ldap/clients/dsgw/config/es/list-fa-People.html22
-rw-r--r--ldap/clients/dsgw/config/es/list-urlsearch.html38
-rw-r--r--ldap/clients/dsgw/config/es/newentry.html26
-rw-r--r--ldap/clients/dsgw/config/es/newentryName.html48
-rw-r--r--ldap/clients/dsgw/config/es/newentryType.html14
-rw-r--r--ldap/clients/dsgw/config/es/ns-license-schema.conf17
-rw-r--r--ldap/clients/dsgw/config/es/search.html18
-rw-r--r--ldap/clients/dsgw/config/es/searchString.html30
-rw-r--r--ldap/clients/dsgw/config/fr/authPassword.html29
-rw-r--r--ldap/clients/dsgw/config/fr/authSearch.html34
-rw-r--r--ldap/clients/dsgw/config/fr/csearch.html23
-rw-r--r--ldap/clients/dsgw/config/fr/csearchAttr.html17
-rw-r--r--ldap/clients/dsgw/config/fr/csearchBase.html17
-rw-r--r--ldap/clients/dsgw/config/fr/csearchString.html28
-rw-r--r--ldap/clients/dsgw/config/fr/csearchType.html18
-rw-r--r--ldap/clients/dsgw/config/fr/display-country.html54
-rw-r--r--ldap/clients/dsgw/config/fr/display-dnedit.html76
-rw-r--r--ldap/clients/dsgw/config/fr/display-dneditpeople.html77
-rw-r--r--ldap/clients/dsgw/config/fr/display-group.html150
-rw-r--r--ldap/clients/dsgw/config/fr/display-groupun.html150
-rw-r--r--ldap/clients/dsgw/config/fr/display-mailgroup.html125
-rw-r--r--ldap/clients/dsgw/config/fr/display-ntgroup.html218
-rw-r--r--ldap/clients/dsgw/config/fr/display-ntperson.html508
-rw-r--r--ldap/clients/dsgw/config/fr/display-org.html137
-rw-r--r--ldap/clients/dsgw/config/fr/display-orgperson.html346
-rw-r--r--ldap/clients/dsgw/config/fr/display-orgunit.html136
-rw-r--r--ldap/clients/dsgw/config/fr/display-person.html233
-rw-r--r--ldap/clients/dsgw/config/fr/display-umperson.html200
-rw-r--r--ldap/clients/dsgw/config/fr/dsgw-l10n.conf18
-rw-r--r--ldap/clients/dsgw/config/fr/dsgw.conf133
-rw-r--r--ldap/clients/dsgw/config/fr/dsgw.tmpl113
-rw-r--r--ldap/clients/dsgw/config/fr/dsgw_adm.conf48
-rw-r--r--ldap/clients/dsgw/config/fr/dsgwfilter.conf141
-rw-r--r--ldap/clients/dsgw/config/fr/dsgwfilter_adm.conf75
-rw-r--r--ldap/clients/dsgw/config/fr/dsgwsearchprefs.conf214
-rw-r--r--ldap/clients/dsgw/config/fr/edit-passwd.html78
-rw-r--r--ldap/clients/dsgw/config/fr/list-Anything.html42
-rw-r--r--ldap/clients/dsgw/config/fr/list-Auth.html75
-rw-r--r--ldap/clients/dsgw/config/fr/list-Groups.html38
-rw-r--r--ldap/clients/dsgw/config/fr/list-NT-Groups.html46
-rw-r--r--ldap/clients/dsgw/config/fr/list-NT-People.html50
-rw-r--r--ldap/clients/dsgw/config/fr/list-Org-Units.html38
-rw-r--r--ldap/clients/dsgw/config/fr/list-Organizations.html38
-rw-r--r--ldap/clients/dsgw/config/fr/list-People.html50
-rw-r--r--ldap/clients/dsgw/config/fr/list-fa-Groups.html22
-rw-r--r--ldap/clients/dsgw/config/fr/list-fa-People.html22
-rw-r--r--ldap/clients/dsgw/config/fr/list-urlsearch.html38
-rw-r--r--ldap/clients/dsgw/config/fr/newentry.html27
-rw-r--r--ldap/clients/dsgw/config/fr/newentryName.html48
-rw-r--r--ldap/clients/dsgw/config/fr/newentryType.html14
-rw-r--r--ldap/clients/dsgw/config/fr/search.html18
-rw-r--r--ldap/clients/dsgw/config/fr/searchString.html30
-rw-r--r--ldap/clients/dsgw/config/ja/authPassword.html29
-rw-r--r--ldap/clients/dsgw/config/ja/authSearch.html33
-rw-r--r--ldap/clients/dsgw/config/ja/csearch.html23
-rw-r--r--ldap/clients/dsgw/config/ja/csearchAttr.html17
-rw-r--r--ldap/clients/dsgw/config/ja/csearchBase.html17
-rw-r--r--ldap/clients/dsgw/config/ja/csearchString.html28
-rw-r--r--ldap/clients/dsgw/config/ja/csearchType.html18
-rw-r--r--ldap/clients/dsgw/config/ja/display-country.html54
-rw-r--r--ldap/clients/dsgw/config/ja/display-dnedit.html76
-rw-r--r--ldap/clients/dsgw/config/ja/display-dneditpeople.html75
-rw-r--r--ldap/clients/dsgw/config/ja/display-group.html150
-rw-r--r--ldap/clients/dsgw/config/ja/display-groupun.html150
-rw-r--r--ldap/clients/dsgw/config/ja/display-mailgroup.html124
-rw-r--r--ldap/clients/dsgw/config/ja/display-ntgroup.html218
-rw-r--r--ldap/clients/dsgw/config/ja/display-ntperson.html506
-rw-r--r--ldap/clients/dsgw/config/ja/display-org.html136
-rw-r--r--ldap/clients/dsgw/config/ja/display-orgperson.html345
-rw-r--r--ldap/clients/dsgw/config/ja/display-orgunit.html136
-rw-r--r--ldap/clients/dsgw/config/ja/display-person.html230
-rw-r--r--ldap/clients/dsgw/config/ja/display-umperson.html199
-rw-r--r--ldap/clients/dsgw/config/ja/dsgw-l10n.conf18
-rw-r--r--ldap/clients/dsgw/config/ja/dsgw.conf133
-rw-r--r--ldap/clients/dsgw/config/ja/dsgw.tmpl111
-rw-r--r--ldap/clients/dsgw/config/ja/dsgw_adm.conf46
-rw-r--r--ldap/clients/dsgw/config/ja/dsgwcharset.conf7
-rw-r--r--ldap/clients/dsgw/config/ja/dsgwcollate.conf31
-rw-r--r--ldap/clients/dsgw/config/ja/dsgwfilter.conf139
-rw-r--r--ldap/clients/dsgw/config/ja/dsgwfilter_adm.conf73
-rw-r--r--ldap/clients/dsgw/config/ja/dsgwsearchprefs.conf213
-rw-r--r--ldap/clients/dsgw/config/ja/edit-passwd.html78
-rw-r--r--ldap/clients/dsgw/config/ja/list-Anything.html42
-rw-r--r--ldap/clients/dsgw/config/ja/list-Auth.html73
-rw-r--r--ldap/clients/dsgw/config/ja/list-Groups.html38
-rw-r--r--ldap/clients/dsgw/config/ja/list-NT-Groups.html44
-rw-r--r--ldap/clients/dsgw/config/ja/list-NT-People.html48
-rw-r--r--ldap/clients/dsgw/config/ja/list-Org-Units.html38
-rw-r--r--ldap/clients/dsgw/config/ja/list-Organizations.html38
-rw-r--r--ldap/clients/dsgw/config/ja/list-People.html48
-rw-r--r--ldap/clients/dsgw/config/ja/list-fa-Groups.html22
-rw-r--r--ldap/clients/dsgw/config/ja/list-fa-People.html22
-rw-r--r--ldap/clients/dsgw/config/ja/list-urlsearch.html38
-rw-r--r--ldap/clients/dsgw/config/ja/newentry.html26
-rw-r--r--ldap/clients/dsgw/config/ja/newentryName.html48
-rw-r--r--ldap/clients/dsgw/config/ja/newentryType.html14
-rw-r--r--ldap/clients/dsgw/config/ja/search.html18
-rw-r--r--ldap/clients/dsgw/config/ja/searchString.html30
-rw-r--r--ldap/clients/dsgw/config/ko/dsgw-l10n.conf18
-rw-r--r--ldap/clients/dsgw/config/ko/dsgwcharset.conf7
-rw-r--r--ldap/clients/dsgw/config/list-Anything.html120
-rw-r--r--ldap/clients/dsgw/config/list-Auth.html78
-rw-r--r--ldap/clients/dsgw/config/list-Domaincomponent.html115
-rw-r--r--ldap/clients/dsgw/config/list-Groups.html110
-rw-r--r--ldap/clients/dsgw/config/list-NT-Groups.html119
-rw-r--r--ldap/clients/dsgw/config/list-NT-People.html152
-rw-r--r--ldap/clients/dsgw/config/list-Org-Units.html118
-rw-r--r--ldap/clients/dsgw/config/list-Organizations.html127
-rw-r--r--ldap/clients/dsgw/config/list-People.html176
-rw-r--r--ldap/clients/dsgw/config/list-fa-Groups.html26
-rw-r--r--ldap/clients/dsgw/config/list-fa-People.html26
-rw-r--r--ldap/clients/dsgw/config/list-urlsearch.html129
-rw-r--r--ldap/clients/dsgw/config/newentry.html26
-rw-r--r--ldap/clients/dsgw/config/newentryName.html62
-rw-r--r--ldap/clients/dsgw/config/newentryType.html25
-rw-r--r--ldap/clients/dsgw/config/ns-license-schema.conf17
-rw-r--r--ldap/clients/dsgw/config/search.html18
-rw-r--r--ldap/clients/dsgw/config/searchString.html41
-rw-r--r--ldap/clients/dsgw/config/zh/dsgw-l10n.conf18
-rw-r--r--ldap/clients/dsgw/config/zh/dsgwcharset.conf7
-rw-r--r--ldap/clients/dsgw/cookie.c990
-rw-r--r--ldap/clients/dsgw/csearch.c336
-rw-r--r--ldap/clients/dsgw/dbtdsgw.h447
-rw-r--r--ldap/clients/dsgw/dnedit.c415
-rw-r--r--ldap/clients/dsgw/doauth.c386
-rw-r--r--ldap/clients/dsgw/domodify.c1254
-rw-r--r--ldap/clients/dsgw/dosearch.c352
-rw-r--r--ldap/clients/dsgw/dsconfig.c255
-rw-r--r--ldap/clients/dsgw/dsexpldif.c133
-rw-r--r--ldap/clients/dsgw/dsgw.h1053
-rw-r--r--ldap/clients/dsgw/dsgw_include.mk23
-rw-r--r--ldap/clients/dsgw/dsgwutil.c1318
-rw-r--r--ldap/clients/dsgw/dsimpldif.c150
-rw-r--r--ldap/clients/dsgw/edit.c256
-rw-r--r--ldap/clients/dsgw/emitauth.c317
-rw-r--r--ldap/clients/dsgw/emitf.c860
-rw-r--r--ldap/clients/dsgw/entrydisplay.c3228
-rw-r--r--ldap/clients/dsgw/error.c542
-rw-r--r--ldap/clients/dsgw/genscreen.c117
-rw-r--r--ldap/clients/dsgw/getopt.c115
-rw-r--r--ldap/clients/dsgw/html/Makefile81
-rw-r--r--ldap/clients/dsgw/html/aim-online.gifbin0 -> 897 bytes
-rw-r--r--ldap/clients/dsgw/html/alert.gifbin0 -> 368 bytes
-rw-r--r--ldap/clients/dsgw/html/alert.html24
-rw-r--r--ldap/clients/dsgw/html/auth.html26
-rw-r--r--ldap/clients/dsgw/html/authroot.html26
-rw-r--r--ldap/clients/dsgw/html/authtitle.html156
-rw-r--r--ldap/clients/dsgw/html/back1.gifbin0 -> 1068 bytes
-rw-r--r--ldap/clients/dsgw/html/clear.gifbin0 -> 43 bytes
-rw-r--r--ldap/clients/dsgw/html/confirm.gifbin0 -> 372 bytes
-rw-r--r--ldap/clients/dsgw/html/confirm.html30
-rw-r--r--ldap/clients/dsgw/html/content1.gifbin0 -> 1131 bytes
-rw-r--r--ldap/clients/dsgw/html/country.gifbin0 -> 298 bytes
-rw-r--r--ldap/clients/dsgw/html/csearchtitle.html156
-rw-r--r--ldap/clients/dsgw/html/dc.gifbin0 -> 268 bytes
-rw-r--r--ldap/clients/dsgw/html/de/adsearch_off.gifbin0 -> 1348 bytes
-rw-r--r--ldap/clients/dsgw/html/de/adsearch_on.gifbin0 -> 1348 bytes
-rw-r--r--ldap/clients/dsgw/html/de/auth.html24
-rw-r--r--ldap/clients/dsgw/html/de/authen_off.gifbin0 -> 1335 bytes
-rw-r--r--ldap/clients/dsgw/html/de/authen_on.gifbin0 -> 1330 bytes
-rw-r--r--ldap/clients/dsgw/html/de/authroot.html22
-rw-r--r--ldap/clients/dsgw/html/de/authtitle.html37
-rw-r--r--ldap/clients/dsgw/html/de/back.gifbin0 -> 384 bytes
-rw-r--r--ldap/clients/dsgw/html/de/back1.gifbin0 -> 276 bytes
-rw-r--r--ldap/clients/dsgw/html/de/content.gifbin0 -> 681 bytes
-rw-r--r--ldap/clients/dsgw/html/de/content1.gifbin0 -> 317 bytes
-rw-r--r--ldap/clients/dsgw/html/de/csearchtitle.html37
-rw-r--r--ldap/clients/dsgw/html/de/eduser.html30
-rw-r--r--ldap/clients/dsgw/html/de/exit1.gifbin0 -> 352 bytes
-rw-r--r--ldap/clients/dsgw/html/de/forward1.gifbin0 -> 281 bytes
-rw-r--r--ldap/clients/dsgw/html/de/greeting.html64
-rw-r--r--ldap/clients/dsgw/html/de/index.html21
-rw-r--r--ldap/clients/dsgw/html/de/index1.gifbin0 -> 316 bytes
-rw-r--r--ldap/clients/dsgw/html/de/maintitle.html37
-rw-r--r--ldap/clients/dsgw/html/de/newentry_off.gifbin0 -> 1324 bytes
-rw-r--r--ldap/clients/dsgw/html/de/newentry_on.gifbin0 -> 1325 bytes
-rw-r--r--ldap/clients/dsgw/html/de/newentrytitle.html37
-rw-r--r--ldap/clients/dsgw/html/de/searchtitle.html37
-rw-r--r--ldap/clients/dsgw/html/de/stsearch_off.gifbin0 -> 1328 bytes
-rw-r--r--ldap/clients/dsgw/html/de/stsearch_on.gifbin0 -> 1334 bytes
-rw-r--r--ldap/clients/dsgw/html/de/title.gifbin0 -> 4534 bytes
-rw-r--r--ldap/clients/dsgw/html/eduser.html31
-rw-r--r--ldap/clients/dsgw/html/emptyFrame.html7
-rw-r--r--ldap/clients/dsgw/html/es/adsearch_off.gifbin0 -> 587 bytes
-rw-r--r--ldap/clients/dsgw/html/es/adsearch_on.gifbin0 -> 630 bytes
-rw-r--r--ldap/clients/dsgw/html/es/auth.html23
-rw-r--r--ldap/clients/dsgw/html/es/authen_off.gifbin0 -> 544 bytes
-rw-r--r--ldap/clients/dsgw/html/es/authen_on.gifbin0 -> 598 bytes
-rw-r--r--ldap/clients/dsgw/html/es/authroot.html22
-rw-r--r--ldap/clients/dsgw/html/es/authtitle.html37
-rw-r--r--ldap/clients/dsgw/html/es/back1.gifbin0 -> 1086 bytes
-rw-r--r--ldap/clients/dsgw/html/es/blank.gifbin0 -> 278 bytes
-rw-r--r--ldap/clients/dsgw/html/es/content1.gifbin0 -> 1146 bytes
-rw-r--r--ldap/clients/dsgw/html/es/country.gifbin0 -> 1044 bytes
-rw-r--r--ldap/clients/dsgw/html/es/csearchtitle.html37
-rw-r--r--ldap/clients/dsgw/html/es/eduser.html30
-rw-r--r--ldap/clients/dsgw/html/es/exit1.gifbin0 -> 1144 bytes
-rw-r--r--ldap/clients/dsgw/html/es/forward1.gifbin0 -> 1095 bytes
-rw-r--r--ldap/clients/dsgw/html/es/greeting.html64
-rw-r--r--ldap/clients/dsgw/html/es/group.gifbin0 -> 1032 bytes
-rw-r--r--ldap/clients/dsgw/html/es/index.html20
-rw-r--r--ldap/clients/dsgw/html/es/index1.gifbin0 -> 1134 bytes
-rw-r--r--ldap/clients/dsgw/html/es/maintitle.html37
-rw-r--r--ldap/clients/dsgw/html/es/newentry_off.gifbin0 -> 542 bytes
-rw-r--r--ldap/clients/dsgw/html/es/newentry_on.gifbin0 -> 591 bytes
-rw-r--r--ldap/clients/dsgw/html/es/newentrytitle.html37
-rw-r--r--ldap/clients/dsgw/html/es/organization.gifbin0 -> 1023 bytes
-rw-r--r--ldap/clients/dsgw/html/es/orgunit.gifbin0 -> 1060 bytes
-rw-r--r--ldap/clients/dsgw/html/es/person.gifbin0 -> 1042 bytes
-rw-r--r--ldap/clients/dsgw/html/es/searchtitle.html37
-rw-r--r--ldap/clients/dsgw/html/es/stsearch_off.gifbin0 -> 558 bytes
-rw-r--r--ldap/clients/dsgw/html/es/stsearch_on.gifbin0 -> 612 bytes
-rw-r--r--ldap/clients/dsgw/html/es/title.gifbin0 -> 3888 bytes
-rw-r--r--ldap/clients/dsgw/html/exit1.gifbin0 -> 1128 bytes
-rw-r--r--ldap/clients/dsgw/html/forward1.gifbin0 -> 1080 bytes
-rw-r--r--ldap/clients/dsgw/html/fr/adsearch_off.gifbin0 -> 1367 bytes
-rw-r--r--ldap/clients/dsgw/html/fr/adsearch_on.gifbin0 -> 1358 bytes
-rw-r--r--ldap/clients/dsgw/html/fr/auth.html24
-rw-r--r--ldap/clients/dsgw/html/fr/authen_off.gifbin0 -> 1338 bytes
-rw-r--r--ldap/clients/dsgw/html/fr/authen_on.gifbin0 -> 1339 bytes
-rw-r--r--ldap/clients/dsgw/html/fr/authroot.html22
-rw-r--r--ldap/clients/dsgw/html/fr/authtitle.html37
-rw-r--r--ldap/clients/dsgw/html/fr/back.gifbin0 -> 373 bytes
-rw-r--r--ldap/clients/dsgw/html/fr/back1.gifbin0 -> 278 bytes
-rw-r--r--ldap/clients/dsgw/html/fr/content.gifbin0 -> 676 bytes
-rw-r--r--ldap/clients/dsgw/html/fr/content1.gifbin0 -> 319 bytes
-rw-r--r--ldap/clients/dsgw/html/fr/csearchtitle.html37
-rw-r--r--ldap/clients/dsgw/html/fr/eduser.html32
-rw-r--r--ldap/clients/dsgw/html/fr/exit1.gifbin0 -> 374 bytes
-rw-r--r--ldap/clients/dsgw/html/fr/forward1.gifbin0 -> 313 bytes
-rw-r--r--ldap/clients/dsgw/html/fr/greeting.html65
-rw-r--r--ldap/clients/dsgw/html/fr/index.html20
-rw-r--r--ldap/clients/dsgw/html/fr/index1.gifbin0 -> 316 bytes
-rw-r--r--ldap/clients/dsgw/html/fr/maintitle.html38
-rw-r--r--ldap/clients/dsgw/html/fr/newentry_off.gifbin0 -> 1330 bytes
-rw-r--r--ldap/clients/dsgw/html/fr/newentry_on.gifbin0 -> 1338 bytes
-rw-r--r--ldap/clients/dsgw/html/fr/newentrytitle.html38
-rw-r--r--ldap/clients/dsgw/html/fr/searchtitle.html38
-rw-r--r--ldap/clients/dsgw/html/fr/stsearch_off.gifbin0 -> 1374 bytes
-rw-r--r--ldap/clients/dsgw/html/fr/stsearch_on.gifbin0 -> 1370 bytes
-rw-r--r--ldap/clients/dsgw/html/fr/title.gifbin0 -> 4545 bytes
-rw-r--r--ldap/clients/dsgw/html/greeting.html89
-rw-r--r--ldap/clients/dsgw/html/group.gifbin0 -> 297 bytes
-rw-r--r--ldap/clients/dsgw/html/index.html24
-rw-r--r--ldap/clients/dsgw/html/index1.gifbin0 -> 1121 bytes
-rw-r--r--ldap/clients/dsgw/html/info/Makefile40
-rw-r--r--ldap/clients/dsgw/html/info/infonav.html31
-rw-r--r--ldap/clients/dsgw/html/ja/adsearch_off.gifbin0 -> 541 bytes
-rw-r--r--ldap/clients/dsgw/html/ja/adsearch_on.gifbin0 -> 600 bytes
-rw-r--r--ldap/clients/dsgw/html/ja/auth.html23
-rw-r--r--ldap/clients/dsgw/html/ja/authen_off.gifbin0 -> 478 bytes
-rw-r--r--ldap/clients/dsgw/html/ja/authen_on.gifbin0 -> 1267 bytes
-rw-r--r--ldap/clients/dsgw/html/ja/authroot.html23
-rw-r--r--ldap/clients/dsgw/html/ja/authtitle.html37
-rw-r--r--ldap/clients/dsgw/html/ja/back.gifbin0 -> 463 bytes
-rw-r--r--ldap/clients/dsgw/html/ja/back1.gifbin0 -> 270 bytes
-rw-r--r--ldap/clients/dsgw/html/ja/content.gifbin0 -> 628 bytes
-rw-r--r--ldap/clients/dsgw/html/ja/content1.gifbin0 -> 325 bytes
-rw-r--r--ldap/clients/dsgw/html/ja/csearchtitle.html37
-rw-r--r--ldap/clients/dsgw/html/ja/eduser.html30
-rw-r--r--ldap/clients/dsgw/html/ja/exit1.gifbin0 -> 369 bytes
-rw-r--r--ldap/clients/dsgw/html/ja/forward1.gifbin0 -> 270 bytes
-rw-r--r--ldap/clients/dsgw/html/ja/greeting.html65
-rw-r--r--ldap/clients/dsgw/html/ja/index.html20
-rw-r--r--ldap/clients/dsgw/html/ja/index1.gifbin0 -> 324 bytes
-rw-r--r--ldap/clients/dsgw/html/ja/maintitle.html37
-rw-r--r--ldap/clients/dsgw/html/ja/newentry_off.gifbin0 -> 542 bytes
-rw-r--r--ldap/clients/dsgw/html/ja/newentry_on.gifbin0 -> 1340 bytes
-rw-r--r--ldap/clients/dsgw/html/ja/newentrytitle.html37
-rw-r--r--ldap/clients/dsgw/html/ja/searchtitle.html37
-rw-r--r--ldap/clients/dsgw/html/ja/stsearch_off.gifbin0 -> 534 bytes
-rw-r--r--ldap/clients/dsgw/html/ja/stsearch_on.gifbin0 -> 1337 bytes
-rw-r--r--ldap/clients/dsgw/html/ja/title.gifbin0 -> 4976 bytes
-rw-r--r--ldap/clients/dsgw/html/left_bottom.gifbin0 -> 44 bytes
-rw-r--r--ldap/clients/dsgw/html/left_off.gifbin0 -> 73 bytes
-rw-r--r--ldap/clients/dsgw/html/left_on.gifbin0 -> 87 bytes
-rw-r--r--ldap/clients/dsgw/html/maintitle.html152
-rw-r--r--ldap/clients/dsgw/html/manual/Makefile56
-rw-r--r--ldap/clients/dsgw/html/manual/a.gifbin0 -> 181 bytes
-rw-r--r--ldap/clients/dsgw/html/manual/add.htm681
-rw-r--r--ldap/clients/dsgw/html/manual/attribua.gif103
-rw-r--r--ldap/clients/dsgw/html/manual/attribut.htm6712
-rw-r--r--ldap/clients/dsgw/html/manual/auth.htm286
-rw-r--r--ldap/clients/dsgw/html/manual/contents.html185
-rw-r--r--ldap/clients/dsgw/html/manual/dn.htm262
-rw-r--r--ldap/clients/dsgw/html/manual/dna.gifbin0 -> 185 bytes
-rw-r--r--ldap/clients/dsgw/html/manual/filters.htm622
-rw-r--r--ldap/clients/dsgw/html/manual/index.html150
-rw-r--r--ldap/clients/dsgw/html/manual/index.map49
-rw-r--r--ldap/clients/dsgw/html/manual/intro.htm70
-rw-r--r--ldap/clients/dsgw/html/manual/ja/add.htm517
-rw-r--r--ldap/clients/dsgw/html/manual/ja/attribut.htm7139
-rw-r--r--ldap/clients/dsgw/html/manual/ja/auth.htm151
-rw-r--r--ldap/clients/dsgw/html/manual/ja/contents.html172
-rw-r--r--ldap/clients/dsgw/html/manual/ja/filters.htm1062
-rw-r--r--ldap/clients/dsgw/html/manual/ja/intro.htm39
-rw-r--r--ldap/clients/dsgw/html/manual/ja/mod.htm670
-rw-r--r--ldap/clients/dsgw/html/manual/ja/objclass.htm7249
-rw-r--r--ldap/clients/dsgw/html/manual/ja/search.htm380
-rw-r--r--ldap/clients/dsgw/html/manual/mod.htm828
-rw-r--r--ldap/clients/dsgw/html/manual/n.gifbin0 -> 181 bytes
-rw-r--r--ldap/clients/dsgw/html/manual/objclass.htm7246
-rw-r--r--ldap/clients/dsgw/html/manual/search.htm651
-rw-r--r--ldap/clients/dsgw/html/manual/t.gifbin0 -> 147 bytes
-rw-r--r--ldap/clients/dsgw/html/manual/y.gifbin0 -> 176 bytes
-rw-r--r--ldap/clients/dsgw/html/message.gifbin0 -> 693 bytes
-rw-r--r--ldap/clients/dsgw/html/netscape.gifbin0 -> 207 bytes
-rw-r--r--ldap/clients/dsgw/html/newentrytitle.html156
-rw-r--r--ldap/clients/dsgw/html/organization.gifbin0 -> 268 bytes
-rw-r--r--ldap/clients/dsgw/html/orgicon.gifbin0 -> 884 bytes
-rw-r--r--ldap/clients/dsgw/html/orgunit.gifbin0 -> 296 bytes
-rw-r--r--ldap/clients/dsgw/html/person.gifbin0 -> 287 bytes
-rw-r--r--ldap/clients/dsgw/html/right_bottom.gifbin0 -> 44 bytes
-rw-r--r--ldap/clients/dsgw/html/right_off.gifbin0 -> 80 bytes
-rw-r--r--ldap/clients/dsgw/html/right_on.gifbin0 -> 130 bytes
-rw-r--r--ldap/clients/dsgw/html/searchtitle.html157
-rw-r--r--ldap/clients/dsgw/html/style.css142
-rw-r--r--ldap/clients/dsgw/html/transparent.gifbin0 -> 278 bytes
-rw-r--r--ldap/clients/dsgw/htmlout.c431
-rw-r--r--ldap/clients/dsgw/htmlparse.c805
-rw-r--r--ldap/clients/dsgw/lang.c246
-rw-r--r--ldap/clients/dsgw/ldaputil.c1564
-rw-r--r--ldap/clients/dsgw/newentry.c447
-rw-r--r--ldap/clients/dsgw/pbconfig/Makefile50
-rw-r--r--ldap/clients/dsgw/pbconfig/authPassword.html43
-rw-r--r--ldap/clients/dsgw/pbconfig/authSearch.html44
-rw-r--r--ldap/clients/dsgw/pbconfig/display-orgperson.html388
-rw-r--r--ldap/clients/dsgw/pbconfig/display-orgunit.html198
-rw-r--r--ldap/clients/dsgw/pbconfig/display-room.html124
-rw-r--r--ldap/clients/dsgw/pbconfig/dsgwfilter.conf89
-rw-r--r--ldap/clients/dsgw/pbconfig/dsgwsearchprefs.conf126
-rw-r--r--ldap/clients/dsgw/pbconfig/edit-passwd.html111
-rw-r--r--ldap/clients/dsgw/pbconfig/list-Auth.html116
-rw-r--r--ldap/clients/dsgw/pbconfig/list-People.html125
-rw-r--r--ldap/clients/dsgw/pbconfig/pb.tmpl126
-rw-r--r--ldap/clients/dsgw/pbhtml/16-conference.gifbin0 -> 191 bytes
-rw-r--r--ldap/clients/dsgw/pbhtml/16-person.gifbin0 -> 74 bytes
-rw-r--r--ldap/clients/dsgw/pbhtml/32-alert.gifbin0 -> 372 bytes
-rw-r--r--ldap/clients/dsgw/pbhtml/32-conference.gifbin0 -> 362 bytes
-rw-r--r--ldap/clients/dsgw/pbhtml/32-message.gifbin0 -> 693 bytes
-rw-r--r--ldap/clients/dsgw/pbhtml/32-office.gifbin0 -> 376 bytes
-rw-r--r--ldap/clients/dsgw/pbhtml/32-person.gifbin0 -> 145 bytes
-rw-r--r--ldap/clients/dsgw/pbhtml/Makefile53
-rw-r--r--ldap/clients/dsgw/pbhtml/aim-online.gifbin0 -> 897 bytes
-rw-r--r--ldap/clients/dsgw/pbhtml/alert.html24
-rw-r--r--ldap/clients/dsgw/pbhtml/brandblock.gifbin0 -> 1111 bytes
-rw-r--r--ldap/clients/dsgw/pbhtml/carded.html44
-rw-r--r--ldap/clients/dsgw/pbhtml/clear.gifbin0 -> 43 bytes
-rw-r--r--ldap/clients/dsgw/pbhtml/conference.gifbin0 -> 545 bytes
-rw-r--r--ldap/clients/dsgw/pbhtml/confirm.html30
-rw-r--r--ldap/clients/dsgw/pbhtml/department.gifbin0 -> 1023 bytes
-rw-r--r--ldap/clients/dsgw/pbhtml/emptyFrame.html7
-rw-r--r--ldap/clients/dsgw/pbhtml/get_cert.gifbin0 -> 545 bytes
-rw-r--r--ldap/clients/dsgw/pbhtml/get_cert_sm.gifbin0 -> 319 bytes
-rw-r--r--ldap/clients/dsgw/pbhtml/index.html41
-rw-r--r--ldap/clients/dsgw/pbhtml/intro.html207
-rw-r--r--ldap/clients/dsgw/pbhtml/modify.html292
-rw-r--r--ldap/clients/dsgw/pbhtml/nonemp.html69
-rw-r--r--ldap/clients/dsgw/pbhtml/nullStringError.html64
-rw-r--r--ldap/clients/dsgw/pbhtml/office.gifbin0 -> 1072 bytes
-rw-r--r--ldap/clients/dsgw/pbhtml/orgicon.gifbin0 -> 884 bytes
-rw-r--r--ldap/clients/dsgw/pbhtml/pbrd.jpgbin0 -> 17206 bytes
-rw-r--r--ldap/clients/dsgw/pbhtml/person.gifbin0 -> 2674 bytes
-rw-r--r--ldap/clients/dsgw/pbhtml/phone.html87
-rwxr-xr-xldap/clients/dsgw/pbhtml/phone.js43
-rw-r--r--ldap/clients/dsgw/pbhtml/pixel.gifbin0 -> 43 bytes
-rw-r--r--ldap/clients/dsgw/pbhtml/report.html155
-rw-r--r--ldap/clients/dsgw/pbhtml/style.css88
-rw-r--r--ldap/clients/dsgw/pbhtml/tiny_cert.gifbin0 -> 164 bytes
-rw-r--r--ldap/clients/dsgw/pbhtml/tiny_vcard.gifbin0 -> 153 bytes
-rw-r--r--ldap/clients/dsgw/pbhtml/vendor.gifbin0 -> 701 bytes
-rw-r--r--ldap/clients/dsgw/pbhtml/view_vcard.gifbin0 -> 454 bytes
-rw-r--r--ldap/clients/dsgw/pbhtml/view_vcard_sm.gifbin0 -> 286 bytes
-rw-r--r--ldap/clients/dsgw/search.c217
-rw-r--r--ldap/clients/dsgw/secglue.c174
-rw-r--r--ldap/clients/dsgw/sort.c138
-rw-r--r--ldap/clients/dsgw/templateindex.c184
-rw-r--r--ldap/clients/dsgw/tutor.c276
-rw-r--r--ldap/clients/dsgw/unauth.c165
-rw-r--r--ldap/clients/dsgw/userhtml/Makefile60
-rw-r--r--ldap/clients/dsgw/userhtml/edit-userpasswd.html85
-rw-r--r--ldap/clients/dsgw/userhtml/edit-userpinfo.html92
-rw-r--r--ldap/clients/dsgw/userhtml/index.html29
-rw-r--r--ldap/clients/dsgw/userhtml/index.lst29
-rw-r--r--ldap/clients/dsgw/utf8compare.c2236
-rw-r--r--ldap/clients/dsgw/vcard.c258
547 files changed, 89119 insertions, 0 deletions
diff --git a/ldap/clients/dsgw/Makefile b/ldap/clients/dsgw/Makefile
new file mode 100644
index 00000000..342b87de
--- /dev/null
+++ b/ldap/clients/dsgw/Makefile
@@ -0,0 +1,305 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+
+# Gmakefile for Directory Server Gateway
+#
+LDAP_SRC = ../..
+MCOM_ROOT = ../../../..
+
+include $(MCOM_ROOT)/ldapserver/nsdefs.mk
+
+ifneq ($(ARCH), WINNT)
+#OLD_MCOM_ROOT := $(MCOM_ROOT)
+#MCOM_ROOT = $(shell cd $(OLD_MCOM_ROOT); pwd)
+#OLD_LDAP_SRC := $(LDAP_SRC)
+#LDAP_SRC = $(shell cd $(OLD_LDAP_SRC); pwd)
+endif
+
+NOSTDCLEAN=true # don't let nsconfig.mak define target clean
+NOSTDSTRIP=true # don't let nsconfig.mak define target strip
+
+include $(MCOM_ROOT)/ldapserver/nsconfig.mk
+include $(LDAP_SRC)/nsldap.mk
+ifndef LDAP_USE_OLD_DB
+include $(MCOM_ROOT)/ldapserver/ns_usedb.mk
+endif
+
+include dsgw_include.mk
+
+# the dsgw binaries should use the standard rpath which includes ../../lib,
+# the clients lib location
+DSGW_RPATHFLAG=
+
+
+ifeq ($(LDAP_NO_LIBLCACHE),1)
+CFLAGS+=-DNO_LIBLCACHE
+endif
+
+ifeq ($(ARCH), HPUX)
+# Use C++ compiler when linking on HP to pick up
+# exception-handling flag (+eh). We need this because
+# we link with other objs compiled with +eh
+ifeq ($(USE_64), 1)
+ALDFLAGS += +DA2.0W +DS2.0 +Z -lpthread
+endif
+
+DSGW_LINK=$(CXX)
+else
+ifeq ($(ARCH), WINNT)
+DSGW_LINK=$(LINK_EXE)
+else
+ifeq ($(ARCH), Linux)
+DSGW_LINK=$(CXX)
+else
+ifeq ($(ARCH), OSF1)
+DSGW_LINK=$(CXX)
+else
+DSGW_LINK=$(CC)
+endif # Linux
+endif # OSF1
+endif # WINNT
+endif # HPUX
+
+ifeq ($(ARCH), SOLARIS)
+ifeq ($(USE_64), 1)
+ALDFLAGS += -xarch=v9
+endif
+# removed -lcx from following line
+CCC_LINK = -lCstd -lCrun -lm -lw -lc
+endif
+
+ifneq ($(ARCH), WINNT)
+ifdef USE_LD_RUN_PATH
+# LD_RUN_PATH instead of -R RPATH
+LD_RUN_PATH=$(RPATHFLAG):$(DSGW_RPATHFLAG)
+export LD_RUN_PATH
+else # USE_LD_RUN_PATH
+DSGW_LINK += $(RPATHFLAG_PREFIX)$(RPATHFLAG):$(DSGW_RPATHFLAG)
+endif # USE_LD_RUN_PATH
+endif # ! WINNT
+
+
+ifeq ($(ARCH), AIX)
+DSGW_LINK=$(CC)
+DSGW_LINK += -brtl -berok $(RPATHFLAG_PREFIX)$(RPATHFLAG):$(DSGW_RPATHFLAG)$(RPATHFLAG_EXTRAS)
+endif
+
+
+BINDIR=$(DSGW_BIN_RELDIR)
+OBJDEST=$(OBJDIR)/clients/dsgw/obj
+
+SRCDIR=$(MCOM_ROOT)/ldapserver/ldap/clients/dsgw
+
+ifeq ($(ARCH), WINNT)
+ALDFLAGS+=-force:multiple
+SUBSYSTEM=console
+endif
+
+ifneq ($(ARCH), WINNT)
+INSTALLOPTIONS= -m 755
+endif
+
+ifeq ($(ARCH), OSF1)
+LINKOPTIONS=-lcxx
+endif
+
+ifeq ($(ARCH), WINNT)
+NSECLIBS = $(NOSSLLIBS)
+EXTRA_LIBS += $(LIBS) $(ADMINUTIL_LINK) $(ICULINK) $(NSPRLINK) $(NSHTTPD)
+EXTRA_LIBS_DEP += $(LIBS) $(NSHTTP_DEP)
+else
+LIBS := $(DISTLIBFLAG) $(LINKOPTIONS) $(LIBLDAPU) $(LDAPLINK) \
+ $(ADMINUTIL_LINK) $(DYN_NSHTTPD) \
+ $(LDAP_LIBLDBM) $(ICULINK) $(NSPRLINK) \
+ $(LDAP_LIBLDIF) $(ALIBS) $(DBMLINK) $(SECURITYLINK) \
+ $(THREADSLIB) $(NSPRLINK) $(LDAP_LIBLITEKEY)
+LIBS_DEP = $(LIBLDAPU_DEP) $(LDAP_LIBLDBM_DEP) $(LDAP_LIBLDIF_DEP)
+LIBS_DEP += $(LDAPSDK_DEP) $(ICU_DEP) $(NSPR_DEP) $(DB_LIB_DEP)
+NSECLIBS = $(DISTLIBFLAG) $(SSLLIBFLAG) $(LINKOPTIONS) $(LIBLDAPU) \
+ $(LDAPLINK) $(ADMINUTIL_LINK) \
+ $(LDAP_LIBLDBM) $(ICULINK) $(NOSSLLIBS) \
+ $(LDAP_LIBLDIF) $(DBMLINK) $(ALIBS) \
+ $(THREADSLIB) $(NSPRLINK) $(LDAP_LIBLITEKEY)
+endif
+
+NSECLIBS_DEP=$(SECGLUEOBJS)
+NSECLIBS_DEP += $(ICU_DEP)
+
+#EXTRA_LIBS += -l$(LIBARES)
+
+ifeq ($(ARCH), Linux)
+LIBS += -lcrypt
+NSECLIBS += -lcrypt
+endif
+
+# these are the programs we must build
+PROGS= auth doauth edit domodify dnedit dosearch
+BINS= $(addprefix $(BINDIR)/, $(PROGS))
+
+# The rest of the CGI programs do not use LIBLDAP and SSL at all, so we
+# link them with glue routines instead of the full libsec. This is done
+# only to reduce our footprint.
+# these are also programs we need to build
+NEED_SECGLUE = unauth search csearch newentry tutor lang
+
+ifneq ($(ARCH), WINNT)
+NEED_SECGLUE_BINS = $(addprefix $(BINDIR)/, $(NEED_SECGLUE))
+else
+NEED_SECGLUE_BINS = $(addprefix $(BINDIR)/, $(addsuffix .exe, $(NEED_SECGLUE)))
+endif
+
+NOTSHIPPINGPROGS= browse browsesrch templateindex
+NOTSHIPPINGBINS= $(addprefix $(BINDIR)/, $(NOTSHIPPINGPROGS))
+
+CKUTILPROGS= ckput ckget ckdump ckpurge ckdel
+CKUTILBINS= $(addprefix $(BINDIR)/, $(CKUTILPROGS))
+
+CMNOBJS= htmlout.o htmlparse.o error.o cgiutil.o dsgwutil.o ldaputil.o \
+ entrydisplay.o config.o cookie.o emitauth.o emitf.o collate.o vcard.o \
+ Versiongw.o utf8compare.o
+
+# MLM
+ifeq ($(ARCH), WINNT)
+CMNOBJS += getopt.o
+endif
+
+COMMONOBJS= $(addprefix $(OBJDEST)/, $(CMNOBJS))
+COMMONOBJSREL= $(addprefix ../obj/, $(CMNOBJS))
+
+NOSSLCMNOBJS= htmlout.o htmlparse.o error.o cgiutil.o dsgwutil.o config.o \
+ cookie.o emitauth.o emitf.o collate.o Versiongw.o utf8compare.o
+NOSSLCOMMONOBJS=$(addprefix $(OBJDEST)/, $(NOSSLCMNOBJS))
+NOSSLCOMMONOBJSREL=$(addprefix ../obj/, $(NOSSLCMNOBJS))
+
+SCGLOBJS= secglue.o
+SECGLUEOBJS=$(addprefix $(OBJDEST)/, $(SCGLOBJS))
+
+ALLOBJS = dosearch.o search.o csearch.o browse.o browsesrch.o templateindex.o \
+ auth.o doauth.o unauth.o ckput.o ckget.o ckdump.o ckpurge.o ckdel.o \
+ edit.o domodify.o newentry.o genscreen.o tutor.o dnedit.o \
+ dsconfig.o dsimpldif.o dsexpldif.o lang.o utf8compare.o \
+ $(COMMONOBJS) $(SECGLUEOBJS)
+
+INCLUDES= -I$(SDKHDIR) -I$(NSCP_DISTDIR)/include $(ICU_INCLUDE) -I$(ADMINUTIL_INCPATH)
+
+DEFINES += $(DEFS) $(SSL) $(XP_FLAG)
+
+CFLAGS += $(INCLUDES) $(DEFINES) $(ACFLAGS)
+# Uncomment the following for debug output to /tmp/dsgw/<CGI> and <CGI>.out
+# if /tmp/dsgw exists and is a directory.
+#CFLAGS += -DDSGW_DEBUG -g
+# Uncomment the following line to build without SSL support
+#CFLAGS += -DDSGW_NO_SSL
+
+ifeq ($(ARCH), WINNT)
+PROGBINS = $(addsuffix .exe, $(BINS))
+NOTSHIPPINGPROGBINS = $(addsuffix .exe, $(NOTSHIPPINGBINS))
+CKUTILPROGBINS = $(addsuffix .exe, $(CKUTILBINS))
+else
+PROGBINS = $(BINS)
+NOTSHIPPINGPROGBINS = $(NOTSHIPPINGBINS)
+CKUTILPROGBINS = $(CKUTILBINS)
+endif
+
+ALLBINS= $(PROGBINS) $(NOTSHIPPINGPROGBINS) $(CKUTILPROGBINS)
+
+## make sure there's prog.exe and prog for NT. Weak, but ES
+## only works with prog, and AS needs both.
+#ifeq ($(ARCH), WINNT)
+#all: prerequisites $(PROGBINS) $(NEED_SECGLUE_BINS) nt_dsgw_bins all-html all-config
+#
+#nt_dsgw_bins:
+# +$(DO_COPY_DSGW_BINS)
+#
+#COPYBINS = $(PROGS) $(NEED_SECGLUE)
+#
+#DO_COPY_DSGW_BINS = \
+# for dsgw_bin in $(COPYBINS); do \
+# mv $(RELDIR)/clients/dsgw/bin/$$dsgw_bin.exe $(RELDIR)/clients/dsgw/bin/$$dsgw_bin; \
+# done
+#else
+all: prerequisites $(PROGBINS) $(NEED_SECGLUE_BINS) all-html all-config
+#endif
+
+prerequisites: $(BINDIR) $(OBJDEST)
+# -@echo $(NEED_SECGLUE_BINS)
+# -@echo $(PROGBINS)
+
+# if $(SECGLUEOBJ) isn't available, use $(ADMIN_SECGLUEOBJ) as a substitute:
+$(SECGLUEOBJ): $(ADMIN_SECGLUEOBJ)
+ cp $(ADMIN_SECGLUEOBJ) $(SECGLUEOBJ)
+
+all-html:
+ cd html; $(MAKE) $(MFLAGS) all
+ cd admhtml; $(MAKE) $(MFLAGS) all
+ cd userhtml; $(MAKE) $(MFLAGS) all
+ cd pbhtml; $(MAKE) $(MFLAGS) all
+
+$(OBJDEST):
+ $(MKDIR) -p $@
+
+all-config:
+ cd config; $(MAKE) $(MFLAGS) all
+ cd pbconfig; $(MAKE) $(MFLAGS) all
+
+ckutils: $(CKUTILPROGBINS)
+
+notshipping: $(NOTSHIPPINGPROGBINS)
+
+$(LDAP_LIBLDBM_DEP):
+ cd $(LDAP_SRC)/libraries; $(MAKE) $(MFLAGS) clientSDK
+
+$(LDAP_SDK_LIBLCACHE_DLL_DEP): $(LDAP_LIBLDBM_DEP)
+
+sort: $(BINDIR)/sort
+
+.PHONY: sort
+
+#
+# The remainder are the CGI programs that make up the gateway itself.
+# We ship all of these.
+#
+ifneq ($(ARCH), WINNT)
+$(PROGBINS): $(BINDIR)/%: $(OBJDEST)/%.o $(COMMONOBJS) $(LIBS_DEP)
+ $(DSGW_LINK) $(ALDFLAGS) -o $@ $< $(COMMONOBJS) $(LIBS) $(CCC_LINK)
+
+$(NEED_SECGLUE_BINS): $(BINDIR)/%: $(OBJDEST)/%.o $(NOSSLCOMMONOBJS) $(NSECLIBS_DEP)
+ $(DSGW_LINK) $(ALDFLAGS) -o $@ $< $(NOSSLCOMMONOBJS) \
+ $(NSECLIBS) $(CCC_LINK)
+else
+$(PROGBINS): $(BINDIR)/%.exe: $(OBJDEST)/%.o $(COMMONOBJS)
+ $(DSGW_LINK) $(ALDFLAGS) $< $(COMMONOBJS) \
+ $(LDAPLINK) $(SECURITYLINK) $(ICULINK) $(CCC_LINK)
+# sometimes linking executables can produce unneeded .lib or .exp files
+ -@$(RM) $(subst .exe,.lib,$@) $(subst .exe,.exp,$@)
+
+$(NEED_SECGLUE_BINS): $(BINDIR)/%.exe: $(OBJDEST)/%.o $(NOSSLCOMMONOBJS) $(SECGLUEOBJS)
+ $(DSGW_LINK) $(ALDFLAGS) $< $(NOSSLCOMMONOBJS) \
+ $(LDAPLINK) $(SECGLUEOBJS) $(ICULINK) $(CCC_LINK)
+# sometimes linking executables can produce unneeded .lib or .exp files
+ -@$(RM) $(subst .exe,.lib,$@) $(subst .exe,.exp,$@)
+endif
+
+clean: clean-html clean-config
+ rm -rf $(BINDIR)
+ rm -rf $(OBJDEST)
+
+clean-html:
+ cd html; $(MAKE) $(MFLAGS) clean
+ cd pbhtml; $(MAKE) $(MFLAGS) clean
+
+clean-config:
+ cd config; $(MAKE) $(MFLAGS) clean
+ cd pbconfig; $(MAKE) $(MFLAGS) clean
+
+strip:
+ $(STRIP) $(ALLBINS)
+
+$(OBJDEST)/%.o: %.c
+ $(CC) -c $(CFLAGS) $(MCC_INCLUDE) $< $(OFFLAG)$@
+
+CFLAGS += -I../../include
diff --git a/ldap/clients/dsgw/Versiongw.c b/ldap/clients/dsgw/Versiongw.c
new file mode 100644
index 00000000..93c5c970
--- /dev/null
+++ b/ldap/clients/dsgw/Versiongw.c
@@ -0,0 +1,25 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+/*
+ * Copyright (c) 1996 Netscape Communications Corp.
+ * All rights reserved.
+ */
+
+#if defined( XP_WIN32 )
+#undef MCC_HTTPD
+#endif
+
+#include "netsite.h" /* to get MAGNUS_VERSION_STRING */
+
+#ifdef MAGNUS_VERSION_STRING
+#define DSGW_VER_STR MAGNUS_VERSION_STRING
+#else
+#include "dirver.h" /* to get PRODUCTTEXT */
+#define DSGW_VER_STR PRODUCTTEXT
+#endif
+
+char *Versionstr = "Netscape-Directory-Gateway/"DSGW_VER_STR;
diff --git a/ldap/clients/dsgw/admhtml/Makefile b/ldap/clients/dsgw/admhtml/Makefile
new file mode 100644
index 00000000..a8cfafee
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/Makefile
@@ -0,0 +1,52 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+#
+# Gmakefile for Directory Server Gateway html files.
+#
+
+LDAP_SRC = ../../..
+MCOM_ROOT = ../../../../..
+
+NOSTDSTRIP=true # don't let nsconfig.mak define target strip
+NOSTDCLEAN=true # don't let nsconfig.mak define target clean
+NOSTDDEPEND=true # don't let nsconfig.mak define target depend
+
+include $(MCOM_ROOT)/ldapserver/nsdefs.mk
+
+include ../dsgw_include.mk
+
+HTMLDEST = $(DSGW_HTML_RELDIR)
+
+HTML= auth.html authroot.html authtitle.html csearchtitle.html greeting.html \
+ index.html maintitle.html newentrytitle.html searchtitle.html \
+ back.gif back1.gif blankbut.gif content.gif content1.gif country.gif \
+ exit1.gif forward1.gif group.gif index1.gif netscape.gif \
+ organization.gif orgunit.gif person.gif title.gif triangle.gif
+
+BINS=$(addprefix $(HTMLDEST)/,$(HTML))
+
+# install: $(HTMLDEST) $(BINS) inst-manual inst-info
+install:
+
+all: install
+
+clean:
+ $(RM) $(BINS)
+
+$(HTMLDEST)/%: %
+ -@$(RM) $@
+ cp $< $@
+
+$(HTMLDEST)/%.gif: %.gif
+ -@$(RM) $@
+ cp $< $@
+
+strip:
+depend:
+
+include $(MCOM_ROOT)/ldapserver/nsconfig.mk
+include $(LDAP_SRC)/nsldap.mk
diff --git a/ldap/clients/dsgw/admhtml/display-country.html b/ldap/clients/dsgw/admhtml/display-country.html
new file mode 100644
index 00000000..20960338
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/display-country.html
@@ -0,0 +1,52 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML><HEAD>
+<!-- DS_OBJECTCLASS "value=country" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>Country -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD><BODY>
+
+<TABLE>
+<TR><TD NOWRAP>
+<IMG SRC="/admin-serv/icons/country.gif" ALT="Country" HSPACE=5>
+</TD><TD><FONT SIZE="+2">
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</FONT></TD></TR></TABLE>
+
+<TABLE CELLSPACING="5">
+
+<TR><TD VALIGN="TOP" NOWRAP>Country Name:</TD><TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=co" "options=sort" -->
+</B></TD><TD WIDTH="20%"></TD>
+</B><TD VALIGN="TOP">Description:</TD><TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=description" -->
+</B></TD></TR>
+
+<TR><TD VALIGN="TOP">See Also:</TD><TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">URL:</TD><TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=labeledURI" "syntax=url" -->
+</B></TD></TR>
+
+</TABLE>
+
+<HR>
+
+This entry was last modified on <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> by <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/display-dnedit.html b/ldap/clients/dsgw/admhtml/display-dnedit.html
new file mode 100644
index 00000000..7a1b78fc
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/display-dnedit.html
@@ -0,0 +1,74 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+
+<!-- DS_ENTRYBEGIN -->
+<!-- DS_EMIT_BASE_HREF -->
+<TITLE>
+Group Entry -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY "onLoad='document.searchForm.searchstring.focus();'" -->
+
+<!-- DS_LAST_OP_INFO "prefix=<FONT SIZE=%22%2B1%22>" "suffix=</FONT><HR>" -->
+
+<!-- DS_BEGIN_DNSEARCHFORM -->
+<INPUT TYPE=hidden NAME=mode VALUE="smart">
+<INPUT TYPE=hidden NAME=dnlist_js VALUE="true">
+<INPUT TYPE=hidden NAME=listifone VALUE="true">
+<INPUT TYPE=hidden NAME=listtemplate VALUE="">
+<INPUT TYPE=hidden NAME=faMode VALUE="add">
+
+<FONT SIZE="+2">
+Edit
+<!-- DS_DNDESC -->
+:
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT>
+
+<TABLE CELLSPACING=0 CELLPADDING=0><TR>
+
+<TD NOWRAP>
+Find
+<SELECT NAME="type">
+<OPTION SELECTED VALUE="People">Users
+<OPTION VALUE="Groups">Groups
+</SELECT>
+</TD>
+
+<TD NOWRAP>
+matching&nbsp;
+<INPUT NAME="searchstring" SIZE=15>
+</TD>
+
+<TD>
+<INPUT TYPE=SUBMIT VALUE=" Find and Add ">
+<BR>
+<INPUT TYPE=BUTTON VALUE=" Find and Remove " onClick="searchForm.faMode.value='remove';searchForm.submit();searchForm.searchstring.select();searchForm.searchstring.focus();">
+</TD>
+
+</TR>
+</TABLE>
+
+<P>
+<CENTER><TABLE BORDER="2" WIDTH="100%">
+<TR>
+<TD WIDTH="33%" ALIGN="center">
+<INPUT TYPE=BUTTON VALUE=" Save Changes " onClick="parent.saveChanges();">
+<TD WIDTH="34%" ALIGN="center">
+<INPUT TYPE=BUTTON VALUE=" Cancel " onClick="if ((parent.changesMade) == 0 || confirm('Discard changes?')) {parent.document.location.href=parent.completion_url}";>
+<TD WIDTH=33% ALIGN=center>
+<!-- DS_HELPBUTTON -->
+</TD></TR></TABLE></CENTER>
+
+<INPUT TYPE=hidden NAME=completion_javascript VALUE='parent.updateList(parent.controlFrame.document.searchForm.faMode.value, parent.dnlist, parent.stagingFrame.dnlist, parent.outputFrame);parent.controlFrame.document.searchForm.faMode.value="add";'>
+<!-- DS_END_DNSEARCHFORM -->
+
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/display-dnedittop.html b/ldap/clients/dsgw/admhtml/display-dnedittop.html
new file mode 100644
index 00000000..89f6b6bc
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/display-dnedittop.html
@@ -0,0 +1,19 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- DS_ENTRYBEGIN -->
+<SCRIPT LANGUAGE="JavaScript">
+
+</SCRIPT>
+
+<FRAMESET BORDER=1 FRAMEBORDER=1 ROWS=1,150,* SCROLLING="NO" NORESIZE>
+ <FRAME SRC="javascript:parent.emptyFrame" NAME="stagingFrame">
+<!-- DS_EDDN_FRAMEDEF "template=dnedit" -->
+ <FRAME SRC="javascript:parent.emptyFrame" NAME="outputFrame">
+</FRAMESET>
+<!-- DS_ENTRYEND -->
+</HTML>
diff --git a/ldap/clients/dsgw/admhtml/display-group.html b/ldap/clients/dsgw/admhtml/display-group.html
new file mode 100644
index 00000000..d154e3eb
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/display-group.html
@@ -0,0 +1,122 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML><HEAD>
+<SCRIPT LANGUAGE="JavaScript">
+
+function setDeleteCheckboxes(attr, checked)
+{
+ var varName = 'delete_' + attr;
+
+ for ( i = 0; i < document.modifyEntryForm.elements.length; ++i ) {
+ if ( document.modifyEntryForm.elements[i].name == varName ) {
+ document.modifyEntryForm.elements[i].checked = checked;
+ }
+ }
+ aChg(attr);
+}
+
+</SCRIPT>
+<!-- DS_OBJECTCLASS "value=groupOfNames" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+New
+<!-- ENDIF // Adding -->
+Group Entry -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO "prefix=<FONT SIZE=%22%2B1%22>" "suffix=</FONT><HR>" -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+<FONT SIZE="+2">
+<!-- IF "Adding" -->
+New Group -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="groupOfNames">
+<!-- ENDIF // Adding -->
+
+<!-- IF "!Displaying" -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<INPUT TYPE="hidden" NAME="completion_javascript" VALUE="if (dsmodify_dn.length == 0) document.location.href=\'genscreen?dslsgroups&info=\' + escape(dsmodify_info); else document.location.href=\'edit/\' + dsmodify_dn + \'?&info=\' + escape(dsmodify_info);">
+<DIV ALIGN="right"><FONT SIZE="-1">* Indicates a required field</FONT></DIV>
+<!-- ENDIF -->
+
+
+<TABLE CELLSPACING="5">
+<TR>
+<TD ALIGN="right" NOWRAP>
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+<B>Name:</B>
+</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=cn" "cols=>40" -->
+</B></TD><TD WIDTH="20%"></TD>
+</TR>
+
+<TR>
+<TD ALIGN="right" NOWRAP><B>Description:</B></TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>40" "defaultvalue=none" -->
+</B></TD></TR>
+
+<TR>
+<TD NOWRAP ALIGN="right" VALIGN="top"><B>Group Members:</B><BR>
+<!-- DS_DNEDITBUTTON "label=Edit..." "template=dnedit" "attr=member" "desc=Group Members" -->
+</TD><TD>
+<!-- DS_ATTRIBUTE "attr=member" "syntax=dn" "dncomponents=2" "options=readonly,sort" -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="top" ALIGN="right" NOWRAP><B>Owner:</B><BR>
+<!-- DS_DNEDITBUTTON "label=Edit..." "template=dnedit" "attr=owner" "desc=Owner" -->
+</TD><TD>
+<!-- DS_ATTRIBUTE "attr=owner" "syntax=dn" "dncomponents=2" "options=readonly" -->
+</TD>
+</TD></TR>
+
+<TR>
+<TD VALIGN="top" ALIGN="right" NOWRAP><B>See Also:</B><BR>
+<!-- DS_DNEDITBUTTON "label=Edit..." "template=dnedit" "attr=seeAlso" "desc=See Also" -->
+</TD><TD>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "dncomponents=2" "options=readonly" -->
+</TABLE></TD>
+</TD></TR>
+
+</TABLE>
+
+<!-- IF "AttributeHasValues" "modifyTimestamp" -->
+<TABLE BORDER=0><TR><TD><FONT SIZE="-1">
+Last modified on
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "options=readonly" -->
+ by
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "options=readonly" -->
+</FONT></TD></TR></TABLE>
+<!-- ENDIF // AttributeHasValues -->
+
+<TABLE BORDER=2 WIDTH=100%><TR><TD WIDTH=25% ALIGN="center">
+<!-- DS_SAVEBUTTON -->
+</TD><TD WIDTH=25% ALIGN="center">
+<!-- DS_RENAMEBUTTON "label=Rename Group" "prompt=Enter a new name for this group:" -->
+</TD><TD WIDTH=25% ALIGN="center">
+<!-- DS_DELETEBUTTON "label=Delete Group" "prompt=Delete this group?" -->
+</TD><TD WIDTH=25% ALIGN="center">
+<!-- DS_HELPBUTTON "topic=EDIT_GROUP" -->
+</TD></TR></TABLE>
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/display-groupun.html b/ldap/clients/dsgw/admhtml/display-groupun.html
new file mode 100644
index 00000000..a11a6646
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/display-groupun.html
@@ -0,0 +1,122 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML><HEAD>
+<SCRIPT LANGUAGE="JavaScript">
+
+function setDeleteCheckboxes(attr, checked)
+{
+ var varName = 'delete_' + attr;
+
+ for ( i = 0; i < document.modifyEntryForm.elements.length; ++i ) {
+ if ( document.modifyEntryForm.elements[i].name == varName ) {
+ document.modifyEntryForm.elements[i].checked = checked;
+ }
+ }
+ aChg(attr);
+}
+
+</SCRIPT>
+<!-- DS_OBJECTCLASS "value=groupOfUniqueNames" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+New
+<!-- ENDIF // Adding -->
+Group Entry -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO "prefix=<FONT SIZE=%22%2B1%22>" "suffix=</FONT><HR>" -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+<FONT SIZE="+2">
+<!-- IF "Adding" -->
+New Group -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="groupOfUniqueNames">
+<!-- ENDIF // Adding -->
+
+<!-- IF "!Displaying" -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<INPUT TYPE="hidden" NAME="completion_javascript" VALUE="if (dsmodify_dn.length == 0) document.location.href=\'genscreen?dslsgroups&info=\' + escape(dsmodify_info); else document.location.href=\'edit/\' + dsmodify_dn + \'?&info=\' + escape(dsmodify_info);">
+<DIV ALIGN="right"><FONT SIZE="-1">* Indicates a required field</FONT></DIV>
+<!-- ENDIF -->
+
+
+<TABLE CELLSPACING="5">
+<TR>
+<TD ALIGN="right" NOWRAP>
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+<B>Name:</B>
+</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=cn" "cols=>40" -->
+</B></TD><TD WIDTH="20%"></TD>
+</TR>
+
+<TR>
+<TD ALIGN="right" NOWRAP><B>Description:</B></TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>40" "defaultvalue=none" -->
+</B></TD></TR>
+
+<TR>
+<TD NOWRAP ALIGN="right" VALIGN="top"><B>Group Members:</B><BR>
+<!-- DS_DNEDITBUTTON "label=Edit..." "template=dnedit" "attr=uniquemember" "desc=Group Members" -->
+</TD><TD>
+<!-- DS_ATTRIBUTE "attr=uniquemember" "syntax=dn" "dncomponents=2" "options=readonly,sort" -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="top" ALIGN="right" NOWRAP><B>Owner:</B><BR>
+<!-- DS_DNEDITBUTTON "label=Edit..." "template=dnedit" "attr=owner" "desc=Owner" -->
+</TD><TD>
+<!-- DS_ATTRIBUTE "attr=owner" "syntax=dn" "dncomponents=2" "options=readonly" -->
+</TD>
+</TD></TR>
+
+<TR>
+<TD VALIGN="top" ALIGN="right" NOWRAP><B>See Also:</B><BR>
+<!-- DS_DNEDITBUTTON "label=Edit..." "template=dnedit" "attr=seeAlso" "desc=See Also" -->
+</TD><TD>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "dncomponents=2" "options=readonly" -->
+</TABLE></TD>
+</TD></TR>
+
+</TABLE>
+
+<!-- IF "AttributeHasValues" "modifyTimestamp" -->
+<TABLE BORDER=0><TR><TD><FONT SIZE="-1">
+Last modified on
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "options=readonly" -->
+ by
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "options=readonly" -->
+</FONT></TD></TR></TABLE>
+<!-- ENDIF // AttributeHasValues -->
+
+<TABLE BORDER=2 WIDTH=100%><TR><TD WIDTH=25% ALIGN="center">
+<!-- DS_SAVEBUTTON -->
+</TD><TD WIDTH=25% ALIGN="center">
+<!-- DS_RENAMEBUTTON "label=Rename Group" "prompt=Enter a new name for this group:" -->
+</TD><TD WIDTH=25% ALIGN="center">
+<!-- DS_DELETEBUTTON "label=Delete Group" "prompt=Delete this group?" -->
+</TD><TD WIDTH=25% ALIGN="center">
+<!-- DS_HELPBUTTON "topic=EDIT_GROUP" -->
+</TD></TR></TABLE>
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/display-licensed-user.html b/ldap/clients/dsgw/admhtml/display-licensed-user.html
new file mode 100644
index 00000000..869e8886
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/display-licensed-user.html
@@ -0,0 +1,71 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<!-- Netscape Client Access Licensee directory entry -->
+<!-- DS_OBJECTCLASS "value=nsLicenseUser" -->
+
+<!-- DS_ENTRYBEGIN -->
+<!-- DS_EMIT_BASE_HREF -->
+<TITLE>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO "prefix=<FONT SIZE=%22%2B1%22>" "suffix=</FONT><HR>" -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<FONT SIZE="+2">
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT>
+
+<!-- DS_VIEW_SWITCHER -->
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="nsLicenseUser">
+<!-- ENDIF // Adding -->
+
+<CENTER>
+<FONT SIZE="+1"><B>Netscape Client Access License Information</B></FONT>
+<!-- IF "!AttributeHasThisValue" "objectClass" "cis" "nsLicenseUser" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="nsLicenseUser">
+<!-- ENDIF // !AttributeHasThisValue -->
+</CENTER>
+<P>
+
+<!-- IF "!Displaying" -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<INPUT TYPE="hidden" NAME="completion_javascript" VALUE="if (dsmodify_dn.length == 0) document.location.href=\'genscreen?dslsusers&info=\' + escape(dsmodify_info); else document.location.href=\'edit/\' + dsmodify_dn + \'?licensed-user&info=\' + escape(dsmodify_info);">
+<!-- ENDIF -->
+
+<P>
+Mark all of the products that this person has been granted a
+Client Access License for:
+<P>
+
+<TABLE CELLSPACING="5">
+
+<INPUT TYPE="hidden" NAME="replace_nsLicensedFor" VALUE="">
+<!-- DS_ATTRVAL_SET "set=CAL" "attr=nsLicensedFor" "type=checkbox" "prefix=<TR><TD>" "suffix=</TD></TR>" -->
+
+</TABLE>
+
+<P>
+
+<TABLE BORDER=2 WIDTH=100%><TR><TD WIDTH=50% ALIGN="center">
+<!-- DS_SAVEBUTTON -->
+</TD><TD WIDTH=50% ALIGN="center">
+<!-- DS_HELPBUTTON "topic=EDIT_LICENSE_INFO" -->
+</TD>
+</TR></TABLE>
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/display-mailgroup.html b/ldap/clients/dsgw/admhtml/display-mailgroup.html
new file mode 100644
index 00000000..4768270a
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/display-mailgroup.html
@@ -0,0 +1,121 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML><HEAD>
+<!-- DS_OBJECTCLASS "value=rfc822mailgroup" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+New
+<!-- ENDIF // Adding -->
+Mail Group Entry -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD><BODY>
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE>
+<TR>
+<TD>
+<IMG SRC="/admin-serv/icons/group.gif" ALT="Group" HSPACE=5 >
+<FONT SIZE="+2">
+<!-- IF "Adding" -->
+New Mail Group
+<!-- ENDIF // Adding -->
+
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT>
+</TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- DS_EDITBUTTON "label=Edit Group" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Save New Group" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp&nbsp</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Cancel" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp&nbsp</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_MAILGROUP" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_MAILGROUP" -->
+<!-- ENDIF // Adding -->
+
+<!-- IF "Editing" -->
+</TD><TD>&nbsp&nbsp</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Rename Group" "prompt=Enter a new name for this group:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Delete Group" "prompt=Delete this group?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="rfc822mailgroup">
+<!-- ENDIF // Adding -->
+
+<HR>
+
+<TABLE CELLSPACING="5">
+
+<TR><TD VALIGN="TOP">Name:</TD><TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=cn" -->
+</B></TD><TD WIDTH="20%"></TD>
+<TD VALIGN="TOP">Description:</TD><TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=multilineDescription" "defaultvalue=none" -->
+</B></TD></TR>
+
+<TR><TD VALIGN="TOP">Owner:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=owner" "syntax=dn" "cols=>40" -->
+</B></TD></TR>
+
+<TR><TD VALIGN="TOP" NOWRAP>See Also:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "cols=>40" -->
+</B></TD></TR>
+
+<TR><TD NOWRAP COLSPAN="2">
+<!-- DS_ATTRIBUTE "attr=joinable" "syntax=bool" "type=radio" "true=Allow Others To Join" "false=Do Not Allow Others To Join" "defaultvalue=FALSE" -->
+</TD><TD></TD><TD NOWRAP COLSPAN="2">
+<!-- DS_ATTRIBUTE "attr=suppressNoEmailError" "syntax=bool" "type=radio" "true=Suppress 'No Email Address' Errors" "false=Return 'No Email Address' Errors" "defaultvalue=FALSE" -->
+</TD></TR>
+
+<HR>
+
+<TR><TD VALIGN="TOP" NOWRAP>Group Members:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=member" "syntax=dn" "numfields=+4" "options=sort" -->
+</B></TD></TR>
+
+<TR><TD VALIGN="TOP" NOWRAP>E-Mail Members:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" "numfields=+4" "cols=>30" "options=sort" -->
+</B></TD></TR>
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+<HR>
+This entry was last modified on <B>
+<!-- DS_ATTRIBUTE "attr=lastModifiedTime" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> by <B>
+<!-- DS_ATTRIBUTE "attr=lastModifiedBy" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/display-org.html b/ldap/clients/dsgw/admhtml/display-org.html
new file mode 100644
index 00000000..1d05a994
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/display-org.html
@@ -0,0 +1,129 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML><HEAD>
+<!-- DS_OBJECTCLASS "value=organization" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+New
+<!-- ENDIF // Adding -->
+Organization -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD><BODY>
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE>
+<TR>
+<TD>
+<IMG SRC="/admin-serv/icons/organization.gif" ALT="Organization" HSPACE=5>
+<TD>
+<FONT SIZE="+2">
+<!-- IF "Adding" -->
+New Organization -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</FONT>
+</TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- DS_EDITBUTTON "label=Edit Organization" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Save New Org." -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp&nbsp</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Cancel" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp&nbsp</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_ORG" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_ORG" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp&nbsp</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Rename Org." "prompt=Enter a new name for this organization:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Delete Org." "prompt=Delete this organization?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="organization">
+<!-- ENDIF // Adding -->
+
+<HR>
+<!-- IF "!Displaying" -->
+<DIV ALIGN="right"><B>*&nbsp</B>Indicates a required field</DIV>
+<!-- ENDIF -->
+
+<TABLE>
+<TR>
+<TD VALIGN="TOP" NOWRAP>
+<!-- IF "!Displaying" -->
+<B>*&nbsp</B>
+<!-- ENDIF -->
+<B>Organization Name:</B>
+</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=o" "cols=>20" -->
+</B></TD><TD WIDTH="20%"></TD>
+<TD>Description:</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>30" -->
+</B></TR>
+
+<TR><TD>Phone:</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>16" -->
+</B></TD><TD></TD>
+<TD NOWRAP>Business Category:</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=businessCategory" "cols=>30" -->
+</B></TD></TR>
+
+<TR><TD>Fax:<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=facsimiletelephonenumber" "syntax=tel" "cols=>16" -->
+</B></TD><TD></TD>
+<TD>Location:</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=l" "cols=>30" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>Mailing Address:</TD>
+<TD VALIGN="TOP" COLSPAN="4" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=postalAddress" "syntax=mls" "type=TEXTAREA" "cols=>40" "rows=>4" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">See Also:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "dncomponents=3" "cols=>50" -->
+</B></TR>
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+<HR>
+This entry was last modified on <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> by <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/display-orgperson.html b/ldap/clients/dsgw/admhtml/display-orgperson.html
new file mode 100644
index 00000000..60660b1e
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/display-orgperson.html
@@ -0,0 +1,142 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<!-- inet. organizational person directory entry -->
+<!-- DS_OBJECTCLASS "value=person,inetOrgPerson" -->
+
+<!-- DS_ENTRYBEGIN -->
+<!-- DS_EMIT_BASE_HREF -->
+<TITLE>
+User Entry -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO "prefix=<FONT SIZE=%22%2B1%22>" "suffix=</FONT><HR>" -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<FONT SIZE="+2">
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT>
+
+<!-- DS_VIEW_SWITCHER -->
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="person">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="organizationalPerson">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="inetOrgPerson">
+<!-- ENDIF // Adding -->
+
+<!-- IF "!Displaying" -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<INPUT TYPE="hidden" NAME="completion_javascript" VALUE="if (dsmodify_dn.length == 0) document.location.href=\'genscreen?dslsusers&info=\' + escape(dsmodify_info); else document.location.href=\'edit/\' + dsmodify_dn + \'?&info=\' + escape(dsmodify_info);">
+<DIV ALIGN="right"><FONT SIZE="-1">* Indicates a required field</FONT></DIV>
+<!-- ENDIF -->
+
+<TABLE CELLSPACING="5">
+
+<TR>
+<TD VALIGN="top" ALIGN="Right" NOWRAP><B>Given Name (First Name):</B></TD>
+<TD VALIGN="top" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=givenName" "cols=>32" -->
+</TD>
+</TR>
+
+<TR>
+<TD VALIGN="top" ALIGN="Right" NOWRAP>
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+<B>Surname (Last Name):</B></TD>
+<TD VALIGN="top" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=sn" "cols=>32" -->
+</TD>
+</TR>
+
+<TR>
+<TD VALIGN="top" ALIGN="right" NOWRAP>
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+<B>Full Name(s):</B>
+</TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=cn" "numfields=+1" "cols=>32" -->
+</B></TD>
+</TR>
+
+<TR>
+<TD VALIGN="top" ALIGN="right" NOWRAP>
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+<B>User ID:</B>
+</TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=uid" "numfields=1" "cols=>16" "options=unique" -->
+</B></TD>
+</TR>
+
+<!-- IF "Adding" -->
+<TR><TD COLSPAN="2"><HR></TD></TR>
+<TR>
+<TD VALIGN="top" ALIGN="Right" NOWRAP><B>Password:</B></TD><TD>
+<!-- DS_NEWPASSWORD -->
+</TD>
+</TR>
+<TR>
+<TD VALIGN="top" ALIGN="Right" NOWRAP><B>Repeat password to confirm:</B></TD><TD>
+<!-- DS_CONFIRM_NEWPASSWORD -->
+</TD></TR>
+<TR><TD COLSPAN="2"><HR></TD></TR>
+<!-- ENDIF // Adding -->
+
+<TR>
+<TD VALIGN="top" ALIGN="Right" NOWRAP><B>E-Mail Address:</B></TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" "cols=>32" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="top" ALIGN="Right" NOWRAP><B>Title:</B></TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=title" "cols=>32" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="top" ALIGN="Right" NOWRAP><B>Telephone:</B></TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>16" "numfields=+1" -->
+</B></TD></TR>
+
+</TABLE>
+
+<!-- IF "AttributeHasValues" "modifyTimestamp" -->
+<TABLE BORDER=0><TR><TD><FONT SIZE="-1">
+Last modified on
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "options=readonly" -->
+ by
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "options=readonly" -->
+</FONT></TD></TR></TABLE>
+<!-- ENDIF // AttributeHasValues -->
+
+<TABLE BORDER=2 WIDTH=100%><TR><TD WIDTH=25% ALIGN="center">
+<!-- DS_SAVEBUTTON -->
+</TD><TD WIDTH=25% ALIGN="center">
+<!-- DS_RENAMEBUTTON "label=Rename User" "prompt=Please enter a new name for this user.\nNote that renaming only affects the Full Name field." -->
+</TD><TD WIDTH=25% ALIGN="center">
+<!-- DS_DELETEBUTTON "label=Delete User" "prompt=Delete this user?" -->
+</TD><TD WIDTH=25% ALIGN="center">
+<!-- DS_HELPBUTTON "topic=EDIT_ORGPERSON" -->
+</TD></TR></TABLE>
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/display-orgunit.html b/ldap/clients/dsgw/admhtml/display-orgunit.html
new file mode 100644
index 00000000..0f1db1a4
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/display-orgunit.html
@@ -0,0 +1,95 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML><HEAD>
+<!-- DS_OBJECTCLASS "value=organizationalUnit" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+New
+<!-- ENDIF // Adding -->
+Organizational Unit -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO "prefix=<FONT SIZE=%22%2B1%22>" "suffix=</FONT><HR>" -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<FONT SIZE="+2">
+<!-- IF "Adding" -->
+New Organizational Unit -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</FONT>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="organizationalUnit">
+<!-- ENDIF // Adding -->
+
+<!-- IF "!Displaying" -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<INPUT TYPE="hidden" NAME="completion_javascript" VALUE="if (dsmodify_dn.length == 0) document.location.href=\'genscreen?dslsous&info=\' + escape(dsmodify_info); else document.location.href=\'edit/\' + dsmodify_dn + \'?&info=\' + escape(dsmodify_info);">
+<DIV ALIGN="right"><FONT SIZE="-1">* Indicates a required field</FONT></DIV>
+<!-- ENDIF -->
+
+
+<TABLE>
+<TR><TD>
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+<B>Unit Name:</B>
+</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=ou" "cols=>40" -->
+</B></TD></TR>
+
+<TR><TD>
+<B>Description:</B></TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>40" -->
+</B></TD></TR>
+
+<TR><TD><B>Phone:</B></TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>16" -->
+</B></TD></TR>
+
+<TR><TD><B>Fax:</B><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=facsimiletelephonenumber" "syntax=tel" "cols=>16" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP"><B>Mailing Address:</B></TD>
+<TD VALIGN="TOP" COLSPAN="4" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=postalAddress" "syntax=mls" "type=TEXTAREA" "cols=>40" "rows=>4" -->
+</B></TD></TR>
+
+</TABLE>
+
+<!-- IF "AttributeHasValues" "modifyTimestamp" -->
+<TABLE BORDER=0><TR><TD><FONT SIZE="-1">
+Last modified on
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "options=readonly" -->
+ by
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "options=readonly" -->
+</FONT></TD></TR></TABLE>
+<!-- ENDIF // AttributeHasValues -->
+
+<TABLE BORDER=2 WIDTH=100%><TR><TD WIDTH=25% ALIGN="center">
+<!-- DS_SAVEBUTTON -->
+</TD><TD WIDTH=25% ALIGN="center">
+<!-- DS_RENAMEBUTTON "label=Rename" "prompt=Enter a new name for this organizational unit:" -->
+</TD><TD WIDTH=25% ALIGN="center">
+<!-- DS_DELETEBUTTON "label=Delete" "prompt=Delete this organizational unit?" -->
+</TD><TD WIDTH=25% ALIGN="center">
+<!-- DS_HELPBUTTON "topic=EDIT_ORGUNIT" -->
+</TD></TR></TABLE>
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/display-person.html b/ldap/clients/dsgw/admhtml/display-person.html
new file mode 100644
index 00000000..74fc3d3a
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/display-person.html
@@ -0,0 +1,133 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<!-- person directory entry -->
+<!-- DS_OBJECTCLASS "value=person" -->
+
+<!-- DS_ENTRYBEGIN -->
+<!-- DS_EMIT_BASE_HREF -->
+<TITLE>
+User Entry -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO "prefix=<FONT SIZE=%22%2B1%22>" "suffix=</FONT><HR>" -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<FONT SIZE="+2">
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT>
+
+<!-- DS_VIEW_SWITCHER -->
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="person">
+<!-- ENDIF // Adding -->
+
+<!-- IF "!Displaying" -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<INPUT TYPE="hidden" NAME="completion_javascript" VALUE="if (dsmodify_dn.length == 0) document.location.href=\'genscreen?dslsusers&info=\' + escape(dsmodify_info); else document.location.href=\'edit/\' + dsmodify_dn + \'?&info=\' + escape(dsmodify_info);">
+<DIV ALIGN="right"><FONT SIZE="-1">* Indicates a required field</FONT></DIV>
+<!-- ENDIF -->
+
+<TABLE CELLSPACING="5">
+
+<TR>
+<TD VALIGN="top" ALIGN="Right" NOWRAP>
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+<B>Surname (Last Name):</B></TD>
+<TD VALIGN="top" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=sn" "cols=>32" -->
+</TD>
+</TR>
+
+<TR>
+<TD VALIGN="top" ALIGN="right" NOWRAP>
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+<B>Full Name(s):</B>
+</TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=cn" "numfields=+1" "cols=>32" -->
+</B></TD>
+</TR>
+
+<TR>
+<TD VALIGN="top" ALIGN="right" NOWRAP>
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+<B>User ID:</B>
+</TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=uid" "numfields=1" "cols=>16" "options=unique" -->
+</B></TD>
+</TR>
+
+<!-- IF "Adding" -->
+<TR><TD COLSPAN="2"><HR></TD></TR>
+<TR>
+<TD VALIGN="top" ALIGN="Right" NOWRAP><B>Password:</B></TD><TD>
+<!-- DS_NEWPASSWORD -->
+</TD>
+</TR>
+<TR>
+<TD VALIGN="top" ALIGN="Right" NOWRAP><B>Repeat password to confirm:</B></TD><TD>
+<!-- DS_CONFIRM_NEWPASSWORD -->
+</TD></TR>
+<TR><TD COLSPAN="2"><HR></TD></TR>
+<!-- ENDIF // Adding -->
+
+<TR>
+<TD VALIGN="top" ALIGN="Right" NOWRAP><B>E-Mail Address:</B></TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" "cols=>32" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="top" ALIGN="Right" NOWRAP><B>Title:</B></TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=title" "cols=>32" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="top" ALIGN="Right" NOWRAP><B>Telephone:</B></TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>16" "numfields=+1" -->
+</B></TD></TR>
+
+</TABLE>
+
+<!-- IF "AttributeHasValues" "modifyTimestamp" -->
+<TABLE BORDER=0><TR><TD><FONT SIZE="-1">
+Last modified on
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "options=readonly" -->
+ by
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "options=readonly" -->
+</FONT></TD></TR></TABLE>
+<!-- ENDIF // AttributeHasValues -->
+
+<TABLE BORDER=2 WIDTH=100%><TR><TD WIDTH=25% ALIGN="center">
+<!-- DS_SAVEBUTTON -->
+</TD><TD WIDTH=25% ALIGN="center">
+<!-- DS_RENAMEBUTTON "label=Rename User" "prompt=Please enter a new name for this user.\nNote that renaming only affects the Full Name field." -->
+</TD><TD WIDTH=25% ALIGN="center">
+<!-- DS_DELETEBUTTON "label=Delete User" "prompt=Delete this user?" -->
+</TD><TD WIDTH=25% ALIGN="center">
+<!-- DS_HELPBUTTON "topic=EDIT_ORGPERSON" -->
+</TD></TR></TABLE>
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/display-umperson.html b/ldap/clients/dsgw/admhtml/display-umperson.html
new file mode 100644
index 00000000..6688b471
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/display-umperson.html
@@ -0,0 +1,177 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML><HEAD>
+<!-- U-M person directory entry -->
+<!-- DS_OBJECTCLASS "value=person,umichPerson" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+New
+<!-- ENDIF // Adding -->
+U-M Person Entry -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD><BODY>
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE><TR><TD>
+<IMG SRC="/admin-serv/icons/person.gif" ALT="Person" HSPACE=5>
+</TD><TD><FONT SIZE="+2">
+<!-- IF "Adding" -->
+New U-M Person -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT></TD></TR></TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- DS_EDITBUTTON "label=Edit Person" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Save New Person" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp&nbsp</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Cancel" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp&nbsp</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_UMPERSON" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_UMPERSON" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp&nbsp</TD><TD>
+<!-- DS_EDITASBUTTON "label=Change Password" "template=passwd" -->
+</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Rename Person" "prompt=Enter a new name for this person:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Delete Person" "prompt=Delete this person?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="person">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="umichPerson">
+<!-- ENDIF // Adding -->
+
+<HR>
+<!-- IF "!Displaying" -->
+<DIV ALIGN="right"><B>*&nbsp</B>Indicates a required field</DIV>
+<!-- ENDIF -->
+
+
+<TABLE CELLSPACING="5">
+<TR>
+<TD VALIGN="top" NOWRAP>Last Name:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=sn" "cols=>16" -->
+</B></TD><TD WIDTH="20%"></TD>
+<TD VALIGN="top" NOWRAP>Full Name:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=cn" "numfields=+1" "cols=>16" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Phone:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>16" "numfields=+1" -->
+</B></TD><TD></TD>
+<TD VALIGN="TOP" NOWRAP>E-Mail Address:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" "cols=>20" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Fax:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=facsimiletelephonenumber" "syntax=tel" "cols=>16" -->
+</B></TD><TD></TD>
+<TD VALIGN="TOP" NOWRAP>Uniqname:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=uid" "cols=>16" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>Pager:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=pager" "syntax=tel" "cols=>16" -->
+</B></TD><TD></TD>
+<TD VALIGN="TOP" NOWRAP>Mobile Phone:<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=mobile" "syntax=tel" "cols=>16" -->
+</B></TD></TR>
+
+<TR><TD COLSPAN="5"><HR></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Title:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=title" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Mailing Address:</TD>
+<TD VALIGN="TOP" COLSPAN="4" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=postalAddress" "syntax=mls" "type=TEXTAREA" "cols=>40" "rows=>4" -->
+</B></TD></TR>
+
+<TR><TD COLSPAN="5"><HR></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Description:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=multilineDescription" "syntax=mls" "cols=>50" -->
+</B></TR>
+
+<TR>
+<TD VALIGN="TOP">See Also:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "dncomponents=3" "cols=>50" -->
+</B></TR>
+
+<TR>
+<TD VALIGN="TOP">URL:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=labeledURL" "syntax=url" "cols=>50" -->
+</B></TR>
+
+<TR>
+<TD VALIGN="TOP">Favorite Beverage:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=drink" -->
+</B></TR>
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+<HR>
+This entry was last modified on <B>
+<!-- DS_ATTRIBUTE "attr=lastModifiedTime" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> by <B>
+<!-- DS_ATTRIBUTE "attr=lastModifiedBy" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/dsconfig.html b/ldap/clients/dsgw/admhtml/dsconfig.html
new file mode 100644
index 00000000..a8ea5b2c
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/dsconfig.html
@@ -0,0 +1,191 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HEAD><TITLE>User Management</TITLE>
+
+<SCRIPT language=JavaScript>
+var didSetDefaults = 0;
+
+
+function resetForm()
+{
+ if (document.modForm.dirsvctype[1].checked) {
+ document.configuredForRemote = 1;
+ document.modForm.host.focus();
+ if (document.modForm.port.value == '') {
+ document.modForm.port.value = '389';
+ }
+ } else {
+ document.configuredForRemote = 0;
+ }
+}
+
+
+function submitModify()
+{
+ var theForm = document.modForm;
+
+ // verify form fields
+ if ( theForm.dirsvctype[1].checked ) { // remote directory server
+ if ( theForm.host.value.length == 0 ) {
+ alert( 'Please provide the host name of the LDAP server.' );
+ return false;
+ }
+ if ( theForm.port.value.length == 0 ) {
+ alert( 'Please provide the port number of the LDAP server.' );
+ return false;
+ }
+ if ( theForm.port.value < 1 || theForm.port.value > 65535 ) {
+ alert( 'The port number must be between 1 and 65535.' );
+ return false;
+ }
+ if ( theForm.basedn.value.length == 0 ) {
+ alert( 'Please provide a base DN.' );
+ return false;
+ }
+ if ( theForm.bindpw.value.length > 0 &&
+ theForm.binddn.value.length == 0 ) {
+ alert( 'Please provide the Bind DN.' );
+ return false;
+ }
+ }
+
+ theForm.submit();
+ return false;
+}
+
+
+function selectedSSL( doSSL )
+{
+ var theForm = document.modForm;
+ var onWrongPort, portDesc;
+
+ // SSL On or SSL Off radio button was clicked on: offer to set the
+ // port to the standard SSL or non-SSL one as appropriate.
+
+ if ( doSSL ) {
+ onWrongPort = ( theForm.port.value == 389 );
+ portDesc = 'LDAP over SSL';
+ stdPort = 636;
+ } else {
+ onWrongPort = ( theForm.port.value == 636 );
+ portDesc = 'LDAP';
+ stdPort = 389;
+ }
+
+ if ( onWrongPort && confirm( 'The standard port for ' + portDesc + ' is ' +
+ stdPort + '.\nWould you like to switch to the standard port?' )) {
+ theForm.port.value = stdPort;
+ }
+}
+
+
+function checkForChange()
+{
+ cTLMsg = 'If you switch to local database mode,\n' +
+ 'any configuration data about directory servers\n' +
+ 'will be lost. Go ahead and change to\n' +
+ 'local database mode?';
+ cTRMsg = 'To use a directory server, you must\n' +
+ 'provide the host name, port, and base DN for\n' +
+ 'an LDAP directory server. Go ahead and\n' +
+ 'change to directory server mode?';
+
+ if (document.modForm.dirsvctype[0].checked &&
+ document.configuredForRemote) {
+ if (confirm(cTLMsg)) {
+ var tmp = document.location.href;
+ if (document.location.search == "?CHANGE") {
+ document.location.search = "";
+ } else {
+ document.location.href = tmp + "?CHANGE";
+ }
+ } else {
+ document.modForm.dirsvctype[1].checked = true;
+ }
+ } else if (document.modForm.dirsvctype[1].checked &&
+ !document.configuredForRemote) {
+ if (confirm(cTRMsg)) {
+ var tmp = document.location.href;
+ if (document.location.search == "?CHANGE") {
+ document.location.search = "";
+ } else {
+ document.location.href = tmp + "?CHANGE";
+ }
+ } else {
+ document.modForm.dirsvctype[0].checked = true;
+ }
+ }
+}
+
+</SCRIPT>
+
+</HEAD>
+<!-- BODY "onLoad='resetForm()'" -->
+
+<CENTER><TABLE BORDER="2" CELLPADDING="10" WIDTH="100%">
+<TR><TD ALIGN="center" WIDTH="100%">
+<FONT SIZE="+2"><B>Configure Directory Service</B></FONT>
+</TD></TR></TABLE></CENTER>
+
+<!-- DS_INLINE_POST_RESULTS -->
+
+<FORM METHOD="POST" ACTION="dsconfig" NAME="modForm">
+<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH=100%>
+<TR>
+<TD ALIGN="right" NOWRAP><B>Obtain Directory Service From:</B></TD>
+<TD>
+<INPUT TYPE="radio" NAME="dirsvctype"
+VALUE="local"
+<!-- DS_CHECKED_IF_LOCAL -->
+onClick="checkForChange(this);">Local Database
+<BR>
+<INPUT TYPE="radio" NAME="dirsvctype"
+VALUE="remote"
+<!-- DS_CHECKED_IF_REMOTE -->
+onClick="checkForChange(this);">LDAP Directory Server
+</TD>
+</TR>
+</TABLE>
+<HR>
+<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH=100%>
+<TR><TD COLSPAN="2" ALIGN="center">
+
+<!-- DS_CONFIG_INFO -->
+<BR>
+
+</B></TD></TR>
+
+<!-- DS_HOSTNAME_VALUE -->
+
+<!-- DS_PORT_VALUE -->
+
+<!-- DS_SSL_CONFIG_VALUE -->
+
+<!-- DS_BASEDN_VALUE -->
+
+<!-- DS_BINDDN_VALUE -->
+
+<!-- DS_BINDPASSWD_VALUE -->
+
+</TABLE>
+<P>
+
+<CENTER><TABLE BORDER="2" WIDTH="100%">
+<TR>
+<TD WIDTH="33%" ALIGN="center"><INPUT TYPE="button" VALUE=" Save Changes "
+ onClick="submitModify()"></TD>
+<TD WIDTH=34% ALIGN=center><INPUT TYPE="reset" VALUE=" Reset "
+ onClick="resetForm()"></TD>
+<TD WIDTH=33% ALIGN=center>
+<!-- HELPBUTTON "DSCONFIG" -->
+</TD>
+</TR></TABLE></CENTER>
+</FORM>
+
+<!-- DS_NOCERTFILE_WARNING "<SCRIPT language=JavaScript>alert('For the Users and Groups forms to work over SSL, you need to activate SSL for this Administration Server.\nChoose Encryption|On/Off to do so.');</SCRIPT>" -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/dscrgroup.html b/ldap/clients/dsgw/admhtml/dscrgroup.html
new file mode 100644
index 00000000..f51f255f
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/dscrgroup.html
@@ -0,0 +1,114 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HEAD><TITLE>User Management</TITLE>
+
+<SCRIPT language=JavaScript>
+
+function resetForm()
+{
+ document.addForm.add_cn.focus();
+}
+
+
+function submitAdd()
+{
+ var theForm = document.addForm;
+ var dn, dnSuffix, i, e, prod;
+
+ if ( theForm.add_cn.value.length == 0 ) {
+ alert( 'Please provide a name for the group' );
+ theForm.add_cn.focus();
+ return;
+ }
+
+ dn = 'cn=' + theForm.add_cn.value;
+ if ( theForm.CrLoc.type == 'hidden' ) {
+ dnSuffix = unescape( theForm.CrLoc.value );
+ } else {
+ dnSuffix = unescape(
+ theForm.CrLoc.options[ theForm.CrLoc.selectedIndex ].value );
+ }
+ if ( dnSuffix.length > 0 ) {
+ dn += ', ' + dnSuffix;
+ }
+ theForm.dn.value = escape(dn);
+
+ // execute selected product-specific default functions
+ for ( i = 0; i < theForm.elements.length; ++i ) {
+ e = theForm.elements[ i ];
+ if ( e.type == 'checkbox' &&
+ e.name.substring( 0, 17 ) == 'product_checkbox_' &&
+ e.checked ) {
+ prod = e.name.substring( 17, e.name.length );
+ if ( !eval( 'product_setdefaults_' + prod + '(theForm)' )) {
+ return; // submit vetoed by product
+ }
+ }
+ }
+
+ theForm.submit();
+}
+
+
+function submitAddandEdit()
+{
+ document.addForm.completion_javascript.value =
+ "if (dsmodify_dn.length == 0) document.location.href=\"genscreen?dscrgroup&info=\" + escape(dsmodify_info); else document.location.href=\"edit/\" + dsmodify_dn + \"?&info=\" + escape(dsmodify_info);";
+
+ submitAdd();
+}
+
+</SCRIPT>
+
+</HEAD>
+<!-- BODY "onLoad='resetForm()'" -->
+
+<CENTER><TABLE BORDER="2" CELLPADDING="10" WIDTH="100%">
+<TR><TD ALIGN="center" WIDTH="100%">
+<FONT SIZE="+2"><B>New Group</B></FONT>
+</TD></TR></TABLE></CENTER>
+
+<!-- DS_LAST_OP_INFO "prefix=<P><FONT SIZE=%22%2B1%22>The group " "suffix=</FONT><HR>" -->
+
+<FORM METHOD="POST" ACTION="domodify" NAME="addForm">
+
+<INPUT TYPE="hidden" NAME="completion_javascript" VALUE="document.location.href=\'genscreen?dscrgroup&info=\' + escape(dsmodify_info)">
+
+<INPUT TYPE="hidden" NAME="changetype" VALUE="add">
+<INPUT TYPE="hidden" NAME="dn" VALUE="">
+
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="groupOfUniqueNames">
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+
+<DIV ALIGN="right"><FONT SIZE="-1">* Indicates a required field</FONT></DIV>
+
+<TABLE CELLSPACING="0" BORDER="0">
+<TR><TD ALIGN="right"><b>* Group Name:</b></TD>
+<TD><INPUT type="text" name="add_cn" value="" size=32></TD></TR>
+<TR><TD ALIGN="right"><b>Description:</b></TD>
+<TD><INPUT type="text" name="add_description" value="" size=32></TD></TR>
+<!-- INCLUDESET dscrgroup -->
+<!-- DS_LOCATIONPOPUP "name=CrLoc" "prefix=<TR><TD ALIGN=%22right%22><b>Add New Group To:</b></TD><TD>" "suffix=</TD></TR>" "rootname=the top of the directory" -->
+</TABLE>
+<P>
+
+<CENTER><TABLE BORDER="2" WIDTH="100%">
+<TR>
+<TD WIDTH="25%" ALIGN="center"><INPUT TYPE="button" VALUE=" Create Group "
+ onClick="submitAdd()"></TD>
+<TD WIDTH="25%" ALIGN="center">
+ <INPUT TYPE="button" VALUE=" Create and Edit Group "
+ onClick="submitAddandEdit()"></TD>
+<TD WIDTH=25% ALIGN=center><INPUT TYPE="reset" VALUE=" Reset "
+ onClick="resetForm()"></TD>
+<TD WIDTH=25% ALIGN=center>
+<!-- HELPBUTTON "DSCRGROUP" -->
+</TD></TR></TABLE></CENTER>
+</FORM>
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/dscrou.html b/ldap/clients/dsgw/admhtml/dscrou.html
new file mode 100644
index 00000000..78ffe725
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/dscrou.html
@@ -0,0 +1,103 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HEAD><TITLE>User Management</TITLE>
+
+<SCRIPT language=JavaScript>
+
+function resetForm()
+{
+ document.addForm.add_ou.focus();
+}
+
+
+function submitAdd()
+{
+ var theForm = document.addForm;
+ var dn, dnSuffix, i, e, prod;
+
+ if ( theForm.add_ou.value.length == 0 ) {
+ alert( 'Please provide a name for the org. unit.' );
+ theForm.add_ou.focus();
+ return;
+ }
+
+ dn = 'ou=' + theForm.add_ou.value;
+ if ( theForm.CrLoc.type == 'hidden' ) {
+ dnSuffix = unescape( theForm.CrLoc.value );
+ } else {
+ dnSuffix = unescape(
+ theForm.CrLoc.options[ theForm.CrLoc.selectedIndex ].value );
+ }
+ if ( dnSuffix.length > 0 ) {
+ dn += ', ' + dnSuffix;
+ }
+ theForm.dn.value = escape(dn);
+
+ // execute selected product-specific default functions
+ for ( i = 0; i < theForm.elements.length; ++i ) {
+ e = theForm.elements[ i ];
+ if ( e.type == 'checkbox' &&
+ e.name.substring( 0, 17 ) == 'product_checkbox_' &&
+ e.checked ) {
+ prod = e.name.substring( 17, e.name.length );
+ if ( !eval( 'product_setdefaults_' + prod + '(theForm)' )) {
+ return; // submit vetoed by product
+ }
+ }
+ }
+
+ theForm.submit();
+}
+</SCRIPT>
+
+</HEAD>
+<!-- BODY "onLoad='resetForm()'" -->
+
+<CENTER><TABLE BORDER="2" CELLPADDING="10" WIDTH="100%">
+<TR><TD ALIGN="center" WIDTH="100%">
+<FONT SIZE="+2"><B>New Organizational Unit</B></FONT>
+</TD></TR></TABLE></CENTER>
+
+<!-- DS_LAST_OP_INFO "prefix=<P><FONT SIZE=%22%2B1%22>The organizational unit " "suffix=</FONT><HR>" -->
+
+<FORM METHOD="POST" ACTION="domodify" NAME="addForm">
+
+<INPUT TYPE="hidden" NAME="completion_javascript" VALUE="document.location.href=\'genscreen?dscrou&info=\' + escape(dsmodify_info)">
+
+<INPUT TYPE="hidden" NAME="changetype" VALUE="add">
+<INPUT TYPE="hidden" NAME="dn" VALUE="">
+
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="organizationalUnit">
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+
+<DIV ALIGN="right"><FONT SIZE="-1">* Indicates a required field</FONT></DIV>
+
+<TABLE CELLSPACING="0" BORDER="0">
+<TR><TD ALIGN="right"><b>* Unit Name:</b></TD>
+<TD><INPUT type="text" name="add_ou" value="" size=32></TD></TR>
+<TR><TD ALIGN="right"><b>Description:</b></TD>
+<TD><INPUT type="text" name="add_description" value="" size=32></TD></TR>
+<!-- INCLUDESET dscrou -->
+<!-- DS_LOCATIONPOPUP "name=CrLoc" "prefix=<TR><TD ALIGN=%22right%22><b>Add Organizational Unit To:</b></TD><TD>" "suffix=</TD></TR>" "rootname=the top of the directory" -->
+</TABLE>
+<P>
+
+<CENTER><TABLE BORDER="2" WIDTH="100%">
+<TR>
+<TD WIDTH="33%" ALIGN="center">
+ <INPUT TYPE="button" VALUE=" Create Organizational Unit "
+ onClick="submitAdd()"></TD>
+<TD WIDTH=33% ALIGN=center><INPUT TYPE="reset" VALUE=" Reset "
+ onClick="resetForm()"></TD>
+<TD WIDTH=33% ALIGN=center>
+<!-- HELPBUTTON "DSCROU" -->
+</TD>
+</TR></TABLE></CENTER>
+</FORM>
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/dscruser.html b/ldap/clients/dsgw/admhtml/dscruser.html
new file mode 100644
index 00000000..efddfbd2
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/dscruser.html
@@ -0,0 +1,172 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HEAD><TITLE>User Management</TITLE>
+
+<SCRIPT language=JavaScript>
+var didSetDefaults = 0;
+
+
+function resetForm()
+{
+ didSetDefaults = 0;
+ document.addForm.add_givenname.focus();
+}
+
+
+function submitAdd()
+{
+ var theForm = document.addForm;
+ var dn, dnSuffix, i, e, prod;
+
+ if ( theForm.add_cn.value.length == 0 ) {
+ alert( 'Please provide the user\'s full name.' );
+ theForm.add_cn.focus();
+ return;
+ }
+ if ( theForm.add_sn.value.length == 0 ) {
+ alert( 'Please provide the user\'s surname.' );
+ theForm.add_sn.focus();
+ return;
+ }
+ if ( theForm.add_unique_uid.value.length == 0 ) {
+ alert( 'Please choose a user id for this user.' );
+ theForm.add_unique_uid.focus();
+ return;
+ }
+
+ dn = 'cn=' + theForm.add_cn.value;
+ if ( theForm.CrLoc.type == 'hidden' ) {
+ dnSuffix = unescape( theForm.CrLoc.value );
+ } else {
+ dnSuffix = unescape(
+ theForm.CrLoc.options[ theForm.CrLoc.selectedIndex ].value );
+ }
+ if ( dnSuffix.length > 0 ) {
+ dn += ', ' + dnSuffix;
+ }
+ theForm.dn.value = escape(dn);
+
+ // execute selected product-specific default functions
+ for ( i = 0; i < theForm.elements.length; ++i ) {
+ e = theForm.elements[ i ];
+ if ( e.type == 'checkbox' &&
+ e.name.substring( 0, 17 ) == 'product_checkbox_' &&
+ e.checked ) {
+ prod = e.name.substring( 17, e.name.length );
+ if ( !eval( 'product_setdefaults_' + prod + '(theForm)' )) {
+ return; // submit vetoed by product
+ }
+ }
+ }
+
+ theForm.submit();
+}
+
+
+function submitAddandEdit()
+{
+ document.addForm.completion_javascript.value =
+ "if (dsmodify_dn.length == 0) document.location.href=\"genscreen?dscruser&info=\" + escape(dsmodify_info); else document.location.href=\"edit/\" + dsmodify_dn + \"?&info=\" + escape(dsmodify_info);";
+
+ submitAdd();
+}
+
+
+function setDefaults()
+{
+ var theForm = document.addForm;
+
+ if ( theForm.add_cn.value.length == 0 ) {
+ theForm.add_cn.value = theForm.add_givenname.value + ' '
+ + theForm.add_sn.value;
+ if ( theForm.add_unique_uid.value.length == 0 ) {
+ theForm.add_unique_uid.value =
+ theForm.add_givenname.value.substring(0,1).toLowerCase()
+ + theForm.add_sn.value.toLowerCase();
+ }
+ didSetDefaults = 1;
+ }
+}
+
+
+function skipIfDefaulted()
+{
+// Make this function a NOP for now since it exercises a bug in NT Navigator
+// that makes the interface very confusing (see bug # 40412 in Scopus).
+// var theForm = document.addForm;
+//
+// if ( didSetDefaults == 1 ) {
+// didSetDefaults = 0;
+// document.addForm.newpasswd.focus();
+// }
+}
+
+</SCRIPT>
+
+</HEAD>
+<!-- BODY "onLoad='resetForm()'" -->
+
+<CENTER><TABLE BORDER="2" CELLPADDING="10" WIDTH="100%">
+<TR><TD ALIGN="center" WIDTH="100%">
+<FONT SIZE="+2"><B>New User</B></FONT>
+</TD></TR></TABLE></CENTER>
+
+<!-- DS_LAST_OP_INFO "prefix=<P><FONT SIZE=%22%2B1%22>The user " "suffix=</FONT><HR>" -->
+
+<FORM METHOD="POST" ACTION="domodify" NAME="addForm">
+
+<INPUT TYPE="hidden" NAME="completion_javascript" VALUE="document.location.href=\'genscreen?dscruser&info=\' + escape(dsmodify_info)">
+
+<INPUT TYPE="hidden" NAME="changetype" VALUE="add">
+<INPUT TYPE="hidden" NAME="dn" VALUE="">
+
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="person">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="organizationalPerson">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="inetOrgPerson">
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<INPUT TYPE="hidden" NAME="desc_uid" VALUE="user id">
+
+<DIV ALIGN="right"><FONT SIZE="-1">* Indicates a required field</FONT></DIV>
+
+<TABLE CELLSPACING="0" BORDER="0">
+<TR><TD NOWRAP ALIGN="right"><b>* Given Name (First Name):</b></TD>
+<TD><INPUT type="text" name="add_givenname" value="" size=32></TD></TR>
+<TR><TD NOWRAP ALIGN="right"><b>* Surname (Last Name):</b></TD>
+<TD><INPUT type="text" name="add_sn" value="" size=32
+ onBlur="setDefaults()"> </TD></TR>
+<TR><TD NOWRAP ALIGN="right"><b>* Full Name:</b></TD>
+<TD><INPUT type="text" name="add_cn" value="" size=32
+ onFocus="skipIfDefaulted()"></TD></TR>
+<TR><TD NOWRAP ALIGN="right"><b>* User ID:</b></TD>
+<TD><INPUT type="text" name="add_unique_uid" value="" size=20></TD></TR>
+<TR><TD NOWRAP ALIGN="right"><b>Password:</b></TD>
+<TD><INPUT type=password name="newpasswd" value="" size=20></TD></TR>
+<TR><TD NOWRAP ALIGN="right"><b>Password (Again):</b></TD>
+<TD><INPUT type=password name="newpasswdconfirm" value="" size=20></TD></TR>
+<TR><TD NOWRAP ALIGN="right"><b>E-Mail Address:</b></TD>
+<TD><INPUT type="text" name="add_mail" value="" size=32></TD></TR>
+<!-- INCLUDESET dscruser -->
+<!-- DS_LOCATIONPOPUP "name=CrLoc" "prefix=<TR><TD NOWRAP ALIGN=%22right%22><b>Add New User To:</b></TD><TD>" "suffix=</TD></TR>" "rootname=the top of the directory" -->
+</TABLE>
+<P>
+
+<CENTER><TABLE BORDER="2" WIDTH="100%">
+<TR>
+<TD WIDTH="25%" ALIGN="center"><INPUT TYPE="button" VALUE=" Create User "
+ onClick="submitAdd()"></TD>
+<TD WIDTH="25%" ALIGN="center">
+<INPUT TYPE="button" VALUE=" Create and Edit User "
+ onClick="submitAddandEdit()"></TD>
+<TD WIDTH=25% ALIGN=center><INPUT TYPE="reset" VALUE=" Reset "
+ onClick="resetForm()"></TD>
+<TD WIDTH=25% ALIGN=center>
+<!-- HELPBUTTON "DSCRUSER" -->
+</TD></TR></TABLE></CENTER>
+</FORM>
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/dsexpldif.html b/ldap/clients/dsgw/admhtml/dsexpldif.html
new file mode 100644
index 00000000..27326c72
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/dsexpldif.html
@@ -0,0 +1,76 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HEAD><TITLE>User Management</TITLE>
+
+<SCRIPT language=JavaScript>
+var didSetDefaults = 0;
+
+function submitModify()
+{
+ var theForm = document.expForm;
+
+ // verify form fields
+ if ( theForm.ldif.value.length == 0 ) {
+ alert( 'Please provide the export ldif file name.' );
+ return false;
+ }
+
+ theForm.submit();
+ return false;
+}
+
+</SCRIPT>
+
+
+</HEAD>
+<!-- BODY -->
+
+<CENTER><TABLE BORDER="2" CELLPADDING="10" WIDTH="100%">
+<TR><TD ALIGN="center" WIDTH="100%">
+<FONT SIZE="+2"><B>Export Directory Information</B></FONT>
+</TD></TR></TABLE></CENTER>
+
+<!-- DS_INLINE_POST_RESULTS -->
+
+<FORM METHOD="POST" ACTION="dsexpldif" NAME="expForm">
+<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH=100%>
+<TR>
+<TD ALIGN="right" NOWRAP><B>Export database to LDIF file:</B></TD>
+<TD><INPUT TYPE="text" NAME="ldif"
+<!-- DS_LDIF_FILE -->
+SIZE=40></TD>
+</TR>
+
+<!-- IF "DirectoryIsLocalDB" -->
+<TR>
+<TD ALIGN="right" NOWRAP><B>Suffix to add:</B></TD>
+<TD><INPUT TYPE="text" NAME="suffix"
+<!-- DS_SUFFIX -->
+SIZE=40></TD>
+</TR>
+<!-- ENDIF -->
+
+</TABLE>
+<P>
+
+<CENTER><TABLE BORDER="2" WIDTH="100%">
+<TR>
+<TD WIDTH="33%" ALIGN="center"><INPUT TYPE="button" VALUE=" Begin Export "
+ onClick="submitModify()"></TD>
+<TD WIDTH=34% ALIGN=center><INPUT TYPE="reset" VALUE=" Reset "
+ ></TD>
+<TD WIDTH=33% ALIGN=center>
+<!-- HELPBUTTON "DSEXPLDIF" -->
+</TD>
+</TR></TABLE></CENTER>
+</FORM>
+
+<P ALIGN="right"><FONT SIZE="-2">
+<!-- DS_GATEWAY_VERSION -->
+</FONT></P>
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/dsimpldif.html b/ldap/clients/dsgw/admhtml/dsimpldif.html
new file mode 100644
index 00000000..24b0e065
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/dsimpldif.html
@@ -0,0 +1,85 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HEAD><TITLE>User Management</TITLE>
+
+<SCRIPT language=JavaScript>
+var didSetDefaults = 0;
+
+function submitModify()
+{
+ var theForm = document.impForm;
+
+ // verify form fields
+ if ( theForm.ldif.value.length == 0 ) {
+ alert( 'Please provide the import ldif file name.' );
+ return false;
+ }
+
+ theForm.submit();
+ return false;
+}
+
+</SCRIPT>
+
+
+</HEAD>
+<!-- BODY -->
+
+<CENTER><TABLE BORDER="2" CELLPADDING="10" WIDTH="100%">
+<TR><TD ALIGN="center" WIDTH="100%">
+<FONT SIZE="+2"><B>Import Directory Information</B></FONT>
+</TD></TR></TABLE></CENTER>
+
+<!-- DS_INLINE_POST_RESULTS -->
+
+<FORM METHOD="POST" ACTION="dsimpldif" NAME="impForm">
+<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH=100%>
+<TR>
+<TD ALIGN="right" NOWRAP><B>Import from LDIF file:</B></TD>
+<TD><INPUT TYPE="text" NAME="ldif"
+<!-- DS_LDIF_FILE -->
+SIZE=40></TD>
+</TR>
+
+<!-- IF "DirectoryIsLocalDB" -->
+<TR>
+<TD ALIGN="right" NOWRAP>&nbsp;</TD>
+<TD>
+<INPUT TYPE="checkbox" NAME="erase" VALUE="true"
+<!-- DS_CHECKED_IF_ERASE -->
+><B>Erase existing database</B></TD>
+</TD>
+</TR>
+<!-- ENDIF -->
+
+<TR>
+<TD ALIGN="right" NOWRAP>&nbsp;</TD>
+<TD>
+<INPUT TYPE="checkbox" NAME="stop"
+VALUE="true"
+<!-- DS_CHECKED_IF_STOP -->
+><B>Stop on errors</B>
+</TD>
+</TR>
+
+
+</TABLE>
+<P>
+
+<CENTER><TABLE BORDER="2" WIDTH="100%">
+<TR>
+<TD WIDTH="33%" ALIGN="center"><INPUT TYPE="button" VALUE=" Begin Import "
+ onClick="submitModify()"></TD>
+<TD WIDTH=34% ALIGN=center><INPUT TYPE="reset" VALUE=" Reset "
+ ></TD>
+<TD WIDTH=33% ALIGN=center>
+<!-- HELPBUTTON "DSIMPLDIF" -->
+</TD>
+</TR></TABLE></CENTER>
+</FORM>
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/dslsgroups.html b/ldap/clients/dsgw/admhtml/dslsgroups.html
new file mode 100644
index 00000000..b25abb33
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/dslsgroups.html
@@ -0,0 +1,164 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD><TITLE>Manage Groups</TITLE>
+
+<SCRIPT language=JavaScript>
+
+function doList()
+{
+ var theForm = document.listForm;
+ var baseDesc;
+
+ theForm.base.value = baseDN();
+ baseDesc = baseDescription();
+
+ if ( theForm.searchstring.value.length == 0 ) {
+ theForm.filterpattern.value = '(cn=*)';
+ theForm.searchdesc.value = '<BR>All groups ' + baseDesc;
+ return( true ); // submit the form
+ }
+
+ theForm.searchdesc.value = '<BR>Groups ' + baseDesc + ' whose <B>' +
+ theForm.attr.options[ theForm.attr.selectedIndex ].text + '</B> ' +
+ theForm.patternSelect.options[ theForm.patternSelect.selectedIndex
+ ].text + ' <B>' + theForm.searchstring.value + '</B>';
+
+ theForm.filterpattern.value = theForm.patternSelect.options[
+ theForm.patternSelect.selectedIndex ].value;
+
+ return( true ); // submit
+}
+
+function doEdit()
+{
+ var theForm = document.editForm;
+
+ if ( theForm.visiblesearchstring.value.length == 0 ) {
+ theForm.searchstring.value = '*'; // a bit of a hack
+ } else {
+ theForm.searchstring.value = theForm.visiblesearchstring.value;
+ }
+
+ theForm.listtemplate.value = document.listForm.listtemplate.options[
+ document.listForm.listtemplate.selectedIndex ].value;
+ theForm.base.value = baseDN();
+
+ return( true ); // submit the form
+}
+
+function baseDN()
+{
+ var theForm = document.listForm;
+ var escapedDN;
+
+ if ( theForm.encodedbase.type == 'hidden' ) {
+ escapedDN = theForm.encodedbase.value;
+ } else {
+ escapedDN = theForm.encodedbase.options[
+ theForm.encodedbase.selectedIndex ].value;
+ }
+
+ return( unescape( escapedDN ));
+}
+
+function baseDescription()
+{
+ var theForm = document.listForm;
+
+ if ( theForm.encodedbase.type == 'hidden' ) {
+ return( '' );
+ } else {
+ return( 'in ' + theForm.encodedbase.options[
+ theForm.encodedbase.selectedIndex ].text );
+ }
+}
+</SCRIPT>
+</HEAD>
+
+<!-- BODY "onLoad='document.editForm.visiblesearchstring.focus()'" -->
+
+<CENTER><TABLE BORDER="2" CELLPADDING="10" WIDTH="100%">
+<TR><TD ALIGN="center" WIDTH="100%">
+<FONT SIZE="+2"><B>Manage Groups</B></FONT>
+</TD></TR></TABLE></CENTER>
+
+<!-- DS_LAST_OP_INFO "prefix=<P><FONT SIZE=%22%2B1%22>The group " "suffix=</FONT><HR>" -->
+
+<FORM method="POST" ACTION="dosearch" NAME="editForm"
+ onSubmit="return doEdit()">
+<INPUT TYPE="hidden" NAME="mode" VALUE="smart">
+<INPUT TYPE="hidden" NAME="type" VALUE="groups">
+<INPUT TYPE="hidden" NAME="link2edit" VALUE="true">
+<INPUT TYPE="hidden" NAME="editable" VALUE="true">
+<INPUT TYPE="hidden" NAME="goback" VALUE="Return To Manage Groups Screen">
+<INPUT TYPE="hidden" NAME="base" VALUE="">
+<INPUT TYPE="hidden" NAME="listtemplate" VALUE="">
+<INPUT TYPE="hidden" NAME="searchstring" VALUE="">
+<B>Find group:</B><BR>
+<INPUT TYPE="text" NAME="visiblesearchstring" SIZE=25 VALUE="">
+<INPUT TYPE="submit" VALUE=" Find ">
+</FORM>
+
+<FORM METHOD="POST" ACTION="dosearch" NAME="listForm"
+ onSubmit="return doList()">
+
+<INPUT TYPE="hidden" NAME="mode" VALUE="pattern">
+<INPUT TYPE="hidden" NAME="type" VALUE="Groups">
+<INPUT TYPE="hidden" NAME="filterprefix"
+ VALUE="(&(|(objectclass=groupofuniquenames)(objectclass=groupofnames))">
+<INPUT TYPE="hidden" NAME="filtersuffix" VALUE=")">
+<INPUT TYPE="hidden" NAME="filterpattern" VALUE="">
+<INPUT TYPE="hidden" NAME="searchdesc" VALUE="">
+<INPUT TYPE="hidden" NAME="listifone" VALUE="true">
+<INPUT TYPE="hidden" NAME="link2edit" VALUE="true">
+<INPUT TYPE="hidden" NAME="goback" VALUE="Return To Manage Groups Screen">
+<INPUT TYPE="hidden" NAME="base" VALUE="">
+
+<B>Find all groups whose:</B>
+<BR>
+
+<NOBR>
+<SELECT name="attr">
+<OPTION VALUE="cn">name
+<OPTION VALUE="description">description
+</SELECT>
+
+<SELECT name="patternSelect">
+<OPTION VALUE="(%a=*%v*)">contains
+<OPTION VALUE="(%a=%v)">is
+<OPTION VALUE="(!(%a=%v))">isn't
+<OPTION VALUE="(%a~=%v)">sounds like
+<OPTION VALUE="(%a=%v*)">starts with
+<OPTION VALUE="(%a=*%v)">ends with
+</SELECT>
+<INPUT TYPE="text" NAME="searchstring" VALUE="" SIZE="17">
+<INPUT TYPE="submit" VALUE=" Find "></TD>
+</NOBR>
+
+<SPACER TYPE=vertical SIZE=20>
+<TABLE BORDER=0>
+<!-- DS_LOCATIONPOPUP "name=encodedbase" "prefix=<TR><TD><B>Look within:</B></TD><TD>" "suffix="</TD></TR>" -->
+</TD></TR>
+<TR><TD>
+<B>Format:</B></TD><TD>
+<SELECT name="listtemplate">
+<OPTION VALUE="Groups">On-Screen
+<OPTION VALUE="Groups-report">Printer
+</SELECT>
+</TD></TR></TABLE>
+
+<SPACER TYPE=vertical SIZE=5>
+<TABLE BORDER="2" WIDTH="100%">
+<TR>
+<TD WIDTH="50%" ALIGN="center"><INPUT TYPE="reset" VALUE=" Reset "></TD>
+<TD WIDTH="50%" ALIGN="center">
+<!-- HELPBUTTON "DSLSGROUP" -->
+</TD></TR></TABLE>
+</FORM>
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/dslsous.html b/ldap/clients/dsgw/admhtml/dslsous.html
new file mode 100644
index 00000000..90a58f07
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/dslsous.html
@@ -0,0 +1,172 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD><TITLE>Manage Organizational Units </TITLE>
+
+<SCRIPT language=JavaScript>
+
+function doList()
+{
+ var theForm = document.listForm;
+ var baseDesc;
+
+ theForm.base.value = baseDN();
+ baseDesc = baseDescription();
+
+ if ( theForm.searchstring.value.length == 0 ) {
+ theForm.filterpattern.value = '(ou=*)';
+ theForm.searchdesc.value = '<BR>All organizational units ' + baseDesc;
+ return( true ); // submit the form
+ }
+
+ if ( theForm.searchstring.value.length == 0 ) {
+ alert( 'Please supply a filter string.' );
+ return( false ); // cancel the submit
+ }
+
+ theForm.searchdesc.value = '<BR>Organizational units ' + baseDesc
+ + ' whose <B>' +
+ theForm.attr.options[ theForm.attr.selectedIndex ].text + '</B> ' +
+ theForm.patternSelect.options[ theForm.patternSelect.selectedIndex
+ ].text + ' <B>' + theForm.searchstring.value + '</B>';
+
+ theForm.filterpattern.value = theForm.patternSelect.options[
+ theForm.patternSelect.selectedIndex ].value;
+
+ return( true ); // submit
+}
+
+function doEdit()
+{
+ var theForm = document.editForm;
+
+ if ( theForm.visiblesearchstring.value.length == 0 ) {
+ theForm.searchstring.value = '*'; // a bit of a hack
+ } else {
+ theForm.searchstring.value = theForm.visiblesearchstring.value;
+ }
+
+ theForm.listtemplate.value = document.listForm.listtemplate.options[
+ document.listForm.listtemplate.selectedIndex ].value;
+ theForm.base.value = baseDN();
+
+ return( true ); // submit the form
+}
+
+function baseDN()
+{
+ var theForm = document.listForm;
+ var escapedDN;
+
+ if ( theForm.encodedbase.type == 'hidden' ) {
+ escapedDN = theForm.encodedbase.value;
+ } else {
+ escapedDN = theForm.encodedbase.options[
+ theForm.encodedbase.selectedIndex ].value;
+ }
+
+ return( unescape( escapedDN ));
+}
+
+function baseDescription()
+{
+ var theForm = document.listForm;
+
+ if ( theForm.encodedbase.type == 'hidden' ) {
+ return( '' );
+ } else {
+ return( 'in ' + theForm.encodedbase.options[
+ theForm.encodedbase.selectedIndex ].text );
+ }
+}
+</SCRIPT>
+</HEAD>
+
+<!-- BODY "onLoad='document.editForm.visiblesearchstring.focus()'" -->
+
+<CENTER><TABLE BORDER="2" CELLPADDING="10" WIDTH="100%">
+<TR><TD ALIGN="center" WIDTH="100%">
+<FONT SIZE="+2"><B>Manage Organizational Units</B></FONT>
+</TD></TR></TABLE></CENTER>
+
+<!-- DS_LAST_OP_INFO "prefix=<P><FONT SIZE=%22%2B1%22>The organizational unit " "suffix=</FONT><HR>" -->
+
+<FORM method="POST" ACTION="dosearch" NAME="editForm"
+ onSubmit="return doEdit()">
+<INPUT TYPE="hidden" NAME="mode" VALUE="smart">
+<INPUT TYPE="hidden" NAME="type" VALUE="org-units">
+<INPUT TYPE="hidden" NAME="link2edit" VALUE="true">
+<INPUT TYPE="hidden" NAME="editable" VALUE="true">
+<INPUT TYPE="hidden" NAME="goback"
+ VALUE="Return To Manage Organizational Units Screen">
+<INPUT TYPE="hidden" NAME="base" VALUE="">
+<INPUT TYPE="hidden" NAME="listtemplate" VALUE="">
+<INPUT TYPE="hidden" NAME="searchstring" VALUE="">
+<B>Find organizational unit:</B><BR>
+<INPUT TYPE="text" NAME="visiblesearchstring" SIZE=25 VALUE="">
+<INPUT TYPE="submit" VALUE=" Find ">
+</FORM>
+
+<FORM METHOD="POST" ACTION="dosearch" NAME="listForm"
+ onSubmit="return doList()">
+
+<INPUT TYPE="hidden" NAME="mode" VALUE="pattern">
+<INPUT TYPE="hidden" NAME="type" VALUE="OrgUnits">
+<INPUT TYPE="hidden" NAME="filterprefix"
+ VALUE="(&(objectclass=organizationalunit)">
+<INPUT TYPE="hidden" NAME="filtersuffix" VALUE=")">
+<INPUT TYPE="hidden" NAME="filterpattern" VALUE="">
+<INPUT TYPE="hidden" NAME="searchdesc" VALUE="">
+<INPUT TYPE="hidden" NAME="listifone" VALUE="true">
+<INPUT TYPE="hidden" NAME="link2edit" VALUE="true">
+<INPUT TYPE="hidden" NAME="goback"
+ VALUE="Return To Manage Organizational Units Screen">
+<INPUT TYPE="hidden" NAME="base" VALUE="">
+
+<B>Find all units whose:</B>
+<BR>
+
+<NOBR>
+<SELECT name="attr">
+<OPTION VALUE="ou">unit name
+<OPTION VALUE="description">description
+</SELECT>
+
+<SELECT name="patternSelect">
+<OPTION VALUE="(%a=*%v*)">contains
+<OPTION VALUE="(%a=%v)">is
+<OPTION VALUE="(!(%a=%v))">isn't
+<OPTION VALUE="(%a~=%v)">sounds like
+<OPTION VALUE="(%a=%v*)">starts with
+<OPTION VALUE="(%a=*%v)">ends with
+</SELECT>
+<INPUT TYPE="text" NAME="searchstring" VALUE="" SIZE="17">
+<INPUT TYPE="submit" VALUE=" Find ">
+</NOBR>
+
+<SPACER TYPE=vertical SIZE=20>
+<TABLE BORDER=0>
+<!-- DS_LOCATIONPOPUP "name=encodedbase" "prefix=<TR><TD><B>Look within:</B></TD><TD>" "suffix="</TD></TR>" -->
+</TD></TR>
+<TR><TD>
+<B>Format:</B></TD><TD>
+<SELECT name="listtemplate">
+<OPTION VALUE="OrgUnits">On-Screen
+<OPTION VALUE="OrgUnits-report">Printer
+</SELECT>
+</TD></TR></TABLE>
+
+<SPACER TYPE=vertical SIZE=5>
+<TABLE BORDER="2" WIDTH="100%">
+<TR>
+<TD WIDTH="50%" ALIGN="center"><INPUT TYPE="reset" VALUE=" Reset "></TD>
+<TD WIDTH="50%" ALIGN="center">
+<!-- HELPBUTTON "DSLSOUS" -->
+</TD></TR></TABLE>
+</FORM>
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/dslsusers.html b/ldap/clients/dsgw/admhtml/dslsusers.html
new file mode 100644
index 00000000..90cf49fa
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/dslsusers.html
@@ -0,0 +1,166 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD><TITLE>Manage Users</TITLE>
+
+<SCRIPT language=JavaScript>
+
+function doList()
+{
+ var theForm = document.listForm;
+ var baseDesc;
+
+ theForm.base.value = baseDN();
+ baseDesc = baseDescription();
+
+ if ( theForm.searchstring.value.length == 0 ) {
+ theForm.filterpattern.value = '(cn=*)';
+ theForm.searchdesc.value = '<BR>All users ' + baseDesc;
+ return( true ); // submit the form
+ }
+
+ theForm.searchdesc.value = '<BR>Users ' + baseDesc + ' whose <B>' +
+ theForm.attr.options[ theForm.attr.selectedIndex ].text + '</B> ' +
+ theForm.patternSelect.options[ theForm.patternSelect.selectedIndex
+ ].text + ' <B>' + theForm.searchstring.value + '</B>';
+
+ theForm.filterpattern.value = theForm.patternSelect.options[
+ theForm.patternSelect.selectedIndex ].value;
+
+ return( true ); // submit
+}
+
+function doEdit()
+{
+ var theForm = document.editForm;
+
+ if ( theForm.visiblesearchstring.value.length == 0 ) {
+ theForm.searchstring.value = '*'; // a bit of a hack
+ } else {
+ theForm.searchstring.value = theForm.visiblesearchstring.value;
+ }
+
+ theForm.listtemplate.value = document.listForm.listtemplate.options[
+ document.listForm.listtemplate.selectedIndex ].value;
+ theForm.base.value = baseDN();
+
+ return( true ); // submit the form
+}
+
+function baseDN()
+{
+ var theForm = document.listForm;
+ var escapedDN;
+
+ if ( theForm.encodedbase.type == 'hidden' ) {
+ escapedDN = theForm.encodedbase.value;
+ } else {
+ escapedDN = theForm.encodedbase.options[
+ theForm.encodedbase.selectedIndex ].value;
+ }
+
+ return( unescape( escapedDN ));
+}
+
+function baseDescription()
+{
+ var theForm = document.listForm;
+
+ if ( theForm.encodedbase.type == 'hidden' ) {
+ return( '' );
+ } else {
+ return( 'in ' + theForm.encodedbase.options[
+ theForm.encodedbase.selectedIndex ].text );
+ }
+}
+</SCRIPT>
+</HEAD>
+
+<!-- BODY "onLoad='document.editForm.visiblesearchstring.focus()'" -->
+
+<CENTER><TABLE BORDER="2" CELLPADDING="10" WIDTH="100%">
+<TR><TD ALIGN="center" WIDTH="100%">
+<FONT SIZE="+2"><B>Manage Users</B></FONT>
+</TD></TR></TABLE></CENTER>
+
+<!-- DS_LAST_OP_INFO "prefix=<P><FONT SIZE=%22%2B1%22>The user " "suffix=</FONT><HR>" -->
+
+<FORM METHOD="POST" ACTION="dosearch" NAME="editForm"
+ onSubmit="return doEdit()">
+<INPUT TYPE="hidden" NAME="mode" value="smart">
+<INPUT TYPE="hidden" NAME="type" value="People">
+<INPUT TYPE="hidden" NAME="editable" value="true">
+<INPUT TYPE="hidden" NAME="link2edit" value="true">
+<INPUT TYPE="hidden" NAME="goback" value="Return To Manage Users Screen">
+<INPUT TYPE="hidden" NAME="base" VALUE="">
+<INPUT TYPE="hidden" NAME="listtemplate" VALUE="">
+<INPUT TYPE="hidden" NAME="searchstring" VALUE="">
+<B>Find user:</B><BR>
+<INPUT TYPE="text" NAME="visiblesearchstring" SIZE=25 VALUE="">
+<INPUT TYPE="submit" VALUE=" Find ">
+</FORM>
+
+<FORM METHOD="POST" ACTION="dosearch" NAME="listForm"
+ onSubmit="return doList()">
+<INPUT TYPE="hidden" NAME="mode" VALUE="pattern">
+<INPUT TYPE="hidden" NAME="type" VALUE="People">
+<INPUT TYPE="hidden" NAME="filterprefix" VALUE="(&(objectclass=person)">
+<INPUT TYPE="hidden" NAME="filtersuffix" VALUE=")">
+<INPUT TYPE="hidden" NAME="filterpattern" VALUE="">
+<INPUT TYPE="hidden" NAME="searchdesc" VALUE="">
+<INPUT TYPE="hidden" NAME="listifone" VALUE="true">
+<INPUT TYPE="hidden" NAME="link2edit" VALUE="true">
+<INPUT TYPE="hidden" NAME="goback" VALUE="Return To Manage Users Screen">
+<INPUT TYPE="hidden" NAME="base" VALUE="">
+
+<B>Find all users whose:</B>
+<BR>
+
+<NOBR>
+<SELECT name="attr">
+<OPTION VALUE="cn">full name
+<OPTION VALUE="sn">last name
+<OPTION VALUE="uid">user id
+<OPTION VALUE="telephonenumber">phone number
+<OPTION VALUE="mail">email address
+</SELECT>
+
+<SELECT name="patternSelect">
+<OPTION VALUE="(%a=*%v*)">contains
+<OPTION VALUE="(%a=%v)">is
+<OPTION VALUE="(!(%a=%v))">isn't
+<OPTION VALUE="(%a~=%v)">sounds like
+<OPTION VALUE="(%a=%v*)">starts with
+<OPTION VALUE="(%a=*%v)">ends with
+</SELECT>
+<INPUT TYPE="text" NAME="searchstring" VALUE="" SIZE="17">
+<INPUT TYPE="submit" VALUE=" Find "></TD>
+</NOBR>
+
+<SPACER TYPE=vertical SIZE=20>
+
+<TABLE BORDER=0>
+<!-- DS_LOCATIONPOPUP "name=encodedbase" "prefix=<TR><TD><B>Look within:</B></TD><TD>" "suffix="</TD></TR>" -->
+</TD></TR>
+<TR><TD>
+<B>Format:</B></TD><TD>
+<SELECT name="listtemplate">
+<OPTION VALUE="People">On-Screen
+<OPTION VALUE="People-report">Printer
+</SELECT>
+</TD></TR></TABLE>
+
+<SPACER TYPE=vertical SIZE=5>
+<TABLE BORDER="2" WIDTH="100%">
+<TR>
+<TD WIDTH="50%" ALIGN="center"><INPUT TYPE="reset" VALUE=" Reset "></TD>
+<TD WIDTH="50%" ALIGN="center">
+<!-- HELPBUTTON "DSLSUSERS" -->
+</TD></TR></TABLE>
+</FORM>
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/edit-passwd.html b/ldap/clients/dsgw/admhtml/edit-passwd.html
new file mode 100644
index 00000000..f65d3814
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/edit-passwd.html
@@ -0,0 +1,103 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML><HEAD>
+<!-- change a directory entry's password -->
+
+<!-- DS_ENTRYBEGIN -->
+<!-- DS_EMIT_BASE_HREF -->
+<TITLE>
+<!-- IF "BoundAsThisEntry" -->
+Set
+<!-- ELSE -->
+Change
+<!-- ENDIF -->
+Password -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE>
+</HEAD>
+
+<!-- BODY -->
+<!-- DS_LAST_OP_INFO "prefix=<FONT SIZE=%22%2B1%22>" "suffix=</FONT><HR>" -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+
+function
+disableUser()
+{
+ if ( confirm( "Password-based access will be disabled by setting this " +
+ "user's password to an invalid value. Proceed?" )) {
+ document.modifyEntryForm.lockpasswd.value = 'true';
+ submitModify( 'modify', null );
+ }
+}
+
+// End hiding -->
+</SCRIPT>
+
+<FONT SIZE="+2">
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT>
+
+<!-- DS_VIEW_SWITCHER -->
+
+<P>
+<TABLE>
+
+<!-- IF "BoundAsThisEntry" -->
+<TR>
+<TD ALIGN="right" NOWRAP>
+<B>Current password:</B>
+</TD><TD>
+<!-- DS_OLDPASSWORD -->
+</TD></TR>
+<!-- ENDIF //BoundAsThisEntry -->
+
+<TR>
+<TD ALIGN="right" NOWRAP>
+<B>New password:</B>
+</TD><TD>
+<!-- DS_NEWPASSWORD -->
+</TD></TR>
+
+<TR>
+<TD ALIGN="right" NOWRAP>
+<B>New password (again):</B>
+</TD><TD>
+<!-- DS_CONFIRM_NEWPASSWORD -->
+</TD></TR>
+</TABLE>
+
+<P>
+
+<TABLE BORDER=2 WIDTH="100%">
+<TR>
+<TD ALIGN="center" WIDTH="33%">
+<!-- IF "BoundAsThisEntry" -->
+<!-- DS_SAVEBUTTON "label=Change Password" -->
+<!-- ELSE -->
+<!-- DS_SAVEBUTTON "label=Set Password" -->
+<!-- ENDIF -->
+<TD ALIGN="center" WIDTH="34%">
+<INPUT TYPE="button" VALUE="Disable Password" onClick="disableUser()" -->
+<TD ALIGN="center" WIDTH="33%">
+<!-- DS_HELPBUTTON "topic=MODIFYPASSWD" -->
+</TABLE>
+
+
+<!-- this next hidden field is used by the "Disable Password" feature -->
+<INPUT TYPE="hidden" NAME="lockpasswd" VALUE="false">
+
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<INPUT TYPE="hidden" NAME="completion_javascript" VALUE="document.location.href=\'edit/\' + dsmodify_dn + \'?passwd&info=\' + escape(dsmodify_info)">
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/index.lst b/ldap/clients/dsgw/admhtml/index.lst
new file mode 100644
index 00000000..aea03131
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/index.lst
@@ -0,0 +1,87 @@
+;-------------------------------------------------------------------------
+; PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+; license terms. Copyright © 2001 Sun Microsystems, Inc.
+; Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+; All rights reserved.
+;-------------------------------------------------------------------------
+; Netscape admin index page master list
+;
+; Lines beginning with a ';' are comments
+; Lines beginning with '--' are dividers:
+; '--Category:[ID,NAME]' is the title of the category of options,
+; with short identifier ID and text NAME
+; '--TabIcon:[ICON]' is the name of the icon that goes on top
+; (assumes a suffix of '_on.gif' for on icon,
+; '_off.gif' for off)
+; (ex: for "users", would have URL "users" which points
+; to "users_on.gif" and "users_off.gif")
+; '--Icon:[URL]' is the icon to associate with those options
+; '--Option:[URL,TXT]' is the URL that the option should point to,
+; and the text that should be used to describe
+; it
+;
+; NOTE: Do NOT let a line have unterminated quotes, double slash
+; characters, pound signs, or slash star sequences. This file
+; is sent through the C preprocessor and that can screw it up.
+
+--Category:pref,System Settings
+--TabIcon:pref
+--Icon:prefer.gif
+--Option:stopadm,Shut Down
+--Option:confadm,Network Settings
+--Option:confopt,Logging Options
+#if defined(XP_UNIX)
+--Option:cronctrl,Cron Control
+--Option:snmpcomm,SNMP Master Agent Community
+--Option:snmptrpc,SNMP Master Agent Trap
+#endif
+--Option:
+--Option:dsconfig,Configure Directory Service
+
+--Category:acss,Access Control
+--TabIcon:acss
+--Icon:access.gif
+--Option:confacc,Admin password
+--Option:distadm,Distributed Admin
+--Option:distacl,Add Permission
+
+--Category:secy,Encryption
+--TabIcon:secy
+--Icon:encrypt.gif
+--Option:sec-pref,Security Preferences
+--Option:sec-gkey,Generate Key
+--Option:sec-pswd,Change Key Password
+--Option:sec-gcrt,Request Certificate
+--Option:sec-icrt,Install Certificate
+--Option:sec-mcrt,Manage Certificates
+
+--Category:clst,Cluster Management
+--TabIcon:clst
+--Icon:cluster.gif
+--Option:clctrl,Cluster Control
+--Option:cladd,Add Server
+--Option:clmod,Modify Server
+--Option:clrem,Remove Server
+
+--Category:user,Users and Groups
+--TabIcon:user
+--Icon:users.gif
+--Option:genscreen?dscruser,Create User
+--Option:genscreen?dseduser,Edit User
+--Option:genscreen?dsrmuser,Remove User
+--Option:genscreen?dslsusers,List Users
+--Option:
+--Option:genscreen?dscrgroup,Create Group
+--Option:genscreen?dsedgroup,Edit Group
+--Option:genscreen?dsrmgroup,Remove Group
+--Option:genscreen?dslsgroups,List Groups
+
+--Option:
+--Option:genscreen?dscrou,Create Organizational Unit (OU)
+--Option:genscreen?dsedou,Edit OU
+--Option:genscreen?dsrmou,Remove OU
+--Option:genscreen?dslsous,List OUs
+
+--Option:
+--Option:dsimpldif,Import
+--Option:dsexpldif,Export
diff --git a/ldap/clients/dsgw/admhtml/list-Anything.html b/ldap/clients/dsgw/admhtml/list-Anything.html
new file mode 100644
index 00000000..a4d47431
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/list-Anything.html
@@ -0,0 +1,42 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Search for Anything" -->
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT></CENTER>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR>
+<TH NOWRAP>Name <TH NOWRAP>Phone Number
+<TH NOWRAP>E-Mail Address <TH NOWRAP>Description
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=description" -->
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<CENTER><FONT SIZE=+1>
+Please try a different search.
+</FONT></CENTER>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/list-Auth.html b/ldap/clients/dsgw/admhtml/list-Auth.html
new file mode 100644
index 00000000..cee812d3
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/list-Auth.html
@@ -0,0 +1,72 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Authenticate as..." -->
+
+<!--
+ The "authForm" form and the authSubmit() JavaScript function are
+ used to avoid the need for a separate form for each entry listed.
+ Each entry is tied to this single form through the magic of an
+ anchor that contains href=javascript:authSubmit().
+-->
+
+<FORM NAME="authForm" METHOD=POST ACTION="/clients/dsgw/bin/auth">
+<INPUT TYPE="hidden" NAME="escapedbinddn">
+<INPUT TYPE="hidden" NAME="authdesturl"
+<!-- DS_POSTEDVALUE "name=authdesturl" "within=VALUE=%22--value--%22" -->
+>
+</FORM>
+
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+function authSubmit(encodeddn)
+{
+ document.authForm.escapedbinddn.value = encodeddn;
+ document.authForm.submit();
+}
+// End hiding -->
+</SCRIPT>
+
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC "VERBOSE" -->
+<P>
+<!-- IF "FoundEntries" -->
+Please click on the name of the entry you would like to use for authentication.
+</FONT>
+<P>
+
+<TABLE BORDER=1 CELLPADDING=4>
+<TR>
+<TH NOWRAP>Authenticate As <TH NOWRAP>Title
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "href=javascript:authSubmit('--value--'); onMouseOver=%22window.status='Click to authenticate'; return true;%22" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=title" -->
+
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+<!-- ELSE "FoundEntries" -->
+Please go back and try again.
+<!-- ENDIF "FoundEntries" -->
+</CENTER>
+
+<FORM>
+<TABLE BORDER=2 WIDTH=100%%>
+<TR>
+<TD ALIGN=center width=50%%>
+<INPUT TYPE="button" VALUE="Go Back" onClick="history.back();">
+<TD ALIGN=center WIDTH=50%%>
+<!-- DS_HELPBUTTON "topic=AUTHMULTMATCH" -->
+</TABLE>
+</FORM>
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/list-Groups-report.html b/ldap/clients/dsgw/admhtml/list-Groups-report.html
new file mode 100644
index 00000000..89a4bfc6
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/list-Groups-report.html
@@ -0,0 +1,56 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "List of Groups" -->
+
+<!-- IF "PostedFormValue" "goback" -->
+<FORM>
+<INPUT TYPE="button"
+<!-- DS_POSTEDVALUE "name=goback">
+onClick="history.back()">
+</FORM>
+<!-- ENDIF // PostedFormValue goback -->
+<!-- DS_SEARCHDESC -->
+<P>
+
+<!-- IF "FoundEntries" -->
+<P>
+<TABLE BORDER=1 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
+<TR>
+<TH ALIGN="left" NOWRAP><FONT SIZE="-3"><B>Group Name</B></FONT>
+<TH ALIGN="left" NOWRAP><FONT SIZE="-3"><B>Description</B></FONT>
+</TR>
+
+<!-- DS_SORTENTRIES "attr=cn" -->
+
+<!-- Make sure attrs in lists are read-only. If they aren't, they're rendered
+ as INPUT fields, but since we're not in a form here, they don't display
+ at all.
+-->
+
+<!-- DS_ENTRYBEGIN -->
+
+<TR>
+<TD NOWRAP><FONT SIZE="-3">
+<!-- DS_ATTRIBUTE "attr=cn" "options=readonly" -->
+</FONT></TD>
+<TD NOWRAP><FONT SIZE="-3">
+<!-- DS_ATTRIBUTE "attr=description" "options=readonly" -->
+</FONT>
+</TR>
+
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<FONT SIZE=+1>
+Please try a different search.
+</FONT>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/list-Groups-rm.html b/ldap/clients/dsgw/admhtml/list-Groups-rm.html
new file mode 100644
index 00000000..54973ad9
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/list-Groups-rm.html
@@ -0,0 +1,80 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Search for People" -->
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+function deleteEntry(encodeddn)
+{
+ if ( confirm( 'Are you sure you want to remove this group?' )) {
+ document.deleteForm.dn.value = encodeddn;
+ document.deleteForm.submit();
+ }
+}
+// End hiding -->
+</SCRIPT>
+
+<!-- IF "PostedFormValue" "goback" -->
+<FORM>
+<INPUT TYPE="button"
+<!-- DS_POSTEDVALUE "name=goback">
+onClick="history.back()">
+</FORM>
+<!-- ENDIF // PostedFormValue goback -->
+
+<FORM NAME="deleteForm" method="POST" ACTION="domodify">
+<INPUT TYPE="hidden" NAME="changetype" VALUE="delete">
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<INPUT TYPE="hidden" NAME="dn" VALUE="">
+<INPUT TYPE="hidden" NAME="completion_javascript" VALUE="document.location.href=\'genscreen?dsrmgroup&info=\' + escape(dsmodify_info);">
+</FORM>
+
+<FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT>
+<P>
+
+<!-- IF "FoundEntries" -->
+<FONT SIZE=+1>
+Click on a group to remove it.
+</FONT>
+<P>
+<FORM>
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR>
+<TH NOWRAP>Group Name
+<TH NOWRAP>Description
+</TR>
+
+<!-- DS_SORTENTRIES -->
+
+<!-- Make sure attrs in lists are read-only. If they aren't, they're rendered
+ as INPUT fields, but since we're not in a form here, they don't display
+ at all.
+-->
+
+<!-- DS_ENTRYBEGIN -->
+
+<TR>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "href=javascript:deleteEntry('--value--'); onMouseOver=%22window.status='Click here to remove this group'; return true;%22" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=description" "options=readonly"-->
+</TR>
+
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+</FORM>
+
+<!-- ELSE -->
+<P>
+<FONT SIZE=+1>
+Please try a different search.
+</FONT>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/list-Groups.html b/ldap/clients/dsgw/admhtml/list-Groups.html
new file mode 100644
index 00000000..50a86e0f
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/list-Groups.html
@@ -0,0 +1,62 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Search for Groups" -->
+
+<!-- IF "PostedFormValue" "goback" -->
+<FORM>
+<INPUT TYPE="button"
+<!-- DS_POSTEDVALUE "name=goback">
+onClick="history.back()">
+</FORM>
+<!-- ENDIF // PostedFormValue goback -->
+
+<FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR>
+<TH NOWRAP>Group Name
+<TH NOWRAP>Description
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=description" "options=readonly"-->
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<FONT SIZE=+1>
+Please try a different search.
+</FONT>
+<!-- ENDIF -->
+
+<!-- "Faceless" form which holds (initial) values for domodify -->
+<FORM NAME="modifyForm" ACTION="/admin-serv/bin/domodify" METHOD="POST">
+
+<INPUT TYPE="hidden" NAME="changetype" VALUE="modify">
+<INPUT TYPE="hidden" NAME="dn" VALUE="
+<!-- DS_FA_GROUPDN -->
+">
+<INPUT TYPE="hidden" NAME="add_
+<!-- DS_FA_ATTRNAME -->
+" VALUE="">
+
+
+</FORM>
+
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/list-Org-Units.html b/ldap/clients/dsgw/admhtml/list-Org-Units.html
new file mode 100644
index 00000000..48cf1b4f
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/list-Org-Units.html
@@ -0,0 +1,62 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Search for Organizational Units" -->
+
+<!-- IF "PostedFormValue" "goback" -->
+<FORM>
+<INPUT TYPE="button"
+<!-- DS_POSTEDVALUE "name=goback">
+onClick="history.back()">
+</FORM>
+<!-- ENDIF // PostedFormValue goback -->
+
+<FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR>
+<TH NOWRAP>Unit Name
+<TH NOWRAP>Description
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=description" "options=readonly"-->
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<FONT SIZE=+1>
+Please try a different search.
+</FONT>
+<!-- ENDIF -->
+
+<!-- "Faceless" form which holds (initial) values for domodify -->
+<FORM NAME="modifyForm" ACTION="/admin-serv/bin/domodify" METHOD="POST">
+
+<INPUT TYPE="hidden" NAME="changetype" VALUE="modify">
+<INPUT TYPE="hidden" NAME="dn" VALUE="
+<!-- DS_FA_GROUPDN -->
+">
+<INPUT TYPE="hidden" NAME="add_
+<!-- DS_FA_ATTRNAME -->
+" VALUE="">
+
+
+</FORM>
+
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/list-OrgUnits-report.html b/ldap/clients/dsgw/admhtml/list-OrgUnits-report.html
new file mode 100644
index 00000000..0d956628
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/list-OrgUnits-report.html
@@ -0,0 +1,56 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "List of Organizational Units" -->
+
+<!-- IF "PostedFormValue" "goback" -->
+<FORM>
+<INPUT TYPE="button"
+<!-- DS_POSTEDVALUE "name=goback">
+onClick="history.back()">
+</FORM>
+<!-- ENDIF // PostedFormValue goback -->
+<!-- DS_SEARCHDESC -->
+<P>
+
+<!-- IF "FoundEntries" -->
+<P>
+<TABLE BORDER=1 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
+<TR>
+<TH ALIGN="left" NOWRAP><FONT SIZE="-3"><B>Unit Name</B></FONT>
+<TH ALIGN="left" NOWRAP><FONT SIZE="-3"><B>Description</B></FONT>
+</TR>
+
+<!-- DS_SORTENTRIES "attr=cn" -->
+
+<!-- Make sure attrs in lists are read-only. If they aren't, they're rendered
+ as INPUT fields, but since we're not in a form here, they don't display
+ at all.
+-->
+
+<!-- DS_ENTRYBEGIN -->
+
+<TR>
+<TD NOWRAP><FONT SIZE="-3">
+<!-- DS_ATTRIBUTE "attr=ou" "options=readonly" -->
+</FONT></TD>
+<TD NOWRAP><FONT SIZE="-3">
+<!-- DS_ATTRIBUTE "attr=description" "options=readonly" -->
+</FONT>
+</TR>
+
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<FONT SIZE=+1>
+Please try a different search.
+</FONT>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/list-OrgUnits.html b/ldap/clients/dsgw/admhtml/list-OrgUnits.html
new file mode 100644
index 00000000..48cf1b4f
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/list-OrgUnits.html
@@ -0,0 +1,62 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Search for Organizational Units" -->
+
+<!-- IF "PostedFormValue" "goback" -->
+<FORM>
+<INPUT TYPE="button"
+<!-- DS_POSTEDVALUE "name=goback">
+onClick="history.back()">
+</FORM>
+<!-- ENDIF // PostedFormValue goback -->
+
+<FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR>
+<TH NOWRAP>Unit Name
+<TH NOWRAP>Description
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=description" "options=readonly"-->
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<FONT SIZE=+1>
+Please try a different search.
+</FONT>
+<!-- ENDIF -->
+
+<!-- "Faceless" form which holds (initial) values for domodify -->
+<FORM NAME="modifyForm" ACTION="/admin-serv/bin/domodify" METHOD="POST">
+
+<INPUT TYPE="hidden" NAME="changetype" VALUE="modify">
+<INPUT TYPE="hidden" NAME="dn" VALUE="
+<!-- DS_FA_GROUPDN -->
+">
+<INPUT TYPE="hidden" NAME="add_
+<!-- DS_FA_ATTRNAME -->
+" VALUE="">
+
+
+</FORM>
+
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/list-Organizations.html b/ldap/clients/dsgw/admhtml/list-Organizations.html
new file mode 100644
index 00000000..67b028f7
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/list-Organizations.html
@@ -0,0 +1,38 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Search for Organizations" -->
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT></CENTER>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR><TH>Organization <TH>Description <TH>Phone Number
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->
+<TD>
+<!-- DS_ATTRIBUTE "attr=description" -->
+<TD>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" -->
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<CENTER><FONT SIZE=+1>
+Please try a different search.
+</FONT></CENTER>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/list-Ous-rm.html b/ldap/clients/dsgw/admhtml/list-Ous-rm.html
new file mode 100644
index 00000000..1f4e1677
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/list-Ous-rm.html
@@ -0,0 +1,80 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Search for People" -->
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+function deleteEntry(encodeddn)
+{
+ if ( confirm( 'Are you sure you want to remove this organizational unit?' )) {
+ document.deleteForm.dn.value = encodeddn;
+ document.deleteForm.submit();
+ }
+}
+// End hiding -->
+</SCRIPT>
+
+<!-- IF "PostedFormValue" "goback" -->
+<FORM>
+<INPUT TYPE="button"
+<!-- DS_POSTEDVALUE "name=goback">
+onClick="history.back()">
+</FORM>
+<!-- ENDIF // PostedFormValue goback -->
+
+<FORM NAME="deleteForm" method="POST" ACTION="domodify">
+<INPUT TYPE="hidden" NAME="changetype" VALUE="delete">
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<INPUT TYPE="hidden" NAME="dn" VALUE="">
+<INPUT TYPE="hidden" NAME="completion_javascript" VALUE="document.location.href=\'genscreen?dsrmou&info=\' + escape(dsmodify_info);">
+</FORM>
+
+<FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT>
+<P>
+
+<!-- IF "FoundEntries" -->
+<FONT SIZE=+1>
+Click on an organizational unit to remove it.
+</FONT>
+<P>
+<FORM>
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR>
+<TH NOWRAP>Unit Name
+<TH NOWRAP>Description
+</TR>
+
+<!-- DS_SORTENTRIES -->
+
+<!-- Make sure attrs in lists are read-only. If they aren't, they're rendered
+ as INPUT fields, but since we're not in a form here, they don't display
+ at all.
+-->
+
+<!-- DS_ENTRYBEGIN -->
+
+<TR>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "href=javascript:deleteEntry('--value--'); onMouseOver=%22window.status='Click here to remove this org unit'; return true;%22" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=description" "options=readonly"-->
+</TR>
+
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+</FORM>
+
+<!-- ELSE -->
+<P>
+<FONT SIZE=+1>
+Please try a different search.
+</FONT>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/list-People-report.html b/ldap/clients/dsgw/admhtml/list-People-report.html
new file mode 100644
index 00000000..8eb33a3e
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/list-People-report.html
@@ -0,0 +1,60 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "List of People" -->
+
+<!-- IF "PostedFormValue" "goback" -->
+<FORM>
+<INPUT TYPE="button"
+<!-- DS_POSTEDVALUE "name=goback">
+onClick="history.back()">
+</FORM>
+<!-- ENDIF // PostedFormValue goback -->
+<!-- DS_SEARCHDESC -->
+<P>
+
+<!-- IF "FoundEntries" -->
+<P>
+<TABLE BORDER=1 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
+<TR>
+<TH ALIGN="left" NOWRAP><FONT SIZE="-3"><B>Name</B></FONT>
+<TH ALIGN="left" NOWRAP><FONT SIZE="-3"><B>User ID</B></FONT>
+<TH ALIGN="left" NOWRAP><FONT SIZE="-3"><B>Title</B></FONT>
+</TR>
+
+<!-- DS_SORTENTRIES "attr=sn" -->
+
+<!-- Make sure attrs in lists are read-only. If they aren't, they're rendered
+ as INPUT fields, but since we're not in a form here, they don't display
+ at all.
+-->
+
+<!-- DS_ENTRYBEGIN -->
+
+<TR>
+<TD NOWRAP><FONT SIZE="-3">
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink">
+</FONT>
+<TD NOWRAP><FONT SIZE="-3">
+<!-- DS_ATTRIBUTE "attr=uid" "options=readonly" -->
+<TD NOWRAP><FONT SIZE="-3">
+</FONT>
+<!-- DS_ATTRIBUTE "attr=title" "options=readonly" -->
+</FONT>
+</TR>
+
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<FONT SIZE=+1>
+Please try a different search.
+</FONT>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/list-People-rm.html b/ldap/clients/dsgw/admhtml/list-People-rm.html
new file mode 100644
index 00000000..bdacf2f1
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/list-People-rm.html
@@ -0,0 +1,81 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Search for People" -->
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+function deleteEntry(encodeddn)
+{
+ if ( confirm( 'Are you sure you want to remove this user?' )) {
+ document.deleteForm.dn.value = encodeddn;
+ document.deleteForm.submit();
+ }
+}
+// End hiding -->
+</SCRIPT>
+
+<!-- IF "PostedFormValue" "goback" -->
+<FORM>
+<INPUT TYPE="button"
+<!-- DS_POSTEDVALUE "name=goback">
+onClick="history.back()">
+</FORM>
+<!-- ENDIF // PostedFormValue goback -->
+
+<FORM NAME="deleteForm" method="POST" ACTION="domodify">
+<INPUT TYPE="hidden" NAME="changetype" VALUE="delete">
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<INPUT TYPE="hidden" NAME="dn" VALUE="">
+<INPUT TYPE="hidden" NAME="completion_javascript" VALUE="document.location.href=\'genscreen?dsrmuser&info=\' + escape(dsmodify_info);">
+</FORM>
+
+<FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT>
+<P>
+
+<!-- IF "FoundEntries" -->
+<FONT SIZE=+1>
+Click on a user's name to remove them.
+</FONT>
+<P>
+<FORM>
+<TABLE BORDER=1 CELLPADDING=1 CELLSPACING=0 WIDTH=100%>
+<TR>
+<TH NOWRAP>Name<TH NOWRAP>User ID<TH NOWRAP>Title
+</TR>
+
+<!-- DS_SORTENTRIES "attr=sn" -->
+
+<!-- Make sure attrs in lists are read-only. If they aren't, they're rendered
+ as INPUT fields, but since we're not in a form here, they don't display
+ at all.
+-->
+
+<!-- DS_ENTRYBEGIN -->
+
+<TR>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "href=javascript:deleteEntry('--value--'); onMouseOver=%22window.status='Click here to remove this user'; return true;%22" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=uid" "options=readonly" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=title" "options=readonly" -->
+</TR>
+
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+</FORM>
+
+<!-- ELSE -->
+<P>
+<FONT SIZE=+1>
+Please try a different search.
+</FONT>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/list-People.html b/ldap/clients/dsgw/admhtml/list-People.html
new file mode 100644
index 00000000..0e023dd9
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/list-People.html
@@ -0,0 +1,61 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Search for People" -->
+
+<!-- IF "PostedFormValue" "goback" -->
+<FORM>
+<INPUT TYPE="button"
+<!-- DS_POSTEDVALUE "name=goback">
+onClick="history.back()">
+</FORM>
+<!-- ENDIF // PostedFormValue goback -->
+
+<FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT>
+<P>
+
+<!-- IF "FoundEntries" -->
+<FONT SIZE=+1>
+Click on a user's name to edit their entry.
+</FONT>
+<P>
+<TABLE BORDER=1 CELLPADDING=1 CELLSPACING=0 WIDTH=100%>
+<TR>
+<TH NOWRAP>Name<TH NOWRAP>User ID<TH NOWRAP>Title
+</TR>
+
+<!-- DS_SORTENTRIES "attr=sn" -->
+
+<!-- Make sure attrs in lists are read-only. If they aren't, they're rendered
+ as INPUT fields, but since we're not in a form here, they don't display
+ at all.
+-->
+
+<!-- DS_ENTRYBEGIN -->
+
+<TR>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "hrefextra=onMouseOver=%22%0Awindow.status='Click here to edit this entry'; return true%22" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=uid" "options=readonly" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=title" "options=readonly" -->
+</TR>
+
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<FONT SIZE=+1>
+Please try a different search.
+</FONT>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/list-fa-Groups.html b/ldap/clients/dsgw/admhtml/list-fa-Groups.html
new file mode 100644
index 00000000..06946994
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/list-fa-Groups.html
@@ -0,0 +1,24 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Search for People" -->
+<!-- IF "FoundEntries" -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+<FORM>
+<!-- DS_ENTRYBEGIN -->
+
+<!-- DS_ENTRYEND -->
+<!-- DS_END_ENTRYFORM -->
+</FORM>
+
+<!-- ELSE -->
+<SCRIPT LANGUAGE="JavaScript">
+alert('No entries were found.');
+</SCRIPT>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/list-fa-People.html b/ldap/clients/dsgw/admhtml/list-fa-People.html
new file mode 100644
index 00000000..06946994
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/list-fa-People.html
@@ -0,0 +1,24 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Search for People" -->
+<!-- IF "FoundEntries" -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+<FORM>
+<!-- DS_ENTRYBEGIN -->
+
+<!-- DS_ENTRYEND -->
+<!-- DS_END_ENTRYFORM -->
+</FORM>
+
+<!-- ELSE -->
+<SCRIPT LANGUAGE="JavaScript">
+alert('No entries were found.');
+</SCRIPT>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/list-fa_people.html b/ldap/clients/dsgw/admhtml/list-fa_people.html
new file mode 100644
index 00000000..06946994
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/list-fa_people.html
@@ -0,0 +1,24 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Search for People" -->
+<!-- IF "FoundEntries" -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+<FORM>
+<!-- DS_ENTRYBEGIN -->
+
+<!-- DS_ENTRYEND -->
+<!-- DS_END_ENTRYFORM -->
+</FORM>
+
+<!-- ELSE -->
+<SCRIPT LANGUAGE="JavaScript">
+alert('No entries were found.');
+</SCRIPT>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/admhtml/list-urlsearch.html b/ldap/clients/dsgw/admhtml/list-urlsearch.html
new file mode 100644
index 00000000..964e6291
--- /dev/null
+++ b/ldap/clients/dsgw/admhtml/list-urlsearch.html
@@ -0,0 +1,39 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "URL-based Search" -->
+<CENTER><FONT SIZE=+1>
+Found
+<!-- DS_SEARCHDESC -->
+</FONT></CENTER>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR><TH>Name <TH>Phone Number <TH>E-Mail Address
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->
+<TD>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" -->
+<TD>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" -->
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<CENTER><FONT SIZE=+1>
+Please try a different search.
+</FONT></CENTER>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/auth.c b/ldap/clients/dsgw/auth.c
new file mode 100644
index 00000000..88b2ba82
--- /dev/null
+++ b/ldap/clients/dsgw/auth.c
@@ -0,0 +1,120 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+/*
+ * auth.c -- CGI authentication form generator -- HTTP gateway
+ *
+ * Copyright (c) 1996 Netscape Communications Corp.
+ * All rights reserved.
+ */
+
+#include "dsgw.h"
+#include "dbtdsgw.h"
+
+static void post_request();
+static void get_request(char *binddn);
+
+int main(
+ int argc,
+ char **argv
+#ifdef DSGW_DEBUG
+ ,char *env[]
+#endif
+) {
+ int reqmethod;
+ char *binddn = NULL;
+ char *qs = NULL;
+
+ if (( qs = getenv( "QUERY_STRING" )) != NULL && *qs != '\0' ) {
+ /* parse the query string: */
+ auto char *p, *iter = NULL;
+ qs = dsgw_ch_strdup( qs );
+ for ( p = ldap_utf8strtok_r( qs, "&", &iter ); p != NULL;
+ p = ldap_utf8strtok_r( NULL, "&", &iter )) {
+
+ /*Get the context.*/
+ if ( !strncasecmp( p, "context=", 8 )) {
+ context = dsgw_ch_strdup( p + 8 );
+ dsgw_form_unescape( context );
+ continue;
+ }
+
+ /*Get the dn*/
+ if ( !strncasecmp( p, "dn=", 3 )) {
+ binddn = dsgw_ch_strdup( p + 3 );
+ dsgw_form_unescape( binddn );
+ continue;
+ }
+ }
+ free( qs ); qs = NULL;
+ }
+
+ reqmethod = dsgw_init( argc, argv, DSGW_METHOD_POST | DSGW_METHOD_GET );
+
+#ifdef DSGW_DEBUG
+ dsgw_logstringarray( "env", env );
+#endif
+
+ if ( reqmethod == DSGW_METHOD_POST ) {
+ post_request();
+ } else {
+ get_request(binddn);
+ }
+
+ exit( 0 );
+}
+
+static void
+get_request(char *binddn)
+{
+ dsgw_send_header();
+
+ if ( binddn != NULL ) {
+ if ( !strcmp( binddn, MGRDNSTR )) {
+ if ( gc->gc_rootdn == NULL ) {
+ dsgw_error( DSGW_ERR_NO_MGRDN,
+ XP_GetClientStr (DBT_noDirMgrIsDefined_),
+ DSGW_ERROPT_EXIT, 0, NULL );
+ }
+ binddn = dsgw_ch_strdup( gc->gc_rootdn );
+ } else if ( *binddn == '\0' ) {
+ binddn = NULL;
+ } else {
+ binddn = dsgw_ch_strdup( binddn );
+ dsgw_form_unescape( binddn );
+ }
+ }
+ dsgw_emit_auth_form( binddn );
+ if ( binddn != NULL ) {
+ free( binddn );
+ }
+}
+
+
+
+static void
+post_request()
+{
+ char *binddn = NULL;
+ char *dorootbind = NULL;
+
+ dsgw_send_header();
+ /*
+ * If the "authasrootdn" CGI variable is present and has the value
+ * "true" then the user clicked on the "authenticate as directory
+ * manager" button. In that case, try to bind as the root dn given
+ * in the dsgw config file.
+ */
+ dorootbind = dsgw_get_cgi_var( "authasrootdn", DSGW_CGIVAR_OPTIONAL );
+ if ( dorootbind != NULL && !strcasecmp( dorootbind, "true" )) {
+ binddn = dsgw_ch_strdup( gc->gc_rootdn );
+ } else {
+ binddn = dsgw_get_escaped_cgi_var( "escapedbinddn", "binddn",
+ DSGW_CGIVAR_OPTIONAL );
+ }
+
+ dsgw_emit_auth_form( binddn );
+}
diff --git a/ldap/clients/dsgw/cgiutil.c b/ldap/clients/dsgw/cgiutil.c
new file mode 100644
index 00000000..be2ba3db
--- /dev/null
+++ b/ldap/clients/dsgw/cgiutil.c
@@ -0,0 +1,512 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+/*
+ * cgiutil.c -- CGI-related utility functions -- HTTP gateway
+ *
+ * Note: tihs code is derived from the extras/changepw.c code that ships
+ * with the FastTrack 2.0 server
+ *
+ * Copyright (c) 1996 Netscape Communications Corp.
+ * All rights reserved.
+ */
+
+#include "dsgw.h"
+#include "dbtdsgw.h"
+
+#include <prprf.h>
+#include <unicode/ucnv.h>
+#include <unicode/ustring.h>
+
+/* globals */
+static char **formvars = NULL;
+
+/* functions */
+static char **dsgw_string_to_vec(char *in);
+
+static void
+dsgw_vec_convert (char** vec)
+ /* Convert input from the charset named in it (if any) to UTF_8.
+ Either return s, or free(s) and return the converted string.
+ */
+{
+ static const char* prefix = "charset=";
+ const size_t prefix_len = strlen (prefix);
+ char** v;
+
+ if (vec) for (v = vec; *v; ++v) {
+ if (!strncmp (*v, prefix, prefix_len)) {
+ char* charset = *v + prefix_len;
+ UConverter* converter = NULL;
+ UErrorCode err = U_ZERO_ERROR;
+ if ( ! is_UTF_8 (charset) && (converter = ucnv_open(charset, &err)) &&
+ (err == U_ZERO_ERROR) ) {
+ for (v = vec; *v; ++v) {
+ char* s = strchr (*v, '=');
+ if (s != NULL) {
+ char *t = NULL;
+ const size_t nlen = (++s) - *v;
+ const size_t slen = strlen (s);
+ size_t tlen = 0;
+ size_t reallen = 0;
+ int result;
+
+ if (ucnv_getMaxCharSize(converter) == 1) {
+ tlen = slen + 2; /* best case - ascii or other 7/8 bit */
+ } else { /* assume worst case utf8 - each char is 3 bytes */
+ tlen = (slen * 3) + 2;
+ }
+ do {
+ char *tptr;
+ size_t realSlen = 0;
+ err = U_ZERO_ERROR;
+
+ if (t) {
+ t = dsgw_ch_realloc(t, nlen + tlen);
+ } else {
+ t = dsgw_ch_malloc(nlen + tlen);
+ }
+ tptr = t + nlen;
+
+ /* copy the converted characters into t after the '=', and
+ leave room for the trailing 0 */
+ result = dsgw_convert(DSGW_TO_UTF8, converter,
+ &tptr, (tlen - nlen - 1), &reallen,
+ s, slen, &realSlen, &err);
+ tlen += slen; /* if failed, make more room */
+ } while (result == 0);
+ if ((result == 1) && (err == U_ZERO_ERROR)) {
+ memcpy (t, *v, nlen);
+ t[nlen+reallen] = '\0';
+ free (*v);
+ *v = t;
+ } else {
+ free (t);
+ }
+ ucnv_reset (converter); /* back to initial shift state */
+ }
+ }
+ ucnv_close (converter);
+ }
+ if (U_FAILURE(err)) {
+ dsgw_error(DSGW_ERR_CHARSET_NOT_SUPPORTED, charset, 0, 0, 0);
+ }
+ break;
+ }
+ }
+}
+
+/* Read in the variables from stdin, unescape them, and then put them in
+ * the static vector.
+ *
+ * Return 0 if all goes well; DSGW error code otherwise
+ */
+int
+dsgw_post_begin(FILE *in)
+{
+ char *ct, *vars = NULL, *tmp = NULL;
+ int cl;
+
+ if (( ct = getenv( "CONTENT_TYPE" )) == NULL ||
+ strcasecmp( ct, "application/x-www-form-urlencoded" ) != 0 ||
+ ( tmp = getenv( "CONTENT_LENGTH" )) == NULL ) {
+ return( DSGW_ERR_BADFORMDATA );
+ }
+
+ cl = atoi(tmp);
+
+ vars = (char *)dsgw_ch_malloc(cl+1);
+
+ if ( fread(vars, 1, cl, in) != cl ) {
+ return( DSGW_ERR_BADFORMDATA );
+ }
+
+ vars[cl] = '\0';
+#ifdef DSGW_DEBUG
+ dsgw_log ("vars=\"%s\"\n", vars);
+#endif
+ formvars = dsgw_string_to_vec (vars);
+ free( vars );
+ dsgw_vec_convert (formvars);
+
+#ifdef DSGW_DEBUG
+ dsgw_logstringarray( "formvars", formvars );
+if (0) {
+ char** var = formvars;
+ if (var) {
+ printf ("Content-type: text/html;charset=UTF-8\n\n<HTML><BODY>\n");
+ for (; *var; ++var) {
+ printf ("%s<br>\n", *var);
+ }
+ printf ("</BODY></HTML>\n");
+ exit (1);
+ }
+}
+#endif
+
+ return( 0 );
+}
+
+
+/* Unescape the %xx variables as they're sent in. */
+void
+dsgw_form_unescape(char *str)
+{
+ register int x = 0, y = 0;
+ int l = strlen(str);
+ char digit;
+
+ while(x < l) {
+ if((str[x] == '%') && (x < (l - 2))) {
+ ++x;
+ digit = (str[x] >= 'A' ?
+ ((str[x] & 0xdf) - 'A')+10 : (str[x] - '0'));
+ digit *= 16;
+
+ ++x;
+ digit += (str[x] >= 'A' ?
+ ((str[x] & 0xdf) - 'A')+10 : (str[x] - '0'));
+
+ str[y] = digit;
+ }
+ else if(str[x] == '+') {
+ str[y] = ' ';
+ } else {
+ str[y] = str[x];
+ }
+ x++;
+ y++;
+ }
+ str[y] = '\0';
+}
+
+
+/* Return the value of a POSTed variable, or NULL if none was sent. */
+char *
+dsgw_get_cgi_var(char *varname, int required)
+{
+ register int x = 0;
+ int len = strlen(varname);
+ char *ans = NULL;
+
+ while(formvars != NULL && formvars[x]) {
+ /* We want to get rid of the =, so len, len+1 */
+ if((!strncmp(formvars[x], varname, len)) &&
+ (*(formvars[x]+len) == '=')) {
+ ans = dsgw_ch_strdup(formvars[x] + len + 1);
+ if(!strcmp(ans, "")) {
+ free(ans);
+ ans = NULL;
+ }
+ break;
+ } else
+ x++;
+ }
+
+ if ( required == DSGW_CGIVAR_REQUIRED && ans == NULL ) {
+ char errbuf[ 256 ];
+ PR_snprintf( errbuf, 256,
+ XP_GetClientStr(DBT_missingFormDataElement100s_), varname );
+ dsgw_error( DSGW_ERR_BADFORMDATA, errbuf, DSGW_ERROPT_EXIT, 0, NULL );
+ }
+
+ return ans;
+}
+
+
+/*
+ * Return integer equivalent of POSTed value. If no variable POSTed,
+ * return defval.
+ */
+int
+dsgw_get_int_var( char *varname, int required, int defval )
+{
+ char *val;
+ int rc;
+
+ if (( val = dsgw_get_cgi_var( varname, required )) == NULL ) {
+ rc = defval;
+ } else {
+ rc = atoi( val );
+ free( val );
+ }
+
+ return( rc );
+}
+
+
+/*
+ * Return non-zero if POSTed variable is "true" or "yes". If !required
+ * and no variable POSTed, return defval.
+ */
+int
+dsgw_get_boolean_var( char *varname, int required, int defval )
+{
+ char *val;
+ int rc;
+
+ if (( val = dsgw_get_cgi_var( varname, required )) == NULL ) {
+ rc = defval;
+ } else {
+ rc = ( strcasecmp( val, "true" ) == 0 ||
+ strcasecmp( val, "yes" ) == 0 );
+ free( val );
+ }
+
+ return( rc );
+}
+
+
+/*
+ * If a CGI variable named "varname_escaped" was POST'd, unescape it and
+ * return its value.
+ * Otherwise if "varname" is not NULL and a CGI variable called "varname"
+ * was POST'd, return its value.
+ * Otherwise return NULL.
+ */
+char *
+dsgw_get_escaped_cgi_var( char *varname_escaped, char *varname, int required )
+{
+ char *val;
+
+ if (( val = dsgw_get_cgi_var( varname_escaped,
+ ( varname == NULL ) ? required: DSGW_CGIVAR_OPTIONAL )) != NULL ) {
+ dsgw_form_unescape( val );
+ } else if ( varname != NULL ) {
+ val = dsgw_get_cgi_var( varname, required );
+ }
+
+ return( val );
+}
+
+
+/* Convert the input from stdin to a usable variable vector. */
+static char **
+dsgw_string_to_vec(char *in)
+{
+ char **ans;
+ int vars = 0;
+ register int x = 0;
+ char *tmp;
+
+ while(in[x])
+ if(in[x++]=='=')
+ vars++;
+
+ ans = (char **) dsgw_ch_malloc((sizeof(char *)) * (vars+1));
+
+ x=0;
+ /* strtok() is not MT safe, but it is okay to call here because it is used in monothreaded env */
+ tmp = strtok(in, "&");
+ ans[x]=dsgw_ch_strdup(tmp);
+ dsgw_form_unescape(ans[x++]);
+
+ while((tmp = strtok(NULL, "&"))) {
+ if ( strchr( tmp, '=' ) == NULL ) {
+ break;
+ }
+ ans[x] = dsgw_ch_strdup(tmp);
+ dsgw_form_unescape(ans[x++]);
+ }
+ ans[x] = NULL;
+
+ return(ans);
+}
+
+
+/*
+ * Step through all the CGI POSTed variables. A malloc'd copy of the variable
+ * name is returned and *valuep is set to point to the value (not malloc'd).
+ * If there are no more variables, NULL is returned.
+ *
+ * The first time this is called, *indexp should be zero. On subsequent
+ * calls, pass the same indexp as on the first call.
+ */
+char *
+dsgw_next_cgi_var( int *indexp, char **valuep )
+{
+ char *name;
+ int namelen;
+
+ if ( formvars == NULL || formvars[ *indexp ] == NULL ) {
+ return( NULL );
+ }
+
+ if (( *valuep = strchr( formvars[ *indexp ], '=' )) == NULL ) {
+ namelen = strlen( formvars[ *indexp ] );
+ } else {
+ namelen = *valuep - formvars[ *indexp ];
+ ++(*valuep);
+ }
+ name = dsgw_ch_malloc( namelen + 1 );
+ memcpy( name, formvars[ *indexp ], namelen );
+ name[ namelen ] = '\0';
+
+ *indexp += 1;
+
+ return( name );
+}
+
+/*
+ * converts a buffer of characters to/from UTF8 from/to a native charset
+ * the given converter will handle the native charset
+ * returns 0 if not all of source was converted, 1 if all of source
+ * was converted, -1 upon error
+ * all of source will be converted if there is enough room in dest to contain
+ * the entire conversion, or if dest is null and we are malloc'ing space for dest
+ */
+int
+dsgw_convert(
+ int direction, /* false for native->utf8, true for utf8->native */
+ UConverter *nativeConv, /* convert from/to native charset */
+ char **dest, /* *dest is the destination buffer - if *dest == NULL, it will be malloced */
+ size_t destSize, /* size of dest buffer (ignored if *dest == NULL) */
+ size_t *nDest, /* number of chars written to dest */
+ const char *source, /* source buffer to convert - either in native encoding (from) or utf8 (to) */
+ size_t sourceSize, /* size of source buffer - if 0, assume source is NULL terminated */
+ size_t *nSource, /* number of chars read from source buffer */
+ UErrorCode *pErrorCode /* will be reset each time through */
+)
+{
+#define CHUNK_SIZE 1024
+ UChar pivotBuffer[CHUNK_SIZE];
+ UChar *pivot, *pivot2;
+ static UConverter *utf8Converter = NULL;
+ UConverter *inConverter, *outConverter;
+ char *myDest;
+ const char *mySource;
+ const char *destLimit;
+ const char *sourceLimit;
+ int32_t destCapacity=0;
+ int destAlloc = 0; /* set to true if we allocated *dest */
+
+ *pErrorCode = U_ZERO_ERROR;
+
+ if(sourceSize<0 || source==NULL || nDest==NULL || nSource==NULL)
+ {
+ *pErrorCode=U_ILLEGAL_ARGUMENT_ERROR;
+ return -1;
+ }
+
+ *nSource = 0;
+ *nDest = 0;
+
+ /* if source size is 0, assume source is null terminated and use strlen */
+ if(sourceSize==0) {
+ sourceSize = strlen(source);
+ }
+
+ /* create the converters */
+ if (!utf8Converter) {
+ utf8Converter = ucnv_open(UNICODE_ENCODING_UTF_8, pErrorCode);
+ if(U_FAILURE(*pErrorCode)) {
+ return -1;
+ }
+ }
+ /* reset utf8Converter if done or error */
+
+ if (direction) {
+ inConverter = utf8Converter; /* source is utf8 */
+ outConverter = nativeConv; /* dest is native charset */
+ } else {
+ inConverter = nativeConv; /* source is native charset */
+ outConverter = utf8Converter; /* dest is utf8 */
+ }
+
+ /* if dest is NULL, allocate space for it - may be reallocated later */
+ if (!*dest) {
+ /* good approximation of size is n chars in source * max dest char size */
+ destSize = ucnv_getMaxCharSize(outConverter) * sourceSize;
+ *dest = dsgw_ch_malloc(destSize);
+ destAlloc = 1;
+ }
+
+ /* set up the other variables */
+ mySource = source;
+ sourceLimit = source + sourceSize;
+ pivot = pivot2 = pivotBuffer;
+ myDest = *dest;
+ destLimit = *dest + destSize;
+
+ /*
+ * loops until the input buffer is completely consumed
+ * or an error is encountered;
+ * first we convert from inConverter codepage to Unicode
+ * then from Unicode to outConverter codepage
+ */
+ do {
+ pivot = pivotBuffer;
+ ucnv_toUnicode(inConverter,
+ &pivot, pivotBuffer + CHUNK_SIZE,
+ &mySource, sourceLimit,
+ NULL,
+ TRUE,
+ pErrorCode);
+
+ /* U_BUFFER_OVERFLOW_ERROR only means that the pivot buffer is full */
+ if(U_SUCCESS(*pErrorCode) || (*pErrorCode == U_BUFFER_OVERFLOW_ERROR)) {
+ pivot2 = pivotBuffer;
+
+ /* convert and write bytes from the pivot buffer to the dest -
+ if dest is allocated and we run out of space in dest, grow
+ dest and try again - otherwise, just bail out and let the
+ caller know that their dest buffer is full and they need
+ to try again */
+ do {
+ *pErrorCode = U_ZERO_ERROR;
+ ucnv_fromUnicode(outConverter,
+ &myDest, destLimit,
+ (const UChar **)&pivot2, pivot,
+ NULL,
+ (UBool)(mySource == sourceLimit),
+ pErrorCode);
+
+ /* we overflowed dest and dest is allocated, so let's increase
+ the dest size */
+ if ((*pErrorCode == U_BUFFER_OVERFLOW_ERROR) && destAlloc) {
+ /* figure out where myDest was pointing */
+ size_t myDestOffset = myDest - *dest;
+ /* probably don't need this much more room . . . */
+ destSize += CHUNK_SIZE;
+ /* realloc *dest for new size */
+ *dest = dsgw_ch_realloc(*dest, destSize);
+ /* reset myDest in new *dest */
+ myDest = *dest + myDestOffset;
+ /* set new destLimit */
+ destLimit = *dest + destSize;
+ } else {
+ break; /* skip it */
+ }
+ } while(*pErrorCode == U_BUFFER_OVERFLOW_ERROR);
+ /*
+ * If this overflows the fixed size dest, then we must stop
+ * converting and return what we already have
+ * in this case, pErrorCode will be buffer overflow error because
+ * we have overflowed the dest buffer
+ * the outer while loop will break because !U_SUCCESS
+ */
+ }
+ } while(U_SUCCESS(*pErrorCode) && source != sourceLimit);
+
+ *nSource = mySource - source; /* n chars read from source */
+ *nDest = myDest - *dest; /* n chars written to dest */
+
+ if (U_SUCCESS(*pErrorCode) && source == sourceLimit) {
+ /* reset internal converter */
+ ucnv_reset(utf8Converter);
+ return 1; /* converted entire string */
+ }
+
+ if (source != sourceLimit) {
+ /* not done with conversion yet */
+ /* no reset here - preserve state for next call */
+ return 0;
+ }
+
+ /* error */
+ ucnv_reset(utf8Converter);
+ return -1;
+}
diff --git a/ldap/clients/dsgw/ckdel.c b/ldap/clients/dsgw/ckdel.c
new file mode 100644
index 00000000..d823da14
--- /dev/null
+++ b/ldap/clients/dsgw/ckdel.c
@@ -0,0 +1,30 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+
+#include <stdio.h>
+#include "dsgw.h"
+
+#include <ssl.h>
+#include <sec.h>
+
+main( int argc, char **argv)
+{
+ char cookie[ 512 ];
+ int rc;
+
+ printf( "Remove an entry to the cookie database\n" );
+
+ printf( "cookie: " );
+ gets( cookie );
+
+ rc = dsgw_delcookie( cookie );
+ if ( rc == 0 ) {
+ printf( "Cookie deleted\n" );
+ } else {
+ printf( "Failed, rc = %d\n", rc );
+ }
+}
diff --git a/ldap/clients/dsgw/ckdump.c b/ldap/clients/dsgw/ckdump.c
new file mode 100644
index 00000000..a7dea8da
--- /dev/null
+++ b/ldap/clients/dsgw/ckdump.c
@@ -0,0 +1,38 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+
+#include <stdio.h>
+#include "dsgw.h"
+
+#include <ssl.h>
+#include <sec.h>
+
+main()
+{
+ char *p;
+ time_t expires;
+ char dn[ 512 ];
+ char pw[ 512 ];
+ char expsec[ 512 ];
+
+#ifdef notdef /* this was some testing code... */
+{
+ char *ck, *r, *d, *p;
+ int rc;
+
+ ck = dsgw_get_auth_cookie();
+ rc = dsgw_parse_cookie( ck, &r, &d );
+ if ( rc == 0 ) {
+ (void) dsgw_ckdn2passwd( r, d, &p );
+ printf( "Got pw of <%s>\n", ( p == NULL ) ? "NULL" : p );
+ }
+}
+#endif /* notdef */
+ printf( "Dump the cookie database\n" );
+
+ dsgw_traverse_db();
+}
diff --git a/ldap/clients/dsgw/ckget.c b/ldap/clients/dsgw/ckget.c
new file mode 100644
index 00000000..b436712c
--- /dev/null
+++ b/ldap/clients/dsgw/ckget.c
@@ -0,0 +1,46 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+
+#include <stdio.h>
+#include "dsgw.h"
+
+#include <ssl.h>
+#include <sec.h>
+
+main()
+{
+ char *p;
+ time_t expires;
+ char dn[ 512 ];
+ char cookie[ 512 ];
+ int rc;
+ char *pw;
+
+
+ printf( "Retrieve an entry from the cookie database\n" );
+
+ printf( "cookie: " );
+ gets( cookie );
+ printf( "dn: " );
+ gets( dn );
+
+ rc = dsgw_ckdn2passwd( cookie, dn, &pw );
+ if ( rc == 0 ) {
+ printf( "Cookie valid, password is <%s>\n", pw );
+ } else {
+ if ( rc == DSGW_CKDB_KEY_NOT_PRESENT ) {
+ printf( "Cookie/DN pair not found in database\n" );
+ } else if ( rc == DSGW_CKDB_EXPIRED ) {
+ printf( "Cookie/DN pair expired\n" );
+ } else {
+ printf( "Unknown DB error\n" );
+ }
+ }
+ if ( pw != NULL ) {
+ free( pw );
+ }
+}
diff --git a/ldap/clients/dsgw/ckpurge.c b/ldap/clients/dsgw/ckpurge.c
new file mode 100644
index 00000000..b2192476
--- /dev/null
+++ b/ldap/clients/dsgw/ckpurge.c
@@ -0,0 +1,33 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+
+#include <stdio.h>
+#include "dsgw.h"
+
+#include <ssl.h>
+#include <sec.h>
+
+main()
+{
+ char *p;
+ time_t expires;
+ char dn[ 512 ];
+ char pw[ 512 ];
+ char expsec[ 512 ];
+ int np = 0;
+ time_t last;
+ FILE *fp;
+
+ printf( "purge the cookie database\n" );
+
+ fp = dsgw_opencookiedb();
+ last = dsgw_getlastpurged( fp );
+ dsgw_closecookiedb( fp );
+ printf( "database was last purged at %s\n", ctime( &last ));
+ np = dsgw_purgedatabase( NULL );
+ printf( "%d records purged\n", np );
+}
diff --git a/ldap/clients/dsgw/ckput.c b/ldap/clients/dsgw/ckput.c
new file mode 100644
index 00000000..09782c7c
--- /dev/null
+++ b/ldap/clients/dsgw/ckput.c
@@ -0,0 +1,63 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+
+#include <stdio.h>
+#include "dsgw.h"
+
+#include <ssl.h>
+#include <sec.h>
+
+main( int argc, char **argv)
+{
+ char *p;
+ char dn[ 512 ];
+ char pw[ 512 ];
+ char lifesec[ 512 ];
+ int rc;
+ int c;
+ extern char *optarg;
+ time_t lifetime;
+
+ printf( "Add an entry to the cookie database\n" );
+
+ SEC_Init();
+ SEC_RNGInit();
+ SEC_SystemInfoForRNG();
+
+ if ( argc > 1 ) {
+ while (( c = getopt( argc, argv, "d:l:p:" )) != EOF ) {
+ switch ( c ) {
+ case 'd':
+ strcpy( dn, optarg );
+ break;
+ case 'l':
+ strcpy( lifesec, optarg );
+ break;
+ case 'p':
+ strcpy( pw, optarg );
+ break;
+ }
+ }
+ }
+
+ if ( strlen( dn ) == 0 || strlen( pw ) == 0 || strlen( lifesec ) == 0 ) {
+ printf( "dn: " );
+ gets( dn );
+ printf( "passwd: " );
+ gets( pw );
+ printf( "expires in how many seconds? " );
+ gets( lifesec );
+ }
+
+ lifetime = atol( lifesec );
+ p = dsgw_mkcookie( dn, pw, lifetime, &rc );
+ if ( p == NULL ) {
+ fprintf( stderr, "Error storing cookie: error %d\n", rc );
+ } else {
+ printf( "success, cookie is %s\n", p );
+ }
+}
diff --git a/ldap/clients/dsgw/collate.c b/ldap/clients/dsgw/collate.c
new file mode 100644
index 00000000..23ef759e
--- /dev/null
+++ b/ldap/clients/dsgw/collate.c
@@ -0,0 +1,400 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+/*
+ * collate.c -- routines to collate character strings
+ *
+ * Copyright (c) 1997 Netscape Communications Corp.
+ * All rights reserved.
+ */
+
+#include <stdio.h>
+#include "dsgw.h"
+#include <ldap.h> /* ldap_utf8* */
+
+#include <unicode/ucol.h> /* Collation */
+#include <unicode/ucnv.h> /* Conversion */
+#include <unicode/ustring.h> /* UTF8 conversion */
+
+#ifdef _WINDOWS
+#undef strcasecmp
+#define strcasecmp _strcmpi
+#endif
+
+/*
+ Convert the given string s, encoded in UTF8, into a Unicode (UTF16 or 32, depending on sizeof(UChar))
+ string for use with collation and key generation
+ The given string U will be filled in if it's capacity (given by Ulen) is big enough,
+ otherwise, it will be malloced (or realloced if already allocated)
+*/
+static UErrorCode
+SetUnicodeStringFromUTF_8 (UChar** U, int32_t* Ulen, int *isAlloced, const char *s)
+ /* Copy the UTF-8 string bv into the UnicodeString U,
+ but remove leading and trailing whitespace, and
+ convert consecutive whitespaces into a single space.
+ Ulen is set to the number of UChars in the array (not necessarily the number of bytes!)
+ */
+{
+ size_t n;
+ int32_t len = 0; /* length of non-space string */
+ int32_t needLen = 0; /* number of bytes needed for string */
+ UErrorCode err = U_ZERO_ERROR;
+ const char* begin; /* will point to beginning of non-space in s */
+
+ /* first, set s to the first non-space char in bv->bv_val */
+ while (s && *s && ldap_utf8isspace((char *)s)) { /* cast away const */
+ const char *next = LDAP_UTF8NEXT((char *)s); /* cast away const */
+ s = next;
+ }
+ begin = s;
+
+ if (!s || !*s) {
+ return U_INVALID_FORMAT_ERROR; /* don't know what else to use here */
+ }
+
+ /* next, find the length of the non-space string */
+ while (s && *s && !ldap_utf8isspace((char *)s)) { /* cast away const */
+ const char *next = LDAP_UTF8NEXT((char *)s); /* cast away const */
+ len += (next - s); /* count bytes, not chars */
+ needLen++; /* needLen counts chars */
+ s = next;
+ }
+
+ if (needLen == 0) { /* bogus */
+ return U_INVALID_FORMAT_ERROR; /* don't know what else to use here */
+ }
+
+ needLen++; /* +1 for trailing UChar space */
+ if (needLen > *Ulen) { /* need more space */
+ if (*isAlloced) { /* realloc space */
+ *U = (UChar *)dsgw_ch_realloc((char *)*U, sizeof(UChar) * needLen);
+ } else { /* must use malloc */
+ *U = (UChar *)dsgw_ch_malloc(sizeof(UChar) * needLen);
+ *isAlloced = 1; /* no longer using fixed buffer */
+ }
+ *Ulen = needLen;
+ }
+ u_strFromUTF8(*U, sizeof(UChar) * (*Ulen), NULL, begin, len, &err);
+
+ return err;
+}
+
+static UCollator*
+get_collator (int flavor)
+{
+ static UCollator* collator[2] = {NULL, NULL};
+/* dsgw_emitf("get_collator (%i)<br>\n", flavor); */
+ if (collator[flavor] == NULL &&
+ gc->gc_ClientLanguage && gc->gc_ClientLanguage[0]) {
+ /* Try to create a Collation for the client's preferred language */
+ ACCEPT_LANGUAGE_LIST langlist;
+ size_t langs;
+/* dsgw_emitf ("ClientLanguage = \"%s\"<br>\n", gc->gc_ClientLanguage); */
+ langs = AcceptLangList (gc->gc_ClientLanguage, langlist);
+ if (langs <= 0) {
+dsgw_emitf ("AcceptLangList (%s) = %lu<br>\n",
+ gc->gc_ClientLanguage, (unsigned long)langs);
+ } else {
+ UCollator* fallback_collator = NULL;
+ UCollator* default_collator = NULL;
+ UErrorCode err = U_ZERO_ERROR;
+ size_t i;
+
+ for (i = 0; i < langs; ++i) {
+ /* Try to create a Collation for langs[i] */
+ char* lang = langlist[i];
+ collator[flavor] = ucol_open(lang, &err);
+ if (err == U_ZERO_ERROR && collator[flavor]) {
+dsgw_emitf("<!-- New Collator (%s) == SUCCESS -->\n", lang);
+ break;
+ } else {
+ if (err == U_USING_FALLBACK_WARNING) {
+ if (fallback_collator == NULL) {
+ fallback_collator = collator[flavor];
+dsgw_emitf("<!-- New Collator (%s) == USING_FALLBACK_LOCALE -->\n", lang);
+ } else {
+ ucol_close (collator[flavor]);
+ }
+ } else if (err == U_USING_DEFAULT_WARNING) {
+ if (default_collator == NULL) {
+ default_collator = collator[flavor];
+dsgw_emitf("<!-- New Collator (%s) == USING_DEFAULT_LOCALE -->\n", lang);
+ } else {
+ ucol_close (collator[flavor]);
+ }
+ } else {
+dsgw_emitf("New Collator error (%s) == %i<br>\n", lang, err);
+ }
+ collator[flavor] = NULL;
+ }
+ }
+ if (collator[flavor] == NULL) {
+ if (fallback_collator != NULL) {
+ collator[flavor] = fallback_collator;
+ fallback_collator = NULL;
+ } else if (default_collator != NULL) {
+ collator[flavor] = default_collator;
+ default_collator = NULL;
+ }
+ }
+ if (collator[flavor] != NULL) {
+ switch (flavor) {
+ case CASE_EXACT:
+dsgw_emits("<!-- CollationSetStrength (TERTIARY) -->\n");
+ ucol_setAttribute (collator[flavor], UCOL_STRENGTH, UCOL_TERTIARY, &err);
+ break;
+ default: /* CASE_IGNORE */
+ if (dsgw_scriptorder()->so_caseIgnoreAccents) {
+dsgw_emits("<!-- CollationSetStrength (PRIMARY) -->\n");
+ ucol_setAttribute (collator[flavor], UCOL_STRENGTH, UCOL_PRIMARY, &err);
+ } else {
+dsgw_emits("<!-- CollationSetStrength (SECONDARY) -->\n");
+ ucol_setAttribute (collator[flavor], UCOL_STRENGTH, UCOL_SECONDARY, &err);
+ }
+ break;
+ }
+ }
+ if (default_collator != NULL) {
+ ucol_close (default_collator);
+ default_collator = NULL;
+ }
+ if (fallback_collator != NULL) {
+ ucol_close (fallback_collator);
+ fallback_collator = NULL;
+ }
+ }
+ }
+ return collator[flavor];
+}
+
+static int
+valcmp (const char** L, const char** R)
+{
+ return strcmp (*L, *R);
+}
+
+static int
+valcasecmp (const char** L, const char** R)
+{
+ return strcasecmp (*L, *R);
+}
+
+static int
+strXcollate (int flavor, const char* L, const char* R)
+{
+ UCollator* collator = get_collator (flavor);
+ if (collator != NULL) {
+ UChar LuBuffer[128];
+ UChar* Lu = LuBuffer;
+ int32_t LuLen = u_strlen(LuBuffer);
+ int LuisAlloced = 0;
+ if (SetUnicodeStringFromUTF_8 (&Lu, &LuLen, &LuisAlloced, L) == U_ZERO_ERROR) {
+ UChar RuBuffer[128];
+ UChar* Ru = RuBuffer;
+ int32_t RuLen = u_strlen(RuBuffer);
+ int RuisAlloced = 0;
+ if (SetUnicodeStringFromUTF_8 (&Ru, &RuLen, &RuisAlloced, R) == U_ZERO_ERROR) {
+ UCollationResult colres = ucol_strcoll(collator, Lu, LuLen, Ru, RuLen);
+ int result = 0;
+ switch (colres) {
+ case UCOL_LESS:
+ result = -1;
+ break;
+ case UCOL_GREATER:
+ result = 1;
+ break;
+ default:
+ break;
+ }
+#ifdef DSGW_DEBUG
+ {
+ auto char* Le = dsgw_strdup_escaped (L);
+ auto char* Re = dsgw_strdup_escaped (R);
+ dsgw_log ("strXcollate:%s %s %s\n",
+ Le, result < 0 ? "<" : (result == 0 ? "=" : ">"), Re);
+ free (Le);
+ free (Re);
+ }
+#endif
+ if (RuisAlloced) {
+ free(Ru);
+ Ru = NULL;
+ }
+ if (LuisAlloced) {
+ free(Lu);
+ Lu = NULL;
+ }
+
+ return result;
+ }
+ if (LuisAlloced) {
+ free(Lu);
+ Lu = NULL;
+ }
+ }
+ }
+ return flavor ? strcasecmp (L, R) : strcmp (L, R);
+}
+
+static int
+strcollate (const char* L, const char* R)
+{
+ return strXcollate (CASE_EXACT, L, R);
+}
+
+static int
+strcasecollate (const char* L, const char* R)
+{
+ return strXcollate (CASE_INSENSITIVE, L, R);
+}
+
+static int
+valcollate (const char** L, const char** R)
+{
+ return strXcollate (CASE_EXACT, *L, *R);
+}
+
+static int
+valcasecollate (const char** L, const char** R)
+{
+ return strXcollate (CASE_INSENSITIVE, *L, *R);
+}
+
+strcmp_t
+dsgw_strcmp (int flavor)
+{
+ if (get_collator (flavor) != NULL) {
+ return flavor ? strcasecollate : strcollate;
+ }
+ return flavor ? strcasecmp : strcmp;
+}
+
+valcmp_t
+dsgw_valcmp (int flavor)
+{
+ if (get_collator (flavor) != NULL) {
+ return flavor ? valcasecollate : valcollate;
+ }
+ return flavor ? valcasecmp : valcmp;
+}
+
+static size_t
+dsgw_scriptof (const char* s, scriptrange_t** ranges)
+{
+ auto size_t result = 0;
+ if (s && ranges) {
+ auto unsigned long u;
+ while ((u = LDAP_UTF8GETCC (s)) != 0) {
+ auto size_t ss;
+ auto scriptrange_t* sr;
+ for (ss = 0; (sr = ranges[ss]) != NULL; ++ss) {
+ do {
+ if (sr->sr_min <= u && u <= sr->sr_max) {
+ break;
+ }
+ } while ((sr = sr->sr_next) != NULL);
+ if (sr) {
+ if (result < ss) result = ss;
+ break;
+ }
+ }
+ if (!sr) {
+ result = ss;
+ break;
+ }
+ }
+ }
+#ifdef DSGW_DEBUG
+ dsgw_log ("script %lu\n", (unsigned long)result);
+#endif
+ return result;
+}
+
+static struct berval key_first = {0, 0};
+static struct berval key_last = {0, 0};
+
+struct berval* dsgw_key_first = &key_first;
+struct berval* dsgw_key_last = &key_last;
+
+void LDAP_C LDAP_CALLBACK
+dsgw_keyfree( void *arg, const struct berval* key )
+{
+ if (key->bv_val) free (key->bv_val);
+ else if (key == dsgw_key_first || key == dsgw_key_last) return;
+ free ((void*)key);
+}
+
+int LDAP_C LDAP_CALLBACK
+dsgw_keycmp( void *arg, const struct berval *L, const struct berval *R )
+{
+ int result = 0;
+ if (L == R) {
+ } else if (L->bv_val == NULL) { /* L is either first or last */
+ result = (L == dsgw_key_last) ? 1 : -1;
+ } else if (R->bv_val == NULL) { /* R is either first or last */
+ result = (R == dsgw_key_last) ? -1 : 1;
+ } else
+ /* copied from slapi_berval_cmp(), in ../../servers/slapd/plugin.c: */
+ if (L->bv_len < R->bv_len) {
+ result = memcmp (L->bv_val, R->bv_val, L->bv_len);
+ if (result == 0)
+ result = -1;
+ } else {
+ result = memcmp (L->bv_val, R->bv_val, R->bv_len);
+ if (result == 0 && (L->bv_len > R->bv_len))
+ result = 1;
+ }
+ return result;
+}
+
+struct berval*
+dsgw_strkeygen (int flavor, const char* s)
+{
+ auto struct berval* v = (struct berval*)dsgw_ch_malloc (sizeof (struct berval));
+ auto UCollator* collator = get_collator (flavor);
+ v->bv_val = NULL;
+ if (collator != NULL) {
+ UChar uBuffer[128];
+ UChar* u = uBuffer;
+ int32_t uLen = u_strlen(uBuffer);
+ int uisAlloced = 0;
+ if (SetUnicodeStringFromUTF_8 (&u, &uLen, &uisAlloced, s) == U_ZERO_ERROR) {
+ char keyBuffer[128]; /* try to use static space buffer to avoid malloc */
+ int32_t keyLen = u_strlen(keyBuffer);
+ char* key = keyBuffer; /* but key can grow if necessary */
+ int32_t realLen = ucol_getSortKey(collator, u, uLen, (uint8_t *)key, keyLen);
+ if (realLen > keyLen) { /* need more space */
+ key = (char*)dsgw_ch_malloc(sizeof(char) * realLen);
+ keyLen = ucol_getSortKey(collator, u, uLen, (uint8_t *)key, realLen);
+ }
+ v->bv_len = realLen + 2;
+ v->bv_val = dsgw_ch_malloc (v->bv_len);
+ memcpy(v->bv_val+1, key, realLen);
+ if (uisAlloced) {
+ free(u);
+ u = NULL;
+ }
+ if (key != keyBuffer) {
+ free(key);
+ key = NULL;
+ }
+ }
+ }
+ if (v->bv_val == NULL) {
+ v->bv_len = (s ? strlen (s) : 0) + 2;
+ v->bv_val = dsgw_ch_malloc (v->bv_len);
+ if (v->bv_len > 2) memcpy (v->bv_val+1, s, v->bv_len-2);
+ if (flavor) {
+ register char* t;
+ for (t = v->bv_val+1; *t; ++t) {
+ if (isascii (*t)) *t = tolower (*t);
+ }
+ }
+ }
+ v->bv_val[0] = (char) dsgw_scriptof (s, dsgw_scriptorder()->so_sort);
+ v->bv_val[v->bv_len-1] = '\0';
+ return v;
+}
diff --git a/ldap/clients/dsgw/config.c b/ldap/clients/dsgw/config.c
new file mode 100644
index 00000000..954da599
--- /dev/null
+++ b/ldap/clients/dsgw/config.c
@@ -0,0 +1,2080 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+/*
+ * config.c -- parse config file for directory server gateway
+ *
+ * Copyright (c) 1996 Netscape Communications Corp.
+ * All rights reserved.
+ */
+
+
+#include <limits.h> /* ULONG_MAX */
+#include <stdio.h>
+#include <stdlib.h> /* strtoul */
+#include <string.h>
+#if !defined( XP_WIN32 )
+#include <sys/param.h>
+#endif
+
+#include "dsgw.h"
+#include "dbtdsgw.h"
+#include "../../include/portable.h"
+/* MLM - Include netsite.h to get ADMSERV_VERSION_STRING */
+#ifdef AIX
+#undef HAVE_TIME_R
+#endif
+#include "netsite.h"
+#include "ldaputil/errors.h"
+#include "ldaputil/ldaputil.h"
+#include "ldaputil/dbconf.h"
+
+extern char *get_userdb_dir(void); /* Can't include libadmin.h, so this */
+static void report_ldapu_error( int ldapu_err, int dsgw_err, int erropts );
+static void adderr( dsgwconfig *gc, char *str, char *filename, int lineno );
+static void fp_parse_line( char *line, int *argcp, char **argv );
+static void fp_getline_init( int *lineno );
+static char *fp_getline( FILE *fp, int *lineno );
+static void add_location( int *loccountp, dsgwloc **locarrayp,
+ char *locsuffix, char **argv );
+static int add_newtype( dsgwnewtype **newentlistp, int loccount,
+ dsgwloc *locarray, int argc, char **argv );
+static void add_tmplset( dsgwtmplset **tslp, int argc, char **argv );
+static void add_vcardproperty( dsgwvcprop **vcpropp, int argc, char **argv );
+static void add_avset( dsgwavset **avsp, char **argv );
+static void add_includeset( dsgwinclset **isp, char **argv );
+static void add_l10nset( dsgwsubst **l10np, char **argv );
+static void read_dsgwconfig( char *filename, char *locsuffix,
+ int templatesonly, int binddnfile );
+static void get_dbconf_properties( char *filename );
+static int write_dbswitch_info( FILE *fp, dsgwconfig *cfgp, char *dbhandle );
+static int ldapdb_url_parse( char *url, LDAPDBURLDesc **ldbudpp );
+static int dsgw_valid_context();
+static int browser_is_msie40();
+static int browser_ignores_acceptcharset();
+static char *dsgw_ch_strdup_tolower( const char *s );
+static void set_dsgwcharset();
+#ifdef XP_WIN32
+static void dsgw_unix2dospath( char *path );
+#endif
+
+
+#define MAXARGS 100
+/*
+ * Open and parse the dsgw config file. If an error occurs, this function
+ * does not return.
+ */
+dsgwconfig *
+dsgw_read_config()
+{
+ char *scriptname;
+ char *p, *fname;
+ int servurllen = 0;
+ int len;
+ char *path;
+
+ /* get rid of stupid warning: */
+ if (ldapu_strings != NULL);
+
+ /*
+ * First, make sure that the context is valid. Don't want anything
+ * tricky in there like dots or slashes.
+ */
+ if (!dsgw_valid_context ()) {
+ dsgw_error( DSGW_ERR_BADFILEPATH, context,
+ DSGW_ERROPT_EXIT, 0, NULL );
+ }
+
+ /* gc is a global */
+ if (( gc = (dsgwconfig *) dsgw_ch_malloc( sizeof( dsgwconfig ))) == NULL ) {
+ dsgw_error( DSGW_ERR_NOMEMORY,
+ XP_GetClientStr(DBT_initializingConfigInfo_),
+ DSGW_ERROPT_EXIT, 0, NULL );
+ }
+ memset( gc, 0, sizeof( dsgwconfig ));
+
+ /*
+ * set non-zero configuration defaults
+ */
+ gc->gc_ldapport = LDAP_PORT;
+ gc->gc_configerrstr = dsgw_ch_strdup( "" );
+ gc->gc_sslrequired = DSGW_SSLREQ_NEVER;
+ gc->gc_authlifetime = DSGW_DEF_AUTH_LIFETIME;
+ gc->gc_configdir = DSGW_CONFIGDIR_HTTP; /* may be overridden below */
+ gc->gc_docdir = DSGW_DOCDIR_HTTP;
+ gc->gc_tmpldir = DSGW_TMPLDIR_HTTP; /* may be overridden below */
+ gc->gc_urlpfxmain = DSGW_URLPREFIX_MAIN_HTTP; /* may be overridden below */
+ /*gc->gc_urlpfxcgi = DSGW_URLPREFIX_CGI_HTTP;*/
+ gc->gc_urlpfxcgi = DSGW_URLPREFIX_BIN; /* may be overridden below */
+ gc->gc_binddn = gc->gc_bindpw = "";
+ gc->gc_charset = NULL; /* implicitly ISO-8859-1 */
+ gc->gc_ClientLanguage = "";
+ gc->gc_AdminLanguage = "";
+ gc->gc_DefaultLanguage = "";
+ gc->gc_httpversion = 0;
+ gc->gc_orgchartsearchattr = "uid";
+ /*
+ * Figure out whether we are running under the admin server or not. This
+ * also determines where our config and html files are. The hackage is:
+ * if we're running under the admin server:
+ * configdir is ../../../../admin-serv/config
+ * htmldir is ../html
+ * urlpfxmain is ""
+ * urlpfxcgi is ""
+ * dbswitchfile is NSHOME/userdb/dbswitch.conf
+ *
+ * If we're running under any other HTTP server:
+ * configdir is ../config
+ * htmldir is ../config (yes, that's right)
+ * urlpfxmain is "lang?context=dsgw&file="
+ * gc_urlpfxcgi is "/ds"
+ * dbswitchfile is not used
+ */
+
+ /* Get the admin server name and chop off the version number */
+ /* vs = dsgw_ch_strdup( ADMSERV_VERSION_STRING );
+ if (( p = strchr( vs, '/')) != NULL ) {
+ *p = '\0';
+ }*/
+
+ /*ss = getenv( "SERVER_SOFTWARE" );
+ if ( ss != NULL ) {
+ if ( !strncasecmp( vs, ss, strlen( vs ))) {
+ char *server_names;*/
+ /* We're running under the admin server */
+ /* gc->gc_admserv = 1;
+ gc->gc_configdir = DSGW_CONFIGDIR_ADMSERV;
+ gc->gc_tmpldir = DSGW_TMPLDIR_ADMSERV;
+ gc->gc_urlpfxmain = DSGW_URLPREFIX_MAIN_ADMSERV;
+ gc->gc_urlpfxcgi = DSGW_URLPREFIX_CGI_ADMSERV;*/
+ /* Check if running an end-user CGI under the admin server */
+ /* if (( server_names = getenv( "SERVER_NAMES" )) != NULL &&
+ strlen( server_names ) >= 4 &&
+ strncmp( server_names, "user", 4 ) == 0 ) {
+ gc->gc_enduser = 1;
+ }
+ }
+ }*/
+
+ /*
+ * Get the strlen of the http://admin/port because getvp returns
+ * that in the url, so we can't compare scriptname against what
+ * getvp returns. We need to skip past the server url part.
+ */
+ servurllen = strlen(getenv("SERVER_URL"));
+
+ /* Set mode (based on which CGI is currently running) */
+ if (( scriptname = getenv( "SCRIPT_NAME" )) == NULL ) {
+ gc->gc_mode = 0;
+ } else {
+ if ( !strncmp( scriptname, dsgw_getvp( DSGW_CGINUM_DOSEARCH ) + servurllen,
+ strlen( scriptname ))) {
+ gc->gc_mode = DSGW_MODE_DOSEARCH;
+ } else if ( !strncmp( scriptname, dsgw_getvp( DSGW_CGINUM_BROWSE ) + servurllen,
+ strlen( scriptname ))) {
+ gc->gc_mode = DSGW_MODE_BROWSE;
+ } else if ( !strncmp( scriptname, dsgw_getvp( DSGW_CGINUM_SEARCH ) + servurllen,
+ strlen( scriptname ))) {
+ gc->gc_mode = DSGW_MODE_SEARCH;
+ } else if ( !strncmp( scriptname, dsgw_getvp( DSGW_CGINUM_CSEARCH )+ servurllen,
+ strlen( scriptname ))) {
+ gc->gc_mode = DSGW_MODE_CSEARCH;
+ } else if ( !strncmp( scriptname, dsgw_getvp( DSGW_CGINUM_AUTH )+ servurllen,
+ strlen( scriptname ))) {
+ gc->gc_mode = DSGW_MODE_AUTH;
+ } else if ( !strncmp( scriptname, dsgw_getvp( DSGW_CGINUM_EDIT )+ servurllen,
+ strlen( scriptname ))) {
+ gc->gc_mode = DSGW_MODE_EDIT;
+ } else if ( !strncmp( scriptname, dsgw_getvp( DSGW_CGINUM_DOMODIFY )+ servurllen,
+ strlen( scriptname ))) {
+ gc->gc_mode = DSGW_MODE_DOMODIFY;
+ } else {
+ gc->gc_mode = DSGW_MODE_UNKNOWN;
+ }
+ }
+
+ if (( p = getenv( "SERVER_PROTOCOL" )) != NULL ) {
+ char *pp;
+
+ pp = strchr(p, '/');
+ if (pp != NULL) {
+ gc->gc_httpversion = (float)atof(++pp);
+ }
+ }
+
+ if (( p = getenv( "DefaultLanguage" )) != NULL ) {
+ gc->gc_DefaultLanguage = p;
+ }
+
+ if (( p = getenv( "AdminLanguage" )) != NULL ) {
+ gc->gc_AdminLanguage = p;
+ }
+
+ if (( p = getenv( "ClientLanguage" )) != NULL ) {
+ gc->gc_ClientLanguage = p;
+ }
+
+ /* Accept-Language from user overrides ClientLanguage from environment */
+ if (( p = getenv( "HTTP_ACCEPT_LANGUAGE" )) != NULL ) {
+ gc->gc_ClientLanguage = p;
+ }
+
+ /* Set rest of config. by reading the appropriate config files */
+ path = dsgw_ch_malloc( MAXPATHLEN );
+ if ( gc->gc_admserv ) {
+ PR_snprintf( path, MAXPATHLEN, "%s/dbswitch.conf", get_userdb_dir());
+ get_dbconf_properties( path );
+ }
+
+ /*
+ * If there is no config file name (context), then use
+ * DSGW_CONFIGFILE in the config directory
+ */
+ if (context == NULL) {
+ PR_snprintf( path, MAXPATHLEN, "%s$$LANGDIR/%s",
+ DSGW_CONFIGDIR_HTTP, DSGW_CONFIGFILE);
+ len = strlen( DSGW_CONFIGDIR_HTTP ) + strlen( DSGW_CONFIGFILE ) + 32;
+ } else {
+ PR_snprintf( path, MAXPATHLEN, "%s$$LANGDIR/%s.conf",
+ DSGW_CONTEXTDIR_HTTP, context);
+ /* increased the length from 11 -- fix for auth crash on AIX */
+ len = strlen( DSGW_CONTEXTDIR_HTTP ) + strlen( context ) + 32;
+ }
+ /* allocate buffers with enough extra room to fit "$$LANGDIR/" */
+ if ( NULL != gc->gc_ClientLanguage ) {
+ len += strlen( gc->gc_ClientLanguage );
+ }
+ fname = dsgw_ch_malloc( len+MAXPATHLEN );
+ if ( GetFileForLanguage( path, gc->gc_ClientLanguage, fname ) < 0 ) {
+ if (context == NULL) {
+ PR_snprintf( fname, len+MAXPATHLEN, "%s%s", DSGW_CONFIGDIR_HTTP,
+ DSGW_CONFIGFILE);
+ } else {
+ PR_snprintf( fname, len+MAXPATHLEN, "%s%s.conf",
+ DSGW_CONTEXTDIR_HTTP, context);
+ }
+ }
+ free( path );
+
+ if (context != NULL) {
+ char urlpfx[MAXPATHLEN];
+ /*set the urlpfxmain to be "lang?context=CONTEXT&file="*/
+ /*sprintf(urlpfx, "%slang?context=%s&file=", DSGW_URLPREFIX_CGI_HTTP, context);*/
+ PR_snprintf(urlpfx, MAXPATHLEN, "%s?context=%s&file=", dsgw_getvp(DSGW_CGINUM_LANG), context);
+ gc->gc_urlpfxmain = dsgw_ch_strdup( urlpfx );
+ }
+
+ read_dsgwconfig( fname, NULL, gc->gc_admserv, 0 );
+ free( fname );
+
+ /* if necessary, try to set path to certificate database */
+#ifndef DSGW_NO_SSL
+ if ( gc->gc_ldapssl && gc->gc_securitypath == NULL ) {
+ if ( gc->gc_admserv ) {
+ if (( p = get_nsadm_var( "CertFile" )) != NULL ) {
+ gc->gc_securitypath = dsgw_ch_malloc( strlen( p ) + 4 );
+ sprintf( gc->gc_securitypath, "%s.db", p );
+ }
+ } else {
+ gc->gc_securitypath = DSGW_DEFSECURITYPATH;
+ }
+ }
+#endif
+
+ if ( browser_ignores_acceptcharset() ) {
+ set_dsgwcharset();
+ } else {
+ /* Accept-Charset from user overrides charset from configuration */
+ if (( p = getenv( "HTTP_ACCEPT_CHARSET" )) != NULL ) {
+ gc->gc_charset = p;
+ /* IE 4.0 doesn't send HTTP_ACCEPT_CHARSET, so we test for it specially -RJP */
+ } else if (browser_is_msie40() ) {
+ gc->gc_charset = MSIE40_DEFAULT_CHARSET;
+ } else { /* charset file overrides charset from configuration */
+ set_dsgwcharset();
+ }
+ }
+
+ return( gc );
+}
+
+
+static void
+report_ldapu_error( int ldapu_err, int dsgw_err, int erropts )
+{
+ char *extra = "";
+
+ switch( ldapu_err ) {
+ case LDAPU_ERR_CANNOT_OPEN_FILE:
+ extra = XP_GetClientStr(DBT_cannotOpenFile_);
+ break;
+ case LDAPU_ERR_DBNAME_IS_MISSING:
+ case LDAPU_ERR_NOT_PROPVAL:
+ extra = XP_GetClientStr(DBT_malformedDbconfFile_);
+ break;
+ case LDAPU_ERR_PROP_IS_MISSING:
+ extra = XP_GetClientStr(DBT_missingPropertyNameInDbconfFile_);
+ break;
+ case LDAPU_ERR_OUT_OF_MEMORY:
+ extra = XP_GetClientStr(DBT_outOfMemory_1);
+ break;
+ case LDAPU_ERR_DIRECTIVE_IS_MISSING:
+ extra = XP_GetClientStr(DBT_missingDirectiveInDbconfFile_);
+ break;
+ }
+
+ dsgw_error( dsgw_err, extra, erropts, 0, NULL );
+}
+
+
+/*
+ * Read the gateway config file (dsgw.conf).
+ */
+static void
+read_dsgwconfig( char *filename, char *locsuffix, int templatesonly, int binddnfile )
+{
+ char buf[ MAXPATHLEN + 100 ];
+ int cargc;
+ char *cargv[ MAXARGS ];
+ FILE *fp;
+ char *line;
+ int lineno;
+ int rc;
+ LDAPURLDesc *ludp;
+
+ if (( fp = fopen( filename, "r" )) == NULL ) {
+ if ( strstr( filename, "dsgw-l10n.conf" ) != NULL ) {
+ return; /* ignore if it's dsgw-l10n.conf */
+ }
+ PR_snprintf( buf, MAXPATHLEN + 100,
+ XP_GetClientStr(DBT_cannotOpenConfigFileSN_), filename );
+ dsgw_error( DSGW_ERR_BADCONFIG, buf, DSGW_ERROPT_EXIT, 0, NULL );
+ }
+ fp_getline_init( &lineno );
+
+ while ( (line = fp_getline( fp, &lineno )) != NULL ) {
+ /* skip comments and blank lines */
+ if ( line[0] == '#' || line[0] == '\0' ) {
+ continue;
+ }
+
+ fp_parse_line( line, &cargc, cargv );
+
+ if ( cargc < 1 ) {
+ continue;
+ }
+
+ if ( strcasecmp( cargv[0], "requireauth" ) == 0 ) {
+ if ( templatesonly ) continue;
+ gc->gc_authrequired = 1;
+ }
+
+ if ( strcasecmp( cargv[0], "authlifetime" ) == 0 ) {
+ if ( templatesonly ) continue;
+ if ( cargc < 2 ) {
+ adderr( gc, XP_GetClientStr(DBT_missingArgumentForAuthlifetimeDi_),
+ filename, lineno );
+ continue;
+ }
+ gc->gc_authlifetime = (time_t) atol( cargv[ 1 ]);
+ } else if ( strcasecmp( cargv[ 0 ], "changeHTML" ) == 0 ) {
+ auto dsgwsubst *sub;
+ if ( templatesonly ) continue;
+ if ( cargc < 2 || cargv[ 1 ][ 0 ] == '\0') continue;
+ sub = (dsgwsubst *)dsgw_ch_malloc( sizeof( dsgwsubst ));
+ memset( sub, 0, sizeof( dsgwsubst ));
+ sub->dsgwsubst_from = dsgw_ch_strdup( cargv[ 1 ] );
+ if ( cargc > 2 ) {
+ sub->dsgwsubst_to = dsgw_ch_strdup( cargv[ 2 ] );
+ if ( cargc > 3 ) {
+ auto size_t i;
+ sub->dsgwsubst_charsets = (char **)dsgw_ch_malloc
+ (sizeof(char*) * (cargc - 2));
+ for (i = 3; i < cargc; ++i) {
+ sub->dsgwsubst_charsets[ i-3 ] = dsgw_ch_strdup( cargv[ i ] );
+ }
+ sub->dsgwsubst_charsets[ i-3 ] = NULL;
+ }
+ }
+ { /* append sub to gc->gc_changeHTML: */
+ auto dsgwsubst **s = &(gc->gc_changeHTML);
+ while (*s) s = &((*s)->dsgwsubst_next);
+ *s = sub;
+ }
+
+ } else if ( strcasecmp( cargv[0], "dirmgr" ) == 0 ) {
+ if ( templatesonly ) continue;
+ if ( cargc < 2 ) {
+ adderr( gc, XP_GetClientStr(DBT_missingArgumentForDirmgrDirectiv_),
+ filename, lineno );
+ continue;
+ }
+ gc->gc_rootdn = dsgw_ch_strdup( cargv[ 1 ]);
+ } else if ( strcasecmp( cargv[0], "url-orgchart-base" ) == 0 ) {
+ if ( templatesonly ) continue;
+ if ( cargc < 2 ) {
+ adderr( gc, XP_GetClientStr(DBT_missingArgumentForOrgChartURLDirectiv_),
+ filename, lineno );
+ continue;
+ }
+ gc->gc_orgcharturl = dsgw_ch_strdup( cargv[ 1 ]);
+ } else if ( strcasecmp( cargv[0], "orgchart-attrib-farleft-rdn" ) == 0 ) {
+ if ( templatesonly ) continue;
+ if ( cargc < 2 ) {
+ adderr( gc, XP_GetClientStr(DBT_missingArgumentForOrgChartSearchAttr_),
+ filename, lineno );
+ continue;
+ }
+ gc->gc_orgchartsearchattr = dsgw_ch_strdup( cargv[ 1 ]);
+ } else if ( strcasecmp( cargv[0], "enable-aim-presence" ) == 0 ) {
+ if ( templatesonly ) continue;
+ if (cargc < 2 || strcasecmp(cargv[1], "true") == 0) {
+ gc->gc_aimpresence = 1;
+ } else {
+ gc->gc_aimpresence = 0;
+ }
+ } else if ( strcasecmp( cargv[0], "baseurl" ) == 0 ) {
+ if ( templatesonly ) continue;
+ if ( cargc < 2 ) {
+ adderr( gc, XP_GetClientStr(DBT_missingArgumentForBaseurlDirecti_),
+ filename, lineno );
+ continue;
+ }
+ gc->gc_baseurl = dsgw_ch_strdup( cargv[ 1 ]);
+ if (( rc = ldap_url_parse( gc->gc_baseurl, &ludp )) != 0 ) {
+ switch ( rc ) {
+ case LDAP_URL_ERR_NODN:
+ adderr( gc, XP_GetClientStr(DBT_badUrlProvidedForBaseurlDirectiv_), filename, lineno );
+ break;
+ case LDAP_URL_ERR_MEM:
+ dsgw_error( DSGW_ERR_NOMEMORY,
+ XP_GetClientStr(DBT_parsingBaseurlDirective_),
+ DSGW_ERROPT_EXIT, 0, NULL );
+ break;
+ case LDAP_URL_ERR_NOTLDAP:
+ adderr( gc, XP_GetClientStr(DBT_badUrlProvidedForBaseurlDirectiv_1), filename, lineno );
+ break;
+ }
+ } else {
+ gc->gc_ldapserver = ludp->lud_host;
+ gc->gc_ldapport = ludp->lud_port;
+ if ( ludp->lud_dn == NULL ) {
+ gc->gc_ldapsearchbase = dsgw_ch_strdup( "" );
+ } else {
+ gc->gc_ldapsearchbase = ludp->lud_dn;
+ }
+ if (( ludp->lud_options & LDAP_URL_OPT_SECURE ) != 0 ) {
+#ifdef DSGW_NO_SSL
+ adderr( gc, XP_GetClientStr(DBT_LdapsUrlsAreNotYetSupportedN_),
+ filename, lineno );
+#else
+ gc->gc_ldapssl = 1;
+#endif
+ }
+ }
+
+ } else if ( strcasecmp( cargv[0], "template" ) == 0 ) {
+ if ( cargc < 3 ) {
+ adderr( gc, XP_GetClientStr(DBT_missingArgumentsForTemplateDirec_),
+ filename, lineno );
+ continue;
+ }
+ dsgw_addtemplate( &gc->gc_templates, cargv[1], cargc - 2,
+ &cargv[2] );
+
+#ifndef DSGW_NO_SSL
+ } else if ( strcasecmp( cargv[0], "sslrequired" ) == 0 ) {
+ if ( templatesonly ) continue;
+ if ( cargc < 2 ) {
+ adderr( gc, XP_GetClientStr(DBT_missingArgumentForSslrequiredDir_),
+ filename, lineno );
+ continue;
+ }
+ if ( strcasecmp( cargv[1], "never" ) == 0 ) {
+ gc->gc_sslrequired = DSGW_SSLREQ_NEVER;
+ } else if ( strcasecmp( cargv[1], "whenauthenticated" ) == 0 ) {
+ gc->gc_sslrequired = DSGW_SSLREQ_WHENAUTHENTICATED;
+ } else if ( strcasecmp( cargv[1], "always" ) == 0 ) {
+ gc->gc_sslrequired = DSGW_SSLREQ_ALWAYS;
+ } else {
+ adderr( gc, XP_GetClientStr(DBT_unknownArgumentToSslrequiredDire_), filename, lineno );
+ }
+
+ } else if ( strcasecmp( cargv[0], "securitypath" ) == 0 ) {
+ if ( templatesonly ) continue;
+ if ( cargc < 2 ) {
+ adderr( gc, XP_GetClientStr(DBT_missingArgumentForSecuritypathDi_),
+ filename, lineno );
+ continue;
+ }
+ gc->gc_securitypath = dsgw_ch_strdup( cargv[1] );
+#endif /* !DSGW_NO_SSL */
+
+ } else if ( strcasecmp( cargv[0], "htmldir" ) == 0 ) {
+ int lenth = 0;
+
+ if ( cargc < 2 ) {
+ adderr( gc, XP_GetClientStr(DBT_missingArgumentForHtmlpathDi_),
+ filename, lineno );
+ continue;
+ }
+
+ lenth = strlen(cargv[1]);
+
+ /*See if the user put a slash at the end of the htmldir directive..*/
+ if (cargv[1][lenth - 1] == '/' || cargv[1][lenth - 1] == '\\') {
+ gc->gc_docdir = dsgw_ch_strdup( cargv[1] );
+ } else {
+ /*If not, put it there*/
+ lenth ++;
+ gc->gc_docdir = dsgw_ch_malloc ((lenth+MAXPATHLEN) *sizeof (char));
+ PR_snprintf(gc->gc_docdir, lenth + MAXPATHLEN, "%s/", cargv[1]);
+ }
+ /* The nametrans used. For the gw, it's /dsgw/html/ */
+ } else if ( strcasecmp( cargv[0], "gwnametrans" ) == 0 ) {
+ if ( cargc < 2 ) {
+ adderr( gc, XP_GetClientStr(DBT_missingArgumentForNametransDi_),
+ filename, lineno );
+ continue;
+ }
+
+ /*
+ * This is needed for redirection. Can't use relative paths
+ * for Location:. If the gateway/phonebook/userDefinedGateway
+ * is running under a web server, it should be the html nametrans
+ * used to map to the html files. If it's under the admin server,
+ * it should be /dsgw/DIRECTORY_OF_HTML_FILES/ (which should be
+ * the same as the nameTrans.
+ */
+ gc->gc_gwnametrans = dsgw_ch_strdup( cargv[1] );
+
+ } else if ( strcasecmp( cargv[0], "configdir" ) == 0 ) {
+ int lenth = 0;
+
+ if ( cargc < 2 ) {
+ adderr( gc, XP_GetClientStr(DBT_missingArgumentForConfigpathDi_),
+ filename, lineno );
+ continue;
+ }
+
+ lenth = strlen(cargv[1]);
+
+ /*See if the user put a slash at the end of the htmldir directive..*/
+ if (cargv[1][lenth - 1] == '/' || cargv[1][lenth - 1] == '\\') {
+ gc->gc_configdir = dsgw_ch_strdup( cargv[1] );
+ } else {
+ /*If not, put it there*/
+ lenth ++;
+ gc->gc_configdir = dsgw_ch_malloc ((lenth+MAXPATHLEN) * sizeof (char));
+ PR_snprintf(gc->gc_configdir, lenth + MAXPATHLEN, "%s/",
+ cargv[1]);
+ }
+
+ gc->gc_tmpldir = dsgw_ch_strdup( gc->gc_configdir );
+
+ } else if ( strcasecmp( cargv[0], "location-suffix" ) == 0 ) {
+ if ( templatesonly ) continue;
+ if ( cargc < 2 ) {
+ adderr( gc,
+ XP_GetClientStr(DBT_missingArgumentForLocationSuffix_),
+ filename, lineno );
+ continue;
+ }
+ if ( locsuffix != NULL ) {
+ free( locsuffix );
+ }
+ locsuffix = dsgw_ch_strdup( cargv[1] );
+
+ } else if ( strcasecmp( cargv[0], "location" ) == 0 ) {
+ if ( templatesonly ) continue;
+ if ( cargc < 4 ) {
+ adderr( gc,
+ XP_GetClientStr(DBT_threeArgumentsAreRequiredForTheL_),
+ filename, lineno );
+ continue;
+ }
+ add_location( &gc->gc_newentryloccount, &gc->gc_newentrylocs,
+ locsuffix, &cargv[1] );
+
+ } else if ( strcasecmp( cargv[0], "newtype" ) == 0 ) {
+ if ( templatesonly ) continue;
+ if ( cargc < 3 ) {
+ adderr( gc,
+ XP_GetClientStr(DBT_atLeastTwoArgumentsAreRequiredFo_),
+ filename, lineno );
+ continue;
+ }
+ if ( add_newtype( &gc->gc_newentrytypes, gc->gc_newentryloccount,
+ gc->gc_newentrylocs, cargc - 1, &cargv[1] ) < 0 ) {
+ adderr( gc, XP_GetClientStr(DBT_unknownLocationInNewtypeDirectiv_),
+ filename, lineno );
+ }
+
+ } else if ( strcasecmp( cargv[0], "tmplset" ) == 0 ) {
+ if ( cargc != 4 && cargc != 5 ) {
+ adderr( gc,
+ XP_GetClientStr(DBT_threeOrFourArgumentsAreRequiredF_),
+ filename, lineno );
+ continue;
+ }
+ add_tmplset( &gc->gc_tmplsets, cargc - 1, &cargv[1] );
+
+ } else if ( strcasecmp( cargv[0], "attrvset" ) == 0 ) {
+ if ( cargc != 5 ) {
+ adderr( gc,
+ XP_GetClientStr(DBT_fourArgumentsAreRequiredForTheAt_),
+ filename, lineno );
+ continue;
+ }
+ add_avset( &gc->gc_avsets, &cargv[1] );
+
+ } else if ( strcasecmp( cargv[0], "includeset" ) == 0 ) {
+ if ( cargc != 3 ) {
+ adderr( gc,
+ XP_GetClientStr(DBT_twoArgumentsAreRequiredForTheInc_),
+ filename, lineno );
+ continue;
+ }
+ add_includeset( &gc->gc_includesets, &cargv[1] );
+
+ } else if ( strcasecmp( cargv[0], "charset" ) == 0 ) {
+ if ( cargc < 2 ) {
+ adderr( gc, XP_GetClientStr(DBT_missingArgumentForCharsetDirecti_),
+ filename, lineno );
+ continue;
+ }
+ gc->gc_charset = dsgw_ch_strdup( cargv[1] );
+
+/* the following is not needed because AdminServer */
+/* puts these into environment from ns-admin.conf */
+#ifdef NEED_LANG_FROM_DSGW_CONF
+ } else if ( strcasecmp( cargv[0], "ClientLanguage" ) == 0 ) {
+ if ( cargc < 2 ) {
+ adderr( gc,
+ XP_GetClientStr(DBT_missingArgumentForClientlanguage_),
+ filename, lineno );
+ continue;
+ }
+ gc->gc_ClientLanguage = dsgw_ch_strdup( cargv[1] );
+
+ } else if ( strcasecmp( cargv[0], "AdminLanguage" ) == 0 ) {
+ if ( cargc < 2 ) {
+ adderr( gc,
+ XP_GetClientStr(DBT_missingArgumentForAdminlanguageD_),
+ filename, lineno );
+ continue;
+ }
+ gc->gc_AdminLanguage = dsgw_ch_strdup( cargv[1] );
+
+ } else if ( strcasecmp( cargv[0], "DefaultLanguage" ) == 0 ) {
+ if ( cargc < 2 ) {
+ adderr( gc,
+ XP_GetClientStr(DBT_missingArgumentForDefaultlanguag_),
+ filename, lineno );
+ continue;
+ }
+ gc->gc_DefaultLanguage = dsgw_ch_strdup( cargv[1] );
+#endif
+
+ } else if ( strcasecmp( cargv[0], "NLS" ) == 0 ) {
+ if ( cargc < 2 ) {
+ adderr( gc,
+ XP_GetClientStr(DBT_missingArgumentForNLS_),
+ filename, lineno );
+ continue;
+ }
+ gc->gc_NLS = dsgw_ch_strdup( cargv[1] );
+
+ } else if ( strcasecmp( cargv[0], "vcard-property" ) == 0 ) {
+ if ( cargc != 4 && cargc != 5 ) {
+ adderr( gc,
+ XP_GetClientStr(DBT_threeOrFourArgumentsAreRequiredF_2),
+ filename, lineno );
+ continue;
+ }
+ if ( strcmp( cargv[2], "cis" ) != 0
+ && strcmp( cargv[2], "mls" ) != 0 ) {
+ adderr( gc,
+ XP_GetClientStr(DBT_vcardPropertySyntaxMustBeCisOrMl_),
+ filename, lineno );
+ continue;
+ }
+ add_vcardproperty( &gc->gc_vcardproperties, cargc - 1, &cargv[1] );
+
+ } else if ( strcasecmp( cargv[0], "ignoreAcceptCharsetFrom" ) == 0 ) {
+ int i;
+ gc->gc_clientIgnoreACharset = (char **)dsgw_ch_malloc( cargc );
+ --cargc;
+ for (i = 0; i < cargc; i++)
+ gc->gc_clientIgnoreACharset[i] = dsgw_ch_strdup_tolower( cargv[i+1] );
+ gc->gc_clientIgnoreACharset[i] = NULL;
+
+ } else if ( strcasecmp( cargv[0], "translate" ) == 0 ) {
+ if ( cargc != 3 ) {
+ adderr( gc,
+ XP_GetClientStr(DBT_twoArgumentsAreRequiredForTheInc_),
+ filename, lineno );
+ continue;
+ }
+ add_l10nset( &gc->gc_l10nsets, &cargv[1] );
+
+ /* include another config file */
+ } else if ( strcasecmp( cargv[0], "include" ) == 0 ) {
+ char *tmpfname = NULL;
+ char *path = NULL;
+ char *p;
+ int len;
+
+ if ( cargc < 2 ) {
+ adderr( gc, XP_GetClientStr(DBT_missingFilenameForIncludeDirecti_),
+ filename, lineno );
+ continue;
+ }
+ len = strlen( cargv[1] ) + 11;
+ tmpfname = dsgw_ch_malloc( len );
+ p = strrchr( cargv[1], '/' );
+ if ( p != NULL ) {
+ *p++ = '\0';
+ sprintf( tmpfname, "%s/$$LANGDIR/%s", cargv[1], p);
+ *(--p) = DSGW_PATHSEP_CHAR;
+ } else {
+ p = cargv[1];
+ sprintf( tmpfname, "$$LANGDIR/%s", p);
+ }
+
+ /* allocate buffers with enough extra room to fit "$$LANGDIR/" */
+ if ( NULL != gc->gc_ClientLanguage ) {
+ len += strlen( gc->gc_ClientLanguage );
+ }
+ path = dsgw_ch_malloc( len );
+ if ( GetFileForLanguage( tmpfname, gc->gc_ClientLanguage, path ) < 0 )
+ strcpy( path, cargv[1] );
+
+#ifdef DSGW_DEBUG
+ dsgw_log( "tmpfile: %s, path: %s, lang: %s\n",
+ tmpfname, path, gc->gc_ClientLanguage );
+#endif
+ read_dsgwconfig( path, locsuffix, templatesonly, 0 );
+ if ( tmpfname ) free( tmpfname );
+ if ( path ) free( path );
+
+ /*Special file that has binddn and password*/
+ } else if ( strcasecmp( cargv[0], "binddnfile" ) == 0 ) {
+ char *tmpfname;
+
+ if ( cargc < 2 ) {
+ adderr( gc, XP_GetClientStr(DBT_missingFilenameForBinddnfileDirecti_),
+ filename, lineno );
+ continue;
+ }
+
+ /* Make sure it has at least 1 slash in it */
+ if ( strstr(cargv[1], "/") == NULL) {
+ adderr( gc, XP_GetClientStr(DBT_badFilenameForBinddnfileDirecti_),
+ filename, lineno );
+ continue;
+ }
+
+ /* ... and no ".."'s */
+ if ( strstr(cargv[1], "..") != NULL) {
+ adderr( gc, XP_GetClientStr(DBT_badFilenameForBinddnfileDirecti_),
+ filename, lineno );
+ continue;
+ }
+
+ /* And no "dsgw" in it */
+ if ( strstr(cargv[1], "/dsgw/") != NULL) {
+ adderr( gc, XP_GetClientStr(DBT_badFilenameForBinddnfileDirecti_),
+ filename, lineno );
+ continue;
+ }
+
+
+ tmpfname = dsgw_ch_strdup( cargv[1] );
+ read_dsgwconfig( tmpfname, locsuffix, templatesonly, 1 /*binddn file*/ );
+ free( tmpfname );
+ /*
+ * Only consider the binddn directive if this file was
+ * included from another file with the binddnfile
+ * directive. This is to prevent the stupid user from
+ * inlining the binddn and bindpw in dsgw.conf. This is
+ * bad because you can read dsgw.conf with a browser if
+ * you set up your web server to serve up the gateway.
+ * Just goto http://host/dsgw/context/dsgw.conf . It is
+ * my hope that the binddn file will be outside
+ * NS-HOME/dsgw, because people can get at it if it's in
+ * there.
+ */
+ } else if ( strcasecmp( cargv[0], "binddn" ) == 0 ) {
+ if (!binddnfile) {
+ adderr( gc, XP_GetClientStr(DBT_wrongPlaceForBinddnDirectiv_),
+ filename, lineno );
+ continue;
+ }
+ if ( templatesonly ) continue;
+ if ( cargc < 2 ) {
+ adderr( gc, XP_GetClientStr(DBT_missingArgumentForBinddnDirectiv_),
+ filename, lineno );
+ continue;
+ }
+ gc->gc_binddn = dsgw_ch_strdup( cargv[ 1 ]);
+
+ } else if ( strcasecmp( cargv[0], "bindpw" ) == 0 ) {
+ if (!binddnfile) {
+ adderr( gc, XP_GetClientStr(DBT_wrongPlaceForBinddnDirectiv_),
+ filename, lineno );
+ continue;
+ }
+
+ if ( templatesonly ) continue;
+ if ( cargc < 2 ) {
+ adderr( gc, XP_GetClientStr(DBT_missingArgumentForBindpwDirectiv_),
+ filename, lineno );
+ continue;
+ }
+ gc->gc_bindpw = dsgw_ch_strdup( cargv[ 1 ]);
+
+ } else {
+ adderr( gc, XP_GetClientStr(DBT_unknownDirectiveInConfigFileN_),
+ filename, lineno );
+ }
+ }
+
+ if ( gc == NULL || gc->gc_configerr > 0 ) {
+ dsgw_error( DSGW_ERR_BADCONFIG, ( gc->gc_configerrstr == NULL ) ?
+ "" : gc->gc_configerrstr, DSGW_ERROPT_EXIT, 0, NULL );
+ }
+}
+
+int
+erase_db() {
+
+ FILE *fp;
+ int rc, lineno;
+ char *line;
+ char *cargv[ MAXARGS ];
+ int cargc;
+ char cmd[ BIG_LINE ];
+
+ if ( (fp = fopen( gc->gc_localdbconf, "r" )) == NULL ) {
+ dsgw_emitf (XP_GetClientStr(DBT_EraseDbCouldNotOpenLcacheConfFil_),
+ gc->gc_localdbconf);
+ return( -1 );
+ }
+ fp_getline_init( &lineno );
+
+ while ( (line = fp_getline( fp, &lineno )) != NULL ) {
+ fp_parse_line( line, &cargc, cargv );
+ if ( strcasecmp( cargv[0], "directory" ) == 0) {
+#ifdef XP_WIN32
+ dsgw_unix2dospath( cargv[1] );
+#endif
+ PR_snprintf (cmd, BIG_LINE, "%s %s%c* > %s 2>&1", DSGW_DELETE_CMD, cargv[1],
+ DSGW_PATHSEP_CHAR, DSGW_NULL_DEVICE);
+ fflush (0);
+ if (system (cmd) == 0) {
+ /*
+ * success: display status message
+ */
+ dsgw_emits( XP_GetClientStr(DBT_FontSize1NPTheDatabaseHasBeenDel_) );
+ rc = 0;
+ }
+ else {
+ dsgw_emits( XP_GetClientStr(DBT_FontSize1NPTheDatabaseCouldNotBe_) );
+ rc = -1;
+ }
+
+ dsgw_emits( "<HR>\n" );
+ fclose( fp );
+ return( rc );
+ }
+ }
+ return -1;
+}
+
+void
+app_suffix (char *ldif, char *suffix)
+{
+ FILE *oldfp, *newfp;
+ char *orig_line;
+ char *p;
+ char buf[BUFSIZ];
+ int i, cargc;
+ char *cargv[ 100 ];
+ char tmpldif[ 128 ];
+ char *dns[] = { "aliasedobjectname:",
+ "aliasedobjectname:",
+ "associatedname:",
+ "dependentupon:",
+ "ditredirect:",
+ "dn:",
+ "documentauthor:",
+ "documentauthor:",
+ "documentavailable:",
+ "errorsto:",
+ "errorsto:",
+ "imagefiles:",
+ "lastmodifiedby:",
+ "manager:",
+ "member:",
+ "memberofgroup:",
+ "naminglink:",
+ "naminglink:",
+ "obsoletedbydocument:",
+ "obsoletesdocument:",
+ "owner:",
+ "proxy:",
+ "reciprocalnaminglink:",
+ "reciprocalnaminglink:",
+ "replicaroot:",
+ "replicabinddn:",
+ "requeststo:",
+ "roleoccupant:",
+ "secretary:",
+ "seealso:",
+ "uniqueMember:",
+ "updatedbydocument:",
+ "updatesdocument:",
+ NULL
+ };
+
+
+ if ( (oldfp = fopen( ldif, "r" )) == NULL ) {
+ dsgw_emitf (XP_GetClientStr(DBT_AppSuffixCouldNotOpenLdifFileSN_),
+ ldif);
+ return;
+ }
+
+ PR_snprintf( tmpldif, 128, "%s.tmp", ldif);
+ if ( (newfp = fopen( tmpldif, "w" )) == NULL ) {
+ dsgw_emitf (XP_GetClientStr(DBT_AppSuffixCouldNotOpenTmpFileSN_),
+ ldif);
+ return;
+ }
+ while ( fgets( buf, sizeof(buf), oldfp ) != NULL ) {
+ /* skip comments and blank lines */
+ if ( buf[0] == '#' || buf[0] == '\0' || buf[0] == '\n') {
+ fputs( buf, newfp );
+ continue;
+ }
+ orig_line = dsgw_ch_strdup( buf );
+
+ fp_parse_line( buf, &cargc, cargv );
+ for (i=0; dns[i]!=NULL; i++) {
+ if ( strcasecmp( cargv[0], dns[i] ) == 0 ) {
+ if ( (p = strchr( orig_line, '\n' )) != NULL ) {
+ *p = '\0';
+ }
+ fprintf ( newfp, "%s, %s\n", orig_line, suffix );
+ break;
+ }
+ }
+
+ if ( dns[i] == NULL ) {
+ fputs( orig_line, newfp );
+ }
+ free (orig_line);
+ }
+ fclose(newfp);
+ fclose(oldfp);
+ unlink( ldif );
+ if ( rename( tmpldif, ldif ) != 0 ) {
+ dsgw_emitf (XP_GetClientStr(DBT_unableToRenameSToS_), tmpldif, ldif );
+ return;
+ }
+}
+
+/*
+ * Running under admserv - traverse the list of property/value pairs
+ * returned by dbconf_read_default_dbinfo().
+ */
+static void
+get_dbconf_properties( char *filename )
+{
+ DBConfDBInfo_t *db_info;
+ DBPropVal_t *dbp;
+ int rc;
+ LDAPURLDesc *ludp;
+ LDAPDBURLDesc *ldbudp;
+
+ if (( rc = dbconf_read_default_dbinfo( filename, &db_info ))
+ != LDAPU_SUCCESS ) {
+ report_ldapu_error( rc, DSGW_ERR_BADCONFIG, DSGW_ERROPT_EXIT );
+ }
+
+ if ( db_info == NULL ) {
+ dsgw_error( DSGW_ERR_DBCONF,
+ XP_GetClientStr(DBT_nullPointerReturnedByDbconfReadD_),
+ DSGW_ERROPT_EXIT, 0, NULL );
+ }
+
+ if ( strcasecmp( db_info->dbname, DBCONF_DEFAULT_DBNAME ) != 0 ) {
+ dsgw_error( DSGW_ERR_DBCONF, db_info->dbname, DSGW_ERROPT_EXIT, 0,
+ NULL );
+ }
+
+#ifdef DSGW_DEBUG
+ dsgw_log( "opened dbconf, dbname is %s, dburl is %s\n", db_info->dbname,
+ db_info->url );
+#endif
+
+ /* Parse the LDAPURL or LDAPDBURL */
+ gc->gc_baseurl = dsgw_ch_strdup( db_info->url );
+ rc = ldapdb_url_parse( gc->gc_baseurl, &ldbudp );
+
+ if ( rc == 0 ) {
+ gc->gc_localdbconf = dsgw_ch_strdup( ldbudp->ludb_path );
+ gc->gc_ldapserver = NULL;
+ gc->gc_ldapport = -1;
+ gc->gc_ldapsearchbase = dsgw_ch_strdup( ldbudp->ludb_dn );
+#ifndef DSGW_NO_SSL
+ gc->gc_ldapssl = 0;
+#endif
+
+ /* If url isn't "ldapdb://", let the code below have a crack */
+ } else if ( rc != DSGW_ERR_LDAPDBURL_NOTLDAPDB ) {
+ switch ( rc ) {
+ case DSGW_ERR_LDAPDBURL_NODN:
+ adderr( gc, XP_GetClientStr(DBT_badLdapdbUrlTheBaseDnIsMissingN_), NULL, 0 );
+ break;
+ case DSGW_ERR_LDAPDBURL_BAD:
+ adderr( gc, XP_GetClientStr(DBT_badLdapdbUrlN_), NULL, 0 );
+ break;
+ }
+ } else {
+ if (( rc = ldap_url_parse( gc->gc_baseurl, &ludp )) != 0 ) {
+ switch ( rc ) {
+ case LDAP_URL_ERR_NODN:
+ adderr( gc, XP_GetClientStr(DBT_badUrlProvidedForBaseurlDirectiv_2),
+ NULL, 0 );
+ break;
+ case LDAP_URL_ERR_MEM:
+ dsgw_error( DSGW_ERR_NOMEMORY,
+ XP_GetClientStr(DBT_parsingBaseurlDirective_1),
+ DSGW_ERROPT_EXIT, 0, NULL );
+ break;
+ case LDAP_URL_ERR_NOTLDAP:
+ adderr( gc, XP_GetClientStr(DBT_badUrlProvidedForBaseurlDirectiv_3), NULL, 0 );
+ break;
+ }
+ } else {
+ gc->gc_ldapserver = ludp->lud_host;
+ gc->gc_ldapport = ludp->lud_port;
+ if ( ludp->lud_dn == NULL ) {
+ gc->gc_ldapsearchbase = dsgw_ch_strdup( "" );
+ } else {
+ gc->gc_ldapsearchbase = ludp->lud_dn;
+ }
+ if ( ( ludp->lud_options & LDAP_URL_OPT_SECURE ) != 0 ) {
+#ifdef DSGW_NO_SSL
+ adderr( gc, XP_GetClientStr(DBT_LdapsUrlsAreNotYetSupportedN_1),
+ NULL, 0 );
+#else
+ gc->gc_ldapssl = 1;
+#endif
+ }
+ }
+ }
+
+ /* Look through the properties for binddn and bindpw */
+ for ( dbp = db_info->firstprop; dbp != NULL; dbp = dbp->next ) {
+
+#ifdef DSGW_DEBUG
+ dsgw_log( "get prop: prop = %s, val = %s\n", dbp->prop, dbp->val );
+#endif
+
+ if ( strcasecmp( dbp->prop, "binddn" ) == 0 ) {
+ if ( dbp->val == NULL || strlen( dbp->val ) == 0 ) {
+ dsgw_error( DSGW_ERR_DBCONF,
+ XP_GetClientStr(DBT_noValueGivenForBinddn_),
+ DSGW_ERROPT_EXIT, 0, NULL );
+ }
+ gc->gc_binddn = dsgw_ch_strdup( dbp->val );
+
+ } else if ( strcasecmp( dbp->prop, "bindpw" ) == 0 ) {
+ if ( dbp->val == NULL || strlen( dbp->val ) == 0 ) {
+ dsgw_error( DSGW_ERR_DBCONF,
+ XP_GetClientStr(DBT_noValueGivenForBindpw_),
+ DSGW_ERROPT_EXIT, 0, NULL );
+ }
+ gc->gc_bindpw = dsgw_ch_strdup( dbp->val );
+ }
+ }
+
+ if ( gc == NULL || gc->gc_configerr > 0 ) {
+ dsgw_error( DSGW_ERR_BADCONFIG, ( gc->gc_configerrstr == NULL ) ?
+ "" : gc->gc_configerrstr, DSGW_ERROPT_EXIT, 0, NULL );
+ }
+ if ( gc->gc_baseurl == NULL ) {
+ dsgw_error( DSGW_ERR_BADCONFIG,
+ XP_GetClientStr(DBT_thereIsNoDefaultDirectoryService_),
+ DSGW_ERROPT_EXIT, 0, NULL );
+ }
+ return;
+}
+
+
+/*
+ * Update the dbswitch.conf file (used under admin. server) to reflect
+ * the local/remote directory information contained in "cfgp". Our basic
+ * strategy is to read the existing dbswitch.conf file, replacing and adding
+ * lines that look like this:
+ * directory <dbhandle> ...
+ * <dbhandle>:binddn ...
+ * <dbhandle>:encoded bindpw ...
+ * as necessary. We write a new, temporary config file (copying all other
+ * lines over unchanged) and then replace the old file with our new one.
+ *
+ * If cfgp is configured for localdb mode, we only write a directory line.
+ *
+ * We return zero if all goes well and non-zero if not.
+ *
+ * Note that all reading and writing of the dbswitch.conf file is now done
+ * using the dbconf...() functions that are part of the ldaputil library, so
+ * any comments, blank lines, or unrecognized config file lines will be lost.
+ * Also, all "bindpw" property values will be encoded when re-written.
+ *
+ * Only these members of the cfgp structure are used in this function:
+ * gc_localdbconf (NULL if using remote LDAP server)
+ * gc_ldapsearchbase
+ * gc_ldapserver
+ * gc_ldapport
+ * gc_ldapssl
+ * gc_binddn
+ * gc_bindpw
+ * Actually, if gc_localdbconf is not NULL, only it and gc_ldapsearchbase are
+ * used.
+ */
+int
+dsgw_update_dbswitch( dsgwconfig *cfgp, char *dbhandle, int erropts )
+{
+ char oldfname[ MAXPATHLEN ], newfname[ MAXPATHLEN ];
+ char *userdb_path, buf[ MAXPATHLEN + 100 ];
+ int rc, wrote_dbinfo;
+ FILE *newfp;
+ DBConfInfo_t *cip;
+ DBConfDBInfo_t *dbip;
+ DBPropVal_t *pvp;
+
+ if ( dbhandle == NULL ) {
+ dbhandle = "default";
+ }
+
+ if (( userdb_path = get_userdb_dir()) == NULL ) {
+ dsgw_error( DSGW_ERR_USERDB_PATH, NULL, erropts, 0, NULL );
+ return( -1 );
+ }
+
+ /* read old dbswitch.conf contents */
+ PR_snprintf( oldfname, MAXPATHLEN, "%s/%s", userdb_path,
+ DSGW_DBSWITCH_FILE );
+ if (( rc = dbconf_read_config_file( oldfname, &cip )) != LDAPU_SUCCESS ) {
+ report_ldapu_error( rc, DSGW_ERR_BADCONFIG, erropts );
+ return( -1 );
+ }
+
+ /* write db info to new file, replacing information for "dbhandle" */
+ PR_snprintf( newfname, MAXPATHLEN, "%s/%s", userdb_path,
+ DSGW_DBSWITCH_TMPFILE );
+ if (( newfp = fopen( newfname, "w" )) == NULL ) {
+ PR_snprintf( buf, MAXPATHLEN + 100,
+ XP_GetClientStr(DBT_cannotOpenConfigFileSForWritingN_), newfname );
+ dsgw_error( DSGW_ERR_UPDATE_DBSWITCH, buf, erropts, 0, NULL );
+ return( -1 );
+ }
+
+ wrote_dbinfo = 0;
+ for ( dbip = cip->firstdb; dbip != NULL; dbip = dbip->next ) {
+ if ( strcasecmp( dbip->dbname, dbhandle ) == 0 ) {
+ /*
+ * found db name to be replaced: replace with updated information
+ */
+ if (( rc = write_dbswitch_info( newfp, cfgp, dbhandle )) !=
+ LDAPU_SUCCESS ) {
+ report_ldapu_error( rc, DSGW_ERR_UPDATE_DBSWITCH, erropts );
+ return( -1 );
+ }
+
+ wrote_dbinfo = 1;
+
+ } else {
+ /*
+ * re-write existing db conf information without changes
+ */
+ if (( rc = dbconf_output_db_directive( newfp, dbip->dbname,
+ dbip->url )) != LDAPU_SUCCESS ) {
+ report_ldapu_error( rc, DSGW_ERR_UPDATE_DBSWITCH, erropts );
+ return( -1 );
+ }
+
+ for ( pvp = dbip->firstprop; pvp != NULL; pvp = pvp->next ) {
+ if (( rc = dbconf_output_propval( newfp, dbip->dbname,
+ pvp->prop, pvp->val,
+ strcasecmp( pvp->prop, "bindpw" ) == 0 ))
+ != LDAPU_SUCCESS ) {
+ report_ldapu_error( rc, DSGW_ERR_UPDATE_DBSWITCH, erropts );
+ return( -1 );
+ }
+ }
+ }
+ }
+
+ if ( !wrote_dbinfo ) {
+ if (( rc = write_dbswitch_info( newfp, cfgp, dbhandle )) !=
+ LDAPU_SUCCESS ) {
+ report_ldapu_error( rc, DSGW_ERR_UPDATE_DBSWITCH, erropts );
+ return( -1 );
+ }
+ }
+
+ dbconf_free_confinfo( cip );
+ fclose( newfp );
+
+ /* replace old file with new one */
+#ifdef _WIN32
+ if ( !MoveFileEx( newfname, oldfname, MOVEFILE_REPLACE_EXISTING )) {
+#else
+ if ( rename( newfname, oldfname ) != 0 ) {
+#endif
+ PR_snprintf( buf, MAXPATHLEN + 100,
+ XP_GetClientStr(DBT_unableToRenameSToS_1), newfname, oldfname );
+ dsgw_error( DSGW_ERR_UPDATE_DBSWITCH, buf, erropts, 0, NULL );
+ return( -1 );
+ }
+
+ return( 0 );
+}
+
+
+static int
+write_dbswitch_info( FILE *fp, dsgwconfig *cfgp, char *dbhandle )
+{
+ char *escapeddn, *url;
+ int rc;
+
+ escapeddn = dsgw_strdup_escaped( cfgp->gc_ldapsearchbase );
+
+ if ( cfgp->gc_localdbconf == NULL ) { /* remote server: write ldap:// URL */
+ url = dsgw_ch_malloc( 21 + strlen( cfgp->gc_ldapserver )
+ + strlen( escapeddn )); /* room for "ldaps://HOST:PORT/DN" */
+ sprintf( url, "ldap%s://%s:%d/%s",
+#ifdef DSGW_NO_SSL
+ "",
+#else
+ cfgp->gc_ldapssl ? "s" : "",
+#endif
+ cfgp->gc_ldapserver, cfgp->gc_ldapport, escapeddn );
+ } else { /* local db: write ldapdb:// URL */
+ url = dsgw_ch_malloc( 11 + strlen( cfgp->gc_localdbconf )
+ + strlen( escapeddn )); /* room for "ldapdb://PATH/DN" */
+ sprintf( url, "ldapdb://%s/%s\n", cfgp->gc_localdbconf, escapeddn );
+ }
+
+ rc = dbconf_output_db_directive( fp, dbhandle, url );
+
+ free( url );
+ free( escapeddn );
+
+ if ( rc != LDAPU_SUCCESS ) {
+ return( rc );
+ }
+
+ if ( cfgp->gc_localdbconf == NULL ) { /* using directory server */
+ if ( cfgp->gc_binddn != NULL &&
+ ( rc = dbconf_output_propval( fp, dbhandle, "binddn",
+ cfgp->gc_binddn, 0 ) != LDAPU_SUCCESS )) {
+ return( rc );
+ }
+
+ if ( cfgp->gc_bindpw != NULL &&
+ ( rc = dbconf_output_propval( fp, dbhandle, "bindpw",
+ cfgp->gc_bindpw, 1 ) != LDAPU_SUCCESS )) {
+ return( rc );
+ }
+ }
+
+ return( LDAPU_SUCCESS );
+}
+
+
+/* pass 0 for lineno if it is unknown or not applicable */
+static void
+adderr( dsgwconfig *gc, char *str, char *filename, int lineno )
+{
+ char *lbuf = dsgw_ch_malloc( MAXPATHLEN + 200 );
+
+ gc->gc_configerr++;
+ if ( lineno == 0 ) {
+ PR_snprintf( lbuf, MAXPATHLEN + 200,
+ XP_GetClientStr(DBT_configFileS_), filename );
+ } else {
+ PR_snprintf( lbuf, MAXPATHLEN + 200,
+ XP_GetClientStr(DBT_configFileSLineD_), filename, lineno );
+ }
+ gc->gc_configerrstr = dsgw_ch_realloc( gc->gc_configerrstr,
+ strlen( gc->gc_configerrstr ) + strlen( str )
+ + strlen( lbuf ) + 6 );
+ strcat( gc->gc_configerrstr, lbuf );
+ strcat( gc->gc_configerrstr, str );
+ strcat( gc->gc_configerrstr, "<BR>\n" );
+ free( lbuf );
+}
+
+
+static void
+add_location( int *loccountp, dsgwloc **locarrayp, char *locsuffix,
+ char **argv )
+{
+ int len;
+ dsgwloc *locp;
+
+ *locarrayp = (dsgwloc *)dsgw_ch_realloc( *locarrayp,
+ ( *loccountp + 1 ) * sizeof( dsgwloc ));
+ locp = &((*locarrayp)[ *loccountp ]);
+ locp->dsloc_handle = dsgw_ch_strdup( argv[0] );
+ locp->dsloc_fullname = dsgw_ch_strdup( argv[1] );
+ len = strlen( argv[2] );
+
+ if ( argv[2][ len - 1 ] == '#' ) {
+ /* '#' implies that locsuffix is not to be appended */
+ locp->dsloc_dnsuffix = dsgw_ch_strdup( argv[2] );
+ locp->dsloc_dnsuffix[ len - 1 ] = '\0';
+
+ } else if ( locsuffix != NULL && *locsuffix != '\0' ) {
+ /* append suffix, preceded by ", " if location arg. is not "" */
+ locp->dsloc_dnsuffix = dsgw_ch_malloc( len + strlen( locsuffix ) + 3 );
+ if ( argv[2][0] != '\0' ) {
+ strcpy( locp->dsloc_dnsuffix, argv[2] );
+ strcat( locp->dsloc_dnsuffix, ", " );
+ strcat( locp->dsloc_dnsuffix, locsuffix );
+ } else {
+ strcpy( locp->dsloc_dnsuffix, locsuffix );
+ }
+
+ } else {
+ locp->dsloc_dnsuffix = dsgw_ch_strdup( argv[2] );
+ }
+ ++(*loccountp);
+}
+
+
+static int
+add_newtype( dsgwnewtype **newentlistp, int loccount, dsgwloc *locarray,
+ int argc, char **argv )
+{
+ int i, j;
+ dsgwnewtype *ntp, *prevntp;
+
+ ntp = (dsgwnewtype *)dsgw_ch_malloc( sizeof( dsgwnewtype ));
+ ntp->dsnt_template = dsgw_ch_strdup( argv[0] );
+ ntp->dsnt_fullname = dsgw_ch_strdup( argv[1] );
+ ntp->dsnt_rdnattr = dsgw_ch_strdup( argv[2] );
+ ntp->dsnt_next = NULL;
+ ntp->dsnt_loccount = argc - 3;
+ argv = &argv[3];
+
+ /* fill dsnt_locations array with indexes into gc->gc_newentrylocs */
+ if ( ntp->dsnt_loccount <= 0 ) {
+ ntp->dsnt_locations = NULL;
+ } else {
+ int foundit;
+ ntp->dsnt_locations = (int *)dsgw_ch_malloc( ntp->dsnt_loccount *
+ sizeof( int ));
+ for ( i = 0; i < ntp->dsnt_loccount; ++i ) {
+ foundit = 0;
+ for ( j = 0; j < loccount && !foundit; ++j ) {
+ if ( strcasecmp( argv[ i ], locarray[ j ].dsloc_handle )
+ == 0 ) {
+ ntp->dsnt_locations[ i ] = j;
+ foundit = 1;
+ }
+ }
+ /* if ( j >= loccount ) { */
+ if ( !foundit ) {
+ return( -1 ); /* unknown location -- error */
+ }
+ }
+ }
+
+ /* append to linked list of new entry structures */
+ if ( *newentlistp == NULL ) {
+ *newentlistp = ntp;
+ } else {
+ for ( prevntp = *newentlistp; prevntp->dsnt_next != NULL;
+ prevntp = prevntp->dsnt_next ) {
+ ;
+ }
+ prevntp->dsnt_next = ntp;
+ }
+
+ return( 0 );
+}
+
+
+static void
+add_tmplset( dsgwtmplset **tslp, int argc, char **argv )
+{
+ dsgwtmplset *prevtsp, *tsp;
+ dsgwview *prevvp, *vp;
+
+ prevtsp = NULL;
+ tsp = *tslp;
+ while ( tsp != NULL ) {
+ if ( strcasecmp( tsp->dstset_name, argv[0] ) == 0 ) {
+ break;
+ }
+ prevtsp = tsp;
+ tsp = tsp->dstset_next;
+ }
+
+ if ( tsp == NULL ) { /* new template set */
+ tsp = (dsgwtmplset *)dsgw_ch_malloc( sizeof( dsgwtmplset ));
+ memset( tsp, 0, sizeof( dsgwtmplset ));
+ tsp->dstset_name = dsgw_ch_strdup( argv[0] );
+ if ( prevtsp == NULL ) {
+ *tslp = tsp;
+ } else {
+ prevtsp->dstset_next = tsp;
+ }
+ }
+
+ /* add a new view to the end of this template set's view list */
+ vp = (dsgwview *)dsgw_ch_malloc( sizeof( dsgwview ));
+ memset( vp, 0, sizeof( dsgwview ));
+ vp->dsview_caption = dsgw_ch_strdup( argv[1] );
+ vp->dsview_template = dsgw_ch_strdup( argv[2] );
+ if ( argc > 3 ) {
+ vp->dsview_jscript = dsgw_ch_strdup( argv[3] );
+ }
+
+ if ( tsp->dstset_viewlist == NULL ) {
+ tsp->dstset_viewlist = vp;
+ } else {
+ for ( prevvp = tsp->dstset_viewlist; prevvp->dsview_next != NULL;
+ prevvp = prevvp->dsview_next ) {
+ ;
+ }
+ prevvp->dsview_next = vp;
+ }
+ ++tsp->dstset_viewcount;
+}
+
+
+static void
+add_avset( dsgwavset **avsp, char **argv ) /* 4 args. in argv[] */
+{
+ dsgwavset *prevavp, *avp;
+
+ /* is this the first element of a set? */
+ prevavp = NULL;
+ for ( avp = *avsp; avp != NULL; avp = avp->dsavset_next ) {
+ if ( strcasecmp( avp->dsavset_handle, argv[0] ) == 0 ) {
+ break;
+ }
+ prevavp = avp;
+ }
+
+ if ( avp == NULL ) { /* first element: add a new set */
+ avp = (dsgwavset *)dsgw_ch_malloc( sizeof( dsgwavset ));
+ memset( avp, 0, sizeof( dsgwavset ));
+ avp->dsavset_handle = dsgw_ch_strdup( argv[0] );
+ if ( prevavp == NULL ) {
+ *avsp = avp;
+ } else {
+ prevavp->dsavset_next = avp;
+ }
+ }
+
+ ++avp->dsavset_itemcount;
+ avp->dsavset_values = (char **)dsgw_ch_realloc( avp->dsavset_values,
+ avp->dsavset_itemcount * sizeof( char * ));
+ avp->dsavset_values[ avp->dsavset_itemcount - 1 ] =
+ dsgw_ch_strdup( argv[1] );
+ avp->dsavset_prefixes = (char **)dsgw_ch_realloc( avp->dsavset_prefixes,
+ avp->dsavset_itemcount * sizeof( char * ));
+ avp->dsavset_prefixes[ avp->dsavset_itemcount - 1 ] =
+ dsgw_ch_strdup( argv[2] );
+ avp->dsavset_suffixes = (char **)dsgw_ch_realloc( avp->dsavset_suffixes,
+ avp->dsavset_itemcount * sizeof( char * ));
+ avp->dsavset_suffixes[ avp->dsavset_itemcount - 1 ] =
+ dsgw_ch_strdup( argv[3] );
+}
+
+
+static void
+add_includeset( dsgwinclset **isp, char **argv ) /* 2 args. in argv[] */
+{
+ dsgwinclset *previsp, *tmpisp;
+
+ /* is this the first element of a set? */
+ previsp = NULL;
+ for ( tmpisp = *isp; tmpisp != NULL; tmpisp = tmpisp->dsiset_next ) {
+ if ( strcasecmp( tmpisp->dsiset_handle, argv[0] ) == 0 ) {
+ break;
+ }
+ previsp = tmpisp;
+ }
+
+ if ( tmpisp == NULL ) { /* first element: add a new set */
+ tmpisp = (dsgwinclset *)dsgw_ch_malloc( sizeof( dsgwinclset ));
+ memset( tmpisp, 0, sizeof( dsgwinclset ));
+ tmpisp->dsiset_handle = dsgw_ch_strdup( argv[0] );
+ if ( previsp == NULL ) {
+ *isp = tmpisp;
+ } else {
+ previsp->dsiset_next = tmpisp;
+ }
+ }
+
+ ++tmpisp->dsiset_itemcount;
+ tmpisp->dsiset_filenames =
+ (char **)dsgw_ch_realloc( tmpisp->dsiset_filenames,
+ tmpisp->dsiset_itemcount * sizeof( char * ));
+ tmpisp->dsiset_filenames[ tmpisp->dsiset_itemcount - 1 ] =
+ dsgw_ch_strdup( argv[1] );
+}
+
+static void
+add_l10nset( dsgwsubst **l10np, char **argv ) /* 2 args, in argv[] */
+{
+ dsgwsubst *tmpsp;
+
+ tmpsp = (dsgwsubst *)dsgw_ch_malloc( sizeof( dsgwsubst ));
+ tmpsp->dsgwsubst_from = dsgw_ch_strdup( argv[0] );
+ tmpsp->dsgwsubst_to = dsgw_ch_strdup( argv[1] );
+ tmpsp->dsgwsubst_next = *l10np;
+ *l10np = tmpsp;
+}
+
+static void
+add_vcardproperty( dsgwvcprop **vcpropp, int argc, char **argv )
+{
+ dsgwvcprop *prevvcp, *newvcp, *vcp;
+
+ newvcp = (dsgwvcprop *)dsgw_ch_malloc( sizeof( dsgwvcprop ));
+ newvcp->dsgwvcprop_next = NULL;
+ newvcp->dsgwvcprop_property = dsgw_ch_strdup( argv[0] );
+ newvcp->dsgwvcprop_syntax = dsgw_ch_strdup( argv[1] );
+ newvcp->dsgwvcprop_ldaptype = dsgw_ch_strdup( argv[2] );
+ if ( argc == 3 ) {
+ newvcp->dsgwvcprop_ldaptype2 = NULL;
+ } else {
+ newvcp->dsgwvcprop_ldaptype2 = dsgw_ch_strdup( argv[3] );
+ }
+
+ prevvcp = NULL;
+ for ( vcp = *vcpropp; vcp != NULL; vcp = vcp->dsgwvcprop_next ) {
+ prevvcp = vcp;
+ }
+
+ if ( prevvcp == NULL ) {
+ *vcpropp = newvcp;
+ } else {
+ prevvcp->dsgwvcprop_next = newvcp;
+ }
+}
+
+
+static char *
+strtok_quote( char *line, char *sep )
+ /* This implementation can't handle characters > 127 in sep.
+ But it works fine for sep == " \t".
+ */
+{
+ int inquote;
+ char *tmp;
+ static char *next;
+
+ if ( line != NULL ) {
+ next = line;
+ }
+ while ( *next && strchr( sep, *next ) ) {
+ next++;
+ }
+
+ if ( *next == '\0' ) {
+ next = NULL;
+ return( NULL );
+ }
+ tmp = next;
+
+ for ( inquote = 0; *next; ) {
+ switch ( *next ) {
+ case '"':
+ if ( inquote ) {
+ inquote = 0;
+ } else {
+ inquote = 1;
+ }
+ strcpy( next, next + 1 );
+ break;
+
+#ifndef _WIN32
+ case '\\':
+ strcpy( next, next + 1 );
+ break;
+#endif
+
+ default:
+ if ( ! inquote ) {
+ if ( strchr( sep, *next ) != NULL ) {
+ *next++ = '\0';
+ return( tmp );
+ }
+ }
+ next++;
+ break;
+ }
+ }
+
+ return( tmp );
+}
+
+static char buf[BUFSIZ];
+static char *line;
+static int lmax, lcur;
+
+#define CATLINE( buf ) { \
+ int len; \
+ len = strlen( buf ); \
+ while ( lcur + len + 1 > lmax ) { \
+ lmax += BUFSIZ; \
+ line = (char *) dsgw_ch_realloc( line, lmax ); \
+ } \
+ strcpy( line + lcur, buf ); \
+ lcur += len; \
+}
+
+
+
+static void
+fp_parse_line(
+ char *line,
+ int *argcp,
+ char **argv
+)
+{
+ char * token, buf[ 20 ];
+
+ *argcp = 0;
+ for ( token = strtok_quote( line, " \t" ); token != NULL;
+ token = strtok_quote( NULL, " \t" ) ) {
+ if ( *argcp == MAXARGS ) {
+ PR_snprintf( buf, 20,
+ XP_GetClientStr(DBT_maxD_), MAXARGS );
+ dsgw_error( DSGW_ERR_CONFIGTOOMANYARGS, buf,
+ DSGW_ERROPT_EXIT, 0, NULL );
+ }
+ argv[(*argcp)++] = token;
+ }
+ argv[*argcp] = NULL;
+}
+
+
+
+static char *
+fp_getline( FILE *fp, int *lineno )
+{
+ char *p;
+
+ lcur = 0;
+
+ while ( fgets( buf, sizeof(buf), fp ) != NULL ) {
+ if ( (p = strchr( buf, '\n' )) != NULL ) {
+ *p = '\0';
+ }
+ if ( lcur > 0 && ! ldap_utf8isspace( buf ) ) {
+ return( line ); /* return previously saved line */
+ }
+ CATLINE( buf );
+ (*lineno)++;
+ if ( ! ldap_utf8isspace( buf )) {
+ return( line ); /* return this line */
+ }
+ }
+ buf[0] = '\0';
+
+ return( lcur > 0 ? line : NULL );
+}
+
+static void
+fp_getline_init( int *lineno )
+{
+ *lineno = 0;
+ buf[0] = '\0';
+}
+
+
+static int
+ldapdb_url_parse( char *url, LDAPDBURLDesc **ldbudpp )
+{
+/*
+ * Pick apart the pieces of an ldapdb:// quasi-URL
+ */
+ LDAPDBURLDesc *ldbudp;
+ char *basedn;
+
+ *ldbudpp = NULL;
+
+ if ( strncasecmp( url, LDAPDB_URL_PREFIX, LDAPDB_URL_PREFIX_LEN )) {
+ return( DSGW_ERR_LDAPDBURL_NOTLDAPDB );
+ }
+
+ /* allocate return struct */
+ ldbudp = (LDAPDBURLDesc *) dsgw_ch_malloc( sizeof( LDAPDBURLDesc ));
+
+ /* Make a copy */
+ url = dsgw_ch_strdup( url );
+ ldbudp->ludb_path = url + LDAPDB_URL_PREFIX_LEN;
+
+ /* Must start with a "/" (or "x:" on NT) */
+ if ( ldbudp->ludb_path[ 0 ] != '/'
+#ifdef _WIN32
+ && ( !ldap_utf8isalpha( ldbudp->ludb_path )
+ || ldbudp->ludb_path[ 1 ] != ':' )
+#endif
+ ) {
+ free( url );
+ free( ldbudp );
+ return( DSGW_ERR_LDAPDBURL_BAD );
+ }
+
+ /* Find base DN */
+ if (( basedn = strrchr( ldbudp->ludb_path, '/' )) == NULL ) {
+ free( url );
+ free( ldbudp );
+ return( DSGW_ERR_LDAPDBURL_BAD );
+ }
+
+ *basedn++ = '\0';
+ ldbudp->ludb_dn = basedn;
+ dsgw_form_unescape( ldbudp->ludb_dn );
+
+ *ldbudpp = ldbudp;
+ return( 0 );
+}
+
+#ifdef XP_WIN32
+/* convert forward slashes to backwards ones */
+static void
+dsgw_unix2dospath( char *path )
+{
+ if( path ) {
+ while( *path ) {
+ if( *path == '/' ) {
+ *path = '\\';
+ }
+ path++;
+ }
+ }
+}
+#endif
+
+/*
+ * Function: dsgw_valid_context
+ *
+ * Returns: 1 if context doesn't have / . \ ,etc, 0 else
+ *
+ * Description: context is the name of the config file
+ * that is passed into the CGI.
+ * Let's say context = pb
+ * then it gets translated into: ../context/pb.conf
+ * so we have to make sure that context
+ * only contains numbers or letters, and nothing else
+ *
+ * Author: RJP
+ *
+ */
+static int
+dsgw_valid_context()
+{
+ char *local_context = NULL;
+
+ /*Get a local pointer to the global context*/
+ local_context = context;
+
+ if (local_context == NULL) {
+ return(1);
+ }
+
+ for ( ; *local_context; LDAP_UTF8INC(local_context)) {
+
+ if (!ldap_utf8isalnum(local_context)) {
+
+ /*Allow dashes and underscores*/
+ if (*local_context == '-' || *local_context == '_') {
+ continue;
+ }
+ return(0);
+ }
+ }
+ return(1);
+
+}
+
+/*
+ * Function: dsgw_valid_docname
+ *
+ * Returns: 1 if context doesn't have / . \ ,etc, 0 else
+ *
+ * Description: Checks to make sure that filename contains
+ * only alphanumeric values and one dot
+ *
+ * Author: RJP
+ *
+ */
+int
+dsgw_valid_docname(char *filename)
+{
+ int dots = 0;
+ char *local_filename = NULL;
+
+ local_filename = filename;
+
+ if (local_filename == NULL) {
+ return(1);
+ }
+
+ for ( ; *local_filename; LDAP_UTF8INC(local_filename)) {
+
+ /*If it's not a number or a letter...*/
+ if (!ldap_utf8isalnum(local_filename)) {
+
+ /*If it's a dot, and there haven't been any other dots...*/
+ if (*local_filename == '.' && dots == 0) {
+ /*Then increment the dot count and continue...*/
+ dots ++;
+ continue;
+ }
+
+ /*Allow dashes and underscores*/
+ if (*local_filename == '-' || *local_filename == '_') {
+ continue;
+ }
+
+ return (0);
+ }
+ }
+
+ return(1);
+}
+
+/*
+ * Function: dsgw_get_docdir
+ *
+ * Returns: a pointer to the html directory
+ *
+ * Description: Just returns gc->gc_docdir
+ *
+ * Author: RJP
+ *
+ */
+char *
+dsgw_get_docdir(void)
+{
+ return(gc->gc_docdir);
+}
+
+/*
+ * Function: browser_is_msie40
+ *
+ * Returns: 1 if HTTP_USER_AGENT is MSIE 4.0 or greater, 0 else
+ *
+ * Description: MSIE 4.0 doesn't return HTTP_ACCEPT_CHARSET,
+ * but it does understand utf-8, so we need to
+ * make a special case for it. If the browser
+ * being used is MSIE 4.0 or greater, this function
+ * returns 1.
+ *
+ * Author: RJP
+ *
+ */
+static int
+browser_is_msie40()
+{
+ char *p = NULL;
+ char *browzer = NULL;
+ char version[6];
+ int i;
+
+ /* Get the browser name */
+ if (( p = getenv( "HTTP_USER_AGENT" )) == NULL ) {
+ return(0);
+ }
+
+ /* Try to find MSIE in there */
+ browzer = strstr (p, "MSIE ");
+
+ /* If nothing, then we're done */
+ if (browzer == NULL) {
+ return (0);
+ }
+
+ /* Skip to the version */
+ browzer += 5;
+
+ /* Accumulate the version */
+ for (i=0; i < 5 && *browzer != '.' ; i++, browzer++) {
+ version[i] = *browzer;
+ }
+
+ /* Null terminate */
+ version[i] = '\0';
+
+ if (atoi(version) > 3) {
+ return(1);
+ }
+
+ return(0);
+
+}
+
+/*
+ * Function: browser_ignores_acceptcharset
+ *
+ * Returns: 1 if ignoreAcceptCharsetFrom contains the current HTTP_USER_AGENT,
+ * 0 else
+ *
+ * Description: bug fix for #97908:
+ * The dsgw doesn't respect the "charset" variable in the dsgw.conf file.
+ * E.g., ignoreAcceptCharsetFrom Mozilla/4.01x-NSCP Mozilla/4.03C-NSCP
+ *
+ */
+static int
+browser_ignores_acceptcharset()
+{
+ char *p = NULL;
+ char *browzer = NULL;
+ int i;
+
+ if ( gc->gc_clientIgnoreACharset == NULL ||
+ gc->gc_clientIgnoreACharset[0] == NULL )
+ return 0;
+
+ /* Get the browser name */
+ if (( p = getenv( "HTTP_USER_AGENT" )) == NULL ) {
+ return 0;
+ }
+ browzer = dsgw_ch_strdup_tolower( p );
+
+ for ( i = 0; gc->gc_clientIgnoreACharset[i]; i++ ) {
+ if ( strstr( browzer, gc->gc_clientIgnoreACharset[i] ) != NULL )
+ return 1;
+ }
+ free( browzer );
+ return 0;
+}
+
+static void
+set_dsgwcharset()
+{
+ auto char* fname = dsgw_file2path (gc->gc_configdir, "dsgwcharset.conf");
+ auto FILE* f = fopen (fname, "r");
+ if (f != NULL) {
+ auto char buf[BUFSIZ];
+ if (fgets (buf, sizeof(buf), f)) {
+ auto const size_t buflen = strlen (buf);
+ if (buf[buflen-1] == '\n') {
+ buf[buflen-1] = '\0';
+ }
+ gc->gc_charset = dsgw_ch_strdup (buf);
+ }
+ fclose (f);
+ }
+ free (fname);
+}
+
+static char *
+dsgw_ch_strdup_tolower( const char *s )
+{
+ int len, i;
+ char *p, *sp, *dp;
+
+ len = strlen( s ) + 1;
+ dp = p = dsgw_ch_malloc( len );
+ sp = (char *)s;
+ for (i = 0; i < len; i++, dp++, sp++)
+ *dp = tolower(*sp);
+ return( p );
+}
+
+static scriptrange_t**
+parse_scriptranges (char** cargv, size_t cargc)
+{
+ auto scriptrange_t** result = (scriptrange_t**)
+ dsgw_ch_calloc (cargc + 1, sizeof(scriptrange_t*));
+ auto size_t i;
+ for (i = 0; i < cargc; ++i) {
+ auto scriptrange_t** last = result+i;
+ auto char* token;
+ auto char* cursor = NULL;
+ for (token = ldap_utf8strtok_r (cargv[i], ",;", &cursor); token;
+ token = ldap_utf8strtok_r (NULL, ",;", &cursor)) {
+#ifdef DSGW_DEBUG
+ dsgw_log ("parse_scriptranges %s\n", token);
+#endif
+ *last = dsgw_ch_malloc (sizeof(scriptrange_t));
+ (*last)->sr_min = (*token == '-') ? 0 : strtoul (token, &token, 16);
+ (*last)->sr_max = (*token != '-') ? (*last)->sr_min
+ : ((*++token == '\0') ? ULONG_MAX : strtoul (token, &token, 16));
+ last = &((*last)->sr_next);
+ }
+ *last = NULL;
+ }
+ result[cargc] = NULL;
+ return result;
+}
+
+scriptorder_t*
+dsgw_scriptorder()
+{
+ static scriptorder_t* result = NULL;
+ if (result == NULL) {
+ auto char* simplename = "dsgwcollate.conf";
+ auto char* fname = dsgw_file2path (gc->gc_configdir, simplename);
+ auto FILE* fp;
+ result = (scriptorder_t*) dsgw_ch_calloc (1, sizeof(scriptorder_t));
+ if (NULL == fname) {
+#ifdef DSGW_DEBUG
+ dsgw_log ("dsgw_scriptorder can't find %s\n", simplename);
+#endif
+ } else if (NULL == (fp = fopen (fname, "r"))) {
+#ifdef DSGW_DEBUG
+ dsgw_log ("dsgw_scriptorder can't open %s\n", fname);
+#endif
+ } else {
+ auto char* line;
+ auto int lineno;
+ fp_getline_init( &lineno );
+ while ( (line = fp_getline( fp, &lineno )) != NULL ) {
+ auto int cargc;
+ auto char* cargv[ MAXARGS ];
+ /* skip comments and blank lines */
+ if ( line[0] == '#' || line[0] == '\0' ) {
+ continue;
+ }
+ fp_parse_line( line, &cargc, cargv );
+ if ( !strcasecmp (cargv[0], "caseIgnoreAccents")) {
+ result->so_caseIgnoreAccents = 1;
+ } else if ( !strcasecmp (cargv[0], "sort")) {
+ result->so_sort = parse_scriptranges (cargv+1, cargc-1);
+ } else if ( !strcasecmp (cargv[0], "display")) {
+ result->so_display = parse_scriptranges (cargv+1, cargc-1);
+ } else {
+#ifdef DSGW_DEBUG
+ dsgw_log ("%s/%i: unknown keyword %s\n", fname, lineno, cargv[0]);
+#endif
+ }
+ }
+ fclose (fp);
+#ifdef DSGW_DEBUG
+ dsgw_log ("dsgw_scriptorder %s line %i\n", fname, lineno);
+#endif
+ }
+ if (fname) free (fname);
+ }
+ return result;
+}
diff --git a/ldap/clients/dsgw/config/Makefile b/ldap/clients/dsgw/config/Makefile
new file mode 100644
index 00000000..1ff82d94
--- /dev/null
+++ b/ldap/clients/dsgw/config/Makefile
@@ -0,0 +1,77 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+#
+# Gmakefile for Directory Server Gateway config files.
+#
+
+LDAP_SRC = ../../..
+MCOM_ROOT = ../../../../..
+
+NOSTDSTRIP=true # don't let nsconfig.mak define target strip
+NOSTDCLEAN=true # don't let nsconfig.mak define target clean
+NOSTDDEPEND=true # don't let nsconfig.mak define target depend
+
+include $(MCOM_ROOT)/ldapserver/nsconfig.mk
+include $(LDAP_SRC)/nsldap.mk
+
+include ../dsgw_include.mk
+
+HTMLDEST = $(DSGW_CONF_RELDIR)
+
+HTML = dsgw.tmpl dsgwfilter.conf dsgwsearchprefs.conf \
+ dsgw-l10n.conf \
+ search.html searchString.html \
+ csearch.html csearchAttr.html csearchBase.html csearchMatch.html csearchString.html csearchType.html \
+ newentry.html newentryType.html newentryName.html \
+ authSearch.html authPassword.html \
+ display-country.html display-group.html display-groupun.html \
+ display-org.html display-orgperson.html \
+ display-orgunit.html display-person.html \
+ display-ntperson.html display-dnedit.html display-dneditpeople.html \
+ display-ntgroup.html display-dc.html \
+ edit-passwd.html \
+ list-Anything.html list-fa-People.html list-fa-Groups.html \
+ list-Auth.html list-Groups.html list-Org-Units.html \
+ list-Organizations.html list-People.html list-urlsearch.html \
+ list-NT-People.html list-NT-Groups.html list-Domaincomponent.html
+
+BINS=$(addprefix $(HTMLDEST)/,$(HTML))
+
+LANGFILES=$(wildcard $(DSGW_DEFAULT_LANG)/dsgwcollate.*) $(wildcard $(DSGW_DEFAULT_LANG)/dsgw-l10n.*)
+
+LANGDEST=$(addprefix $(DSGW_CONF_RELDIR)/, $(LANGFILES))
+
+ifeq ($(ARCH), WINNT)
+CP2=cmd /c 'sh ../../../cm/nbsp2utf8.sh $< > $@'
+else
+CP2=sh ../../../cm/nbsp2utf8.sh $< > $@
+endif
+
+all: $(HTMLDEST) $(BINS) $(HTMLDEST)/$(DSGW_DEFAULT_LANG) $(LANGDEST)
+
+install: $(HTMLDEST) $(BINS)
+
+clean:
+ $(RM) $(BINS)
+
+$(HTMLDEST)/$(DSGW_DEFAULT_LANG)/%: $(DSGW_DEFAULT_LANG)/%
+ echo $(LANGDEST)
+ -@$(RM) $@
+ $(CP2)
+
+$(HTMLDEST)/%: %
+ echo $(LANGDEST)
+ -@$(RM) $@
+ $(CP2)
+
+$(HTMLDEST)/$(DSGW_DEFAULT_LANG)/dsgwcollate.conf: $(DSGW_DEFAULT_LANG)/dsgwcollate.conf
+ echo $(LANGDEST)
+ -@$(RM) $@
+ $(CP2)
+
+strip:
+depend:
diff --git a/ldap/clients/dsgw/config/authPassword.html b/ldap/clients/dsgw/config/authPassword.html
new file mode 100644
index 00000000..d9dfbae0
--- /dev/null
+++ b/ldap/clients/dsgw/config/authPassword.html
@@ -0,0 +1,30 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--authPassword.html-->
+<TITLE>Authenticate...</TITLE>
+<!-- DS_AUTH_PASSWORD_SCRIPT -->
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</HEAD>
+
+<!-- DS_AUTH_PASSWORD_BODY -->
+<!-- DS_AUTH_PASSWORD_INFO -->
+<!-- DS_AUTH_PASSWORD_FORM -->
+<P>
+Password for <b>
+<!-- DS_AUTH_PASSWORD_NAME -->
+</b>: <INPUT NAME="password" TYPE="password" SIZE=16>
+<P>
+<CENTER>
+<TABLE BORDER=2 WIDTH=100%>
+<TR>
+<!-- DS_AUTH_PASSWORD_BUTTONS -->
+</TABLE>
+</FORM>
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/config/authSearch.html b/ldap/clients/dsgw/config/authSearch.html
new file mode 100644
index 00000000..b4103391
--- /dev/null
+++ b/ldap/clients/dsgw/config/authSearch.html
@@ -0,0 +1,35 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--authSearch.html-->
+<TITLE>Authenticate...</TITLE>
+<!-- DS_AUTH_SEARCH_SCRIPT -->
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</HEAD>
+<!-- DS_AUTH_SEARCH_BODY -->
+<!-- DS_AUTH_SEARCH_INFO -->
+<!-- DS_AUTH_SEARCH_FORM -->
+The first step in authenticating to the directory is identifying
+yourself.<br>Please type your name:
+<!-- DS_AUTH_SEARCH_NAME -->
+<P>
+<CENTER>
+<TABLE BORDER=1 WIDTH=100%%>
+<TR>
+<!-- DS_AUTH_SEARCH_BUTTONS -->
+</TABLE>
+</FORM>
+<P>
+<!-- DS_AUTH_AS_ROOT_FORM -->
+<INPUT TYPE="submit" VALUE="Authenticate as directory manager">&nbsp;(only available to Directory Administrators)
+<INPUT TYPE="hidden" NAME="ldapsizelimit" VALUE="1000">
+<INPUT TYPE="hidden" NAME="ldaptimelimit" VALUE="180">
+<!-- PCONTEXT -->
+</FORM>
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/config/csearch.html b/ldap/clients/dsgw/config/csearch.html
new file mode 100644
index 00000000..32445b74
--- /dev/null
+++ b/ldap/clients/dsgw/config/csearch.html
@@ -0,0 +1,28 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--csearch.html-->
+<TITLE>Netscape Directory Server Gateway: Advanced Search</TITLE>
+<!-- DS_CSEARCH_SCRIPT -->
+</HEAD>
+<FRAMESET ROWS=130,40,55,* BORDER=0 onLoad="init()">
+ <FRAME SRC="lang?<!-- GCONTEXT -->&file=csearchtitle.html" SCROLLING="NO" NORESIZE>
+ <FRAMESET COLS="25%,75%" BORDER=0>
+ <FRAME SRC="csearch?<!-- GCONTEXT -->&file=type" NAME="searchTypeFrame" NORESIZE SCROLLING="NO">
+ <FRAME SRC="csearch?<!-- GCONTEXT -->&file=base" NAME="searchBaseFrame" NORESIZE SCROLLING="NO">
+ </FRAMESET>
+ <FRAMESET COLS="25%, 15%, 60%" BORDER=0>
+ <FRAME SRC="csearch?<!-- GCONTEXT -->&file=attr" NAME="searchAttrFrame" NORESIZE SCROLLING="NO">
+ <FRAME SRC="csearch?<!-- GCONTEXT -->&file=match" NAME="searchMatchFrame" NORESIZE SCROLLING="NO">
+ <FRAME SRC="csearch?<!-- GCONTEXT -->&file=string" NAME="searchStringFrame" SCROLLING="NO">
+ </FRAMESET>
+ <FRAME SRC="lang?<!-- GCONTEXT -->&file=emptyFrame.html" NAME="outputFrame">
+</FRAMESET>
+</HTML>
+
+
diff --git a/ldap/clients/dsgw/config/csearchAttr.html b/ldap/clients/dsgw/config/csearchAttr.html
new file mode 100644
index 00000000..acf34ea8
--- /dev/null
+++ b/ldap/clients/dsgw/config/csearchAttr.html
@@ -0,0 +1,23 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--csearchAttr.html-->
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</HEAD>
+<!-- DS_CSEARCH_ATTR_BODY -->
+<!-- DS_CSEARCH_ATTR_FORM -->
+
+<TABLE> <TR VALIGN=BASELINE>
+<TD WIDTH="100" ALIGN="right">
+where the
+</TD>
+<TD>
+<!-- DS_CSEARCH_ATTR_SELECT -->
+</TD>
+</TR> </TABLE>
+</FORM></BODY> </HTML>
diff --git a/ldap/clients/dsgw/config/csearchBase.html b/ldap/clients/dsgw/config/csearchBase.html
new file mode 100644
index 00000000..7dd9c9be
--- /dev/null
+++ b/ldap/clients/dsgw/config/csearchBase.html
@@ -0,0 +1,22 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--csearchBase.html-->
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</HEAD>
+<!-- DS_CSEARCH_BASE_BODY -->
+<TABLE> <TR VALIGN="middle">
+
+<TD HEIGHT="28">
+within <B>
+<!-- EVALUATE "parent.UFNsearchBase" -->
+</B> </TD>
+
+</TR> </TABLE>
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/config/csearchMatch.html b/ldap/clients/dsgw/config/csearchMatch.html
new file mode 100644
index 00000000..1a5aefb3
--- /dev/null
+++ b/ldap/clients/dsgw/config/csearchMatch.html
@@ -0,0 +1,21 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--csearchMatch.html-->
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</HEAD>
+<!-- DS_CSEARCH_MATCH_BODY -->
+<!-- DS_CSEARCH_MATCH_FORM -->
+<TABLE> <TR VALIGN=BASELINE>
+<TD>
+<!-- DS_CSEARCH_MATCH_SELECT -->
+</TD>
+</TR> </TABLE>
+</FORM>
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/config/csearchString.html b/ldap/clients/dsgw/config/csearchString.html
new file mode 100644
index 00000000..ab2d9b9b
--- /dev/null
+++ b/ldap/clients/dsgw/config/csearchString.html
@@ -0,0 +1,26 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--csearchString.html-->
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</HEAD>
+<!-- DS_CSEARCH_STRING_BODY -->
+<!-- DS_CSEARCH_STRING_FORM "target=outputFrame" -->
+<TABLE> <TR>
+<TD ALIGN="left"> <INPUT NAME="searchstring" SIZE=20> </TD>
+<TD>
+<NOBR>
+<INPUT TYPE="SUBMIT" VALUE="Search" WIDTH=72>
+<!-- DS_HELP_BUTTON "ASEARCH" -->
+</NOBR> </TD>
+</TR></TABLE>
+<INPUT TYPE="hidden" NAME="ldapsizelimit" VALUE="1000">
+<INPUT TYPE="hidden" NAME="ldaptimelimit" VALUE="180">
+<!-- PCONTEXT -->
+</FORM>
+</BODY></HTML>
diff --git a/ldap/clients/dsgw/config/csearchType.html b/ldap/clients/dsgw/config/csearchType.html
new file mode 100644
index 00000000..ae9f7d1d
--- /dev/null
+++ b/ldap/clients/dsgw/config/csearchType.html
@@ -0,0 +1,24 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--csearchType.html-->
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</HEAD>
+<!-- DS_CSEARCH_TYPE_BODY -->
+<!-- DS_CSEARCH_TYPE_FORM -->
+<TABLE> <TR>
+<TD ALIGN="right" WIDTH="100" HEIGHT="28" VALIGN="middle">
+Find
+</TD>
+<TD HEIGHT="28" VALIGN="middle">
+<!-- DS_CSEARCH_TYPE_SELECT -->
+</TD>
+</TR> </TABLE>
+</FORM>
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/config/de/authPassword.html b/ldap/clients/dsgw/config/de/authPassword.html
new file mode 100644
index 00000000..4be4573f
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/authPassword.html
@@ -0,0 +1,29 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--authPassword.html-->
+<TITLE>Beglaubigen...</TITLE>
+<!-- DS_AUTH_PASSWORD_SCRIPT -->
+</HEAD>
+
+<!-- DS_AUTH_PASSWORD_BODY -->
+<!-- DS_AUTH_PASSWORD_INFO -->
+<!-- DS_AUTH_PASSWORD_FORM -->
+<P>
+Kennwort f&uuml;r<b>
+<!-- DS_AUTH_PASSWORD_NAME -->
+</b>: <INPUT NAME="password" TYPE="password" SIZE=16>
+<P>
+<CENTER>
+<TABLE BORDER=2 WIDTH=100%>
+<TR>
+<!-- DS_AUTH_PASSWORD_BUTTONS -->
+</TABLE>
+</FORM>
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/config/de/authSearch.html b/ldap/clients/dsgw/config/de/authSearch.html
new file mode 100644
index 00000000..fe2c79f1
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/authSearch.html
@@ -0,0 +1,33 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--authSearch.html-->
+<TITLE>Beglaubigen...</TITLE>
+<!-- DS_AUTH_SEARCH_SCRIPT -->
+</HEAD>
+<!-- DS_AUTH_SEARCH_BODY -->
+<!-- DS_AUTH_SEARCH_INFO -->
+<!-- DS_AUTH_SEARCH_FORM -->
+Um Ihren Zugriff zu dem Verzeichnis zu beglaubigen, m&uuml;ssen Sie sich zun&auml;chst zu erkennen geben.<br>Geben Sie Ihren Namen ein:
+<!-- DS_AUTH_SEARCH_NAME -->
+<P>
+<CENTER>
+<TABLE BORDER=1 WIDTH=100%%>
+<TR>
+<!-- DS_AUTH_SEARCH_BUTTONS -->
+</TABLE>
+</FORM>
+<P>
+<!-- DS_AUTH_AS_ROOT_FORM -->
+<INPUT TYPE="submit" VALUE="Als Verzeichnis-Manager beglaubigen">&nbsp;(nur f&uuml;r Verzeichnis-Administratoren verf&uuml;gbar)
+<INPUT TYPE="hidden" NAME="ldapsizelimit" VALUE="1000">
+<INPUT TYPE="hidden" NAME="ldaptimelimit" VALUE="180">
+<!-- PCONTEXT -->
+</FORM>
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/config/de/csearchAttr.html b/ldap/clients/dsgw/config/de/csearchAttr.html
new file mode 100644
index 00000000..8f4831bc
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/csearchAttr.html
@@ -0,0 +1,17 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--csearchAttr.html-->
+</HEAD>
+<!-- DS_CSEARCH_ATTR_BODY -->
+<!-- DS_CSEARCH_ATTR_FORM -->
+<table>
+<tr VALIGN=BASELINE><td ALIGN=RIGHT>wobei:</td><td>
+<!-- DS_CSEARCH_ATTR_SELECT -->
+</td></tr>
+</table></form></body></HTML>
diff --git a/ldap/clients/dsgw/config/de/csearchBase.html b/ldap/clients/dsgw/config/de/csearchBase.html
new file mode 100644
index 00000000..fc1a27fc
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/csearchBase.html
@@ -0,0 +1,17 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--csearchBase.html-->
+</HEAD>
+<!-- DS_CSEARCH_BASE_BODY -->
+<table>
+<tr VALIGN=CENTER><th>innerhalb von:</th><td>
+<!-- EVALUATE "parent.UFNsearchBase" -->
+</td>
+</table>
+</body></HTML>
diff --git a/ldap/clients/dsgw/config/de/csearchString.html b/ldap/clients/dsgw/config/de/csearchString.html
new file mode 100644
index 00000000..e7369ad5
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/csearchString.html
@@ -0,0 +1,28 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--csearchString.html-->
+</HEAD>
+<!-- DS_CSEARCH_STRING_BODY -->
+<!-- DS_CSEARCH_STRING_FORM "target=outputFrame" -->
+<TABLE>
+<TR VALIGN=CENTER><TD>
+<INPUT NAME="searchstring" SIZE=20></TD>
+<TD><NOBR>
+<INPUT TYPE="SUBMIT" VALUE="Suchen">
+<!-- DS_HELP_BUTTON "ASEARCH" -->
+</NOBR></TD>
+<td>&nbsp;</td><th>innerhalb von:</th><td>
+<!-- EVALUATE "parent.UFNsearchBase" -->
+</td>
+</TR></TABLE>
+<INPUT TYPE="hidden" NAME="ldapsizelimit" VALUE="1000">
+<INPUT TYPE="hidden" NAME="ldaptimelimit" VALUE="180">
+<!-- PCONTEXT -->
+</FORM>
+</BODY></HTML>
diff --git a/ldap/clients/dsgw/config/de/csearchType.html b/ldap/clients/dsgw/config/de/csearchType.html
new file mode 100644
index 00000000..1250749d
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/csearchType.html
@@ -0,0 +1,18 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--csearchType.html-->
+</HEAD>
+<!-- DS_CSEARCH_TYPE_BODY -->
+<!-- DS_CSEARCH_TYPE_FORM -->
+<table>
+<tr VALIGN=BASELINE><th ALIGN=RIGHT>Suchen:</th><td>
+<!-- DS_CSEARCH_TYPE_SELECT -->
+</td></tr>
+</table>
+</form></body></HTML>
diff --git a/ldap/clients/dsgw/config/de/display-country.html b/ldap/clients/dsgw/config/de/display-country.html
new file mode 100644
index 00000000..4157ff97
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/display-country.html
@@ -0,0 +1,54 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_OBJECTCLASS "value=country" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>Land -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY -->
+
+<TABLE>
+<TR><TD NOWRAP>
+<IMG SRC="lang?<!-- GCONTEXT -->&file=country.gif" ALT="Land" HSPACE=5>
+</TD><TD><FONT SIZE="+2">
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</FONT></TD></TR></TABLE>
+
+<TABLE CELLSPACING="5">
+
+<TR><TD VALIGN="TOP" NOWRAP>Landesname:</TD><TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=co" "options=sort" -->
+</B></TD><TD WIDTH="20%"></TD>
+</B><TD VALIGN="TOP">Beschreibung:</TD><TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=description" -->
+</B></TD></TR>
+
+<TR><TD VALIGN="TOP">Siehe auch:</TD><TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">URL:</TD><TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=labeledURI" "syntax=url" -->
+</B></TD></TR>
+
+</TABLE>
+
+<HR>
+
+Eintrag zuletzt ge&auml;ndert am <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> von <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/de/display-dnedit.html b/ldap/clients/dsgw/config/de/display-dnedit.html
new file mode 100644
index 00000000..950077dd
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/display-dnedit.html
@@ -0,0 +1,76 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_ENTRYBEGIN -->
+<!-- DS_EMIT_BASE_HREF -->
+<TITLE>
+Bearbeiten
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY "onLoad='document.searchForm.searchstring.focus();'" -->
+
+<!-- DS_LAST_OP_INFO "prefix=<FONT SIZE=%22%2B1%22>" "suffix=</FONT><HR>" -->
+
+<!-- DS_BEGIN_DNSEARCHFORM -->
+<INPUT TYPE=hidden NAME=mode VALUE="smart">
+<INPUT TYPE=hidden NAME=dnlist_js VALUE="true">
+<INPUT TYPE=hidden NAME=listifone VALUE="true">
+<INPUT TYPE=hidden NAME=listtemplate VALUE="">
+<INPUT TYPE=hidden NAME=faMode VALUE="add">
+<!-- PCONTEXT -->
+<INPUT TYPE=hidden NAME=ldapsizelimit VALUE="1000">
+<INPUT TYPE=hidden NAME=ldaptimelimit VALUE="180">
+
+<FONT SIZE="+2">
+Bearbeiten
+<!-- DS_DNDESC -->
+:
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT>
+
+<TABLE CELLSPACING=0 CELLPADDING=0><TR>
+
+<TD NOWRAP>
+Suchen von
+<SELECT NAME="type">
+<OPTION SELECTED VALUE="People">Personen
+<OPTION VALUE="Groups">Gruppen
+</SELECT>
+</TD>
+
+<TD NOWRAP>
+passend zu&nbsp;
+<INPUT NAME="searchstring" SIZE=15>
+</TD>
+
+<TD>
+<!-- DS_DNADDBUTTON "VALUE= Suchen und Hinzuf&uuml;gen " -->
+<BR>
+<!-- DS_DNREMOVEBUTTON "VALUE= Suchen und Entfernen " -->
+</TD>
+
+</TR>
+</TABLE>
+
+<P>
+<CENTER><TABLE BORDER="2" WIDTH="100%">
+<TR>
+<TD WIDTH="33%" ALIGN="center">
+<INPUT TYPE=BUTTON VALUE=" &Auml;nderungen speichern " onClick="parent.saveChanges();">
+<TD WIDTH="34%" ALIGN="center">
+<INPUT TYPE=BUTTON VALUE=" Abbrechen " onClick="if ((parent.changesMade) == 0 || confirm('&Auml;nderungen verwerfen?')) {parent.document.location.href=parent.completion_url}";>
+<TD WIDTH=33% ALIGN=center>
+<!-- DS_HELPBUTTON "topic=EDIT_GROUPMEM" -->
+</TD></TR></TABLE></CENTER>
+
+<INPUT TYPE=hidden NAME=completion_javascript VALUE='parent.updateList(parent.controlFrame.document.searchForm.faMode.value, parent.dnlist, parent.stagingFrame.dnlist, parent.outputFrame);parent.controlFrame.document.searchForm.faMode.value="add";'>
+<!-- DS_END_DNSEARCHFORM -->
+
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/de/display-dneditpeople.html b/ldap/clients/dsgw/config/de/display-dneditpeople.html
new file mode 100644
index 00000000..1e4e8c32
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/display-dneditpeople.html
@@ -0,0 +1,75 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_ENTRYBEGIN -->
+<!-- DS_EMIT_BASE_HREF -->
+<TITLE>
+Bearbeiten
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY "onLoad='document.searchForm.searchstring.focus();'" -->
+
+<!-- DS_LAST_OP_INFO "prefix=<FONT SIZE=%22%2B1%22>" "suffix=</FONT><HR>" -->
+
+<!-- DS_BEGIN_DNSEARCHFORM -->
+<INPUT TYPE=hidden NAME=mode VALUE="smart">
+<INPUT TYPE=hidden NAME=dnlist_js VALUE="true">
+<INPUT TYPE=hidden NAME=listifone VALUE="true">
+<INPUT TYPE=hidden NAME=listtemplate VALUE="">
+<INPUT TYPE=hidden NAME=faMode VALUE="add">
+<!-- PCONTEXT -->
+<INPUT TYPE=hidden NAME=ldapsizelimit VALUE="1000">
+<INPUT TYPE=hidden NAME=ldaptimelimit VALUE="180">
+
+<FONT SIZE="+2">
+Bearbeiten
+<!-- DS_DNDESC -->
+:
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT>
+
+<TABLE CELLSPACING=0 CELLPADDING=0><TR>
+
+<TD NOWRAP>
+Suchen von
+<SELECT NAME="type">
+<OPTION SELECTED VALUE="People">Personen
+</SELECT>
+</TD>
+
+<TD NOWRAP>
+passend zu&nbsp;
+<INPUT NAME="searchstring" SIZE=15>
+</TD>
+
+<TD>
+<!-- DS_DNADDBUTTON "VALUE= Suchen und Hinzuf&uuml;gen ">
+<BR>
+<!-- DS_DNREMOVEBUTTON "VALUE= Suchen und L&ouml;schen ">
+</TD>
+
+</TR>
+</TABLE>
+
+<P>
+<CENTER><TABLE BORDER="2" WIDTH="100%">
+<TR>
+<TD WIDTH="33%" ALIGN="center">
+<INPUT TYPE=BUTTON VALUE=" &Auml;nderungen speichern " onClick="parent.saveChanges();">
+<TD WIDTH="34%" ALIGN="center">
+<INPUT TYPE=BUTTON VALUE=" Abbrechen " onClick="if ((parent.changesMade) == 0 || confirm('&Auml;nderungen verwerfen?')) {parent.document.location.href=parent.completion_url}";>
+<TD WIDTH=33% ALIGN=center>
+<!-- DS_HELPBUTTON -->
+</TD></TR></TABLE></CENTER>
+
+<INPUT TYPE=hidden NAME=completion_javascript VALUE='parent.updateList(parent.controlFrame.document.searchForm.faMode.value, parent.dnlist, parent.stagingFrame.dnlist, parent.outputFrame);parent.controlFrame.document.searchForm.faMode.value="add";'>
+<!-- DS_END_DNSEARCHFORM -->
+
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/de/display-group.html b/ldap/clients/dsgw/config/de/display-group.html
new file mode 100644
index 00000000..12b4d1cc
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/display-group.html
@@ -0,0 +1,150 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_OBJECTCLASS "value=groupOfNames" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+Neuer
+<!-- ENDIF // Adding -->
+Gruppeneintrag -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE>
+<TR>
+<TD>
+<IMG SRC="lang?<!-- GCONTEXT -->&file=group.gif" ALT="Gruppe" HSPACE=5 >
+<FONT SIZE="+2">
+<!-- IF "Adding" -->
+Neue Gruppe -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT>
+</TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- DS_EDITBUTTON "label=Gruppe bearbeiten" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Neue Gruppe speichern" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Abbrechen" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_GROUP" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_GROUP" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Gruppe umbenennen" "prompt=Neuen Namen f&uuml;r diese Gruppe eingeben:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Gruppe l&ouml;schen" "prompt=Diese Gruppe l&ouml;schen?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="groupOfNames">
+<!-- ENDIF // Adding -->
+
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<HR>
+<!-- IF "!Displaying" -->
+<B>* bezeichnet einen Pflichteintrag</B><BR>
+<!-- ENDIF -->
+
+
+<TABLE CELLSPACING="5">
+<TR>
+<TD NOWRAP>Name:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=cn" "cols=>40" -->
+</B></TD><TD WIDTH="20%"></TD>
+</TR>
+
+<TR>
+<TD NOWRAP>Beschreibung:</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>40" "defaultvalue=none" -->
+</B></TD></TR>
+
+<TR>
+<TD NOWRAP VALIGN="TOP">Eigent&uuml;mer:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Bearbeiten..." "template=dnedit" "attr=owner" "desc=Eigent&uuml;mer" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=owner" "syntax=dn" "options=sort,readonly" -->
+</B></TD>
+
+<TR>
+<TD NOWRAP VALIGN="TOP">Siehe auch:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Bearbeiten..." "template=dnedit" "attr=seeAlso" "desc=Siehe auch" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP COLSPAN="4">
+<!-- IF "!Adding" -->
+<B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "options=sort,readonly" -->
+</B>
+<!-- ELSE // !Adding -->
+<I>Sie m&uuml;ssen diesen Eintrag speichern, bevor Sie diese Felder bearbeiten k&ouml;nnen.</I>
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD NOWRAP VALIGN="top">Gruppenmitglieder:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Bearbeiten..." "template=dnedit" "attr=uniquemember" "desc=Gruppenmitglieder" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=uniquemember" "syntax=dn" "options=sort,readonly" -->
+</B></TD></TR>
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+<HR>
+Eintrag zuletzt ge&auml;ndert am
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> von <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/de/display-groupun.html b/ldap/clients/dsgw/config/de/display-groupun.html
new file mode 100644
index 00000000..cac6c909
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/display-groupun.html
@@ -0,0 +1,150 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_OBJECTCLASS "value=groupOfUniqueNames" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+Neuer
+<!-- ENDIF // Adding -->
+Gruppeneintrag -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE>
+<TR>
+<TD>
+<IMG SRC="lang?<!-- GCONTEXT -->&file=group.gif" ALT="Gruppe" HSPACE=5 >
+<FONT SIZE="+2">
+<!-- IF "Adding" -->
+Neue Gruppe -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT>
+</TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- DS_EDITBUTTON "label=Gruppe bearbeiten" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Neue Gruppe speichern" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Abbrechen" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_GROUP" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_GROUP" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Gruppe umbenennen" "prompt=Neuen Namen f&uuml;r diese Gruppe eingeben:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Gruppe l&ouml;schen" "prompt=Diese Gruppe l&ouml;schen?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="groupOfUniqueNames">
+<!-- ENDIF // Adding -->
+
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<HR>
+<!-- IF "!Displaying" -->
+<B>* bezeichnet einen Pflichteintrag</B><BR>
+<!-- ENDIF -->
+
+
+<TABLE CELLSPACING="5">
+<TR>
+<TD NOWRAP>Name:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=cn" "cols=>40" -->
+</B></TD><TD WIDTH="20%"></TD>
+</TR>
+
+<TR>
+<TD NOWRAP>Beschreibung:</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>40" "defaultvalue=none" -->
+</B></TD></TR>
+
+<TR>
+<TD NOWRAP VALIGN="TOP">Eigent&uuml;mer:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Bearbeiten..." "template=dnedit" "attr=owner" "desc=Eigent&uuml;mer" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=owner" "syntax=dn" "options=sort,readonly" -->
+</B></TD>
+
+<TR>
+<TD NOWRAP VALIGN="TOP">Siehe auch:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Bearbeiten..." "template=dnedit" "attr=seeAlso" "desc=Siehe auch" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP COLSPAN="4">
+<!-- IF "!Adding" -->
+<B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "options=sort,readonly" -->
+</B>
+<!-- ELSE // !Adding -->
+<I>Sie m&uuml;ssen diesen Eintrag speichern, bevor Sie diese Felder bearbeiten k&ouml;nnen.</I>
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD NOWRAP VALIGN="top">Gruppenmitglieder:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Bearbeiten..." "template=dnedit" "attr=uniquemember" "desc=Gruppenmitglieder" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=uniquemember" "syntax=dn" "options=sort,readonly" -->
+</B></TD></TR>
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+<HR>
+Eintrag zuletzt ge&auml;ndert am <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> von <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/de/display-mailgroup.html b/ldap/clients/dsgw/config/de/display-mailgroup.html
new file mode 100644
index 00000000..086f7309
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/display-mailgroup.html
@@ -0,0 +1,124 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_OBJECTCLASS "value=rfc822mailgroup" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+Neuer
+<!-- ENDIF // Adding -->
+E-Mail-Gruppeneintrag -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE>
+<TR>
+<TD>
+<IMG SRC="lang?<!-- GCONTEXT -->&file=group.gif" ALT="Gruppe" HSPACE=5 >
+<FONT SIZE="+2">
+<!-- IF "Adding" -->
+Neue E-Mail-Gruppe
+<!-- ENDIF // Adding -->
+
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT>
+</TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- DS_EDITBUTTON "label=Gruppe bearbeiten" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Neue Gruppe speichern" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Abbrechen" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_MAILGROUP" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_MAILGROUP" -->
+<!-- ENDIF // Adding -->
+
+<!-- IF "Editing" -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Gruppe umbenennen" "prompt=Neuen Namen f&uuml;r diese Gruppe eingeben:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Gruppe lȵschen" "prompt=Diese Gruppe l&ouml;schen?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="rfc822mailgroup">
+<!-- ENDIF // Adding -->
+<!-- PCONTEXT -->
+
+<HR>
+
+<TABLE CELLSPACING="5">
+
+<TR><TD VALIGN="TOP">Name:</TD><TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=cn" -->
+</B></TD><TD WIDTH="20%"></TD>
+<TD VALIGN="TOP">Beschreibung:</TD><TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=multilineDescription" "defaultvalue=none" -->
+</B></TD></TR>
+
+<TR><TD VALIGN="TOP">Eigent&uuml;mer:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=owner" "syntax=dn" "cols=>40" -->
+</B></TD></TR>
+
+<TR><TD VALIGN="TOP" NOWRAP>Siehe auch:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "cols=>40" -->
+</B></TD></TR>
+
+<TR><TD NOWRAP COLSPAN="2">
+<!-- DS_ATTRIBUTE "attr=joinable" "syntax=bool" "type=radio" "true=Allow Others To Join" "false=Andere Personen nicht als Mitglieder zulassen" "defaultvalue=FALSE" -->
+</TD><TD></TD><TD NOWRAP COLSPAN="2">
+<!-- DS_ATTRIBUTE "attr=suppressNoEmailError" "syntax=bool" "type=radio" "true=Fehler 'Keine E-Mail-Adresse' unterdr&uuml;cken" "false=Fehler 'Keine E-Mail-Adresse' melden" "defaultvalue=FALSE" -->
+</TD></TR>
+
+<HR>
+
+<TR><TD VALIGN="TOP" NOWRAP>Gruppenmitglieder:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=member" "syntax=dn" "numfields=+4" "options=sort" -->
+</B></TD></TR>
+
+<TR><TD VALIGN="TOP" NOWRAP>E-Mail-Mitglieder:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" "numfields=+4" "cols=>30" "options=sort" -->
+</B></TD></TR>
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+<HR>
+Eintrag zuletzt ge&auml;ndert am <B>
+<!-- DS_ATTRIBUTE "attr=lastModifiedTime" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> von <B>
+<!-- DS_ATTRIBUTE "attr=lastModifiedBy" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/de/display-ntgroup.html b/ldap/clients/dsgw/config/de/display-ntgroup.html
new file mode 100644
index 00000000..010b0b9c
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/display-ntgroup.html
@@ -0,0 +1,216 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_OBJECTCLASS "value=ntGroup" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+Neuer
+<!-- ENDIF // Adding -->
+NT-Gruppeneintrag -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE>
+<TR>
+<TD>
+<IMG SRC="lang?<!-- GCONTEXT -->&file=group.gif" ALT="Gruppe" HSPACE=5 >
+<FONT SIZE="+2">
+<!-- IF "Adding" -->
+Neue NT-Gruppe -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT>
+</TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- DS_EDITBUTTON "label=NT-Gruppe bearbeiten" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Neue Gruppe speichern" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Abbrechen" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_NTGROUP" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_NTGROUP" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_RENAMEBUTTON "label=NT-Gruppe umbenennen" "prompt=Neuen Namen f&uuml;r diese Gruppe eingeben:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=NT-Gruppe l&ouml;schen" "prompt=Diese Gruppe l&ouml;schen?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="ntGroup">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="groupOfUniqueNames">
+<!-- ENDIF // Adding -->
+
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<HR>
+<!-- IF "!Displaying" -->
+<B>* bezeichnet einen Pflichteintrag</B><BR>
+<!-- ENDIF -->
+
+
+<TABLE CELLSPACING="5">
+<TR>
+<TD NOWRAP>Name:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=cn" "cols=>40" -->
+</B></TD><TD WIDTH="20%"></TD>
+</TR>
+
+<TR>
+<TD NOWRAP>NT-Gruppenname:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD NOWRAP><B>
+<!-- IF "!Adding" -->
+<!-- DS_ATTRIBUTE "attr=ntGroupDomainId" "syntax=ntgroupname" "cols=>16" "options=readonly" "defaultvalue=none" -->
+<!-- ELSE // Adding -->
+<!-- DS_ATTRIBUTE "attr=ntGroupDomainId" "syntax=ntgroupname" "cols=>16" "defaultvalue=none" -->
+<!-- ENDIF // Adding -->
+</B></TD></TR>
+
+<TR>
+<TD NOWRAP>NT-Gruppentyp:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD NOWRAP><B>
+<!-- IF "!Adding" -->
+<!-- DS_ATTRIBUTE "attr=nTGroupType" "defaultvalue=Global" "options=readonly" "cols=>16" -->
+<!-- ELSE // Adding -->
+<!-- DS_ATTRIBUTE "attr=nTGroupType" "defaultvalue=Global" "cols=>16" -->
+<!-- ENDIF // Adding -->
+</B></TD></TR>
+
+<TR>
+<TD NOWRAP>NT-Gruppendom&auml;ne
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=ntGroupDomainId" "syntax=ntdomain" "cols=>16" "defaultvalue=none" -->
+</B></TD></TR>
+
+<TR>
+<TD NOWRAP>Beschreibung:</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>40" "defaultvalue=none" -->
+</B></TD></TR>
+
+<TR>
+<TD NOWRAP>Lokal:</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=l" "cols=>40" "defaultvalue=none" -->
+</B></TD></TR>
+
+<TR>
+<TD NOWRAP>Gesch&auml;ftsbereich:</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=ou" "cols=>40" "defaultvalue=none" -->
+</B></TD></TR>
+
+<TR>
+<TD NOWRAP VALIGN="TOP">Eigent&uuml;mer:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Bearbeiten..." "template=dnedit" "attr=owner" "desc=Eigent&uuml;mer" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=owner" "syntax=dn" "options=sort,readonly" -->
+</B></TD>
+
+<TR>
+<TD NOWRAP VALIGN="TOP">Siehe auch:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Bearbeiten..." "template=dnedit" "attr=seeAlso" "desc=Siehe auch" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP COLSPAN="4">
+<!-- IF "!Adding" -->
+<B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "options=sort,readonly" -->
+</B>
+<!-- ELSE // !Adding -->
+<I>Sie m&uuml;ssen diesen Eintrag speichern, bevor Sie diese Felder bearbeiten k&ouml;nnen.</I>
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD NOWRAP VALIGN="top">NT-Gruppenmitglieder:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Bearbeiten..." "template=dnedit" "attr=uniquemember" "desc=NT-Gruppenmitglieder" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=uniquemember" "syntax=dn" "options=sort,readonly" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>NT-Gruppe l&ouml;schen, wenn Gruppe gel&ouml;scht wird:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "syntax=bool" "type=radio" "true=Ja" "false=Nein" "defaultvalue=FALSE" "attr=nTGroupDeleteGroup" -->
+</B></TD><TD></TD>
+</B></TD></TR>
+
+<!-- IF "Adding" -->
+<TR>
+<TD VALIGN="TOP">Neues NT-Gruppenkonto erstellen:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "syntax=bool" "type=radio" "true=Ja" "false=Nein" "defaultvalue=TRUE" "attr=nTGroupCreateNewGroup" -->
+</B></TD><TD></TD></TR>
+
+<!-- ENDIF // Adding -->
+</TABLE>
+
+<!-- IF "!Adding" -->
+<HR>
+Eintrag zuletzt ge&auml;ndert am <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> von <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/de/display-ntperson.html b/ldap/clients/dsgw/config/de/display-ntperson.html
new file mode 100644
index 00000000..f7876979
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/display-ntperson.html
@@ -0,0 +1,505 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- NT User person directory entry -->
+<!-- DS_OBJECTCLASS "value=person,inetOrgPerson,nTUser" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+Neuer
+<!-- ENDIF // Adding -->
+NT-Benutzereintrag -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE>
+
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+function showVCard()
+{
+<!-- DS_ATTRIBUTE "attr=_vcard" "options=link" "mimetype=text/x-vcard" "prefix=var cardurl=" "suffix=";" -->
+
+ document.location.href = cardurl;
+}
+// End hiding -->
+</SCRIPT>
+
+</HEAD>
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE><TR><TD>
+<!-- DS_ATTRIBUTE "attr=jpegPhoto" "type=hidden" "options=typeonly" -->
+<!-- IF "AttributeHasValues" "jpegPhoto" -->
+<IMG SRC=
+<!-- DS_ATTRIBUTE "attr=jpegPhoto" "options=link" "mimetype=image/jpeg" -->
+BORDER=0></TD>
+<TD>
+<!-- ENDIF -->
+<!-- A HREF="javascript:showVCard()" -->
+<IMG SRC="lang?<!-- GCONTEXT -->&file=person.gif" ALT="Benutzer (Anklicken, um Karte anzuzeigen)"
+ BORDER=0 HSPACE=5>
+
+</A>
+</TD>
+<!-- IF "DisplayOrgChart" -->
+<TD><FONT FACE="PrimaSans BT, Verdana, Sans-Serif" SIZE="-1">
+<A HREF=
+<!-- DS_ORGCHARTLINK -->
+ >
+<IMG SRC="lang?<!-- GCONTEXT -->&file=orgicon.gif" BORDER=0 ALT="Click to display organization chart" HSPACE=5></a>
+</FONT>
+</TD>
+<!-- ENDIF -->
+<TD><FONT SIZE="+2">
+<!-- IF "Adding" -->
+Neuer NT-Benutzer -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT></TD></TR></TABLE>
+
+<!-- DS_ATTRIBUTE "attr=userCertificate;binary" "type=hidden" "options=typeonly" -->
+<!-- IF "AttributeHasValues" "userCertificate;binary" -->
+<A HREF=
+<!-- DS_ATTRIBUTE "attr=userCertificate;binary" "options=link" "mimetype=application/x-x509-ca-cert" -->
+>Download Certificate</A>
+<!-- ENDIF -->
+
+<!-- DS_ATTRIBUTE "attr=audio" "type=hidden" "options=typeonly" -->
+<!-- IF "AttributeHasValues" "audio" -->
+&nbsp;&nbsp;
+<A HREF=
+<!-- DS_ATTRIBUTE "attr=audio" "options=link" "mimetype=audio/basic" -->
+>Play Audio Clip</A>
+<!-- ENDIF -->
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- INPUT TYPE="button" VALUE="Karte anzeigen" onClick="showVCard()" -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_EDITBUTTON "label=NT-Benutzer bearbeiten" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Neuen NT-Benutzer speichern" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Abbrechen" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_NTPERSON" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_NTPERSON" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_EDITASBUTTON "label=Verzeichniskennwort &auml;ndern" "template=passwd" -->
+</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Person umbenennen" "prompt=Neuen Namen f&uuml;r diese Person eingeben:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Person l&ouml;schen" "prompt=Diese Person l&ouml;schen?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="person">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="organizationalPerson">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="inetOrgPerson">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="nTUser">
+<!-- ENDIF // Adding -->
+
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<!-- IF "!Displaying" -->
+<B>* bezeichnet einen Pflichteintrag</B><BR>
+<!-- ENDIF -->
+
+<TABLE CELLSPACING="2" BORDER BGCOLOR=#f2f2f2 WIDTH=95%>
+<TR>
+<TD BGCOLOR=#006666 COLSPAN=4><FONT FACE=ARIAL,HELVETICA COLOR=WHITE>
+Kontaktinformationen</TD>
+</TR>
+
+<TD VALIGN="top" NOWRAP>Vorname:</TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=givenName" "cols=>16" -->
+</B></TD>
+<TD VALIGN="top" NOWRAP ROWSPAN="2">Vollst&auml;ndiger Name:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="top" NOWRAP ROWSPAN="2"><B>
+<!-- DS_ATTRIBUTE "attr=cn" "numfields=+1" "cols=>23" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="top" NOWRAP>Nachname:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=sn" "cols=>16" -->
+</B></TD></TR>
+
+<!-- IF "Adding" -->
+<TR>
+<TD>Directory-Server-Kennwort:</TD><TD>
+<!-- DS_NEWPASSWORD "cols=>16" -->
+</B></TD>
+<TD> Kennwort zur Best&auml;tigung wiederholen:</TD><TD>
+<!-- DS_CONFIRM_NEWPASSWORD "cols=>16" -->
+</TD></TR>
+<!-- ENDIF // Adding -->
+
+<TR>
+<TD VALIGN="TOP">Telefon:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>16" "numfields=+1" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>E-Mail-Adresse:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" "cols=>23" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Fax:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=facsimiletelephonenumber" "syntax=tel" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>Benutzer-ID:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=uid" "cols=>16" "options=unique" -->
+</B></TD></TR>
+<INPUT TYPE="hidden" NAME="desc_uid" VALUE="user id">
+<!-- PCONTEXT -->
+<TR>
+<TD VALIGN="TOP" NOWRAP>Pager:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=pager" "syntax=tel" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>Mobiltelefon:<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=mobile" "syntax=tel" "cols=>16" -->
+</B></TD></TR>
+
+</TABLE>
+
+
+<TABLE CELLSPACING="2" BORDER BGCOLOR=#f2f2f2 WIDTH=95%>
+<TR>
+<TD BGCOLOR=#006666 COLSPAN=4><FONT FACE=ARIAL,HELVETICA COLOR=WHITE>
+Windows NT Kontoinformationen</TD>
+</TR>
+
+<TR>
+<TD VALIGN="TOP">NT-Benutzer-ID:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- IF "!Adding" -->
+<!-- DS_ATTRIBUTE "attr=nTUserDomainId" "syntax=ntuserid" "cols=>16" "options=readonly" -->
+<!-- ENDIF // Adding -->
+<!-- IF "Adding" -->
+<!-- DS_ATTRIBUTE "attr=nTUserDomainId" "syntax=ntuserid" "cols=>16" -->
+<!-- ENDIF // Adding -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>NT-Dom&auml;ne:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD><TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserDomainId" "syntax=ntdomain" "cols=>16" -->
+</B></TD></TR>
+<INPUT TYPE="hidden" NAME="desc_uid" VALUE="user id">
+<!-- PCONTEXT -->
+
+<TR>
+<TD VALIGN="TOP" COLSPAN=2 NOWRAP>NT-Benutzerkonto l&ouml;schen, wenn Benutzer gel&ouml;scht wird:</TD>
+<TD VALIGN="TOP" COLSPAN=2 NOWRAP><B>
+<!-- DS_ATTRIBUTE "syntax=bool" "type=radio" "true=Ja" "false=Nein" "defaultvalue=FALSE" "attr=nTUserDeleteAccount" -->
+</B></TD></TR>
+
+<!-- IF "Adding" -->
+<TR>
+<TD VALIGN="TOP" COLSPAN=2>Neues NT-Benutzerkonto erstellen:</TD>
+<TD VALIGN="TOP" COLSPAN=2 NOWRAP><B>
+<!-- DS_ATTRIBUTE "syntax=bool" "type=radio" "true=Ja" "false=Nein" "defaultvalue=TRUE" "attr=nTUserCreateNewAccount" -->
+</B></TD></TR>
+
+<!-- ENDIF // Adding -->
+
+<!-- IF "Displaying" -->
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>NT-Benutzer-Kommentar:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserUsrComment" "defaultvalue=None" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>Eindeutige NT-Benutzer-ID:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserUniqueId" "syntax=binvalue" "cols=>10" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>NT-Kennwort abgelaufen:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "syntax=bool" "type=radio" "true=Ja" "false=Nein" "defaultvalue=FALSE" "attr=nTUserPasswordExpired" -->
+</B></TD>
+<TD VALIGN="TOP">Anzahl falscher NT-Kennworteingaben:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserBadPwCount" "syntax=binvalue" "options=decimal" "cols=>4" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Letzte NT-Anmeldung:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserLastLogon" "syntax=time" "cols=>10" "defaultvalue=Never Logged On" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>Letzte NT-Abmeldung:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserLastLogoff" "syntax=time" "cols=>10" "defaultvalue=Never Logged On" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Verfalldatum NT-Benutzerkonto:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserAcctExpires" "syntax=time" "defaultvalue=Never Expires" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>Anzahl NT-Anmeldungen:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserNumLogons" "syntax=binvalue" "options=decimal" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">NT-Anmelde-Server:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserLogonServer" "defaultvalue=Any Server" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>NT-Arbeitsstationen:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserWorkstations" "defaultvalue=No Restrictions" "cols=>16" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">NT-Codeseite:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserCodePage" "syntax=binvalue" "options=decimal" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>NT-Landescode:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserCountryCode" "syntax=binvalue" "options=decimal" "cols=>8" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Prim&auml;re NT-Gruppen-ID:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserPrimaryGroupId" "syntax=binvalue" "options=decimal" "cols=>8" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>NT-Profil:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserProfile" "defaultvalue=Default" "cols=>16" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>NT-Basisverzeichnis:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserHomeDir" "defaultvalue=None" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP">Laufwerk des NT-Basisverzeichnisses:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserHomeDirDrive" "defaultvalue=None" "cols=>20" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>NT-Skriptpfad:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserScriptPath" "defaultvalue=None" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>Maximaler NT-Speicherplatz:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserMaxStorage" "syntax=binvalue" "options=decimal" "cols=>16" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">NT-Einheiten pro Woche:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserUnitsPerWeek" "syntax=binvalue" "options=decimal" "cols=>6" -->
+</B></TD>
+<TD VALIGN="TOP">Rechte des NT-Benutzers:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserPriv" "syntax=binvalue" "cols=>16" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Operator-Rechte des NT-Benutzers:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserAuthFlags" "syntax=binvalue" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP">Div. betr. NT-Benutzerkonto: Funktionen:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserFlags" "syntax=binvalue" "cols=>16" -->
+</B></TD></TR>
+
+<!-- ENDIF // Displaying -->
+</TABLE>
+
+<TABLE CELLSPACING="2" BORDER BGCOLOR=#f2f2f2 WIDTH=95%>
+<TR>
+<TD BGCOLOR=#006666 COLSPAN=4><FONT FACE=ARIAL,HELVETICA COLOR=WHITE>
+Branchen- und Positionsinformationen</TD>
+</TR>
+
+<TR>
+<TD VALIGN="TOP">Branche:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=businesscategory" -->
+</B></TD>
+<TD VALIGN="TOP">Titel:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=title" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Gesch&auml;ftsbereich:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=ou" -->
+</B></TD>
+<TD VALIGN="TOP">Leiter:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Bearbeiten..." "template=dneditpeople" "attr=manager" "desc=Manager" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<!-- IF "Adding" -->
+<TD VALIGN="TOP" ROWSPAN=2>
+<I>Sie m&uuml;ssen diesen Eintrag speichern, bevor Sie diese Felder bearbeiten k&ouml;nnen.</I>
+<!-- ELSE // !Adding -->
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=manager" "syntax=dn" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Raum:</TD>
+<TD VALIGN="TOP" NOWRAP"><B>
+<!-- DS_ATTRIBUTE "attr=roomNumber" "cols=>8" -->
+</B></TD>
+</B><TD VALIGN="TOP">Sekr.:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Bearbeiten..." "template=dneditpeople" "attr=secretary" "desc=Admin." -->
+<!-- ENDIF // !Adding -->
+</TD>
+<!-- IF "!Adding" -->
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=secretary" "syntax=dn" "options=readonly" -->
+</B></TD>
+<!-- ENDIF // !Adding -->
+</TR>
+
+<TR>
+<TD VALIGN="TOP">Abt.-Nr.:</TD>
+<TD VALIGN="TOP"><B>
+<!-- DS_ATTRIBUTE "attr=departmentnumber" "cols=>8" -->
+</B></TD>
+<TD VALIGN="TOP">MA-Nr.:</TD>
+<TD VALIGN="TOP"><B>
+<!-- DS_ATTRIBUTE "attr=employeenumber" "cols=>6" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Kfz-Kennzeichen:</TD>
+<TD VALIGN="TOP"><B>
+<!-- DS_ATTRIBUTE "attr=carlicense" "cols=>8" -->
+</B></TD>
+<!-- Note: need to include two cells that contain a non-breaking space
+character so table background colors, etc. are rendered correctly -->
+<TD>&nbsp;&nbsp;</TD>
+<TD>&nbsp;&nbsp;</TD>
+</TR>
+
+<TR>
+<TD VALIGN="TOP">Postadresse:</TD>
+<TD VALIGN="TOP" COLSPAN="4" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=postalAddress" "syntax=mls" "type=TEXTAREA" "cols=>40" "rows=>4" -->
+</B></TD></TR>
+
+</TABLE>
+
+<TABLE CELLSPACING="2" BORDER BGCOLOR=#f2f2f2 WIDTH=95%>
+<TR>
+<TD BGCOLOR=#006666 COLSPAN=2><FONT FACE=ARIAL,HELVETICA COLOR=WHITE>
+Zus&auml;tzliche Informationen</TD>
+</TR>
+
+<TR>
+<TD VALIGN="TOP">Beschreibung:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>50" -->
+</B></TR>
+
+<TR>
+<TD VALIGN="TOP">Siehe auch:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Bearbeiten..." "template=dnedit" "attr=seeAlso" "desc=See Also" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- IF "Adding" -->
+<I>Sie m&uuml;ssen diesen Eintrag speichern, bevor Sie diese Felder bearbeiten k&ouml;nnen.</I>
+<!-- ELSE // !Adding -->
+<B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP">URL:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=labeledURI" "syntax=url" "cols=>50" "options=sort" -->
+</B></TR>
+
+<!-- The following attribute should only be uncommented if you have
+ a need to allow editing of the x500UniqueIdentifier attribute.
+ Most installations will not need this functionality.
+<TR>
+<TD VALIGN="TOP">Unique ID:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=x500uniqueidentifier" "cols=>50" -->
+</B></TR>
+-->
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+Eintrag zuletzt ge&auml;ndert am <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> von <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/de/display-org.html b/ldap/clients/dsgw/config/de/display-org.html
new file mode 100644
index 00000000..82586bc5
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/display-org.html
@@ -0,0 +1,136 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_OBJECTCLASS "value=organization" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+Neue
+<!-- ENDIF // Adding -->
+Firma -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE>
+<TR>
+<TD>
+<IMG SRC="lang?<!-- GCONTEXT -->&file=organization.gif" ALT="Firma" HSPACE=5>
+<TD>
+<FONT SIZE="+2">
+<!-- IF "Adding" -->
+Neue Firma -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</FONT>
+</TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- DS_EDITBUTTON "label=Firma bearbeiten" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Neue Firma speichern" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Abbrechen" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_ORG" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_ORG" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Firma umbenennen" "prompt=Neuen Namen f&uuml;r diese Firma eingeben:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Firma l&ouml;schen" "prompt=Diese Firma l&ouml;schen?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="organization">
+<!-- ENDIF // Adding -->
+
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<HR>
+<!-- IF "!Displaying" -->
+<B>* bezeichnet einen Pflichteintrag</B><BR>
+<!-- ENDIF -->
+
+<TABLE>
+<TR>
+<TD VALIGN="TOP" NOWRAP>Firmenname:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=o" "cols=>20" -->
+</B></TD><TD WIDTH="20%"></TD>
+<TD>Beschreibung:</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>30" -->
+</B></TR>
+
+<TR><TD>Telefon:</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>16" -->
+</B></TD><TD></TD>
+<TD NOWRAP>Branche:</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=businessCategory" "cols=>30" -->
+</B></TD></TR>
+
+<TR><TD>Fax:<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=facsimiletelephonenumber" "syntax=tel" "cols=>16" -->
+</B></TD><TD></TD>
+<TD>Standort:</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=l" "cols=>30" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>Postadresse:</TD>
+<TD VALIGN="TOP" COLSPAN="4" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=postalAddress" "syntax=mls" "type=TEXTAREA" "cols=>40" "rows=>4" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Siehe auch:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "dncomponents=3" "cols=>50" -->
+</B></TR>
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+<HR>
+Eintrag zuletzt ge&auml;ndert am <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> von <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/de/display-orgperson.html b/ldap/clients/dsgw/config/de/display-orgperson.html
new file mode 100644
index 00000000..e6ce0f0f
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/display-orgperson.html
@@ -0,0 +1,345 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- inet. organizational person directory entry -->
+<!-- DS_OBJECTCLASS "value=person,inetOrgPerson" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+Neuer
+<!-- ENDIF // Adding -->
+Personeneintrag -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE>
+
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+function showVCard()
+{
+<!-- DS_ATTRIBUTE "attr=_vcard" "options=link" "mimetype=text/x-vcard" "prefix=var cardurl=" "suffix=";" -->
+
+ document.location.href = cardurl;
+}
+// End hiding -->
+</SCRIPT>
+
+
+</HEAD>
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE><TR><TD>
+<!-- DS_ATTRIBUTE "attr=jpegPhoto" "type=hidden" "options=typeonly" -->
+<!-- IF "AttributeHasValues" "jpegPhoto" -->
+<IMG SRC=
+<!-- DS_ATTRIBUTE "attr=jpegPhoto" "options=link" "mimetype=image/jpeg" -->
+BORDER=0></TD>
+<TD>
+<!-- ENDIF -->
+<!-- A HREF="javascript:showVCard()" -->
+<A HREF="javascript:showVCard()">
+<IMG SRC="lang?<!-- GCONTEXT -->&file=person.gif" ALT="Benutzer (Anklicken, um Karte anzuzeigen)"
+ BORDER=0 HSPACE=5>
+</A>
+</TD>
+<!-- IF "DisplayOrgChart" -->
+<TD><FONT FACE="PrimaSans BT, Verdana, Sans-Serif" SIZE="-1">
+<A HREF=
+<!-- DS_ORGCHARTLINK -->
+ >
+<IMG SRC="lang?<!-- GCONTEXT -->&file=orgicon.gif" BORDER=0 ALT="Click to display organization chart" HSPACE=5></a>
+</FONT>
+</TD>
+<!-- ENDIF -->
+<TD><FONT SIZE="+2">
+<!-- IF "Adding" -->
+Neue Person -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT></TD></TR></TABLE>
+
+<!-- DS_ATTRIBUTE "attr=userCertificate;binary" "type=hidden" "options=typeonly" -->
+<!-- IF "AttributeHasValues" "userCertificate;binary" -->
+<A HREF=
+<!-- DS_ATTRIBUTE "attr=userCertificate;binary" "options=link" "mimetype=application/x-x509-ca-cert" -->
+>Zertifikat laden</A>
+<!-- ENDIF -->
+
+<!-- DS_ATTRIBUTE "attr=audio" "type=hidden" "options=typeonly" -->
+<!-- IF "AttributeHasValues" "audio" -->
+&nbsp;&nbsp;
+<A HREF=
+<!-- DS_ATTRIBUTE "attr=audio" "options=link" "mimetype=audio/basic" -->
+>Audio-Clip abspielen</A>
+<!-- ENDIF -->
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- INPUT TYPE="button" VALUE="Karte anzeigen" onClick="showVCard()" -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_EDITBUTTON "label=Person bearbeiten" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Neue Person speichern" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Abbrechen" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_ORGPERSON" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_ORGPERSON" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_EDITASBUTTON "label=Kennwort &auml;ndern" "template=passwd" -->
+</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Person umbenennen" "prompt=Neuen Namen f&uuml;r diese Person eingeben:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Person l&ouml;schen" "prompt=Diese Person l&ouml;schen?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="person">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="organizationalPerson">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="inetOrgPerson">
+<!-- ENDIF // Adding -->
+
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<!-- IF "!Displaying" -->
+<B>* bezeichnet einen Pflichteintrag</B><BR>
+<!-- ENDIF -->
+
+<TABLE CELLSPACING="2" BORDER BGCOLOR=#f2f2f2 WIDTH=95%>
+<TR>
+<TD BGCOLOR=#006666 COLSPAN=4><FONT FACE=ARIAL,HELVETICA COLOR=WHITE>
+Kontaktinformationen</TD>
+</TR>
+
+<TD VALIGN="top" NOWRAP>Vorname:</TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=givenName" "cols=>16" -->
+</B></TD>
+<TD VALIGN="top" NOWRAP ROWSPAN="2">Vollst&auml;ndiger Name:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="top" NOWRAP ROWSPAN="2"><B>
+<!-- DS_ATTRIBUTE "attr=cn" "numfields=+1" "cols=>23" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="top" NOWRAP>Nachname:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=sn" "cols=>16" -->
+</B></TD></TR>
+
+<!-- IF "Adding" -->
+<TR>
+<TD>Kennwort:</TD><TD>
+<!-- DS_NEWPASSWORD "cols=>16" -->
+</B></TD>
+<TD> Kennwort zur Best&auml;tigung wiederholen:</TD><TD>
+<!-- DS_CONFIRM_NEWPASSWORD "cols=>16" -->
+</TD></TR>
+<!-- ENDIF // Adding -->
+
+<TR>
+<TD VALIGN="TOP">Telefon:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>16" "numfields=+1" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>E-Mail-Adresse:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" "cols=>23" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Fax:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=facsimiletelephonenumber" "syntax=tel" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>Benutzer-ID:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=uid" "cols=>16" "options=unique" -->
+</B></TD></TR>
+<INPUT TYPE="hidden" NAME="desc_uid" VALUE="user id">
+<!-- PCONTEXT -->
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>Pager:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=pager" "syntax=tel" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>Mobiltelefon:<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=mobile" "syntax=tel" "cols=>16" -->
+</B></TD></TR>
+
+</TABLE>
+
+<TABLE CELLSPACING="2" BORDER BGCOLOR=#f2f2f2 WIDTH=95%>
+<TR>
+<TD BGCOLOR=#006666 COLSPAN=4><FONT FACE=ARIAL,HELVETICA COLOR=WHITE>
+Branchen- und Positionsinformationen</TD>
+</TR>
+
+<TR>
+<TD VALIGN="TOP">Branche:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=businesscategory" -->
+</B></TD>
+<TD VALIGN="TOP">Titel:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=title" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Gesch&auml;ftsbereich:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=ou" -->
+</B></TD>
+<TD VALIGN="TOP">Leiter:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Bearbeiten..." "template=dneditpeople" "attr=manager" "desc=Leiter" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<!-- IF "Adding" -->
+<TD VALIGN="TOP" ROWSPAN=2>
+<I>Sie m&uuml;ssen diesen Eintrag speichern, bevor Sie diese Felder bearbeiten k&ouml;nnen.</I>
+<!-- ELSE // !Adding -->
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=manager" "syntax=dn" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Raum:</TD>
+<TD VALIGN="TOP" NOWRAP"><B>
+<!-- DS_ATTRIBUTE "attr=roomNumber" "cols=>8" -->
+</B></TD>
+</B><TD VALIGN="TOP">Sekr.:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Bearbeiten..." "template=dneditpeople" "attr=secretary" "desc=Sekr." -->
+<!-- ENDIF // !Adding -->
+</TD>
+<!-- IF "!Adding" -->
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=secretary" "syntax=dn" "options=readonly" -->
+</B></TD>
+<!-- ENDIF // !Adding -->
+</TR>
+
+<TR>
+<TD VALIGN="TOP">Abt.-Nr.:</TD>
+<TD VALIGN="TOP"><B>
+<!-- DS_ATTRIBUTE "attr=departmentnumber" "cols=>8" -->
+</B></TD>
+<TD VALIGN="TOP">MA-Nr.:</TD>
+<TD VALIGN="TOP"><B>
+<!-- DS_ATTRIBUTE "attr=employeenumber" "cols=>6" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Kfz-Kennzeichen:</TD>
+<TD VALIGN="TOP"><B>
+<!-- DS_ATTRIBUTE "attr=carlicense" "cols=>8" -->
+</B></TD>
+<!-- Note: need to include two cells that contain a non-breaking space
+character so table background colors, etc. are rendered correctly -->
+<TD>&nbsp;&nbsp;</TD>
+<TD>&nbsp;&nbsp;</TD>
+</TR>
+
+<TR>
+<TD VALIGN="TOP">Postadresse:</TD>
+<TD VALIGN="TOP" COLSPAN="4" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=postalAddress" "syntax=mls" "type=TEXTAREA" "cols=>40" "rows=>4" -->
+</B></TD></TR>
+
+</TABLE>
+
+<TABLE CELLSPACING="2" BORDER BGCOLOR=#f2f2f2 WIDTH=95%>
+<TR>
+<TD BGCOLOR=#006666 COLSPAN=2><FONT FACE=ARIAL,HELVETICA COLOR=WHITE>
+Zus&auml;tzliche Informationen</TD>
+</TR>
+
+<TR>
+<TD VALIGN="TOP">Beschreibung:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>50" -->
+</B></TR>
+
+<TR>
+<TD VALIGN="TOP">Siehe auch:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Bearbeiten..." "template=dnedit" "attr=seeAlso" "desc=Siehe auch" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- IF "Adding" -->
+<I>Sie m&uuml;ssen diesen Eintrag speichern, bevor Sie dieses Feld bearbeiten k&ouml;nnen.</I>
+<!-- ELSE // !Adding -->
+<B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP">URL:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=labeledURI" "syntax=url" "cols=>50" "options=sort" -->
+</B></TR>
+
+<!-- The following attribute should only be uncommented if you have
+ a need to allow editing of the x500UniqueIdentifier attribute.
+ Most installations will not need this functionality.
+<TR>
+<TD VALIGN="TOP">Unique ID:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=x500uniqueidentifier" "cols=>50" -->
+</B></TR>
+-->
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+Eintrag zuletzt ge&auml;ndert am
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> von <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/de/display-orgunit.html b/ldap/clients/dsgw/config/de/display-orgunit.html
new file mode 100644
index 00000000..1d1ff1b8
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/display-orgunit.html
@@ -0,0 +1,136 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_OBJECTCLASS "value=organizationalUnit" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+Neuer
+<!-- ENDIF // Adding -->
+GeschÈñftsbereich -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE>
+<TR>
+<TD>
+<IMG SRC="lang?<!-- GCONTEXT -->&file=orgunit.gif" ALT="Gesch&auml;ftsbereich " HSPACE=5>
+<TD>
+<FONT SIZE="+2">
+<!-- IF "Adding" -->
+Neuer Gesch&auml;ftsbereich -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</FONT>
+</TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- DS_EDITBUTTON "label=Gesch&auml;ftsbereich bearbeiten" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Neuen Gesch&auml;ftsbereich speichern" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Abbrechen" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_ORGUNIT" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_ORGUNIT" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Gesch&auml;ftsbereich umbenennen" "prompt=Neuen Namen f&uuml;r den Gesch&auml;ftsbereich eingeben:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Gesch&auml;ftsbereich l&ouml;schen" "prompt=Gesch&auml;ftsbereich l&ouml;schen?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="organizationalUnit">
+<!-- ENDIF // Adding -->
+
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<HR>
+<!-- IF "!Displaying" -->
+<B>* bezeichnet einen Pflichteintrag</B><BR>
+<!-- ENDIF -->
+
+
+<BR>
+<TABLE>
+<TR>
+<TD>Name des Gesch&auml;ftsbereichs:<B>*</B>
+<!-- IF "!Displaying" -->
+<!-- ENDIF -->
+</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=ou" "cols=>20" -->
+</B></TD><TD WIDTH="20%"></TD>
+<TD>Beschreibung:</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>30" -->
+</B></TR>
+
+<TR><TD>Telefon:</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>16" -->
+</B></TD><TD></TD>
+<TD NOWRAP>Branche:</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=businessCategory" "cols=>30" -->
+</B></TD></TR>
+
+<TR><TD>Fax:<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=facsimiletelephonenumber" "syntax=tel" "cols=>16" -->
+</B></TD><TD></TD>
+<TD>Standort:</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=l" "cols=>30" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Postadresse:</TD>
+<TD VALIGN="TOP" COLSPAN="4" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=postalAddress" "syntax=mls" "type=TEXTAREA" "cols=>40" "rows=>4" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Siehe auch:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "dncomponents=3" "cols=>50" -->
+</B></TR>
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+<HR>
+Eintrag zuletzt ge&auml;ndert am <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> von <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/de/display-person.html b/ldap/clients/dsgw/config/de/display-person.html
new file mode 100644
index 00000000..f5d97854
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/display-person.html
@@ -0,0 +1,231 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- person directory entry -->
+<!-- DS_OBJECTCLASS "value=person" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+Neuer
+<!-- ENDIF // Adding -->
+Personeneintrag -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE>
+
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+function showVCard()
+{
+<!-- DS_ATTRIBUTE "attr=_vcard" "options=link" "mimetype=text/x-vcard" "prefix=var cardurl=" "suffix=";" -->
+
+ document.location.href = cardurl;
+}
+// End hiding -->
+</SCRIPT>
+
+</HEAD>
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE><TR><TD>
+<!-- A HREF="javascript:showVCard()" -->
+<IMG SRC="lang?<!-- GCONTEXT -->&file=person.gif" ALT="Benutzer (Anklicken, um Karte anzuzeigen)"
+ BORDER=0 HSPACE=5>
+</A>
+</TD>
+<!-- IF "DisplayOrgChart" -->
+<TD><FONT FACE="PrimaSans BT, Verdana, Sans-Serif" SIZE="-1">
+<A HREF=
+<!-- DS_ORGCHARTLINK -->
+ >
+<IMG SRC="lang?<!-- GCONTEXT -->&file=orgicon.gif" BORDER=0 ALT="Click to display organization chart" HSPACE=5></a>
+</FONT>
+</TD>
+<!-- ENDIF -->
+<TD><FONT SIZE="+2">
+<!-- IF "Adding" -->
+Neue Person -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT></TD></TR></TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- INPUT TYPE="button" VALUE="Karte anzeigen" onClick="showVCard()" -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_EDITBUTTON "label=Person bearbeiten" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Neue Person speichern" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Abbrechen" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_PERSON" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_PERSON" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_EDITASBUTTON "label=Kennwort &auml;ndern" "template=passwd" -->
+</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Person umbenennen" "prompt=Neuen Namen f&uuml;r diese Person eingeben:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Person l&ouml;schen" "prompt=Diese Person l&ouml;schen?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="person">
+<!-- ENDIF // Adding -->
+
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<HR>
+<!-- IF "!Displaying" -->
+<B>* bezeichnet einen Pflichteintrag</B><BR>
+<!-- ENDIF -->
+
+<TABLE CELLSPACING="5">
+<TR>
+<TD VALIGN="top" NOWRAP>Nachname:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=sn" "cols=>16" -->
+</B></TD><TD WIDTH="20%"></TD>
+<TD VALIGN="top" NOWRAP>Vollst&auml;ndiger Name:</TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=cn" "numfields=+1" "cols=>16" -->
+</B></TD></TR>
+
+<!-- IF "Adding" -->
+<TR><TD COLSPAN="5"><HR></TD></TR>
+<TR>
+<TD>Kennwort:</TD><TD>
+<!-- DS_NEWPASSWORD -->
+</TD><TD WIDTH="20%"></TD>
+<TD> Kennwort zur Best&auml;tigung wiederholen:</TD><TD>
+<!-- DS_CONFIRM_NEWPASSWORD -->
+</TD></TR>
+<TR><TD COLSPAN="5"><HR></TD></TR>
+<!-- ENDIF // Adding -->
+
+<TR>
+<TD VALIGN="TOP">Telefon:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>16" "numfields=+1" -->
+</B></TD><TD></TD>
+<TD VALIGN="TOP" NOWRAP>E-Mail-Adresse:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" "cols=>20" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Fax:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=facsimiletelephonenumber" "syntax=tel" "cols=>16" -->
+</B></TD><TD></TD>
+<TD VALIGN="TOP" NOWRAP>Benutzer-ID:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=uid" "cols=>16" "options=unique" -->
+</B></TD></TR>
+<INPUT TYPE="hidden" NAME="desc_uid" VALUE="user id">
+<!-- PCONTEXT -->
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>Pager:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=pager" "syntax=tel" "cols=>16" -->
+</B></TD><TD></TD>
+<TD VALIGN="TOP" NOWRAP>Mobiltelefon:<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=mobile" "syntax=tel" "cols=>16" -->
+</B></TD></TR>
+
+<TR><TD COLSPAN="5"><HR></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Titel:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=title" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Postadresse:</TD>
+<TD VALIGN="TOP" COLSPAN="4" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=postalAddress" "syntax=mls" "type=TEXTAREA" "cols=>40" "rows=>4" -->
+</B></TD></TR>
+
+<TR><TD COLSPAN="5"><HR></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Beschreibung:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>50" -->
+</B></TR>
+
+<TR>
+<TD VALIGN="TOP">Siehe auch:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Bearbeiten..." "template=dnedit" "attr=seeAlso" "desc=Siehe auch" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4">
+<!-- IF "Adding" -->
+<I>Sie m&uuml;ssen diesen Eintrag speichern, bevor Sie diese Felder bearbeiten k&ouml;nnen.</I>
+<!-- ELSE // !Adding -->
+<B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP">URL:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=labeledURI" "syntax=url" "cols=>50" -->
+</B></TR>
+
+<TR>
+<TD VALIGN="TOP">Lieblingsgetr&auml;nk:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=drink" -->
+</B></TR>
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+<HR>
+Eintrag zuletzt ge&auml;ndert am
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> von <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/de/display-umperson.html b/ldap/clients/dsgw/config/de/display-umperson.html
new file mode 100644
index 00000000..78cdb202
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/display-umperson.html
@@ -0,0 +1,200 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- U-M person directory entry -->
+<!-- DS_OBJECTCLASS "value=person,umichPerson" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+Neuer
+<!-- ENDIF // Adding -->
+Personeneintrag -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE><TR><TD>
+<IMG SRC=
+<!-- DS_ATTRIBUTE "attr=jpegPhoto" "options=link" "mimetype=image/jpeg" -->
+></TD>
+<TD>
+<IMG SRC="lang?<!-- GCONTEXT -->&file=person.gif" ALT="Person" HSPACE=5>
+</TD>
+<!-- IF "DisplayOrgChart" -->
+<TD><FONT FACE="PrimaSans BT, Verdana, Sans-Serif" SIZE="-1">
+<A HREF=
+<!-- DS_ORGCHARTLINK -->
+ >
+<IMG SRC="lang?<!-- GCONTEXT -->&file=orgicon.gif" BORDER=0 ALT="Click to display organization chart" HSPACE=5></a>
+</FONT>
+</TD>
+<!-- ENDIF -->
+<TD><FONT SIZE="+2">
+<!-- IF "Adding" -->
+Neue Person -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT></TD></TR></TABLE>
+
+<A HREF=
+<!-- DS_ATTRIBUTE "attr=audio" "options=link" "mimetype=audio/basic" -->
+>Audio-Clip abspielen</A>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- DS_EDITBUTTON "label=Person bearbeiten" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Neue Person speichern" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Abbrechen" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_UMPERSON" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_UMPERSON" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_EDITASBUTTON "label=Kennwort Èñndern" "template=passwd" -->
+</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Person umbenennen" "prompt=Neuen Namen f&uuml;r diese Person eingeben:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Bereichsleiter l&ouml;schen" "prompt=Diese Person l&ouml;schen?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="person">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="umichPerson">
+<!-- ENDIF // Adding -->
+<!-- PCONTEXT -->
+
+<HR>
+<!-- IF "!Displaying" -->
+<B>* bezeichnet einen Pflichteintrag</B><BR>
+<!-- ENDIF -->
+
+
+<TABLE CELLSPACING="5">
+<TR>
+<TD VALIGN="top" NOWRAP>Nachname:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=sn" "cols=>16" -->
+</B></TD><TD WIDTH="20%"></TD>
+<TD VALIGN="top" NOWRAP>Vollst&auml;ndiger Name:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=cn" "numfields=+1" "cols=>16" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Telefon:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>16" "numfields=+1" -->
+</B></TD><TD></TD>
+<TD VALIGN="TOP" NOWRAP>E-Mail-Adresse:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" "cols=>20" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Fax:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=facsimiletelephonenumber" "syntax=tel" "cols=>16" -->
+</B></TD><TD></TD>
+<TD VALIGN="TOP" NOWRAP>Eindeutiger Name:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=uid" "cols=>16" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>Pager:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=pager" "syntax=tel" "cols=>16" -->
+</B></TD><TD></TD>
+<TD VALIGN="TOP" NOWRAP>Mobiltelefon:<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=mobile" "syntax=tel" "cols=>16" -->
+</B></TD></TR>
+
+<TR><TD COLSPAN="5"><HR></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Titel:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=title" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Postadresse:</TD>
+<TD VALIGN="TOP" COLSPAN="4" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=postalAddress" "syntax=mls" "type=TEXTAREA" "cols=>40" "rows=>4" -->
+</B></TD></TR>
+
+<TR><TD COLSPAN="5"><HR></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Beschreibung:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=multilineDescription" "syntax=mls" "cols=>50" -->
+</B></TR>
+
+<TR>
+<TD VALIGN="TOP">Siehe auch:<BR>
+<!-- DS_DNEDITBUTTON "label=Bearbeiten..." "template=dnedit" "attr=seeAlso" "desc=Siehe auch" -->
+</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "options=readonly" -->
+</B></TR>
+
+<TR>
+<TD VALIGN="TOP">URL:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=labeledURL" "syntax=url" "cols=>50" -->
+</B></TR>
+
+<TR>
+<TD VALIGN="TOP">Lieblingsgetr&auml;nk:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=drink" -->
+</B></TR>
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+<HR>
+Eintrag zuletzt ge&auml;ndert am <B>
+<!-- DS_ATTRIBUTE "attr=lastModifiedTime" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> von <B>
+<!-- DS_ATTRIBUTE "attr=lastModifiedBy" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/de/dsgw-l10n.conf b/ldap/clients/dsgw/config/de/dsgw-l10n.conf
new file mode 100644
index 00000000..0482312b
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/dsgw-l10n.conf
@@ -0,0 +1,18 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+# To localize the search type menu:
+# Locate dsgw-l10n.conf in config/<lang>/.
+# dsgw-l10n.conf contains translated words for search type pulldown menu.
+# dsgw-l10n.conf sample:
+# Note: the sample part should have double #'s for L10n.
+## translate People <People_translated_in_lang>
+## translate NT-People <NT-People_translated_in_lang>
+## translate Groups <Groups_translated_in_lang>
+## translate NT-Groups <NT-Groups_translated_in_lang>
+## translate Organizations <Organizations_translated_in_lang>
+## translate Org-Units <Org-Units_translated_in_lang>
+## translate Anything <Anything_translated_in_lang>
diff --git a/ldap/clients/dsgw/config/de/dsgw.conf b/ldap/clients/dsgw/config/de/dsgw.conf
new file mode 100644
index 00000000..64c202d1
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/dsgw.conf
@@ -0,0 +1,133 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+# The baseurl directive gives the server, port, and base dn where searches
+# should be rooted. The format is:
+#
+# ldap://host.domain[:port]/basedn
+# - or -
+# ldaps://host.domain:port/basedn (for SSL)
+#
+# Where:
+# - "host.domain" is the fully-qualified domain name of the directory server
+# - "port" is the port used by the directory server. If you are using an
+# "ldaps" URL (that is, if the gateway is using SSL to communicate with the
+# directory server), then the port number is required. Otherwise, it is
+# optional and defaults to the standard LDAP port (389).
+# - "basedn" is the distinguished name of the place in the directory tree
+# where searches should start. Typically, this is the same as the
+# "suffix" directive in your slapd.conf file.
+#
+# examples:
+# baseurl "ldap://mars.aceindustry.com/o=Ace Industry, c=US"
+# - causes the gateway to use the directory server running on host
+# "mars.aceindustry.com". Since no port was given, the default LDAP
+# port (389) is used. Searches in the gateway search for entries
+# contained within o=Ace Industry, c=US.
+#
+# baseurl "ldaps://mars.aceindustry.com:636/o=Ace Industry, c=US"
+# - same as above, but uses SSL to connect to the directory server,
+# and contacts the server on port 636.
+
+baseurl "ldap://ggood.mcom.com:389/o=Netscape Communications Corp., c=US"
+#baseurl "ldap://belltower.mcom.com:9000/o=Ace%20Industry,%20c=US"
+#baseurl "ldap://belltower:9000/o=Netscape Communications Corp., c=US"
+#baseurl "ldap://ldap.itd.umich.edu:389/o=University of Michigan, c=US"
+
+# The dirmgr directive specifies the "Manager" DN for your directory.
+dirmgr "cn=Directory Manager, o=Netscape Communications Corp., c=US"
+
+# The securitypath directive gives the full path name to your
+# security databases.
+#securitypath /tmp/ssl
+
+# If the requireauth directive is present, users must authenticate to the
+# directory before they may perform any operations. XXX: not implemented
+# in 1.0b2.
+#requireauth
+
+# The authlifetime directive specifies how long authentication credentials
+# are valid (in seconds).
+authlifetime 7200
+
+# The default character set, for communication with HTTP clients.
+# A client may override this default, using an HTTP Accept-Charset header.
+# Or, this default may be overridden for a specific language, by creating
+# a LANG/dsgwcharset.conf file which contains the charset name.
+# For compatibility with HTTP clients that can't handle an HTTP response
+# with a charset parameter in the content-type, comment out this directive;
+# responses will be sent in ISO-8859-1, with no explicit charset parameter.
+# RFC 1345 defines the syntax of charset names. There is a registry of
+# charsets, at ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets
+# charset UTF-8
+
+# The NLS (internationalization) directory. The directory of this name
+# should contain a locales directory, which contains configuration files.
+NLS ../../../lib/nls
+
+location-suffix "o=Netscape Communications Corp., c=US"
+
+# Mapping between config/display-XXX.html templates and LDAP objectClasses.
+# This can be generated by using ds/templateindex. The format is:
+#
+# template TEMPLATENAME OBJECTCLASSES
+#
+# where "display-TEMPLATENAME.html" is the name of a display template
+# that is found in this config directory (e.g., "display-group.html") and
+# OBJECTCLASSES is a list of one or more objectClass values. For a given
+# template to be used, all the objectClass values listed must be present
+# in the directory entry, so the order of these template lines is
+# significant (e.g. note that the more specific "umperson" and
+# "orgperson" templates are listed before the one for an ordinary "person").
+#
+template group groupOfNames
+template groupun groupOfUniqueNames
+template mailgroup rfc822mailgroup
+template org organization
+template orgunit organizationalUnit
+template ntperson person inetOrgPerson nTUser
+template umperson person umichPerson
+template orgperson person inetOrgPerson
+template person person
+template country country
+
+#
+# The remainder of this file contains information about the locations and
+# types for new entries.
+#
+# "location" lines define places in the directory where new entries can be added
+# The format of each line is:
+# location HANDLE FRIENDLYNAME DN
+# where HANDLE is a short name which is used in the "newtype" lines (see below)
+# and FRIENDLYNAME is a human-readable name for the location
+# and DN is the Distinguished Name for this location (if it does not end with
+# '#', the location-suffix is appended to to construct a full DN; if it
+# does end with `#', it assumed to be a full DN and the `#' is removed).
+#
+location country "USA" "c=US#"
+location org "Eigene Firma" ""
+location groups "Gruppen in Firma" "ou=Groups"
+location acct "Buchhaltung" "ou=Accounting"
+location hr "Personal" "ou=Human Resources"
+location pay "Lohnbuchhaltung" "ou=Payroll"
+location pd "Produktentwicklung" "ou=Product Development"
+location test "Produkttests" "ou=Product Testing"
+
+# "newtype" lines define the types of new entries that may be added
+# The format of each line is:
+# newtype TEMPLATENAME FRIENDLYNAME RDNATTR LOCATIONS...
+# where TEMPLATENAME corresponds to an existing add-TEMPLATENAME.html file
+# and FRIENDLYNAME is a human-readable name for this type of entry
+# and RDNATTR is the attribute that is used to name entries of this type
+# and LOCATIONS is a blank-separated list of locations where these types of
+# entries can be added (corresponding to a HANDLE on a "location"
+# config. file line).
+#
+newtype orgperson "Person" cn acct hr pay pd test
+newtype ntperson "NT-Benutzer" cn acct hr pay pd test
+newtype groupun "Gruppe" cn groups
+newtype orgunit "Organisationseinheit" ou org
+newtype org "Firma" o country
diff --git a/ldap/clients/dsgw/config/de/dsgw.tmpl b/ldap/clients/dsgw/config/de/dsgw.tmpl
new file mode 100644
index 00000000..f126945d
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/dsgw.tmpl
@@ -0,0 +1,116 @@
+# The htmldir directive tells the CGIs where to find the html files
+htmldir ../html
+
+# The configdir directive tells the CGIs where to find the
+# templates/configuration files
+configdir ../config
+
+# The gwnametrans directive tells the CGIs what url to output
+# for http redirection. It should be the same nameTrans set
+# in the webserver, if any is being is used.
+gwnametrans /clients/dsgw/html/
+
+# The authlifetime directive specifies how long authentication credentials
+# are valid (in seconds).
+authlifetime 7200
+
+# The libNLS data directory. This directory should contain a directory
+# named "locales", which contains the configuration files LANG.ctx and
+# LANG.txt for each supported language (locale).
+NLS ../../../lib/nls
+
+# The default character set, for communication with HTTP clients.
+# A client may override this default, using an HTTP Accept-Charset header.
+# Or, this default may be overridden for a specific language, by creating
+# a LANG/dsgwcharset.conf file which contains the charset name.
+# For compatibility with HTTP clients that can't handle an HTTP response
+# with a charset parameter in the content-type, comment out this directive;
+# responses will be sent in ISO-8859-1, with no explicit charset parameter.
+# RFC 1345 defines the syntax of charset names. There is a registry of
+# charsets, at ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets
+# charset UTF-8
+
+# Substitute ideographic space for non-breaking space in Asian charsets:
+changeHTML "  " " " Shift_JIS Big5 EUC-KR
+changeHTML " " " " Shift_JIS Big5 EUC-KR
+
+# Mapping between config/display-XXX.html templates and LDAP objectClasses.
+# This can be generated by using ds/templateindex. The format is:
+#
+# template TEMPLATENAME OBJECTCLASSES
+#
+# where "display-TEMPLATENAME.html" is the name of a display template
+# that is found in this config directory (e.g., "display-group.html") and
+# OBJECTCLASSES is a list of one or more objectClass values. For a given
+# template to be used, all the objectClass values listed must be present
+# in the directory entry, so the order of these template lines is
+# significant (e.g. note that the more specific "orgperson" template is
+# listed before the one for an ordinary "person").
+#
+template group groupOfNames
+template ntgroup groupOfUniqueNames ntGroup
+template groupun groupOfUniqueNames
+template org organization
+template orgunit organizationalUnit
+template ntperson person inetOrgPerson nTUser
+template orgperson person inetOrgPerson
+template person person
+template country country
+
+#
+# The remainder of this file contains information about the locations and
+# types for new entries.
+#
+# "location" lines define places in the directory where new entries can be added
+# The format of each line is:
+# location HANDLE FRIENDLYNAME DN
+# where HANDLE is a short name which is used in the "newtype" lines (see below)
+# and FRIENDLYNAME is a human-readable name for the location
+# and DN is the Distinguished Name for this location (if it does not end with
+# '#', the location-suffix is appended to to construct a full DN; if it
+# does end with `#', it assumed to be a full DN and the `#' is removed).
+#
+location country "USA" "c=US#"
+location org "Diese Organisation" ""
+location groups "Gruppen" "ou=Groups"
+location people "Personen" "ou=People"
+location special "Spezialbenutzer" "ou=Special Users"
+
+# "newtype" lines define the types of new entries that may be added
+# The format of each line is:
+# newtype TEMPLATENAME FRIENDLYNAME RDNATTR LOCATIONS...
+# where TEMPLATENAME corresponds to an existing display-TEMPLATENAME.html file
+# and FRIENDLYNAME is a human-readable name for this type of entry
+# and RDNATTR is the attribute that is used to name entries of this type
+# and LOCATIONS is a blank-separated list of locations where these types of
+# entries can be added (corresponding to a HANDLE on a "location"
+# config. file line).
+#
+newtype orgperson "Person" uid people special
+newtype ntperson "NT-Benutzer" uid people special
+newtype ntgroup "NT-Gruppe" cn groups
+newtype groupun "Gruppe" cn groups
+newtype orgunit "Gesch&auml;ftsbereich" ou people org
+newtype org "Firma" o country
+
+# Mappings between VCard properties and LDAP attribute types:
+# The format of each line is:
+# vcard-property VCARDPROP SYNTAX LDAPATTR [LDAPATTR2]
+# where VCARDPROP is the name of a VCard property
+# and SYNTAX is "cis" for simple strings and "mls" for multiline strings
+# and LDAPATTR is the LDAP attribute that corresponds to VCARDPROP
+# and LDAPATTR2 is an optional secondary LDAP attribute which is added to
+# the property value by appending a semicolon and then the attr2 value.
+vcard-property FN cis cn
+vcard-property N cis sn givenName
+vcard-property ORG cis o ou
+vcard-property ROLE cis businessCategory
+vcard-property ADR;WORK mls postalAddress
+vcard-property ADR;HOME mls homePostalAddress
+vcard-property EMAIL;INTERNET cis mail
+vcard-property TITLE cis title
+vcard-property TEL;WORK cis telephoneNumber
+vcard-property TEL;FAX cis facsimileTelephoneNumber
+vcard-property TEL;CELL cis mobile
+vcard-property TEL;HOME cis homePhone
+vcard-property NOTE cis description
diff --git a/ldap/clients/dsgw/config/de/dsgw_adm.conf b/ldap/clients/dsgw/config/de/dsgw_adm.conf
new file mode 100644
index 00000000..28dc9775
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/dsgw_adm.conf
@@ -0,0 +1,46 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+# Mapping between config/display-XXX.html templates and LDAP objectClasses.
+# This can be generated by using the templateindex program. The format is:
+#
+# template TEMPLATENAME OBJECTCLASSES
+#
+# where "display-TEMPLATENAME.html" is the name of a display template
+# that is found in this config directory (e.g., "display-group.html") and
+# OBJECTCLASSES is a list of one or more objectClass values. For a given
+# template to be used, all the objectClass values listed must be present
+# in the directory entry, so the order of these template lines is
+# significant (e.g. note that the more specific "orgperson" template is
+# listed before the one for an ordinary "person").
+#
+template group groupOfNames
+template groupun groupOfUniqueNames
+template org organization
+template orgunit organizationalUnit
+template orgperson person inetOrgPerson
+template person person
+template country country
+template licensed-user nsLicenseUser
+
+# Attribute Value Sets (used with DS_ATTRVAL_SET directives)
+# attrvset HANDLE VALUE PREFIX SUFFIX
+#
+attrvset CAL news "" "Netscape Collabra Server"
+attrvset CAL slapd "" "Netscape Directory Server"
+
+
+# Template Set definitions
+# Note: templates must be defined before they can be mentioned on
+# a tmplset line.
+#
+# tmplset SETNAME VIEWNAME TEMPLATENAME [HREF-LOCATION]
+#
+tmplset person "Allgemein" orgperson
+tmplset person "Kennwort:" passwd
+tmplset person "Lizenzen" licensed-user
+tmplset group "Allgemein" group
+tmplset groupun "Allgemein" groupun
diff --git a/ldap/clients/dsgw/config/de/dsgwfilter.conf b/ldap/clients/dsgw/config/de/dsgwfilter.conf
new file mode 100644
index 00000000..5b08d17c
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/dsgwfilter.conf
@@ -0,0 +1,139 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+# ldap filter file
+#
+# lines like this that start with # or empty lines are ignored
+#
+# syntax:
+#
+# <tag>
+# <pattern1> <delimiters> <filter1-1> <desc1-1> [<scope>]
+# <filter1-2> <desc1-2> [<scope>]
+#
+# <pattern2> <delimiters> <filter2-1> <desc2-1> [<scope>] ...
+#
+# The <desc> should describe the filter. It should correctly complete
+# the phrases (in the resource database) DBT_Found0EntriesWhere_,
+# DBT_Found1EntryWhere_ and DBT_FoundEntriesWhere_; for example:
+#
+# Found 1 entry where the <desc> '%v'.
+# Found no entries where the <desc> '%v'.
+# Found 3 entries where the <desc> '%v'.
+#
+# The <desc> should begin with the article ("the" in English) for
+# languages that require agreement between article and noun (e.g
+# genders in Spanish or French).
+#
+# The scope is optional, and should be one of:
+# "base"
+# "onelevel"
+# "subtree"
+# if it is included.
+
+#
+# Directory Server gateway
+#
+
+"dsgw-people"
+ "=" " " "(%v))" "LDAP-Filter ist"
+
+ "^[+]*[0-9][ 0-9-]*$" " " "(telephoneNumber=*%v))" "Telefonnummer endet mit"
+
+ "@" " " "(mail=%v))" "E-Mail-Adresse ist"
+ "(mail=%v*))" "E-Mail-Adresse beginnt mit"
+
+ "^.[. _].*" ". _" "(cn=%v1* %v2-))" "Erste Initiale + Name ist"
+
+ ".*[. _].$" ". _" "(cn=%v1-*))" "Name + letzte Initiale ist"
+
+ "[. _]" ". _" "(|(sn=%v1-)(cn=%v1-)))" "Name ist"
+ "(|(cn=*%v1-*)(sn=*%v1-*)(cn~=%v1-)(sn~=%v1-)))" "Name &auml;hnlich wie oder enth&auml;lt"
+
+ "^\*$" " " "(|(cn=*)(sn=*)(uid=*)))" "Name oder Benutzer-ID ist"
+
+ ".*" ". " "(|(cn=%v1)(sn=%v1)(uid=%v1)))" "Name oder Benutzer-ID ist"
+ "(|(cn=*%v1*)(sn=*%v1*)(cn~=%v1)(sn~=%v1)))" "Name &auml;hnlich wie oder enth&auml;lt"
+
+
+"dsgw-groups"
+ "=" " " "(%v))" "LDAP-Filter ist"
+
+ "^\*$" " " "(cn=*))" "Name ist"
+
+ ".*" ". _" "(cn=%v1-))" "Name ist"
+ "(cn=*%v1-*))" "Name enth&auml;lt"
+ "(cn~=%v1-))" "Name &auml;hnlich wie"
+
+"dsgw-ntgroups"
+ "=" " " "(%v))" "LDAP-Filter ist"
+
+ "^\*$" " " "(cn=*))" "Name ist"
+
+ ".*" ". _" "(cn=%v1-))" "Name ist"
+ "(cn=*%v1-*))" "Name enth&auml;lt"
+ "(cn~=%v1-))" "Name &auml;hnlich wie"
+ "(ntgroupdomainid=%v:*))" "NT-Dom&auml;ne:"
+ "(ntgroupdomainid=*:%v))" "NT-Gruppe ist"
+
+"dsgw-organizations"
+ "=" " " "(%v))" "LDAP-Filter ist"
+
+ "\." " " "(associatedDomain=%v))" "Zugeh&ouml;rige Dom&auml;ne ist"
+
+ "^\*$" " " "(o=*))" "Name ist"
+
+ ".*" " " "(o=%v))" "Name ist"
+ "(o=*%v*))" "Name enth&auml;lt"
+ "(o~=%v))" "Name &auml;hnlich wie"
+
+"dsgw-orgunits"
+ "=" " " "(%v))" "LDAP-Filter ist"
+
+ "\." " " "(associatedDomain=%v))" "Zugeh&ouml;rige Dom&auml;ne ist"
+
+ "^\*$" " " "(ou=*))" "Name ist"
+
+ ".*" " " "(ou=%v))" "Name ist"
+ "(ou=*%v*))" "Name enth&auml;lt"
+ "(ou~=%v))" "Name &auml;hnlich wie"
+
+"dsgw-anything"
+ "=" " " "(%v)" "LDAP-Filter ist"
+
+ "[. _]" ". _" "(|(sn=%v1-)(cn=%v1-)(o=%v1-)(ou=%v1-))" "Name ist"
+ "(|(sn~=%v1-)(cn~=%v1-)(o=%v1-)(ou=%v1-))" "Name &auml;hnlich wie"
+
+ "^\*$" " " "(|(cn=*)(sn=*)(o=*)(ou=*))" "Name ist"
+
+ ".*" ". " "(|(cn=%v1)(sn=%v1)(o=%v1)(ou=%v1))" "Name ist"
+ "(|(cn=*%v1*)(sn=*%v1*)(cn~=%v1)(sn~=%v1)(o=%v1)(ou=%v1))" "Name &auml;hnlich wie oder enth&auml;lt"
+
+
+"dsgw-ntpeople"
+ "=" " " "(%v))" "LDAP-Filter ist"
+
+ "^[+]*[0-9][ 0-9-]*$" " " "(telephoneNumber=*%v))" "Telefonnummer endet mit"
+
+ "@" " " "(mail=%v))" "E-Mail-Adresse ist"
+ "(mail=%v*))" "E-Mail-Adresse beginnt mit"
+
+ "^.[. _].*" ". _" "(cn=%v1* %v2-))" "Erste Initiale + Name ist"
+
+ ".*[. _].$" ". _" "(cn=%v1-*))" "Name + letzte Initiale ist"
+
+ "[. _]" ". _" "(|(sn=%v1-)(cn=%v1-)))" "Name ist"
+ "(|(cn=*%v1-*)(sn=*%v1-*)(cn~=%v1-)(sn~=%v1-)))" "Name &auml;hnlich wie oder enth&auml;lt"
+
+ "^\*$" " " "(|(cn=*)(sn=*)))" "Name ist"
+
+ ".*" ". " "(|(cn=%v1)(sn=%v1)))" "Name ist"
+ "(ntuserlogonserver=%v))" "NT-Anmelde-Server ist"
+ "(ntuserdomainid=%v:*))" "NT-Dom&auml;nenname ist:"
+ "(ntuserdomainid=*:%v))" "NT-Benutzername ist"
+ "(|(cn=*%v1*)(sn=*%v1*)(cn~=%v1)(sn~=%v1)))" "Name &auml;hnlich wie oder enth&auml;lt"
+
+# Do not remove this line, or place any directives after it.
diff --git a/ldap/clients/dsgw/config/de/dsgwfilter_adm.conf b/ldap/clients/dsgw/config/de/dsgwfilter_adm.conf
new file mode 100644
index 00000000..6abe00a2
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/dsgwfilter_adm.conf
@@ -0,0 +1,73 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+# ldap filter file
+#
+# lines like this that start with # or empty lines are ignored
+#
+# syntax:
+#
+# <tag>
+# <pattern1> <delimiters> <filter1-1> <desc1-1> [<scope>]
+# <filter1-2> <desc1-2> [<scope>]
+#
+# <pattern2> <delimiters> <filter2-1> <desc2-1> [<scope>] ...
+#
+# The <desc> should describe the filter. It should correctly complete
+# the phrases (in the resource database) DBT_Found0EntriesWhere_,
+# DBT_Found1EntryWhere_ and DBT_FoundEntriesWhere_; for example (en):
+#
+# Found 1 entry where the <desc> '%v'.
+# Found no entries where the <desc> '%v'.
+# Found 3 entries where the <desc> '%v'.
+#
+# The <desc> should begin with the article ("the" in English) for
+# languages that require agreement between article and noun (e.g
+# genders in Spanish or French).
+#
+# The scope is optional, and should be one of:
+# "base"
+# "onelevel"
+# "subtree"
+# if it is included.
+
+#
+# Directory Server gateway - for Netscape Admin Server
+#
+
+"dsgw-people"
+ "=" " " "(%v))" "LDAP-Filter ist"
+
+ "^[+]*[0-9][ 0-9-]*$" " " "(telephoneNumber=*%v))" "Telefonnummer endet mit"
+
+ "@" " " "(mail=%v))" "E-Mail-Adresse ist"
+ "(mail=%v*))" "E-Mail-Adresse beginnt mit"
+
+ "^.[. _].*" ". _" "(cn=%v1* %v2-))" "erste Initiale + Name ist"
+
+ ".*[. _].$" ". _" "(cn=%v1-*))" "Name + letzte Initiale ist"
+
+ "[. _]" ". _" "(|(sn=%v1-)(cn=%v1-)))" "Name ist"
+ "(|(cn=*%v1-*)(sn=*%v1-*)(cn~=%v1-)(sn~=%v1-)))" "Name sounds like or contains"
+
+ ".*" ". " "(uid=%v1))" "Anmelde-ID ist"
+ "(|(cn=%v1)(sn=%v1)))" "Name ist"
+ "(|(cn=*%v1*)(sn=*%v1*)(cn~=%v1)(sn~=%v1)))" "Name &auml;hnlich wie oder enth&auml;lt"
+
+
+"dsgw-groups"
+ "=" " " "(%v))" "LDAP-Filter ist"
+
+ ".*" ". _" "(cn=%v1-))" "Name ist"
+ "(cn~=%v1-))" "Name &auml;hnlich wie"
+
+"dsgw-orgunits"
+ "=" " " "(%v))" "LDAP-Filter ist"
+
+ ".*" ". _" "(ou=%v1-))" "Name des Gesch&auml;ftsbereichs ist"
+ "(ou~=%v1-))" "Name des Gesch&auml;ftsbereichs &auml;hnlich wie
+
+#Do not remove this line, or place any additional lines after it.
diff --git a/ldap/clients/dsgw/config/de/dsgwsearchprefs.conf b/ldap/clients/dsgw/config/de/dsgwsearchprefs.conf
new file mode 100644
index 00000000..bfc97e4b
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/dsgwsearchprefs.conf
@@ -0,0 +1,213 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+# dsgwsearchprefs.conf - directory server gateway search object definitions
+
+
+# the current version of this file format is 1
+Version 1
+
+
+# Name for this search object
+People
+# options (the only one supported right now is "internal" which means that
+# this search object should not be presented directly to the user)
+# use "" for none
+""
+# Label to place before text box user types in
+"Suchen nach:"
+# Filter prefix to append to all searches
+"(&(objectClass=person)"
+# Tag to use for "Fewer Choices" searches - from ldapfilter.conf file
+"dsgw-people"
+# If a search results in > 1 match, retrieve this attribute to help
+# user disambiguate the entries...
+not-used-by-dsgw
+# ...and label it with this string:
+not-used-by-dsgw
+# Search scope to use when searching
+subtree
+# Follows a list of "More Choices" search options. Format is:
+# Label, attribute, select-bitmap, extra attr display name, extra attr ldap name
+# If last two are null, "Fewer Choices" name/attributes used.
+# Label should begin with the article ("the" in English) for
+# languages that require agreement between article and noun
+# (e.g genders in Spanish or French).
+
+"Vollständiger Name" cn 111111 "" ""
+"Nachname" sn 111111 "" ""
+"Telefon" "telephoneNumber" 111011 "" ""
+"E-Mail-Adresse" "mail" 111111 "" ""
+"Benutzer-ID" "uid" 111111 "" ""
+"Titel" title 111111 "" ""
+END
+# Match types
+"ist" "(%a=%v))"
+"ist nicht" "(!(%a=%v)))"
+"Mit Mustervergleich" "(%a~=%v))"
+"beginnt mit" "(%a=%v*))"
+"endet mit" "(%a=*%v))"
+"enthält" "(%a=*%v*))"
+END
+
+
+"NT-People"
+""
+"Suchen nach:"
+"(&(objectClass=ntuser)"
+"dsgw-ntpeople"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"Vollständiger Name" cn 111111 "" ""
+"Nachname" sn 111111 "" ""
+"Telefon" "telephoneNumber" 111011 "" ""
+"E-Mail-Adresse" "mail" 111111 "" ""
+"Benutzer-ID:" "uid" 111111 "" ""
+"Titel" title 111111 "" ""
+"NT-Benutzername" "ntuserdomainid" 110000 "" ""
+"NT-Domäne" "ntuserdomainid" 101000 "" ""
+"NT-Anmelde-Server:" "ntuserlogonserver" 111111 "" ""
+END
+"ist" "(%a=%v))"
+"ist nicht" "(!(%a=%v)))"
+"Mit Mustervergleich" "(%a~=%v))"
+"beginnt mit" "(%a=%v*))"
+"endet mit" "(%a=*%v))"
+"enthält" "(%a=*%v*))"
+END
+
+
+Groups
+""
+"Suchen nach:"
+"(&(|(objectClass=rfc822MailGroup)(objectClass=groupOfNames)(objectClass=groupOfUniqueNames)(objectClass=groupOfCertificates))"
+"dsgw-groups"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"Name" cn 111111 "" ""
+"Beschreibung:" description 111111 "" ""
+"Besitzer (DN)" "owner" 000011 "owner" "Owner"
+"Mitglied (DN)" "uniquemember" 000011 "" ""
+END
+"ist" "(%a=%v))"
+"ist nicht" "(!(%a=%v)))"
+"Mit Mustervergleich" "(%a~=%v))"
+"beginnt mit" "(%a=%v*))"
+"endet mit" "(%a=*%v))"
+"enthält" "(%a=*%v*))"
+END
+
+NT-Groups
+""
+"Suchen nach:"
+"(&(objectClass=ntGroup)"
+"dsgw-ntgroups"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"Name" cn 111111 "" ""
+"NT-Domäne" "ntgroupdomainid" 110000 "" ""
+"NT-Gruppenname:" "ntgroupdomainid" 101000 "" ""
+"Beschreibung:" description 111111 "" ""
+"Besitzer (DN)" "owner" 000011 "owner" "Owner"
+"Mitglied (DN)" "uniquemember" 000011 "" ""
+END
+"ist" "(%a=%v))"
+"ist nicht" "(!(%a=%v)))"
+"Mit Mustervergleich" "(%a~=%v))"
+"beginnt mit" "(%a=%v*))"
+"endet mit" "(%a=*%v))"
+"enthält" "(%a=*%v*))"
+END
+
+
+Organizations
+""
+"Suchen nach:"
+"(&(objectClass=organization)"
+"dsgw-organizations"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"Name" o 111111 "" ""
+"Standort:" l 111111 "" ""
+"Telefon" telephoneNumber 111011 "" ""
+"Beschreibung:" description 111011 "" ""
+END
+"ist" "(%a=%v))"
+"ist nicht" "(!(%a=%v)))"
+"Mit Mustervergleich" "(%a~=%v))"
+"beginnt mit" "(%a=%v*))"
+"endet mit" "(%a=*%v))"
+"enthält" "(%a=*%v*))"
+END
+
+
+"Org-Units"
+""
+"Suchen nach:"
+"(&(objectClass=organizationalUnit)"
+"dsgw-orgunits"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"Name" ou 111111 "" ""
+"Standort:" l 111111 "" ""
+"Telefon" telephoneNumber 111011 "" ""
+"Beschreibung:" description 111011 "" ""
+END
+"ist" "(%a=%v))"
+"ist nicht" "(!(%a=%v)))"
+"Mit Mustervergleich" "(%a~=%v))"
+"beginnt mit" "(%a=%v*))"
+"endet mit" "(%a=*%v))"
+"enthält" "(%a=*%v*))"
+END
+
+Anything
+""
+"Suchen nach:"
+""
+"dsgw-anything"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"Allg. Name:" cn 111111 "" ""
+"Beschreibung:" description 111111 "" ""
+END
+"ist" "(%a=%v)"
+"ist nicht" "(!(%a=%v))"
+"Mit Mustervergleich" "(%a~=%v)"
+"beginnt mit" "(%a=%v*)"
+"endet mit" "(%a=*%v)"
+"enthält" "(%a=*%v*)"
+END
+
+Auth
+internal
+"Beglaubigen als:"
+"(&(objectClass=person)"
+"dsgw-people"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"Allg. Name:" cn 111111 "" ""
+"Vorname" sn 111111 "" ""
+"Telefon" "telephoneNumber" 111011 "" ""
+"E-Mail-Adresse" "mail" 111111 "" ""
+"Benutzer-ID:" "uid" 111111 "" ""
+"Titel" title 111111 "" ""
+END
+"ist" "(%a=%v))"
+"ist nicht" "(!(%a=%v)))"
+"Mit Mustervergleich" "(%a~=%v))"
+"beginnt mit" "(%a=%v*))"
+"endet mit" "(%a=*%v))"
+"enthält" "(%a=*%v*))"
+END
+
diff --git a/ldap/clients/dsgw/config/de/edit-passwd.html b/ldap/clients/dsgw/config/de/edit-passwd.html
new file mode 100644
index 00000000..7cc0ed1f
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/edit-passwd.html
@@ -0,0 +1,78 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML><HEAD>
+<!-- change a directory entry's password -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>Kennwort &auml;ndern -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE>
+
+</HEAD>
+
+<!-- BODY -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<H2><CENTER>Kennwort &auml;ndern f&uuml;r
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</H2></CENTER>
+
+<HR>
+
+<P>
+<TABLE>
+
+<!-- IF "BoundAsThisEntry" -->
+<TR>
+<TD ALIGN="right" NOWRAP>
+Altes Kennwort:
+</TD><TD>
+<!-- DS_OLDPASSWORD -->
+</TD></TR>
+<!-- ELIF "!Bound" -->
+<TR>
+<TD ALIGN="right" NOWRAP>
+Altes Kennwort:
+</TD><TD>
+<!-- DS_OLDPASSWORD -->
+</TD></TR>
+<!-- ENDIF //BoundAsThisEntry -->
+
+<TR>
+<TD ALIGN="right" NOWRAP>
+Neues Kennwort:
+</TD><TD>
+<!-- DS_NEWPASSWORD -->
+</TD></TR>
+
+<TR>
+<TD ALIGN="right" NOWRAP>
+Neues Kennwort zur Best&auml;tigung wiederholen:
+</TD><TD>
+<!-- DS_CONFIRM_NEWPASSWORD -->
+</TD></TR>
+</TABLE>
+
+<P>
+
+<TABLE BORDER=2 WIDTH="100%">
+<TR>
+<TD ALIGN="center" WIDTH="50%">
+<!-- IF "BoundAsThisEntry" -->
+<!-- DS_SAVEBUTTON "label=Kennwort &auml;ndern" -->
+<!-- ELSE -->
+<!-- DS_SAVEBUTTON "label=Kennwort festlegen" -->
+<!-- ENDIF -->
+<TD ALIGN="center" WIDTH="50%">
+<!-- DS_HELPBUTTON "topic=MODIFYPASSWD" -->
+</TABLE>
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/de/list-Anything.html b/ldap/clients/dsgw/config/de/list-Anything.html
new file mode 100644
index 00000000..0ad13a2a
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/list-Anything.html
@@ -0,0 +1,42 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Suche nach Beliebigem" -->
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT></CENTER>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR>
+<TH NOWRAP>Name<TH NOWRAP>Telefon
+<TH NOWRAP>E-Mail-Adresse <TH NOWRAP>Beschreibung
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=description" -->
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<CENTER><FONT SIZE=+1>
+Versuchen Sie es mit einem anderen Suchbegriff.
+</FONT></CENTER>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/de/list-Auth.html b/ldap/clients/dsgw/config/de/list-Auth.html
new file mode 100644
index 00000000..85183bfd
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/list-Auth.html
@@ -0,0 +1,73 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Authenticate as..." -->
+
+<!--
+ The "authForm" form and the authSubmit() JavaScript function are
+ used to avoid the need for a separate form for each entry listed.
+ Each entry is tied to this single form through the magic of an
+ anchor that contains href=javascript:authSubmit().
+-->
+
+<FORM NAME="authForm" METHOD=POST ACTION="auth">
+<INPUT TYPE="hidden" NAME="escapedbinddn">
+<INPUT TYPE="hidden" NAME="authdesturl"
+<!-- PCONTEXT -->
+<!-- DS_POSTEDVALUE "name=authdesturl" "within=VALUE=%22--value--%22" -->
+>
+</FORM>
+
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+function authSubmit(encodeddn)
+{
+ document.authForm.escapedbinddn.value = encodeddn;
+ document.authForm.submit();
+}
+// End hiding -->
+</SCRIPT>
+
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC "VERBOSE" -->
+<P>
+<!-- IF "FoundEntries" -->
+Klicken Sie auf den Eintrag, den Sie zur Beglaubigung verwenden m&ouml;chten.
+</FONT>
+<P>
+
+<TABLE BORDER=1 CELLPADDING=4>
+<TR>
+<TH NOWRAP>Beglaubigen als <TH NOWRAP>Titel
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "href=javascript:authSubmit('--value--'); onMouseOver=%22window.status='Zum Beglaubigen klicken'; return true;%22" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=title" -->
+
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+<!-- ELSE "FoundEntries" -->
+Gehen Sie zur&uuml;ck, und versuchen Sie es neu.
+<!-- ENDIF "FoundEntries" -->
+</CENTER>
+
+<FORM>
+<TABLE BORDER=2 WIDTH=100%%>
+<TR>
+<TD ALIGN=center width=50%%>
+<INPUT TYPE="button" VALUE="Zur&uuml;ck" onClick="history.back();">
+<TD ALIGN=center WIDTH=50%%>
+<!-- DS_HELPBUTTON "topic=AUTHMULTMATCH" -->
+</TABLE>
+</FORM>
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/de/list-Groups.html b/ldap/clients/dsgw/config/de/list-Groups.html
new file mode 100644
index 00000000..71e2f1eb
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/list-Groups.html
@@ -0,0 +1,38 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Suche nach Gruppen" -->
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT></CENTER>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR>
+<TH NOWRAP>Gruppe
+<TH NOWRAP>Beschreibung
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=description" -->
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<CENTER><FONT SIZE=+1>
+Versuchen Sie es mit einem anderen Suchbegriff.
+</FONT></CENTER>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/de/list-NT-Groups.html b/ldap/clients/dsgw/config/de/list-NT-Groups.html
new file mode 100644
index 00000000..340b78de
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/list-NT-Groups.html
@@ -0,0 +1,44 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Search for NT Groups" -->
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT></CENTER>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR>
+<TH NOWRAP>LDAP-Gruppenname
+<TH NOWRAP>NT-Dom&auml;nenname
+<TH NOWRAP>NT-Gruppenname:
+<TH NOWRAP>Beschreibung
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=ntgroupdomainid" "syntax=ntdomain" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=ntgroupdomainid" "syntax=ntgroupname" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=description" -->
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<CENTER><FONT SIZE=+1>
+Versuchen Sie es mit einem anderen Suchbegriff.
+</FONT></CENTER>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/de/list-NT-People.html b/ldap/clients/dsgw/config/de/list-NT-People.html
new file mode 100644
index 00000000..ebeb8529
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/list-NT-People.html
@@ -0,0 +1,48 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Search for NT-People" -->
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT></CENTER>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR>
+<TH NOWRAP>Name<TH NOWRAP>NT-Dom&auml;ne<TH NOWRAP>NT-Benutzer-ID<TH NOWRAP>TelephoneNumber
+</TR>
+
+<!-- DS_SORTENTRIES "attr=cn" -->
+
+<!-- DS_ENTRYBEGIN -->
+
+<TR>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "label=" -->
+ onMouseOver="window.status='F&uuml;r Details zu diesem Eintrag hier klicken'; return true">
+<!-- DS_ATTRIBUTE "attr=cn" "numfields=0" "defaultvalue=name" "options=readonly" -->
+</A>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=ntuserdomainid" "syntax=ntdomain" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=ntuserdomainid" "syntax=ntuserid" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" -->
+</TR>
+
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<CENTER><FONT SIZE=+1>
+Versuchen Sie es mit einem anderen Suchbegriff.
+</FONT></CENTER>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/de/list-Org-Units.html b/ldap/clients/dsgw/config/de/list-Org-Units.html
new file mode 100644
index 00000000..cbde88f4
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/list-Org-Units.html
@@ -0,0 +1,38 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Suche nach Gesch&auml;ftsbereichen" -->
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT></CENTER>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR><TH>Gesch&auml;ftsbereich<TH>Beschreibung<TH>Telefon
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->
+<TD>
+<!-- DS_ATTRIBUTE "attr=description" -->
+<TD>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" -->
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<CENTER><FONT SIZE=+1>
+Versuchen Sie es mit einem anderen Suchbegriff.
+</FONT></CENTER>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/de/list-Organizations.html b/ldap/clients/dsgw/config/de/list-Organizations.html
new file mode 100644
index 00000000..6abb6e1b
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/list-Organizations.html
@@ -0,0 +1,38 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Suche nach Firmen" -->
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT></CENTER>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR><TH>Firma<TH>Beschreibung<TH>Telefon
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->
+<TD>
+<!-- DS_ATTRIBUTE "attr=description" -->
+<TD>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" -->
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<CENTER><FONT SIZE=+1>
+Versuchen Sie es mit einem anderen Suchbegriff.
+</FONT></CENTER>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/de/list-People.html b/ldap/clients/dsgw/config/de/list-People.html
new file mode 100644
index 00000000..4b6ff0dd
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/list-People.html
@@ -0,0 +1,48 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Search for People" -->
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT></CENTER>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR>
+<TH NOWRAP>Name<TH NOWRAP>Telefon<TH NOWRAP>E-Mail-Adresse<TH NOWRAP>Title
+</TR>
+
+<!-- DS_SORTENTRIES "attr=cn"-->
+
+<!-- DS_ENTRYBEGIN -->
+
+<TR>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "label=" -->
+ onMouseOver="window.status='F&uuml;r Details zu diesem Eintrag hier klicken'; return true">
+<!-- DS_ATTRIBUTE "attr=cn" "numfields=0" "defaultvalue=name" "options=readonly" -->
+</A>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=title" -->
+</TR>
+
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<CENTER><FONT SIZE=+1>
+Versuchen Sie es mit einem anderen Suchbegriff.
+</FONT></CENTER>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/de/list-fa-Groups.html b/ldap/clients/dsgw/config/de/list-fa-Groups.html
new file mode 100644
index 00000000..d69fdc72
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/list-fa-Groups.html
@@ -0,0 +1,22 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Suche nach Benutzern" -->
+<!-- IF "FoundEntries" -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+<FORM>
+<!-- DS_ENTRYBEGIN -->
+
+<!-- DS_ENTRYEND -->
+<!-- DS_END_ENTRYFORM -->
+</FORM>
+
+<!-- ELSE -->
+<!-- DS_ALERT_NOENTRIES -->
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/de/list-fa-People.html b/ldap/clients/dsgw/config/de/list-fa-People.html
new file mode 100644
index 00000000..d69fdc72
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/list-fa-People.html
@@ -0,0 +1,22 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Suche nach Benutzern" -->
+<!-- IF "FoundEntries" -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+<FORM>
+<!-- DS_ENTRYBEGIN -->
+
+<!-- DS_ENTRYEND -->
+<!-- DS_END_ENTRYFORM -->
+</FORM>
+
+<!-- ELSE -->
+<!-- DS_ALERT_NOENTRIES -->
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/de/list-urlsearch.html b/ldap/clients/dsgw/config/de/list-urlsearch.html
new file mode 100644
index 00000000..8ebdba8b
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/list-urlsearch.html
@@ -0,0 +1,38 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Suche nach URL" -->
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT></CENTER>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR><TH>Name <TH>Telefon <TH>E-Mail-Adresse
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->
+<TD>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" -->
+<TD>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" -->
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<CENTER><FONT SIZE=+1>
+Versuchen Sie es mit einem anderen Suchbegriff.
+</FONT></CENTER>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/de/newentry.html b/ldap/clients/dsgw/config/de/newentry.html
new file mode 100644
index 00000000..fb2c21f6
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/newentry.html
@@ -0,0 +1,25 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--newentry.html-->
+<TITLE>Netscape Directory Server Gateway Neuer Eintrag</TITLE>
+<!-- DS_NEWENTRY_SCRIPT -->
+</HEAD>
+<FRAMESET ROWS=75,70,* BORDER=0 onLoad="init()">
+ <FRAME SRC="lang?<!-- GCONTEXT -->&file=newentrytitle.html" NORESIZE SCROLLING="NO">
+ <FRAME SRC="newentry?<!-- GCONTEXT -->&file=type"
+ NAME="newentryTypeFrame" SCROLLING="NO"> <FRAME SRC="newentry?<!-- GCONTEXT -->&file=name"
+ NAME="newentryNameFrame">
+</FRAMESET>
+
+<NOFRAMES>
+<BODY>
+Sie ben&ouml;tigen einen Client, der Rahmen darstellen kann, um dieses Dokument zu betrachten.
+</BODY>
+</NOFRAMES>
+</HTML>
diff --git a/ldap/clients/dsgw/config/de/newentryName.html b/ldap/clients/dsgw/config/de/newentryName.html
new file mode 100644
index 00000000..0cd92a30
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/newentryName.html
@@ -0,0 +1,48 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--newentryName.html-->
+</HEAD>
+<!-- DS_NEWENTRY_NAME_BODY -->
+<p>
+<!-- DS_NEWENTRY_NAME_FORM -->
+<font SIZE="+2">Schritt 2.</font>
+Geben Sie einen Namen f&uuml;r die neue
+<!-- EVALUATE "entType.fullname" -->
+.
+<p><nobr><font SIZE="+1">
+<!-- EVALUATE "entType.rdnattr" -->
+=</font>
+<input TYPE="text" NAME="entryname" SIZE="40">
+</nobr>
+<p>
+<font SIZE="+2">Schritt 3.</font>
+
+<!-- DS_NEWENTRY_LOCATION_BEGIN -->
+W&auml;hlen Sie aus der untenstehenden Liste den Verzeichnisstandort f&uuml;r diese Person.
+<!-- EVALUATE "entType.fullname" -->
+. Wenn Sie "Andere" w&auml;hlen, m&uuml;ssen Sie den gesamten unverwechselbaren Namen des Standorts eingeben, an dem dieser Eintrag hinzugef&uuml;gt werden soll.
+<p>
+<!-- DS_NEWENTRY_LOCATION_SELECT -->
+<OPTION VALUE="">Andere</OPTION>
+</SELECT>
+<input TYPE="text" NAME="dnsuffix" SIZE="70">
+<p>
+<font SIZE="+2">Schritt 4.</font>
+<!-- DS_NEWENTRY_LOCATION_END -->
+
+Klicken Sie auf "Weiter". Es erscheint ein Formular, in dem Sie Angaben machen oder &auml;ndern k&ouml;nnen. Wenn Sie alle Angaben gemacht haben, speichern Sie den Eintrag.
+<p>
+<center><table BORDER="2" WIDTH="75%">
+<tr><td ALIGN="center" WIDTH="50%">
+<input TYPE="submit" VALUE="Weiter">
+<td ALIGN="center" WIDTH="50%">
+
+<!-- DS_HELP_BUTTON "ADDING" -->
+</table></center></form>
+</body></HTML>
diff --git a/ldap/clients/dsgw/config/de/newentryType.html b/ldap/clients/dsgw/config/de/newentryType.html
new file mode 100644
index 00000000..fcf0f872
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/newentryType.html
@@ -0,0 +1,14 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!--newentryType.html-->
+<!-- DS_NEWENTRY_TYPE_BODY -->
+<!-- DS_NEWENTRY_TYPE_FORM -->
+<font SIZE="+2">Schritt 1.</font>
+W&auml;hlen Sie die Art des zu erstellenden Eintrags.
+<!-- DS_NEWENTRY_TYPE_SELECT -->
+</form></body></HTML>
diff --git a/ldap/clients/dsgw/config/de/search.html b/ldap/clients/dsgw/config/de/search.html
new file mode 100644
index 00000000..8c1a5e36
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/search.html
@@ -0,0 +1,18 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- search.html -->
+<TITLE>Netscape Directory Server Gateway: Standardsuche</TITLE>
+<!-- DS_SEARCH_SCRIPT -->
+</HEAD>
+<FRAMESET ROWS=75,100,* BORDER=0 onLoad="init()">
+ <FRAME SRC="lang?<!-- GCONTEXT -->&file=searchtitle.html" SCROLLING="NO">
+ <FRAME SRC="search?<!-- GCONTEXT -->&file=string" NAME=searchFrame NORESIZE SCROLLING="NO">
+ <FRAME SRC="lang?<!-- GCONTEXT -->&file=greeting.html" NAME=outputFrame>
+</FRAMESET>
+</HTML>
diff --git a/ldap/clients/dsgw/config/de/searchString.html b/ldap/clients/dsgw/config/de/searchString.html
new file mode 100644
index 00000000..ff1531b4
--- /dev/null
+++ b/ldap/clients/dsgw/config/de/searchString.html
@@ -0,0 +1,30 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- searchString.html -->
+</HEAD>
+<!-- DS_SEARCH_BODY -->
+<!-- DS_SEARCH_FORM "target=outputFrame" -->
+<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH=100%>
+<TR><TH ALIGN=RIGHT>Suchen: </TH><TD>
+<!-- DS_SEARCH_TYPE -->
+</TD>
+<TH>innerhalb von:</TH><TD>
+<!-- DS_SEARCH_BASE -->
+</TD></TR>
+<TR><TH ALIGN=RIGHT>Suchen nach: </TH>
+<TD COLSPAN=3>
+<INPUT NAME="searchstring" SIZE=30>
+<INPUT TYPE="SUBMIT" VALUE="Suchen">&nbsp;&nbsp;
+<!-- DS_HELP_BUTTON "SMARTSEARCH" -->
+</TD></TR>
+</TABLE>
+<INPUT TYPE="hidden" NAME="ldapsizelimit" VALUE="1000">
+<INPUT TYPE="hidden" NAME="ldaptimelimit" VALUE="180">
+<!-- PCONTEXT -->
+</FORM></BODY></HTML>
diff --git a/ldap/clients/dsgw/config/display-country.html b/ldap/clients/dsgw/config/display-country.html
new file mode 100644
index 00000000..77b677f3
--- /dev/null
+++ b/ldap/clients/dsgw/config/display-country.html
@@ -0,0 +1,61 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_OBJECTCLASS "value=country" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>Country -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE>
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+
+
+<TABLE>
+<TR><TD NOWRAP>
+<IMG SRC="lang?<!-- GCONTEXT -->&file=country.gif" ALT="Country" HSPACE=5>
+</TD><TD class="boldbig">
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TD></TR></TABLE>
+
+<TABLE CELLSPACING="5" width="90%">
+<TR class="bgColor9">
+<TD COLSPAN="5" class="bgColor9">&nbsp;</TD>
+</TR>
+
+<TR><TD VALIGN="TOP" NOWRAP class="bold">Country Name:</TD><TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=co" "options=sort" -->
+</TD><TD WIDTH="20%"></TD>
+<TD VALIGN="TOP" class="bold">Description:</TD><TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=description" -->
+</TD></TR>
+
+<TR><TD VALIGN="TOP" class="bold">See Also:</TD><TD VALIGN="TOP" NOWRAP COLSPAN="4">
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP" class="bold">URL:</TD><TD VALIGN="TOP" NOWRAP COLSPAN="4">
+<!-- DS_ATTRIBUTE "attr=labeledURI" "syntax=url" -->
+</TD></TR>
+<TR class="bgColor9">
+<TD COLSPAN="5" class="bgColor9">&nbsp;</TD>
+</TR>
+
+</TABLE>
+
+<div class="text22">This entry was last modified on <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> by <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+</div>
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/display-dc.html b/ldap/clients/dsgw/config/display-dc.html
new file mode 100644
index 00000000..f5c63cd0
--- /dev/null
+++ b/ldap/clients/dsgw/config/display-dc.html
@@ -0,0 +1,188 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</head>
+<!-- DS_OBJECTCLASS "value=domain" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+New
+<!-- ENDIF // Adding -->
+Domaincomponent -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+
+<!-- IF "!Displaying" -->
+<body bgcolor="#FFFFFF" marginheight=0 marginwidth=0 leftmargin="0" topmargin="0" rightmargin="0">
+<table width="100%" class="bgColor1" cellspacing="0" cellpadding="0" border="0">
+<tr width="100%" class="bgColor1">
+<TD valign="top" class="bgColor1"><IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif" width="10" height="45" border="0"></TD>
+<TD valign="middle" align="left" class="text15" width="100%">Domaincomponent Entry</td>
+</tr>
+</table>
+<table cellspacing="0" cellpadding="0">
+<tr>
+<td><IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif" width="1" height="10" border="0"></td>
+</tr>
+</table>
+<!-- ELSE -->
+<body bgcolor="#FFFFFF">
+<!-- ENDIF -->
+
+<div class="text22">
+<!-- DS_LAST_OP_INFO -->
+</div>
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE>
+<TR>
+<TD>
+<IMG SRC="lang?<!-- GCONTEXT -->&file=dc.gif" ALT="Domaincomponent" HSPACE=5>
+<TD class="boldbig">
+<!-- IF "Adding" -->
+New Domaincomponent -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- DS_EDITBUTTON "label=Edit Domaincomponent" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Save New dc" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Cancel" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_ORG" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_ORG" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Rename dc" "prompt=Enter a new name for this domaincomponent:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Delete dc" "prompt=Delete this domaincomponent?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="domain">
+<!-- ENDIF // Adding -->
+
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<!-- IF "!Displaying" -->
+<div class="text22">&nbsp;<B>* Indicates a required field</B><BR></DIV>
+<!-- ENDIF -->
+
+<TABLE width="90%">
+<tr><td colspan="5" class="bgColor9">&nbsp;</td></tr>
+<TR>
+<TD VALIGN="TOP" NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Domaincomponent Name:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=o" "cols=>20" -->
+</TD><TD WIDTH="20%"></TD>
+<TD
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Description:</TD><TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>30" -->
+</TR>
+
+<TR><TD
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Phone:</TD><TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>16" -->
+</TD><TD></TD>
+<TD NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Business Category:</TD><TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=businessCategory" "cols=>30" -->
+</TD></TR>
+
+<TR><TD
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Fax:<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=facsimiletelephonenumber" "syntax=tel" "cols=>16" -->
+</TD><TD></TD>
+<TD
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Location:</TD><TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=l" "cols=>30" -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP" NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Mailing Address:</TD>
+<TD VALIGN="TOP" COLSPAN="4" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=postalAddress" "syntax=mls" "type=TEXTAREA" "cols=>40" "rows=>4" -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>See Also:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4">
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "dncomponents=3" "cols=>50" -->
+</TR>
+<tr><td colspan="5" class="bgColor9">&nbsp;</td></tr>
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+<div class="text22">
+&nbsp;This entry was last modified on <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> by <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+</div>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/display-dnedit.html b/ldap/clients/dsgw/config/display-dnedit.html
new file mode 100644
index 00000000..eec41e2d
--- /dev/null
+++ b/ldap/clients/dsgw/config/display-dnedit.html
@@ -0,0 +1,85 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_ENTRYBEGIN -->
+<!-- DS_EMIT_BASE_HREF -->
+<TITLE>
+Edit
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE>
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</HEAD>
+<body bgcolor="#FFFFFF" "onLoad='document.searchForm.searchstring.focus();'" marginheight=0 marginwidth=0 leftmargin="0" topmargin="0" rightmargin="0">
+<table width="100%" class="bgColor1" cellspacing="0" cellpadding="0" border="0">
+<tr width="100%" class="bgColor1">
+<TD valign="top" class="bgColor1"><IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif" width="10" height="45" border="0"></TD>
+<TD valign="middle" align="left" class="text15" width="100%">
+Edit
+<!-- DS_DNDESC -->
+:
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</td>
+</tr>
+</table>
+
+<div class="text22">
+<!-- DS_LAST_OP_INFO "suffix=<table width=90% class=bgColor9><tr><td>&nbsp;</td></tr></table>" -->
+</div>
+<!-- DS_BEGIN_DNSEARCHFORM -->
+<INPUT TYPE=hidden NAME=mode VALUE="smart">
+<INPUT TYPE=hidden NAME=dnlist_js VALUE="true">
+<INPUT TYPE=hidden NAME=listifone VALUE="true">
+<INPUT TYPE=hidden NAME=listtemplate VALUE="">
+<INPUT TYPE=hidden NAME=faMode VALUE="add">
+<INPUT TYPE=hidden NAME=ldapsizelimit VALUE="1000">
+<INPUT TYPE=hidden NAME=ldaptimelimit VALUE="180">
+<!-- PCONTEXT -->
+
+
+<CENTER>
+<TABLE CELLSPACING=0 CELLPADDING=10 border=0><TR>
+
+<TD NOWRAP>
+Find
+<SELECT NAME="type">
+<OPTION SELECTED VALUE="People">People
+<OPTION VALUE="Groups">Groups
+</SELECT>
+</TD>
+
+<TD NOWRAP>
+matching&nbsp;
+<INPUT NAME="searchstring" SIZE=15>
+</TD>
+
+<TD>
+<!-- DS_DNADDBUTTON "VALUE= Find and Add " -->
+<BR>
+<!-- DS_DNREMOVEBUTTON "VALUE= Find and Remove " -->
+</TD>
+
+</TR>
+</TABLE>
+
+<P>
+<TABLE BORDER="2" WIDTH="100%">
+<TR>
+<TD WIDTH="33%" ALIGN="center">
+<INPUT TYPE=BUTTON VALUE=" Save Changes " onClick="parent.saveChanges();">
+<TD WIDTH="34%" ALIGN="center">
+<INPUT TYPE=BUTTON VALUE=" Cancel " onClick="parent.cancel();">
+<TD WIDTH=33% ALIGN=center>
+<!-- DS_HELPBUTTON "topic=EDIT_GROUPMEM" -->
+</TD></TR></TABLE></CENTER>
+
+<INPUT TYPE=hidden NAME=completion_javascript VALUE='parent.updateList(parent.controlFrame.document.searchForm.faMode.value, parent.dnlist, parent.stagingFrame.dnlist, parent.outputFrame);parent.controlFrame.document.searchForm.faMode.value="add";'>
+<!-- DS_END_DNSEARCHFORM -->
+
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/display-dneditpeople.html b/ldap/clients/dsgw/config/display-dneditpeople.html
new file mode 100644
index 00000000..4df010d3
--- /dev/null
+++ b/ldap/clients/dsgw/config/display-dneditpeople.html
@@ -0,0 +1,83 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_ENTRYBEGIN -->
+<!-- DS_EMIT_BASE_HREF -->
+<TITLE>
+Edit
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE>
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</HEAD>
+
+<body bgcolor="#FFFFFF" "onLoad='document.searchForm.searchstring.focus();'" marginheight=0 marginwidth=0 leftmargin="0" topmargin="0" rightmargin="0">
+<table width="100%" class="bgColor1" cellspacing="0" cellpadding="0" border="0">
+<tr width="100%" class="bgColor1">
+<TD valign="top" class="bgColor1"><IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif" width="10" height="45" border="0"></TD>
+<TD valign="middle" align="left" class="text15" width="100%">
+Edit
+<!-- DS_DNDESC -->
+:
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</td>
+</tr>
+</table>
+
+<!-- DS_LAST_OP_INFO "suffix=<table width=90% class="bgColor9"><tr><td>&nbsp;</td></tr></table>" -->
+
+<!-- DS_BEGIN_DNSEARCHFORM -->
+<INPUT TYPE=hidden NAME=mode VALUE="smart">
+<INPUT TYPE=hidden NAME=dnlist_js VALUE="true">
+<INPUT TYPE=hidden NAME=listifone VALUE="true">
+<INPUT TYPE=hidden NAME=listtemplate VALUE="">
+<INPUT TYPE=hidden NAME=faMode VALUE="add">
+<INPUT TYPE=hidden NAME=ldapsizelimit VALUE="1000">
+<INPUT TYPE=hidden NAME=ldaptimelimit VALUE="180">
+<!-- PCONTEXT -->
+
+<CENTER>
+<TABLE CELLSPACING=0 CELLPADDING=10 border=0><TR>
+
+<TD NOWRAP>
+Find
+<SELECT NAME="type">
+<OPTION SELECTED VALUE="People">People
+</SELECT>
+</TD>
+
+<TD NOWRAP>
+matching&nbsp;
+<INPUT NAME="searchstring" SIZE=15>
+</TD>
+
+<TD>
+<!-- DS_DNADDBUTTON "VALUE= Find and Add " -->
+<BR>
+<!-- DS_DNREMOVEBUTTON "VALUE= Find and Remove " -->
+</TD>
+
+</TR>
+</TABLE>
+
+<P>
+<TABLE BORDER="2" WIDTH="100%">
+<TR>
+<TD WIDTH="33%" ALIGN="center">
+<INPUT TYPE=BUTTON VALUE=" Save Changes " onClick="parent.saveChanges();">
+<TD WIDTH="34%" ALIGN="center">
+<INPUT TYPE=BUTTON VALUE=" Cancel " onClick="parent.cancel();">
+<TD WIDTH=33% ALIGN=center>
+<!-- DS_HELPBUTTON "topic=EDIT_PERSON_REF" -->
+</TD></TR></TABLE></CENTER>
+
+<INPUT TYPE=hidden NAME=completion_javascript VALUE='parent.updateList(parent.controlFrame.document.searchForm.faMode.value, parent.dnlist, parent.stagingFrame.dnlist, parent.outputFrame);parent.controlFrame.document.searchForm.faMode.value="add";'>
+<!-- DS_END_DNSEARCHFORM -->
+
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/display-group.html b/ldap/clients/dsgw/config/display-group.html
new file mode 100644
index 00000000..4774173b
--- /dev/null
+++ b/ldap/clients/dsgw/config/display-group.html
@@ -0,0 +1,186 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_OBJECTCLASS "value=groupOfNames" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+New
+<!-- ENDIF // Adding -->
+Group Entry -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE>
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</HEAD>
+
+<!-- IF "!Displaying" -->
+<body bgcolor="#FFFFFF" marginheight=0 marginwidth=0 leftmargin="0" topmargin="0" rightmargin="0">
+<table width="100%" class="bgColor1" cellspacing="0" cellpadding="0" border="0">
+<tr width="100%" class="bgColor1">
+<TD valign="top" class="bgColor1"><IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif" width="10" height="45" border="0"></TD>
+<TD valign="middle" align="left" class="text15" width="100%">Group Entry</td>
+</tr>
+</table>
+<table cellspacing="0" cellpadding="0">
+<tr>
+<td><IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif" width="1" height="10" border="0"></td>
+</tr>
+</table>
+<!-- ELSE -->
+<body bgcolor="#FFFFFF">
+<!-- ENDIF -->
+
+<div class="text22">
+<!-- DS_LAST_OP_INFO -->
+</div>
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE>
+<TR>
+<TD class="boldbig">
+<IMG SRC="lang?<!-- GCONTEXT -->&file=group.gif" ALT="Group" HSPACE=5 >
+<!-- IF "Adding" -->
+New Group -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- DS_EDITBUTTON "label=Edit Group" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Save New Group" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Cancel" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_GROUP" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_GROUP" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Rename Group" "prompt=Enter a new name for this group:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Delete Group" "prompt=Delete this group?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="groupOfNames">
+<!-- ENDIF // Adding -->
+
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- PCONTEXT -->
+<!-- DS_STD_COMPLETION_JS -->
+
+<!-- IF "!Displaying" -->
+<div class="text22">&nbsp; <B>* Indicates a required field</B><BR></div>
+<!-- ENDIF -->
+
+
+<TABLE CELLSPACING="5" width="90%">
+<tr><td colspan="5" class="bgColor9">&nbsp;</td></tr>
+<TR>
+<TD NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Name:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=cn" "cols=>40" -->
+</TD><TD WIDTH="20%"></TD>
+</TR>
+
+<TR>
+<TD NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Description:</TD>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>40" "defaultvalue=none" -->
+</TD></TR>
+
+<TR>
+<TD NOWRAP VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Owner:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Edit..." "template=dnedit" "attr=owner" "desc=Owner" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP COLSPAN="4">
+<!-- DS_ATTRIBUTE "attr=owner" "syntax=dn" "options=sort,readonly" -->
+</TD>
+
+<TR>
+<TD NOWRAP VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>See Also:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Edit..." "template=dnedit" "attr=seeAlso" "desc=See Also" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP COLSPAN="4">
+<!-- IF "!Adding" -->
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "options=sort,readonly" -->
+<!-- ELSE // !Adding -->
+<I>You must save this entry before you can edit these fields.</I>
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD NOWRAP VALIGN="top"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Group Members:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Edit..." "template=dnedit" "attr=uniquemember" "desc=Group Members" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=uniquemember" "syntax=dn" "options=sort,readonly" -->
+</TD></TR>
+<tr><td colspan="5" class="bgColor9">&nbsp;</td></tr>
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+<div class="text22">&nbsp;This entry was last modified on <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> by <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+</div>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/display-groupun.html b/ldap/clients/dsgw/config/display-groupun.html
new file mode 100644
index 00000000..11d52851
--- /dev/null
+++ b/ldap/clients/dsgw/config/display-groupun.html
@@ -0,0 +1,186 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_OBJECTCLASS "value=groupOfUniqueNames" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+New
+<!-- ENDIF // Adding -->
+Group Entry -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE>
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</HEAD>
+
+<!-- IF "!Displaying" -->
+<body bgcolor="#FFFFFF" marginheight=0 marginwidth=0 leftmargin="0" topmargin="0" rightmargin="0">
+<table width="100%" class="bgColor1" cellspacing="0" cellpadding="0" border="0">
+<tr width="100%" class="bgColor1">
+<TD valign="top" class="bgColor1"><IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif" width="10" height="45" border="0"></TD>
+<TD valign="middle" align="left" class="text15" width="100%">Group Entry</td>
+</tr>
+</table>
+<table cellspacing="0" cellpadding="0">
+<tr>
+<td><IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif" width="1" height="10" border="0"></td>
+</tr>
+</table>
+<!-- ELSE -->
+<body bgcolor="#FFFFFF">
+<!-- ENDIF -->
+
+<div class="text22">
+<!-- DS_LAST_OP_INFO -->
+</div>
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE>
+<TR>
+<TD class="boldbig">
+<IMG SRC="lang?<!-- GCONTEXT -->&file=group.gif" ALT="Group" HSPACE=5 >
+<!-- IF "Adding" -->
+New Group -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- DS_EDITBUTTON "label=Edit Group" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Save New Group" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Cancel" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_GROUP" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_GROUP" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Rename Group" "prompt=Enter a new name for this group:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Delete Group" "prompt=Delete this group?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="groupOfUniqueNames">
+<!-- ENDIF // Adding -->
+
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- PCONTEXT -->
+<!-- DS_STD_COMPLETION_JS -->
+
+<!-- IF "!Displaying" -->
+<div class="text22"><b>&nbsp;* Indicates a required field</B><BR></div>
+<!-- ENDIF -->
+
+
+<TABLE CELLSPACING="5" width="90%">
+<tr><td colspan="5" class="bgColor9">&nbsp;</td></tr>
+<TR>
+<TD NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Name:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=cn" "cols=>40" -->
+</TD><TD WIDTH="20%"></TD>
+</TR>
+
+<TR>
+<TD NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Description:</TD>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>40" "defaultvalue=none" -->
+</TD></TR>
+
+<TR>
+<TD NOWRAP VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Owner:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Edit..." "template=dnedit" "attr=owner" "desc=Owner" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP COLSPAN="4">
+<!-- DS_ATTRIBUTE "attr=owner" "syntax=dn" "options=sort,readonly" -->
+</TD>
+
+<TR>
+<TD NOWRAP VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>See Also:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Edit..." "template=dnedit" "attr=seeAlso" "desc=See Also" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP COLSPAN="4">
+<!-- IF "!Adding" -->
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "options=sort,readonly" -->
+<!-- ELSE // !Adding -->
+<I>You must save this entry before you can edit these fields.</I>
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD NOWRAP VALIGN="top"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Group Members:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Edit..." "template=dnedit" "attr=uniquemember" "desc=Group Members" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=uniquemember" "syntax=dn" "options=sort,readonly" -->
+</TD></TR>
+<tr><td colspan="5" class="bgColor9">&nbsp;</td></tr>
+</TABLE>
+
+<!-- IF "!Adding" -->
+<div class="text22">
+&nbsp; This entry was last modified on <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> by <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+</div>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/display-ntgroup.html b/ldap/clients/dsgw/config/display-ntgroup.html
new file mode 100644
index 00000000..cb1fa5e5
--- /dev/null
+++ b/ldap/clients/dsgw/config/display-ntgroup.html
@@ -0,0 +1,277 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_OBJECTCLASS "value=ntGroup" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+New
+<!-- ENDIF // Adding -->
+NT Group Entry -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE>
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</HEAD>
+
+<!-- IF "!Displaying" -->
+<body bgcolor="#FFFFFF" marginheight=0 marginwidth=0 leftmargin="0" topmargin="0" rightmargin="0">
+<table width="100%" class="bgColor1" cellspacing="0" cellpadding="0" border="0">
+<tr width="100%" class="bgColor1">
+<TD valign="top" class="bgColor1"><IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif" width="10" height="45" border="0"></TD>
+<TD valign="middle" align="left" class="text15" width="100%">NT Group Entry</td>
+</tr>
+</table>
+<table cellspacing="0" cellpadding="0">
+<tr>
+<td><IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif" width="1" height="10" border="0"></td>
+</tr>
+</table>
+<!-- ELSE -->
+<body bgcolor="#FFFFFF">
+<!-- ENDIF -->
+
+<div class="text22">
+<!-- DS_LAST_OP_INFO -->
+</div>
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE>
+<TR>
+<TD class="boldbig">
+<IMG SRC="lang?<!-- GCONTEXT -->&file=group.gif" ALT="Group" HSPACE=5 >
+<!-- IF "Adding" -->
+New NT Group -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- DS_EDITBUTTON "label=Edit NT Group" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Save New Group" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Cancel" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_NTGROUP" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_NTGROUP" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Rename NT Group" "prompt=Enter a new name for this group:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Delete NT Group" "prompt=Delete this group?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="ntGroup">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="groupOfUniqueNames">
+<!-- ENDIF // Adding -->
+
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<!-- IF "!Displaying" -->
+<div class="text22"><B>&nbsp; * Indicates a required field</B><BR></div>
+<!-- ENDIF -->
+
+
+<TABLE CELLSPACING="5" width="90%">
+<tr><td colspan="5" class="bgColor9">&nbsp;</td></tr>
+<TR>
+<TD NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Name:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=cn" "cols=>40" -->
+</TD><TD WIDTH="20%"></TD>
+</TR>
+
+<TR>
+<TD NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>NT Group Name:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD NOWRAP>
+<!-- IF "!Adding" -->
+<!-- DS_ATTRIBUTE "attr=ntGroupDomainId" "syntax=ntgroupname" "cols=>16" "options=readonly" "defaultvalue=none" -->
+<!-- ELSE // Adding -->
+<!-- DS_ATTRIBUTE "attr=ntGroupDomainId" "syntax=ntgroupname" "cols=>16" -->
+<!-- ENDIF // Adding -->
+</TD></TR>
+
+<TR>
+<TD NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>NT Group Type:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD NOWRAP>
+<!-- IF "!Adding" -->
+<!-- DS_ATTRIBUTE "attr=nTGroupType" "defaultvalue=Global" "options=readonly" "cols=>16" -->
+<!-- ELSE // Adding -->
+<!-- DS_ATTRIBUTE "attr=nTGroupType" "defaultvalue=Global" "cols=>16" -->
+<!-- ENDIF // Adding -->
+</TD></TR>
+
+<TR>
+<TD NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>NT Group Domain:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=ntGroupDomainId" "syntax=ntdomain" "cols=>16" -->
+</TD></TR>
+
+<TR>
+<TD NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Description:</TD>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>40" "defaultvalue=none" -->
+</TD></TR>
+
+<TR>
+<TD NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Locale:</TD>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=l" "cols=>40" "defaultvalue=none" -->
+</TD></TR>
+
+<TR>
+<TD NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Organizational Unit:</TD>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=ou" "cols=>40" "defaultvalue=none" -->
+</TD></TR>
+
+<TR>
+<TD NOWRAP VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Owner:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Edit..." "template=dnedit" "attr=owner" "desc=Owner" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP COLSPAN="4">
+<!-- DS_ATTRIBUTE "attr=owner" "syntax=dn" "options=sort,readonly" -->
+</TD>
+
+<TR>
+<TD NOWRAP VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>See Also:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Edit..." "template=dnedit" "attr=seeAlso" "desc=See Also" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP COLSPAN="4">
+<!-- IF "!Adding" -->
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "options=sort,readonly" -->
+<!-- ELSE // !Adding -->
+<I>You must save this entry before you can edit these fields.</I>
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD NOWRAP VALIGN="top"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>NT Group Members:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Edit..." "template=dnedit" "attr=uniquemember" "desc=NT Group Members" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=uniquemember" "syntax=dn" "options=sort,readonly" -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP" NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Delete NT Group if Group deleted:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "syntax=bool" "type=radio" "true=Yes" "false=No" "defaultvalue=FALSE" "attr=nTGroupDeleteGroup" -->
+</TD><TD></TD>
+</TD></TR>
+
+<!-- IF "Adding" -->
+<TR>
+<TD VALIGN="TOP">Create New NT Group:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "syntax=bool" "type=radio" "true=Yes" "false=No" "defaultvalue=TRUE" "attr=nTGroupCreateNewGroup" -->
+</TD><TD></TD></TR>
+<!-- ENDIF // Adding -->
+<tr><td colspan="5" class="bgColor9">&nbsp;</td></tr>
+</TABLE>
+
+<!-- IF "!Adding" -->
+
+<div class="text22">
+&nbsp; This entry was last modified on <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> by <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+</div>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/display-ntperson.html b/ldap/clients/dsgw/config/display-ntperson.html
new file mode 100644
index 00000000..89582ba4
--- /dev/null
+++ b/ldap/clients/dsgw/config/display-ntperson.html
@@ -0,0 +1,670 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- NT User person directory entry -->
+<!-- DS_OBJECTCLASS "value=person,inetOrgPerson,nTUser" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+New
+<!-- ENDIF // Adding -->
+NT Person Entry -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE>
+
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+function showVCard()
+{
+<!-- DS_ATTRIBUTE "attr=_vcard" "options=link" "mimetype=text/x-vcard" "prefix=var cardurl=" "suffix=";" -->
+
+ document.location.href = cardurl;
+}
+
+function showAimIcon()
+{
+var aimStatusText = "";
+var aimID = "";
+
+<!-- IF "DisplayAimPresence" -->
+aimStatusText =
+<!-- DS_ATTRIBUTE "attr=nsaimstatustext" "options=quoted" -->
+;
+
+aimID =
+<!-- DS_ATTRIBUTE "attr=nsaimid" "options=quoted" -->
+;
+<!-- ENDIF -->
+
+if (aimStatusText == "" || aimID == "" || aimStatusText != "ONLINE") {
+ return;
+}
+
+document.write('<a href=\"aim:goim?Screenname=' + aimID.replace(/ /,"+") + '\"><IMG SRC=\"lang?<!-- GCONTEXT -->&file=aim-online.gif\" ALT=\"Click to send an AIM to this person\" BORDER=0 HSPACE=5></a>');
+}
+// End hiding -->
+</SCRIPT>
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</HEAD>
+
+<!-- IF "!Displaying" -->
+<body bgcolor="#FFFFFF" marginheight=0 marginwidth=0 leftmargin="0" topmargin="0" rightmargin="0">
+<table width="100%" class="bgColor1" cellspacing="0" cellpadding="0" border="0">
+<tr width="100%" class="bgColor1">
+<TD valign="top" class="bgColor1"><IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif" width="10" height="45" border="0"></TD>
+<TD valign="middle" align="left" class="text15" width="100%">NT Person Entry</td>
+</tr>
+</table>
+<table cellspacing="0" cellpadding="0">
+<tr>
+<td><IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif" width="1" height="10" border="0"></td>
+</tr>
+</table>
+<!-- ELSE -->
+<body bgcolor="#FFFFFF">
+<!-- ENDIF -->
+
+<div class="text22">
+<!-- DS_LAST_OP_INFO -->
+</div>
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE><TR>
+<TD>
+<!-- DS_ATTRIBUTE "attr=jpegPhoto" "type=hidden" "options=typeonly" -->
+<!-- IF "AttributeHasValues" "jpegPhoto" -->
+<IMG SRC=
+<!-- DS_ATTRIBUTE "attr=jpegPhoto" "options=link" "mimetype=image/jpeg" -->
+BORDER=0></TD>
+<TD>
+<!-- ENDIF -->
+<A HREF="javascript:showVCard()">
+<IMG SRC="lang?<!-- GCONTEXT -->&file=person.gif" ALT="NT Person (click to show card)"
+ BORDER=0 HSPACE=5></A>
+</TD>
+<!-- IF "DisplayOrgChart" -->
+<TD>
+<A HREF=
+<!-- DS_ORGCHARTLINK -->
+ >
+<IMG SRC="lang?<!-- GCONTEXT -->&file=orgicon.gif" BORDER=0 ALT="Click to display organization chart" HSPACE=5></a>
+
+</TD>
+<!-- ENDIF -->
+<TD class="boldbig">
+<!-- IF "Adding" -->
+New NT Person -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</TD></TR></TABLE>
+
+<!-- DS_ATTRIBUTE "attr=userCertificate;binary" "type=hidden" "options=typeonly" -->
+<!-- IF "AttributeHasValues" "userCertificate;binary" -->
+<A HREF=
+<!-- DS_ATTRIBUTE "attr=userCertificate;binary" "options=link" "mimetype=application/x-x509-email-cert" -->
+>Download Certificate</A>
+<!-- ENDIF -->
+
+<!-- DS_ATTRIBUTE "attr=audio" "type=hidden" "options=typeonly" -->
+<!-- IF "AttributeHasValues" "audio" -->
+&nbsp;&nbsp;
+<A HREF=
+<!-- DS_ATTRIBUTE "attr=audio" "options=link" "mimetype=audio/basic" -->
+>Play Audio Clip</A>
+<!-- ENDIF -->
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<INPUT TYPE="button" VALUE="Show Card" onClick="showVCard()">
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_EDITBUTTON "label=Edit NT Person" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Save New NT Person" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Cancel" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_NTPERSON" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_NTPERSON" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_EDITASBUTTON "label=Change Directory Password" "template=passwd" -->
+</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Rename Person" "prompt=Enter a new name for this person:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Delete Person" "prompt=Delete this person?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="person">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="organizationalPerson">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="inetOrgPerson">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="nTUser">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="nsaimpresence">
+<!-- ENDIF // Adding -->
+
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- PCONTEXT -->
+<!-- DS_STD_COMPLETION_JS -->
+
+<!-- IF "!Displaying" -->
+<div class="text22"><B>&nbsp; * Indicates a required field</B></div><BR>
+<!-- ENDIF -->
+
+<TABLE CELLSPACING="2" BGCOLOR=#FFFFFF WIDTH=95%>
+<TR>
+<TH COLSPAN=4 align=left>
+Contact Information</TH>
+</TR>
+<TR>
+<TD VALIGN="top" NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>First Name:</TD>
+<TD VALIGN="top" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=givenName" "cols=>16" -->
+</TD>
+<TD VALIGN="top" NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Common Name:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="top" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=cn" "numfields=+1" "cols=>23" -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="top" NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Last Name:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="top" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=sn" "cols=>16" -->
+</TD>
+<TD VALIGN="TOP" NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>E-Mail Address:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" "cols=>23" -->
+</TD>
+</TR>
+
+<!-- IF "Adding" -->
+<TR>
+<TD>Directory Password:</TD><TD>
+<!-- DS_NEWPASSWORD "cols=>16" -->
+</TD>
+<TD> Repeat password to confirm:</TD><TD>
+<!-- DS_CONFIRM_NEWPASSWORD "cols=>16" -->
+</TD></TR>
+<!-- ENDIF // Adding -->
+
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Phone:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>16" "numfields=+1" -->
+</TD>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>AIM ID:</TD>
+
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=nsaimid" "cols=>16" -->
+<!-- IF "DisplayAimPresence" -->
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+showAimIcon();
+// End hiding -->
+</SCRIPT>
+<!-- ENDIF -->
+</TD>
+</TR>
+
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Fax:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=facsimiletelephonenumber" "syntax=tel" "cols=>16" -->
+</TD>
+<TD VALIGN="TOP" NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>User ID:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=uid" "cols=>16" "options=unique" -->
+</TD></TR>
+<INPUT TYPE="hidden" NAME="desc_uid" VALUE="user id">
+<!-- PCONTEXT -->
+
+<TR>
+<TD VALIGN="TOP" NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Pager:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=pager" "syntax=tel" "cols=>16" -->
+</TD>
+<TD VALIGN="TOP" NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Mobile Phone:<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=mobile" "syntax=tel" "cols=>16" -->
+</TD></TR>
+
+</TABLE>
+
+
+<TABLE CELLSPACING="2" BGCOLOR=#FFFFFF WIDTH=95%>
+<TR>
+<TH COLSPAN=4 align=left>
+Windows NT Account Information</TH>
+</TR>
+
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>NT User Id:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- IF "!Adding" -->
+<!-- DS_ATTRIBUTE "attr=nTUserDomainId" "syntax=ntuserid" "cols=>16" "options=readonly" -->
+<!-- ENDIF // Adding -->
+<!-- IF "Adding" -->
+<!-- DS_ATTRIBUTE "attr=nTUserDomainId" "syntax=ntuserid" "cols=>16" -->
+<!-- ENDIF // Adding -->
+</TD>
+<TD VALIGN="TOP" NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>NT Domain Name:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD><TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=nTUserDomainId" "syntax=ntdomain" "cols=>16" -->
+</TD></TR>
+<INPUT TYPE="hidden" NAME="desc_uid" VALUE="user id">
+<!-- PCONTEXT -->
+
+<TR>
+<TD VALIGN="TOP" COLSPAN=2 NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Delete NT Account if Person deleted:</TD>
+<TD VALIGN="TOP" COLSPAN=2 NOWRAP>
+<!-- DS_ATTRIBUTE "syntax=bool" "type=radio" "true=Yes" "false=No" "defaultvalue=FALSE" "attr=nTUserDeleteAccount" -->
+</TD></TR>
+
+<!-- IF "Adding" -->
+<TR>
+<TD VALIGN="TOP" COLSPAN=2>Create New NT Account :</TD>
+<TD VALIGN="TOP" COLSPAN=2 NOWRAP>
+<!-- DS_ATTRIBUTE "syntax=bool" "type=radio" "true=Yes" "false=No" "defaultvalue=TRUE" "attr=nTUserCreateNewAccount" -->
+</TD></TR>
+
+<!-- ENDIF // Adding -->
+
+<!-- IF "Displaying" -->
+
+<TR>
+<TD VALIGN="TOP" NOWRAP class="bold">NT User Comment:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=nTUserUsrComment" "defaultvalue=None" "cols=>16" -->
+</TD>
+<TD VALIGN="TOP" NOWRAP class="bold">NT User Unique Id:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=nTUserUniqueId" "syntax=binvalue" "cols=>10" -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP" NOWRAP class="bold">NT Password Expired:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "syntax=bool" "type=radio" "true=Yes" "false=No" "defaultvalue=FALSE" "attr=nTUserPasswordExpired" -->
+</TD>
+<TD VALIGN="TOP" class="bold">NT Bad Password Count:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=nTUserBadPwCount" "syntax=binvalue" "options=decimal" "cols=>4" -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP" class="bold">NT Last Logon Date:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=nTUserLastLogon" "syntax=time" "cols=>10" "defaultvalue=Never Logged On" -->
+</TD>
+<TD VALIGN="TOP" NOWRAP class="bold">NT Last Logoff Date:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=nTUserLastLogoff" "syntax=time" "cols=>10" "defaultvalue=Never Logged On" -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP" class="bold">NT Account Expiration Date:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=nTUserAcctExpires" "syntax=time" "defaultvalue=Never Expires" -->
+</TD>
+<TD VALIGN="TOP" NOWRAP class="bold">Number of NT Logons:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=nTUserNumLogons" "syntax=binvalue" "options=decimal" -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP" class="bold">NT Logon Server:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=nTUserLogonServer" "defaultvalue=Any Server" "cols=>16" -->
+</TD>
+<TD VALIGN="TOP" NOWRAP class="bold">NT Workstations:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=nTUserWorkstations" "defaultvalue=No Restrictions" "cols=>16" -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP" class="bold">NT Code Page:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=nTUserCodePage" "syntax=binvalue" "options=decimal" "cols=>16" -->
+</TD>
+<TD VALIGN="TOP" NOWRAP class="bold">NT Country Code:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=nTUserCountryCode" "syntax=binvalue" "options=decimal" "cols=>8" -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP" class="bold">NT Primary Group Id:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=nTUserPrimaryGroupId" "syntax=binvalue" "options=decimal" "cols=>8" -->
+</TD>
+<TD VALIGN="TOP" NOWRAP class="bold">NT Profile:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=nTUserProfile" "defaultvalue=Default" "cols=>16" -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP" NOWRAP class="bold">NT Home Directory:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=nTUserHomeDir" "defaultvalue=None" "cols=>16" -->
+</TD>
+<TD VALIGN="TOP" class="bold">NT Home Directory Drive:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=nTUserHomeDirDrive" "defaultvalue=None" "cols=>20" -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP" NOWRAP class="bold">NT Script Path:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=nTUserScriptPath" "defaultvalue=None" "cols=>16" -->
+</TD>
+<TD VALIGN="TOP" NOWRAP class="bold">NT Max Storage:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=nTUserMaxStorage" "syntax=binvalue" "options=decimal" "cols=>16" -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP" class="bold">NT Units Per Week:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=nTUserUnitsPerWeek" "syntax=binvalue" "options=decimal" "cols=>6" -->
+</TD>
+<TD VALIGN="TOP" class="bold">NT User's Privileges:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=nTUserPriv" "syntax=binvalue" "cols=>16" -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP" class="bold">NT User's Operator Privileges:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=nTUserAuthFlags" "syntax=binvalue" "cols=>16" -->
+</TD>
+<TD VALIGN="TOP" class="bold">NT User Account Misc. Features:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=nTUserFlags" "syntax=binvalue" "cols=>16" -->
+</TD></TR>
+
+<!-- ENDIF // Displaying -->
+</TABLE>
+
+<TABLE CELLSPACING="2" BGCOLOR=#FFFFFF WIDTH=95%>
+<TR>
+ <TH align=left COLSPAN=4>
+ Business and Location Information</TH>
+</TR>
+
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Business Category:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=businesscategory" -->
+</TD>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Title:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=title" -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Organizational Unit:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=ou" -->
+</TD>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Manager:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Edit..." "template=dneditpeople" "attr=manager" "desc=Manager" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<!-- IF "Adding" -->
+<TD VALIGN="TOP" ROWSPAN=2>
+<I>You must save this entry before you can edit these fields.</I>
+<!-- ELSE // !Adding -->
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=manager" "syntax=dn" "options=readonly" -->
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Room Number:</TD>
+<TD VALIGN="TOP" NOWRAP">
+<!-- DS_ATTRIBUTE "attr=roomNumber" "cols=>8" -->
+</TD>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Admin.:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Edit..." "template=dneditpeople" "attr=secretary" "desc=Admin." -->
+<!-- ENDIF // !Adding -->
+</TD>
+<!-- IF "!Adding" -->
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=secretary" "syntax=dn" "options=readonly" -->
+</TD>
+<!-- ENDIF // !Adding -->
+</TR>
+
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Dept#:</TD>
+<TD VALIGN="TOP">
+<!-- DS_ATTRIBUTE "attr=departmentnumber" "cols=>8" -->
+</TD>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Emp#:</TD>
+<TD VALIGN="TOP">
+<!-- DS_ATTRIBUTE "attr=employeenumber" "cols=>6" -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Car License#:</TD>
+<TD VALIGN="TOP">
+<!-- DS_ATTRIBUTE "attr=carlicense" "cols=>8" -->
+</TD>
+<!-- Note: need to include two cells that contain a non-breaking space
+character so table background colors, etc. are rendered correctly -->
+<TD>&nbsp;&nbsp;</TD>
+<TD>&nbsp;&nbsp;</TD>
+</TR>
+
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Mailing Address:</TD>
+<TD VALIGN="TOP" COLSPAN="3" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=postalAddress" "syntax=mls" "type=TEXTAREA" "cols=>40" "rows=>4" -->
+</TD></TR>
+
+</TABLE>
+
+<TABLE CELLSPACING="2" BGCOLOR=#FFFFFF WIDTH=95%>
+<TR>
+<TH align=left COLSPAN=2>
+Additional Information</TH>
+</TR>
+
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Description:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>50" -->
+</TR>
+
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>See Also:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Edit..." "template=dnedit" "attr=seeAlso" "desc=See Also" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- IF "Adding" -->
+<I>You must save this entry before you can edit this field.</I>
+<!-- ELSE // !Adding -->
+
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "options=readonly" -->
+
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>URL:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=labeledURI" "syntax=url" "cols=>50" "options=sort" -->
+</TR>
+
+<!-- The following attribute should only be uncommented if you have
+ a need to allow editing of the x500UniqueIdentifier attribute.
+ Most installations will not need this functionality.
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Unique ID:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=x500uniqueidentifier" "cols=>50" -->
+</TR>
+-->
+<tr><td colspan="2" class="bgColor9">&nbsp;</td></tr>
+</TABLE>
+
+<!-- IF "!Adding" -->
+
+<div class="text22">
+&nbsp; This entry was last modified on <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> by <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+</div>
+
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/display-org.html b/ldap/clients/dsgw/config/display-org.html
new file mode 100644
index 00000000..d279c5d0
--- /dev/null
+++ b/ldap/clients/dsgw/config/display-org.html
@@ -0,0 +1,189 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_OBJECTCLASS "value=organization" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+New
+<!-- ENDIF // Adding -->
+Organization -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE>
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</HEAD>
+
+<!-- IF "!Displaying" -->
+<body bgcolor="#FFFFFF" marginheight=0 marginwidth=0 leftmargin="0" topmargin="0" rightmargin="0">
+<table width="100%" class="bgColor1" cellspacing="0" cellpadding="0" border="0">
+<tr width="100%" class="bgColor1">
+<TD valign="top" class="bgColor1"><IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif" width="10" height="45" border="0"></TD>
+<TD valign="middle" align="left" class="text15" width="100%">Organization Entry</td>
+</tr>
+</table>
+<table cellspacing="0" cellpadding="0">
+<tr>
+<td><IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif" width="1" height="10" border="0"></td>
+</tr>
+</table>
+<!-- ELSE -->
+<body bgcolor="#FFFFFF">
+<!-- ENDIF -->
+
+<div class="text22">
+<!-- DS_LAST_OP_INFO -->
+</div>
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE>
+<TR>
+<TD>
+<IMG SRC="lang?<!-- GCONTEXT -->&file=organization.gif" ALT="Organization" HSPACE=5>
+<TD class="boldbig">
+
+<!-- IF "Adding" -->
+New Organization -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+
+</TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- DS_EDITBUTTON "label=Edit Organization" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Save New Org." -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Cancel" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_ORG" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_ORG" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Rename Org." "prompt=Enter a new name for this organization:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Delete Org." "prompt=Delete this organization?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="organization">
+<!-- ENDIF // Adding -->
+
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<!-- IF "!Displaying" -->
+<div class="text22"><B>&nbsp;* Indicates a required field<BR></B></div>
+<!-- ENDIF -->
+
+<TABLE width="90%">
+<tr><td colspan="5" class="bgColor9">&nbsp;</td></tr>
+<TR>
+<TD VALIGN="TOP" NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Organization Name:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=o" "cols=>20" -->
+</TD><TD WIDTH="20%"></TD>
+<TD
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Description:</TD><TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>30" -->
+</TR>
+
+<TR><TD
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Phone:</TD><TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>16" -->
+</TD><TD></TD>
+<TD NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Business Category:</TD><TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=businessCategory" "cols=>30" -->
+</TD></TR>
+
+<TR><TD
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Fax:<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=facsimiletelephonenumber" "syntax=tel" "cols=>16" -->
+</TD><TD></TD>
+<TD
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Location:</TD><TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=l" "cols=>30" -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP" NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Mailing Address:</TD>
+<TD VALIGN="TOP" COLSPAN="4" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=postalAddress" "syntax=mls" "type=TEXTAREA" "cols=>40" "rows=>4" -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>See Also:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4">
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "dncomponents=3" "cols=>50" -->
+</TR>
+<tr><td colspan="5" class="bgColor9">&nbsp;</td></tr>
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+<div class="text22">
+&nbsp; This entry was last modified on <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> by <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+</div>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/display-orgperson.html b/ldap/clients/dsgw/config/display-orgperson.html
new file mode 100644
index 00000000..36ae862a
--- /dev/null
+++ b/ldap/clients/dsgw/config/display-orgperson.html
@@ -0,0 +1,501 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- inet. organizational person directory entry -->
+<!-- DS_OBJECTCLASS "value=person,inetOrgPerson" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+New
+<!-- ENDIF // Adding -->
+Person Entry -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE>
+
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+function showVCard()
+{
+<!-- DS_ATTRIBUTE "attr=_vcard" "options=link" "mimetype=text/x-vcard" "prefix=var cardurl=" "suffix=";" -->
+
+ document.location.href = cardurl;
+}
+
+function showAimIcon()
+{
+var aimStatusText = "";
+var aimID = "";
+
+<!-- IF "DisplayAimPresence" -->
+aimStatusText =
+<!-- DS_ATTRIBUTE "attr=nsaimstatustext" "options=quoted" -->
+;
+
+aimID =
+<!-- DS_ATTRIBUTE "attr=nsaimid" "options=quoted" -->
+;
+<!-- ENDIF -->
+
+if (aimStatusText == "" || aimID == "" || aimStatusText != "ONLINE") {
+ return;
+}
+
+document.write('<a href=\"aim:goim?Screenname=' + aimID.replace(/ /,"+") + '\"><IMG SRC=\"lang?<!-- GCONTEXT -->&file=aim-online.gif\" ALT=\"Click to send an AIM to this person\" BORDER=0 HSPACE=5></a>');
+}
+
+// End hiding -->
+</SCRIPT>
+
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</HEAD>
+
+<!-- IF "!Displaying" -->
+<body bgcolor="#FFFFFF" marginheight=0 marginwidth=0 leftmargin="0" topmargin="0" rightmargin="0">
+<table width="100%" class="bgColor1" cellspacing="0" cellpadding="0" border="0">
+<tr width="100%" class="bgColor1">
+<TD valign="top" class="bgColor1"><IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif" width="10" height="45" border="0"></TD>
+<TD valign="middle" align="left" class="text15" width="100%">Person Entry</td>
+</tr>
+</table>
+<table cellspacing="0" cellpadding="0">
+<tr>
+<td><IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif" width="1" height="10" border="0"></td>
+</tr>
+</table>
+<!-- ELSE -->
+<body bgcolor="#FFFFFF">
+<!-- ENDIF -->
+
+<div class="text22">
+<!-- DS_LAST_OP_INFO -->
+</div>
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE><TR>
+<TD>
+<!-- DS_ATTRIBUTE "attr=jpegPhoto" "type=hidden" "options=typeonly" -->
+<!-- IF "AttributeHasValues" "jpegPhoto" -->
+<IMG SRC=
+<!-- DS_ATTRIBUTE "attr=jpegPhoto" "options=link" "mimetype=image/jpeg" -->
+BORDER=0></TD>
+<TD>
+<!-- ENDIF -->
+<A HREF="javascript:showVCard()">
+<IMG SRC="lang?<!-- GCONTEXT -->&file=person.gif" ALT="Person (click to show card)"
+ BORDER=0 HSPACE=5></A>
+</TD>
+<!-- IF "DisplayOrgChart" -->
+<TD>
+<A HREF=
+<!-- DS_ORGCHARTLINK -->
+ >
+<IMG SRC="lang?<!-- GCONTEXT -->&file=orgicon.gif" BORDER=0 ALT="Click to display organization chart" HSPACE=5></a>
+
+</TD>
+<!-- ENDIF -->
+<TD class="boldbig">
+<!-- IF "Adding" -->
+New Person -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</TD></TR></TABLE>
+
+<!-- DS_ATTRIBUTE "attr=userCertificate;binary" "type=hidden" "options=typeonly" -->
+<!-- IF "AttributeHasValues" "userCertificate;binary" -->
+<A HREF=
+<!-- DS_ATTRIBUTE "attr=userCertificate;binary" "options=link" "mimetype=application/x-x509-email-cert" -->
+>Download Certificate</A>
+<!-- ENDIF -->
+
+<!-- DS_ATTRIBUTE "attr=audio" "type=hidden" "options=typeonly" -->
+<!-- IF "AttributeHasValues" "audio" -->
+&nbsp;&nbsp;
+<A HREF=
+<!-- DS_ATTRIBUTE "attr=audio" "options=link" "mimetype=audio/basic" -->
+>Play Audio Clip</A>
+<!-- ENDIF -->
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<INPUT TYPE="button" VALUE="Show Card" onClick="showVCard()">
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_EDITBUTTON "label=Edit Person" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Save New Person" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Cancel" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_ORGPERSON" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_ORGPERSON" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_EDITASBUTTON "label=Change Password" "template=passwd" -->
+</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Rename Person" "prompt=Enter a new name for this person:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Delete Person" "prompt=Delete this person?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="person">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="organizationalPerson">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="inetOrgPerson">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="nsaimpresence">
+<!-- ENDIF // Adding -->
+
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<!-- IF "!Displaying" -->
+<div class="text22"><B>&nbsp; * Indicates a required field<BR></B></div>
+<!-- ENDIF -->
+
+<TABLE CELLSPACING="2" BGCOLOR=#FFFFFF WIDTH=95%>
+<TR>
+<TH COLSPAN=4 align=left>
+ Contact Information
+ </TH>
+</TR>
+<TR>
+<TD VALIGN="top" NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>First Name:</TD>
+<TD VALIGN="top" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=givenName" "cols=>16" -->
+</TD>
+<TD VALIGN="top" NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Common Name:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="top" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=cn" "numfields=+1" "cols=>23" -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="top" NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Last Name:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="top" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=sn" "cols=>16" -->
+</TD>
+<TD VALIGN="TOP" NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>E-Mail Address:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" "cols=>23" -->
+</TD>
+</TR>
+
+<!-- IF "Adding" -->
+<TR>
+<TD>Password:</TD><TD>
+<!-- DS_NEWPASSWORD "cols=>16" -->
+</TD>
+<TD> Repeat password to confirm:</TD><TD>
+<!-- DS_CONFIRM_NEWPASSWORD "cols=>16" -->
+</TD></TR>
+<!-- ENDIF // Adding -->
+
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Phone:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>16" "numfields=+1" -->
+</TD>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>AIM ID:</TD>
+
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=nsaimid" "cols=>16" -->
+<!-- IF "DisplayAimPresence" -->
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+showAimIcon();
+// End hiding -->
+</SCRIPT>
+<!-- ENDIF -->
+</TD>
+</TR>
+
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Fax:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=facsimiletelephonenumber" "syntax=tel" "cols=>16" -->
+</TD>
+<TD VALIGN="TOP" NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>User ID:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=uid" "cols=>16" "options=unique" -->
+</TD></TR>
+<INPUT TYPE="hidden" NAME="desc_uid" VALUE="user id">
+<!-- PCONTEXT -->
+
+<TR>
+<TD VALIGN="TOP" NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Pager:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=pager" "syntax=tel" "cols=>16" -->
+</TD>
+<TD VALIGN="TOP" NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Mobile Phone:<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=mobile" "syntax=tel" "cols=>16" -->
+</TD></TR>
+
+</TABLE>
+
+<TABLE CELLSPACING="2" BGCOLOR=#FFFFFF WIDTH=95%>
+<TR>
+<TH align=left COLSPAN=4>
+Business and Location Information</TH>
+</TR>
+
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Business Category:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=businesscategory" -->
+</TD>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Title:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=title" -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Organizational Unit:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=ou" -->
+</TD>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Manager:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Edit..." "template=dneditpeople" "attr=manager" "desc=Manager" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<!-- IF "Adding" -->
+<TD VALIGN="TOP" ROWSPAN=2>
+<I>You must save this entry before you can edit these fields.</I>
+<!-- ELSE // !Adding -->
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=manager" "syntax=dn" "options=readonly" -->
+
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Room Number:</TD>
+<TD VALIGN="TOP" NOWRAP">
+<!-- DS_ATTRIBUTE "attr=roomNumber" "cols=>8" -->
+</TD>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Admin.:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Edit..." "template=dneditpeople" "attr=secretary" "desc=Admin." -->
+<!-- ENDIF // !Adding -->
+</TD>
+<!-- IF "!Adding" -->
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=secretary" "syntax=dn" "options=readonly" -->
+</TD>
+<!-- ENDIF // !Adding -->
+</TR>
+
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Dept#:</TD>
+<TD VALIGN="TOP">
+<!-- DS_ATTRIBUTE "attr=departmentnumber" "cols=>8" -->
+</TD>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Emp#:</TD>
+<TD VALIGN="TOP">
+<!-- DS_ATTRIBUTE "attr=employeenumber" "cols=>6" -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Car License#:</TD>
+<TD VALIGN="TOP">
+<!-- DS_ATTRIBUTE "attr=carlicense" "cols=>8" -->
+</TD>
+<!-- Note: need to include two cells that contain a non-breaking space
+character so table background colors, etc. are rendered correctly -->
+<TD>&nbsp;&nbsp;</TD>
+<TD>&nbsp;&nbsp;</TD>
+</TR>
+
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Mailing Address:</TD>
+<TD VALIGN="TOP" COLSPAN="3" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=postalAddress" "syntax=mls" "type=TEXTAREA" "cols=>40" "rows=>4" -->
+</TD></TR>
+
+</TABLE>
+
+<TABLE CELLSPACING="2" BGCOLOR=#FFFFFF WIDTH=95%>
+<TR>
+<TH align=left COLSPAN=2>
+Additional Information</TH>
+</TR>
+
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Description:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>50" -->
+</TR>
+
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>See Also:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Edit..." "template=dnedit" "attr=seeAlso" "desc=See Also" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- IF "Adding" -->
+<I>You must save this entry before you can edit this field.</I>
+<!-- ELSE // !Adding -->
+
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "options=readonly" -->
+
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>URL:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=labeledURI" "syntax=url" "cols=>50" "options=sort" -->
+</TR>
+
+<!-- The following attribute should only be uncommented if you have
+ a need to allow editing of the x500UniqueIdentifier attribute.
+ Most installations will not need this functionality.
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Unique ID:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=x500uniqueidentifier" "cols=>50" -->
+</TR>
+-->
+<tr><td colspan="2" class="bgColor9">&nbsp;</td></tr>
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+
+<div class="text22">
+&nbsp; This entry was last modified on <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> by <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+</div>
+
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/display-orgunit.html b/ldap/clients/dsgw/config/display-orgunit.html
new file mode 100644
index 00000000..c22478bb
--- /dev/null
+++ b/ldap/clients/dsgw/config/display-orgunit.html
@@ -0,0 +1,191 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_OBJECTCLASS "value=organizationalUnit" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+New
+<!-- ENDIF // Adding -->
+Organizational Unit -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE>
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</HEAD>
+
+<!-- IF "!Displaying" -->
+<body bgcolor="#FFFFFF" marginheight=0 marginwidth=0 leftmargin="0" topmargin="0" rightmargin="0">
+<table width="100%" class="bgColor1" cellspacing="0" cellpadding="0" border="0">
+<tr width="100%" class="bgColor1">
+<TD valign="top" class="bgColor1"><IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif" width="10" height="45" border="0"></TD>
+<TD valign="middle" align="left" class="text15" width="100%">Organizational Unit Entry</td>
+</tr>
+</table>
+<table cellspacing="0" cellpadding="0">
+<tr>
+<td><IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif" width="1" height="10" border="0"></td>
+</tr>
+</table>
+<!-- ELSE -->
+<body bgcolor="#FFFFFF">
+<!-- ENDIF -->
+
+<div class="text22">
+<!-- DS_LAST_OP_INFO -->
+</div>
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE>
+<TR>
+<TD>
+<IMG SRC="lang?<!-- GCONTEXT -->&file=orgunit.gif" ALT="Org Unit" HSPACE=5>
+<TD class="boldbig">
+
+<!-- IF "Adding" -->
+New Organizational Unit -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+
+</TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- DS_EDITBUTTON "label=Edit Organizational Unit" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Save New Org. Unit" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Cancel" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_ORGUNIT" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_ORGUNIT" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Rename Org. Unit" "prompt=Enter a new name for this organizational unit:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Delete Org. Unit" "prompt=Delete this organizational unit?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="organizationalUnit">
+<!-- ENDIF // Adding -->
+
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<!-- IF "!Displaying" -->
+<div class="text22"><B> &nbsp;* Indicates a required field<BR></B></div>
+<!-- ENDIF -->
+
+
+<TABLE width="90%">
+<tr><td colspan="5" class="bgColor9">&nbsp;</td></tr>
+<TR>
+<TD
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Unit Name:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD><TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=ou" "cols=>20" -->
+</TD><TD WIDTH="20%"></TD>
+<TD
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Description:</TD><TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>30" -->
+</TR>
+
+<TR><TD
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Phone:</TD><TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>16" -->
+</TD><TD></TD>
+<TD NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Business Category:</TD><TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=businessCategory" "cols=>30" -->
+</TD></TR>
+
+<TR><TD
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Fax:<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=facsimiletelephonenumber" "syntax=tel" "cols=>16" -->
+</TD><TD></TD>
+<TD
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Location:</TD><TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=l" "cols=>30" -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Mailing Address:</TD>
+<TD VALIGN="TOP" COLSPAN="3" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=postalAddress" "syntax=mls" "type=TEXTAREA" "cols=>40" "rows=>4" -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>See Also:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4">
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "dncomponents=3" "cols=>50" -->
+</TR>
+<tr><td colspan="5" class="bgColor9">&nbsp;</td></tr>
+</TABLE>
+
+<!-- IF "!Adding" -->
+
+<div class="text22">
+&nbsp; This entry was last modified on <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> by <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+</div>
+
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/display-person.html b/ldap/clients/dsgw/config/display-person.html
new file mode 100644
index 00000000..5e406dc6
--- /dev/null
+++ b/ldap/clients/dsgw/config/display-person.html
@@ -0,0 +1,366 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- person directory entry -->
+<!-- DS_OBJECTCLASS "value=person" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+New
+<!-- ENDIF // Adding -->
+Person Entry -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE>
+
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+function showVCard()
+{
+<!-- DS_ATTRIBUTE "attr=_vcard" "options=link" "mimetype=text/x-vcard" "prefix=var cardurl=" "suffix=";" -->
+
+ document.location.href = cardurl;
+}
+
+
+function showAimIcon()
+{
+var aimStatusText = "";
+var aimID = "";
+
+<!-- IF "DisplayAimPresence" -->
+aimStatusText =
+<!-- DS_ATTRIBUTE "attr=nsaimstatustext" "options=quoted" -->
+;
+
+aimID =
+<!-- DS_ATTRIBUTE "attr=nsaimid" "options=quoted" -->
+;
+<!-- ENDIF -->
+
+if (aimStatusText == "" || aimID == "" || aimStatusText != "ONLINE") {
+ return;
+}
+
+document.write('<a href=\"aim:goim?Screenname=' + aimID.replace(/ /,"+") + '\"><IMG SRC=\"lang?<!-- GCONTEXT -->&file=aim-online.gif\" ALT=\"Click to send an AIM to this person\" BORDER=0 HSPACE=5></a>');
+}
+
+// End hiding -->
+</SCRIPT>
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</HEAD>
+
+<!-- IF "!Displaying" -->
+<body bgcolor="#FFFFFF" marginheight=0 marginwidth=0 leftmargin="0" topmargin="0" rightmargin="0">
+<table width="100%" class="bgColor1" cellspacing="0" cellpadding="0" border="0">
+<tr width="100%" class="bgColor1">
+<TD valign="top" class="bgColor1"><IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif" width="10" height="45" border="0"></TD>
+<TD valign="middle" align="left" class="text15" width="100%">Person Entry</td>
+</tr>
+</table>
+<table cellspacing="0" cellpadding="0">
+<tr>
+<td><IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif" width="1" height="10" border="0"></td>
+</tr>
+</table>
+<!-- ELSE -->
+<body bgcolor="#FFFFFF">
+<!-- ENDIF -->
+
+<div class="text22">
+<!-- DS_LAST_OP_INFO -->
+</div>
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE><TR>
+<TD>
+<A HREF="javascript:showVCard()"><IMG SRC="lang?<!-- GCONTEXT -->&file=person.gif" ALT="Person (click to show card)"
+ BORDER=0 HSPACE=5></A></TD>
+<!-- IF "DisplayOrgChart" -->
+<TD>
+<A HREF=
+<!-- DS_ORGCHARTLINK -->
+ ><IMG SRC="lang?<!-- GCONTEXT -->&file=orgicon.gif" BORDER=0 ALT="Click to display organization chart" HSPACE=5></a></TD>
+<!-- ENDIF -->
+<TD class="boldbig">
+<!-- IF "Adding" -->
+New Person -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</TD></TR></TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<INPUT TYPE="button" VALUE="Show Card" onClick="showVCard()">
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_EDITBUTTON "label=Edit Person" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Save New Person" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Cancel" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_PERSON" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_PERSON" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_EDITASBUTTON "label=Change Password" "template=passwd" -->
+</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Rename Person" "prompt=Enter a new name for this person:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Delete Person" "prompt=Delete this person?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="person">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="nsaimpresence">
+<!-- ENDIF // Adding -->
+
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<!-- IF "!Displaying" -->
+<div class="text22"><B>&nbsp; * Indicates a required field</B></div><br>
+<!-- ENDIF -->
+
+<TABLE CELLSPACING="2" BGCOLOR=#FFFFFF WIDTH=95%>
+<TR>
+<TH COLSPAN=4 align=left>
+ Contact Information
+ </TH>
+</TR>
+<TR>
+<TD VALIGN="top" NOWRAP ROWSPAN="2"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Last Name:</TD>
+<TD VALIGN="top" NOWRAP ROWSPAN="2">
+<!-- DS_ATTRIBUTE "attr=sn" "cols=>16" -->
+</TD>
+<TD VALIGN="top" NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Common Name:
+<!-- IF "!Displaying" -->
+<b>*</b>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="top" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=cn" "numfields=+1" "cols=>23" -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP" NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>E-Mail Address:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" "cols=>23" -->
+</TD>
+</TR>
+
+<!-- IF "Adding" -->
+<TR>
+<TD>Password:</TD><TD>
+<!-- DS_NEWPASSWORD "cols=>16" -->
+</TD>
+<TD> Repeat password to confirm:</TD><TD>
+<!-- DS_CONFIRM_NEWPASSWORD "cols=>16" -->
+</TD></TR>
+<!-- ENDIF // Adding -->
+
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Phone:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>16" "numfields=+1" -->
+</TD>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>AIM ID:</TD>
+
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=nsaimid" "cols=>16" -->
+<!-- IF "DisplayAimPresence" -->
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+showAimIcon();
+// End hiding -->
+</SCRIPT>
+<!-- ENDIF -->
+</TD>
+</TR>
+
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Fax:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=facsimiletelephonenumber" "syntax=tel" "cols=>16" -->
+</TD>
+<TD VALIGN="TOP" NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>User ID:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=uid" "cols=>16" "options=unique" -->
+</TD></TR>
+<INPUT TYPE="hidden" NAME="desc_uid" VALUE="user id">
+<!-- PCONTEXT -->
+
+<TR>
+<TD VALIGN="TOP" NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Pager:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=pager" "syntax=tel" "cols=>16" -->
+</TD>
+<TD VALIGN="TOP" NOWRAP
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Mobile Phone:<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=mobile" "syntax=tel" "cols=>16" -->
+</TD></TR>
+
+</TABLE>
+
+<TABLE CELLSPACING="2" BGCOLOR=#FFFFFF WIDTH=95%>
+<TR>
+<TH align=left COLSPAN=4>
+Business and Location Information</TH>
+</TR>
+
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Title:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="3">
+<!-- DS_ATTRIBUTE "attr=title" -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Mailing Address:</TD>
+<TD VALIGN="TOP" COLSPAN="3" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=postalAddress" "syntax=mls" "type=TEXTAREA" "cols=>40" "rows=>4" -->
+</TD></TR>
+
+</TABLE>
+
+<TABLE CELLSPACING="2" BGCOLOR=#FFFFFF WIDTH=95%>
+<TR>
+<TH align=left COLSPAN=4>
+Additional Information</TH>
+</TR>
+
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Description:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="3">
+<!-- DS_ATTRIBUTE "attr=description" "cols=>50" -->
+</TR>
+
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>See Also:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Edit..." "template=dnedit" "attr=seeAlso" "desc=See Also" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="3">
+<!-- IF "Adding" -->
+<I>You must save this entry before you can edit this field.</I>
+<!-- ELSE // !Adding -->
+
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "options=readonly" -->
+
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>URL:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="3">
+<!-- DS_ATTRIBUTE "attr=labeledURI" "syntax=url" "cols=>50" "options=sort" -->
+</TR>
+
+<!-- The following attribute should only be uncommented if you have
+ a need to allow editing of the x500UniqueIdentifier attribute.
+ Most installations will not need this functionality.
+<TR>
+<TD VALIGN="TOP"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>Unique ID:</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- DS_ATTRIBUTE "attr=x500uniqueidentifier" "cols=>50" -->
+</TR>
+-->
+<tr><td colspan="4" class="bgColor9">&nbsp;</td></tr>
+</TABLE>
+
+<!-- IF "!Adding" -->
+
+<div class="text22">
+&nbsp; This entry was last modified on <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> by <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+</div>
+
+<!-- ENDIF // !Adding -->
+
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/dsgw-l10n.conf b/ldap/clients/dsgw/config/dsgw-l10n.conf
new file mode 100644
index 00000000..0482312b
--- /dev/null
+++ b/ldap/clients/dsgw/config/dsgw-l10n.conf
@@ -0,0 +1,18 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+# To localize the search type menu:
+# Locate dsgw-l10n.conf in config/<lang>/.
+# dsgw-l10n.conf contains translated words for search type pulldown menu.
+# dsgw-l10n.conf sample:
+# Note: the sample part should have double #'s for L10n.
+## translate People <People_translated_in_lang>
+## translate NT-People <NT-People_translated_in_lang>
+## translate Groups <Groups_translated_in_lang>
+## translate NT-Groups <NT-Groups_translated_in_lang>
+## translate Organizations <Organizations_translated_in_lang>
+## translate Org-Units <Org-Units_translated_in_lang>
+## translate Anything <Anything_translated_in_lang>
diff --git a/ldap/clients/dsgw/config/dsgw.tmpl b/ldap/clients/dsgw/config/dsgw.tmpl
new file mode 100644
index 00000000..4bc85cb4
--- /dev/null
+++ b/ldap/clients/dsgw/config/dsgw.tmpl
@@ -0,0 +1,148 @@
+# The attribute the orgchart uses to search for entries.
+# This value should correspond to the value of attrib-farleft-rdn
+# in the orgchart's config.txt configuration file.
+orgchart-attrib-farleft-rdn uid
+
+# Check for Aim presence when the user's entry is displayed
+enable-aim-presence true
+
+# The htmldir directive tells the CGIs where to find the html files
+htmldir ../html
+
+# The configdir directive tells the CGIs where to find the
+# templates/configuration files
+configdir ../config
+
+# The gwnametrans directive tells the CGIs what url to output
+# for http redirection. It should be the same nameTrans set
+# in the webserver, if any is being is used.
+gwnametrans /clients/dsgw/html/
+
+# The authlifetime directive specifies how long authentication credentials
+# are valid (in seconds).
+authlifetime 7200
+
+# The libNLS data directory. This directory should contain a directory
+# named "locales", which contains the configuration files LANG.ctx and
+# LANG.txt for each supported language (locale).
+NLS ../../../lib/nls
+
+# The default character set, for communication with HTTP clients.
+# A client may override this default, using an HTTP Accept-Charset header.
+# Or, this default may be overridden for a specific language, by creating
+# a LANG/dsgwcharset.conf file which contains the charset name.
+# For compatibility with HTTP clients that can't handle an HTTP response
+# with a charset parameter in the content-type, comment out this directive;
+# responses will be sent in ISO-8859-1, with no explicit charset parameter.
+# RFC 1345 defines the syntax of charset names. There is a registry of
+# charsets, at ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets
+# charset UTF-8
+
+# ignoreAcceptCharsetFrom [ <HTTP client version string> ]
+# where each of whose values is the version string (or part of the version
+# string) sent by an HTTP client which can't / doesn't want to handle UTF-8.
+# Charset from dsgwcharset.conf or charset directive is used (in the order).
+# ignoreAcceptCharsetFrom Mozilla/4.01x-NSCP Mozilla/3
+
+# Substitute ideographic space for non-breaking space in Asian charsets:
+changeHTML "&nbsp;&nbsp;" " " Shift_JIS Big5 EUC-KR EUC-JP
+changeHTML "&nbsp;" " " Shift_JIS Big5 EUC-KR EUC-JP
+
+# Mapping between config/display-XXX.html templates and LDAP objectClasses.
+# This can be generated by using ds/templateindex. The format is:
+#
+# template TEMPLATENAME OBJECTCLASSES
+#
+# where "display-TEMPLATENAME.html" is the name of a display template
+# that is found in this config directory (e.g., "display-group.html") and
+# OBJECTCLASSES is a list of one or more objectClass values. For a given
+# template to be used, all the objectClass values listed must be present
+# in the directory entry, so the order of these template lines is
+# significant (e.g. note that the more specific "orgperson" template is
+# listed before the one for an ordinary "person").
+#
+template group groupOfNames
+template ntgroup groupOfUniqueNames ntGroup
+template groupun groupOfUniqueNames
+template org organization
+template dc domain
+template orgunit organizationalUnit
+template ntperson person inetOrgPerson nTUser
+template orgperson person inetOrgPerson
+template person person
+template country country
+
+#
+# The remainder of this file contains information about the locations and
+# types for new entries.
+#
+# "location" lines define places in the directory where new entries can be added
+# The format of each line is:
+# location HANDLE FRIENDLYNAME DN
+# where HANDLE is a short name which is used in the "newtype" lines (see below)
+# and FRIENDLYNAME is a human-readable name for the location
+# and DN is the Distinguished Name for this location (if it does not end with
+# '#', the location-suffix is appended to to construct a full DN; if it
+# does end with `#', it assumed to be a full DN and the `#' is removed).
+#
+location country "United States" "c=US#"
+location org "This Organization" ""
+location dc "This Domaincomponent" ""
+location groups "Groups" "ou=Groups"
+location people "People" "ou=People"
+location special "Special Users" "ou=Special Users"
+
+# "newtype" lines define the types of new entries that may be added
+# The format of each line is:
+# newtype TEMPLATENAME FRIENDLYNAME RDNATTR LOCATIONS...
+# where TEMPLATENAME corresponds to an existing display-TEMPLATENAME.html file
+# and FRIENDLYNAME is a human-readable name for this type of entry
+# and RDNATTR is the attribute that is used to name entries of this type
+# and LOCATIONS is a blank-separated list of locations where these types of
+# entries can be added (corresponding to a HANDLE on a "location"
+# config. file line).
+#
+newtype orgperson "Person" uid people special
+newtype ntperson "NT Person" uid people special
+newtype ntgroup "NT Group" cn groups
+newtype groupun "Group" cn groups
+newtype orgunit "Organizational Unit" ou people org
+newtype org "Organization" o country
+newtype dc "Domaincomponent" dc dc org country people
+
+# Mappings between VCard properties and LDAP attribute types:
+# The format of each line is:
+# vcard-property VCARDPROP SYNTAX LDAPATTR [LDAPATTR2]
+# where VCARDPROP is the name of a VCard property
+# and SYNTAX is "cis" for simple strings and "mls" for multiline strings
+# and LDAPATTR is the LDAP attribute that corresponds to VCARDPROP
+# and LDAPATTR2 is an optional secondary LDAP attribute which is added to
+# the property value by appending a semicolon and then the attr2 value.
+vcard-property FN cis cn
+vcard-property N cis sn givenName
+vcard-property ORG cis o ou
+vcard-property ROLE cis businessCategory
+vcard-property ADR;WORK mls postalAddress
+vcard-property ADR;HOME mls homePostalAddress
+vcard-property EMAIL;INTERNET cis mail
+vcard-property TITLE cis title
+vcard-property TEL;WORK cis telephoneNumber
+vcard-property TEL;FAX cis facsimileTelephoneNumber
+vcard-property TEL;CELL cis mobile
+vcard-property TEL;HOME cis homePhone
+vcard-property NOTE cis description
+
+# To localize the search type menu:
+# Locate dsgw-l10n.conf in config/<lang>/.
+# dsgw-l10n.conf contains translated words for search type pulldown menu.
+# dsgw-l10n.conf sample:
+# translate People <People_translated_in_lang>
+# translate NT-People <NT-People_translated_in_lang>
+# translate Groups <Groups_translated_in_lang>
+# translate NT-Groups <NT-Groups_translated_in_lang>
+# translate Organizations <Organizations_translated_in_lang>
+# translate Org-Units <Org-Units_translated_in_lang>
+# translate Anything <Anything_translated_in_lang>
+#
+include "../config/dsgw-l10n.conf"
+
diff --git a/ldap/clients/dsgw/config/dsgw_adm.conf b/ldap/clients/dsgw/config/dsgw_adm.conf
new file mode 100644
index 00000000..46f06f4e
--- /dev/null
+++ b/ldap/clients/dsgw/config/dsgw_adm.conf
@@ -0,0 +1,46 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+# Mapping between config/display-XXX.html templates and LDAP objectClasses.
+# This can be generated by using the templateindex program. The format is:
+#
+# template TEMPLATENAME OBJECTCLASSES
+#
+# where "display-TEMPLATENAME.html" is the name of a display template
+# that is found in this config directory (e.g., "display-group.html") and
+# OBJECTCLASSES is a list of one or more objectClass values. For a given
+# template to be used, all the objectClass values listed must be present
+# in the directory entry, so the order of these template lines is
+# significant (e.g. note that the more specific "orgperson" template is
+# listed before the one for an ordinary "person").
+#
+template group groupOfNames
+template groupun groupOfUniqueNames
+template org organization
+template orgunit organizationalUnit
+template orgperson person inetOrgPerson
+template person person
+template country country
+template licensed-user nsLicenseUser
+
+# Attribute Value Sets (used with DS_ATTRVAL_SET directives)
+# attrvset HANDLE VALUE PREFIX SUFFIX
+#
+attrvset CAL news "" "Netscape Collabra Server"
+attrvset CAL slapd "" "Netscape Directory Server"
+
+
+# Template Set definitions
+# Note: templates must be defined before they can be mentioned on
+# a tmplset line.
+#
+# tmplset SETNAME VIEWNAME TEMPLATENAME [HREF-LOCATION]
+#
+tmplset person "General" orgperson
+tmplset person "Password" passwd
+tmplset person "Licenses" licensed-user
+tmplset group "General" group
+tmplset groupun "General" groupun
diff --git a/ldap/clients/dsgw/config/dsgwfilter.conf b/ldap/clients/dsgw/config/dsgwfilter.conf
new file mode 100644
index 00000000..6205b12a
--- /dev/null
+++ b/ldap/clients/dsgw/config/dsgwfilter.conf
@@ -0,0 +1,154 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+# ldap filter file
+#
+# lines like this that start with # or empty lines are ignored
+#
+# syntax:
+#
+# <tag>
+# <pattern1> <delimiters> <filter1-1> <desc1-1> [<scope>]
+# <filter1-2> <desc1-2> [<scope>]
+#
+# <pattern2> <delimiters> <filter2-1> <desc2-1> [<scope>] ...
+#
+# The <desc> should describe the filter. It should correctly complete
+# the phrases (in the resource database) DBT_Found0EntriesWhere_,
+# DBT_Found1EntryWhere_ and DBT_FoundEntriesWhere_; for example:
+#
+# Found 1 entry where the <desc> '%v'.
+# Found no entries where the <desc> '%v'.
+# Found 3 entries where the <desc> '%v'.
+#
+# The <desc> should begin with the article ("the" in English) for
+# languages that require agreement between article and noun (e.g
+# genders in Spanish or French).
+#
+# The scope is optional, and should be one of:
+# "base"
+# "onelevel"
+# "subtree"
+# if it is included.
+
+#
+# Directory Server gateway
+#
+
+"dsgw-people"
+ "=" " " "(%v))" "LDAP filter is"
+
+ "^[+]*[0-9][ 0-9-]*$" " " "(telephoneNumber=*%v))" "phone number ends with"
+
+ "@" " " "(mail=%v))" "email address is"
+ "(mail=%v*))" "email address starts with"
+
+ "^.[. _].*" ". _" "(cn=%v1* %v2-))" "first initial + name is"
+
+ ".*[. _].$" ". _" "(cn=%v1-*))" "name + last initial is"
+
+ "[. _]" ". _" "(|(sn=%v1-)(cn=%v1-)))" "name is"
+ "(|(cn=*%v1-*)(sn=*%v1-*)(cn~=%v1-)(sn~=%v1-)))" "name sounds like or contains"
+
+ "^\*$" " " "(|(cn=*)(sn=*)(uid=*)))" "name or user id is"
+
+ "^.$" ". " "(|(cn=%v)(sn=%v)(uid=%v)))" "name or user id is"
+
+ "^..$" ". " "(|(cn=%v*)(cn=*%v)(sn=%v*)(sn=*%v)(uid=%v*)(uid=*%v)))" "name or user id is"
+
+ ".*" ". " "(|(cn=%v1)(sn=%v1)(uid=%v1)))" "name or user id is"
+ "(|(cn=*%v1*)(sn=*%v1*)(cn~=%v1)(sn~=%v1)))" "name sounds like or contains"
+
+
+"dsgw-groups"
+ "=" " " "(%v))" "LDAP filter is"
+
+ "^\*$" " " "(cn=*))" "name is"
+
+ ".*" ". _" "(cn=%v1-))" "name is"
+ "(cn=*%v1-*))" "name contains"
+ "(cn~=%v1-))" "name sounds like"
+
+"dsgw-ntgroups"
+ "=" " " "(%v))" "LDAP filter is"
+
+ "^\*$" " " "(cn=*))" "name is"
+
+ ".*" ". _" "(cn=%v1-))" "name is"
+ "(cn=*%v1-*))" "name contains"
+ "(cn~=%v1-))" "name sounds like"
+ "(ntgroupdomainid=%v:*))" "NT Domain name is"
+ "(ntgroupdomainid=*:%v))" "NT Group is"
+
+"dsgw-organizations"
+ "=" " " "(%v))" "LDAP filter is"
+
+# "\." " " "(associatedDomain=%v))" "associated domain is"
+
+ "^\*$" " " "(o=*))" "name is"
+
+ ".*" " " "(o=%v))" "name is"
+ "(o=*%v*))" "name contains"
+ "(o~=%v))" "name sounds like"
+
+"dsgw-domaincomponents"
+ "=" " " "(%v))" "LDAP filter is"
+
+ "\." " " "(associatedDomain=%v))" "associated domain is"
+
+ "^\*$" " " "(dc=*))" "name is"
+
+ ".*" " " "(dc=%v))" "name is"
+ "(dc=*%v*))" "name contains"
+ "(dc~=%v))" "name sounds like"
+
+"dsgw-orgunits"
+ "=" " " "(%v))" "LDAP filter is"
+
+ "\." " " "(associatedDomain=%v))" "associated domain is"
+
+ "^\*$" " " "(ou=*))" "name is"
+
+ ".*" " " "(ou=%v))" "name is"
+ "(ou=*%v*))" "name contains"
+ "(ou~=%v))" "name sounds like"
+
+"dsgw-anything"
+ "=" " " "(%v)" "LDAP filter is"
+
+ "[ ]" " " "(|(sn=%v1-)(cn=%v1-)(o=%v1-)(ou=%v1-))" "name is"
+ "(|(sn~=%v1-)(cn~=%v1-)(o=%v1-)(ou=%v1-))" "name sounds like"
+
+ "^\*$" " " "(|(cn=*)(sn=*)(o=*)(ou=*))" "name is"
+
+ ".*" " " "(|(cn=%v1)(sn=%v1)(o=%v1)(ou=%v1))" "name is"
+ "(|(cn=*%v1*)(sn=*%v1*)(cn~=%v1)(sn~=%v1)(o=%v1)(ou=%v1))" "name sounds like or contains"
+
+
+"dsgw-ntpeople"
+ "=" " " "(%v))" "LDAP filter is"
+
+ "^[+]*[0-9][ 0-9-]*$" " " "(telephoneNumber=*%v))" "phone number ends with"
+
+ "@" " " "(mail=%v))" "email address is"
+ "(mail=%v*))" "email address starts with"
+
+ "^.[. _].*" ". _" "(cn=%v1* %v2-))" "first initial + name is"
+
+ ".*[. _].$" ". _" "(cn=%v1-*))" "name + last initial is"
+
+ "[. _]" ". _" "(|(sn=%v1-)(cn=%v1-)))" "name is"
+ "(|(cn=*%v1-*)(sn=*%v1-*)(cn~=%v1-)(sn~=%v1-)))" "name sounds like or contains"
+
+ "^\*$" " " "(|(cn=*)(sn=*)))" "name is"
+
+ ".*" ". " "(|(cn=%v1)(sn=%v1)))" "name is"
+ "(ntuserlogonserver=%v))" "NT logon server is"
+ "(ntuserdomainid=%v:*))" "NT Domain name is"
+ "(ntuserdomainid=*:%v))" "NT username is"
+ "(|(cn=*%v1*)(sn=*%v1*)(cn~=%v1)(sn~=%v1)))" "name sounds like or contains"
+
+# Do not remove this line, or place any directives after it.
diff --git a/ldap/clients/dsgw/config/dsgwfilter_adm.conf b/ldap/clients/dsgw/config/dsgwfilter_adm.conf
new file mode 100644
index 00000000..b6654e40
--- /dev/null
+++ b/ldap/clients/dsgw/config/dsgwfilter_adm.conf
@@ -0,0 +1,73 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+# ldap filter file
+#
+# lines like this that start with # or empty lines are ignored
+#
+# syntax:
+#
+# <tag>
+# <pattern1> <delimiters> <filter1-1> <desc1-1> [<scope>]
+# <filter1-2> <desc1-2> [<scope>]
+#
+# <pattern2> <delimiters> <filter2-1> <desc2-1> [<scope>] ...
+#
+# The <desc> should describe the filter. It should correctly complete
+# the phrases (in the resource database) DBT_Found0EntriesWhere_,
+# DBT_Found1EntryWhere_ and DBT_FoundEntriesWhere_; for example (en):
+#
+# Found 1 entry where the <desc> '%v'.
+# Found no entries where the <desc> '%v'.
+# Found 3 entries where the <desc> '%v'.
+#
+# The <desc> should begin with the article ("the" in English) for
+# languages that require agreement between article and noun (e.g
+# genders in Spanish or French).
+#
+# The scope is optional, and should be one of:
+# "base"
+# "onelevel"
+# "subtree"
+# if it is included.
+
+#
+# Directory Server gateway - for Netscape Admin Server
+#
+
+"dsgw-people"
+ "=" " " "(%v))" "LDAP filter is"
+
+ "^[+]*[0-9][ 0-9-]*$" " " "(telephoneNumber=*%v))" "phone number ends with"
+
+ "@" " " "(mail=%v))" "email address is"
+ "(mail=%v*))" "email address starts with"
+
+ "^.[. _].*" ". _" "(cn=%v1* %v2-))" "first initial + name is"
+
+ ".*[. _].$" ". _" "(cn=%v1-*))" "name + last initial is"
+
+ "[. _]" ". _" "(|(sn=%v1-)(cn=%v1-)))" "name is"
+ "(|(cn=*%v1-*)(sn=*%v1-*)(cn~=%v1-)(sn~=%v1-)))" "name sounds like or contains"
+
+ ".*" ". " "(uid=%v1))" "login id is"
+ "(|(cn=%v1)(sn=%v1)))" "name is"
+ "(|(cn=*%v1*)(sn=*%v1*)(cn~=%v1)(sn~=%v1)))" "name sounds like or contains"
+
+
+"dsgw-groups"
+ "=" " " "(%v))" "LDAP filter is"
+
+ ".*" ". _" "(cn=%v1-))" "name is"
+ "(cn~=%v1-))" "name sounds like"
+
+"dsgw-orgunits"
+ "=" " " "(%v))" "LDAP filter is"
+
+ ".*" ". _" "(ou=%v1-))" "unit name is"
+ "(ou~=%v1-))" "unit name sounds like"
+
+#Do not remove this line, or place any additional lines after it.
diff --git a/ldap/clients/dsgw/config/dsgwsearchprefs.conf b/ldap/clients/dsgw/config/dsgwsearchprefs.conf
new file mode 100644
index 00000000..a0190919
--- /dev/null
+++ b/ldap/clients/dsgw/config/dsgwsearchprefs.conf
@@ -0,0 +1,234 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+# dsgwsearchprefs.conf - directory server gateway search object definitions
+
+
+# the current version of this file format is 1
+Version 1
+
+
+# Name for this search object
+People
+# options (the only one supported right now is "internal" which means that
+# this search object should not be presented directly to the user)
+# use "" for none
+""
+# Label to place before text box user types in
+"Search For:"
+# Filter prefix to append to all searches
+"(&(objectClass=person)"
+# Tag to use for "Fewer Choices" searches - from ldapfilter.conf file
+"dsgw-people"
+# If a search results in > 1 match, retrieve this attribute to help
+# user disambiguate the entries...
+not-used-by-dsgw
+# ...and label it with this string:
+not-used-by-dsgw
+# Search scope to use when searching
+subtree
+# Follows a list of "More Choices" search options. Format is:
+# Label, attribute, select-bitmap, extra attr display name, extra attr ldap name
+# If last two are null, "Fewer Choices" name/attributes used.
+# Label should begin with the article ("the" in English) for
+# languages that require agreement between article and noun
+# (e.g genders in Spanish or French).
+"full name" cn 111111 "" ""
+"last name" sn 111111 "" ""
+"phone number" "telephoneNumber" 111011 "" ""
+"e-mail address" "mail" 111111 "" ""
+"user id" "uid" 111111 "" ""
+"title" title 111111 "" ""
+END
+# Match types
+"is" "(%a=%v))"
+"is not" "(!(%a=%v)))"
+"sounds like" "(%a~=%v))"
+"starts with" "(%a=%v*))"
+"ends with" "(%a=*%v))"
+"contains" "(%a=*%v*))"
+END
+
+
+"NT-People"
+""
+"Search For:"
+"(&(objectClass=ntuser)"
+"dsgw-ntpeople"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"full name" cn 111111 "" ""
+"last name" sn 111111 "" ""
+"phone number" "telephoneNumber" 111011 "" ""
+"e-mail address" "mail" 111111 "" ""
+"user id" "uid" 111111 "" ""
+"title" title 111111 "" ""
+"NT username" "ntuserdomainid" 110000 "" ""
+"NT domain" "ntuserdomainid" 101000 "" ""
+"NT logon server" "ntuserlogonserver" 111111 "" ""
+END
+"is" "(%a=%v))"
+"is not" "(!(%a=%v)))"
+"sounds like" "(%a~=%v))"
+"starts with" "(%a=%v*))"
+"ends with" "(%a=*%v))"
+"contains" "(%a=*%v*))"
+END
+
+
+Groups
+""
+"Search For:"
+"(&(|(objectClass=rfc822MailGroup)(objectClass=groupOfNames)(objectClass=groupOfUniqueNames)(objectClass=groupOfCertificates))"
+"dsgw-groups"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"name" cn 111111 "" ""
+"description" description 111111 "" ""
+"owner (DN)" "owner" 000011 "owner" "Owner"
+"member (DN)" "uniquemember" 000011 "" ""
+END
+"is" "(%a=%v))"
+"is not" "(!(%a=%v)))"
+"sounds like" "(%a~=%v))"
+"starts with" "(%a=%v*))"
+"ends with" "(%a=*%v))"
+"contains" "(%a=*%v*))"
+END
+
+NT-Groups
+""
+"Search For:"
+"(&(objectClass=ntGroup)"
+"dsgw-ntgroups"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"name" cn 111111 "" ""
+"NT groupname" "ntgroupdomainid" 110000 "" ""
+"NT domain" "ntgroupdomainid" 101000 "" ""
+"description" description 111111 "" ""
+"owner (DN)" "owner" 000011 "owner" "Owner"
+"member (DN)" "uniquemember" 000011 "" ""
+END
+"is" "(%a=%v))"
+"is not" "(!(%a=%v)))"
+"sounds like" "(%a~=%v))"
+"starts with" "(%a=%v*))"
+"ends with" "(%a=*%v))"
+"contains" "(%a=*%v*))"
+END
+
+
+Organizations
+""
+"Search For:"
+"(&(objectClass=organization)"
+"dsgw-organizations"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"name" o 111111 "" ""
+"location" l 111111 "" ""
+"phone number" telephoneNumber 111011 "" ""
+"description" description 111011 "" ""
+END
+"is" "(%a=%v))"
+"is not" "(!(%a=%v)))"
+"sounds like" "(%a~=%v))"
+"starts with" "(%a=%v*))"
+"ends with" "(%a=*%v))"
+"contains" "(%a=*%v*))"
+END
+
+
+Domaincomponent
+""
+"Search For:"
+"(&(objectClass=domain)"
+"dsgw-domaincomponent"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"name" o 111111 "" ""
+"location" l 111111 "" ""
+"phone number" telephoneNumber 111011 "" ""
+"description" description 111011 "" ""
+END
+"is" "(%a=%v))"
+"is not" "(!(%a=%v)))"
+"sounds like" "(%a~=%v))"
+"starts with" "(%a=%v*))"
+"ends with" "(%a=*%v))"
+"contains" "(%a=*%v*))"
+END
+
+
+"Org-Units"
+""
+"Search For:"
+"(&(objectClass=organizationalUnit)"
+"dsgw-orgunits"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"name" ou 111111 "" ""
+"location" l 111111 "" ""
+"phone number" telephoneNumber 111011 "" ""
+"description" description 111111 "" ""
+END
+"is" "(%a=%v))"
+"is not" "(!(%a=%v)))"
+"sounds like" "(%a~=%v))"
+"starts with" "(%a=%v*))"
+"ends with" "(%a=*%v))"
+"contains" "(%a=*%v*))"
+END
+
+Anything
+""
+"Search For:"
+""
+"dsgw-anything"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"common name" cn 111111 "" ""
+"description" description 111111 "" ""
+END
+"is" "(%a=%v)"
+"is not" "(!(%a=%v))"
+"sounds like" "(%a~=%v)"
+"starts with" "(%a=%v*)"
+"ends with" "(%a=*%v)"
+"contains" "(%a=*%v*)"
+END
+
+Auth
+internal
+"Authenticate As:"
+"(&(objectClass=person)"
+"dsgw-people"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"common name" cn 111111 "" ""
+"surname" sn 111111 "" ""
+"phone number" "telephoneNumber" 111011 "" ""
+"e-mail address" "mail" 111111 "" ""
+"user id" "uid" 111111 "" ""
+"title" title 111111 "" ""
+END
+"is" "(%a=%v))"
+"is not" "(!(%a=%v)))"
+"sounds like" "(%a~=%v))"
+"starts with" "(%a=%v*))"
+"ends with" "(%a=*%v))"
+"contains" "(%a=*%v*))"
+END
+
diff --git a/ldap/clients/dsgw/config/edit-passwd.html b/ldap/clients/dsgw/config/edit-passwd.html
new file mode 100644
index 00000000..36769f00
--- /dev/null
+++ b/ldap/clients/dsgw/config/edit-passwd.html
@@ -0,0 +1,78 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML><HEAD>
+<!-- change a directory entry's password -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>Change Password -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE>
+
+</HEAD>
+
+<!-- BODY -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<H2><CENTER>Change password for
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</H2></CENTER>
+
+<HR>
+
+<P>
+<TABLE>
+
+<!-- IF "BoundAsThisEntry" -->
+<TR>
+<TD ALIGN="right" NOWRAP>
+Enter the old password:
+</TD><TD>
+<!-- DS_OLDPASSWORD -->
+</TD></TR>
+<!-- ELIF "!Bound" -->
+<TR>
+<TD ALIGN="right" NOWRAP>
+Enter the old password:
+</TD><TD>
+<!-- DS_OLDPASSWORD -->
+</TD></TR>
+<!-- ENDIF //BoundAsThisEntry -->
+
+<TR>
+<TD ALIGN="right" NOWRAP>
+Enter the new password:
+</TD><TD>
+<!-- DS_NEWPASSWORD -->
+</TD></TR>
+
+<TR>
+<TD ALIGN="right" NOWRAP>
+Enter the new password again to confirm:
+</TD><TD>
+<!-- DS_CONFIRM_NEWPASSWORD -->
+</TD></TR>
+</TABLE>
+
+<P>
+
+<TABLE BORDER=2 WIDTH="100%">
+<TR>
+<TD ALIGN="center" WIDTH="50%">
+<!-- IF "BoundAsThisEntry" -->
+<!-- DS_SAVEBUTTON "label=Change Password" -->
+<!-- ELSE -->
+<!-- DS_SAVEBUTTON "label=Set Password" -->
+<!-- ENDIF -->
+<TD ALIGN="center" WIDTH="50%">
+<!-- DS_HELPBUTTON "topic=MODIFYPASSWD" -->
+</TABLE>
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/en-us/dsgw-l10n.conf b/ldap/clients/dsgw/config/en-us/dsgw-l10n.conf
new file mode 100644
index 00000000..0482312b
--- /dev/null
+++ b/ldap/clients/dsgw/config/en-us/dsgw-l10n.conf
@@ -0,0 +1,18 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+# To localize the search type menu:
+# Locate dsgw-l10n.conf in config/<lang>/.
+# dsgw-l10n.conf contains translated words for search type pulldown menu.
+# dsgw-l10n.conf sample:
+# Note: the sample part should have double #'s for L10n.
+## translate People <People_translated_in_lang>
+## translate NT-People <NT-People_translated_in_lang>
+## translate Groups <Groups_translated_in_lang>
+## translate NT-Groups <NT-Groups_translated_in_lang>
+## translate Organizations <Organizations_translated_in_lang>
+## translate Org-Units <Org-Units_translated_in_lang>
+## translate Anything <Anything_translated_in_lang>
diff --git a/ldap/clients/dsgw/config/en-us/dsgwcollate.conf b/ldap/clients/dsgw/config/en-us/dsgwcollate.conf
new file mode 100644
index 00000000..81f9f461
--- /dev/null
+++ b/ldap/clients/dsgw/config/en-us/dsgwcollate.conf
@@ -0,0 +1,8 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+# Ignore accents (diacritical marks) when doing case-insensitive comparison.
+caseIgnoreAccents
diff --git a/ldap/clients/dsgw/config/en/dsgw-l10n.conf b/ldap/clients/dsgw/config/en/dsgw-l10n.conf
new file mode 100644
index 00000000..0482312b
--- /dev/null
+++ b/ldap/clients/dsgw/config/en/dsgw-l10n.conf
@@ -0,0 +1,18 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+# To localize the search type menu:
+# Locate dsgw-l10n.conf in config/<lang>/.
+# dsgw-l10n.conf contains translated words for search type pulldown menu.
+# dsgw-l10n.conf sample:
+# Note: the sample part should have double #'s for L10n.
+## translate People <People_translated_in_lang>
+## translate NT-People <NT-People_translated_in_lang>
+## translate Groups <Groups_translated_in_lang>
+## translate NT-Groups <NT-Groups_translated_in_lang>
+## translate Organizations <Organizations_translated_in_lang>
+## translate Org-Units <Org-Units_translated_in_lang>
+## translate Anything <Anything_translated_in_lang>
diff --git a/ldap/clients/dsgw/config/en/dsgwcollate.conf b/ldap/clients/dsgw/config/en/dsgwcollate.conf
new file mode 100644
index 00000000..fc799692
--- /dev/null
+++ b/ldap/clients/dsgw/config/en/dsgwcollate.conf
@@ -0,0 +1,41 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+# Case 1. en and en-*
+#
+# Ignore accents (diacritical marks) when doing case-insensitive comparison.
+caseIgnoreAccents
+
+# Case 2. Latin-1 languages do not need this file
+
+# Case 3. ja and languages that have "yomi (phonetic representation)"
+#
+# Each line in this file defines a crude string collation.
+# There are two such collations, one for sorting a displayed list, and
+# another for selecting one of several alternative values to display:
+#
+## sort 20,A0,3000-30FF 3190-
+## display 20,A0,3000,3190- 3001-30FF
+#
+# In each line, each parameter defines a "script" as a set of Unicodes;
+# a character is considered to be part of the first script it matches.
+# An implicit final script contains characters that don't match any
+# parameter. Strings are collated in order of these scripts.
+# A mixed-script string is collated with the last script it contains.
+# Strings in the same script category are sorted by another algorithm,
+# which is not defined here.
+#
+# In this file, the sort scripts are Kana, Kanji and everything else,
+# and the display scripts are Kanji, Kana and everything else. So,
+# lists are sorted with pure Kana values first, Kanji values and mixed
+# Kanji/Kana values next, and finally values containing other characters.
+# When choosing a value to display, pure Kanji is preferred, Kana or
+# mixed Kanji/Kana is the next choice, and anything else is the last.
+# These choices aim to sort by Yomi (stored in Kana), but display Kanji.
+#
+# Insignificant characters (such as whitespace) should be included in
+# the first script on each line.
+
diff --git a/ldap/clients/dsgw/config/es/authPassword.html b/ldap/clients/dsgw/config/es/authPassword.html
new file mode 100644
index 00000000..4d842c1c
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/authPassword.html
@@ -0,0 +1,29 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--authPassword.html-->
+<TITLE>Autenticar...</TITLE>
+<!-- DS_AUTH_PASSWORD_SCRIPT -->
+</HEAD>
+
+<!-- DS_AUTH_PASSWORD_BODY -->
+<!-- DS_AUTH_PASSWORD_INFO -->
+<!-- DS_AUTH_PASSWORD_FORM -->
+<P>
+Contrase&ntilde;a para <b>
+<!-- DS_AUTH_PASSWORD_NAME -->
+</b>: <INPUT NAME="password" TYPE="password" SIZE=16>
+<P>
+<CENTER>
+<TABLE BORDER=2 WIDTH=100%>
+<TR>
+<!-- DS_AUTH_PASSWORD_BUTTONS -->
+</TABLE>
+</FORM>
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/config/es/authSearch.html b/ldap/clients/dsgw/config/es/authSearch.html
new file mode 100644
index 00000000..7671b0a0
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/authSearch.html
@@ -0,0 +1,33 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--authSearch.html-->
+<TITLE>Autenticar...</TITLE>
+<!-- DS_AUTH_SEARCH_SCRIPT -->
+</HEAD>
+<!-- DS_AUTH_SEARCH_BODY -->
+<!-- DS_AUTH_SEARCH_INFO -->
+<!-- DS_AUTH_SEARCH_FORM -->
+El primer paso para autenticarse en el directorio es identificarse.<br>Escriba su nombre:
+<!-- DS_AUTH_SEARCH_NAME -->
+<P>
+<CENTER>
+<TABLE BORDER=1 WIDTH=100%%>
+<TR>
+<!-- DS_AUTH_SEARCH_BUTTONS -->
+</TABLE>
+</FORM>
+<P>
+<!-- DS_AUTH_AS_ROOT_FORM -->
+<INPUT TYPE="submit" VALUE="Autenticar como responsable de directorio">&nbsp;(s&oacute;lo disponible para administradores de directorios)
+<INPUT TYPE="hidden" NAME="ldapsizelimit" VALUE="1000">
+<INPUT TYPE="hidden" NAME="ldaptimelimit" VALUE="180">
+<!-- PCONTEXT -->
+</FORM>
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/config/es/csearch.html b/ldap/clients/dsgw/config/es/csearch.html
new file mode 100644
index 00000000..d1b7ca9c
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/csearch.html
@@ -0,0 +1,23 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--csearch.html-->
+<TITLE>Netscape Directory Server Gateway : Advanced Search </TITLE>
+<!-- DS_CSEARCH_SCRIPT -->
+</HEAD>
+<FRAMESET ROWS="75,70,70,*" BORDER=0 onLoad="init()">
+ <FRAME SRC="lang?<!-- GCONTEXT -->&file=csearchtitle.html" SCROLLING="NO">
+ <FRAMESET COLS="35%,42%,*" BORDER=0>
+ <FRAME SRC="csearch?<!-- GCONTEXT -->&file=type" NAME="searchTypeFrame" NORESIZE SCROLLING="NO">
+ <FRAME SRC="csearch?<!-- GCONTEXT -->&file=attr" NAME="searchAttrFrame" NORESIZE SCROLLING="NO">
+ <FRAME SRC="csearch?<!-- GCONTEXT -->&file=match" NAME="searchMatchFrame" NORESIZE SCROLLING="NO">
+ </FRAMESET>
+ <FRAME SRC="csearch?<!-- GCONTEXT -->&file=string" NAME="searchStringFrame" NORESIZE SCROLLING="NO">
+ <FRAME SRC="lang?<!-- GCONTEXT -->&file=emptyFrame.html" NAME="outputFrame">
+</FRAMESET>
+</HTML>
diff --git a/ldap/clients/dsgw/config/es/csearchAttr.html b/ldap/clients/dsgw/config/es/csearchAttr.html
new file mode 100644
index 00000000..a118a5d3
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/csearchAttr.html
@@ -0,0 +1,18 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--csearchAttr.html-->
+</HEAD>
+<!-- DS_CSEARCH_ATTR_BODY -->
+<!-- DS_CSEARCH_ATTR_FORM -->
+<table>
+<tr VALIGN=BASELINE><td ALIGN=RIGHT>donde el:</td><td>
+<!-- DS_CSEARCH_ATTR_SELECT -->
+</td></tr>
+</table></form></body></HTML>
+
diff --git a/ldap/clients/dsgw/config/es/csearchBase.html b/ldap/clients/dsgw/config/es/csearchBase.html
new file mode 100644
index 00000000..aedafe1f
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/csearchBase.html
@@ -0,0 +1,17 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--csearchBase.html-->
+</HEAD>
+<!-- DS_CSEARCH_BASE_BODY -->
+<table>
+<tr VALIGN=CENTER><th>en:</th><td>
+<!-- EVALUATE "parent.UFNsearchBase" -->
+</td>
+</table>
+</body></HTML>
diff --git a/ldap/clients/dsgw/config/es/csearchString.html b/ldap/clients/dsgw/config/es/csearchString.html
new file mode 100644
index 00000000..d9c7c217
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/csearchString.html
@@ -0,0 +1,28 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--csearchString.html-->
+</HEAD>
+<!-- DS_CSEARCH_STRING_BODY -->
+<!-- DS_CSEARCH_STRING_FORM "target=outputFrame" -->
+<TABLE>
+<TR VALIGN=CENTER><TD>
+<INPUT NAME="searchstring" SIZE=20></TD>
+<TD><NOBR>
+<INPUT TYPE="SUBMIT" VALUE="Buscar">
+<!-- DS_HELP_BUTTON "ASEARCH" -->
+</NOBR></TD>
+<td> </td><th>dentro de:</th><td>
+<!-- EVALUATE "parent.UFNsearchBase" -->
+</td>
+</TR></TABLE>
+<INPUT TYPE="hidden" NAME="ldapsizelimit" VALUE="1000">
+<INPUT TYPE="hidden" NAME="ldaptimelimit" VALUE="180">
+<!-- PCONTEXT -->
+</FORM>
+</BODY></HTML>
diff --git a/ldap/clients/dsgw/config/es/csearchType.html b/ldap/clients/dsgw/config/es/csearchType.html
new file mode 100644
index 00000000..b51834b1
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/csearchType.html
@@ -0,0 +1,19 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--csearchType.html-->
+</HEAD>
+<!-- DS_CSEARCH_TYPE_BODY -->
+<!-- DS_CSEARCH_TYPE_FORM -->
+<table>
+<tr VALIGN=BASELINE><th ALIGN=RIGHT>Buscar:</th><td>
+<!-- DS_CSEARCH_TYPE_SELECT -->
+</td></tr>
+</table>
+</form></body></HTML>
+
diff --git a/ldap/clients/dsgw/config/es/display-country.html b/ldap/clients/dsgw/config/es/display-country.html
new file mode 100644
index 00000000..413592f9
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/display-country.html
@@ -0,0 +1,54 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_OBJECTCLASS "value=country" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>Pa&iacute;s:
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY -->
+
+<TABLE>
+<TR><TD NOWRAP>
+<IMG SRC="lang?<!-- GCONTEXT -->&file=country.gif" ALT="Pa&iacute;s" HSPACE=5>
+</TD><TD><FONT SIZE="+2">
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</FONT></TD></TR></TABLE>
+
+<TABLE CELLSPACING="5">
+
+<TR><TD VALIGN="TOP" NOWRAP>Nombre del pa&iacute;s:</TD><TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=co" "options=sort" -->
+</B></TD><TD WIDTH="20%"></TD>
+</B><TD VALIGN="TOP">Descripci&oacute;n</TD><TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=description" -->
+</B></TD></TR>
+
+<TR><TD VALIGN="TOP">Ver tambi&eacute;n:</TD><TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">P&aacute;gina web:</TD><TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=labeledURI" "syntax=url" -->
+</B></TD></TR>
+
+</TABLE>
+
+<HR>
+
+Esta entrada fue modificada por &uacute;ltima vez el <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> por <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/es/display-dnedit.html b/ldap/clients/dsgw/config/es/display-dnedit.html
new file mode 100644
index 00000000..fa209fdb
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/display-dnedit.html
@@ -0,0 +1,76 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_ENTRYBEGIN -->
+<!-- DS_EMIT_BASE_HREF -->
+<TITLE>
+Modificar
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY "onLoad='document.searchForm.searchstring.focus();'" -->
+
+<!-- DS_LAST_OP_INFO "prefix=<FONT SIZE=%22%2B1%22>" "suffix=</FONT><HR>" -->
+
+<!-- DS_BEGIN_DNSEARCHFORM -->
+<INPUT TYPE=hidden NAME=mode VALUE="smart">
+<INPUT TYPE=hidden NAME=dnlist_js VALUE="true">
+<INPUT TYPE=hidden NAME=listifone VALUE="true">
+<INPUT TYPE=hidden NAME=listtemplate VALUE="">
+<INPUT TYPE=hidden NAME=faMode VALUE="add">
+<INPUT TYPE=hidden NAME=ldapsizelimit VALUE="1000">
+<INPUT TYPE=hidden NAME=ldaptimelimit VALUE="180">
+<!-- PCONTEXT -->
+
+<FONT SIZE="+2">
+Modificar
+<!-- DS_DNDESC -->
+:
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT>
+
+<TABLE CELLSPACING=0 CELLPADDING=0><TR>
+
+<TD NOWRAP>
+Buscar
+<SELECT NAME="type">
+<OPTION SELECTED VALUE="People">Personas
+<OPTION VALUE="Groups">Grupos
+</SELECT>
+</TD>
+
+<TD NOWRAP>
+que concuerden con&nbsp;
+<INPUT NAME="searchstring" SIZE=15>
+</TD>
+
+<TD>
+<!-- DS_DNADDBUTTON "VALUE= Buscar y a&ntilde;adir " -->
+<BR>
+<!-- DS_DNREMOVEBUTTON "VALUE= Buscar y borrar " -->
+</TD>
+
+</TR>
+</TABLE>
+
+<P>
+<CENTER><TABLE BORDER="2" WIDTH="100%">
+<TR>
+<TD WIDTH="33%" ALIGN="center">
+<INPUT TYPE=BUTTON VALUE=" Guardar los cambios " onClick="parent.saveChanges();">
+<TD WIDTH="34%" ALIGN="center">
+<INPUT TYPE=BUTTON VALUE=" Cancelar " onClick="parent.cancel();">
+<TD WIDTH=33% ALIGN=center>
+<!-- DS_HELPBUTTON "topic=EDIT_GROUPMEM" -->
+</TD></TR></TABLE></CENTER>
+
+<INPUT TYPE=hidden NAME=completion_javascript VALUE='parent.updateList(parent.controlFrame.document.searchForm.faMode.value, parent.dnlist, parent.stagingFrame.dnlist, parent.outputFrame);parent.controlFrame.document.searchForm.faMode.value="add";'>
+<!-- DS_END_DNSEARCHFORM -->
+
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/es/display-dneditpeople.html b/ldap/clients/dsgw/config/es/display-dneditpeople.html
new file mode 100644
index 00000000..97a299be
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/display-dneditpeople.html
@@ -0,0 +1,75 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_ENTRYBEGIN -->
+<!-- DS_EMIT_BASE_HREF -->
+<TITLE>
+Modificar
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY "onLoad='document.searchForm.searchstring.focus();'" -->
+
+<!-- DS_LAST_OP_INFO "prefix=<FONT SIZE=%22%2B1%22>" "suffix=</FONT><HR>" -->
+
+<!-- DS_BEGIN_DNSEARCHFORM -->
+<INPUT TYPE=hidden NAME=mode VALUE="smart">
+<INPUT TYPE=hidden NAME=dnlist_js VALUE="true">
+<INPUT TYPE=hidden NAME=listifone VALUE="true">
+<INPUT TYPE=hidden NAME=listtemplate VALUE="">
+<INPUT TYPE=hidden NAME=faMode VALUE="add">
+<INPUT TYPE=hidden NAME=ldapsizelimit VALUE="1000">
+<INPUT TYPE=hidden NAME=ldaptimelimit VALUE="180">
+<!-- PCONTEXT -->
+
+<FONT SIZE="+2">
+Modificar
+<!-- DS_DNDESC -->
+:
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT>
+
+<TABLE CELLSPACING=0 CELLPADDING=0><TR>
+
+<TD NOWRAP>
+Buscar
+<SELECT NAME="type">
+<OPTION SELECTED VALUE="People">Personas
+</SELECT>
+</TD>
+
+<TD NOWRAP>
+que concuerden con&nbsp;
+<INPUT NAME="searchstring" SIZE=15>
+</TD>
+
+<TD>
+<!-- DS_DNADDBUTTON "VALUE= Buscar y a&ntilde;adir ">
+<BR>
+<!-- DS_DNREMOVEBUTTON "VALUE= Buscar y borrar ">
+</TD>
+
+</TR>
+</TABLE>
+
+<P>
+<CENTER><TABLE BORDER="2" WIDTH="100%">
+<TR>
+<TD WIDTH="33%" ALIGN="center">
+<INPUT TYPE=BUTTON VALUE=" Guardar los cambios " onClick="parent.saveChanges();">
+<TD WIDTH="34%" ALIGN="center">
+<INPUT TYPE=BUTTON VALUE=" Cancelar " onClick="parent.cancel();">
+<TD WIDTH=33% ALIGN=center>
+<!-- DS_HELPBUTTON "topic=EDIT_PERSON_REF" -->
+</TD></TR></TABLE></CENTER>
+
+<INPUT TYPE=hidden NAME=completion_javascript VALUE='parent.updateList(parent.controlFrame.document.searchForm.faMode.value, parent.dnlist, parent.stagingFrame.dnlist, parent.outputFrame);parent.controlFrame.document.searchForm.faMode.value="add";'>
+<!-- DS_END_DNSEARCHFORM -->
+
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/es/display-group.html b/ldap/clients/dsgw/config/es/display-group.html
new file mode 100644
index 00000000..b7cd01e6
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/display-group.html
@@ -0,0 +1,149 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_OBJECTCLASS "value=groupOfNames" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+Nueva
+<!-- ENDIF // Adding -->
+Entrada de grupo:
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE>
+<TR>
+<TD>
+<IMG SRC="lang?<!-- GCONTEXT -->&file=group.gif" ALT="Grupo" HSPACE=5 >
+<FONT SIZE="+2">
+<!-- IF "Adding" -->
+Nuevo grupo:
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT>
+</TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- DS_EDITBUTTON "label=Modificar grupo" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Guardar nuevo grupo" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Cancelar" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_GROUP" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_GROUP" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Cambiar nombre de grupo" "prompt=Escriba otro nombre para este grupo:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Borrar grupo" "prompt=&#191;Desea borrar este grupo?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="groupOfNames">
+<!-- ENDIF // Adding -->
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<HR>
+<!-- IF "!Displaying" -->
+<B>El asterisco (*) indica los campos obligatorios</B><BR>
+<!-- ENDIF -->
+
+
+<TABLE CELLSPACING="5">
+<TR>
+<TD NOWRAP>Nombre:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=cn" "cols=>40" -->
+</B></TD><TD WIDTH="20%"></TD>
+</TR>
+
+<TR>
+<TD NOWRAP>Descripci&oacute;n:</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>40" "defaultvalue=none" -->
+</B></TD></TR>
+
+<TR>
+<TD NOWRAP VALIGN="TOP">Propietario:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Modificar..." "template=dnedit" "attr=owner" "desc=Propietario" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=owner" "syntax=dn" "options=sort,readonly" -->
+</B></TD>
+
+<TR>
+<TD NOWRAP VALIGN="TOP">Ver tambi&eacute;n:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Modificar..." "template=dnedit" "attr=seeAlso" "desc=Ver tambi&eacute;n" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP COLSPAN="4">
+<!-- IF "!Adding" -->
+<B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "options=sort,readonly" -->
+</B>
+<!-- ELSE // !Adding -->
+<I>Tiene que guardar esta entrada para poder modificar este campo.</I>
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD NOWRAP VALIGN="top">Miembros del grupo:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Modificar..." "template=dnedit" "attr=uniquemember" "desc=Miembros del grupo" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=uniquemember" "syntax=dn" "options=sort,readonly" -->
+</B></TD></TR>
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+<HR>
+Esta entrada fue modificada por &uacute;ltima vez el <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> por <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/es/display-groupun.html b/ldap/clients/dsgw/config/es/display-groupun.html
new file mode 100644
index 00000000..cbf21ee6
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/display-groupun.html
@@ -0,0 +1,149 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_OBJECTCLASS "value=groupOfUniqueNames" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+Nueva
+<!-- ENDIF // Adding -->
+Entrada de grupo:
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE>
+<TR>
+<TD>
+<IMG SRC="lang?<!-- GCONTEXT -->&file=group.gif" ALT="Grupo" HSPACE=5 >
+<FONT SIZE="+2">
+<!-- IF "Adding" -->
+Nuevo grupo:
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT>
+</TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- DS_EDITBUTTON "label=Modificar grupo" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Guardar nuevo grupo" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Cancelar" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_GROUP" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_GROUP" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Cambiar nombre de grupo" "prompt=Escriba otro nombre para este grupo:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Borrar grupo" "prompt=&#191;Desea borrar este grupo?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="groupOfUniqueNames">
+<!-- ENDIF // Adding -->
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<HR>
+<!-- IF "!Displaying" -->
+<B>El asterisco (*) indica los campos obligatorios</B><BR>
+<!-- ENDIF -->
+
+
+<TABLE CELLSPACING="5">
+<TR>
+<TD NOWRAP>Nombre:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=cn" "cols=>40" -->
+</B></TD><TD WIDTH="20%"></TD>
+</TR>
+
+<TR>
+<TD NOWRAP>Description:</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>40" "defaultvalue=none" -->
+</B></TD></TR>
+
+<TR>
+<TD NOWRAP VALIGN="TOP">Propietario:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Modificar..." "template=dnedit" "attr=owner" "desc=Propietario" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=owner" "syntax=dn" "options=sort,readonly" -->
+</B></TD>
+
+<TR>
+<TD NOWRAP VALIGN="TOP">Ver tambi&eacute;n:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Modificar..." "template=dnedit" "attr=seeAlso" "desc=Ver tambi&eacute;n" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP COLSPAN="4">
+<!-- IF "!Adding" -->
+<B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "options=sort,readonly" -->
+</B>
+<!-- ELSE // !Adding -->
+<I>Tiene que guardar esta entrada para poder modificar este campo.</I>
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD NOWRAP VALIGN="top">Miembros del grupo:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Modificar..." "template=dnedit" "attr=uniquemember" "desc=Miembros del grupo" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=uniquemember" "syntax=dn" "options=sort,readonly" -->
+</B></TD></TR>
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+<HR>
+Esta entrada fue modificada por &uacute;ltima vez el <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> por <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/es/display-ntgroup.html b/ldap/clients/dsgw/config/es/display-ntgroup.html
new file mode 100644
index 00000000..82ab808a
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/display-ntgroup.html
@@ -0,0 +1,215 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_OBJECTCLASS "value=ntGroup" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+Nueva
+<!-- ENDIF // Adding -->
+Entrada de grupo NT:
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE>
+<TR>
+<TD>
+<IMG SRC="lang?<!-- GCONTEXT -->&file=group.gif" ALT="Grupo" HSPACE=5 >
+<FONT SIZE="+2">
+<!-- IF "Adding" -->
+Nuevo grupo NT:
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT>
+</TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- DS_EDITBUTTON "label=Modificar grupo NT" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Guardar nuevo grupo" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Cancelar" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_NTGROUP" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_NTGROUP" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Cambiar nombre de grupo NT" "prompt=Escriba otro nombre para este grupo:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Borrar grupo NT" "prompt=&#191;Desea borrar este grupo?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="ntGroup">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="groupOfUniqueNames">
+<!-- ENDIF // Adding -->
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<HR>
+<!-- IF "!Displaying" -->
+<B>El asterisco (*) indica los campos obligatorios</B><BR>
+<!-- ENDIF -->
+
+
+<TABLE CELLSPACING="5">
+<TR>
+<TD NOWRAP>Nombre:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=cn" "cols=>40" -->
+</B></TD><TD WIDTH="20%"></TD>
+</TR>
+
+<TR>
+<TD NOWRAP>Nombre de grupo NT:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD NOWRAP><B>
+<!-- IF "!Adding" -->
+<!-- DS_ATTRIBUTE "attr=ntGroupDomainId" "syntax=ntgroupname" "cols=>16" "options=readonly" "defaultvalue=none" -->
+<!-- ELSE // Adding -->
+<!-- DS_ATTRIBUTE "attr=ntGroupDomainId" "syntax=ntgroupname" "cols=>16" "defaultvalue=none" -->
+<!-- ENDIF // Adding -->
+</B></TD></TR>
+
+<TR>
+<TD NOWRAP>Tipo del grupo NT:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD NOWRAP><B>
+<!-- IF "!Adding" -->
+<!-- DS_ATTRIBUTE "attr=nTGroupType" "defaultvalue=Global" "options=readonly" "cols=>16" -->
+<!-- ELSE // Adding -->
+<!-- DS_ATTRIBUTE "attr=nTGroupType" "defaultvalue=Global" "cols=>16" -->
+<!-- ENDIF // Adding -->
+</B></TD></TR>
+
+<TR>
+<TD NOWRAP>Dominio del grupo NT:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=ntGroupDomainId" "syntax=ntdomain" "cols=>16" "defaultvalue=none" -->
+</B></TD></TR>
+
+<TR>
+<TD NOWRAP>Descripci&oacute;n:</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>40" "defaultvalue=none" -->
+</B></TD></TR>
+
+<TR>
+<TD NOWRAP>Escenario:</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=l" "cols=>40" "defaultvalue=none" -->
+</B></TD></TR>
+
+<TR>
+<TD NOWRAP>Departamento:</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=ou" "cols=>40" "defaultvalue=none" -->
+</B></TD></TR>
+
+<TR>
+<TD NOWRAP VALIGN="TOP">Propietario:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Modificar..." "template=dnedit" "attr=owner" "desc=Propietario" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=owner" "syntax=dn" "options=sort,readonly" -->
+</B></TD>
+
+<TR>
+<TD NOWRAP VALIGN="TOP">Ver tambi&eacute;n<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Modificar..." "template=dnedit" "attr=seeAlso" "desc=Ver tambi&eacute;n" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP COLSPAN="4">
+<!-- IF "!Adding" -->
+<B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "options=sort,readonly" -->
+</B>
+<!-- ELSE // !Adding -->
+<I>Tiene que guardar esta entrada para poder modificar el campo.</I>
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD NOWRAP VALIGN="top">Miembros del grupo NT<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Modificar..." "template=dnedit" "attr=uniquemember" "desc=Miembros del grupo NT" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=uniquemember" "syntax=dn" "options=sort,readonly" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>Borrar grupo NT si el grupo borrado es:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "syntax=bool" "type=radio" "true=S&iacute;" "false=No" "defaultvalue=FALSE" "attr=nTGroupDeleteGroup" -->
+</B></TD><TD></TD>
+</B></TD></TR>
+
+<!-- IF "Adding" -->
+<TR>
+<TD VALIGN="TOP">Crear nuevo grupo NT:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "syntax=bool" "type=radio" "true=S&iacute;" "false=No" "defaultvalue=TRUE" "attr=nTGroupCreateNewGroup" -->
+</B></TD><TD></TD></TR>
+
+<!-- ENDIF // Adding -->
+</TABLE>
+
+<!-- IF "!Adding" -->
+<HR>
+Esta entrada fue modificada por &uacute;ltima vez el <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> por <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/es/display-ntperson.html b/ldap/clients/dsgw/config/es/display-ntperson.html
new file mode 100644
index 00000000..a5c14dba
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/display-ntperson.html
@@ -0,0 +1,493 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- NT User person directory entry -->
+<!-- DS_OBJECTCLASS "value=person,inetOrgPerson,nTUser" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+Nueva
+<!-- ENDIF // Adding -->
+Entrada personal NT:
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE>
+
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+function showVCard()
+{
+<!-- DS_ATTRIBUTE "attr=_vcard" "options=link" "mimetype=text/x-vcard" "prefix=var cardurl=" "suffix=";" -->
+
+ document.location.href = cardurl;
+}
+// End hiding -->
+</SCRIPT>
+
+</HEAD>
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE><TR><TD>
+<!-- DS_ATTRIBUTE "attr=jpegPhoto" "type=hidden" "options=typeonly" -->
+<!-- IF "AttributeHasValues" "jpegPhoto" -->
+<IMG SRC=
+<!-- DS_ATTRIBUTE "attr=jpegPhoto" "options=link" "mimetype=image/jpeg" -->
+BORDER=0></TD>
+<TD>
+<!-- ENDIF -->
+<!-- A HREF="javascript:showVCard()" -->
+<IMG SRC="lang?<!-- GCONTEXT -->&file=person.gif" ALT="Persona (haga clic para ver la tarjeta)"
+ BORDER=0 HSPACE=5>
+
+</A>
+</TD>
+<!-- IF "DisplayOrgChart" -->
+<TD><FONT FACE="PrimaSans BT, Verdana, Sans-Serif" SIZE="-1">
+<A HREF=
+<!-- DS_ORGCHARTLINK -->
+ >
+<IMG SRC="lang?<!-- GCONTEXT -->&file=orgicon.gif" BORDER=0 ALT="Click to display organization chart" HSPACE=5></a>
+</FONT>
+</TD>
+<!-- ENDIF -->
+<TD><FONT SIZE="+2">
+<!-- IF "Adding" -->
+Nueva persona NT:
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT></TD></TR></TABLE>
+
+<!-- DS_ATTRIBUTE "attr=userCertificate;binary" "type=hidden" "options=typeonly" -->
+<!-- IF "AttributeHasValues" "userCertificate;binary" -->
+<A HREF=
+<!-- DS_ATTRIBUTE "attr=userCertificate;binary" "options=link" "mimetype=application/x-x509-ca-cert" -->
+>Recibir certificado</A>
+<!-- ENDIF -->
+
+<!-- DS_ATTRIBUTE "attr=audio" "type=hidden" "options=typeonly" -->
+<!-- IF "AttributeHasValues" "audio" -->
+&nbsp;&nbsp;
+<A HREF=
+<!-- DS_ATTRIBUTE "attr=audio" "options=link" "mimetype=audio/basic" -->
+>Play Audio Clip</A>
+<!-- ENDIF -->
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- INPUT TYPE="button" VALUE="Ver tarjeta" onClick="showVCard()" -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_EDITBUTTON "label=Modificar persona NT" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Guardar persona NT" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Cancelar" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_NTPERSON" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_NTPERSON" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_EDITASBUTTON "label=Cambiar la contrase&ntilde;a del directorio" "template=passwd" -->
+</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Cambiar nombre de persona" "prompt=Escriba otro nombre para esta persona:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Borrar persona" "prompt=&#191;Desea borrar los datos de esta persona?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="person">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="organizationalPerson">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="inetOrgPerson">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="nTUser">
+<!-- ENDIF // Adding -->
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<!-- IF "!Displaying" -->
+<B>El asterisco (*) indica los campos obligatorios</B><BR>
+<!-- ENDIF -->
+
+<TABLE CELLSPACING="2" BORDER BGCOLOR=#f2f2f2 WIDTH=95%>
+<TR>
+<TD BGCOLOR=#006666 COLSPAN=4><FONT FACE=ARIAL,HELVETICA COLOR=WHITE>
+Informaci&oacute;n de contacto</TD>
+</TR>
+
+<TD VALIGN="top" NOWRAP>Nombre:</TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=givenName" "cols=>16" -->
+</B></TD>
+<TD VALIGN="top" NOWRAP ROWSPAN="2">Nombre y apellidos:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="top" NOWRAP ROWSPAN="2"><B>
+<!-- DS_ATTRIBUTE "attr=cn" "numfields=+1" "cols=>16" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="top" NOWRAP>Apellidos:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=sn" "cols=>16" -->
+</B></TD></TR>
+
+<!-- IF "Adding" -->
+<TR>
+<TD>Contrase&ntilde;a del directorio:</TD><TD>
+<!-- DS_NEWPASSWORD "cols=>16" -->
+</B></TD>
+<TD> Rep&iacute;tala para confirmar:</TD><TD>
+<!-- DS_CONFIRM_NEWPASSWORD "cols=>16" -->
+</TD></TR>
+<!-- ENDIF // Adding -->
+
+<TR>
+<TD VALIGN="TOP">Tel&eacute;fono:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>16" "numfields=+1" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>Direcci&oacute;n electr&oacute;nica:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" "cols=>23" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Fax:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=facsimiletelephonenumber" "syntax=tel" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>Identificaci&oacute;n de usuario:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=uid" "cols=>16" "options=unique" -->
+</B></TD></TR>
+<INPUT TYPE="hidden" NAME="desc_uid" VALUE="user id">
+<!-- PCONTEXT -->
+<TR>
+<TD VALIGN="TOP" NOWRAP>Localizador:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=pager" "syntax=tel" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>Tel&eacute;fono m&oacute;vil:<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=mobile" "syntax=tel" "cols=>16" -->
+</B></TD></TR>
+
+</TABLE>
+&nbsp;
+<TABLE CELLSPACING="2" BORDER BGCOLOR=#f2f2f2 WIDTH=95%>
+<TR>
+<TD BGCOLOR=#006666 COLSPAN=4><FONT FACE=ARIAL,HELVETICA COLOR=WHITE>
+Informaci&oacute;n sobre cuenta Windows NT</TD>
+</TR>
+
+<TR>
+<TD VALIGN="TOP">Identificaci&oacute;n de usuario NT:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- IF "!Adding" -->
+<!-- DS_ATTRIBUTE "attr=nTUserDomainId" "syntax=ntuserid" "cols=>16" "options=readonly" -->
+<!-- ENDIF // Adding -->
+<!-- IF "Adding" -->
+<!-- DS_ATTRIBUTE "attr=nTUserDomainId" "syntax=ntuserid" "cols=>16" -->
+<!-- ENDIF // Adding -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>Nombre de dominio NT:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD><TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserDomainId" "syntax=ntdomain" "cols=>16" -->
+</B></TD></TR>
+<INPUT TYPE="hidden" NAME="desc_uid" VALUE="user id">
+<!-- PCONTEXT -->
+<TR>
+<TD VALIGN="TOP" COLSPAN=2 NOWRAP>Borrar cuenta NT si la persona borrada es:</TD>
+<TD VALIGN="TOP" COLSPAN=2 NOWRAP><B>
+<!-- DS_ATTRIBUTE "syntax=bool" "type=radio" "true=S&iacute;" "false=No" "defaultvalue=FALSE" "attr=nTUserDeleteAccount" -->
+</B></TD></TR>
+
+<!-- IF "Adding" -->
+<TR>
+<TD VALIGN="TOP" COLSPAN=2>Crear nueva cuenta NT:</TD>
+<TD VALIGN="TOP" COLSPAN=2 NOWRAP><B>
+<!-- DS_ATTRIBUTE "syntax=bool" "type=radio" "true=S&iacute;" "false=No" "defaultvalue=TRUE" "attr=nTUserCreateNewAccount" -->
+</B></TD></TR>
+
+<!-- ENDIF // Adding -->
+
+<!-- IF "Displaying" -->
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>Comentario del usuario NT:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserUsrComment" "defaultvalue=None" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>Identificador exclusivo usuario NT:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserUniqueId" "syntax=binvalue" "cols=>10" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>Caducidad contrase&ntilde;a NT:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "syntax=bool" "type=radio" "true=S&iacute;" "false=No" "defaultvalue=FALSE" "attr=nTUserPasswordExpired" -->
+</B></TD>
+<TD VALIGN="TOP">N&ordm; de contrase&ntilde;as err&oacute;neas NT:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserBadPwCount" "syntax=binvalue" "options=decimal" "cols=>4" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">&Uacute;ltima fecha de entrada NT:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserLastLogon" "syntax=time" "cols=>10" "defaultvalue=Never Logged On" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>&Uacute;ltima fecha de salida NT</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserLastLogoff" "syntax=time" "cols=>10" "defaultvalue=Never Logged On" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Fecha de caducidad cuenta NT:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserAcctExpires" "syntax=time" "defaultvalue=Never Expires" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>N&ordm; de accesos NT:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserNumLogons" "syntax=binvalue" "options=decimal" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Servidor de acceso NT:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserLogonServer" "defaultvalue=Any Server" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>Estaciones NT:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserWorkstations" "defaultvalue=No Restrictions" "cols=>16" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">P&aacute;g. de c&oacute;digos NT:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserCodePage" "syntax=binvalue" "options=decimal" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>C&oacute;gido de pa&iacute;s NT:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserCountryCode" "syntax=binvalue" "options=decimal" "cols=>8" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Identif. grupo principal NT:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserPrimaryGroupId" "syntax=binvalue" "options=decimal" "cols=>8" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>Perfil NT:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserProfile" "defaultvalue=Default" "cols=>16" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>Directorio principal NT:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserHomeDir" "defaultvalue=None" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP">Unidad directorio ppal. NT:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserHomeDirDrive" "defaultvalue=None" "cols=>20" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>V&iacute;a de acceso a gui&oacute;n NT:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserScriptPath" "defaultvalue=None" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>Almacenamiento m&aacute;x. NT:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserMaxStorage" "syntax=binvalue" "options=decimal" "cols=>16" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Unidades NT por semana</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserUnitsPerWeek" "syntax=binvalue" "options=decimal" "cols=>6" -->
+</B></TD>
+<TD VALIGN="TOP">Privilegios de usuario NT:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserPriv" "syntax=binvalue" "cols=>16" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Privilegios de operador usuario NT:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserAuthFlags" "syntax=binvalue" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP">Funciones varias cta. usuario NT:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserFlags" "syntax=binvalue" "cols=>16" -->
+</B></TD></TR>
+<!-- ENDIF // Displaying -->
+</TABLE>
+&nbsp;
+<TABLE CELLSPACING="2" BORDER BGCOLOR=#f2f2f2 WIDTH=95%>
+<TR>
+<TD BGCOLOR=#006666 COLSPAN=4><FONT FACE=ARIAL,HELVETICA COLOR=WHITE>
+Informaci&oacute;n sobre actividad profesional y ubicaci&oacute;n</TD>
+</TR>
+
+<TR>
+<TD VALIGN="TOP">Categor&iacute;a comercial:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=businesscategory" -->
+</B></TD>
+<TD VALIGN="TOP">Cargo:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=title" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Departamento:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=ou" -->
+</B></TD>
+<TD VALIGN="TOP">Responsable:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Modificar..." "template=dneditpeople" "attr=manager" "desc=Manager" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<!-- IF "Adding" -->
+<TD VALIGN="TOP" ROWSPAN=2>
+<I>Tiene que guardar esta entrada para poder modificar este campo.</I>
+<!-- ELSE // !Adding -->
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=manager" "syntax=dn" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP">N&ordm; de despacho</TD>
+<TD VALIGN="TOP" NOWRAP"><B>
+<!-- DS_ATTRIBUTE "attr=roomNumber" "cols=>8" -->
+</B></TD>
+</B><TD VALIGN="TOP">Admin.:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Modificar..." "template=dneditpeople" "attr=secretary" "desc=Admin." -->
+<!-- ENDIF // !Adding -->
+</TD>
+<!-- IF "!Adding" -->
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=secretary" "syntax=dn" "options=readonly" -->
+</B></TD>
+<!-- ENDIF // !Adding -->
+</TR>
+
+<TR>
+<TD VALIGN="TOP">N&ordm; de dpto.:</TD>
+<TD VALIGN="TOP"><B>
+<!-- DS_ATTRIBUTE "attr=departmentnumber" "cols=>8" -->
+</B></TD>
+<TD VALIGN="TOP">N&ordm; empleado:</TD>
+<TD VALIGN="TOP"><B>
+<!-- DS_ATTRIBUTE "attr=employeenumber" "cols=>6" -->
+</B></TD></TR>
+<TR>
+<TD VALIGN="TOP">C. identidad/pasaporte:</TD>
+<TD VALIGN="TOP"><B>
+<!-- DS_ATTRIBUTE "attr=carlicense" "cols=>8" -->
+</B></TD>
+<!-- Note: need to include two cells that contain a non-breaking space
+character so table background colors, etc. are rendered correctly -->
+<TD>&nbsp;&nbsp;</TD>
+<TD>&nbsp;&nbsp;</TD>
+</TR>
+<TR>
+<TD VALIGN="TOP">Direcci&oacute;n postal:</TD>
+<TD VALIGN="TOP" COLSPAN="4" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=postalAddress" "syntax=mls" "type=TEXTAREA" "cols=>40" "rows=>4" -->
+</B></TD></TR>
+</TABLE>
+<TABLE CELLSPACING="2" BORDER BGCOLOR=#f2f2f2 WIDTH=95%>
+<TR>
+<TD BGCOLOR=#006666 COLSPAN=2><FONT FACE=ARIAL,HELVETICA COLOR=WHITE>
+Informaci&oacute;n adicional</TD>
+</TR>
+<TR>
+<TD VALIGN="TOP">Descripci&oacute;n:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>50" -->
+</B></TR>
+<TR>
+<TD VALIGN="TOP">Ver tambi&eacute;n:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Modificar..." "template=dnedit" "attr=seeAlso" "desc=See Also" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- IF "Adding" -->
+<I>Tiene que guardar esta entrada para poder modificar este campo.</I>
+<!-- ELSE // !Adding -->
+<B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+</TR>
+<TR>
+<TD VALIGN="TOP">P&aacute;gina web:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=labeledURI" "syntax=url" "cols=>50" "options=sort" -->
+</B></TR>
+
+<!-- The following attribute should only be uncommented if you have
+ a need to allow editing of the x500UniqueIdentifier attribute.
+ Most installations will not need this functionality.
+<TR>
+<TD VALIGN="TOP">Identificador exclusivo:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=x500uniqueidentifier" "cols=>50" -->
+</B></TR>
+-->
+</TABLE>
+<!-- IF "!Adding" -->
+Esta entrada fue modificada por &uacute;ltima vez el <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> por <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
+
diff --git a/ldap/clients/dsgw/config/es/display-org.html b/ldap/clients/dsgw/config/es/display-org.html
new file mode 100644
index 00000000..7abf3677
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/display-org.html
@@ -0,0 +1,135 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_OBJECTCLASS "value=organization" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+Nueva
+<!-- ENDIF // Adding -->
+Empresa:
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE>
+<TR>
+<TD>
+<IMG SRC="lang?<!-- GCONTEXT -->&file=organization.gif" ALT="Empresa" HSPACE=5>
+<TD>
+<FONT SIZE="+2">
+<!-- IF "Adding" -->
+Nueva empresa:
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</FONT>
+</TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- DS_EDITBUTTON "label=Modificar empresa" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Guardar nueva empresa." -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Cancelar" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_ORG" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_ORG" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Cambiar nombre empresa" "prompt=Escriba otro nombre para esta empresa:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Borrar empresa" "prompt=&#191;Desea borrar esta empresa?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="organization">
+<!-- ENDIF // Adding -->
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<HR>
+<!-- IF "!Displaying" -->
+<B>El asterisco (*) indica los campos obligatorios</B><BR>
+<!-- ENDIF -->
+
+<TABLE>
+<TR>
+<TD VALIGN="TOP" NOWRAP>Nombre de la empresa:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=o" "cols=>20" -->
+</B></TD><TD WIDTH="20%"></TD>
+<TD>Descripci&oacute;n:</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>30" -->
+</B></TR>
+
+<TR><TD>Tel&eacute;fono:</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>16" -->
+</B></TD><TD></TD>
+<TD NOWRAP>Categor&iacute;a comercial:</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=businessCategory" "cols=>30" -->
+</B></TD></TR>
+
+<TR><TD>Fax:<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=facsimiletelephonenumber" "syntax=tel" "cols=>16" -->
+</B></TD><TD></TD>
+<TD>Direcci&oacute;n:</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=l" "cols=>30" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>Direcci&oacute;n postal:</TD>
+<TD VALIGN="TOP" COLSPAN="4" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=postalAddress" "syntax=mls" "type=TEXTAREA" "cols=>40" "rows=>4" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Ver tambi&eacute;n:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "dncomponents=3" "cols=>50" -->
+</B></TR>
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+<HR>
+Esta entrada fue modificada por &uacute;ltima vez el <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> por <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/es/display-orgperson.html b/ldap/clients/dsgw/config/es/display-orgperson.html
new file mode 100644
index 00000000..7dbdd12f
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/display-orgperson.html
@@ -0,0 +1,342 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- inet. organizational person directory entry -->
+<!-- DS_OBJECTCLASS "value=person,inetOrgPerson" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+Nueva
+<!-- ENDIF // Adding -->
+Entrada personal:
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE>
+
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+function showVCard()
+{
+<!-- DS_ATTRIBUTE "attr=_vcard" "options=link" "mimetype=text/x-vcard" "prefix=var cardurl=" "suffix=";" -->
+
+ document.location.href = cardurl;
+}
+// End hiding -->
+</SCRIPT>
+
+
+</HEAD>
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE><TR><TD>
+<!-- DS_ATTRIBUTE "attr=jpegPhoto" "type=hidden" "options=typeonly" -->
+<!-- IF "AttributeHasValues" "jpegPhoto" -->
+<IMG SRC=
+<!-- DS_ATTRIBUTE "attr=jpegPhoto" "options=link" "mimetype=image/jpeg" -->
+BORDER=0></TD>
+<TD>
+<!-- ENDIF -->
+<!-- A HREF="javascript:showVCard()" -->
+<IMG SRC="lang?<!-- GCONTEXT -->&file=person.gif" ALT="Persona (haga clic para ver la tarjeta)"
+ BORDER=0 HSPACE=5>
+</A>
+</TD>
+<!-- IF "DisplayOrgChart" -->
+<TD><FONT FACE="PrimaSans BT, Verdana, Sans-Serif" SIZE="-1">
+<A HREF=
+<!-- DS_ORGCHARTLINK -->
+ >
+<IMG SRC="lang?<!-- GCONTEXT -->&file=orgicon.gif" BORDER=0 ALT="Click to display organization chart" HSPACE=5></a>
+</FONT>
+</TD>
+<!-- ENDIF -->
+<TD><FONT SIZE="+2">
+<!-- IF "Adding" -->
+Nueva persona:
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT></TD></TR></TABLE>
+
+<!-- DS_ATTRIBUTE "attr=userCertificate;binary" "type=hidden" "options=typeonly" -->
+<!-- IF "AttributeHasValues" "userCertificate;binary" -->
+<A HREF=
+<!-- DS_ATTRIBUTE "attr=userCertificate;binary" "options=link" "mimetype=application/x-x509-ca-cert" -->
+>Recibir certificado</A>
+<!-- ENDIF -->
+
+<!-- DS_ATTRIBUTE "attr=audio" "type=hidden" "options=typeonly" -->
+<!-- IF "AttributeHasValues" "audio" -->
+&nbsp;&nbsp;
+<A HREF=
+<!-- DS_ATTRIBUTE "attr=audio" "options=link" "mimetype=audio/basic" -->
+>Reproducir fragmento de sonido</A>
+<!-- ENDIF -->
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- INPUT TYPE="button" VALUE="Ver tarjeta" onClick="showVCard()" -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_EDITBUTTON "label=Modificar persona" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Guardar nueva persona" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Cancelar" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_ORGPERSON" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_ORGPERSON" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_EDITASBUTTON "label=Cambiar contrase&ntilde;a" "template=passwd" -->
+</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Cambiar nombre de persona" "prompt=Escriba otro nombre para esta persona:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Borrar persona" "prompt=&#191;Desea borrar los datos de esta persona?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="person">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="organizationalPerson">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="inetOrgPerson">
+<!-- ENDIF // Adding -->
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<!-- IF "!Displaying" -->
+<B>El asterisco (*) indica los campos obligatorios</B><BR>
+<!-- ENDIF -->
+
+<TABLE CELLSPACING="2" BORDER BGCOLOR=#f2f2f2 WIDTH=95%>
+<TR>
+<TD BGCOLOR=#006666 COLSPAN=4><FONT FACE=ARIAL,HELVETICA COLOR=WHITE>
+Informaci&oacute;n de contacto</TD>
+</TR>
+
+<TD VALIGN="top" NOWRAP>Nombre:</TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=givenName" "cols=>16" -->
+</B></TD>
+<TD VALIGN="top" NOWRAP ROWSPAN="2">Nombre y apellidos:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="top" NOWRAP ROWSPAN="2"><B>
+<!-- DS_ATTRIBUTE "attr=cn" "numfields=+1" "cols=>23" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="top" NOWRAP>Apellidos:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=sn" "cols=>16" -->
+</B></TD></TR>
+
+<!-- IF "Adding" -->
+<TR>
+<TD>Contrase&ntilde;a:</TD><TD>
+<!-- DS_NEWPASSWORD "cols=>16" -->
+</B></TD>
+<TD> Repetir la contrase&ntilde;a para confirmarla:</TD><TD>
+<!-- DS_CONFIRM_NEWPASSWORD "cols=>16" -->
+</TD></TR>
+<!-- ENDIF // Adding -->
+
+<TR>
+<TD VALIGN="TOP">Tel&eacute;fono:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>16" "numfields=+1" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>Direcci&oacute;n electr&oacute;nica:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" "cols=>23" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Fax:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=facsimiletelephonenumber" "syntax=tel" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>Identificador de usuario:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=uid" "cols=>16" "options=unique" -->
+</B></TD></TR>
+<INPUT TYPE="hidden" NAME="desc_uid" VALUE="user id">
+<!-- PCONTEXT -->
+<TR>
+<TD VALIGN="TOP" NOWRAP>Buscapersonas:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=pager" "syntax=tel" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>Tel&eacute;fono m&oacute;vil:<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=mobile" "syntax=tel" "cols=>16" -->
+</B></TD></TR>
+
+</TABLE>
+
+<TABLE CELLSPACING="2" BORDER BGCOLOR=#f2f2f2 WIDTH=95%>
+<TR>
+<TD BGCOLOR=#006666 COLSPAN=4><FONT FACE=ARIAL,HELVETICA COLOR=WHITE>
+Informaci&oacute;n sobre actividad comercial y ubicaci&oacute;n</TD>
+</TR>
+
+<TR>
+<TD VALIGN="TOP">Categor&iacute;a comercial:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=businesscategory" -->
+</B></TD>
+<TD VALIGN="TOP">Cargo:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=title" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Departamento:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=ou" -->
+</B></TD>
+<TD VALIGN="TOP">Responsable:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Modificar..." "template=dneditpeople" "attr=manager" "desc=Responsable" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<!-- IF "Adding" -->
+<TD VALIGN="TOP" ROWSPAN=2>
+<I>Tiene que guardar esta entrada para poder modificar este campo.</I>
+<!-- ELSE // !Adding -->
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=manager" "syntax=dn" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP">N&ordm; de despacho:</TD>
+<TD VALIGN="TOP" NOWRAP"><B>
+<!-- DS_ATTRIBUTE "attr=roomNumber" "cols=>8" -->
+</B></TD>
+</B><TD VALIGN="TOP">Admin.:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Modificar..." "template=dneditpeople" "attr=secretary" "desc=Admin." -->
+<!-- ENDIF // !Adding -->
+</TD>
+<!-- IF "!Adding" -->
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=secretary" "syntax=dn" "options=readonly" -->
+</B></TD>
+<!-- ENDIF // !Adding -->
+</TR>
+
+<TR>
+<TD VALIGN="TOP">N&ordm; de dpto.:</TD>
+<TD VALIGN="TOP"><B>
+<!-- DS_ATTRIBUTE "attr=departmentnumber" "cols=>8" -->
+</B></TD>
+<TD VALIGN="TOP">N&ordm; empleado:</TD>
+<TD VALIGN="TOP"><B>
+<!-- DS_ATTRIBUTE "attr=employeenumber" "cols=>6" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">C. identidad/pasaporte:</TD>
+<TD VALIGN="TOP"><B>
+<!-- DS_ATTRIBUTE "attr=carlicense" "cols=>8" -->
+</B></TD>
+<!-- Note: need to include two cells that contain a non-breaking space
+character so table background colors, etc. are rendered correctly -->
+<TD>&nbsp;&nbsp;</TD>
+<TD>&nbsp;&nbsp;</TD>
+</TR>
+
+<TR>
+<TD VALIGN="TOP">Direcci&oacute;n postal:</TD>
+<TD VALIGN="TOP" COLSPAN="4" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=postalAddress" "syntax=mls" "type=TEXTAREA" "cols=>40" "rows=>4" -->
+</B></TD></TR>
+
+</TABLE>
+
+<TABLE CELLSPACING="2" BORDER BGCOLOR=#f2f2f2 WIDTH=95%>
+<TR>
+<TD BGCOLOR=#006666 COLSPAN=2><FONT FACE=ARIAL,HELVETICA COLOR=WHITE>
+Informaci&oacute;n adicional</TD>
+</TR>
+
+<TR>
+<TD VALIGN="TOP">Descripci&oacute;n:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>50" -->
+</B></TR>
+
+<TR>
+<TD VALIGN="TOP">Ver tambi&eacute;n:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Modificar..." "template=dnedit" "attr=seeAlso" "desc=Ver tambi&eacute;n" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- IF "Adding" -->
+<I>Tiene que guardar esta entrada para poder modificar este campo.</I>
+<!-- ELSE // !Adding -->
+<B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP">P&aacute;gina web:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=labeledURI" "syntax=url" "cols=>50" "options=sort" -->
+</B></TR>
+
+<!-- The following attribute should only be uncommented if you have
+ a need to allow editing of the x500UniqueIdentifier attribute.
+ Most installations will not need this functionality.
+<TR>
+<TD VALIGN="TOP">Identificador exclusivo:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=x500uniqueidentifier" "cols=>50" -->
+</B></TR>
+-->
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+Esta entrada fue modificada por &uacute;ltima vez el <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> por <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/es/display-orgunit.html b/ldap/clients/dsgw/config/es/display-orgunit.html
new file mode 100644
index 00000000..038d43ef
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/display-orgunit.html
@@ -0,0 +1,135 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_OBJECTCLASS "value=organizationalUnit" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+Nuevo
+<!-- ENDIF // Adding -->
+Departamento:
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE>
+<TR>
+<TD>
+<IMG SRC="lang?<!-- GCONTEXT -->&file=orgunit.gif" ALT="Departamento" HSPACE=5>
+<TD>
+<FONT SIZE="+2">
+<!-- IF "Adding" -->
+Nuevo Departamento:
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</FONT>
+</TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- DS_EDITBUTTON "label=Modificar departamento" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Guardar nuevo dpto." -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Cancelar" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_ORGUNIT" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_ORGUNIT" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Cambiar nombre dpto." "prompt=Escriba otro nombre para este departamento:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Borrar departamento" "prompt=&#191;Desea borrar este departamento?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="organizationalUnit">
+<!-- ENDIF // Adding -->
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<HR>
+<!-- IF "!Displaying" -->
+<B>El asterisco (*) indica los campos obligatorios.</B><BR>
+<!-- ENDIF -->
+
+
+<TABLE>
+<TR>
+<TD>Nombre del dpto.:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=ou" "cols=>20" -->
+</B></TD><TD WIDTH="20%"></TD>
+<TD>Descripci&oacute;n:</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>30" -->
+</B></TR>
+
+<TR><TD>Tel&eacute;fono:</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>16" -->
+</B></TD><TD></TD>
+<TD NOWRAP>Categor&iacute;a comercial:</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=businessCategory" "cols=>30" -->
+</B></TD></TR>
+
+<TR><TD>Fax:<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=facsimiletelephonenumber" "syntax=tel" "cols=>16" -->
+</B></TD><TD></TD>
+<TD>Direcci&oacute;n:</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=l" "cols=>30" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Direcci&oacute;n postal:</TD>
+<TD VALIGN="TOP" COLSPAN="4" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=postalAddress" "syntax=mls" "type=TEXTAREA" "cols=>40" "rows=>4" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Ver tambi&eacute;n:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "dncomponents=3" "cols=>50" -->
+</B></TR>
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+<HR>
+Esta entrada fue modificada por &uacute;ltima vez el <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> por <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/es/display-person.html b/ldap/clients/dsgw/config/es/display-person.html
new file mode 100644
index 00000000..e7d0409a
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/display-person.html
@@ -0,0 +1,229 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- person directory entry -->
+<!-- DS_OBJECTCLASS "value=person" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+Nueva
+<!-- ENDIF // Adding -->
+Entrada personal:
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE>
+
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+function showVCard()
+{
+<!-- DS_ATTRIBUTE "attr=_vcard" "options=link" "mimetype=text/x-vcard" "prefix=var cardurl=" "suffix=";" -->
+
+ document.location.href = cardurl;
+}
+// End hiding -->
+</SCRIPT>
+
+</HEAD>
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE><TR><TD>
+<!-- A HREF="javascript:showVCard()" -->
+<IMG SRC="lang?<!-- GCONTEXT -->&file=person.gif" ALT="Persona (haga clic para ver la tarjeta)"
+ BORDER=0 HSPACE=5>
+</A>
+</TD>
+<!-- IF "DisplayOrgChart" -->
+<TD><FONT FACE="PrimaSans BT, Verdana, Sans-Serif" SIZE="-1">
+<A HREF=
+<!-- DS_ORGCHARTLINK -->
+ >
+<IMG SRC="lang?<!-- GCONTEXT -->&file=orgicon.gif" BORDER=0 ALT="Click to display organization chart" HSPACE=5></a>
+</FONT>
+</TD>
+<!-- ENDIF -->
+<TD><FONT SIZE="+2">
+<!-- IF "Adding" -->
+Nueva persona:
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT></TD></TR></TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- INPUT TYPE="button" VALUE="Ver tarjeta" onClick="showVCard()" -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_EDITBUTTON "label=Modificar persona" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Guardar nueva persona" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Cancelar" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_PERSON" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_PERSON" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_EDITASBUTTON "label=Cambiar contrase&ntilde;a" "template=passwd" -->
+</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Cambiar nombre de persona" "prompt=Escriba otro nombre para esta persona:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Borrar persona" "prompt=&#191;Desea borrar los datos de esta persona?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="person">
+<!-- ENDIF // Adding -->
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<HR>
+<!-- IF "!Displaying" -->
+<B>El asterisco (*) indica los campos obligatorios</B><BR>
+<!-- ENDIF -->
+
+<TABLE CELLSPACING="5">
+<TR>
+<TD VALIGN="top" NOWRAP>Apellidos:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=sn" "cols=>16" -->
+</B></TD><TD WIDTH="20%"></TD>
+<TD VALIGN="top" NOWRAP>Nombre y apellidos:</TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=cn" "numfields=+1" "cols=>16" -->
+</B></TD></TR>
+
+<!-- IF "Adding" -->
+<TR><TD COLSPAN="5"><HR></TD></TR>
+<TR>
+<TD>Contrase&ntilde;a:</TD><TD>
+<!-- DS_NEWPASSWORD -->
+</TD><TD WIDTH="20%"></TD>
+<TD> Repita la contrase&ntilde;a para confirmarla:</TD><TD>
+<!-- DS_CONFIRM_NEWPASSWORD -->
+</TD></TR>
+<TR><TD COLSPAN="5"><HR></TD></TR>
+<!-- ENDIF // Adding -->
+
+<TR>
+<TD VALIGN="TOP">Tel&eacute;fono:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>16" "numfields=+1" -->
+</B></TD><TD></TD>
+<TD VALIGN="TOP" NOWRAP>Direcci&oacute;n electr&oacute;nica:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" "cols=>20" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Fax:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=facsimiletelephonenumber" "syntax=tel" "cols=>16" -->
+</B></TD><TD></TD>
+<TD VALIGN="TOP" NOWRAP>User ID:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=uid" "cols=>16" "options=unique" -->
+</B></TD></TR>
+<INPUT TYPE="hidden" NAME="desc_uid" VALUE="user id">
+<!-- PCONTEXT -->
+<TR>
+<TD VALIGN="TOP" NOWRAP>Buscapersonas:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=pager" "syntax=tel" "cols=>16" -->
+</B></TD><TD></TD>
+<TD VALIGN="TOP" NOWRAP>Tel&eacute;fono m&oacute;vil:<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=mobile" "syntax=tel" "cols=>16" -->
+</B></TD></TR>
+
+<TR><TD COLSPAN="5"><HR></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Cargo:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=title" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Direcci&oacute;n postal:</TD>
+<TD VALIGN="TOP" COLSPAN="4" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=postalAddress" "syntax=mls" "type=TEXTAREA" "cols=>40" "rows=>4" -->
+</B></TD></TR>
+
+<TR><TD COLSPAN="5"><HR></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Descripci&oacute;n:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>50" -->
+</B></TR>
+
+<TR>
+<TD VALIGN="TOP">Ver tambi&eacute;n:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Modificar..." "template=dnedit" "attr=seeAlso" "desc=Ver tambi&eacute;n" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4">
+<!-- IF "Adding" -->
+<I>Tiene que guardar esta entrada para poder modificar el campo.</I>
+<!-- ELSE // !Adding -->
+<B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP">P&aacute;gina web:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=labeledURI" "syntax=url" "cols=>50" -->
+</B></TR>
+
+<TR>
+<TD VALIGN="TOP">Bebida favorita:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=drink" -->
+</B></TR>
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+<HR>
+Esta entrada fue modificada por &uacute;ltima vez el <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> por <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/es/dsgw-l10n.conf b/ldap/clients/dsgw/config/es/dsgw-l10n.conf
new file mode 100644
index 00000000..0482312b
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/dsgw-l10n.conf
@@ -0,0 +1,18 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+# To localize the search type menu:
+# Locate dsgw-l10n.conf in config/<lang>/.
+# dsgw-l10n.conf contains translated words for search type pulldown menu.
+# dsgw-l10n.conf sample:
+# Note: the sample part should have double #'s for L10n.
+## translate People <People_translated_in_lang>
+## translate NT-People <NT-People_translated_in_lang>
+## translate Groups <Groups_translated_in_lang>
+## translate NT-Groups <NT-Groups_translated_in_lang>
+## translate Organizations <Organizations_translated_in_lang>
+## translate Org-Units <Org-Units_translated_in_lang>
+## translate Anything <Anything_translated_in_lang>
diff --git a/ldap/clients/dsgw/config/es/dsgw.tmpl b/ldap/clients/dsgw/config/es/dsgw.tmpl
new file mode 100644
index 00000000..47360e0a
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/dsgw.tmpl
@@ -0,0 +1,116 @@
+# The htmldir directive tells the CGIs where to find the html files
+htmldir ../html
+
+# The configdir directive tells the CGIs where to find the
+# templates/configuration files
+configdir ../config
+
+# The gwnametrans directive tells the CGIs what url to output
+# for http redirection. It should be the same nameTrans set
+# in the webserver, if any is being is used.
+gwnametrans /clients/dsgw/html/
+
+# The authlifetime directive specifies how long authentication credentials
+# are valid (in seconds).
+authlifetime 7200
+
+# The libNLS data directory. This directory should contain a directory
+# named "locales", which contains the configuration files LANG.ctx and
+# LANG.txt for each supported language (locale).
+NLS ../../../lib/nls
+
+# The default character set, for communication with HTTP clients.
+# A client may override this default, using an HTTP Accept-Charset header.
+# Or, this default may be overridden for a specific language, by creating
+# a LANG/dsgwcharset.conf file which contains the charset name.
+# For compatibility with HTTP clients that can't handle an HTTP response
+# with a charset parameter in the content-type, comment out this directive;
+# responses will be sent in ISO-8859-1, with no explicit charset parameter.
+# RFC 1345 defines the syntax of charset names. There is a registry of
+# charsets, at ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets
+# charset UTF-8
+
+# Substitute ideographic space for non-breaking space in Asian charsets:
+changeHTML "  " " " Shift_JIS Big5 EUC-KR
+changeHTML " " " " Shift_JIS Big5 EUC-KR
+
+# Mapping between config/display-XXX.html templates and LDAP objectClasses.
+# This can be generated by using ds/templateindex. The format is:
+#
+# template TEMPLATENAME OBJECTCLASSES
+#
+# where "display-TEMPLATENAME.html" is the name of a display template
+# that is found in this config directory (e.g., "display-group.html") and
+# OBJECTCLASSES is a list of one or more objectClass values. For a given
+# template to be used, all the objectClass values listed must be present
+# in the directory entry, so the order of these template lines is
+# significant (e.g. note that the more specific "orgperson" template is
+# listed before the one for an ordinary "person").
+#
+template group groupOfNames
+template ntgroup groupOfUniqueNames ntGroup
+template groupun groupOfUniqueNames
+template org organization
+template orgunit organizationalUnit
+template ntperson person inetOrgPerson nTUser
+template orgperson person inetOrgPerson
+template person person
+template country country
+
+#
+# The remainder of this file contains information about the locations and
+# types for new entries.
+#
+# "location" lines define places in the directory where new entries can be added
+# The format of each line is:
+# location HANDLE FRIENDLYNAME DN
+# where HANDLE is a short name which is used in the "newtype" lines (see below)
+# and FRIENDLYNAME is a human-readable name for the location
+# and DN is the Distinguished Name for this location (if it does not end with
+# '#', the location-suffix is appended to to construct a full DN; if it
+# does end with `#', it assumed to be a full DN and the `#' is removed).
+#
+location country "Espa&ntilde;a" "c=ES#"
+location org "Esta empresa" ""
+location groups "Grupos" "ou=Groups"
+location people "Personas" "ou=People"
+location special "Usuarios especiales" "ou=Special Users"
+
+# "newtype" lines define the types of new entries that may be added
+# The format of each line is:
+# newtype TEMPLATENAME FRIENDLYNAME RDNATTR LOCATIONS...
+# where TEMPLATENAME corresponds to an existing display-TEMPLATENAME.html file
+# and FRIENDLYNAME is a human-readable name for this type of entry
+# and RDNATTR is the attribute that is used to name entries of this type
+# and LOCATIONS is a blank-separated list of locations where these types of
+# entries can be added (corresponding to a HANDLE on a "location"
+# config. file line).
+#
+newtype orgperson "Persona" uid people special
+newtype ntperson "Persona NT" uid people special
+newtype ntgroup "Grupo NT" cn groups
+newtype groupun "Grupo" cn groups
+newtype orgunit "Departamento" ou people org
+newtype org "Empresa" o country
+
+# Mappings between VCard properties and LDAP attribute types:
+# The format of each line is:
+# vcard-property VCARDPROP SYNTAX LDAPATTR [LDAPATTR2]
+# where VCARDPROP is the name of a VCard property
+# and SYNTAX is "cis" for simple strings and "mls" for multiline strings
+# and LDAPATTR is the LDAP attribute that corresponds to VCARDPROP
+# and LDAPATTR2 is an optional secondary LDAP attribute which is added to
+# the property value by appending a semicolon and then the attr2 value.
+vcard-property FN cis cn
+vcard-property N cis sn givenName
+vcard-property ORG cis o ou
+vcard-property ROLE cis businessCategory
+vcard-property ADR;WORK mls postalAddress
+vcard-property ADR;HOME mls homePostalAddress
+vcard-property EMAIL;INTERNET cis mail
+vcard-property TITLE cis title
+vcard-property TEL;WORK cis telephoneNumber
+vcard-property TEL;FAX cis facsimileTelephoneNumber
+vcard-property TEL;CELL cis mobile
+vcard-property TEL;HOME cis homePhone
+vcard-property NOTE cis description
diff --git a/ldap/clients/dsgw/config/es/dsgw_adm.conf b/ldap/clients/dsgw/config/es/dsgw_adm.conf
new file mode 100644
index 00000000..ff662a46
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/dsgw_adm.conf
@@ -0,0 +1,46 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+# Mapping between config/display-XXX.html templates and LDAP objectClasses.
+# This can be generated by using the templateindex program. The format is:
+#
+# template TEMPLATENAME OBJECTCLASSES
+#
+# where "display-TEMPLATENAME.html" is the name of a display template
+# that is found in this config directory (e.g., "display-group.html") and
+# OBJECTCLASSES is a list of one or more objectClass values. For a given
+# template to be used, all the objectClass values listed must be present
+# in the directory entry, so the order of these template lines is
+# significant (e.g. note that the more specific "orgperson" template is
+# listed before the one for an ordinary "person").
+#
+template group groupOfNames
+template groupun groupOfUniqueNames
+template org organization
+template orgunit organizationalUnit
+template orgperson person inetOrgPerson
+template person person
+template country country
+template licensed-user nsLicenseUser
+
+# Attribute Value Sets (used with DS_ATTRVAL_SET directives)
+# attrvset HANDLE VALUE PREFIX SUFFIX
+#
+attrvset CAL news "" "Netscape Collabra Server"
+attrvset CAL slapd "" "Netscape Directory Server"
+
+
+# Template Set definitions
+# Note: templates must be defined before they can be mentioned on
+# a tmplset line.
+#
+# tmplset SETNAME VIEWNAME TEMPLATENAME [HREF-LOCATION]
+#
+tmplset person "General" orgperson
+tmplset person "Contrase&ntilde;a" passwd
+tmplset person "Licencia" licensed-user
+tmplset group "General" group
+tmplset groupun "General" groupun
diff --git a/ldap/clients/dsgw/config/es/dsgwfilter.conf b/ldap/clients/dsgw/config/es/dsgwfilter.conf
new file mode 100644
index 00000000..735facec
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/dsgwfilter.conf
@@ -0,0 +1,139 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+# ldap filter file
+#
+# lines like this that start with # or empty lines are ignored
+#
+# syntax:
+#
+# <tag>
+# <pattern1> <delimiters> <filter1-1> <desc1-1> [<scope>]
+# <filter1-2> <desc1-2> [<scope>]
+#
+# <pattern2> <delimiters> <filter2-1> <desc2-1> [<scope>] ...
+#
+# The <desc> should describe the filter. It should correctly complete
+# the phrases (in the resource database) DBT_Found0EntriesWhere_,
+# DBT_Found1EntryWhere_ and DBT_FoundEntriesWhere_; for example:
+#
+# Found 1 entry where the <desc> '%v'.
+# Found no entries where the <desc> '%v'.
+# Found 3 entries where the <desc> '%v'.
+#
+# The <desc> should begin with the article ("the" in English) for
+# languages that require agreement between article and noun (e.g
+# genders in Spanish or French).
+#
+# The scope is optional, and should be one of:
+# "base"
+# "onelevel"
+# "subtree"
+# if it is included.
+
+#
+# Directory Server gateway
+#
+
+"dsgw-people"
+ "=" " " "(%v))" "LDAP filtro es"
+
+ "^[+]*[0-9][ 0-9-]*$" " " "(telephoneNumber=*%v))" "n&uacute;mero de tel&eacute;fono termina en"
+
+ "@" " " "(mail=%v))" "direcci&oacute;n electr&oacute;nica es"
+ "(mail=%v*))" "direcci&oacute;n electr&oacute;nica comienza por"
+
+ "^.[. _].*" ". _" "(cn=%v1* %v2-))" "primera inicial + nombre es"
+
+ ".*[. _].$" ". _" "(cn=%v1-*))" "nombre + &uacute;ltima inicial es"
+
+ "[. _]" ". _" "(|(sn=%v1-)(cn=%v1-)))" "nombre es"
+ "(|(cn=*%v1-*)(sn=*%v1-*)(cn~=%v1-)(sn~=%v1-)))" "nombre suena como o contiene"
+
+ "^\*$" " " "(|(cn=*)(sn=*)(uid=*)))" "nombre o identificaci&oacute;n de usuario es"
+
+ ".*" ". " "(|(cn=%v1)(sn=%v1)(uid=%v1)))" "nombre o identificaci&oacute;n de usuario es"
+ "(|(cn=*%v1*)(sn=*%v1*)(cn~=%v1)(sn~=%v1)))" "nombre suena como o contiene"
+
+
+"dsgw-groups"
+ "=" " " "(%v))" "LDAP filter es"
+
+ "^\*$" " " "(cn=*))" "nombre es"
+
+ ".*" ". _" "(cn=%v1-))" "nombre es"
+ "(cn=*%v1-*))" "nombre contiene"
+ "(cn~=%v1-))" "nombre suena como"
+
+"dsgw-ntgroups"
+ "=" " " "(%v))" "LDAP filter es"
+
+ "^\*$" " " "(cn=*))" "nombre es"
+
+ ".*" ". _" "(cn=%v1-))" "nombre es"
+ "(cn=*%v1-*))" "nombre suena como"
+ "(cn~=%v1-))" "nombre suena como"
+ "(ntgroupdomainid=%v:*))" "Dominio NT nombre es"
+ "(ntgroupdomainid=*:%v))" "Grupo NT es"
+
+"dsgw-organizations"
+ "=" " " "(%v))" "LDAP filter es"
+
+ "\." " " "(associatedDomain=%v))" "Dominio asociado es"
+
+ "^\*$" " " "(o=*))" "nombre es"
+
+ ".*" " " "(o=%v))" "nombre es"
+ "(o=*%v*))" "nombre contiene"
+ "(o~=%v))" "nombre suena como"
+
+"dsgw-orgunits"
+ "=" " " "(%v))" "LDAP filter es"
+
+ "\." " " "(associatedDomain=%v))" "Dominio asociado es"
+
+ "^\*$" " " "(ou=*))" "nombre es"
+
+ ".*" " " "(ou=%v))" "nombre es"
+ "(ou=*%v*))" "nombre contiene"
+ "(ou~=%v))" "nombre suena como"
+
+"dsgw-anything"
+ "=" " " "(%v)" "LDAP filter es"
+
+ "[. _]" ". _" "(|(sn=%v1-)(cn=%v1-)(o=%v1-)(ou=%v1-))" "nombre es"
+ "(|(sn~=%v1-)(cn~=%v1-)(o=%v1-)(ou=%v1-))" "nombre suena como"
+
+ "^\*$" " " "(|(cn=*)(sn=*)(o=*)(ou=*))" "nombre es"
+
+ ".*" ". " "(|(cn=%v1)(sn=%v1)(o=%v1)(ou=%v1))" "nombre es"
+ "(|(cn=*%v1*)(sn=*%v1*)(cn~=%v1)(sn~=%v1)(o=%v1)(ou=%v1))" "nombre suena como o contiene"
+
+
+"dsgw-ntpeople"
+ "=" " " "(%v))" "LDAP filter es"
+
+ "^[+]*[0-9][ 0-9-]*$" " " "(telephoneNumber=*%v))" "n&uacute;mero de tel&eacute;fono termina en"
+
+ "@" " " "(mail=%v))" "direcci&oacute;n electr&oacute;nica es"
+ "(mail=%v*))" "direcci&oacute;n electr&oacute;nica comienza por"
+
+ "^.[. _].*" ". _" "(cn=%v1* %v2-))" "primera inicial + nombre es"
+
+ ".*[. _].$" ". _" "(cn=%v1-*))" "nombre + &uacute;ltima inicial es"
+
+ "[. _]" ". _" "(|(sn=%v1-)(cn=%v1-)))" "nombre es"
+ "(|(cn=*%v1-*)(sn=*%v1-*)(cn~=%v1-)(sn~=%v1-)))" "nombre suena como o contiene"
+
+ "^\*$" " " "(|(cn=*)(sn=*)))" "nombre es"
+
+ ".*" ". " "(|(cn=%v1)(sn=%v1)))" "nombre es"
+ "(ntuserlogonserver=%v))" "Servidor de acceso NT"
+ "(ntuserdomainid=%v:*))" "Dominio NT nombre es"
+ "(ntuserdomainid=*:%v))" "Nombre de usuario NT"
+ "(|(cn=*%v1*)(sn=*%v1*)(cn~=%v1)(sn~=%v1)))" "nombre suena como o contiene"
+
+# Do not remove this line, or place any directives after it.
diff --git a/ldap/clients/dsgw/config/es/dsgwfilter_adm.conf b/ldap/clients/dsgw/config/es/dsgwfilter_adm.conf
new file mode 100644
index 00000000..48eadf05
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/dsgwfilter_adm.conf
@@ -0,0 +1,73 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+# ldap filter file
+#
+# lines like this that start with # or empty lines are ignored
+#
+# syntax:
+#
+# <tag>
+# <pattern1> <delimiters> <filter1-1> <desc1-1> [<scope>]
+# <filter1-2> <desc1-2> [<scope>]
+#
+# <pattern2> <delimiters> <filter2-1> <desc2-1> [<scope>] ...
+#
+# The <desc> should describe the filter. It should correctly complete
+# the phrases (in the resource database) DBT_Found0EntriesWhere_,
+# DBT_Found1EntryWhere_ and DBT_FoundEntriesWhere_; for example (en):
+#
+# Found 1 entry where the <desc> '%v'.
+# Found no entries where the <desc> '%v'.
+# Found 3 entries where the <desc> '%v'.
+#
+# The <desc> should begin with the article ("the" in English) for
+# languages that require agreement between article and noun (e.g
+# genders in Spanish or French).
+#
+# The scope is optional, and should be one of:
+# "base"
+# "onelevel"
+# "subtree"
+# if it is included.
+
+#
+# Directory Server gateway - for Netscape Admin Server
+#
+
+"dsgw-people"
+ "=" " " "(%v))" "LDAP filtro es"
+
+ "^[+]*[0-9][ 0-9-]*$" " " "(telephoneNumber=*%v))" "n&uacute;mero de tel&eacute;fono termina en"
+
+ "@" " " "(mail=%v))" "direcci&oacute;n electr&oacute;nica es"
+ "(mail=%v*))" "direcci&oacute;n electr&oacute;nica comienza por"
+
+ "^.[. _].*" ". _" "(cn=%v1* %v2-))" "primera inicial + nombre es"
+
+ ".*[. _].$" ". _" "(cn=%v1-*))" "nombre + &uacute;ltima inicial es"
+
+ "[. _]" ". _" "(|(sn=%v1-)(cn=%v1-)))" "name is"
+ "(|(cn=*%v1-*)(sn=*%v1-*)(cn~=%v1-)(sn~=%v1-)))" "nombre suena como o contiene"
+
+ ".*" ". " "(uid=%v1))" "identificaci&oacute;n de acceso es"
+ "(|(cn=%v1)(sn=%v1)))" "nombre es"
+ "(|(cn=*%v1*)(sn=*%v1*)(cn~=%v1)(sn~=%v1)))" "nombre suena como o contiene"
+
+
+"dsgw-groups"
+ "=" " " "(%v))" "LDAP filter is"
+
+ ".*" ". _" "(cn=%v1-))" "nombre es"
+ "(cn~=%v1-))" "nombre suena como"
+
+"dsgw-orgunits"
+ "=" " " "(%v))" "LDAP filtro es"
+
+ ".*" ". _" "(ou=%v1-))" "nombre de la unidad es"
+ "(ou~=%v1-))" "nombre de la unidad suena como"
+
+#Do not remove this line, or place any additional lines after it.
diff --git a/ldap/clients/dsgw/config/es/dsgwsearchprefs.conf b/ldap/clients/dsgw/config/es/dsgwsearchprefs.conf
new file mode 100644
index 00000000..fee61c10
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/dsgwsearchprefs.conf
@@ -0,0 +1,213 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+# dsgwsearchprefs.conf - directory server gateway search object definitions
+
+
+# the current version of this file format is 1
+Version 1
+
+
+# Name for this search object
+People
+# options (the only one supported right now is "internal" which means that
+# this search object should not be presented directly to the user)
+# use "" for none
+""
+# Label to place before text box user types in
+"Search For:"
+# Filter prefix to append to all searches
+"(&(objectClass=person)"
+# Tag to use for "Fewer Choices" searches - from ldapfilter.conf file
+"dsgw-people"
+# If a search results in > 1 match, retrieve this attribute to help
+# user disambiguate the entries...
+not-used-by-dsgw
+# ...and label it with this string:
+not-used-by-dsgw
+# Search scope to use when searching
+subtree
+# Follows a list of "More Choices" search options. Format is:
+# Label, attribute, select-bitmap, extra attr display name, extra attr ldap name
+# If last two are null, "Fewer Choices" name/attributes used.
+# Label should begin with the article ("the" in English) for
+# languages that require agreement between article and noun
+# (e.g genders in Spanish or French).
+
+"nombre y apellidos" cn 111111 "" ""
+"apellidos" sn 111111 "" ""
+"número de teléfono" "telephoneNumber" 111011 "" ""
+"dirección electrónica" "mail" 111111 "" ""
+"identificación de usuario" "uid" 111111 "" ""
+"cargo" title 111111 "" ""
+END
+# Match types
+"es" "(%a=%v))"
+"no es" "(!(%a=%v)))"
+"suena como" "(%a~=%v))"
+"comienza por" "(%a=%v*))"
+"termina en" "(%a=*%v))"
+"contiene" "(%a=*%v*))"
+END
+
+
+"NT-People"
+""
+"Search For:"
+"(&(objectClass=ntuser)"
+"dsgw-ntpeople"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"nombre y apellidos" cn 111111 "" ""
+"apellidos" sn 111111 "" ""
+"número de teléfono" "telephoneNumber" 111011 "" ""
+"dirección electrónica" "mail" 111111 "" ""
+"identificación de usuario" "uid" 111111 "" ""
+"cargo" title 111111 "" ""
+"Nombre de usuario NT" "ntuserdomainid" 110000 "" ""
+"Dominio NT" "ntuserdomainid" 101000 "" ""
+"Servidor de acceso NT" "ntuserlogonserver" 111111 "" ""
+END
+"es" "(%a=%v))"
+"no es" "(!(%a=%v)))"
+"suena como" "(%a~=%v))"
+"comienza por" "(%a=%v*))"
+"termina en" "(%a=*%v))"
+"contiene" "(%a=*%v*))"
+END
+
+
+Groups
+""
+"Search For:"
+"(&(|(objectClass=rfc822MailGroup)(objectClass=groupOfNames)(objectClass=groupOfUniqueNames)(objectClass=groupOfCertificates))"
+"dsgw-groups"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"nombre" cn 111111 "" ""
+"descripción" description 111111 "" ""
+"propietario (DN)" "owner" 000011 "owner" "Owner"
+"miembro (DN)" "member" 000011 "" ""
+END
+"es" "(%a=%v))"
+"no es" "(!(%a=%v)))"
+"suena como" "(%a~=%v))"
+"comienza por" "(%a=%v*))"
+"termina en" "(%a=*%v))"
+"contiene" "(%a=*%v*))"
+END
+
+NT-Groups
+""
+"Search For:"
+"(&(objectClass=ntGroup)"
+"dsgw-ntgroups"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"nombre" cn 111111 "" ""
+"Dominio NT" "ntgroupdomainid" 111111 "" ""
+"nombre de grupo NT" "ntgroupdomainid" 111111 "" ""
+"descripción" description 111111 "" ""
+"propietario (DN)" "owner" 000011 "owner" "Owner"
+"miembro (DN)" "uniquemember" 000011 "" ""
+END
+"es" "(%a=%v))"
+"no es" "(!(%a=%v)))"
+"suena como" "(%a~=%v))"
+"comienza por" "(%a=%v*))"
+"termina en" "(%a=*%v))"
+"contiene" "(%a=*%v*))"
+END
+
+
+Organizations
+""
+"Search For:"
+"(&(objectClass=organization)"
+"dsgw-organizations"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"nombre" o 111111 "" ""
+"dirección" l 111111 "" ""
+"número de teléfono" telephoneNumber 111011 "" ""
+"descripción" description 111011 "" ""
+END
+"es" "(%a=%v))"
+"no es" "(!(%a=%v)))"
+"suena como" "(%a~=%v))"
+"comienza por" "(%a=%v*))"
+"termina en" "(%a=*%v))"
+"contiene" "(%a=*%v*))"
+END
+
+
+"Org-Units"
+""
+"Search For:"
+"(&(objectClass=organizationalUnit)"
+"dsgw-orgunits"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"nombre" ou 111111 "" ""
+"dirección" l 111111 "" ""
+"número de teléfono" telephoneNumber 111011 "" ""
+"descripción" description 111111 "" ""
+END
+"es" "(%a=%v))"
+"no es" "(!(%a=%v)))"
+"suena como" "(%a~=%v))"
+"comienza por" "(%a=%v*))"
+"termina en" "(%a=*%v))"
+"contiene" "(%a=*%v*))"
+END
+
+Anything
+""
+"Search For:"
+""
+"dsgw-anything"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"nombre común" cn 111111 "" ""
+"descripción" description 111111 "" ""
+END
+"es" "(%a=%v)"
+"no es" "(!(%a=%v))"
+"suena como" "(%a~=%v)"
+"comienza por" "(%a=%v*)"
+"termina en" "(%a=*%v)"
+"contiene" "(%a=*%v*)"
+END
+
+Auth
+internal
+"Authenticate As:"
+"(&(objectClass=person)"
+"dsgw-people"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"nombre común" cn 111111 "" ""
+"apellido" sn 111111 "" ""
+"número de teléfono" "telephoneNumber" 111011 "" ""
+"dirección electrónica" "mail" 111111 "" ""
+"identificación de usuario" "uid" 111111 "" ""
+"cargo" title 111111 "" ""
+END
+"es" "(%a=%v))"
+"no es" "(!(%a=%v)))"
+"suena como" "(%a~=%v))"
+"comienza por" "(%a=%v*))"
+"termina en" "(%a=*%v))"
+"contiene" "(%a=*%v*))"
+END
+
diff --git a/ldap/clients/dsgw/config/es/edit-passwd.html b/ldap/clients/dsgw/config/es/edit-passwd.html
new file mode 100644
index 00000000..83a53661
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/edit-passwd.html
@@ -0,0 +1,78 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML><HEAD>
+<!-- change a directory entry's password -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>Cambiar la contrase&ntilde;a:
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE>
+
+</HEAD>
+
+<!-- BODY -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<H2><CENTER>Cambiar la contrase&ntilde;a de
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</H2></CENTER>
+
+<HR>
+
+<P>
+<TABLE>
+
+<!-- IF "BoundAsThisEntry" -->
+<TR>
+<TD ALIGN="right" NOWRAP>
+Escriba la contrase&ntilde;a antigua:
+</TD><TD>
+<!-- DS_OLDPASSWORD -->
+</TD></TR>
+<!-- ELIF "!Bound" -->
+<TR>
+<TD ALIGN="right" NOWRAP>
+Escriba la contrase&ntilde;a antigua:
+</TD><TD>
+<!-- DS_OLDPASSWORD -->
+</TD></TR>
+<!-- ENDIF //BoundAsThisEntry -->
+
+<TR>
+<TD ALIGN="right" NOWRAP>
+Escriba la nueva:
+</TD><TD>
+<!-- DS_NEWPASSWORD -->
+</TD></TR>
+
+<TR>
+<TD ALIGN="right" NOWRAP>
+Vuelva a escribir la nueva para confirmarla:
+</TD><TD>
+<!-- DS_CONFIRM_NEWPASSWORD -->
+</TD></TR>
+</TABLE>
+
+<P>
+
+<TABLE BORDER=2 WIDTH="100%">
+<TR>
+<TD ALIGN="center" WIDTH="50%">
+<!-- IF "BoundAsThisEntry" -->
+<!-- DS_SAVEBUTTON "label=Cambiar contrase&ntilde;a" -->
+<!-- ELSE -->
+<!-- DS_SAVEBUTTON "label=Definir contrase&ntilde;a" -->
+<!-- ENDIF -->
+<TD ALIGN="center" WIDTH="50%">
+<!-- DS_HELPBUTTON "topic=MODIFYPASSWD" -->
+</TABLE>
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/es/list-Anything.html b/ldap/clients/dsgw/config/es/list-Anything.html
new file mode 100644
index 00000000..40f9e784
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/list-Anything.html
@@ -0,0 +1,42 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Buscar todo" -->
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT></CENTER>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR>
+<TH NOWRAP>Nombre <TH NOWRAP>N&uacute;mero de tel&eacute;fono
+<TH NOWRAP>Direcci&oacute;n electr&oacute;nica <TH NOWRAP>Descripci&oacute;n
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=description" -->
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<CENTER><FONT SIZE=+1>
+Pruebe con otra b&uacute;squeda.
+</FONT></CENTER>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/es/list-Auth.html b/ldap/clients/dsgw/config/es/list-Auth.html
new file mode 100644
index 00000000..668b5d75
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/list-Auth.html
@@ -0,0 +1,73 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Autenticar..." -->
+
+<!--
+ The "authForm" form and the authSubmit() JavaScript function are
+ used to avoid the need for a separate form for each entry listed.
+ Each entry is tied to this single form through the magic of an
+ anchor that contains href=javascript:authSubmit().
+-->
+
+<FORM NAME="authForm" METHOD=POST ACTION="auth">
+<INPUT TYPE="hidden" NAME="escapedbinddn">
+<INPUT TYPE="hidden" NAME="authdesturl"
+<!-- DS_POSTEDVALUE "name=authdesturl" "within=VALUE=%22--value--%22" -->
+>
+<!-- PCONTEXT -->
+</FORM>
+
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+function authSubmit(encodeddn)
+{
+ document.authForm.escapedbinddn.value = encodeddn;
+ document.authForm.submit();
+}
+// End hiding -->
+</SCRIPT>
+
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC "VERBOSE" -->
+<P>
+<!-- IF "FoundEntries" -->
+Haga clic en el nombre de la entrada que desee usar para la autenticaci&oacute;n.
+</FONT>
+<P>
+
+<TABLE BORDER=1 CELLPADDING=4>
+<TR>
+<TH NOWRAP>Autenticar como <TH NOWRAP>Cargo
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "href=javascript:authSubmit('--value--'); onMouseOver=%22window.status='Click to authenticate'; return true;%22" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=title" -->
+
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+<!-- ELSE "FoundEntries" -->
+Retroceda y vuelva a intentarlo.
+<!-- ENDIF "FoundEntries" -->
+</CENTER>
+
+<FORM>
+<TABLE BORDER=2 WIDTH=100%%>
+<TR>
+<TD ALIGN=center width=50%%>
+<INPUT TYPE="button" VALUE="Retroceder" onClick="history.back();">
+<TD ALIGN=center WIDTH=50%%>
+<!-- DS_HELPBUTTON "topic=AUTHMULTMATCH" -->
+</TABLE>
+</FORM>
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/es/list-Groups.html b/ldap/clients/dsgw/config/es/list-Groups.html
new file mode 100644
index 00000000..e4ffb1ec
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/list-Groups.html
@@ -0,0 +1,38 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "B&uacute;squeda de grupos" -->
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT></CENTER>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR>
+<TH NOWRAP>Nombre del grupo
+<TH NOWRAP>Descripci&oacute;n
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=description" -->
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<CENTER><FONT SIZE=+1>
+Pruebe con otra b&uacute;squeda.
+</FONT></CENTER>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/es/list-NT-Groups.html b/ldap/clients/dsgw/config/es/list-NT-Groups.html
new file mode 100644
index 00000000..0258b550
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/list-NT-Groups.html
@@ -0,0 +1,44 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "B&uacute;squeda de grupos NT" -->
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT></CENTER>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR>
+<TH NOWRAP>Nombre de grupo LDAP
+<TH NOWRAP>Nombre de dominio NT
+<TH NOWRAP>Nombre de grupo NT
+<TH NOWRAP>Descripci&oacute;n
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=ntgroupdomainid" "syntax=ntdomain" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=ntgroupdomainid" "syntax=ntgroupname" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=description" -->
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<CENTER><FONT SIZE=+1>
+Pruebe con otra b&uacute;squeda.
+</FONT></CENTER>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/es/list-NT-People.html b/ldap/clients/dsgw/config/es/list-NT-People.html
new file mode 100644
index 00000000..5897279a
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/list-NT-People.html
@@ -0,0 +1,48 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "B&uacute;squeda de personas NT" -->
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT></CENTER>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR>
+<TH NOWRAP>Nombre<TH NOWRAP>Dominio NT<TH NOWRAP>Nombre de usuario<TH NOWRAP>N&uacute;mero de tel&eacute;fono
+</TR>
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+
+<TR>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "label=" -->
+ onMouseOver="window.status='Haga clic aqu&iacute; para ver esta entrada en detalle'; return true">
+<!-- DS_ATTRIBUTE "attr=cn" "numfields=0" "defaultvalue=name" "options=readonly" -->
+</A>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=ntuserdomainid" "syntax=ntdomain" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=ntuserdomainid" "syntax=ntuserid" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" -->
+</TR>
+
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<CENTER><FONT SIZE=+1>
+Pruebe con otra b&uacute;squeda.
+</FONT></CENTER>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/es/list-Org-Units.html b/ldap/clients/dsgw/config/es/list-Org-Units.html
new file mode 100644
index 00000000..26cbccdb
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/list-Org-Units.html
@@ -0,0 +1,38 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Search for Organizational Units" -->
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT></CENTER>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR><TH>Departamento <TH>Descripci&oacute;n <TH>N&uacute;mero de tel&eacute;fono
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->
+<TD>
+<!-- DS_ATTRIBUTE "attr=description" -->
+<TD>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" -->
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<CENTER><FONT SIZE=+1>
+Pruebe con otra b&uacute;squeda.
+</FONT></CENTER>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/es/list-Organizations.html b/ldap/clients/dsgw/config/es/list-Organizations.html
new file mode 100644
index 00000000..f06f9285
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/list-Organizations.html
@@ -0,0 +1,38 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "B&uacute;squeda de organizaciones" -->
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT></CENTER>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR><TH>Empresa <TH>Descripci&oacute;n <TH>N&uacute;mero de tel&eacute;fono
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->
+<TD>
+<!-- DS_ATTRIBUTE "attr=description" -->
+<TD>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" -->
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<CENTER><FONT SIZE=+1>
+Pruebe con otra b&uacute;squeda.
+</FONT></CENTER>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/es/list-People.html b/ldap/clients/dsgw/config/es/list-People.html
new file mode 100644
index 00000000..43512b6f
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/list-People.html
@@ -0,0 +1,48 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "B&uacute;squeda de personas" -->
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT></CENTER>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR>
+<TH NOWRAP>Nombre<TH NOWRAP>N&uacute;mero de tel&eacute;fono<TH NOWRAP>Direcci&oacute;n electr&oacute;nica<TH NOWRAP>Cargo
+</TR>
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+
+<TR>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "label=" -->
+ onMouseOver="window.status='Haga clic aqu&iacute; para ver esta entrada en detalle'; return true">
+<!-- DS_ATTRIBUTE "attr=cn" "numfields=0" "defaultvalue=name" "options=readonly" -->
+</A>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=title" -->
+</TR>
+
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<CENTER><FONT SIZE=+1>
+Pruebe con otra b&uacute;squeda.
+</FONT></CENTER>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/es/list-fa-Groups.html b/ldap/clients/dsgw/config/es/list-fa-Groups.html
new file mode 100644
index 00000000..4e0b6bc7
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/list-fa-Groups.html
@@ -0,0 +1,22 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Buscar personas" -->
+<!-- IF "FoundEntries" -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+<FORM>
+<!-- DS_ENTRYBEGIN -->
+
+<!-- DS_ENTRYEND -->
+<!-- DS_END_ENTRYFORM -->
+</FORM>
+
+<!-- ELSE -->
+<!-- DS_ALERT_NOENTRIES -->
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/es/list-fa-People.html b/ldap/clients/dsgw/config/es/list-fa-People.html
new file mode 100644
index 00000000..bbc2e00a
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/list-fa-People.html
@@ -0,0 +1,22 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Search for People" -->
+<!-- IF "FoundEntries" -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+<FORM>
+<!-- DS_ENTRYBEGIN -->
+
+<!-- DS_ENTRYEND -->
+<!-- DS_END_ENTRYFORM -->
+</FORM>
+
+<!-- ELSE -->
+<!-- DS_ALERT_NOENTRIES -->
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/es/list-urlsearch.html b/ldap/clients/dsgw/config/es/list-urlsearch.html
new file mode 100644
index 00000000..f8503f73
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/list-urlsearch.html
@@ -0,0 +1,38 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "B&uacute;squeda basada en URL" -->
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT></CENTER>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR><TH>Nombre <TH>N&uacute;mero de tel&eacute;fono <TH>Direcci&oacute;n electr&oacute;nica
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->
+<TD>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" -->
+<TD>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" -->
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<CENTER><FONT SIZE=+1>
+Pruebe con otra b&uacute;squeda.
+</FONT></CENTER>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/es/newentry.html b/ldap/clients/dsgw/config/es/newentry.html
new file mode 100644
index 00000000..948da868
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/newentry.html
@@ -0,0 +1,26 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--newentry.html-->
+<TITLE>Pasarela de Netscape Directory Server: Nueva entrada</TITLE>
+<!-- DS_NEWENTRY_SCRIPT -->
+</HEAD>
+<FRAMESET ROWS=75,70,* BORDER=0 onLoad="init()">
+ <FRAME SRC="lang?<!-- GCONTEXT -->&file=newentrytitle.html" NORESIZE SCROLLING="NO">
+ <FRAME SRC="newentry?<!-- GCONTEXT -->&file=type"
+ NAME="newentryTypeFrame" SCROLLING="NO">
+ <FRAME SRC="newentry?<!-- GCONTEXT -->&file=name"
+ NAME="newentryNameFrame">
+</FRAMESET>
+
+<NOFRAMES>
+<BODY>
+Tiene que emplear un programa de acceso que admita marcos para poder ver este documento.
+</BODY>
+</NOFRAMES>
+</HTML>
diff --git a/ldap/clients/dsgw/config/es/newentryName.html b/ldap/clients/dsgw/config/es/newentryName.html
new file mode 100644
index 00000000..2bb3d545
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/newentryName.html
@@ -0,0 +1,48 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--newentryName.html-->
+</HEAD>
+<!-- DS_NEWENTRY_NAME_BODY -->
+<p>
+<!-- DS_NEWENTRY_NAME_FORM -->
+<font SIZE="+2">Paso 2.</font>
+D&eacute; un nombre al nuevo
+<!-- EVALUATE "entType.fullname" -->
+.
+<p><nobr><font SIZE="+1">
+<!-- EVALUATE "entType.rdnattr" -->
+=</font>
+<input TYPE="text" NAME="entryname" SIZE="40">
+</nobr>
+<p>
+<font SIZE="+2">Paso 3.</font>
+
+<!-- DS_NEWENTRY_LOCATION_BEGIN -->
+Elija la direcci&oacute;n de directorio de este
+<!-- EVALUATE "entType.fullname" -->
+ o elija Otros e introduzca el nombre un&iacute;voco completo al que debe a&ntilde;adirse esta entrada.
+<p>
+<!-- DS_NEWENTRY_LOCATION_SELECT -->
+<OPTION VALUE="">Otros</OPTION>
+</SELECT>
+<input TYPE="text" NAME="dnsuffix" SIZE="70" onFocus="parent.dnsuffixFocus(this.form)">
+<p>
+<font SIZE="+2">Paso 4.</font>
+<!-- DS_NEWENTRY_LOCATION_END -->
+
+Haga clic en Continuar para abrir el cuadro de la entrada. Modifique la informaci&oacute;n contenida o introduzca nuevos datos y guarde la entrada al terminar.
+<p>
+<center><table BORDER="2" WIDTH="75%">
+<tr><td ALIGN="center" WIDTH="50%">
+<input TYPE="submit" VALUE="Continuar">
+<td ALIGN="center" WIDTH="50%">
+
+<!-- DS_HELP_BUTTON "ADDING" -->
+</table></center></form>
+</body></HTML>
diff --git a/ldap/clients/dsgw/config/es/newentryType.html b/ldap/clients/dsgw/config/es/newentryType.html
new file mode 100644
index 00000000..041c710e
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/newentryType.html
@@ -0,0 +1,14 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!--newentryType.html-->
+<!-- DS_NEWENTRY_TYPE_BODY -->
+<!-- DS_NEWENTRY_TYPE_FORM -->
+<font SIZE="+2">Paso 1.</font>
+Elija el tipo de entrada que desee crear.
+<!-- DS_NEWENTRY_TYPE_SELECT -->
+</form></body></HTML>
diff --git a/ldap/clients/dsgw/config/es/ns-license-schema.conf b/ldap/clients/dsgw/config/es/ns-license-schema.conf
new file mode 100644
index 00000000..bbe5d493
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/ns-license-schema.conf
@@ -0,0 +1,17 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+attribute nsLicensedFor cis
+attribute nsLicenseStartTime cis
+attribute nsLicenseEndTime cis
+
+objectclass nsLicenseUser
+ requires
+ objectClass
+ allows
+ nsLicensedFor
+ nsLicenseStartTime
+ nsLicenseEndTime
diff --git a/ldap/clients/dsgw/config/es/search.html b/ldap/clients/dsgw/config/es/search.html
new file mode 100644
index 00000000..de75b477
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/search.html
@@ -0,0 +1,18 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- search.html -->
+<TITLE>Pasarela de Netscape Directory Server: Standard Search</TITLE>
+<!-- DS_SEARCH_SCRIPT -->
+</HEAD>
+<FRAMESET ROWS=75,100,* BORDER=0 onLoad="init()">
+ <FRAME SRC="lang?<!-- GCONTEXT -->&file=searchtitle.html" SCROLLING="NO">
+ <FRAME SRC="search?<!-- GCONTEXT -->&file=string" NAME=searchFrame NORESIZE SCROLLING="NO">
+ <FRAME SRC="lang?<!-- GCONTEXT -->&file=greeting.html" NAME=outputFrame>
+</FRAMESET>
+</HTML>
diff --git a/ldap/clients/dsgw/config/es/searchString.html b/ldap/clients/dsgw/config/es/searchString.html
new file mode 100644
index 00000000..6320c0c6
--- /dev/null
+++ b/ldap/clients/dsgw/config/es/searchString.html
@@ -0,0 +1,30 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- searchString.html -->
+</HEAD>
+<!-- DS_SEARCH_BODY -->
+<!-- DS_SEARCH_FORM "target=outputFrame" -->
+<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH=100%>
+<TR><TH ALIGN=RIGHT>Buscar:</TH><TD>
+<!-- DS_SEARCH_TYPE -->
+</TD>
+<TH>en:</TH><TD>
+<!-- DS_SEARCH_BASE -->
+</TD></TR>
+<TR><TH ALIGN=RIGHT>Buscar esto: </TH>
+<TD COLSPAN=3>
+<INPUT NAME="searchstring" SIZE=30>
+<INPUT TYPE="SUBMIT" VALUE="Buscar">&nbsp;&nbsp;
+<!-- DS_HELP_BUTTON "SMARTSEARCH" -->
+</TD></TR>
+</TABLE>
+<INPUT TYPE="hidden" NAME="ldapsizelimit" VALUE="1000">
+<INPUT TYPE="hidden" NAME="ldaptimelimit" VALUE="180">
+<!-- PCONTEXT -->
+</FORM></BODY></HTML>
diff --git a/ldap/clients/dsgw/config/fr/authPassword.html b/ldap/clients/dsgw/config/fr/authPassword.html
new file mode 100644
index 00000000..cb42da31
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/authPassword.html
@@ -0,0 +1,29 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--authPassword.html-->
+<TITLE>Authentification...</TITLE>
+<!-- DS_AUTH_PASSWORD_SCRIPT -->
+</HEAD>
+
+<!-- DS_AUTH_PASSWORD_BODY -->
+<!-- DS_AUTH_PASSWORD_INFO -->
+<!-- DS_AUTH_PASSWORD_FORM -->
+<P>
+Mot de passe pour <b>
+<!-- DS_AUTH_PASSWORD_NAME -->
+</b>: <INPUT NAME="password" TYPE="password" SIZE=16>
+<P>
+<CENTER>
+<TABLE BORDER=2 WIDTH=100%>
+<TR>
+<!-- DS_AUTH_PASSWORD_BUTTONS -->
+</TABLE>
+</FORM>
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/config/fr/authSearch.html b/ldap/clients/dsgw/config/fr/authSearch.html
new file mode 100644
index 00000000..123e13ba
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/authSearch.html
@@ -0,0 +1,34 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--authSearch.html-->
+<TITLE>Authentification...</TITLE>
+<!-- DS_AUTH_SEARCH_SCRIPT -->
+</HEAD>
+<!-- DS_AUTH_SEARCH_BODY -->
+<!-- DS_AUTH_SEARCH_INFO -->
+<!-- DS_AUTH_SEARCH_FORM -->
+Vous devez d'abord vous identifier avant de pouvoir authentifier votre
+acc&egrave;s au syst&egrave;me. <br>Veuillez entrer votre nom :
+<!-- DS_AUTH_SEARCH_NAME -->
+<P>
+<CENTER>
+<TABLE BORDER=1 WIDTH=100%%>
+<TR>
+<!-- DS_AUTH_SEARCH_BUTTONS -->
+</TABLE>
+</FORM>
+<P>
+<!-- DS_AUTH_AS_ROOT_FORM -->
+<INPUT TYPE="submit" VALUE="Authentifier en tant que gestionnaire d'annuaires">&nbsp;(seuls les administrateurs d'annuaires y ont acc&egrave;s)
+<INPUT TYPE="hidden" NAME="ldapsizelimit" VALUE="1000">
+<INPUT TYPE="hidden" NAME="ldaptimelimit" VALUE="180">
+<!-- PCONTEXT -->
+</FORM>
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/config/fr/csearch.html b/ldap/clients/dsgw/config/fr/csearch.html
new file mode 100644
index 00000000..04851ccf
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/csearch.html
@@ -0,0 +1,23 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--csearch.html-->
+<TITLE>Netscape Directory Server Gateway : Advanced Search </TITLE>
+<!-- DS_CSEARCH_SCRIPT -->
+</HEAD>
+<FRAMESET ROWS=75,70,70,* BORDER=0 onLoad="init()">
+ <FRAME SRC="lang?<!-- GCONTEXT -->&file=csearchtitle.html" SCROLLING="NO">
+ <FRAMESET COLS="35%,42%,*" BORDER=0>
+ <FRAME SRC="csearch?<!-- GCONTEXT -->&file=type" NAME="searchTypeFrame" NORESIZE SCROLLING="NO">
+ <FRAME SRC="csearch?<!-- GCONTEXT -->&file=attr" NAME="searchAttrFrame" NORESIZE SCROLLING="NO">
+ <FRAME SRC="csearch?<!-- GCONTEXT -->&file=match" NAME="searchMatchFrame" NORESIZE SCROLLING="NO">
+ </FRAMESET>
+ <FRAME SRC="csearch?<!-- GCONTEXT -->&file=string" NAME="searchStringFrame" NORESIZE SCROLLING="NO">
+ <FRAME SRC="lang?<!-- GCONTEXT -->&file=emptyFrame.html" NAME="outputFrame">
+</FRAMESET>
+</HTML>
diff --git a/ldap/clients/dsgw/config/fr/csearchAttr.html b/ldap/clients/dsgw/config/fr/csearchAttr.html
new file mode 100644
index 00000000..592aa92d
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/csearchAttr.html
@@ -0,0 +1,17 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--csearchAttr.html-->
+</HEAD>
+<!-- DS_CSEARCH_ATTR_BODY -->
+<!-- DS_CSEARCH_ATTR_FORM -->
+<table>
+<tr VALIGN=BASELINE><td ALIGN=RIGHT>où :</td><td>
+<!-- DS_CSEARCH_ATTR_SELECT -->
+</td></tr>
+</table></form></body></HTML>
diff --git a/ldap/clients/dsgw/config/fr/csearchBase.html b/ldap/clients/dsgw/config/fr/csearchBase.html
new file mode 100644
index 00000000..5792cc72
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/csearchBase.html
@@ -0,0 +1,17 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--csearchBase.html-->
+</HEAD>
+<!-- DS_CSEARCH_BASE_BODY -->
+<table>
+<tr VALIGN=CENTER><th>dans:</th><td>
+<!-- EVALUATE "parent.UFNsearchBase" -->
+</td>
+</table>
+</body></HTML>
diff --git a/ldap/clients/dsgw/config/fr/csearchString.html b/ldap/clients/dsgw/config/fr/csearchString.html
new file mode 100644
index 00000000..9c708ce4
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/csearchString.html
@@ -0,0 +1,28 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--csearchString.html-->
+</HEAD>
+<!-- DS_CSEARCH_STRING_BODY -->
+<!-- DS_CSEARCH_STRING_FORM "target=outputFrame" -->
+<TABLE>
+<TR VALIGN=CENTER><TD>
+<INPUT NAME="searchstring" SIZE=20></TD>
+<TD><NOBR>
+<INPUT TYPE="SUBMIT" VALUE="Rechercher">
+<!-- DS_HELP_BUTTON "ASEARCH" -->
+</NOBR></TD>
+<td>&nbsp;</td><th>dans :</th><td>
+<!-- EVALUATE "parent.UFNsearchBase" -->
+</td>
+</TR></TABLE>
+<INPUT TYPE="hidden" NAME="ldapsizelimit" VALUE="1000">
+<INPUT TYPE="hidden" NAME="ldaptimelimit" VALUE="180">
+<!-- PCONTEXT -->
+</FORM>
+</BODY></HTML>
diff --git a/ldap/clients/dsgw/config/fr/csearchType.html b/ldap/clients/dsgw/config/fr/csearchType.html
new file mode 100644
index 00000000..d018015e
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/csearchType.html
@@ -0,0 +1,18 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--csearchType.html-->
+</HEAD>
+<!-- DS_CSEARCH_TYPE_BODY -->
+<!-- DS_CSEARCH_TYPE_FORM -->
+<table>
+<tr VALIGN=BASELINE><th ALIGN=RIGHT>Rechercher :</th><td>
+<!-- DS_CSEARCH_TYPE_SELECT -->
+</td></tr>
+</table>
+</form></body></HTML>
diff --git a/ldap/clients/dsgw/config/fr/display-country.html b/ldap/clients/dsgw/config/fr/display-country.html
new file mode 100644
index 00000000..e4782bbc
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/display-country.html
@@ -0,0 +1,54 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_OBJECTCLASS "value=country" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>Pays -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY -->
+
+<TABLE>
+<TR><TD NOWRAP>
+<IMG SRC="lang?<!-- GCONTEXT -->&file=country.gif" ALT="Country" HSPACE=5>
+</TD><TD><FONT SIZE="+2">
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</FONT></TD></TR></TABLE>
+
+<TABLE CELLSPACING="5">
+
+<TR><TD VALIGN="TOP" NOWRAP>Nom de pays :</TD><TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=co" "options=sort" -->
+</B></TD><TD WIDTH="20%"></TD>
+</B><TD VALIGN="TOP">Description:</TD><TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=description" -->
+</B></TD></TR>
+
+<TR><TD VALIGN="TOP">Voir &eacute;galement :</TD><TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">URL :</TD><TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=labeledURI" "syntax=url" -->
+</B></TD></TR>
+
+</TABLE>
+
+<HR>
+
+La derni&egrave;re modification de cette entr&eacute;e date du <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> par <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/fr/display-dnedit.html b/ldap/clients/dsgw/config/fr/display-dnedit.html
new file mode 100644
index 00000000..500b7b1f
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/display-dnedit.html
@@ -0,0 +1,76 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_ENTRYBEGIN -->
+<!-- DS_EMIT_BASE_HREF -->
+<TITLE>
+Edition
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY "onLoad='document.searchForm.searchstring.focus();'" -->
+
+<!-- DS_LAST_OP_INFO "prefix=<FONT SIZE=%22%2B1%22>" "suffixe=</FONT><HR>" -->
+
+<!-- DS_BEGIN_DNSEARCHFORM -->
+<INPUT TYPE=hidden NAME=mode VALUE="smart">
+<INPUT TYPE=hidden NAME=dnlist_js VALUE="true">
+<INPUT TYPE=hidden NAME=listifone VALUE="true">
+<INPUT TYPE=hidden NAME=listtemplate VALUE="">
+<INPUT TYPE=hidden NAME=faMode VALUE="add">
+<!-- PCONTEXT -->
+<INPUT TYPE=hidden NAME=ldapsizelimit VALUE="1000">
+<INPUT TYPE=hidden NAME=ldaptimelimit VALUE="180">
+
+<FONT SIZE="+2">
+Edition
+<!-- DS_DNDESC -->
+:
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT>
+
+<TABLE CELLSPACING=0 CELLPADDING=0><TR>
+
+<TD NOWRAP>
+Rechercher
+<SELECT NAME="type">
+<OPTION SELECTED VALUE="People">les utilisateurs
+<OPTION VALUE="Groups">les groupes
+</SELECT>
+</TD>
+
+<TD NOWRAP>
+correspondant &eacute;&nbsp;
+<INPUT NAME="searchstring" SIZE=15>
+</TD>
+
+<TD>
+<!-- DS_DNADDBUTTON "VALUE= Rechercher et Ajouter " -->
+<BR>
+<!-- DS_DNREMOVEBUTTON "VALUE= Rechercher et Supprimer " -->
+</TD>
+
+</TR>
+</TABLE>
+
+<P>
+<CENTER><TABLE BORDER="2" WIDTH="100%">
+<TR>
+<TD WIDTH="33%" ALIGN="center">
+<INPUT TYPE=BUTTON VALUE=" Enregistrer les modifications " onClick="parent.saveChanges();">
+<TD WIDTH="34%" ALIGN="center">
+<INPUT TYPE=BUTTON VALUE=" Annuler " onClick="parent.cancel();">
+<TD WIDTH=33% ALIGN=center>
+<!-- DS_HELPBUTTON "topic=EDIT_GROUPMEM" -->
+</TD></TR></TABLE></CENTER>
+
+<INPUT TYPE=hidden NAME=completion_javascript VALUE='parent.updateList(parent.controlFrame.document.searchForm.faMode.value, parent.dnlist, parent.stagingFrame.dnlist, parent.outputFrame);parent.controlFrame.document.searchForm.faMode.value="add";'>
+<!-- DS_END_DNSEARCHFORM -->
+
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/fr/display-dneditpeople.html b/ldap/clients/dsgw/config/fr/display-dneditpeople.html
new file mode 100644
index 00000000..e57ab922
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/display-dneditpeople.html
@@ -0,0 +1,77 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_ENTRYBEGIN -->
+<!-- DS_EMIT_BASE_HREF -->
+<TITLE>
+Modification
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY "onLoad='document.searchForm.searchstring.focus();'" -->
+
+<!-- DS_LAST_OP_INFO "prefix=<FONT SIZE=%22%2B1%22>" "suffixe=</FONT><HR>" -->
+
+<!-- DS_BEGIN_DNSEARCHFORM -->
+<INPUT TYPE=hidden NAME=mode VALUE="smart">
+<INPUT TYPE=hidden NAME=dnlist_js VALUE="true">
+<INPUT TYPE=hidden NAME=listifone VALUE="true">
+<INPUT TYPE=hidden NAME=listtemplate VALUE="">
+<INPUT TYPE=hidden NAME=faMode VALUE="add">
+<INPUT TYPE=hidden NAME=ldapsizelimit VALUE="1000">
+<!-- PCONTEXT -->
+<INPUT TYPE=hidden NAME=ldaptimelimit VALUE="180">
+
+<FONT SIZE="+2">
+Modification
+<!-- DS_DNDESC -->
+:
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT>
+
+<TABLE CELLSPACING=0 CELLPADDING=0><TR>
+
+<TD NOWRAP>
+Rechercher
+<SELECT NAME="type">
+<OPTION SELECTED VALUE="People">l'utilisateur
+</SELECT>
+</TD>
+
+<TD NOWRAP>
+correspondant &eacute;&nbsp;
+<INPUT NAME="searchstring" SIZE=15>
+</TD>
+
+
+<TD>
+<!-- DS_DNADDBUTTON "VALUE= Rechercher et Ajouter ">
+<BR>
+<!-- DS_DNREMOVEBUTTON "VALUE= Rechercher et Supprimer ">
+</TD>
+
+</TR>
+</TABLE>
+
+<P>
+<CENTER><TABLE BORDER="2" WIDTH="100%">
+<TR>
+<TD WIDTH="33%" ALIGN="center">
+<INPUT TYPE=BUTTON VALUE=" Enregistrer les modifications " onClick="parent.saveChanges();">
+<TD WIDTH="34%" ALIGN="center">
+<INPUT TYPE=BUTTON VALUE=" Annuler " onClick="parent.cancel();">
+<TD WIDTH=33% ALIGN=center>
+<!-- DS_HELPBUTTON "topic=EDIT_PERSON_REF" -->
+</TD></TR></TABLE></CENTER>
+
+<INPUT TYPE=hidden NAME=completion_javascript VALUE='parent.updateList(parent.controlFrame.document.searchForm.faMode.value, parent.dnlist, parent.stagingFrame.dnlist, parent.outputFrame);parent.controlFrame.document.searchForm.faMode.value="add";'>
+<!-- DS_END_DNSEARCHFORM -->
+
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
+
diff --git a/ldap/clients/dsgw/config/fr/display-group.html b/ldap/clients/dsgw/config/fr/display-group.html
new file mode 100644
index 00000000..80a936c6
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/display-group.html
@@ -0,0 +1,150 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_OBJECTCLASS "value=groupOfNames" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+Nouvelle
+<!-- ENDIF // Adding -->
+Entr&eacute;e de groupe
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE>
+<TR>
+<TD>
+<IMG SRC="lang?<!-- GCONTEXT -->&file=group.gif" ALT="Groupe" HSPACE=5 >
+<FONT SIZE="+2">
+<!-- IF "Adding" -->
+Nouveau groupe -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT>
+</TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- DS_EDITBUTTON "label=Modifier le groupe" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Enregistrer le nouveau groupe" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Annuler" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_GROUP" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_GROUP" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Renommer le groupe" "prompt=Entrer un nouveau nom pour ce groupe :" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Supprimer le groupe" "prompt=Supprimer ce groupe ?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="groupOfNames">
+<!-- ENDIF // Adding -->
+
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<HR>
+<!-- IF "!Displaying" -->
+<B>* Indique une zone d'entr&eacute;e obligatoire</B><BR>
+<!-- ENDIF -->
+
+
+<TABLE CELLSPACING="5">
+<TR>
+<TD NOWRAP>Nom :
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=cn" "cols=>40" -->
+</B></TD><TD WIDTH="20%"></TD>
+</TR>
+
+<TR>
+<TD NOWRAP>Description :</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>40" "defaultvalue=none" -->
+</B></TD></TR>
+
+<TR>
+<TD NOWRAP VALIGN="TOP">Propri&eacute;taire :<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Modifier..." "template=dnedit" "attr=owner" "desc=Propri&eacute;taire " -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=owner" "syntax=dn" "options=sort,readonly" -->
+</B></TD>
+
+<TR>
+<TD NOWRAP VALIGN="TOP">Voir &eacute;galement :<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Modifier..." "template=dnedit" "attr=seeAlso" "desc=Voir &eacute;galement" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP COLSPAN="4">
+<!-- IF "!Adding" -->
+<B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "options=sort,readonly" -->
+</B>
+<!-- ELSE // !Adding -->
+<I>Vous devez enregistrer cette entr&eacute;e pour pouvoir modifier ces champs.</I>
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD NOWRAP VALIGN="top">Membres du groupe :<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Modifier..." "template=dnedit" "attr=uniquemember" "desc=Membres du groupe :" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=uniquemember" "syntax=dn" "options=sort,readonly" -->
+</B></TD></TR>
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+<HR>
+La derni&egrave;re modification de cette entr&eacute;e date du
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> par <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
+
+
diff --git a/ldap/clients/dsgw/config/fr/display-groupun.html b/ldap/clients/dsgw/config/fr/display-groupun.html
new file mode 100644
index 00000000..71451965
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/display-groupun.html
@@ -0,0 +1,150 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_OBJECTCLASS "value=groupOfUniqueNames" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+Nouvelle
+<!-- ENDIF // Adding -->
+Entr&eacute;e de groupe
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE>
+<TR>
+<TD>
+<IMG SRC="lang?<!-- GCONTEXT -->&file=group.gif" ALT="Groupe" HSPACE=5 >
+<FONT SIZE="+2">
+<!-- IF "Adding" -->
+Nouveau groupe -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT>
+</TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- DS_EDITBUTTON "label=Modifier le groupe" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Enregistrer le nouveau groupe" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Annuler" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_GROUP" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_GROUP" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Renommer le groupe" "prompt=Entrer un nouveau nom pour ce groupe :" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Supprimer le groupe" "prompt=Supprimer ce groupe ?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="groupOfUniqueNames">
+<!-- ENDIF // Adding -->
+
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- PCONTEXT -->
+<!-- DS_STD_COMPLETION_JS -->
+
+<HR>
+<!-- IF "!Displaying" -->
+<B>* Indique une zone d'entr&eacute;e obligatoire</B><BR>
+<!-- ENDIF -->
+
+
+<TABLE CELLSPACING="5">
+<TR>
+<TD NOWRAP>Nom :
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=cn" "cols=>40" -->
+</B></TD><TD WIDTH="20%"></TD>
+</TR>
+
+<TR>
+<TD NOWRAP>Description :</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>40" "defaultvalue=none" -->
+</B></TD></TR>
+
+<TR>
+<TD NOWRAP VALIGN="TOP">Propri&eacute;taire :<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Modifier..." "template=dnedit" "attr=owner" "desc=Propri&eacute;taire " -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=owner" "syntax=dn" "options=sort,readonly" -->
+</B></TD>
+
+<TR>
+<TD NOWRAP VALIGN="TOP">Voir &eacute;galement :<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Modifier..." "template=dnedit" "attr=seeAlso" "desc=Voir &eacute;galement" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP COLSPAN="4">
+<!-- IF "!Adding" -->
+<B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "options=sort,readonly" -->
+</B>
+<!-- ELSE // !Adding -->
+<I>Vous devez enregistrer cette entr&eacute;e pour pouvoir modifier ces champs.</I>
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD NOWRAP VALIGN="top">Membres du groupe :<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Modifier..." "template=dnedit" "attr=uniquemember" "desc=Membres du groupe :" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=uniquemember" "syntax=dn" "options=sort,readonly" -->
+</B></TD></TR>
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+<HR>
+La derni&egrave;re modification de cette entr&eacute;e date du
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> par <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/fr/display-mailgroup.html b/ldap/clients/dsgw/config/fr/display-mailgroup.html
new file mode 100644
index 00000000..a258bc68
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/display-mailgroup.html
@@ -0,0 +1,125 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_OBJECTCLASS "value=rfc822mailgroup" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+Nouvelle
+<!-- ENDIF // Adding -->
+entrȨe de groupe de courrier -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE>
+<TR>
+<TD>
+<IMG SRC="lang?<!-- GCONTEXT -->&file=group.gif" ALT="Groupe" HSPACE=5 >
+<FONT SIZE="+2">
+<!-- IF "Adding" -->
+Nouveau groupe de courrier
+<!-- ENDIF // Adding -->
+
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT>
+</TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- DS_EDITBUTTON "label=Edition du groupe" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Enregister le nouveau groupe" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Supprimer" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_MAILGROUP" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_MAILGROUP" -->
+<!-- ENDIF // Adding -->
+
+<!-- IF "Editing" -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Renommer le groupe" "prompt=Entrer un nouveau nom pour ce groupe :" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Supprimer le groupe" "prompt=Supprimer ce groupe ?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="rfc822mailgroup">
+<!-- ENDIF // Adding -->
+<!-- PCONTEXT -->
+
+<HR>
+
+<TABLE CELLSPACING="5">
+
+<TR><TD VALIGN="TOP">Nom :</TD><TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=cn" -->
+</B></TD><TD WIDTH="20%"></TD>
+<TD VALIGN="TOP">Description :</TD><TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=multilineDescription" "defaultvalue=none" -->
+</B></TD></TR>
+
+<TR><TD VALIGN="TOP">Propri&eacute;taire :</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=owner" "syntax=dn" "cols=>40" -->
+</B></TD></TR>
+
+<TR><TD VALIGN="TOP" NOWRAP>Voir &eacute;galement :</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "cols=>40" -->
+</B></TD></TR>
+
+<TR><TD NOWRAP COLSPAN="2">
+<!-- DS_ATTRIBUTE "attr=joinable" "syntax=bool" "type=radio" "true=Permettre Èá d'autres utilisateurs de se joindre" "false=Refuser Èá d'autres utilisateurs de se joindre" "defaultvalue=FALSE" -->
+</TD><TD></TD><TD NOWRAP COLSPAN="2">
+<!-- DS_ATTRIBUTE "attr=suppressNoEmailError" "syntax=bool" "type=radio" "true=Supprimer les erreurs 'Pas d'adresse &eacute;lectronique'" "false=Retour des erreurs 'Pas d'adresse &eacute;lectronique' Errors" "defaultvalue=FALSE" -->
+</TD></TR>
+
+<HR>
+
+<TR><TD VALIGN="TOP" NOWRAP>Membres du groupe :</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=member" "syntax=dn" "numfields=+4" "options=sort" -->
+</B></TD></TR>
+
+<TR><TD VALIGN="TOP" NOWRAP>Membres de courrier &eacute;lectronique :</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" "numfields=+4" "cols=>30" "options=tri" -->
+</B></TD></TR>
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+<HR>
+La derni&egrave;re modification de cette entr&eacute;e date du <B>
+<!-- DS_ATTRIBUTE "attr=lastModifiedTime" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> par <B>
+<!-- DS_ATTRIBUTE "attr=lastModifiedBy" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
+
diff --git a/ldap/clients/dsgw/config/fr/display-ntgroup.html b/ldap/clients/dsgw/config/fr/display-ntgroup.html
new file mode 100644
index 00000000..3e74b5aa
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/display-ntgroup.html
@@ -0,0 +1,218 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_OBJECTCLASS "value=ntGroup" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+Nouvelle
+<!-- ENDIF // Adding -->
+Entr&eacute;e du groupe NT -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE>
+<TR>
+<TD>
+<IMG SRC="lang?<!-- GCONTEXT -->&file=group.gif" ALT="Groupe" HSPACE=5 >
+<FONT SIZE="+2">
+<!-- IF "Adding" -->
+Nouveau groupe NT -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT>
+</TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- DS_EDITBUTTON "label=Modifier le groupe NT" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Enregistrer le nouveau groupe" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Annuler" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_NTGROUP" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_NTGROUP" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Renommer le groupe NT" "prompt=Entrer un nouveau nom pour ce groupe :" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Supprimer le groupe NT" "prompt=Supprimer ce groupe ?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="ntGroup">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="groupOfUniqueNames">
+<!-- ENDIF // Adding -->
+
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<HR>
+<!-- IF "!Displaying" -->
+<B>* Indique une zone d'entr&eacute;e obligatoire</B><BR>
+<!-- ENDIF -->
+
+
+<TABLE CELLSPACING="5">
+<TR>
+<TD NOWRAP>Nom :
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=cn" "cols=>40" -->
+</B></TD><TD WIDTH="20%"></TD>
+</TR>
+
+<TR>
+<TD NOWRAP>Nom du groupe NT :
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD NOWRAP><B>
+<!-- IF "!Adding" -->
+<!-- DS_ATTRIBUTE "attr=ntGroupDomainId" "syntax=ntgroupname" "cols=>16" "options=readonly" "defaultvalue=none" -->
+<!-- ELSE // Adding -->
+<!-- DS_ATTRIBUTE "attr=ntGroupDomainId" "syntax=ntgroupname" "cols=>16" "defaultvalue=none" -->
+<!-- ENDIF // Adding -->
+</B></TD></TR>
+
+<TR>
+<TD NOWRAP>Type de groupe NT :
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD NOWRAP><B>
+<!-- IF "!Adding" -->
+<!-- DS_ATTRIBUTE "attr=nTGroupType" "defaultvalue=Global" "options=readonly" "cols=>16" -->
+<!-- ELSE // Adding -->
+<!-- DS_ATTRIBUTE "attr=nTGroupType" "defaultvalue=Global" "cols=>16" -->
+<!-- ENDIF // Adding -->
+</B></TD></TR>
+
+<TR>
+<TD NOWRAP>Domaine du groupe NT :
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=ntGroupDomainId" "syntax=ntdomain" "cols=>16" "defaultvalue=none" -->
+</B></TD></TR>
+
+<TR>
+<TD NOWRAP>Description :</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>40" "defaultvalue=none" -->
+</B></TD></TR>
+
+<TR>
+<TD NOWRAP>Lieu :</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=l" "cols=>40" "defaultvalue=none" -->
+</B></TD></TR>
+
+<TR>
+<TD NOWRAP>Service de la soci&eacute;t&eacute; :</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=ou" "cols=>40" "defaultvalue=none" -->
+</B></TD></TR>
+
+<TR>
+<TD NOWRAP VALIGN="TOP">Propri&eacute;taire :<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Modifier..." "template=dnedit" "attr=owner" "desc=Propri&eacute;taire" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=owner" "syntax=dn" "options=sort,readonly" -->
+</B></TD>
+
+<TR>
+<TD NOWRAP VALIGN="TOP">Voir &eacute;galement :<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Modifier..." "template=dnedit" "attr=seeAlso" "desc=Voir &eacute;galement" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP COLSPAN="4">
+<!-- IF "!Adding" -->
+<B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "options=sort,readonly" -->
+</B>
+<!-- ELSE // !Adding -->
+<I>Vous devez enregistrer cette entr&eacute;e pour pouvoir modifier ces champs.</I>
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD NOWRAP VALIGN="top">Membres du groupe NT :<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Modifier..." "template=dnedit" "attr=uniquemember" "desc=Membres du groupe NT :" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=uniquemember" "syntax=dn" "options=sort,readonly" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>Supprimer le groupe NT si le groupe est supprim&eacute; :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "syntax=bool" "type=radio" "true=Oui" "false=Non" "defaultvalue=FALSE" "attr=nTGroupDeleteGroup" -->
+</B></TD><TD></TD>
+</B></TD></TR>
+
+<!-- IF "Adding" -->
+<TR>
+<TD VALIGN="TOP">Cr&eacute;er un nouveau groupe NT :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "syntax=bool" "type=radio" "true=Oui" "false=Non" "defaultvalue=TRUE" "attr=nTGroupCreateNewGroup" -->
+</B></TD><TD></TD></TR>
+
+<!-- ENDIF // Adding -->
+</TABLE>
+
+<!-- IF "!Adding" -->
+<HR>
+La derni&egrave;re modification de cette entr&eacute;e date du
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> par <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
+
+
diff --git a/ldap/clients/dsgw/config/fr/display-ntperson.html b/ldap/clients/dsgw/config/fr/display-ntperson.html
new file mode 100644
index 00000000..1e7bea60
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/display-ntperson.html
@@ -0,0 +1,508 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- NT User person directory entry -->
+<!-- DS_OBJECTCLASS "value=person,inetOrgPerson,nTUser" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+Nouvelle
+<!-- ENDIF // Adding -->
+Entr&eacute;e de personne NT-
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE>
+
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+function showVCard()
+{
+<!-- DS_ATTRIBUTE "attr=_vcard" "options=link" "mimetype=text/x-vcard" "prefix=var cardurl=" "suffix=";" -->
+
+ document.location.href = cardurl;
+}
+// End hiding -->
+</SCRIPT>
+
+</HEAD>
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE><TR><TD>
+<!-- DS_ATTRIBUTE "attr=jpegPhoto" "type=hidden" "options=typeonly" -->
+<!-- IF "AttributeHasValues" "jpegPhoto" -->
+<IMG SRC=
+<!-- DS_ATTRIBUTE "attr=jpegPhoto" "options=link" "mimetype=image/jpeg" -->
+BORDER=0></TD>
+<TD>
+<!-- ENDIF -->
+<!-- A HREF="javascript:showVCard()" -->
+<IMG SRC="lang?<!-- GCONTEXT -->&file=person.gif" ALT="Personne (cliquez pour afficher la carte)"
+ BORDER=0 HSPACE=5>
+
+</A>
+</TD>
+<!-- IF "DisplayOrgChart" -->
+<TD><FONT FACE="PrimaSans BT, Verdana, Sans-Serif" SIZE="-1">
+<A HREF=
+<!-- DS_ORGCHARTLINK -->
+ >
+<IMG SRC="lang?<!-- GCONTEXT -->&file=orgicon.gif" BORDER=0 ALT="Click to display organization chart" HSPACE=5></a>
+</FONT>
+</TD>
+<!-- ENDIF -->
+<TD><FONT SIZE="+2">
+<!-- IF "Adding" -->
+Nouvelle personne NT
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT></TD></TR></TABLE>
+
+<!-- DS_ATTRIBUTE "attr=userCertificate;binary" "type=hidden" "options=typeonly" -->
+<!-- IF "AttributeHasValues" "userCertificate;binary" -->
+<A HREF=
+<!-- DS_ATTRIBUTE "attr=userCertificate;binary" "options=link" "mimetype=application/x-x509-ca-cert" -->
+>Download Certificate</A>
+<!-- ENDIF -->
+
+<!-- DS_ATTRIBUTE "attr=audio" "type=hidden" "options=typeonly" -->
+<!-- IF "AttributeHasValues" "audio" -->
+&nbsp;&nbsp;
+<A HREF=
+<!-- DS_ATTRIBUTE "attr=audio" "options=link" "mimetype=audio/basic" -->
+>Play Audio Clip</A>
+<!-- ENDIF -->
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- INPUT TYPE="button" VALUE="Afficher la carteA" onClick="showVCard()" -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_EDITBUTTON "label=Edition de la personne NT" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Enregistrer la nouvelle personne NT" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Annuler" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_NTPERSON" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_NTPERSON" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_EDITASBUTTON "label=Modification du mot de passe d'annuaire" "template=passwd" -->
+</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Renommer la personne" "prompt=Entrer un nouveau nom pour cette personne :" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Supprimer la personne" "prompt=Supprimer cette personne ?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="person">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="organizationalPerson">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="inetOrgPerson">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="nTUser">
+<!-- ENDIF // Adding -->
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<HR>
+<!-- IF "!Displaying" -->
+<B>* Indique une zone d'entr&eacute;e obligatoire</B><BR>
+<!-- ENDIF -->
+
+<TABLE CELLSPACING="2" BORDER BGCOLOR=#f2f2f2 WIDTH=95%>
+<TR>
+<TD BGCOLOR=#006666 COLSPAN=4><FONT FACE=ARIAL,HELVETICA COLOR=WHITE>
+Contacts </TD>
+</TR>
+
+<TD VALIGN="top" NOWRAP>Pr&eacute;nom :</TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=givenName" "cols=>16" -->
+</B></TD>
+<TD VALIGN="top" NOWRAP ROWSPAN="2">Nom complet :
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="top" NOWRAP ROWSPAN="2"><B>
+<!-- DS_ATTRIBUTE "attr=cn" "numfields=+1" "cols=>23" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="top" NOWRAP>Nom de famille :
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=sn" "cols=>16" -->
+</B></TD></TR>
+
+<!-- IF "Adding" -->
+<TR>
+<TD>Mot de passe du Directory Server :</TD><TD>
+<!-- DS_NEWPASSWORD "cols=>16" -->
+</B></TD>
+<TD> Retaper le mot de passe pour confirmation</TD><TD>
+<!-- DS_CONFIRM_NEWPASSWORD "cols=>16" -->
+</TD></TR>
+<!-- ENDIF // Adding -->
+
+<TR>
+<TD VALIGN="TOP">T&eacute;l&eacute;phone :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>16" "numfields=+1" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>Adresse &eacute;lectronique :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" "cols=>23" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">T&eacute;l&eacute;copie :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=facsimiletelephonenumber" "syntax=tel" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>Id utilisateur :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=uid" "cols=>16" "options=unique" -->
+</B></TD></TR>
+<INPUT TYPE="hidden" NAME="desc_uid" VALUE="user id">
+<!-- PCONTEXT -->
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>T&eacute;l&eacute;avertisseur :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=pager" "syntax=tel" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>T&eacute;l&eacute;phone mobile :<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=mobile" "syntax=tel" "cols=>16" -->
+</B></TD></TR>
+
+</TABLE>
+
+
+<TABLE CELLSPACING="2" BORDER BGCOLOR=#f2f2f2 WIDTH=95%>
+<TR>
+<TD BGCOLOR=#006666 COLSPAN=4><FONT FACE=ARIAL,HELVETICA COLOR=WHITE>
+Informations sur le compte Windows NT</TD>
+</TR>
+
+<TR>
+<TD VALIGN="TOP">Id utilisateur NT :
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- IF "!Adding" -->
+<!-- DS_ATTRIBUTE "attr=nTUserDomainId" "syntax=ntuserid" "cols=>16" "options=readonly" -->
+<!-- ENDIF // Adding -->
+<!-- IF "Adding" -->
+<!-- DS_ATTRIBUTE "attr=nTUserDomainId" "syntax=ntuserid" "cols=>16" -->
+<!-- ENDIF // Adding -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>Nom de domaine NT :
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD><TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserDomainId" "syntax=ntdomain" "cols=>16" -->
+</B></TD></TR>
+<INPUT TYPE="hidden" NAME="desc_uid" VALUE="user id">
+<!-- PCONTEXT -->
+
+<TR>
+<TD VALIGN="TOP" COLSPAN=2 NOWRAP>Supprimer le compte NT si la personne est supprim&eacute;e</TD>
+<TD VALIGN="TOP" COLSPAN=2 NOWRAP><B>
+<!-- DS_ATTRIBUTE "syntax=bool" "type=radio" "true=Oui" "false=Non" "defaultvalue=FALSE" "attr=nTUserDeleteAccount" -->
+</B></TD></TR>
+
+<!-- IF "Adding" -->
+<TR>
+<TD VALIGN="TOP" COLSPAN=2>Cr&eacute;er un nouveau compte NT</TD>
+<TD VALIGN="TOP" COLSPAN=2 NOWRAP><B>
+<!-- DS_ATTRIBUTE "syntax=bool" "type=radio" "true=Oui" "false=Non" "defaultvalue=TRUE" "attr=nTUserCreateNewAccount" -->
+</B></TD></TR>
+
+<!-- ENDIF // Adding -->
+
+<!-- IF "Displaying" -->
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>Commentaire utilisateur NT</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserUsrComment" "defaultvalue=None" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>Id utilisateur NT unique :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserUniqueId" "syntax=binvalue" "cols=>10" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>Mot de passe NT p&eacute;rim&eacute; :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "syntax=bool" "type=radio" "true=Oui" "false=Non" "defaultvalue=FALSE" "attr=nTUserPasswordExpired" -->
+</B></TD>
+<TD VALIGN="TOP">Compte de mots de passe NT incorrect :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserBadPwCount" "syntax=binvalue" "options=decimal" "cols=>4" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Derni&egrave;re date de connexion au syst&egrave;me NT :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserLastLogon" "syntax=time" "cols=>10" "defaultvalue=Never Logged On" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>Derni&egrave;re date de d&eacute;connexion du syst&egrave;me NT :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserLastLogoff" "syntax=time" "cols=>10" "defaultvalue=Never Logged On" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Date d'expiration du compte NT :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserAcctExpires" "syntax=time" "defaultvalue=Never Expires" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>Nombre de connexions NT :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserNumLogons" "syntax=binvalue" "options=decimal" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Serveur de connexions NT :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserLogonServer" "defaultvalue=Any Server" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>Postes de travail NT :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserWorkstations" "defaultvalue=No Restrictions" "cols=>16" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Page de codes NT :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserCodePage" "syntax=binvalue" "options=decimal" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>Code de pays NT :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserCountryCode" "syntax=binvalue" "options=decimal" "cols=>8" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Id de groupe principal NT :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserPrimaryGroupId" "syntax=binvalue" "options=decimal" "cols=>8" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>Profil NT :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserProfile" "defaultvalue=Default" "cols=>16" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>Annuaire personnel NT :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserHomeDir" "defaultvalue=None" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP">Lecteur d'annuaire personnel NT :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserHomeDirDrive" "defaultvalue=None" "cols=>20" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>Chemin script NT :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserScriptPath" "defaultvalue=None" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>Mise en m&eacute;moire maximale NT :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserMaxStorage" "syntax=binvalue" "options=decimal" "cols=>16" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Unit&eacute;s NT par semaine :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserUnitsPerWeek" "syntax=binvalue" "options=decimal" "cols=>6" -->
+</B></TD>
+<TD VALIGN="TOP">Privil&egrave;ges de l'utilisateur NT :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserPriv" "syntax=binvalue" "cols=>16" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Privil&egrave;ges de l'utilisateur NT :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserAuthFlags" "syntax=binvalue" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP">Diverses fonctions de compte de personne NT : Features:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserFlags" "syntax=binvalue" "cols=>16" -->
+</B></TD></TR>
+
+<!-- ENDIF // Displaying -->
+</TABLE>
+
+<TABLE CELLSPACING="2" BORDER BGCOLOR=#f2f2f2 WIDTH=95%>
+<TR>
+<TD BGCOLOR=#006666 COLSPAN=4><FONT FACE=ARIAL,HELVETICA COLOR=WHITE>
+Informations sur l'activit&eacute; et l'emplacement</TD>
+</TR>
+
+<TR>
+<TD VALIGN="TOP">Secteur d'activit&eacute; :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=businesscategory" -->
+</B></TD>
+<TD VALIGN="TOP">Titre :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=title" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Unit&eacute; organisationnelle :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=ou" -->
+</B></TD>
+<TD VALIGN="TOP">Gestionnaire :<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Edit..." "template=dneditpeople" "attr=manager" "desc=Manager" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<!-- IF "Adding" -->
+<TD VALIGN="TOP" ROWSPAN=2>
+<I>Vous devez enregistrer cette entr&eacute;e pour pouvoir modifier ces champs.</I>
+<!-- ELSE // !Adding -->
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=manager" "syntax=dn" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Num&eacute;ro de poste :</TD>
+<TD VALIGN="TOP" NOWRAP"><B>
+<!-- DS_ATTRIBUTE "attr=roomNumber" "cols=>8" -->
+</B></TD>
+</B><TD VALIGN="TOP">Admin.:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Edit..." "template=dneditpeople" "attr=secretary" "desc=Admin." -->
+<!-- ENDIF // !Adding -->
+</TD>
+<!-- IF "!Adding" -->
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=secretary" "syntax=dn" "options=readonly" -->
+</B></TD>
+<!-- ENDIF // !Adding -->
+</TR>
+
+<TR>
+<TD VALIGN="TOP">N&deg; de service :</TD>
+<TD VALIGN="TOP"><B>
+<!-- DS_ATTRIBUTE "attr=departmentnumber" "cols=>8" -->
+</B></TD>
+<TD VALIGN="TOP">N&deg; d'employ&eacute; :</TD>
+<TD VALIGN="TOP"><B>
+<!-- DS_ATTRIBUTE "attr=employeenumber" "cols=>6" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">N&deg; de permis de circulation :</TD>
+<TD VALIGN="TOP"><B>
+<!-- DS_ATTRIBUTE "attr=carlicense" "cols=>8" -->
+</B></TD>
+<!-- Note: need to include two cells that contain a non-breaking space
+character so table background colors, etc. are rendered correctly -->
+<TD>&nbsp;&nbsp;</TD>
+<TD>&nbsp;&nbsp;</TD>
+</TR>
+
+<TR>
+<TD VALIGN="TOP">Adresse postale :</TD>
+<TD VALIGN="TOP" COLSPAN="4" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=postalAddress" "syntax=mls" "type=TEXTAREA" "cols=>40" "rows=>4" -->
+</B></TD></TR>
+
+</TABLE>
+
+<TABLE CELLSPACING="2" BORDER BGCOLOR=#f2f2f2 WIDTH=95%>
+<TR>
+<TD BGCOLOR=#006666 COLSPAN=2><FONT FACE=ARIAL,HELVETICA COLOR=WHITE>
+Informations suppl&eacute;mentaires</TD>
+</TR>
+
+<TR>
+<TD VALIGN="TOP">Description:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>50" -->
+</B></TR>
+
+<TR>
+<TD VALIGN="TOP">Voir &eacute;galement :<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Edit..." "template=dnedit" "attr=seeAlso" "desc=See Also" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- IF "Adding" -->
+<I>Vous devez enregistrer cette entr&eacute;e pour pouvoir modifier ce champ.</I>
+<!-- ELSE // !Adding -->
+<B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP">URL:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=labeledURI" "syntax=url" "cols=>50" "options=sort" -->
+</B></TR>
+
+<!-- The following attribute should only be uncommented if you have
+ a need to allow editing of the x500UniqueIdentifier attribute.
+ Most installations will not need this functionality.
+<TR>
+<TD VALIGN="TOP">Unique ID:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=x500uniqueidentifier" "cols=>50" -->
+</B></TR>
+-->
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+La derni&egrave;re modification de cette entr&eacute;e date du <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> Dans <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
+
+
diff --git a/ldap/clients/dsgw/config/fr/display-org.html b/ldap/clients/dsgw/config/fr/display-org.html
new file mode 100644
index 00000000..8ec8a08d
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/display-org.html
@@ -0,0 +1,137 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_OBJECTCLASS "value=organization" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+Nouvelle
+<!-- ENDIF // Adding -->
+Organisation -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE>
+<TR>
+<TD>
+<IMG SRC="lang?<!-- GCONTEXT -->&file=organization.gif" ALT="Organization" HSPACE=5>
+<TD>
+<FONT SIZE="+2">
+<!-- IF "Adding" -->
+Nouvelle organisation -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</FONT>
+</TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- DS_EDITBUTTON "label=Edition de l'organisation" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Enregistrer la nouvelle Org." -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Annuler" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_ORG" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_ORG" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Renommer l'Org." "prompt=Entrer un nouveau nom pour cette organisation:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Supprimer l'Org." "prompt=Supprimer cette organisation ?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="organization">
+<!-- ENDIF // Adding -->
+
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<HR>
+<!-- IF "!Displaying" -->
+<B>* Indique une zone d'entr&eacute;e obligatoire </B><BR>
+<!-- ENDIF -->
+
+<TABLE>
+<TR>
+<TD VALIGN="TOP" NOWRAP>Nom de l'organisation :
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=o" "cols=>20" -->
+</B></TD><TD WIDTH="20%"></TD>
+<TD>Description:</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>30" -->
+</B></TR>
+
+<TR><TD>T&eacute;l&eacute;phone :</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>16" -->
+</B></TD><TD></TD>
+<TD NOWRAP>Cat&eacute;gorie commerciale :</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=businessCategory" "cols=>30" -->
+</B></TD></TR>
+
+<TR><TD>T&eacute;l&eacute;copie :<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=facsimiletelephonenumber" "syntax=tel" "cols=>16" -->
+</B></TD><TD></TD>
+<TD>Emplacement :</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=l" "cols=>30" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>Adresse postale :</TD>
+<TD VALIGN="TOP" COLSPAN="4" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=postalAddress" "syntax=mls" "type=TEXTAREA" "cols=>40" "rows=>4" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Voir &eacute;galement :</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "dncomponents=3" "cols=>50" -->
+</B></TR>
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+<HR>
+La derni&egrave;re modification de cette entr&eacute;e date du <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> par <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
+
diff --git a/ldap/clients/dsgw/config/fr/display-orgperson.html b/ldap/clients/dsgw/config/fr/display-orgperson.html
new file mode 100644
index 00000000..b5af87a7
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/display-orgperson.html
@@ -0,0 +1,346 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- inet. organizational person directory entry -->
+<!-- DS_OBJECTCLASS "value=person,inetOrgPerson" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+Nouvelle
+<!-- ENDIF // Adding -->
+Entr&eacute;e de personne
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE>
+
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+function showVCard()
+{
+<!-- DS_ATTRIBUTE "attr=_vcard" "options=link" "mimetype=text/x-vcard" "prefix=var cardurl=" "suffix=";" -->
+
+ document.location.href = cardurl;
+}
+// End hiding -->
+</SCRIPT>
+
+
+</HEAD>
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE><TR><TD>
+<!-- DS_ATTRIBUTE "attr=jpegPhoto" "type=hidden" "options=typeonly" -->
+<!-- IF "AttributeHasValues" "jpegPhoto" -->
+<IMG SRC=
+<!-- DS_ATTRIBUTE "attr=jpegPhoto" "options=link" "mimetype=image/jpeg" -->
+BORDER=0></TD>
+<TD>
+<!-- ENDIF -->
+<!-- A HREF="javascript:showVCard()" -->
+<IMG SRC="lang?<!-- GCONTEXT -->&file=person.gif" ALT="Personne (cliquez pour afficher la carte)"
+ BORDER=0 HSPACE=5>
+</A>
+</TD>
+<!-- IF "DisplayOrgChart" -->
+<TD><FONT FACE="PrimaSans BT, Verdana, Sans-Serif" SIZE="-1">
+<A HREF=
+<!-- DS_ORGCHARTLINK -->
+ >
+<IMG SRC="lang?<!-- GCONTEXT -->&file=orgicon.gif" BORDER=0 ALT="Click to display organization chart" HSPACE=5></a>
+</FONT>
+</TD>
+<!-- ENDIF -->
+<TD><FONT SIZE="+2">
+<!-- IF "Adding" -->
+Nouvelle personne -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT></TD></TR></TABLE>
+
+<!-- DS_ATTRIBUTE "attr=userCertificate;binary" "type=hidden" "options=typeonly" -->
+<!-- IF "AttributeHasValues" "userCertificate;binary" -->
+<A HREF=
+<!-- DS_ATTRIBUTE "attr=userCertificate;binary" "options=link" "mimetype=application/x-x509-ca-cert" -->
+>T&eacute;l&eacute;charger un certificat</A>
+<!-- ENDIF -->
+
+<!-- DS_ATTRIBUTE "attr=audio" "type=hidden" "options=typeonly" -->
+<!-- IF "AttributeHasValues" "audio" -->
+&nbsp;&nbsp;
+<A HREF=
+<!-- DS_ATTRIBUTE "attr=audio" "options=link" "mimetype=audio/basic" -->
+>Lire le clip audio</A>
+<!-- ENDIF -->
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- INPUT TYPE="button" VALUE="Afficher la carte" onClick="showVCard()" -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_EDITBUTTON "label=Modifier la personne" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Enregistrer la nouvelle personne" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Annuler" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_ORGPERSON" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_ORGPERSON" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_EDITASBUTTON "label=Modifier le mot de passe" "template=passwd" -->
+</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Renommer la personne" "prompt=Entrer un nouveau nom pour cette personne :" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Supprimer la personne" "prompt=Supprimer cette personne ?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="person">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="organizationalPerson">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="inetOrgPerson">
+<!-- ENDIF // Adding -->
+
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<!-- IF "!Displaying" -->
+<B>* Indique une zone d'entr&eacute;e obligatoire</B><BR>
+<!-- ENDIF -->
+
+<TABLE CELLSPACING="2" BORDER BGCOLOR=#f2f2f2 WIDTH=95%>
+<TR>
+<TD BGCOLOR=#006666 COLSPAN=4><FONT FACE=ARIAL,HELVETICA COLOR=WHITE>
+Contacts </TD>
+</TR>
+
+<TD VALIGN="top" NOWRAP>Pr&eacute;nom :</TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=givenName" "cols=>16" -->
+</B></TD>
+<TD VALIGN="top" NOWRAP ROWSPAN="2">Nom complet :
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="top" NOWRAP ROWSPAN="2"><B>
+<!-- DS_ATTRIBUTE "attr=cn" "numfields=+1" "cols=>23" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="top" NOWRAP>Nom :
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=sn" "cols=>16" -->
+</B></TD></TR>
+
+<!-- IF "Adding" -->
+<TR>
+<TD>Mot de passe :</TD><TD>
+<!-- DS_NEWPASSWORD "cols=>16" -->
+</B></TD>
+<TD> Retaper le mot de passe pour confirmation :</TD><TD>
+<!-- DS_CONFIRM_NEWPASSWORD "cols=>16" -->
+</TD></TR>
+<!-- ENDIF // Adding -->
+
+<TR>
+<TD VALIGN="TOP">T&eacute;l&eacute;phone :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>16" "numfields=+1" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>Adresse &eacute;lectronique :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" "cols=>23" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">T&eacute;l&eacute;copie :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=facsimiletelephonenumber" "syntax=tel" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>Id d'utilisateur :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=uid" "cols=>16" "options=unique" -->
+</B></TD></TR>
+<INPUT TYPE="hidden" NAME="desc_uid" VALUE="user id">
+<!-- PCONTEXT -->
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>Radiomessagerie :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=pager" "syntax=tel" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>T&eacute;l&eacute;phone mobile :<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=mobile" "syntax=tel" "cols=>16" -->
+</B></TD></TR>
+
+</TABLE>
+
+<TABLE CELLSPACING="2" BORDER BGCOLOR=#f2f2f2 WIDTH=95%>
+<TR>
+<TD BGCOLOR=#006666 COLSPAN=4><FONT FACE=ARIAL,HELVETICA COLOR=WHITE>
+Informations sur l'activit&eacute; et l'emplacement</TD>
+</TR>
+
+<TR>
+<TD VALIGN="TOP">Secteur d'activit&eacute; :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=businesscategory" -->
+</B></TD>
+<TD VALIGN="TOP">Titre :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=title" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Service de la soci&eacute;t&eacute; :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=ou" -->
+</B></TD>
+<TD VALIGN="TOP">Responsable :<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Modifier..." "template=dneditpeople" "attr=manager" "desc=Responsable" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<!-- IF "Adding" -->
+<TD VALIGN="TOP" ROWSPAN=2>
+<I>Vous devez enregistrer cette entr&eacute;e avant de pouvoir modifier ces champs.</I>
+<!-- ELSE // !Adding -->
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=manager" "syntax=dn" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Num&eacute;ro de poste :</TD>
+<TD VALIGN="TOP" NOWRAP"><B>
+<!-- DS_ATTRIBUTE "attr=roomNumber" "cols=>8" -->
+</B></TD>
+</B><TD VALIGN="TOP">Admin. :<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Modifier..." "template=dneditpeople" "attr=secretary" "desc=Admin." -->
+<!-- ENDIF // !Adding -->
+</TD>
+<!-- IF "!Adding" -->
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=secretary" "syntax=dn" "options=readonly" -->
+</B></TD>
+<!-- ENDIF // !Adding -->
+</TR>
+
+<TR>
+<TD VALIGN="TOP">N&deg; de service :</TD>
+<TD VALIGN="TOP"><B>
+<!-- DS_ATTRIBUTE "attr=departmentnumber" "cols=>8" -->
+</B></TD>
+<TD VALIGN="TOP">N&deg; d'employ&eacute; :</TD>
+<TD VALIGN="TOP"><B>
+<!-- DS_ATTRIBUTE "attr=employeenumber" "cols=>6" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">N&deg; d'immatriculation :</TD>
+<TD VALIGN="TOP"><B>
+<!-- DS_ATTRIBUTE "attr=carlicense" "cols=>8" -->
+</B></TD>
+<!-- Note: need to include two cells that contain a non-breaking space
+character so table background colors, etc. are rendered correctly -->
+<TD>&nbsp;&nbsp;</TD>
+<TD>&nbsp;&nbsp;</TD>
+</TR>
+
+<TR>
+<TD VALIGN="TOP">Adresse postale :</TD>
+<TD VALIGN="TOP" COLSPAN="4" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=postalAddress" "syntax=mls" "type=TEXTAREA" "cols=>40" "rows=>4" -->
+</B></TD></TR>
+
+</TABLE>
+
+<TABLE CELLSPACING="2" BORDER BGCOLOR=#f2f2f2 WIDTH=95%>
+<TR>
+<TD BGCOLOR=#006666 COLSPAN=2><FONT FACE=ARIAL,HELVETICA COLOR=WHITE>
+ Informations suppl&eacute;mentaires</TD>
+</TR>
+
+<TR>
+<TD VALIGN="TOP">Description :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>50" -->
+</B></TR>
+
+<TR>
+<TD VALIGN="TOP">Voir &eacute;galement :<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Modifier..." "template=dnedit" "attr=seeAlso" "desc=Voir &eacute;galement" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- IF "Adding" -->
+<I>Vous devez enregistrer cette entr&eacute;e avant de pouvoir modifier ce champ.</I>
+<!-- ELSE // !Adding -->
+<B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP">URL :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=labeledURI" "syntax=url" "cols=>50" "options=sort" -->
+</B></TR>
+
+<!-- The following attribute should only be uncommented if you have
+ a need to allow editing of the x500UniqueIdentifier attribute.
+ Most installations will not need this functionality.
+<TR>
+<TD VALIGN="TOP">Unique ID:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=x500uniqueidentifier" "cols=>50" -->
+</B></TR>
+-->
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+La derni&egrave;re modification de cette entr&eacute;e date du
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> par <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
+
+
diff --git a/ldap/clients/dsgw/config/fr/display-orgunit.html b/ldap/clients/dsgw/config/fr/display-orgunit.html
new file mode 100644
index 00000000..5cb474d9
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/display-orgunit.html
@@ -0,0 +1,136 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_OBJECTCLASS "value=organizationalUnit" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+Nouvelle
+<!-- ENDIF // Adding -->
+Unité organisationnelle -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE>
+<TR>
+<TD>
+<IMG SRC="lang?<!-- GCONTEXT -->&file=orgunit.gif" ALT="Unité Org" HSPACE=5>
+<TD>
+<FONT SIZE="+2">
+<!-- IF "Adding" -->
+Nouvelle unité organisationnelle -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</FONT>
+</TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- DS_EDITBUTTON "label=Edition de l'unité organisationnelle" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Enregistrer la nouvelle unité Org." -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Annuler" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_ORGUNIT" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_ORGUNIT" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Renommer l'unité Org." "prompt=Entrer un nouveau nom pour cette unité organisationnelle :" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Supprimer l'unité Org." "prompt=Supprimer cette unité organisationnelle ?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="organizationalUnit">
+<!-- ENDIF // Adding -->
+
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<HR>
+<!-- IF "!Displaying" -->
+<B>* Indique une zone d'entrée obligatoire </B><BR>
+<!-- ENDIF -->
+
+
+<TABLE>
+<TR>
+<TD>Nom de l'unité :
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=ou" "cols=>20" -->
+</B></TD><TD WIDTH="20%"></TD>
+<TD>Description :</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>30" -->
+</B></TR>
+
+<TR><TD>Téléphone :</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>16" -->
+</B></TD><TD></TD>
+<TD NOWRAP>Catégorie commerciale :</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=businessCategory" "cols=>30" -->
+</B></TD></TR>
+
+<TR><TD>Télécopie :<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=facsimiletelephonenumber" "syntax=tel" "cols=>16" -->
+</B></TD><TD></TD>
+<TD>Emplacement :</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=l" "cols=>30" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Adresse postale :</TD>
+<TD VALIGN="TOP" COLSPAN="4" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=postalAddress" "syntax=mls" "type=TEXTAREA" "cols=>40" "rows=>4" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Voir également :</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "dncomponents=3" "cols=>50" -->
+</B></TR>
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+<HR>
+La dernière modification de cette entrée date du <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> par <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/fr/display-person.html b/ldap/clients/dsgw/config/fr/display-person.html
new file mode 100644
index 00000000..16712318
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/display-person.html
@@ -0,0 +1,233 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- person directory entry -->
+<!-- DS_OBJECTCLASS "value=person" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+Nouvelle
+<!-- ENDIF // Adding -->
+Entr&eacute;e de personne
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE>
+
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+function showVCard()
+{
+<!-- DS_ATTRIBUTE "attr=_vcard" "options=link" "mimetype=text/x-vcard" "prefix=var cardurl=" "suffix=";" -->
+
+ document.location.href = cardurl;
+}
+// End hiding -->
+</SCRIPT>
+
+</HEAD>
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE><TR><TD>
+<!-- A HREF="javascript:showVCard()" -->
+<IMG SRC="lang?<!-- GCONTEXT -->&file=person.gif" ALT="Personne (cliquez pour afficher la carte)"
+ BORDER=0 HSPACE=5>
+</A>
+</TD>
+<!-- IF "DisplayOrgChart" -->
+<TD><FONT FACE="PrimaSans BT, Verdana, Sans-Serif" SIZE="-1">
+<A HREF=
+<!-- DS_ORGCHARTLINK -->
+ >
+<IMG SRC="lang?<!-- GCONTEXT -->&file=orgicon.gif" BORDER=0 ALT="Click to display organization chart" HSPACE=5></a>
+</FONT>
+</TD>
+<!-- ENDIF -->
+<TD><FONT SIZE="+2">
+<!-- IF "Adding" -->
+Nouvelle personne
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT></TD></TR></TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- INPUT TYPE="button" VALUE="Afficher la carte" onClick="showVCard()" -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_EDITBUTTON "label=Modifier la personne" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Enregistrer la nouvelle personne" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Annuler" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_PERSON" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_PERSON" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_EDITASBUTTON "label=Modifier le mot de passe" "template=passwd" -->
+</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Renommer la personne" "prompt=Entrer un nouveau nom pour cette personne :" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Supprimer la personne" "prompt=Supprimer cette personne ?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="person">
+<!-- ENDIF // Adding -->
+
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<HR>
+<!-- IF "!Displaying" -->
+<B>* Indique une zone d'entr&eacute;e obligatoire</B><BR>
+<!-- ENDIF -->
+
+<TABLE CELLSPACING="5">
+<TR>
+<TD VALIGN="top" NOWRAP>Nom :
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=sn" "cols=>16" -->
+</B></TD><TD WIDTH="20%"></TD>
+<TD VALIGN="top" NOWRAP>Nom complet :</TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=cn" "numfields=+1" "cols=>16" -->
+</B></TD></TR>
+
+<!-- IF "Adding" -->
+<TR><TD COLSPAN="5"><HR></TD></TR>
+<TR>
+<TD>Mot de passe :</TD><TD>
+<!-- DS_NEWPASSWORD -->
+</TD><TD WIDTH="20%"></TD>
+<TD> Retaper le mot de passe pour confirmation :</TD><TD>
+<!-- DS_CONFIRM_NEWPASSWORD -->
+</TD></TR>
+<TR><TD COLSPAN="5"><HR></TD></TR>
+<!-- ENDIF // Adding -->
+
+<TR>
+<TD VALIGN="TOP">T&eacute;l&eacute;phone :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>16" "numfields=+1" -->
+</B></TD><TD></TD>
+<TD VALIGN="TOP" NOWRAP>Adresse &eacute;lectronique :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" "cols=>20" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">T&eacute;l&eacute;copie :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=facsimiletelephonenumber" "syntax=tel" "cols=>16" -->
+</B></TD><TD></TD>
+<TD VALIGN="TOP" NOWRAP>Id d'utilisateur :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=uid" "cols=>16" "options=unique" -->
+</B></TD></TR>
+<INPUT TYPE="hidden" NAME="desc_uid" VALUE="user id">
+<!-- PCONTEXT -->
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>Radiomessagerie :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=pager" "syntax=tel" "cols=>16" -->
+</B></TD><TD></TD>
+<TD VALIGN="TOP" NOWRAP>T&eacute;l&eacute;phone mobile :<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=mobile" "syntax=tel" "cols=>16" -->
+</B></TD></TR>
+
+<TR><TD COLSPAN="5"><HR></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Titre :</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=title" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Adresse postale :</TD>
+<TD VALIGN="TOP" COLSPAN="4" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=postalAddress" "syntax=mls" "type=TEXTAREA" "cols=>40" "rows=>4" -->
+</B></TD></TR>
+
+<TR><TD COLSPAN="5"><HR></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Description :</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>50" -->
+</B></TR>
+
+<TR>
+<TD VALIGN="TOP">Voir &eacute;galement :<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=Modifier..." "template=dnedit" "attr=seeAlso" "desc=Voir &eacute;galement" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4">
+<!-- IF "Adding" -->
+<I>Vous devez enregistrer cette entr&eacute;e avant de pouvoir modifier ce champ.</I>
+<!-- ELSE // !Adding -->
+<B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP">URL :</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=labeledURI" "syntax=url" "cols=>50" -->
+</B></TR>
+
+<TR>
+<TD VALIGN="TOP">Boisson favorite :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=drink" -->
+</B></TR>
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+<HR>
+La derni&egrave;re modification de cette entr&eacute;e date du
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> par <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
+
+
diff --git a/ldap/clients/dsgw/config/fr/display-umperson.html b/ldap/clients/dsgw/config/fr/display-umperson.html
new file mode 100644
index 00000000..b5013a0f
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/display-umperson.html
@@ -0,0 +1,200 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- U-M person directory entry -->
+<!-- DS_OBJECTCLASS "value=person,umichPerson" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+Nouvelle
+<!-- ENDIF // Adding -->
+entr&eacute;e de personne U-M -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE><TR><TD>
+<IMG SRC=
+<!-- DS_ATTRIBUTE "attr=jpegPhoto" "options=link" "mimetype=image/jpeg" -->
+></TD>
+<TD>
+<IMG SRC="lang?<!-- GCONTEXT -->&file=person.gif" ALT="Personne" HSPACE=5>
+</TD>
+<!-- IF "DisplayOrgChart" -->
+<TD><FONT FACE="PrimaSans BT, Verdana, Sans-Serif" SIZE="-1">
+<A HREF=
+<!-- DS_ORGCHARTLINK -->
+ >
+<IMG SRC="lang?<!-- GCONTEXT -->&file=orgicon.gif" BORDER=0 ALT="Click to display organization chart" HSPACE=5></a>
+</FONT>
+</TD>
+<!-- ENDIF -->
+<TD><FONT SIZE="+2">
+<!-- IF "Adding" -->
+Nouvel personne U-M -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT></TD></TR></TABLE>
+
+<A HREF=
+<!-- DS_ATTRIBUTE "attr=audio" "options=link" "mimetype=audio/basic" -->
+>Lecture de clip audio</A>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- DS_EDITBUTTON "label=Edition de la personne" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Enregistrer la nouvelle personne" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Annuler" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_UMPERSON" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_UMPERSON" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_EDITASBUTTON "label=Modifier le mot de passe" "template=passwd" -->
+</TD><TD>
+<!-- DS_RENAMEBUTTON "label=Renommer la personne" "prompt=Entrer un nouveau nom pour cette personne :" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=Supprimer la personne" "prompt=Supprimer cette personne ?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="person">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="umichPerson">
+<!-- ENDIF // Adding -->
+<!-- PCONTEXT -->
+
+<HR>
+<!-- IF "!Displaying" -->
+<B>* Indique une zone d'entrȨe obligatoire</B><BR>
+<!-- ENDIF -->
+
+
+<TABLE CELLSPACING="5">
+<TR>
+<TD VALIGN="top" NOWRAP>Nom de famille :
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=sn" "cols=>16" -->
+</B></TD><TD WIDTH="20%"></TD>
+<TD VALIGN="top" NOWRAP>Nom complet :
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=cn" "numfields=+1" "cols=>16" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">T&eacute;l&eacute;phone :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>16" "numfields=+1" -->
+</B></TD><TD></TD>
+<TD VALIGN="TOP" NOWRAP>Adresse &eacute;lectronique :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" "cols=>20" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">T&eacute;l&eacute;copie :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=facsimiletelephonenumber" "syntax=tel" "cols=>16" -->
+</B></TD><TD></TD>
+<TD VALIGN="TOP" NOWRAP>Nom unique :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=uid" "cols=>16" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>T&eacute;l&eacute;avertisseur :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=pager" "syntax=tel" "cols=>16" -->
+</B></TD><TD></TD>
+<TD VALIGN="TOP" NOWRAP>T&eacute;l&eacute;phone mobile :<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=mobile" "syntax=tel" "cols=>16" -->
+</B></TD></TR>
+
+<TR><TD COLSPAN="5"><HR></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Titre :</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=title" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Adresse postale :</TD>
+<TD VALIGN="TOP" COLSPAN="4" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=postalAddress" "syntax=mls" "type=TEXTAREA" "cols=>40" "rows=>4" -->
+</B></TD></TR>
+
+<TR><TD COLSPAN="5"><HR></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Description :</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=multilineDescription" "syntax=mls" "cols=>50" -->
+</B></TR>
+
+<TR>
+<TD VALIGN="TOP">Voir &eacute;galement :<BR>
+<!-- DS_DNEDITBUTTON "label=Modifier..." "template=dnedit" "attr=seeAlso" "desc=Voir Ȩgalement" -->
+</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "options=readonly" -->
+</B></TR>
+
+<TR>
+<TD VALIGN="TOP">URL :</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=labeledURL" "syntax=url" "cols=>50" -->
+</B></TR>
+
+<TR>
+<TD VALIGN="TOP">Boisson favorite :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=drink" -->
+</B></TR>
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+<HR>
+La derni&egrave;re modification de cette entr&eacute;e date du <B>
+<!-- DS_ATTRIBUTE "attr=lastModifiedTime" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> par <B>
+<!-- DS_ATTRIBUTE "attr=lastModifiedBy" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/fr/dsgw-l10n.conf b/ldap/clients/dsgw/config/fr/dsgw-l10n.conf
new file mode 100644
index 00000000..0482312b
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/dsgw-l10n.conf
@@ -0,0 +1,18 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+# To localize the search type menu:
+# Locate dsgw-l10n.conf in config/<lang>/.
+# dsgw-l10n.conf contains translated words for search type pulldown menu.
+# dsgw-l10n.conf sample:
+# Note: the sample part should have double #'s for L10n.
+## translate People <People_translated_in_lang>
+## translate NT-People <NT-People_translated_in_lang>
+## translate Groups <Groups_translated_in_lang>
+## translate NT-Groups <NT-Groups_translated_in_lang>
+## translate Organizations <Organizations_translated_in_lang>
+## translate Org-Units <Org-Units_translated_in_lang>
+## translate Anything <Anything_translated_in_lang>
diff --git a/ldap/clients/dsgw/config/fr/dsgw.conf b/ldap/clients/dsgw/config/fr/dsgw.conf
new file mode 100644
index 00000000..f109eb84
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/dsgw.conf
@@ -0,0 +1,133 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+# The baseurl directive gives the server, port, and base dn where searches
+# should be rooted. The format is:
+#
+# ldap://host.domain[:port]/basedn
+# - or -
+# ldaps://host.domain:port/basedn (for SSL)
+#
+# Where:
+# - "host.domain" is the fully-qualified domain name of the directory server
+# - "port" is the port used by the directory server. If you are using an
+# "ldaps" URL (that is, if the gateway is using SSL to communicate with the
+# directory server), then the port number is required. Otherwise, it is
+# optional and defaults to the standard LDAP port (389).
+# - "basedn" is the distinguished name of the place in the directory tree
+# where searches should start. Typically, this is the same as the
+# "suffix" directive in your slapd.conf file.
+#
+# examples:
+# baseurl "ldap://mars.aceindustry.com/o=Ace Industry, c=US"
+# - causes the gateway to use the directory server running on host
+# "mars.aceindustry.com". Since no port was given, the default LDAP
+# port (389) is used. Searches in the gateway search for entries
+# contained within o=Ace Industry, c=US.
+#
+# baseurl "ldaps://mars.aceindustry.com:636/o=Ace Industry, c=US"
+# - same as above, but uses SSL to connect to the directory server,
+# and contacts the server on port 636.
+
+baseurl "ldap://ggood.mcom.com:389/o=Netscape Communications Corp., c=US"
+#baseurl "ldap://belltower.mcom.com:9000/o=Ace%20Industry,%20c=US"
+#baseurl "ldap://belltower:9000/o=Netscape Communications Corp., c=US"
+#baseurl "ldap://ldap.itd.umich.edu:389/o=University of Michigan, c=US"
+
+# The dirmgr directive specifies the "Manager" DN for your directory.
+dirmgr "cn=Directory Manager, o=Netscape Communications Corp., c=US"
+
+# The securitypath directive gives the full path name to your
+# security databases.
+#securitypath /tmp/ssl
+
+# If the requireauth directive is present, users must authenticate to the
+# directory before they may perform any operations. XXX: not implemented
+# in 1.0b2.
+#requireauth
+
+# The authlifetime directive specifies how long authentication credentials
+# are valid (in seconds).
+authlifetime 7200
+
+# The default character set, for communication with HTTP clients.
+# A client may override this default, using an HTTP Accept-Charset header.
+# Or, this default may be overridden for a specific language, by creating
+# a LANG/dsgwcharset.conf file which contains the charset name.
+# For compatibility with HTTP clients that can't handle an HTTP response
+# with a charset parameter in the content-type, comment out this directive;
+# responses will be sent in ISO-8859-1, with no explicit charset parameter.
+# RFC 1345 defines the syntax of charset names. There is a registry of
+# charsets, at ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets
+# charset UTF-8
+
+# The NLS (internationalization) directory. The directory of this name
+# should contain a locales directory, which contains configuration files.
+NLS ../../../lib/nls
+
+location-suffix "o=Netscape Communications Corp., c=US"
+
+# Mapping between config/display-XXX.html templates and LDAP objectClasses.
+# This can be generated by using ds/templateindex. The format is:
+#
+# template TEMPLATENAME OBJECTCLASSES
+#
+# where "display-TEMPLATENAME.html" is the name of a display template
+# that is found in this config directory (e.g., "display-group.html") and
+# OBJECTCLASSES is a list of one or more objectClass values. For a given
+# template to be used, all the objectClass values listed must be present
+# in the directory entry, so the order of these template lines is
+# significant (e.g. note that the more specific "umperson" and
+# "orgperson" templates are listed before the one for an ordinary "person").
+#
+template group groupOfNames
+template groupun groupOfUniqueNames
+template mailgroup rfc822mailgroup
+template org organization
+template orgunit organizationalUnit
+template ntperson person inetOrgPerson nTUser
+template umperson person umichPerson
+template orgperson person inetOrgPerson
+template person person
+template country country
+
+#
+# The remainder of this file contains information about the locations and
+# types for new entries.
+#
+# "location" lines define places in the directory where new entries can be added
+# The format of each line is:
+# location HANDLE FRIENDLYNAME DN
+# where HANDLE is a short name which is used in the "newtype" lines (see below)
+# and FRIENDLYNAME is a human-readable name for the location
+# and DN is the Distinguished Name for this location (if it does not end with
+# '#', the location-suffix is appended to to construct a full DN; if it
+# does end with `#', it assumed to be a full DN and the `#' is removed).
+#
+location country "Etats-Unis" "c=US#"
+location org "Cette organisation" ""
+location groups "Services" "ou=Groups"
+location acct "Comptabilité" "ou=Accounting"
+location hr "Ressources humaines" "ou=Human Resources"
+location pay "Comptabilité de paye" "ou=Payroll"
+location pd "Développement des produits" "ou=Product Development"
+location test "Test de produit" "ou=Product Testing"
+
+# "newtype" lines define the types of new entries that may be added
+# The format of each line is:
+# newtype TEMPLATENAME FRIENDLYNAME RDNATTR LOCATIONS...
+# where TEMPLATENAME corresponds to an existing add-TEMPLATENAME.html file
+# and FRIENDLYNAME is a human-readable name for this type of entry
+# and RDNATTR is the attribute that is used to name entries of this type
+# and LOCATIONS is a blank-separated list of locations where these types of
+# entries can be added (corresponding to a HANDLE on a "location"
+# config. file line).
+#
+newtype orgperson "Utilisateur" cn acct hr pay pd test
+newtype ntperson "Utilisateur NT" cn acct hr pay pd test
+newtype groupun "Groupe" cn groups
+newtype orgunit "Service" ou org
+newtype org "Organisation" o country
diff --git a/ldap/clients/dsgw/config/fr/dsgw.tmpl b/ldap/clients/dsgw/config/fr/dsgw.tmpl
new file mode 100644
index 00000000..983aac2c
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/dsgw.tmpl
@@ -0,0 +1,113 @@
+# The htmldir directive tells the CGIs where to find the html files
+htmldir ../html
+
+# The configdir directive tells the CGIs where to find the
+# templates/configuration files
+configdir ../config
+
+# The gwnametrans directive tells the CGIs what url to output
+# for http redirection. It should be the same nameTrans set
+# in the webserver, if any is being is used.
+gwnametrans /clients/dsgw/html/
+
+# The authlifetime directive specifies how long authentication credentials
+# are valid (in seconds).
+authlifetime 7200
+
+# The default character set, for communication with HTTP clients.
+# A client may override this default, using an HTTP Accept-Charset header.
+# Or, this default may be overridden for a specific language, by creating
+# a LANG/dsgwcharset.conf file which contains the charset name.
+# For compatibility with HTTP clients that can't handle an HTTP response
+# with a charset parameter in the content-type, comment out this directive;
+# responses will be sent in ISO-8859-1, with no explicit charset parameter.
+# RFC 1345 defines the syntax of charset names. There is a registry of
+# charsets, at ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets
+# charset UTF-8
+
+# The NLS (internationalization) directory. The directory of this name
+# should contain a locales directory, which contains configuration files.
+NLS ../../../lib/nls
+
+# Mapping between config/display-XXX.html templates and LDAP objectClasses.
+# This can be generated by using ds/templateindex. The format is:
+#
+# template TEMPLATENAME OBJECTCLASSES
+#
+# where "display-TEMPLATENAME.html" is the name of a display template
+# that is found in this config directory (e.g., "display-group.html") and
+# OBJECTCLASSES is a list of one or more objectClass values. For a given
+# template to be used, all the objectClass values listed must be present
+# in the directory entry, so the order of these template lines is
+# significant (e.g. note that the more specific "orgperson" template is
+# listed before the one for an ordinary "person").
+#
+template group groupOfNames
+template ntgroup groupOfUniqueNames ntGroup
+template groupun groupOfUniqueNames
+template org organization
+template orgunit organizationalUnit
+template ntperson person inetOrgPerson nTUser
+template orgperson person inetOrgPerson
+template person person
+template country country
+
+#
+# The remainder of this file contains information about the locations and
+# types for new entries.
+#
+# "location" lines define places in the directory where new entries can be added
+# The format of each line is:
+# location HANDLE FRIENDLYNAME DN
+# where HANDLE is a short name which is used in the "newtype" lines (see below)
+# and FRIENDLYNAME is a human-readable name for the location
+# and DN is the Distinguished Name for this location (if it does not end with
+# '#', the location-suffix is appended to to construct a full DN; if it
+# does end with `#', it assumed to be a full DN and the `#' is removed).
+#
+location country "&Eacute;tats-Unis" "c=US#"
+location org "Cette soci&eacute;t&eacute;" ""
+location groups "Groupes" "ou=Groups"
+location people "Utilisateurs" "ou=People"
+location special "Utilisateurs particuliers" "ou=Special Users"
+
+# "newtype" lines define the types of new entries that may be added
+# The format of each line is:
+# newtype TEMPLATENAME FRIENDLYNAME RDNATTR LOCATIONS...
+# where TEMPLATENAME corresponds to an existing display-TEMPLATENAME.html file
+# and FRIENDLYNAME is a human-readable name for this type of entry
+# and RDNATTR is the attribute that is used to name entries of this type
+# and LOCATIONS is a blank-separated list of locations where these types of
+# entries can be added (corresponding to a HANDLE on a "location"
+# config. file line).
+#
+newtype orgperson "Personne" uid people special
+newtype ntperson "Personne NT" uid people special
+newtype ntgroup "Groupe NT" cn groups
+newtype groupun "Groupe" cn groups
+newtype orgunit "Service de la soci&eacute;t&eacute;" ou people org
+newtype org "Soci&eacute;t&eacute;" o country
+
+# Mappings between VCard properties and LDAP attribute types:
+# The format of each line is:
+# vcard-property VCARDPROP SYNTAX LDAPATTR [LDAPATTR2]
+# where VCARDPROP is the name of a VCard property
+# and SYNTAX is "cis" for simple strings and "mls" for multiline strings
+# and LDAPATTR is the LDAP attribute that corresponds to VCARDPROP
+# and LDAPATTR2 is an optional secondary LDAP attribute which is added to
+# the property value by appending a semicolon and then the attr2 value.
+vcard-property FN cis cn
+vcard-property N cis sn givenName
+vcard-property ORG cis o ou
+vcard-property ROLE cis businessCategory
+vcard-property ADR;WORK mls postalAddress
+vcard-property ADR;HOME mls homePostalAddress
+vcard-property EMAIL;INTERNET cis mail
+vcard-property TITLE cis title
+vcard-property TEL;WORK cis telephoneNumber
+vcard-property TEL;FAX cis facsimileTelephoneNumber
+vcard-property TEL;CELL cis mobile
+vcard-property TEL;HOME cis homePhone
+vcard-property NOTE cis description
+
+
diff --git a/ldap/clients/dsgw/config/fr/dsgw_adm.conf b/ldap/clients/dsgw/config/fr/dsgw_adm.conf
new file mode 100644
index 00000000..33cc3f37
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/dsgw_adm.conf
@@ -0,0 +1,48 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+# Mapping between config/display-XXX.html templates and LDAP objectClasses.
+# This can be generated by using the templateindex program. The format is:
+#
+# template TEMPLATENAME OBJECTCLASSES
+#
+# where "display-TEMPLATENAME.html" is the name of a display template
+# that is found in this config directory (e.g., "display-group.html") and
+# OBJECTCLASSES is a list of one or more objectClass values. For a given
+# template to be used, all the objectClass values listed must be present
+# in the directory entry, so the order of these template lines is
+# significant (e.g. note that the more specific "orgperson" template is
+# listed before the one for an ordinary "person").
+#
+template group groupOfNames
+template groupun groupOfUniqueNames
+template org organization
+template orgunit organizationalUnit
+template orgperson person inetOrgPerson
+template person person
+template country country
+template licensed-user nsLicenseUser
+
+# Attribute Value Sets (used with DS_ATTRVAL_SET directives)
+# attrvset HANDLE VALUE PREFIX SUFFIX
+#
+attrvset CAL news "" "Netscape Collabra Server"
+attrvset CAL slapd "" "Netscape Directory Server"
+
+
+# Template Set definitions
+# Note: templates must be defined before they can be mentioned on
+# a tmplset line.
+#
+# tmplset SETNAME VIEWNAME TEMPLATENAME [HREF-LOCATION]
+#
+tmplset person "G&eacute;n&eacute;ral" orgperson
+tmplset person "Mot de passe" passwd
+tmplset person "Licences" licensed-user
+tmplset group "G&eacute;n&eacute;ral" group
+tmplset groupun "G&eacute;n&eacute;ral" groupun
+
+
diff --git a/ldap/clients/dsgw/config/fr/dsgwfilter.conf b/ldap/clients/dsgw/config/fr/dsgwfilter.conf
new file mode 100644
index 00000000..17a0c3ba
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/dsgwfilter.conf
@@ -0,0 +1,141 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+# ldap filter file
+#
+# lines like this that start with # or empty lines are ignored
+#
+# syntax:
+#
+# <tag>
+# <pattern1> <delimiters> <filter1-1> <desc1-1> [<scope>]
+# <filter1-2> <desc1-2> [<scope>]
+#
+# <pattern2> <delimiters> <filter2-1> <desc2-1> [<scope>] ...
+#
+# The <desc> should describe the filter. It should correctly complete
+# the phrases (in the resource database) DBT_Found0EntriesWhere_,
+# DBT_Found1EntryWhere_ and DBT_FoundEntriesWhere_; for example:
+#
+# Found 1 entry where the <desc> '%v'.
+# Found no entries where the <desc> '%v'.
+# Found 3 entries where the <desc> '%v'.
+#
+# The <desc> should begin with the article ("the" in English) for
+# languages that require agreement between article and noun (e.g
+# genders in Spanish or French).
+#
+# The scope is optional, and should be one of:
+# "base"
+# "onelevel"
+# "subtree"
+# if it is included.
+
+#
+# Directory Server gateway
+#
+
+"dsgw-people"
+ "=" " " "(%v))" "le filtre LDAP est"
+
+ "^[+]*[0-9][ 0-9-]*$" " " "(telephoneNumber=*%v))" "le num&eacute;ro de t&eacute;l&eacute;phone se termine par"
+
+ "@" " " "(mail=%v))" "l'adresse &eacute;lectronique est"
+ "(mail=%v*))" "l'adresse &eacute;lectronique commence par"
+
+ "^.[. _].*" ". _" "(cn=%v1* %v2-))" "premi&egrave;re initiale + nom est"
+
+ ".*[. _].$" ". _" "(cn=%v1-*))" "nom + derni&egrave;re initiale est"
+
+ "[. _]" ". _" "(|(sn=%v1-)(cn=%v1-)))" "le nom est"
+ "(|(cn=*%v1-*)(sn=*%v1-*)(cn~=%v1-)(sn~=%v1-)))" "le nom ressemble &agrave; ou contient"
+
+ "^\*$" " " "(|(cn=*)(sn=*)(uid=*)))" "le nom ou l'id d'utilisateur est"
+
+ ".*" ". " "(|(cn=%v1)(sn=%v1)(uid=%v1)))" "le nom ou l'id d'utilisateur est"
+ "(|(cn=*%v1*)(sn=*%v1*)(cn~=%v1)(sn~=%v1)))" "le nom ressemble &agrave; ou contient"
+
+
+"dsgw-groups"
+ "=" " " "(%v))" "le filtre LDAP est"
+
+ "^\*$" " " "(cn=*))" "le nom est"
+
+ ".*" ". _" "(cn=%v1-))" "le nom est"
+ "(cn=*%v1-*))" "le nom contient"
+ "(cn~=%v1-))" "le nom ressemble &agrave;"
+
+"dsgw-ntgroups"
+ "=" " " "(%v))" "le filtre LDAP est"
+
+ "^\*$" " " "(cn=*))" "le nom est "
+
+ ".*" ". _" "(cn=%v1-))" "le nom est"
+ "(cn=*%v1-*))" "le nom contient"
+ "(cn~=%v1-))" "le nom ressemble &agrave;"
+ "(ntgroupdomainid=%v:*))" "le nom du domaine NT est"
+ "(ntgroupdomainid=*:%v))" "le groupe NT est"
+
+"dsgw-organizations"
+ "=" " " "(%v))" "le filtre LDAP est"
+
+ "\." " " "(associatedDomain=%v))" "le domaine associ&eacute; est"
+
+ "^\*$" " " "(o=*))" "le nom est"
+
+ ".*" " " "(o=%v))" "le nom est"
+ "(o=*%v*))" "le nom contient"
+ "(o~=%v))" "le nom ressemble &agrave;"
+
+"dsgw-orgunits"
+ "=" " " "(%v))" "le filtre LDAP est"
+
+ "\." " " "(associatedDomain=%v))" "le domaine associ&eacute; est"
+
+ "^\*$" " " "(ou=*))" "le nom est"
+
+ ".*" " " "(ou=%v))" "le nom est"
+ "(ou=*%v*))" "le nom contient"
+ "(ou~=%v))" "le nom ressemble &agrave;"
+
+"dsgw-anything"
+ "=" " " "(%v)" "le filtre LDAP est"
+
+ "[. _]" ". _" "(|(sn=%v1-)(cn=%v1-)(o=%v1-)(ou=%v1-))" "le nom est"
+ "(|(sn~=%v1-)(cn~=%v1-)(o=%v1-)(ou=%v1-))" "le nom ressemble &agrave;"
+
+ "^\*$" " " "(|(cn=*)(sn=*)(o=*)(ou=*))" "le nom est"
+
+ ".*" ". " "(|(cn=%v1)(sn=%v1)(o=%v1)(ou=%v1))" "le nom est"
+ "(|(cn=*%v1*)(sn=*%v1*)(cn~=%v1)(sn~=%v1)(o=%v1)(ou=%v1))" "le nom ressemble &agrave; ou contient"
+
+
+"dsgw-ntpeople"
+ "=" " " "(%v))" "le filtre LDAP est"
+
+ "^[+]*[0-9][ 0-9-]*$" " " "(telephoneNumber=*%v))" "le num&eacute;ro de t&eacute;l&eacute;phone se termine par"
+
+ "@" " " "(mail=%v))" "l'adresse &eacute;lectronique est"
+ "(mail=%v*))" "l'adresse &eacute;lectronique commence par"
+
+ "^.[. _].*" ". _" "(cn=%v1* %v2-))" "premi&egrave;re initiale + nom est"
+
+ ".*[. _].$" ". _" "(cn=%v1-*))" "nom + derni&egrave;re initiale est"
+
+ "[. _]" ". _" "(|(sn=%v1-)(cn=%v1-)))" "le nom est"
+ "(|(cn=*%v1-*)(sn=*%v1-*)(cn~=%v1-)(sn~=%v1-)))" "le nom ressemble &agrave; ou contient"
+
+ "^\*$" " " "(|(cn=*)(sn=*)))" "le nom est"
+
+ ".*" ". " "(|(cn=%v1)(sn=%v1)))" "le nom est"
+ "(ntuserlogonserver=%v))" "le serveur de connexions NT est"
+ "(ntuserdomainid=%v:*))" "le nom du domaine NT est"
+ "(ntuserdomainid=*:%v))" "le nom d'utilisateur NT est"
+ "(|(cn=*%v1*)(sn=*%v1*)(cn~=%v1)(sn~=%v1)))" "le nom ressemble &agrave; ou contient"
+
+# Do not remove this line, or place any directives after it.
+
+
diff --git a/ldap/clients/dsgw/config/fr/dsgwfilter_adm.conf b/ldap/clients/dsgw/config/fr/dsgwfilter_adm.conf
new file mode 100644
index 00000000..7c387abf
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/dsgwfilter_adm.conf
@@ -0,0 +1,75 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+# ldap filter file
+#
+# lines like this that start with # or empty lines are ignored
+#
+# syntax:
+#
+# <tag>
+# <pattern1> <delimiters> <filter1-1> <desc1-1> [<scope>]
+# <filter1-2> <desc1-2> [<scope>]
+#
+# <pattern2> <delimiters> <filter2-1> <desc2-1> [<scope>] ...
+#
+# The <desc> should describe the filter. It should correctly complete
+# the phrases (in the resource database) DBT_Found0EntriesWhere_,
+# DBT_Found1EntryWhere_ and DBT_FoundEntriesWhere_; for example (en):
+#
+# Found 1 entry where the <desc> '%v'.
+# Found no entries where the <desc> '%v'.
+# Found 3 entries where the <desc> '%v'.
+#
+# The <desc> should begin with the article ("the" in English) for
+# languages that require agreement between article and noun (e.g
+# genders in Spanish or French).
+#
+# The scope is optional, and should be one of:
+# "base"
+# "onelevel"
+# "subtree"
+# if it is included.
+
+#
+# Directory Server gateway - for Netscape Admin Server
+#
+
+"dsgw-people"
+ "=" " " "(%v))" "le filtre LDAP est"
+
+ "^[+]*[0-9][ 0-9-]*$" " " "(telephoneNumber=*%v))" "le num&eacute;ro de t&eacute;l&eacute;phone se termine par"
+
+ "@" " " "(mail=%v))" "l'adresse &eacute;lectronique est"
+ "(mail=%v*))" "l'adresse &eacute;lectronique commence par"
+
+ "^.[. _].*" ". _" "(cn=%v1* %v2-))" "premi&egrave;re initiale + nom est"
+
+ ".*[. _].$" ". _" "(cn=%v1-*))" "nom + derni&egrave;re initiale est"
+
+ "[. _]" ". _" "(|(sn=%v1-)(cn=%v1-)))" "le nom est"
+ "(|(cn=*%v1-*)(sn=*%v1-*)(cn~=%v1-)(sn~=%v1-)))" "le nom ressemble &agrave; ou contient "
+
+ ".*" ". " "(uid=%v1))" "l'id de connexion est"
+ "(|(cn=%v1)(sn=%v1)))" "le nom est"
+ "(|(cn=*%v1*)(sn=*%v1*)(cn~=%v1)(sn~=%v1)))" "le nom ressemble &agrave; ou contient"
+
+
+"dsgw-groups"
+ "=" " " "(%v))" "le filtre LDAP est"
+
+ ".*" ". _" "(cn=%v1-))" "le nom est"
+ "(cn~=%v1-))" "le nom ressemble &agrave;"
+
+"dsgw-orgunits"
+ "=" " " "(%v))" "le filtre LDAP"
+
+ ".*" ". _" "(ou=%v1-))" "le nom du service est"
+ "(ou~=%v1-))" "le nom du service ressemble &agrave;"
+
+#Do not remove this line, or place any additional lines after it.
+
+
diff --git a/ldap/clients/dsgw/config/fr/dsgwsearchprefs.conf b/ldap/clients/dsgw/config/fr/dsgwsearchprefs.conf
new file mode 100644
index 00000000..ac4cec44
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/dsgwsearchprefs.conf
@@ -0,0 +1,214 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+# dsgwsearchprefs.conf - directory server gateway search object definitions
+
+
+# the current version of this file format is 1
+Version 1
+
+
+# Name for this search object
+People
+# options (the only one supported right now is "internal" which means that
+# this search object should not be presented directly to the user)
+# use "" for none
+""
+# Label to place before text box user types in
+"Rechercher :"
+# Filter prefix to append to all searches
+"(&(objectClass=person)"
+# Tag to use for "Fewer Choices" searches - from ldapfilter.conf file
+"dsgw-people"
+# If a search results in > 1 match, retrieve this attribute to help
+# user disambiguate the entries...
+not-used-by-dsgw
+# ...and label it with this string:
+not-used-by-dsgw
+# Search scope to use when searching
+subtree
+# Follows a list of "More Choices" search options. Format is:
+# Label, attribute, select-bitmap, extra attr display name, extra attr ldap name
+# If last two are null, "Fewer Choices" name/attributes used.
+# Label should begin with the article ("the" in English) for
+# languages that require agreement between article and noun
+# (e.g genders in Spanish or French).
+"nom complet" cn 111111 "" ""
+"nom" sn 111111 "" ""
+"numéro de téléphone" "telephoneNumber" 111011 "" ""
+"adresse électronique" "mail" 111111 "" ""
+"id utilisateur" "uid" 111111 "" ""
+"titre" title 111111 "" ""
+END
+# Match types
+"est" "(%a=%v))"
+"n'est pas" "(!(%a=%v)))"
+"ressemble à" "(%a~=%v))"
+"commence par" "(%a=%v*))"
+"se termine par" "(%a=*%v))"
+"contient" "(%a=*%v*))"
+END
+
+
+"NT-People"
+""
+"Rechercher :"
+"(&(objectClass=ntuser)"
+"dsgw-ntpeople"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"nom complet" cn 111111 "" ""
+"nom" sn 111111 "" ""
+"numéro de téléphone" "telephoneNumber" 111011 "" ""
+"adresse électronique" "mail" 111111 "" ""
+"id utilisateur" "uid" 111111 "" ""
+"titre" title 111111 "" ""
+"nom d'utilisateur NT" "ntuserdomainid" 110000 "" ""
+"domaine NT" "ntuserdomainid" 101000 "" ""
+"serveur de connexions NT" "ntuserlogonserver" 111111 "" ""
+END
+"est" "(%a=%v))"
+"n'est pas" "(!(%a=%v)))"
+"ressemble à" "(%a~=%v))"
+"commence par" "(%a=%v*))"
+"se termine par" "(%a=*%v))"
+"contient" "(%a=*%v*))"
+END
+
+
+Groups
+""
+"Rechercher :"
+"(&(|(objectClass=rfc822MailGroup)(objectClass=groupOfNames)(objectClass=groupOfUniqueNames)(objectClass=groupOfCertificates))"
+"dsgw-groups"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"nom" cn 111111 "" ""
+"description" description 111111 "" ""
+"propriétaire (DN)" "owner" 000011 "owner" "Owner"
+"membre (DN)" "uniquemember" 000011 "" ""
+END
+"est" "(%a=%v))"
+"n'est pas" "(!(%a=%v)))"
+"ressemble à" "(%a~=%v))"
+"commence par" "(%a=%v*))"
+"se termine par" "(%a=*%v))"
+"contient" "(%a=*%v*))"
+END
+
+NT-Groups
+""
+"Rechercher :"
+"(&(objectClass=ntGroup)"
+"dsgw-ntgroups"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"nom" cn 111111 "" ""
+"domaine NT" "ntgroupdomainid" 110000 "" ""
+"nom du groupe NT" "ntgroupdomainid" 101000 "" ""
+"description" description 111111 "" ""
+"propriétaire (DN)" "owner" 000011 "owner" "Owner"
+"membre (DN)" "uniquemember" 000011 "" ""
+END
+"est" "(%a=%v))"
+"n'est pas" "(!(%a=%v)))"
+"ressemble à" "(%a~=%v))"
+"commence par" "(%a=%v*))"
+"se termine par" "(%a=*%v))"
+"contient" "(%a=*%v*))"
+END
+
+
+Organizations
+""
+"Rechercher :"
+"(&(objectClass=organization)"
+"dsgw-organizations"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"nom" o 111111 "" ""
+"emplacement" l 111111 "" ""
+"numéro de téléphone" telephoneNumber 111011 "" ""
+"description" description 111011 "" ""
+END
+"est" "(%a=%v))"
+"n'est pas" "(!(%a=%v)))"
+"ressemble à" "(%a~=%v))"
+"commence par" "(%a=%v*))"
+"se termine par" "(%a=*%v))"
+"contient" "(%a=*%v*))"
+END
+
+
+"Org-Units"
+""
+"Rechercher :"
+"(&(objectClass=organizationalUnit)"
+"dsgw-orgunits"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"nom" ou 111111 "" ""
+"emplacement" l 111111 "" ""
+"numéro de téléphone" telephoneNumber 111011 "" ""
+"description" description 111111 "" ""
+END
+"est" "(%a=%v))"
+"n'est pas" "(!(%a=%v)))"
+"ressemble à" "(%a~=%v))"
+"commence par" "(%a=%v*))"
+"se termine par" "(%a=*%v))"
+"contient" "(%a=*%v*))"
+END
+
+Anything
+""
+"Rechercher :"
+""
+"dsgw-anything"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"nom commun" cn 111111 "" ""
+"description" description 111111 "" ""
+END
+"est" "(%a=%v)"
+"n'est pas" "(!(%a=%v))"
+"ressemble à" "(%a~=%v)"
+"commence par" "(%a=%v*)"
+"se termine par" "(%a=*%v)"
+"contient" "(%a=*%v*)"
+END
+
+Auth
+internal
+"Authentifier en tant que :"
+"(&(objectClass=person)"
+"dsgw-people"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"nom commun" cn 111111 "" ""
+"nom de famille" sn 111111 "" ""
+"numéro de téléphone" "telephoneNumber" 111011 "" ""
+"adresse électronique" "mail" 111111 "" ""
+"id utilisateur" "uid" 111111 "" ""
+"titre" title 111111 "" ""
+END
+"est" "(%a=%v))"
+"n'est pas" "(!(%a=%v)))"
+"ressemble à" "(%a~=%v))"
+"commence par" "(%a=%v*))"
+"se termine par" "(%a=*%v))"
+"contient" "(%a=*%v*))"
+END
+
+
+
diff --git a/ldap/clients/dsgw/config/fr/edit-passwd.html b/ldap/clients/dsgw/config/fr/edit-passwd.html
new file mode 100644
index 00000000..a934992f
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/edit-passwd.html
@@ -0,0 +1,78 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML><HEAD>
+<!-- change a directory entry's password -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>Modification du mot de passe -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE>
+
+</HEAD>
+
+<!-- BODY -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<H2><CENTER>Modification du mot de passe
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</H2></CENTER>
+
+<HR>
+
+<P>
+<TABLE>
+
+<!-- IF "BoundAsThisEntry" -->
+<TR>
+<TD ALIGN="right" NOWRAP>
+Entrer l'ancien mot de passe :
+</TD><TD>
+<!-- DS_OLDPASSWORD -->
+</TD></TR>
+<!-- ELIF "!Bound" -->
+<TR>
+<TD ALIGN="right" NOWRAP>
+Entrer l'ancien mot de passe :
+</TD><TD>
+<!-- DS_OLDPASSWORD -->
+</TD></TR>
+<!-- ENDIF //BoundAsThisEntry -->
+
+<TR>
+<TD ALIGN="right" NOWRAP>
+Entrer le nouveau mot de passe :
+</TD><TD>
+<!-- DS_NEWPASSWORD -->
+</TD></TR>
+
+<TR>
+<TD ALIGN="right" NOWRAP>
+Retaper le nouveau mot de passe pour confirmation :
+</TD><TD>
+<!-- DS_CONFIRM_NEWPASSWORD -->
+</TD></TR>
+</TABLE>
+
+<P>
+
+<TABLE BORDER=2 WIDTH="100%">
+<TR>
+<TD ALIGN="center" WIDTH="50%">
+<!-- IF "BoundAsThisEntry" -->
+<!-- DS_SAVEBUTTON "label=Modifier le mot de passe " -->
+<!-- ELSE -->
+<!-- DS_SAVEBUTTON "label=D&eacute;terminer le mot de passe " -->
+<!-- ENDIF -->
+<TD ALIGN="center" WIDTH="50%">
+<!-- DS_HELPBUTTON "topic=MODIFYPASSWD" -->
+</TABLE>
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/fr/list-Anything.html b/ldap/clients/dsgw/config/fr/list-Anything.html
new file mode 100644
index 00000000..38281374
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/list-Anything.html
@@ -0,0 +1,42 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Search for Anything" -->
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT></CENTER>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR>
+<TH NOWRAP>Nom<TH NOWRAP>Num&eacute;ro de t&eacute;l&eacute;phone
+<TH NOWRAP>Adresse &eacute;lectronique<TH NOWRAP>Description
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=description" -->
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<CENTER><FONT SIZE=+1>
+Veuillez effectuer une recherche diff&eacute;rente.
+</FONT></CENTER>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/fr/list-Auth.html b/ldap/clients/dsgw/config/fr/list-Auth.html
new file mode 100644
index 00000000..f1fa4373
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/list-Auth.html
@@ -0,0 +1,75 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Authenticate as..." -->
+
+<!--
+ The "authForm" form and the authSubmit() JavaScript function are
+ used to avoid the need for a separate form for each entry listed.
+ Each entry is tied to this single form through the magic of an
+ anchor that contains href=javascript:authSubmit().
+-->
+
+<FORM NAME="authForm" METHOD=POST ACTION="auth">
+<INPUT TYPE="hidden" NAME="escapedbinddn">
+<INPUT TYPE="hidden" NAME="authdesturl">
+<!-- PCONTEXT -->
+<!-- DS_POSTEDVALUE "name=authdesturl" "within=VALUE=%22--value--%22" -->
+>
+</FORM>
+
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+function authSubmit(encodeddn)
+{
+ document.authForm.escapedbinddn.value = encodeddn;
+ document.authForm.submit();
+}
+// End hiding -->
+</SCRIPT>
+
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC "VERBOSE" -->
+<P>
+<!-- IF "FoundEntries" -->
+Veuillez cliquer sur le nom de l'entr&eacute;e que vous d&eacute;sirez utiliser pour l'authentification.
+</FONT>
+<P>
+
+<TABLE BORDER=1 CELLPADDING=4>
+<TR>
+<TH NOWRAP>Authentifier en tant que <TH NOWRAP>Titre
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "href=javascript:authSubmit('--value--'); onMouseOver=%22window.status='Cliquer pour authentifier'; return true;%22" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=title" -->
+
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+<!-- ELSE "FoundEntries" -->
+Veuillez revenir en arri&egrave;re et essayer de nouveau.
+<!-- ENDIF "FoundEntries" -->
+</CENTER>
+
+<FORM>
+<TABLE BORDER=2 WIDTH=100%%>
+<TR>
+<TD ALIGN=center width=50%%>
+<INPUT TYPE="button" VALUE="Pr&eacute;c&eacute;dent" onClick="history.back();">
+<TD ALIGN=center WIDTH=50%%>
+<!-- DS_HELPBUTTON "topic=AUTHMULTMATCH" -->
+</TABLE>
+</FORM>
+
+<!-- ENDHTML -->
+
+
diff --git a/ldap/clients/dsgw/config/fr/list-Groups.html b/ldap/clients/dsgw/config/fr/list-Groups.html
new file mode 100644
index 00000000..34390556
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/list-Groups.html
@@ -0,0 +1,38 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Recherche des groupes" -->
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT></CENTER>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR>
+<TH NOWRAP>Nom du groupe
+<TH NOWRAP>Description
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=description" -->
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<CENTER><FONT SIZE=+1>
+Veuillez effectuer une recherche diff&eacute;rente.
+</FONT></CENTER>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/fr/list-NT-Groups.html b/ldap/clients/dsgw/config/fr/list-NT-Groups.html
new file mode 100644
index 00000000..d9284475
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/list-NT-Groups.html
@@ -0,0 +1,46 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Search for NT Groups" -->
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT></CENTER>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR>
+<TH NOWRAP>Nom du groupe LDAP
+<TH NOWRAP>Nom du domaine NT
+<TH NOWRAP>Nom du groupe NT
+<TH NOWRAP>Description
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=ntgroupdomainid" "syntax=ntdomain" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=ntgroupdomainid" "syntax=ntgroupname" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=description" -->
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<CENTER><FONT SIZE=+1>
+Veuillez effectuer une recherche diff&eacute;rente.
+</FONT></CENTER>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
+
+
diff --git a/ldap/clients/dsgw/config/fr/list-NT-People.html b/ldap/clients/dsgw/config/fr/list-NT-People.html
new file mode 100644
index 00000000..71e2b32a
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/list-NT-People.html
@@ -0,0 +1,50 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Search for NT-People" -->
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT></CENTER>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR>
+<TH NOWRAP>Nom<TH NOWRAP>Domaine NT<TH NOWRAP>Nom d'utilisateur NT<TH NOWRAP>Num&eacute;ro de t&eacute;l&eacute;phone
+</TR>
+
+<!-- DS_SORTENTRIES "attr=cn" -->
+
+<!-- DS_ENTRYBEGIN -->
+
+<TR>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "label=" -->
+ onMouseOver="window.status='Cliquez ici pour afficher cette entr&eacute;e en d&eacute;tail'; return true">
+<!-- DS_ATTRIBUTE "attr=cn" "numfields=0" "defaultvalue=name" "options=readonly" -->
+</A>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=ntuserdomainid" "syntax=ntdomain" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=ntuserdomainid" "syntax=ntuserid" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" -->
+</TR>
+
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<CENTER><FONT SIZE=+1>
+Veuillez effectuer une recherche diff&eacute;rente.
+</FONT></CENTER>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
+
+
diff --git a/ldap/clients/dsgw/config/fr/list-Org-Units.html b/ldap/clients/dsgw/config/fr/list-Org-Units.html
new file mode 100644
index 00000000..30aba506
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/list-Org-Units.html
@@ -0,0 +1,38 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Recherche des unit&eacute;s organisationnelles" -->
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT></CENTER>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR><TH>Unit&eacute; organisationnelle<TH>Description <TH>Num&eacute;ro de t&eacute;l&eacute;phone
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->
+<TD>
+<!-- DS_ATTRIBUTE "attr=description" -->
+<TD>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" -->
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<CENTER><FONT SIZE=+1>
+Veuillez effectuer une recherche diff&eacute;rente.
+</FONT></CENTER>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/fr/list-Organizations.html b/ldap/clients/dsgw/config/fr/list-Organizations.html
new file mode 100644
index 00000000..3b4b6159
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/list-Organizations.html
@@ -0,0 +1,38 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Recherche des organisations" -->
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT></CENTER>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR><TH>Organisation<TH>Description <TH>Num&eacute;ro de t&eacute;l&eacute;phone
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->
+<TD>
+<!-- DS_ATTRIBUTE "attr=description" -->
+<TD>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" -->
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<CENTER><FONT SIZE=+1>
+Veuillez effectuer une recherche diff&eacute;rente.
+</FONT></CENTER>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/fr/list-People.html b/ldap/clients/dsgw/config/fr/list-People.html
new file mode 100644
index 00000000..b58ec1a9
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/list-People.html
@@ -0,0 +1,50 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Search for People" -->
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT></CENTER>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR>
+<TH NOWRAP>Nom<TH NOWRAP>Num&eacute;ro de t&eacute;l&eacute;phone<TH NOWRAP>Adresse &eacute;lectronique<TH NOWRAP>Titre
+</TR>
+
+<!-- DS_SORTENTRIES "attr=cn" -->
+
+<!-- DS_ENTRYBEGIN -->
+
+<TR>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "label=" -->
+ onMouseOver="window.status='Cliquez ici pour afficher cette entr&eacute;e en d&eacute;tail'; return true">
+<!-- DS_ATTRIBUTE "attr=cn" "numfields=0" "defaultvalue=name" "options=readonly" -->
+</A>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=title" -->
+</TR>
+
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<CENTER><FONT SIZE=+1>
+Veuillez effectuer une recherche diff&eacute;rente.
+</FONT></CENTER>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
+
+
diff --git a/ldap/clients/dsgw/config/fr/list-fa-Groups.html b/ldap/clients/dsgw/config/fr/list-fa-Groups.html
new file mode 100644
index 00000000..3d396c30
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/list-fa-Groups.html
@@ -0,0 +1,22 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Recherche de personnes" -->
+<!-- IF "FoundEntries" -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+<FORM>
+<!-- DS_ENTRYBEGIN -->
+
+<!-- DS_ENTRYEND -->
+<!-- DS_END_ENTRYFORM -->
+</FORM>
+
+<!-- ELSE -->
+<!-- DS_ALERT_NOENTRIES -->
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/fr/list-fa-People.html b/ldap/clients/dsgw/config/fr/list-fa-People.html
new file mode 100644
index 00000000..3d396c30
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/list-fa-People.html
@@ -0,0 +1,22 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Recherche de personnes" -->
+<!-- IF "FoundEntries" -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+<FORM>
+<!-- DS_ENTRYBEGIN -->
+
+<!-- DS_ENTRYEND -->
+<!-- DS_END_ENTRYFORM -->
+</FORM>
+
+<!-- ELSE -->
+<!-- DS_ALERT_NOENTRIES -->
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/fr/list-urlsearch.html b/ldap/clients/dsgw/config/fr/list-urlsearch.html
new file mode 100644
index 00000000..82e2993b
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/list-urlsearch.html
@@ -0,0 +1,38 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Recherche Èá base d'URL" -->
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT></CENTER>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR><TH>Nom<TH>Num&eacute;ro de t&eacute;l&eacute;phone<TH>Adresse &eacute;lectronique
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->
+<TD>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" -->
+<TD>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" -->
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<CENTER><FONT SIZE=+1>
+Veuillez effectuer une recherche diff&eacute;rente.
+</FONT></CENTER>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/fr/newentry.html b/ldap/clients/dsgw/config/fr/newentry.html
new file mode 100644
index 00000000..298d98c2
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/newentry.html
@@ -0,0 +1,27 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--newentry.html-->
+<TITLE>Passerelle Netscape Directory Server : New Entry </TITLE>
+<!-- DS_NEWENTRY_SCRIPT -->
+</HEAD>
+<FRAMESET ROWS=75,70,* BORDER=0 onLoad="init()">
+ <FRAME SRC="lang?<!-- GCONTEXT -->&file=newentrytitle.html" NORESIZE SCROLLING="NO">
+ <FRAME SRC="newentry?<!-- GCONTEXT -->&file=type"
+ NAME="newentryTypeFrame" SCROLLING="NO">
+ <FRAME SRC="newentry?<!-- GCONTEXT -->&file=name"
+ NAME="newentryNameFrame">
+</FRAMESET>
+
+<NOFRAMES>
+<BODY>
+Vous devez utiliser un client qui g&egrave;re la fonction de cadres pour pouvoir afficher ce document.
+</BODY>
+</NOFRAMES>
+</HTML>
+
diff --git a/ldap/clients/dsgw/config/fr/newentryName.html b/ldap/clients/dsgw/config/fr/newentryName.html
new file mode 100644
index 00000000..68055b2a
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/newentryName.html
@@ -0,0 +1,48 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--newentryName.html-->
+</HEAD>
+<!-- DS_NEWENTRY_NAME_BODY -->
+<p>
+<!-- DS_NEWENTRY_NAME_FORM -->
+<font SIZE="+2">Etape 2</font>
+Fournir un nom pour la nouvelle
+<!-- EVALUATE "entType.fullname" -->
+.
+<p><nobr><font SIZE="+1">
+<!-- EVALUATE "entType.rdnattr" -->
+=</font>
+<input TYPE="text" NAME="entryname" SIZE="40">
+</nobr>
+<p>
+<font SIZE="+2">Etape 3</font>
+
+<!-- DS_NEWENTRY_LOCATION_BEGIN -->
+Utilisez le menu d&eacute;roulant ci-dessous pour s&eacute;lectionner une adresse d'annuaire pour cette
+<!-- EVALUATE "entType.fullname" -->
+personne. Si vous s&eacute;lectionnez Autre, vous devez entrer le nom distinctif complet de l'emplacement o&ugrave; cette entr&eacute;e doit &ecirc;tre ajout&eacute;e.
+<p>
+<!-- DS_NEWENTRY_LOCATION_SELECT -->
+<OPTION VALUE="">Autre</OPTION>
+</SELECT>
+<input TYPE="text" NAME="dnsuffix" SIZE="70">
+<p>
+<font SIZE="+2">Etape 4</font>
+<!-- DS_NEWENTRY_LOCATION_END -->
+Cliquez sur Continuer. Une fen&ecirc;tre modifiable de l'entr&eacute;e est affich&eacute;e. Lorsque vous avez termin&eacute; d'entrer les informations demand&eacute;es, enregistrez l'entr&eacute;e.
+<p>
+<center><table BORDER="2" WIDTH="75%">
+<tr><td ALIGN="center" WIDTH="50%">
+<input TYPE="submit" VALUE="Continuer">
+<td ALIGN="center" WIDTH="50%">
+
+<!-- DS_HELP_BUTTON "ADDING" -->
+</table></center></form>
+</body></HTML>
+
diff --git a/ldap/clients/dsgw/config/fr/newentryType.html b/ldap/clients/dsgw/config/fr/newentryType.html
new file mode 100644
index 00000000..652c210c
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/newentryType.html
@@ -0,0 +1,14 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!--newentryType.html-->
+<!-- DS_NEWENTRY_TYPE_BODY -->
+<!-- DS_NEWENTRY_TYPE_FORM -->
+<font SIZE="+2">Etape 1</font>
+S&eacute;lectionner le type d'entr&eacute;e &agrave; cr&eacute;er.
+<!-- DS_NEWENTRY_TYPE_SELECT -->
+</form></body></HTML>
diff --git a/ldap/clients/dsgw/config/fr/search.html b/ldap/clients/dsgw/config/fr/search.html
new file mode 100644
index 00000000..485efdf2
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/search.html
@@ -0,0 +1,18 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- search.html -->
+<TITLE>Passerelle Netscape Directory Server : Standard Search</TITLE>
+<!-- DS_SEARCH_SCRIPT -->
+</HEAD>
+<FRAMESET ROWS=75,100,* BORDER=0 onLoad="init()">
+ <FRAME SRC="lang?<!-- GCONTEXT -->&file=searchtitle.html" SCROLLING="NO">
+ <FRAME SRC="search?<!-- GCONTEXT -->&file=string" NAME=searchFrame NORESIZE SCROLLING="NO">
+ <FRAME SRC="lang?<!-- GCONTEXT -->&file=greeting.html" NAME=outputFrame>
+</FRAMESET>
+</HTML>
diff --git a/ldap/clients/dsgw/config/fr/searchString.html b/ldap/clients/dsgw/config/fr/searchString.html
new file mode 100644
index 00000000..2be9d1a2
--- /dev/null
+++ b/ldap/clients/dsgw/config/fr/searchString.html
@@ -0,0 +1,30 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- searchString.html -->
+</HEAD>
+<!-- DS_SEARCH_BODY -->
+<!-- DS_SEARCH_FORM "target=outputFrame" -->
+<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH=100%>
+<TR><TH ALIGN=RIGHT>Rechercher : </TH><TD>
+<!-- DS_SEARCH_TYPE -->
+</TD>
+<TH>dans :</TH><TD>
+<!-- DS_SEARCH_BASE -->
+</TD></TR>
+<TR><TH ALIGN=RIGHT>Rechercher : </TH>
+<TD COLSPAN=3>
+<INPUT NAME="searchstring" SIZE=30>
+<INPUT TYPE="SUBMIT" VALUE="Rechercher">&nbsp;&nbsp;
+<!-- DS_HELP_BUTTON "SMARTSEARCH" -->
+</TD></TR>
+</TABLE>
+<INPUT TYPE="hidden" NAME="ldapsizelimit" VALUE="1000">
+<INPUT TYPE="hidden" NAME="ldaptimelimit" VALUE="180">
+<!-- PCONTEXT -->
+</FORM></BODY></HTML>
diff --git a/ldap/clients/dsgw/config/ja/authPassword.html b/ldap/clients/dsgw/config/ja/authPassword.html
new file mode 100644
index 00000000..72f47ce3
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/authPassword.html
@@ -0,0 +1,29 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--authPassword.html-->
+<TITLE>èªè¨¼...</TITLE>
+<!-- DS_AUTH_PASSWORD_SCRIPT -->
+</HEAD>
+
+<!-- DS_AUTH_PASSWORD_BODY -->
+<!-- DS_AUTH_PASSWORD_INFO -->
+<!-- DS_AUTH_PASSWORD_FORM -->
+<P>
+パスワード<b>
+<!-- DS_AUTH_PASSWORD_NAME -->
+</b>: <INPUT NAME="password" TYPE="password" SIZE=16>
+<P>
+<CENTER>
+<TABLE BORDER=2 WIDTH=100%>
+<TR>
+<!-- DS_AUTH_PASSWORD_BUTTONS -->
+</TABLE>
+</FORM>
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/config/ja/authSearch.html b/ldap/clients/dsgw/config/ja/authSearch.html
new file mode 100644
index 00000000..c4120b3a
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/authSearch.html
@@ -0,0 +1,33 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--authSearch.html-->
+<TITLE>Authenticate...</TITLE>
+<!-- DS_AUTH_SEARCH_SCRIPT -->
+</HEAD>
+<!-- DS_AUTH_SEARCH_BODY -->
+<!-- DS_AUTH_SEARCH_INFO -->
+<!-- DS_AUTH_SEARCH_FORM -->
+Directory ã¸ã®èªè¨¼ã«ãŠã‘る最åˆã®ã‚¹ãƒ†ãƒƒãƒ—ã¯ã€èº«åˆ†ã‚’証明ã™ã‚‹ã“ã¨ã§ã™ã€‚<br>åå‰ã‚’タイプã—ã¦ãã ã•ã„。
+<!-- DS_AUTH_SEARCH_NAME -->
+<P>
+<CENTER>
+<TABLE BORDER=1 WIDTH=100%%>
+<TR>
+<!-- DS_AUTH_SEARCH_BUTTONS -->
+</TABLE>
+</FORM>
+<P>
+<!-- DS_AUTH_AS_ROOT_FORM -->
+<INPUT TYPE="submit" VALUE="Directory Manager ã¨ã—ã¦èªè¨¼">&nbsp;(Directory Administratorã«é™ã‚Šåˆ©ç”¨å¯èƒ½)
+<INPUT TYPE="hidden" NAME="ldapsizelimit" VALUE="1000">
+<INPUT TYPE="hidden" NAME="ldaptimelimit" VALUE="180">
+<!-- PCONTEXT -->
+</FORM>
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/config/ja/csearch.html b/ldap/clients/dsgw/config/ja/csearch.html
new file mode 100644
index 00000000..c7d437eb
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/csearch.html
@@ -0,0 +1,23 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--csearch.html-->
+<TITLE>Netscape Directory Server Gateway: Advanced Search</TITLE>
+<!-- DS_CSEARCH_SCRIPT -->
+</HEAD>
+<FRAMESET ROWS="75,70,70,*" BORDER=0 onLoad="init()">
+ <FRAME SRC="lang?<!-- GCONTEXT -->&file=csearchtitle.html" SCROLLING="NO">
+ <FRAMESET COLS="33%,33%,*" BORDER=0>
+ <FRAME SRC="csearch?<!-- GCONTEXT -->&file=type" NAME="searchTypeFrame" NORESIZE SCROLLING="NO">
+ <FRAME SRC="csearch?<!-- GCONTEXT -->&file=attr" NAME="searchAttrFrame" NORESIZE SCROLLING="NO">
+ <FRAME SRC="csearch?<!-- GCONTEXT -->&file=match" NAME="searchMatchFrame" NORESIZE SCROLLING="NO">
+ </FRAMESET>
+ <FRAME SRC="csearch?<!-- GCONTEXT -->&file=string" NAME="searchStringFrame" NORESIZE SCROLLING="NO">
+ <FRAME SRC="lang?<!-- GCONTEXT -->&file=emptyFrame.html" NAME="outputFrame">
+</FRAMESET>
+</HTML>
diff --git a/ldap/clients/dsgw/config/ja/csearchAttr.html b/ldap/clients/dsgw/config/ja/csearchAttr.html
new file mode 100644
index 00000000..8d67d1c6
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/csearchAttr.html
@@ -0,0 +1,17 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--csearchAttr.html-->
+</HEAD>
+<!-- DS_CSEARCH_ATTR_BODY -->
+<!-- DS_CSEARCH_ATTR_FORM -->
+<table>
+<tr VALIGN=BASELINE><td ALIGN=RIGHT></td><td>
+<!-- DS_CSEARCH_ATTR_SELECT -->
+</td></tr>
+</table></form></body></HTML>
diff --git a/ldap/clients/dsgw/config/ja/csearchBase.html b/ldap/clients/dsgw/config/ja/csearchBase.html
new file mode 100644
index 00000000..d3b59aff
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/csearchBase.html
@@ -0,0 +1,17 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--csearchBase.html-->
+</HEAD>
+<!-- DS_CSEARCH_BASE_BODY -->
+<table>
+<tr VALIGN=CENTER><th>存在ã™ã‚‹å ´æ‰€:</th><td>
+<!-- EVALUATE "parent.UFNsearchBase" -->
+</td>
+</table>
+</body></HTML>
diff --git a/ldap/clients/dsgw/config/ja/csearchString.html b/ldap/clients/dsgw/config/ja/csearchString.html
new file mode 100644
index 00000000..c7a8e4a5
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/csearchString.html
@@ -0,0 +1,28 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--csearchString.html-->
+</HEAD>
+<!-- DS_CSEARCH_STRING_BODY -->
+<!-- DS_CSEARCH_STRING_FORM "target=outputFrame" -->
+<TABLE ALIGN=center>
+<TR VALIGN=CENTER><TD>
+<INPUT NAME="searchstring" SIZE=20>
+ã‚’ã€
+<!-- EVALUATE "parent.UFNsearchBase" -->
+&nbsp; ã‹ã‚‰
+<NOBR>
+<INPUT TYPE="SUBMIT" VALUE="検索">
+<!-- DS_HELP_BUTTON "ASEARCH" -->
+</NOBR></TD>
+</TR></TABLE>
+<INPUT TYPE="hidden" NAME="ldapsizelimit" VALUE="1000">
+<INPUT TYPE="hidden" NAME="ldaptimelimit" VALUE="180">
+<!-- PCONTEXT -->
+</FORM>
+</BODY></HTML>
diff --git a/ldap/clients/dsgw/config/ja/csearchType.html b/ldap/clients/dsgw/config/ja/csearchType.html
new file mode 100644
index 00000000..f7b400e8
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/csearchType.html
@@ -0,0 +1,18 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--csearchType.html-->
+</HEAD>
+<!-- DS_CSEARCH_TYPE_BODY -->
+<!-- DS_CSEARCH_TYPE_FORM -->
+<table>
+<tr VALIGN=BASELINE><th ALIGN=RIGHT>検索:</th><td>
+<!-- DS_CSEARCH_TYPE_SELECT -->
+</td></tr>
+</table>
+</form></body></HTML>
diff --git a/ldap/clients/dsgw/config/ja/display-country.html b/ldap/clients/dsgw/config/ja/display-country.html
new file mode 100644
index 00000000..000dc09f
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/display-country.html
@@ -0,0 +1,54 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_OBJECTCLASS "value=country" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>国 -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY -->
+
+<TABLE>
+<TR><TD NOWRAP>
+<IMG SRC="lang?<!-- GCONTEXT -->&file=country.gif" ALT="Country" HSPACE=5>
+</TD><TD><FONT SIZE="+2">
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</FONT></TD></TR></TABLE>
+
+<TABLE CELLSPACING="5" >
+
+<TR><TD VALIGN="TOP" NOWRAP>国å:</TD><TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=co" "options=sort" -->
+</B></TD><TD WIDTH="20%"></TD>
+</B><TD VALIGN="TOP">記述:</TD><TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=description" -->
+</B></TD></TR>
+
+<TR><TD VALIGN="TOP">å‚ç…§:</TD><TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">URL:</TD><TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=labeledURI" "syntax=url" -->
+</B></TD></TR>
+
+</TABLE>
+
+<HR>
+
+ã“ã®ã‚¨ãƒ³ãƒˆãƒªã®æœ€çµ‚変更日: <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B>変更者: <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/ja/display-dnedit.html b/ldap/clients/dsgw/config/ja/display-dnedit.html
new file mode 100644
index 00000000..06626c81
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/display-dnedit.html
@@ -0,0 +1,76 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_ENTRYBEGIN -->
+<!-- DS_EMIT_BASE_HREF -->
+<TITLE>
+Edit
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY "onLoad='document.searchForm.searchstring.focus();'" -->
+
+<!-- DS_LAST_OP_INFO "prefix=<FONT SIZE=%22%2B1%22>" "suffix=</FONT><HR>" -->
+
+<!-- DS_BEGIN_DNSEARCHFORM -->
+<INPUT TYPE=hidden NAME=mode VALUE="smart">
+<INPUT TYPE=hidden NAME=dnlist_js VALUE="true">
+<INPUT TYPE=hidden NAME=listifone VALUE="true">
+<INPUT TYPE=hidden NAME=listtemplate VALUE="">
+<INPUT TYPE=hidden NAME=faMode VALUE="add">
+<!-- PCONTEXT -->
+<INPUT TYPE=hidden NAME=ldapsizelimit VALUE="1000">
+<INPUT TYPE=hidden NAME=ldaptimelimit VALUE="180">
+
+<FONT SIZE="+2">
+修正
+<!-- DS_DNDESC -->
+:
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT>
+
+<TABLE CELLSPACING=0 CELLPADDING=0><TR>
+
+<TD NOWRAP>
+一致ã™ã‚‹
+<SELECT NAME="type">
+<OPTION SELECTED VALUE="People">ユーザ
+<OPTION VALUE="Groups">グループ
+</SELECT>
+</TD>
+
+<TD NOWRAP>
+を検索&nbsp;
+<INPUT NAME="searchstring" SIZE=15>
+</TD>
+
+<TD>
+<INPUT TYPE=SUBMIT VALUE=" 検索ã—ã¦è¿½åŠ  ">
+<BR>
+<!-- DS_DNREMOVEBUTTON "VALUE= 検索ã—ã¦å‰Šé™¤ " -->
+</TD>
+
+</TR>
+</TABLE>
+
+<P>
+<CENTER><TABLE BORDER="2" WIDTH="100%">
+<TR>
+<TD WIDTH="33%" ALIGN="center">
+<INPUT TYPE=BUTTON VALUE=" 変更ä¿ç®¡ " onClick="parent.saveChanges();">
+<TD WIDTH="34%" ALIGN="center">
+<INPUT TYPE=BUTTON VALUE=" キャンセル " onClick="parent.cancel();">
+<TD WIDTH=33% ALIGN=center>
+<!-- DS_HELPBUTTON "topic=EDIT_GROUPMEM" -->
+</TD></TR></TABLE></CENTER>
+
+<INPUT TYPE=hidden NAME=completion_javascript VALUE='parent.updateList(parent.controlFrame.document.searchForm.faMode.value, parent.dnlist, parent.stagingFrame.dnlist, parent.outputFrame);parent.controlFrame.document.searchForm.faMode.value="add";'>
+<!-- DS_END_DNSEARCHFORM -->
+
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/ja/display-dneditpeople.html b/ldap/clients/dsgw/config/ja/display-dneditpeople.html
new file mode 100644
index 00000000..d1c2b855
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/display-dneditpeople.html
@@ -0,0 +1,75 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_ENTRYBEGIN -->
+<!-- DS_EMIT_BASE_HREF -->
+<TITLE>
+Edit
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY "onLoad='document.searchForm.searchstring.focus();'" -->
+
+<!-- DS_LAST_OP_INFO "prefix=<FONT SIZE=%22%2B1%22>" "suffix=</FONT><HR>" -->
+
+<!-- DS_BEGIN_DNSEARCHFORM -->
+<INPUT TYPE=hidden NAME=mode VALUE="smart">
+<INPUT TYPE=hidden NAME=dnlist_js VALUE="true">
+<INPUT TYPE=hidden NAME=listifone VALUE="true">
+<INPUT TYPE=hidden NAME=listtemplate VALUE="">
+<INPUT TYPE=hidden NAME=faMode VALUE="add">
+<!-- PCONTEXT -->
+<INPUT TYPE=hidden NAME=ldapsizelimit VALUE="1000">
+<INPUT TYPE=hidden NAME=ldaptimelimit VALUE="180">
+
+<FONT SIZE="+2">
+修正
+<!-- DS_DNDESC -->
+:
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT>
+
+<TABLE CELLSPACING=0 CELLPADDING=0><TR>
+
+<TD NOWRAP>
+一致ã™ã‚‹
+<SELECT NAME="type">
+<OPTION SELECTED VALUE="People">ユーザ
+</SELECT>
+</TD>
+
+<TD NOWRAP>
+を検索&nbsp;
+<INPUT NAME="searchstring" SIZE=15>
+</TD>
+
+<TD>
+<INPUT TYPE=SUBMIT VALUE=" 検索ã—ã¦è¿½åŠ  ">
+<BR>
+<!-- DS_DNREMOVEBUTTON "VALUE= 検索ã—ã¦å‰Šé™¤ ">
+</TD>
+
+</TR>
+</TABLE>
+
+<P>
+<CENTER><TABLE BORDER="2" WIDTH="100%">
+<TR>
+<TD WIDTH="33%" ALIGN="center">
+<INPUT TYPE=BUTTON VALUE=" 変更ä¿ç®¡ " onClick="parent.saveChanges();">
+<TD WIDTH="34%" ALIGN="center">
+<INPUT TYPE=BUTTON VALUE=" キャンセル " onClick="parent.cancel();">
+<TD WIDTH=33% ALIGN=center>
+<!-- DS_HELPBUTTON "topic=EDIT_PERSON_REF" -->
+</TD></TR></TABLE></CENTER>
+
+<INPUT TYPE=hidden NAME=completion_javascript VALUE='parent.updateList(parent.controlFrame.document.searchForm.faMode.value, parent.dnlist, parent.stagingFrame.dnlist, parent.outputFrame);parent.controlFrame.document.searchForm.faMode.value="add";'>
+<!-- DS_END_DNSEARCHFORM -->
+
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/ja/display-group.html b/ldap/clients/dsgw/config/ja/display-group.html
new file mode 100644
index 00000000..4cd85a72
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/display-group.html
@@ -0,0 +1,150 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_OBJECTCLASS "value=groupOfNames" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+New
+<!-- ENDIF // Adding -->
+Group Entry -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE>
+<TR>
+<TD>
+<IMG SRC="lang?<!-- GCONTEXT -->&file=group.gif" ALT="グループ" HSPACE=5 >
+<FONT SIZE="+2">
+<!-- IF "Adding" -->
+æ–°è¦ã‚°ãƒ«ãƒ¼ãƒ— -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT>
+</TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- DS_EDITBUTTON "label=グループã®ä¿®æ­£" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=æ–°è¦ã‚°ãƒ«ãƒ¼ãƒ—ã®ä¿ç®¡" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=キャンセル" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_GROUP" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_GROUP" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_RENAMEBUTTON "label=グループåã®å¤‰æ›´" "prompt=ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã®æ–°ã—ã„åå‰ã‚’入力ã—ã¦ãã ã•ã„:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=グループã®å‰Šé™¤" "prompt=ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—を削除ã—ã¾ã™ã‹?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="groupOfNames">
+<!-- ENDIF // Adding -->
+
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<HR>
+<!-- IF "!Displaying" -->
+<B>* ã¯å¿…è¦ãªãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’示ã—ã¦ã„ã¾ã™ã€‚</B><BR>
+<!-- ENDIF -->
+
+
+<TABLE CELLSPACING="5">
+<TR>
+<TD NOWRAP>åå‰:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=cn" "cols=>40" -->
+</B></TD><TD WIDTH="20%"></TD>
+</TR>
+
+<TR>
+<TD NOWRAP>記述:</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>40" "defaultvalue=none" -->
+</B></TD></TR>
+
+<TR>
+<TD NOWRAP VALIGN="TOP">所有者:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=修正..." "template=dnedit" "attr=owner" "desc=所有者" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=owner" "syntax=dn" "options=sort,readonly" -->
+</B></TD>
+
+<TR>
+<TD NOWRAP VALIGN="TOP">å‚ç…§:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=修正..." "template=dnedit" "attr=seeAlso" "desc=å‚ç…§" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP COLSPAN="4">
+<!-- IF "!Adding" -->
+<B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "options=sort,readonly" -->
+</B>
+<!-- ELSE // !Adding -->
+<I>ã“れらã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’修正ã™ã‚‹å‰ã«ã“ã®ã‚¨ãƒ³ãƒˆãƒªã‚’ä¿å­˜ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚</I>
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD NOWRAP VALIGN="top">グループ メンãƒãƒ¼:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=修正..." "template=dnedit" "attr=uniquemember" "desc=グループ メンãƒãƒ¼" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=uniquemember" "syntax=dn" "options=sort,readonly" -->
+</B></TD></TR>
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+<HR>
+ã“ã®ã‚¨ãƒ³ãƒˆãƒªã®æœ€çµ‚変更日: <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> 変更者: <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/ja/display-groupun.html b/ldap/clients/dsgw/config/ja/display-groupun.html
new file mode 100644
index 00000000..479118c9
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/display-groupun.html
@@ -0,0 +1,150 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_OBJECTCLASS "value=groupOfUniqueNames" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+New
+<!-- ENDIF // Adding -->
+Group Entry -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE>
+<TR>
+<TD>
+<IMG SRC="lang?<!-- GCONTEXT -->&file=group.gif" ALT="グループ" HSPACE=5 >
+<FONT SIZE="+2">
+<!-- IF "Adding" -->
+æ–°è¦ã‚°ãƒ«ãƒ¼ãƒ— -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT>
+</TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- DS_EDITBUTTON "label=グループ修正" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=グループä¿ç®¡" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=キャンセル" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_GROUP" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_GROUP" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_RENAMEBUTTON "label=グループåã®å¤‰æ›´" "prompt=ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã®æ–°ã—ã„åå‰ã‚’入力ã—ã¦ãã ã•ã„:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=グループ削除" "prompt=ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—を削除ã—ã¾ã™ã‹?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="groupOfUniqueNames">
+<!-- ENDIF // Adding -->
+
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<HR>
+<!-- IF "!Displaying" -->
+<B>* ã¯å¿…è¦ãªãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’示ã—ã¦ã„ã¾ã™ã€‚</B><BR>
+<!-- ENDIF -->
+
+
+<TABLE CELLSPACING="5">
+<TR>
+<TD NOWRAP>åå‰:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=cn" "cols=>40" -->
+</B></TD><TD WIDTH="20%"></TD>
+</TR>
+
+<TR>
+<TD NOWRAP>記述:</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>40" "defaultvalue=none" -->
+</B></TD></TR>
+
+<TR>
+<TD NOWRAP VALIGN="TOP">所有者:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=修正..." "template=dnedit" "attr=owner" "desc=所有者" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=owner" "syntax=dn" "options=sort,readonly" -->
+</B></TD>
+
+<TR>
+<TD NOWRAP VALIGN="TOP">å‚ç…§:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=修正..." "template=dnedit" "attr=seeAlso" "desc=å‚ç…§" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP COLSPAN="4">
+<!-- IF "!Adding" -->
+<B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "options=sort,readonly" -->
+</B>
+<!-- ELSE // !Adding -->
+<I>ã“れらã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’修正ã™ã‚‹å‰ã«ã“ã®ã‚¨ãƒ³ãƒˆãƒªã‚’ä¿å­˜ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚</I>
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD NOWRAP VALIGN="top">グループ メンãƒãƒ¼:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=修正..." "template=dnedit" "attr=uniquemember" "desc=グループ メンãƒãƒ¼" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=uniquemember" "syntax=dn" "options=sort,readonly" -->
+</B></TD></TR>
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+<HR>
+ã“ã®ã‚¨ãƒ³ãƒˆãƒªã®æœ€çµ‚変更日: <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> 変更者: <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/ja/display-mailgroup.html b/ldap/clients/dsgw/config/ja/display-mailgroup.html
new file mode 100644
index 00000000..59016d33
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/display-mailgroup.html
@@ -0,0 +1,124 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_OBJECTCLASS "value=rfc822mailgroup" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+æ–°è¦
+<!-- ENDIF // Adding -->
+メール グループã®ã‚¨ãƒ³ãƒˆãƒª -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE>
+<TR>
+<TD>
+<IMG SRC="lang?<!-- GCONTEXT -->&file=group.gif" ALT="グループ" HSPACE=5 >
+<FONT SIZE="+2">
+<!-- IF "Adding" -->
+æ–°è¦ãƒ¡ãƒ¼ãƒ« グループ
+<!-- ENDIF // Adding -->
+
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT>
+</TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- DS_EDITBUTTON "label=グループã®ä¿®æ­£" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=æ–°è¦ã‚°ãƒ«ãƒ¼ãƒ—ã®ä¿ç®¡" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=キャンセル" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_MAILGROUP" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_MAILGROUP" -->
+<!-- ENDIF // Adding -->
+
+<!-- IF "Editing" -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_RENAMEBUTTON "label=グループåã®å¤‰æ›´" "prompt=ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã®æ–°ã—ã„åå‰ã‚’入力ã—ã¦ãã ã•ã„:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=グループã®å‰Šé™¤" "prompt=ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—を削除ã—ã¾ã™ã‹?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="rfc822mailgroup">
+<!-- ENDIF // Adding -->
+<!-- PCONTEXT -->
+
+<HR>
+
+<TABLE CELLSPACING="5">
+
+<TR><TD VALIGN="TOP">åå‰:</TD><TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=cn" -->
+</B></TD><TD WIDTH="20%"></TD>
+<TD VALIGN="TOP">記述:</TD><TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=multilineDescription" "defaultvalue=none" -->
+</B></TD></TR>
+
+<TR><TD VALIGN="TOP">所有者:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=owner" "syntax=dn" "cols=>40" -->
+</B></TD></TR>
+
+<TR><TD VALIGN="TOP" NOWRAP>å‚ç…§:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "cols=>40" -->
+</B></TD></TR>
+
+<TR><TD NOWRAP COLSPAN="2">
+<!-- DS_ATTRIBUTE "attr=joinable" "syntax=bool" "type=radio" "true=ãã®ä»–も加ãˆã‚‹" "false=ãã®ä»–を加ãˆãªã„" "defaultvalue=FALSE" -->
+</TD><TD></TD><TD NOWRAP COLSPAN="2">
+<!-- DS_ATTRIBUTE "attr=suppressNoEmailError" "syntax=bool" "type=radio" "true=「電å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ãªã—ã€ã‚¨ãƒ©ãƒ¼ã‚’表示ã—ãªã„" "false=「電å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ãªã—ã€ã‚¨ãƒ©ãƒ¼ã‚’戻ã™" "defaultvalue=FALSE" -->
+</TD></TR>
+
+<HR>
+
+<TR><TD VALIGN="TOP" NOWRAP>グループ メンãƒãƒ¼:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=member" "syntax=dn" "numfields=+4" "options=sort" -->
+</B></TD></TR>
+
+<TR><TD VALIGN="TOP" NOWRAP>é›»å­ãƒ¡ãƒ¼ãƒ«ãƒ¡ãƒ³ãƒãƒ¼:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" "numfields=+4" "cols=>30" "options=sort" -->
+</B></TD></TR>
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+<HR>
+ã“ã®ã‚¨ãƒ³ãƒˆãƒªã®æœ€çµ‚変更日: <B>
+<!-- DS_ATTRIBUTE "attr=lastModifiedTime" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B>変更者: <B>
+<!-- DS_ATTRIBUTE "attr=lastModifiedBy" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/ja/display-ntgroup.html b/ldap/clients/dsgw/config/ja/display-ntgroup.html
new file mode 100644
index 00000000..afa58379
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/display-ntgroup.html
@@ -0,0 +1,218 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_OBJECTCLASS "value=ntGroup" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+New
+<!-- ENDIF // Adding -->
+NT Group Entry -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- Changed by: Ko-Haw Nieh, 16-Mar-1998 -->
+<!-- Changed by: Ko-Haw Nieh, 16-Mar-1998 -->
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE>
+<TR>
+<TD>
+<IMG SRC="lang?<!-- GCONTEXT -->&file=group.gif" ALT="グループ" HSPACE=5 >
+<FONT SIZE="+2">
+<!-- IF "Adding" -->
+æ–°è¦NTグループ -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT>
+</TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- DS_EDITBUTTON "label=NTグループ修正" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=æ–°è¦NTグループをä¿ç®¡" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=キャンセル" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_NTGROUP" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_NTGROUP" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_RENAMEBUTTON "label=NTグループå変更" "prompt=ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã®æ–°ã—ã„åå‰ã‚’入力ã—ã¦ãã ã•ã„:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=NTグループ削除" "prompt=ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—を削除ã—ã¾ã™ã‹?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="ntGroup">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="groupOfUniqueNames">
+<!-- ENDIF // Adding -->
+
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<HR>
+<!-- IF "!Displaying" -->
+<B>* ã¯å¿…è¦ãªãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’示ã—ã¦ã„ã¾ã™ã€‚</B><BR>
+<!-- ENDIF -->
+
+
+<TABLE CELLSPACING="5">
+<TR>
+<TD NOWRAP>åå‰:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=cn" "cols=>40" -->
+</B></TD><TD WIDTH="20%"></TD>
+</TR>
+
+<TR>
+<TD NOWRAP>NTグループå:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD NOWRAP><B>
+<!-- IF "!Adding" -->
+<!-- DS_ATTRIBUTE "attr=ntGroupDomainId" "syntax=ntgroupname" "cols=>16" "options=readonly" "defaultvalue=none" -->
+<!-- ELSE // Adding -->
+<!-- DS_ATTRIBUTE "attr=ntGroupDomainId" "syntax=ntgroupname" "cols=>16" "defaultvalue=none" -->
+<!-- ENDIF // Adding -->
+</B></TD></TR>
+
+<TR>
+<TD NOWRAP>NTグループ タイプ:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD NOWRAP><B>
+<!-- IF "!Adding" -->
+<!-- DS_ATTRIBUTE "attr=nTGroupType" "defaultvalue=Global" "options=readonly" "cols=>16" -->
+<!-- ELSE // Adding -->
+<!-- DS_ATTRIBUTE "attr=nTGroupType" "defaultvalue=Global" "cols=>16" -->
+<!-- ENDIF // Adding -->
+</B></TD></TR>
+
+<TR>
+<TD NOWRAP>NTグループ ドメイン:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=ntGroupDomainId" "syntax=ntdomain" "cols=>16" "defaultvalue=none" -->
+</B></TD></TR>
+
+<TR>
+<TD NOWRAP>記述:</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>40" "defaultvalue=none" -->
+</B></TD></TR>
+
+<TR>
+<TD NOWRAP>言語情報:</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=l" "cols=>40" "defaultvalue=none" -->
+</B></TD></TR>
+
+<TR>
+<TD NOWRAP>æ©Ÿé–¢å˜ä½:</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=ou" "cols=>40" "defaultvalue=none" -->
+</B></TD></TR>
+
+<TR>
+<TD NOWRAP VALIGN="TOP">所有者:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=修正..." "template=dnedit" "attr=owner" "desc=所有者" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=owner" "syntax=dn" "options=sort,readonly" -->
+</B></TD>
+
+<TR>
+<TD NOWRAP VALIGN="TOP">å‚ç…§:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=修正..." "template=dnedit" "attr=seeAlso" "desc=å‚ç…§" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP COLSPAN="4">
+<!-- IF "!Adding" -->
+<B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "options=sort,readonly" -->
+</B>
+<!-- ELSE // !Adding -->
+<I>ã“れらã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’修正ã™ã‚‹å‰ã«ã“ã®ã‚¨ãƒ³ãƒˆãƒªã‚’ä¿å­˜ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚</I>
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD NOWRAP VALIGN="top">NTグループ メンãƒãƒ¼:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=修正..." "template=dnedit" "attr=uniquemember" "desc=NTグループ メンãƒãƒ¼" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=uniquemember" "syntax=dn" "options=sort,readonly" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>グループを削除ã—ãŸå ´åˆã¯NTグループを削除:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "syntax=bool" "type=radio" "true=ã¯ã„" "false=ã„ã„ãˆ" "defaultvalue=FALSE" "attr=nTGroupDeleteGroup" -->
+</B></TD><TD></TD>
+</B></TD></TR>
+
+<!-- IF "Adding" -->
+<TR>
+<TD VALIGN="TOP">æ–°è¦NTグループã®ä½œæˆ :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "syntax=bool" "type=radio" "true=ã¯ã„" "false=ã„ã„ãˆ" "defaultvalue=TRUE" "attr=nTGroupCreateNewGroup" -->
+</B></TD><TD></TD></TR>
+
+<!-- ENDIF // Adding -->
+</TABLE>
+
+<!-- IF "!Adding" -->
+<HR>
+ã“ã®ã‚¨ãƒ³ãƒˆãƒªã®æœ€çµ‚変更日: <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> 変更者: <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/ja/display-ntperson.html b/ldap/clients/dsgw/config/ja/display-ntperson.html
new file mode 100644
index 00000000..a9853b6f
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/display-ntperson.html
@@ -0,0 +1,506 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- NT User person directory entry -->
+<!-- DS_OBJECTCLASS "value=person,inetOrgPerson,nTUser" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+New
+<!-- ENDIF // Adding -->
+NT Person Entry -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE>
+<!-- Changed by: Ko-Haw Nieh, 27-Mar-1998 -->
+
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+function showVCard()
+{
+<!-- DS_ATTRIBUTE "attr=_vcard" "options=link" "mimetype=text/x-vcard" "prefix=var cardurl=" "suffix=";" -->
+
+ document.location.href = cardurl;
+}
+// End hiding -->
+</SCRIPT>
+
+</HEAD>
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE><TR><TD>
+<!-- DS_ATTRIBUTE "attr=jpegPhoto" "type=hidden" "options=typeonly" -->
+<!-- IF "AttributeHasValues" "jpegPhoto" -->
+<IMG SRC=
+<!-- DS_ATTRIBUTE "attr=jpegPhoto" "options=link" "mimetype=image/jpeg" -->
+BORDER=0></TD>
+<TD>
+<!-- ENDIF -->
+<!-- A HREF="javascript:showVCard()" -->
+<IMG SRC="lang?<!-- GCONTEXT -->&file=person.gif" ALT="ユーザ(クリックã™ã‚‹ã¨ã‚«ãƒ¼ãƒ‰ãŒè¡¨ç¤ºã•ã‚Œã¾ã™)"
+ BORDER=0 HSPACE=5>
+
+</A>
+</TD>
+<!-- IF "DisplayOrgChart" -->
+<TD><FONT FACE="PrimaSans BT, Verdana, Sans-Serif" SIZE="-1">
+<A HREF=
+<!-- DS_ORGCHARTLINK -->
+ >
+<IMG SRC="lang?<!-- GCONTEXT -->&file=orgicon.gif" BORDER=0 ALT="Click to display organization chart" HSPACE=5></a>
+</FONT>
+</TD>
+<!-- ENDIF -->
+<TD><FONT SIZE="+2">
+<!-- IF "Adding" -->
+æ–°è¦NTユーザ -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT></TD></TR></TABLE>
+
+<!-- DS_ATTRIBUTE "attr=userCertificate;binary" "type=hidden" "options=typeonly" -->
+<!-- IF "AttributeHasValues" "userCertificate;binary" -->
+<A HREF=
+<!-- DS_ATTRIBUTE "attr=userCertificate;binary" "options=link" "mimetype=application/x-x509-ca-cert" -->
+>Download Certificate</A>
+<!-- ENDIF -->
+
+<!-- DS_ATTRIBUTE "attr=audio" "type=hidden" "options=typeonly" -->
+<!-- IF "AttributeHasValues" "audio" -->
+&nbsp;&nbsp;
+<A HREF=
+<!-- DS_ATTRIBUTE "attr=audio" "options=link" "mimetype=audio/basic" -->
+>Play Audio Clip</A>
+<!-- ENDIF -->
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- INPUT TYPE="button" VALUE="カードを表示" onClick="showVCard()" -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_EDITBUTTON "label=NTユーザã®ä¿®æ­£" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=æ–°è¦NTユーザをä¿ç®¡" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=キャンセル" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_NTPERSON" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_NTPERSON" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_EDITASBUTTON "label=Directory パスワードを変更" "template=passwd" -->
+</TD><TD>
+<!-- DS_RENAMEBUTTON "label=ユーザåã®å¤‰æ›´" "prompt=ã“ã®ãƒ¦ãƒ¼ã‚¶ã®æ–°ã—ã„åå‰ã‚’入力ã—ã¦ãã ã•ã„:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=NTユーザã®å‰Šé™¤" "prompt=ã“ã®ãƒ¦ãƒ¼ã‚¶ã‚’削除ã—ã¾ã™ã‹?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="person">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="organizationalPerson">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="inetOrgPerson">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="nTUser">
+<!-- ENDIF // Adding -->
+
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<!-- IF "!Displaying" -->
+<B>* ã¯å¿…è¦ãªãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’示ã—ã¦ã„ã¾ã™ã€‚</B><BR>
+<!-- ENDIF -->
+
+<TABLE CELLSPACING="2" BORDER BGCOLOR=#f2f2f2 WIDTH=95%>
+<TR>
+<TD BGCOLOR=#006666 COLSPAN=4><FONT COLOR=WHITE>
+連絡先</TD>
+</TR>
+
+<TD VALIGN="top" NOWRAP>姓:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=sn" "cols=>16" -->
+</B></TD>
+<TD VALIGN="top" NOWRAP ROWSPAN="2">æ°å:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="top" NOWRAP ROWSPAN="2"><B>
+<!-- DS_ATTRIBUTE "attr=cn" "numfields=+1" "cols=>23" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="top" NOWRAP>å:</TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=givenName" "cols=>16" -->
+</B></TD>
+</TR>
+
+<!-- IF "Adding" -->
+<TR>
+<TD>Directory Password:</TD><TD>
+<!-- DS_NEWPASSWORD "cols=>16" -->
+</B></TD>
+<TD> Repeat password to confirm:</TD><TD>
+<!-- DS_CONFIRM_NEWPASSWORD "cols=>16" -->
+</TD></TR>
+<!-- ENDIF // Adding -->
+
+<TR>
+<TD VALIGN="TOP">電話:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>16" "numfields=+1" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" "cols=>23" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">ファックス:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=facsimiletelephonenumber" "syntax=tel" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>ユーザ ID:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=uid" "cols=>16" "options=unique" -->
+</B></TD></TR>
+<INPUT TYPE="hidden" NAME="desc_uid" VALUE="user id">
+<!-- PCONTEXT -->
+<TR>
+<TD VALIGN="TOP" NOWRAP>ãƒã‚±ãƒƒãƒˆãƒ™ãƒ«:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=pager" "syntax=tel" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>æºå¸¯é›»è©±:<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=mobile" "syntax=tel" "cols=>16" -->
+</B></TD></TR>
+
+</TABLE>
+
+
+<TABLE CELLSPACING="2" BORDER BGCOLOR=#f2f2f2 WIDTH=95%>
+<TR>
+<TD BGCOLOR=#006666 COLSPAN=4><FONT COLOR=WHITE>
+WindowsNTアカウント情報</TD>
+</TR>
+
+<TR>
+<TD VALIGN="TOP">NTユーザ ID:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- IF "!Adding" -->
+<!-- DS_ATTRIBUTE "attr=nTUserDomainId" "syntax=ntuserid" "cols=>16" "options=readonly" -->
+<!-- ENDIF // Adding -->
+<!-- IF "Adding" -->
+<!-- DS_ATTRIBUTE "attr=nTUserDomainId" "syntax=ntuserid" "cols=>16" -->
+<!-- ENDIF // Adding -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>NTドメインå:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD><TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserDomainId" "syntax=ntdomain" "cols=>16" -->
+</B></TD></TR>
+<INPUT TYPE="hidden" NAME="desc_uid" VALUE="user id">
+<!-- PCONTEXT -->
+<TR>
+<TD VALIGN="TOP" COLSPAN=2 NOWRAP>ユーザを削除ã—ãŸå ´åˆã¯ NTアカウントを削除:</TD>
+<TD VALIGN="TOP" COLSPAN=2 NOWRAP><B>
+<!-- DS_ATTRIBUTE "syntax=bool" "type=radio" "true=ã¯ã„" "false=ã„ã„ãˆ" "defaultvalue=FALSE" "attr=nTUserDeleteAccount" -->
+</B></TD></TR>
+
+<!-- IF "Adding" -->
+<TR>
+<TD VALIGN="TOP">æ–°è¦NTアカウントã®ä½œæˆ :</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "syntax=bool" "type=radio" "true=ã¯ã„" "false=ã„ã„ãˆ" "defaultvalue=TRUE" "attr=nTUserCreateNewAccount" -->
+</B></TD></TR>
+
+<!-- ENDIF // Adding -->
+
+<!-- IF "Displaying" -->
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>NTユーザã«é–¢ã™ã‚‹ã‚³ãƒ¡ãƒ³ãƒˆ:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserUsrComment" "defaultvalue=None" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>NTユーザã®å›ºæœ‰ ID:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserUniqueId" "syntax=binvalue" "cols=>10" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>NTパスワード失効:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "syntax=bool" "type=radio" "true=Yes" "false=No" "defaultvalue=FALSE" "attr=nTUserPasswordExpired" -->
+</B></TD>
+<TD VALIGN="TOP">NTä¸è‰¯ãƒ‘スワード回数:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserBadPwCount" "syntax=binvalue" "options=decimal" "cols=>4" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">NTã®æœ€çµ‚ログオン日:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserLastLogon" "syntax=time" "cols=>10" "defaultvalue=Never Logged On" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>NT ã®æœ€çµ‚ログオフ日:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserLastLogoff" "syntax=time" "cols=>10" "defaultvalue=Never Logged On" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">NTアカウント失効日:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserAcctExpires" "syntax=time" "defaultvalue=Never Expires" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>NTã¸ã®ãƒ­ã‚°ã‚ªãƒ³æ•°:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserNumLogons" "syntax=binvalue" "options=decimal" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">NTログオンサーãƒ:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserLogonServer" "defaultvalue=Any Server" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>NTワークステーション:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserWorkstations" "defaultvalue=No Restrictions" "cols=>16" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">NTコードページ:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserCodePage" "syntax=binvalue" "options=decimal" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>NT国コード:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserCountryCode" "syntax=binvalue" "options=decimal" "cols=>8" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">NT主è¦ã‚°ãƒ«ãƒ¼ãƒ— ID:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserPrimaryGroupId" "syntax=binvalue" "options=decimal" "cols=>8" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>NTプロファイル:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserProfile" "defaultvalue=Default" "cols=>16" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>NTホームディレクトリ:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserHomeDir" "defaultvalue=None" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP">NT ホーム ディレクトリドライブ:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserHomeDirDrive" "defaultvalue=None" "cols=>20" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>NTスクリプトパス:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserScriptPath" "defaultvalue=None" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>NT最大記憶容é‡:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserMaxStorage" "syntax=binvalue" "options=decimal" "cols=>16" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">NTユニット/週:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserUnitsPerWeek" "syntax=binvalue" "options=decimal" "cols=>6" -->
+</B></TD>
+<TD VALIGN="TOP">NTユーザã®ç‰¹æ¨©:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserPriv" "syntax=binvalue" "cols=>16" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">NTユーザã®ã‚ªãƒšãƒ¬ãƒ¼ã‚¿ç‰¹æ¨©:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserAuthFlags" "syntax=binvalue" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP">NT ユーザ アカウントã®ãã®ä»–ã®æ©Ÿèƒ½:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=nTUserFlags" "syntax=binvalue" "cols=>16" -->
+</B></TD></TR>
+
+<!-- ENDIF // Displaying -->
+</TABLE>
+
+<TABLE CELLSPACING="2" BORDER BGCOLOR=#f2f2f2 WIDTH=95%>
+<TR>
+<TD BGCOLOR=#006666 COLSPAN=4><FONT COLOR=WHITE>
+事業ãŠã‚ˆã³å ´æ‰€ã«é–¢ã™ã‚‹æƒ…å ±</TD>
+</TR>
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>事業カテゴリ:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=businesscategory" -->
+</B></TD>
+<TD VALIGN="TOP">å½¹è·:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=title" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">æ©Ÿé–¢å˜ä½:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=ou" -->
+</B></TD>
+<TD VALIGN="TOP">マãƒãƒ¼ã‚¸ãƒ£:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=修正..." "template=dneditpeople" "attr=manager" "desc=マãƒãƒ¼ã‚¸ãƒ£" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<!-- IF "Adding" -->
+<TD VALIGN="TOP" ROWSPAN=2>
+<I>ã“れらã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’修正ã™ã‚‹å‰ã«ã“ã®ã‚¨ãƒ³ãƒˆãƒªã‚’ä¿å­˜ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚</I>
+<!-- ELSE // !Adding -->
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=manager" "syntax=dn" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP">部屋番å·:</TD>
+<TD VALIGN="TOP" NOWRAP"><B>
+<!-- DS_ATTRIBUTE "attr=roomNumber" "cols=>8" -->
+</B></TD>
+</B><TD VALIGN="TOP">管ç†è€…:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=修正..." "template=dneditpeople" "attr=secretary" "desc=管ç†è€…" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<!-- IF "!Adding" -->
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=secretary" "syntax=dn" "options=readonly" -->
+</B></TD>
+<!-- ENDIF // !Adding -->
+</TR>
+
+<TR>
+<TD VALIGN="TOP">部署番å·:</TD>
+<TD VALIGN="TOP"><B>
+<!-- DS_ATTRIBUTE "attr=departmentnumber" "cols=>8" -->
+</B></TD>
+<TD VALIGN="TOP">社員番å·:</TD>
+<TD VALIGN="TOP"><B>
+<!-- DS_ATTRIBUTE "attr=employeenumber" "cols=>6" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">自動車ã®ãƒŠãƒ³ãƒãƒ¼ãƒ—レート番å·:</TD>
+<TD VALIGN="TOP"><B>
+<!-- DS_ATTRIBUTE "attr=carlicense" "cols=>8" -->
+</B></TD>
+<!-- Note: need to include two cells that contain a non-breaking space
+character so table background colors, etc. are rendered correctly -->
+<TD>&nbsp;&nbsp;</TD>
+<TD>&nbsp;&nbsp;</TD>
+</TR>
+
+<TR>
+<TD VALIGN="TOP">ä½æ‰€:</TD>
+<TD VALIGN="TOP" COLSPAN="4" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=postalAddress" "syntax=mls" "type=TEXTAREA" "cols=>40" "rows=>4" -->
+</B></TD></TR>
+
+</TABLE>
+
+<TABLE CELLSPACING="2" BORDER BGCOLOR=#f2f2f2 WIDTH=95%>
+<TR>
+<TD BGCOLOR=#006666 COLSPAN=2><FONT COLOR=WHITE>
+追加情報</TD>
+</TR>
+
+<TR>
+<TD VALIGN="TOP">記述:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>50" -->
+</B></TR>
+
+<TR>
+<TD VALIGN="TOP">å‚ç…§:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=修正..." "template=dnedit" "attr=seeAlso" "desc=å‚ç…§" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- IF "Adding" -->
+<I>ã“ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’修正ã™ã‚‹å‰ã«ã“ã®ã‚¨ãƒ³ãƒˆãƒªã‚’ä¿å­˜ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚</I>
+<!-- ELSE // !Adding -->
+<B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP">URL:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=labeledURI" "syntax=url" "cols=>50" "options=sort" -->
+</B></TR>
+
+<!-- The following attribute should only be uncommented if you have
+ a need to allow editing of the x500UniqueIdentifier attribute.
+ Most installations will not need this functionality.
+<TR>
+<TD VALIGN="TOP">Unique ID:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=x500uniqueidentifier" "cols=>50" -->
+</B></TR>
+-->
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+ã“ã®ã‚¨ãƒ³ãƒˆãƒªã®æœ€çµ‚変更日:<B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> 変更者: <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/ja/display-org.html b/ldap/clients/dsgw/config/ja/display-org.html
new file mode 100644
index 00000000..5201aeeb
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/display-org.html
@@ -0,0 +1,136 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_OBJECTCLASS "value=organization" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+New
+<!-- ENDIF // Adding -->
+Organization -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE>
+<TR>
+<TD>
+<IMG SRC="lang?<!-- GCONTEXT -->&file=organization.gif" ALT="æ©Ÿé–¢" HSPACE=5>
+<TD>
+<FONT SIZE="+2">
+<!-- IF "Adding" -->
+æ–°è¦æ©Ÿé–¢ -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</FONT>
+</TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- DS_EDITBUTTON "label=æ©Ÿé–¢ã®ä¿®æ­£" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=æ–°è¦æ©Ÿé–¢ã®ä¿ç®¡" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=キャンセル" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_ORG" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_ORG" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_RENAMEBUTTON "label=æ©Ÿé–¢åã®å¤‰æ›´" "prompt=ã“ã®æ©Ÿé–¢ã®æ–°ã—ã„åå‰ã‚’入力ã—ã¦ãã ã•ã„:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=æ©Ÿé–¢ã®å‰Šé™¤" "prompt=ã“ã®æ©Ÿé–¢ã‚’削除ã—ã¾ã™ã‹?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="organization">
+<!-- ENDIF // Adding -->
+
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<HR>
+<!-- IF "!Displaying" -->
+<B>* ã¯å¿…è¦ãªãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’示ã—ã¦ã„ã¾ã™ã€‚</B><BR>
+<!-- ENDIF -->
+
+<TABLE>
+<TR>
+<TD VALIGN="TOP" NOWRAP>æ©Ÿé–¢å:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=o" "cols=>20" -->
+</B></TD><TD WIDTH="20%"></TD>
+<TD>記述:</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>30" -->
+</B></TR>
+
+<TR><TD>電話:</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>16" -->
+</B></TD><TD></TD>
+<TD NOWRAP>事業カテゴリ:</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=businessCategory" "cols=>30" -->
+</B></TD></TR>
+
+<TR><TD>ファックス:<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=facsimiletelephonenumber" "syntax=tel" "cols=>16" -->
+</B></TD><TD></TD>
+<TD>場所:</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=l" "cols=>30" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>ä½æ‰€:</TD>
+<TD VALIGN="TOP" COLSPAN="4" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=postalAddress" "syntax=mls" "type=TEXTAREA" "cols=>40" "rows=>4" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">å‚ç…§:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "dncomponents=3" "cols=>50" -->
+</B></TR>
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+<HR>
+ã“ã®ã‚¨ãƒ³ãƒˆãƒªã®æœ€çµ‚変更日: <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B>変更者: <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/ja/display-orgperson.html b/ldap/clients/dsgw/config/ja/display-orgperson.html
new file mode 100644
index 00000000..7a5e7be0
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/display-orgperson.html
@@ -0,0 +1,345 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- inet. organizational person directory entry -->
+<!-- DS_OBJECTCLASS "value=person,inetOrgPerson" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+New
+<!-- ENDIF // Adding -->
+Person Entry -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE>
+<!-- Changed by: Ko-Haw Nieh, 17-Mar-1998 -->
+
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+function showVCard()
+{
+<!-- DS_ATTRIBUTE "attr=_vcard" "options=link" "mimetype=text/x-vcard" "prefix=var cardurl=" "suffix=";" -->
+
+ document.location.href = cardurl;
+}
+// End hiding -->
+</SCRIPT>
+
+
+</HEAD>
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE><TR><TD>
+<!-- DS_ATTRIBUTE "attr=jpegPhoto" "type=hidden" "options=typeonly" -->
+<!-- IF "AttributeHasValues" "jpegPhoto" -->
+<IMG SRC=
+<!-- DS_ATTRIBUTE "attr=jpegPhoto" "options=link" "mimetype=image/jpeg" -->
+BORDER=0></TD>
+<TD>
+<!-- ENDIF -->
+<!-- A HREF="javascript:showVCard()" -->
+<IMG SRC="lang?<!-- GCONTEXT -->&file=person.gif" ALT="ユーザ (クリックã™ã‚‹ã¨ã‚«ãƒ¼ãƒ‰ãŒè¡¨ç¤ºã•ã‚Œã¾ã™)"
+ BORDER=0 HSPACE=5>
+</A>
+</TD>
+<!-- IF "DisplayOrgChart" -->
+<TD><FONT FACE="PrimaSans BT, Verdana, Sans-Serif" SIZE="-1">
+<A HREF=
+<!-- DS_ORGCHARTLINK -->
+ >
+<IMG SRC="lang?<!-- GCONTEXT -->&file=orgicon.gif" BORDER=0 ALT="Click to display organization chart" HSPACE=5></a>
+</FONT>
+</TD>
+<!-- ENDIF -->
+<TD><FONT SIZE="+2">
+<!-- IF "Adding" -->
+æ–°è¦ãƒ¦ãƒ¼ã‚¶ -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT></TD></TR></TABLE>
+
+<!-- DS_ATTRIBUTE "attr=userCertificate;binary" "type=hidden" "options=typeonly" -->
+<!-- IF "AttributeHasValues" "userCertificate;binary" -->
+<A HREF=""
+<!-- DS_ATTRIBUTE "attr=userCertificate;binary" "options=link" "mimetype=application/x-x509-ca-cert" -->
+>証明書ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰</A>
+<!-- ENDIF -->
+
+<!-- DS_ATTRIBUTE "attr=audio" "type=hidden" "options=typeonly" -->
+<!-- IF "AttributeHasValues" "audio" -->
+&nbsp;&nbsp;
+<A HREF=""
+<!-- DS_ATTRIBUTE "attr=audio" "options=link" "mimetype=audio/basic" -->
+>オーディオクリップã®å†ç”Ÿ</A>
+<!-- ENDIF -->
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- INPUT TYPE="button" VALUE="カードを表示" onClick="showVCard()" -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_EDITBUTTON "label=ユーザã®ä¿®æ­£" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=æ–°è¦ãƒ¦ãƒ¼ã‚¶ã®ä¿ç®¡" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=キャンセル" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_ORGPERSON" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_ORGPERSON" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_EDITASBUTTON "label=パスワード変更" "template=passwd" -->
+</TD><TD>
+<!-- DS_RENAMEBUTTON "label=ユーザå変更" "prompt=ã“ã®ãƒ¦ãƒ¼ã‚¶ã®æ–°ã—ã„åå‰ã‚’入力ã—ã¦ãã ã•ã„:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=ユーザ削除" "prompt=ã“ã®ãƒ¦ãƒ¼ã‚¶ã‚’削除ã—ã¾ã™ã‹?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="person">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="organizationalPerson">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="inetOrgPerson">
+<!-- ENDIF // Adding -->
+
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<!-- IF "!Displaying" -->
+<B>* ã¯å¿…è¦ãªãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’示ã—ã¦ã„ã¾ã™ã€‚</B><BR>
+<!-- ENDIF -->
+
+<TABLE CELLSPACING="2" BORDER BGCOLOR=#f2f2f2 WIDTH=95%>
+<TR>
+<TD BGCOLOR=#006666 COLSPAN=4><FONT COLOR=WHITE>
+連絡先</TD>
+</TR>
+
+<TD VALIGN="top" NOWRAP>姓:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=sn" "cols=>16" -->
+</B></TD>
+<TD VALIGN="top" NOWRAP ROWSPAN="2">æ°å:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="top" NOWRAP ROWSPAN="2"><B>
+<!-- DS_ATTRIBUTE "attr=cn" "numfields=+1" "cols=>23" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="top" NOWRAP>å:</TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=givenName" "cols=>16" -->
+</B></TD>
+</TR>
+
+<!-- IF "Adding" -->
+<TR>
+<TD>パスワード:</TD><TD>
+<!-- DS_NEWPASSWORD "cols=>16" -->
+</B></TD>
+<TD> 確èªã®ãŸã‚パスワードをå†åº¦å…¥åŠ›:</TD><TD>
+<!-- DS_CONFIRM_NEWPASSWORD "cols=>16" -->
+</TD></TR>
+<!-- ENDIF // Adding -->
+
+<TR>
+<TD VALIGN="TOP">電話:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>16" "numfields=+1" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" "cols=>23" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">ファックス:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=facsimiletelephonenumber" "syntax=tel" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>ユーザ ID:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=uid" "cols=>16" "options=unique" -->
+</B></TD></TR>
+<INPUT TYPE="hidden" NAME="desc_uid" VALUE="user id">
+<!-- PCONTEXT -->
+<TR>
+<TD VALIGN="TOP" NOWRAP>ãƒã‚±ãƒƒãƒˆãƒ™ãƒ«:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=pager" "syntax=tel" "cols=>16" -->
+</B></TD>
+<TD VALIGN="TOP" NOWRAP>æºå¸¯é›»è©±:<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=mobile" "syntax=tel" "cols=>16" -->
+</B></TD></TR>
+
+</TABLE>
+
+<TABLE CELLSPACING="2" BORDER BGCOLOR=#f2f2f2 WIDTH=95%>
+<TR>
+<TD BGCOLOR=#006666 COLSPAN=4><FONT COLOR=WHITE>
+事業ãŠã‚ˆã³å ´æ‰€ã«é–¢ã™ã‚‹æƒ…å ±</TD>
+</TR>
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>事業カテゴリ:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=businesscategory" -->
+</B></TD>
+<TD VALIGN="TOP">å½¹è·:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=title" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">æ©Ÿé–¢å˜ä½:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=ou" -->
+</B></TD>
+<TD VALIGN="TOP">マãƒãƒ¼ã‚¸ãƒ£:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=修正..." "template=dneditpeople" "attr=manager" "desc=マãƒãƒ¼ã‚¸ãƒ£" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<!-- IF "Adding" -->
+<TD VALIGN="TOP" ROWSPAN=2>
+<I>ã“れらã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’修正ã™ã‚‹å‰ã«ã“ã®ã‚¨ãƒ³ãƒˆãƒªã‚’ä¿å­˜ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚</I>
+<!-- ELSE // !Adding -->
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=manager" "syntax=dn" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP">部屋番å·:</TD>
+<TD VALIGN="TOP" NOWRAP"><B>
+<!-- DS_ATTRIBUTE "attr=roomNumber" "cols=>8" -->
+</B></TD>
+</B><TD VALIGN="TOP">管ç†è€…:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=修正..." "template=dneditpeople" "attr=secretary" "desc=管ç†è€…" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<!-- IF "!Adding" -->
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=secretary" "syntax=dn" "options=readonly" -->
+</B></TD>
+<!-- ENDIF // !Adding -->
+</TR>
+
+<TR>
+<TD VALIGN="TOP">部署番å·:</TD>
+<TD VALIGN="TOP"><B>
+<!-- DS_ATTRIBUTE "attr=departmentnumber" "cols=>8" -->
+</B></TD>
+<TD VALIGN="TOP">社員番å·:</TD>
+<TD VALIGN="TOP"><B>
+<!-- DS_ATTRIBUTE "attr=employeenumber" "cols=>6" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">自動車ã®ãƒŠãƒ³ãƒãƒ¼ãƒ—レート番å·:</TD>
+<TD VALIGN="TOP"><B>
+<!-- DS_ATTRIBUTE "attr=carlicense" "cols=>8" -->
+</B></TD>
+<!-- Note: need to include two cells that contain a non-breaking space
+character so table background colors, etc. are rendered correctly -->
+<TD>&nbsp;&nbsp;</TD>
+<TD>&nbsp;&nbsp;</TD>
+</TR>
+
+<TR>
+<TD VALIGN="TOP">ä½æ‰€:</TD>
+<TD VALIGN="TOP" COLSPAN="4" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=postalAddress" "syntax=mls" "type=TEXTAREA" "cols=>40" "rows=>4" -->
+</B></TD></TR>
+
+</TABLE>
+
+<TABLE CELLSPACING="2" BORDER BGCOLOR=#f2f2f2 WIDTH=95%>
+<TR>
+<TD BGCOLOR=#006666 COLSPAN=2><FONT COLOR=WHITE>
+追加情報</TD>
+</TR>
+
+<TR>
+<TD VALIGN="TOP">記述:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>50" -->
+</B></TR>
+
+<TR>
+<TD VALIGN="TOP">å‚ç…§:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=修正..." "template=dnedit" "attr=seeAlso" "desc=å‚ç…§" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD VALIGN="TOP" NOWRAP>
+<!-- IF "Adding" -->
+<I>ã“ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’修正ã™ã‚‹å‰ã«ã“ã®ã‚¨ãƒ³ãƒˆãƒªã‚’ä¿å­˜ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚</I>
+<!-- ELSE // !Adding -->
+<B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP">URL:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=labeledURI" "syntax=url" "cols=>50" "options=sort" -->
+</B></TR>
+
+<!-- The following attribute should only be uncommented if you have
+ a need to allow editing of the x500UniqueIdentifier attribute.
+ Most installations will not need this functionality.
+<TR>
+<TD VALIGN="TOP">Unique ID:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=x500uniqueidentifier" "cols=>50" -->
+</B></TR>
+-->
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+ã“ã®ã‚¨ãƒ³ãƒˆãƒªã®æœ€çµ‚変更日: <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> 変更者: <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/ja/display-orgunit.html b/ldap/clients/dsgw/config/ja/display-orgunit.html
new file mode 100644
index 00000000..13721e68
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/display-orgunit.html
@@ -0,0 +1,136 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- DS_OBJECTCLASS "value=organizationalUnit" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+æ–°è¦
+<!-- ENDIF // Adding -->
+æ©Ÿé–¢å˜ä½ -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- Changed by: Ko-Haw Nieh, 16-Mar-1998 -->
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE>
+<TR>
+<TD>
+<IMG SRC="lang?<!-- GCONTEXT -->&file=orgunit.gif" ALT="æ©Ÿé–¢å˜ä½" HSPACE=5>
+<TD>
+<FONT SIZE="+2">
+<!-- IF "Adding" -->
+æ–°è¦æ©Ÿé–¢å˜ä½ -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</FONT>
+</TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- DS_EDITBUTTON "label=æ©Ÿé–¢å˜ä½ã‚’修正" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=æ–°è¦æ©Ÿé–¢å˜ä½ã‚’ä¿ç®¡" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=キャンセル" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_ORGUNIT" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_ORGUNIT" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_RENAMEBUTTON "label=æ©Ÿé–¢å˜ä½åã®å¤‰æ›´" "prompt=ã“ã®æ©Ÿé–¢å˜ä½ã®æ–°ã—ã„åå‰ã‚’入力ã—ã¦ãã ã•ã„:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=æ©Ÿé–¢å˜ä½ã‚’削除" "prompt=ã“ã®æ©Ÿé–¢å˜ä½ã‚’削除ã—ã¾ã™ã‹?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="organizationalUnit">
+<!-- ENDIF // Adding -->
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<HR>
+<!-- IF "!Displaying" -->
+<B>* ã¯å¿…è¦ãªãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’示ã—ã¦ã„ã¾ã™ã€‚</B><BR>
+<!-- ENDIF -->
+
+
+<TABLE>
+<TR>
+<TD NOWRAP>å˜ä½å:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=ou" "cols=>20" -->
+</B></TD><TD WIDTH="20%"></TD>
+<TD>記述:</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>30" -->
+</B></TR>
+
+<TR><TD>電話:</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>16" -->
+</B></TD><TD></TD>
+<TD NOWRAP>事業カテゴリ:</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=businessCategory" "cols=>30" -->
+</B></TD></TR>
+
+<TR><TD>ファックス:<TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=facsimiletelephonenumber" "syntax=tel" "cols=>16" -->
+</B></TD><TD></TD>
+<TD>場所:</TD><TD NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=l" "cols=>30" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">ä½æ‰€:</TD>
+<TD VALIGN="TOP" COLSPAN="4" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=postalAddress" "syntax=mls" "type=TEXTAREA" "cols=>40" "rows=>4" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">å‚ç…§:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "dncomponents=3" "cols=>50" -->
+</B></TR>
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+<HR>
+ã“ã®ã‚¨ãƒ³ãƒˆãƒªã®æœ€çµ‚変更日: <B>
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B>変更者: <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/ja/display-person.html b/ldap/clients/dsgw/config/ja/display-person.html
new file mode 100644
index 00000000..7083e0ac
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/display-person.html
@@ -0,0 +1,230 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- person directory entry -->
+<!-- DS_OBJECTCLASS "value=person" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+New
+<!-- ENDIF // Adding -->
+Person Entry -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE>
+
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+function showVCard()
+{
+<!-- DS_ATTRIBUTE "attr=_vcard" "options=link" "mimetype=text/x-vcard" "prefix=var cardurl=" "suffix=";" -->
+
+ document.location.href = cardurl;
+}
+// End hiding -->
+</SCRIPT>
+
+</HEAD>
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE><TR><TD>
+<!-- A HREF="javascript:showVCard()" -->
+<IMG SRC="lang?<!-- GCONTEXT -->&file=person.gif" ALT="ユーザ(クリックã™ã‚‹ã¨ã‚«ãƒ¼ãƒ‰ãŒè¡¨ç¤ºã•ã‚Œã¾ã™)"
+ BORDER=0 HSPACE=5>
+</A>
+</TD>
+<!-- IF "DisplayOrgChart" -->
+<TD><FONT FACE="PrimaSans BT, Verdana, Sans-Serif" SIZE="-1">
+<A HREF=
+<!-- DS_ORGCHARTLINK -->
+ >
+<IMG SRC="lang?<!-- GCONTEXT -->&file=orgicon.gif" BORDER=0 ALT="Click to display organization chart" HSPACE=5></a>
+</FONT>
+</TD>
+<!-- ENDIF -->
+<TD><FONT SIZE="+2">
+<!-- IF "Adding" -->
+æ–°è¦ãƒ¦ãƒ¼ã‚¶ -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT></TD></TR></TABLE>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- INPUT TYPE="button" VALUE="カードを表示" onClick="showVCard()" -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_EDITBUTTON "label=ユーザã®ä¿®æ­£" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=æ–°è¦ãƒ¦ãƒ¼ã‚¶ã®ä¿ç®¡" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=キャンセル" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_PERSON" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_PERSON" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_EDITASBUTTON "label=パスワード変更" "template=passwd" -->
+</TD><TD>
+<!-- DS_RENAMEBUTTON "label=ユーザå変更" "prompt=ã“ã®ãƒ¦ãƒ¼ã‚¶ã®æ–°ã—ã„åå‰ã‚’入力ã—ã¦ãã ã•ã„:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=ユーザ削除" "prompt=ã“ã®ãƒ¦ãƒ¼ã‚¶ã‚’削除ã—ã¾ã™ã‹?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="person">
+<!-- ENDIF // Adding -->
+
+<!-- PCONTEXT -->
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<!-- DS_STD_COMPLETION_JS -->
+
+<HR>
+<!-- IF "!Displaying" -->
+<B>* ã¯å¿…è¦ãªãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’示ã—ã¦ã„ã¾ã™ã€‚</B><BR>
+<!-- ENDIF -->
+
+<TABLE CELLSPACING="5">
+<TR>
+<TD VALIGN="top" NOWRAP>è‹—å­—:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=sn" "cols=>16" -->
+</B></TD><TD WIDTH="20%"></TD>
+<TD VALIGN="top" NOWRAP>æ°å:</TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=cn" "numfields=+1" "cols=>16" -->
+</B></TD></TR>
+
+<!-- IF "Adding" -->
+<TR><TD COLSPAN="5"><HR></TD></TR>
+<TR>
+<TD>パスワード:</TD><TD>
+<!-- DS_NEWPASSWORD -->
+</TD><TD WIDTH="20%"></TD>
+<TD> 確èªã®ãŸã‚パスワードをå†åº¦å…¥åŠ›:</TD><TD>
+<!-- DS_CONFIRM_NEWPASSWORD -->
+</TD></TR>
+<TR><TD COLSPAN="5"><HR></TD></TR>
+<!-- ENDIF // Adding -->
+
+<TR>
+<TD VALIGN="TOP">電話:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>16" "numfields=+1" -->
+</B></TD><TD></TD>
+<TD VALIGN="TOP" NOWRAP>é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" "cols=>20" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">ファックス:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=facsimiletelephonenumber" "syntax=tel" "cols=>16" -->
+</B></TD><TD></TD>
+<TD VALIGN="TOP" NOWRAP>ユーザ ID:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=uid" "cols=>16" "options=unique" -->
+</B></TD></TR>
+<INPUT TYPE="hidden" NAME="desc_uid" VALUE="user id">
+<!-- PCONTEXT -->
+<TR>
+<TD VALIGN="TOP" NOWRAP>ãƒã‚±ãƒƒãƒˆãƒ™ãƒ«:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=pager" "syntax=tel" "cols=>16" -->
+</B></TD><TD></TD>
+<TD VALIGN="TOP" NOWRAP>æºå¸¯é›»è©±:<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=mobile" "syntax=tel" "cols=>16" -->
+</B></TD></TR>
+
+<TR><TD COLSPAN="5"><HR></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">å½¹è·:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=title" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">ä½æ‰€:</TD>
+<TD VALIGN="TOP" COLSPAN="4" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=postalAddress" "syntax=mls" "type=TEXTAREA" "cols=>40" "rows=>4" -->
+</B></TD></TR>
+
+<TR><TD COLSPAN="5"><HR></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">記述:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=description" "cols=>50" -->
+</B></TR>
+
+<TR>
+<TD VALIGN="TOP">å‚ç…§:<BR>
+<!-- IF "!Adding" -->
+<!-- DS_DNEDITBUTTON "label=修正..." "template=dnedit" "attr=seeAlso" "desc=å‚ç…§" -->
+<!-- ENDIF // !Adding -->
+</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4">
+<!-- IF "Adding" -->
+<I>ã“ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’修正ã™ã‚‹å‰ã«ã“ã®ã‚¨ãƒ³ãƒˆãƒªã‚’ä¿å­˜ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚</I>
+<!-- ELSE // !Adding -->
+<B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+</TD></TR>
+
+<TR>
+<TD VALIGN="TOP">URL:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=labeledURI" "syntax=url" "cols=>50" -->
+</B></TR>
+
+<TR>
+<TD VALIGN="TOP">好ããªé£²ç‰©:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=drink" -->
+</B></TR>
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+<HR>
+ã“ã®ã‚¨ãƒ³ãƒˆãƒªã®æœ€çµ‚変更日:
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B> 変更者: <B>
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/ja/display-umperson.html b/ldap/clients/dsgw/config/ja/display-umperson.html
new file mode 100644
index 00000000..be3cd589
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/display-umperson.html
@@ -0,0 +1,199 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- U-M person directory entry -->
+<!-- DS_OBJECTCLASS "value=person,umichPerson" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+æ–°è¦
+<!-- ENDIF // Adding -->
+ミシガン大学ユーザã®ã‚¨ãƒ³ãƒˆãƒª -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE></HEAD>
+<!-- BODY -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<TABLE><TR><TD>
+<IMG SRC=
+<!-- DS_ATTRIBUTE "attr=jpegPhoto" "options=link" "mimetype=image/jpeg" -->
+></TD>
+<TD>
+<IMG SRC="lang?<!-- GCONTEXT -->&file=person.gif" ALT="ユーザ" HSPACE=5>
+</TD>
+<!-- IF "DisplayOrgChart" -->
+<TD><FONT FACE="PrimaSans BT, Verdana, Sans-Serif" SIZE="-1">
+<A HREF=
+<!-- DS_ORGCHARTLINK -->
+ >
+<IMG SRC="lang?<!-- GCONTEXT -->&file=orgicon.gif" BORDER=0 ALT="Click to display organization chart" HSPACE=5></a>
+</FONT>
+</TD>
+<!-- ENDIF -->
+<TD><FONT SIZE="+2">
+<!-- IF "Adding" -->
+æ–°è¦ãƒŸã‚·ã‚¬ãƒ³å¤§å­¦ãƒ¦ãƒ¼ã‚¶ -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</FONT></TD></TR></TABLE>
+
+<A HREF=
+<!-- DS_ATTRIBUTE "attr=audio" "options=link" "mimetype=audio/basic" -->
+>オーディオクリップã®å†ç”Ÿ</A>
+
+<TABLE><TR><TD>
+<!-- IF "Displaying" -->
+<!-- DS_EDITBUTTON "label=ユーザã®ä¿®æ­£" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=æ–°è¦ãƒ¦ãƒ¼ã‚¶ã®ä¿ç®¡" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=キャンセル" -->
+<!-- ENDIF // !Displaying -->
+</TD><TD>&nbsp;&nbsp;</TD><TD>
+<!-- IF "Editing" -->
+<!-- DS_HELPBUTTON "topic=EDIT_UMPERSON" -->
+<!-- ELIF "Adding" -->
+<!-- DS_HELPBUTTON "topic=ADD_UMPERSON" -->
+<!-- ENDIF // Adding -->
+</TD>
+
+<!-- IF "Editing" -->
+<TD>&nbsp;&nbsp;</TD><TD>
+<!-- DS_EDITASBUTTON "label=パスワード変更" "template=passwd" -->
+</TD><TD>
+<!-- DS_RENAMEBUTTON "label=ユーザåã®å¤‰æ›´" "prompt=ã“ã®ãƒ¦ãƒ¼ã‚¶ã®æ–°ã—ã„åå‰ã‚’入力ã—ã¦ãã ã•ã„:" -->
+</TD><TD>
+<!-- DS_DELETEBUTTON "label=ユーザã®å‰Šé™¤" "prompt=ã“ã®ãƒ¦ãƒ¼ã‚¶ã‚’削除ã—ã¾ã™ã‹?" -->
+</TD>
+<!-- ENDIF // Editing -->
+
+</TR></TABLE>
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="person">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="umichPerson">
+<!-- ENDIF // Adding -->
+<!-- PCONTEXT -->
+<HR>
+<!-- IF "!Displaying" -->
+<B>* ã¯å¿…è¦ãªãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’示ã—ã¦ã„ã¾ã™ã€‚</B><BR>
+<!-- ENDIF -->
+
+
+<TABLE CELLSPACING="5">
+<TR>
+<TD VALIGN="top" NOWRAP>è‹—å­—:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=sn" "cols=>16" -->
+</B></TD><TD WIDTH="20%"></TD>
+<TD VALIGN="top" NOWRAP>æ°å:
+<!-- IF "!Displaying" -->
+<B>*</B>
+<!-- ENDIF -->
+</TD>
+<TD VALIGN="top" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=cn" "numfields=+1" "cols=>16" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">電話:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>16" "numfields=+1" -->
+</B></TD><TD></TD>
+<TD VALIGN="TOP" NOWRAP>é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" "cols=>20" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">ファックス:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=facsimiletelephonenumber" "syntax=tel" "cols=>16" -->
+</B></TD><TD></TD>
+<TD VALIGN="TOP" NOWRAP>固有ã®åå‰:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=uid" "cols=>16" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>ãƒã‚±ãƒƒãƒˆãƒ™ãƒ«:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=pager" "syntax=tel" "cols=>16" -->
+</B></TD><TD></TD>
+<TD VALIGN="TOP" NOWRAP>æºå¸¯é›»è©±:<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=mobile" "syntax=tel" "cols=>16" -->
+</B></TD></TR>
+
+<TR><TD COLSPAN="5"><HR></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">å½¹è·:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=title" -->
+</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">ä½æ‰€:</TD>
+<TD VALIGN="TOP" COLSPAN="4" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=postalAddress" "syntax=mls" "type=TEXTAREA" "cols=>40" "rows=>4" -->
+</B></TD></TR>
+
+<TR><TD COLSPAN="5"><HR></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">記述:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=multilineDescription" "syntax=mls" "cols=>50" -->
+</B></TR>
+
+<TR>
+<TD VALIGN="TOP">å‚ç…§:<BR>
+<!-- DS_DNEDITBUTTON "label=修正..." "template=dnedit" "attr=seeAlso" "desc=å‚ç…§" -->
+</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "options=readonly" -->
+</B></TR>
+
+<TR>
+<TD VALIGN="TOP">URL:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN="4"><B>
+<!-- DS_ATTRIBUTE "attr=labeledURL" "syntax=url" "cols=>50" -->
+</B></TR>
+
+<TR>
+<TD VALIGN="TOP">好ããªé£²ç‰©:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<!-- DS_ATTRIBUTE "attr=drink" -->
+</B></TR>
+
+</TABLE>
+
+<!-- IF "!Adding" -->
+<HR>
+ã“ã®ã‚¨ãƒ³ãƒˆãƒªã®æœ€çµ‚変更日: <B>
+<!-- DS_ATTRIBUTE "attr=lastModifiedTime" "syntax=time" "defaultvalue=N/A" "options=readonly" -->
+</B>変更者: <B>
+<!-- DS_ATTRIBUTE "attr=lastModifiedBy" "syntax=dn" "defaultvalue=N/A" "options=readonly" -->
+</B>
+<!-- ENDIF // !Adding -->
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/ja/dsgw-l10n.conf b/ldap/clients/dsgw/config/ja/dsgw-l10n.conf
new file mode 100644
index 00000000..0482312b
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/dsgw-l10n.conf
@@ -0,0 +1,18 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+# To localize the search type menu:
+# Locate dsgw-l10n.conf in config/<lang>/.
+# dsgw-l10n.conf contains translated words for search type pulldown menu.
+# dsgw-l10n.conf sample:
+# Note: the sample part should have double #'s for L10n.
+## translate People <People_translated_in_lang>
+## translate NT-People <NT-People_translated_in_lang>
+## translate Groups <Groups_translated_in_lang>
+## translate NT-Groups <NT-Groups_translated_in_lang>
+## translate Organizations <Organizations_translated_in_lang>
+## translate Org-Units <Org-Units_translated_in_lang>
+## translate Anything <Anything_translated_in_lang>
diff --git a/ldap/clients/dsgw/config/ja/dsgw.conf b/ldap/clients/dsgw/config/ja/dsgw.conf
new file mode 100644
index 00000000..d818fd44
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/dsgw.conf
@@ -0,0 +1,133 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+# The baseurl directive gives the server, port, and base dn where searches
+# should be rooted. The format is:
+#
+# ldap://host.domain[:port]/basedn
+# - or -
+# ldaps://host.domain:port/basedn (for SSL)
+#
+# Where:
+# - "host.domain" is the fully-qualified domain name of the directory server
+# - "port" is the port used by the directory server. If you are using an
+# "ldaps" URL (that is, if the gateway is using SSL to communicate with the
+# directory server), then the port number is required. Otherwise, it is
+# optional and defaults to the standard LDAP port (389).
+# - "basedn" is the distinguished name of the place in the directory tree
+# where searches should start. Typically, this is the same as the
+# "suffix" directive in your slapd.conf file.
+#
+# examples:
+# baseurl "ldap://mars.aceindustry.com/o=Ace Industry, c=US"
+# - causes the gateway to use the directory server running on host
+# "mars.aceindustry.com". Since no port was given, the default LDAP
+# port (389) is used. Searches in the gateway search for entries
+# contained within o=Ace Industry, c=US.
+#
+# baseurl "ldaps://mars.aceindustry.com:636/o=Ace Industry, c=US"
+# - same as above, but uses SSL to connect to the directory server,
+# and contacts the server on port 636.
+
+baseurl "ldap://ggood.mcom.com:389/o=Netscape Communications Corp., c=US"
+#baseurl "ldap://belltower.mcom.com:9000/o=Ace%20Industry,%20c=US"
+#baseurl "ldap://belltower:9000/o=Netscape Communications Corp., c=US"
+#baseurl "ldap://ldap.itd.umich.edu:389/o=University of Michigan, c=US"
+
+# The dirmgr directive specifies the "Manager" DN for your directory.
+dirmgr "cn=Directory Manager, o=Netscape Communications Corp., c=US"
+
+# The securitypath directive gives the full path name to your
+# security databases.
+#securitypath /tmp/ssl
+
+# If the requireauth directive is present, users must authenticate to the
+# directory before they may perform any operations. XXX: not implemented
+# in 1.0b2.
+#requireauth
+
+# The authlifetime directive specifies how long authentication credentials
+# are valid (in seconds).
+authlifetime 7200
+
+# The default character set, for communication with HTTP clients.
+# A client may override this default, using an HTTP Accept-Charset header.
+# Or, this default may be overridden for a specific language, by creating
+# a LANG/dsgwcharset.conf file which contains the charset name.
+# For compatibility with HTTP clients that can't handle an HTTP response
+# with a charset parameter in the content-type, comment out this directive;
+# responses will be sent in ISO-8859-1, with no explicit charset parameter.
+# RFC 1345 defines the syntax of charset names. There is a registry of
+# charsets, at ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets
+# charset UTF-8
+
+# The NLS (internationalization) directory. The directory of this name
+# should contain a locales directory, which contains configuration files.
+NLS ../../../lib/nls
+
+location-suffix "o=Netscape Communications Corp., c=US"
+
+# Mapping between config/display-XXX.html templates and LDAP objectClasses.
+# This can be generated by using ds/templateindex. The format is:
+#
+# template TEMPLATENAME OBJECTCLASSES
+#
+# where "display-TEMPLATENAME.html" is the name of a display template
+# that is found in this config directory (e.g., "display-group.html") and
+# OBJECTCLASSES is a list of one or more objectClass values. For a given
+# template to be used, all the objectClass values listed must be present
+# in the directory entry, so the order of these template lines is
+# significant (e.g. note that the more specific "umperson" and
+# "orgperson" templates are listed before the one for an ordinary "person").
+#
+template group groupOfNames
+template groupun groupOfUniqueNames
+template mailgroup rfc822mailgroup
+template org organization
+template orgunit organizationalUnit
+template ntperson person inetOrgPerson nTUser
+template umperson person umichPerson
+template orgperson person inetOrgPerson
+template person person
+template country country
+
+#
+# The remainder of this file contains information about the locations and
+# types for new entries.
+#
+# "location" lines define places in the directory where new entries can be added
+# The format of each line is:
+# location HANDLE FRIENDLYNAME DN
+# where HANDLE is a short name which is used in the "newtype" lines (see below)
+# and FRIENDLYNAME is a human-readable name for the location
+# and DN is the Distinguished Name for this location (if it does not end with
+# '#', the location-suffix is appended to to construct a full DN; if it
+# does end with `#', it assumed to be a full DN and the `#' is removed).
+#
+location country "米国" "c=US#"
+location org "ç¾åœ¨ã®æ©Ÿé–¢" ""
+location groups "機関グループ" "ou=Groups"
+location acct "経ç†" "ou=Accounting"
+location hr "人事" "ou=Human Resources"
+location pay "会計" "ou=Payroll"
+location pd "製å“開発" "ou=Product Development"
+location test "製å“テスト" "ou=Product Testing"
+
+# "newtype" lines define the types of new entries that may be added
+# The format of each line is:
+# newtype TEMPLATENAME FRIENDLYNAME RDNATTR LOCATIONS...
+# where TEMPLATENAME corresponds to an existing add-TEMPLATENAME.html file
+# and FRIENDLYNAME is a human-readable name for this type of entry
+# and RDNATTR is the attribute that is used to name entries of this type
+# and LOCATIONS is a blank-separated list of locations where these types of
+# entries can be added (corresponding to a HANDLE on a "location"
+# config. file line).
+#
+newtype orgperson "ユーザ" cn acct hr pay pd test
+newtype ntperson "NTユーザ" cn acct hr pay pd test
+newtype groupun "グループ" cn groups
+newtype orgunit "æ©Ÿé–¢å˜ä½" ou org
+newtype org "æ©Ÿé–¢" o country
diff --git a/ldap/clients/dsgw/config/ja/dsgw.tmpl b/ldap/clients/dsgw/config/ja/dsgw.tmpl
new file mode 100644
index 00000000..732e0406
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/dsgw.tmpl
@@ -0,0 +1,111 @@
+# The htmldir directive tells the CGIs where to find the html files
+htmldir ../html
+
+# The configdir directive tells the CGIs where to find the
+# templates/configuration files
+configdir ../config
+
+# The gwnametrans directive tells the CGIs what url to output
+# for http redirection. It should be the same nameTrans set
+# in the webserver, if any is being is used.
+gwnametrans /clients/dsgw/html/
+
+# The authlifetime directive specifies how long authentication credentials
+# are valid (in seconds).
+authlifetime 7200
+
+# The default character set, for communication with HTTP clients.
+# A client may override this default, using an HTTP Accept-Charset header.
+# Or, this default may be overridden for a specific language, by creating
+# a LANG/dsgwcharset.conf file which contains the charset name.
+# For compatibility with HTTP clients that can't handle an HTTP response
+# with a charset parameter in the content-type, comment out this directive;
+# responses will be sent in ISO-8859-1, with no explicit charset parameter.
+# RFC 1345 defines the syntax of charset names. There is a registry of
+# charsets, at ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets
+# charset UTF-8
+
+# The NLS (internationalization) directory. The directory of this name
+# should contain a locales directory, which contains configuration files.
+NLS ../../../lib/nls
+
+# Mapping between config/display-XXX.html templates and LDAP objectClasses.
+# This can be generated by using ds/templateindex. The format is:
+#
+# template TEMPLATENAME OBJECTCLASSES
+#
+# where "display-TEMPLATENAME.html" is the name of a display template
+# that is found in this config directory (e.g., "display-group.html") and
+# OBJECTCLASSES is a list of one or more objectClass values. For a given
+# template to be used, all the objectClass values listed must be present
+# in the directory entry, so the order of these template lines is
+# significant (e.g. note that the more specific "orgperson" template is
+# listed before the one for an ordinary "person").
+#
+template group groupOfNames
+template ntgroup groupOfUniqueNames ntGroup
+template groupun groupOfUniqueNames
+template org organization
+template orgunit organizationalUnit
+template ntperson person inetOrgPerson nTUser
+template orgperson person inetOrgPerson
+template person person
+template country country
+
+#
+# The remainder of this file contains information about the locations and
+# types for new entries.
+#
+# "location" lines define places in the directory where new entries can be added
+# The format of each line is:
+# location HANDLE FRIENDLYNAME DN
+# where HANDLE is a short name which is used in the "newtype" lines (see below)
+# and FRIENDLYNAME is a human-readable name for the location
+# and DN is the Distinguished Name for this location (if it does not end with
+# '#', the location-suffix is appended to to construct a full DN; if it
+# does end with `#', it assumed to be a full DN and the `#' is removed).
+#
+location country "米国" "c=US#"
+location org "ã“ã®çµ„ç¹” -" ""
+location groups "グループ" "ou=Groups"
+location people "ユーザー" "ou=People"
+location special "特別ユーザー" "ou=Special Users"
+
+# "newtype" lines define the types of new entries that may be added
+# The format of each line is:
+# newtype TEMPLATENAME FRIENDLYNAME RDNATTR LOCATIONS...
+# where TEMPLATENAME corresponds to an existing display-TEMPLATENAME.html file
+# and FRIENDLYNAME is a human-readable name for this type of entry
+# and RDNATTR is the attribute that is used to name entries of this type
+# and LOCATIONS is a blank-separated list of locations where these types of
+# entries can be added (corresponding to a HANDLE on a "location"
+# config. file line).
+#
+newtype orgperson "ユーザー" uid people special
+newtype ntperson "NTユーザー" uid people special
+newtype ntgroup "NTグループ" cn groups
+newtype groupun "グループ" cn groups
+newtype orgunit "組織å˜ä½" ou people org
+newtype org "組織" o country
+
+# Mappings between VCard properties and LDAP attribute types:
+# The format of each line is:
+# vcard-property VCARDPROP SYNTAX LDAPATTR [LDAPATTR2]
+# where VCARDPROP is the name of a VCard property
+# and SYNTAX is "cis" for simple strings and "mls" for multiline strings
+# and LDAPATTR is the LDAP attribute that corresponds to VCARDPROP
+# and LDAPATTR2 is an optional secondary LDAP attribute which is added to
+# the property value by appending a semicolon and then the attr2 value.
+vcard-property FN cis cn
+vcard-property N cis sn givenName
+vcard-property ORG cis o ou
+vcard-property ROLE cis businessCategory
+vcard-property ADR;WORK mls postalAddress
+vcard-property ADR;HOME mls homePostalAddress
+vcard-property EMAIL;INTERNET cis mail
+vcard-property TITLE cis title
+vcard-property TEL;WORK cis telephoneNumber
+vcard-property TEL;FAX cis facsimileTelephoneNumber
+vcard-property TEL;CELL cis mobile
+vcard-property TEL;HOME cis homePhone
+vcard-property NOTE cis description
diff --git a/ldap/clients/dsgw/config/ja/dsgw_adm.conf b/ldap/clients/dsgw/config/ja/dsgw_adm.conf
new file mode 100644
index 00000000..9fbf96ea
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/dsgw_adm.conf
@@ -0,0 +1,46 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+# Mapping between config/display-XXX.html templates and LDAP objectClasses.
+# This can be generated by using the templateindex program. The format is:
+#
+# template TEMPLATENAME OBJECTCLASSES
+#
+# where "display-TEMPLATENAME.html" is the name of a display template
+# that is found in this config directory (e.g., "display-group.html") and
+# OBJECTCLASSES is a list of one or more objectClass values. For a given
+# template to be used, all the objectClass values listed must be present
+# in the directory entry, so the order of these template lines is
+# significant (e.g. note that the more specific "orgperson" template is
+# listed before the one for an ordinary "person").
+#
+template group groupOfNames
+template groupun groupOfUniqueNames
+template org organization
+template orgunit organizationalUnit
+template orgperson person inetOrgPerson
+template person person
+template country country
+template licensed-user nsLicenseUser
+
+# Attribute Value Sets (used with DS_ATTRVAL_SET directives)
+# attrvset HANDLE VALUE PREFIX SUFFIX
+#
+attrvset CAL news "" "Netscape Collabra Server"
+attrvset CAL slapd "" "Netscape Directory Server"
+
+
+# Template Set definitions
+# Note: templates must be defined before they can be mentioned on
+# a tmplset line.
+#
+# tmplset SETNAME VIEWNAME TEMPLATENAME [HREF-LOCATION]
+#
+tmplset person "一般" orgperson
+tmplset person "パスワード" passwd
+tmplset person "ライセンス" licensed-user
+tmplset group "一般" group
+tmplset groupun "一般" groupun
diff --git a/ldap/clients/dsgw/config/ja/dsgwcharset.conf b/ldap/clients/dsgw/config/ja/dsgwcharset.conf
new file mode 100644
index 00000000..d14e3f1d
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/dsgwcharset.conf
@@ -0,0 +1,7 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+Shift_JIS
diff --git a/ldap/clients/dsgw/config/ja/dsgwcollate.conf b/ldap/clients/dsgw/config/ja/dsgwcollate.conf
new file mode 100644
index 00000000..34377d01
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/dsgwcollate.conf
@@ -0,0 +1,31 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+# Each line in this file defines a crude string collation.
+# There are two such collations, one for sorting a displayed list, and
+# another for selecting one of several alternative values to display:
+
+sort 20,A0,3000-30FF 3190-
+display 20,A0,3000,3190- 3001-30FF
+
+# In each line, each parameter defines a "script" as a set of Unicodes;
+# a character is considered to be part of the first script it matches.
+# An implicit final script contains characters that don't match any
+# parameter. Strings are collated in order of these scripts.
+# A mixed-script string is collated with the last script it contains.
+# Strings in the same script category are sorted by another algorithm,
+# which is not defined here.
+
+# In this file, the sort scripts are Kana, Kanji and everything else,
+# and the display scripts are Kanji, Kana and everything else. So,
+# lists are sorted with pure Kana values first, Kanji values and mixed
+# Kanji/Kana values next, and finally values containing other characters.
+# When choosing a value to display, pure Kanji is preferred, Kana or
+# mixed Kanji/Kana is the next choice, and anything else is the last.
+# These choices aim to sort by Yomi (stored in Kana), but display Kanji.
+
+# Insignificant characters (such as whitespace) should be included in
+# the first script on each line.
diff --git a/ldap/clients/dsgw/config/ja/dsgwfilter.conf b/ldap/clients/dsgw/config/ja/dsgwfilter.conf
new file mode 100644
index 00000000..965854a1
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/dsgwfilter.conf
@@ -0,0 +1,139 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+# ldap filter file
+#
+# lines like this that start with # or empty lines are ignored
+#
+# syntax:
+#
+# <tag>
+# <pattern1> <delimiters> <filter1-1> <desc1-1> [<scope>]
+# <filter1-2> <desc1-2> [<scope>]
+#
+# <pattern2> <delimiters> <filter2-1> <desc2-1> [<scope>] ...
+#
+# The <desc> should describe the filter. It should correctly complete
+# the phrases (in the resource database) DBT_Found0EntriesWhere_,
+# DBT_Found1EntryWhere_ and DBT_FoundEntriesWhere_; for example:
+#
+# Found 1 entry where the <desc> '%v'.
+# Found no entries where the <desc> '%v'.
+# Found 3 entries where the <desc> '%v'.
+#
+# The <desc> should begin with the article ("the" in English) for
+# languages that require agreement between article and noun (e.g
+# genders in Spanish or French).
+#
+# The scope is optional, and should be one of:
+# "base"
+# "onelevel"
+# "subtree"
+# if it is included.
+
+#
+# Directory Server gateway
+#
+
+"dsgw-people"
+ "=" " " "(%v))" "LDAPフィルタ: "
+
+ "^[+]*[0-9][ 0-9-]*$" " " "(telephoneNumber=*%v))" "電話番å·ã®æœ«å°¾ã«ä¸€è‡´ã™ã‚‹"
+
+ "@" " " "(mail=%v))" "é›»å­ãƒ¡ãƒ¼ãƒ« アドレスã«ä¸€è‡´ã™ã‚‹"
+ "(mail=%v*))" "é›»å­ãƒ¡ãƒ¼ãƒ« アドレスã®å…ˆé ­æ–‡å­—ã«ä¸€è‡´ã™ã‚‹"
+
+ "^.[. _].*" ". _" "(cn=%v1* %v2-))" "åã®é ­æ–‡å­—ã¨åå‰ã«ä¸€è‡´ã™ã‚‹"
+
+ ".*[. _].$" ". _" "(cn=%v1-*))" "åå‰ã¨å§“ã®é ­æ–‡å­—ã«ä¸€è‡´ã™ã‚‹"
+
+ "[. _]" ". _" "(|(sn=%v1-)(cn=%v1-)))" "åå‰ã«ä¸€è‡´ã™ã‚‹"
+ "(|(cn=*%v1-*)(sn=*%v1-*)(cn~=%v1-)(sn~=%v1-)))" "é¡žä¼¼ã—ã¦ã„ã‚‹ã‹ã€å«ã¾ã‚Œã‚‹"
+
+ "^\*$" " " "(|(cn=*)(sn=*)(uid=*)))" "åå‰ã¾ãŸã¯ãƒ¦ãƒ¼ã‚¶IDã«ä¸€è‡´ã™ã‚‹"
+
+ ".*" ". " "(|(cn=%v1)(sn=%v1)(uid=%v1)))" "åå‰ã¾ãŸã¯ãƒ¦ãƒ¼ã‚¶IDã«ä¸€è‡´ã™ã‚‹"
+ "(|(cn=*%v1*)(sn=*%v1*)(cn~=%v1)(sn~=%v1)))" "é¡žä¼¼ã—ã¦ã„ã‚‹ã‹ã€å«ã¾ã‚Œã‚‹"
+
+
+"dsgw-groups"
+ "=" " " "(%v))" "LDAPフィルタ: "
+
+ "^\*$" " " "(cn=*))" "åå‰ã«ä¸€è‡´ã™ã‚‹"
+
+ ".*" ". _" "(cn=%v1-))" "åå‰ã«ä¸€è‡´ã™ã‚‹"
+ "(cn=*%v1-*))" "å«ã¾ã‚Œã‚‹"
+ "(cn~=%v1-))" "é¡žä¼¼ã—ãŸ"
+
+"dsgw-ntgroups"
+ "=" " " "(%v))" "LDAPフィルタ: "
+
+ "^\*$" " " "(cn=*))" "åå‰ã«ä¸€è‡´ã™ã‚‹"
+
+ ".*" ". _" "(cn=%v1-))" "åå‰ã«ä¸€è‡´ã™ã‚‹"
+ "(cn=*%v1-*))" "å«ã¾ã‚Œã‚‹"
+ "(cn~=%v1-))" "é¡žä¼¼ã—ãŸ"
+ "(ntgroupdomainid=%v:*))" "NTドメインåã«ä¸€è‡´ã™ã‚‹"
+ "(ntgroupdomainid=*:%v))" "NTグループã«ä¸€è‡´ã™ã‚‹"
+
+"dsgw-organizations"
+ "=" " " "(%v))" "LDAPフィルタ: "
+
+ "\." " " "(associatedDomain=%v))" "関連ドメインã«ä¸€è‡´ã™ã‚‹"
+
+ "^\*$" " " "(o=*))" "åå‰ã«ä¸€è‡´ã™ã‚‹"
+
+ ".*" " " "(o=%v))" "åå‰ã«ä¸€è‡´ã™ã‚‹"
+ "(o=*%v*))" "å«ã¾ã‚Œã‚‹"
+ "(o~=%v))" "é¡žä¼¼ã—ãŸ"
+
+"dsgw-orgunits"
+ "=" " " "(%v))" "LDAPフィルタ: "
+
+ "\." " " "(associatedDomain=%v))" "関連ドメインã«ä¸€è‡´ã™ã‚‹"
+
+ "^\*$" " " "(ou=*))" "åå‰ã«ä¸€è‡´ã™ã‚‹"
+
+ ".*" " " "(ou=%v))" "åå‰ã«ä¸€è‡´ã™ã‚‹"
+ "(ou=*%v*))" "å«ã¾ã‚Œã‚‹"
+ "(ou~=%v))" "é¡žä¼¼ã—ãŸ"
+
+"dsgw-anything"
+ "=" " " "(%v)" "LDAPフィルタ: "
+
+ "[. _]" ". _" "(|(sn=%v1-)(cn=%v1-)(o=%v1-)(ou=%v1-))" "åå‰ã«ä¸€è‡´ã™ã‚‹"
+ "(|(sn~=%v1-)(cn~=%v1-)(o=%v1-)(ou=%v1-))" "é¡žä¼¼ã—ãŸ"
+
+ "^\*$" " " "(|(cn=*)(sn=*)(o=*)(ou=*))" "åå‰ã«ä¸€è‡´ã™ã‚‹"
+
+ ".*" ". " "(|(cn=%v1)(sn=%v1)(o=%v1)(ou=%v1))" "åå‰ã«ä¸€è‡´ã™ã‚‹"
+ "(|(cn=*%v1*)(sn=*%v1*)(cn~=%v1)(sn~=%v1)(o=%v1)(ou=%v1))" "é¡žä¼¼ã—ã¦ã„ã‚‹ã‹ã€å«ã¾ã‚Œã‚‹"
+
+
+"dsgw-ntpeople"
+ "=" " " "(%v))" "LDAPフィルタ: "
+
+ "^[+]*[0-9][ 0-9-]*$" " " "(telephoneNumber=*%v))" "電話番å·ã®æœ«å°¾ã«ä¸€è‡´ã™ã‚‹"
+
+ "@" " " "(mail=%v))" "é›»å­ãƒ¡ãƒ¼ãƒ« アドレスã«ä¸€è‡´ã™ã‚‹"
+ "(mail=%v*))" "é›»å­ãƒ¡ãƒ¼ãƒ« アドレスã®å…ˆé ­æ–‡å­—ã«ä¸€è‡´ã™ã‚‹"
+
+ "^.[. _].*" ". _" "(cn=%v1* %v2-))" "åã®é ­æ–‡å­—ã¨åå‰ã«ä¸€è‡´ã™ã‚‹"
+
+ ".*[. _].$" ". _" "(cn=%v1-*))" "åå‰ã¨å§“ã®é ­æ–‡å­—ã«ä¸€è‡´ã™ã‚‹"
+
+ "[. _]" ". _" "(|(sn=%v1-)(cn=%v1-)))" "åå‰ã«ä¸€è‡´ã™ã‚‹"
+ "(|(cn=*%v1-*)(sn=*%v1-*)(cn~=%v1-)(sn~=%v1-)))" "é¡žä¼¼ã—ã¦ã„ã‚‹ã‹ã€å«ã¾ã‚Œã‚‹"
+
+ "^\*$" " " "(|(cn=*)(sn=*)))" "åå‰ã«ä¸€è‡´ã™ã‚‹"
+
+ ".*" ". " "(|(cn=%v1)(sn=%v1)))" "åå‰ã«ä¸€è‡´ã™ã‚‹"
+ "(ntuserlogonserver=%v))" "NT ログオンサーãƒã«ä¸€è‡´ã™ã‚‹"
+ "(ntuserdomainid=%v:*))" "NTドメインåã«ä¸€è‡´ã™ã‚‹"
+ "(ntuserdomainid=*:%v))" "NTユーザåã«ä¸€è‡´ã™ã‚‹"
+ "(|(cn=*%v1*)(sn=*%v1*)(cn~=%v1)(sn~=%v1)))" "é¡žä¼¼ã—ã¦ã„ã‚‹ã‹ã€å«ã¾ã‚Œã‚‹"
+
+# Do not remove this line, or place any directives after it.
diff --git a/ldap/clients/dsgw/config/ja/dsgwfilter_adm.conf b/ldap/clients/dsgw/config/ja/dsgwfilter_adm.conf
new file mode 100644
index 00000000..87d50406
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/dsgwfilter_adm.conf
@@ -0,0 +1,73 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+# ldap filter file
+#
+# lines like this that start with # or empty lines are ignored
+#
+# syntax:
+#
+# <tag>
+# <pattern1> <delimiters> <filter1-1> <desc1-1> [<scope>]
+# <filter1-2> <desc1-2> [<scope>]
+#
+# <pattern2> <delimiters> <filter2-1> <desc2-1> [<scope>] ...
+#
+# The <desc> should describe the filter. It should correctly complete
+# the phrases (in the resource database) DBT_Found0EntriesWhere_,
+# DBT_Found1EntryWhere_ and DBT_FoundEntriesWhere_; for example (en):
+#
+# Found 1 entry where the <desc> '%v'.
+# Found no entries where the <desc> '%v'.
+# Found 3 entries where the <desc> '%v'.
+#
+# The <desc> should begin with the article ("the" in English) for
+# languages that require agreement between article and noun (e.g
+# genders in Spanish or French).
+#
+# The scope is optional, and should be one of:
+# "base"
+# "onelevel"
+# "subtree"
+# if it is included.
+
+#
+# Directory Server gateway - for Netscape Admin Server
+#
+
+"dsgw-people"
+ "=" " " "(%v))" "LDAPフィルタ: "
+
+ "^[+]*[0-9][ 0-9-]*$" " " "(telephoneNumber=*%v))" "電話番å·ã®æœ«å°¾: "
+
+ "@" " " "(mail=%v))" " é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹: "
+ "(mail=%v*))" "é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã®å…ˆé ­æ–‡å­—: "
+
+ "^.[. _].*" ". _" "(cn=%v1* %v2-))" "åã®é ­æ–‡å­—ã¨åå‰: "
+
+ ".*[. _].$" ". _" "(cn=%v1-*))" "åå‰ã¨è‹—å­—ã®é ­æ–‡å­—: "
+
+ "[. _]" ". _" "(|(sn=%v1-)(cn=%v1-)))" "åå‰: "
+ "(|(cn=*%v1-*)(sn=*%v1-*)(cn~=%v1-)(sn~=%v1-)))" "åå‰ sounds like or contains"
+
+ ".*" ". " "(uid=%v1))" "ログインID: "
+ "(|(cn=%v1)(sn=%v1)))" "åå‰: "
+ "(|(cn=*%v1*)(sn=*%v1*)(cn~=%v1)(sn~=%v1)))" "次ã«é¡žä¼¼ã—ãŸåå‰ã¾ãŸã¯ãれをå«ã‚€åå‰: "
+
+
+"dsgw-groups"
+ "=" " " "(%v))" "LDAPフィルタ: "
+
+ ".*" ". _" "(cn=%v1-))" "åå‰: "
+ "(cn~=%v1-))" "u次ã«é¡žä¼¼ã—ãŸåå‰"
+
+"dsgw-orgunits"
+ "=" " " "(%v))" "LDAPフィルタ: "
+
+ ".*" ". _" "(ou=%v1-))" "å˜ä½å:"
+ "(ou~=%v1-))" "次ã«é¡žä¼¼ã—ãŸå˜ä½å: "
+
+#Do not remove this line, or place any additional lines after it.
diff --git a/ldap/clients/dsgw/config/ja/dsgwsearchprefs.conf b/ldap/clients/dsgw/config/ja/dsgwsearchprefs.conf
new file mode 100644
index 00000000..14146ae9
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/dsgwsearchprefs.conf
@@ -0,0 +1,213 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+# dsgwsearchprefs.conf - directory server gateway search object definitions
+
+
+# the current version of this file format is 1
+Version 1
+
+
+# Name for this search object
+People
+# options (the only one supported right now is "internal" which means that
+# this search object should not be presented directly to the user)
+# use "" for none
+""
+# Label to place before text box user types in
+"検索対象:"
+# Filter prefix to append to all searches
+"(&(objectClass=person)"
+# Tag to use for "Fewer Choices" searches - from ldapfilter.conf file
+"dsgw-people"
+# If a search results in > 1 match, retrieve this attribute to help
+# user disambiguate the entries...
+not-used-by-dsgw
+# ...and label it with this string:
+not-used-by-dsgw
+# Search scope to use when searching
+subtree
+# Follows a list of "More Choices" search options. Format is:
+# Label, attribute, select-bitmap, extra attr display name, extra attr ldap name
+# If last two are null, "Fewer Choices" name/attributes used.
+# Label should begin with the article ("the" in English) for
+# languages that require agreement between article and noun
+# (e.g genders in Spanish or French).
+"æ°å" cn 111111 "" ""
+"姓" sn 111111 "" ""
+"電話番å·" "telephoneNumber" 111011 "" ""
+"é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹" "mail" 111111 "" ""
+"ユーザID" "uid" 111111 "" ""
+"å½¹è·" title 111111 "" ""
+END
+# Match types
+"ã«ä¸€è‡´ã™ã‚‹" "(%a=%v))"
+"ã«ä¸€è‡´ã—ãªã„" "(!(%a=%v)))"
+"ã«é¡žä¼¼ã™ã‚‹" "(%a~=%v))"
+"ã®å…ˆé ­ã«ä¸€è‡´ã™ã‚‹" "(%a=%v*))"
+"ã®æœ«å°¾ã«ä¸€è‡´ã™ã‚‹" "(%a=*%v))"
+"ã«å«ã¾ã‚Œã‚‹" "(%a=*%v*))"
+END
+
+
+"NT-People"
+""
+"検索対象:"
+"(&(objectClass=ntuser)"
+"dsgw-ntpeople"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"æ°å" cn 111111 "" ""
+"姓" sn 111111 "" ""
+"電話番å·" "telephoneNumber" 111011 "" ""
+"é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹" "mail" 111111 "" ""
+"ユーザID" "uid" 111111 "" ""
+"å½¹è·" title 111111 "" ""
+"NTユーザå" "ntuserdomainid" 110000 "" ""
+"NTドメイン" "ntuserdomainid" 101000 "" ""
+"NT ログオンサーãƒ" "ntuserlogonserver" 111111 "" ""
+END
+"ã«ä¸€è‡´ã™ã‚‹" "(%a=%v))"
+"ã«ä¸€è‡´ã—ãªã„" "(!(%a=%v)))"
+"ã«é¡žä¼¼ã™ã‚‹" "(%a~=%v))"
+"ã®å…ˆé ­ã«ä¸€è‡´ã™ã‚‹" "(%a=%v*))"
+"ã®æœ«å°¾ã«ä¸€è‡´ã™ã‚‹" "(%a=*%v))"
+"ã«å«ã¾ã‚Œã‚‹" "(%a=*%v*))"
+END
+
+Groups
+""
+"検索対象:"
+"(&(|(objectClass=rfc822MailGroup)(objectClass=groupOfNames)(objectClass=groupOfUniqueNames)(objectClass=groupOfCertificates))"
+"dsgw-groups"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"åå‰" cn 111111 "" ""
+"説明" description 111111 "" ""
+"所有者 (DN)" "owner" 000011 "owner" "Owner"
+"メンãƒãƒ¼ (DN)" "member" 000011 "" ""
+END
+"ã«ä¸€è‡´ã™ã‚‹" "(%a=%v))"
+"ã«ä¸€è‡´ã—ãªã„" "(!(%a=%v)))"
+"ã«é¡žä¼¼ã™ã‚‹" "(%a~=%v))"
+"ã®å…ˆé ­ã«ä¸€è‡´ã™ã‚‹" "(%a=%v*))"
+"ã®æœ«å°¾ã«ä¸€è‡´ã™ã‚‹" "(%a=*%v))"
+"ã«å«ã¾ã‚Œã‚‹" "(%a=*%v*))"
+END
+
+
+NT-Groups
+""
+"検索対象:"
+"(&(objectClass=ntGroup)"
+"dsgw-ntgroups"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"åå‰" cn 111111 "" ""
+"NTグループå" "ntgroupdomainid" 110000 "" ""
+"NTドメインå" "ntgroupdomainid" 101000 "" ""
+"説明" description 111111 "" ""
+"所有者 (DN)" "owner" 000011 "owner" "Owner"
+"メンãƒãƒ¼ (DN)" "uniquemember" 000011 "" ""
+END
+"ã«ä¸€è‡´ã™ã‚‹" "(%a=%v))"
+"ã«ä¸€è‡´ã—ãªã„" "(!(%a=%v)))"
+"ã«é¡žä¼¼ã™ã‚‹" "(%a~=%v))"
+"ã®å…ˆé ­ã«ä¸€è‡´ã™ã‚‹" "(%a=%v*))"
+"ã®æœ«å°¾ã«ä¸€è‡´ã™ã‚‹" "(%a=*%v))"
+"ã«å«ã¾ã‚Œã‚‹" "(%a=*%v*))"
+END
+
+
+Organizations
+""
+"検索対象:"
+"(&(objectClass=organization)"
+"dsgw-organizations"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"åå‰" o 111111 "" ""
+"場所" l 111111 "" ""
+"電話番å·" telephoneNumber 111011 "" ""
+"説明" description 111011 "" ""
+END
+"ã«ä¸€è‡´ã™ã‚‹" "(%a=%v))"
+"ã«ä¸€è‡´ã—ãªã„" "(!(%a=%v)))"
+"ã«é¡žä¼¼ã™ã‚‹" "(%a~=%v))"
+"ã®å…ˆé ­ã«ä¸€è‡´ã™ã‚‹" "(%a=%v*))"
+"ã®æœ«å°¾ã«ä¸€è‡´ã™ã‚‹" "(%a=*%v))"
+"ã«å«ã¾ã‚Œã‚‹" "(%a=*%v*))"
+END
+
+
+"Org-Units"
+""
+"検索対象:"
+"(&(objectClass=organizationalUnit)"
+"dsgw-orgunits"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"åå‰" ou 111111 "" ""
+"場所" l 111111 "" ""
+"電話番å·" telephoneNumber 111011 "" ""
+"説明" description 111111 "" ""
+END
+"ã«ä¸€è‡´ã™ã‚‹" "(%a=%v))"
+"ã«ä¸€è‡´ã—ãªã„" "(!(%a=%v)))"
+"ã«é¡žä¼¼ã™ã‚‹" "(%a~=%v))"
+"ã®å…ˆé ­ã«ä¸€è‡´ã™ã‚‹" "(%a=%v*))"
+"ã®æœ«å°¾ã«ä¸€è‡´ã™ã‚‹" "(%a=*%v))"
+"ã«å«ã¾ã‚Œã‚‹" "(%a=*%v*))"
+END
+
+Anything
+""
+"検索対象:"
+""
+"dsgw-anything"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"一般å" cn 111111 "" ""
+"説明" description 111111 "" ""
+END
+"ã«ä¸€è‡´ã™ã‚‹" "(%a=%v)"
+"ã«ä¸€è‡´ã—ãªã„" "(!(%a=%v))"
+"ã«é¡žä¼¼ã™ã‚‹" "(%a~=%v)"
+"ã®å…ˆé ­ã«ä¸€è‡´ã™ã‚‹" "(%a=%v*)"
+"ã®æœ«å°¾ã«ä¸€è‡´ã™ã‚‹" "(%a=*%v)"
+"ã«å«ã¾ã‚Œã‚‹" "(%a=*%v*)"
+END
+
+
+Auth
+internal
+"èªè¨¼ã®ç¨®åˆ¥:"
+"(&(objectClass=person)"
+"dsgw-people"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"一般å" cn 111111 "" ""
+"姓" sn 111111 "" ""
+"電話番å·" "telephoneNumber" 111011 "" ""
+"é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹" "mail" 111111 "" ""
+"ユーザID" "uid" 111111 "" ""
+"å½¹è·" title 111111 "" ""
+END
+"ã«ä¸€è‡´ã™ã‚‹" "(%a=%v))"
+"ã«ä¸€è‡´ã—ãªã„" "(!(%a=%v)))"
+"ã«é¡žä¼¼ã™ã‚‹" "(%a~=%v))"
+"ã®å…ˆé ­ã«ä¸€è‡´ã™ã‚‹" "(%a=%v*))"
+"ã®æœ«å°¾ã«ä¸€è‡´ã™ã‚‹" "(%a=*%v))"
+"ã«å«ã¾ã‚Œã‚‹" "(%a=*%v*))"
+END
+
diff --git a/ldap/clients/dsgw/config/ja/edit-passwd.html b/ldap/clients/dsgw/config/ja/edit-passwd.html
new file mode 100644
index 00000000..f756a121
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/edit-passwd.html
@@ -0,0 +1,78 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML><HEAD>
+<!-- change a directory entry's password -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>Change Password -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE>
+
+</HEAD>
+
+<!-- BODY -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<H2><CENTER>パスワード変更
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</H2></CENTER>
+
+<HR>
+
+<P>
+<TABLE>
+
+<!-- IF "BoundAsThisEntry" -->
+<TR>
+<TD ALIGN="right" NOWRAP>
+å¤ã„パスワードを入力:
+</TD><TD>
+<!-- DS_OLDPASSWORD -->
+</TD></TR>
+<!-- ELIF "!Bound" -->
+<TR>
+<TD ALIGN="right" NOWRAP>
+å¤ã„パスワードを入力:
+</TD><TD>
+<!-- DS_OLDPASSWORD -->
+</TD></TR>
+<!-- ENDIF //BoundAsThisEntry -->
+
+<TR>
+<TD ALIGN="right" NOWRAP>
+æ–°è¦ãƒ‘スワードを入力:
+</TD><TD>
+<!-- DS_NEWPASSWORD -->
+</TD></TR>
+
+<TR>
+<TD ALIGN="right" NOWRAP>
+確èªã®ãŸã‚æ–°è¦ãƒ‘スワードをå†åº¦å…¥åŠ›:
+</TD><TD>
+<!-- DS_CONFIRM_NEWPASSWORD -->
+</TD></TR>
+</TABLE>
+
+<P>
+
+<TABLE BORDER=2 WIDTH="100%">
+<TR>
+<TD ALIGN="center" WIDTH="50%">
+<!-- IF "BoundAsThisEntry" -->
+<!-- DS_SAVEBUTTON "label=パスワード変更" -->
+<!-- ELSE -->
+<!-- DS_SAVEBUTTON "label=パスワードä¿ç®¡" -->
+<!-- ENDIF -->
+<TD ALIGN="center" WIDTH="50%">
+<!-- DS_HELPBUTTON "topic=MODIFYPASSWD" -->
+</TABLE>
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/ja/list-Anything.html b/ldap/clients/dsgw/config/ja/list-Anything.html
new file mode 100644
index 00000000..2bdf2531
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/list-Anything.html
@@ -0,0 +1,42 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "汎用検索" -->
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT></CENTER>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR>
+<TH NOWRAP>åå‰ <TH NOWRAP>電話番å·
+<TH NOWRAP>é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ <TH NOWRAP>記述
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=description" -->
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<CENTER><FONT SIZE=+1>
+別ã®æ¤œç´¢ã‚’試ã¿ã¦ãã ã•ã„。
+</FONT></CENTER>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/ja/list-Auth.html b/ldap/clients/dsgw/config/ja/list-Auth.html
new file mode 100644
index 00000000..0aaa8454
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/list-Auth.html
@@ -0,0 +1,73 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Authenticate as..." -->
+
+<!--
+ The "authForm" form and the authSubmit() JavaScript function are
+ used to avoid the need for a separate form for each entry listed.
+ Each entry is tied to this single form through the magic of an
+ anchor that contains href=javascript:authSubmit().
+-->
+
+<FORM NAME="authForm" METHOD=POST ACTION="auth">
+<INPUT TYPE="hidden" NAME="escapedbinddn">
+<INPUT TYPE="hidden" NAME="authdesturl"
+<!-- PCONTEXT -->
+<!-- DS_POSTEDVALUE "name=authdesturl" "within=VALUE=%22--value--%22" -->
+>
+</FORM>
+
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+function authSubmit(encodeddn)
+{
+ document.authForm.escapedbinddn.value = encodeddn;
+ document.authForm.submit();
+}
+// End hiding -->
+</SCRIPT>
+
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC "VERBOSE" -->
+<P>
+<!-- IF "FoundEntries" -->
+èªè¨¼ã«ä½¿ç”¨ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªåをクリックã—ã¦ãã ã•ã„。
+</FONT>
+<P>
+
+<TABLE BORDER=1 CELLPADDING=4>
+<TR>
+<TH NOWRAP>èªè¨¼ã®ç¨®åˆ¥ <TH NOWRAP>å½¹è·
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "href=javascript:authSubmit('--value--'); onMouseOver=%22window.status='Click to authenticate'; return true;%22" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=title" -->
+
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+<!-- ELSE "FoundEntries" -->
+å…ƒã«æˆ»ã£ã¦å†å®Ÿè¡Œã—ã¦ãã ã•ã„。
+<!-- ENDIF "FoundEntries" -->
+</CENTER>
+
+<FORM>
+<TABLE BORDER=2 WIDTH=100%%>
+<TR>
+<TD ALIGN=center width=50%%>
+<INPUT TYPE="button" VALUE="å‰ã¸" onClick="history.back();">
+<TD ALIGN=center WIDTH=50%%>
+<!-- DS_HELPBUTTON "topic=AUTHMULTMATCH" -->
+</TABLE>
+</FORM>
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/ja/list-Groups.html b/ldap/clients/dsgw/config/ja/list-Groups.html
new file mode 100644
index 00000000..8e04d2f3
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/list-Groups.html
@@ -0,0 +1,38 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "グループã®æ¤œç´¢" -->
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT></CENTER>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR>
+<TH NOWRAP>グループå
+<TH NOWRAP>記述
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=description" -->
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<CENTER><FONT SIZE=+1>
+別ã®æ¤œç´¢ã‚’試ã¿ã¦ãã ã•ã„。
+</FONT></CENTER>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/ja/list-NT-Groups.html b/ldap/clients/dsgw/config/ja/list-NT-Groups.html
new file mode 100644
index 00000000..aa554e77
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/list-NT-Groups.html
@@ -0,0 +1,44 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Search for NT Groups" -->
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT></CENTER>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR>
+<TH NOWRAP>LDAP グループå
+<TH NOWRAP>NTドメインå
+<TH NOWRAP>NTグループå
+<TH NOWRAP>記述
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=ntgroupdomainid" "syntax=ntdomain" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=ntgroupdomainid" "syntax=ntgroupname" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=description" -->
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<CENTER><FONT SIZE=+1>
+別ã®æ¤œç´¢ã‚’試ã¿ã¦ãã ã•ã„。
+</FONT></CENTER>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/ja/list-NT-People.html b/ldap/clients/dsgw/config/ja/list-NT-People.html
new file mode 100644
index 00000000..45eab117
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/list-NT-People.html
@@ -0,0 +1,48 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Search for NT-People" -->
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT></CENTER>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR>
+<TH NOWRAP>åå‰<TH NOWRAP>NTドメイン<TH NOWRAP>NTユーザå<TH NOWRAP>電話番å·
+</TR>
+
+<!-- DS_SORTENTRIES "attr=cn" -->
+
+<!-- DS_ENTRYBEGIN -->
+
+<TR>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "label=" -->
+ onMouseOver="window.status='ã“ã®ã‚¨ãƒ³ãƒˆãƒªã®è©³ç´°ã‚’表示ã™ã‚‹ã«ã¯ã“ã“をクリックã—ã¦ãã ã•ã„。'; return true">
+<!-- DS_ATTRIBUTE "attr=cn" "numfields=0" "defaultvalue=name" "options=readonly" -->
+</A>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=ntuserdomainid" "syntax=ntdomain" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=ntuserdomainid" "syntax=ntuserid" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" -->
+</TR>
+
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<CENTER><FONT SIZE=+1>
+別ã®æ¤œç´¢ã‚’試ã¿ã¦ãã ã•ã„。
+</FONT></CENTER>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/ja/list-Org-Units.html b/ldap/clients/dsgw/config/ja/list-Org-Units.html
new file mode 100644
index 00000000..2dfdaac0
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/list-Org-Units.html
@@ -0,0 +1,38 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Search for Organizational Units" -->
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT></CENTER>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR><TH>æ©Ÿé–¢å˜ä½ <TH>記述 <TH>電話番å·
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->
+<TD>
+<!-- DS_ATTRIBUTE "attr=description" -->
+<TD>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" -->
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<CENTER><FONT SIZE=+1>
+別ã®æ¤œç´¢ã‚’試ã¿ã¦ãã ã•ã„。
+</FONT></CENTER>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/ja/list-Organizations.html b/ldap/clients/dsgw/config/ja/list-Organizations.html
new file mode 100644
index 00000000..7cdee961
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/list-Organizations.html
@@ -0,0 +1,38 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Search for Organizations" -->
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT></CENTER>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR><TH>æ©Ÿé–¢ <TH>記述 <TH>電話番å·
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->
+<TD>
+<!-- DS_ATTRIBUTE "attr=description" -->
+<TD>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" -->
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<CENTER><FONT SIZE=+1>
+別ã®æ¤œç´¢ã‚’試ã¿ã¦ãã ã•ã„。
+</FONT></CENTER>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/ja/list-People.html b/ldap/clients/dsgw/config/ja/list-People.html
new file mode 100644
index 00000000..48c41d5b
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/list-People.html
@@ -0,0 +1,48 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Search for People" -->
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT></CENTER>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR>
+<TH NOWRAP>åå‰<TH NOWRAP>電話番å·<TH NOWRAP>é›»å­ãƒ¡ãƒ¼ãƒ« アドレス<TH NOWRAP>å½¹è·
+</TR>
+
+<!-- DS_SORTENTRIES "attr=cn" -->
+
+<!-- DS_ENTRYBEGIN -->
+
+<TR>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "label=" -->
+ onMouseOver="window.status='Click here to view this entry in detail'; return true">
+<!-- DS_ATTRIBUTE "attr=cn" "numfields=0" "defaultvalue=name" "options=readonly" -->
+</A>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=title" -->
+</TR>
+
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<CENTER><FONT SIZE=+1>
+別ã®æ¤œç´¢ã‚’試ã¿ã¦ãã ã•ã„。
+</FONT></CENTER>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/ja/list-fa-Groups.html b/ldap/clients/dsgw/config/ja/list-fa-Groups.html
new file mode 100644
index 00000000..bbc2e00a
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/list-fa-Groups.html
@@ -0,0 +1,22 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Search for People" -->
+<!-- IF "FoundEntries" -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+<FORM>
+<!-- DS_ENTRYBEGIN -->
+
+<!-- DS_ENTRYEND -->
+<!-- DS_END_ENTRYFORM -->
+</FORM>
+
+<!-- ELSE -->
+<!-- DS_ALERT_NOENTRIES -->
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/ja/list-fa-People.html b/ldap/clients/dsgw/config/ja/list-fa-People.html
new file mode 100644
index 00000000..bbc2e00a
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/list-fa-People.html
@@ -0,0 +1,22 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "Search for People" -->
+<!-- IF "FoundEntries" -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+<FORM>
+<!-- DS_ENTRYBEGIN -->
+
+<!-- DS_ENTRYEND -->
+<!-- DS_END_ENTRYFORM -->
+</FORM>
+
+<!-- ELSE -->
+<!-- DS_ALERT_NOENTRIES -->
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/ja/list-urlsearch.html b/ldap/clients/dsgw/config/ja/list-urlsearch.html
new file mode 100644
index 00000000..379d7b79
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/list-urlsearch.html
@@ -0,0 +1,38 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- TITLE "URLã«åŸºã¥ã„ãŸæ¤œç´¢" -->
+<CENTER><FONT SIZE=+1>
+<!-- DS_SEARCHDESC -->
+</FONT></CENTER>
+<P>
+
+<!-- IF "FoundEntries" -->
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=100%>
+<TR><TH>åå‰ <TH>é›»è©±ç•ªå· <TH>é›»å­ãƒ¡ãƒ¼ãƒ« アドレス
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->
+<TD>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" -->
+<TD>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" -->
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+
+<!-- ELSE -->
+<P>
+<CENTER><FONT SIZE=+1>
+別ã®æ¤œç´¢ã‚’試ã¿ã¦ãã ã•ã„。
+</FONT></CENTER>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/ja/newentry.html b/ldap/clients/dsgw/config/ja/newentry.html
new file mode 100644
index 00000000..1c2dcd17
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/newentry.html
@@ -0,0 +1,26 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--newentry.html-->
+<TITLE>Netscape Directory Server Gateway: New Entry </TITLE>
+<!-- DS_NEWENTRY_SCRIPT -->
+</HEAD>
+<FRAMESET ROWS=75,70,* BORDER=0 onLoad="init()">
+ <FRAME SRC="lang?<!-- GCONTEXT -->&file=newentrytitle.html" NORESIZE SCROLLING="NO">
+ <FRAME SRC="newentry?<!-- GCONTEXT -->&file=type"
+ NAME="newentryTypeFrame" SCROLLING="NO">
+ <FRAME SRC="newentry?<!-- GCONTEXT -->&file=name"
+ NAME="newentryNameFrame">
+</FRAMESET>
+
+<NOFRAMES>
+<BODY>
+ã“ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã‚’表示ã™ã‚‹ã«ã¯ãƒ•ãƒ¬ãƒ¼ãƒ ã‚’サãƒãƒ¼ãƒˆã™ã‚‹ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆãŒå¿…è¦ã§ã™ã€‚
+</BODY>
+</NOFRAMES>
+</HTML>
diff --git a/ldap/clients/dsgw/config/ja/newentryName.html b/ldap/clients/dsgw/config/ja/newentryName.html
new file mode 100644
index 00000000..7c050a71
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/newentryName.html
@@ -0,0 +1,48 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--newentryName.html-->
+</HEAD>
+<!-- DS_NEWENTRY_NAME_BODY -->
+<p>
+<!-- DS_NEWENTRY_NAME_FORM -->
+<font SIZE="+2">ステップ 2.</font>
+æ–°è¦ã®ã‚¨ãƒ³ãƒˆãƒªåを入力ã—ã¾ã™ã€‚
+<!-- EVALUATE "entType.fullname" -->
+.
+<p><nobr><font SIZE="+1">
+<!-- EVALUATE "entType.rdnattr" -->
+=</font>
+<input TYPE="text" NAME="entryname" SIZE="40">
+</nobr>
+<p>
+<font SIZE="+2">ステップ 3.</font>
+
+<!-- DS_NEWENTRY_LOCATION_BEGIN -->
+ãƒãƒƒãƒ—アップメニューã‹ã‚‰ Directory ã®å ´æ‰€ã‚’é¸æŠžã—ã¾ã™ã€‚
+<!-- EVALUATE "entType.fullname" -->
+. [ãã®ä»–]ã‚’é¸æŠžã™ã‚‹å ´åˆã¯ã€ã“ã®ã‚¨ãƒ³ãƒˆãƒªã®è¿½åŠ å ´æ‰€ã«ã€å®Œå…¨è­˜åˆ¥åを入力ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚
+<p>
+<!-- DS_NEWENTRY_LOCATION_SELECT -->
+<OPTION VALUE="">[ãã®ä»–]</OPTION>
+</SELECT>
+<input TYPE="text" NAME="dnsuffix" SIZE="70" onFocus="parent.dnsuffixFocus(this.form)">
+<p>
+<font SIZE="+2">ステップ 4.</font>
+<!-- DS_NEWENTRY_LOCATION_END -->
+
+[次ã¸]をクリックã—ã¦ãã ã•ã„。ã“ã®ã‚¨ãƒ³ãƒˆãƒªã®ä¿®æ­£å¯èƒ½ãªãƒ“ューãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚情報ã®å…¥åŠ›ãŒçµ‚ã‚ã£ãŸã‚‰ã€ã‚¨ãƒ³ãƒˆãƒªã‚’ä¿å­˜ã—ã¾ã™ã€‚
+<p>
+<center><table BORDER="2" WIDTH="75%">
+<tr><td ALIGN="center" WIDTH="50%">
+<input TYPE="submit" VALUE="次ã¸">
+<td ALIGN="center" WIDTH="50%">
+
+<!-- DS_HELP_BUTTON "ADDING" -->
+</table></center></form>
+</body></HTML>
diff --git a/ldap/clients/dsgw/config/ja/newentryType.html b/ldap/clients/dsgw/config/ja/newentryType.html
new file mode 100644
index 00000000..cee042f2
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/newentryType.html
@@ -0,0 +1,14 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!--newentryType.html-->
+<!-- DS_NEWENTRY_TYPE_BODY -->
+<!-- DS_NEWENTRY_TYPE_FORM -->
+<font SIZE="+2">ステップ 1.</font>
+作æˆã™ã‚‹ã‚¨ãƒ³ãƒˆãƒª タイプをé¸æŠžã—ã¾ã™ã€‚
+<!-- DS_NEWENTRY_TYPE_SELECT -->
+</form></body></HTML>
diff --git a/ldap/clients/dsgw/config/ja/search.html b/ldap/clients/dsgw/config/ja/search.html
new file mode 100644
index 00000000..4fa66cf8
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/search.html
@@ -0,0 +1,18 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- search.html -->
+<TITLE>Netscape Directory Server Gateway: Standard Search </TITLE>
+<!-- DS_SEARCH_SCRIPT -->
+</HEAD>
+<FRAMESET ROWS=75,100,* BORDER=0 onLoad="init()">
+ <FRAME SRC="lang?<!-- GCONTEXT -->&file=searchtitle.html" SCROLLING="NO">
+ <FRAME SRC="search?<!-- GCONTEXT -->&file=string" NAME=searchFrame NORESIZE SCROLLING="NO">
+ <FRAME SRC="lang?<!-- GCONTEXT -->&file=greeting.html" NAME=outputFrame>
+</FRAMESET>
+</HTML>
diff --git a/ldap/clients/dsgw/config/ja/searchString.html b/ldap/clients/dsgw/config/ja/searchString.html
new file mode 100644
index 00000000..ab24d048
--- /dev/null
+++ b/ldap/clients/dsgw/config/ja/searchString.html
@@ -0,0 +1,30 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- searchString.html -->
+</HEAD>
+<!-- DS_SEARCH_BODY -->
+<!-- DS_SEARCH_FORM "target=outputFrame" -->
+<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH=100%>
+<TR><TH ALIGN=RIGHT>検索:</TH><TD>
+<!-- DS_SEARCH_TYPE -->
+</TD>
+<TH>存在ã™ã‚‹å ´æ‰€:</TH><TD>
+<!-- DS_SEARCH_BASE -->
+</TD></TR>
+<TR><TH ALIGN=RIGHT>検索対象: </TH>
+<TD COLSPAN=3>
+<INPUT NAME="searchstring" SIZE=30>
+<INPUT TYPE="SUBMIT" VALUE="検索">&nbsp;&nbsp;
+<!-- DS_HELP_BUTTON "SMARTSEARCH" -->
+</TD></TR>
+</TABLE>
+<INPUT TYPE="hidden" NAME="ldapsizelimit" VALUE="1000">
+<INPUT TYPE="hidden" NAME="ldaptimelimit" VALUE="180">
+<!-- PCONTEXT -->
+</FORM></BODY></HTML>
diff --git a/ldap/clients/dsgw/config/ko/dsgw-l10n.conf b/ldap/clients/dsgw/config/ko/dsgw-l10n.conf
new file mode 100644
index 00000000..0482312b
--- /dev/null
+++ b/ldap/clients/dsgw/config/ko/dsgw-l10n.conf
@@ -0,0 +1,18 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+# To localize the search type menu:
+# Locate dsgw-l10n.conf in config/<lang>/.
+# dsgw-l10n.conf contains translated words for search type pulldown menu.
+# dsgw-l10n.conf sample:
+# Note: the sample part should have double #'s for L10n.
+## translate People <People_translated_in_lang>
+## translate NT-People <NT-People_translated_in_lang>
+## translate Groups <Groups_translated_in_lang>
+## translate NT-Groups <NT-Groups_translated_in_lang>
+## translate Organizations <Organizations_translated_in_lang>
+## translate Org-Units <Org-Units_translated_in_lang>
+## translate Anything <Anything_translated_in_lang>
diff --git a/ldap/clients/dsgw/config/ko/dsgwcharset.conf b/ldap/clients/dsgw/config/ko/dsgwcharset.conf
new file mode 100644
index 00000000..f42c2b31
--- /dev/null
+++ b/ldap/clients/dsgw/config/ko/dsgwcharset.conf
@@ -0,0 +1,7 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+euc-kr
diff --git a/ldap/clients/dsgw/config/list-Anything.html b/ldap/clients/dsgw/config/list-Anything.html
new file mode 100644
index 00000000..50581f96
--- /dev/null
+++ b/ldap/clients/dsgw/config/list-Anything.html
@@ -0,0 +1,120 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- HEAD -->
+<TITLE>Search for Anything</TITLE>
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</head>
+<BODY BGCOLOR="white">
+
+<!-- IF "FoundEntries" -->
+
+<table width="85%" border="0" cellpadding="0" cellspacing="0" class="bgColor4" align="center">
+ <tr valign="top" bgcolor="#FFFFFF">
+ <td bgcolor="white">
+<!-- DS_SEARCHDESC -->
+ <br>&nbsp;
+ </td>
+ </tr>
+ <tr>
+ <td>
+
+<table border="0" cellpadding="1" cellspacing="0" width="100%" bgcolor="#FFFFFF" align="center">
+ <tr align="left" bgcolor="#CCCCCC">
+ <td class="boldbig">
+ Name
+ </td>
+ <td class="boldbig">
+ Phone
+ </td>
+ <td class="boldbig">
+ E-mail
+ </td>
+ <td class="boldbig">
+ Description
+ </td>
+ </tr>
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+ <tr valign="top" bgcolor="#FFFFFF">
+ <td>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->
+ </td>
+
+ <td>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" -->
+ </td>
+ <td>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" -->
+ </td>
+ <td>
+<!-- DS_ATTRIBUTE "attr=description" -->
+ </td>
+ </tr>
+ <tr>
+ <td colspan="4"></td>
+ </tr>
+<!-- DS_ENTRYEND -->
+
+</table>
+ </td>
+ </tr>
+ <tr bgcolor="#FFFFFF">
+ <td>
+ &nbsp;<br>
+ Click on an entry's Name to bring up more information about that entry.
+ </td>
+ </tr>
+</table>
+
+<!-- ELSE -->
+<p>
+ <center>
+<TABLE width=360 height=216 border=1 bgcolor=#CCCCCC align=center>
+ <TR valign=top>
+ <TD>
+<TABLE width=356 border=0 cellpadding=18 cellspacing=0 bgcolor=#CCCCCC>
+ <TR valign=top>
+ <TD>
+ <CENTER>
+ <TABLE width=320 border=0 height=168 cellpadding=0 cellspacing=0 class="bgColor4">
+ <TR valign=top>
+ <TD width=32>
+ <IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=message.gif" height=32 width=32 border=0>
+ </TD>
+ <TD width=9>
+ &nbsp;
+ </TD>
+ <TD>
+ <P>
+ No match found.
+ </P>
+ </TD>
+ </TR>
+ <TR valign=top>
+ <TD colspan=2>
+ </TD>
+ <TD>
+ <P>
+ No entries match the requested search term. Please try a different search.
+ </P>
+ </TD>
+ </TR>
+ </TABLE>
+ </CENTER>
+ </TD>
+ </TR>
+</TABLE>
+ </TD>
+ </TR>
+</TABLE>
+ </center>
+</p>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
+
diff --git a/ldap/clients/dsgw/config/list-Auth.html b/ldap/clients/dsgw/config/list-Auth.html
new file mode 100644
index 00000000..b2bb8332
--- /dev/null
+++ b/ldap/clients/dsgw/config/list-Auth.html
@@ -0,0 +1,78 @@
+<html>
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!--
+ The "authForm" form and the authSubmit() JavaScript function are
+ used to avoid the need for a separate form for each entry listed.
+ Each entry is tied to this single form through the magic of an
+ anchor that contains href=javascript:authSubmit().
+-->
+
+<!-- HEAD -->
+<TITLE>Authenticate as...</TITLE>
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</head>
+<BODY BGCOLOR="white">
+
+<FORM NAME="authForm" METHOD=POST ACTION="auth">
+<INPUT TYPE="hidden" NAME="escapedbinddn">
+<INPUT TYPE="hidden" NAME="authdesturl"
+<!-- DS_POSTEDVALUE "name=authdesturl" "within=VALUE=%22--value--%22" -->
+>
+<!-- PCONTEXT -->
+</FORM>
+
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+function authSubmit(encodeddn)
+{
+ document.authForm.escapedbinddn.value = encodeddn;
+ document.authForm.submit();
+}
+// End hiding -->
+</SCRIPT>
+
+<CENTER>
+<!-- DS_SEARCHDESC "VERBOSE" -->
+<P>
+<!-- IF "FoundEntries" -->
+Please click on the name of the entry you would like to use for authentication.
+</P>
+<P>
+
+<TABLE BORDER=1 CELLPADDING=4>
+<TR>
+<TD NOWRAP bgcolor="#CCCCCC" class="boldbig">Authenticate As </td><TD NOWRAP bgcolor="#CCCCCC" class="boldbig">Title</th>
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "href=javascript:authSubmit('--value--'); onMouseOver=%22window.status='Click to authenticate'; return true;%22" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=title" -->
+
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+<!-- ELSE "FoundEntries" -->
+<div class="text22">Please go back and try again.</div>
+<!-- ENDIF "FoundEntries" -->
+</CENTER>
+
+<FORM>
+<TABLE BORDER=2 WIDTH=100%%>
+<TR>
+<TD ALIGN=center width=50%%>
+<INPUT TYPE="button" VALUE="Go Back" onClick="history.back();">
+<TD ALIGN=center WIDTH=50%%>
+<!-- DS_HELPBUTTON "topic=AUTHMULTMATCH" -->
+</TABLE>
+</FORM>
+</body>
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/list-Domaincomponent.html b/ldap/clients/dsgw/config/list-Domaincomponent.html
new file mode 100644
index 00000000..3eb08d18
--- /dev/null
+++ b/ldap/clients/dsgw/config/list-Domaincomponent.html
@@ -0,0 +1,115 @@
+<html>
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- HEAD -->
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+<TITLE>Search for Domaincomponents</TITLE>
+</head>
+<BODY BGCOLOR="white">
+
+<!-- IF "FoundEntries" -->
+
+<table width="85%" border="0" cellpadding="0" cellspacing="0" class="bgColor4" align="center">
+ <tr valign="top" bgcolor="#FFFFFF">
+ <td bgcolor="white">
+<!-- DS_SEARCHDESC -->
+ <br>&nbsp;
+ </td>
+ </tr>
+ <tr>
+ <td>
+
+<table border="0" cellpadding="1" cellspacing="0" width="100%" class="bgColor4" align="center">
+ <tr align="left" bgcolor="#CCCCCC">
+ <td class="boldbig">
+ Domaincomponent
+ </td>
+ <td class="boldbig">
+ Description
+ </td>
+ <td class="boldbig">
+ Phone
+ </td>
+ </tr>
+<!-- DS_SORTENTRIES "attr=cn" -->
+
+<!-- DS_ENTRYBEGIN -->
+ <tr valign="top" bgcolor="#FFFFFF">
+ <td >
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->
+ </td>
+ <td >
+<!-- DS_ATTRIBUTE "attr=description" -->
+ </td>
+ <td>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" -->
+ </td>
+ </tr>
+ <tr>
+ <td colspan="3"></td>
+ </tr>
+<!-- DS_ENTRYEND -->
+
+</table>
+
+ </td>
+ </tr>
+ <tr bgcolor="#FFFFFF">
+ <td>
+ &nbsp;<br>
+ Click on an domaincomponent's name to bring up more information about that entry.
+ </td>
+ </tr>
+</table>
+
+<!-- ELSE -->
+<p>
+ <center>
+<TABLE width=360 height=216 border=1 bgcolor=#CCCCCC align=center>
+ <TR valign=top>
+ <TD>
+<TABLE width=356 border=0 cellpadding=18 cellspacing=0 bgcolor=#CCCCCC>
+ <TR valign=top>
+ <TD>
+ <CENTER>
+ <TABLE width=320 border=0 height=168 cellpadding=0 cellspacing=0 bgcolor=#CCCCCC>
+ <TR valign=top>
+ <TD width=32>
+ <IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=message.gif" height=32 width=32 border=0>
+ </TD>
+ <TD width=9>
+ &nbsp;
+ </TD>
+ <TD>
+ <P>
+ No match found.
+ </P>
+ </TD>
+ </TR>
+ <TR valign=top>
+ <TD colspan=2>
+ </TD>
+ <TD>
+ <P>
+ No entries match the requested search term. Please try a different search.
+ </P>
+ </TD>
+ </TR>
+ </TABLE>
+ </CENTER>
+ </TD>
+ </TR>
+</TABLE>
+ </TD>
+ </TR>
+</TABLE>
+ </center>
+</p>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
+
diff --git a/ldap/clients/dsgw/config/list-Groups.html b/ldap/clients/dsgw/config/list-Groups.html
new file mode 100644
index 00000000..4b4c3825
--- /dev/null
+++ b/ldap/clients/dsgw/config/list-Groups.html
@@ -0,0 +1,110 @@
+<html>
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- HEAD -->
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+<TITLE>Search for Groups</TITLE>
+</head>
+
+<BODY BGCOLOR="white">
+
+<!-- IF "FoundEntries" -->
+
+<table width="85%" border="0" cellpadding="0" cellspacing="0" bgcolor="#CCCCCC" align="center">
+ <tr valign="top" bgcolor="#FFFFFF">
+ <td bgcolor="white">
+<!-- DS_SEARCHDESC -->
+ <br>&nbsp;
+ </td>
+ </tr>
+ <tr>
+ <td>
+
+<table border="0" cellpadding="1" cellspacing="0" width="100%" bgcolor="#FFFFFF" align="center">
+ <tr align="left" bgcolor="#CCCCCC">
+ <td class="boldbig">
+ Group Name
+ </td>
+ <td class="boldbig">
+ Description
+ </td>
+ </tr>
+<!-- DS_SORTENTRIES "attr=cn" -->
+
+<!-- DS_ENTRYBEGIN -->
+ <tr valign="top" bgcolor="#FFFFFF">
+ <td >
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->&nbsp;
+ </td>
+ <td >
+<!-- DS_ATTRIBUTE "attr=description" -->
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2"></td>
+ </tr>
+<!-- DS_ENTRYEND -->
+
+</table>
+
+ </td>
+ </tr>
+ <tr bgcolor="#FFFFFF">
+ <td>
+ &nbsp;<br>
+ Click on a Group's Name to bring up more information about that entry.
+ </td>
+ </tr>
+</table>
+
+<!-- ELSE -->
+<p>
+ <center>
+<TABLE width=360 height=216 border=1 bgcolor=#CCCCCC align=center>
+ <TR valign=top>
+ <TD>
+<TABLE width=356 border=0 cellpadding=18 cellspacing=0 bgcolor=#CCCCCC>
+ <TR valign=top>
+ <TD>
+ <CENTER>
+ <TABLE width=320 border=0 height=168 cellpadding=0 cellspacing=0 bgcolor=#CCCCCC>
+ <TR valign=top>
+ <TD width=32>
+ <IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=message.gif" height=32 width=32 border=0>
+ </TD>
+ <TD width=9>
+ &nbsp;
+ </TD>
+ <TD>
+ <P>
+ No match found.
+ </P>
+ </TD>
+ </TR>
+ <TR valign=top>
+ <TD colspan=2>
+ </TD>
+ <TD>
+ <P>
+ No entries match the requested search term. Please try a different search.
+ </P>
+ </TD>
+ </TR>
+ </TABLE>
+ </CENTER>
+ </TD>
+ </TR>
+</TABLE>
+ </TD>
+ </TR>
+</TABLE>
+ </center>
+</p>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
+
diff --git a/ldap/clients/dsgw/config/list-NT-Groups.html b/ldap/clients/dsgw/config/list-NT-Groups.html
new file mode 100644
index 00000000..4e948551
--- /dev/null
+++ b/ldap/clients/dsgw/config/list-NT-Groups.html
@@ -0,0 +1,119 @@
+<html>
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- HEAD -->
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+<TITLE>Search for NT Groups</TITLE>
+</head>
+
+<BODY BGCOLOR="white">
+<!-- IF "FoundEntries" -->
+
+<table width="85%" border="0" cellpadding="0" cellspacing="0" bgcolor="#CCCCCC" align="center">
+ <tr valign="top" bgcolor="#FFFFFF">
+ <td bgcolor="white">
+<!-- DS_SEARCHDESC -->
+ <br>&nbsp;
+ </td>
+ </tr>
+ <tr>
+ <td>
+
+<table border="0" cellpadding="1" cellspacing="0" width="100%" bgcolor="#FFFFFF" align="center">
+ <tr align="left" bgcolor="#CCCCCC">
+ <td class="boldbig">
+ LDAP Group Name
+ </td>
+ <td class="boldbig">
+ NT Domain Name
+ </td>
+ <td class="boldbig">
+ NT Group Name
+ </td>
+ <td class="boldbig">
+ Description
+ </td>
+ </tr>
+<!-- DS_SORTENTRIES "attr=cn" -->
+
+<!-- DS_ENTRYBEGIN -->
+ <tr valign="top" bgcolor="#FFFFFF">
+ <td >
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->
+ </td>
+ <td >
+<!-- DS_ATTRIBUTE "attr=ntgroupdomainid" "syntax=ntdomain" -->
+ </td>
+ <td>
+<!-- DS_ATTRIBUTE "attr=ntgroupdomainid" "syntax=ntgroupname" -->
+ </td>
+ <td >
+<!-- DS_ATTRIBUTE "attr=description" -->
+ </td>
+ </tr>
+ <tr>
+ <td colspan="4"></td>
+ </tr>
+<!-- DS_ENTRYEND -->
+</table>
+ </td>
+ </tr>
+ <tr bgcolor="#FFFFFF">
+ <td>
+ &nbsp;<br>
+ Click on an entry's Name to bring up more information about that entry.
+ </td>
+ </tr>
+</table>
+
+<!-- ELSE -->
+<p>
+ <center>
+<TABLE width=360 height=216 border=1 bgcolor=#CCCCCC align=center>
+ <TR valign=top>
+ <TD>
+<TABLE width=356 border=0 cellpadding=18 cellspacing=0 bgcolor=#CCCCCC>
+ <TR valign=top>
+ <TD>
+ <CENTER>
+ <TABLE width=320 border=0 height=168 cellpadding=0 cellspacing=0 bgcolor=#CCCCCC>
+ <TR valign=top>
+ <TD width=32>
+ <IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=message.gif" height=32 width=32 border=0>
+ </TD>
+ <TD width=9>
+ &nbsp;
+ </TD>
+ <TD>
+ <P>
+ No match found.
+ </P>
+ </TD>
+ </TR>
+ <TR valign=top>
+ <TD colspan=2>
+ </TD>
+ <TD>
+ <P>
+ No entries match the requested search term. Please try a different search.
+ </P>
+ </TD>
+ </TR>
+ </TABLE>
+ </CENTER>
+ </TD>
+ </TR>
+</TABLE>
+ </TD>
+ </TR>
+</TABLE>
+ </center>
+</p>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
+
diff --git a/ldap/clients/dsgw/config/list-NT-People.html b/ldap/clients/dsgw/config/list-NT-People.html
new file mode 100644
index 00000000..dcd0b482
--- /dev/null
+++ b/ldap/clients/dsgw/config/list-NT-People.html
@@ -0,0 +1,152 @@
+<html>
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- HEAD -->
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+<TITLE>Search for NT-People"</TITLE>
+
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+
+function showAimIcon(aimID, aimStatusText)
+{
+if (aimStatusText == "" || aimID == "" || aimStatusText != "ONLINE") {
+ return;
+}
+
+document.write('<a href=\"aim:goim?Screenname=' + aimID.replace(/ /,"+") + '\"><IMG SRC=\"lang?<!-- GCONTEXT -->&file=aim-online.gif\" ALT=\"Click to send an AIM to this person\" BORDER=0 HSPACE=5></a>');
+}
+// End hiding -->
+</SCRIPT>
+</head>
+
+<BODY BGCOLOR="white">
+
+<!-- IF "FoundEntries" -->
+
+<table width="85%" border="0" cellpadding="0" cellspacing="0" bgcolor="#CCCCCC" align="center">
+ <tr valign="top" bgcolor="#FFFFFF">
+ <td bgcolor="white">
+<!-- DS_SEARCHDESC -->
+ <br>&nbsp;
+ </td>
+ </tr>
+ <tr>
+ <td>
+<table border="0" cellpadding="1" cellspacing="0" width="100%" bgcolor="#FFFFFF" align="center">
+ <tr align="left" bgcolor="#CCCCCC">
+ <td class="boldbig">
+ Name
+ </td>
+ <td class="boldbig">
+ NT Domain
+ </td>
+ <td class="boldbig">
+ NT Username
+ </td>
+ <td class="boldbig">
+ AIM ID
+ </td>
+ <td class="boldbig">
+ Phone
+ </td>
+ </tr>
+<!-- DS_SORTENTRIES "attr=cn" -->
+
+<!-- DS_ENTRYBEGIN -->
+ <tr valign="top" bgcolor="#FFFFFF">
+ <td >
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "hrefextra=onMouseOver=%22%0Awindow.status='Click here to view this entry in detail'; return true%22" -->
+ </td>
+ <td >
+<!-- DS_ATTRIBUTE "attr=ntuserdomainid" "syntax=ntdomain" -->
+ </td>
+ <td>
+<!-- DS_ATTRIBUTE "attr=ntuserdomainid" "syntax=ntuserid" -->
+ </td>
+ <td>
+<!-- DS_ATTRIBUTE "attr=nsaimid" -->
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+showAimIcon(
+<!-- DS_ATTRIBUTE "attr=nsaimid" "options=quoted" -->
+,
+"" //<!-- DS_ATTRIBUTE "attr=nsaimstatustext" "options=quoted" -->
+);
+//// Uncomment the above DS_ATTRIBUTE directive and remove the double ////
+//// quotes to have aim presence in search results lists ////
+
+// End hiding -->
+</SCRIPT>
+ </td>
+ <td>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" -->
+ </td>
+ </tr>
+ <tr>
+ <td colspan="4"></td>
+ </tr>
+<!-- DS_ENTRYEND -->
+</table>
+
+ </td>
+ </tr>
+ <tr bgcolor="#FFFFFF">
+ <td>
+ &nbsp;<br>
+ Click on an entry's ID to bring up more information about that entry.
+ </td>
+ </tr>
+</table>
+
+<!-- ELSE -->
+<p>
+ <center>
+<TABLE width=360 height=216 border=1 bgcolor=#CCCCCC align=center>
+ <TR valign=top>
+ <TD>
+<TABLE width=356 border=0 cellpadding=18 cellspacing=0 bgcolor=#CCCCCC>
+ <TR valign=top>
+ <TD>
+ <CENTER>
+ <TABLE width=320 border=0 height=168 cellpadding=0 cellspacing=0 bgcolor=#CCCCCC>
+ <TR valign=top>
+ <TD width=32>
+ <IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=message.gif" height=32 width=32 border=0>
+ </TD>
+ <TD width=9>
+ &nbsp;
+ </TD>
+ <TD>
+ <P>
+ No match found.
+ </P>
+ </TD>
+ </TR>
+ <TR valign=top>
+ <TD colspan=2>
+ </TD>
+ <TD>
+ <P>
+ No entries match the requested search term. Please try a different search.
+ </P>
+ </TD>
+ </TR>
+ </TABLE>
+ </CENTER>
+ </TD>
+ </TR>
+</TABLE>
+ </TD>
+ </TR>
+</TABLE>
+ </center>
+</p>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
+
diff --git a/ldap/clients/dsgw/config/list-Org-Units.html b/ldap/clients/dsgw/config/list-Org-Units.html
new file mode 100644
index 00000000..2476dac5
--- /dev/null
+++ b/ldap/clients/dsgw/config/list-Org-Units.html
@@ -0,0 +1,118 @@
+<html>
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- HEAD -->
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+<TITLE>Search for Organizational Units</TITLE>
+</head>
+<BODY BGCOLOR="white">
+
+<!-- IF "FoundEntries" -->
+
+<table width="85%" border="0" cellpadding="0" cellspacing="0" bgcolor="#CCCCCC" align="center">
+ <tr valign="top" bgcolor="#FFFFFF">
+ <td bgcolor="white">
+<!-- DS_SEARCHDESC -->
+ <br>&nbsp;
+ </td>
+ </tr>
+ <tr>
+ <td>
+<table border="0" cellpadding="1" cellspacing="0" width="100%" bgcolor="#FFFFFF" align="center">
+ <tr align="left" bgcolor="#CCCCCC">
+ <td class="boldbig">
+ Organizational&nbsp;Unit
+ </td>
+ <td class="boldbig">
+ Description
+ </td>
+ <td class="boldbig">
+ Phone
+ </td>
+ </tr>
+<!-- DS_SORTENTRIES "attr=cn" -->
+
+<!-- DS_ENTRYBEGIN -->
+ <tr valign="top" bgcolor="#FFFFFF">
+ <td >
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "hrefextra=onMouseOver=%22%0Awindow.status='Click here to view this entry in detail'; return true%22" -->
+ </td>
+ <td >
+<!-- DS_ATTRIBUTE "attr=description" -->
+ </td>
+ <td>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" -->
+ </td>
+ </tr>
+ <tr>
+ <td colspan="3"></td>
+ </tr>
+<!-- DS_ENTRYEND -->
+
+</table>
+
+ </td>
+ </tr>
+ <tr bgcolor="#FFFFFF">
+ <td>
+ &nbsp;<br>
+ Click on an entry's ID to bring up more information about that entry.
+ </td>
+ </tr>
+</table>
+
+<!-- ELSE -->
+<p>
+ <center>
+<TABLE width=360 height=216 border=1 bgcolor=#CCCCCC align=center>
+ <TR valign=top>
+ <TD>
+<TABLE width=356 border=0 cellpadding=18 cellspacing=0 bgcolor=#CCCCCC>
+ <TR valign=top>
+ <TD>
+ <CENTER>
+ <TABLE width=320 border=0 height=168 cellpadding=0 cellspacing=0 bgcolor=#CCCCCC>
+ <TR valign=top>
+ <TD width=32>
+ <IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=message.gif" height=32 width=32 border=0>
+ </TD>
+ <TD width=9>
+ &nbsp;
+ </TD>
+ <TD>
+ <P>
+
+ No match found.
+
+ </P>
+ </TD>
+ </TR>
+ <TR valign=top>
+ <TD colspan=2>
+ </TD>
+ <TD>
+ <P>
+
+ No entries match the requested search term. Please try a different search.
+
+ </P>
+ </TD>
+ </TR>
+ </TABLE>
+ </CENTER>
+ </TD>
+ </TR>
+</TABLE>
+ </TD>
+ </TR>
+</TABLE>
+ </center>
+</p>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
+
diff --git a/ldap/clients/dsgw/config/list-Organizations.html b/ldap/clients/dsgw/config/list-Organizations.html
new file mode 100644
index 00000000..7ebd787f
--- /dev/null
+++ b/ldap/clients/dsgw/config/list-Organizations.html
@@ -0,0 +1,127 @@
+<html>
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- HEAD -->
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+<TITLE>Search for Organizations</TITLE>
+</head>
+<BODY BGCOLOR="white">
+
+<!-- IF "FoundEntries" -->
+
+<table width="85%" border="0" cellpadding="0" cellspacing="0" bgcolor="#CCCCCC" align="center">
+ <tr valign="top" bgcolor="#FFFFFF">
+ <td bgcolor="white">
+<!-- DS_SEARCHDESC -->
+ <br>&nbsp;
+ </td>
+ </tr>
+ <tr>
+ <td>
+
+<table border="0" cellpadding="1" cellspacing="0" width="100%" bgcolor="#FFFFFF" align="center">
+ <tr align="left" bgcolor="#CCCCCC">
+ <td class="boldbig">
+ Organization
+ </td>
+ <td class="boldbig">
+ Description
+ </td>
+ <td class="boldbig">
+ Phone
+ </td>
+ </tr>
+<!-- DS_SORTENTRIES "attr=cn" -->
+
+<!-- DS_ENTRYBEGIN -->
+ <tr valign="top" bgcolor="#FFFFFF">
+ <td >
+
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->
+
+ </td>
+ <td >
+
+<!-- DS_ATTRIBUTE "attr=description" -->
+
+ </td>
+ <td>
+
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" -->
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="3"></td>
+ </tr>
+<!-- DS_ENTRYEND -->
+
+</table>
+
+ </td>
+ </tr>
+ <tr bgcolor="#FFFFFF">
+ <td>
+ &nbsp;<br>
+
+ Click on an organization's name to bring up more information about that entry.
+
+ </td>
+ </tr>
+</table>
+
+<!-- ELSE -->
+<p>
+ <center>
+<TABLE width=360 height=216 border=1 bgcolor=#CCCCCC align=center>
+ <TR valign=top>
+ <TD>
+<TABLE width=356 border=0 cellpadding=18 cellspacing=0 bgcolor=#CCCCCC>
+ <TR valign=top>
+ <TD>
+ <CENTER>
+ <TABLE width=320 border=0 height=168 cellpadding=0 cellspacing=0 bgcolor=#CCCCCC>
+ <TR valign=top>
+ <TD width=32>
+ <IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=message.gif" height=32 width=32 border=0>
+ </TD>
+ <TD width=9>
+ &nbsp;
+ </TD>
+ <TD>
+ <P>
+
+ No match found.
+
+ </P>
+ </TD>
+ </TR>
+ <TR valign=top>
+ <TD colspan=2>
+ </TD>
+ <TD>
+ <P>
+
+ No entries match the requested search term. Please try a different search.
+
+ </P>
+ </TD>
+ </TR>
+ </TABLE>
+ </CENTER>
+ </TD>
+ </TR>
+</TABLE>
+ </TD>
+ </TR>
+</TABLE>
+ </center>
+</p>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
+
diff --git a/ldap/clients/dsgw/config/list-People.html b/ldap/clients/dsgw/config/list-People.html
new file mode 100644
index 00000000..bcff3d65
--- /dev/null
+++ b/ldap/clients/dsgw/config/list-People.html
@@ -0,0 +1,176 @@
+<html>
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- HEAD -->
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+<TITLE>Search for People</TITLE>
+
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+
+function showAimIcon(aimID, aimStatusText)
+{
+if (aimStatusText == "" || aimID == "" || aimStatusText != "ONLINE") {
+ return;
+}
+
+
+document.write('<a href=\"aim:goim?Screenname=' + aimID.replace(/ /,"+") + '\"><IMG SRC=\"lang?<!-- GCONTEXT -->&file=aim-online.gif\" ALT=\"Click to send an AIM to this person\" BORDER=0 HSPACE=5></a>');
+}
+// End hiding -->
+</SCRIPT>
+</HEAD>
+<BODY BGCOLOR="white">
+
+<!-- IF "FoundEntries" -->
+
+<table width="85%" border="0" cellpadding="0" cellspacing="0" bgcolor="#CCCCCC" align="center">
+ <tr valign="top" bgcolor="#FFFFFF">
+ <td bgcolor="white">
+
+<!-- DS_SEARCHDESC -->
+
+ <br>&nbsp;
+ </td>
+ </tr>
+ <tr>
+ <td>
+
+<table border="0" cellpadding="1" cellspacing="0" width="100%" bgcolor="#FFFFFF" align="center">
+ <tr align="left" bgcolor="#CCCCCC">
+ <td class="boldbig">
+ Name
+ </td>
+ <td class="boldbig">
+ ID
+ </td>
+ <td class="boldbig">
+ Phone
+ </td>
+ <td class="boldbig">
+ E-mail
+ </td>
+ <td class="boldbig">
+ AIM ID
+ </td>
+ <td class="boldbig">
+ Group
+ </td>
+ </tr>
+<!-- DS_SORTENTRIES "attr=cn" -->
+
+<!-- DS_ENTRYBEGIN -->
+ <tr valign="top" bgcolor="#FFFFFF">
+ <td >
+
+<!-- DS_ATTRIBUTE "attr=cn" "syntax=cis" -->
+
+ </td>
+ <td >
+
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "hrefextra=onMouseOver=%22%0Awindow.status='Click here to view this entry in detail'; return true%22" -->
+
+ </td>
+ <td>
+
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" -->
+
+ </td>
+ <td>
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" -->
+ </td>
+ <td>
+<!-- DS_ATTRIBUTE "attr=nsaimid" -->
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+showAimIcon(
+<!-- DS_ATTRIBUTE "attr=nsaimid" "options=quoted" -->
+,
+"" //<!-- DS_ATTRIBUTE "attr=nsaimstatustext" "options=quoted" -->
+);
+//// Uncomment the above DS_ATTRIBUTE directive and remove the double ////
+//// quotes to have aim presence in search results lists ////
+
+// End hiding -->
+</SCRIPT>
+ </td>
+ <td>
+
+<!-- DS_ATTRIBUTE "attr=ou" "syntax=cis"-->
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="5"></td>
+ </tr>
+<!-- DS_ENTRYEND -->
+
+</table>
+
+ </td>
+ </tr>
+ <tr bgcolor="#FFFFFF">
+ <td>
+ &nbsp;<br>
+
+ Click on an entry's ID to bring up more information about that entry.
+
+ </td>
+ </tr>
+</table>
+
+<!-- ELSE -->
+<p>
+ <center>
+<TABLE width=360 height=216 border=1 bgcolor=#CCCCCC align=center>
+ <TR valign=top>
+ <TD>
+<TABLE width=356 border=0 cellpadding=18 cellspacing=0 bgcolor=#CCCCCC>
+ <TR valign=top>
+ <TD>
+ <CENTER>
+ <TABLE width=320 border=0 height=168 cellpadding=0 cellspacing=0 bgcolor=#CCCCCC>
+ <TR valign=top>
+ <TD width=32>
+ <IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=message.gif" height=32 width=32 border=0>
+ </TD>
+ <TD width=9>
+ &nbsp;
+ </TD>
+ <TD>
+ <P>
+
+ No match found.
+
+ </P>
+ </TD>
+ </TR>
+ <TR valign=top>
+ <TD colspan=2>
+ </TD>
+ <TD>
+ <P>
+
+ No entries match the requested search term. Please try a different search.
+
+ </P>
+ </TD>
+ </TR>
+ </TABLE>
+ </CENTER>
+ </TD>
+ </TR>
+</TABLE>
+ </TD>
+ </TR>
+</TABLE>
+ </center>
+</p>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
+
diff --git a/ldap/clients/dsgw/config/list-fa-Groups.html b/ldap/clients/dsgw/config/list-fa-Groups.html
new file mode 100644
index 00000000..ddc2a572
--- /dev/null
+++ b/ldap/clients/dsgw/config/list-fa-Groups.html
@@ -0,0 +1,26 @@
+<html>
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+<TITLE>Search for People</TITLE>
+</head>
+</body>
+<!-- IF "FoundEntries" -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+<FORM>
+<!-- DS_ENTRYBEGIN -->
+
+<!-- DS_ENTRYEND -->
+<!-- DS_END_ENTRYFORM -->
+</FORM>
+
+<!-- ELSE -->
+<!-- DS_ALERT_NOENTRIES -->
+<!-- ENDIF -->
+</body>
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/list-fa-People.html b/ldap/clients/dsgw/config/list-fa-People.html
new file mode 100644
index 00000000..ddc2a572
--- /dev/null
+++ b/ldap/clients/dsgw/config/list-fa-People.html
@@ -0,0 +1,26 @@
+<html>
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+<TITLE>Search for People</TITLE>
+</head>
+</body>
+<!-- IF "FoundEntries" -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+<FORM>
+<!-- DS_ENTRYBEGIN -->
+
+<!-- DS_ENTRYEND -->
+<!-- DS_END_ENTRYFORM -->
+</FORM>
+
+<!-- ELSE -->
+<!-- DS_ALERT_NOENTRIES -->
+<!-- ENDIF -->
+</body>
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/list-urlsearch.html b/ldap/clients/dsgw/config/list-urlsearch.html
new file mode 100644
index 00000000..bee6edda
--- /dev/null
+++ b/ldap/clients/dsgw/config/list-urlsearch.html
@@ -0,0 +1,129 @@
+<html>
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- HEAD -->
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+<TITLE>URL-based Search</TITLE>
+</head>
+<BODY BGCOLOR="white">
+
+<!-- IF "FoundEntries" -->
+
+<table width="85%" border="0" cellpadding="0" cellspacing="0" bgcolor="#CCCCCC" align="center">
+ <tr valign="top" bgcolor="#FFFFFF">
+ <td bgcolor="white">
+
+<!-- DS_SEARCHDESC -->
+
+ <br>&nbsp;
+ </td>
+ </tr>
+ <tr>
+ <td>
+
+<table border="0" cellpadding="1" cellspacing="0" width="100%" bgcolor="#FFFFFF" align="center">
+ <tr align="left" bgcolor="#CCCCCC">
+ <td class="boldbig">
+ Name
+ </td>
+ <td class="boldbig">
+ Phone
+ </td>
+ <td class="boldbig">
+ E-mail
+ </td>
+ </tr>
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+ <tr valign="top" bgcolor="#FFFFFF">
+ <td >
+
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" -->
+
+ </td>
+
+ <td>
+
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" -->
+
+ </td>
+ <td >
+
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" -->
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="3"></td>
+ </tr>
+<!-- DS_ENTRYEND -->
+
+</table>
+
+ </td>
+ </tr>
+ <tr bgcolor="#FFFFFF">
+ <td>
+ &nbsp;<br>
+
+ Click on an entry's Name to bring up more information about that entry.
+
+ </td>
+ </tr>
+</table>
+
+<!-- ELSE -->
+<p>
+ <center>
+<TABLE width=360 height=216 border=1 bgcolor=#CCCCCC align=center>
+ <TR valign=top>
+ <TD>
+<TABLE width=356 border=0 cellpadding=18 cellspacing=0 bgcolor=#CCCCCC>
+ <TR valign=top>
+ <TD>
+ <CENTER>
+ <TABLE width=320 border=0 height=168 cellpadding=0 cellspacing=0 bgcolor=#CCCCCC>
+ <TR valign=top>
+ <TD width=32>
+ <IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=message.gif" height=32 width=32 border=0>
+ </TD>
+ <TD width=9>
+ &nbsp;
+ </TD>
+ <TD>
+ <P>
+
+ No match found.
+
+ </P>
+ </TD>
+ </TR>
+ <TR valign=top>
+ <TD colspan=2>
+ </TD>
+ <TD>
+ <P>
+
+ No entries match the requested search term. Please try a different search.
+
+ </P>
+ </TD>
+ </TR>
+ </TABLE>
+ </CENTER>
+ </TD>
+ </TR>
+</TABLE>
+ </TD>
+ </TR>
+</TABLE>
+ </center>
+</p>
+<!-- ENDIF -->
+</body>
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/config/newentry.html b/ldap/clients/dsgw/config/newentry.html
new file mode 100644
index 00000000..cff71a66
--- /dev/null
+++ b/ldap/clients/dsgw/config/newentry.html
@@ -0,0 +1,26 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--newentry.html-->
+<TITLE>Netscape Directory Server Gateway: New Entry</TITLE>
+<!-- DS_NEWENTRY_SCRIPT -->
+</HEAD>
+<FRAMESET ROWS=130,70,* BORDER=0 onLoad="init()">
+ <FRAME SRC="lang?<!-- GCONTEXT -->&file=newentrytitle.html" NORESIZE SCROLLING="NO">
+ <FRAME SRC="newentry?<!-- GCONTEXT -->&file=type"
+ NAME="newentryTypeFrame" SCROLLING="NO">
+ <FRAME SRC="newentry?<!-- GCONTEXT -->&file=name"
+ NAME="newentryNameFrame">
+</FRAMESET>
+
+<NOFRAMES>
+<BODY>
+You must use a client that supports frames to view this document.
+</BODY>
+</NOFRAMES>
+</HTML>
diff --git a/ldap/clients/dsgw/config/newentryName.html b/ldap/clients/dsgw/config/newentryName.html
new file mode 100644
index 00000000..ab65c998
--- /dev/null
+++ b/ldap/clients/dsgw/config/newentryName.html
@@ -0,0 +1,62 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!--newentryName.html-->
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</HEAD>
+<!-- DS_NEWENTRY_NAME_BODY -->
+<p>
+<!-- DS_NEWENTRY_NAME_FORM -->
+<CENTER> <TABLE WIDTH="85%" CELLPADDING=3 CELLSPACING=3 BORDER=0> <TR> <TD>
+<B>Step 2.</B> Provide a name for the new
+<!-- EVALUATE "entType.fullname" -->
+.
+<BR>
+<!-- EVALUATE "entType.rdnattr" -->
+:
+
+<INPUT TYPE="text" NAME="entryname" SIZE="40">
+<P>
+
+<B>Step 3.</B>
+
+<!-- DS_NEWENTRY_LOCATION_BEGIN -->
+Select a directory location for this
+<!-- EVALUATE "entType.fullname" -->
+, or select Other and enter the complete
+distinguished name where this entry should be added.
+<p>
+<!-- DS_NEWENTRY_LOCATION_SELECT -->
+<OPTION VALUE="">Other</OPTION>
+</SELECT>
+
+<BR>
+<!--
+<INPUT TYPE="text" NAME="dnsuffix" SIZE="70" onFocus="parent.dnsuffixFocus(this.form)">
+-->
+<TEXTAREA NAME="dnsuffix" ROWS=2 COLS=40 WRAP="soft" onFocus="parent.dnsuffixFocus(this.form)">
+</TEXTAREA>
+<P>
+
+<B>Step 4.</B>
+<!-- DS_NEWENTRY_LOCATION_END -->
+
+Click Continue. You will be presented with an editable view
+of the entry. When you are done filling in information,
+save the entry.
+<P>
+
+</TD> </TR> <TR> <TD BGCOLOR="#CCCCCC" ALIGN="middle">
+
+<INPUT TYPE="submit" VALUE="Continue" WIDTH=72>
+<!-- DS_HELP_BUTTON "ADDING" -->
+<TD> </TR>
+</TABLE> </CENTER>
+</FORM>
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/config/newentryType.html b/ldap/clients/dsgw/config/newentryType.html
new file mode 100644
index 00000000..d043a6ff
--- /dev/null
+++ b/ldap/clients/dsgw/config/newentryType.html
@@ -0,0 +1,25 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+<!--newentryType.html-->
+</head>
+<!-- DS_NEWENTRY_TYPE_BODY -->
+<!-- DS_NEWENTRY_TYPE_FORM -->
+<CENTER> <TABLE WIDTH="85%" CELLPADDING=3 CELLSPACING=3 BORDER=0> <TR> <TD>
+Create New Entry
+<BR>
+
+<B>Step 1.</B> Select the type of entry to create.
+<!-- DS_NEWENTRY_TYPE_SELECT -->
+
+</TD> </TR> </TABLE> </CENTER>
+</FORM>
+</BODY>
+</HTML>
+
diff --git a/ldap/clients/dsgw/config/ns-license-schema.conf b/ldap/clients/dsgw/config/ns-license-schema.conf
new file mode 100644
index 00000000..7ab2c1fe
--- /dev/null
+++ b/ldap/clients/dsgw/config/ns-license-schema.conf
@@ -0,0 +1,17 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+attribute nsLicensedFor cis
+attribute nsLicenseStartTime cis
+attribute nsLicenseEndTime cis
+
+objectclass nsLicenseUser
+ requires
+ objectClass
+ allows
+ nsLicensedFor
+ nsLicenseStartTime
+ nsLicenseEndTime
diff --git a/ldap/clients/dsgw/config/search.html b/ldap/clients/dsgw/config/search.html
new file mode 100644
index 00000000..2aa7ffd8
--- /dev/null
+++ b/ldap/clients/dsgw/config/search.html
@@ -0,0 +1,18 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- search.html -->
+<TITLE>Netscape Directory Server Gateway: Standard Search</TITLE>
+<!-- DS_SEARCH_SCRIPT -->
+</HEAD>
+<FRAMESET ROWS=130,100,* BORDER=0 onLoad="init()">
+ <FRAME SRC="lang?<!-- GCONTEXT -->&file=searchtitle.html" SCROLLING="NO">
+ <FRAME SRC="search?<!-- GCONTEXT -->&file=string" NAME=searchFrame NORESIZE SCROLLING="NO">
+ <FRAME SRC="lang?<!-- GCONTEXT -->&file=greeting.html" NAME=outputFrame>
+</FRAMESET>
+</HTML>
diff --git a/ldap/clients/dsgw/config/searchString.html b/ldap/clients/dsgw/config/searchString.html
new file mode 100644
index 00000000..dfad73dc
--- /dev/null
+++ b/ldap/clients/dsgw/config/searchString.html
@@ -0,0 +1,41 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- searchString.html -->
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</HEAD>
+<!-- DS_SEARCH_BODY -->
+<!-- DS_SEARCH_FORM "target=outputFrame" -->
+<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=3 WIDTH=100%>
+<TR> <TD ALIGN="right">
+Find
+ </TD>
+<TD>
+<!-- DS_SEARCH_TYPE -->
+within
+<B>
+<!-- DS_SEARCH_BASE -->
+</B>
+ </TD>
+</TR> <TR>
+<TD ALIGN="right">
+Search for
+ </TD>
+<TD COLSPAN=3>
+<INPUT NAME="searchstring" SIZE=30>
+
+<INPUT TYPE="SUBMIT" VALUE="Search" WIDTH="72">
+<!-- DS_HELP_BUTTON "SMARTSEARCH" -->
+ </TD>
+</TR> </TABLE>
+<INPUT TYPE="hidden" NAME="ldapsizelimit" VALUE="1000">
+<INPUT TYPE="hidden" NAME="ldaptimelimit" VALUE="180">
+<!-- PCONTEXT -->
+</FORM>
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/config/zh/dsgw-l10n.conf b/ldap/clients/dsgw/config/zh/dsgw-l10n.conf
new file mode 100644
index 00000000..0482312b
--- /dev/null
+++ b/ldap/clients/dsgw/config/zh/dsgw-l10n.conf
@@ -0,0 +1,18 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+# To localize the search type menu:
+# Locate dsgw-l10n.conf in config/<lang>/.
+# dsgw-l10n.conf contains translated words for search type pulldown menu.
+# dsgw-l10n.conf sample:
+# Note: the sample part should have double #'s for L10n.
+## translate People <People_translated_in_lang>
+## translate NT-People <NT-People_translated_in_lang>
+## translate Groups <Groups_translated_in_lang>
+## translate NT-Groups <NT-Groups_translated_in_lang>
+## translate Organizations <Organizations_translated_in_lang>
+## translate Org-Units <Org-Units_translated_in_lang>
+## translate Anything <Anything_translated_in_lang>
diff --git a/ldap/clients/dsgw/config/zh/dsgwcharset.conf b/ldap/clients/dsgw/config/zh/dsgwcharset.conf
new file mode 100644
index 00000000..d8b0f859
--- /dev/null
+++ b/ldap/clients/dsgw/config/zh/dsgwcharset.conf
@@ -0,0 +1,7 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+big5
diff --git a/ldap/clients/dsgw/cookie.c b/ldap/clients/dsgw/cookie.c
new file mode 100644
index 00000000..97c18b0d
--- /dev/null
+++ b/ldap/clients/dsgw/cookie.c
@@ -0,0 +1,990 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+/*
+ * cookie.c -- routines to generate and manipulate cookies for dsgw
+ *
+ * Copyright (c) 1996 Netscape Communications Corp.
+ * All rights reserved.
+ */
+
+#include "dsgw.h"
+
+#include "../../include/portable.h"
+
+#include <stdio.h>
+#if !defined( XP_WIN32 )
+#include <sys/param.h>
+#endif
+
+#include <ssl.h>
+#ifdef NSS38_AND_OLDER
+#include <secrng.h>
+#else
+#include "ecl-exp.h"
+#endif
+#include <nss.h>
+#include <base64.h>
+#include <sys/types.h>
+#include <limits.h>
+#include <string.h>
+
+#ifdef _WIN32
+#include <windows.h>
+#include <time.h>
+#include <io.h>
+#include <fcntl.h>
+#include <sys/locking.h>
+#else /* _WIN32 */
+#include <unistd.h>
+#endif /* _WIN32 */
+
+#include <pk11func.h>
+#include <pkcs11.h>
+#include <pk11pqg.h>
+
+
+static char *dsgw_MungeString(const char *unmunged_string);
+static char *dsgw_UnMungeString(const char *munged_string);
+static char *dsgw_encDec(CK_ATTRIBUTE_TYPE operation, const char *msg);
+void dsgw_initNSS(void);
+
+static char tokDes[34] = "Communicator Generic Crypto Svcs";
+static char ptokDes[34] = "Internal (Software) Token ";
+
+int dsgw_NSSInitializedAlready = 0;
+
+/* Table for converting binary values to and from hexadecimal */
+static char hex[] = "0123456789abcdef";
+#if 0
+static char dec[256] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 15 */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 16 - 37 */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* ' ' - '/' */
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, /* '0' - '?' */
+ 0,10,11,12,13,14,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* '@' - 'O' */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 'P' - '_' */
+ 0,10,11,12,13,14,15, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* '`' - 'o' */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 'p' - DEL */
+};
+#endif
+
+
+#define CKLEN 32
+#define RNDBUFLEN ( CKLEN / 2 )
+#define CKBUFSIZ 255
+/*
+ * Given a buffer buf of length len, return a pointer to a string containing
+ * the hex-encoded version of buf. The caller is responsible for freeing
+ * the memory this routine allocates.
+ */
+static char *
+buf2str( unsigned char *buf, int len )
+{
+ char *obuf;
+ int i;
+ char *p;
+
+ if ( buf == NULL ) {
+ return NULL;
+ }
+
+ p = obuf = dsgw_ch_malloc( CKLEN + 1 );
+ for ( i = 0; i < len; i++) {
+ *p++ = hex[( buf[ i ] >> 4 ) & 0xf ];
+ *p++ = hex[( buf[ i ]) & 0xf ];
+ }
+ *p++ = '\0';
+ return obuf;
+}
+
+
+
+/*
+ * Generate a random string of hex-encoded digits, CKLEN characters in
+ * length. This routine allocates memory which the caller is responsible
+ * for freeing.
+ */
+char *
+dsgw_mkrndstr()
+{
+ unsigned char buf[ RNDBUFLEN ];
+
+ PK11_ConfigurePKCS11(NULL, NULL, tokDes, ptokDes, NULL, NULL, NULL, NULL, 0, 0 );
+ /*NSS_NoDB_Init(NULL);*/
+ dsgw_initNSS();
+ PK11_GenerateRandom(buf, RNDBUFLEN);
+ return( buf2str( buf, RNDBUFLEN ));
+}
+
+
+FILE *
+dsgw_opencookiedb()
+{
+ FILE *fp;
+ time_t now;
+ int newfile = 0;
+ char cdb[MAXPATHLEN]; /*DSGW_COOKIEDB_FNAME + context*/
+
+#ifdef XP_WIN32
+#ifndef F_OK
+#define F_OK 0
+#endif
+#endif
+ sprintf(cdb, "%s.%s", DSGW_COOKIEDB_FNAME, context);
+
+ if ( access( cdb, F_OK ) == 0 ) {
+ fp = fopen( cdb, "r+" );
+ } else {
+ newfile = 1;
+ fp = fopen( cdb, "w" );
+ }
+ if ( fp == NULL ) {
+ return NULL;
+ }
+ /* fseek( fp, 0L, SEEK_SET ); */
+#ifdef XP_WIN32
+ (void) chmod( cdb, _S_IREAD | _S_IWRITE );
+#else
+ (void) chmod( cdb, S_IRUSR | S_IWUSR );
+#endif
+
+ /* acquire a lock */
+#ifdef _WIN32
+ while ( _locking( _fileno( fp ), LK_NBLCK, 0xFFFFFFFF ) != 0 ) {
+#else
+#ifdef USE_LOCKF
+ while ( lockf( fileno( fp ), F_LOCK, 0 ) != 0 ) {
+#else /* _WIN32 */
+ while ( flock( fileno( fp ), LOCK_EX ) != 0 ) {
+#endif
+#endif /* _WIN32 */
+ ; /* NULL */
+ }
+ if ( newfile ) {
+ time( &now );
+ fprintf( fp, "lastpurge: %-20lu\n", now );
+ fflush( fp );
+ fseek( fp, 0L, SEEK_SET );
+ }
+ return fp;
+}
+
+
+void
+dsgw_closecookiedb( FILE *fp )
+{
+#ifdef _WIN32
+ _locking( _fileno( fp ), LK_UNLCK, 0xFFFFFFFF );
+#else /* _WIN32 */
+#ifdef USE_LOCKF
+ lockf( fileno( fp ), F_ULOCK, 0 );
+#else
+ flock( fileno( fp ), LOCK_UN );
+#endif
+#endif /* _WIN32 */
+ fclose( fp );
+}
+
+
+
+/*
+ * Return a pointer to the password associated with the given
+ * cookie and dn. If the cookie was not found in the database,
+ * or if the cookie has expired, 1 is returned. On success, 0 is returned
+ * and ret_pw is set to the password from the database. As a side effect,
+ * if the database has not been purged of expired entries in more than
+ * 10 minutes, the database is purged.
+ *
+ * As a special case, if the cookie is expired and gc->gc_mode is
+ * DSGW_MODE_DOMODIFY (that is, the user is saving a modified entry), then
+ * return 0 if the cookie has been expired for no more than 5 minutes.
+ * This keeps users from being frustrated by getting an editable view of
+ * an entry and having the cookie expire while editing.
+ * The caller is responsible for freeing ret_pw.
+ */
+int
+dsgw_ckdn2passwd( char *rndstr, char *dn, char **ret_pw )
+{
+ FILE *fp;
+ char buf[ CKBUFSIZ ];
+ char *p, *pw, *lifetimestr, *cdn;
+ time_t now;
+ int expired = 0;
+
+ if ( !strcmp( rndstr, DSGW_UNAUTHSTR )) {
+ *ret_pw = NULL;
+ return 0;
+ }
+
+ if (( fp = dsgw_opencookiedb()) == NULL ) {
+ return DSGW_CKDB_CANTOPEN;
+ }
+
+ for (;;) {
+ if ( fgets( buf, CKBUFSIZ, fp ) == NULL ) {
+ dsgw_closecookiedb( fp );
+#ifdef DSGW_DEBUG
+ dsgw_log( "dsgw_ckdn2passwd: cookie <%s> not found in db\n",
+ rndstr );
+#endif
+ return DSGW_CKDB_KEY_NOT_PRESENT;
+ }
+
+#ifdef DSGW_DEBUG
+ dsgw_log( "dsgw_ckdn2passwd: retrieved buf from db: <%s>\n", buf );
+#endif
+ if ( buf[ strlen( buf ) - 1 ] == '\n' ) {
+ buf[ strlen( buf ) - 1 ] = '\0';
+ }
+
+ if ( strncmp( buf, rndstr, strlen( rndstr ))) {
+ continue;
+ }
+
+ if (( p = strchr( buf, ':' )) == NULL ) {
+ dsgw_closecookiedb( fp );
+#ifdef DSGW_DEBUG
+ dsgw_log( "dsgw_ckdn2passwd: colon 1 missing\n" );
+#endif
+ return DSGW_CKDB_DBERROR;
+ }
+ *p++ = '\0';
+ lifetimestr = p;
+ if (( p = strchr( lifetimestr, ':' )) == NULL ) {
+ dsgw_closecookiedb( fp );
+#ifdef DSGW_DEBUG
+ dsgw_log( "dsgw_ckdn2passwd: colon 2 missing\n" );
+#endif
+ return DSGW_CKDB_DBERROR;
+ }
+ *p++ = '\0';
+ pw = p;
+
+ if (( p = strchr( pw, ':' )) == NULL ) {
+ dsgw_closecookiedb( fp );
+#ifdef DSGW_DEBUG
+ dsgw_log( "dsgw_ckdn2passwd: colon 3 missing\n" );
+#endif
+ return DSGW_CKDB_DBERROR;
+ }
+ *p++ = '\0';
+ cdn = p;
+
+ if ( strcmp( dn, cdn )) {
+ dsgw_closecookiedb( fp );
+#ifdef DSGW_DEBUG
+ dsgw_log( "dsgw_ckdn2passwd: dn <%s> != cdn <%s>\n", dn, cdn );
+#endif
+ return DSGW_CKDB_KEY_NOT_PRESENT;
+ }
+
+ /* expired? */
+ time( &now );
+ if ( gc->gc_mode == DSGW_MODE_DOMODIFY ) {
+ if ( now > ( atoi( lifetimestr ) + DSGW_MODIFY_GRACEPERIOD )) {
+ expired = 1;
+ } else {
+#ifdef DSGW_DEBUG
+ dsgw_log( "dsgw_ckdn2passwd: cookie expired (%ld > %ld) but within domodify grace period\n", now, atoi( lifetimestr ));
+#endif
+ }
+ } else if ( now > atoi( lifetimestr )) {
+ expired = 1;
+ }
+
+ if ( expired != 0 ) {
+ dsgw_closecookiedb( fp );
+#ifdef DSGW_DEBUG
+ dsgw_log( "dsgw_ckdn2passwd: expired (%ld > %ld)\n", now, atoi( lifetimestr ));
+#endif
+ return DSGW_CKDB_EXPIRED;
+ }
+
+ *ret_pw = dsgw_UnMungeString( pw );
+ dsgw_closecookiedb( fp );
+ return ( *ret_pw == NULL ) ? 1 : 0;
+ }
+}
+
+
+
+/*
+ * Store the given cookie and password into the database. The cookie
+ * is marked to expire at the time given by "expires". Returns 0 if
+ * successful, otherwise returns an error as given in dsgw.h.
+ * As a side effect, if the database has not been purged of expired
+ * entries in more than 10 minutes, the database is purged.
+ *
+ * Note: DNs are stored unescaped in the cookie database. Passwords
+ * are stored as "munged" values (encrypted using a hard-coded key and
+ * then converted to ASCII as described in RFC-1113) to make them a bit
+ * less obvious and to avoid problems which might arise from embedded ":"
+ * characters in the password (":" is the field separator in the database).
+ */
+int
+dsgw_storecookie( char *rndstr, char *dn, char *password, time_t lifetime )
+{
+ FILE *fp;
+ char *epw;
+ time_t now, lp;
+
+ if (( fp = dsgw_opencookiedb()) == NULL ) {
+ return DSGW_CKDB_CANTOPEN;
+ }
+
+ /* append record */
+ if ( fseek( fp, 0L, SEEK_END ) < 0 ) {
+ return DSGW_CKDB_CANTAPPEND;
+ }
+ if (( epw = dsgw_MungeString( password )) == NULL ) {
+ return DSGW_CKDB_CANTAPPEND; /* error msg is close enough */
+ }
+
+ time( &now );
+ if ( fprintf( fp, "%s:%lu:%s:%s\n", rndstr, lifetime + now, epw, dn )
+ < 0 ) {
+ free( epw );
+ return DSGW_CKDB_CANTAPPEND;
+ }
+
+ fflush( fp );
+
+ dsgw_closecookiedb( fp );
+ fp = dsgw_opencookiedb();
+ lp = dsgw_getlastpurged( fp );
+ dsgw_closecookiedb( fp );
+
+ if ( lp + DSGW_CKPURGEINTERVAL < now ) {
+ dsgw_purgedatabase( NULL );
+ }
+#ifdef DSGW_DEBUG
+ dsgw_log( "dsgw_storecookie: stored %s:%lu:%s:%s\n", rndstr, lifetime + now, epw, dn );
+#endif
+ free( epw );
+ return 0;
+}
+
+
+/*
+ * Remove a cookie from the database.
+ * Format of cookie argument is "nsdsgwauth=cookie-string:escaped-dn"
+ */
+int
+dsgw_delcookie( char *cookie )
+{
+ FILE *fp;
+ char *rndstr, *dn, *dnp, *dbdn, *p;
+ char buf[ CKBUFSIZ ];
+ int rc;
+ long buflen;
+
+ /* Parse the given cookie - find the random string */
+ if (( rndstr = strchr( cookie, '=' )) == NULL ) {
+ /* malformed cookie */
+ return -1;
+ } else {
+ /* Get the escaped DN */
+ rndstr++;
+ if (( dn = strchr( rndstr, ':' )) == NULL ) {
+ /* malformed cookie */
+ return -1;
+ } else {
+ *dn++ = '\0';
+ dsgw_form_unescape( dn );
+ }
+ }
+
+ /*
+ * Open the cookie database, find the rndstr, make sure the DNs
+ * match, and delete that entry if found.
+ */
+ if (( fp = dsgw_opencookiedb()) == NULL ) {
+ return -1;
+ }
+ fgets( buf, CKBUFSIZ, fp );
+ if ( strncmp( buf, "lastpurge:", 10 )) {
+ dsgw_closecookiedb( fp );
+ return -1;
+ }
+ rc = DSGW_CKDB_KEY_NOT_PRESENT;
+ for (;;) {
+ if ( fgets( buf, CKBUFSIZ, fp ) == NULL ) {
+ break;
+ }
+ if ( strncmp( buf, rndstr, CKLEN )) {
+ continue;
+ }
+ buflen = strlen( buf );
+ /* Found the random string - check DN */
+ if (( dbdn = strrchr( buf, ':' )) == NULL ) {
+ continue;
+ } else {
+ dbdn++;
+ if ( dbdn[ strlen( dbdn) - 1 ] == '\n' ) {
+ dbdn[ strlen( dbdn) - 1 ] = '\0';
+ }
+ if ( strcmp( dbdn, dn )) {
+ continue;
+ } else {
+ /* Found it. Set the expiration time to zero and obliterate
+ * the password.
+ */
+ p = strchr( buf, ':' );
+ for ( p++; *p != ':'; p++ ) {
+ *p = '0'; /* yes, '0', not '\0' */
+ }
+ dnp = strrchr( buf, ':' );
+ for ( p++; p < dnp; p++ ) {
+ *p = 'x';
+ }
+ p++;
+ fseek( fp, -buflen, SEEK_CUR );
+ fputs( buf, fp );
+ fputs( "\n", fp );
+ fflush( fp );
+ rc = 0;
+ }
+ }
+ }
+
+ dsgw_closecookiedb( fp );
+
+ if ( rc == 0 ) {
+ dsgw_purgedatabase( dn );
+ }
+
+ return rc;
+}
+
+
+
+
+
+
+/*
+ * Retrieve the time of the last database purge. Returns zero on error.
+ * The caller must open and lock the cookie database before calling this
+ * routine. The file pointer's position in the file is preserved.
+ */
+time_t
+dsgw_getlastpurged( FILE *fp )
+{
+ char buf[ CKBUFSIZ ];
+ char *p;
+ size_t pos;
+ time_t ret;
+
+ if ( fp == NULL ) {
+ return (time_t) 0L;
+ }
+
+ pos = ftell( fp );
+ fseek( fp, 0L, SEEK_SET );
+
+ fgets( buf, CKBUFSIZ, fp );
+ if ( strncmp( buf, "lastpurge:", 10 )) {
+ ret = (time_t) 0L;
+ } else {
+ p = buf + 10;
+ if ( *p != '\0' ) {
+ ret = (time_t) atol( p );
+ } else {
+ ret = (time_t) 0L;
+ }
+ }
+ fseek( fp, pos, SEEK_SET );
+ return ret;
+}
+
+
+/*
+ * Purge the database of any expired entries. Returns the number of
+ * entries purged, or -1 if an error occurred. If "dn" is non-NULL,
+ * then this routine will also remove any entries where the DN matches
+ * "dn".
+ */
+#define DSGW_CK_DEBUG 1
+int
+dsgw_purgedatabase( char *dn )
+{
+ FILE *fp, *ofp;
+ time_t now;
+ char buf[ CKBUFSIZ ];
+ char *exp;
+ char expbuf[ 32 ];
+ char *nbuf;
+ int purged = 0;
+#ifdef _WIN32
+ int fh;
+#endif
+ size_t osize; /* original size of file */
+ size_t csize; /* current size of file */
+ char cdb[MAXPATHLEN]; /*DSGW_COOKIEDB_FNAME + context*/
+
+ sprintf(cdb, "%s.%s", DSGW_COOKIEDB_FNAME, context);
+
+ if (( fp = dsgw_opencookiedb()) == NULL ) {
+ return -1;
+ }
+
+ fseek( fp, 0L, SEEK_END );
+ osize = ftell( fp );
+ fseek( fp, 0L, SEEK_SET );
+
+ if (( ofp = fopen( cdb, "r+" )) == NULL ) {
+ dsgw_closecookiedb( fp );
+ return -1;
+ }
+
+ /* re-write the last purge time */
+ time( &now );
+ fprintf( ofp, "lastpurge: %-20lu\n", now );
+
+ for (;;) {
+ char *p;
+ char *dbdn;
+ int nukeit;
+
+ nukeit = 0;
+
+ if ( fgets( buf, CKBUFSIZ, fp ) == NULL ) {
+ break;
+ }
+ if ( strncmp( buf, "lastpurge:", 10 ) == 0 ) {
+ continue;
+ }
+ if (( p = strchr( buf, ':' )) == NULL ) {
+ fclose( ofp );
+ dsgw_closecookiedb( fp );
+ return -1;
+ }
+ exp = ++p;
+ if (( p = strchr( exp, ':' )) == NULL ) {
+ fclose( ofp );
+ dsgw_closecookiedb( fp );
+ return -1;
+ }
+ strncpy( expbuf, exp, p - exp );
+ expbuf[ p - exp ] = '\0';
+ time( &now );
+
+ /* Get the entry's DN */
+ dbdn = strrchr( buf, ':' );
+ dbdn++;
+ dbdn = strdup( dbdn );
+ if ( dbdn[ strlen( dbdn) - 1 ] == '\n' ) {
+ dbdn[ strlen( dbdn) - 1 ] = '\0';
+ }
+
+ /* Should we delete? */
+ if ( dn != NULL ) {
+ if (( dbdn != NULL ) && !strcmp( dn, dbdn )) {
+ /* Entry's DN is the same as the "dn" parameter - delete */
+ nukeit = 1;
+ }
+ }
+
+ free( dbdn );
+ if ( !nukeit && ( now > atol( expbuf ))) {
+ /* expired */
+ nukeit = 1;
+ }
+
+ if ( !nukeit ) {
+ /* Entry should stay */
+ fputs( buf, ofp );
+ } else {
+ /* Entry should be purged */
+ purged++;
+ }
+ }
+
+ /*
+ * Overwrite the rest of the file so we don't leave passwords
+ * laying around.
+ */
+ csize = ftell( ofp );
+ nbuf = dsgw_ch_malloc( osize - csize + 2 );
+ memset( nbuf, 'x', osize - csize + 1 );
+ nbuf[ osize - csize + 1 ] = '\0';
+ fputs( nbuf, ofp );
+ free( nbuf );
+#ifdef _WIN32
+ dsgw_closecookiedb( fp );
+ fflush( ofp );
+ fclose( ofp );
+ fh = open( cdb, _O_RDWR | _O_TEXT );
+ chsize( fh, csize );
+ close( fh );
+#else /* _WIN32 */
+ fclose( ofp );
+ ftruncate( fileno( fp ), csize );
+ dsgw_closecookiedb( fp );
+#endif /* _WIN32 */
+ return purged;
+}
+
+
+
+/*
+ * for debugging - traverse and print the db
+ */
+void
+dsgw_traverse_db()
+{
+ FILE *fp;
+ char *exp;
+ int total, expired;
+ time_t now;
+ char buf[ CKBUFSIZ ];
+ char expbuf[ 32 ];
+
+ total = expired = 0;
+
+ if (( fp = dsgw_opencookiedb()) == NULL ) {
+ fprintf( stderr, "can't open db\n" );
+ return;
+ }
+
+ if ( fgets( buf, CKBUFSIZ, fp ) == NULL ) {
+ dsgw_closecookiedb( fp );
+ printf( "Cookie database is empty (no lastpurge line)\n" );
+ return;
+ }
+ puts( buf );
+
+ for (;;) {
+ char *p;
+ if ( fgets( buf, CKBUFSIZ, fp ) == NULL ) {
+ dsgw_closecookiedb( fp );
+ printf( "%d entries, %d expired\n", total, expired );
+ return;
+ }
+ if (( p = strchr( buf, ':' )) == NULL ) {
+ dsgw_closecookiedb( fp );
+ return;
+ }
+ exp = ++p;
+ if (( p = strchr( exp, ':' )) == NULL ) {
+ dsgw_closecookiedb( fp );
+ return;
+ }
+ printf( "%s", buf );
+ strncpy( expbuf, exp, p - exp + 1 );
+ expbuf[ p - exp + 1 ] = '\0';
+ time( &now );
+ total++;
+ if ( now > atol( expbuf )) {
+ /* not yet expired */
+ printf( " (expired)\n" );
+ expired++;
+ } else {
+ printf( "\n" );
+ }
+ }
+}
+
+
+
+/*
+ * Generate a complete authentication cookie header line and store
+ * the relevant parts iit in the database.
+ * Return a pointer to the cookie. This routine allocates memory, which
+ * the caller is responsible for freeing.
+ * On error, this routine returns NULL and sets err to point to an
+ * error code.
+ */
+char *
+dsgw_mkcookie( char *dn, char *password, time_t lifetime, int *err )
+{
+ char *r;
+ char *ckbuf;
+ char *edn;
+ int rc;
+
+ if ( dn == NULL ) {
+ *err = DSGW_CKDB_NODN;
+ return NULL;
+ }
+ edn = dsgw_strdup_escaped( dn );
+
+ if (( r = dsgw_mkrndstr()) == NULL ) {
+ *err = DSGW_CKDB_RNDSTRFAIL;
+ return NULL;
+ }
+ rc = dsgw_storecookie( r, dn, password, lifetime );
+ if ( rc != 0 ) {
+ free( r );
+ free( edn );
+ *err = rc;
+ return NULL;
+ }
+
+ ckbuf = dsgw_ch_malloc( strlen( DSGW_CKHDR ) + strlen( r ) +
+ strlen( edn ) + strlen( DSGW_AUTHCKNAME ) + 2 + 20 );
+ ckbuf[ 0 ] = '\0';
+ strcpy( ckbuf, DSGW_CKHDR );
+ strcat( ckbuf, DSGW_AUTHCKNAME );
+ strcat( ckbuf, "=" );
+ strcat( ckbuf, r );
+ strcat( ckbuf, ":" );
+ strcat( ckbuf, edn );
+ strcat( ckbuf, "; path=/" );
+
+ free( r );
+ free( edn );
+ return ckbuf;
+}
+
+
+
+#if 0
+/*
+ * Given a time_t, return a GMTString representation of that time.
+ */
+char *
+dsgw_t2gmts( time_t cktime )
+{
+ time_t tnl;
+ struct tm *pt;
+#define TBUFSIZE 40
+ char tbuf[ TBUFSIZE ];
+
+ tnl = time( NULL );
+ pt = gmtime( &tnl );
+ (void)strftime( tbuf, (size_t)TBUFSIZE, "%A, %d-%b-%y %T GMT", pt);
+ return( dsgw_ch_strdup( tbuf ));
+}
+#endif
+
+
+/*
+ * Password obfuscation, etc.
+ * There is no real security here -- we just encrypt using a hard-coded key.
+ * The original functions these are based on are called SECMOZ_MungeString()
+ * and SECMOZ_UnMungeString(). They can be found in ns/lib/libsec/secmoz.c
+ * (they don't get built as part of the server builds). The only change I
+ * made was to swap a few of the bytes in the secmoz_tmmdi array and add one
+ * to all of them. -- Mark Smith <mcs@netscape.com>
+ */
+
+static unsigned char dsgw_tmmdi[] = { /* tmmdi == They Made Me Do It */
+ 0x87, /* repka, paquin */
+ 0x9d, /* freier, elgamal */
+ 0xdf, /* jonm, bobj */
+ 0xef, /* fur, sharoni */
+ 0xd1, /* jsw, karlton */
+ 0xec, /* ari, sk */
+ 0x3f, /* terry, atotic */
+ 0xc7 /* jevering, kent */
+};
+
+static char *
+dsgw_MungeString(const char *unmunged_string)
+{
+ return(dsgw_encDec(CKA_ENCRYPT, unmunged_string));
+}
+static char *
+dsgw_UnMungeString(const char *munged_string)
+{
+ return(dsgw_encDec(CKA_DECRYPT, munged_string));
+}
+
+/*
+ * key import and encryption (using RC4)
+ */
+static char *
+dsgw_encDec(CK_ATTRIBUTE_TYPE operation, const char *msg)
+{
+ CK_MECHANISM_TYPE type = CKM_RC4;
+ PK11SlotInfo *slot = 0;
+ PK11SymKey *key = 0;
+ SECItem *params = 0;
+ PK11Context *context = 0;
+ unsigned char *output;
+ unsigned char *input;
+ char *edStr;
+ int outLen;
+ int len;
+ SECStatus s;
+ SECItem keyItem = { siBuffer, dsgw_tmmdi, sizeof dsgw_tmmdi };
+ int noGood = 0;
+ unsigned int inlen;
+ FILE *pptr;
+ int i;
+
+ if (msg == NULL) {
+ return NULL;
+ }
+
+ if (*msg == '\0') {
+ return PL_strdup(msg);
+ }
+
+ if (operation == CKA_DECRYPT) {
+ input = ATOB_AsciiToData(msg, &inlen);
+ if (msg == NULL)
+ return NULL;
+ } else {
+ inlen = PL_strlen(msg);
+ input = (unsigned char *) msg;
+ }
+
+ output = (unsigned char *) malloc(inlen + 65);
+ if (output == NULL) {
+ return NULL;
+ }
+
+ /* Initialization */
+ /*NSS_NoDB_Init(".");*/
+ dsgw_initNSS();
+
+ /*
+ * Choose a "slot" to use. Slots store keys (either
+ * temporarily or permanently) and perform
+ * cryptogrphic operations.
+ *
+ * Use the built-in key slot. Another way to choose
+ * a slot is using PK11_GetBestSlot(), which chooses
+ * based on the mechanism.
+ */
+ slot = PK11_GetInternalKeySlot();
+ if (!slot)
+ {
+ noGood = 1;
+ goto dsgw_encDec_done;
+ }
+
+ /*
+ * Get the encryption key. Params may be passed in here,
+ * but most symmetric key generation requires only the key
+ * length.
+ *
+ * Warning: the key length is in bytes
+ *
+ * The key can also be imported (not recommended). See importKey()
+ * below for example code.
+ */
+ /* This code generates a random key
+ key = PK11_KeyGen(slot, type, 0, 128/8, 0);
+ if (!key)
+ {
+ goto dsgw_encDec_done;
+ }*/
+ /* Here we are using a static key. This sucks, but we don't really
+ * have much of a choice.*/
+ key = PK11_ImportSymKey(slot, CKM_RC4, PK11_OriginGenerated, operation, &keyItem, 0);
+
+ /*
+ * Some encryption algorithms require parameters. NSS provides
+ * a generic way to create parameters for any algorithm.
+ */
+ params = PK11_GenerateNewParam(type, key);
+ if (!params)
+ {
+ noGood = 1;
+ goto dsgw_encDec_done;
+ }
+
+ /*if (params->data) printBuffer(params->data, params->len);*/
+
+ /*
+ * Cryptographic operations are performed using a "context"
+ * Create one for doing encryption using the key and parameters
+ * generated above.
+ */
+ context = PK11_CreateContextBySymKey(type, operation, key, params);
+ if (!context)
+ {
+ noGood = 1;
+ goto dsgw_encDec_done;
+ }
+
+ /*
+ * Encrypt the data. In general, the input data should be in multiples
+ * of the cipher's block size, and the output size will match the input
+ * size. However, this will not be true for mechanisms that provide
+ * padding.
+ */
+ s = PK11_CipherOp(context, output, &outLen, inlen + 64, input, (int) inlen);
+ if (s != SECSuccess)
+ {
+ noGood = 1;
+ goto dsgw_encDec_done;
+ }
+
+ /*printBuffer(output, outLen);*/
+
+ /*
+ * When a mechanism that provides padding is used, there may be additional
+ * data available after the last input data is processed.
+ *
+ * NOTE: The type of the length output here is different than in PK11_CipherOp
+ */
+ s = PK11_DigestFinal(context, &output[outLen], &len, sizeof output - outLen);
+ if (s != SECSuccess)
+ {
+ noGood = 1;
+ goto dsgw_encDec_done;
+ }
+
+ /*if (len != 0) printBuffer(&output[outLen], len);*/
+
+ outLen += len;
+
+ /*
+ * Terminate the cryptographic operation. Destroying the
+ * context also performs this function.
+ */
+ PK11_Finalize(context);
+
+ /*
+ * Delete the encryption context block, this releases the reference to the key
+ * and frees the context's copy of the parameters, etc.
+ *
+ * The second argument should always be PR_TRUE to free the context structure
+ * itself, in addition to the contents.
+ */
+ PK11_DestroyContext(context, PR_TRUE);
+ context = 0;
+
+dsgw_encDec_done:
+ if (context) PK11_DestroyContext(context, PR_TRUE); /* freeit ?? */
+ if (params) SECITEM_ZfreeItem(params, PR_TRUE);
+ if (key) PK11_FreeSymKey(key);
+ if (slot) PK11_FreeSlot(slot);
+
+ if (noGood == 1) {
+ return(NULL);
+ }
+
+ if (operation == CKA_DECRYPT) {
+ edStr = (char *) output;
+ edStr[outLen] = '\0';
+ } else {
+ edStr = BTOA_DataToAscii(output, outLen);
+ free(output);
+ }
+
+ return(edStr);
+}
+
+
+void
+dsgw_initNSS(void)
+{
+ if (dsgw_NSSInitializedAlready == 1) {
+ return;
+ }
+
+ if (gc->gc_ldapssl && gc->gc_securitypath != NULL ) {
+ NSS_Init(gc->gc_securitypath);
+ } else {
+ NSS_NoDB_Init(NULL);
+ }
+ dsgw_NSSInitializedAlready = 1;
+}
diff --git a/ldap/clients/dsgw/csearch.c b/ldap/clients/dsgw/csearch.c
new file mode 100644
index 00000000..f4fe0c5b
--- /dev/null
+++ b/ldap/clients/dsgw/csearch.c
@@ -0,0 +1,336 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+/*
+ * csearch.c -- CGI program to generate complex search form -- HTTP gateway
+ *
+ * Copyright (c) 1996 Netscape Communications Corp.
+ * All rights reserved.
+ */
+
+#include "dsgw.h"
+#include "dbtdsgw.h"
+
+static void get_request(char *fname);
+static void emit_file(char* filename, struct ldap_searchobj* sop);
+
+
+int main( argc, argv, env )
+ int argc;
+ char *argv[];
+#ifdef DSGW_DEBUG
+ char *env[];
+#endif
+{
+ int reqmethod;
+ char *qs = NULL;
+ char *fname = NULL;
+
+ /* Parse out the file=blah.html from the query string*/
+ if (( qs = getenv( "QUERY_STRING" )) != NULL && *qs != '\0' ) {
+ /* parse the query string: */
+ auto char *p, *iter = NULL;
+ qs = dsgw_ch_strdup( qs );
+ for ( p = ldap_utf8strtok_r( qs, "&", &iter ); p != NULL;
+ p = ldap_utf8strtok_r( NULL, "&", &iter )) {
+
+ /*
+ * Get the conf file name. It'll be translated
+ * into /dsgw/context/CONTEXT.conf if
+ * CONTEXT is all alphanumeric (no slahes,
+ * or dots). CONTEXT is passed into the cgi.
+ * if context=CONTEXT is not there, or PATH_INFO
+ * was used, then use dsgw.conf
+ */
+ if ( !strncasecmp( p, "context=", 8 )) {
+ context = dsgw_ch_strdup( p + 8 );
+ dsgw_form_unescape( context );
+ continue;
+ }
+
+ if ( !strncasecmp( p, "file=", 5 )) {
+ fname = dsgw_ch_strdup( p + 5 );
+ dsgw_form_unescape( fname );
+ continue;
+ }
+ }
+ free( qs ); qs = NULL;
+ }
+
+
+ reqmethod = dsgw_init( argc, argv, DSGW_METHOD_POST | DSGW_METHOD_GET );
+ dsgw_send_header();
+
+#ifdef DSGW_DEBUG
+ dsgw_logstringarray( "env", env );
+{
+ char buf[ 1024 ];
+ getcwd( buf, sizeof(buf));
+ dsgw_log( "cwd: \"%s\"\n", buf );
+}
+#endif
+
+ if ( reqmethod == DSGW_METHOD_POST || reqmethod == DSGW_METHOD_GET ) {
+ get_request(fname);
+ }
+
+ exit( 0 );
+}
+
+
+static void
+get_request(char *fname)
+{
+ auto char* filename = NULL;
+ struct ldap_searchobj* sop = NULL;
+
+ if ( fname == NULL || *fname == '\0' ) {
+ filename = "csearch.html";
+ dsgw_init_searchprefs( &sop );
+ } else if ( !strcmp( fname, "type" )) {
+ filename = "csearchType.html";
+ } else if ( !strcmp( fname, "attr" )) {
+ filename = "csearchAttr.html";
+ } else if ( !strcmp( fname, "match" )) {
+ filename = "csearchMatch.html";
+ } else if ( !strcmp( fname, "string" )) {
+ filename = "csearchString.html";
+ } else if ( !strcmp( fname, "base" )) {
+ filename = "csearchBase.html";
+ }
+ if (filename) {
+ emit_file (filename, sop);
+ }
+ fflush(stdout);
+}
+
+
+static void
+dsgw_emit_options (struct ldap_searchobj** sop, char* searchType, char* searchAttr)
+ /* Emit HTML <OPTION> tags corresponding to search preferences.
+ If searchType==NULL, emit searchType options; otherwise
+ if searchAttr==NULL, emit searchAttr options for the given searchType;
+ otherwise emit searchMatch options for the given searchType and searchAttr.
+ */
+{
+ auto struct ldap_searchobj *so;
+ if (!*sop) dsgw_init_searchprefs (sop);
+ for (so = ldap_first_searchobj(*sop); so != NULLSEARCHOBJ;
+ so = ldap_next_searchobj (*sop, so)) {
+ if (LDAP_IS_SEARCHOBJ_OPTION_SET (so, LDAP_SEARCHOBJ_OPT_INTERNAL)) {
+ continue; /* Skip any marked "internal-only" */
+ }
+ if (!searchType) { /* emit searchType option */
+ dsgw_emitf ("<OPTION VALUE=\"%s\">%s</OPTION>\n",
+ so->so_objtypeprompt,
+ dsgw_get_translation( so->so_objtypeprompt ));
+ } else if (!*searchType || !strcmp (searchType, so->so_objtypeprompt)) {
+ auto struct ldap_searchattr *sa;
+ for (sa = so->so_salist; sa != NULL;
+ sa = sa->sa_next) {
+ if (!searchAttr) { /* emit searchAttr option */
+ dsgw_emitf ("<OPTION VALUE=\"%1$s\">%1$s</OPTION>\n",
+ sa->sa_attrlabel);
+ } else if (!*searchAttr || !strcmp (searchAttr, sa->sa_attrlabel)) {
+ auto int mi;
+ auto struct ldap_searchmatch *sm;
+ for (mi=0, sm = so->so_smlist; sm != NULL;
+ ++mi, sm = sm->sm_next) { /* emit searchMatch option */
+ if (sa->sa_matchtypebitmap & (1L << mi)) {
+ dsgw_emitf ("<OPTION VALUE=\"%1$s\">%1$s</OPTION>\n",
+ sm->sm_matchprompt);
+ }
+ }
+ break;
+ }
+ }
+ break;
+ }
+ }
+}
+
+
+static void
+emit_file (char* filename, struct ldap_searchobj* sop)
+{
+ auto FILE* html = dsgw_open_html_file( filename, DSGW_ERROPT_EXIT );
+ auto char line[ BIG_LINE ];
+ auto int argc;
+ auto char **argv;
+
+ while ( dsgw_next_html_line( html, line )) {
+ if ( dsgw_parse_line( line, &argc, &argv, 0, dsgw_simple_cond_is_true, NULL )) {
+ if ( dsgw_directive_is( line, "HEAD" )) {
+ dsgw_head_begin();
+ dsgw_emits ("\n");
+
+ } else if ( dsgw_directive_is( line, "DS_CSEARCH_SCRIPT" )) {
+ dsgw_emits("<SCRIPT LANGUAGE=\"JavaScript\">\n"
+ "<!-- Hide from non-JavaScript-capable browsers\n"
+ "var searchType = '';\n"
+ "var searchAttr = '';\n"
+ "var searchMatch = '';\n" );
+ dsgw_emits ("\n"
+ "function searchTypeSet(val)\n"
+ "{\n"
+ " searchType = val + '';\n"
+ "}\n"
+ "\n"
+ "function searchAttrSet(val)\n"
+ "{\n"
+ " searchAttr = val + '';\n"
+ "}\n"
+ "\n"
+ "function searchMatchSet(val)\n"
+ "{\n"
+ " searchMatch = val + '';\n"
+ "}\n"
+ "\n"
+ "function setHiddenFields(sform)\n"
+ "{\n"
+/*
+ * On Navigator 2.x, the form variable's value seems to get set
+ * *after* the onSumbit handler executes, which is unfortunate.
+ */
+ " if (sform.searchstring.value == '') {\n");
+ dsgw_emit_alert ("searchStringFrame", NULL,
+ XP_GetClientStr (DBT_youDidNotSupplyASearchString_));
+ dsgw_emits (" return false;\n"
+ " }\n"
+ " sform.type.value = searchType;\n"
+ " sform.attr.value = searchAttr;\n"
+ " sform.match.value = searchMatch;\n"
+ " sform.searchstring.select();\n"
+ " sform.searchstring.focus();\n"
+ " return true;\n"
+ "}\n"
+ "\n"
+ "function init()\n"
+ "{}\n"
+ "// End hiding -->\n"
+ "</SCRIPT>\n" );
+
+ } else if ( dsgw_directive_is( line, "EVALUATE" )) {
+ auto int i;
+ for (i = 0; i < argc; ++i) {
+ if (!strcmp (argv[i], "parent.searchBase")) {
+ dsgw_emits (gc->gc_ldapsearchbase);
+ } else if (!strcmp (argv[i], "parent.UFNsearchBase")) {
+#ifdef NOTFORNOW
+ /* ldap_dn2ufn currently gobbles up 'dc' so don't use */
+ /* it for now */
+ auto char* ufn = ldap_dn2ufn (gc->gc_ldapsearchbase);
+ dsgw_emits (ufn);
+ free( ufn );
+#else
+ dsgw_emits (gc->gc_ldapsearchbase);
+#endif
+ }
+ }
+
+ } else if ( dsgw_directive_is( line, "DS_CSEARCH_TYPE_BODY" )) {
+ dsgw_emitf ("<BODY %s %s>\n", dsgw_html_body_colors,
+ "onLoad=\"parent.searchTypeSet(document.searchTypeForm.searchType.options"
+ "[document.searchTypeForm.searchType.selectedIndex].value);\"");
+
+ } else if ( dsgw_directive_is( line, "DS_CSEARCH_ATTR_BODY" )) {
+ dsgw_emitf ("<BODY %s %s>\n", dsgw_html_body_colors,
+ "onLoad=\"parent.searchAttrSet(document.searchAttrForm.searchAttr.options"
+ "[document.searchAttrForm.searchAttr.selectedIndex].value);\"");
+
+ } else if ( dsgw_directive_is( line, "DS_CSEARCH_MATCH_BODY" )) {
+ dsgw_emitf ("<BODY %s %s>\n", dsgw_html_body_colors,
+ "onLoad=\"parent.searchMatchSet(document.searchMatchForm.searchMatch.options"
+ "[document.searchMatchForm.searchMatch.selectedIndex].value);\"");
+
+ } else if ( dsgw_directive_is( line, "DS_CSEARCH_STRING_BODY" )) {
+ dsgw_emitf ("<BODY %s %s>\n", dsgw_html_body_colors,
+ "onLoad=\"document.searchStringForm.searchstring.select();"
+ "document.searchStringForm.searchstring.focus();\"");
+ dsgw_emit_alertForm();
+
+ } else if ( dsgw_directive_is( line, "DS_CSEARCH_BASE_BODY" )) {
+ dsgw_emitf ("<BODY %s>\n", dsgw_html_body_colors);
+
+ } else if ( dsgw_directive_is( line, "DS_CSEARCH_TYPE_FORM" )) {
+ dsgw_form_begin ("searchTypeForm",
+ "action=\"%s?file=attr\" target=searchAttrFrame",
+ dsgw_getvp( DSGW_CGINUM_CSEARCH));
+ dsgw_emits("\n");
+
+ } else if ( dsgw_directive_is( line, "DS_CSEARCH_ATTR_FORM" )) {
+ dsgw_form_begin ("searchAttrForm",
+ "action=\"%s?file=match\" target=searchMatchFrame",
+ dsgw_getvp( DSGW_CGINUM_CSEARCH));
+ dsgw_emits("\n");
+ {
+ auto char* searchType = dsgw_get_cgi_var ("searchType", DSGW_CGIVAR_OPTIONAL);
+ if (searchType && *searchType) {
+ dsgw_emitf ("<INPUT TYPE=hidden NAME=searchType VALUE=\"%s\">\n",
+ searchType);
+ }
+ }
+
+ } else if ( dsgw_directive_is( line, "DS_CSEARCH_MATCH_FORM" )) {
+ dsgw_form_begin ("searchMatchForm", NULL);
+ dsgw_emits("\n");
+
+ } else if ( dsgw_directive_is( line, "DS_CSEARCH_STRING_FORM" )) {
+ dsgw_form_begin ("searchStringForm", "action=\"%s\" %s %s",
+ dsgw_getvp( DSGW_CGINUM_DOSEARCH ),
+ "onSubmit=\"return parent.setHiddenFields(this)\"",
+ argc > 0 ? argv[0] : "");
+ dsgw_emitf ("\n"
+ "<INPUT TYPE=hidden NAME=mode VALUE=\"complex\">\n"
+ "<INPUT TYPE=hidden NAME=base VALUE=\"%s\">\n"
+ "<INPUT TYPE=hidden NAME=ldapserver VALUE=\"%s\">\n"
+ "<INPUT TYPE=hidden NAME=ldapport VALUE=\"%d\">\n"
+ "<INPUT TYPE=hidden NAME=type>\n"
+ "<INPUT TYPE=hidden NAME=attr>\n"
+ "<INPUT TYPE=hidden NAME=match>\n"
+ "<INPUT TYPE=hidden NAME=context VALUE=\"%s\">\n",
+ gc->gc_ldapsearchbase, gc->gc_ldapserver, gc->gc_ldapport, context);
+
+ } else if ( dsgw_directive_is( line, "DS_CSEARCH_TYPE_SELECT" )) {
+ dsgw_emitf ("<SELECT NAME=searchType "
+ "onChange=\"parent.searchTypeSet(this.options[this.selectedIndex].value);"
+ "this.form.submit();"
+ "parent.searchMatchFrame.location='%s?context=%s&file=match&'+this.name+'='"
+ "+escape(this.options[this.selectedIndex].value);\">\n",
+ dsgw_getvp( DSGW_CGINUM_CSEARCH), context);
+ dsgw_emit_options (&sop, NULL, NULL);
+ dsgw_emits ("</SELECT>\n");
+
+ } else if ( dsgw_directive_is( line, "DS_CSEARCH_ATTR_SELECT" )) {
+ dsgw_emits ("<SELECT NAME=searchAttr"
+ " onChange=\"parent.searchAttrSet(this.options[this.selectedIndex].value);"
+ "this.form.submit();\">\n");
+ {
+ auto char* searchType = dsgw_get_cgi_var ("searchType", DSGW_CGIVAR_OPTIONAL);
+ dsgw_emit_options (&sop, searchType ? searchType : "", NULL);
+ }
+ dsgw_emits ("</SELECT>\n");
+
+ } else if ( dsgw_directive_is( line, "DS_CSEARCH_MATCH_SELECT" )) {
+ dsgw_emits ("<SELECT NAME=searchMatch"
+ " onChange=\"parent.searchMatchSet(this.options[this.selectedIndex].value);\">\n");
+ {
+ auto char* searchType = dsgw_get_cgi_var ("searchType", DSGW_CGIVAR_OPTIONAL);
+ auto char* searchAttr = dsgw_get_cgi_var ("searchAttr", DSGW_CGIVAR_OPTIONAL);
+ dsgw_emit_options (&sop, searchType ? searchType : "", searchAttr ? searchAttr : "");
+ }
+ dsgw_emits ("</SELECT>\n");
+
+ } else if ( dsgw_directive_is( line, "DS_HELP_BUTTON" ) && argc > 0) {
+ dsgw_emit_helpbutton (argv[0]);
+ } else {
+ dsgw_emits (line);
+ }
+ dsgw_argv_free( argv );
+ }
+ }
+ fclose (html);
+}
diff --git a/ldap/clients/dsgw/dbtdsgw.h b/ldap/clients/dsgw/dbtdsgw.h
new file mode 100644
index 00000000..2812c26e
--- /dev/null
+++ b/ldap/clients/dsgw/dbtdsgw.h
@@ -0,0 +1,447 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+/**************************************************************************/
+/* CONFIDENTIAL AND PROPRIETARY SOURCE CODE */
+/* OF NETSCAPE COMMUNICATIONS CORPORATION */
+/* */
+/* Copyright © 1996,1997 Netscape Communications Corporation. All Rights */
+/* Reserved. Use of this Source Code is subject to the terms of the */
+/* applicable license agreement from Netscape Communications Corporation. */
+/* */
+/* The copyright notice(s) in this Source Code does not indicate actual */
+/* or intended publication of this Source Code. */
+/**************************************************************************/
+
+#define LIBRARY_NAME "dsgw"
+
+/* avoid warnings for this extremely annoying variable */
+#ifdef LINUX
+#define __DSGW_UNUSED __attribute__((__unused__))
+#else
+#define __DSGW_UNUSED
+#endif
+__DSGW_UNUSED static char dbtdsgwid[] = "$DBT: dsgw referenced v1 $";
+
+#include "i18n.h"
+
+BEGIN_STR(dsgw)
+ ResDef( DBT_LibraryID_, -1, dbtdsgwid )/* extracted from dbtdsgw.h*/
+ ResDef( DBT_unknownHttpRequestMethod_, 1, "Unknown HTTP request method." )/*extracted from error.c*/
+ ResDef( DBT_invalidOrIncompleteHtmlFormData_, 2, "Invalid or incomplete HTML form data." )/*extracted from error.c*/
+ ResDef( DBT_outOfMemory_, 3, "Out of memory." )/*extracted from error.c*/
+ ResDef( DBT_requiredQueryFormInputIsMissing_, 4, "Required query/form input is missing." )/*extracted from error.c*/
+ ResDef( DBT_illegalCharacterInFilePath_, 5, "Illegal character in file path." )/*extracted from error.c*/
+ ResDef( DBT_badOrMissingConfigurationFile_, 6, "Bad or missing configuration file." )/*extracted from error.c*/
+ ResDef( DBT_unableToInitializeLdap_, 7, "Unable to initialize LDAP." )/*extracted from error.c*/
+ ResDef( DBT_anErrorOccurredWhileContactingTh_, 8, "An error occurred while contacting the LDAP server." )/*extracted from error.c*/
+ ResDef( DBT_unknownSearchObjectType_, 9, "Unknown search object type." )/*extracted from error.c*/
+ ResDef( DBT_unknownAttributeLabel_, 10, "Unknown attribute label." )/*extracted from error.c*/
+ ResDef( DBT_unknownMatchPrompt_, 11, "Unknown match prompt." )/*extracted from error.c*/
+ ResDef( DBT_noSearchFiltersForObjectType_, 12, "No search filters for object type." )/*extracted from error.c*/
+ ResDef( DBT_unableToOpenHtmlTemplateFile_, 13, "Unable to open HTML template file." )/*extracted from error.c*/
+ ResDef( DBT_unknownSearchModeUseSmartComplex_, 14, "Unknown search mode - use \"smart\", \"complex\", \"pattern\", or \"auth\"." )/*extracted from error.c*/
+ ResDef( DBT_distinguishedNameMissingInUrl_, 15, "Distinguished Name missing in URL." )/*extracted from error.c*/
+ ResDef( DBT_unknownScopeInUrlShouldBeBaseSub_, 16, "Unknown scope in URL (should be base, sub, or one)." )/*extracted from error.c*/
+ ResDef( DBT_unrecognizedUrlOrUnknownError_, 17, "Unrecognized URL or unknown error." )/*extracted from error.c*/
+ ResDef( DBT_badUrlFormat_, 18, "Bad URL format." )/*extracted from error.c*/
+ ResDef( DBT_internalError_, 19, "Internal error." )/*extracted from error.c*/
+ ResDef( DBT_unableToWriteTemplateIndexFile_, 20, "Unable to write template index file." )/*extracted from error.c*/
+ ResDef( DBT_unableToOpenTemplateIndexFile_, 21, "Unable to open template index file." )/*extracted from error.c*/
+ ResDef( DBT_unableToReadDirectory_, 22, "Unable to read directory." )/*extracted from error.c*/
+ ResDef( DBT_ldapSslInitializationFailedCheck_, 23, "LDAP SSL initialization failed (check the security path)." )/*extracted from error.c*/
+ ResDef( DBT_forTheUsersAndGroupsFormsToWorkO_, 24, "For the Users and Groups forms to work over SSL, you or your server administrator needs to activate SSL for this Administration Server. The Encryption|On/Off page can be used to do so. " )/*extracted from error.c*/
+ ResDef( DBT_authenticationCredentialsNotFoun_, 25, "Authentication credentials not found in authentication database." )/*extracted from error.c*/
+ ResDef( DBT_errorRetrievingDataFromTheAuthen_, 26, "Error retrieving data from the authentication database." )/*extracted from error.c*/
+ ResDef( DBT_yourAuthenticationCredentialsHav_, 27, "Your authentication credentials have expired." )/*extracted from error.c*/
+ ResDef( DBT_unableToCreateRandomString_, 28, "Unable to create a random string." )/*extracted from error.c*/
+ ResDef( DBT_noDistinguishedNameWasProvidedWh_, 29, "No distinguished name was provided when retrieving credentials." )/*extracted from error.c*/
+ ResDef( DBT_cannotOpenAuthenticationDatabase_, 30, "Cannot open authentication database." )/*extracted from error.c*/
+ ResDef( DBT_couldNotAppendDataToTheAuthentic_, 31, "Could not append data to the authentication database." )/*extracted from error.c*/
+ ResDef( DBT_noDirectoryManagerIsDefined_, 32, "No Directory Manager is defined." )/*extracted from error.c*/
+ ResDef( DBT_noSearchStringWasProvidedPleaseT_, 33, "No search string was provided. Please try again." )/*extracted from error.c*/
+ ResDef( DBT_tooManyArgumentsOnOneLineInTheCo_, 34, "Too many arguments on one line in the config. file." )/*extracted from error.c*/
+ ResDef( DBT_failedToInitializeWindowsSockets_, 35, "Failed to initialize Windows Sockets." )/*extracted from error.c*/
+ ResDef( DBT_authenticationCredentialsCouldNo_, 36, "Authentication credentials could not be obtained from the Administration Server." )/*extracted from error.c*/
+ ResDef( DBT_distinguishedNameMissingInLdapdb_, 37, "Distinguished Name missing in ldapdb:// URL." )/*extracted from error.c*/
+ ResDef( DBT_unrecognizedUrlOrUnknownError_1, 38, "Unrecognized URL or unknown error." )/*extracted from error.c*/
+ ResDef( DBT_badUrlFormat_1, 39, "Bad URL format." )/*extracted from error.c*/
+ ResDef( DBT_anErrorOccurredWhileInitializing_, 40, "An error occurred while initializing the local ldap database." )/*extracted from error.c*/
+ ResDef( DBT_unknownDirectoryServiceTypeUseLo_, 41, "Unknown directory service type - use \"local\" or \"remote\"." )/*extracted from error.c*/
+ ResDef( DBT_anErrorOccurredWhileReadingTheDb_, 42, "An error occurred while reading the db configuration file." )/*extracted from error.c*/
+ ResDef( DBT_nshomeUserdbPathWasNull_, 43, "NSHOME/userdb path was NULL." )/*extracted from error.c*/
+ ResDef( DBT_theDirectoryServiceConfiguration_, 44, "The directory service configuration could not be updated." )/*extracted from error.c*/
+ ResDef( DBT_theEntryCouldNotBeReadFromTheDir_, 45, "The entry could not be read from the directory." )/*extracted from error.c*/
+ ResDef( DBT_theLdapDatabaseCouldNotBeErased_, 46, "The LDAP database could not be erased." )/*extracted from error.c*/
+ ResDef( DBT_youMayNotChangeEntriesBesidesYou_, 47, "You may not change entries besides your own." )/*extracted from error.c*/
+ ResDef( DBT_problem_, 48, "Problem" )/*extracted from error.c*/
+ ResDef( DBT_authenticationProblem_, 49, "Authentication Problem" )/*extracted from error.c*/
+ ResDef( DBT_NPYouMustReAuthenticateBeforeCon_, 50, ".\n<P>You must re-authenticate before continuing.\n" )/*extracted from error.c*/
+ ResDef( DBT_NPYouMustReAuthenticateBeforeCon_1, 51, ".\n<P>You must re-authenticate before continuing.\n" )/*extracted from error.c*/
+ ResDef( DBT_unknownError_, 52, "unknown error" )/*extracted from error.c*/
+ ResDef( DBT_theOperationWasSuccessful_, 53, "The operation was successful." )/*extracted from error.c*/
+ ResDef( DBT_anInternalErrorOccurredInTheServ_, 54, "An internal error occurred in the server. This usually\nindicates a serious malfunction in the server and should be\nbrought to the attention of your server administrator." )/*extracted from error.c*/
+ ResDef( DBT_theServerCouldNotUnderstandTheRe_, 55, "The server could not understand the request which was sent to\nit by the gateway." )/*extracted from error.c*/
+ ResDef( DBT_aTimeLimitWasExceededInRespondin_, 56, "A time limit was exceeded in responding to your request. If\nyou are searching for entries, you may achieve better results\nif you are more specific in your search." )/*extracted from error.c*/
+ ResDef( DBT_aSizeLimitWasExceededInRespondin_, 57, "A size limit was exceeded in responding to your request. If\nyou are searching for entries, you may achieve better results\nif you are more specific in your search, because too many entries\nmatched your search criteria." )/*extracted from error.c*/
+ ResDef( DBT_theGatewayAttemptedToAuthenticat_, 58, "The gateway attempted to authenticate to the server using\na method the server doesn't understand." )/*extracted from error.c*/
+ ResDef( DBT_theGatewayAttemptedToAuthenticat_1, 59, "The gateway attempted to authenticate to the server using an\nauthentication method which the server does not support. " )/*extracted from error.c*/
+ ResDef( DBT_yourRequestCouldNotBeFulfilledPr_, 60, "Your request could not be fulfilled, probably because the server\nthat was contacted does not contain the data you are looking\nfor. It is possible that a referral to another server was\nreturned but could not be followed. If you were trying to make\nchanges to the directory, it may be that the server that holds\nthe master copy of the data is not available." )/*extracted from error.c*/
+ ResDef( DBT_yourRequestExceededAnAdministrat_, 61, "Your request exceeded an administrative limit in the server." )/*extracted from error.c*/
+ ResDef( DBT_aCriticalExtensionThatTheGateway_, 62, "A critical extension that the gateway requested is not available in this server." )/*extracted from error.c*/
+ ResDef( DBT_theServerWasUnableToProcessTheRe_, 63, "The server was unable to process the request, becase the\nrequest referred to an attribute which does not exist in the\nentry." )/*extracted from error.c*/
+ ResDef( DBT_theServerWasUnableToFulfillYourR_, 64, "The server was unable to fulfill your request, because the\nrequest violates a constraint." )/*extracted from error.c*/
+ ResDef( DBT_theServerCouldNotAddAValueToTheE_, 65, "The server could not add a value to the entry, because that\nvalue is already contained in the entry." )/*extracted from error.c*/
+ ResDef( DBT_theServerCouldNotLocateTheEntryI_, 66, "The server could not locate the entry. If adding a new entry,\nbe sure that the parent of the entry you are trying to add exists.\nIf you received this error while searching, it indicates that the\nentry which was being searched for does not exist.\nIf you were attempting to authenticate as the directory manager and\nreceived this error, check the gateway configuration file." )/*extracted from error.c*/
+ ResDef( DBT_aDistinguishedNameWasNotInThePro_, 67, "A distinguished name was not in the proper format. " )/*extracted from error.c*/
+ ResDef( DBT_theEntryYouAttemptedToAuthentica_, 68, "The entry you attempted to authenticate as does not have a\npassword set, or is missing other required authentication\ncredentials. You cannot authenticate as that entry until the\nappropriate attributes have been added by the directory manager. " )/*extracted from error.c*/
+ ResDef( DBT_thePasswordOrOtherAuthentication_, 69, "The password (or other authentication credentials) you supplied\nis incorrect." )/*extracted from error.c*/
+ ResDef( DBT_youDoNotHaveSufficientPrivileges_, 70, "You do not have sufficient privileges to perform the operation. " )/*extracted from error.c*/
+ ResDef( DBT_theServerIsTooBusyToServiceYourR_, 71, "The server is too busy to service your request. Try again\nin a few minutes." )/*extracted from error.c*/
+ ResDef( DBT_theLdapServerCouldNotBeContacted_, 72, "The LDAP server could not be contacted." )/*extracted from error.c*/
+ ResDef( DBT_theServerWasUnwilliingToProcessY_, 73, "The server was unwilling to process your request. Usually,\nthis indicates that serving your request would put a heavy load\non the server. It may also indicate that the server is not\nconfigured to process your request. If searching, you may wish\nto limit the scope of your search." )/*extracted from error.c*/
+ ResDef( DBT_theDirectoryServerCouldNotHonorY_, 74, "The directory server could not honor your request because it\nviolates the schema requirements. Typically, this means that you\nhave not provided a value for a required field. It could also mean\nthat the schema in the directory server needs to be updated." )/*extracted from error.c*/
+ ResDef( DBT_theDirectoryServerWillNotAllowYo_, 75, "The directory server will not allow you to delete or rename\nan entry if that entry has children. If you wish to do this, you\nmust first delete all the child entries." )/*extracted from error.c*/
+ ResDef( DBT_theServerWasUnableToAddANewEntry_, 76, "The server was unable to add a new entry, or rename an existing\nentry, because an entry by that name already exists." )/*extracted from error.c*/
+ ResDef( DBT_yourRequestWouldAffectSeveralDir_, 77, "Your request would affect several directory servers." )/*extracted from error.c*/
+ ResDef( DBT_theDirectoryServerCouldNotBeCont_, 78, "The directory server could not be contacted. Contact your\nserver administrator for assistance." )/*extracted from error.c*/
+ ResDef( DBT_anErrorOccuredWhileSendingDataTo_, 79, "An error occured while sending data to the server." )/*extracted from error.c*/
+ ResDef( DBT_anErrorOccuredWhileReadingDataFr_, 80, "An error occured while reading data from the server." )/*extracted from error.c*/
+ ResDef( DBT_theServerDidNotRespondToTheReque_, 81, "The server did not respond to the request. \nThe request timed out." )/*extracted from error.c*/
+ ResDef( DBT_theServerDoesNotSupportTheAuthen_, 82, "The server does not support the authentication method used\nby the gateway." )/*extracted from error.c*/
+ ResDef( DBT_theSearchFilterConstructedByTheG_, 83, "The search filter constructed by the gateway was in error." )/*extracted from error.c*/
+ ResDef( DBT_theOperationWasCancelledAtYourRe_, 84, "The operation was cancelled at your request." )/*extracted from error.c*/
+ ResDef( DBT_anInternalErrorOccurredInTheLibr_, 85, "An internal error occurred in the library - a parameter was\nincorrect." )/*extracted from error.c*/
+ ResDef( DBT_aConnectionToTheServerCouldNotBe_, 86, "A connection to the server could not be opened. Contact your\nserver administrator for assistance." )/*extracted from error.c*/
+ ResDef( DBT_anUnknownErrorWasEncountered_, 87, "An unknown error was encountered." )/*extracted from error.c*/
+ ResDef( DBT_entryAlreadyExists_, 88, "Entry Already Exists" )/*extracted from edit.c*/
+ ResDef( DBT_anEntryNamed_, 89, "An entry named " )/*extracted from edit.c*/
+ ResDef( DBT_onmouseoverWindowStatusClickHere_, 90, "onMouseOver=\"window.status='Click here to view this entry'; return true\"" )/*extracted from edit.c*/
+ ResDef( DBT_alreadyExistsPPleaseChooseAnothe_, 91, " already exists.<P>Please choose another name and/or location.\n<P>\n" )/*extracted from edit.c*/
+ ResDef( DBT_parentEntryDoesNotExist_, 92, "Parent entry does not exist" )/*extracted from edit.c*/
+ ResDef( DBT_youCannotAddAnEntryByTheNamePBSB_, 93, "You cannot add an entry by the name:<P><B>%s</B>,<P>\nbecause the parent of that entry does not exist.<P>\nBefore you can add this entry, you must first add\n" )/*extracted from edit.c*/
+ ResDef( DBT_itsParentN_, 94, "its parent.\n" )/*extracted from edit.c*/
+ ResDef( DBT_anEntryNamedPBSBN_, 95, "an entry named:<P><B>%s</B>.\n" )/*extracted from edit.c*/
+ ResDef( DBT_warningNoAuthenticationContinuin_, 96, "Warning: no authentication (continuing)...\n" )/*extracted from domodify.c*/
+ ResDef( DBT_SDirectoryEntry_, 97, "%s Directory Entry" )/*extracted from domodify.c*/
+ ResDef( DBT_PreEntryDnSPrePN_, 98, "<PRE>Entry DN: %s</PRE><P>\n" )/*extracted from domodify.c*/
+ ResDef( DBT_changesToBSBHaveBeenSaved_, 99, "Changes to <B>%s</B> have been saved." )/*extracted from domodify.c*/
+ ResDef( DBT_BSBHasBeenAdded_, 100, "<B>%s</B> has been added." )/*extracted from domodify.c*/
+ ResDef( DBT_BSBHasBeenDeleted_, 101, "<B>%s</B> has been deleted." )/*extracted from domodify.c*/
+ ResDef( DBT_renamedBSBToBSB_, 102, "Renamed <B>%s</B> to <B>%s</B>." )/*extracted from domodify.c*/
+ ResDef( DBT_PBNoteBBecauseYouSTheEntryYouWer_, 103, "<P><B>Note:</B> because you %s the entry you were \nauthenticated as, it was necessary to discard your \nauthentication credentials. You will need to authenticate \nagain to make additional changes.\n" )/*extracted from domodify.c*/
+ ResDef( DBT_deleted_, 104, "deleted" )/*extracted from domodify.c*/
+ ResDef( DBT_renamed_, 105, "renamed" )/*extracted from domodify.c*/
+ ResDef( DBT_changedThePasswordOf_, 106, "changed the password of" )/*extracted from domodify.c*/
+ ResDef( DBT_attributeSWasChangedBrN_, 107, "Attribute %s was changed<BR>\n" )/*extracted from domodify.c*/
+ ResDef( DBT_TnotAsciiLdBytesN_, 108, "\tNOT ASCII (%ld bytes)\n" )/*extracted from domodify.c*/
+ ResDef( DBT_noValuesWereEnteredPleaseTryAgai_, 109, "No values were entered. Please try again.\n" )/*extracted from domodify.c*/
+ ResDef( DBT_noChangesWereMadeN_, 110, "No changes were made.\n" )/*extracted from domodify.c; XXXmcs: no longer used*/
+ ResDef( DBT_PSendingSToTheDirectoryServerN_, 111, "<P>Sending %s to the directory server...\n" )/*extracted from domodify.c*/
+ ResDef( DBT_information_, 112, "information" )/*extracted from domodify.c*/
+ ResDef( DBT_changes_, 113, "changes" )/*extracted from domodify.c*/
+ ResDef( DBT_PSuccessfullyAddedEntryN_, 114, "<P>Successfully added entry.\n" )/*extracted from domodify.c*/
+ ResDef( DBT_PSuccessfullyEditedEntryYourChan_, 115, "<P>Successfully edited entry. Your changes have been saved.\n" )/*extracted from domodify.c*/
+ ResDef( DBT_PSuccessfullyDeletedEntryN_, 116, "<P>Successfully deleted entry.\n" )/*extracted from domodify.c*/
+ ResDef( DBT_PreTheNewNameForTheEntryIsSNPreH_, 117, "<PRE>The new name for the entry is: %s\n</PRE><HR>\n" )/*extracted from domodify.c*/
+ ResDef( DBT_PSuccessfullyRenamedEntryN_, 118, "<P>Successfully renamed entry.\n" )/*extracted from domodify.c*/
+ ResDef( DBT_youMustProvideTheOldPassword_, 119, "You must provide the old password." )/*extracted from domodify.c*/
+ ResDef( DBT_youMustProvideANewPasswordPlease_, 120, "You must provide a new password. Please try again" )/*extracted from domodify.c*/
+ ResDef( DBT_theNewAndConfirmingPasswordsDoNo_, 121, "The new and confirming passwords do not match. Please try again" )/*extracted from domodify.c*/
+ ResDef( DBT_BrTheSBSBIsAlreadyInUsePleaseCho_, 122, "<BR>The %s <B>%s</B> is already in use. Please choose a different one.<BR>\n" )/*extracted from domodify.c*/
+ ResDef( DBT_missingFormDataElement100s_, 123, "missing form data element \"%.100s\"" )/*extracted from cgiutil.c*/
+ ResDef( DBT_initializingConfigInfo_, 124, "Initializing config info" )/*extracted from config.c*/
+ ResDef( DBT_cannotOpenFile_, 125, "Cannot open file." )/*extracted from config.c*/
+ ResDef( DBT_malformedDbconfFile_, 126, "Malformed dbconf file." )/*extracted from config.c*/
+ ResDef( DBT_missingPropertyNameInDbconfFile_, 127, "Missing property name in dbconf file." )/*extracted from config.c*/
+ ResDef( DBT_outOfMemory_1, 128, "Out of memory." )/*extracted from config.c*/
+ ResDef( DBT_missingDirectiveInDbconfFile_, 129, "Missing directive in dbconf file." )/*extracted from config.c*/
+ ResDef( DBT_cannotOpenConfigFileSN_, 130, "Cannot open config file \"%s\"\n" )/*extracted from config.c*/
+ ResDef( DBT_missingArgumentForAuthlifetimeDi_, 131, "Missing argument for \"authlifetime\" directive\n" )/*extracted from config.c*/
+ ResDef( DBT_missingArgumentForDirmgrDirectiv_, 132, "Missing argument for \"dirmgr\" directive\n" )/*extracted from config.c*/
+ ResDef( DBT_missingArgumentForBaseurlDirecti_, 133, "Missing argument for \"baseurl\" directive\n" )/*extracted from config.c*/
+ ResDef( DBT_badUrlProvidedForBaseurlDirectiv_, 134, "Bad URL provided for \"baseurl\" directive - the base DN is missing\n" )/*extracted from config.c*/
+ ResDef( DBT_parsingBaseurlDirective_, 135, "parsing baseurl directive" )/*extracted from config.c*/
+ ResDef( DBT_badUrlProvidedForBaseurlDirectiv_1, 136, "Bad URL provided for \"baseurl\" directive - not an \"ldap://\" URL\n" )/*extracted from config.c*/
+ ResDef( DBT_LdapsUrlsAreNotYetSupportedN_, 137, "\"ldaps://\" URLs are not yet supported\n" )/*extracted from config.c*/
+ ResDef( DBT_missingArgumentsForTemplateDirec_, 138, "Missing arguments for \"template\" directive\n" )/*extracted from config.c*/
+ ResDef( DBT_missingArgumentForSslrequiredDir_, 139, "Missing argument for \"sslrequired\" directive\n" )/*extracted from config.c*/
+ ResDef( DBT_unknownArgumentToSslrequiredDire_, 140, "Unknown argument to \"sslrequired\" directive (should be \"never\", \"whenauthenticated\", \"always\")\n" )/*extracted from config.c*/
+ ResDef( DBT_missingArgumentForSecuritypathDi_, 141, "Missing argument for \"securitypath\" directive\n" )/*extracted from config.c*/
+ ResDef( DBT_missingArgumentForLocationSuffix_, 142, "Missing argument for \"location-suffix\" directive\n" )/*extracted from config.c*/
+ ResDef( DBT_threeArgumentsAreRequiredForTheL_, 143, "Three arguments are required for the \"location\" directive\n" )/*extracted from config.c*/
+ ResDef( DBT_atLeastTwoArgumentsAreRequiredFo_, 144, "At least two arguments are required for the \"newtype\" directive\n" )/*extracted from config.c*/
+ ResDef( DBT_unknownLocationInNewtypeDirectiv_, 145, "Unknown location in \"newtype\" directive\n" )/*extracted from config.c*/
+ ResDef( DBT_threeOrFourArgumentsAreRequiredF_, 146, "Three or four arguments are required for the \"tmplset\" directive\n" )/*extracted from config.c*/
+ ResDef( DBT_fourArgumentsAreRequiredForTheAt_, 147, "Four arguments are required for the \"attrvset\" directive\n" )/*extracted from config.c*/
+ ResDef( DBT_missingArgumentForCharsetDirecti_, 148, "Missing argument for \"charset\" directive\n" )/*extracted from config.c*/
+ ResDef( DBT_missingArgumentForClientlanguage_, 149, "Missing argument for \"ClientLanguage\" directive\n" )/*extracted from config.c*/
+ ResDef( DBT_missingArgumentForAdminlanguageD_, 150, "Missing argument for \"AdminLanguage\" directive\n" )/*extracted from config.c*/
+ ResDef( DBT_missingArgumentForDefaultlanguag_, 151, "Missing argument for \"DefaultLanguage\" directive\n" )/*extracted from config.c*/
+ ResDef( DBT_missingFilenameForIncludeDirecti_, 152, "Missing filename for \"include\" directive\n" )/*extracted from config.c*/
+ ResDef( DBT_unknownDirectiveInConfigFileN_, 153, "Unknown directive in config file\n" )/*extracted from config.c*/
+ ResDef( DBT_EraseDbCouldNotOpenLcacheConfFil_, 154, "<= erase_db could not open lcache.conf file \"%s\"\n" )/*extracted from config.c*/
+ ResDef( DBT_FontSize1NPTheDatabaseHasBeenDel_, 155, "<FONT SIZE=\"+1\">\n<P>The database has been deleted. Creating new database... \n</FONT>\n " )/*extracted from config.c*/
+ ResDef( DBT_FontSize1NPTheDatabaseCouldNotBe_, 156, "<FONT SIZE=\"+1\">\n<P>The database could not be deleted \n</FONT>\n " )/*extracted from config.c*/
+ ResDef( DBT_AppSuffixCouldNotOpenLdifFileSN_, 157, "<= app_suffix could not open ldif file \"%s\"\n" )/*extracted from config.c*/
+ ResDef( DBT_AppSuffixCouldNotOpenTmpFileSN_, 158, "<= app_suffix could not open tmp file \"%s\"\n" )/*extracted from config.c*/
+ ResDef( DBT_unableToRenameSToS_, 159, "Unable to rename %s to %s" )/*extracted from config.c*/
+ ResDef( DBT_nullPointerReturnedByDbconfReadD_, 160, "null pointer returned by dbconf_read_default_dbinfo()." )/*extracted from config.c*/
+ ResDef( DBT_badLdapdbUrlTheBaseDnIsMissingN_, 161, "Bad \"ldapdb\" URL - the base DN is missing\n" )/*extracted from config.c*/
+ ResDef( DBT_badLdapdbUrlN_, 162, "Bad \"ldapdb\" URL\n" )/*extracted from config.c*/
+ ResDef( DBT_badUrlProvidedForBaseurlDirectiv_2, 163, "Bad URL provided for \"baseurl\" directive - the base DN is missing\n" )/*extracted from config.c*/
+ ResDef( DBT_parsingBaseurlDirective_1, 164, "parsing baseurl directive" )/*extracted from config.c*/
+ ResDef( DBT_badUrlProvidedForBaseurlDirectiv_3, 165, "Bad URL provided for \"baseurl\" directive - not an \"ldap:// or ldapdb://\" URL\n" )/*extracted from config.c*/
+ ResDef( DBT_LdapsUrlsAreNotYetSupportedN_1, 166, "\"ldaps://\" URLs are not yet supported\n" )/*extracted from config.c*/
+ ResDef( DBT_noValueGivenForBinddn_, 167, "No value given for binddn" )/*extracted from config.c*/
+ ResDef( DBT_noValueGivenForBindpw_, 168, "No value given for bindpw" )/*extracted from config.c*/
+ ResDef( DBT_thereIsNoDefaultDirectoryService_, 169, "There is no default directory service defined in the dbswitch.conf file" )/*extracted from config.c*/
+ ResDef( DBT_cannotOpenConfigFileSForWritingN_, 170, "Cannot open config file \"%s\" for writing\n" )/*extracted from config.c*/
+ ResDef( DBT_unableToRenameSToS_1, 171, "Unable to rename %s to %s" )/*extracted from config.c*/
+ ResDef( DBT_configFileS_, 172, "config file %s: " )/*extracted from config.c*/
+ ResDef( DBT_configFileSLineD_, 173, "config file %s: line %d: " )/*extracted from config.c*/
+ ResDef( DBT_maxD_, 174, "max %d" )/*extracted from config.c*/
+ ResDef( DBT_ok_, 175, " OK " )/*extracted from domodify.c*/
+ ResDef( DBT_closeWindow_, 176, "Close Window" )/*extracted from domodify.c*/
+ ResDef( DBT_goBack_, 177, "Go Back" )/*extracted from domodify.c*/
+ ResDef( DBT_CryptLockedSGmt_, 178, "{crypt}LOCKED [%s GMT]" )/*extracted from domodify.c*/
+ ResDef( DBT_returnToMain_, 179, "Return to Main" )/*extracted from dsgwutil.c*/
+ ResDef( DBT_help_, 181, " Help " )/*extracted from dsgwutil.c*/
+ ResDef( DBT_help_1, 182, "Help" )/*extracted from dsgwutil.c*/
+ ResDef( DBT_helpIsNotYetAvailable_, 184, "Help is not yet available." )/*extracted from dsgwutil.c*/
+ ResDef( DBT_closeWindow_1, 186, "Close Window" )/*extracted from edit.c*/
+ ResDef( DBT_closeWindow_2, 187, "Close Window" )/*extracted from edit.c*/
+ ResDef( DBT_missingTemplate_, 188, "The URL did not include a template name"
+ " (immediately following the '?')." )/*edit.c*/
+ ResDef( DBT_authenticate_, 189, "Authenticate..." )/*extracted from emitauth.c*/
+ ResDef( DBT_discardAuthenticationCredentials_, 190, "Discard authentication credentials (log out)?" )/*extracted from emitauth.c*/
+ ResDef( DBT_youDidNotSupplyASearchString_, 191, "Please type a search string" )/*extracted from emitauth.c*/
+ ResDef( DBT_theFirstStepInAuthenticatingToTh_, 192, "The first step in authenticating to the directory is identifying\nyourself.<br>Please type your name:" )/*extracted from emitauth.c*/
+ ResDef( DBT_continue_, 193, "Continue" )/*extracted from emitauth.c*/
+ ResDef( DBT_continue_1, 194, "Continue" )/*extracted from emitauth.c*/
+ ResDef( DBT_cancel_, 195, "Cancel" )/*extracted from emitauth.c*/
+ ResDef( DBT_authenticateAsDirectoryManagerNb_, 196, "Authenticate as directory manager\"> "
+ "\302\240" /* nbsp, in UTF-8 */
+ "(only available to Directory Administrators)\n" )/*extracted from emitauth.c*/
+ ResDef( DBT_authenticate_1, 197, "Authenticate..." )/*extracted from emitauth.c*/
+ ResDef( DBT_discardAuthenticationCredentials_1, 198, "Discard authentication credentials?" )/*extracted from emitauth.c*/
+ ResDef( DBT_continue_2, 200, "Continue" )/*extracted from emitauth.c*/
+ ResDef( DBT_continue_3, 201, "Continue" )/*extracted from emitauth.c*/
+ ResDef( DBT_cancel_1, 202, "Cancel" )/*extracted from emitauth.c*/
+ ResDef( DBT_authenticateLogInToTheDirectory_, 203, "Authenticate (log in) to the directory" )/*extracted from emitauth.c*/
+ ResDef( DBT_youAreAboutToAuthenticate_, 204, "You are about to authenticate to the directory as"
+ " <B>%s</B>. To complete the authentication process, type your password.\n" )
+ ResDef( DBT_beforeYouCanEditOrAddEntriesYouM_, 206, "Before you can edit or add entries, you must authenticate\n(log in) to the directory. This window will guide\nyou through the steps of the authentication\nprocess.\n" )/*extracted from emitauth.c*/
+ ResDef( DBT_fromThisScreenYouMayAuthenticate_, 207, "From this screen you may authenticate, or log in, \nto the directory. You will need to authenticate\nbefore you can modify directory entries. If you\nattempt to modify an entry without authenticating,\nyou will be asked to log in.\n" )/*extracted from emitauth.c*/
+ ResDef( DBT_authenticationStatus_, 208, "Authentication Status" )/*extracted from emitauth.c*/
+ ResDef( DBT_FormNyouAreCurrentlyAuthenticate_, 209, "<form>\nYou are currently authenticated to the directory as " )/*extracted from emitauth.c*/
+ ResDef( DBT_NifYouWishToDiscardYourAuthentic_, 210, ".\nIf you wish to discard your authentication credentials and log out of the directory, click on the button below." )/*extracted from emitauth.c*/
+ ResDef( DBT_discardAuthenticationCredentials_2, 211, "Discard Authentication Credentials (log out)" )/*extracted from emitauth.c*/
+ ResDef( DBT_yourAuthenticationCredentialsFor_, 212, "Your authentication credentials for " )/*extracted from emitauth.c*/
+ ResDef( DBT_haveExpiredN_, 213, "have expired.\n<HR>\n" )/*extracted from emitauth.c*/
+ ResDef( DBT_currentlyYouAreNotAuthenticatedT_, 214, "Currently, you are not authenticated to the directory.<HR>\n" )/*extracted from emitauth.c*/
+ ResDef( DBT_missingS_, 215, "missing \"%s=\"" )/*extracted from entrydisplay.c*/
+ ResDef( DBT_unknownSS_, 216, "unknown \"%s=%s\"" )/*extracted from entrydisplay.c*/
+ ResDef( DBT_unknownOptionS_, 217, "unknown option %s" )/*extracted from entrydisplay.c*/
+ ResDef( DBT_unknownSyntaxSN_, 218, "unknown syntax=%s\n" )/*extracted from entrydisplay.c*/
+ ResDef( DBT_HtmlTypeSNotSupportedBrN_, 219, "** HTML type \"%s\" not supported **<BR>\n" )/*extracted from entrydisplay.c*/
+ ResDef( DBT_edit_, 224, "Edit" )/*extracted from entrydisplay.c*/
+ ResDef( DBT_saveChanges_, 225, "Save Changes" )/*extracted from entrydisplay.c*/
+ ResDef( DBT_obsolete_226, 226, "modify" )/*extracted from entrydisplay.c*/
+ ResDef( DBT_obsolete_227, 227, "add" )/*extracted from entrydisplay.c*/
+ ResDef( DBT_delete_, 228, "Delete" )/*extracted from entrydisplay.c*/
+ ResDef( DBT_deleteThisEntry_, 229, "Delete this entry?" )/*extracted from entrydisplay.c*/
+ ResDef( DBT_rename_, 230, "Rename" )/*extracted from entrydisplay.c*/
+ ResDef( DBT_enterANewNameForThisEntry_, 231, "Enter a new name for this entry:" )/*extracted from entrydisplay.c*/
+ ResDef( DBT_editAs_, 232, "Edit As" )/*extracted from entrydisplay.c*/
+ ResDef( DBT_missingS_1, 233, "missing %s=" )/*extracted from entrydisplay.c*/
+ ResDef( DBT_closeWindow_3, 234, "Close Window" )/*extracted from entrydisplay.c*/
+ ResDef( DBT_edit_1, 235, "Edit..." )/*extracted from entrydisplay.c*/
+ ResDef( DBT_missingSN_, 236, "missing \"%s=\"\n" )/*extracted from entrydisplay.c*/
+ ResDef( DBT_unknownSetSN_, 237, "unknown set \"%s\"\n" )/*extracted from entrydisplay.c*/
+ ResDef( DBT_unknownSyntaxSN_1, 238, "unknown syntax \"%s\"\n" )/*extracted from entrydisplay.c*/
+ ResDef( DBT_reAuthenticate_, 239, "Re-Authenticate" )/*extracted from error.c*/
+ ResDef( DBT_closeWindow_4, 240, "Close Window" )/*extracted from error.c*/
+ ResDef( DBT_obsolete_241, 241, "Do you really want to " )/*extracted from htmlparse.c*/
+ ResDef( DBT_obsolete_242, 242, "?" )/*extracted from htmlparse.c*/
+ ResDef( DBT_ok_1, 243, " OK " )/*extracted from htmlparse.c*/
+ ResDef( DBT_ok_2, 244, " OK " )/*extracted from htmlparse.c*/
+ ResDef( DBT_reset_, 245, " Reset " )/*extracted from htmlparse.c*/
+ ResDef( DBT_done_, 246, " Done " )/*extracted from htmlparse.c*/
+ ResDef( DBT_cancel_2, 247, " Cancel " )/*extracted from htmlparse.c*/
+ ResDef( DBT_foundAnotherIfNestedIfsAreNotSup_, 248, "found another IF (nested IFs are not supported)" )/*extracted from htmlparse.c*/
+ ResDef( DBT_foundElseButDidnTSeeAnIf_, 249, "found ELSE but didn't see an IF" )/*extracted from htmlparse.c*/
+ ResDef( DBT_foundElseAfterElseExpectingEndif_, 250, "found ELSE after ELSE (expecting ENDIF)" )/*extracted from htmlparse.c*/
+ ResDef( DBT_foundElifButDidnTSeeAnIf_, 251, "found ELIF but didn't see an IF" )/*extracted from htmlparse.c*/
+ ResDef( DBT_foundElifAfterElseExpectingEndif_, 252, "found ELIF after ELSE (expecting ENDIF)" )/*extracted from htmlparse.c*/
+ ResDef( DBT_foundEndifButDidnTSeeAnIf_, 253, "found ENDIF but didn't see an IF" )/*extracted from htmlparse.c*/
+ ResDef( DBT_BrBTemplateErrorBSBrN_, 254, "<BR><B>template error:</B> %s<BR>\n" )/*extracted from htmlparse.c*/
+ ResDef( DBT_ldapInitLcacheInitAttemptedBefor_, 255, "ldap_init/lcache_init attempted before config file read" )/*extracted from ldaputil.c*/
+ ResDef( DBT_notRunningUnderTheAdministration_, 256, "not running under the administration server" )/*extracted from ldaputil.c*/
+ ResDef( DBT_couldNotInitializePermissions_, 257, "Could not initialize permissions" )/*extracted from ldaputil.c*/
+ ResDef( DBT_couldNotMapUsernameToADnErrorFro_, 258, "Could not map username to a DN (error from admin server)" )/*extracted from ldaputil.c*/
+ ResDef( DBT_couldNotGetCurrentUsername_, 259, "Could not get current username" )/*extracted from ldaputil.c*/
+ ResDef( DBT_couldNotGetCurrentUserPassword_, 260, "Could not get current user password" )/*extracted from ldaputil.c*/
+ ResDef( DBT_obsolete_261, 261, "Error: %s" )/*extracted from ldaputil.c*/
+ ResDef( DBT_noteThereIsNoDisplayTemplateForT_, 262, "Note: there is no display template for this type of entry available, so it is\ndisplayed below using a default method." )/*extracted from ldaputil.c*/
+ ResDef( DBT_invalidUserIdOrNullLdapHandle_, 263, "Invalid user id or NULL LDAP handle" )/*extracted from ldaputil.c*/
+ ResDef( DBT_noMatchForUserId_, 264, "no match for user id" )/*extracted from ldaputil.c*/
+ ResDef( DBT_moreThanOneMatchForUserId_, 265, "more than one match for user id" )/*extracted from ldaputil.c*/
+ ResDef( DBT_theEntireDirectory_, 266, "the entire directory" )/*extracted from ldaputil.c*/
+ ResDef( DBT_twoArgumentsAreRequiredForTheInc_, 267, "Two arguments are required for the \"includeset\" directive\n" )/*extracted from config.c*/
+ ResDef( DBT_theAttributeValueRequestedWasNot_, 268, "The attribute value requested was not found in the entry." )/* extracted from error.c*/
+ ResDef( DBT_missingArgumentForNLS_, 269, "Missing argument for \"NLS\" directive\n" )
+ ResDef( DBT_aValueMustBeSpecifiedForNTUserId, 270, "A value must be specified for NT User Id.\n" )
+ ResDef( DBT_theCombinationOfNTUserIdNTDomain_, 271, "The combination of NT User Id, NT Domain Id is not unique in the directory.\n" )
+ ResDef( DBT_valuesMustBeSpecifiedForBothNTUser_ , 272, "Values must be specified for both NT User Id and NT Domain Id.\n" )
+ ResDef( DBT_theNTUserIdValueMustNotExceed_, 273, "The NT User Id value must not exceed 20 characters in length.\n" )
+ ResDef( DBT_enterNameForNewEntry_, 274, "Please provide a name for the new entry." )
+ ResDef( DBT_enterLocationForNewEntry_, 275, "Please select a location for the new entry." )
+ ResDef( DBT_titleNewEntry_, 276, "New Entry" )
+ ResDef( DBT_noDirMgrIsDefined_, 277, "In order to use this feature, there must be a dirmgr defined in dsgw.conf")
+ ResDef( DBT_threeOrFourArgumentsAreRequiredF_2, 278, "Three or four arguments are required for the \"vcard-property\" directive\n" )
+ ResDef( DBT_vcardPropertySyntaxMustBeCisOrMl_, 279, "VCard property syntax must be \"cis\" or \"mls\"\n" )
+ ResDef( DBT_Found0Entries_, 280, "Found no entries.\n%2$s" )
+ ResDef( DBT_Found0EntriesWhere_, 281, "Found no entries where the %2$s %3$s '%4$s'.\n" )
+ ResDef( DBT_SearchFound0Entries_, 282, "Searched and found no entries.\n%2$s" )
+ ResDef( DBT_SearchFound0EntriesWhere_, 283, "Searched and found no entries where the %2$s %3$s %4$s'.\n" )
+ ResDef( DBT_Found1Entry_, 284, "Found 1 entry.\n%2$s" )
+ ResDef( DBT_Found1EntryWhere_, 285, "Found 1 entry where the %2$s %3$s '%4$s'.\n" )
+ ResDef( DBT_SearchFound1Entry_, 286, "Searched and found 1 entry.\n%2$s" )
+ ResDef( DBT_SearchFound1EntryWhere_, 287, "Searched and found 1 entry where the %2$s %3$s '%4$s'.\n" )
+ ResDef( DBT_FoundEntries_, 288, "Found %1$li entries.\n%2$s" )
+ ResDef( DBT_FoundEntriesWhere_, 289, "Found %1$li entries where the %2$s %3$s '%4$s'.\n" )
+ ResDef( DBT_SearchFoundEntries_, 290, "Searched and found %1$li entries.\n%2$s" )
+ ResDef( DBT_SearchFoundEntriesWhere_, 291, "Searched and found %1$li entries where the %2$s %3$s '%4$s'.\n" )
+ ResDef( DBT_theLDAPFilterIs_, 292, "the LDAP filter is" )
+ ResDef( DBT_theServerCouldNotLocateTheEntryY_, 293, "The server could not locate the entry you used when you authenticated. It is possible that someone renamed the entry or that is was deleted. Please try to authenticate again." )/*extracted from error.c*/
+ ResDef( DBT_InvalidPasswordSyntax_, 294, "The new password syntax is invalid.\n" )
+ ResDef( DBT_PasswordInHistory_, 295, "The new password occurs in the password history.\n" )
+ ResDef( DBT_ExceedPasswordRetryContactSysAdmin_, 296, "You've exceeded the password retry limit. Please contact your System Administrator.\n" )
+ ResDef( DBT_ExceedPasswordRetryTryLater_, 297, "You've exceeded the password retry limit. Please try again later.\n" )
+ ResDef( DBT_PasswordExpired_, 298, "The password has expired. Contact your System Administrator to reset the password.\n" )
+ ResDef( DBT_Editing_, 299, "Editing" )/*extracted from domodify.c*/
+ ResDef( DBT_Adding_, 300, "Adding" )/*extracted from domodify.c*/
+ ResDef( DBT_Deleting_, 301, "Deleting" )/*extracted from domodify.c*/
+ ResDef( DBT_Renaming_, 302, "Renaming" )/*extracted from domodify.c*/
+ ResDef( DBT_noNameInTheList_, 303, "There are <B>no</B> names in the list." )/*extracted from dnedit.c*/
+ ResDef( DBT_oneNameInTheList_, 304, "There is <B>1</B> name in the list." )/*extracted from dnedit.c*/
+ ResDef( DBT_someNamesInTheList_, 305, "There are <B>%s</B> names in the list." )/*extracted from dnedit.c*/
+ ResDef( DBT_RemoveFromList_, 306, "Remove<BR>from<BR>list? Name" )/*extracted from dnedit.c -- should be JavaScript syntax*/
+ ResDef( DBT_discardChanges_, 307, "Discard Changes?" ) /*extracted from dnedit.c */
+ ResDef( DBT_discardChangesWindow_, 308, "width=300,height=130,resizable" ) /*extracted from dnedit.c */
+ ResDef( DBT_continueWithoutSaving_, 309, "Continue without saving changes?<br>Unsaved changes will be lost." ) /*extracted from entrydisplay.c */
+ ResDef( DBT_continueWithoutSavingWindow_, 310, "width=400,height=150,resizable" ) /*extracted from dnedit.c */
+ ResDef( DBT_alertTitle_, 311, "Alert" ) /*extracted from htmlout.c */
+ ResDef( DBT_confirmTitle_, 312, "Confirm" ) /*extracted from htmlout.c */
+ ResDef( DBT_AuthenticationFailed_, 313, "Authentication Failed\n" )/*extracted from doauth.c*/
+ ResDef( DBT_AuthenticationSuccessful_, 314, "Authentication Successful" )/*extracted from doauth.c*/
+ ResDef( DBT_YouAreNowAuthenticated_, 315, "You are now authenticated to the directory as <B>%s</B>." )/*extracted from doauth.c*/
+ ResDef( DBT_YourAuthenticationCredentialsWill_, 316, "Your authentication credentials will expire in %d minutes.\n" )/*extracted from doauth.c*/
+ ResDef( DBT_AfterYourCredentialsExpire_, 317, "After your credentials expire, you will need to \nre-authenticate to the directory.\n" )/*extracted from doauth.c*/
+ ResDef( DBT_ThePasswordForThisEntryWillExpire_, 318, "<P>The password for this entry will expire <B>%s</B>.\n" )/*extracted from doauth.c*/
+ ResDef( DBT_AuthenticationFailedBecause_, 319, "Authentication failed because" )/*extracted from doauth.c*/
+ ResDef( DBT_AuthEntryNotExist_, 320, "Authentication failed because the entry you attempted to authenticate as does\nnot exist in the directory.\nYou may only authenticate as an existing directory\nentry.\n")/*extracted from doauth.c*/
+ ResDef( DBT_AuthEntryHasNoPassword_, 321, "Authentication failed because the entry you attempted to authenticate as does\nnot have a password. Before you can authenticate\nas this entry, a password must be set by a\ndirectory administrator\n")/*extracted from doauth.c*/
+ ResDef( DBT_thePasswordIsIncorrect_, 322, "Authentication failed because the password you supplied is incorrect. Please\nclick the Retry button and try again. If you have\nforgotten the password for this entry, a directory\nadministrator must reset the password for you.\n")/*extracted from doauth.c*/
+ ResDef( DBT_AuthUnexpectedError_, 323, "Authentication failed because of an unexpected error: %s\n")/*extracted from doauth.c*/
+ ResDef( DBT_Retry_, 324, "Retry" )/*extracted from doauth.c*/
+ ResDef( DBT_ToContinue_, 325, "To continue, select a task from the list above.\n" )/*extracted from doauth.c*/
+ ResDef( DBT_EditPassword_, 326, "Edit Password" )/*extracted from dsgwutil.c*/
+ ResDef( DBT_PasswordExpiredFor_, 327, "<H3>Password Expired for %s</H3>\n" )/*extracted from dsgwutil.c*/
+ ResDef( DBT_YourPasswordHasExpired_, 328, "Your Directory Server password has expired." )/*extracted from dsgwutil.c*/
+ ResDef( DBT_YouMustChangeYourPasswd_, 329, " You must change your password immediately.\n" )/*extracted from dsgwutil.c*/
+ ResDef( DBT_youDidNotProvidePasswd_, 330, "you did not provide a password. Whenever you authenticate, you must provide a password so that the server can verify your identity." )/*extracted from doauth.c*/
+ ResDef( DBT_authDBNotOpened_, 331, "the server was unable to generate authentication credentials. The authentication database could not be opened." )/*extracted from doauth.c*/
+ ResDef( DBT_DataCouldNotAppendToAuthDB_, 332, "the server was unable to generate authentication credentials. Data could not be appended to the authentication database.")/*extracted from doauth.c*/
+ ResDef( DBT_continue_4, 333, "Continue" )/*extracted from doauth.c*/
+ ResDef( DBT_closeWindow_5, 334, "Close Window" )/*extracted from doauth.c*/
+ ResDef( DBT_Success_, 335, "Success" )/*extracted from unauth.c*/
+ ResDef( DBT_YouAreNoLongerAuthenticated_, 336, "Your authentication credentials have been destroyed. You are no longer authenticated to the \ndirectory.\n")/*extracted from unauth.c*/
+ ResDef( DBT_GoBack_, 337, "Go Back")/*extracted from unauth.c*/
+
+ ResDef( DBT_LDAP_SUCCESS, 338, "Success")
+ ResDef( DBT_LDAP_OPERATIONS_ERROR, 339, "Operations error")
+ ResDef( DBT_LDAP_PROTOCOL_ERROR, 340, "Protocol error")
+ ResDef( DBT_LDAP_TIMELIMIT_EXCEEDED, 341, "Warning: a time limit was exceeded. Not all matching entries are shown.")
+ ResDef( DBT_LDAP_SIZELIMIT_EXCEEDED, 342, "Warning: a size limit was exceeded. Not all matching entries are shown.")
+ ResDef( DBT_LDAP_COMPARE_FALSE, 343, "Compare false")
+ ResDef( DBT_LDAP_COMPARE_TRUE, 344, "Compare true")
+ ResDef( DBT_LDAP_STRONG_AUTH_NOT_SUPPORTED, 345, "Strong authentication not supported")
+ ResDef( DBT_LDAP_STRONG_AUTH_REQUIRED, 346, "Strong authentication required")
+ ResDef( DBT_LDAP_PARTIAL_RESULTS, 347, "Warning: some directory servers could not be contacted. Not all matching entries are shown.")
+ ResDef( DBT_LDAP_REFERRAL, 348, "Referral received")
+ ResDef( DBT_LDAP_ADMINLIMIT_EXCEEDED, 349, "Administrative limit exceeded")
+ ResDef( DBT_LDAP_UNAVAILABLE_CRITICAL_EXTENSION, 350, "Unavailable critical extension")
+ ResDef( DBT_LDAP_CONFIDENTIALITY_REQUIRED, 351, "Confidentiality required")
+ ResDef( DBT_LDAP_SASL_BIND_IN_PROGRESS, 352, "SASL bind in progress")
+
+ ResDef( DBT_LDAP_NO_SUCH_ATTRIBUTE, 353, "No such attribute")
+ ResDef( DBT_LDAP_UNDEFINED_TYPE, 354, "Undefined attribute type")
+ ResDef( DBT_LDAP_INAPPROPRIATE_MATCHING, 355, "Inappropriate matching")
+ ResDef( DBT_LDAP_CONSTRAINT_VIOLATION, 356, "Constraint violation")
+ ResDef( DBT_LDAP_TYPE_OR_VALUE_EXISTS, 357, "Type or value exists")
+ ResDef( DBT_LDAP_INVALID_SYNTAX, 358, "Invalid syntax")
+
+ ResDef( DBT_LDAP_NO_SUCH_OBJECT, 359, "No such object")
+ ResDef( DBT_LDAP_ALIAS_PROBLEM, 360, "Alias problem")
+ ResDef( DBT_LDAP_INVALID_DN_SYNTAX, 361, "Invalid DN syntax")
+ ResDef( DBT_LDAP_IS_LEAF, 362, "Object is a leaf")
+ ResDef( DBT_LDAP_ALIAS_DEREF_PROBLEM, 363, "Alias dereferencing problem")
+
+ ResDef( DBT_LDAP_INAPPROPRIATE_AUTH, 364, "Inappropriate authentication")
+ ResDef( DBT_LDAP_INVALID_CREDENTIALS, 365, "Invalid credentials")
+ ResDef( DBT_LDAP_INSUFFICIENT_ACCESS, 366, "Insufficient access")
+ ResDef( DBT_LDAP_BUSY, 367, "DSA is busy")
+ ResDef( DBT_LDAP_UNAVAILABLE, 368, "DSA is unavailable")
+ ResDef( DBT_LDAP_UNWILLING_TO_PERFORM, 369, "DSA is unwilling to perform")
+ ResDef( DBT_LDAP_LOOP_DETECT, 370, "Loop detected")
+
+ ResDef( DBT_LDAP_NAMING_VIOLATION, 371, "Naming violation")
+ ResDef( DBT_LDAP_OBJECT_CLASS_VIOLATION, 372, "Object class violation")
+ ResDef( DBT_LDAP_NOT_ALLOWED_ON_NONLEAF, 373, "Operation not allowed on nonleaf")
+ ResDef( DBT_LDAP_NOT_ALLOWED_ON_RDN, 374, "Operation not allowed on RDN")
+ ResDef( DBT_LDAP_ALREADY_EXISTS, 375, "Already exists")
+ ResDef( DBT_LDAP_NO_OBJECT_CLASS_MODS, 376, "Cannot modify object class")
+ ResDef( DBT_LDAP_RESULTS_TOO_LARGE, 377, "Results too large")
+ ResDef( DBT_LDAP_AFFECTS_MULTIPLE_DSAS, 378, "Affects multiple servers")
+
+ ResDef( DBT_LDAP_OTHER, 379, "Unknown error")
+ ResDef( DBT_LDAP_SERVER_DOWN, 380, "Can't contact LDAP server")
+ ResDef( DBT_LDAP_LOCAL_ERROR, 381, "Local error")
+ ResDef( DBT_LDAP_ENCODING_ERROR, 382, "Encoding error")
+ ResDef( DBT_LDAP_DECODING_ERROR, 383, "Decoding error")
+ ResDef( DBT_LDAP_TIMEOUT, 384, "Timed out")
+ ResDef( DBT_LDAP_AUTH_UNKNOWN, 385, "Unknown authentication method")
+ ResDef( DBT_LDAP_FILTER_ERROR, 386, "Bad search filter")
+ ResDef( DBT_LDAP_USER_CANCELLED, 387, "User cancelled operation")
+ ResDef( DBT_LDAP_PARAM_ERROR, 388, "Bad parameter to an ldap routine")
+ ResDef( DBT_LDAP_NO_MEMORY, 389, "Out of memory")
+ ResDef( DBT_LDAP_CONNECT_ERROR, 390, "Can't connect to the LDAP server")
+ ResDef( DBT_LDAP_NOT_SUPPORTED, 391, "Not supported by this version of the LDAP protocol")
+ ResDef( DBT_LDAP_CONTROL_NOT_FOUND, 392, "Requested LDAP control not found")
+ ResDef( DBT_LDAP_NO_RESULTS_RETURNED, 393, "No results returned")
+ ResDef( DBT_LDAP_MORE_RESULTS_TO_RETURN, 394, "More results to return")
+ ResDef( DBT_LDAP_CLIENT_LOOP, 395, "Client detected loop")
+ ResDef( DBT_LDAP_REFERRAL_LIMIT_EXCEEDED, 396, "Referral hop limit exceeded")
+ ResDef( DBT_missingArgumentForHtmlpathDi_, 399, "Missing argument for \"htmldir\" directive\n" )/*extracted from config.c*/
+ ResDef( DBT_errorS_, 400, "Error: %s (%i)" )/*extracted from error.c*/
+ ResDef( DBT_doYouReallyWantTo_, 401, "Do you really want to %s?" )/*extracted from htmlparse.c*/
+ ResDef( DBT_doYouReallyWantToWindow_, 402, "width=400,height=130,resizable" )/*extracted from htmlparse.c*/
+ ResDef( DBT_missingArgumentForConfigpathDi_, 403, "Missing argument for \"configdir\" directive\n" )/*extracted from config.c*/
+ ResDef( DBT_missingArgumentForNametransDi_, 404, "Missing argument for \"gwnametrans\" directive\n" )/*extracted from config.c*/
+ ResDef( DBT_MissingContext_, 405, "Missing context\n" )/*extracted from config.c*/
+ ResDef( DBT_missingFilenameForBinddnfileDirecti_, 406, "Missing filename for \"binddnfile\" directive\n" ) /*extracted from config.c*/
+ ResDef( DBT_missingArgumentForBinddnDirectiv_, 407, "Missing argument for \"binddn\" directive\n" )
+ ResDef( DBT_missingArgumentForBindpwDirectiv_, 408, "Missing argument for \"bindpw\" directive\n" )
+ ResDef( DBT_badFilenameForBinddnfileDirecti_, 409, "The binddn file must be specified with a full path and cannot exist under the dsgw directory\n" )
+ ResDef (DBT_wrongPlaceForBinddnDirectiv_, 410, "The bind information should not be in the main configuration file. Please put it in a separate file outside of the dsgw directory\n")
+ ResDef( DBT_NotWillingToExecute_, 411, "The directory server gateway is not available for the restricted installation. To use the gateway upgrade to the full version of the Netscape Directory Server.\n" )
+ ResDef( DBT_missingArgumentForOrgChartURLDirectiv_, 412, "Missing argument for \"url-orgchart-base\" directive\n" )/*extracted from config.c*/
+ ResDef( DBT_missingArgumentForOrgChartSearchAttr_ , 413, "Missing argument for \"orgchart-attrib-farleft-rdn\" directive\n" )/*extracted from config.c*/
+ ResDef( DBT_theCharsetIsNotSupported , 414, "The charset is not supported\n" )
+END_STR(dsgw)
+
diff --git a/ldap/clients/dsgw/dnedit.c b/ldap/clients/dsgw/dnedit.c
new file mode 100644
index 00000000..5ee761ef
--- /dev/null
+++ b/ldap/clients/dsgw/dnedit.c
@@ -0,0 +1,415 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+/*
+ * Generate a DN edit screen.
+ */
+
+#include "dsgw.h"
+#include "dbtdsgw.h"
+
+#ifdef DSGW_DEBUG
+int main(int argc, char *argv[], char *env[] )
+#else /* DSGW_DEBUG */
+int main(int argc, char *argv[] )
+#endif /* DSGW_DEBUG */
+{
+ char *tmplname, *attrname, *attrdesc, *qs, *dn, *edn;
+ char *attrs[ 2 ], **attrvals, **xdn, *avedn, *js0, *js1;
+ LDAP *ld;
+ LDAPMessage *msgp;
+ int i;
+
+ /*
+ * The URL used to invoke this CGI looks like:
+ * http://host/dnedit?CONTEXT=context&TEMPLATE=tmplname&DN=dn&ATTR=attrname&DESC=description
+ *
+ * where:
+ * "tmplname" is the name of the HTML template to render
+ * "attrname" is the name of a dn-valued attribute to display
+ * "description" is a textual description of the attribute
+ *
+ * Note: original form http://host/dnedit/dn?... is supported
+ * for keeping backward compatibility.
+ */
+ tmplname = attrname = attrdesc = dn = edn = NULL;
+ if (( qs = getenv( "QUERY_STRING" )) != NULL && *qs != '\0' ) {
+ char *p, *q;
+ q = qs + strlen( qs );
+ while ((( p = strrchr( qs, '&' )) != NULL ) || ( q - qs > 1 )) {
+ if ( p )
+ *p++ = '\0';
+ else
+ p = qs;
+ q = p;
+
+ if ( p != NULL && strncasecmp( p, "dn=", 3 ) == 0 ) {
+ edn = dsgw_ch_strdup( p + 3 );
+ dn = dsgw_ch_strdup( p + 3 );
+ dsgw_form_unescape( dn );
+ } else if ( p != NULL && strncasecmp( p, "template=", 9 ) == 0 ) {
+ tmplname = dsgw_ch_strdup( p + 9 );
+ dsgw_form_unescape( tmplname );
+ } else if ( p != NULL && strncasecmp( p, "attr=", 5 ) == 0 ) {
+ attrname = dsgw_ch_strdup( p + 5 );
+ dsgw_form_unescape( attrname );
+ } else if ( p != NULL && strncasecmp( p, "desc=", 5 ) == 0 ) {
+ attrdesc = dsgw_ch_strdup( p + 5 );
+ /* Don't bother unescaping it;
+ we're only going to put it back in another URL. */
+ } else if ( p != NULL && strncasecmp( p, "context=", 8 ) == 0) {
+ context = dsgw_ch_strdup( p + 8 );
+ dsgw_form_unescape( context );
+ }
+
+ }
+
+ if ( !tmplname )
+ dsgw_error( DSGW_ERR_MISSINGINPUT, "template", DSGW_ERROPT_EXIT,
+ 0, NULL );
+ if ( !attrname )
+ dsgw_error( DSGW_ERR_MISSINGINPUT, "attr", DSGW_ERROPT_EXIT,
+ 0, NULL );
+ if ( !attrdesc )
+ dsgw_error( DSGW_ERR_MISSINGINPUT, "desc", DSGW_ERROPT_EXIT,
+ 0, NULL );
+ } else {
+ dsgw_error( DSGW_ERR_MISSINGINPUT, NULL, DSGW_ERROPT_EXIT, 0, NULL );
+ }
+
+ if ( dn == NULL ) {
+ dsgw_error( DSGW_ERR_MISSINGINPUT, "dn", DSGW_ERROPT_EXIT, 0, NULL );
+ }
+
+ (void)dsgw_init( argc, argv, DSGW_METHOD_GET );
+
+#ifdef DSGW_DEBUG
+ dsgw_logstringarray( "env", env );
+#endif
+
+ dsgw_send_header();
+
+
+ /* Get the current attribute values */
+ (void) dsgw_init_ldap( &ld, NULL, 0, 0);
+ attrs[ 0 ] = attrname;
+ attrs[ 1 ] = NULL;
+ if (ldap_search_s( ld, dn, LDAP_SCOPE_BASE, "(objectclass=*)", attrs, 0,
+ &msgp ) != LDAP_SUCCESS ) {
+ dsgw_error( DSGW_ERR_ENTRY_NOT_FOUND, dn, DSGW_ERROPT_EXIT, 0, NULL );
+ }
+ attrvals = ldap_get_values( ld, msgp, attrname );
+
+
+ /* Send the top-level document HTML */
+ dsgw_emits( "<HTML>\n"
+ "<SCRIPT LANGUAGE=\"JavaScript\">\n" );
+ dsgw_emitf( "var emptyFrame = '';\n" );
+ dsgw_emitf( "var attrname = '%s';\n", attrname );
+ /*
+ * fix for 333110: dn should be escaped to be used in saveChanges/domodify
+ */
+ dsgw_emitf( "var dn = '%s';\n", edn );
+ dsgw_emitf( "var needToSaveChanges = false;\n" );
+ dsgw_emitf( "var completion_url = '%s?dn=%s&context=%s';\n",
+ dsgw_getvp( DSGW_CGINUM_EDIT ), edn, context);
+ dsgw_emitf(
+ /*
+ * This needs to output \\\' so that when JavaScript writeln's
+ * this string, it writes \' to the output document.
+ *
+ * I'm really, really sorry about this - ggood.
+ *
+ * Moral of the story - next time someone asks you to write C code which
+ * writes JavaScript code which writes JavaScript code... just say "no".
+ */
+ "var comp_js = 'var cu=\\\\\\\'%s?context=%s&dn=%s\\\\\\\'; this.document.location.href=cu;'\n",
+ dsgw_getvp( DSGW_CGINUM_EDIT ), context, edn );
+ dsgw_emits("var dnlist = new Array;\n" );
+ for ( i = 0; attrvals && attrvals[ i ] != NULL; i++ ) {
+ xdn = ldap_explode_dn( attrvals[ i ], 1 );
+ avedn = dsgw_strdup_escaped( attrvals[ i ]);
+ dsgw_emitf( "dnlist[%d] = new Object\n", i );
+ dsgw_emitf( "dnlist[%d].edn = '%s';\n", i, avedn );
+ js0 = dsgw_escape_quotes( xdn[ 0 ] );
+ if ( xdn[1] != NULL ) {
+ js1 = dsgw_escape_quotes( xdn[ 1 ] );
+ dsgw_emitf( "dnlist[%d].rdn = '%s, %s';\n", i, js0, js1 );
+ free( js1 );
+ } else {
+ dsgw_emitf( "dnlist[%d].rdn = '%s';\n", i, js0 );
+ }
+ free( js0 );
+ dsgw_emitf( "dnlist[%d].selected = false;\n", i );
+ free( avedn );
+ ldap_value_free( xdn );
+ }
+ dsgw_emitf( "dnlist.count = %d;\n", i );
+ dsgw_emits(
+ "var changesMade = 0;\n"
+ "\n"
+
+ /*
+ * JavaScript function processSearch
+ */
+
+ "function processSearch(f)\n"
+ "{\n"
+ " var sel = f.type;\n"
+ " var selvalue = sel.options[sel.selectedIndex].value;\n"
+ " var lt = f.listtemplate;\n"
+ " if ( f.searchstring.value.length == 0 ) {\n");
+ dsgw_emit_alert( "controlFrame", NULL, XP_GetClientStr( DBT_noSearchStringWasProvidedPleaseT_ ));
+ dsgw_emits(
+ " return false;\n"
+ " }\n"
+ " lt.value = 'fa-' + selvalue;\n");
+ dsgw_emitf(
+ " f.action = ");
+ dsgw_quote_emitf( QUOTATION_JAVASCRIPT, "%s?context=%s",
+ dsgw_getvp( DSGW_CGINUM_DOSEARCH ), context);
+ dsgw_emits( ";\n"
+ " f.searchstring.select();\n"
+ " f.searchstring.focus();\n"
+ " return true;\n"
+ "}\n"
+ "\n"
+
+ /*
+ * JavaScript function removeItem
+ */
+
+ "function removeItem(itemno, refresh)\n"
+ "{\n"
+ " var extantDNs = dnlist;\n"
+ " var extantDNsCount = dnlist.count;\n"
+ " \n"
+ " // Get rid of element in slot dup\n"
+ " for (k = itemno; k < extantDNsCount - 1; k++) {\n"
+ " extantDNs[k] = extantDNs[k+1];\n"
+ " }\n"
+ " dnlist.count--;\n"
+ " if ( refresh ) genOutputFrame(outputFrame, dnlist);\n"
+ " this.changesMade = 1;\n"
+ "}\n"
+ "\n"
+
+ /*
+ * JavaScript function dnarrcomp
+ */
+
+ "function dnarrcomp(a,b)\n"
+ "{\n"
+ " return(a.edn.toLowerCase() > b.edn.toLowerCase());\n"
+ "}\n"
+ " \n"
+#ifdef NAV30_SORT_NO_LONGER_COREDUMPS
+ /*
+ * JavaScript function sortEntries
+ */
+
+ "function sortEntries()\n"
+ "{\n"
+ " var extantDNs = dnlist;\n"
+ " extantDNs.sort(dnarrcomp);\n"
+ " genOutputFrame(outputFrame, dnlist);\n"
+ "}\n"
+ "\n"
+#endif /* NAV30_SORT_NO_LONGER_COREDUMPS */
+
+ /*
+ * JavaScript function genOutputFrame
+ */
+
+ "function genOutputFrame(oframe, dnl)\n"
+ "{\n"
+ " var d = oframe.document;\n"
+ "\n"
+ " d.open('text/html');\n"
+ " d.writeln('<HTML>');\n" );
+
+ dsgw_emitf(
+ " d.writeln('<BODY %s>');\n", dsgw_html_body_colors );
+ dsgw_emits(
+ " d.writeln(");
+ dsgw_quotation_begin (QUOTATION_JAVASCRIPT);
+ dsgw_form_begin (NULL, NULL);
+ dsgw_quotation_end();
+ dsgw_emits( ");\n");
+ dsgw_emits(
+ " d.writeln('<CENTER>');\n"
+ " if (dnl.count == 0) {\n" );
+
+ dsgw_emits( " d.write(" );
+ dsgw_quote_emits (QUOTATION_JAVASCRIPT, XP_GetClientStr (DBT_noNameInTheList_));
+ dsgw_emits( ");\n" );
+
+ dsgw_emits( " } else if (dnl.count == 1) {\n" );
+ dsgw_emits( " d.write(" );
+ dsgw_quote_emits (QUOTATION_JAVASCRIPT, XP_GetClientStr (DBT_oneNameInTheList_));
+ dsgw_emits( ");\n" );
+ dsgw_emits( " } else {\n" );
+ dsgw_emits( " d.write('");
+ dsgw_emitf( XP_GetClientStr( DBT_someNamesInTheList_ ), "' + dnl.count + '" );
+ dsgw_emits( "');\n" );
+
+ dsgw_emits(
+ " }\n"
+#ifdef NAV30_SORT_NO_LONGER_COREDUMPS
+ " d.writeln('</FONT>\\n')\n"
+ " d.writeln('<INPUT TYPE=\"button\" VALUE=\"Sort\" onClick=\"parent.sortEntries();\"></CENTER>\\n');\n"
+#else
+ " d.writeln('</FONT></CENTER>\\n');\n"
+#endif
+ " if (dnl.count > 0) {\n"
+ " d.write('<PRE><B>');\n" );
+
+ dsgw_emitf(
+ " d.write('%s</B><HR>');\n",
+ XP_GetClientStr( DBT_RemoveFromList_ ));
+
+ dsgw_emits(
+ " for (i = 0; i < dnl.count; i++) {\n"
+ " d.write('<INPUT TYPE=CHECKBOX onClick=\"parent."
+ "removeItem(' + i + ', true);\">');\n"
+ " d.write(' ');\n"
+ " d.write(dnl[i].rdn + '\\n');\n"
+ " }\n"
+ " d.writeln('</PRE></FORM><HR>');\n"
+ " }\n"
+ " d.writeln('</BODY>');\n"
+ " d.close();\n"
+ "}\n"
+ "\n"
+
+ /*
+ * JavaScript function mergeLists
+ */
+
+ "function mergeLists(mode, old, newl)\n"
+ "{\n"
+ " var dup = -1;\n"
+ " var i, j, k;\n"
+ " \n"
+ " for (i = 0; i < newl.count; i++) {\n"
+ " // Check for a duplicate\n"
+ " for (j = 0; j < old.count; j++) {\n"
+ " dup = -1;\n"
+ " if (newl[i].edn.toLowerCase() == "
+ "old[j].edn.toLowerCase()) {\n"
+ " // Duplicate - skip\n"
+ " dup = j;\n"
+ " break;\n"
+ " }\n"
+ " }\n"
+ " if ((dup == -1) && (mode == \"add\")) {\n"
+ " // add new dn at end of array\n"
+ " old[old.count] = new Array;\n"
+ " old[old.count].edn = newl[i].edn;\n"
+ " old[old.count].rdn = newl[i].rdn;\n"
+ " old[old.count].sn = newl[i].sn;\n"
+ " old[old.count].selected = false;\n"
+ " old.count++;\n"
+ " } else if (dup != -1 && mode == \"remove\") {\n"
+ " removeItem(dup,false);\n"
+ " }\n"
+ " }\n"
+ "}\n"
+ "\n"
+
+ /*
+ * JavaScript function updateList
+ */
+
+ "function updateList(mode, old_list, new_list, outframe)\n"
+ "{\n"
+ " mergeLists(mode, old_list, new_list);\n"
+ " genOutputFrame(outframe, old_list);\n"
+ " this.changesMade = 1;\n"
+ "}\n"
+ "\n"
+
+ /*
+ * JavaScript function cancel
+ */
+ "function cancel ()\n"
+ "{\n"
+ " if (changesMade == 0) {\n"
+ " document.location = completion_url;\n"
+ " } else {\n");
+ dsgw_emit_confirm ("controlFrame",
+ "opener.document.location.href = opener.completion_url;",
+ NULL /* no */,
+ XP_GetClientStr(DBT_discardChangesWindow_), 1,
+ XP_GetClientStr(DBT_discardChanges_));
+ dsgw_emits (
+ " }\n"
+ "}\n"
+ "\n"
+
+ /*
+ * JavaScript function saveChanges
+ */
+
+ "function saveChanges()\n"
+ "{\n"
+ " var i, j;\n"
+ " needToSaveChanges = true;\n"
+ " of = self.stagingFrame.document;\n"
+ " of.open('text/html');\n" );
+ dsgw_emitf(
+ " of.write('<BODY onLoad=\"if ( parent.needToSaveChanges ) { parent.needToSaveChanges = false; document.stagingForm.submit() }\">');\n" );
+ dsgw_emits(
+ " of.write('");
+ dsgw_form_begin ("stagingForm",
+ "action=\"%s\" METHOD=\"POST\" TARGET=\"_parent\"",
+ dsgw_getvp( DSGW_CGINUM_DOMODIFY ));
+ dsgw_emits("\\n');\n");
+ dsgw_emits(
+ " if (self.dnlist.count < 1) {\n"
+ " of.write('<INPUT TYPE=\"hidden\" NAME=\"replace_');\n"
+ " of.write(self.attrname);\n"
+ " of.write('\" VALUE=\"\">\\n');\n"
+ " } else {\n"
+ " for (j = 0; j < self.dnlist.count; j++) {\n"
+ " of.write('<INPUT TYPE=\"hidden\" NAME=\"replace_');\n"
+ " of.write(self.attrname);\n"
+ " of.write('\" VALUE=\"');\n"
+ " of.write(unescape(self.dnlist[j].edn));\n"
+ " of.write('\">\\n');\n"
+ " }\n"
+ " }\n"
+ " of.writeln('<INPUT TYPE=\"hidden\" NAME=\"changetype\" "
+ "VALUE=\"modify\">\\n');\n"
+ " of.writeln('<INPUT TYPE=\"hidden\" NAME=\"completion_javascript\" "
+ "VALUE=\"' + comp_js + '\">');\n"
+ " of.writeln('<INPUT TYPE=\"hidden\" NAME=\"dn\" VALUE=\"' "
+ "+ self.dn + '\"\\n');\n"
+ " of.writeln('<INPUT TYPE=\"hidden\" NAME=\"context\" "
+ "VALUE=\"");
+ dsgw_emits(context);
+ dsgw_emits("\">\\n');\n"
+ " of.writeln('</FORM>\\n');\n"
+ " of.close();\n"
+ "}\n"
+
+ "</SCRIPT>\n"
+ "\n"
+ "<FRAMESET BORDER=1 FRAMEBORDER=1 ROWS=230,*,0,0 "
+ "SCROLLING=\"NO\" NORESIZE onLoad=\"genOutputFrame"
+ "(this.outputFrame, this.dnlist);\">\n" );
+ dsgw_emitf( " <FRAME SRC=\"%s?%s&dn=%s&context=%s&DNATTR=%s&"
+ "DNDESC=%s\" NAME=\"controlFrame\" SCROLLING=\"no\">\n",
+ dsgw_getvp( DSGW_CGINUM_EDIT ), tmplname, edn, context, attrname,
+ attrdesc );
+ dsgw_emitf( " <FRAME SRC=\"javascript:parent.emptyFrame\" "
+ "NAME=\"outputFrame\">\n"
+ " <FRAME SRC=\"javascript:parent.emptyFrame\" "
+ "NAME=\"stagingFrame\">\n"
+ "</FRAMESET>\n"
+ "</HTML>\n" );
+ return 0;
+}
diff --git a/ldap/clients/dsgw/doauth.c b/ldap/clients/dsgw/doauth.c
new file mode 100644
index 00000000..a621f534
--- /dev/null
+++ b/ldap/clients/dsgw/doauth.c
@@ -0,0 +1,386 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+/*
+ * doauth.c -- CGI authentication handler -- HTTP gateway
+ *
+ * Copyright (c) 1996 Netscape Communications Corp.
+ * All rights reserved.
+ */
+#include "dsgw.h"
+#include "dbtdsgw.h"
+
+static void post_request();
+static void do_autherror( int rc, char *msg, char *lderrtxt,
+ int ommitclosebutton );
+
+
+int main( argc, argv, env )
+ int argc;
+ char *argv[];
+{
+ int reqmethod;
+
+ reqmethod = dsgw_init( argc, argv, DSGW_METHOD_POST );
+
+ post_request();
+
+ exit( 0 );
+}
+
+static void
+post_request()
+{
+ char *binddn, *password, *authdesturl, *ufn, *encodeddn, *lderrtxt;
+ LDAP *ld;
+ int rc;
+ int password_expiring = -1;
+ int msgid = 0;
+
+ binddn = dsgw_get_escaped_cgi_var( "escapedbinddn", "binddn",
+ DSGW_CGIVAR_REQUIRED );
+ encodeddn = dsgw_strdup_escaped( binddn );
+ authdesturl = dsgw_get_cgi_var( "authdesturl", DSGW_CGIVAR_OPTIONAL );
+ password = dsgw_get_cgi_var( "password", DSGW_CGIVAR_OPTIONAL );
+
+ (void) dsgw_init_ldap( &ld, NULL, 1, 0);
+
+ if ( password == NULL || strlen( password ) == 0 ) {
+ do_autherror( 0, XP_GetClientStr( DBT_youDidNotProvidePasswd_ ),
+ NULL, authdesturl == NULL );
+ exit( 0 );
+ }
+
+ if( ( msgid = ldap_simple_bind( ld, binddn, password ) ) == -1 ) {
+ rc = ldap_get_lderrno( ld, NULL, &lderrtxt );
+ do_autherror( rc, NULL, lderrtxt, authdesturl == NULL );
+ exit( 0 );
+ } else {
+
+ char *ckbuf;
+ LDAPControl **ctrls = NULL;
+ LDAPMessage *res;
+ char *errmsg = NULL;
+
+ /* Conduct password policy checks */
+ if(( rc = ldap_result( ld, msgid, 1, NULL, &res )) == -1 ) {
+ rc = ldap_get_lderrno( ld, NULL, &errmsg );
+ do_autherror( rc, NULL, errmsg, authdesturl == NULL );
+ exit( 0 );
+ }
+
+ if( ldap_parse_result( ld, res, NULL, NULL, NULL, NULL, &ctrls, 0 )
+ != LDAP_SUCCESS ) {
+ rc = ldap_get_lderrno( ld, NULL, &errmsg );
+ do_autherror( rc, NULL, errmsg, authdesturl == NULL );
+ exit( 0 );
+ }
+
+ rc = ldap_result2error( ld, res, 1 );
+ if( rc == LDAP_SUCCESS ) {
+ if( ctrls ) {
+ int i;
+ for( i = 0; ctrls[ i ] != NULL; ++i ) {
+ if( !( strcmp( ctrls[ i ]->ldctl_oid,
+ LDAP_CONTROL_PWEXPIRED) ) ) {
+ /* The password has expired. Convey this information,
+ and give the user the option to change their
+ password immediately. */
+ dsgw_password_expired_alert( binddn );
+ exit( 0 );
+ }
+ else if( !( strcmp( ctrls[ i ]->ldctl_oid,
+ LDAP_CONTROL_PWEXPIRING) ) ) {
+ /* "The password is expiring in n seconds" */
+ if( ( ctrls[ i ]->ldctl_value.bv_val != NULL ) &&
+ ( ctrls[ i ]->ldctl_value.bv_len > 0 ) ) {
+ password_expiring = atoi( ctrls[ i ]->ldctl_value.bv_val );
+ }
+ }
+ }
+ ldap_controls_free( ctrls );
+ }
+ } else if( rc == LDAP_CONSTRAINT_VIOLATION ) {
+ rc = ldap_get_lderrno( ld, NULL, &errmsg );
+ if( errmsg && strstr( errmsg,
+ "Exceed password retry limit. Contact system administrator to reset" ) ) {
+ do_autherror( rc, XP_GetClientStr(DBT_ExceedPasswordRetryContactSysAdmin_),
+ NULL, authdesturl == NULL );
+ } else if( errmsg && strstr( errmsg,
+ "Exceed password retry limit. Please try later" ) ) {
+ do_autherror( rc, XP_GetClientStr(DBT_ExceedPasswordRetryTryLater_),
+ NULL, authdesturl == NULL );
+ } else {
+ do_autherror( rc, NULL, errmsg,
+ authdesturl == NULL );
+ }
+ exit( 0 );
+ } else if( rc == LDAP_INVALID_CREDENTIALS ) {
+ if( errmsg && strstr( errmsg, "password expired" ) ) {
+ do_autherror( rc, XP_GetClientStr(DBT_PasswordExpired_),
+ NULL, authdesturl == NULL );
+ } else {
+ do_autherror( rc, NULL, errmsg,
+ authdesturl == NULL );
+ }
+ exit( 0 );
+ } else {
+ rc = ldap_get_lderrno( ld, NULL, &errmsg );
+ do_autherror( rc, NULL, errmsg, authdesturl == NULL );
+ exit( 0 );
+ }
+
+ /* Construct cookie */
+ if (( ckbuf = dsgw_mkcookie( binddn, password, gc->gc_authlifetime,
+ &rc )) == NULL ) {
+ switch ( rc ) {
+ case DSGW_CKDB_CANTOPEN:
+ do_autherror( 0, XP_GetClientStr( DBT_authDBNotOpened_ ),
+ NULL, authdesturl == NULL );
+ break;
+ case DSGW_CKDB_CANTAPPEND:
+ do_autherror( 0,
+ XP_GetClientStr( DBT_DataCouldNotAppendToAuthDB_ ),
+ NULL, authdesturl == NULL );
+ break;
+ default:
+ do_autherror( rc, NULL, NULL, authdesturl == NULL );
+ break;
+ }
+ exit( 1 );
+ }
+ dsgw_add_header( ckbuf );
+
+ /* Construct a success message */
+ dsgw_send_header();
+ dsgw_emits( "<HTML>" );
+ dsgw_head_begin();
+ dsgw_emits( "\n"
+ "<TITLE>Authentication Successful</TITLE>\n"
+ "<SCRIPT LANGUAGE=\"JavaScript\">\n"
+ "<!-- Hide from non-JavaScript browsers\n" );
+
+ if ( authdesturl != NULL && strlen( authdesturl ) > 0 ) {
+ dsgw_emitf( "var authdesturl=\"%s\";\n", authdesturl );
+ } else {
+ dsgw_emitf( "var authdesturl=null;\n" );
+ }
+
+ if( password_expiring != -1 ) {
+ if ( encodeddn != NULL && strlen( encodeddn ) > 0 ) {
+ dsgw_emitf( "var editdesturl = '%s?passwd&dn=%s&context=%s';\n",
+ dsgw_getvp( DSGW_CGINUM_EDIT ), encodeddn, context );
+ } else {
+ dsgw_emitf( "var editdesturl=null;\n" );
+ }
+
+ dsgw_emits( "function editPassword()\n"
+ "{\n"
+ " if ( editdesturl != null ) {\n"
+ " top.location.href = editdesturl;\n"
+ " } else {\n"
+ " top.close();\n"
+ " }\n"
+ "}\n" );
+ }
+
+ dsgw_emits( "function finishAuth()\n"
+ "{\n"
+ " if ( authdesturl != null ) {\n"
+ " top.location.href = authdesturl;\n"
+ " } else {\n"
+ " top.close();\n"
+ " }\n"
+ "}\n"
+ "var contButtons = ");
+ dsgw_quotation_begin (QUOTATION_JAVASCRIPT_MULTILINE);
+ dsgw_form_begin ("bForm", NULL);
+ if( password_expiring != -1 ) {
+ /* Create a table with 1 row and 3 columns,
+ one column for each button... */
+ dsgw_emitf(
+ "\n<TABLE BORDER COLS=3 WIDTH=100%%>\n"
+ "<TD ALIGN=CENTER>\n"
+ "<INPUT TYPE=BUTTON NAME=\"contButton\""
+ "VALUE=\"%s\" onClick=\"finishAuth();\">\n"
+ "<TD ALIGN=CENTER>\n"
+ "<INPUT TYPE=BUTTON NAME=\"editButton\""
+ "VALUE=\"%s\" onClick=\"editPassword();\">\n"
+ "<TD ALIGN=CENTER>",
+ XP_GetClientStr( DBT_continue_4 ),
+ XP_GetClientStr( DBT_EditPassword_ ));
+ } else {
+ dsgw_emitf(
+ "\n<TABLE BORDER=2 WIDTH=100%%>\n"
+ "<TD ALIGN=CENTER WIDTH=50%%>\n"
+ "<INPUT TYPE=BUTTON NAME=\"contButton\""
+ "VALUE=\"%s\" onClick=\"finishAuth();\">\n"
+ "<TD ALIGN=CENTER WIDTH=50%%>",
+ XP_GetClientStr( DBT_continue_4 ));
+ }
+ dsgw_emit_helpbutton( "AUTHSUCCESS" );
+ dsgw_emits(
+ "\n</TABLE></FORM>");
+ dsgw_quotation_end(); dsgw_emits(";\n");
+
+ dsgw_emits(
+ "var noContButtons = ");
+ dsgw_quotation_begin (QUOTATION_JAVASCRIPT_MULTILINE);
+ dsgw_emits( XP_GetClientStr( DBT_ToContinue_ ));
+ dsgw_form_begin( "bForm", NULL );
+ dsgw_emits(
+ "\n<TABLE BORDER=2 WIDTH=100%>"
+ "\n<TD ALIGN=CENTER WIDTH=50%>" );
+ dsgw_emit_homebutton();
+ dsgw_emits( "\n<TD ALIGN=CENTER WIDTH=50%%>" );
+ dsgw_emit_helpbutton( "AUTHSUCCESS" );
+ dsgw_emits(
+ "\n</TABLE></FORM>\n");
+ dsgw_quotation_end(); dsgw_emits(";\n");
+
+ dsgw_emitf(
+ "// End hiding -->\n"
+ "</SCRIPT>\n"
+ "</HEAD>\n<BODY %s>\n"
+ "<CENTER>\n"
+ "<H3>%s</H3>\n"
+ "</CENTER>\n",
+ dsgw_html_body_colors,
+ XP_GetClientStr( DBT_AuthenticationSuccessful_ )
+ );
+
+#ifdef NOTFORNOW
+ /* ldap_dn2ufn currectly gobble up 'dc' so don't use it for */
+ /* now */
+ ufn = ldap_dn2ufn( binddn );
+ dsgw_emitf( XP_GetClientStr( DBT_YouAreNowAuthenticated_ ), ufn );
+#else
+ dsgw_emitf( XP_GetClientStr( DBT_YouAreNowAuthenticated_ ), binddn );
+#endif
+ dsgw_emits( "<P>\n" );
+#ifdef NOTFORNOW
+ free( ufn );
+#endif
+ dsgw_emitf( XP_GetClientStr( DBT_YourAuthenticationCredentialsWill_ ),
+ gc->gc_authlifetime / 60 );
+ dsgw_emits( XP_GetClientStr( DBT_AfterYourCredentialsExpire_ ));
+
+ if( password_expiring != -1 ) {
+ time_t cur_time, pw_exp_time_t;
+ struct tm *pw_exp_time_tm;
+
+ cur_time = dsgw_current_time();
+ pw_exp_time_t = dsgw_time_plus_sec( cur_time, password_expiring );
+ pw_exp_time_tm = localtime( &pw_exp_time_t );
+
+ dsgw_emitf(
+ XP_GetClientStr( DBT_ThePasswordForThisEntryWillExpire_ ),
+ asctime( pw_exp_time_tm ));
+ dsgw_emits( "<P>\n" );
+ }
+
+ dsgw_emits(
+ "<P>\n"
+ "<TR>\n"
+ "<SCRIPT LANGUAGE=\"JavaScript\">\n"
+ "<!-- Hide from non-JavaScript browsers\n"
+ "if ( authdesturl != null ) {\n"
+ " document.write( contButtons );\n"
+ "} else {\n"
+ " document.write( noContButtons );\n"
+ "}\n"
+ "// End hiding -->\n"
+ "</SCRIPT>\n"
+ "</BODY>\n</HTML>\n" );
+
+ free( ckbuf );
+ exit( 0 );
+ }
+}
+
+
+
+
+static void
+do_autherror( int rc, char *msg, char *lderrtxt, int omitclosebutton )
+{
+ dsgw_send_header();
+ dsgw_emits( "<HTML>" );
+ dsgw_head_begin();
+ dsgw_emitf( "\n"
+ "<TITLE>Authentication Error</TITLE></HEAD>\n"
+ "<BODY %s>\n"
+ "<CENTER>\n"
+ "<FONT SIZE=+2>\n", dsgw_html_body_colors );
+
+ dsgw_emits( XP_GetClientStr( DBT_AuthenticationFailed_ ));
+ dsgw_emits(
+ "</FONT>\n"
+ "</CENTER>\n"
+ "<P>\n");
+ if ( msg != NULL ) {
+ dsgw_emitf( "%s %s\n",
+ XP_GetClientStr( DBT_AuthenticationFailedBecause_ ),
+ msg );
+ } else {
+ switch ( rc ) {
+ case LDAP_NO_SUCH_OBJECT:
+ dsgw_emits( XP_GetClientStr( DBT_AuthEntryNotExist_ ));
+ break;
+ case LDAP_INAPPROPRIATE_AUTH:
+ dsgw_emits( XP_GetClientStr( DBT_AuthEntryHasNoPassword_ ));
+ break;
+ case LDAP_INVALID_CREDENTIALS:
+ dsgw_emits( XP_GetClientStr( DBT_thePasswordIsIncorrect_ ));
+ break;
+ case DSGW_CKDB_KEY_NOT_PRESENT:
+ case DSGW_CKDB_DBERROR:
+ case DSGW_CKDB_EXPIRED:
+ case DSGW_CKDB_RNDSTRFAIL:
+ case DSGW_CKDB_NODN:
+ case DSGW_CKDB_CANTOPEN:
+ case DSGW_CKDB_CANTAPPEND:
+ dsgw_emitf( XP_GetClientStr( DBT_AuthUnexpectedError_ ), dsgw_err2string( rc ));
+ break;
+ default:
+ dsgw_emitf( XP_GetClientStr( DBT_AuthUnexpectedError_ ), dsgw_ldaperr2string( rc ));
+ break;
+ }
+ }
+ if ( lderrtxt != NULL ) {
+ dsgw_emitf( "<BR>(%s)", lderrtxt );
+ }
+ dsgw_emits( "<P>\n" );
+ dsgw_form_begin( NULL, NULL );
+ dsgw_emits(
+ "\n"
+ "<TABLE BORDER=2 WIDTH=100%%>\n"
+ "<TR>\n" );
+ if ( omitclosebutton ) {
+ dsgw_emitf( "<TD ALIGN=CENTER WIDTH=33%%>\n"
+ "<INPUT TYPE=BUTTON VALUE=\"%s\" onClick=\"history.back()\">\n"
+ "<TD ALIGN=CENTER WIDTH=33%%>\n",
+ XP_GetClientStr( DBT_Retry_ ));
+ dsgw_emit_homebutton();
+ dsgw_emits ( "<TD ALIGN=CENTER WIDTH=34%%>\n" );
+ dsgw_emit_helpbutton( "AUTHPROBLEM" );
+ } else {
+ dsgw_emitf( "<TD ALIGN=CENTER WIDTH=33%%>\n"
+ "<INPUT TYPE=BUTTON VALUE=\"%s\" onClick=\"history.back()\">\n"
+ "<TD ALIGN=CENTER WIDTH=33%%>\n"
+ "<INPUT TYPE=BUTTON VALUE=\"%s\" "
+ "onClick=\"parent.close();\">\n"
+ "<TD ALIGN=CENTER WIDTH=34%%>\n",
+ XP_GetClientStr( DBT_Retry_ ),
+ XP_GetClientStr( DBT_closeWindow_5 ));
+ dsgw_emit_helpbutton( "AUTHPROBLEM" );
+ }
+ dsgw_emits( "</TABLE>\n"
+ "</FORM>\n"
+ "</BODY></HTML>\n" );
+ fflush( stdout );
+ return;
+}
diff --git a/ldap/clients/dsgw/domodify.c b/ldap/clients/dsgw/domodify.c
new file mode 100644
index 00000000..5535311e
--- /dev/null
+++ b/ldap/clients/dsgw/domodify.c
@@ -0,0 +1,1254 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+/*
+ * domodify.c -- LDAP modify CGI handler -- HTTP gateway
+ *
+ * Copyright (c) 1996 Netscape Communications Corp.
+ * All rights reserved.
+ */
+
+#include "dsgw.h"
+#include "dbtdsgw.h"
+
+#define DSGW_CHANGETYPE_UNKNOWN 0
+#define DSGW_CHANGETYPE_MODIFY 1
+#define DSGW_CHANGETYPE_ADD 2
+#define DSGW_CHANGETYPE_DELETE 3
+#define DSGW_CHANGETYPE_MODRDN 4
+
+static void post_request();
+static int entry_modify_or_add( LDAP *ld, char *dn, int add, int *pwdchangedp );
+static int entry_delete( LDAP *ld, char *dn );
+static int entry_modrdn( LDAP *ld, char *dn, char *newrdn, int deleteoldrdn );
+static int gather_passwd_changes( char *dn, LDAPMod ***pmodsp,
+ int adding_entry, int *pwdchangedp );
+static void modify_error( int lderr, char *lderrtxt );
+static void addmodifyop( LDAPMod ***pmodsp, int modop, char *attr,
+ char *value, int vlen );
+static void remove_modifyops( LDAPMod **pmods, char *attr );
+static int starts_with( char *s, char *startswith );
+static char **post2multilinevals( char *postedval );
+static char **post2vals( char *postedval );
+static int require_oldpasswd( char *modifydn );
+static char *dsgw_processdomainid( LDAP *ld, char *dn, char *attr, char *val, int len);
+static int value_is_unique( LDAP *ld, char *dn, char *attr, char *value );
+static LDAPDomainIdStatus
+dsgw_checkdomain_uniqueness( LDAP *ld, char *attr, char *val, int len);
+static int verbose = 0;
+static int quiet = 0;
+static int display_results_inline = 0;
+
+
+int main( argc, argv, env )
+ int argc;
+ char *argv[];
+#ifdef DSGW_DEBUG
+ char *env[];
+#endif
+{
+
+ (void)dsgw_init( argc, argv, DSGW_METHOD_POST );
+ dsgw_send_header();
+
+#ifdef DSGW_DEBUG
+ dsgw_logstringarray( "env", env );
+#endif
+
+ post_request();
+
+ exit( 0 );
+}
+
+
+static void
+post_request()
+{
+ LDAP *ld;
+ int rc, changetype, dnlen, i, passwd_changed, discard_authcreds;
+ char *s, *encodeddn, *dn, *newrdn, *changedesc, **rdns, **oldrdns,
+ *jscomp, *entry_name, *new_name, *success_msg;
+ char *old_dn;
+ char buf[ 256 ];
+#if 0
+ FILE *genfp;
+#endif
+
+ passwd_changed = discard_authcreds = 0;
+ s = dsgw_get_cgi_var( "changetype", DSGW_CGIVAR_REQUIRED );
+ changedesc = XP_GetClientStr(DBT_Editing_);
+
+ if ( strcasecmp( s, "modify" ) == 0 ) {
+ changetype = DSGW_CHANGETYPE_MODIFY;
+ } else if ( strcasecmp( s, "add" ) == 0 ) {
+ changetype = DSGW_CHANGETYPE_ADD;
+ changedesc = XP_GetClientStr(DBT_Adding_);
+ } else if ( strcasecmp( s, "delete" ) == 0 ) {
+ changetype = DSGW_CHANGETYPE_DELETE;
+ changedesc = XP_GetClientStr(DBT_Deleting_);
+ } else if ( strcasecmp( s, "modrdn" ) == 0 ) {
+ changetype = DSGW_CHANGETYPE_MODRDN;
+ changedesc = XP_GetClientStr(DBT_Renaming_);
+ } else {
+ changetype = DSGW_CHANGETYPE_UNKNOWN;
+ }
+
+ encodeddn = dsgw_get_cgi_var( "dn", DSGW_CGIVAR_REQUIRED );
+
+ /* undo extra level of escaping on DN */
+ dn = dsgw_ch_strdup( encodeddn );
+ dsgw_form_unescape( dn );
+ old_dn = dn;
+
+ quiet = dsgw_get_boolean_var( "quiet", DSGW_CGIVAR_OPTIONAL, 0 );
+
+#if 0
+ /*
+ * If the "genscreen" form variable is set, it is the name of a
+ * genscreen-compatible HTML template to display the domodify results
+ * within. We replace the "DS_LAST_OP_INFO" directive with our own
+ * "domodify" output. Presence of "genscreen" also turns on quiet mode.
+ */
+ if (( s = dsgw_get_cgi_var( "genscreen", DSGW_CGIVAR_OPTIONAL )) != NULL &&
+ dsgw_genscreen_begin( s, &genfp, DRCT_DS_LAST_OP_INFO, 0 ) == 0 ) {
+ quiet = display_results_inline = 1;
+ }
+#endif
+
+ verbose = dsgw_get_boolean_var( "verbose", DSGW_CGIVAR_OPTIONAL, 0 );
+ if ( verbose ) {
+ quiet = 0; /* verbose overrides quiet */
+ }
+
+ if ( dsgw_init_ldap( &ld, NULL, 0, 0) != DSGW_BOUND_ASUSER ) {
+ dsgw_emitf( XP_GetClientStr(DBT_warningNoAuthenticationContinuin_) );
+ }
+
+ if ( !quiet ) {
+ PR_snprintf( buf, 256,
+ XP_GetClientStr(DBT_SDirectoryEntry_), changedesc );
+ dsgw_html_begin( buf, 1 );
+ } else {
+ dsgw_html_begin( NULL, 0 );
+ }
+
+ dsgw_emits( "\n<FONT SIZE=+1>\n" );
+
+ rdns = ldap_explode_dn( dn, 1 );
+ if ( rdns == NULL || rdns[ 0 ] == NULL ) {
+ entry_name = dn;
+ } else {
+ entry_name = dsgw_ch_strdup( rdns[ 0 ] );
+ }
+ new_name = success_msg = "";
+ dsgw_emitf( "%s <B>%s</B>...\n</FONT>\n\n", changedesc, entry_name );
+ if ( rdns != NULL ) {
+ ldap_value_free( rdns );
+ }
+
+ if ( verbose ) {
+ dsgw_emitf( XP_GetClientStr(DBT_PreEntryDnSPrePN_), dn );
+ }
+
+ /*
+ * For end-user CGIs under admin server, if we're talking to a local DB,
+ * then there's no access control, and therefore we need to disallow
+ * people from changing entries other than their own. Do that check right
+ * here.
+ */
+ if ( gc->gc_enduser && gc->gc_localdbconf != NULL ) {
+ char *bdn;
+ (void)dsgw_get_adm_identity( ld, NULL, &bdn, NULL, DSGW_ERROPT_EXIT );
+ /* Make sure DN we're bound as matches the DN being modified */
+ if ( dsgw_dn_cmp( dn, bdn ) == 0 ) {
+ /* Not the same - generate an error and bail out */
+ dsgw_error( DSGW_ERR_LOCALDB_PERMISSION_DENIED, NULL,
+ DSGW_ERROPT_EXIT, 0, NULL );
+ }
+ }
+
+ rc = LDAP_SUCCESS;
+ switch( changetype ) {
+ case DSGW_CHANGETYPE_MODIFY:
+ if ( dsgw_get_boolean_var( "changed_DN", DSGW_CGIVAR_OPTIONAL, 0 )) {
+ /* Collect all the inputs named "replace_DN_attr", where
+ attr is an LDAP attribute type. Construct an AVA from
+ each such input, and combine the AVAs to form newrdn.
+ */
+ auto int i = 0;
+ auto char *varname, *val;
+ auto size_t newrdn_len;
+ newrdn = NULL;
+ while ( (varname = dsgw_next_cgi_var( &i, &val )) != NULL) {
+ if ( starts_with( varname, "replace_" )) {
+ auto char* attr = varname;
+ auto int is_rdn = 0;
+ {
+ auto char* p;
+ while (( p = strchr( attr, '_' )) != NULL ) {
+ attr = p + 1;
+ if ( starts_with( attr, "DN_" )) {
+ is_rdn = 1;
+ } /* ignore any other prefixes */
+ }
+ }
+ if (is_rdn && strlen(val) > 0) {
+ auto const size_t attrlen = strlen (attr);
+ auto const size_t val_len = strlen (val);
+ auto const size_t ava_len = attrlen + 1 + val_len;
+ auto char* ava;
+ if (newrdn == NULL) {
+ ava = newrdn = dsgw_ch_malloc (ava_len + 1);
+ newrdn_len = ava_len;
+ } else {
+ newrdn = dsgw_ch_realloc (newrdn, newrdn_len + ava_len + 2);
+ memcpy (newrdn + newrdn_len, "+", 1);
+ ava = newrdn + newrdn_len + 1;
+ newrdn_len += (ava_len + 1);
+ }
+ memcpy (ava, attr, attrlen);
+ memcpy (ava + attrlen, "=", 1);
+ memcpy (ava + attrlen + 1, val, val_len + 1);
+ }
+ }
+ free (varname);
+ }
+ if (newrdn) goto continue_modrdn;
+ /* else failed to compute newrdn */
+ }
+ break;
+ case DSGW_CHANGETYPE_MODRDN:
+ newrdn = dsgw_get_cgi_var( "newrdn", DSGW_CGIVAR_REQUIRED );
+ continue_modrdn:
+ dsgw_remove_leading_and_trailing_spaces( &newrdn );
+ rc = entry_modrdn( ld, dn, newrdn, dsgw_get_boolean_var( "deleteoldrdn",
+ DSGW_CGIVAR_OPTIONAL, 0 ));
+
+ if ( rc == LDAP_SUCCESS ) {
+
+ /* construct the new DN so we can insert correct "edit" link */
+ if (( oldrdns = ldap_explode_dn( dn, 0 )) == NULL ) {
+ dsgw_error( DSGW_ERR_NOMEMORY, NULL, DSGW_ERROPT_EXIT,
+ 0, NULL );
+ }
+
+ dnlen = strlen( newrdn ) + 1; /* room for "," */
+ for ( i = 1; oldrdns[ i ] != NULL; ++i ) {
+ dnlen += ( 1 + strlen( oldrdns[ i ] ));
+ }
+ dn = dsgw_ch_malloc( dnlen + 1 );
+ *dn = '\0';
+ strcat( dn, newrdn );
+ for ( i = 1; oldrdns[ i ] != NULL; ++i ) {
+ strcat( dn, "," );
+ strcat( dn, oldrdns[ i ] );
+ }
+ ldap_value_free( oldrdns );
+ free( encodeddn );
+ encodeddn = dsgw_strdup_escaped( dn );
+
+ success_msg = XP_GetClientStr(DBT_renamedBSBToBSB_);
+ if (( rdns = ldap_explode_rdn( newrdn, 1 )) == NULL
+ || rdns[ 0 ] == NULL ) {
+ new_name = newrdn;
+ } else {
+ new_name = dsgw_ch_strdup (rdns[ 0 ]);
+ ldap_value_free( rdns );
+ }
+ }
+ break;
+ default:
+ break;
+ }
+
+ switch( changetype ) {
+ case DSGW_CHANGETYPE_MODIFY:
+ if (rc != LDAP_SUCCESS) break;
+ case DSGW_CHANGETYPE_ADD:
+ rc = entry_modify_or_add( ld, dn, changetype == DSGW_CHANGETYPE_ADD,
+ &passwd_changed );
+ if ( changetype == DSGW_CHANGETYPE_MODIFY ) {
+ success_msg = XP_GetClientStr(DBT_changesToBSBHaveBeenSaved_);
+ } else {
+ success_msg = XP_GetClientStr(DBT_BSBHasBeenAdded_);
+ }
+ break;
+ case DSGW_CHANGETYPE_DELETE:
+ rc = entry_delete( ld, dn );
+ success_msg = XP_GetClientStr(DBT_BSBHasBeenDeleted_);
+ break;
+ case DSGW_CHANGETYPE_MODRDN:
+ break;
+ default:
+ rc = LDAP_PARAM_ERROR;
+ }
+
+ /*
+ * If we are not running under the admin. server AND the operation
+ * succeeded and the user is bound as the entry they just changed,
+ * AND one of these conditions is true:
+ * 1. we changed the password
+ * 2. we did a modrdn
+ * 3. we deleted the entry
+ * then the auth. credentials should be discarded. If we do discard, we
+ * print an informative message for the user.
+ */
+ if ( !gc->gc_admserv && rc == LDAP_SUCCESS &&
+ ( changetype == DSGW_CHANGETYPE_DELETE || dn != old_dn ||
+ ( changetype == DSGW_CHANGETYPE_MODIFY && passwd_changed )) &&
+ dsgw_bound_as_dn( old_dn, 0 )) {
+ char *authck;
+
+ /* first, remove the cookie from the cookie database (ignore errors) */
+ if (( authck = dsgw_get_auth_cookie()) != NULL ) {
+ (void)dsgw_delcookie( authck );
+ }
+
+ /* output JavaScript to clear the cookie in the user's browser */
+ dsgw_emits( "<SCRIPT LANGUAGE=\"JavaScript\">\n" );
+ dsgw_emits( "<!-- Hide from non-JavaScript browsers\n" );
+ dsgw_emitf( "document.cookie = '%s=%s; path=/'\n",
+ DSGW_AUTHCKNAME, DSGW_UNAUTHSTR );
+ dsgw_emits( "// End Hiding -->\n</SCRIPT>\n" );
+ dsgw_emitf( XP_GetClientStr(DBT_PBNoteBBecauseYouSTheEntryYouWer_),
+ ( changetype == DSGW_CHANGETYPE_DELETE ) ? XP_GetClientStr(DBT_deleted_) :
+ ( dn != old_dn ) ? XP_GetClientStr(DBT_renamed_) :
+ XP_GetClientStr(DBT_changedThePasswordOf_) );
+ }
+
+ if ( rc == LDAP_SUCCESS ) {
+ /*
+ * check for "completion_javascript" form var and
+ * execute it if present.
+ */
+ jscomp = dsgw_get_cgi_var( "completion_javascript",
+ DSGW_CGIVAR_OPTIONAL );
+ if ( jscomp != NULL ) {
+ char *entry_name_js;
+ char *new_name_js;
+
+ entry_name_js = dsgw_escape_quotes( entry_name );
+ new_name_js = dsgw_escape_quotes( new_name );
+ dsgw_emits( "<SCRIPT LANGUAGE=\"JavaScript\">\n" );
+ dsgw_emits( "dsmodify_info = '" );
+ dsgw_emitf( success_msg, entry_name_js, new_name_js );
+ dsgw_emits( "';\n" );
+ dsgw_emitf( "dsmodify_dn = '%s';\n",
+ ( changetype == DSGW_CHANGETYPE_DELETE ) ? "":
+ encodeddn );
+ dsgw_emitf( "eval('%s');\n", jscomp );
+ dsgw_emits( "</SCRIPT>\n" );
+ }
+ } else {
+ jscomp = NULL;
+ }
+
+ if (( jscomp == NULL || changetype == DSGW_CHANGETYPE_DELETE )
+ && !gc->gc_admserv ) {
+ dsgw_form_begin( NULL, NULL );
+ dsgw_emits( "\n<CENTER><TABLE border=2 width=\"100%\"><TR>\n" );
+ /*
+ * Show framed button. If the modify succeeded, it is "Close".
+ * If the modify failed, it is "Go Back."
+ */
+ dsgw_emits( "<TD WIDTH=\"100%\" ALIGN=\"center\">\n" );
+ if ( rc == LDAP_SUCCESS ) {
+ dsgw_emitf( "<INPUT TYPE=\"button\" VALUE=\"%s\" "
+ "onClick=\"parent.close()\">\n",
+ XP_GetClientStr(DBT_closeWindow_) );
+ } else {
+ dsgw_emitf( "<INPUT TYPE=\"button\" VALUE=\"%s\" "
+ "onClick=\"history.back()\">\n",
+ XP_GetClientStr(DBT_goBack_) );
+ }
+ dsgw_emits( "\n</TABLE></CENTER></FORM>\n" );
+ }
+
+#if 0
+ if ( display_results_inline && genfp != NULL ) {
+ dsgw_emits( "<HR>\n" );
+ dsgw_genscreen_continue( &genfp, NULL, 0 );
+ } else if ( !quiet ) {
+ dsgw_html_end();
+ }
+#else
+ if ( !quiet ) {
+ dsgw_html_end();
+ }
+#endif
+ ldap_unbind( ld );
+ if (old_dn != dn) free ( old_dn );
+ free( dn );
+}
+
+static int
+entry_modify_or_add( LDAP *ld, char *dn, int add, int *pwdchangedp )
+{
+ int lderr, i, j, opoffset, modop, mls, unique, unchanged_count;
+ char *varname, *varvalue, *retval, *attr, *p, **vals, **unchanged_attrs;
+ char *userid = NULL, *oc_ntuser = NULL;
+ char userdomainid[512];
+
+ char *groupname = NULL;
+ char groupdomainid[512];
+
+ LDAPMod **pmods;
+
+ int msgid;
+ LDAPMessage *res = NULL;
+ char *errmsg = NULL;
+
+ memset( userdomainid, 0, sizeof( userdomainid ));
+ memset( groupdomainid, 0, sizeof( groupdomainid ));
+
+ pmods = NULL;
+ unchanged_attrs = NULL;
+ unchanged_count = 0;
+
+ /*
+ * Gather up password changes (if present in CGI POST)
+ */
+ if (( lderr = gather_passwd_changes( dn, &pmods, add, pwdchangedp ))
+ != LDAP_SUCCESS ) {
+ return( lderr );
+ }
+
+ if ( verbose ) {
+ dsgw_emitf( "<PRE>\n" );
+ }
+
+ /*
+ * Gather up other changes: each attribute value is POSTed in a variable
+ * named:
+ * add_[unique_]ATTR
+ * replace_[unique_][DN_]ATTR
+ * or delete_[unique_]ATTR
+ *
+ * where ATTR is the LDAP attribute name and "unique_" is optional (if
+ * present, we check to make sure the value is not in use before accepting
+ * a replace or add).
+ *
+ * Additionally, if a variable name changed_ATTR is POSTed and its value
+ * is not "true", it is assumed that no values have changed for that
+ * ATTRibute. If no "changed_ATTR" variable is POSTed, we assume that
+ * ATTR has in fact changed.
+ */
+ i = 0;
+ while (( varname = dsgw_next_cgi_var( &i, &varvalue )) != NULL ) {
+ if ( varvalue != NULL && *varvalue == '\0' ) {
+ varvalue = NULL;
+ } else {
+ dsgw_remove_leading_and_trailing_spaces( &varvalue );
+ }
+
+ opoffset = -1;
+ if ( starts_with( varname, "add_" )) {
+ modop = LDAP_MOD_ADD;
+ opoffset = 4;
+ } else if ( starts_with( varname, "replace_" )) {
+ modop = LDAP_MOD_REPLACE;
+ opoffset = 8;
+ attr = varname + opoffset;
+ if( strcasecmp( DSGW_ATTRTYPE_NTUSERDOMAINID, attr) == 0) {
+ if( varvalue) {
+ if( !userid )
+ userid = strdup( varvalue );
+ else
+ strcpy( userdomainid, varvalue );
+ }
+ }
+ if( strcasecmp( DSGW_ATTRTYPE_NTGROUPDOMAINID, attr) == 0) {
+ if( varvalue) {
+ if( !groupname )
+ groupname = strdup( varvalue );
+ else
+ strcpy( groupdomainid, varvalue );
+ }
+ }
+ } else if ( starts_with( varname, "delete_" )) {
+ modop = LDAP_MOD_DELETE;
+ opoffset = 7;
+ } else if ( !strcmp( varname, "changed_DN" )) {
+ /* ignore it */
+ } else if ( starts_with( varname, "changed_" )) {
+ attr = varname + 8;
+ if ( verbose && strcasecmp( varvalue, "true" ) == 0 ) {
+ dsgw_emitf( XP_GetClientStr(DBT_attributeSWasChangedBrN_), attr );
+ }
+ if ( varvalue != NULL && strcasecmp( varvalue, "true" ) != 0 ) {
+ unchanged_attrs = (char **)dsgw_ch_realloc( unchanged_attrs,
+ ( 2 + unchanged_count ) * sizeof( char * ));
+ unchanged_attrs[ unchanged_count++ ] = dsgw_ch_strdup( attr );
+ unchanged_attrs[ unchanged_count ] = NULL;
+
+ if ( pmods != NULL ) {
+ remove_modifyops( pmods, attr );
+ }
+ }
+ } else if ( starts_with( varname, "replace_" )) {
+ modop = LDAP_MOD_REPLACE;
+ opoffset = 8;
+ attr = varname + opoffset;
+ if( strcasecmp( DSGW_ATTRTYPE_USERID, attr) == 0)
+ if( varvalue)
+ userid = strdup( varvalue );
+ if( strcasecmp( DSGW_ATTRTYPE_NTUSERDOMAINID, attr) == 0)
+ if( varvalue)
+ strcpy( userdomainid, varvalue );
+ if( strcasecmp( DSGW_ATTRTYPE_NTGROUPNAME, attr) == 0)
+ if( varvalue)
+ groupname = strdup( varvalue );
+ if( strcasecmp( DSGW_ATTRTYPE_NTGROUPDOMAINID, attr) == 0)
+ if( varvalue)
+ strcpy( groupdomainid, varvalue );
+ }
+
+ if ( opoffset >= 0 ) {
+ attr = varname + opoffset;
+ mls = 0;
+ unique = 0;
+ while (( p = strchr( attr, '_' )) != NULL ) {
+ if ( starts_with( attr, "mls_" )) {
+ mls = 1;
+ } else if ( starts_with( attr, "unique_" )) {
+ unique = 1;
+ } /* ignore any other prefixes */
+ attr = p + 1;
+ }
+
+ for ( j = 0; j < unchanged_count; ++j ) {
+ if ( strcasecmp( unchanged_attrs[ j ], attr ) == 0 ) {
+ break;
+ }
+ }
+
+ if ( j >= unchanged_count ) {
+ if ( varvalue == NULL || *varvalue == '\0' ) {
+ vals = NULL;
+ varvalue = NULL;
+ } else {
+ varvalue = dsgw_ch_strdup( varvalue );
+ if ( mls ) {
+ vals = post2multilinevals( varvalue );
+ } else {
+ vals = post2vals( varvalue );
+ }
+ }
+ if ( vals == NULL ) {
+ if ( modop != LDAP_MOD_ADD ) {
+ addmodifyop( &pmods, modop, attr, NULL, 0 );
+ }
+ } else {
+ for ( j = 0; vals[ j ] != NULL; ++j ) {
+ if ( unique && modop != LDAP_MOD_DELETE && ( lderr =
+ value_is_unique( ld, dn, attr, vals[ j ] )) !=
+ LDAP_SUCCESS ) {
+ return( lderr );
+ }
+ if( strcasecmp( DSGW_OC_NTUSER, varvalue) == 0 &&
+ modop == LDAP_MOD_ADD ) {
+ oc_ntuser = strdup( vals[ j ] );
+ }
+
+ if( strcasecmp( DSGW_ATTRTYPE_NTUSERDOMAINID, attr) == 0) {
+ if( modop == LDAP_MOD_ADD ) {
+ if( userid == NULL ) {
+ userid = strdup( vals[ j ] );
+ break;
+ } else {
+ memset( userdomainid, 0, sizeof( userdomainid ));
+ PR_snprintf( userdomainid, 512, "%s%c%s",
+ vals[ j ], DSGW_NTDOMAINID_SEP, userid );
+ if( dsgw_checkdomain_uniqueness( ld, attr,
+ userdomainid, strlen( userdomainid ) ) !=
+ LDAPDomainIdStatus_Unique) {
+ dsgw_error( DSGW_ERR_DOMAINID_NOTUNIQUE,
+ NULL, 0, 0, NULL );
+ return(LDAP_PARAM_ERROR);
+ } else {
+ /* don't free here because this is freed elsewhere */
+ /*
+ free( vals[ j ] );
+ */
+ vals[ j ] = strdup( userdomainid );
+ }
+ }
+ } else {
+ if(( retval = dsgw_processdomainid( ld, dn, attr,
+ vals[ j ], strlen( vals[ j ] ))) != 0) {
+ vals[ j ] = retval;
+ }
+ }
+ }
+
+ if( strcasecmp( DSGW_ATTRTYPE_NTGROUPDOMAINID, attr) == 0) {
+ if( modop == LDAP_MOD_ADD ) {
+ if( groupname == NULL ) {
+ groupname = strdup( vals[ j ] );
+ break;
+ } else {
+ memset( groupdomainid, 0, sizeof( groupdomainid ));
+ PR_snprintf( groupdomainid, 512, "%s%c%s",
+ vals[ j ], DSGW_NTDOMAINID_SEP, groupname );
+ if( dsgw_checkdomain_uniqueness( ld, attr,
+ groupdomainid, strlen( groupdomainid ) ) !=
+ LDAPDomainIdStatus_Unique) {
+ dsgw_error( DSGW_ERR_DOMAINID_NOTUNIQUE,
+ NULL, 0, 0, NULL );
+ return(LDAP_PARAM_ERROR);
+ } else {
+ /* don't free here because this is freed elsewhere */
+ /*
+ free( vals[ j ] );
+ */
+ vals[ j ] = strdup( groupdomainid );
+ }
+ }
+ } else {
+ if(( retval = dsgw_processdomainid( ld, dn, attr,
+ vals[ j ], strlen( vals[ j ] ))) != 0) {
+ vals[ j ] = retval;
+ }
+ }
+ }
+ addmodifyop( &pmods, modop, attr, vals[ j ],
+ strlen( vals[ j ] ));
+ }
+ free( vals );
+ }
+ if ( varvalue != NULL ) {
+ free( varvalue );
+ }
+ }
+ }
+
+ free( varname );
+ }
+
+ if( oc_ntuser != NULL &&
+ ((strlen( userdomainid ) == 0) || userid == NULL )) {
+ dsgw_error( DSGW_ERR_USERID_DOMAINID_REQUIRED, NULL, 0, 0, NULL );
+ return(LDAP_PARAM_ERROR);
+ }
+
+ if( strlen( userdomainid ) > 0 && userid == NULL ) {
+ dsgw_error( DSGW_ERR_USERID_REQUIRED, NULL, 0, 0, NULL );
+ return(LDAP_PARAM_ERROR);
+ }
+
+ if( strlen( userdomainid ) > 0 && userid &&
+ strlen( userid ) > MAX_NTUSERID_LEN) {
+ dsgw_error( DSGW_ERR_USERID_MAXLEN_EXCEEDED, NULL, 0, 0, NULL );
+ return(LDAP_PARAM_ERROR);
+ }
+
+ if ( verbose && pmods != NULL ) {
+ int j, notascii;
+ unsigned long k;
+ struct berval *bvp;
+
+ for ( i = 0; pmods[ i ] != NULL; ++i ) {
+ modop = pmods[ i ]->mod_op & ~LDAP_MOD_BVALUES;
+ dsgw_emitf( "%s %s:\n", modop == LDAP_MOD_REPLACE ?
+ "replace" : modop == LDAP_MOD_ADD ?
+ "add" : "delete", pmods[ i ]->mod_type );
+ if ( pmods[ i ]->mod_bvalues != NULL ) {
+ for ( j = 0; pmods[ i ]->mod_bvalues[ j ] != NULL; ++j ) {
+ bvp = pmods[ i ]->mod_bvalues[ j ];
+ notascii = 0;
+ for ( k = 0; k < bvp->bv_len; ++k ) {
+ if ( !isascii( bvp->bv_val[ k ] )) {
+ notascii = 1;
+ break;
+ }
+ }
+ if ( notascii ) {
+ dsgw_emitf( XP_GetClientStr(DBT_TnotAsciiLdBytesN_), bvp->bv_len );
+ } else {
+ dsgw_emitf( "\t\"%s\"\n", bvp->bv_val );
+ }
+ }
+ }
+ }
+ }
+
+ if ( verbose ) {
+ dsgw_emitf( "</PRE>\n" );
+ fflush( stdout );
+ }
+
+ dsgw_emitf( "<FONT SIZE=+1>\n" );
+
+ /*
+ * apply the changes using LDAP
+ */
+ if ( pmods == NULL ) {
+ if ( add ) {
+ dsgw_emits( XP_GetClientStr(DBT_noValuesWereEnteredPleaseTryAgai_) );
+ lderr = LDAP_PARAM_ERROR;
+ } else { /* no changes -- just report success */
+ lderr = LDAP_SUCCESS;
+ if ( !quiet ) {
+ dsgw_emitf( XP_GetClientStr(DBT_PSuccessfullyEditedEntryYourChan_) );
+ }
+ }
+ } else {
+ if ( !quiet ) {
+ dsgw_emitf( XP_GetClientStr(DBT_PSendingSToTheDirectoryServerN_),
+ add ? XP_GetClientStr(DBT_information_) : XP_GetClientStr(DBT_changes_));
+ fflush( stdout );
+ }
+
+ if ( add ) {
+ lderr = ldap_add_ext( ld, dn, pmods, NULL, NULL, &msgid );
+ } else {
+ lderr = ldap_modify_ext( ld, dn, pmods, NULL, NULL, &msgid );
+ }
+
+ if( lderr == LDAP_SUCCESS ) {
+ if(( lderr = ldap_result( ld, msgid, 1, (struct timeval *)NULL, &res )) == -1 ) {
+ lderr = ldap_get_lderrno( ld, NULL, &errmsg );
+ modify_error( lderr, errmsg );
+ } else {
+ lderr = ldap_result2error( ld, res, 1 );
+ if ( lderr == LDAP_SUCCESS ) {
+ if ( !quiet ) {
+ if ( add ) {
+ dsgw_emitf( XP_GetClientStr(DBT_PSuccessfullyAddedEntryN_) );
+ } else {
+ dsgw_emitf( XP_GetClientStr(DBT_PSuccessfullyEditedEntryYourChan_) );
+ }
+ }
+ } else {
+ (void)ldap_get_lderrno( ld, NULL, &errmsg );
+ modify_error( lderr, errmsg );
+
+ /* Do some checks for password policy infractions. */
+ if( lderr == LDAP_CONSTRAINT_VIOLATION ) {
+ if( errmsg && strstr( errmsg, "invalid password syntax" ) )
+ dsgw_emitf( "<BR>(%s)", XP_GetClientStr(DBT_InvalidPasswordSyntax_) );
+ else if( errmsg && strstr( errmsg, "password in history" ) )
+ dsgw_emitf( "<BR>(%s)", XP_GetClientStr(DBT_PasswordInHistory_) );
+ }
+ }
+ }
+ } else {
+ (void)ldap_get_lderrno( ld, NULL, &errmsg );
+ modify_error( lderr, errmsg );
+ }
+
+ ldap_mods_free( pmods, 1 );
+ }
+
+ dsgw_emitf( "</FONT>\n" );
+ return( lderr );
+}
+
+
+static int
+entry_delete( LDAP *ld, char *dn )
+{
+ int lderr;
+ char *errmsg = NULL;
+
+ dsgw_emitf( "<FONT SIZE=+1>\n" );
+ if (( lderr = ldap_delete_s( ld, dn )) == LDAP_SUCCESS ) {
+ if ( !quiet ) {
+ dsgw_emitf( XP_GetClientStr(DBT_PSuccessfullyDeletedEntryN_) );
+ }
+ } else {
+ (void)ldap_get_lderrno( ld, NULL, &errmsg );
+ modify_error( lderr, errmsg );
+ }
+
+ dsgw_emitf( "</FONT>\n" );
+ return( lderr );
+}
+
+
+static int
+entry_modrdn( LDAP *ld, char *dn, char *newrdn, int deleteoldrdn )
+{
+ int lderr;
+ char *errmsg = NULL;
+
+ if ( verbose ) {
+ dsgw_emitf( XP_GetClientStr(DBT_PreTheNewNameForTheEntryIsSNPreH_),
+ newrdn );
+ }
+
+ dsgw_emitf( "<FONT SIZE=+1>\n" );
+ if (( lderr = ldap_modrdn2_s( ld, dn, newrdn, deleteoldrdn ))
+ == LDAP_SUCCESS ) {
+ if ( !quiet ) {
+ dsgw_emitf( XP_GetClientStr(DBT_PSuccessfullyRenamedEntryN_) );
+ }
+ } else {
+ (void)ldap_get_lderrno( ld, NULL, &errmsg );
+ modify_error( lderr, errmsg );
+ }
+
+ dsgw_emitf( "</FONT>\n" );
+ return( lderr );
+}
+
+
+static int
+gather_passwd_changes( char *dn, LDAPMod ***pmodsp, int adding_entry,
+ int *pwdchangedp )
+{
+ int lderr, lockpasswd;
+ char *bindpasswd, *newpasswd, *newpasswdconfirm, *errstring;
+
+ lockpasswd = dsgw_get_boolean_var( "lockpasswd", 0, 0 );
+ if ( lockpasswd ) {
+ /*
+ * the userPassword attribute to a special value that no password
+ * submitted by a user can ever match.
+ */
+ time_t curtime;
+ struct tm *gmtp;
+ char *tstr;
+
+ /* get string representation of current GMT time */
+ curtime = time( NULL );
+ gmtp = gmtime( &curtime );
+ tstr = asctime( gmtp );
+
+ /* remove trailing newline */
+ tstr[ strlen( tstr ) - 1 ] = '\0';
+
+ /* allocate room for "{crypt}LOCKED [" + tstr + " GMT]" + zero byte */
+ newpasswd = dsgw_ch_malloc( 15 + strlen( tstr ) + 5 + 1 );
+ sprintf( newpasswd, XP_GetClientStr(DBT_CryptLockedSGmt_), tstr );
+
+ } else if (( newpasswd = dsgw_get_cgi_var( "newpasswd",
+ DSGW_CGIVAR_OPTIONAL )) == NULL ) {
+ return( LDAP_SUCCESS ); /* not setting password -- nothing to do */
+ }
+
+ lderr = LDAP_PARAM_ERROR; /* pessimistic */
+
+ if ( !adding_entry && ( bindpasswd = dsgw_get_cgi_var( "passwd",
+ DSGW_CGIVAR_OPTIONAL )) == NULL && require_oldpasswd( dn )) {
+ errstring = XP_GetClientStr(DBT_youMustProvideTheOldPassword_);
+ } else if ( !lockpasswd &&
+ (( newpasswdconfirm = dsgw_get_cgi_var( "newpasswdconfirm",
+ DSGW_CGIVAR_OPTIONAL )) == NULL || strcmp( newpasswd,
+ newpasswdconfirm ) != 0 )) {
+ errstring = XP_GetClientStr(DBT_theNewAndConfirmingPasswordsDoNo_);
+ } else {
+ addmodifyop( pmodsp, adding_entry ? LDAP_MOD_ADD : LDAP_MOD_REPLACE,
+ DSGW_ATTRTYPE_USERPASSWORD, newpasswd, strlen( newpasswd ));
+ *pwdchangedp = 1;
+ lderr = LDAP_SUCCESS;
+ }
+
+ if ( lderr != LDAP_SUCCESS ) {
+ dsgw_emitf( "<FONT SIZE=+1>\n%s\n</FONT>\n", errstring );
+ }
+
+ return( lderr );
+}
+
+
+static void
+modify_error( int lderr, char *lderrtxt )
+{
+ dsgw_error( DSGW_ERR_LDAPGENERAL, dsgw_ldaperr2string( lderr ),
+ ( display_results_inline ? DSGW_ERROPT_INLINE : 0 ),
+ lderr, lderrtxt );
+}
+
+
+/*
+ * this "addmodifyop" routine is lifted with minor changes from
+ * ldap/tools/ldapmodify.c
+ */
+static void
+addmodifyop( LDAPMod ***pmodsp, int modop, char *attr, char *value, int vlen )
+{
+ LDAPMod **pmods;
+ int i, j;
+ struct berval *bvp;
+
+ if ( attr == NULL || *attr == '\0' ) {
+ return;
+ }
+
+ pmods = *pmodsp;
+ modop |= LDAP_MOD_BVALUES;
+
+ i = 0;
+ if ( pmods != NULL ) {
+ for ( ; pmods[ i ] != NULL && pmods[ i ]->mod_type != NULL; ++i ) {
+ if ( strcasecmp( pmods[ i ]->mod_type, attr ) == 0 &&
+ pmods[ i ]->mod_op == modop ) {
+ break;
+ }
+ }
+ }
+
+ if ( pmods == NULL || pmods[ i ] == NULL ) {
+ pmods = (LDAPMod **)dsgw_ch_realloc( pmods, (i + 2) *
+ sizeof( LDAPMod * ));
+ *pmodsp = pmods;
+ pmods[ i + 1 ] = NULL;
+ pmods[ i ] = (LDAPMod *)dsgw_ch_malloc( sizeof( LDAPMod ));
+ memset( pmods[ i ], 0, sizeof( LDAPMod ));
+ pmods[ i ]->mod_op = modop;
+ pmods[ i ]->mod_type = dsgw_ch_strdup( attr );
+ }
+
+ if ( value != NULL ) {
+ j = 0;
+ if ( pmods[ i ]->mod_bvalues != NULL ) {
+ for ( ; pmods[ i ]->mod_bvalues[ j ] != NULL; ++j ) {
+ ;
+ }
+ }
+ pmods[ i ]->mod_bvalues =
+ (struct berval **)dsgw_ch_realloc( pmods[ i ]->mod_bvalues,
+ (j + 2) * sizeof( struct berval * ));
+ pmods[ i ]->mod_bvalues[ j + 1 ] = NULL;
+ bvp = (struct berval *)dsgw_ch_malloc( sizeof( struct berval ));
+ pmods[ i ]->mod_bvalues[ j ] = bvp;
+
+ bvp->bv_len = vlen;
+ bvp->bv_val = (char *)dsgw_ch_malloc( vlen + 1 );
+ memcpy( bvp->bv_val, value, vlen );
+ bvp->bv_val[ vlen ] = '\0';
+ }
+}
+
+
+/* remove all modify ops that refer to "attr" */
+static void
+remove_modifyops( LDAPMod **pmods, char *attr )
+{
+ int i, found_attr;
+
+ if ( pmods == NULL ) {
+ return;
+ }
+
+ do {
+ found_attr = 0;
+ for ( i = 0 ; pmods[ i ] != NULL; ++i ) {
+ if ( strcasecmp( pmods[ i ]->mod_type, attr ) == 0 ) {
+ found_attr = 1;
+ break;
+ }
+ }
+
+ if ( found_attr ) {
+ if ( pmods[ i ]->mod_bvalues != NULL ) {
+ ber_bvecfree( pmods[ i ]->mod_bvalues );
+ }
+ free( pmods[ i ] );
+
+ for ( ; pmods[ i + 1 ] != NULL; ++i ) {
+ pmods[ i ] = pmods[ i + 1 ];
+ }
+ pmods[ i ] = NULL;
+ }
+
+ } while ( found_attr );
+}
+
+
+static int
+starts_with( char *s, char *startswith )
+{
+ int len;
+
+ len = strlen( startswith );
+ return ( strlen( s ) > len && strncmp( s, startswith, len ) == 0 );
+}
+
+
+/*
+ * there is one value in "postedval" but newlines must be changed to "$",
+ * '$' characters must be changed to \24, and '\' chars. changed to \5C
+ */
+static char **
+post2multilinevals( char *postedval )
+{
+ int specials;
+ char *p, *r, **vals;
+
+ vals = dsgw_ch_malloc( 2 * sizeof( char * ));
+ vals[ 1 ] = NULL;
+
+ specials = 0;
+ for ( p = postedval; *p != '\0'; ++p ) {
+ if ( *p == '$' || *p == '\\' || *p == '\n' || *p == '\r') {
+ ++specials;
+ }
+ }
+
+ /* allocate enough room to handle any necessary escaping */
+ r = vals[ 0 ] = dsgw_ch_malloc( 2 * specials + strlen( postedval ) + 1 );
+
+ /* copy and escape as appropriate */
+ for ( p = postedval; *p != '\0'; ++p ) {
+ if ( *p == '\n' || *p == '\r' ) { /* change to "$" */
+ *r++ = '$';
+ if ( *(p+1) != '\0' && *(p+1) != *p &&
+ ( *(p+1) == '\n' || *(p+1) == '\r' )) {
+ ++p; /* skip next char. if sequence is "\r\n" or "\n\r" */
+ }
+ } else if ( *p == '$' ) { /* change to "\24" */
+ *r++ = '\\';
+ *r++ = '2';
+ *r++ = '4';
+ } else {
+ *r++ = *p;
+ if ( *p == '\\' ) { /* change to "\5C" */
+ *r++ = '5';
+ *r++ = 'C';
+ }
+ }
+ }
+
+ *r = '\0';
+
+ return( vals );
+}
+
+
+/* values are delimited by newlines, preceded by optional carriage returns */
+static char **
+post2vals( char *postedval )
+{
+ int count, len;
+ char *p, *q, **vals;
+
+ vals = NULL;
+
+ count = 0;
+ for ( p = postedval; p != NULL && *p != '\0'; p = q ) {
+ /* skip any leading CRs or NLs */
+ while (( *p == '\n' || *p == '\r' ) && *p != '\0' ) {
+ ++p;
+ }
+ if ( *p == '\0' ) {
+ break;
+ }
+
+ /* find end of this line */
+ if (( q = strchr( p, '\n' )) != NULL ) {
+ *q++ = '\0';
+ }
+
+ /* remove CR, if any */
+ len = strlen( p ) - 1;
+ if ( p[ len ] == '\r' ) {
+ p[ len ] = '\0';
+ }
+
+ /* add to values array */
+ vals = dsgw_ch_realloc( vals, ( count + 2 ) * sizeof( char * ));
+ vals[ count++ ] = p;
+ }
+ vals[ count ] = NULL;
+
+ return( vals );
+}
+
+
+/*
+ * Determine if we should insist that the old password for the entry
+ * we are modifying (modifydn) be POSTed. The rule we use is simply
+ * this: if the binddn and modifydn are the same, require the old
+ * password. This allows directory admins. to reset passwords while
+ * preventing normal users from having their password changed if they
+ * just happen to walk away from their computer for a while when they
+ * are authenticated to the gateway.
+ */
+static int
+require_oldpasswd( char *modifydn )
+{
+ return( dsgw_bound_as_dn( modifydn, 1 ));
+}
+
+
+/*
+ * search directory to find out if an attribute value is unique. If the
+ * value doesn't already exist or if it exists only in the same entry we
+ * are changing, we return LDAP_SUCCESS. If it does exist, we return
+ * LDAP_TYPE_OR_VALUE_EXISTS. If some other error occurs, we return another
+ * LDAP error code.
+ */
+static int
+value_is_unique( LDAP *ld, char *dn, char *attr, char *value )
+{
+ int rc, count;
+ char *attrs[2], *buf, *tmpdn, *attrdesc, *errmsg = NULL;
+ LDAPMessage *res, *e;
+
+ /* allocate room for "(attr=value)" filter */
+ buf = dsgw_ch_malloc( strlen( attr ) + strlen( value ) + 4 );
+ sprintf( buf, "(%s=%s)", attr, value );
+
+ attrs[ 0 ] = attr;
+ attrs[ 1 ] = NULL;
+
+ rc = ldap_search_s( ld, gc->gc_ldapsearchbase, LDAP_SCOPE_SUBTREE,
+ buf, attrs, 1, &res );
+ free( buf );
+
+ if ( rc != LDAP_SUCCESS || res == NULL ) {
+ (void)ldap_get_lderrno( ld, NULL, &errmsg );
+ modify_error( rc, errmsg );
+ return( rc );
+ }
+
+ if (( count = ldap_count_entries( ld, res )) == 0 ) {
+ rc = LDAP_SUCCESS;
+ } else if ( count > 1 ) {
+ rc = LDAP_TYPE_OR_VALUE_EXISTS;
+ } else { /* found one entry: see if it is the entry we are modifying */
+ if (( e = ldap_first_entry( ld, res )) == NULL ||
+ ( tmpdn = ldap_get_dn( ld, e )) == NULL ) {
+ rc = ldap_get_lderrno( ld, NULL, NULL );
+ } else if ( dsgw_dn_cmp( dn, tmpdn ) != 0 ) {
+ rc = LDAP_SUCCESS; /* same entry */
+ } else {
+ rc = LDAP_TYPE_OR_VALUE_EXISTS;
+ }
+ }
+
+ ldap_msgfree( res );
+
+ if ( rc == LDAP_TYPE_OR_VALUE_EXISTS ) {
+ buf = dsgw_ch_malloc( strlen( attr ) + 6 ); /* room for "desc_" */
+ sprintf( buf, "desc_%s", attr );
+ if (( attrdesc = dsgw_get_cgi_var( buf, DSGW_CGIVAR_OPTIONAL ))
+ == NULL ) {
+ attrdesc = attr;
+ }
+ free( buf );
+
+ dsgw_emits( "\n<FONT SIZE=+1>\n" );
+ dsgw_emitf( XP_GetClientStr(DBT_BrTheSBSBIsAlreadyInUsePleaseCho_), attrdesc, value );
+ dsgw_emits( "\n</FONT>\n" );
+ }
+
+ return( rc );
+}
+
+
+/*
+ * Check that the domain:userid is unique in the directory.
+ */
+static LDAPDomainIdStatus
+dsgw_checkdomain_uniqueness( LDAP *ld, char *attr, char *val, int len)
+{
+ int rc, count;
+ LDAPMessage *msgp = NULL;
+ char filter[256];
+
+ if( val == NULL )
+ return LDAPDomainIdStatus_NullId;
+
+ if( strcasecmp( attr, DSGW_ATTRTYPE_NTUSERDOMAINID ) == 0 ) {
+ PR_snprintf( filter, 256, "%s=%s", DSGW_ATTRTYPE_NTUSERDOMAINID, val );
+ } else if ( strcasecmp( attr, DSGW_ATTRTYPE_NTGROUPDOMAINID ) == 0 ) {
+ PR_snprintf( filter, 256, "%s=%s", DSGW_ATTRTYPE_NTGROUPDOMAINID, val );
+ } else {
+ return LDAPDomainIdStatus_NullAttr;
+ }
+
+ if (( rc = ldap_search_s( ld, gc->gc_ldapsearchbase, LDAP_SCOPE_SUBTREE,
+ filter, NULL, 0, &msgp )) == LDAP_SUCCESS) {
+ count = (msgp == NULL) ? 0 : ldap_count_entries( ld, msgp );
+ if ( count > 0 ) {
+ return LDAPDomainIdStatus_Nonunique;
+ } else {
+ return LDAPDomainIdStatus_Unique;
+ }
+ } else {
+ return LDAPDomainIdStatus_Nonunique;
+ }
+}
+
+
+/*
+ * Add the current value of uid in the entry to the ntdomain id before
+ * further processing of the domain id.
+ */
+static char *
+dsgw_processdomainid( LDAP *ld, char *dn, char *attr, char *val, int len)
+{
+ int rc, count;
+ LDAPMessage *msgp = NULL;
+ LDAPMessage *entry;
+ char **attrlist, *attrs[ 2 ];
+ char *value, *newval;
+ char *pch, **vals;
+
+ if( strcasecmp( attr, DSGW_ATTRTYPE_NTUSERDOMAINID ) != 0 &&
+ strcasecmp( attr, DSGW_ATTRTYPE_NTGROUPDOMAINID ) != 0 )
+ return( NULL );
+
+ attrs[ 0 ] = NULL;
+ attrs[ 1 ] = NULL;
+ attrlist = attrs;
+
+ if(( rc = ldap_search_s( ld, dn, LDAP_SCOPE_BASE, "(objectclass=*)", attrlist,
+ 0, &msgp )) != LDAP_SUCCESS && rc != LDAP_NO_SUCH_OBJECT)
+ {
+ return( NULL );
+ }
+
+ count = (msgp == NULL) ? 0 : ldap_count_entries( ld, msgp );
+
+ if( count > 0 )
+ {
+ entry = ldap_first_entry( ld, msgp );
+ if( entry )
+ {
+
+ if(( vals = ldap_get_values( ld, entry,
+ strcasecmp( attr, DSGW_ATTRTYPE_NTUSERDOMAINID )?
+ DSGW_ATTRTYPE_NTGROUPDOMAINID :
+ DSGW_ATTRTYPE_NTUSERDOMAINID )) != NULL)
+ {
+ if( vals[0] != NULL )
+ {
+ value = dsgw_ch_strdup( vals[0] );
+ newval = dsgw_ch_malloc( len + strlen( value ) +1 );
+ strcpy( newval, val );
+ pch = strchr( value, DSGW_NTDOMAINID_SEP );
+ if( pch )
+ {
+ strcat( newval, pch );
+ return( newval );
+ }
+ }
+ }
+ }
+ }
+ return NULL;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ldap/clients/dsgw/dosearch.c b/ldap/clients/dsgw/dosearch.c
new file mode 100644
index 00000000..01afe6c9
--- /dev/null
+++ b/ldap/clients/dsgw/dosearch.c
@@ -0,0 +1,352 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+/*
+ * dosearch.c -- CGI search handler -- HTTP gateway
+ *
+ * Copyright (c) 1996 Netscape Communications Corp.
+ * All rights reserved.
+ */
+
+#include "dsgw.h"
+
+static void get_request(char* hostport, char *dn, char *ldapquery);
+static void post_request();
+
+
+int main( argc, argv, env )
+ int argc;
+ char *argv[];
+#ifdef DSGW_DEBUG
+ char *env[];
+#endif
+{
+ int reqmethod;
+ char *qs = NULL;
+ char *dn = NULL;
+ char *hostport = NULL;
+ char *ldapquery = NULL;
+#ifndef __LP64__
+#ifdef HPUX
+ /* call the static constructors in libnls */
+ _main();
+#endif
+#endif
+ /*
+ * Parse out the GET args, if any. See the comments under
+ * get_request for an explanation of what's going on here
+ */
+ if (( qs = getenv( "QUERY_STRING" )) != NULL && *qs != '\0' ) {
+ /* parse the query string: */
+ auto char *p, *iter = NULL;
+ qs = dsgw_ch_strdup( qs );
+
+ for ( p = ldap_utf8strtok_r( qs, "&", &iter ); p != NULL;
+ p = ldap_utf8strtok_r( NULL, "&", &iter )) {
+
+ /*
+ * Get the conf file name. It'll be translated
+ * into /dsgw/context/CONTEXT.conf if
+ * CONTEXT is all alphanumeric (no slahes,
+ * or dots). CONTEXT is passed into the cgi.
+ * if context=CONTEXT is not there, or PATH_INFO
+ * was used, then use dsgw.conf
+ */
+ if ( !strncasecmp( p, "context=", 8 )) {
+ context = dsgw_ch_strdup( p + 8 );
+ dsgw_form_unescape( context );
+ continue;
+ }
+
+ if ( !strncasecmp( p, "hp=", 3 )) {
+ hostport = dsgw_ch_strdup( p + 3 );
+ dsgw_form_unescape( hostport );
+ continue;
+ }
+
+ if ( !strncasecmp( p, "ldq=", 4 )) {
+ ldapquery = dsgw_ch_strdup( p + 4 );
+ dsgw_form_unescape( ldapquery );
+ continue;
+ }
+
+ if ( !strncasecmp( p, "dn=", 3 )) {
+ dn = dsgw_ch_strdup( p + 3 );
+ dsgw_form_unescape( dn );
+ continue;
+ }
+
+ /*
+ * If it doesn't match any of the above, then
+ * tack it onto the end of ldapquery.
+ */
+ if (ldapquery != NULL) {
+ ldapquery = dsgw_ch_realloc(ldapquery, sizeof(char *) * (strlen(ldapquery) + strlen(p) + 2));
+ sprintf( ldapquery, "%s&%s", ldapquery, p );
+ }
+ }
+
+ free( qs ); qs = NULL;
+ }
+
+
+ reqmethod = dsgw_init( argc, argv, DSGW_METHOD_POST | DSGW_METHOD_GET );
+
+ /*
+ * Note: we don't call dsgw_send_header() here like we usually do because
+ * on a GET we may be asked to return a MIME type other than the default
+ * of text/html. For GET requests, we send the headers inside
+ * ldaputil.c:dsgw_ldapurl_search(). For POST requests, we send them
+ * below in post_request().
+ */
+
+#ifdef DSGW_DEBUG
+ dsgw_logstringarray( "env", env );
+#endif
+
+ if ( reqmethod == DSGW_METHOD_GET ) {
+ get_request(hostport, dn, ldapquery);
+ } else {
+ post_request();
+ }
+
+ exit( 0 );
+}
+
+
+static void
+get_request(char* hostport, char *dn, char *ldapquery)
+{
+ int urllen = 0;
+ int argslen = 0;
+ char *p = NULL;
+ char *ldapurl = NULL;
+
+ /*
+ * The following comment is kept here only as a reminder of the past.
+ * It is no longer relevant. See the next comment. - RJP
+ *
+ * On a GET request, we do an LDAP URL search (which will just display
+ * a single entry if all that is included is "host:port/DN").
+ * The HTTP URL should be:
+ * .../dosearch[/host[:port]][?[dn=baseDN&][LDAPquery]]
+ * This will be converted to the LDAP URL:
+ * ldap://[host[:port]]/[baseDN][?LDAPquery]
+ *
+ * For compatibility with prior versions, the HTTP URL may be:
+ * .../dosearch/host[:port]/[baseDN][?LDAPquery]
+ * In this case, the host:port is required, since PATH_INFO can't
+ * start with a '/' (web server sees that as a different program).
+ * This older HTTP URL format is deprecated, because PATH_INFO is
+ * not 8-bit clean on Japanese Windows NT.
+ */
+
+ /*
+ * The only form supported now is:
+ * .../dosearch?context=BLAH[&hp=host[:port]][&dn=baseDN][&ldq=LDAPquery]]
+ * -RJP
+ */
+ argslen = 0;
+
+ /* get the length of all the args (dn, hostport, ldapquery)*/
+ if (hostport != NULL) {
+ argslen += strlen(hostport);
+ }
+
+ if (dn != NULL) {
+ argslen += strlen(dn);
+ }
+
+ if (ldapquery != NULL) {
+ argslen += strlen(ldapquery);
+ }
+
+ /* If nothing was supplied, exit*/
+ if ( argslen == 0 ) {
+ dsgw_error( DSGW_ERR_MISSINGINPUT, NULL, DSGW_ERROPT_EXIT, 0, NULL );
+ }
+
+ /* Malloc the ldapurl*/
+ urllen = LDAP_URL_PREFIX_LEN + argslen + 3;
+ p = ldapurl = (char *)dsgw_ch_malloc( urllen );
+
+ /*Slap on ldap:// */
+ strcpy( p, LDAP_URL_PREFIX );
+ p += LDAP_URL_PREFIX_LEN;
+
+ /*Slap on host:port if there is one*/
+ if ( hostport != NULL ) {
+ strcpy( p, hostport );
+ }
+
+ strcat( ldapurl, "/" );
+
+ /*Slap on /dn, if there is a dn */
+ if ( dn != NULL ) {
+ strcat( ldapurl, dn );
+ }
+
+ /*Slap on ?ldapquery */
+ if ( ldapquery != NULL ) {
+ sprintf( ldapurl + strlen( ldapurl ), "?%s", ldapquery );
+ }
+
+#ifdef DSGW_DEBUG
+ dsgw_log( "get_request: processing LDAP URL \"%s\"\n", ldapurl );
+#endif
+ dsgw_ldapurl_search( NULL, ldapurl);
+}
+
+
+static void
+post_request()
+{
+ char *modestr, *searchstring, *type, *base;
+ LDAP *ld;
+ LDAPFiltDesc *lfdp;
+ struct ldap_searchobj *solistp, *sop;
+ int authmode, mode, options;
+
+ dsgw_send_header();
+
+ options = 0;
+ modestr = dsgw_get_cgi_var( "mode", DSGW_CGIVAR_REQUIRED );
+ searchstring = dsgw_get_cgi_var( "searchstring", DSGW_CGIVAR_OPTIONAL );
+ dsgw_remove_leading_and_trailing_spaces( &searchstring );
+#ifdef DSGW_DEBUG
+ if (searchstring) {
+ dsgw_log ("searchstring=\"%s\"\n", searchstring);
+ } else {
+ dsgw_log ("searchstring=NULL");
+ }
+#endif
+
+ authmode = 0;
+ if ( strcasecmp( modestr, DSGW_SRCHMODE_AUTH ) == 0 ) {
+ /*
+ * treat authenticate as a variant of the smart search mode
+ */
+ authmode = 1;
+ mode = DSGW_SRCHMODE_SMART_ID;
+ options |= DSGW_DISPLAY_OPT_AUTH;
+ } else if ( strcasecmp( modestr, DSGW_SRCHMODE_SMART ) == 0 ) {
+ mode = DSGW_SRCHMODE_SMART_ID;
+ } else if ( strcasecmp( modestr, DSGW_SRCHMODE_COMPLEX ) == 0 ) {
+ mode = DSGW_SRCHMODE_COMPLEX_ID;
+ } else if ( strcasecmp( modestr, DSGW_SRCHMODE_PATTERN ) == 0 ) {
+ mode = DSGW_SRCHMODE_PATTERN_ID;
+ } else {
+ dsgw_error( DSGW_ERR_SEARCHMODE, modestr, 0, 0, NULL );
+ }
+
+ if ( mode != DSGW_SRCHMODE_PATTERN_ID
+ && ( searchstring == NULL || *searchstring == '\0' )) {
+ dsgw_error( DSGW_ERR_NOSEARCHSTRING, NULL, DSGW_ERROPT_EXIT, 0, NULL );
+ }
+
+ if (( type = dsgw_get_cgi_var( "type", authmode ? DSGW_CGIVAR_OPTIONAL :
+ DSGW_CGIVAR_REQUIRED )) == NULL ) {
+ type = DSGW_SRCHTYPE_AUTH;
+ }
+
+ if (( base = dsgw_get_cgi_var( "base", DSGW_CGIVAR_OPTIONAL )) == NULL ) {
+ base = gc->gc_ldapsearchbase;
+ }
+
+ /* check for options (carried in boolean CGI variables) */
+ if ( dsgw_get_boolean_var( "listifone", DSGW_CGIVAR_OPTIONAL, 0 )) {
+ options |= DSGW_DISPLAY_OPT_LIST_IF_ONE;
+ }
+
+ if ( dsgw_get_boolean_var( "editable", DSGW_CGIVAR_OPTIONAL, 0 )) {
+ options |= DSGW_DISPLAY_OPT_EDITABLE;
+ }
+
+ if ( dsgw_get_boolean_var( "link2edit", DSGW_CGIVAR_OPTIONAL, 0 )) {
+ options |= DSGW_DISPLAY_OPT_LINK2EDIT;
+ }
+
+ if ( dsgw_get_boolean_var( "dnlist_js", DSGW_CGIVAR_OPTIONAL, 0 )) {
+ options |= DSGW_DISPLAY_OPT_DNLIST_JS;
+ }
+
+ (void) dsgw_init_ldap( &ld, &lfdp, ( authmode == 1 ) ? 1 : 0, 0);
+
+ if ( mode != DSGW_SRCHMODE_PATTERN_ID ) {
+ dsgw_init_searchprefs( &solistp );
+
+ if (( sop = dsgw_type2searchobj( solistp, type )) == NULL ) {
+ ldap_unbind( ld );
+ dsgw_error( DSGW_ERR_UNKSRCHTYPE, type, DSGW_ERROPT_EXIT, 0, NULL );
+ }
+ }
+
+ switch( mode ) {
+ case DSGW_SRCHMODE_SMART_ID:
+ /*
+ * smart search mode -- try to do the right kind of search for the
+ * client based on what the user entered in the search box
+ */
+ dsgw_smart_search( ld, sop, lfdp, base, searchstring, options );
+ break;
+
+ case DSGW_SRCHMODE_COMPLEX_ID: {
+ /*
+ * complex search mode -- construct a specific filter based on
+ * user's form selections
+ */
+ int scope;
+ char *attrlabel, *matchprompt;
+ struct ldap_searchattr *sap;
+ struct ldap_searchmatch *smp;
+
+ attrlabel = dsgw_get_cgi_var( "attr", DSGW_CGIVAR_REQUIRED );
+ if (( sap = dsgw_label2searchattr( sop, attrlabel )) == NULL ) {
+ ldap_unbind( ld );
+ dsgw_error( DSGW_ERR_UNKATTRLABEL, attrlabel, DSGW_ERROPT_EXIT,
+ 0, NULL );
+ }
+
+ matchprompt = dsgw_get_cgi_var( "match", DSGW_CGIVAR_REQUIRED );
+ if (( smp = dsgw_prompt2searchmatch( sop, matchprompt )) == NULL ) {
+ ldap_unbind( ld );
+ dsgw_error( DSGW_ERR_UNKMATCHPROMPT, matchprompt,
+ DSGW_ERROPT_EXIT, 0, NULL );
+ }
+
+ scope = dsgw_get_int_var( "scope", DSGW_CGIVAR_OPTIONAL,
+ sop->so_defaultscope );
+ dsgw_pattern_search( ld, sop->so_objtypeprompt,
+ sap->sa_attrlabel, smp->sm_matchprompt, searchstring,
+ smp->sm_filter, sop->so_filterprefix, NULL, sap->sa_attr,
+ base, scope, searchstring, options );
+ }
+ break;
+
+ case DSGW_SRCHMODE_PATTERN_ID: {
+ /*
+ * pattern-based search mode (no searchprefs or filter file used)
+ */
+ char *attr, *pattern, *prefix, *suffix, *searchdesc;
+ int scope;
+
+ attr = dsgw_get_cgi_var( "attr", DSGW_CGIVAR_REQUIRED );
+ pattern = dsgw_get_cgi_var( "filterpattern", DSGW_CGIVAR_REQUIRED );
+ prefix = dsgw_get_cgi_var( "filterprefix", DSGW_CGIVAR_OPTIONAL );
+ suffix = dsgw_get_cgi_var( "filtersuffix", DSGW_CGIVAR_OPTIONAL );
+ scope = dsgw_get_int_var( "scope", DSGW_CGIVAR_OPTIONAL,
+ LDAP_SCOPE_SUBTREE );
+ options |= DSGW_DISPLAY_OPT_CUSTOM_SEARCHDESC;
+ searchdesc = dsgw_get_cgi_var( "searchdesc", DSGW_CGIVAR_OPTIONAL );
+ dsgw_pattern_search( ld, type, searchdesc, NULL, NULL,
+ pattern, prefix, suffix, attr,
+ base, scope, searchstring, options );
+ }
+ break;
+ }
+
+ ldap_unbind( ld );
+}
diff --git a/ldap/clients/dsgw/dsconfig.c b/ldap/clients/dsgw/dsconfig.c
new file mode 100644
index 00000000..a2ba6858
--- /dev/null
+++ b/ldap/clients/dsgw/dsconfig.c
@@ -0,0 +1,255 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+/*
+ * dsconfig.c -- CGI configuration update handler -- directory gateway
+ *
+ * Copyright (c) 1996 Netscape Communications Corp.
+ * All rights reserved.
+ */
+
+#include "dsgw.h"
+
+static void handle_request( int reqmethod );
+static void handle_post();
+
+
+main( argc, argv, env )
+ int argc;
+ char *argv[];
+#ifdef DSGW_DEBUG
+ char *env[];
+#endif
+{
+ int reqmethod;
+
+ context= dsgw_ch_strdup("pb");
+ /*CHANGE THIS*/
+
+ reqmethod = dsgw_init( argc, argv, DSGW_METHOD_POST | DSGW_METHOD_GET );
+ dsgw_send_header();
+
+#ifdef DSGW_DEBUG
+ dsgw_logstringarray( "env", env );
+#endif
+
+ handle_request( reqmethod );
+
+ exit( 0 );
+}
+
+
+#define DSGWCONFIG_EMPTY_IF_NULL( s ) ( (s) == NULL ? "" : (s) )
+
+
+static void
+handle_request( int reqmethod )
+{
+ FILE *fp;
+ char **argv, *buf, line[ BIG_LINE ];
+ char *checked = " CHECKED ", *qs = NULL;
+ char *str_valuefmt = " VALUE=\"%s\" ";
+ char *int_valuefmt = " VALUE=\"%d\" ";
+ int did_post, argc, switch_mode = 0, is_localdb = 0;
+
+ buf = dsgw_ch_malloc( strlen( progname ) + 6 ); /* room for ".html\0" */
+ sprintf( buf, "%s.html", progname );
+ fp = dsgw_open_html_file( buf, DSGW_ERROPT_EXIT );
+ free( buf );
+ did_post = 0;
+ qs = getenv( "QUERY_STRING" );
+ if (( reqmethod == DSGW_METHOD_GET ) && ( qs != NULL ) &&
+ !strcasecmp( qs, "CHANGE" )) {
+ switch_mode = 1;
+ }
+
+ is_localdb = gc->gc_localdbconf != NULL;
+
+ while ( dsgw_next_html_line( fp, line )) {
+ if ( dsgw_parse_line( line, &argc, &argv, 0, dsgw_simple_cond_is_true,
+ NULL )) {
+ if ( dsgw_directive_is( line, DRCT_DS_INLINE_POST_RESULTS )) {
+ if ( !did_post && reqmethod == DSGW_METHOD_POST ) {
+ handle_post();
+ did_post = 1;
+ /* We re-read the config file, so re-calculate is_localdb */
+ is_localdb = ( gc->gc_localdbconf != NULL );
+ }
+
+ } else if ( dsgw_directive_is( line, DRCT_DS_CHECKED_IF_LOCAL )) {
+ if (( is_localdb && !switch_mode ) ||
+ ( !is_localdb && switch_mode )) {
+ dsgw_emits( checked );
+ }
+
+ } else if ( dsgw_directive_is( line, DRCT_DS_CONFIG_INFO )) {
+ dsgw_emits( "<FONT SIZE=\"+1\"><B>" );
+ if (( is_localdb && !switch_mode ) ||
+ ( !is_localdb && switch_mode )) {
+ dsgw_emits( "Local Directory Configuration" );
+ } else {
+ dsgw_emits( "LDAP Directory Server Configuration" );
+ }
+ dsgw_emits( "</FONT>\n" );
+
+ } else if ( dsgw_directive_is( line, DRCT_DS_CHECKED_IF_REMOTE )) {
+ if (( !is_localdb && !switch_mode ) ||
+ ( is_localdb && switch_mode )) {
+ dsgw_emits( checked );
+ }
+
+ } else if ( dsgw_directive_is( line, DRCT_DS_HOSTNAME_VALUE ) &&
+ (( !is_localdb && !switch_mode ) ||
+ ( is_localdb && switch_mode ))) {
+ dsgw_emits( "<TR>\n<TD ALIGN=\"right\" NOWRAP><B>Host Name:</B></TD>"
+ "<TD><INPUT TYPE=\"text\" NAME=\"host\"" );
+ dsgw_emitf( str_valuefmt,
+ DSGWCONFIG_EMPTY_IF_NULL( gc->gc_ldapserver ));
+ dsgw_emits( "SIZE=40></TD>\n</TR>\n\n" );
+
+ } else if ( dsgw_directive_is( line, DRCT_DS_PORT_VALUE ) &&
+ (( !is_localdb && !switch_mode ) ||
+ ( is_localdb && switch_mode ))) {
+ dsgw_emits( "<TR>\n<TD ALIGN=\"right\" NOWRAP><B>Port:</B></TD>\n"
+ "<TD><INPUT TYPE=\"text\" NAME=\"port\" " );
+ if ( !is_localdb ) {
+ dsgw_emitf( int_valuefmt, gc->gc_ldapport );
+ }
+ dsgw_emits( "SIZE=5></TD>\n</TR>\n\n" );
+
+
+#ifndef DSGW_NO_SSL
+ } else if ( dsgw_directive_is( line, DRCT_DS_SSL_CONFIG_VALUE ) &&
+ (( !is_localdb && !switch_mode ) ||
+ ( is_localdb && switch_mode ))) {
+ dsgw_emits( "<TR>\n<TD ALIGN=\"right\" NOWRAP>\n"
+ "<B>Use Secure<BR>Sockets Layer (SSL)<BR>for "
+ "connections?:</B></TD>\n"
+ "<TD><INPUT TYPE=\"radio\" NAME=\"ssl\" "
+ "VALUE=\"true\" onClick=\"selectedSSL(true)\"" );
+ if ( gc->gc_ldapssl ) {
+ dsgw_emits( checked );
+ }
+ dsgw_HTML_emits( ">Yes" DSGW_UTF8_NBSP "\n<INPUT TYPE=\"radio\" NAME=\"ssl\" "
+ "VALUE=\"false\" onClick=\"selectedSSL(false)\"" );
+ if ( !gc->gc_ldapssl ) {
+ dsgw_emits( checked );
+ }
+ dsgw_emits( ">No\n</TD>\n</TR>\n\n" );
+#endif
+
+ } else if ( dsgw_directive_is( line, DRCT_DS_BASEDN_VALUE )) {
+ dsgw_emits( "<TR>\n<TD ALIGN=\"right\" NOWRAP><B>Base DN" );
+ if (( is_localdb && !switch_mode ) ||
+ ( !is_localdb && switch_mode )) {
+ dsgw_emits( " (optional)" );
+ }
+ dsgw_emits( ":</B></TD>\n<TD><INPUT TYPE=\"text\" "
+ "NAME=\"basedn\" " );
+ dsgw_emitf( str_valuefmt,
+ DSGWCONFIG_EMPTY_IF_NULL( gc->gc_ldapsearchbase ));
+ dsgw_emits( "SIZE=50></TD>\n</TR>\n\n" );
+
+ } else if ( dsgw_directive_is( line, DRCT_DS_BINDDN_VALUE ) &&
+ (( !is_localdb && !switch_mode ) ||
+ ( is_localdb && switch_mode ))) {
+ dsgw_emits( "<TR>\n<TD ALIGN=\"right\" NOWRAP><B>"
+ "Bind DN (optional):</B></TD>\n"
+ "<TD><INPUT TYPE=\"text\" NAME=\"binddn\" " );
+ if ( gc->gc_binddn == NULL || strlen( gc->gc_binddn ) == 0 ) {
+ dsgw_emits( "VALUE=\"\"" );
+ } else {
+ dsgw_emitf( "VALUE=\"%s\" ", gc->gc_binddn );
+ }
+ dsgw_emits( " SIZE=50></TD>\n</TR>\n\n" );
+
+ } else if ( dsgw_directive_is( line, DRCT_DS_BINDPASSWD_VALUE ) &&
+ (( !is_localdb && !switch_mode ) ||
+ ( is_localdb && switch_mode ))) {
+ dsgw_emits( "<TR>\n<TD ALIGN=\"right\" NOWRAP><B>"
+ "Bind Password (optional):</B></TD>\n"
+ "<TD><INPUT TYPE=\"password\" NAME=\"bindpw\" " );
+ if ( gc->gc_bindpw != NULL && ( strlen( gc->gc_bindpw ) > 0 )) {
+ dsgw_emitf( str_valuefmt, gc->gc_bindpw );
+ }
+ dsgw_emits( "SIZE=20></TD>\n</TR>\n\n" );
+ } else if ( dsgw_directive_is( line, DRCT_DS_NOCERTFILE_WARNING )
+ && ( gc->gc_securitypath == NULL )
+ && !is_localdb && gc->gc_ldapssl && argc > 0 ) {
+ /*
+ * using LDAP over SSL but no CertFile in ns-admin.conf:
+ * show a warning message
+ */
+ dsgw_emits( argv[ 0 ] );
+ }
+ }
+ }
+
+ fclose( fp );
+}
+
+
+static void
+handle_post()
+{
+ char *dirsvctype, *dbhandle;
+ dsgwconfig cfg;
+
+ memset( &cfg, 0, sizeof( cfg ));
+
+ dirsvctype = dsgw_get_cgi_var( "dirsvctype", DSGW_CGIVAR_REQUIRED );
+ dbhandle = dsgw_get_cgi_var( "dbhandle", DSGW_CGIVAR_OPTIONAL );
+ cfg.gc_ldapsearchbase = dsgw_get_cgi_var( "basedn", DSGW_CGIVAR_OPTIONAL );
+
+ if ( strcasecmp( dirsvctype, "local" ) == 0 ) {
+ char *userdb_path;
+
+ if (( userdb_path = get_userdb_dir()) == NULL ) {
+ dsgw_error( DSGW_ERR_USERDB_PATH, NULL, DSGW_ERROPT_INLINE, 0,
+ NULL );
+ return;
+ }
+ cfg.gc_localdbconf = dsgw_ch_malloc( strlen( userdb_path ) +
+ strlen( DSGW_LCACHECONF_PPATH ) +
+ strlen( DSGW_LCACHECONF_FILE ) + 2 );
+ sprintf( cfg.gc_localdbconf, "%s/%s%s", userdb_path,
+ DSGW_LCACHECONF_PPATH, DSGW_LCACHECONF_FILE );
+ } else if ( strcasecmp( dirsvctype, "remote" ) == 0 ) {
+ cfg.gc_ldapserver = dsgw_get_cgi_var( "host", DSGW_CGIVAR_REQUIRED );
+ cfg.gc_ldapport = atoi( dsgw_get_cgi_var( "port",
+ DSGW_CGIVAR_REQUIRED ));
+#ifndef DSGW_NO_SSL
+ cfg.gc_ldapssl =
+ dsgw_get_boolean_var( "ssl", DSGW_CGIVAR_OPTIONAL, 0 );
+#endif
+ cfg.gc_binddn = dsgw_get_escaped_cgi_var( "escapedbinddn", "binddn",
+ DSGW_CGIVAR_OPTIONAL );
+ cfg.gc_bindpw = dsgw_get_cgi_var( "bindpw", DSGW_CGIVAR_OPTIONAL );
+ } else {
+ dsgw_error( DSGW_ERR_SERVICETYPE, dirsvctype, DSGW_ERROPT_INLINE, 0,
+ NULL );
+ return;
+ }
+
+ if ( cfg.gc_ldapsearchbase == NULL ) {
+ cfg.gc_ldapsearchbase = "";
+ }
+
+ if ( dsgw_update_dbswitch( &cfg, dbhandle, DSGW_ERROPT_INLINE ) == 0 ) {
+ /*
+ * success: display status message and then re-read config. file
+ */
+ dsgw_emits( "<FONT SIZE=\"+1\">\n<P>The Directory Service configuration" );
+ if ( dbhandle != NULL ) {
+ dsgw_emitf( " for <B>%s</B>", dbhandle );
+ }
+ dsgw_emits( " has been updated.\n</FONT>\n" );
+
+ (void)dsgw_read_config(NULL);
+ }
+
+ dsgw_emits( "<HR>\n" );
+}
diff --git a/ldap/clients/dsgw/dsexpldif.c b/ldap/clients/dsgw/dsexpldif.c
new file mode 100644
index 00000000..613f65c8
--- /dev/null
+++ b/ldap/clients/dsgw/dsexpldif.c
@@ -0,0 +1,133 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+/*
+ * dsexpldif.c -- CGI configuration update handler -- directory gateway
+ *
+ * Copyright (c) 1996 Netscape Communications Corp.
+ * All rights reserved.
+ */
+
+#include "dsgw.h"
+#include "libadmin/libadmin.h"
+static void handle_request( int reqmethod );
+static void handle_post();
+
+static char *ldiffile, *suffix;
+
+main( argc, argv, env )
+ int argc;
+ char *argv[];
+#ifdef DSGW_DEBUG
+ char *env[];
+#endif
+{
+ int reqmethod;
+
+ reqmethod = dsgw_init( argc, argv, DSGW_METHOD_POST | DSGW_METHOD_GET );
+ dsgw_send_header();
+
+#ifdef DSGW_DEBUG
+ dsgw_logstringarray( "env", env );
+#endif
+
+ handle_request( reqmethod );
+
+ exit( 0 );
+}
+
+
+#define DSGWCONFIG_EMPTY_IF_NULL( s ) ( (s) == NULL ? "" : (s) )
+
+
+static void
+handle_request( int reqmethod )
+{
+ FILE *fp;
+ char **argv, *buf, line[ BIG_LINE ];
+ char *str_valuefmt = " VALUE=\"%s\" ";
+ int did_post, argc;
+
+ buf = dsgw_ch_malloc( strlen( progname ) + 6 ); /* room for ".html\0" */
+ sprintf( buf, "%s.html", progname );
+ fp = dsgw_open_html_file( buf, DSGW_ERROPT_EXIT );
+ free( buf );
+ did_post = 0;
+
+ while ( dsgw_next_html_line( fp, line )) {
+ if ( dsgw_parse_line( line, &argc, &argv, 0, dsgw_simple_cond_is_true,
+ NULL )) {
+ if ( dsgw_directive_is( line, DRCT_DS_INLINE_POST_RESULTS )) {
+ if ( !did_post && reqmethod == DSGW_METHOD_POST ) {
+ handle_post();
+ did_post = 1;
+ }
+ } else if ( dsgw_directive_is( line, DS_LDIF_FILE )) {
+ dsgw_emitf( str_valuefmt,
+ DSGWCONFIG_EMPTY_IF_NULL( ldiffile ));
+ } else if ( dsgw_directive_is( line, DS_SUFFIX )) {
+ dsgw_emitf( str_valuefmt,
+ DSGWCONFIG_EMPTY_IF_NULL( suffix ));
+ }
+ }
+ }
+
+ fclose( fp );
+}
+
+
+static void
+handle_post()
+{
+ char cmd[BIG_LINE], path[BIG_LINE];
+ char *userdb_path;
+
+ ldiffile = dsgw_get_cgi_var( "ldif", DSGW_CGIVAR_REQUIRED );
+ suffix = dsgw_get_cgi_var( "suffix", DSGW_CGIVAR_OPTIONAL );
+
+ /* if the schema checking is off, put out a warning message */
+
+ if (( userdb_path = get_userdb_dir()) == NULL ) {
+ dsgw_error( DSGW_ERR_USERDB_PATH, NULL, DSGW_ERROPT_EXIT, 0, NULL );
+ }
+
+ if (gc->gc_localdbconf == NULL) {
+ /* remote */
+ PR_snprintf (cmd, BIG_LINE,
+ "./%s -b \"%s\" -h %s -p %d \"objectclass=*\" > %s 2> %s",
+ DSGW_LDAPSEARCH, gc->gc_ldapsearchbase, gc->gc_ldapserver,
+ gc->gc_ldapport, ldiffile, DSGW_NULL_DEVICE);
+ }
+ else {
+ /* local database */
+ PR_snprintf (cmd, BIG_LINE,
+ "./%s -b \"\" -C %s \"objectclass=*\" > %s 2> %s",
+ DSGW_LDAPSEARCH, gc->gc_localdbconf, ldiffile, DSGW_NULL_DEVICE);
+ }
+ PR_snprintf (path, BIG_LINE, "%s%s", userdb_path, DSGW_TOOLSDIR);
+ chdir (path);
+
+ fflush (stdout);
+ if (system (cmd) == 0){
+
+ /* if local database and suffix is not null, append suffix to
+ appropriate attributes. */
+
+ if (( gc->gc_localdbconf != NULL) && (suffix != NULL )) {
+ app_suffix (ldiffile, suffix);
+ }
+ /*
+ * success: display status message
+ */
+ dsgw_emits( "<FONT SIZE=\"+1\">\n<P>The ldif file has been created.\n</FONT>\n" );
+ }
+ else {
+ dsgw_emits( "<FONT SIZE=\"+1\">\n<P>The ldif file could not be created.\n</FONT>\n" );
+ }
+
+ dsgw_emits( "<HR>\n" );
+}
+
diff --git a/ldap/clients/dsgw/dsgw.h b/ldap/clients/dsgw/dsgw.h
new file mode 100644
index 00000000..909ca833
--- /dev/null
+++ b/ldap/clients/dsgw/dsgw.h
@@ -0,0 +1,1053 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+/*
+ * dsgw.h -- defines for HTTP gateway
+ *
+ * Copyright (c) 1996 Netscape Communications Corp.
+ * All rights reserved.
+ */
+
+#if !defined( DSGW_NO_SSL ) && !defined( NET_SSL )
+#define DSGW_NO_SSL
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <time.h>
+#ifdef LINUX
+#include <sys/param.h>
+#endif
+#include <ldap.h>
+#include <litekey.h>
+#include <ssl.h>
+#ifndef DSGW_NO_SSL
+#include <ldap_ssl.h>
+#endif
+#include "../../include/srchpref.h"
+
+#if defined( XP_WIN32 )
+#define util_strcasecmp strcasecomp
+#define util_strncasecmp strncasecomp
+
+#include "base/systems.h"
+#include "proto-ntutil.h"
+
+#endif
+
+#include <prprf.h>
+
+#ifdef AIXV4
+#include <strings.h>
+#endif /* AIXV4 */
+
+#include "base/util.h"
+#include "libadmin/libadmin.h"
+#include "i18n.h"
+
+#include <unicode/ucnv.h>
+#include <unicode/ucol.h>
+#include <unicode/ustring.h>
+
+#if defined( XP_WIN32 )
+#define DSGW_PATHSEP_CHAR '\\'
+#define DSGW_PATHSEP_STR "\\"
+#define DSGW_NULL_DEVICE "nul:"
+#define DSGW_DELETE_CMD "del /Q"
+#else
+#define DSGW_PATHSEP_CHAR '/'
+#define DSGW_PATHSEP_STR "/"
+#define DSGW_NULL_DEVICE "/dev/null"
+#define DSGW_DELETE_CMD "rm"
+#endif
+
+#define MSIE40_DEFAULT_CHARSET "iso-8859-1,*,utf-8"
+
+/* Used to name the converter used to convert from the users charset to UTF8 */
+#define UNICODE_ENCODING_UTF_8 "UTF-8"
+#define ISO_8859_1_ENCODING "ISO_8859-1"
+
+extern char *context ;
+extern char *langwich; /* The language chosen by libsi18n. */
+extern char *countri; /* The language chosen by libsi18n. */
+
+/*
+ * define DSGW_DEBUG to cause extensive debugging output to be written
+ * to /tmp/CGINAME and CGI's output written to /tmp/CGINAME.out
+ */
+/* #define DSGW_DEBUG */ /* turn on debugging output */
+
+#define DSGW_UTF8_NBSP "\302\240" /* u00A8, in UTF-8 */
+
+/*
+ * XXX the next group of #defines assume that HTTP server has cd'd to
+ * our CGI dir.
+ */
+#define SERVER_ROOT_PATH "../../.."
+#define DSGW_CONFIGDIR_HTTP "../config/"
+#define DSGW_CONFIGDIR_ADMSERV "../config/"
+/*#define DSGW_CONFIGDIR_ADMSERV SERVER_ROOT_PATH "/admin-serv/config/"*/
+#define DSGW_DBSWITCH_FILE "dbswitch.conf"
+#define DSGW_DBSWITCH_TMPFILE "dbswitch.tmp"
+#define DSGW_TMPLDIR_HTTP "../config/"
+#define DSGW_TMPLDIR_ADMSERV "../html/"
+#define DSGW_DOCDIR_HTTP "../html"
+#define DSGW_CONTEXTDIR_HTTP "../context/"
+#define DSGW_HTMLDIR "../html"
+#define DSGW_MANROOT SERVER_ROOT_PATH "/manual/"
+#define DSGW_MANUALSHORTCUT ".MANUAL"
+#define DSGW_MANUALSHORTCUT_LEN 7
+#define DSGW_ADMSERV_BINDIR "/admin-serv/bin/"
+#define DSGW_USER_ADM_BINDIR "/user-environment/bin/"
+#define DSGW_LCACHECONF_PPATH "ldap/config/" /* partial path from /userdb */
+#define DSGW_LCACHECONF_FILE "lcache.conf"
+#define DSGW_TOOLSDIR "/ldap/tools"
+#define DSGW_LDAPSEARCH "ldapsearch"
+#define DSGW_LDAPMODIFY "ldapmodify"
+
+#define DSGW_SEARCHPREFSFILE "dsgwsearchprefs.conf"
+#define DSGW_FILTERFILE "dsgwfilter.conf"
+#define DSGW_CONFIGFILE "dsgw.conf"
+#define DSGW_DEFSECURITYPATH "../ssl"
+
+#define DSGW_CONFIG_LISTPREFIX "list-"
+#define DSGW_CONFIG_DISPLAYPREFIX "display-"
+#define DSGW_CONFIG_EDITPREFIX "edit-"
+#define DSGW_CONFIG_ADDPREFIX "add-"
+
+#define DSGW_SRCHMODE_SMART "smart"
+#define DSGW_SRCHMODE_SMART_ID 1
+#define DSGW_SRCHMODE_COMPLEX "complex"
+#define DSGW_SRCHMODE_COMPLEX_ID 2
+#define DSGW_SRCHMODE_PATTERN "pattern"
+#define DSGW_SRCHMODE_PATTERN_ID 3
+#define DSGW_SRCHMODE_AUTH "auth"
+#define DSGW_SRCHMODE_AUTH_ID 4
+
+#define DSGW_SRCHTYPE_AUTH "auth"
+
+#define LDAP_URL_PREFIX "ldap://"
+#define LDAP_URL_PREFIX_LEN 7
+#define LDAPDB_URL_PREFIX "ldapdb://"
+#define LDAPDB_URL_PREFIX_LEN 9
+
+/* attribute types */
+#define DSGW_ATTRTYPE_OBJECTCLASS "objectClass"
+#define DSGW_ATTRTYPE_HASUBORDINATES "hasSubordinates"
+#define DSGW_ATTRTYPE_USERPASSWORD "userPassword"
+
+#define DSGW_ATTRTYPE_NTUSERDOMAINID "nTUserDomainId"
+#define DSGW_ATTRTYPE_USERID "uid"
+
+#define DSGW_OC_NTUSER "ntuser"
+
+#define DSGW_ATTRTYPE_NTGROUPDOMAINID "nTGroupDomainId"
+#define DSGW_ATTRTYPE_NTGROUPNAME "nTGroupName"
+#define DSGW_ATTRTYPE_AIMSTATUSTEXT "nsaimstatustext"
+
+#if defined( XP_WIN32 )
+#include <lmaccess.h>
+#else
+/*
+ * For Gateway's running on UNIX Platforms.
+ * These are all defined in <lmaccess.h> on Win32.
+ */
+
+/*
+ * Special Values and Constants - User
+ */
+
+/*
+ * Privilege levels (USER_INFO_X field usriX_priv (X = 0/1)).
+ */
+
+#define USER_PRIV_MASK 0x3
+#define USER_PRIV_GUEST 0
+#define USER_PRIV_USER 1
+#define USER_PRIV_ADMIN 2
+
+/*
+ * Bit masks for field usriX_flags of USER_INFO_X (X = 0/1).
+ */
+
+#define UF_SCRIPT 0x0001
+#define UF_ACCOUNTDISABLE 0x0002
+#define UF_HOMEDIR_REQUIRED 0x0008
+#define UF_LOCKOUT 0x0010
+#define UF_PASSWD_NOTREQD 0x0020
+#define UF_PASSWD_CANT_CHANGE 0x0040
+
+/*
+ * Account type bits as part of usri_flags.
+ */
+
+#define UF_TEMP_DUPLICATE_ACCOUNT 0x0100
+#define UF_NORMAL_ACCOUNT 0x0200
+#define UF_INTERDOMAIN_TRUST_ACCOUNT 0x0800
+#define UF_WORKSTATION_TRUST_ACCOUNT 0x1000
+#define UF_SERVER_TRUST_ACCOUNT 0x2000
+
+#define UF_MACHINE_ACCOUNT_MASK ( UF_INTERDOMAIN_TRUST_ACCOUNT | \
+ UF_WORKSTATION_TRUST_ACCOUNT | \
+ UF_SERVER_TRUST_ACCOUNT )
+
+#define UF_ACCOUNT_TYPE_MASK ( \
+ UF_TEMP_DUPLICATE_ACCOUNT | \
+ UF_NORMAL_ACCOUNT | \
+ UF_INTERDOMAIN_TRUST_ACCOUNT | \
+ UF_WORKSTATION_TRUST_ACCOUNT | \
+ UF_SERVER_TRUST_ACCOUNT \
+ )
+
+#define UF_DONT_EXPIRE_PASSWD 0x10000
+
+
+#define UF_SETTABLE_BITS ( \
+ UF_SCRIPT | \
+ UF_ACCOUNTDISABLE | \
+ UF_LOCKOUT | \
+ UF_HOMEDIR_REQUIRED | \
+ UF_PASSWD_NOTREQD | \
+ UF_PASSWD_CANT_CHANGE | \
+ UF_ACCOUNT_TYPE_MASK | \
+ UF_DONT_EXPIRE_PASSWD \
+ )
+
+/*
+ * Bit masks for field usri2_auth_flags of USER_INFO_2.
+ */
+
+#define AF_OP_PRINT 0x1
+#define AF_OP_COMM 0x2
+#define AF_OP_SERVER 0x4
+#define AF_OP_ACCOUNTS 0x8
+#define AF_SETTABLE_BITS (AF_OP_PRINT | AF_OP_COMM | \
+ AF_OP_SERVER | AF_OP_ACCOUNTS)
+
+#endif /* XP_WIN32 */
+
+#define MAX_NTUSERID_LEN 20
+
+/* Types of privs in usri3_priv of struct USER_INFO_3 */
+#define DSGW_NT_UP_GUEST "Guest"
+#define DSGW_NT_UP_USER "User"
+#define DSGW_NT_UP_ADMIN "Admin"
+
+/* Meaning of flags in usri3_flags of struct USER_INFO_3 */
+#define DSGW_NT_UF_SCRIPT "Logon Script Executed"
+#define DSGW_NT_UF_ACCOUNT_DISABLED "Account Disabled"
+#define DSGW_NT_UF_HOMEDIR_REQD "Home Directory Required"
+#define DSGW_NT_UF_PASSWD_NOTREQD "Password Not Required"
+#define DSGW_NT_UF_PASSWD_CANT_CHANGE "User Cannot Change Password"
+#define DSGW_NT_UF_LOCKOUT "Account Locked Out"
+#define DSGW_NT_UF_DONT_EXPIRE_PASSWORD "Password Never Expires"
+
+#define DSGW_NT_UF_NORMAL_ACCOUNT "Default Account Type"
+#define DSGW_NT_UF_TEMP_DUPLICATE_ACCOUNT "Temporary Account Type"
+#define DSGW_NT_UF_TEMP_WRKSTN_TRUST_ACCOUNT "Workstation Account Type"
+#define DSGW_NT_UF_TEMP_SERVER_TRUST_ACCOUNT "Server Account Type"
+#define DSGW_NT_UF_TEMP_INTERDOMAIN_TRUST_ACCOUNT "Interdomain Trust Account Type"
+
+#define DSGW_NT_AF_OP_PRINT "Print Operator"
+#define DSGW_NT_AF_OP_COMM "Backup Operator"
+#define DSGW_NT_AF_OP_SERVER "Server Operator"
+#define DSGW_NT_AF_OP_ACCOUNTS "Accounts Operator"
+
+/* HTTP request methods flags */
+#define DSGW_METHOD_GET 0x01
+#define DSGW_METHOD_POST 0x02
+
+/* URL prefixes specific to our gateway */
+#define DSGW_URLPREFIX_MAIN_HTTP "lang?file="
+#define DSGW_URLPREFIX_MAIN_ADMSERV ""
+/*#define DSGW_URLPREFIX_CGI_HTTP "../bin/"*/
+#define DSGW_URLPREFIX_CGI_HTTP ""
+#define DSGW_URLPREFIX_CGI_ADMSERV ""
+#define DSGW_URLPREFIX_BIN "/clients/dsgw/bin/"
+
+#define DSGW_URLPREFIX_MAIN DSGW_URLPREFIX_MAIN_HTTP
+
+#define DSGW_CGINAME_DOSEARCH "dosearch"
+#define DSGW_CGINAME_BROWSE "browse"
+#define DSGW_CGINAME_SEARCH "search"
+#define DSGW_CGINAME_CSEARCH "csearch"
+#define DSGW_CGINAME_AUTH "auth"
+#define DSGW_CGINAME_EDIT "edit"
+#define DSGW_CGINAME_DOMODIFY "domodify"
+#define DSGW_CGINAME_TUTOR "tutor"
+#define DSGW_CGINAME_DNEDIT "dnedit"
+#define DSGW_CGINAME_LANG "lang"
+
+/* definitions for modes - they type of operation we are performing */
+/* These definitions need to match, one-for-one, the DSGW_CGINAMEs */
+#define DSGW_MODE_DOSEARCH 1
+#define DSGW_CGINUM_DOSEARCH DSGW_MODE_DOSEARCH
+#define DSGW_MODE_BROWSE 2
+#define DSGW_CGINUM_BROWSE DSGW_MODE_BROWSE
+#define DSGW_MODE_SEARCH 3
+#define DSGW_CGINUM_SEARCH DSGW_MODE_SEARCH
+#define DSGW_MODE_CSEARCH 4
+#define DSGW_CGINUM_CSEARCH DSGW_MODE_CSEARCH
+#define DSGW_MODE_AUTH 5
+#define DSGW_CGINUM_AUTH DSGW_MODE_AUTH
+#define DSGW_MODE_EDIT 6
+#define DSGW_CGINUM_EDIT DSGW_MODE_EDIT
+#define DSGW_MODE_DOMODIFY 7
+#define DSGW_CGINUM_DOMODIFY DSGW_MODE_DOMODIFY
+#define DSGW_MODE_TUTOR 8
+#define DSGW_CGINUM_TUTOR DSGW_MODE_TUTOR
+#define DSGW_MODE_DNEDIT 9
+#define DSGW_CGINUM_DNEDIT DSGW_MODE_DNEDIT
+#define DSGW_MODE_LANG 10
+#define DSGW_CGINUM_LANG DSGW_MODE_LANG
+#define DSGW_MODE_LASTMODE DSGW_MODE_LANG
+#define DSGW_MODE_NUMMODES DSGW_MODE_LASTMODE
+#define DSGW_MODE_UNKNOWN 99
+
+/* error codes -- messages are in dsgw_errs[] array in error.c */
+#define DSGW_ERR_BADMETHOD 1
+#define DSGW_ERR_BADFORMDATA 2
+#define DSGW_ERR_NOMEMORY 3
+#define DSGW_ERR_MISSINGINPUT 4
+#define DSGW_ERR_BADFILEPATH 5
+#define DSGW_ERR_BADCONFIG 6
+#define DSGW_ERR_LDAPINIT 7
+#define DSGW_ERR_LDAPGENERAL 8
+#define DSGW_ERR_UNKSRCHTYPE 9
+#define DSGW_ERR_NOFILTERS 10
+#define DSGW_ERR_OPENHTMLFILE 11
+#define DSGW_ERR_SEARCHMODE 12
+#define DSGW_ERR_UNKATTRLABEL 13
+#define DSGW_ERR_UNKMATCHPROMPT 14
+#define DSGW_ERR_LDAPURL_NODN 15
+#define DSGW_ERR_LDAPURL_BADSCOPE 16
+#define DSGW_ERR_LDAPURL_NOTLDAP 17
+#define DSGW_ERR_LDAPURL_BAD 18
+#define DSGW_ERR_INTERNAL 19
+#define DSGW_ERR_OPENDIR 20
+#define DSGW_ERR_WRITEINDEXFILE 21
+#define DSGW_ERR_OPENINDEXFILE 22
+#define DSGW_ERR_SSLINIT 23
+#define DSGW_ERR_NO_MGRDN 24
+/*
+ * Note: do not add more error codes here! The cookie error codes use the
+ * same error code space as all the others. Go to the end of the "more error
+ * codes" section and add new error codes there.
+ */
+
+/* Cookie db routines - error codes */
+#define DSGW_CKDB_KEY_NOT_PRESENT 25
+#define DSGW_CKDB_DBERROR 26
+#define DSGW_CKDB_EXPIRED 27
+#define DSGW_CKDB_RNDSTRFAIL 28
+#define DSGW_CKDB_NODN 29
+#define DSGW_CKDB_CANTOPEN 30
+#define DSGW_CKDB_CANTAPPEND 31
+
+/* more error codes */
+#define DSGW_ERR_NOSECPATH 32
+#define DSGW_ERR_NOSEARCHSTRING 33
+#define DSGW_ERR_CONFIGTOOMANYARGS 34
+#define DSGW_ERR_ADMSERV_CREDFAIL 35
+#define DSGW_ERR_LDAPDBURL_NODN 36
+#define DSGW_ERR_LDAPDBURL_NOTLDAPDB 37
+#define DSGW_ERR_LDAPDBURL_BAD 38
+#define DSGW_ERR_LCACHEINIT 39
+#define DSGW_ERR_WSAINIT 40
+#define DSGW_ERR_SERVICETYPE 41
+#define DSGW_ERR_DBCONF 42
+#define DSGW_ERR_USERDB_PATH 43
+#define DSGW_ERR_UPDATE_DBSWITCH 44
+#define DSGW_ERR_ENTRY_NOT_FOUND 45
+#define DSGW_ERR_DB_ERASE 46
+#define DSGW_ERR_LOCALDB_PERMISSION_DENIED 47
+#define DSGW_ERR_NOATTRVALUE 48
+#define DSGW_ERR_USERID_REQUIRED 49
+#define DSGW_ERR_DOMAINID_NOTUNIQUE 50
+#define DSGW_ERR_USERID_DOMAINID_REQUIRED 51
+#define DSGW_ERR_USERID_MAXLEN_EXCEEDED 52
+#define DSGW_ERR_CHARSET_NOT_SUPPORTED 53
+
+/* Return codes from dsgw_init_ldap() */
+#define DSGW_BOUND_ASUSER 1
+#define DSGW_BOUND_ANONYMOUS 2
+
+/* NT Domain Id seperator */
+#define DSGW_NTDOMAINID_SEP ':'
+
+/* Cookie names */
+#define DSGW_BROWSESBCKNAME "nsdsgwbrowseSB"
+#define DSGW_SEARCHSBCKNAME "nsdsgwsearchSB"
+#define DSGW_AUTHCKNAME "nsdsgwauth"
+#define DSGW_CKHDR "Set-cookie: "
+#define DSGW_EXPSTR "expires="
+#define DSGW_UNAUTHSTR "[unauthenticated]"
+
+/* Name of cookie database - context will be appended to "cookies" for multiple GW's*/
+#define DSGW_COOKIEDB_FNAME SERVER_ROOT_PATH "/bin/slapd/authck/cookies"
+
+/* Default lifetime of authentication cookies (in seconds) */
+#define DSGW_DEF_AUTH_LIFETIME ( 60 * 60 ) /* one hour */
+
+#define DSGW_SECS_PER_DAY ( 60 * 60 * 24 ) /* one day */
+
+#define DSGW_CKPURGEINTERVAL ( 60 * 10 ) /* Ten minutes */
+
+#define DSGW_MODIFY_GRACEPERIOD ( 60 * 5 ) /* Five minutes */
+
+/* String used as DN in auth CGI to indicate "I want to bind as the root dn" */
+#define MGRDNSTR "MANAGER"
+
+/*
+ * Enum for NT Domain checking
+ */
+typedef enum _LDAPDomainIdStatus {
+ LDAPDomainIdStatus_Unique = 0,
+ LDAPDomainIdStatus_Nonunique = -1,
+ LDAPDomainIdStatus_NullAttr = -2,
+ LDAPDomainIdStatus_NullId = -3
+} LDAPDomainIdStatus;
+
+/*
+ * Structure used to associate LDAP objectClasses with display templates.
+ * These are defined by "template" config. file lines.
+ */
+typedef struct dsgwtmpl {
+ char *dstmpl_name;
+ char **dstmpl_ocvals;
+ struct dsgwtmpl *dstmpl_next;
+} dsgwtmpl;
+
+/*
+ * Structures used to keep track of template sets which are used to support
+ * more than one way to view an entry. These are defined by "tmplset"
+ * config. file lines.
+ */
+typedef struct dsgwview {
+ char *dsview_caption;
+ char *dsview_template;
+ char *dsview_jscript;
+ struct dsgwview *dsview_next;
+} dsgwview;
+
+typedef struct dsgwtmplset {
+ char *dstset_name;
+ dsgwview *dstset_viewlist;
+ int dstset_viewcount;
+ struct dsgwtmplset *dstset_next;
+} dsgwtmplset;
+
+/*
+ * Structure used to hold information about Attribute Value Sets that are
+ * used with DS_ATTRVAL_SET entry display directives. These sets are defined
+ * by "attrvset" config. file lines.
+ */
+typedef struct dsgwavset {
+ char *dsavset_handle;
+ int dsavset_itemcount;
+ char **dsavset_values;
+ char **dsavset_prefixes;
+ char **dsavset_suffixes;
+ struct dsgwavset *dsavset_next;
+} dsgwavset;
+
+/*
+ * Structure used to hold information about file include sets that are used
+ * with INCLUDESET directives. These sets are defined by "includeset" config.
+ * file lines.
+ */
+typedef struct dsgwinclset {
+ char *dsiset_handle;
+ int dsiset_itemcount;
+ char **dsiset_filenames;
+ struct dsgwinclset *dsiset_next;
+} dsgwinclset;
+
+/*
+ * structure used to track locations where new entries can be added
+ * these are created based on the "location" config. file lines
+ */
+typedef struct dsgwloc {
+ char *dsloc_handle; /* short name */
+ char *dsloc_fullname; /* friendly name */
+ char *dsloc_dnsuffix; /* new entry location (a full DN) */
+} dsgwloc;
+
+/*
+ * structure used to track types of new entries that can be added
+ * these are created based on the "newtype" config. file lines
+ */
+typedef struct dsgwnewtype {
+ char *dsnt_template; /* name of add-XXX.html template */
+ char *dsnt_fullname; /* friendly name */
+ char *dsnt_rdnattr; /* attribute used to construct RDN */
+ int *dsnt_locations; /* indexes into gc_locations array */
+ int dsnt_loccount; /* number of dsnt_locations */
+ struct dsgwnewtype *dsnt_next;
+} dsgwnewtype;
+
+/*
+ * Structure used to hold mapping from LDAP attrs. to VCard properties
+ */
+typedef struct dsgwvcprop {
+ char *dsgwvcprop_property; /* VCard property name */
+ char *dsgwvcprop_ldaptype; /* LDAP attribute type */
+ char *dsgwvcprop_ldaptype2; /* only used for "n" prop. */
+ char *dsgwvcprop_syntax; /* cis or mls only please! */
+ struct dsgwvcprop *dsgwvcprop_next;
+} dsgwvcprop;
+
+/* substring substitution structure */
+typedef struct dsgwsubst {
+ char *dsgwsubst_from;
+ char *dsgwsubst_to;
+ char **dsgwsubst_charsets; /* NULL => any charset */
+ struct dsgwsubst *dsgwsubst_next;
+} dsgwsubst;
+
+/* Configuration information structure */
+typedef struct dsgwconfig_t {
+ int gc_admserv; /* non-zero if running under admserv */
+ int gc_enduser; /* if non-zero, running end-user CGI */
+ char *gc_baseurl;
+ char *gc_ldapserver;
+ int gc_ldapport;
+ char *gc_ldapsearchbase;
+ char *gc_rootdn;
+#ifndef DSGW_NO_SSL
+ int gc_ldapssl; /* if non-zero, do LDAP over SSL */
+ char *gc_securitypath;
+#endif
+ int gc_configerr; /* if non-zero, there were cf errs */
+ char *gc_configdir; /* path to our config files */
+ char *gc_tmpldir; /* path to our HTML template files */
+ char *gc_docdir; /* path to the HTML files*/
+ char *gc_gwnametrans; /* The nametrans for the gateway (for FT)*/
+ char *gc_urlpfxmain; /* URL prefix for dsgw main page */
+ char *gc_urlpfxcgi; /* URL prefix for dsgw CGIs */
+ char *gc_configerrstr;
+ char *gc_localdbconf; /* NULL if local DB not being used */
+ /* otherwise - name of localdb conf */
+ char *gc_binddn; /* DN to bind as if user info unknown */
+ char *gc_bindpw; /* passwd to use if user info unknown */
+ float gc_httpversion; /* client's HTTP version */
+ char *gc_charset; /* character set used by CGIs & HTML */
+ char *gc_NLS; /* directory used by libnls */
+ char *gc_ClientLanguage; /* preferred language list */
+ char *gc_AdminLanguage; /* administrator language list */
+ char *gc_DefaultLanguage; /* default language list for either */
+ char **gc_clientIgnoreACharset; /* browsers uses default charset
+ instead of accept-charsets */
+ char *gc_orgcharturl; /* http base url for orgchart*/
+ char *gc_orgchartsearchattr; /* Search attribute the orgchart uses*/
+ int gc_aimpresence; /* enable aim presence*/
+ dsgwtmpl *gc_templates; /* linked list */
+ dsgwnewtype *gc_newentrytypes; /* linked list */
+ dsgwloc *gc_newentrylocs; /* array of structures */
+ int gc_newentryloccount;
+ dsgwtmplset *gc_tmplsets; /* linked list */
+ dsgwavset *gc_avsets; /* linked list */
+ dsgwinclset *gc_includesets; /* linked list */
+ dsgwvcprop *gc_vcardproperties; /* linked list */
+ int gc_httpskeysize; /* if non-zero, HTTPS is being used */
+ int gc_sslrequired;
+ time_t gc_authlifetime; /* lifetime of cookies, in seconds */
+ int gc_authrequired; /* if non-zero, disallow access unless
+ authenticated */
+#define DSGW_SSLREQ_NEVER 0
+#define DSGW_SSLREQ_WHENAUTHENTICATED 1
+#define DSGW_SSLREQ_ALWAYS 2
+ dsgwsubst *gc_changeHTML; /* linked list */
+ dsgwsubst *gc_l10nsets; /* linked list */
+ /*
+ * The following aren't strictly config file options, but are put
+ * into the gc struct.
+ */
+ int gc_mode; /* Mode (CGI being executed) */
+} dsgwconfig;
+
+/*
+ * Structure used to return broken-out ldapdb:// URL info
+ */
+typedef struct ldapdb_url_desc {
+ char *ludb_path;
+ char *ludb_dn;
+} LDAPDBURLDesc;
+
+
+/* template stuff */
+/* The number of templates defined */
+#define MAXTEMPLATE 30
+
+/* The maximum number of variables for a given template */
+#define MAXVARS 4
+
+/* The structure of a directive is fairly simple. You have:
+ *
+ * <!-- NAME var1="val" var2="val" var3="val">
+ *
+ * You _must_ put the values in quotes.
+ */
+
+/* The structure of a template. */
+typedef struct template_s {
+ char *name;
+ char *format;
+} *tmpptr;
+
+#define DIRECTIVE_START "<!-- "
+#define GCONTEXT_DIRECTIVE "<!-- GCONTEXT -->"
+#define DIRECTIVE_END '>'
+
+/* A really big form line */
+#define BIG_LINE 1024
+
+/* struct to track saved lines */
+typedef struct savedlines {
+ int svl_count;
+ int svl_current;
+ char **svl_line;
+} savedlines;
+
+
+typedef struct dsgwtmplinfo {
+ char *dsti_template;
+ int dsti_type;
+#define DSGW_TMPLTYPE_LIST 1
+#define DSGW_TMPLTYPE_DISPLAY 2
+#define DSGW_TMPLTYPE_EDIT 3
+#define DSGW_TMPLTYPE_ADD 4
+ unsigned long dsti_options;
+#define DSGW_DISPLAY_OPT_LIST_IF_ONE 0x00000001
+#define DSGW_DISPLAY_OPT_AUTH 0x00000002
+#define DSGW_DISPLAY_OPT_EDITABLE 0x00000004
+#define DSGW_DISPLAY_OPT_ADDING 0x00000008
+#define DSGW_DISPLAY_OPT_LINK2EDIT 0x00000010
+#define DSGW_DISPLAY_OPT_DNLIST_JS 0x00000020
+#define DSGW_DISPLAY_OPT_CUSTOM_SEARCHDESC 0x00000040
+ char **dsti_attrs;
+ unsigned long *dsti_attrflags;
+#define DSGW_DSTI_ATTR_SEEN 0x00000001
+ char **dsti_attrsonly_attrs;
+ char *dsti_sortbyattr;
+ int dsti_entrycount;
+ char *dsti_search2s;
+ char *dsti_search3s;
+ char *dsti_search4s;
+ char *dsti_searcherror;
+ char *dsti_searchlderrtxt;
+ LDAP *dsti_ld;
+ LDAPMessage *dsti_entry;
+ LDAPMessage *dsti_attrsonly_entry;
+ char *dsti_entrydn;
+ FILE *dsti_fp;
+ char **dsti_rdncomps; /* only set for new entries */
+ savedlines *dsti_preludelines; /* only output once */
+ savedlines *dsti_entrylines; /* output once for each entry */
+} dsgwtmplinfo;
+
+
+/*
+ * HTML template directives that are specific to DSGW
+ * Note that most of these supported only in entrydisplay.c
+ */
+#define DRCT_DS_ENTRYBEGIN "DS_ENTRYBEGIN"
+#define DRCT_DS_ENTRYEND "DS_ENTRYEND"
+#define DRCT_DS_ATTRIBUTE "DS_ATTRIBUTE"
+#define DRCT_DS_ATTRVAL_SET "DS_ATTRVAL_SET"
+#define DRCT_DS_OBJECTCLASS "DS_OBJECTCLASS"
+#define DRCT_DS_SORTENTRIES "DS_SORTENTRIES"
+#define DRCT_DS_SEARCHDESC "DS_SEARCHDESC"
+#define DRCT_DS_POSTEDVALUE "DS_POSTEDVALUE"
+#define DRCT_DS_EDITBUTTON "DS_EDITBUTTON"
+#define DRCT_DS_DELETEBUTTON "DS_DELETEBUTTON"
+#define DRCT_DS_SAVEBUTTON "DS_SAVEBUTTON"
+#define DRCT_DS_RENAMEBUTTON "DS_RENAMEBUTTON"
+#define DRCT_DS_EDITASBUTTON "DS_EDITASBUTTON"
+#define DRCT_DS_NEWPASSWORD "DS_NEWPASSWORD"
+#define DRCT_DS_CONFIRM_NEWPASSWORD "DS_CONFIRM_NEWPASSWORD"
+#define DRCT_DS_OLDPASSWORD "DS_OLDPASSWORD"
+#define DRCT_DS_HELPBUTTON "DS_HELPBUTTON"
+#define DRCT_DS_CLOSEBUTTON "DS_CLOSEBUTTON"
+#define DRCT_DS_BEGIN_ENTRYFORM "DS_BEGIN_ENTRYFORM"
+#define DRCT_DS_END_ENTRYFORM "DS_END_ENTRYFORM"
+#define DRCT_DS_EMIT_BASE_HREF "DS_EMIT_BASE_HREF"
+#define DRCT_DS_DNATTR "DS_DNATTR"
+#define DRCT_DS_DNDESC "DS_DNDESC"
+#define DRCT_DS_DNEDITBUTTON "DS_DNEDITBUTTON"
+#define DRCT_DS_BEGIN_DNSEARCHFORM "DS_BEGIN_DNSEARCHFORM"
+#define DRCT_DS_END_DNSEARCHFORM "DS_END_DNSEARCHFORM"
+#define DRCT_DS_CONFIG_INFO "DS_CONFIG_INFO"
+#define DRCT_DS_GATEWAY_VERSION "DS_GATEWAY_VERSION"
+#define DRCT_DS_VIEW_SWITCHER "DS_VIEW_SWITCHER"
+#define DRCT_DS_STD_COMPLETION_JS "DS_STD_COMPLETION_JS"
+#define DRCT_HEAD "HEAD"
+#define DRCT_DS_ALERT_NOENTRIES "DS_ALERT_NOENTRIES"
+#define DRCT_DS_ORGCHARTLINK "DS_ORGCHARTLINK"
+
+/*
+ * directives supported inside dsgw_parse_line() itself (usable anywhere)
+ * Note that these are in addition to ones in the htmlparse.c templates array
+ */
+#define DRCT_DS_LAST_OP_INFO "DS_LAST_OP_INFO"
+
+/*
+ * directives supported by genscreen
+ */
+#define DRCT_DS_LOCATIONPOPUP "DS_LOCATIONPOPUP"
+
+/*
+ * these next few are supported by dsconfig
+ */
+#define DRCT_DS_INLINE_POST_RESULTS "DS_INLINE_POST_RESULTS"
+#define DRCT_DS_CHECKED_IF_LOCAL "DS_CHECKED_IF_LOCAL"
+#define DRCT_DS_CHECKED_IF_REMOTE "DS_CHECKED_IF_REMOTE"
+#define DRCT_DS_HOSTNAME_VALUE "DS_HOSTNAME_VALUE"
+#define DRCT_DS_PORT_VALUE "DS_PORT_VALUE"
+#define DRCT_DS_CHECKED_IF_SSL "DS_CHECKED_IF_SSL"
+#define DRCT_DS_CHECKED_IF_NOSSL "DS_CHECKED_IF_NOSSL"
+#define DRCT_DS_SSL_CONFIG_VALUE "DS_SSL_CONFIG_VALUE"
+#define DRCT_DS_BASEDN_VALUE "DS_BASEDN_VALUE"
+#define DRCT_DS_BINDDN_VALUE "DS_BINDDN_VALUE"
+#define DRCT_DS_BINDPASSWD_VALUE "DS_BINDPASSWD_VALUE"
+#define DRCT_DS_NOCERTFILE_WARNING "DS_NOCERTFILE_WARNING"
+
+/*
+ * directives supported by dsimpldif
+ */
+#define DS_LDIF_FILE "DS_LDIF_FILE"
+#define DS_CHECKED_IF_ERASE "DS_CHECKED_IF_ERASE"
+#define DS_CHECKED_IF_NOTERASE "DS_CHECKED_IF_NOTERASE"
+#define DS_CHECKED_IF_STOP "DS_CHECKED_IF_STOP"
+#define DS_CHECKED_IF_NOTSTOP "DS_CHECKED_IF_NOTSTOP"
+
+#define DSGW_ARG_BUTTON_LABEL "label"
+#define DSGW_ARG_BUTTON_NAME "name"
+
+/*
+ * directives supported by dsexpldif
+ */
+#define DS_SUFFIX "DS_SUFFIX"
+
+/* conditionals -- replaces "xxx" in <!-- IF xxx --> directives */
+#define DSGW_COND_FOUNDENTRIES "FoundEntries"
+#define DSGW_COND_ADDING "Adding"
+#define DSGW_COND_EDITING "Editing"
+#define DSGW_COND_DISPLAYING "Displaying"
+#define DSGW_COND_BOUND "Bound"
+#define DSGW_COND_BOUNDASTHISENTRY "BoundAsThisEntry"
+#define DSGW_COND_ADMSERV "AdminServer"
+#define DSGW_COND_LOCALDB "DirectoryIsLocalDB"
+#define DSGW_COND_ATTRHASVALUES "AttributeHasValues"
+#define DSGW_COND_ATTRHASTHISVALUE "AttributeHasThisValue"
+#define DSGW_COND_POSTEDFORMVALUE "PostedFormValue"
+#define DSGW_COND_DISPLAYORGCHART "DisplayOrgChart"
+#define DSGW_COND_DISPLAYAIMPRESENCE "DisplayAimPresence"
+
+/* global variables */
+extern char *progname; /* set in dsgwutil.c:dsgw_init() */
+extern char *dsgw_last_op_info; /* set in edit.c and genscreen.c */
+extern char *dsgw_dnattr; /* set in edit.c */
+extern char *dsgw_dndesc; /* set in edit.c */
+extern int http_hdr_sent; /* set in dsgwutil.c:dsgw_send_header() */
+extern char *dsgw_html_body_colors; /* set in htmlparse.c */
+extern int dsgw_NSSInitializedAlready; /* set in cookie.c:dsgw_NSSInit */
+
+/* function prototypes */
+/*
+ * in cgiutil.c
+ */
+int dsgw_post_begin( FILE *in );
+void dsgw_form_unescape( char *str );
+char *dsgw_get_cgi_var( char *varname, int required );
+int dsgw_get_int_var( char *varname, int required, int defval );
+int dsgw_get_boolean_var( char *varname, int required, int defval );
+char *dsgw_get_escaped_cgi_var( char *varname_escaped, char *varname,
+ int required );
+#define DSGW_CGIVAR_OPTIONAL 0
+#define DSGW_CGIVAR_REQUIRED 1
+char *dsgw_next_cgi_var( int *indexp, char **valuep );
+
+/*
+ * in dsgwutil.c:
+ */
+extern dsgwconfig *gc;
+int dsgw_init( int argc, char **argv, int methods_handled );
+int dsgw_simple_cond_is_true( int argc, char **argv, void *arg );
+char *dsgw_file2path( char *prefix, char *filename );
+char *dsgw_file2htmlpath( char *prefix, char *filename );
+void *dsgw_ch_malloc( size_t n );
+void *dsgw_ch_calloc( size_t nelem, size_t elsize );
+void *dsgw_ch_realloc( void *p, size_t n );
+char *dsgw_ch_strdup( const char *s );
+char *dsgw_escape_quotes( char *in );
+char *dsgw_get_translation( char *in );
+void dsgw_send_header();
+void dsgw_add_header( char *line );
+char *dsgw_get_auth_cookie();
+void dsgw_emit_helpbutton( char *topic );
+void dsgw_emit_homebutton();
+char *dsgw_build_urlprefix();
+void dsgw_init_searchprefs( struct ldap_searchobj **solistp );
+void dsgw_addtemplate( dsgwtmpl **tlpp, char *template, int count,
+ char **ocvals );
+dsgwtmpl *dsgw_oc2template( char **ocvals );
+void dsgw_remove_leading_and_trailing_spaces( char **sp );
+int dsgw_parse_cookie( char *cookie, char **rndstr, char **dn );
+char *dsgw_getvp( int cginum );
+#ifdef DSGW_DEBUG
+void dsgw_log( char *fmt, ... );
+void dsgw_logstringarray( char *arrayname, char **strs );
+void dsgw_log_out (const char* s, size_t n);
+#else
+#define dsgw_log_out(s,n) ;
+#endif /* DSGW_DEBUG */
+void dsgw_head_begin();
+void dsgw_quote_emptyFrame();
+void dsgw_password_expired_alert( char *binddn );
+time_t dsgw_current_time();
+time_t dsgw_time_plus_sec (time_t l, long r);
+
+/*
+ * in entrydisplay.c
+ */
+dsgwtmplinfo *dsgw_display_init( int tmpltype, char *template,
+ unsigned long options );
+void dsgw_display_entry( dsgwtmplinfo *tip, LDAP *ld, LDAPMessage *entry,
+ LDAPMessage *attrsonly_entry, char *dn );
+void dsgw_display_done( dsgwtmplinfo *tip );
+char *dsgw_mls_convertlines( char *val, char *sep, int *linesp, int emitlines,
+ int quote_html_specials );
+void dsgw_set_searchdesc( dsgwtmplinfo *tip, char*, char*, char*);
+void dsgw_set_search_result( dsgwtmplinfo *tip, int entrycount,
+ char *searcherror, char *lderrtxt );
+
+/*
+ * in error.c
+ */
+void dsgw_error( int errcode, char *extra, int options, int lderr,
+ char *lderrtxt );
+#define DSGW_ERROPT_EXIT 0x01
+#define DSGW_ERROPT_IGNORE 0x02
+#define DSGW_ERROPT_TERSE 0x04
+#define DSGW_ERROPT_INLINE 0x08
+#define DSGW_ERROPT_DURINGBIND 0x10
+int dsgw_dn2passwd_error( int ckrc, int skipauthwarning );
+char* dsgw_err2string( int err );
+char *dsgw_ldaperr2string( int lderr );
+
+/*
+ * in htmlout.c
+ */
+void dsgw_html_begin( char *title, int titleinbody );
+void dsgw_html_end( void );
+void dsgw_html_href( char *urlprefix, char *url, char *label, char *value,
+ char *extra );
+void dsgw_strcat_escaped( char *s1, const char *s2 );
+char *dsgw_strdup_escaped( const char *s );
+void dsgw_substitute_and_output( char *s, char *tag, char *value, int escape );
+void dsgw_form_begin( const char* name, const char* format, ... );
+char *dsgw_strdup_with_entities( char *s, int *madecopyp );
+void dsgw_HTML_emits( char * );
+void dsgw_emit_cgi_var( int argc, char **argv );
+void dsgw_emit_button( int argc, char **argv, const char* format, ... );
+void dsgw_emit_alertForm();
+void dsgw_emit_alert( const char* frame, const char* windowOptions, const char* fmt, ... );
+void dsgw_emit_confirmForm();
+void dsgw_emit_confirm( const char* frame, const char* yes, const char* no,
+ const char* windowOptions, int enquote, const char* fmt, ... );
+
+/*
+ * in htmlparse.c:
+ */
+typedef int (*condfunc)( int argc, char **argv, void *arg );
+int dsgw_parse_line( char *line_input, int *argc, char ***argv, int parseonly,
+ condfunc conditionalfn, void *condarg );
+char *get_arg_by_name( char *name, int argc, char **argv );
+int dsgw_get_arg_pos_by_name( char *name, int argc, char **argv );
+FILE *dsgw_open_html_file( char *filename, int erropts );
+int dsgw_next_html_line(FILE *f, char *line);
+void dsgw_argv_free( char **argv );
+savedlines *dsgw_savelines_alloc( void );
+void dsgw_savelines_free( savedlines *svlp );
+void dsgw_savelines_save( savedlines *svlp, char *line );
+void dsgw_savelines_rewind( savedlines *svlp );
+char *dsgw_savelines_next( savedlines *svlp );
+int dsgw_directive_is(char *target, char *directive);
+
+/*
+ * in ldaputil.c
+ */
+int dsgw_init_ldap( LDAP **ldp, LDAPFiltDesc **lfdpp, int skipac, int skipauthwarning );
+int dsgw_get_adm_identity( LDAP *ld, char **uidp, char **dnp, char **pwdp,
+ int erropts );
+void dsgw_ldap_error( LDAP *ld, int erropts );
+struct ldap_searchobj *dsgw_type2searchobj( struct ldap_searchobj *solistp,
+ char *type );
+struct ldap_searchattr *dsgw_label2searchattr( struct ldap_searchobj *sop,
+ char *label );
+struct ldap_searchmatch *dsgw_prompt2searchmatch( struct ldap_searchobj *sop,
+ char *prompt );
+void dsgw_smart_search( LDAP *ld, struct ldap_searchobj *sop,
+ LDAPFiltDesc *lfdp, char *base, char *value, unsigned long options );
+void dsgw_pattern_search( LDAP *ld, char *listtmpl,
+ char *searchdesc2, char *searchdesc3, char *searchdesc4,
+ char *filtpattern, char *filtprefix, char *filtsuffix, char *attr,
+ char *base, int scope, char *value, unsigned long options );
+void dsgw_ldapurl_search( LDAP *ld, char *ldapurl );
+void dsgw_read_entry( LDAP *ld, char *dn, char **ocvals, char *tmplname,
+ char **attrs, unsigned long options );
+int dsgw_ldap_entry_exists( LDAP *ld, char *dn, char **matchedp,
+ unsigned long erropts );
+char **dsgw_rdn_values( char *dn );
+char *dsgw_get_binddn( void );
+int dsgw_bound_as_dn( char *dn, int def_answer );
+int dsgw_dn_cmp( char *dn1, char *dn2 );
+int dsgw_is_dnparent( char *dn1, char *dn2 );
+char *dsgw_dn_parent( char *dn );
+void dsgw_emit_location_popup( LDAP *ld, int argc, char **argv, int erropts );
+
+/*
+ * in config.c
+ */
+dsgwconfig *dsgw_read_config();
+int dsgw_update_dbswitch( dsgwconfig *cfgp, char *handle, int erropts );
+int dsgw_valid_docname(char *filename);
+char *dsgw_get_docdir(void) ;
+
+typedef struct scriptrange {
+ unsigned long sr_min;
+ unsigned long sr_max;
+ struct scriptrange* sr_next;
+} scriptrange_t;
+
+typedef struct scriptorder {
+ unsigned so_caseIgnoreAccents;
+ scriptrange_t** so_sort;
+ scriptrange_t** so_display;
+} scriptorder_t;
+
+scriptorder_t* dsgw_scriptorder();
+
+
+/*
+ * in cookie.c
+ */
+char *dsgw_mkcookie();
+int dsgw_ckdn2passwd( char *cookie, char *dn, char **ret_pw );
+int dsgw_storecookie( char *cookie, char *dn, char *password, time_t expires );
+void dsgw_traverse_db();
+char *dsgw_t2gmts( time_t cktime );
+int dsgw_delcookie( char *cookie );
+void dsgw_closecookiedb( FILE *fp );
+FILE *dsgw_opencookiedb();
+time_t dsgw_getlastpurged( FILE *fp );
+int dsgw_purgedatabase( char *dn );
+
+/*
+ * in emitauth.c
+ */
+void dsgw_emit_auth_form( char *binddn );
+void dsgw_emit_auth_dest( char *binddn, char* authdesturl );
+
+/*
+ * in emitf.c
+ */
+int dsgw_emits (const char* s); /* like fputs(s, stdout) */
+int dsgw_emitf (const char* format, ...); /* like printf */
+int dsgw_emitfv (const char* format, va_list argl);
+char* dsgw_emit_converts_to (char* charset);
+int is_UTF_8 (const char* charset);
+void* dsgw_emitn (void*, const char* buf, size_t len);
+size_t dsgw_fputn (FILE*, const char* buf, size_t len);
+
+#define QUOTATION_JAVASCRIPT 2
+#define QUOTATION_JAVASCRIPT_MULTILINE 3
+void dsgw_quotation_begin (int kind);
+void dsgw_quotation_end();
+int dsgw_quote_emits (int kind, const char* s);
+int dsgw_quote_emitf (int kind, const char* format, ...);
+
+/*
+ * in collate.c
+ */
+#define CASE_EXACT 0
+#define CASE_INSENSITIVE 1
+
+typedef int (*strcmp_t) (const char*, const char*);
+strcmp_t dsgw_strcmp (int);
+
+typedef int (*valcmp_t) (const char**, const char**);
+valcmp_t dsgw_valcmp (int);
+
+extern struct berval* dsgw_strkeygen (int, const char*);
+extern struct berval* dsgw_key_first;
+extern struct berval* dsgw_key_last;
+
+int LDAP_C LDAP_CALLBACK dsgw_keycmp (void*, const struct berval*, const struct berval*);
+void LDAP_C LDAP_CALLBACK dsgw_keyfree(void*, const struct berval*);
+
+/*
+ * in vcard.c
+ */
+void dsgw_vcard_from_entry( LDAP *ld, char *dn, char *mimetype );
+
+/*
+ * utf8compare.c
+ */
+int dsgw_utf8casecmp(unsigned char *s0, unsigned char *s1);
+int dsgw_utf8ncasecmp(unsigned char *s0, unsigned char *s1, int n);
+
+/*
+ * dsgwutil.c
+ */
+/******************** Accept Language List ************************/\
+#if 0 /* defined in i18n.h */
+
+#define MAX_ACCEPT_LANGUAGE 16
+#define MAX_ACCEPT_LENGTH 18
+typedef char ACCEPT_LANGUAGE_LIST[MAX_ACCEPT_LANGUAGE][MAX_ACCEPT_LENGTH];
+#endif /* MAX_ACCEPT_LANGUAGE */
+
+/* AcceptLangList
+ *
+ * Will parse an Accept-Language string of the form
+ * "en;q=1.0,fr;q=0.9..."
+ * The ACCEPT_LANGUAGE_LIST array will be loaded with the ordered
+ * language elements based on the priority of the languages specified.
+ * The number of languages will be returned as the result of the
+ * call.
+ */
+size_t
+AcceptLangList(
+ const char * acceptLanguage,
+ ACCEPT_LANGUAGE_LIST acceptLanguageList
+);
+
+/*
+ * converts a buffer of characters to/from UTF8 from/to a native charset
+ * the given converter will handle the native charset
+ * returns 0 if not all of source was converted, 1 if all of source
+ * was converted, -1 upon error
+ * all of source will be converted if there is enough room in dest to contain
+ * the entire conversion, or if dest is null and we are malloc'ing space for dest
+ */
+int
+dsgw_convert(
+ int direction, /* DSGW_TO_UTF8 or DSGW_FROM_UTF8 */
+ UConverter *nativeConv, /* convert from/to native charset */
+ char **dest, /* *dest is the destination buffer - if *dest == NULL, it will be malloced */
+ size_t destSize, /* size of dest buffer (ignored if *dest == NULL) */
+ size_t *nDest, /* number of chars written to dest */
+ const char *source, /* source buffer to convert - either in native encoding (to) or utf8 (from) */
+ size_t sourceSize, /* size of source buffer - if 0, assume source is NULL terminated */
+ size_t *nSource, /* number of chars read from source buffer */
+ UErrorCode *pErrorCode /* will be reset each time through */
+);
+#define DSGW_TO_UTF8 0
+#define DSGW_FROM_UTF8 1
diff --git a/ldap/clients/dsgw/dsgw_include.mk b/ldap/clients/dsgw/dsgw_include.mk
new file mode 100644
index 00000000..10bafd8a
--- /dev/null
+++ b/ldap/clients/dsgw/dsgw_include.mk
@@ -0,0 +1,23 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+
+# These are macro definitions for use by components of the dsgw
+DSGW_DEFAULT_LANG = en
+DSGW_BASE_RELDIR = $(RELDIR)/clients/dsgw
+DSGW_BIN_RELDIR = $(DSGW_BASE_RELDIR)/bin
+DSGW_HTML_RELDIR = $(DSGW_BASE_RELDIR)/html
+DSGW_CONF_RELDIR = $(DSGW_BASE_RELDIR)/config
+DSGW_PBHTML_RELDIR = $(DSGW_BASE_RELDIR)/pbhtml
+DSGW_PBCONF_RELDIR = $(DSGW_BASE_RELDIR)/pbconfig
+DSGW_MAN_RELDIR = $(RELDIR)/manual/$(DSGW_DEFAULT_LANG)/slapd/gw/manual
+DSGW_INFO_RELDIR = $(RELDIR)/manual/$(DSGW_DEFAULT_LANG)/slapd/gw/info
+
+# generic target to be used to make any directory dependencies
+$(DSGW_BIN_RELDIR) $(DSGW_HTML_RELDIR) $(DSGW_CONF_RELDIR) $(DSGW_PBHTML_RELDIR) \
+ $(DSGW_PBCONF_RELDIR) $(DSGW_MAN_RELDIR) $(DSGW_INFO_RELDIR) \
+ $(DSGW_CONF_RELDIR)/$(DSGW_DEFAULT_LANG) :
+ mkdir -p $@
diff --git a/ldap/clients/dsgw/dsgwutil.c b/ldap/clients/dsgw/dsgwutil.c
new file mode 100644
index 00000000..99e7f2aa
--- /dev/null
+++ b/ldap/clients/dsgw/dsgwutil.c
@@ -0,0 +1,1318 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+/*
+ * dsgwutil.c -- misc. utility functions -- HTTP gateway
+ *
+ * Copyright (c) 1996 Netscape Communications Corp.
+ * All rights reserved.
+ */
+
+#include <limits.h> /* PATH_MAX */
+#include "dsgw.h"
+#include "dbtdsgw.h"
+#ifdef NS_DS
+#include "../lib/libsi18n/gsslapd.h"
+#else /* Admin Server */
+#include "../lib/libsi18n/gsadmserv.h"
+#endif
+
+#ifdef DSGW_DEBUG
+#include <time.h>
+#include <stdarg.h>
+#endif /* DSGW_DEBUG */
+
+static char **vpmap = NULL;
+
+extern char *Versionstr; /* from Versiongw.c */
+
+char *progname; /* set by dsgw_init() */
+dsgwconfig *gc; /* set by dsgw_init() */
+int http_hdr_sent = 0; /* non-zero if header has been sent */
+char **header_lines = NULL; /* null-terminated array of hdr lines */
+char *dsgw_html_body_colors = ""; /* reset by dsgw_init() */
+
+/*Global context variable, telling the CGI's where to look for the config file*/
+char *context = NULL; /* Gotten from the QUERY_STRING */
+char *langwich = NULL; /* The language that libsi18n
+ picks from acceptlang*/
+char *countri = NULL; /* The country that libsi18n
+ picks from acceptlang*/
+
+
+static void figure_out_langwich(void);
+
+/*
+ * dsgw_init -- initialize a dsgw CGI program:
+ * set "progname" global based on "progpath" (normally argv[0])
+ * check that REQUEST_METHOD is in "methods_handled" mask
+ * if request method is "POST", read HTML form variables from stdin
+ * handles the context variable if the CGI was called with a post.
+ * The context variable tells dsgw_read_config what config file
+ * to read.
+ *
+ * If an fatal error occurs, -1 is returned.
+ * If all goes well, returns either DSGW_METHOD_GET or DSGW_METHOD_POST
+ */
+int
+dsgw_init( int argc, char **argv, int methods_handled )
+{
+ char *m, *s;
+ int method;
+ int c, err;
+
+ (void)ADM_Init();
+
+ /* initialize the string database */
+ XP_InitStringDatabase(
+#ifdef NS_DS
+ SERVER_ROOT_PATH "/bin/slapd/property" /* Directory Server Gateway */
+#else
+ SERVER_ROOT_PATH "/admin" /* Admin Server */
+#endif
+ , DATABASE_NAME);
+ /* set default default languages for string database */
+ SetLanguage(CLIENT_LANGUAGE, "");
+ SetLanguage(ADMIN_LANGUAGE, "");
+ SetLanguage(DEFAULT_LANGUAGE, "");
+
+ if (( progname = strchr( argv[0], '/' )) == NULL ) {
+ progname = dsgw_ch_strdup( argv[0] );
+#ifdef _WIN32
+ if (( s = strrchr( progname, '.' )) != NULL
+ && strcasecmp( s, ".EXE" ) == 0 ) {
+ *s = '\0';
+ }
+#endif /* _WIN32 */
+ } else {
+ ++progname;
+ }
+
+ while (( c = getopt( argc, argv, "v" )) != EOF ) {
+ if ( c == 'v' ) {
+ printf( "%s\n", Versionstr );
+ }
+ exit( 0 );
+ }
+
+#ifdef DSGW_DEBUG
+ dsgw_log( "%s started\n", Versionstr );
+#endif
+ err = method = 0;
+
+ /*Have to get the context before we read the config file.*/
+ if (( m = getenv( "REQUEST_METHOD" )) != NULL ) {
+ if ( strcasecmp( m, "GET" ) == 0 || strcasecmp( m, "HEAD" ) == 0 ) {
+ method = DSGW_METHOD_GET;
+ } else if ( strcasecmp( m, "POST" ) == 0 ) {
+ method = DSGW_METHOD_POST;
+ if (( err = dsgw_post_begin( stdin )) == 0 ) {
+ context = dsgw_get_cgi_var( "context", DSGW_CGIVAR_OPTIONAL );
+ }
+ }
+ }
+
+ if ( method == 0 || ( methods_handled & method ) == 0 ) {
+ dsgw_error( DSGW_ERR_BADMETHOD, NULL, DSGW_ERROPT_EXIT, 0, NULL );
+ }
+
+ /*If no context was given, try default.conf.*/
+ if (context == NULL) {
+ context = dsgw_ch_strdup("default");
+ }
+
+ /* If this is a LIte installation: dsgw is not enabled */
+/* this assumes the current dir is <server root>/dsgw/bin; under http servers
+other than admin server, we have to rely on relative paths to find the
+key file */
+
+ if ( is_directory_lite (SERVER_ROOT_PATH)) {
+ dsgw_error( DSGW_ERR_BADCONFIG, XP_GetClientStr(DBT_NotWillingToExecute_),
+ DSGW_ERROPT_EXIT, 0, NULL );
+ }
+ gc = dsgw_read_config();
+
+ gc->gc_charset = dsgw_emit_converts_to (gc->gc_charset);
+ {
+ /* eliminate elements of gc_changeHTML that don't apply to gc_charset: */
+ auto dsgwsubst **s = &(gc->gc_changeHTML);
+ auto char *charset = gc->gc_charset;
+ if ( charset == NULL ) charset = ""; /* Latin-1, implicitly */
+ while ( *s ) {
+ auto char **c = (*s)->dsgwsubst_charsets;
+ if ( c && *c ) {
+ for ( ; *c; ++c ) {
+ if ( strcasecmp( *c, charset ) == 0 ) {
+ break;
+ }
+ }
+ if ( *c == NULL ) {
+ *s = (*s)->dsgwsubst_next; /* eliminate **s */
+ /* This is quick and dirty: we just created garbage. */
+ continue;
+ }
+ }
+ s = &((*s)->dsgwsubst_next);
+ }
+ }
+
+ /* set languages for string database */
+ SetLanguage(CLIENT_LANGUAGE,gc->gc_ClientLanguage);
+ SetLanguage(ADMIN_LANGUAGE,gc->gc_AdminLanguage);
+ SetLanguage(DEFAULT_LANGUAGE,gc->gc_DefaultLanguage);
+
+ /* Figure out the language that libsi18n is using */
+ figure_out_langwich();
+
+ /* Get the port and servername */
+ if (method == DSGW_METHOD_POST) {
+ if (( s = dsgw_get_cgi_var( "ldapport", DSGW_CGIVAR_OPTIONAL )) != NULL ) {
+ gc->gc_ldapport = atoi( s );
+ free( s );
+ }
+ if (( s = dsgw_get_cgi_var( "ldapserver", DSGW_CGIVAR_OPTIONAL )) != NULL ) {
+ gc->gc_ldapserver = s;
+ }
+
+ }
+
+ if (( s = getenv( "HTTPS" )) == NULL || strcasecmp( s, "on" ) == 0 ||
+ ( s = getenv( "HTTPS_KEYSIZE" )) == NULL ) {
+ gc->gc_httpskeysize = 0;
+ } else {
+ gc->gc_httpskeysize = atoi( s );
+ }
+
+ /* set default color scheme */
+ if ( method == DSGW_METHOD_POST && ( s = dsgw_get_cgi_var( "colors",
+ DSGW_CGIVAR_OPTIONAL )) != NULL ) {
+ dsgw_html_body_colors = s;
+ } else if ( gc->gc_admserv ) { /* use same color scheme as libadmin */
+ dsgw_html_body_colors = "BGCOLOR=\"#C0C0C0\" LINK=\"#0000EE\" "
+ "VLINK=\"#551A8B\" ALINK=\"#FF0000\"";
+ } else {
+ dsgw_html_body_colors = "BGCOLOR=\"white\"";
+ }
+
+ return( method );
+}
+
+
+/*
+ * function called back by dsgw_parse_line() to evaluate IF directives.
+ * return non-zero for true, zero for false.
+ */
+int
+dsgw_simple_cond_is_true( int argc, char **argv, void *arg /* UNUSED */ )
+{
+ if ( strcasecmp( argv[0], DSGW_COND_ADMSERV ) == 0 ) {
+ return( gc->gc_admserv );
+ }
+
+ if ( strcasecmp( argv[0], DSGW_COND_LOCALDB ) == 0 ) {
+ return( gc->gc_localdbconf != NULL );
+ }
+
+ if ( strcasecmp( argv[0], DSGW_COND_POSTEDFORMVALUE ) == 0 ) {
+ /*
+ * format of IF statment is:
+ * <-- IF "PostedFormValue" "VARNAME" "VALUE" -->
+ * where VARNAME is the name of a POSTed CGI variable to look for and
+ * VALUE is an optional value to test it against. If VALUE is omitted,
+ * the test is just for the presence of a variable named VARNAME.
+ */
+ char *postedvalue;
+
+ if ( argc < 2 || ( postedvalue = dsgw_get_cgi_var( argv[1],
+ DSGW_CGIVAR_OPTIONAL )) == NULL ) {
+ return( 0 ); /* VARNAME is missing or not posted */
+ } else if ( argc < 3 ) {
+ return( 1 ); /* VALUE is missing, so return true */
+ } else {
+ return( strcasecmp( postedvalue, argv[ 2 ] ) == 0 );
+ }
+ }
+
+ return( 0 );
+}
+
+
+/*
+ * return a pointer to a malloc'd string containing the path to
+ * config. file "filename", based on the DSGW_CONFIGDIR define.
+ * If "filename" contains "..", or "//" this is treated as a fatal
+ * error. If "prefix" is not NULL, it is pre-pended to "filename"
+ */
+char *
+dsgw_file2path( char *prefix, char *filename )
+{
+ char *path, *pattern;
+ int len;
+
+ if ( strstr( filename, "//" ) != NULL ||
+ strstr( filename, ".." ) != NULL ) {
+ dsgw_error( DSGW_ERR_BADFILEPATH, filename, DSGW_ERROPT_EXIT, 0, NULL );
+ }
+
+ if ( prefix == NULL ) {
+ prefix = "";
+ }
+
+ /* allocate buffers with enough extra room to fit "$$LANGDIR/" */
+ len = strlen( prefix ) + strlen( filename ) + 11;
+ if ( NULL != gc->gc_ClientLanguage ) {
+ len += strlen( gc->gc_ClientLanguage );
+ }
+ path = dsgw_ch_malloc( len );
+ pattern = dsgw_ch_malloc( len );
+
+ /* call GetFileForLanguage() to do its I18n magic */
+ sprintf( pattern, "%s$$LANGDIR/%s", prefix, filename );
+ if ( GetFileForLanguage( pattern, gc->gc_ClientLanguage, path ) < 0 ) {
+ sprintf( path, "%s%s", prefix, filename ); /* fallback */
+ }
+ free( pattern );
+
+ return( path );
+}
+
+
+
+/*
+ * return a pointer to a malloc'd string containing the path to
+ * config. file "filename", based on the DSGW_HTMLDIR define.
+ * If "filename" contains "..", or "//" this is treated as a fatal
+ * error. If "prefix" is not NULL, it is pre-pended to "filename"
+ */
+char *
+dsgw_file2htmlpath( char *prefix, char *filename )
+{
+ char *path, *pattern;
+ int len;
+
+ if ( strstr( filename, "//" ) != NULL ||
+ strstr( filename, ".." ) != NULL ) {
+ dsgw_error( DSGW_ERR_BADFILEPATH, filename, DSGW_ERROPT_EXIT, 0, NULL );
+ }
+
+ if ( prefix == NULL ) {
+ prefix = "";
+ }
+
+ /* allocate buffers with enough extra room to fit "$$LANGDIR/" */
+ /*len = strlen( DSGW_HTMLDIR ) + strlen( prefix ) + strlen( filename ) + 11;*/
+ len = strlen( gc->gc_docdir ) + strlen( prefix ) + strlen( filename ) + 11;
+ if ( NULL != gc->gc_ClientLanguage ) {
+ len += strlen( gc->gc_ClientLanguage );
+ }
+
+ path = dsgw_ch_malloc( len );
+ pattern = dsgw_ch_malloc( len );
+
+ /* call GetFileForLanguage() to do its I18n magic */
+ sprintf( pattern, "%s%s$$LANGDIR/%s", gc->gc_docdir, prefix, filename );
+ if ( GetFileForLanguage( pattern, gc->gc_ClientLanguage, path ) < 0 ) {
+ /* use fallback */
+ sprintf( path, "%s/%s%s", gc->gc_docdir, prefix, filename );
+ }
+ free( pattern );
+
+ return( path );
+}
+
+
+/*
+ * malloc that checks for NULL return value and exits upon failure
+ */
+void *
+dsgw_ch_malloc( size_t n )
+{
+ void *p;
+
+ if (( p = malloc( n )) == NULL ) {
+ dsgw_error( DSGW_ERR_NOMEMORY, NULL, DSGW_ERROPT_EXIT, 0, NULL );
+ }
+
+ return( p );
+}
+
+void *
+dsgw_ch_calloc( size_t nelem, size_t elsize )
+{
+ register void *p = calloc( nelem, elsize );
+ if ( p == NULL ) {
+ dsgw_error( DSGW_ERR_NOMEMORY, NULL, DSGW_ERROPT_EXIT, 0, NULL );
+ }
+ return( p );
+}
+
+/*
+ * realloc that checks for NULL return value and exits upon failure
+ * we also handle p == NULL by doing a malloc
+ */
+void *
+dsgw_ch_realloc( void *p, size_t n )
+{
+ if ( p == NULL ) {
+ p = malloc( n );
+ } else {
+ p = realloc( p, n );
+ }
+
+ if ( p == NULL ) {
+ dsgw_error( DSGW_ERR_NOMEMORY, NULL, DSGW_ERROPT_EXIT, 0, NULL );
+ }
+
+ return( p );
+}
+
+
+/*
+ * strdup that checks for NULL return value and exits upon failure
+ */
+char *
+dsgw_ch_strdup( const char *s )
+{
+ int len;
+ char *p;
+
+ len = strlen( s ) + 1;
+ p = dsgw_ch_malloc( len );
+ memcpy( p, s, len );
+ return( p );
+}
+
+
+
+/*
+ * Escape any single- or double-quotes with a '\'. Used when generating
+ * JavaScript code. Returns a malloc'd string which the caller is
+ * responsible for freeing.
+ */
+char *
+dsgw_escape_quotes( char *in )
+{
+ char *out;
+ char *p, *t;
+ int nq = 0;
+
+
+ if ( in == NULL ) {
+ return NULL;
+ }
+ /* count number of quotes */
+ for ( p = in; *p != '\0'; p++ ) {
+ if ( *p == '\'' || *p == '"' ) {
+ nq++;
+ }
+ }
+ out = dsgw_ch_malloc(( p - in ) + nq + 1 );
+ for ( p = in, t = out; *p != '\0'; p++ ) {
+ if ( *p == '\'' || *p == '"' ) {
+ *t++ = '\\';
+ }
+ *t++ = *p;
+ }
+ *t = '\0';
+ return out;
+}
+
+char *
+dsgw_get_translation( char *in )
+{
+ dsgwsubst *p;
+
+#ifdef DSGW_DEBUG
+ dsgw_log( "L10n map table:\n" );
+ for ( p = gc->gc_l10nsets; p ; p = p->dsgwsubst_next ) {
+ dsgw_log( "%s -> %s\n", p->dsgwsubst_from, p->dsgwsubst_to );
+ }
+#endif
+
+ for ( p = gc->gc_l10nsets; p ; p = p->dsgwsubst_next ) {
+ if ( !strcasecmp( in, p->dsgwsubst_from ))
+ return p->dsgwsubst_to;
+ }
+ return in;
+}
+
+static void
+dsgw_puts (const char* s)
+{
+ dsgw_fputn (stdout, s, strlen(s));
+}
+
+#define CONTENT_TYPE "Content-type"
+#define TYPE_HTML "text/html"
+#define VARY "Vary"
+#define VARYLIST "Accept-Language,Accept-Charset,User-Agent"
+
+static const char* ct_prefix = CONTENT_TYPE ": " TYPE_HTML;
+static const char* cs_prefix = ";charset=";
+static const char* vr_prefix = VARY ": ";
+
+/*
+ * Send the headers we've accumulated.
+ */
+void
+dsgw_send_header()
+{
+ int i;
+
+ if ( http_hdr_sent ) {
+ return;
+ }
+ if ( header_lines == NULL ) {
+ dsgw_puts (ct_prefix);
+ if ( gc != NULL && gc->gc_charset != NULL && *gc->gc_charset != '\0' ) {
+ dsgw_puts (cs_prefix); dsgw_puts (gc->gc_charset );
+ }
+ dsgw_puts ("\n");
+ /* send Vary tag if HTTP/1.1 or greater */
+ if ( NULL != gc && gc->gc_httpversion >= 1.1 ) {
+ dsgw_puts (vr_prefix); dsgw_puts (VARYLIST); dsgw_puts ("\n");
+ }
+ } else for ( i = 0; header_lines[ i ] != NULL; i++ ) {
+ dsgw_puts (header_lines[ i ]);
+ dsgw_puts ("\n");
+ }
+ dsgw_puts ("\n");
+ http_hdr_sent = 1;
+}
+
+
+/*
+ * Add a line to the array of header lines.
+ */
+void
+dsgw_add_header( char *line )
+{
+ int i;
+
+ if ( header_lines == NULL ) {
+ header_lines = ( char ** ) dsgw_ch_malloc( 3 * sizeof( char * ));
+ if ( gc != NULL && gc->gc_charset != NULL && *gc->gc_charset != '\0' ) {
+ header_lines[ 0 ] = dsgw_ch_malloc( strlen( ct_prefix ) +
+ strlen( cs_prefix ) + strlen( gc->gc_charset ) + 1 );
+ sprintf( header_lines[ 0 ], "%s%s%s", ct_prefix, cs_prefix,
+ gc->gc_charset );
+ } else {
+ header_lines[ 0 ] = dsgw_ch_strdup( ct_prefix );
+ }
+ /* send Vary tag if HTTP/1.1 or greater */
+ if ( gc->gc_httpversion >= 1.1 ) {
+ header_lines[ 1 ] =
+ dsgw_ch_malloc( strlen( vr_prefix ) + sizeof( VARYLIST ) );
+ /* (char *) */ /* string literal */
+ sprintf( header_lines[ 1 ], "%s%s", vr_prefix, VARYLIST );
+ header_lines[ 2 ] = NULL;
+ } else {
+ header_lines[ 1 ] = NULL;
+ }
+ }
+ for ( i = 0; header_lines[ i ] != NULL; i++ );
+ header_lines = (char **) dsgw_ch_realloc( header_lines,
+ ( i + 2 ) * sizeof( char * ));
+ header_lines[ i ] = dsgw_ch_strdup( line );
+ header_lines[ i + 1 ] = NULL;
+}
+
+
+/*
+ * Check the environment for an authentication cookie. Returns the
+ * entire auth cookie if present, or returns NULL if no such cookie
+ * exists. The returned string must be freed by the caller.
+ */
+char *
+dsgw_get_auth_cookie()
+{
+ char *p, *e, *ckhdr;
+
+ ckhdr = getenv( "HTTP_COOKIE" );
+
+ if ( ckhdr == NULL ) {
+ return NULL;
+ } else {
+ ckhdr = strdup( ckhdr );
+ }
+
+ if (( p = strstr( ckhdr, DSGW_AUTHCKNAME )) == NULL ) {
+ free( ckhdr );
+ return NULL;
+ }
+
+ if (( e = strchr( p, ';' )) != NULL ) {
+ *e = '\0';
+ }
+
+ p = strdup( p );
+ free( ckhdr );
+ return p;
+}
+
+
+
+/*
+ * Break a cookie into its random string and DN parts. The DN is returned
+ * unescaped. The caller is responsible for freeing the returned DN
+ * and random string. Returns 0 on success, -1 on error. If the
+ * cookie has the value "[unauthenticated]", then 0 is returned and
+ * dn is set to NULL;
+ */
+int
+dsgw_parse_cookie( char *cookie, char **rndstr, char **dn )
+{
+ char *p, *r;
+ int rlen;
+
+ if ( cookie == NULL ) {
+ *rndstr = *dn = NULL;
+ return -1;
+ }
+
+ /* Make sure cookie starts with "nsdsgwauth" */
+ if ( strncmp( cookie, DSGW_AUTHCKNAME, strlen( DSGW_AUTHCKNAME ))) {
+ /* Cookie didn't start with "nsdsgwauth" */
+ *rndstr = *dn = NULL;
+ return -1;
+ }
+
+ r = cookie + strlen( DSGW_AUTHCKNAME );
+ if ( *r == '=' ) {
+ r++;
+ }
+
+ /* Is cookie value "[unauthenticated]" ? */
+ if ( !strncmp( r, DSGW_UNAUTHSTR, strlen( DSGW_UNAUTHSTR ))) {
+ *rndstr = strdup( DSGW_UNAUTHSTR );
+ *dn = NULL;
+ return 0;
+ }
+
+ /* find start of DN */
+ if (( p = strrchr( cookie, ':' )) == NULL ) {
+ *rndstr = *dn = NULL;
+ return -1;
+ }
+
+ rlen = p - r + 1;
+ *(rndstr) = dsgw_ch_malloc( rlen );
+ *(rndstr)[ 0 ] = '\0';
+ strncat( *rndstr, r, rlen-1 );
+ (*rndstr)[ rlen - 1 ] = '\0';
+
+ p++;
+ *dn = strdup( p );
+ dsgw_form_unescape( *dn );
+
+ return 0;
+}
+
+/*
+ * Generate a "go home" button with a link to the main entry point for
+ * the gateway. The caller is responsible for any surrounding
+ * HTML, e.g. <FORM> and <TABLE> tags.
+ */
+void
+dsgw_emit_homebutton()
+{
+ dsgw_emitf( "<INPUT TYPE=\"button\" VALUE=\"%s\" "
+ "onClick=\"top.location.href='%s'\">", XP_GetClientStr(DBT_returnToMain_), gc->gc_urlpfxmain /*DSGW_URLPREFIX_MAIN*/ );
+}
+
+
+/*
+ * Generate a help button with a link to the tutor program for
+ * the given help topic. The caller is responsible for any surrounding
+ * HTML, e.g. <FORM> and <TABLE> tags.
+ */
+void
+dsgw_emit_helpbutton( char *topic )
+{
+ if ( topic == NULL ) {
+ return;
+ }
+
+ if ( gc->gc_admserv ) {
+ char *jscript;
+
+ if (( jscript = helpJavaScriptForTopic( topic )) == NULL ) {
+ return;
+ }
+
+ dsgw_emitf( "<INPUT TYPE=\"button\" VALUE=\"%s\" onClick=\"%s\">",
+#define LABEL_HELP "ヘルプ"
+/*LABEL_HELP*/ XP_GetClientStr(DBT_help_), jscript );
+ } else {
+ char *tutorvp;
+
+ tutorvp = dsgw_getvp( DSGW_CGINUM_TUTOR );
+
+ /*
+ * the following is based on code that was found in
+ * ldapserver/lib/libadmin/template.c inside the
+ * helpJavaScriptForTopic() function. We need our own copy because
+ * we use a different tutor CGI. Sigh.
+ */
+ dsgw_emitf( "<INPUT TYPE=\"button\" VALUE=\"%s\" onClick=\""
+ "if ( top.helpwin ) {"
+ " top.helpwin.focus();"
+ " top.helpwin.infotopic.location='%s?!%s&context=%s';"
+ "} else {"
+ " window.open('%s?%s&context=%s', 'infowin_dsgw', "
+ " 'resizable=1,width=400,height=500');"
+ "}\">\n",
+ XP_GetClientStr(DBT_help_1),tutorvp, topic, context,
+ tutorvp, topic, context );
+ }
+}
+
+
+/*
+ * Return malloc'd URL prefix that consists of:
+ * prefix + '/' + HOST:PORT + '/' (not anymore - RJP)
+ * prefix + ? + context=CONTEXT&hp=HOST:PORT&dn=
+ */
+char *
+dsgw_build_urlprefix()
+{
+ char *prefix = dsgw_getvp( DSGW_CGINUM_DOSEARCH );
+ char *p, *urlprefix;
+
+ p = ( gc->gc_ldapserver == NULL ? "" : gc->gc_ldapserver );
+ urlprefix = dsgw_ch_malloc( 16 /* room for "?:port#&dn=" + zero-term. */
+ + strlen( prefix ) + strlen( p ) +strlen(context) + 9);
+ sprintf( urlprefix, "%s?context=%s&hp=%s", prefix, context, p );
+ if ( gc->gc_ldapport != 0 && gc->gc_ldapport != LDAP_PORT ) {
+ sprintf( urlprefix + strlen( urlprefix ), ":%d", gc->gc_ldapport );
+ }
+ strcat( urlprefix,"&dn=" );
+ return( urlprefix );
+}
+
+
+void
+dsgw_addtemplate( dsgwtmpl **tlpp, char *template, int count, char **ocvals )
+{
+ int i;
+ dsgwtmpl *prevtp, *tp;
+
+ tp = (dsgwtmpl *)dsgw_ch_malloc( sizeof( dsgwtmpl ));
+ memset( tp, 0, sizeof( dsgwtmpl ));
+ tp->dstmpl_name = dsgw_ch_strdup( template );
+
+ /* each argument is one objectClass */
+ tp->dstmpl_ocvals = dsgw_ch_malloc(( count + 1 ) * sizeof( char * ));
+ for ( i = 0; i < count; ++i ) {
+ tp->dstmpl_ocvals[ i ] = dsgw_ch_strdup( ocvals[ i ] );
+ }
+ tp->dstmpl_ocvals[ count ] = NULL;
+
+ if ( *tlpp == NULL ) {
+ *tlpp = tp;
+ } else {
+ for ( prevtp = *tlpp; prevtp->dstmpl_next != NULL;
+ prevtp = prevtp->dstmpl_next ) {
+ ;
+ }
+ prevtp->dstmpl_next = tp;
+ }
+}
+
+
+dsgwtmpl *
+dsgw_oc2template( char **ocvals )
+{
+ int i, j, needcnt, matchcnt;
+ dsgwtmpl *tp;
+
+ for ( tp = gc->gc_templates; tp != NULL; tp = tp->dstmpl_next ) {
+ needcnt = matchcnt = 0;
+ for ( i = 0; tp->dstmpl_ocvals[ i ] != NULL; ++i ) {
+ for ( j = 0; ocvals[ j ] != NULL; ++j ) {
+ if ( strcasecmp( ocvals[ j ], tp->dstmpl_ocvals[ i ] ) == 0 ) {
+ ++matchcnt;
+ }
+ }
+ ++needcnt;
+ }
+
+ if ( matchcnt == needcnt ) {
+ return( tp );
+ }
+ }
+
+ return( NULL );
+}
+
+
+
+void
+dsgw_init_searchprefs( struct ldap_searchobj **solistp )
+{
+ char *path;
+
+ path = dsgw_file2path( gc->gc_configdir, DSGW_SEARCHPREFSFILE );
+ if ( ldap_init_searchprefs( path, solistp ) != 0 ) {
+ dsgw_error( DSGW_ERR_BADCONFIG, path, DSGW_ERROPT_EXIT, 0, NULL );
+ }
+ free( path );
+}
+
+
+void
+dsgw_remove_leading_and_trailing_spaces( char **sp )
+{
+ auto char *s, *p;
+
+ if ( sp == NULL || *sp == NULL ) {
+ return;
+ }
+
+ s = *sp;
+
+ /* skip past any leading spaces */
+ while ( ldap_utf8isspace( s )) {
+ LDAP_UTF8INC (s);
+ }
+
+ /* truncate to remove any trailing spaces */
+ if ( *s != '\0' ) {
+ p = s + strlen( s );
+ LDAP_UTF8DEC (p);
+ while (ldap_utf8isspace( p )) {
+ LDAP_UTF8DEC (p);
+ }
+ *LDAP_UTF8INC(p) = '\0';
+ }
+ *sp = s;
+}
+
+
+/*
+ * Return the virtual path prefix for the CGI program specified by
+ * cginum.
+ */
+char *
+dsgw_getvp( int cginum )
+{
+ char *cginame;
+ char *surl;
+ /*char *extpath;*/
+ int i;
+
+ if ( cginum < 1 || cginum > DSGW_MODE_NUMMODES ) {
+ return "";
+ }
+ if ( vpmap == NULL ) {
+ /* note: slot zero of vpmap isn't used */
+ vpmap = dsgw_ch_malloc(( DSGW_MODE_NUMMODES + 1 ) * sizeof( char * ));
+ for ( i = 0; i <= DSGW_MODE_NUMMODES; i++ ) {
+ vpmap[ i ] = NULL;
+ }
+ }
+
+ if ( vpmap[ cginum ] == NULL ) {
+ switch ( cginum ) {
+ case DSGW_CGINUM_DOSEARCH:
+ cginame = DSGW_CGINAME_DOSEARCH;
+ break;
+ case DSGW_CGINUM_BROWSE:
+ cginame = DSGW_CGINAME_BROWSE;
+ break;
+ case DSGW_CGINUM_SEARCH:
+ cginame = DSGW_CGINAME_SEARCH;
+ break;
+ case DSGW_CGINUM_CSEARCH:
+ cginame = DSGW_CGINAME_CSEARCH;
+ break;
+ case DSGW_CGINUM_AUTH:
+ cginame = DSGW_CGINAME_AUTH;
+ break;
+ case DSGW_CGINUM_EDIT:
+ cginame = DSGW_CGINAME_EDIT;
+ break;
+ case DSGW_CGINUM_DOMODIFY:
+ cginame = DSGW_CGINAME_DOMODIFY;
+ break;
+ case DSGW_CGINUM_DNEDIT:
+ cginame = DSGW_CGINAME_DNEDIT;
+ break;
+ case DSGW_CGINUM_TUTOR:
+ cginame = DSGW_CGINAME_TUTOR;
+ break;
+ case DSGW_CGINUM_LANG:
+ cginame = DSGW_CGINAME_LANG;
+ break;
+ default:
+ return "";
+ }
+
+ if (( surl = getenv( "SERVER_URL" )) == NULL ) {
+ surl = "";
+ }
+
+ /*if ( gc->gc_admserv ) {
+ *
+ * include "/admin-serv/" or "/user-environment/" if appropriate
+ *
+ * if ( gc->gc_enduser ) {
+ * extpath = DSGW_USER_ADM_BINDIR;
+ * } else {
+ * extpath = DSGW_ADMSERV_BINDIR;
+ * }
+ * } else {
+ * extpath = "";
+ * }
+ */
+ vpmap[ cginum ] = dsgw_ch_malloc( strlen( gc->gc_urlpfxcgi ) + strlen( surl )
+ /*+ strlen( extpath ) */
+ + strlen( cginame ) + 2 );
+
+ sprintf( vpmap[ cginum ], "%s%s%s", surl,
+ /*extpath, */
+ gc->gc_urlpfxcgi, cginame );
+
+ /*sprintf( vpmap[ cginum ], "%s%s%s", extpath, gc->gc_urlpfxcgi, cginame );*/
+ }
+ return( vpmap[ cginum ]);
+}
+
+
+#ifdef DSGW_DEBUG
+#include <stdio.h> /* FILE */
+
+/* Returns a directory path used for tmp log files. */
+char *
+dsgw_get_tmp_log_dir()
+{
+ static char tmp_log[MAXPATHLEN];
+ char *install_dir = NULL;
+
+#if defined( XP_WIN32 )
+ int ilen;
+ char *pch;
+ char tmp_dir[_MAX_PATH];
+#endif
+ install_dir = getenv("NETSITE_ROOT");
+ if (install_dir != NULL) {
+ sprintf(tmp_log, "%s/tmp/dsgw", install_dir);
+#if defined( XP_WIN32 )
+ for(ilen=0; ilen < strlen(tmp_log); ilen++)
+ {
+ if(tmp_log[ilen]=='/')
+ tmp_log[ilen]='\\';
+ }
+#endif /* XP_WIN32 */
+ } else {
+#if defined( XP_WIN32 )
+ ilen = strlen(tmp_dir);
+ GetTempPath( ilen+1, tmp_dir );
+ /* Remove trailing slash. */
+ pch = tmp_dir[ilen-1];
+ if( pch == '\\' || pch == '/' )
+ tmp_dir[ilen-1] = '\0';
+ sprintf(tmp_log, "%s\\DSGW", tmp_dir);
+#else
+ sprintf(tmp_log, "/tmp/dsgw");
+#endif
+ }
+ return tmp_log;
+}
+
+static FILE* log_out_fp = NULL;
+
+void
+dsgw_log_out (const char* s, size_t n)
+{
+ if ( log_out_fp == NULL ) {
+ char fname[ 256 ];
+ char* format =
+#if defined( XP_WIN32 )
+ "%s\\log%.50s.out";
+#else
+ "%s/%.50s.out";
+#endif
+ PR_snprintf( fname, 256, format, dsgw_get_tmp_log_dir(), progname );
+ log_out_fp = fopen( fname, "w" );
+ }
+ if (log_out_fp != NULL) {
+ fwrite (s, sizeof(char), n, log_out_fp);
+ fflush (log_out_fp);
+ }
+}
+
+
+/*
+ * logging function -- called like printf(); syslog-like output is written
+ * to a file called /tmp/progname where progname is derived from argv[0]
+ */
+static FILE* logfp = NULL;
+void
+dsgw_log( char *fmt, ... )
+{
+ time_t t;
+ char timebuf[ 20 ];
+ va_list ap;
+
+ t = time( NULL );
+
+ if ( logfp == NULL ) {
+ char fname[ 256 ];
+ char* format =
+#if defined( XP_WIN32 )
+ "%s\\log%.50s";
+#else
+ "%s/%.50s";
+#endif
+ PR_snprintf( fname, 256, format, dsgw_get_tmp_log_dir(), progname );
+ if (( logfp = fopen( fname, "a+" )) == NULL ) {
+ return;
+ }
+ }
+
+ memcpy( timebuf, ctime( &t ), 19 );
+ timebuf[ 19 ] = '\0';
+ fprintf( logfp, "%s %s: ", timebuf, progname );
+
+ va_start( ap, fmt );
+ (void)vfprintf( logfp, fmt, ap );
+ va_end( ap );
+ fflush( logfp );
+}
+
+
+/*
+ * log the contents of a NULL-terminated array of character strings
+ */
+void
+dsgw_logstringarray( char *arrayname, char **strs )
+{
+ int i;
+
+ if ( strs == NULL || strs[ 0 ] == NULL ) {
+ dsgw_log( "Array %s: empty\n", arrayname );
+ } else {
+ dsgw_log( "Array %s:\n", arrayname );
+
+ for ( i = 0; strs[ i ] != NULL; ++i ) {
+ dsgw_log( "\t%2d: \"%s\"\n", i, strs[ i ] );
+ }
+ }
+}
+#endif /* DSGW_DEBUG */
+
+void
+dsgw_head_begin()
+{
+ dsgw_emits ("<HEAD>");
+ if ( gc != NULL && gc->gc_charset != NULL && *gc->gc_charset != '\0' ) {
+ dsgw_emitf ("<META HTTP-EQUIV=\"%s\" CONTENT=\"%s%s%s\">",
+ CONTENT_TYPE, TYPE_HTML, cs_prefix, gc->gc_charset);
+ }
+}
+
+void
+dsgw_quote_emptyFrame()
+{
+ dsgw_quotation_begin( QUOTATION_JAVASCRIPT_MULTILINE );
+ dsgw_emits( "<HTML>" );
+ dsgw_emitf( "<BODY %s></BODY></HTML>", dsgw_html_body_colors );
+ dsgw_quotation_end();
+}
+
+/* This function contains code to alert the user that their password has
+ already expired. It gives them an opportunity to change it. */
+void
+dsgw_password_expired_alert( char *dn )
+{
+ char *ufn, *encodeddn = dsgw_strdup_escaped( dn );
+
+ dsgw_send_header();
+ dsgw_emits( "<HTML>" );
+ dsgw_head_begin();
+
+ dsgw_emits( "\n"
+ "<TITLE>Password Expired</TITLE>\n"
+ "<SCRIPT LANGUAGE=\"JavaScript\">\n"
+ "<!-- Hide from non-JavaScript browsers\n" );
+
+ if ( encodeddn != NULL && strlen( encodeddn ) > 0 ) {
+ dsgw_emitf( "var editdesturl = '%s?passwd&dn=%s&context=%s';\n",
+ dsgw_getvp( DSGW_CGINUM_EDIT ), encodeddn, context );
+ } else {
+ dsgw_emitf( "var editdesturl=null;\n" );
+ }
+
+ dsgw_emits( "function EditPassword()\n"
+ "{\n"
+ " if ( editdesturl != null ) {\n"
+ " top.location.href = editdesturl;\n"
+ " } else {\n"
+ " top.close();\n"
+ " }\n"
+ "}\n"
+ "var contButtons = ");
+
+ dsgw_quotation_begin (QUOTATION_JAVASCRIPT_MULTILINE);
+ dsgw_form_begin ("bForm", NULL);
+ dsgw_emits(
+ "\n<TABLE BORDER=2 WIDTH=100%>\n"
+ "<TD ALIGN=CENTER WIDTH=50%>\n"
+ "<INPUT TYPE=BUTTON NAME=\"contButton\""
+ "VALUE=\"");
+ dsgw_emits( XP_GetClientStr( DBT_EditPassword_ ));
+ dsgw_emits(
+ "\" onClick=\"EditPassword();\">\n"
+ "<TD ALIGN=CENTER WIDTH=50%%>" );
+ dsgw_emit_helpbutton( "AUTHSUCCESS" );
+ dsgw_emits(
+ "\n</TABLE></FORM>");
+ dsgw_quotation_end(); dsgw_emits(";\n");
+
+ dsgw_emits(
+ "var noContButtons = ");
+ dsgw_quotation_begin (QUOTATION_JAVASCRIPT_MULTILINE);
+ dsgw_emits( XP_GetClientStr( DBT_ToContinue_ ));
+ dsgw_form_begin( "bForm", NULL );
+ dsgw_emits(
+ "\n<TABLE BORDER=2 WIDTH=100%>"
+ "\n<TD ALIGN=CENTER WIDTH=50%>" );
+ dsgw_emit_homebutton();
+ dsgw_emits( "\n<TD ALIGN=CENTER WIDTH=50%%>" );
+ dsgw_emit_helpbutton( "AUTHPROBLEM" );
+ dsgw_emits(
+ "\n</TABLE></FORM>\n");
+ dsgw_quotation_end(); dsgw_emits(";\n");
+
+#ifdef NOTFORNOW
+ /* ldap_dn2ufn currently gobbles up 'dc' so don't use it for */
+ /* now */
+ ufn = ldap_dn2ufn( dn );
+#endif
+
+ dsgw_emitf(
+ "// End hiding -->\n"
+ "</SCRIPT>\n"
+ "</HEAD>\n<BODY %s>\n"
+ "<CENTER>\n",
+ dsgw_html_body_colors );
+ dsgw_emitf( XP_GetClientStr( DBT_PasswordExpiredFor_ ), dn );
+ dsgw_emits( "</CENTER>\n" );
+ dsgw_emits( XP_GetClientStr( DBT_YourPasswordHasExpired_ ));
+ dsgw_emits( XP_GetClientStr( DBT_YouMustChangeYourPasswd_ ));
+ dsgw_emits( "<P>\n"
+ "<TR>\n"
+ "<SCRIPT LANGUAGE=\"JavaScript\">\n"
+ "<!-- Hide from non-JavaScript browsers\n"
+ "if ( editdesturl != null ) {\n"
+ " document.write( contButtons );\n"
+ "} else {\n"
+ " document.write( noContButtons );\n"
+ "}\n"
+ "// End hiding -->\n"
+ "</SCRIPT>\n"
+ "</BODY>\n</HTML>\n" );
+}
+
+/* Pulled from ldapserver/ldap/servers/slapd/time.c */
+
+time_t
+dsgw_current_time()
+{
+ return( time( (time_t *)0 ));
+}
+
+#define mktime_r(from) mktime (from)
+
+time_t
+dsgw_time_plus_sec (time_t l, long r)
+ /* return the point in time 'r' seconds after 'l'. */
+{
+ /* On many (but not all) platforms this is simply l + r;
+ perhaps it would be better to implement it that way. */
+ struct tm t;
+ if (r == 0) return l; /* performance optimization */
+#ifdef _WIN32
+ {
+ struct tm *pt = localtime( &l );
+ memcpy(&t, pt, sizeof(struct tm) );
+ }
+#else
+ localtime_r (&l, &t);
+#endif
+ /* Conceptually, we want to do: t.tm_sec += r;
+ but to avoid overflowing fields: */
+ r += t.tm_sec; t.tm_sec = r % 60; r /= 60;
+ r += t.tm_min; t.tm_min = r % 60; r /= 60;
+ r += t.tm_hour; t.tm_hour = r % 24; r /= 24;
+ t.tm_mday += r; /* may be > 31; mktime_r() must handle this */
+
+ /* These constants are chosen to work when the maximum
+ field values are 127 (the worst case) or more.
+ Perhaps this is excessively conservative. */
+ return mktime_r (&t);
+}
+
+/*
+ * Function: figure_out_langwich
+ *
+ * Returns: nothing
+ *
+ * Description: figures out the language/locale that libsi18n will
+ * use. This is so that non libsi18n functions can display
+ * stuff in the same language.
+ *
+ * Author: RJP
+ *
+ */
+static void
+figure_out_langwich(void)
+{
+ char *path = NULL;
+ char *iter = NULL;
+ char *p = NULL;
+ char *before = NULL;
+
+ /* Get a path to the html directory */
+ path = dsgw_file2path( gc->gc_configdir, "dsgwfilter.conf");
+
+ before = path;
+
+ /* Find the lang subdirectory part */
+ for ( p = ldap_utf8strtok_r( path, DSGW_PATHSEP_STR, &iter );
+ p != NULL && *p != '\0' && strcmp(p, "dsgwfilter.conf") != 0;
+ p = ldap_utf8strtok_r( NULL, DSGW_PATHSEP_STR, &iter )){
+ before = p;
+ }
+
+ /* If there is one, copy it. */
+ if (before != NULL && *before != '\0') {
+ langwich = dsgw_ch_strdup(before);
+ }
+
+ iter = NULL;
+
+ /* split off any country specification */
+ ldap_utf8strtok_r( langwich, "-", &iter );
+ countri = iter;
+
+ free (path);
+
+}
+
+/*
+ * Accept-Language = "Accept-Language" ":"
+ * 1#( language-range [ ";" "q" "=" qvalue ] )
+ * language-range = ( ( 1*8ALPHA *( "-" 1*8ALPHA ) ) | "*" )
+ *
+ * NLS_AccLangList() assumes that "Accept-Language:" has already
+ * been stripped off. It takes as input
+ *
+ * 1#( ( ( 1*8ALPHA *( "-" 1*8ALPHA ) ) | "*" ) [ ";" "q" "=" qvalue ] )
+ *
+ * and returns a list of languages, ordered by qvalues, in
+ * the array NLS_ACCEPT_LANGUAGE_LIST.
+ *
+ * If there are to many languages (>NLS_MAX_ACCEPT_LANGUAGE) the excess
+ * is ignored. If the language-range is too long (>NLS_MAX_ACCEPT_LENGTH),
+ * the language-range is ignored. In these cases, NLS_AccLangList()
+ * will quietly return, perhaps with numLang = 0. numLang is
+ * returned by the function.
+ */
+
+
+size_t
+AcceptLangList(const char* AcceptLanguage,
+ ACCEPT_LANGUAGE_LIST AcceptLanguageList)
+{
+ char* input;
+ char* cPtr;
+ char* cPtr1;
+ char* cPtr2;
+ int i;
+ int j;
+ int countLang = 0;
+
+ input = dsgw_ch_strdup(AcceptLanguage);
+ if (input == (char*)NULL){
+ return 0;
+ }
+
+ cPtr1 = input-1;
+ cPtr2 = input;
+
+ /* put in standard form */
+ while (*(++cPtr1)) {
+ if (isalpha(*cPtr1)) *cPtr2++ = tolower(*cPtr1); /* force lower case */
+ else if (isspace(*cPtr1)); /* ignore any space */
+ else if (*cPtr1=='-') *cPtr2++ = '_'; /* "-" -> "_" */
+ else if (*cPtr1=='*'); /* ignore "*" */
+ else *cPtr2++ = *cPtr1; /* else unchanged */
+ }
+ *cPtr2 = '\0';
+
+ countLang = 0;
+
+ if (strchr(input,';')) {
+ /* deal with the quality values */
+
+ float qvalue[MAX_ACCEPT_LANGUAGE];
+ float qSwap;
+ float bias = 0.0f;
+ char* ptrLanguage[MAX_ACCEPT_LANGUAGE];
+ char* ptrSwap;
+
+ cPtr = strtok(input,",");
+ while (cPtr) {
+ qvalue[countLang] = 1.0f;
+ if (cPtr1 = strchr(cPtr,';')) {
+ sscanf(cPtr1,";q=%f",&qvalue[countLang]);
+ *cPtr1 = '\0';
+ }
+ if (strlen(cPtr)<MAX_ACCEPT_LENGTH) { /* ignore if too long */
+ qvalue[countLang] -= (bias += 0.0001f); /* to insure original order */
+ ptrLanguage[countLang++] = cPtr;
+ if (countLang>=MAX_ACCEPT_LANGUAGE) break; /* quit if too many */
+ }
+ cPtr = strtok(NULL,",");
+ }
+
+ /* sort according to decending qvalue */
+ /* not a very good algorithm, but count is not likely large */
+ for ( i=0 ; i<countLang-1 ; i++ ) {
+ for ( j=i+1 ; j<countLang ; j++ ) {
+ if (qvalue[i]<qvalue[j]) {
+ qSwap = qvalue[i];
+ qvalue[i] = qvalue[j];
+ qvalue[j] = qSwap;
+ ptrSwap = ptrLanguage[i];
+ ptrLanguage[i] = ptrLanguage[j];
+ ptrLanguage[j] = ptrSwap;
+ }
+ }
+ }
+ for ( i=0 ; i<countLang ; i++ ) {
+ strcpy(AcceptLanguageList[i],ptrLanguage[i]);
+ }
+
+ } else {
+ /* simple case: no quality values */
+
+ cPtr = strtok(input,",");
+ while (cPtr) {
+ if (strlen(cPtr)<MAX_ACCEPT_LENGTH) { /* ignore if too long */
+ strcpy(AcceptLanguageList[countLang++],cPtr);
+ if (countLang>=MAX_ACCEPT_LANGUAGE) break; /* quit if too many */
+ }
+ cPtr = strtok(NULL,",");
+ }
+ }
+
+ free(input);
+
+ return countLang;
+}
diff --git a/ldap/clients/dsgw/dsimpldif.c b/ldap/clients/dsgw/dsimpldif.c
new file mode 100644
index 00000000..16550f87
--- /dev/null
+++ b/ldap/clients/dsgw/dsimpldif.c
@@ -0,0 +1,150 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+/*
+ * dsimpldif.c -- CGI import ldif file handler -- directory gateway
+ *
+ * Copyright (c) 1996 Netscape Communications Corp.
+ * All rights reserved.
+ */
+
+#include "dsgw.h"
+static void handle_request( int reqmethod );
+static void handle_post();
+
+static char *ldiffile;
+static int erase = 0, stop = 1;
+
+main( argc, argv, env )
+ int argc;
+ char *argv[];
+#ifdef DSGW_DEBUG
+ char *env[];
+#endif
+{
+ int reqmethod;
+
+ reqmethod = dsgw_init( argc, argv, DSGW_METHOD_POST | DSGW_METHOD_GET );
+ dsgw_send_header();
+
+#ifdef DSGW_DEBUG
+ dsgw_logstringarray( "env", env );
+#endif
+
+ handle_request( reqmethod );
+
+ exit( 0 );
+}
+
+
+#define DSGWCONFIG_EMPTY_IF_NULL( s ) ( (s) == NULL ? "" : (s) )
+
+
+static void
+handle_request( int reqmethod )
+{
+ FILE *fp;
+ char **argv, *buf, line[ BIG_LINE ];
+ char *checked = " CHECKED ";
+ char *str_valuefmt = " VALUE=\"%s\" ";
+ int did_post, argc;
+
+ buf = dsgw_ch_malloc( strlen( progname ) + 6 ); /* room for ".html\0" */
+ sprintf( buf, "%s.html", progname );
+ fp = dsgw_open_html_file( buf, DSGW_ERROPT_EXIT );
+ free( buf );
+ did_post = 0;
+
+ while ( dsgw_next_html_line( fp, line )) {
+ if ( dsgw_parse_line( line, &argc, &argv, 0, dsgw_simple_cond_is_true,
+ NULL )) {
+ if ( dsgw_directive_is( line, DRCT_DS_INLINE_POST_RESULTS )) {
+ if ( !did_post && reqmethod == DSGW_METHOD_POST ) {
+ handle_post();
+ did_post = 1;
+ }
+ } else if ( dsgw_directive_is( line, DS_LDIF_FILE )) {
+ dsgw_emitf( str_valuefmt,
+ DSGWCONFIG_EMPTY_IF_NULL( ldiffile ));
+ } else if ( dsgw_directive_is( line, DS_CHECKED_IF_ERASE )) {
+ if ( erase ) {
+ dsgw_emits( checked );
+ }
+ } else if ( dsgw_directive_is( line, DS_CHECKED_IF_NOTERASE )) {
+ if ( !erase ) {
+ dsgw_emits( checked );
+ }
+ } else if ( dsgw_directive_is( line, DS_CHECKED_IF_STOP )) {
+ if ( stop ) {
+ dsgw_emits( checked );
+ }
+ } else if ( dsgw_directive_is( line, DS_CHECKED_IF_NOTSTOP )) {
+ if ( !stop ) {
+ dsgw_emits( checked );
+ }
+ }
+ }
+ }
+
+ fclose( fp );
+}
+
+
+static void
+handle_post()
+{
+ char cmd[ BIG_LINE ], path[BIG_LINE ];
+ char *userdb_path;
+
+ ldiffile = dsgw_get_cgi_var( "ldif", DSGW_CGIVAR_REQUIRED );
+ erase = dsgw_get_boolean_var( "erase", DSGW_CGIVAR_REQUIRED, 0 );
+ stop = dsgw_get_boolean_var( "stop", DSGW_CGIVAR_REQUIRED, 0 );
+
+ if (erase) {
+ if ( gc->gc_localdbconf == NULL) {
+ /* don't erase the real ldap database */
+ dsgw_error( DSGW_ERR_DB_ERASE, NULL, DSGW_ERROPT_EXIT, 0, NULL );
+ }
+ /* erase the local database */
+ if ( erase_db() != 0 ) {
+ return;
+ }
+ }
+
+ if (( userdb_path = get_userdb_dir()) == NULL ) {
+ dsgw_error( DSGW_ERR_USERDB_PATH, NULL, DSGW_ERROPT_EXIT, 0, NULL );
+ }
+
+ if (gc->gc_localdbconf == NULL) {
+ /* remote */
+ PR_snprintf (cmd, BIG_LINE, "./%s -a %s -h %s -p %d -f %s > %s 2>&1",
+ DSGW_LDAPMODIFY, stop?"":"-c",gc->gc_ldapserver,
+ gc->gc_ldapport, ldiffile, DSGW_NULL_DEVICE);
+ }
+ else {
+ /* local database */
+ PR_snprintf (cmd, BIG_LINE, "./%s -a %s -C %s -f %s > %s 2>&1",
+ DSGW_LDAPMODIFY, stop?"":"-c", gc->gc_localdbconf, ldiffile,
+ DSGW_NULL_DEVICE);
+ }
+ PR_snprintf (path, BIG_LINE, "%s%s", userdb_path, DSGW_TOOLSDIR);
+ chdir ( path );
+ fflush (stdout);
+ if (system (cmd) == 0) {
+ /*
+ * success: display status message
+ */
+ dsgw_emits(
+ "<FONT SIZE=\"+1\">\n<P>The ldif file has been added.\n</FONT>\n " );
+ }
+ else {
+ dsgw_emits(
+ "<FONT SIZE=\"+1\">\n<P>The ldif file could not be added.\n</FONT>\n " );
+ }
+
+ dsgw_emits( "<HR>\n" );
+}
+
diff --git a/ldap/clients/dsgw/edit.c b/ldap/clients/dsgw/edit.c
new file mode 100644
index 00000000..c67af18f
--- /dev/null
+++ b/ldap/clients/dsgw/edit.c
@@ -0,0 +1,256 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+/*
+ * edit.c -- CGI editable entry display -- HTTP gateway
+ *
+ * Copyright (c) 1996 Netscape Communications Corp.
+ * All rights reserved.
+ */
+
+#include "dsgw.h"
+#include "dbtdsgw.h"
+
+static void get_request(char *dn, char *tmplname,
+ char *parent, unsigned long options);
+
+
+int main( argc, argv, env )
+ int argc;
+ char *argv[];
+#ifdef DSGW_DEBUG
+ char *env[];
+#endif
+{
+
+
+ char *dn, *tmplname, *p, *parent;
+ unsigned long options;
+
+ /*
+ * If the QUERY_STRING is non-NULL, it looks like this:
+ *
+ * template [&CONTEXT=context] [ &INFO=infostring ] [ &ADD ] [ &DN=dn ] \
+ * [&DNATTR=attrname&DNDESC=description]
+ *
+ * where:
+ * "template" is the name of the edit template to use for display,
+ * "dn" is escaped dn,
+ * "infostring" is a message used to replace DS_LAST_OP_INFO directives
+ * "attrname" is the name of a DN-valued attribute
+ * "dndesc" is the destriptive name of the above DN-valued attribute
+ *
+ * If "&ADD" is present, we check to make sure the entry
+ * does not exist, then we check that the parent entry exists, and then
+ * we present an "add entry" form.
+ *
+ * Note: original form http://host/edit/dn[/...]?template[&...] is
+ * supported for keeping backward compatibility.
+ * But passing DN as PATH_INFO is NOT recommended.
+ * Since PATH_INFO is passed to CGI as is (non-escaped),
+ * the content has a risk to get broken especially when
+ * it contains 8-bit UTF-8 data. (This is a known problem
+ * on localized Windows machines.)
+ */
+
+ options = DSGW_DISPLAY_OPT_EDITABLE;
+ dn = NULL;
+#ifndef __LP64__
+#ifdef HPUX
+ /* call the static constructors in libnls */
+ _main();
+#endif
+#endif
+
+ if (( tmplname = getenv( "QUERY_STRING" )) != NULL && *tmplname != '\0' ) {
+ tmplname = dsgw_ch_strdup( tmplname );
+ while ( tmplname != NULL && ((( p = strrchr( tmplname, '&' )) != NULL ) || (p=tmplname) != NULL )) {
+ if (p == tmplname) {
+ tmplname = NULL;
+ } else {
+ *p++ = '\0';
+ }
+
+ if ( strcasecmp( p, "add" ) == 0 ) {
+ options |= DSGW_DISPLAY_OPT_ADDING;
+ if (( p = strrchr( tmplname, '&' )) != NULL ) {
+ *p++ = '\0';
+ }
+ }
+
+ if ( p != NULL && strncasecmp( p, "info=", 5 ) == 0 ) {
+ dsgw_last_op_info = dsgw_ch_strdup( p + 5 );
+ dsgw_form_unescape( dsgw_last_op_info );
+ continue;
+ }
+ if ( p != NULL && strncasecmp( p, "dn=", 3 ) == 0 ) {
+ dn = dsgw_ch_strdup( p + 3 );
+ dsgw_form_unescape( dn );
+ continue;
+ }
+ if ( p != NULL && strncasecmp( p, "dnattr=", 7 ) == 0 ) {
+ dsgw_dnattr = dsgw_ch_strdup( p + 7 );
+ dsgw_form_unescape( dsgw_dnattr );
+ continue;
+ }
+ if ( p != NULL && strncasecmp( p, "dndesc=", 7 ) == 0 ) {
+ dsgw_dndesc = dsgw_ch_strdup( p + 7 );
+ dsgw_form_unescape( dsgw_dndesc );
+ continue;
+ }
+ if ( p != NULL && strncasecmp( p, "context=", 8 ) == 0) {
+ context = dsgw_ch_strdup( p + 8 );
+ dsgw_form_unescape( context );
+ continue;
+ }
+
+ /*
+ * If none of the if-statements above matched,
+ * then it's the template name
+ */
+ tmplname = p;
+ break;
+ }
+
+ } else {
+ tmplname = NULL;
+ }
+
+ (void)dsgw_init( argc, argv, DSGW_METHOD_GET );
+ dsgw_send_header();
+
+#ifdef DSGW_DEBUG
+ dsgw_logstringarray( "env", env );
+#endif
+
+ get_request(dn, tmplname, parent, options);
+
+ exit( 0 );
+}
+
+
+static void
+get_request(char *dn, char *tmplname, char *parent, unsigned long options)
+{
+ LDAP *ld;
+
+ if ( dn == NULL ) { /* not found in QUERY_STRING */
+ dsgw_error( DSGW_ERR_MISSINGINPUT, NULL, DSGW_ERROPT_EXIT, 0, NULL );
+ }
+
+#ifdef DSGW_DEBUG
+ dsgw_log( "get_request: dn: \"%s\", tmplname: \"%s\" "
+ "dnattr: \"%s\", dndesc: \"%s\"\n", dn,
+ ( tmplname == NULL ) ? "(null)" : tmplname,
+ ( dsgw_dnattr == NULL ) ? "(null)" : dsgw_dnattr,
+ ( dsgw_dndesc == NULL ) ? "(null)" : dsgw_dndesc );
+#endif
+
+ (void)dsgw_init_ldap( &ld, NULL, 0, 0);
+
+ if (( options & DSGW_DISPLAY_OPT_ADDING ) == 0 ) {
+ /*
+ * editing an existing entry -- if no DN is provided and we are running
+ * under the admin server, try to get DN from admin. server
+ */
+ if ( *dn == '\0' ) {
+ (void)dsgw_get_adm_identity( ld, NULL, &dn, NULL,
+ DSGW_ERROPT_EXIT );
+ }
+
+ dsgw_read_entry( ld, dn, NULL, tmplname, NULL, options );
+
+ } else {
+ dsgwtmplinfo *tip;
+ char *matched;
+
+ /*
+ * new entry -- check to make sure it doesn't exist
+ */
+ if ( dsgw_ldap_entry_exists( ld, dn, &matched, DSGW_ERROPT_EXIT )) {
+ char **rdns;
+
+ dsgw_html_begin( XP_GetClientStr(DBT_entryAlreadyExists_), 1 );
+ dsgw_emits( XP_GetClientStr(DBT_anEntryNamed_) );
+ rdns = ldap_explode_dn( dn, 1 );
+ dsgw_html_href(
+ dsgw_build_urlprefix(),
+ dn, ( rdns == NULL || rdns[ 0 ] == NULL ) ? dn : rdns[ 0 ],
+ NULL, XP_GetClientStr(DBT_onmouseoverWindowStatusClickHere_) );
+ if ( rdns != NULL ) {
+ ldap_value_free( rdns );
+ }
+ dsgw_emits( XP_GetClientStr(DBT_alreadyExistsPPleaseChooseAnothe_) );
+
+ dsgw_form_begin( NULL, NULL );
+ dsgw_emits( "\n<CENTER><TABLE border=2 width=\"100%\"><TR>\n" );
+ dsgw_emits( "<TD WIDTH=\"50%\" ALIGN=\"center\">\n" );
+ dsgw_emitf( "<INPUT TYPE=\"button\" VALUE=\"%s\" "
+ "onClick=\"parent.close()\">", XP_GetClientStr(DBT_closeWindow_1) );
+ dsgw_emits( "<TD WIDTH=\"50%\" ALIGN=\"center\">\n" );
+ dsgw_emit_helpbutton( "ENTRYEXISTS" );
+ dsgw_emits( "\n</TABLE></CENTER></FORM>\n" );
+ dsgw_html_end();
+ } else if ( !dsgw_is_dnparent( matched, dn ) &&
+ !dsgw_dn_cmp( dn, gc->gc_ldapsearchbase )) {
+ /*
+ * The parent entry does not exist, and the dn being added is not
+ * the same as the suffix for which the gateway is configured.
+ */
+ dsgw_html_begin( XP_GetClientStr(DBT_parentEntryDoesNotExist_), 1 );
+ dsgw_emitf( XP_GetClientStr(DBT_youCannotAddAnEntryByTheNamePBSB_),
+ dn );
+ parent = dsgw_dn_parent( dn );
+ if ( parent == NULL || strlen( parent ) == 0 ) {
+ dsgw_emits( XP_GetClientStr(DBT_itsParentN_) );
+ } else {
+ dsgw_emitf( XP_GetClientStr(DBT_anEntryNamedPBSBN_), parent );
+ free( parent );
+ }
+ dsgw_form_begin( NULL, NULL );
+ dsgw_emits( "\n<CENTER><TABLE border=2 width=\"100%\"><TR>\n" );
+ dsgw_emits( "<TD WIDTH=\"50%\" ALIGN=\"center\">\n" );
+ dsgw_emitf( "<INPUT TYPE=\"button\" VALUE=\"%s\" "
+ "onClick=\"parent.close()\">", XP_GetClientStr(DBT_closeWindow_2) );
+ dsgw_emits( "<TD WIDTH=\"50%\" ALIGN=\"center\">\n" );
+ dsgw_emit_helpbutton( "ADD_NOPARENT" );
+ dsgw_emits( "\n</TABLE></CENTER></FORM>\n" );
+ dsgw_html_end();
+ } else {
+ /*
+ * The parent exists, or the user is adding the entry whose DN
+ * is the same as the suffix for which the gateway is configured.
+ * Display the "add entry" form.
+ */
+
+ if ( tmplname == NULL ) {
+#ifdef DSGW_DEBUG
+ dsgw_log( "NULL tmplname\n" );
+#endif
+ dsgw_error( DSGW_ERR_MISSINGINPUT,
+ XP_GetClientStr(DBT_missingTemplate_),
+ DSGW_ERROPT_EXIT, 0, NULL );
+ }
+
+ tip = dsgw_display_init( DSGW_TMPLTYPE_DISPLAY, tmplname, options );
+
+ dsgw_display_entry( tip, ld, NULL, NULL, dn );
+ dsgw_display_done( tip );
+ }
+ }
+
+ ldap_unbind( ld );
+}
+
+
+
+
+
+
+
+
+
+
diff --git a/ldap/clients/dsgw/emitauth.c b/ldap/clients/dsgw/emitauth.c
new file mode 100644
index 00000000..e8b8c076
--- /dev/null
+++ b/ldap/clients/dsgw/emitauth.c
@@ -0,0 +1,317 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+/*
+ * emitauth.c -- generate authentication form -- HTTP gateway
+ *
+ * Copyright (c) 1996 Netscape Communications Corp.
+ * All rights reserved.
+ */
+
+#include "dsgw.h"
+#include "dbtdsgw.h"
+
+static int isexp = 0; /* Why is this static? */
+
+static void
+emit_authinfo( int isEditing, int isPwForm, char *binddn )
+{
+ char *cookie, *dn, *rndstr, *pw;
+ int rc;
+ int isauth = 0;
+
+ /* try to get the DN the user is bound as, and determine if
+ * authentication credentials have expired.
+ */
+ if (( cookie = dsgw_get_auth_cookie()) != NULL ) {
+ if ( dsgw_parse_cookie( cookie, &rndstr, &dn ) == 0 ) {
+ if ( dn == NULL ) {
+ isauth = 0;
+ } else {
+ if (( rc = dsgw_ckdn2passwd( rndstr, dn, &pw )) == 0 ) {
+ isauth = 1;
+ } else {
+ isauth = 0;
+ if ( rc == DSGW_CKDB_EXPIRED ) {
+ isexp = 1;
+ }
+ }
+ }
+ } else {
+ isauth = 0;
+ }
+ } else {
+ isauth = 0;
+ }
+
+ dsgw_emitf( "<CENTER>\n"
+ "<FONT SIZE=+2>%s</FONT>\n"
+ "</CENTER>\n"
+ "<p>", XP_GetClientStr(DBT_authenticateLogInToTheDirectory_) );
+
+ if ( isPwForm ) {
+#ifdef NOTFORNOW
+ /* ldap_dn2ufn currently gobble up 'dc' so don't use it for */
+ /* now */
+ auto char *ufn = ldap_dn2ufn( binddn );
+ dsgw_emitf( XP_GetClientStr(DBT_youAreAboutToAuthenticate_), ufn);
+ free( ufn );
+#else
+ dsgw_emitf( XP_GetClientStr(DBT_youAreAboutToAuthenticate_), binddn);
+#endif
+ } else if ( isEditing ) {
+ dsgw_emits( XP_GetClientStr(DBT_beforeYouCanEditOrAddEntriesYouM_) );
+ } else {
+ dsgw_emits( XP_GetClientStr(DBT_fromThisScreenYouMayAuthenticate_) );
+ }
+ if ( isEditing ) {
+ return;
+ }
+ dsgw_emitf( "<HR>\n"
+ "<CENTER>\n"
+ "<FONT SIZE=+2>%s</FONT>\n"
+ "</CENTER>\n"
+ "<P>\n", XP_GetClientStr(DBT_authenticationStatus_) );
+
+ if ( isauth ) {
+ auto char *ufn;
+ dsgw_emits( XP_GetClientStr(DBT_FormNyouAreCurrentlyAuthenticate_) );
+ ufn = ldap_dn2ufn( dn );
+ dsgw_emitf( "<b>%s</b>\n", ufn );
+ free( ufn );
+ dsgw_emitf( "%s<BR>"
+ "<CENTER>\n"
+ "<INPUT TYPE=BUTTON "
+ "VALUE=\"%s\""
+ "onClick=\"doUnauth();\">\n"
+ "</FORM>\n"
+ "</CENTER>\n"
+ "<HR>\n",
+ XP_GetClientStr(DBT_NifYouWishToDiscardYourAuthentic_),
+ XP_GetClientStr(DBT_discardAuthenticationCredentials_2) );
+ } else if ( isexp ) {
+ dsgw_emits( XP_GetClientStr(DBT_yourAuthenticationCredentialsFor_) );
+ dsgw_emitf( "<b>%s</b> ", dn );
+ dsgw_emits( XP_GetClientStr(DBT_haveExpiredN_) );
+ } else {
+ dsgw_emits( XP_GetClientStr(DBT_currentlyYouAreNotAuthenticatedT_) );
+ }
+}
+
+
+static void
+emit_file (char* filename, char* authdesturl, char *user )
+{
+ auto FILE* html = dsgw_open_html_file( filename, DSGW_ERROPT_EXIT );
+ auto char line[ BIG_LINE ];
+ auto int argc;
+ auto char **argv, *escaped_dn;
+
+ if ( user != NULL ) {
+ escaped_dn = dsgw_strdup_escaped( user );
+ } else {
+ escaped_dn = "";
+ }
+
+ while ( dsgw_next_html_line( html, line )) {
+ if ( dsgw_parse_line( line, &argc, &argv, 0, dsgw_simple_cond_is_true, NULL )) {
+ if ( dsgw_directive_is( line, DRCT_HEAD )) {
+ dsgw_head_begin();
+ dsgw_emits ("\n");
+
+ } else if ( dsgw_directive_is( line, "DS_AUTH_SEARCH_SCRIPT" )) {
+ dsgw_emits ("<SCRIPT NAME=\"JavaScript\">\n"
+ "<!-- Hide from non-JavaScript browsers\n"
+ "function doUnauth()\n"
+ "{\n");
+ dsgw_emits (" if ( confirm( ");
+ dsgw_quote_emits (QUOTATION_JAVASCRIPT,
+ XP_GetClientStr(DBT_discardAuthenticationCredentials_));
+ dsgw_emits (" )) {\n"
+ " window.location.href='unauth?context=");
+ dsgw_emits(context);
+ dsgw_emits("';\n"
+ " }\n"
+ "}\n");
+#if 0 /* This doesn't work with Navigator 2.x */
+ dsgw_emits ("function checkSS(sform)\n"
+ "{\n"
+ " if (sform.searchstring.value == null || sform.searchstring.value == \"\") {\n");
+ dsgw_emit_alert (NULL, NULL, XP_GetClientStr(DBT_youDidNotSupplyASearchString_));
+ dsgw_emits (" return false;\n"
+ " }\n"
+ "}\n");
+#endif
+ dsgw_emits ("function init()\n"
+ "{\n"
+ " document.authSearchForm.searchstring.select();\n"
+ " document.authSearchForm.searchstring.focus();\n"
+ " if (top.history.length == 1 && top.opener != null && top.opener.location.href != "
+ "top.location.href) {\n"
+ " if (top.closewin == true) {\n"
+ " top.opener.document.clear();\n"
+ " top.opener.document.open();\n"
+ " top.opener.document.write('');\n"
+ " top.opener.document.close();\n"
+ " }\n"
+ " }\n"
+ " top.closewin = false;\n"
+ "}\n"
+ "// End hiding -->\n"
+ "</SCRIPT>\n");
+
+ } else if ( dsgw_directive_is( line, "DS_AUTH_SEARCH_BODY" )) {
+ dsgw_emitf ("<BODY onLoad=\"setTimeout('init()', 10);\" %s>\n",
+ dsgw_html_body_colors);
+ dsgw_emit_alertForm();
+
+ } else if ( dsgw_directive_is( line, "DS_AUTH_SEARCH_INFO" )) {
+ emit_authinfo( authdesturl != NULL, 0, NULL );
+
+ } else if ( dsgw_directive_is( line, "DS_AUTH_SEARCH_FORM" )) {
+ dsgw_form_begin ("authSearchForm", "action=\"dosearch\""
+#if 0 /* This doesn't work with Navigator 2.x */
+ " onSubmit=\"return checkSS(this)\""
+#endif
+ );
+ dsgw_emits ("\n<INPUT TYPE=hidden NAME=mode VALUE=\"auth\">\n");
+ if ( authdesturl != NULL ) {
+ dsgw_emitf ("<INPUT TYPE=hidden NAME=authdesturl VALUE=\"%s\">\n",
+ authdesturl);
+ }
+
+ } else if ( dsgw_directive_is( line, "DS_AUTH_SEARCH_NAME" )) {
+ dsgw_emitf ("<INPUT NAME=\"searchstring\" VALUE=\"%s\" SIZE=40>\n",
+ ( user == NULL ) ? "" : user );
+
+ } else if ( dsgw_directive_is( line, "DS_AUTH_SEARCH_BUTTONS" )) {
+ if ( authdesturl == NULL ) {
+ dsgw_emitf ("<TD ALIGN=CENTER WIDTH=50%%>\n"
+ "<INPUT TYPE=\"submit\" VALUE=\"%s\">\n"
+ "<TD ALIGN=CENTER WIDTH=50%%>\n",
+ XP_GetClientStr(DBT_continue_) );
+ } else {
+ dsgw_emitf ("<TD ALIGN=CENTER WIDTH=33%%>\n"
+ "<INPUT TYPE=\"submit\" VALUE=\"%s\">\n"
+ "<TD ALIGN=CENTER WIDTH=33%%>\n"
+ "<INPUT TYPE=\"button\" VALUE=\"%s\" "
+ "onClick=\"parent.close();\">\n"
+ "<TD ALIGN=CENTER WIDTH=34%%>\n",
+ XP_GetClientStr(DBT_continue_1), XP_GetClientStr(DBT_cancel_) );
+ }
+ dsgw_emit_helpbutton ("AUTHHELP_ID" );
+
+ } else if ( dsgw_directive_is( line, "DS_AUTH_AS_ROOT_FORM" )) {
+ dsgw_form_begin ("AuthAsRootDNForm", "action=\"auth\"");
+ dsgw_emits ("\n");
+ dsgw_emits ("<INPUT TYPE=hidden NAME=authasrootdn VALUE=\"true\">\n");
+ if ( authdesturl != NULL ) {
+ dsgw_emitf ("<INPUT TYPE=hidden NAME=authdesturl VALUE=\"%s\">\n",
+ authdesturl );
+ }
+
+ } else if ( dsgw_directive_is( line, "DS_AUTH_PASSWORD_SCRIPT" )) {
+ dsgw_emits ("<SCRIPT NAME=\"JavaScript\">\n"
+ "<!-- Hide from non-JavaScript browsers\n");
+ /* doUnauth function - invoke CGI which tosses cookies. */
+ dsgw_emitf ("function doUnauth()\n"
+ "{\n"
+ " if ( confirm( '%s' )) {\n"
+ " window.location.href='unauth?context=%s';\n"
+ " }\n"
+ "}\n"
+ "// End hiding -->\n"
+ "</SCRIPT>\n\n",
+ XP_GetClientStr (DBT_discardAuthenticationCredentials_1), context);
+
+ } else if ( dsgw_directive_is( line, "DS_AUTH_PASSWORD_BODY" )) {
+ dsgw_emitf ("<BODY onLoad=\"document.authPwForm.password.select();document.authPwForm.password.focus();\" %s>\n",
+ dsgw_html_body_colors );
+
+ } else if ( dsgw_directive_is( line, "DS_AUTH_PASSWORD_INFO" )) {
+ emit_authinfo( authdesturl != NULL, 1, user );
+
+ } else if ( dsgw_directive_is( line, "DS_AUTH_PASSWORD_FORM" )) {
+ dsgw_form_begin( "authPwForm", "action=\"doauth\"" );
+ dsgw_emits ("\n" );
+ dsgw_emitf (
+ "<INPUT type=hidden name=escapedbinddn value=\"%s\">\n",
+ escaped_dn );
+ if ( authdesturl != NULL ) {
+ dsgw_emitf ("<INPUT type=hidden name=authdesturl value=\"%s\">\n",
+ authdesturl );
+ }
+
+ } else if ( dsgw_directive_is( line, "DS_AUTH_PASSWORD_NAME" )) {
+ auto char** xdn = ldap_explode_dn( user, 1 );
+ dsgw_emits( xdn[ 0 ] );
+ ldap_value_free( xdn );
+
+ } else if ( dsgw_directive_is( line, "DS_AUTH_PASSWORD_BUTTONS" )) {
+ if ( authdesturl == NULL ) {
+ dsgw_emitf ("<TD ALIGN=CENTER WIDTH=50%%>\n"
+ "<INPUT TYPE=\"submit\" VALUE=\"%s\">\n"
+ "<TD ALIGN=CENTER WIDTH=50%%>\n",
+ XP_GetClientStr(DBT_continue_2) );
+ } else {
+ dsgw_emitf ("<TD ALIGN=CENTER WIDTH=33%%>\n"
+ "<INPUT TYPE=\"submit\" VALUE=\"%s\">\n"
+ "<TD ALIGN=CENTER WIDTH=33%%>\n"
+ "<INPUT TYPE=\"button\" VALUE=\"%s\" "
+ "onClick=\"parent.close();\">\n"
+ "<TD ALIGN=CENTER WIDTH=34%%>\n",
+ XP_GetClientStr(DBT_continue_3), XP_GetClientStr(DBT_cancel_1) );
+ }
+ dsgw_emit_helpbutton ("AUTHHELP_PW" );
+
+ } else if ( dsgw_directive_is( line, "DS_HELP_BUTTON" ) && argc > 0) {
+ dsgw_emit_helpbutton (argv[0]);
+ } else {
+ dsgw_emits (line);
+ }
+ dsgw_argv_free( argv );
+ }
+ }
+ fflush (stdout);
+ fclose (html);
+}
+
+
+void
+dsgw_emit_auth_form( char *binddn )
+{
+ dsgw_emit_auth_dest( binddn, dsgw_get_cgi_var( "authdesturl", DSGW_CGIVAR_OPTIONAL ));
+}
+
+void
+dsgw_emit_auth_dest( char *binddn, char* authdesturl )
+{
+ /*
+ * If dn is NULL, then we don't know who we want to bind as yet.
+ * Generate a simplified search form. This form needs to post:
+ * mode=auth
+ * searchstring
+ * authdesturl
+ *
+ * If dn was given, then prompt for the password. Needs to post:
+ * password
+ * authdesturl
+ * binddn
+ */
+ if ( binddn == NULL ) {
+ emit_file( "authSearch.html", authdesturl,
+ dsgw_get_cgi_var( "authhint", DSGW_CGIVAR_OPTIONAL ));
+ } else {
+ emit_file( "authPassword.html", authdesturl, binddn );
+ }
+}
+
+
+
+
+
+
+
diff --git a/ldap/clients/dsgw/emitf.c b/ldap/clients/dsgw/emitf.c
new file mode 100644
index 00000000..b4e6c709
--- /dev/null
+++ b/ldap/clients/dsgw/emitf.c
@@ -0,0 +1,860 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+#include <stdarg.h> /* va_list etc. */
+#include <stdio.h> /* sprintf */
+#include <stdlib.h> /* malloc, realloc, free */
+#include <string.h> /* strchr, strpbrk etc. */
+#include "dsgw.h" /* dsgw_ch_malloc, dsgw_ch_strdup */
+
+typedef void* (*dsgw_producer) (void*, const char*, size_t);
+
+static size_t
+produce_fill (dsgw_producer produce, void** parm,
+ size_t fill, unsigned zero)
+{
+ static const char* zeroes = "00000000";
+ static const char* blanks = " ";
+ size_t result = 0;
+ while (fill > 0) {
+ long n = fill;
+ if (n > 8) n = 8;
+ if (zero) {
+ *parm = produce (*parm, zeroes, n);
+ } else {
+ *parm = produce (*parm, blanks, n);
+ }
+ if (*parm == NULL) return result;
+ result += n;
+ fill -= n;
+ }
+ return result;
+}
+
+#define FLAG_LEFT 1 /* align left */
+#define FLAG_ZERO 2 /* zero fill */
+#define FLAG_CONST 4
+
+static size_t
+produce_string (dsgw_producer produce, void** parm,
+ const char* str, unsigned flags, int width, int precision)
+{
+ size_t fill;
+ size_t bytes;
+ size_t result = 0;
+ if (*parm == NULL) return result;
+ if (width < 0) {
+ width = - width;
+ flags ^= FLAG_LEFT;
+ }
+ if (width == 0 && precision < 0) {
+ fill = 0;
+ bytes = strlen (str);
+ } else {
+ char* s = (char*)str; /* cast away const (for LDAP_UTF8INC) */
+ size_t chars = 0;
+ while (*s && ((precision < 0) || (chars < precision))) {
+ LDAP_UTF8INC(s);
+ ++chars;
+ }
+ fill = (width > chars) ? (width - chars) : 0;
+ bytes = (s - str);
+ }
+ if (fill && ! (flags & FLAG_LEFT)) {
+ result += produce_fill (produce, parm, fill, flags & FLAG_ZERO);
+ }
+ if (bytes) {
+ *parm = produce (*parm, str, bytes);
+ if (*parm == NULL) return result;
+ result += bytes;
+ }
+ if (fill && (flags & FLAG_LEFT)) {
+ result += produce_fill (produce, parm, fill, flags & FLAG_ZERO);
+ }
+ return result;
+}
+
+static const char* type_chars = "%dioxXueEgGfcsp";
+
+static size_t
+count_slots (const char* s)
+{
+ size_t n = 0;
+ while ((s = strchr (s, '%')) != NULL) {
+ const char* l = strpbrk (s+1, type_chars);
+ const char* c;
+ if (l == NULL) {
+ n += 3;
+ break;
+ }
+ ++n;
+ for (c = s+1; c != l; ++c) {
+ if (*c == '*') ++n;
+ }
+ s = *l ? l+1 : l;
+ }
+ return n;
+}
+
+typedef struct {
+ char type;
+#define TYPE_I 0
+#define TYPE_U 1
+#define TYPE_F 2
+#define TYPE_LI 3
+#define TYPE_LU 4
+#define TYPE_LF 5
+#define TYPE_S 6
+#define TYPE_P 7
+#define TYPE_PERCENT 8 /* e.g. %% */
+#define TYPE_WIDTH 9
+#define TYPE_PRECISION 10
+
+ unsigned char flags;
+ int arg; /* An index into an array of dsgw_arg_t,
+ or (if flags & FLAG_CONST) the width or precision value. */
+} dsgw_slot_t;
+
+typedef union {
+ int i;
+ unsigned int u;
+ double f;
+ long li;
+ unsigned long lu;
+ long double lf;
+ const char* s;
+ void* p;
+} dsgw_arg_t;
+
+#define DEFSLOTC 8 /* A format string rarely contains more slots. */
+#define DEFFMTC 16 /* A single format rarely contains more chars. */
+
+static size_t
+dsgw_vxprintf (dsgw_producer produce, void* parm,
+ const char* format, va_list argl)
+ /* This function works like vsprintf(), except it:
+ - supports parameter reordering, using %posp$.
+ - is UTF8-aware.
+ - delivers output by calling the function 'produce'.
+ - returns the total number of bytes produced.
+ This function interprets all string parameters as UTF8.
+ */
+{
+ size_t result = 0; /* total number of bytes produced */
+
+ /* Each place that 'format' refers to an argument is called a 'slot'. */
+ dsgw_slot_t defslot[DEFSLOTC];
+ dsgw_slot_t* slot = defslot; /* in order of their appearance in format */
+ dsgw_slot_t* islot = NULL; /* next slot to process */
+ dsgw_slot_t* aslot = NULL; /* another cursor */
+
+ dsgw_arg_t defargv[DEFSLOTC];
+ dsgw_arg_t* argv = defargv; /* in order of their appearance in argl */
+ size_t argi = 0; /* index of next argument (in argl/argv) */
+
+ char deffmt[DEFFMTC];
+ char* fmt = deffmt;
+ size_t fmtc = DEFFMTC;
+
+ const char* next;
+ const char* f;
+
+ char buf [1024];
+ int i;
+
+ i = count_slots (format);
+/*fprintf (stderr, "slots: %i\n", i);*/
+ if (i > DEFSLOTC) { /* defslot isn't big enough. */
+ slot = (dsgw_slot_t*) malloc (i * sizeof(dsgw_slot_t));
+ }
+
+ /* get slot types from format: */
+ islot = slot;
+ next = format;
+ while ((f = strchr (next, '%')) != NULL) {
+ const char* l = f+1;
+ unsigned flags = 0;
+ int number = -1;
+ char size;
+
+ if (*l >= '1' && *l <= '9') {
+ number = 0;
+ do { number = (number * 10) + (*l++ - '0');
+ } while (*l >= '0' && *l <= '9');
+ }
+ if (*l == '$') {
+ ++l;
+ if (number > 0) {
+ argi = number - 1;
+ }
+ number = -1;
+ }
+ if (number >= 0) { /* width */
+ islot->arg = number;
+ flags |= FLAG_CONST;
+ } else {
+ while (1) { /* flags */
+ switch (*l) {
+ case '-': flags |= FLAG_LEFT; ++l; continue;
+ case '0': flags |= FLAG_ZERO; ++l; continue;
+ case '+':
+ case ' ':
+ case '#': ++l; continue;
+ default: break;
+ }
+ break;
+ }
+ if (*l == '*') { /* width */
+ number = 0;
+ ++l;
+ islot->arg = argi++;
+ } else if (*l >= '1' && *l <= '9') { /* width */
+ number = 0;
+ do { number = (number * 10) + (*l++ - '0');
+ } while (*l >= '0' && *l <= '9');
+ islot->arg = number;
+ flags |= FLAG_CONST;
+ }
+ }
+ if (number >= 0) {
+ islot->type = TYPE_WIDTH;
+ islot->flags = flags;
+ flags &= ~ FLAG_CONST;
+ ++islot;
+ }
+ if (*l == '.') {
+ islot->type = TYPE_PRECISION;
+ ++l;
+ if (*l == '*') {
+ ++l;
+ islot->arg = argi++;
+ islot->flags = 0;
+ } else {
+ number = 0;
+ while (*l >= '0' && *l <= '9')
+ number = (number * 10) + (*l++ - '0');
+ islot->arg = number;
+ islot->flags = FLAG_CONST;
+ }
+ ++islot;
+ }
+ switch (*l) { /* size modifier */
+ case 'h':
+ case 'l':
+ case 'L': size = *l++; break;
+ default: size = '\0';
+ }
+ islot->flags = 0;
+ switch (*l) { /* type */
+ case 'd':
+ case 'i': islot->type = (size == 'l') ? TYPE_LI : TYPE_I; break;
+ case 'o':
+ case 'x': case 'X':
+ case 'u': islot->type = (size == 'l') ? TYPE_LU : TYPE_U; break;
+ case 'e': case 'E':
+ case 'g': case 'G':
+ case 'f': islot->type = (size == 'L') ? TYPE_LF : TYPE_F; break;
+ case 'c': islot->type = TYPE_I; break;
+ case 's': islot->type = TYPE_S; break;
+ case 'p': islot->type = TYPE_P; break;
+ case '%': islot->type = TYPE_PERCENT;
+ islot->flags = FLAG_CONST; break;
+ default: /* unknown type */
+ goto bail; /* don't produce anything. */
+ /* It might be more helpful to produce the slots up to
+ this one, and maybe output this format substring, too.
+ That way, someone reading the output might get a clue
+ what went wrong.
+ */
+ }
+ if (islot->type != TYPE_PERCENT) {
+ islot->arg = argi++;
+ }
+ ++islot;
+ next = *l ? l+1 : l;
+ }
+
+ /* argi = the length of argl/argv: */
+ argi = 0;
+ for (aslot = slot; aslot != islot; ++aslot) {
+ if (argi <= aslot->arg && ! (aslot->flags & FLAG_CONST)) {
+ argi = aslot->arg + 1;
+ }
+ }
+ if (argi > DEFSLOTC) { /* defargv isn't big enough */
+ argv = (dsgw_arg_t*) malloc (argi * sizeof(dsgw_arg_t));
+ }
+
+ /* copy arguments from argl to argv: */
+/*fprintf (stderr, "slot:type:value:");*/
+ for (i = 0; i < argi; ++i) {
+ for (aslot = slot; aslot != islot; ++aslot) {
+ if ( ! (aslot->flags & FLAG_CONST) && aslot->arg == i) {
+ break;
+ }
+ }
+ if (aslot == islot) { /* No slot refers to this arg. */
+ if (va_arg (argl, const char*)); /* Skip over it. */
+ } else {
+/*fprintf (stderr, " %i:%i", (int)(aslot-slot), aslot->type);*/
+ switch (aslot->type) {
+ case TYPE_U: argv[i].u = va_arg (argl, unsigned); break;
+ case TYPE_F: argv[i].f = va_arg (argl, double); break;
+ case TYPE_LI: argv[i].li = va_arg (argl, long); break;
+ case TYPE_LU: argv[i].lu = va_arg (argl, unsigned long); break;
+ case TYPE_LF: argv[i].lf = va_arg (argl, long double); break;
+ case TYPE_P: argv[i].p = va_arg (argl, void*); break;
+ case TYPE_S: argv[i].s = va_arg (argl, const char*);
+/*fprintf (stderr, ":\"%s\"", argv[i].s);*/
+ break;
+ case TYPE_PERCENT: break; /* no arg */
+ case TYPE_WIDTH:
+ case TYPE_PRECISION:
+ case TYPE_I: argv[i].i = va_arg (argl, int);
+/*fprintf (stderr, ":%i", argv[i].i);*/
+ do {
+ switch (aslot->type) {
+ case TYPE_WIDTH:
+ case TYPE_PRECISION:
+ if ( ! (aslot->flags & FLAG_CONST) && aslot->arg == i) {
+ aslot->arg = argv[i].i;
+ aslot->flags |= FLAG_CONST;
+ }
+ break;
+ default: break;
+ }
+ } while (++aslot != islot);
+ break;
+ }
+ }
+ }
+/*fprintf (stderr, "\n");*/
+
+ /* produce output: */
+ islot = slot;
+ next = format;
+ while (parm && (f = strchr (next, '%'))) {
+ const char* l = strpbrk (f+1, type_chars);
+ if (l == NULL) {
+ break;
+ }
+ if (parm && f != next) { /* produce the substring next..f-1 */
+ const size_t n = (f - next);
+ parm = produce (parm, next, n);
+ if (parm) result += n;
+ }
+ next = l + 1;
+ { /* fmt = f..l */
+ const char* dollar;
+ const size_t fc = (next - f);
+ if (fmtc <= fc) {
+ fmtc = fc + 1;
+ if (fmt == deffmt) fmt = malloc (fmtc);
+ else fmt = realloc (fmt, fmtc);
+ }
+ memcpy (fmt, f, fc);
+ fmt[fc] = '\0';
+ if ((dollar = strchr (fmt, '$')) != NULL) {
+ /* remove posp$ from the beginning of fmt */
+ memmove (fmt + 1, dollar + 1, fc - (dollar - fmt));
+ }
+/*fprintf (stderr, "fmt: \"%s\"\n", fmt);*/
+ }
+ /* produce a single argument */
+ switch (islot->type) {
+ case TYPE_I: PR_snprintf (buf, 1024, fmt, argv[islot->arg].i); break;
+ case TYPE_U: PR_snprintf (buf, 1024, fmt, argv[islot->arg].u); break;
+ case TYPE_F: PR_snprintf (buf, 1024, fmt, argv[islot->arg].f); break;
+ case TYPE_LI: PR_snprintf (buf, 1024, fmt, argv[islot->arg].li); break;
+ case TYPE_LU: PR_snprintf (buf, 1024, fmt, argv[islot->arg].lu); break;
+ case TYPE_LF: PR_snprintf (buf, 1024, fmt, argv[islot->arg].lf); break;
+ case TYPE_P: PR_snprintf (buf, 1024, fmt, argv[islot->arg].p); break;
+ case TYPE_WIDTH:
+ case TYPE_PRECISION:
+ switch ((++islot)->type) {
+ case TYPE_I: PR_snprintf (buf, 1024, fmt, argv[islot->arg].i); break;
+ case TYPE_U: PR_snprintf (buf, 1024, fmt, argv[islot->arg].u); break;
+ case TYPE_F: PR_snprintf (buf, 1024, fmt, argv[islot->arg].f); break;
+ case TYPE_LI: PR_snprintf (buf, 1024, fmt, argv[islot->arg].li); break;
+ case TYPE_LU: PR_snprintf (buf, 1024, fmt, argv[islot->arg].lu); break;
+ case TYPE_LF: PR_snprintf (buf, 1024, fmt, argv[islot->arg].lf); break;
+ case TYPE_P: PR_snprintf (buf, 1024, fmt, argv[islot->arg].p); break;
+ case TYPE_WIDTH:
+ case TYPE_PRECISION:
+ switch ((++islot)->type) {
+ case TYPE_I: PR_snprintf (buf, 1024, fmt, argv[islot->arg].i); break;
+ case TYPE_U: PR_snprintf (buf, 1024, fmt, argv[islot->arg].u); break;
+ case TYPE_F: PR_snprintf (buf, 1024, fmt, argv[islot->arg].f); break;
+ case TYPE_LI: PR_snprintf (buf, 1024, fmt, argv[islot->arg].li); break;
+ case TYPE_LU: PR_snprintf (buf, 1024, fmt, argv[islot->arg].lu); break;
+ case TYPE_LF: PR_snprintf (buf, 1024, fmt, argv[islot->arg].lf); break;
+ case TYPE_P: PR_snprintf (buf, 1024, fmt, argv[islot->arg].p); break;
+ case TYPE_WIDTH:
+ case TYPE_PRECISION: goto bail; /* how did this happen? */
+ case TYPE_PERCENT:
+ case TYPE_S: /* with width and precision */
+ result += produce_string (produce, &parm,
+ (islot->type == TYPE_S) ? argv[islot->arg].s : "%",
+ islot[-2].flags, islot[-2].arg, islot[-1].arg);
+ goto skip_buf;
+ }
+ break;
+ case TYPE_PERCENT:
+ case TYPE_S: /* with width or precision (not both) */
+ if (islot[-1].type == TYPE_WIDTH) {
+ result += produce_string (produce, &parm,
+ (islot->type == TYPE_S) ? argv[islot->arg].s : "%",
+ islot[-1].flags, islot[-1].arg, -1);
+ } else {
+ result += produce_string (produce, &parm,
+ (islot->type == TYPE_S) ? argv[islot->arg].s : "%",
+ 0, 0, islot[-1].arg);
+ }
+ goto skip_buf;
+ }
+ break;
+ case TYPE_PERCENT:
+ case TYPE_S: /* with neither width nor precision */
+ result += produce_string (produce, &parm,
+ (islot->type == TYPE_S) ? argv[islot->arg].s : "%",
+ 0, 0, -1);
+ goto skip_buf;
+ }
+ if (parm && *buf) { /* produce buf */
+ const size_t n = strlen (buf);
+ parm = produce (parm, buf, n);
+ if (parm) result += n;
+ }
+ skip_buf:
+ ++islot;
+ }
+ if (parm && *next) { /* produce the remainder of format */
+ const size_t n = strlen (next);
+ parm = produce (parm, next, n);
+ if (parm) result += n;
+ }
+
+ bail:
+ if (fmt != deffmt) free (fmt);
+ if (argv != defargv) free (argv);
+ if (slot != defslot) free (slot);
+/*fprintf (stderr, "------\n");*/
+ return result;
+}
+
+size_t
+dsgw_fputn (FILE* f, const char* s, size_t n)
+{
+ auto const size_t result =
+ fwrite (s, sizeof(char), n, f);
+ dsgw_log_out (s, result);
+ return result;
+}
+
+static const char*
+strnbrk (const char* str, size_t n, const char* brk)
+{
+ for (; n > 0; ++str, --n) {
+ if (strchr (brk, *str)) {
+ return str;
+ }
+ }
+ return NULL;
+}
+
+static int quotation_depth = 0;
+static int quotation_type[4]; /* maximum depth */
+#define QUOTATION_JAVASCRIPT_ENDOFLINE 1
+
+static size_t
+dsgw_emitr (int depth, const char* s, size_t n)
+{
+ static const char* linebreak = "' +\n'";
+ static const size_t linebreak_len = 5;
+ auto size_t result = 0;
+ if (n == 0) {
+ return 0;
+ } else if (depth == 0) {
+ return dsgw_fputn (stdout, s, n);
+ }
+ --depth;
+ switch (quotation_type[depth]) {
+ case QUOTATION_JAVASCRIPT:
+ case QUOTATION_JAVASCRIPT_MULTILINE:
+ case QUOTATION_JAVASCRIPT_ENDOFLINE:
+ {
+ auto const char* t;
+ for (t = s; (t = strnbrk (t, n, "'\\\n")) != NULL; ++t) {
+ switch (*t) {
+ case '\n': /* output \n */
+ if (t != s) {
+ if (quotation_type[depth] == QUOTATION_JAVASCRIPT_ENDOFLINE) {
+ dsgw_emitr (depth, linebreak, linebreak_len);
+ }
+ result += dsgw_emitr (depth, s, t - s);
+ }
+ if (dsgw_emitr (depth, "\\n", 2) > 1) ++result;
+ if (quotation_type[depth] == QUOTATION_JAVASCRIPT_MULTILINE) {
+ quotation_type[depth] = QUOTATION_JAVASCRIPT_ENDOFLINE;
+ }
+ break;
+ default: /* insert \ */
+ if (quotation_type[depth] == QUOTATION_JAVASCRIPT_ENDOFLINE) {
+ quotation_type[depth] = QUOTATION_JAVASCRIPT_MULTILINE;
+ dsgw_emitr (depth, linebreak, linebreak_len);
+ }
+ result += dsgw_emitr (depth, s, t - s);
+ dsgw_emitr (depth, "\\", 1);
+ result += dsgw_emitr (depth, t, 1);
+ break;
+ }
+ n -= (t - s) + 1;
+ s = t + 1;
+ }
+ }
+ if (n > 0 &&
+ quotation_type[depth] == QUOTATION_JAVASCRIPT_ENDOFLINE) {
+ quotation_type[depth] = QUOTATION_JAVASCRIPT_MULTILINE;
+ dsgw_emitr (depth, linebreak, linebreak_len);
+ }
+ break;
+ default:
+ break;
+ }
+ if (n > 0) {
+ result += dsgw_emitr (depth, s, n);
+ }
+ return result;
+}
+
+static size_t
+dsgw_emitq (FILE* f, const char* s, size_t n)
+{
+ if (f == stdout && quotation_depth > 0) {
+ return dsgw_emitr (quotation_depth, s, n);
+ }
+ return dsgw_fputn (f, s, n);
+}
+
+void
+dsgw_quotation_begin (int kind)
+{
+ if (quotation_depth >= 4) exit (4);
+ switch (kind) {
+ case QUOTATION_JAVASCRIPT:
+ case QUOTATION_JAVASCRIPT_MULTILINE:
+ dsgw_emitq (stdout, "'", 1);
+ break;
+ default:
+ break;
+ }
+ quotation_type[quotation_depth++] = kind;
+}
+
+void
+dsgw_quotation_end()
+{
+ if (quotation_depth > 0) switch (quotation_type[--quotation_depth]) {
+ case QUOTATION_JAVASCRIPT:
+ case QUOTATION_JAVASCRIPT_MULTILINE:
+ case QUOTATION_JAVASCRIPT_ENDOFLINE:
+ dsgw_emitq (stdout, "'", 1);
+ break;
+ default:
+ break;
+ }
+}
+
+int
+dsgw_quote_emits (int kind, const char* s)
+{
+ int result;
+ dsgw_quotation_begin (kind);
+ result = dsgw_emits (s);
+ dsgw_quotation_end();
+ return result;
+}
+
+int
+dsgw_quote_emitf (int kind, const char* format, ...)
+{
+ int result;
+ va_list argl;
+ va_start (argl, format);
+ dsgw_quotation_begin (kind);
+ result = dsgw_emitfv (format, argl);
+ dsgw_quotation_end();
+ va_end (argl);
+ return result;
+}
+
+static UConverter* emit_converter = NULL;
+
+/* given string is utf8 - emit_converter converts given string
+ to some natural language encoding requested by the client */
+void*
+dsgw_emitn (void* parm, const char* s, size_t n)
+{
+ if (emit_converter == NULL) {
+ if (dsgw_emitq ((FILE*)parm, s, n) != n) {
+ return NULL;
+ }
+ } else {
+#define CONVERT_BUFSIZE 2048
+ char buf [CONVERT_BUFSIZE]; /* faster than malloc/free */
+ char *bufptr = buf;
+ size_t len = 0;
+ size_t slen = 0;
+ UErrorCode err = U_ZERO_ERROR;
+ int result;
+
+ do {
+ bufptr = buf; /* reset to beginning of buf */
+ s += slen; /* advance pointer to next unconverted chars */
+ /* convert as many chars from s as will fit in buf */
+ result = dsgw_convert(DSGW_FROM_UTF8, emit_converter,
+ &bufptr, CONVERT_BUFSIZE, &len,
+ s, n, &slen, &err);
+ /* write the converted chars to the output */
+ n = dsgw_emitq ((FILE*)parm, buf, len);
+ } while ((result == 0) && (n == len));
+
+ ucnv_reset (emit_converter);
+ if (n != len) {
+ return NULL;
+ }
+ }
+ return parm;
+}
+
+#if 0
+static void
+dsgw_convert (void* parm, const char* s, size_t n)
+ /* Transform the output, in a visually distinctive way.
+ This function is intended for testing, only.
+ */
+{
+ while (parm && n > 0) {
+ const size_t len = LDAP_UTF8LEN(s);
+ if (len == 1 && *s >= '!' && *s <= '~') { /* ASCII */
+ /* output the double-width variant of this character */
+ unsigned c = (unsigned)*s - '!' + 0xFF01;
+ unsigned char buf[3];
+ buf[2] = 0x80 | (c & 0x3F); c >>= 6;
+ buf[1] = 0x80 | (c & 0x3F); c >>= 6;
+ buf[0] = 0xE0 | (c & 0x0F);
+ parm = dsgw_emitn (parm, (char*)buf, 3);
+ } else {
+ parm = dsgw_emitn (parm, s, len);
+ }
+ if (parm) {
+ n -= len;
+ s += len;
+ }
+ }
+}
+#endif
+
+int
+dsgw_emits (const char* s)
+ /* This function works like fputs(s, stdout), except it
+ converts from UTF8 to the client's preferred charset.
+ */
+{
+ size_t n = strlen (s);
+ if (n > 0 && dsgw_emitn (stdout, s, n) == NULL) {
+ return EOF;
+ }
+ return n;
+}
+
+int
+dsgw_emitfv (const char* format, va_list argl)
+ /* This function works like vprintf(), except it:
+ - supports parameter reordering, using %posp$.
+ - is UTF8-aware.
+ - converts to the client's preferred charset.
+ This function interprets all string parameters as UTF8.
+ */
+{
+ return( dsgw_vxprintf (dsgw_emitn, stdout, format, argl));
+}
+
+int
+dsgw_emitf (const char* format, ...)
+{
+ int rc;
+
+ va_list argl;
+ va_start (argl, format);
+ rc = dsgw_emitfv (format, argl);
+ va_end (argl);
+
+ return( rc );
+}
+
+typedef struct struct_item_t {
+ char* i_val;
+ double i_q;
+} item_t;
+
+static size_t
+list_count (const char* list)
+{
+ const char* s;
+ size_t n = 1;
+ if (list == NULL || *list == '\0') return 0;
+ for (s = list - 1; (s = strchr (s + 1, ',')) != NULL; ++n);
+ return n;
+}
+
+static item_t*
+list_parse (char* slist, size_t items)
+{
+ char* s = slist;
+ item_t* item;
+ size_t i = 0;
+ if (items <= 0) return NULL;
+ item = (item_t*) dsgw_ch_malloc (items * sizeof(item_t));
+ while (ldap_utf8isspace (s)) LDAP_UTF8INC(s);
+ while (s && *s) {
+ if (i >= items) exit (1);
+ item[i].i_q = 1.0;
+ item[i++].i_val = s;
+ if ((s = strchr (s, ',')) != NULL) {
+ *s = '\0';
+ while (ldap_utf8isspace (LDAP_UTF8INC(s)));
+ }
+ }
+ if (i != items) exit (1);
+ for (i = 0; i < items; ++i) {
+ if ((s = strchr (item[i].i_val, ';')) != NULL) {
+ *s = '\0';
+ do {
+ while (ldap_utf8isspace (LDAP_UTF8INC(s)));
+ if (*s == 'q' || *s == 'Q') {
+ while (ldap_utf8isspace (LDAP_UTF8INC(s)));
+ if (*s == '=') {
+ item[i].i_q = strtod(++s, &s);
+ }
+ }
+ } while ((s = strchr (s, ';')) != NULL);
+ }
+ /* Remove trailing whitespace from item[i].i_val: */
+ s = item[i].i_val;
+ s += strlen (s);
+ while (ldap_utf8isspace (LDAP_UTF8DEC(s)));
+ s[1] = '\0';
+/*printf("%s;q=%.2f\n", item[i].i_val, item[i].i_q);*/
+ }
+ return item;
+}
+
+static void
+list_sort (item_t item[], size_t items)
+{
+ /* This implementation is suboptimal, but adequate. */
+ int sorted;
+ size_t i;
+ do {
+ sorted = 1;
+ for (i = 0; i+1 < items ; ++i) {
+ if (item[i].i_q < item[i+1].i_q) { /* swap i & i+1 */
+ auto item_t temp;
+ memcpy (&temp, &item[i], sizeof(item_t));
+ memcpy (&item[i], &item[i+1], sizeof(item_t));
+ memcpy (&item[i+1], &temp, sizeof(item_t));
+ sorted = 0;
+ }
+ }
+ } while ( ! sorted);
+}
+
+int
+is_UTF_8 (const char* charset)
+{
+ return charset != NULL &&
+ (!strcasecmp (charset, UNICODE_ENCODING_UTF_8) ||
+ !strcasecmp (charset, "UNICODE-1-1-UTF-8"));
+}
+
+static int
+charset_is_supported (char* s)
+{
+ UConverter* converter;
+ UErrorCode err = U_ZERO_ERROR;
+ if (is_UTF_8 (s)) {
+ return 1;
+ }
+ converter = ucnv_open (s, &err);
+ if (err == U_ZERO_ERROR) {
+ ucnv_close (converter);
+ return 1;
+ }
+ return 0;
+}
+
+static char*
+choose_charset (char* slist)
+ /* Return the best charset from the given list. */
+{
+ const size_t items = list_count (slist);
+ char* sbuf;
+ item_t* item;
+ size_t i;
+
+ if (items <= 0) return slist;
+ sbuf = dsgw_ch_strdup (slist);
+ item = list_parse (sbuf, items);
+ for (i = 0; i < items; ++i) {
+ if (is_UTF_8 (item[i].i_val)) {
+ break; /* choose this one */
+ }
+ }
+ if (i >= items) {
+ list_sort (item, items);
+ for (i = 0; i < items; ++i) {
+ auto char* charset = item[i].i_val;
+ if (!strcmp ("*", charset)) {
+ i = items; /* choose UTF_8 */
+ } else if (charset_is_supported (charset)) {
+ break; /* choose this one */
+ }
+ }
+ }
+ if (i >= items) {
+ strcpy (sbuf, UNICODE_ENCODING_UTF_8);
+ } else if (sbuf != item[i].i_val) {
+ memmove (sbuf, item[i].i_val, strlen(item[i].i_val) + 1);
+ }
+ free (item);
+ return sbuf;
+}
+
+char*
+dsgw_emit_converts_to (char* charset)
+{
+ const char* target;
+ if (emit_converter != NULL) {
+ ucnv_close (emit_converter);
+ emit_converter = NULL;
+ }
+ if (charset) charset = choose_charset (charset);
+ if (charset && *charset) {
+ target = charset;
+ } else {
+ target = ISO_8859_1_ENCODING;
+ }
+ if ( ! is_UTF_8 (target)) {
+ UErrorCode err = U_ZERO_ERROR;
+ emit_converter = ucnv_open(target, &err);
+ if (err != U_ZERO_ERROR) {
+ emit_converter = NULL;
+ charset = UNICODE_ENCODING_UTF_8;
+ }
+ }
+ return charset;
+}
diff --git a/ldap/clients/dsgw/entrydisplay.c b/ldap/clients/dsgw/entrydisplay.c
new file mode 100644
index 00000000..f1f4cce7
--- /dev/null
+++ b/ldap/clients/dsgw/entrydisplay.c
@@ -0,0 +1,3228 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+/*
+ * entrydisplay.c -- output entries one at a time or in a list -- HTTP gateway
+ *
+ * Copyright (c) 1996 Netscape Communications Corp.
+ * All rights reserved.
+ */
+
+#include "dsgw.h"
+#include "dbtdsgw.h"
+#include <ldap.h> /* ldap_utf8* */
+#include <unicode/udat.h>
+#include <unicode/utypes.h>
+#include <unicode/unum.h>
+#include <unicode/ucal.h>
+
+/*
+ * Note: the value of the following DSGW_ATTRHTML_XXX #defines must match
+ * their position in the attrhtmltypes[] and attrhtmlvals[] arrays.
+ */
+#define DSGW_ATTRHTML_HIDDEN 0
+#define DSGW_ATTRHTML_TEXT 1
+#define DSGW_ATTRHTML_TEXTAREA 2
+#define DSGW_ATTRHTML_RADIO 3
+#define DSGW_ATTRHTML_CHECKBOX 4
+#define DSGW_ATTRHTML_PASSWORD 5
+static char *attrhtmltypes[] = {
+ "hidden",
+ "text",
+ "textarea",
+ "radio",
+ "checkbox",
+ "password",
+ NULL
+};
+static int attrhtmlvals[] = {
+ DSGW_ATTRHTML_HIDDEN,
+ DSGW_ATTRHTML_TEXT,
+ DSGW_ATTRHTML_TEXTAREA,
+ DSGW_ATTRHTML_RADIO,
+ DSGW_ATTRHTML_CHECKBOX,
+ DSGW_ATTRHTML_PASSWORD,
+};
+
+#define DSGW_ATTROPT_SORT 0x00000001
+#define DSGW_ATTROPT_NOLINK 0x00000002
+#define DSGW_ATTROPT_DNTAGS 0x00000004
+#define DSGW_ATTROPT_DATEONLY 0x00000008 /* only for syntax=time */
+#define DSGW_ATTROPT_READONLY 0x00000010 /* over-rides ..._EDITABLE */
+#define DSGW_ATTROPT_DNPICKER 0x00000020 /* display dns for find-n-add */
+#define DSGW_ATTROPT_UNIQUE 0x00000040 /* attr values must be unique */
+#define DSGW_ATTROPT_LINK 0x00000080 /* link to attribute value */
+#define DSGW_ATTROPT_TYPEONLY 0x00000100 /* retrieve attr. type only */
+#define DSGW_ATTROPT_NO_ENTITIES 0x00000200 /* don't use entities */
+#define DSGW_ATTROPT_HEX 0x00000400 /* display as hex value */
+#define DSGW_ATTROPT_DECIMAL 0x00000800 /* display as decimal value */
+#define DSGW_ATTROPT_QUOTED 0x00001000 /* quote the result */
+#define DSGW_ATTROPT_EDITABLE 0x10000000 /* not exposed in HTML */
+#define DSGW_ATTROPT_ADDING 0x20000000 /* not exposed in HTML */
+#define DSGW_ATTROPT_LINK2EDIT 0x40000000 /* not exposed in HTML */
+static char *attroptions[] = {
+ "sort",
+ "nolink",
+ "dntags",
+ "dateonly",
+ "readonly",
+ "dnpicker",
+ "unique",
+ "link",
+ "typeonly",
+ "noentities",
+ "hex",
+ "decimal",
+ "quoted",
+ NULL
+};
+
+static unsigned long attroptvals[] = {
+ DSGW_ATTROPT_SORT,
+ DSGW_ATTROPT_NOLINK,
+ DSGW_ATTROPT_DNTAGS,
+ DSGW_ATTROPT_DATEONLY,
+ DSGW_ATTROPT_READONLY,
+ DSGW_ATTROPT_DNPICKER,
+ DSGW_ATTROPT_UNIQUE,
+ DSGW_ATTROPT_LINK,
+ DSGW_ATTROPT_TYPEONLY,
+ DSGW_ATTROPT_NO_ENTITIES,
+ DSGW_ATTROPT_HEX,
+ DSGW_ATTROPT_DECIMAL,
+ DSGW_ATTROPT_QUOTED,
+};
+
+
+#define DSGW_ATTRARG_ATTR "attr"
+#define DSGW_ATTRARG_SYNTAX "syntax"
+#define DSGW_ATTRARG_HTMLTYPE "type"
+#define DSGW_ATTRARG_OPTIONS "options"
+#define DSGW_ATTRARG_DEFAULT "defaultvalue"
+#define DSGW_ATTRARG_WITHIN "within" /* overrides href & hrefextra */
+#define DSGW_ATTRARG_HREF "href"
+#define DSGW_ATTRARG_HREFEXTRA "hrefextra"
+#define DSGW_ATTRARG_LABEL "label" /* only used with syntax=dn */
+#define DSGW_ATTRARG_DNCOMP "dncomponents" /* only used with syntax=dn */
+#define DSGW_ATTRARG_TRUESTR "true" /* only used with syntax=bool */
+#define DSGW_ATTRARG_FALSESTR "false" /* only used with syntax=bool */
+#define DSGW_ATTRARGS_SIZE "size"
+#define DSGW_ATTRARGS_ROWS "rows"
+#define DSGW_ATTRARGS_COLS "cols"
+#define DSGW_ATTRARGS_NUMFIELDS "numfields"
+#define DSGW_ATTRARGS_VALUE "value"
+#define DSGW_ATTRARG_MIMETYPE "mimetype"
+#define DSGW_ATTRARG_SCRIPT "script"
+
+#define DSGW_ARG_BUTTON_PROMPT "prompt"
+#define DSGW_ARG_BUTTON_TEMPLATE "template"
+#define DSGW_ARG_BUTTON_CHECKSUBMIT "checksubmit"
+#define DSGW_ARG_BUTTON_TOPIC "topic"
+#define DSGW_ARG_DNEDIT_LABEL "label"
+#define DSGW_ARG_DNEDIT_TEMPLATE "template"
+#define DSGW_ARG_DNEDIT_ATTR "attr"
+#define DSGW_ARG_DNEDIT_DESC "desc"
+
+#define DSGW_ARG_FABUTTON_LABEL "label"
+#define DSGW_ARG_FABUTTON_ATTRNAME "attr"
+#define DSGW_ARG_FABUTTON_ATTRDESC "attrdesc"
+
+#define DSGW_ARG_AVSET_SET "set"
+
+/*
+ * structure used simply to avoid passing a lot of parameters in call to
+ * the attribute syntax handlers
+ */
+struct dsgw_attrdispinfo {
+ struct attr_handler *adi_handlerp;
+ char *adi_attr;
+ int adi_argc;
+ char **adi_argv;
+ char **adi_vals;
+ char *adi_rdn; /* a copy of adi_vals[i] (possibly NULL) */
+ int adi_htmltype;
+ unsigned long adi_opts;
+};
+/* adi_rdn should be generalized, to support an RDN
+ that contains several values of one attribute type.
+*/
+
+typedef void (*attrdisplay)( struct dsgw_attrdispinfo *adip );
+typedef void (*attredit)( struct dsgw_attrdispinfo *adip );
+
+struct attr_handler {
+ char *ath_syntax; /* dn, tel, cis, etc. */
+ attrdisplay ath_display; /* function to display values */
+ attredit ath_edit; /* function to display for editing */
+ int ath_compare; /* compare function */
+};
+
+/* functions local to this file */
+static void append_to_array( char ***ap, int *countp, char *s );
+static unsigned long get_attr_options( int argc, char **argv );
+static void output_prelude( dsgwtmplinfo *tip );
+static void output_nonentry_line( dsgwtmplinfo *tip, char *line );
+static struct attr_handler *syntax2attrhandler( char *syntax );
+static int numfields( int argc, char **argv, int valcount );
+static void element_sizes( int argc, char **argv, char **vals, int valcount,
+ int *rowsp, int *colsp );
+#define DSGW_TEXTOPT_FOCUSHANDLERS 0x0001
+#define DSGW_TEXTOPT_CHANGEHANDLERS 0x0002
+static void output_text_elements( int argc, char **argv, char *attr,
+ char **vals, const char* rdn, char *prefix, int htmltype, unsigned long opts );
+static void output_textarea( int argc, char **argv, char *attr,
+ char **vals, int valcount, char *prefix, unsigned long opts );
+static void emit_value( char *val, int quote_html_specials );
+static void output_text_checkbox_or_radio( struct dsgw_attrdispinfo *adip,
+ char *prefix, int htmltype );
+static void do_attribute( dsgwtmplinfo *tip, char *dn, unsigned long dispopts,
+ int argc, char **argv );
+static void do_orgchartlink( dsgwtmplinfo *tip, char *dn, unsigned long dispopts,
+ int argc, char **argv );
+static void do_attrvalset( dsgwtmplinfo *tip, char *dn, unsigned long dispopts,
+ int argc, char **argv );
+static void do_editbutton( char *dn, char *encodeddn, int argc, char **argv );
+static void do_savebutton( unsigned long dispopts, int argc, char **argv );
+static void do_deletebutton( int argc, char **argv );
+#if 0
+static void do_renamebutton( char *dn, int argc, char **argv );
+#endif
+static void do_editasbutton( int argc, char **argv );
+static void do_dneditbutton( unsigned long dispopts, int argc, char **argv );
+static void do_searchdesc( dsgwtmplinfo *tip, int argc, char **argv );
+static void do_passwordfield( unsigned long dispopts, int argc, char **argv,
+ char *fieldname );
+static void do_helpbutton( unsigned long dispopts, int argc, char **argv );
+static void do_closebutton( unsigned long dispopts, int argc, char **argv );
+static void do_viewswitcher( char *template, char *dn, int argc, char **argv );
+static int did_output_as_special( int argc, char **argv, char *label,
+ char *val );
+static char *time2text( char *ldtimestr, int dateonly );
+static long gtime( struct tm *tm );
+static int looks_like_dn( char *s );
+static void do_std_completion_js( char *template, int argc, char **argv );
+static int condition_is_true( int argc, char **argv, void *arg );
+static char ** dsgw_get_values( LDAP *ld, LDAPMessage *entry,
+ const char *target, int binary_value );
+static void dsgw_value_free( void **ldvals, int binary ) ;
+static char *dsgw_time(time_t secs_since_1970);
+
+/* attribute syntax handler routines */
+static void ntdomain_display( struct dsgw_attrdispinfo *adip );
+static void ntuserid_display( struct dsgw_attrdispinfo *adip );
+static void str_display( struct dsgw_attrdispinfo *adip );
+static void str_edit( struct dsgw_attrdispinfo *adip );
+static void dn_display( struct dsgw_attrdispinfo *adip );
+static void dn_edit( struct dsgw_attrdispinfo *adip );
+static void mail_display( struct dsgw_attrdispinfo *adip );
+static void mls_display( struct dsgw_attrdispinfo *adip );
+static void mls_edit( struct dsgw_attrdispinfo *adip );
+static void binvalue_display( struct dsgw_attrdispinfo *adip );
+static void url_display( struct dsgw_attrdispinfo *adip );
+static void bool_display( struct dsgw_attrdispinfo *adip );
+static void bool_edit( struct dsgw_attrdispinfo *adip );
+static void time_display( struct dsgw_attrdispinfo *adip );
+
+
+/* static variables */
+#define DSGW_MOD_PREFIX_NORMAL 0
+#define DSGW_MOD_PREFIX_UNIQUE 1
+static char *replace_prefixes[] = { "replace_", "replace_unique_" };
+static char *replace_mls_prefixes[] = { "replace_mls_", "replace_mls_unique_" };
+static char *add_prefixes[] = { "add_", "add_unique_" };
+static char *add_mls_prefixes[] = { "add_mls_", "add_mls_unique_" };
+
+struct attr_handler attrhandlers[] = {
+ { "cis", str_display, str_edit, CASE_INSENSITIVE },
+ { "dn", dn_display, dn_edit, CASE_INSENSITIVE },
+ { "mail", mail_display, str_edit, CASE_INSENSITIVE },
+ { "mls", mls_display, mls_edit, CASE_INSENSITIVE },
+ { "tel", str_display, str_edit, CASE_INSENSITIVE },
+ { "url", url_display, str_edit, CASE_EXACT },
+ { "ces", str_display, str_edit, CASE_EXACT },
+ { "bool", bool_display, bool_edit, CASE_INSENSITIVE },
+ { "time", time_display, str_edit, CASE_INSENSITIVE },
+ { "ntdomain", ntdomain_display, str_edit, CASE_INSENSITIVE },
+ { "ntuserid", ntuserid_display, str_edit, CASE_INSENSITIVE },
+ { "ntgroupname", ntuserid_display, str_edit, CASE_INSENSITIVE },
+ { "binvalue", binvalue_display, str_edit, CASE_INSENSITIVE },
+};
+#define DSGW_AH_COUNT ( sizeof( attrhandlers ) / sizeof( struct attr_handler ))
+
+
+static char *
+template_filename( int tmpltype, char *template )
+{
+ char *fn, *prefix, *suffix = ".html";
+
+ if ( tmpltype == DSGW_TMPLTYPE_LIST ) {
+ prefix = DSGW_CONFIG_LISTPREFIX;
+ } else if ( tmpltype == DSGW_TMPLTYPE_EDIT ) {
+ prefix = DSGW_CONFIG_EDITPREFIX;
+ } else if ( tmpltype == DSGW_TMPLTYPE_ADD ) {
+ prefix = DSGW_CONFIG_ADDPREFIX;
+ } else {
+ prefix = DSGW_CONFIG_DISPLAYPREFIX;
+ }
+
+ fn = dsgw_ch_malloc( strlen( prefix ) + strlen( template )
+ + strlen( suffix ) + 1 );
+ sprintf( fn, "%s%s%s", prefix, template, suffix );
+
+ return( fn );
+}
+
+static void
+do_postedvalue( int argc, char **argv )
+{
+ dsgw_emits( "VALUE=\"" );
+ dsgw_emit_cgi_var( argc, argv );
+ dsgw_emits( "\"\n" );
+}
+
+static int
+dsgw_display_line( dsgwtmplinfo *tip, char *line, int argc, char **argv )
+{
+ if ( dsgw_directive_is( line, DRCT_DS_POSTEDVALUE )) {
+ do_postedvalue( argc, argv );
+ } else if ( dsgw_directive_is( line, DRCT_DS_HELPBUTTON )) {
+ do_helpbutton( tip->dsti_options, argc, argv );
+ } else if ( dsgw_directive_is( line, DRCT_DS_CLOSEBUTTON )) {
+ do_closebutton( tip->dsti_options, argc, argv );
+ } else if ( dsgw_directive_is( line, DRCT_DS_OBJECTCLASS )) {
+ /* omit objectClass lines */
+ } else if ( dsgw_directive_is( line, DRCT_HEAD )) {
+ dsgw_head_begin();
+ dsgw_emits ("\n");
+ } else {
+ return 0;
+ }
+ return 1;
+}
+
+dsgwtmplinfo *
+dsgw_display_init( int tmpltype, char *template, unsigned long options )
+{
+ dsgwtmplinfo *tip;
+ int argc, attrcount, attrsonlycount, skip_line, in_entry;
+ char **argv, *attr, *filename, line[ BIG_LINE ];
+ unsigned long aopts;
+
+ tip = (dsgwtmplinfo *)dsgw_ch_malloc( sizeof( dsgwtmplinfo ));
+ memset( tip, 0, sizeof( dsgwtmplinfo ));
+ tip->dsti_type = tmpltype;
+ tip->dsti_options = options;
+ tip->dsti_template = dsgw_ch_strdup( template );
+
+ if (( options & DSGW_DISPLAY_OPT_ADDING ) != 0 ) {
+ options |= DSGW_DISPLAY_OPT_EDITABLE; /* add implies editable */
+
+ if ( tmpltype != DSGW_TMPLTYPE_ADD ) {
+ /*
+ * if we are going to display an "add" view of an entry and
+ * an add template has not been explicitly requested, first look
+ * for a file called "add-TEMPLATE.html" and fall back on using
+ * whatever we would use if just editing an existing entry.
+ */
+ filename = template_filename( DSGW_TMPLTYPE_ADD, template );
+ tip->dsti_fp = dsgw_open_html_file( filename, DSGW_ERROPT_IGNORE );
+ free( filename );
+ }
+ }
+
+ if ( tip->dsti_fp == NULL && ( options & DSGW_DISPLAY_OPT_EDITABLE ) != 0
+ && tmpltype != DSGW_TMPLTYPE_EDIT ) {
+ /*
+ * if we are going to display an editable view of an entry and
+ * an edit template has not been explicitly requested, first look
+ * for a file called "edit-TEMPLATE.html" and fall back on using
+ * "list-TEMPLATE.html" or "display-TEMPLATE.html", as indicated by
+ * the value of tmpltype.
+ */
+ filename = template_filename( DSGW_TMPLTYPE_EDIT, template );
+ tip->dsti_fp = dsgw_open_html_file( filename, DSGW_ERROPT_IGNORE );
+ free( filename );
+ }
+
+ if ( tip->dsti_fp == NULL ) {
+ filename = template_filename( tmpltype, template );
+ tip->dsti_fp = dsgw_open_html_file( filename, DSGW_ERROPT_EXIT );
+ free( filename );
+ }
+
+ tip->dsti_preludelines = dsgw_savelines_alloc();
+ tip->dsti_entrylines = dsgw_savelines_alloc();
+ in_entry = 0;
+
+ /* prime attrs array so we always retrieve objectClass values */
+ attrcount = 1;
+ tip->dsti_attrs = (char **)dsgw_ch_realloc( tip->dsti_attrs,
+ 2 * sizeof( char * ));
+ tip->dsti_attrs[ 0 ] = dsgw_ch_strdup( DSGW_ATTRTYPE_OBJECTCLASS );
+ tip->dsti_attrs[ 1 ] = NULL;
+ attrsonlycount = 0;
+ tip->dsti_attrsonly_attrs = NULL;
+
+ while ( dsgw_next_html_line( tip->dsti_fp, line )) {
+ skip_line = 0;
+ if ( dsgw_parse_line( line, &argc, &argv, 1, condition_is_true, tip )) {
+ if ( in_entry && dsgw_directive_is( line, DRCT_DS_ENTRYEND )) {
+ dsgw_argv_free( argv );
+ break; /* the rest is read inside dsgw_display_done */
+ }
+ if ( dsgw_directive_is( line, DRCT_DS_ENTRYBEGIN )) {
+ in_entry = skip_line = 1;
+ } else if ( dsgw_directive_is( line, DRCT_DS_ATTRIBUTE ) ||
+ dsgw_directive_is( line, DRCT_DS_ATTRVAL_SET )) {
+ aopts = get_attr_options( argc, argv );
+ if (( attr = get_arg_by_name( DSGW_ATTRARG_ATTR, argc,
+ argv )) != NULL && strcasecmp( attr, "dn" ) != 0 &&
+ (strcasecmp(attr,DSGW_ATTRTYPE_AIMSTATUSTEXT) != 0 || gc->gc_aimpresence == 1) &&
+ ( aopts & DSGW_ATTROPT_LINK ) == 0 ) {
+ if (( aopts & DSGW_ATTROPT_TYPEONLY ) == 0 ) {
+ append_to_array( &tip->dsti_attrs, &attrcount, attr );
+ } else {
+ append_to_array( &tip->dsti_attrsonly_attrs,
+ &attrsonlycount, attr );
+ }
+ }
+ } else if ( dsgw_directive_is( line, DRCT_DS_ORGCHARTLINK )) {
+ aopts = get_attr_options( argc, argv );
+ if (( aopts & DSGW_ATTROPT_TYPEONLY ) == 0 ) {
+ append_to_array( &tip->dsti_attrs, &attrcount, gc->gc_orgchartsearchattr );
+ } else {
+ append_to_array( &tip->dsti_attrsonly_attrs,
+ &attrsonlycount, gc->gc_orgchartsearchattr);
+ }
+ } else if ( dsgw_directive_is( line, DRCT_DS_SORTENTRIES )) {
+ if (( attr = get_arg_by_name( DSGW_ATTRARG_ATTR, argc,
+ argv )) == NULL ) {
+ tip->dsti_sortbyattr = NULL; /* no attr=, so sort by DN */
+ } else {
+ tip->dsti_sortbyattr = dsgw_ch_strdup( attr );
+ }
+ skip_line = 1; /* completely done with directive */
+ }
+ dsgw_argv_free( argv );
+ }
+
+ if ( !skip_line ) {
+ if ( in_entry ) { /* in entry */
+ dsgw_savelines_save( tip->dsti_entrylines, line );
+ } else { /* in prelude */
+ dsgw_savelines_save( tip->dsti_preludelines, line );
+ }
+ }
+ }
+
+ if ( attrcount > 0 ) {
+ tip->dsti_attrflags = (unsigned long *)dsgw_ch_malloc( attrcount
+ * sizeof( unsigned long ));
+ memset( tip->dsti_attrflags, 0, attrcount * sizeof( unsigned long ));
+ }
+
+ /*
+ * Add the sortattr to the list of attrs retrieved, if it's not
+ * already in the list.
+ */
+ if ( tip->dsti_sortbyattr != NULL ) {
+ int i, found = 0;
+ for ( i = 0; i < attrcount; i++ ) {
+ if ( !strcasecmp( tip->dsti_sortbyattr, tip->dsti_attrs[ i ])) {
+ found = 1;
+ break;
+ }
+ }
+ if ( !found ) {
+ append_to_array( &tip->dsti_attrs, &attrcount,
+ tip->dsti_sortbyattr );
+ }
+ }
+
+ return( tip );
+}
+
+
+void
+dsgw_display_entry( dsgwtmplinfo *tip, LDAP *ld, LDAPMessage *entry,
+ LDAPMessage *attrsonly_entry, char *dn )
+{
+ int argc, editable, adding;
+ char **argv, *encodeddn, *line;
+
+ editable = (( tip->dsti_options & DSGW_DISPLAY_OPT_EDITABLE ) != 0 );
+ adding = (( tip->dsti_options & DSGW_DISPLAY_OPT_ADDING ) != 0 );
+
+ if ( entry == NULL && !adding ) {
+ dsgw_error( DSGW_ERR_MISSINGINPUT, NULL, DSGW_ERROPT_EXIT, 0, NULL );
+ }
+
+ tip->dsti_ld = ld;
+ tip->dsti_entry = entry;
+ tip->dsti_attrsonly_entry = attrsonly_entry;
+
+ if ( dn == NULL ) {
+ if ( entry == NULL ) {
+ dn = "dn=unknown";
+ } else if (( dn = ldap_get_dn( ld, entry )) == NULL ) {
+ dsgw_ldap_error( ld, DSGW_ERROPT_EXIT );
+ }
+ }
+ tip->dsti_entrydn = dsgw_ch_strdup( dn );
+ encodeddn = dsgw_strdup_escaped( dn );
+
+ if ( adding ) {
+ tip->dsti_rdncomps = dsgw_rdn_values( dn );
+ }
+
+ if ( tip->dsti_preludelines != NULL ) {
+ output_prelude( tip );
+ }
+
+
+ dsgw_savelines_rewind( tip->dsti_entrylines );
+ while (( line = dsgw_savelines_next( tip->dsti_entrylines )) != NULL ) {
+ if ( dsgw_parse_line( line, &argc, &argv, 0, condition_is_true, tip )) {
+ if ( dsgw_directive_is( line, DRCT_DS_ATTRIBUTE )) {
+ do_attribute( tip, dn, tip->dsti_options, argc, argv );
+
+ } else if ( dsgw_directive_is( line, DRCT_DS_ATTRVAL_SET )) {
+ do_attrvalset( tip, dn, tip->dsti_options, argc, argv );
+
+ } else if ( dsgw_directive_is( line, DRCT_DS_ORGCHARTLINK )) {
+ do_orgchartlink( tip, dn, tip->dsti_options, argc, argv );
+
+ } else if ( dsgw_directive_is( line, DRCT_DS_EMIT_BASE_HREF )) {
+ char *p;
+ char *sname = dsgw_ch_strdup( getenv( "SCRIPT_NAME" ));
+ if (( p = strrchr( sname, '/' )) != NULL ) {
+ *p = '\0';
+ }
+ dsgw_emitf( "<BASE HREF=\"%s%s/\">\n",
+ getenv( "SERVER_URL" ), sname );
+
+ } else if ( dsgw_directive_is( line, DRCT_DS_BEGIN_DNSEARCHFORM )) {
+ dsgw_form_begin ( "searchForm", "action=\"%s\" %s %s",
+ dsgw_getvp( DSGW_CGINUM_DOSEARCH ),
+ "target=stagingFrame",
+ "onSubmit=\"return parent.processSearch(searchForm);\"" );
+ dsgw_emitf( "\n<INPUT TYPE=\"hidden\" NAME=\"dn\" VALUE=\"%s\";>\n", encodeddn );
+
+ } else if ( dsgw_directive_is( line, DRCT_DS_BEGIN_ENTRYFORM )) {
+ if ( editable ) {
+ dsgw_form_begin("modifyEntryForm","ACTION=\"%s\"",
+ dsgw_getvp( DSGW_CGINUM_DOMODIFY ));
+ dsgw_emits( "\n<INPUT TYPE=hidden NAME=\"changetype\">\n" );
+ dsgw_emitf( "<INPUT TYPE=hidden NAME=\"dn\" VALUE=\"%s\">\n",
+ encodeddn );
+ dsgw_emits( "<INPUT TYPE=hidden NAME=\"changed_DN\" VALUE=false>\n");
+ dsgw_emits( "<INPUT TYPE=hidden NAME=\"deleteoldrdn\" VALUE=true>\n");
+
+ } else {
+ dsgw_form_begin("editEntryForm", "action=\"%s\" %s",
+ dsgw_getvp( DSGW_CGINUM_AUTH ),
+ "target=\"_blank\"" );
+ dsgw_emits( "\n" );
+ }
+
+ } else if ( dsgw_directive_is( line, DRCT_DS_END_ENTRYFORM )) {
+ dsgw_emitf( "</FORM>\n" );
+ dsgw_emit_confirmForm();
+
+ } else if ( dsgw_directive_is( line, DRCT_DS_END_DNSEARCHFORM )) {
+ dsgw_emitf( "</FORM>\n" );
+ dsgw_emit_alertForm();
+ dsgw_emit_confirmForm();
+
+ } else if ( dsgw_directive_is( line, DRCT_DS_EDITBUTTON )) {
+ if ( !editable ) do_editbutton( dn, encodeddn, argc, argv );
+
+ } else if ( dsgw_directive_is( line, DRCT_DS_DELETEBUTTON )) {
+ if ( editable && !adding ) do_deletebutton( argc, argv );
+
+ } else if ( dsgw_directive_is( line, DRCT_DS_RENAMEBUTTON )) {
+ /* if ( editable && !adding ) do_renamebutton( dn, argc, argv ); */
+
+ } else if ( dsgw_directive_is( line, DRCT_DS_EDITASBUTTON )) {
+ if ( editable ) do_editasbutton( argc, argv );
+
+ } else if ( dsgw_directive_is( line, DRCT_DS_SAVEBUTTON )) {
+ if ( editable ) do_savebutton( tip->dsti_options, argc, argv );
+
+ } else if ( dsgw_display_line( tip, line, argc, argv )) {
+
+ } else if ( dsgw_directive_is( line, DRCT_DS_NEWPASSWORD )) {
+ if ( editable ) do_passwordfield( tip->dsti_options, argc,
+ argv, "newpasswd" );
+
+ } else if ( dsgw_directive_is( line, DRCT_DS_CONFIRM_NEWPASSWORD )) {
+ if ( editable ) do_passwordfield( tip->dsti_options, argc,
+ argv, "newpasswdconfirm" );
+
+ } else if ( dsgw_directive_is( line, DRCT_DS_OLDPASSWORD )) {
+ if ( editable ) do_passwordfield( tip->dsti_options, argc,
+ argv, "passwd" );
+
+ } else if ( dsgw_directive_is( line, DRCT_DS_DNATTR )) {
+ if ( dsgw_dnattr != NULL ) dsgw_emits( dsgw_dnattr );
+
+ } else if ( dsgw_directive_is( line, DRCT_DS_DNDESC )) {
+ if ( dsgw_dndesc != NULL ) dsgw_emits( dsgw_dndesc );
+
+ } else if ( dsgw_directive_is( line, DRCT_DS_DNEDITBUTTON )) {
+ if ( editable ) {
+ do_dneditbutton( tip->dsti_options, argc, argv );
+ }
+
+ } else if ( dsgw_directive_is( line, "DS_DNADDBUTTON" )) {
+ dsgw_emits ("<INPUT TYPE=SUBMIT");
+ {
+ auto char* v = get_arg_by_name (DSGW_ATTRARGS_VALUE, argc, argv);
+ if (v) dsgw_emitf (" VALUE=\"%s\"", v);
+ }
+ dsgw_emits (">\n");
+
+ } else if ( dsgw_directive_is( line, "DS_DNREMOVEBUTTON" )) {
+ dsgw_emits ("<INPUT TYPE=BUTTON");
+ {
+ auto char* v = get_arg_by_name (DSGW_ATTRARGS_VALUE, argc, argv);
+ if (v) dsgw_emitf (" VALUE=\"%s\"", v);
+ }
+ dsgw_emits (" onClick=\"if (parent.processSearch(searchForm)) {"
+ "searchForm.faMode.value='remove';"
+ "searchForm.submit();"
+ "searchForm.searchstring.select();"
+ "searchForm.searchstring.focus();"
+ "}\">\n");
+
+ } else if ( dsgw_directive_is( line, DRCT_DS_VIEW_SWITCHER ) &&
+ tip->dsti_entry != NULL ) {
+ do_viewswitcher( tip->dsti_template, tip->dsti_entrydn,
+ argc, argv );
+
+ } else if ( dsgw_directive_is( line, DRCT_DS_STD_COMPLETION_JS )) {
+ do_std_completion_js( tip->dsti_template, argc, argv );
+
+ } else {
+ dsgw_emits( line );
+ }
+
+ dsgw_argv_free( argv );
+ }
+ }
+
+ free( encodeddn );
+}
+
+static void
+dsgw_setstr (char** into, const char* from)
+{
+ if (from) {
+ auto const size_t len = strlen (from) + 1;
+ *into = dsgw_ch_realloc (*into, len);
+ memmove (*into, from, len);
+ } else if (*into) {
+ free (*into);
+ *into = NULL;
+ }
+}
+
+void
+dsgw_set_searchdesc( dsgwtmplinfo *tip, char *s2, char *s3, char *s4 )
+{
+ dsgw_setstr( &(tip->dsti_search2s), s2 );
+ dsgw_setstr( &(tip->dsti_search3s), s3 );
+ dsgw_setstr( &(tip->dsti_search4s), s4 );
+}
+
+void
+dsgw_set_search_result( dsgwtmplinfo *tip, int entrycount, char *searcherror,
+ char *lderrtxt )
+{
+ tip->dsti_entrycount = entrycount;
+ dsgw_setstr( &(tip->dsti_searcherror), searcherror );
+ dsgw_setstr( &(tip->dsti_searchlderrtxt), lderrtxt );
+}
+
+
+void
+dsgw_display_done( dsgwtmplinfo *tip )
+{
+ char line[ BIG_LINE ], *jscomp;
+
+ if ( tip->dsti_preludelines != NULL ) {
+ output_prelude( tip );
+ }
+
+ while ( dsgw_next_html_line( tip->dsti_fp, line )) {
+ output_nonentry_line( tip, line );
+ }
+
+ /*
+ * check for "completion_javascript" form var and
+ * execute it if present.
+ */
+ jscomp = dsgw_get_cgi_var( "completion_javascript",
+ DSGW_CGIVAR_OPTIONAL );
+ if ( jscomp != NULL ) {
+ dsgw_emits( "<SCRIPT LANGUAGE=\"JavaScript\">\n" );
+ dsgw_emitf( "eval('%s');\n", jscomp );
+ dsgw_emits( "</SCRIPT>\n" );
+ }
+
+ fflush( stdout );
+ fflush( stdout );
+
+ dsgw_savelines_free( tip->dsti_entrylines );
+ fclose( tip->dsti_fp );
+ if ( tip->dsti_attrs != NULL ) {
+ ldap_value_free( tip->dsti_attrs );
+ }
+ if ( tip->dsti_attrflags != NULL ) {
+ free( tip->dsti_attrflags );
+ }
+ if ( tip->dsti_rdncomps != NULL ) {
+ ldap_value_free( tip->dsti_rdncomps );
+ }
+ free( tip );
+}
+
+
+static void
+output_prelude( dsgwtmplinfo *tip )
+{
+ int editable, adding;
+ char *line, *encodeddn;
+
+ if ( tip->dsti_preludelines != NULL ) { /* output the prelude */
+ dsgw_savelines_rewind( tip->dsti_preludelines );
+ while (( line = dsgw_savelines_next( tip->dsti_preludelines ))
+ != NULL ) {
+ output_nonentry_line( tip, line );
+ }
+ dsgw_savelines_free( tip->dsti_preludelines );
+ tip->dsti_preludelines = NULL;
+ }
+
+ /* output any JavaScript functions we want to include before the entry */
+ dsgw_emits( "<SCRIPT LANGUAGE=\"JavaScript\">\n" );
+ dsgw_emits( "<!-- Hide from non-JavaScript-capable browsers\n" );
+ dsgw_emits( "var emptyFrame = '';\n" );
+ editable = ( tip->dsti_options & DSGW_DISPLAY_OPT_EDITABLE ) != 0;
+ adding = ( tip->dsti_options & DSGW_DISPLAY_OPT_ADDING ) != 0;
+
+ if ( !editable ) {
+ char *urlprefix = dsgw_ch_malloc( strlen(gc->gc_urlpfxmain) + 128);
+
+ sprintf(urlprefix, "%semptyFrame.html", gc->gc_urlpfxmain);
+
+ /* include the functions used to support "Edit" buttons */
+ /* function haveAuthCookie() */
+ dsgw_emits( "function haveAuthCookie()\n{\n" );
+ dsgw_emitf( " return ( document.cookie.indexOf( '%s=' ) >= 0 "
+ "&& document.cookie.indexOf( '%s=%s' ) < 0 );\n}\n\n",
+ DSGW_AUTHCKNAME, DSGW_AUTHCKNAME, DSGW_UNAUTHSTR );
+
+ /* function authOrEdit() -- calls haveAuthCookie() */
+ dsgw_emits( "function authOrEdit(encodeddn)\n{\n" );
+ dsgw_emitf( " editURL = '%s?context=%s&dn=' + encodeddn;\n",
+ dsgw_getvp( DSGW_CGINUM_EDIT ), context);
+ dsgw_emits( " if ( haveAuthCookie()) {\n" );
+ dsgw_emits( "\tnw = open(editURL, \"_blank\");\n" );
+ dsgw_emits( "\twindow.location.href = " );
+ dsgw_quote_emits (QUOTATION_JAVASCRIPT, urlprefix);
+ dsgw_emits( ";\n"
+ " } else {\n"
+ "\tdocument.editEntryForm.authdesturl.value = editURL;\n"
+ "\ta = open(");
+ dsgw_quote_emits (QUOTATION_JAVASCRIPT, urlprefix);
+
+ free(urlprefix);
+ urlprefix = NULL;
+ dsgw_emits(", 'AuthWin');\n"
+ "\ta.opener = self;\n"
+ "\ta.closewin = true;\n"
+ "\tdocument.editEntryForm.target = 'AuthWin';\n"
+ "\tdocument.editEntryForm.submit();\n"
+ " }\n}\n" );
+
+ } else {
+ /* include variables and functions used to support edit mode */
+ dsgw_emits( "var changesHaveBeenMade = 0;\n\n" );
+ dsgw_emits( "var possiblyChangedAttr = null;\n\n" );
+
+ /* function aChg() -- called from onChange and onClick handlers */
+ dsgw_emits( "function aChg(attr)\n{\n" );
+ if ( !adding ) {
+ dsgw_emits( " cmd = 'document.modifyEntryForm.changed_' + "
+ "attr + '.value = \"true\"';\n" );
+ dsgw_emits( " eval( cmd );\n possiblyChangedAttr = null;\n" );
+ }
+ dsgw_emits( " changesHaveBeenMade = 1;\n}\n\n" );
+
+
+ if ( !adding ) {
+ /* function aFoc() -- called when text area gets focus. */
+ dsgw_emits( "function aFoc(attr)\n{\n"
+ " possiblyChangedAttr = attr;\n}\n\n" );
+ }
+
+ /* function submitModify() */
+ dsgw_emits( "function submitModify(changetype)\n{\n" );
+ if ( !adding ) {
+ dsgw_emits( "\tif ( possiblyChangedAttr != null ) "
+ "aChg(possiblyChangedAttr);\n" );
+ }
+ dsgw_emits( "\tdocument.modifyEntryForm.changetype.value = changetype;\n" );
+ dsgw_emits( "\tdocument.modifyEntryForm.submit();\n}\n" );
+
+ /* function confirmModify() */
+ dsgw_emits( "var changetype = '';\n\n" );
+ dsgw_emits( "function confirmModify(ctype, prompt)\n{\n" );
+ dsgw_emits( " changetype = ctype;\n" );
+ dsgw_emit_confirm (NULL, "opener.submitModify(opener.changetype);", NULL/*no*/,
+ NULL /* options */, 0, "prompt");
+ dsgw_emits( "}\n" );
+
+ /* function EditEntryAs() */
+/*
+ dsgw_emits( "function EditEntryAs(template)\n{\n" );
+ dsgw_emits( " newurl = window.location.protocol + '//' +\n"
+ "\twindow.location.host +\n"
+ "\twindow.location.pathname + '?' + template;\n" );
+ dsgw_emits( "\twindow.location.href = newurl;\n}\n" );
+*/
+
+ if ( tip->dsti_entrydn != NULL ) {
+ encodeddn = dsgw_strdup_escaped( tip->dsti_entrydn );
+ dsgw_emits( "function EditEntryAs(template)\n{\n" );
+ dsgw_emitf( " newurl = '%s?' + template + '&context=%s&dn=%s';\n",
+ dsgw_getvp( DSGW_CGINUM_EDIT ), context, encodeddn );
+ dsgw_emits( "\twindow.location.href = newurl;\n}\n" );
+ }
+
+ /* function DNEdit() */
+ if ( tip->dsti_entrydn != NULL ) {
+ encodeddn = dsgw_strdup_escaped( tip->dsti_entrydn );
+ dsgw_emits( "var DNEditURL;\n" );
+ dsgw_emits( "function DNEdit(template, attr, desc)\n{\n" );
+ dsgw_emitf( " DNEditURL = '%s?template=' + template + "
+ "'&dn=%s&context=%s&ATTR=' + attr + '&DESC=' + escape(desc);\n",
+ dsgw_getvp( DSGW_CGINUM_DNEDIT ), encodeddn, context );
+ dsgw_emits( " if( !changesMade() ) window.location.href = DNEditURL;\n"
+ " else {\n");
+ dsgw_emit_confirm( NULL, "opener.location.href = opener.DNEditURL;", NULL/*no*/,
+ XP_GetClientStr(DBT_continueWithoutSavingWindow_), 1,
+ XP_GetClientStr(DBT_continueWithoutSaving_));
+ dsgw_emits( " }\n");
+ dsgw_emits( "}\n" );
+ }
+
+ /* function changesMade() */
+ dsgw_emits( "function changesMade()\n{\n" );
+ if ( !adding ) {
+ dsgw_emits( "\tif ( possiblyChangedAttr != null ) "
+ "aChg(possiblyChangedAttr);\n" );
+ }
+ dsgw_emits( " return( changesHaveBeenMade );\n}\n" );
+
+ /* function closeIfOK() */
+ dsgw_emits( "function closeIfOK()\n{\n"
+ " if ( !changesMade() ) top.close();\n"
+ " else {\n" );
+ dsgw_emit_confirm( NULL, "opener.top.close();", NULL/*no*/,
+ XP_GetClientStr(DBT_discardChangesWindow_), 1,
+ XP_GetClientStr(DBT_discardChanges_));
+ dsgw_emits( " }\n}\n" );
+
+ /* set unload handler to catch unsaved changes */
+ dsgw_emits( "document.onUnload = \""
+ "return ( !changesMade() || prompt( 'Discard Changes?' ));\"\n" );
+ }
+
+ dsgw_emits( "// End hiding -->\n</SCRIPT>\n" );
+}
+
+
+static void
+output_nonentry_line( dsgwtmplinfo *tip, char *line )
+{
+ int argc;
+ char **argv;
+
+ if ( dsgw_parse_line( line, &argc, &argv, 0, condition_is_true, tip )) {
+ if ( dsgw_directive_is( line, DRCT_DS_SEARCHDESC )) {
+ do_searchdesc( tip, argc, argv );
+ } else if ( dsgw_display_line ( tip, line, argc, argv )) {
+ } else {
+ dsgw_emits( line );
+ }
+ dsgw_argv_free( argv );
+ }
+}
+
+static char*
+find_RDN (char* DN, char* attr, char** vals)
+ /* Return a copy of the vals[i] that is
+ part of the RDN of the given DN.
+ */
+{
+ if (DN && *DN && vals && *vals) {
+ auto char** RDNs = ldap_explode_dn (DN, 0);
+ auto char** AVAs = ldap_explode_rdn (RDNs[0], 0);
+ ldap_value_free (RDNs);
+ if (AVAs) {
+ auto char** val = NULL;
+ auto char** AVA;
+ for (AVA = AVAs; *AVA; ++AVA) {
+ auto char* RDN = strchr (*AVA, '=');
+ if (RDN) {
+ *RDN++ = '\0';
+ if (!strcasecmp (*AVA, attr)) {
+ for (val = vals; *val; ++val) {
+ if (!strcmp (RDN, *val)) {
+ break;
+ }
+ }
+ if (*val) break;
+ /* bug: what if there are other AVAs
+ that also match attr and one of vals?
+ Even if this algorithm could find them,
+ it couldn't return them (the function
+ return value can't express multiple
+ values).
+ */
+ }
+ }
+ }
+ ldap_value_free (AVAs);
+ if (val) return *val;
+ }
+ }
+ return NULL;
+}
+
+/*static int
+ *is_aim_online(dsgwtmplinfo *tip)
+ *{
+ * char **ldvals = (char **) dsgw_get_values(tip->dsti_ld, tip->dsti_entry, DSGW_ATTRTYPE_AIMSTATUSTEXT, 0);
+ *
+ * if (ldvals == NULL || *ldvals == NULL || strcmp(*ldvals, "") == 0 ) {
+ * return(0);
+ * }
+ * return(1);
+ *
+ *}
+ */
+static void
+do_orgchartlink( dsgwtmplinfo *tip, char *dn, unsigned long dispopts,
+ int argc, char **argv )
+{
+ char **ldvals = (char **) dsgw_get_values(tip->dsti_ld, tip->dsti_entry, gc->gc_orgchartsearchattr, 0);
+ char *escaped_value;
+
+ if (gc->gc_orgcharturl == NULL || ldvals == NULL || *ldvals == NULL || strcmp(*ldvals,"") == 0) {
+ dsgw_emits("\"javascript:void(0)\"");
+ return;
+ }
+ dsgw_emits("\"");
+ dsgw_emits(gc->gc_orgcharturl);
+ escaped_value = dsgw_ch_malloc( 3 * strlen( ldvals[0] ) + 1 );
+ *escaped_value = '\0';
+ dsgw_strcat_escaped( escaped_value, ldvals[0]);
+ dsgw_emits(escaped_value);
+ dsgw_emits("\"\n");
+
+ return;
+}
+
+static void
+do_attribute( dsgwtmplinfo *tip, char *dn, unsigned long dispopts,
+ int argc, char **argv )
+{
+ char *attr, *syntax, *defval, *tmpvals[ 2 ], *s;
+ char **ldvals, **vals;
+ unsigned long options;
+ int i, len, attrindex, htmltype;
+ struct dsgw_attrdispinfo adi;
+ int editable = 0;
+ int tagged_attrs = 0;
+ int binary_value = 0;
+
+ if (( attr = get_arg_by_name( DSGW_ATTRARG_ATTR, argc, argv )) == NULL ) {
+ dsgw_emitf( XP_GetClientStr(DBT_missingS_), DSGW_ATTRARG_ATTR );
+ return;
+ }
+ if (( syntax = get_arg_by_name( DSGW_ATTRARG_SYNTAX, argc, argv ))
+ == NULL ) {
+ syntax = "cis";
+ }
+
+ if (( s = get_arg_by_name( DSGW_ATTRARG_HTMLTYPE, argc, argv )) == NULL ) {
+ htmltype = DSGW_ATTRHTML_TEXT;
+ } else {
+ for ( i = 0; attrhtmltypes[ i ] != NULL; ++i ) {
+ if ( strcasecmp( s, attrhtmltypes[ i ] ) == 0 ) {
+ htmltype = attrhtmlvals[ i ];
+ break;
+ }
+ }
+ if ( attrhtmltypes[ i ] == NULL ) {
+ dsgw_emitf( XP_GetClientStr(DBT_unknownSS_), DSGW_ATTRARG_HTMLTYPE, s );
+ return;
+ }
+ }
+
+ options = get_attr_options( argc, argv );
+
+ if (( options & DSGW_ATTROPT_TYPEONLY ) != 0 ) {
+ return; /* don't actually display attr. if we only retrieved types */
+ }
+
+ if (( options & DSGW_ATTROPT_LINK ) != 0 ) {
+ /*
+ * Output a "dosearch" URL that will retrieve this attribute.
+ * These used to look like:
+ * .../dosearch/<host>:<port>?dn=<encodeddn>&<attr>&<mimetype>&<valindex>
+ *
+ * Now, thanks to me, they look like:
+ * .../dosearch?context=<blah>&hp=<host>:<port>&dn=<encodeddn>&ldq=<the rest>
+ * - RJP
+ */
+ char *urlprefix, *escapeddn, *mimetype, *prefix, *suffix;
+
+ urlprefix = dsgw_build_urlprefix();
+ escapeddn = dsgw_strdup_escaped( dn );
+ mimetype = get_arg_by_name( DSGW_ATTRARG_MIMETYPE, argc, argv );
+ if (( prefix = get_arg_by_name( "prefix", argc, argv )) == NULL ) {
+ prefix = "";
+ }
+ if (( suffix = get_arg_by_name( "suffix", argc, argv )) == NULL ) {
+ suffix = "";
+ }
+
+ /* XXXmcs
+ * always reference first value for now ( "&0" ) unless returning
+ * link to a vCard (in which case we leave the &0 off)
+ */
+ dsgw_emitf("%s\"%s%s&ldq=%s&%s%s\"%s\n", prefix, urlprefix, escapeddn, attr,
+ ( mimetype == NULL ) ? "" : mimetype,
+ ( strcasecmp( "_vcard", attr ) == 0 ) ? "" : "&0", suffix );
+ free( urlprefix );
+ free( escapeddn );
+ return;
+ }
+
+ if (( dispopts & DSGW_DISPLAY_OPT_EDITABLE ) != 0
+ && ( options & DSGW_ATTROPT_READONLY ) == 0 ) {
+ options |= DSGW_ATTROPT_EDITABLE;
+ editable = 1;
+ if (( dispopts & DSGW_DISPLAY_OPT_ADDING ) != 0 ) {
+ options |= DSGW_ATTROPT_ADDING;
+ }
+ }
+
+ if (( dispopts & DSGW_DISPLAY_OPT_LINK2EDIT ) != 0 ) {
+ options |= DSGW_ATTROPT_LINK2EDIT;
+ }
+ if ((options & DSGW_ATTROPT_QUOTED ) != 0 ) {
+ options &= ~DSGW_ATTROPT_EDITABLE;/* always read-only */
+ options &= ~DSGW_ATTROPT_ADDING; /* always read-only */
+ options |= DSGW_ATTROPT_READONLY;
+ }
+
+ ldvals = vals = NULL;
+
+ if ( strcasecmp( attr, "dn" ) == 0 ) { /* dn pseudo-attribute */
+ tmpvals[ 0 ] = dn;
+ tmpvals[ 1 ] = NULL;
+ vals = tmpvals;
+ options &= ~DSGW_ATTROPT_EDITABLE; /* always read-only */
+ options &= ~DSGW_ATTROPT_ADDING; /* always read-only */
+ options |= DSGW_ATTROPT_READONLY;
+ } else if( strcasecmp( syntax, "binvalue" ) == 0) {
+
+ binary_value = 1;
+ /* Only display tagged stuff on searches */
+ if (editable){
+ ldvals = (char **) ldap_get_values_len(tip->dsti_ld, tip->dsti_entry, attr);
+ tagged_attrs = 0;
+ } else {
+ ldvals = (char **) dsgw_get_values(tip->dsti_ld, tip->dsti_entry, attr, 1 /*binary value*/);
+ tagged_attrs = 1;
+ }
+
+ if (ldvals != NULL) {
+ vals = ldvals;
+ }
+ } else if ( tip->dsti_entry != NULL) {
+
+ /* Only display tagged stuff on searches */
+ if ( editable){
+ ldvals = (char **) ldap_get_values( tip->dsti_ld, tip->dsti_entry, attr);
+ tagged_attrs = 0;
+ } else {
+ ldvals = (char **) dsgw_get_values( tip->dsti_ld, tip->dsti_entry, attr, 0 );
+ tagged_attrs = 1;
+ }
+ if (ldvals != NULL) {
+ vals = ldvals;
+ }
+ }
+
+ if (vals == NULL && (options & DSGW_ATTROPT_QUOTED ) != 0 ) {
+ dsgw_emits( "\"\"" );
+ return;
+ }
+
+ if ( vals == NULL && tip->dsti_rdncomps != NULL
+ && ( options & DSGW_ATTROPT_ADDING ) != 0 ) {
+ /*
+ * include values from the DN of new entry being added
+ */
+ len = strlen( attr );
+ ldvals = NULL;
+
+ for ( i = 0; tip->dsti_rdncomps[ i ] != NULL; ++i ) {
+ if (( s = strchr( tip->dsti_rdncomps[ i ], '=' )) != NULL &&
+ s - tip->dsti_rdncomps[ i ] == len &&
+ strncasecmp( attr, tip->dsti_rdncomps[ i ], len ) == 0 ) {
+ tmpvals[ 0 ] = ++s;
+ tmpvals[ 1 ] = NULL;
+ vals = tmpvals;
+ break;
+ }
+ }
+ }
+
+ if ( vals == NULL && ( defval = get_arg_by_name( DSGW_ATTRARG_DEFAULT,
+ argc, argv )) != NULL ) {
+ tmpvals[ 0 ] = defval;
+ tmpvals[ 1 ] = NULL;
+ vals = tmpvals;
+ }
+
+ if ( vals == NULL && ( options & DSGW_ATTROPT_EDITABLE ) == 0 ) {
+ if ( htmltype != DSGW_ATTRHTML_HIDDEN ) {
+ dsgw_HTML_emits( DSGW_UTF8_NBSP );
+ }
+ } else {
+ if (( adi.adi_handlerp = syntax2attrhandler( syntax )) == NULL ) {
+ dsgw_emitf( XP_GetClientStr(DBT_unknownSyntaxSN_), syntax );
+ } else {
+ if ( vals != NULL && vals[1] != NULL
+ && ( options & DSGW_ATTROPT_SORT ) != 0 ) {
+ ldap_sort_values( tip->dsti_ld, vals,
+ dsgw_valcmp (adi.adi_handlerp->ath_compare));
+ }
+ adi.adi_attr = attr;
+ adi.adi_argc = argc;
+ adi.adi_argv = argv;
+ adi.adi_vals = vals;
+ adi.adi_rdn = NULL;
+ adi.adi_htmltype = htmltype;
+ adi.adi_opts = options;
+
+ if (( options & DSGW_ATTROPT_EDITABLE ) == 0 ) {
+ (*adi.adi_handlerp->ath_display)( &adi );
+ } else {
+ if (( options & DSGW_ATTROPT_ADDING ) == 0 ) {
+ /* set flag to track attrs. we have seen */
+ for ( attrindex = 0; tip->dsti_attrs[ attrindex ] != NULL;
+ ++attrindex ) {
+ if ( strcasecmp( attr, tip->dsti_attrs[ attrindex ] )
+ == 0 ) {
+ break;
+ }
+ }
+ if ( tip->dsti_attrs[ attrindex ] != NULL ) {
+ if ( ! (tip->dsti_attrflags[ attrindex ] & DSGW_DSTI_ATTR_SEEN)) {
+ tip->dsti_attrflags[ attrindex ] |= DSGW_DSTI_ATTR_SEEN;
+ dsgw_emitf( "<INPUT TYPE=hidden NAME=\"changed_%s\" VALUE=false>\n",
+ attr );
+ }
+ adi.adi_rdn = find_RDN( dn, attr, vals );
+ }
+ }
+
+ /* display for editing */
+ (*adi.adi_handlerp->ath_edit)( &adi );
+ }
+ }
+ }
+
+ if ( ldvals != NULL ) {
+ if (tagged_attrs) {
+ dsgw_value_free( (void **) ldvals, binary_value );
+ } else {
+ if (binary_value) {
+ ldap_value_free_len( (struct berval **) ldvals );
+ } else {
+ ldap_value_free( ldvals );
+ }
+ }
+ }
+}
+
+
+
+static void
+append_to_array( char ***ap, int *countp, char *s )
+{
+ char **a;
+ int count;
+
+ a = *ap;
+ count = *countp;
+
+ a = (char **)dsgw_ch_realloc( a, ( count + 2 ) * sizeof( char * ));
+ a[ count++ ] = dsgw_ch_strdup( s );
+ a[ count ] = NULL;
+
+ *ap = a;
+ *countp = count;
+}
+
+
+static unsigned long
+get_attr_options( int argc, char **argv )
+{
+ int i;
+ unsigned long opts;
+ char *s;
+
+ opts = 0;
+
+ if (( s = get_arg_by_name( DSGW_ATTRARG_OPTIONS, argc, argv )) != NULL ) {
+ char *p, *q;
+
+ for ( p = dsgw_ch_strdup( s ); p != NULL; p = q ) {
+ if (( q = strchr( p, ',' )) != NULL ) {
+ *q++ = '\0';
+ }
+ for ( i = 0; attroptions[ i ] != NULL; ++i ) {
+ if ( strcasecmp( p, attroptions[ i ] ) == 0 ) {
+ opts |= attroptvals[ i ];
+ break;
+ }
+ }
+ if ( attroptions[ i ] == NULL ) {
+ dsgw_emitf( XP_GetClientStr(DBT_unknownOptionS_), p );
+ break;
+ }
+ }
+ free( p );
+ }
+
+ return( opts );
+}
+
+
+static struct attr_handler *
+syntax2attrhandler( char *syntax )
+{
+ int i;
+
+ for ( i = 0; i < DSGW_AH_COUNT; ++i ) {
+ if ( strcasecmp( syntax, attrhandlers[ i ].ath_syntax ) == 0 ) {
+ return( &attrhandlers[ i ] );
+ }
+ }
+
+ return( NULL );
+}
+
+
+static int
+numfields( int argc, char **argv, int valcount )
+{
+ char *s;
+ int fields;
+
+ if (( s = get_arg_by_name( DSGW_ATTRARGS_NUMFIELDS, argc,
+ argv )) == NULL ) {
+ fields = 1;
+ } else {
+ if ( *s == '+' || *s == ' ') {
+ /* "numfields=+N" means show N more than number of values */
+ fields = valcount + atoi( s + 1 );
+ } else {
+ if ( *s == '>' ) ++s;
+ /* "numfields=N" or "=>N" means show at least N fields */
+ fields = atoi( s );
+ }
+ }
+
+ if ( fields < 1 ) {
+ fields = 1;
+ } else if ( fields < valcount ) {
+ fields = valcount;
+ }
+
+ return( fields );
+}
+
+/*
+ * calculate size of TEXT or TEXTAREA elements based on arguments,
+ * the number of values, and the length of longest value.
+ */
+static void
+element_sizes( int argc, char **argv, char **vals, int valcount,
+ int *rowsp, int *colsp )
+{
+ int i, len, maxlen;
+ char *s;
+
+ /* set *colsp (number of columns in each input item) */
+ if ( colsp != NULL ) {
+ /*
+ * columns are set using the "cols=N" or "size=N" argument
+ * "cols=>N" can be used to indicate at least N columns should be shown
+ * "cols=+N" can be used to size to N more than longest value
+ * in the absence of any of these, we set columns to one more than
+ * the longest value in the "vals" array
+ */
+ if (( s = get_arg_by_name( DSGW_ATTRARGS_COLS, argc, argv )) == NULL ) {
+ s = get_arg_by_name( DSGW_ATTRARGS_SIZE, argc, argv );
+ }
+
+ if ( s != NULL && *s != '+' && *s != ' ' && *s != '>' ) {
+ *colsp = atoi( s ); /* extact width specified */
+ } else if ( valcount == 0 ) {
+ if ( s != NULL && *s == '>' ) {
+ *colsp = atoi( s + 1 );
+ } else {
+ *colsp = 0; /* use default width */
+ }
+ } else {
+ /* determine ( length of longest value ) + 1 */
+ maxlen = 0;
+ for ( i = 0; i < valcount; ++i ) {
+ if (( len = strlen( vals[ i ] )) > maxlen ) {
+ maxlen = len;
+ }
+ }
+ ++maxlen;
+
+ if ( s != NULL ) {
+ i = atoi( s + 1 );
+ if ( *s == ' ' || *s == '+' ) {
+ maxlen += i;
+ } else { /* '>' */
+ if ( maxlen < i ) {
+ maxlen = i;
+ }
+ }
+ }
+ *colsp = maxlen;
+ }
+ }
+
+ /* set *rowsp (number of rows in each input item) */
+ if ( rowsp != NULL ) {
+ /*
+ * rows are set using "rows=M" ("=>M" and "=+M" are supported also)
+ * in the absense of this, we set it to the number of values in the
+ * "vals" array
+ */
+ if (( s = get_arg_by_name( DSGW_ATTRARGS_ROWS, argc, argv )) == NULL ) {
+ *rowsp = valcount;
+ } else if ( *s == ' ' || *s == '+' ) {
+ *rowsp = valcount + atoi( s + 1 );
+ } else if ( *s == '>' ) {
+ if (( *rowsp = atoi( s + 1 )) < valcount ) {
+ *rowsp = valcount;
+ }
+ } else {
+ *rowsp = atoi( s );
+ }
+ }
+}
+
+
+static void
+output_text_elements( int argc, char **argv, char *attr, char **vals,
+ const char* rdn, char *prefix, int htmltype, unsigned long opts )
+{
+ int i, valcount, fields, cols;
+
+ if ( vals == NULL ) {
+ valcount = 0;
+ } else {
+ for ( valcount = 0; vals[ valcount ] != NULL; ++valcount ) {
+ char *syntax = get_arg_by_name( DSGW_ATTRARG_SYNTAX, argc, argv );
+ if ( syntax && 0 == strcasecmp( syntax, "ntdomain" )) {
+ char *pch = (char *)strchr( vals[ valcount ], DSGW_NTDOMAINID_SEP );
+ if( pch )
+ *pch = (char )NULL;
+ }
+ if ( syntax && ( 0 == strcasecmp( syntax, "ntuserid" ) || 0 == strcasecmp( syntax, "ntgroupname") ) ) {
+ char *pch = (char *)strchr( vals[ valcount ], DSGW_NTDOMAINID_SEP );
+ if( pch )
+ {
+ pch++;
+ vals[ valcount] = pch;
+ }
+ }
+ }
+ }
+
+ fields = numfields( argc, argv, valcount );
+ element_sizes( argc, argv, vals, valcount, NULL, &cols );
+
+ for ( i = 0; i < fields; ++i ) {
+ auto const int is_rdn = (i < valcount && vals[ i ] == rdn);
+
+ dsgw_emitf( "<INPUT TYPE=\"%s\"", attrhtmltypes[ htmltype ] );
+
+ dsgw_emitf( " NAME=\"%s%s%s\"", prefix, is_rdn ? "DN_" : "", attr );
+ if ( cols > 0 ) {
+ dsgw_emitf( " SIZE=%d", cols );
+ }
+
+ if ( i < valcount ) {
+ dsgw_emitf( " VALUE=\"%s\"", vals[ i ] );
+ }
+
+ if (( opts & DSGW_TEXTOPT_CHANGEHANDLERS ) != 0 ) {
+ dsgw_emitf( " onChange=\"aChg('%s')\"", is_rdn ? "DN" : attr );
+ }
+ if (( opts & DSGW_TEXTOPT_FOCUSHANDLERS ) != 0 ) {
+ dsgw_emitf( " onFocus=\"aFoc('%s')\"", is_rdn ? "DN" : attr );
+ }
+
+ dsgw_emitf( ">%s\n%s",
+ is_rdn ? " DN" : "",
+ ( i < fields - 1 &&
+ htmltype != DSGW_ATTRHTML_HIDDEN ) ? "<BR>\n" : "" );
+ }
+}
+
+
+static void
+output_textarea( int argc, char **argv, char *attr, char **vals,
+ int valcount, char *prefix, unsigned long opts )
+{
+ int i, rows, cols;
+
+ element_sizes( argc, argv, vals, valcount, &rows, &cols );
+
+ dsgw_emits( "<TEXTAREA" );
+ dsgw_emitf( " NAME=\"%s%s\"", prefix, attr );
+ if ( rows > 0 ) {
+ if ( rows == 1 ) {
+ rows = 2; /* one line TEXTAREAs are ugly! */
+ }
+ dsgw_emitf( " ROWS=%d", rows );
+ }
+
+ if ( cols > 0 ) {
+ dsgw_emitf( " COLS=%d", cols );
+ }
+
+ if (( opts & DSGW_TEXTOPT_CHANGEHANDLERS ) != 0 ) {
+ dsgw_emitf( " onChange=\"aChg('%s')\"", attr );
+ }
+ if (( opts & DSGW_TEXTOPT_FOCUSHANDLERS ) != 0 ) {
+ dsgw_emitf( " onFocus=\"aFoc('%s')\"", attr );
+ }
+
+ dsgw_emits( ">\n" );
+
+ for ( i = 0; i < valcount; ++i ) {
+ dsgw_emits( vals[ i ] );
+ dsgw_emits( "\n" );
+ }
+
+ dsgw_emits( "</TEXTAREA>\n" );
+}
+
+
+static void
+output_text_checkbox_or_radio( struct dsgw_attrdispinfo *adip, char *prefix,
+ int htmltype )
+{
+ int i, checked;
+ char *value;
+
+ /*
+ * for checkboxes or radio buttons that are associated with string values,
+ * we "check the box" if the value found in the "value=XXX" parameter is
+ * present.
+ */
+ checked = 0;
+ if (( value = get_arg_by_name( DSGW_ATTRARGS_VALUE, adip->adi_argc,
+ adip->adi_argv )) == NULL ) {
+ value = "TRUE"; /* assume LDAP Boolean value */
+ }
+ if ( adip->adi_vals == NULL ) {
+ if ( *value == '\0' ) {
+ /*
+ * There are no existing values in the entry and this checkbox or
+ * radio button has a zero-length value associated with it. We
+ * check this box/enable this radio button as a special case to
+ * support an "off" or "none of the rest" scenario.
+ */
+ checked = 1;
+ }
+
+ } else {
+ for ( i = 0; adip->adi_vals[ i ] != NULL; ++i ) {
+ if ( dsgw_valcmp(adip->adi_handlerp->ath_compare)( (const char **)&value,
+ (const char **)&(adip->adi_vals[ i ]) ) == 0 ) {
+ checked = 1;
+ break;
+ }
+ }
+ }
+ dsgw_emitf( "<INPUT TYPE=\"%s\" NAME=\"%s%s\" "
+ "VALUE=\"%s\"%s onClick=\"aChg('%s')\">\n",
+ ( htmltype == DSGW_ATTRHTML_RADIO ) ? "radio" : "checkbox",
+ prefix, adip->adi_attr, value, checked ? " CHECKED" : "",
+ adip->adi_attr );
+}
+
+
+static void
+emit_value( char *val, int quote_html_specials )
+{
+ int freeit;
+
+ if ( quote_html_specials ) {
+ val = dsgw_strdup_with_entities( val, &freeit );
+ } else {
+ freeit = 0;
+ }
+
+ dsgw_emits( val );
+
+ if ( freeit ) {
+ free( val );
+ }
+}
+
+
+/*
+ * Default display handler for binary values
+ */
+static void
+binvalue_display( struct dsgw_attrdispinfo *adip )
+{
+ int i;
+ struct berval **list_of_binvals;
+ char *checked = " CHECKED";
+ char *selected = " SELECTED";
+ int iValue;
+
+ list_of_binvals = (struct berval **)adip->adi_vals;
+
+ for ( i = 0; list_of_binvals[ i ] != NULL; ++i )
+ {
+ char szFlags[512], szFormat[512];
+ struct berval bin_data = *list_of_binvals[i];
+
+ if( !bin_data.bv_val || !bin_data.bv_len )
+ continue;
+
+ /* Now interpret the binary value if it has NT semantics */
+ if( !strcasecmp( adip->adi_attr, "ntuserpriv") )
+ {
+
+ memcpy( &iValue, bin_data.bv_val, sizeof( iValue ) );
+ fprintf( stdout, "<INPUT TYPE=\"radio\" NAME=\"%s\" "
+ "VALUE=\"TRUE\"%s>%s<BR>\n", adip->adi_attr,
+ (iValue == USER_PRIV_GUEST) ? checked : "", DSGW_NT_UP_GUEST);
+ fprintf( stdout, "<INPUT TYPE=\"radio\" NAME=\"%s\" "
+ "VALUE=\"TRUE\"%s>%s<BR>\n", adip->adi_attr,
+ (iValue == USER_PRIV_USER) ? checked : "", DSGW_NT_UP_USER);
+ fprintf( stdout, "<INPUT TYPE=\"radio\" NAME=\"%s\" "
+ "VALUE=\"TRUE\"%s>%s<BR>\n", adip->adi_attr,
+ (iValue == USER_PRIV_ADMIN) ? checked : "", DSGW_NT_UP_ADMIN);
+ }
+ else if ( strcasecmp( adip->adi_attr, "ntuserflags" ) == 0 )
+ {
+ memcpy( &iValue, bin_data.bv_val, sizeof( iValue ) );
+ fprintf( stdout, "<FONT size=-1><SELECT MULTIPLE name=\"%s\" size=5>\n", adip->adi_attr);
+
+ fprintf( stdout, "<OPTION value=\"%s\" %s>%s\n", DSGW_NT_UF_SCRIPT,
+ (iValue & UF_SCRIPT) ? selected : "", DSGW_NT_UF_SCRIPT );
+ fprintf( stdout, "<OPTION value=\"%s\" %s>%s\n", DSGW_NT_UF_ACCOUNT_DISABLED,
+ (iValue & UF_ACCOUNTDISABLE) ? selected : "",
+ DSGW_NT_UF_ACCOUNT_DISABLED);
+ fprintf( stdout, "<OPTION value=\"%s\" %s>%s\n", DSGW_NT_UF_HOMEDIR_REQD,
+ (iValue & UF_HOMEDIR_REQUIRED) ? selected : "",
+ DSGW_NT_UF_HOMEDIR_REQD);
+ fprintf( stdout, "<OPTION value=\"%s\" %s>%s\n", DSGW_NT_UF_PASSWD_NOTREQD,
+ (iValue & UF_PASSWD_NOTREQD) ? selected : "",
+ DSGW_NT_UF_PASSWD_NOTREQD);
+ fprintf( stdout, "<OPTION value=\"%s\" %s>%s\n", DSGW_NT_UF_PASSWD_CANT_CHANGE,
+ (iValue & UF_PASSWD_CANT_CHANGE) ? selected : "",
+ DSGW_NT_UF_PASSWD_CANT_CHANGE);
+ fprintf( stdout, "<OPTION value=\"%s\" %s>%s\n", DSGW_NT_UF_LOCKOUT,
+ (iValue & UF_LOCKOUT) ? selected : "", DSGW_NT_UF_LOCKOUT);
+ fprintf( stdout, "<OPTION value=\"%s\" %s>%s\n", DSGW_NT_UF_DONT_EXPIRE_PASSWORD,
+ (iValue & UF_DONT_EXPIRE_PASSWD) ? selected : "",
+ DSGW_NT_UF_DONT_EXPIRE_PASSWORD);
+
+ fprintf( stdout, "<OPTION value=\"%s\" %s>%s\n", DSGW_NT_UF_NORMAL_ACCOUNT,
+ (iValue & UF_NORMAL_ACCOUNT) ? selected : "",
+ DSGW_NT_UF_NORMAL_ACCOUNT);
+ fprintf( stdout, "<OPTION value=\"%s\" %s>%s\n", DSGW_NT_UF_TEMP_DUPLICATE_ACCOUNT,
+ (iValue & UF_TEMP_DUPLICATE_ACCOUNT) ? selected : "",
+ DSGW_NT_UF_TEMP_DUPLICATE_ACCOUNT);
+ fprintf( stdout, "<OPTION value=\"%s\" %s>%s\n", DSGW_NT_UF_TEMP_WRKSTN_TRUST_ACCOUNT,
+ (iValue & UF_WORKSTATION_TRUST_ACCOUNT) ? selected : "",
+ DSGW_NT_UF_TEMP_WRKSTN_TRUST_ACCOUNT);
+ fprintf( stdout, "<OPTION value=\"%s\" %s>%s\n", DSGW_NT_UF_TEMP_SERVER_TRUST_ACCOUNT,
+ (iValue & UF_SERVER_TRUST_ACCOUNT) ? selected : "",
+ DSGW_NT_UF_TEMP_SERVER_TRUST_ACCOUNT);
+ fprintf( stdout, "<OPTION value=\"%s\" %s>%s\n", DSGW_NT_UF_TEMP_INTERDOMAIN_TRUST_ACCOUNT,
+ (iValue & UF_INTERDOMAIN_TRUST_ACCOUNT) ? selected : "",
+ DSGW_NT_UF_TEMP_INTERDOMAIN_TRUST_ACCOUNT);
+
+ fprintf( stdout, "</SELECT><FONT size=+1>\n" );
+ }
+ else if ( strcasecmp( adip->adi_attr, "ntuserauthflags" ) == 0 )
+ {
+ memcpy( &iValue, bin_data.bv_val, sizeof( iValue ) );
+ fprintf( stdout, "<FONT size=-1><SELECT MULTIPLE name=\"%s\" "
+ "size=4>\n", adip->adi_attr);
+
+ fprintf( stdout, "<OPTION value=\"%s\" %s>%s\n", DSGW_NT_AF_OP_PRINT,
+ (iValue & AF_OP_PRINT) ? selected : "", DSGW_NT_AF_OP_PRINT);
+ fprintf( stdout, "<OPTION value=\"%s\" %s>%s\n", DSGW_NT_AF_OP_COMM,
+ (iValue & AF_OP_COMM) ? selected : "", DSGW_NT_AF_OP_COMM);
+ fprintf( stdout, "<OPTION value=\"%s\" %s>%s\n", DSGW_NT_AF_OP_SERVER,
+ (iValue & AF_OP_SERVER) ? selected : "", DSGW_NT_AF_OP_SERVER);
+ fprintf( stdout, "<OPTION value=\"%s\" %s>%s\n", DSGW_NT_AF_OP_ACCOUNTS,
+ (iValue & AF_OP_ACCOUNTS) ? selected : "", DSGW_NT_AF_OP_ACCOUNTS);
+
+ fprintf( stdout, "</SELECT><FONT size=+1>\n" );
+ }
+ else if ( bin_data.bv_val && ( bin_data.bv_len != 0 ))
+ {
+ if( bin_data.bv_len == 4 )
+ {
+ memcpy( &iValue, bin_data.bv_val, sizeof( iValue ) );
+
+ if(( adip->adi_opts & DSGW_ATTROPT_DECIMAL ) != 0 )
+ PR_snprintf( szFormat, 512, "%%lu" );
+ else
+ PR_snprintf( szFormat, 512, "%%#0%lu.%lux", bin_data.bv_len*2, bin_data.bv_len*2 );
+ PR_snprintf( szFlags, 512, szFormat, iValue );
+
+ fputs( szFlags, stdout );
+
+ if ( list_of_binvals[ i + 1 ] != NULL )
+ {
+ fputs( "<BR>\n", stdout );
+ }
+ }
+ }
+ }
+}
+
+/*
+ * display handler for NT Domain Identifier string
+ */
+static void
+ntdomain_display( struct dsgw_attrdispinfo *adip )
+{
+ int i;
+
+ /* Write values with a break (<BR>) separating them,
+ removing all after ":" */
+ for ( i = 0; adip->adi_vals[ i ] != NULL; ++i ) {
+ if ( !did_output_as_special( adip->adi_argc, adip->adi_argv,
+ adip->adi_vals[ i ], adip->adi_vals[ i ] )) {
+ char *pch = strchr( adip->adi_vals[ i ], DSGW_NTDOMAINID_SEP );
+ if( pch )
+ *pch = (char )NULL;
+ if ((adip->adi_opts & DSGW_ATTROPT_QUOTED ) != 0 ) {
+ dsgw_emits( "\"" );
+ }
+
+ fputs( adip->adi_vals[ i ], stdout );
+ if ((adip->adi_opts & DSGW_ATTROPT_QUOTED ) != 0 ) {
+ dsgw_emits( "\"" );
+ }
+ }
+
+ if ( adip->adi_vals[ i + 1 ] != NULL ) {
+ fputs( "<BR>\n", stdout );
+ }
+ }
+
+}
+
+
+
+/*
+ * display handler for simple strings
+ */
+static void
+str_display( struct dsgw_attrdispinfo *adip )
+{
+ int i;
+
+ if ( adip->adi_htmltype == DSGW_ATTRHTML_CHECKBOX ||
+ adip->adi_htmltype == DSGW_ATTRHTML_RADIO ) {
+ output_text_checkbox_or_radio( adip, "", adip->adi_htmltype );
+ return;
+ }
+
+ /* just write values with a break (<BR>) separating them */
+ for ( i = 0; adip->adi_vals[ i ] != NULL; ++i ) {
+
+ if ( !did_output_as_special( adip->adi_argc, adip->adi_argv,
+ adip->adi_vals[ i ], adip->adi_vals[ i ] ) &&
+ adip->adi_htmltype != DSGW_ATTRHTML_HIDDEN ) {
+ if ((adip->adi_opts & DSGW_ATTROPT_QUOTED ) != 0 ) {
+ dsgw_emits( "\"" );
+ }
+ emit_value( adip->adi_vals[ i ],
+ (( adip->adi_opts & DSGW_ATTROPT_NO_ENTITIES ) == 0 ));
+ if ((adip->adi_opts & DSGW_ATTROPT_QUOTED ) != 0 ) {
+ dsgw_emits( "\"" );
+ }
+ }
+
+ if ( adip->adi_htmltype != DSGW_ATTRHTML_HIDDEN &&
+ adip->adi_vals[ i + 1 ] != NULL ) {
+ dsgw_emits( "<BR>\n" );
+ }
+ }
+
+}
+
+
+static void
+ntuserid_display( struct dsgw_attrdispinfo *adip )
+{
+ int i;
+
+ /* Write values with a break (<BR>) separating them, after ":" */
+ for ( i = 0; adip->adi_vals[ i ] != NULL; ++i ) {
+ if ( !did_output_as_special( adip->adi_argc, adip->adi_argv,
+ adip->adi_vals[ i ], adip->adi_vals[ i ] )) {
+ char *pch = strchr( adip->adi_vals[ i ], DSGW_NTDOMAINID_SEP );
+ if( pch ) {
+ pch++;
+
+ if ((adip->adi_opts & DSGW_ATTROPT_QUOTED ) != 0 ) {
+ dsgw_emits( "\"" );
+ }
+
+ fputs( pch, stdout );
+ if ((adip->adi_opts & DSGW_ATTROPT_QUOTED ) != 0 ) {
+ dsgw_emits( "\"" );
+ }
+ }
+ }
+
+ if ( adip->adi_vals[ i + 1 ] != NULL ) {
+ fputs( "<BR>\n", stdout );
+ }
+ }
+
+}
+
+
+
+/*
+ * edit handler for simple strings
+ */
+static void
+str_edit( struct dsgw_attrdispinfo *adip )
+{
+ int valcount, adding, pre_idx;
+ char *prefix;
+ unsigned long textopts;
+
+ adding = (( adip->adi_opts & DSGW_ATTROPT_ADDING ) != 0 );
+ if (( adip->adi_opts & DSGW_ATTROPT_UNIQUE ) == 0 ) {
+ pre_idx = DSGW_MOD_PREFIX_NORMAL;
+ } else {
+ pre_idx = DSGW_MOD_PREFIX_UNIQUE;
+ }
+ prefix = adding ? add_prefixes[ pre_idx ] : replace_prefixes[ pre_idx ];
+
+ textopts = DSGW_TEXTOPT_CHANGEHANDLERS;
+ if ( !adding ) {
+ textopts |= DSGW_TEXTOPT_FOCUSHANDLERS;
+ }
+
+ switch( adip->adi_htmltype ) {
+ case DSGW_ATTRHTML_TEXTAREA:
+ if ( adip->adi_vals == NULL ) {
+ valcount = 0;
+ } else {
+ for ( valcount = 0; adip->adi_vals[ valcount ] != NULL;
+ ++valcount ) {
+ ;
+ }
+ }
+ output_textarea( adip->adi_argc, adip->adi_argv, adip->adi_attr,
+ adip->adi_vals, valcount, prefix, textopts );
+ break;
+
+ case DSGW_ATTRHTML_TEXT:
+ case DSGW_ATTRHTML_HIDDEN:
+ output_text_elements( adip->adi_argc, adip->adi_argv, adip->adi_attr,
+ adip->adi_vals, adip->adi_rdn, prefix, adip->adi_htmltype, textopts );
+ break;
+
+ case DSGW_ATTRHTML_CHECKBOX:
+ case DSGW_ATTRHTML_RADIO:
+ output_text_checkbox_or_radio( adip, prefix, adip->adi_htmltype );
+ break;
+
+ default:
+ dsgw_emitf( XP_GetClientStr(DBT_HtmlTypeSNotSupportedBrN_),
+ attrhtmltypes[ adip->adi_htmltype ] );
+ }
+}
+
+
+/*
+ * display handler for multi-line strings, e.g. postalAddress
+ * these are funny in that over LDAP, lines are separated by " $ "
+ * this only support "htmltype=text"
+ */
+static void
+mls_display( struct dsgw_attrdispinfo *adip )
+{
+ int i;
+
+ for ( i = 0; adip->adi_vals[ i ] != NULL; ++i ) {
+ if ( !did_output_as_special( adip->adi_argc, adip->adi_argv,
+ adip->adi_vals[ i ], adip->adi_vals[ i ] )) {
+ (void)dsgw_mls_convertlines( adip->adi_vals[ i ], "<BR>\n", NULL,
+ 1, ( adip->adi_opts & DSGW_ATTROPT_NO_ENTITIES ) == 0 );
+ }
+
+ if ( adip->adi_vals[ i + 1 ] != NULL ) {
+ dsgw_emits( "<BR><BR>\n" );
+ }
+ }
+}
+
+
+/*
+ * edit handler for multi-line strings
+ */
+static void
+mls_edit( struct dsgw_attrdispinfo *adip )
+{
+ char *prefix, **valscopy, *tval[ 2 ];
+ int i, valcount, adding, pre_idx, *lines;
+ unsigned long textopts;
+
+ adding = (( adip->adi_opts & DSGW_ATTROPT_ADDING ) != 0 );
+ textopts = DSGW_TEXTOPT_CHANGEHANDLERS;
+ if ( !adding ) {
+ textopts |= DSGW_TEXTOPT_FOCUSHANDLERS;
+ }
+
+ if (( adip->adi_opts & DSGW_ATTROPT_UNIQUE ) == 0 ) {
+ pre_idx = DSGW_MOD_PREFIX_NORMAL;
+ } else {
+ pre_idx = DSGW_MOD_PREFIX_UNIQUE;
+ }
+ prefix = adding ? add_mls_prefixes[ pre_idx ] :
+ replace_mls_prefixes[ pre_idx ];
+
+ if ( adip->adi_vals == NULL ) {
+ valscopy = NULL;
+ } else {
+ for ( valcount = 0; adip->adi_vals[ valcount ] != NULL; ++valcount ) {
+ ;
+ }
+ valscopy = (char **)dsgw_ch_malloc( (valcount + 1) * sizeof( char * ));
+ lines = (int *)dsgw_ch_malloc( valcount * sizeof( int ));
+ for ( i = 0; i < valcount; ++i ) {
+ valscopy[ i ] = dsgw_mls_convertlines( adip->adi_vals[ i ], "\n",
+ &lines[ i ], 0, 0 );
+ }
+ valscopy[ valcount ] = NULL;
+ }
+
+ if ( adip->adi_htmltype == DSGW_ATTRHTML_TEXTAREA ) {
+ if ( adip->adi_vals == NULL ) {
+ output_textarea( adip->adi_argc, adip->adi_argv, adip->adi_attr,
+ NULL, 0, prefix, textopts );
+ } else {
+ tval[ 1 ] = NULL;
+ for ( i = 0; i < valcount; ++i ) {
+ tval[ 0 ] = valscopy[ i ];
+ output_textarea( adip->adi_argc, adip->adi_argv,
+ adip->adi_attr, tval, 1, prefix, textopts );
+ if ( i < valcount - 1 ) {
+ dsgw_emits( "<BR>\n" );
+ }
+ }
+ }
+ } else {
+ output_text_elements( adip->adi_argc, adip->adi_argv, adip->adi_attr,
+ valscopy, NULL, prefix, adip->adi_htmltype, textopts );
+ /* Bug: what if adip->adi_rdn != NULL? In this case,
+ the element of valscopy that is a copy of adi_rdn
+ should be passed to output_text_elements (as the rdn).
+ */
+ }
+
+ if ( valscopy != NULL ) {
+ ldap_value_free( valscopy );
+ free( lines );
+ }
+}
+
+
+/*
+ * convert all occurrences of "$" in val to sep
+ * un-escape any \HH sequences
+ * if linesp != NULL, set *linesp equal to number of lines in val
+ * if emitlines is zero, a malloc'd string is returned.
+ * if emitlines is non-zero, values are written to stdout (respecting the
+ * quote_html_specials flag) and NULL is returned.
+ */
+char *
+dsgw_mls_convertlines( char *val, char *sep, int *linesp, int emitlines,
+ int quote_html_specials )
+{
+ char *valcopy, *p, *q, *curline;
+ int i, c, lines, seplen;
+
+ if ( sep == NULL ) {
+ sep = "";
+ seplen = 0;
+ } else {
+ seplen = strlen( sep );
+ }
+
+ lines = 0;
+ for ( q = val; *q != '\0'; ++q ) {
+ if ( *q == '$' ) {
+ ++lines;
+ }
+ }
+
+ if ( linesp != NULL ) {
+ *linesp = lines;
+ }
+
+ valcopy = dsgw_ch_malloc( strlen( val ) + lines * seplen + 1 );
+
+ /*
+ * p points to the place we are copying to
+ * q points to the place within the original value that we are examining
+ * curline points to the start of the current line
+ */
+ p = curline = valcopy;
+ for ( q = val; *q != '\0'; ++q ) {
+ if ( *q == '$' ) { /* line separator */
+ if ( emitlines ) {
+ *p = '\0';
+ emit_value( curline, quote_html_specials );
+ emit_value( sep, 0 );
+ }
+ strcpy( p, sep );
+ p += seplen;
+ curline = p;
+ } else if ( *q == '\\' ) { /* undo hex escapes */
+ if ( *++q == '\0' ) {
+ break;
+ }
+ c = toupper( *q );
+ i = ( c >= 'A' ? ( c - 'A' + 10 ) : c - '0' );
+ i <<= 4;
+ if ( *++q == '\0' ) {
+ break;
+ }
+ c = toupper( *q );
+ i += ( c >= 'A' ? ( c - 'A' + 10 ) : c - '0' );
+ *p++ = i;
+ } else {
+ *p++ = *q;
+ }
+ }
+
+ *p = '\0';
+
+ if ( emitlines ) {
+ if ( p > curline ) {
+ emit_value( curline, quote_html_specials );
+ }
+ free( valcopy );
+ valcopy = NULL;
+ }
+
+ return( valcopy );
+}
+
+
+static void
+dn_edit( struct dsgw_attrdispinfo *adip )
+{
+ if (( adip->adi_opts & DSGW_ATTROPT_DNPICKER ) != 0 ) {
+ dn_display( adip );
+ } else {
+ str_edit( adip );
+ }
+ return;
+}
+
+
+static void
+dn_display( struct dsgw_attrdispinfo *adip )
+{
+ int i, j, len, dncomps;
+ char *p, *staticlabel, *tmps = NULL, *label, *urlprefix, **rdns = NULL;
+
+ staticlabel = get_arg_by_name( DSGW_ATTRARG_LABEL, adip->adi_argc,
+ adip->adi_argv );
+
+ if (( p = get_arg_by_name( DSGW_ATTRARG_DNCOMP, adip->adi_argc,
+ adip->adi_argv )) == NULL ) {
+ dncomps = 1;
+ } else {
+ dncomps = atoi( p ); /* 0 or "all" means show all components */
+ }
+
+ if (( adip->adi_opts & DSGW_ATTROPT_LINK2EDIT ) != 0 ) {
+ auto const char* vp = dsgw_getvp( DSGW_CGINUM_EDIT );
+ /* urlprefix = vp + "?&context=CONTEXT&dn=": */
+ auto const size_t vplen = strlen (vp);
+ urlprefix = dsgw_ch_malloc (vplen + 6 + strlen(context) + 9);
+ memcpy( urlprefix, vp, vplen );
+ strcat( urlprefix, "?&context=");
+ strcat( urlprefix, context);
+ strcat( urlprefix, "&dn=");
+ } else {
+ urlprefix = dsgw_build_urlprefix();
+ }
+#ifdef DSGW_DEBUG
+ dsgw_log( "dn_display: urlprefix is %s\n", urlprefix );
+#endif
+
+ for ( i = 0; adip->adi_vals != NULL && adip->adi_vals[ i ] != NULL; ++i ) {
+ if ( staticlabel != NULL ) {
+ label = staticlabel;
+ } else if ( !looks_like_dn( adip->adi_vals[ i ]) ||
+ ( rdns = ldap_explode_dn( adip->adi_vals[ i ],
+ ( adip->adi_opts & DSGW_ATTROPT_DNTAGS ) == 0 )) == NULL ) {
+ /* explode DN failed -- show entire DN */
+ label = adip->adi_vals[ i ];
+ tmps = NULL;
+ } else {
+ len = 1; /* room for zero-termination */
+ for ( j = 0; rdns[ j ] != NULL && ( dncomps == 0 || j < dncomps );
+ ++ j ) {
+ len += ( 2 + strlen( rdns[ j ] )); /* rdn + ", " */
+ }
+ label = p = tmps = dsgw_ch_malloc( len );
+ for ( j = 0; rdns[ j ] != NULL && ( dncomps == 0 || j < dncomps );
+ ++ j ) {
+ if ( j > 0 ) {
+ strcpy( p, ", " );
+ p += 2;
+ }
+ strcpy( p, rdns[ j ] );
+ p += strlen( p );
+ }
+ }
+
+ if ( !did_output_as_special( adip->adi_argc, adip->adi_argv, label,
+ adip->adi_vals[ i ] )) {
+ if (( adip->adi_opts & DSGW_ATTROPT_NOLINK ) == 0 &&
+ looks_like_dn( adip->adi_vals[ i ] )) {
+ if (( adip->adi_opts & DSGW_ATTROPT_DNPICKER ) != 0 ) {
+ dsgw_emits( "<TR><TD>" );
+ }
+ /* Don't display a link for the rootdn */
+ if ( gc->gc_rootdn && dsgw_dn_cmp(adip->adi_vals[i], gc->gc_rootdn)) {
+ if ((adip->adi_opts & DSGW_ATTROPT_QUOTED ) != 0 ) {
+ dsgw_emits( "\"" );
+ }
+ dsgw_emits( label );
+ if ((adip->adi_opts & DSGW_ATTROPT_QUOTED ) != 0 ) {
+ dsgw_emits( "\"" );
+ }
+ } else {
+ dsgw_html_href( urlprefix, adip->adi_vals[ i ], label,
+ adip->adi_vals[ i ],
+ get_arg_by_name( DSGW_ATTRARG_HREFEXTRA,
+ adip->adi_argc, adip->adi_argv ));
+ }
+ if (( adip->adi_opts & DSGW_ATTROPT_DNPICKER ) != 0 ) {
+ dsgw_emits( "</TD>\n<TD ALIGN=CENTER><INPUT TYPE=CHECKBOX " );
+ dsgw_emitf( "VALUE=\"%s\" NAME=delete_%s ",
+ adip->adi_vals[ i ], adip->adi_attr );
+ dsgw_emitf( "onClick=\"aChg('%s');\"</TD>\n</TR>\n",
+ adip->adi_attr );
+ }
+ } else {
+ if ((adip->adi_opts & DSGW_ATTROPT_QUOTED ) != 0 ) {
+ dsgw_emits( "\"" );
+ }
+
+ emit_value( label,
+ (( adip->adi_opts & DSGW_ATTROPT_NO_ENTITIES ) == 0 ));
+ if ((adip->adi_opts & DSGW_ATTROPT_QUOTED ) != 0 ) {
+ dsgw_emits( "\"" );
+ }
+ }
+ }
+
+ if ( !( adip->adi_opts & DSGW_ATTROPT_DNPICKER ) &&
+ adip->adi_vals[ i + 1 ] != NULL ) {
+ dsgw_emits( "<BR>\n" );
+ }
+
+ if ( tmps != NULL ) {
+ free( tmps );
+ }
+
+ if ( rdns != NULL ) {
+ ldap_value_free( rdns );
+ }
+ }
+
+
+ /* Output a javascript array of values for this attribute */
+ if (( adip->adi_opts & DSGW_ATTROPT_DNPICKER ) != 0 ) {
+ dsgw_emits( "<SCRIPT LANGUAGE=\"JavaScript\">\n" );
+ dsgw_emits( "<!-- Hide from non-JavaScript-capable browsers\n" );
+ dsgw_emitf( "var %s_values = new Object;\n", adip->adi_attr );
+ for ( i = 0; adip->adi_vals != NULL && adip->adi_vals[ i ] != NULL; ++i ) {
+ char *edn;
+ edn = dsgw_strdup_escaped( adip->adi_vals[ i ]);
+ dsgw_emitf( "%s_values[%d] = \"%s\";\n", adip->adi_attr, i,
+ edn );
+ free( edn );
+ }
+ dsgw_emitf( "%s_values.count = %d;\n", adip->adi_attr, i );
+ dsgw_emits( "// End hiding -->\n" );
+ dsgw_emits( "</SCRIPT>\n" );
+ }
+
+ free( urlprefix );
+}
+
+
+static void
+mail_display( struct dsgw_attrdispinfo *adip )
+{
+ int i;
+
+ for ( i = 0; adip->adi_vals[ i ] != NULL; ++i ) {
+ if ( !did_output_as_special( adip->adi_argc, adip->adi_argv,
+ adip->adi_vals[ i ], adip->adi_vals[ i ] )) {
+ if (( adip->adi_opts & DSGW_ATTROPT_NOLINK ) == 0 ) {
+ dsgw_html_href( "mailto:", adip->adi_vals[ i ], adip->adi_vals[ i ], NULL,
+ get_arg_by_name( DSGW_ATTRARG_HREFEXTRA,
+ adip->adi_argc, adip->adi_argv ));
+ } else {
+ if ((adip->adi_opts & DSGW_ATTROPT_QUOTED ) != 0 ) {
+ dsgw_emits( "\"" );
+ }
+
+ emit_value( adip->adi_vals[ i ],
+ (( adip->adi_opts & DSGW_ATTROPT_NO_ENTITIES ) == 0 ));
+ if ((adip->adi_opts & DSGW_ATTROPT_QUOTED ) != 0 ) {
+ dsgw_emits( "\"" );
+ }
+
+ }
+ }
+
+ if ( adip->adi_vals[ i + 1 ] != NULL ) {
+ dsgw_emits( "<BR>\n" );
+ }
+ }
+
+}
+
+
+static void
+url_display( struct dsgw_attrdispinfo *adip )
+{
+ int i;
+ char *savep, *label;
+
+ for ( i = 0; adip->adi_vals[ i ] != NULL; ++i ) {
+ if (( label = strchr( adip->adi_vals[ i ], ' ' )) == NULL ) {
+ label = adip->adi_vals[ i ];
+ savep = NULL;
+ } else {
+ savep = label;
+ *label++ = '\0';
+ }
+
+ if ( !did_output_as_special( adip->adi_argc, adip->adi_argv, label,
+ adip->adi_vals[ i ] )) {
+ if (( adip->adi_opts & DSGW_ATTROPT_NOLINK ) == 0 ) {
+ dsgw_html_href( NULL, adip->adi_vals[ i ], label, NULL,
+ get_arg_by_name( DSGW_ATTRARG_HREFEXTRA,
+ adip->adi_argc, adip->adi_argv ));
+ } else {
+ if ((adip->adi_opts & DSGW_ATTROPT_QUOTED ) != 0 ) {
+ dsgw_emits( "\"" );
+ }
+
+ emit_value( adip->adi_vals[ i ],
+ (( adip->adi_opts & DSGW_ATTROPT_NO_ENTITIES ) == 0 ));
+ if ((adip->adi_opts & DSGW_ATTROPT_QUOTED ) != 0 ) {
+ dsgw_emits( "\"" );
+ }
+
+ }
+ }
+
+ if ( savep != NULL ) {
+ *savep = ' ';
+ }
+
+ if ( adip->adi_vals[ i + 1 ] != NULL ) {
+ dsgw_emits( "<BR>\n" );
+ }
+ }
+
+}
+
+
+static void
+bool_display( struct dsgw_attrdispinfo *adip )
+{
+ int boolval, free_onclick, pre_idx;
+ char *usestr, *truestr, *falsestr, *checked;
+ char *nameprefix, *onclick;
+
+ if ( adip->adi_vals == NULL || adip->adi_vals[ 0 ] == NULL ) {
+ return;
+ }
+
+ checked = " CHECKED";
+
+ if (( adip->adi_opts & DSGW_ATTROPT_EDITABLE ) == 0 ) {
+ nameprefix = onclick = "";
+ free_onclick = 0;
+ } else {
+ char *onclickfmt = " onClick=\"aChg('%s')\"";
+
+ if (( adip->adi_opts & DSGW_ATTROPT_UNIQUE ) == 0 ) {
+ pre_idx = DSGW_MOD_PREFIX_NORMAL;
+ } else {
+ pre_idx = DSGW_MOD_PREFIX_UNIQUE;
+ }
+ nameprefix = (( adip->adi_opts & DSGW_ATTROPT_ADDING ) == 0 ) ?
+ replace_prefixes[ pre_idx ] : add_prefixes[ pre_idx ];
+ onclick = dsgw_ch_malloc( strlen( onclickfmt ) +
+ strlen( adip->adi_attr ) + 1 );
+ sprintf( onclick, onclickfmt, adip->adi_attr );
+ free_onclick = 1;
+ }
+
+ if (( truestr = get_arg_by_name( DSGW_ATTRARG_TRUESTR, adip->adi_argc,
+ adip->adi_argv )) == NULL ) {
+ truestr = DSGW_ATTRARG_TRUESTR;
+ }
+ if (( falsestr = get_arg_by_name( DSGW_ATTRARG_FALSESTR, adip->adi_argc,
+ adip->adi_argv )) == NULL ) {
+ falsestr = DSGW_ATTRARG_FALSESTR;
+ }
+
+ boolval = ( toupper( adip->adi_vals[ 0 ][ 0 ] ) == 'T' );
+
+ if ( adip->adi_htmltype == DSGW_ATTRHTML_RADIO ) {
+ dsgw_emitf( "<INPUT TYPE=\"radio\" NAME=\"%s%s\" "
+ "VALUE=\"TRUE\"%s%s>%s<BR>\n", nameprefix, adip->adi_attr,
+ boolval ? checked : "", onclick, truestr );
+ dsgw_emitf( "<INPUT TYPE=\"radio\" NAME=\"%s%s\" "
+ "VALUE=\"FALSE\"%s%s>%s<BR>\n", nameprefix, adip->adi_attr,
+ boolval ? "" : checked, onclick, falsestr );
+ } else if ( adip->adi_htmltype == DSGW_ATTRHTML_CHECKBOX ) {
+ dsgw_emitf( "<INPUT TYPE=\"checkbox\" NAME=\"%s%s\" "
+ "VALUE=\"TRUE\"%s%s\">%s\n", nameprefix, adip->adi_attr,
+ boolval ? checked : "", onclick, truestr );
+ } else {
+ usestr = boolval ? truestr : falsestr;
+ if ( !did_output_as_special( adip->adi_argc, adip->adi_argv, usestr,
+ adip->adi_vals[ 0 ] )) {
+ if ((adip->adi_opts & DSGW_ATTROPT_QUOTED ) != 0 ) {
+ dsgw_emits( "\"" );
+ }
+
+ dsgw_emits( boolval ? truestr : falsestr );
+ if ((adip->adi_opts & DSGW_ATTROPT_QUOTED ) != 0 ) {
+ dsgw_emits( "\"" );
+ }
+ }
+ }
+}
+
+
+static void
+bool_edit( struct dsgw_attrdispinfo *adip )
+{
+ if ( adip->adi_htmltype == DSGW_ATTRHTML_RADIO ||
+ adip->adi_htmltype == DSGW_ATTRHTML_CHECKBOX ) {
+ bool_display( adip );
+ } else {
+ str_edit( adip );
+ }
+}
+
+
+static void
+time_display( struct dsgw_attrdispinfo *adip )
+{
+ int i;
+
+ for ( i = 0; adip->adi_vals[ i ] != NULL; ++i ) {
+ if ( !did_output_as_special( adip->adi_argc, adip->adi_argv,
+ adip->adi_vals[ i ], adip->adi_vals[ i ] )) {
+ if ((adip->adi_opts & DSGW_ATTROPT_QUOTED ) != 0 ) {
+ dsgw_emits( "\"" );
+ }
+ dsgw_emits( time2text( adip->adi_vals[ i ],
+ ( adip->adi_opts & DSGW_ATTROPT_DATEONLY ) != 0 ) );
+ if ((adip->adi_opts & DSGW_ATTROPT_QUOTED ) != 0 ) {
+ dsgw_emits( "\"" );
+ }
+ }
+
+ if ( adip->adi_vals[ i + 1 ] != NULL ) {
+ dsgw_emits( "<BR>\n" );
+ }
+ }
+
+}
+
+
+/*
+ * handle special "within=", "href=", and "script=" options
+ * return 0 if nothing was output or 1 if something was.
+ */
+static int
+did_output_as_special( int argc, char **argv, char *label, char *val )
+{
+ char *href = NULL;
+ char *within = NULL;
+ char *script = NULL;
+ char *newval = NULL;
+
+ if (( href = get_arg_by_name( DSGW_ATTRARG_HREF, argc, argv )) == NULL &&
+ ( within = get_arg_by_name( DSGW_ATTRARG_WITHIN, argc,
+ argv )) == NULL &&
+ ( script = get_arg_by_name( DSGW_ATTRARG_SCRIPT, argc,
+ argv )) == NULL ) {
+ return( 0 );
+ }
+
+ if ( within != NULL ) {
+ dsgw_substitute_and_output( within, "--value--", val, 1 );
+ } else if (href != NULL) {
+ dsgw_html_href( NULL, href, label, val,
+ get_arg_by_name( DSGW_ATTRARG_HREFEXTRA, argc, argv ));
+ } else if (script != NULL) {
+ newval = dsgw_strdup_escaped ( val );
+ if (newval != NULL && *newval != '\0') {
+ fputs( newval, stdout );
+ free( newval );
+ }
+ }
+
+ return( 1 );
+}
+
+
+/*
+ * The GET2BYTENUM() macro, time2text(), and gtime() functions are taken
+ * with slight changes (to handle 4-digit years) from libldap/tmplout.c
+ */
+#define GET2BYTENUM( p ) (( *p - '0' ) * 10 + ( *(p+1) - '0' ))
+#define BSIZ 1024
+
+static char *
+time2text( char *ldtimestr, int dateonly )
+{
+ int len;
+ struct tm t;
+ char *p, zone;
+ time_t gmttime;
+ char *timestr = NULL;
+
+ memset( (char *)&t, 0, sizeof( struct tm ));
+ if (( len = strlen( ldtimestr )) < 13 ) {
+ return( ldtimestr );
+ }
+ if ( len > 15 ) { /* throw away excess from 4-digit year time string */
+ len = 15;
+ } else if ( len == 14 ) {
+ len = 13; /* assume we have a time w/2-digit year (len=13) */
+ }
+
+ for ( p = ldtimestr; p - ldtimestr + 1 < len; ++p ) {
+ if ( !ldap_utf8isdigit( p )) {
+ return( ldtimestr );
+ }
+ }
+
+ p = ldtimestr;
+ t.tm_year = GET2BYTENUM( p ); p += 2;
+ if ( len == 15 ) {
+ t.tm_year = 100 * (t.tm_year - 19);
+ t.tm_year += GET2BYTENUM( p ); p += 2;
+ }
+ else {
+ /* 2 digit years...assumed to be in the range (19)70 through
+ (20)69 ...less than 70 (for now, 38) means 20xx */
+ if(t.tm_year < 70) {
+ t.tm_year += 100;
+ }
+ }
+
+ t.tm_mon = GET2BYTENUM( p ) - 1; p += 2;
+ t.tm_mday = GET2BYTENUM( p ); p += 2;
+ t.tm_hour = GET2BYTENUM( p ); p += 2;
+ t.tm_min = GET2BYTENUM( p ); p += 2;
+ t.tm_sec = GET2BYTENUM( p ); p += 2;
+
+ if (( zone = *p ) == 'Z' ) { /* GMT */
+ zone = '\0'; /* no need to indicate on screen, so we make it null */
+ }
+
+ gmttime = gtime( &t );
+
+ /* Try to get the localized string */
+ timestr = dsgw_time(gmttime);
+
+ /* Localized time string getter failed, try ctime()*/
+ if (timestr == NULL){
+ timestr = ctime( &gmttime );
+
+ /* replace trailing newline */
+ timestr[ strlen( timestr ) - 1 ] = zone;
+ if ( dateonly ) {
+ strcpy( timestr + 11, timestr + 20 );
+ }
+ }
+
+ return(timestr);
+}
+
+
+
+
+
+/* gtime.c - inverse gmtime */
+
+#if !defined( MACOS ) && !defined( _WINDOWS ) && !defined( DOS )
+#include <sys/time.h>
+#endif /* !MACOS */
+
+/* gtime(): the inverse of localtime().
+ This routine was supplied by Mike Accetta at CMU many years ago.
+ */
+
+static int dmsize[] = {
+ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
+};
+
+#define dysize(y) \
+ (((y) % 4) ? 365 : (((y) % 100) ? 366 : (((y) % 400) ? 365 : 366)))
+
+/*
+#define YEAR(y) ((y) >= 100 ? (y) : (y) + 1900)
+*/
+#define YEAR(y) (((y) < 1900) ? ((y) + 1900) : (y))
+
+
+/* */
+
+static long gtime ( struct tm *tm )
+{
+ register int i,
+ sec,
+ mins,
+ hour,
+ mday,
+ mon,
+ year;
+ register long result;
+
+ if ((sec = tm -> tm_sec) < 0 || sec > 59
+ || (mins = tm -> tm_min) < 0 || mins > 59
+ || (hour = tm -> tm_hour) < 0 || hour > 24
+ || (mday = tm -> tm_mday) < 1 || mday > 31
+ || (mon = tm -> tm_mon + 1) < 1 || mon > 12)
+ return ((long) -1);
+ if (hour == 24) {
+ hour = 0;
+ mday++;
+ }
+ year = YEAR (tm -> tm_year);
+
+ result = 0L;
+ for (i = 1970; i < year; i++)
+ result += dysize (i);
+ if (dysize (year) == 366 && mon >= 3)
+ result++;
+ while (--mon)
+ result += dmsize[mon - 1];
+ result += mday - 1;
+ result = 24 * result + hour;
+ result = 60 * result + mins;
+ result = 60 * result + sec;
+
+ return result;
+}
+
+
+static int
+looks_like_dn( char *s )
+{
+ return( strchr( s, '=' ) != NULL );
+}
+
+
+static void
+do_searchdesc( dsgwtmplinfo *tip, int argc, char** argv)
+{
+ auto unsigned fmt = 0;
+ auto unsigned opt = 0;
+ {
+ auto int i;
+ for (i = 0; i < argc; ++i) {
+ if (!strcasecmp (argv[i], "VERBOSE")) {
+ opt |= 1;
+ }
+ }
+ }
+ switch ( tip->dsti_entrycount ) {
+ case 0:
+ fmt = opt & 1
+ ? ((tip->dsti_options & DSGW_DISPLAY_OPT_CUSTOM_SEARCHDESC)
+ ? DBT_SearchFound0Entries_
+ : DBT_SearchFound0EntriesWhere_)
+ : ((tip->dsti_options & DSGW_DISPLAY_OPT_CUSTOM_SEARCHDESC)
+ ? DBT_Found0Entries_
+ : DBT_Found0EntriesWhere_);
+ case 1:
+ fmt = opt & 1
+ ? ((tip->dsti_options & DSGW_DISPLAY_OPT_CUSTOM_SEARCHDESC)
+ ? DBT_SearchFound1Entry_
+ : DBT_SearchFound1EntryWhere_)
+ : ((tip->dsti_options & DSGW_DISPLAY_OPT_CUSTOM_SEARCHDESC)
+ ? DBT_Found1Entry_
+ : DBT_Found1EntryWhere_);
+ default:
+ fmt = opt & 1
+ ? ((tip->dsti_options & DSGW_DISPLAY_OPT_CUSTOM_SEARCHDESC)
+ ? DBT_SearchFoundEntries_
+ : DBT_SearchFoundEntriesWhere_)
+ : ((tip->dsti_options & DSGW_DISPLAY_OPT_CUSTOM_SEARCHDESC)
+ ? DBT_FoundEntries_
+ : DBT_FoundEntriesWhere_);
+ }
+ {
+ auto char* format = XP_GetClientStr (fmt);
+ if (format == NULL || *format == '\0') {
+ format = "Found %1$li entries where the %2$s %3$s '%4$s'.\n";
+ }
+ dsgw_emitf (format, (long)tip->dsti_entrycount, /* %1$li */
+ tip->dsti_search2s ? tip->dsti_search2s : "", /* %2$s */
+ tip->dsti_search3s ? tip->dsti_search3s : "", /* %3$s */
+ tip->dsti_search4s ? tip->dsti_search4s : "");/* %4$s */
+ }
+ if ( tip->dsti_searcherror != NULL && *tip->dsti_searcherror != '\0' ) {
+ dsgw_emitf( "<BR>%s\n", tip->dsti_searcherror );
+ }
+ if ( tip->dsti_searchlderrtxt != NULL &&
+ *tip->dsti_searchlderrtxt != '\0' ) {
+ dsgw_emitf( "<BR>(%s)\n", tip->dsti_searchlderrtxt );
+ }
+}
+
+
+static void
+do_editbutton( char *dn, char *encodeddn, int argc, char **argv )
+{
+ char *buttonlabel, **rdns;
+
+ if (( buttonlabel = get_arg_by_name( DSGW_ARG_BUTTON_LABEL, argc,
+ argv )) == NULL ) {
+ buttonlabel = XP_GetClientStr(DBT_edit_);
+ }
+
+ if (( rdns = ldap_explode_dn( dn, 1 )) != NULL ) {
+ dsgw_emitf(
+ "<INPUT TYPE=\"hidden\" NAME=\"authhint\" VALUE=\"%s\">\n",
+ rdns[ 0 ] );
+ ldap_value_free( rdns );
+ }
+
+ dsgw_emitf( "<INPUT TYPE=\"hidden\" NAME=\"authdesturl\">\n"
+ "<INPUT TYPE=\"button\" VALUE=\"%s\" "
+ "onClick=\"authOrEdit('%s')\">\n", buttonlabel, encodeddn );
+}
+
+
+static void
+do_savebutton( unsigned long dispopts, int argc, char **argv )
+{
+ char *buttonlabel, *checksubmit;
+
+ if (( buttonlabel = get_arg_by_name( DSGW_ARG_BUTTON_LABEL, argc,
+ argv )) == NULL ) {
+ buttonlabel = XP_GetClientStr(DBT_saveChanges_);
+ }
+
+ dsgw_emitf( "<INPUT TYPE=\"button\" VALUE=\"%s\" onClick=\"",
+ buttonlabel );
+ if (( checksubmit = get_arg_by_name( DSGW_ARG_BUTTON_CHECKSUBMIT, argc,
+ argv )) != NULL ) {
+ dsgw_emitf( "if (%s) ", checksubmit );
+ }
+ dsgw_emitf( "submitModify('%s')\">\n",
+ ( dispopts & DSGW_DISPLAY_OPT_ADDING ) == 0
+ ? "modify" : "add" );
+}
+
+
+static void
+do_deletebutton( int argc, char **argv )
+{
+ char *buttonlabel, *prompt;
+
+ if (( buttonlabel = get_arg_by_name( DSGW_ARG_BUTTON_LABEL, argc,
+ argv )) == NULL ) {
+ buttonlabel = XP_GetClientStr(DBT_delete_);
+ }
+
+ if (( prompt = get_arg_by_name( DSGW_ARG_BUTTON_PROMPT, argc,
+ argv )) == NULL ) {
+ prompt = XP_GetClientStr(DBT_deleteThisEntry_);
+ }
+
+ dsgw_emitf("<INPUT TYPE=BUTTON VALUE=\"%s\"", buttonlabel);
+ dsgw_emits(" onClick=\"confirmModify('delete', ");
+ dsgw_quote_emits(QUOTATION_JAVASCRIPT, prompt);
+ dsgw_emits(")\">\n");
+}
+
+
+#if 0
+static void
+do_renamebutton( char *dn, int argc, char **argv )
+{
+ char *buttonlabel, *prompt, *oldname, **rdns, *tag;
+ int len;
+
+ if (( buttonlabel = get_arg_by_name( DSGW_ARG_BUTTON_LABEL, argc,
+ argv )) == NULL ) {
+ buttonlabel = XP_GetClientStr(DBT_rename_);
+ }
+
+ if (( prompt = get_arg_by_name( DSGW_ARG_BUTTON_PROMPT, argc,
+ argv )) == NULL ) {
+ prompt = XP_GetClientStr(DBT_enterANewNameForThisEntry_);
+ }
+
+ if (( rdns = ldap_explode_dn( dn, 0 )) != NULL &&
+ ( oldname = strchr( rdns[ 0 ], '=' )) != NULL ) {
+ *oldname++ = '\0';
+ tag = rdns[ 0 ];
+ if ( *oldname == '"' ) {
+ ++oldname;
+ if (( len = strlen( oldname )) > 0
+ && oldname[ len - 1 ] == '"' ) {
+ oldname[ len - 1 ] = '\0';
+ }
+ }
+ } else {
+ oldname = dn;
+ tag = "";
+ }
+
+ dsgw_emitf( "<INPUT TYPE=\"button\" VALUE=\"%s\""
+ " onClick=\"renameEntry('%s','%s',", buttonlabel, tag, prompt );
+ dsgw_quote_emits( QUOTATION_JAVASCRIPT, oldname );
+ dsgw_emits( ")\">\n" );
+
+ if ( rdns != NULL ) {
+ ldap_value_free( rdns );
+ }
+}
+#endif
+
+
+static void
+do_editasbutton( int argc, char **argv )
+{
+ char *template, *buttonlabel;
+
+ if (( template = get_arg_by_name( DSGW_ARG_BUTTON_TEMPLATE, argc,
+ argv )) == NULL ) {
+ template = "";
+ }
+
+ if (( buttonlabel = get_arg_by_name( DSGW_ARG_BUTTON_LABEL, argc,
+ argv )) == NULL ) {
+ buttonlabel = XP_GetClientStr(DBT_editAs_);
+ }
+
+ dsgw_emitf( "<INPUT TYPE=\"button\" VALUE=\"%s\""
+ " onClick=\"EditEntryAs('%s')\">\n", buttonlabel, template );
+}
+
+
+static void
+do_passwordfield( unsigned long dispopts, int argc, char **argv,
+ char *fieldname )
+{
+ output_text_elements( argc, argv, fieldname, NULL, NULL, "",
+ DSGW_ATTRHTML_PASSWORD, dispopts );
+}
+
+
+static void
+do_helpbutton( unsigned long dispopts, int argc, char **argv )
+{
+ char *topic;
+
+ if (( topic = get_arg_by_name( DSGW_ARG_BUTTON_TOPIC, argc,
+ argv )) == NULL ) {
+ topic = "";
+ }
+
+ dsgw_emit_helpbutton( topic );
+}
+
+
+static void
+do_closebutton( unsigned long dispopts, int argc, char **argv )
+{
+ dsgw_emit_button( argc, argv, "onClick=\"%s\"",
+ ( dispopts & DSGW_DISPLAY_OPT_EDITABLE ) == 0
+ ? "top.close()" : "closeIfOK()" );
+}
+
+
+static void
+do_dneditbutton( unsigned long dispopts, int argc, char **argv )
+{
+ char *label, *template, *attr, *desc;
+
+ if (( label = get_arg_by_name( DSGW_ARG_DNEDIT_LABEL, argc,
+ argv )) == NULL ) {
+ label = XP_GetClientStr(DBT_edit_1);
+ }
+ if (( template = get_arg_by_name( DSGW_ARG_DNEDIT_TEMPLATE, argc,
+ argv )) == NULL ) {
+ template = "dnedit";
+ }
+ if (( attr = get_arg_by_name( DSGW_ARG_DNEDIT_ATTR, argc,
+ argv )) == NULL ) {
+ dsgw_emits( "<!-- Error: missing attr= argument in DS_DNEDITBUTTON "
+ "directive -->\n" );
+ return;
+ }
+ if (( desc = get_arg_by_name( DSGW_ARG_DNEDIT_DESC, argc,
+ argv )) == NULL ) {
+ desc = attr;
+ }
+
+ dsgw_emitf( "<INPUT TYPE=\"button\" VALUE=\"%s\""
+ " onClick=\"DNEdit('%s', '%s', '%s')\">\n", label, template,
+ attr, desc );
+}
+
+
+static void
+do_viewswitcher( char *template, char *dn, int argc, char **argv )
+{
+ dsgwtmplset *tsp;
+ dsgwview *vp;
+ char *s, *altprefix, *altsuffix, *curprefix, *cursuffix;
+
+ /* first we see if this template is part of a template set */
+ for ( tsp = gc->gc_tmplsets; tsp != NULL; tsp = tsp->dstset_next ) {
+ for ( vp = tsp->dstset_viewlist; vp != NULL; vp = vp->dsview_next ) {
+ if ( strcasecmp( vp->dsview_template, template ) == 0 ) {
+ break;
+ }
+ }
+ if ( vp != NULL ) {
+ break;
+ }
+ }
+
+ if ( tsp == NULL || tsp->dstset_viewcount == 1 ) {
+ return; /* not part of a set at all or only one view in the set */
+ }
+
+ /* emit view switcher prefix */
+ if (( s = get_arg_by_name( "prefix", argc, argv )) == NULL ) {
+ s = "<TABLE CELLPADDING=6 BORDER=0><TR VALIGN=center>\n";
+ }
+ dsgw_emits( s );
+
+ /* retrieve view item prefix and suffix arguments */
+ if (( altprefix = get_arg_by_name( "altprefix", argc, argv )) == NULL ) {
+ altprefix = "<TD BGCOLOR=#B0B0B0>\n";
+ }
+ if (( altsuffix = get_arg_by_name( "altsuffix", argc, argv )) == NULL ) {
+ altsuffix = "</TD>\n";
+ }
+ if (( curprefix = get_arg_by_name( "curprefix", argc, argv )) ==
+ NULL ) {
+ curprefix = "<TD BGCOLOR=#808080><FONT COLOR=#000000><B>\n";
+ }
+ if (( cursuffix = get_arg_by_name( "currentsuffix", argc, argv )) ==
+ NULL ) {
+ cursuffix = "</B></FONT></TD>\n";
+ }
+
+ /* emit one table cell item (or similar) for each available view */
+ for ( vp = tsp->dstset_viewlist; vp != NULL; vp = vp->dsview_next ) {
+ if ( strcasecmp( vp->dsview_template, template ) == 0 ) {
+ dsgw_emitf( "%s%s%s", curprefix, vp->dsview_caption,
+ cursuffix );
+ } else {
+ dsgw_emitf( "%s\n<A HREF=\"", altprefix );
+ if ( vp->dsview_jscript == NULL ) {
+ dsgw_emitf( "javascript:EditEntryAs('%s')",
+ vp->dsview_template );
+ } else {
+ dsgw_substitute_and_output( vp->dsview_jscript, "--dn--",
+ dn, 1 );
+ }
+ dsgw_emitf( "\">%s</A>\n%s", vp->dsview_caption, altsuffix );
+ }
+ }
+
+ /* emit view switcher suffix */
+ if (( s = get_arg_by_name( "suffix", argc, argv )) == NULL ) {
+ s = "</TR></TABLE>\n";
+ }
+ dsgw_emits( s );
+}
+
+
+static void
+do_attrvalset( dsgwtmplinfo *tip, char *dn, unsigned long dispopts,
+ int argc, char **argv )
+{
+ dsgwavset *avp;
+ char *s, *valuearg, *prefix, *suffix;
+ int i, setpos, len, maxvallen;
+
+ /*
+ * locate "set" element in argv array so we can replace it later
+ * with "value="
+ */
+ if (( setpos = dsgw_get_arg_pos_by_name( DSGW_ARG_AVSET_SET, argc,
+ argv )) < 0 ) {
+ dsgw_emitf( XP_GetClientStr(DBT_missingSN_), DSGW_ARG_AVSET_SET );
+ return;
+ }
+ s = &argv[ setpos ][ 4 ];
+
+ for ( avp = gc->gc_avsets; avp != NULL; avp = avp->dsavset_next ) {
+ if ( strcasecmp( s, avp->dsavset_handle ) == 0 ) {
+ break;
+ }
+ }
+ if ( avp == NULL ) {
+ dsgw_emitf( XP_GetClientStr(DBT_unknownSetSN_), s );
+ return;
+ }
+
+ prefix = get_arg_by_name( "prefix", argc, argv );
+ suffix = get_arg_by_name( "suffix", argc, argv );
+
+ /* repeatedly call on do_attribute() to perform all the difficult work */
+ maxvallen = 0;
+ valuearg = NULL;
+ for ( i = 0; i < avp->dsavset_itemcount; ++i ) {
+ if ( prefix != NULL ) {
+ dsgw_emits( prefix );
+ }
+ dsgw_emits( avp->dsavset_prefixes[ i ] );
+
+ /* construct "value=XXX" arg. and place in argv array */
+ if (( len = strlen( avp->dsavset_values[ i ] )) > maxvallen ||
+ valuearg == NULL ) {
+ maxvallen = len;
+ valuearg = dsgw_ch_realloc( valuearg, maxvallen + 7 );
+ }
+ PR_snprintf( valuearg, maxvallen + 7, "value=%s", avp->dsavset_values[ i ] );
+ argv[ setpos ] = valuearg;
+
+ do_attribute( tip, dn, dispopts, argc, argv );
+
+ dsgw_emits( avp->dsavset_suffixes[ i ] );
+ if ( suffix != NULL ) {
+ dsgw_emitf( "%s\n", suffix );
+ }
+ }
+}
+
+
+static void
+do_std_completion_js( char *template, int argc, char **argv )
+{
+ if ( template != NULL ) {
+ dsgw_emitf(
+ "<INPUT TYPE=\"hidden\" NAME=\"completion_javascript\" VALUE=\""
+ "if (dsmodify_dn.length == 0) "
+ "document.writeln( \\'<FONT SIZE=+1>\\' + dsmodify_info +"
+ " \\'</FONT>\\' );"
+ " else "
+ "parent.document.location.href=\\'%s?%s"
+ "&context=%s&dn=\\' + dsmodify_dn + \\'&info=\\' + escape(dsmodify_info)\">\n",
+ dsgw_getvp( DSGW_CGINUM_EDIT ), template, context );
+ }
+}
+
+
+/*
+ * function called back by dsgw_parse_line() to evaluate IF directives.
+ * return non-zero for true, zero for false.
+ */
+static int
+condition_is_true( int argc, char **argv, void *arg )
+{
+ dsgwtmplinfo *tip;
+
+ if ( argc < 1 ) {
+ return( 0 );
+ }
+
+ tip = (dsgwtmplinfo *)arg;
+
+ if ( strcasecmp( argv[0], DSGW_COND_FOUNDENTRIES ) == 0 ) {
+ return( tip->dsti_entrycount > 0 );
+ }
+
+ if ( strcasecmp( argv[0], DSGW_COND_ADDING ) == 0 ) {
+ return(( tip->dsti_options & DSGW_DISPLAY_OPT_ADDING ) != 0 );
+ }
+
+ if ( strcasecmp( argv[0], DSGW_COND_EDITING ) == 0 ) {
+ return(( tip->dsti_options & DSGW_DISPLAY_OPT_EDITABLE ) != 0 &&
+ ( tip->dsti_options & DSGW_DISPLAY_OPT_ADDING ) == 0 );
+ }
+
+ if ( strcasecmp( argv[0], DSGW_COND_DISPLAYING ) == 0 ) {
+ return(( tip->dsti_options & DSGW_DISPLAY_OPT_EDITABLE ) == 0 );
+ }
+
+ if ( strcasecmp( argv[0], DSGW_COND_BOUND ) == 0 ) {
+ return( dsgw_get_binddn() != NULL );
+ }
+
+ if ( strcasecmp( argv[0], DSGW_COND_BOUNDASTHISENTRY ) == 0 ) {
+ return( dsgw_bound_as_dn( tip->dsti_entrydn, 0 ));
+ }
+
+ if ( strcasecmp( argv[0], DSGW_COND_DISPLAYORGCHART ) == 0 ) {
+ return(gc->gc_orgcharturl != NULL && ((tip->dsti_options & DSGW_DISPLAY_OPT_ADDING ) == 0));
+ }
+
+ if ( strcasecmp( argv[0], DSGW_COND_DISPLAYAIMPRESENCE ) == 0 ) {
+ return((gc->gc_aimpresence == 1) && ((tip->dsti_options & DSGW_DISPLAY_OPT_ADDING ) == 0));
+ }
+
+ if ( strcasecmp( argv[0], DSGW_COND_ATTRHASVALUES ) == 0 ) {
+ /*
+ * format of IF statment is:
+ * <-- IF "AttributeHasValues" "ATTRIBUTE" "MINIMUM_COUNT" -->
+ * MINIMUM_COUNT is an optional number.
+ */
+ char **vals;
+ int rc, minimum;
+
+ if ( argc < 2 || tip->dsti_entry == NULL ||
+ ( vals = (char **) ldap_get_values( tip->dsti_ld, tip->dsti_entry,
+ argv[1])) == NULL ) {
+ /* check "attrsonly" information if applicable */
+ if ( argc < 3 && tip->dsti_attrsonly_entry != NULL ) {
+ (void)ldap_get_values( tip->dsti_ld, tip->dsti_attrsonly_entry, argv[1]);
+ if ( ldap_get_lderrno( tip->dsti_ld, NULL, NULL )
+ == LDAP_SUCCESS ) {
+ return( 1 );
+ }
+ }
+ return( 0 );
+ }
+ minimum = ( argc < 3 ) ? 1 : atoi( argv[ 2 ] );
+ rc = ( minimum <= 1 || ldap_count_values( vals ) >= minimum );
+ ldap_value_free( vals );
+ return( rc );
+ }
+
+ if ( strcasecmp( argv[0], DSGW_COND_ATTRHASTHISVALUE ) == 0 ) {
+ /*
+ * format of IF statment is:
+ * <-- IF "AttributeHasThisValue" "ATTRIBUTE" "SYNTAX" "VALUE" -->
+ */
+ char **vals;
+ int i, rc;
+ struct attr_handler *ahp;
+
+ if ( argc < 4 || tip->dsti_entry == NULL ||
+ ( vals = (char **) ldap_get_values( tip->dsti_ld, tip->dsti_entry,
+ argv[1])) == NULL ) {
+ return( 0 );
+ }
+ if (( ahp = syntax2attrhandler( argv[2] )) == NULL ) {
+ dsgw_emitf( XP_GetClientStr(DBT_unknownSyntaxSN_1), argv[2] );
+ return( 0 );
+ }
+
+ rc = 0;
+ for ( i = 0; vals[ i ] != NULL; ++i ) {
+ if ( dsgw_valcmp(ahp->ath_compare)( (const char **)&vals[i],
+ (const char **)&argv[3] ) == 0 ) {
+ rc = 1;
+ break;
+ }
+ }
+ ldap_value_free( vals );
+ return( rc );
+ }
+
+ /* pass unrecognized conditionals to simple conditional handler */
+ return( dsgw_simple_cond_is_true( argc, argv, NULL ));
+}
+
+/*
+ * Function: dsgw_get_values
+ *
+ * Returns: an array of values
+ *
+ * Description: This function returns the values of
+ * an attribute, taking into account any
+ * possible language or phonetic tags.
+ * pass in something like "cn" and this function
+ * will return all cn's, tagged or not.
+ * If binary_value is 1, then it'll handle
+ * everything as binary values.
+ *
+ * Author: RJP
+ *
+ */
+static char **
+dsgw_get_values( LDAP *ld, LDAPMessage *entry,
+ const char *target, int binary_value )
+{
+ BerElement *ber = NULL;
+ char *attr = NULL;
+ char *new_target = NULL;
+ int new_target_size = 0;
+ char **val_youse = NULL;
+ char **temp_vals = NULL;
+ int i = 0;
+ int j = 0;
+ int temp_val_count = 0;
+
+ /* Allocate a new target that is the original plus a semicolon*/
+ new_target = (char *) dsgw_ch_malloc (sizeof(char) * (strlen(target) + 2) );
+ sprintf (new_target, "%s;", target);
+
+ new_target_size = strlen(new_target);
+
+ /*
+ * Go through the attributes and
+ * compare the new_target with the attr name
+ */
+ for ( attr = ldap_first_attribute( ld, entry, &ber ); attr != NULL;
+ attr = ldap_next_attribute( ld, entry, ber ) ) {
+
+ /* If the "target;" matches the attribute name, get the values*/
+ if ( strcasecmp(attr, target) == 0 ||
+ strncasecmp (attr, new_target, new_target_size) == 0) {
+ if (binary_value) {
+ temp_vals = (char **) ldap_get_values_len( ld, entry, attr );
+ } else {
+ temp_vals = (char **) ldap_get_values( ld, entry, attr );
+ }
+
+ if (temp_vals == NULL) {
+ continue;
+ }
+
+ /* Find the next open spot in val_youse*/
+ if (val_youse) {
+ for (; val_youse[i] != NULL; i++) ;
+ }
+
+ /* Count the number of values in temp_vals */
+ for (temp_val_count = 0; temp_vals[temp_val_count] != NULL;
+ temp_val_count++);
+
+ /* Realloc */
+ val_youse = (char **) dsgw_ch_realloc (val_youse, sizeof(char *) * (temp_val_count + i + 1) );
+
+ /* Start there and copy over the pointers from temp_vals */
+ for (j = 0; j < temp_val_count; j++, i++) {
+ val_youse[i] = temp_vals[j];
+ }
+
+ val_youse[i] = NULL;
+
+ ldap_memfree(temp_vals);
+
+ }
+ }
+
+ /* Free the BerElement from memory when done */
+
+ if ( ber != NULL ) {
+
+ ldap_ber_free( ber, 0 );
+
+ }
+
+ free (new_target);
+
+ return(val_youse);
+}
+
+/*
+ * Function: dsgw_value_free
+ *
+ * Returns: nothing
+ *
+ * Description: frees a half libldap and half dsge malloc'd array.
+ * Sorry. This really sucks, I know, but I didn't
+ * want to copy all that data around.
+ *
+ * Author: RJP
+ *
+ */
+static void
+dsgw_value_free( void **ldvals, int binary )
+{
+ int i;
+
+ for (i = 0; ldvals[i] != NULL; i ++) {
+ if (binary) {
+ struct berval *delete_me = NULL;
+
+ delete_me = (struct berval *) ldvals[i];
+
+ ldap_memfree(delete_me->bv_val);
+ ldap_memfree(delete_me);
+ } else {
+ ldap_memfree (ldvals[i]);
+ }
+ }
+
+ free(ldvals);
+
+
+}
+/*
+ * Function: dsgw_time
+ *
+ * Returns: a string not unlike the string returned from ctime()
+ * except it's localized
+ *
+ * Description: this function takes the number of seconds since 1970
+ * and converts it to a localized string version of that.
+ * First it tries to use the clientLanguage, if that fails,
+ * It tries the default language. if that fails, it returns
+ * NULL
+ *
+ * Author: RJP
+ *
+ */
+static char *
+dsgw_time(time_t secs_since_1970)
+{
+ UDateFormat *edatefmt;
+ UErrorCode err = U_ZERO_ERROR;
+ UChar *dstr0;
+ static char obuf[BSIZ];
+ UDate tmp_dat;
+ char *locale = NULL;
+ int32_t myStrlen = 0;
+
+ /* Create a Date/Time Format using the locale */
+ if (countri) {
+ locale = PR_smprintf("%s_%s", langwich, countri);
+ } else {
+ locale = PR_smprintf("%s", langwich);
+ }
+
+ edatefmt = udat_open(
+ UDAT_DEFAULT, /* default date style for locale */
+ UDAT_DEFAULT, /* default time style for locale */
+ locale,
+ NULL, 0, /* use default timezone */
+ NULL, 0, /* no pattern */
+ &err);
+
+ PR_smprintf_free(locale);
+ locale = NULL;
+
+ if (!edatefmt || (err != U_ZERO_ERROR)) {
+ if (edatefmt) {
+ udat_close(edatefmt);
+ }
+ err = U_ZERO_ERROR;
+ edatefmt = udat_open(
+ UDAT_DEFAULT, /* default date style for locale */
+ UDAT_DEFAULT, /* default time style for locale */
+ gc->gc_DefaultLanguage, /* default language */
+ NULL, 0, /* use default timezone */
+ NULL, 0, /* no pattern */
+ &err);
+ }
+
+ if (!edatefmt || (err != U_ZERO_ERROR)) {
+ dsgw_error( DSGW_ERR_LDAPGENERAL, NULL, DSGW_ERROPT_EXIT, err, NULL );
+ /*fprintf(stderr, "ERROR: NLS_NewDateTimeFormat(0): %d\n", err);*/
+ }
+
+ /* Get Current Date/Time */
+ tmp_dat = (UDate) secs_since_1970;
+ tmp_dat *= 1000.00;
+
+ /* Format using the first Date/Time format */
+ myStrlen = udat_format(edatefmt, tmp_dat, NULL, myStrlen, NULL, &err);
+ if(err == U_BUFFER_OVERFLOW_ERROR){
+ err = U_ZERO_ERROR;
+ dstr0 = (UChar*)dsgw_ch_malloc(sizeof(UChar) * (myStrlen+1) );
+ myStrlen = udat_format(edatefmt, tmp_dat, dstr0, myStrlen+1, NULL, &err);
+ }
+
+ if (err != U_ZERO_ERROR) {
+ dsgw_error( DSGW_ERR_LDAPGENERAL, NULL, DSGW_ERROPT_EXIT, err, NULL );
+ /*fprintf(stderr, "ERROR: NLS_FormatDate(1): %d\n", err);*/
+ }
+
+ /* convert to utf8 */
+ u_strToUTF8(obuf, BSIZ, NULL, dstr0, myStrlen, &err);
+
+ if (err != U_ZERO_ERROR) {
+ dsgw_error( DSGW_ERR_LDAPGENERAL, NULL, DSGW_ERROPT_EXIT, err, NULL );
+ /*fprintf(stderr, "ERROR: NLS_NewEncodingConverter(0): %d\n", err);*/
+ }
+ /*fprintf(stdout, "Date(0): %s\n", obuf);*/
+
+ /* Clean up -- but may not be enough... :) */
+ free(dstr0);
+
+ udat_close(edatefmt);
+ edatefmt = NULL;
+
+ return( (char *) obuf);
+}
diff --git a/ldap/clients/dsgw/error.c b/ldap/clients/dsgw/error.c
new file mode 100644
index 00000000..572702b4
--- /dev/null
+++ b/ldap/clients/dsgw/error.c
@@ -0,0 +1,542 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+/*
+ * error.c -- error handling functions -- HTTP gateway
+ *
+ * Copyright (c) 1996 Netscape Communications Corp.
+ * All rights reserved.
+ */
+
+#include "dsgw.h"
+#include "dbtdsgw.h"
+
+static char *dsgw_ldaperr2longstring( int err, int options );
+
+struct dsgwerr {
+ int dsgwerr_code;
+ int dsgwerr_msg;
+};
+
+
+/* all of the DSGW_ERR_... #defines are in dsgw.h */
+static struct dsgwerr dsgw_errs[] = {
+ { DSGW_ERR_BADMETHOD,
+ DBT_unknownHttpRequestMethod_ },
+ { DSGW_ERR_BADFORMDATA,
+ DBT_invalidOrIncompleteHtmlFormData_ },
+ { DSGW_ERR_NOMEMORY,
+ DBT_outOfMemory_ },
+ { DSGW_ERR_MISSINGINPUT,
+ DBT_requiredQueryFormInputIsMissing_ },
+ { DSGW_ERR_BADFILEPATH,
+ DBT_illegalCharacterInFilePath_ },
+ { DSGW_ERR_BADCONFIG,
+ DBT_badOrMissingConfigurationFile_ },
+ { DSGW_ERR_LDAPINIT,
+ DBT_unableToInitializeLdap_ },
+ { DSGW_ERR_LDAPGENERAL,
+ DBT_anErrorOccurredWhileContactingTh_ },
+ { DSGW_ERR_UNKSRCHTYPE,
+ DBT_unknownSearchObjectType_ },
+ { DSGW_ERR_UNKATTRLABEL,
+ DBT_unknownAttributeLabel_ },
+ { DSGW_ERR_UNKMATCHPROMPT,
+ DBT_unknownMatchPrompt_ },
+ { DSGW_ERR_NOFILTERS,
+ DBT_noSearchFiltersForObjectType_ },
+ { DSGW_ERR_OPENHTMLFILE,
+ DBT_unableToOpenHtmlTemplateFile_ },
+ { DSGW_ERR_SEARCHMODE,
+ DBT_unknownSearchModeUseSmartComplex_ },
+ { DSGW_ERR_LDAPURL_NODN,
+ DBT_distinguishedNameMissingInUrl_ },
+ { DSGW_ERR_LDAPURL_BADSCOPE,
+ DBT_unknownScopeInUrlShouldBeBaseSub_ },
+ { DSGW_ERR_LDAPURL_NOTLDAP,
+ DBT_unrecognizedUrlOrUnknownError_ },
+ { DSGW_ERR_LDAPURL_BAD,
+ DBT_badUrlFormat_ },
+ { DSGW_ERR_INTERNAL,
+ DBT_internalError_ },
+ { DSGW_ERR_WRITEINDEXFILE,
+ DBT_unableToWriteTemplateIndexFile_ },
+ { DSGW_ERR_OPENINDEXFILE,
+ DBT_unableToOpenTemplateIndexFile_ },
+ { DSGW_ERR_OPENDIR,
+ DBT_unableToReadDirectory_ },
+ { DSGW_ERR_SSLINIT,
+ DBT_ldapSslInitializationFailedCheck_ },
+ { DSGW_ERR_NOSECPATH,
+ DBT_forTheUsersAndGroupsFormsToWorkO_ },
+ { DSGW_CKDB_KEY_NOT_PRESENT,
+ DBT_authenticationCredentialsNotFoun_ },
+ { DSGW_CKDB_DBERROR,
+ DBT_errorRetrievingDataFromTheAuthen_ },
+ { DSGW_CKDB_EXPIRED,
+ DBT_yourAuthenticationCredentialsHav_ },
+ { DSGW_CKDB_RNDSTRFAIL,
+ DBT_unableToCreateRandomString_ },
+ { DSGW_CKDB_NODN,
+ DBT_noDistinguishedNameWasProvidedWh_ },
+ { DSGW_CKDB_CANTOPEN,
+ DBT_cannotOpenAuthenticationDatabase_ },
+ { DSGW_CKDB_CANTAPPEND,
+ DBT_couldNotAppendDataToTheAuthentic_ },
+ { DSGW_ERR_NO_MGRDN,
+ DBT_noDirectoryManagerIsDefined_ },
+ { DSGW_ERR_NOSEARCHSTRING,
+ DBT_noSearchStringWasProvidedPleaseT_ },
+ { DSGW_ERR_CONFIGTOOMANYARGS,
+ DBT_tooManyArgumentsOnOneLineInTheCo_ },
+ { DSGW_ERR_WSAINIT,
+ DBT_failedToInitializeWindowsSockets_ },
+ { DSGW_ERR_ADMSERV_CREDFAIL,
+ DBT_authenticationCredentialsCouldNo_ },
+ { DSGW_ERR_LDAPDBURL_NODN,
+ DBT_distinguishedNameMissingInLdapdb_ },
+ { DSGW_ERR_LDAPDBURL_NOTLDAPDB,
+ DBT_unrecognizedUrlOrUnknownError_1 },
+ { DSGW_ERR_LDAPDBURL_BAD,
+ DBT_badUrlFormat_1 },
+ { DSGW_ERR_LCACHEINIT,
+ DBT_anErrorOccurredWhileInitializing_ },
+ { DSGW_ERR_SERVICETYPE,
+ DBT_unknownDirectoryServiceTypeUseLo_ },
+ { DSGW_ERR_DBCONF,
+ DBT_anErrorOccurredWhileReadingTheDb_ },
+ { DSGW_ERR_USERDB_PATH,
+ DBT_nshomeUserdbPathWasNull_ },
+ { DSGW_ERR_UPDATE_DBSWITCH,
+ DBT_theDirectoryServiceConfiguration_ },
+ { DSGW_ERR_ENTRY_NOT_FOUND,
+ DBT_theEntryCouldNotBeReadFromTheDir_ },
+ { DSGW_ERR_DB_ERASE,
+ DBT_theLdapDatabaseCouldNotBeErased_ },
+ { DSGW_ERR_LOCALDB_PERMISSION_DENIED,
+ DBT_youMayNotChangeEntriesBesidesYou_ },
+ { DSGW_ERR_NOATTRVALUE,
+ DBT_theAttributeValueRequestedWasNot_ },
+ { DSGW_ERR_USERID_REQUIRED,
+ /* "A value must be specified for NT User Id" */
+ DBT_aValueMustBeSpecifiedForNTUserId },
+ { DSGW_ERR_DOMAINID_NOTUNIQUE,
+ /* "The combination of NT User Id, NT Domain Id */
+ /* is not unique in the directory" */
+ DBT_theCombinationOfNTUserIdNTDomain_ },
+ { DSGW_ERR_USERID_DOMAINID_REQUIRED,
+ /* "Values must be specified for both NT */
+ /* User Id and NT Domain Id" */
+ DBT_valuesMustBeSpecifiedForBothNTUser_ },
+ { DSGW_ERR_USERID_MAXLEN_EXCEEDED,
+ /* "The NT User Id value must not exceed 20 characters in length." */
+ DBT_theNTUserIdValueMustNotExceed_ },
+ { DSGW_ERR_CHARSET_NOT_SUPPORTED,
+ /* "The charset %s is not supported" */
+ DBT_theCharsetIsNotSupported },
+};
+#define DSGW_ERROR_CNT ( sizeof( dsgw_errs ) / sizeof( struct dsgwerr ))
+
+
+
+/*
+ * dsgw_error -- report error as HTML text
+ */
+void
+dsgw_error( int err, char *extra, int options, int ldaperr, char *lderrtxt )
+{
+ char *msg, *prelude = XP_GetClientStr(DBT_problem_);
+
+ if (( options & DSGW_ERROPT_IGNORE ) != 0 ) {
+ return;
+ }
+
+ if (( options & DSGW_ERROPT_INLINE ) == 0 ) {
+ dsgw_send_header();
+ dsgw_html_begin( prelude, 1 );
+ }
+
+ msg = dsgw_err2string( err );
+
+ dsgw_emitf( "<FONT SIZE=\"+1\">\n%s\n</FONT>\n", msg );
+ if ( extra != NULL ) {
+ if ( lderrtxt == NULL ) {
+ dsgw_emitf( "<BR>(%s)", extra );
+ } else {
+ dsgw_emitf( "<BR>(%s - %s)", extra, lderrtxt );
+ }
+ } else if ( lderrtxt != NULL ) {
+ dsgw_emitf( "<BR>(%s)", lderrtxt );
+ }
+
+#ifdef DSGW_DEBUG
+ if ( extra == NULL ) {
+ dsgw_log( "%s: %s\n", prelude, msg );
+ } else {
+ dsgw_log( "%s: %s (%s)\n", prelude, msg, extra );
+ }
+#endif
+ if ( ldaperr != 0 ) {
+ msg = dsgw_ldaperr2longstring( ldaperr, options );
+ dsgw_emitf("<P>%s", msg );
+ }
+
+ if (( options & DSGW_ERROPT_INLINE ) == 0 ) {
+ dsgw_html_end();
+ }
+
+ if (( options & DSGW_ERROPT_EXIT ) != 0 ) {
+ exit( 0 );
+ }
+}
+
+
+/*
+ * special handling for cookie expired or cookie database problems
+ * delete cookie on both server and client
+ * send helpful error with appropriate buttons:
+ * * if searching, display an error message, and a re-auth button, along
+ * with a help button.
+ * * if authenticating, (does this ever happen?)
+ * * if generating an editable view, display an error messge, and tell
+ * user to bring main window to front and requthenticate.
+ * * if submitting a modify operation, include an "Authenticate" button
+ * which brings up a new auth window, which only offers you a
+ * "close" button when finished.
+ *
+ * returns 1 if the CGI should exit.
+ * 0 if it should continue. - RJP
+ */
+int
+dsgw_dn2passwd_error( int ckrc, int skipauthwarning )
+{
+ char *authck;
+
+ /*
+ * cookie is expired or bad -- delete it on both server and client sides
+ *
+ */
+ if (( authck = dsgw_get_auth_cookie()) != NULL ) {
+ dsgw_delcookie( authck );
+ }
+
+ /* pop up a javascript alert */
+ if (gc->gc_mode == DSGW_MODE_DOSEARCH) {
+ /* Just display a helpful error message */
+ if (ckrc != DSGW_CKDB_KEY_NOT_PRESENT && !skipauthwarning) {
+ dsgw_send_header();
+ dsgw_emit_alertForm();
+ dsgw_emits( "<SCRIPT LANGUAGE=JavaScript><!--\n" );
+ dsgw_emit_alert (NULL, NULL, dsgw_err2string( ckrc ),
+ 0L, "", "", "");
+ dsgw_emits( "// -->\n</SCRIPT>\n");
+ }
+ return(0);
+ }
+ dsgw_send_header();
+
+ dsgw_html_begin( XP_GetClientStr(DBT_authenticationProblem_), 1 );
+
+ dsgw_emits( "<SCRIPT LANGUAGE=\"JavaScript\">\n<!-- hide\n\n" );
+ dsgw_emitf( "document.cookie = '%s=%s; path=/';\n\n", DSGW_AUTHCKNAME,
+ DSGW_UNAUTHSTR );
+
+ dsgw_emits( "function reAuth()\n{\n" );
+ dsgw_emitf( " a = open( '%s?context=%s', 'AuthWin');\n",
+ dsgw_getvp( DSGW_CGINUM_AUTH ), context);
+ dsgw_emits( " a.opener = self;\n" );
+ dsgw_emits( " a.closewin = false;\n" );
+ dsgw_emits( "}\n// end hiding -->\n</SCRIPT>\n" );
+
+ dsgw_emits( dsgw_err2string( ckrc ) );
+
+ if (gc->gc_mode == DSGW_MODE_EDIT || gc->gc_mode == DSGW_MODE_DOMODIFY) {
+
+ dsgw_emits( XP_GetClientStr(DBT_NPYouMustReAuthenticateBeforeCon_1) );
+ dsgw_emits( "<P>\n" );
+ dsgw_form_begin( NULL, NULL );
+ dsgw_emits("\n<CENTER><TABLE border=2 width=\"100%\"><TR>\n" );
+ dsgw_emits( "<TD WIDTH=\"50%\" ALIGN=\"center\">\n" );
+ dsgw_emitf( "<INPUT TYPE=\"button\" VALUE=\"%s\" "
+ "onClick=\"top.close();\">\n",
+ XP_GetClientStr(DBT_closeWindow_4) );
+ dsgw_emits( "<TD WIDTH=\"50%\" ALIGN=\"center\">\n" );
+ dsgw_emit_helpbutton( "AUTHEXPIRED" );
+ dsgw_emits( "\n</TABLE></CENTER></FORM>\n" );
+
+ }
+
+ dsgw_html_end();
+ return(1);
+}
+
+
+char *
+dsgw_err2string( int err )
+{
+ int i;
+
+ for ( i = 0; i < DSGW_ERROR_CNT; ++i ) {
+ if ( dsgw_errs[ i ].dsgwerr_code == err ) {
+ return( XP_GetClientStr(dsgw_errs[ i ].dsgwerr_msg) );
+ }
+ }
+
+ return( XP_GetClientStr(DBT_unknownError_) );
+}
+
+
+static char *
+dsgw_ldaperr2longstring( int err, int options )
+{
+ char *s = "";
+
+ switch ( err ) {
+ case LDAP_SUCCESS:
+ s = XP_GetClientStr(DBT_theOperationWasSuccessful_);
+ break;
+ case LDAP_OPERATIONS_ERROR:
+ s = XP_GetClientStr(DBT_anInternalErrorOccurredInTheServ_);
+ break;
+ case LDAP_PROTOCOL_ERROR:
+ s = XP_GetClientStr(DBT_theServerCouldNotUnderstandTheRe_);
+ break;
+ case LDAP_TIMELIMIT_EXCEEDED:
+ s = XP_GetClientStr(DBT_aTimeLimitWasExceededInRespondin_);
+ break;
+ case LDAP_SIZELIMIT_EXCEEDED:
+ s = XP_GetClientStr(DBT_aSizeLimitWasExceededInRespondin_);
+ break;
+ case LDAP_COMPARE_FALSE:
+ break;
+ case LDAP_COMPARE_TRUE:
+ break;
+ case LDAP_STRONG_AUTH_NOT_SUPPORTED:
+ s = XP_GetClientStr(DBT_theGatewayAttemptedToAuthenticat_);
+ break;
+ case LDAP_STRONG_AUTH_REQUIRED:
+ s = XP_GetClientStr(DBT_theGatewayAttemptedToAuthenticat_1);
+ break;
+#ifdef LDAP_REFERRAL /* new in LDAPv3 */
+ case LDAP_REFERRAL:
+#endif
+ case LDAP_PARTIAL_RESULTS:
+ s = XP_GetClientStr(DBT_yourRequestCouldNotBeFulfilledPr_);
+ break;
+#ifdef LDAP_ADMIN_LIMIT_EXCEEDED /* new in LDAPv3 */
+ case LDAP_ADMIN_LIMIT_EXCEEDED:
+ s = XP_GetClientStr(DBT_yourRequestExceededAnAdministrat_);
+ break;
+#endif
+#ifdef LDAP_UNAVAILABLE_CRITICAL_EXTENSION /* new in LDAPv3 */
+ case LDAP_UNAVAILABLE_CRITICAL_EXTENSION:
+ s = XP_GetClientStr(DBT_aCriticalExtensionThatTheGateway_);
+ break;
+#endif
+ case LDAP_NO_SUCH_ATTRIBUTE:
+ s = XP_GetClientStr(DBT_theServerWasUnableToProcessTheRe_);
+ break;
+ case LDAP_UNDEFINED_TYPE:
+ break;
+ case LDAP_INAPPROPRIATE_MATCHING:
+ break;
+ case LDAP_CONSTRAINT_VIOLATION:
+ s = XP_GetClientStr(DBT_theServerWasUnableToFulfillYourR_);
+ break;
+ case LDAP_TYPE_OR_VALUE_EXISTS:
+ s = XP_GetClientStr(DBT_theServerCouldNotAddAValueToTheE_);
+ break;
+ case LDAP_INVALID_SYNTAX:
+ break;
+ case LDAP_NO_SUCH_OBJECT:
+ if (( options & DSGW_ERROPT_DURINGBIND ) == 0 ) {
+ s = XP_GetClientStr(DBT_theServerCouldNotLocateTheEntryI_);
+ } else {
+ s = XP_GetClientStr(DBT_theServerCouldNotLocateTheEntryY_);
+ }
+ break;
+ case LDAP_ALIAS_PROBLEM:
+ break;
+ case LDAP_INVALID_DN_SYNTAX:
+ s = XP_GetClientStr(DBT_aDistinguishedNameWasNotInThePro_);
+ break;
+ case LDAP_IS_LEAF:
+ break;
+ case LDAP_ALIAS_DEREF_PROBLEM:
+ break;
+ case LDAP_INAPPROPRIATE_AUTH:
+ s = XP_GetClientStr(DBT_theEntryYouAttemptedToAuthentica_);
+ break;
+ case LDAP_INVALID_CREDENTIALS:
+ s = XP_GetClientStr(DBT_thePasswordOrOtherAuthentication_);
+ break;
+ case LDAP_INSUFFICIENT_ACCESS:
+ s = XP_GetClientStr(DBT_youDoNotHaveSufficientPrivileges_);
+ break;
+ case LDAP_BUSY:
+ s = XP_GetClientStr(DBT_theServerIsTooBusyToServiceYourR_);
+ break;
+ case LDAP_UNAVAILABLE:
+ s = XP_GetClientStr(DBT_theLdapServerCouldNotBeContacted_);
+ break;
+ case LDAP_UNWILLING_TO_PERFORM:
+ s = XP_GetClientStr(DBT_theServerWasUnwilliingToProcessY_);
+ break;
+ case LDAP_LOOP_DETECT:
+ break;
+ case LDAP_NAMING_VIOLATION:
+ break;
+ case LDAP_OBJECT_CLASS_VIOLATION:
+ s = XP_GetClientStr(DBT_theDirectoryServerCouldNotHonorY_);
+ break;
+ case LDAP_NOT_ALLOWED_ON_NONLEAF:
+ s = XP_GetClientStr(DBT_theDirectoryServerWillNotAllowYo_);
+ break;
+ case LDAP_NOT_ALLOWED_ON_RDN:
+ break;
+ case LDAP_ALREADY_EXISTS:
+ s = XP_GetClientStr(DBT_theServerWasUnableToAddANewEntry_);
+ break;
+ case LDAP_NO_OBJECT_CLASS_MODS:
+ break;
+ case LDAP_RESULTS_TOO_LARGE:
+ break;
+#ifdef LDAP_AFFECTS_MULTIPLE_DSAS /* new in LDAPv3 */
+ case LDAP_AFFECTS_MULTIPLE_DSAS:
+ s = XP_GetClientStr(DBT_yourRequestWouldAffectSeveralDir_);
+ break;
+#endif
+ case LDAP_OTHER:
+ break;
+ case LDAP_SERVER_DOWN:
+ s = XP_GetClientStr(DBT_theDirectoryServerCouldNotBeCont_);
+ break;
+ case LDAP_LOCAL_ERROR:
+ break;
+ case LDAP_ENCODING_ERROR:
+ s = XP_GetClientStr(DBT_anErrorOccuredWhileSendingDataTo_);
+ break;
+ case LDAP_DECODING_ERROR:
+ s = XP_GetClientStr(DBT_anErrorOccuredWhileReadingDataFr_);
+ break;
+ case LDAP_TIMEOUT:
+ s = XP_GetClientStr(DBT_theServerDidNotRespondToTheReque_);
+ break;
+ case LDAP_AUTH_UNKNOWN:
+ s = XP_GetClientStr(DBT_theServerDoesNotSupportTheAuthen_);
+ break;
+ case LDAP_FILTER_ERROR:
+ s = XP_GetClientStr(DBT_theSearchFilterConstructedByTheG_);
+ break;
+ case LDAP_USER_CANCELLED:
+ s = XP_GetClientStr(DBT_theOperationWasCancelledAtYourRe_);
+ break;
+ case LDAP_PARAM_ERROR:
+ break;
+ case LDAP_NO_MEMORY:
+ s = XP_GetClientStr(DBT_anInternalErrorOccurredInTheLibr_);
+ break;
+ case LDAP_CONNECT_ERROR:
+ s = XP_GetClientStr(DBT_aConnectionToTheServerCouldNotBe_);
+ break;
+ default:
+ s = XP_GetClientStr(DBT_anUnknownErrorWasEncountered_);
+ }
+ return s;
+}
+
+static struct dsgwerr LDAP_errs[] = {
+ { LDAP_SUCCESS, DBT_LDAP_SUCCESS},
+ { LDAP_OPERATIONS_ERROR, DBT_LDAP_OPERATIONS_ERROR},
+ { LDAP_PROTOCOL_ERROR, DBT_LDAP_PROTOCOL_ERROR},
+ { LDAP_TIMELIMIT_EXCEEDED, DBT_LDAP_TIMELIMIT_EXCEEDED},
+ { LDAP_SIZELIMIT_EXCEEDED, DBT_LDAP_SIZELIMIT_EXCEEDED},
+ { LDAP_COMPARE_FALSE, DBT_LDAP_COMPARE_FALSE},
+ { LDAP_COMPARE_TRUE, DBT_LDAP_COMPARE_TRUE},
+ { LDAP_STRONG_AUTH_NOT_SUPPORTED, DBT_LDAP_STRONG_AUTH_NOT_SUPPORTED},
+ { LDAP_STRONG_AUTH_REQUIRED, DBT_LDAP_STRONG_AUTH_REQUIRED},
+ { LDAP_PARTIAL_RESULTS, DBT_LDAP_PARTIAL_RESULTS},
+ { LDAP_REFERRAL, DBT_LDAP_REFERRAL},
+ { LDAP_ADMINLIMIT_EXCEEDED, DBT_LDAP_ADMINLIMIT_EXCEEDED},
+ { LDAP_UNAVAILABLE_CRITICAL_EXTENSION, DBT_LDAP_UNAVAILABLE_CRITICAL_EXTENSION},
+ { LDAP_CONFIDENTIALITY_REQUIRED,DBT_LDAP_CONFIDENTIALITY_REQUIRED},
+ { LDAP_SASL_BIND_IN_PROGRESS, DBT_LDAP_SASL_BIND_IN_PROGRESS},
+
+ { LDAP_NO_SUCH_ATTRIBUTE, DBT_LDAP_NO_SUCH_ATTRIBUTE},
+ { LDAP_UNDEFINED_TYPE, DBT_LDAP_UNDEFINED_TYPE},
+ { LDAP_INAPPROPRIATE_MATCHING, DBT_LDAP_INAPPROPRIATE_MATCHING},
+ { LDAP_CONSTRAINT_VIOLATION, DBT_LDAP_CONSTRAINT_VIOLATION},
+ { LDAP_TYPE_OR_VALUE_EXISTS, DBT_LDAP_TYPE_OR_VALUE_EXISTS},
+ { LDAP_INVALID_SYNTAX, DBT_LDAP_INVALID_SYNTAX},
+
+ { LDAP_NO_SUCH_OBJECT, DBT_LDAP_NO_SUCH_OBJECT},
+ { LDAP_ALIAS_PROBLEM, DBT_LDAP_ALIAS_PROBLEM},
+ { LDAP_INVALID_DN_SYNTAX, DBT_LDAP_INVALID_DN_SYNTAX},
+ { LDAP_IS_LEAF, DBT_LDAP_IS_LEAF},
+ { LDAP_ALIAS_DEREF_PROBLEM, DBT_LDAP_ALIAS_DEREF_PROBLEM},
+
+ { LDAP_INAPPROPRIATE_AUTH, DBT_LDAP_INAPPROPRIATE_AUTH},
+ { LDAP_INVALID_CREDENTIALS, DBT_LDAP_INVALID_CREDENTIALS},
+ { LDAP_INSUFFICIENT_ACCESS, DBT_LDAP_INSUFFICIENT_ACCESS},
+ { LDAP_BUSY, DBT_LDAP_BUSY},
+ { LDAP_UNAVAILABLE, DBT_LDAP_UNAVAILABLE},
+ { LDAP_UNWILLING_TO_PERFORM, DBT_LDAP_UNWILLING_TO_PERFORM},
+ { LDAP_LOOP_DETECT, DBT_LDAP_LOOP_DETECT},
+
+ { LDAP_NAMING_VIOLATION, DBT_LDAP_NAMING_VIOLATION},
+ { LDAP_OBJECT_CLASS_VIOLATION, DBT_LDAP_OBJECT_CLASS_VIOLATION},
+ { LDAP_NOT_ALLOWED_ON_NONLEAF, DBT_LDAP_NOT_ALLOWED_ON_NONLEAF},
+ { LDAP_NOT_ALLOWED_ON_RDN, DBT_LDAP_NOT_ALLOWED_ON_RDN},
+ { LDAP_ALREADY_EXISTS, DBT_LDAP_ALREADY_EXISTS},
+ { LDAP_NO_OBJECT_CLASS_MODS, DBT_LDAP_NO_OBJECT_CLASS_MODS},
+ { LDAP_RESULTS_TOO_LARGE, DBT_LDAP_RESULTS_TOO_LARGE},
+ { LDAP_AFFECTS_MULTIPLE_DSAS, DBT_LDAP_AFFECTS_MULTIPLE_DSAS},
+
+ { LDAP_OTHER, DBT_LDAP_OTHER},
+ { LDAP_SERVER_DOWN, DBT_LDAP_SERVER_DOWN},
+ { LDAP_LOCAL_ERROR, DBT_LDAP_LOCAL_ERROR},
+ { LDAP_ENCODING_ERROR, DBT_LDAP_ENCODING_ERROR},
+ { LDAP_DECODING_ERROR, DBT_LDAP_DECODING_ERROR},
+ { LDAP_TIMEOUT, DBT_LDAP_TIMEOUT},
+ { LDAP_AUTH_UNKNOWN, DBT_LDAP_AUTH_UNKNOWN},
+ { LDAP_FILTER_ERROR, DBT_LDAP_FILTER_ERROR},
+ { LDAP_USER_CANCELLED, DBT_LDAP_USER_CANCELLED},
+ { LDAP_PARAM_ERROR, DBT_LDAP_PARAM_ERROR},
+ { LDAP_NO_MEMORY, DBT_LDAP_NO_MEMORY},
+ { LDAP_CONNECT_ERROR, DBT_LDAP_CONNECT_ERROR},
+ { LDAP_NOT_SUPPORTED, DBT_LDAP_NOT_SUPPORTED},
+ { LDAP_CONTROL_NOT_FOUND, DBT_LDAP_CONTROL_NOT_FOUND},
+ { LDAP_NO_RESULTS_RETURNED, DBT_LDAP_NO_RESULTS_RETURNED},
+ { LDAP_MORE_RESULTS_TO_RETURN, DBT_LDAP_MORE_RESULTS_TO_RETURN},
+ { LDAP_CLIENT_LOOP, DBT_LDAP_CLIENT_LOOP},
+ { LDAP_REFERRAL_LIMIT_EXCEEDED, DBT_LDAP_REFERRAL_LIMIT_EXCEEDED}};
+
+#define LDAP_ERROR_CNT ( sizeof( LDAP_errs ) / sizeof( struct dsgwerr ))
+
+char *
+dsgw_ldaperr2string( int lderr )
+{
+ auto int msgno = 0;
+ auto int i;
+
+ for ( i = 0; i < LDAP_ERROR_CNT; ++i ) {
+ if ( LDAP_errs[ i ].dsgwerr_code == lderr ) {
+ msgno = LDAP_errs[ i ].dsgwerr_msg;
+ break;
+ }
+ }
+ if (msgno != 0) {
+ auto char* msg = XP_GetClientStr(msgno);
+ if (msg && *msg) return dsgw_ch_strdup( msg );
+ }
+ { /* get the message string from the LDAP SDK: */
+ auto char* fmt = XP_GetClientStr(DBT_errorS_);
+ auto char* s = ldap_err2string( lderr );
+ auto char* msg = dsgw_ch_malloc( strlen( fmt ) + strlen( s ) + 20);
+ PR_snprintf( msg, strlen(fmt) + strlen(s) + 20, fmt, s, lderr );
+ return msg;
+ }
+}
diff --git a/ldap/clients/dsgw/genscreen.c b/ldap/clients/dsgw/genscreen.c
new file mode 100644
index 00000000..ab2f89cd
--- /dev/null
+++ b/ldap/clients/dsgw/genscreen.c
@@ -0,0 +1,117 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+/*
+ * Generate a screen.
+ */
+
+#include "dsgw.h"
+
+static int dsgw_genscreen_begin( char *fname, FILE **fpp,
+ char *stop_at_directive, int erropts );
+static int dsgw_genscreen_continue( FILE **fpp, char *stop_at_directive,
+ int erropts );
+
+static LDAP *ld = NULL;
+
+main( argc, argv, env )
+ int argc;
+ char *argv[];
+#ifdef DSGW_DEBUG
+ char *env[];
+#endif
+{
+ char *p, *tmplname, *buf;
+
+ context=dsgw_ch_strdup("pb");
+ /*CHANGE THIS*/
+
+ (void)dsgw_init( argc, argv, DSGW_METHOD_GET );
+ dsgw_send_header();
+
+#ifdef DSGW_DEBUG
+ dsgw_logstringarray( "env", env );
+#endif
+
+ /*
+ * If the QUERY_STRING is non-NULL, it looks like this:
+ *
+ * template &CONTEXT=context [ &INFO=infostring ]
+ *
+ * where:
+ * "template" is the name of the HTML template to render
+ * "infostring" is a message used to replace DS_LAST_OP_INFO directives
+ *
+ * If the QUERY_STRING is NULL, the name of this program is used as the
+ * template.
+ */
+
+ if (( tmplname = getenv( "QUERY_STRING" )) == NULL ) {
+ tmplname = progname;
+ } else {
+ tmplname = dsgw_ch_strdup( tmplname );
+ if (( p = strrchr( tmplname, '&' )) != NULL ) {
+ *p++ = '\0';
+ if ( strncasecmp( p, "info=", 5 ) == 0 ) {
+ dsgw_last_op_info = dsgw_ch_strdup( p + 5 );
+ dsgw_form_unescape( dsgw_last_op_info );
+ }
+ }
+ }
+
+
+ buf = dsgw_ch_malloc( strlen( tmplname ) + 6 ); /* room for ".html\0" */
+ sprintf( buf, "%s.html", tmplname );
+
+ dsgw_genscreen_begin( buf, NULL, NULL, DSGW_ERROPT_EXIT );
+
+ exit( 0 );
+}
+
+
+static int
+dsgw_genscreen_begin( char *fname, FILE **fpp, char *stop_at_directive,
+ int erropts )
+{
+ FILE *html;
+
+ if ( fpp == NULL ) {
+ fpp = &html;
+ }
+
+ if (( *fpp = dsgw_open_html_file( fname, erropts )) == NULL ) {
+ *fpp = NULL;
+ return( -1 );
+ }
+
+ return( dsgw_genscreen_continue( fpp, stop_at_directive, erropts ));
+}
+
+
+static int
+dsgw_genscreen_continue( FILE **fpp, char *stop_at_directive, int erropts )
+{
+ char **argv, line[ BIG_LINE ];
+ int argc;
+
+ while ( dsgw_next_html_line( *fpp, line )) {
+ if ( dsgw_parse_line( line, &argc, &argv, 0, dsgw_simple_cond_is_true,
+ NULL )) {
+ if ( stop_at_directive != NULL &&
+ dsgw_directive_is( line, stop_at_directive )) {
+ return( 0 );
+ }
+ if ( dsgw_directive_is( line, DRCT_DS_LOCATIONPOPUP )) {
+ dsgw_emit_location_popup( ld, argc, argv, erropts );
+ }
+ }
+ }
+
+ fclose( *fpp );
+ *fpp = NULL;
+
+ return( 0 );
+}
diff --git a/ldap/clients/dsgw/getopt.c b/ldap/clients/dsgw/getopt.c
new file mode 100644
index 00000000..a66a3770
--- /dev/null
+++ b/ldap/clients/dsgw/getopt.c
@@ -0,0 +1,115 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+/*
+ * Copyright (c) 1987 Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted
+ * provided that: (1) source distributions retain this entire copyright
+ * notice and comment, and (2) distributions including binaries display
+ * the following acknowledgement: ``This product includes software
+ * developed by the University of California, Berkeley and its contributors''
+ * in the documentation or other materials provided with the distribution
+ * and in all advertising materials mentioning features or use of this
+ * software. Neither the name of the University nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+#ifdef _WINDOWS
+
+#if defined(LIBC_SCCS) && !defined(lint)
+static char sccsid[] = "@(#)getopt.c 4.12 (Berkeley) 6/1/90";
+#endif /* LIBC_SCCS and not lint */
+
+#include <windows.h>
+#include <stdio.h>
+#include <string.h>
+#include "lber.h"
+#define index strchr
+#define rindex strrchr
+
+/*
+ * get option letter from argument vector
+ */
+int opterr = 1, /* if error message should be printed */
+ optind = 1, /* index into parent argv vector */
+ optopt; /* character checked for validity */
+char *optarg; /* argument associated with option */
+
+#define BADCH (int)'?'
+#define EMSG ""
+
+int getopt(int nargc, char *const *nargv, const char *ostr)
+{
+ static char *place = EMSG; /* option letter processing */
+ register char *oli; /* option letter list index */
+ char *p;
+
+ if (!*place) { /* update scanning pointer */
+ if (optind >= nargc || *(place = nargv[optind]) != '-') {
+ place = EMSG;
+ return(EOF);
+ }
+ if (place[1] && *++place == '-') { /* found "--" */
+ ++optind;
+ place = EMSG;
+ return(EOF);
+ }
+ } /* option letter okay? */
+ if ((optopt = (int)*place++) == (int)':' ||
+ !(oli = index(ostr, optopt))) {
+ /*
+ * if the user didn't specify '-' as an option,
+ * assume it means EOF.
+ */
+ if (optopt == (int)'-')
+ return(EOF);
+ if (!*place)
+ ++optind;
+ if (opterr) {
+ if (!(p = rindex(*nargv, '/')))
+ p = *nargv;
+ else
+ ++p;
+ (void)fprintf(stderr, "%s: illegal option -- %c\n",
+ p, optopt);
+ }
+ return(BADCH);
+ }
+ if (*++oli != ':') { /* don't need argument */
+ optarg = NULL;
+ if (!*place)
+ ++optind;
+ }
+ else { /* need an argument */
+ if (*place) /* no white space */
+ optarg = place;
+ else if (nargc <= ++optind) { /* no arg */
+ place = EMSG;
+ if (!(p = rindex(*nargv, '/')))
+ p = *nargv;
+ else
+ ++p;
+ if (opterr)
+ (void)fprintf(stderr,
+ "%s: option requires an argument -- %c\n",
+ p, optopt);
+ return(BADCH);
+ }
+ else /* white space */
+ optarg = nargv[optind];
+ place = EMSG;
+ ++optind;
+ }
+ return(optopt); /* dump back option letter */
+}
+
+#endif
diff --git a/ldap/clients/dsgw/html/Makefile b/ldap/clients/dsgw/html/Makefile
new file mode 100644
index 00000000..6fe5280b
--- /dev/null
+++ b/ldap/clients/dsgw/html/Makefile
@@ -0,0 +1,81 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+#
+# Gmakefile for Directory Server Gateway html files.
+#
+
+LDAP_SRC = ../../..
+MCOM_ROOT = ../../../../..
+
+NOSTDSTRIP=true # don't let nsconfig.mak define target strip
+NOSTDCLEAN=true # don't let nsconfig.mak define target clean
+NOSTDDEPEND=true # don't let nsconfig.mak define target depend
+
+include $(MCOM_ROOT)/ldapserver/nsconfig.mk
+include $(LDAP_SRC)/nsldap.mk
+
+include ../dsgw_include.mk
+
+HTMLDEST = $(DSGW_HTML_RELDIR)
+
+HTML= auth.html authroot.html authtitle.html csearchtitle.html \
+ emptyFrame.html greeting.html index.html maintitle.html \
+ newentrytitle.html searchtitle.html style.css \
+ transparent.gif back1.gif content1.gif netscape.gif \
+ country.gif exit1.gif forward1.gif group.gif index1.gif \
+ left_bottom.gif left_on.gif right_off.gif \
+ left_off.gif right_bottom.gif right_on.gif \
+ organization.gif orgunit.gif person.gif clear.gif message.gif \
+ alert.html alert.gif confirm.html confirm.gif orgicon.gif aim-online.gif
+
+BINS=$(addprefix $(HTMLDEST)/,$(HTML))
+
+ifeq ($(ARCH), WINNT)
+CP2=cmd /c 'sh ../../../cm/nbsp2utf8.sh $< >'
+else
+CP2=sh ../../../cm/nbsp2utf8.sh $< >
+endif
+
+include $(MCOM_ROOT)/ldapserver/config/webint.mk
+
+all: $(HTMLDEST) $(BINS) all-manual all-info
+
+install: $(HTMLDEST) $(BINS) inst-manual inst-info
+
+clean: clean-manual clean-info
+ $(RM) $(BINS)
+
+# gif files (and presumably other binary files) are copied, not filtered
+$(HTMLDEST)/%.gif: %.gif
+ @-$(RM) $@
+ cp $< $@
+
+# all other files are filtered
+$(HTMLDEST)/%: %
+ @-$(RM) $@
+ $(CP2) $@
+
+all-manual:
+ cd manual; $(MAKE) $(MFLAGS) all
+
+all-info:
+ cd info; $(MAKE) $(MFLAGS) all
+
+inst-manual:
+ cd manual; $(MAKE) $(MFLAGS) install
+
+inst-info:
+ cd info; $(MAKE) $(MFLAGS) install
+
+clean-manual:
+ cd manual; $(MAKE) $(MFLAGS) clean
+
+clean-info:
+ cd info; $(MAKE) $(MFLAGS) clean
+
+strip:
+depend:
diff --git a/ldap/clients/dsgw/html/aim-online.gif b/ldap/clients/dsgw/html/aim-online.gif
new file mode 100644
index 00000000..b364017e
--- /dev/null
+++ b/ldap/clients/dsgw/html/aim-online.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/alert.gif b/ldap/clients/dsgw/html/alert.gif
new file mode 100644
index 00000000..ba9c07e1
--- /dev/null
+++ b/ldap/clients/dsgw/html/alert.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/alert.html b/ldap/clients/dsgw/html/alert.html
new file mode 100644
index 00000000..278002ea
--- /dev/null
+++ b/ldap/clients/dsgw/html/alert.html
@@ -0,0 +1,24 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>
+<!-- DS_POSTEDVALUE "NAME=TITLE" -->
+</title>
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</HEAD>
+
+<BODY onLoad="document.OK.btn.focus();" bgcolor="#CCCCCC">
+<TABLE cols=2 width="100%"><TR VALIGN=CENTER>
+<TD ALIGN=CENTER WIDTH=32><IMG SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=alert.gif" HEIGHT=32 WIDTH=32 BORDER="0" ALT="Alert"></TD>
+<TD>
+<!-- DS_POSTEDVALUE "NAME=MSG" -->
+</TD></TR></TABLE>
+<FORM NAME=OK><CENTER>
+<!-- DS_CLOSEBUTTON "NAME=btn" "LABEL= OK " -->
+</CENTER></FORM>
+</BODY></HTML>
diff --git a/ldap/clients/dsgw/html/auth.html b/ldap/clients/dsgw/html/auth.html
new file mode 100644
index 00000000..e3fabe5d
--- /dev/null
+++ b/ldap/clients/dsgw/html/auth.html
@@ -0,0 +1,26 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>
+Netscape Directory Server Gateway: Authenticate
+</TITLE>
+</HEAD>
+
+<FRAMESET ROWS=130,* BORDER=0>
+ <FRAME SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=authtitle.html" NAME="authTitleFrame" NORESIZE
+ SCROLLING="NO">
+ <FRAME SRC="/clients/dsgw/bin/auth?<!-- GCONTEXT -->" NAME="authFrame" SCROLLING="auto">
+</FRAMESET>
+<NOFRAMES>
+<H3>Frames-capable browser required</H3>
+Sorry, but in order to use the Netscape Directory Server Gateway,
+you must use a browser which supports HTML forms and JavaScript, such
+as Netscape Navigator version 3 or later. To learn how to obtain
+Navigator, visit the <A HREF="http://home.netscape.com">Netscape Home Page</A>.
+</NOFRAMES>
+</HTML>
diff --git a/ldap/clients/dsgw/html/authroot.html b/ldap/clients/dsgw/html/authroot.html
new file mode 100644
index 00000000..0d32aa12
--- /dev/null
+++ b/ldap/clients/dsgw/html/authroot.html
@@ -0,0 +1,26 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>
+Netscape Directory Server Gateway: Authenticate
+</TITLE>
+</HEAD>
+<FRAMESET ROWS=130,* BORDER=0>
+ <FRAME SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=authtitle.html" NAME="authTitleFrame" NORESIZE
+ SCROLLING="NO" MARGINHEIGHT=6 MARGINWIDTH=8>
+ <FRAME SRC="/clients/dsgw/bin/auth?MANAGER&<!-- GCONTEXT -->" NAME="authFrame"
+NORESIZE SCROLLING="auto" MARGINHEIGHT=8 MARGINWIDTH=8>
+</FRAMESET>
+<NOFRAMES>
+<H3>Frames-capable browser required</H3>
+Sorry, but in order to use the Netscape Directory Server Gateway,
+you must use a browser which supports HTML forms and JavaScript, such
+as Netscape Navigator version 3 or later. To learn how to obtain
+Navigator, visit the <A HREF="http://home.netscape.com">Netscape Home Page</A>.
+</NOFRAMES>
+</HTML>
diff --git a/ldap/clients/dsgw/html/authtitle.html b/ldap/clients/dsgw/html/authtitle.html
new file mode 100644
index 00000000..1bdbd3f4
--- /dev/null
+++ b/ldap/clients/dsgw/html/authtitle.html
@@ -0,0 +1,156 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Netscape Directory Server</TITLE>
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</HEAD>
+
+<body bgcolor="#FFFFFF" marginwidth="0" marginheight="0" leftmargin="0" topmargin="0">
+
+<TABLE width="100%" cellspacing="0" cellpadding="0" border="0" class="bgColor4">
+ <TR>
+ <TD>
+ <table class="bgColor1" border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td colspan="4"><img border="0" height="10" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif">
+ </td>
+ </tr>
+ <tr>
+ <td><img border="0" height="1" width="15" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td><a href="http://www.netscape.com"><img border="0" height="19" width="19" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=netscape.gif"></a></td>
+ <td><img border="0" height="1" width="7" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td nowrap="true" align=left width="100%" class="appName">Netscape Directory Server Gateway</td>
+ </tr>
+ <tr>
+ <td colspan="4"><img border="0" height="12" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif">
+ </td>
+ </tr>
+ </table>
+ <table class="bgColor1" border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td><img border="0" height="1" width="15" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td>
+ <table class="bgRegTab" border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td rowspan="3"><img border="0" height="23" width="7" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=left_off.gif"></td>
+ <td colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td rowspan="3"><img border="0" height="23" width="9" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=right_off.gif"></td>
+ </tr>
+ <tr>
+ <td class="bgRegTabHighlight" colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </tr>
+ <tr>
+ <td><img border="0" height="21" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td nowrap="true"><a class="link6" HREF="/clients/dsgw/bin/search?<!-- GCONTEXT -->"
+ TARGET="_top" onMouseOver="self.status='Standard Search'; return true;"
+ onMouseOut="self.status=''; return true;"
+ TITLE="Standard Search" ALT="Standard Search">Standard Search</a></td>
+ </tr>
+ <tr>
+ <td class="bgColor1" colspan="4"><img border="0" height="1" width="4" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </tr>
+ </table>
+ </td>
+ <td><img border="0" height="1" width="3" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td>
+ <table class="bgRegTab" border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td rowspan="3"><img border="0" height="23" width="7" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=left_off.gif"></td>
+ <td colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td rowspan="3"><img border="0" height="23" width="9" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=right_off.gif"></td>
+ </tr>
+ <tr>
+ <td class="bgRegTabHighlight" colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </tr>
+ <tr>
+ <td><img border="0" height="21" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td nowrap="true"><a class="link6" HREF="/clients/dsgw/bin/csearch?<!-- GCONTEXT -->"
+ TARGET="_top" onMouseOver="self.status='Advanced Search'; return true;"
+ onMouseOut="self.status=''; return true;"
+ TITLE="Advanced Search" ALT="Advanced Search">Advanced Search</a></td>
+ </tr>
+ <tr>
+ <td class="bgColor1" colspan="4"><img border="0" height="1" width="4" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </tr>
+ </table>
+ </td>
+ <td><img border="0" height="1" width="3" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td>
+ <table class="bgRegTab" border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td rowspan="3"><img border="0" height="23" width="7" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=left_off.gif"></td>
+ <td colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td rowspan="3"><img border="0" height="23" width="9" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=right_off.gif"></td>
+ </tr>
+ <tr>
+ <td class="bgRegTabHighlight" colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </tr>
+ <tr>
+ <td><img border="0" height="21" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td nowrap="true"><a class="link6" HREF="/clients/dsgw/bin/newentry?<!-- GCONTEXT -->"
+ TARGET="_top" onMouseOver="self.status='New Entry'; return true;"
+ onMouseOut="self.status=''; return true;"
+ TITLE="New Entry" ALT="New Entry">New Entry</a></td>
+ </tr>
+ <tr>
+ <td class="bgColor1" colspan="4"><img border="0" height="1" width="4" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </tr>
+ </table>
+ </td>
+ <td><img border="0" height="1" width="3" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td>
+ <table class="bgAtTab" border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td rowspan="3"><img border="0" height="23" width="7" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=left_on.gif"></td>
+ <td colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td rowspan="3"><img border="0" height="23" width="9" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=right_on.gif"></td>
+ </tr>
+ <tr>
+ <td class="bgAtTabHighlight" colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </tr>
+ <tr>
+ <td><img border="0" height="21" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td nowrap="true"><A HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=auth.html"
+ TARGET="_top" onMouseOver="self.status='Authentication'; return true;"
+ onMouseOut="self.status=''; return true;" TITLE="Authentication"
+ ALT="Authentication" class="link7">Authentication</a></td>
+ </tr>
+ <tr>
+ <td><img border="0" height="1" width="7" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=left_bottom.gif"></td>
+ <td colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td><img border="0" height="1" width="9" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=right_bottom.gif"></td>
+ </tr>
+ </table>
+ </td>
+
+ <td width="100%"><img border="0" height="1" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </TR>
+ <TR>
+ <TD class="bgRegTab" colspan="7"><IMG border="0" height="1" width="7" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></TD>
+ <TD class="bgAtTab"><IMG border="0" height="1" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></TD>
+ <TD class="bgRegTab" colspan="1"><IMG border="0" height="1" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></TD>
+ </TR>
+ </TABLE>
+ <TABLE class="bgAtTab" border="0" cellpadding="0" cellspacing="0" width="100%">
+ <TR>
+ <TD>
+ <IMG border="0" height="43" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif">
+ </TD>
+ </TR>
+ <TR>
+ <TD class="bgRegTab"><IMG border="0" height="1" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></TD>
+ </TR>
+ <TR>
+ <TD class="bgDarkRule"><IMG border="0" height="2" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></TD>
+ </TR>
+ </TABLE>
+ </TD>
+ </TR>
+</TABLE>
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/html/back1.gif b/ldap/clients/dsgw/html/back1.gif
new file mode 100644
index 00000000..7eaf5c47
--- /dev/null
+++ b/ldap/clients/dsgw/html/back1.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/clear.gif b/ldap/clients/dsgw/html/clear.gif
new file mode 100644
index 00000000..35d42e80
--- /dev/null
+++ b/ldap/clients/dsgw/html/clear.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/confirm.gif b/ldap/clients/dsgw/html/confirm.gif
new file mode 100644
index 00000000..453d1b2b
--- /dev/null
+++ b/ldap/clients/dsgw/html/confirm.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/confirm.html b/ldap/clients/dsgw/html/confirm.html
new file mode 100644
index 00000000..5680f129
--- /dev/null
+++ b/ldap/clients/dsgw/html/confirm.html
@@ -0,0 +1,30 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD>
+<TITLE>
+<!-- DS_POSTEDVALUE "NAME=TITLE" -->
+</TITLE>
+<!-- DS_CONFIRM_SCRIPT -->
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</HEAD>
+
+<BODY class="bgColor4">
+<TABLE COLS=2 WIDTH="100%"><TR VALIGN=CENTER>
+<TD ALIGN=CENTER WIDTH=36><IMG SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=confirm.gif" HEIGHT=32 WIDTH=32 BORDER="0" ALT="Confirm"></TD><TD>
+<!-- DS_POSTEDVALUE "NAME=MSG" -->
+</TD></TR></TABLE>
+<FORM><TABLE COLS=4 WIDTH="100%"><TR ALIGN=CENTER>
+<TD></TD>
+<TD>
+<!-- DS_CONFIRM_BUTTON_OK -->
+</TD><TD>
+<!-- DS_CONFIRM_BUTTON_CANCEL -->
+</TD>
+<TD></TD>
+</TR></TABLE></FORM>
+</BODY></HTML>
diff --git a/ldap/clients/dsgw/html/content1.gif b/ldap/clients/dsgw/html/content1.gif
new file mode 100644
index 00000000..bea2b976
--- /dev/null
+++ b/ldap/clients/dsgw/html/content1.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/country.gif b/ldap/clients/dsgw/html/country.gif
new file mode 100644
index 00000000..910c2dc7
--- /dev/null
+++ b/ldap/clients/dsgw/html/country.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/csearchtitle.html b/ldap/clients/dsgw/html/csearchtitle.html
new file mode 100644
index 00000000..4a1d4ddc
--- /dev/null
+++ b/ldap/clients/dsgw/html/csearchtitle.html
@@ -0,0 +1,156 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Netscape Directory Server</TITLE>
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</HEAD>
+
+<body bgcolor="#FFFFFF" marginwidth="0" marginheight="0" leftmargin="0" topmargin="0">
+
+<TABLE width="100%" cellspacing="0" cellpadding="0" border="0" class="bgColor4">
+ <TR>
+ <TD>
+ <table class="bgColor1" border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td colspan="4"><img border="0" height="10" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif">
+ </td>
+ </tr>
+ <tr>
+ <td><img border="0" height="1" width="15" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td><a href="http://www.netscape.com"><img border="0" height="19" width="19" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=netscape.gif"></a></td>
+ <td><img border="0" height="1" width="7" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td nowrap="true" align=left width="100%" class="appName">Netscape Directory Server Gateway</td>
+ </tr>
+ <tr>
+ <td colspan="4"><img border="0" height="12" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif">
+ </td>
+ </tr>
+ </table>
+ <table class="bgColor1" border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td><img border="0" height="1" width="15" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td>
+ <table class="bgRegTab" border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td rowspan="3"><img border="0" height="23" width="7" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=left_off.gif"></td>
+ <td colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td rowspan="3"><img border="0" height="23" width="9" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=right_off.gif"></td>
+ </tr>
+ <tr>
+ <td class="bgRegTabHighlight" colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </tr>
+ <tr>
+ <td><img border="0" height="21" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td nowrap="true"><a class="link6" HREF="/clients/dsgw/bin/search?<!-- GCONTEXT -->"
+ TARGET="_top" onMouseOver="self.status='Standard Search'; return true;"
+ onMouseOut="self.status=''; return true;"
+ TITLE="Standard Search" ALT="Standard Search">Standard Search</a></td>
+ </tr>
+ <tr>
+ <td class="bgColor1" colspan="4"><img border="0" height="1" width="4" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </tr>
+ </table>
+ </td>
+ <td><img border="0" height="1" width="3" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td>
+ <table class="bgAtTab" border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td rowspan="3"><img border="0" height="23" width="7" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=left_on.gif"></td>
+ <td colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td rowspan="3"><img border="0" height="23" width="9" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=right_on.gif"></td>
+ </tr>
+ <tr>
+ <td class="bgAtTabHighlight" colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </tr>
+ <tr>
+ <td><img border="0" height="21" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td nowrap="true"><A HREF="/clients/dsgw/bin/csearch?<!-- GCONTEXT -->"
+ TARGET="_top" onMouseOver="self.status='Advanced Search'; return true;"
+ onMouseOut="self.status=''; return true;" TITLE="Advanced Search"
+ ALT="Advanced Search" class="link7">Advanced Search</a></td>
+ </tr>
+ <tr>
+ <td><img border="0" height="1" width="7" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=left_bottom.gif"></td>
+ <td colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td><img border="0" height="1" width="9" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=right_bottom.gif"></td>
+ </tr>
+ </table>
+ </td>
+ <td><img border="0" height="1" width="3" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td>
+ <table class="bgRegTab" border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td rowspan="3"><img border="0" height="23" width="7" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=left_off.gif"></td>
+ <td colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td rowspan="3"><img border="0" height="23" width="9" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=right_off.gif"></td>
+ </tr>
+ <tr>
+ <td class="bgRegTabHighlight" colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </tr>
+ <tr>
+ <td><img border="0" height="21" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td nowrap="true"><a class="link6" HREF="/clients/dsgw/bin/newentry?<!-- GCONTEXT -->"
+ TARGET="_top" onMouseOver="self.status='New Entry'; return true;"
+ onMouseOut="self.status=''; return true;"
+ TITLE="New Entry" ALT="New Entry">New Entry</a></td>
+ </tr>
+ <tr>
+ <td class="bgColor1" colspan="4"><img border="0" height="1" width="4" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </tr>
+ </table>
+ </td>
+ <td><img border="0" height="1" width="3" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td>
+ <table class="bgRegTab" border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td rowspan="3"><img border="0" height="23" width="7" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=left_off.gif"></td>
+ <td colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td rowspan="3"><img border="0" height="23" width="9" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=right_off.gif"></td>
+ </tr>
+ <tr>
+ <td class="bgRegTabHighlight" colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </tr>
+ <tr>
+ <td><img border="0" height="21" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td nowrap="true"><a class="link6" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=auth.html"
+ TARGET="_top" onMouseOver="self.status='Authentication'; return true;"
+ onMouseOut="self.status=''; return true;"
+ TITLE="Authentication" ALT="Authentication">Authentication</a></td>
+ </tr>
+ <tr>
+ <td class="bgColor1" colspan="4"><img border="0" height="1" width="4" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </tr>
+ </table>
+ </td>
+
+ <td width="100%"><img border="0" height="1" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </TR>
+ <TR>
+ <TD class="bgRegTab" colspan="3"><IMG border="0" height="1" width="3" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></TD>
+ <TD class="bgAtTab"><IMG border="0" height="1" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></TD>
+ <TD class="bgRegTab" colspan="5"><IMG border="0" height="1" width="5" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></TD>
+ </TR>
+ </TABLE>
+ <TABLE class="bgAtTab" border="0" cellpadding="0" cellspacing="0" width="100%">
+ <TR>
+ <TD>
+ <IMG border="0" height="43" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif">
+ </TD>
+ </TR>
+ <TR>
+ <TD class="bgRegTab"><IMG border="0" height="1" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></TD>
+ </TR>
+ <TR>
+ <TD class="bgDarkRule"><IMG border="0" height="2" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></TD>
+ </TR>
+ </TABLE>
+ </TD>
+ </TR>
+</TABLE>
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/html/dc.gif b/ldap/clients/dsgw/html/dc.gif
new file mode 100644
index 00000000..6324da4b
--- /dev/null
+++ b/ldap/clients/dsgw/html/dc.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/de/adsearch_off.gif b/ldap/clients/dsgw/html/de/adsearch_off.gif
new file mode 100644
index 00000000..517952ba
--- /dev/null
+++ b/ldap/clients/dsgw/html/de/adsearch_off.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/de/adsearch_on.gif b/ldap/clients/dsgw/html/de/adsearch_on.gif
new file mode 100644
index 00000000..12ab8de5
--- /dev/null
+++ b/ldap/clients/dsgw/html/de/adsearch_on.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/de/auth.html b/ldap/clients/dsgw/html/de/auth.html
new file mode 100644
index 00000000..60476d2a
--- /dev/null
+++ b/ldap/clients/dsgw/html/de/auth.html
@@ -0,0 +1,24 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>
+Netscape Directory Server Gateway: Beglaubigen
+</TITLE>
+</HEAD>
+
+<FRAMESET ROWS=100,* BORDER=2>
+ <FRAME SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=authtitle.html" NAME="authTitleFrame" NORESIZE
+ SCROLLING="NO">
+ <FRAME SRC="/clients/dsgw/bin/auth?<!-- GCONTEXT -->" NAME="authFrame">
+</FRAMESET>
+<NOFRAMES>
+<H3>Browser muä Rahmen verarbeiten kȸnnen</H3>
+Um das Netscape Directory Server Gateway zu verwenden, muä Ihr Browser HTML-Formulare und JavaScript verarbeiten kȸnnen, wie zum Beispiel Netscape Navigator Version 3 oder hȸher. Wie Sie Netscape Navigator bekommen, erfahren Sie auf der <A HREF="http://home.netscape.com">Netscape-Startseite</A>.
+</NOFRAMES>
+</HTML>
+
diff --git a/ldap/clients/dsgw/html/de/authen_off.gif b/ldap/clients/dsgw/html/de/authen_off.gif
new file mode 100644
index 00000000..dc9642ff
--- /dev/null
+++ b/ldap/clients/dsgw/html/de/authen_off.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/de/authen_on.gif b/ldap/clients/dsgw/html/de/authen_on.gif
new file mode 100644
index 00000000..bb1525b9
--- /dev/null
+++ b/ldap/clients/dsgw/html/de/authen_on.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/de/authroot.html b/ldap/clients/dsgw/html/de/authroot.html
new file mode 100644
index 00000000..0a6a4f83
--- /dev/null
+++ b/ldap/clients/dsgw/html/de/authroot.html
@@ -0,0 +1,22 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>
+Netscape Directory Server Gateway: Beglaubigen
+</TITLE>
+</HEAD>
+<FRAMESET ROWS=100,* BORDER=2>
+ <FRAME SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=authtitle.html" NAME="authTitleFrame" NORESIZE
+ SCROLLING="NO">
+ <FRAME SRC="/clients/dsgw/bin/auth?MANAGER&<!-- GCONTEXT -->" NAME="authFrame">
+</FRAMESET>
+<NOFRAMES>
+<H3>Browser muä Rahmen verarbeiten kȸnnen</H3>
+Um das Netscape Directory Server Gateway zu verwenden, muä Ihr Browser HTML-Formulare und JavaScript verarbeiten kȸnnen, wie zum Beispiel Netscape Navigator Version 3 oder hȸher. Wie Sie Netscape Navigator bekommen, erfahren Sie auf der <A HREF="http://home.netscape.com">Netscape-Startseite</A>.
+</NOFRAMES>
+</HTML>
diff --git a/ldap/clients/dsgw/html/de/authtitle.html b/ldap/clients/dsgw/html/de/authtitle.html
new file mode 100644
index 00000000..2e575dfd
--- /dev/null
+++ b/ldap/clients/dsgw/html/de/authtitle.html
@@ -0,0 +1,37 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Netscape Directory Server</TITLE>
+</HEAD>
+
+<BODY BGCOLOR="#ffffff" TEXT="#000000">
+
+<IMG SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=title.gif" HEIGHT=40 WIDTH=530 BORDER="0"
+ ALT="Netscape Directory Server"><BR>
+
+<!-- note: do not include any newlines or other whitespace between the tags -->
+<!-- below that enclose images because this leads to blank pixels -->
+<!-- between them (which we do not want). -->
+
+<IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=blank.gif" WIDTH=42 HEIGHT=24 BORDER="0"><A
+ HREF="/clients/dsgw/bin/search?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=stsearch_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Standardsuche"></A><A
+ HREF="/clients/dsgw/bin/csearch?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=adsearch_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Erweiterte Suche"></A><A
+ HREF="/clients/dsgw/bin/newentry?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=newentry_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Neuer Eintrag"></A><A
+ HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=auth.html" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=authen_on.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Beglaubigung"></A>
+
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/html/de/back.gif b/ldap/clients/dsgw/html/de/back.gif
new file mode 100644
index 00000000..024df22f
--- /dev/null
+++ b/ldap/clients/dsgw/html/de/back.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/de/back1.gif b/ldap/clients/dsgw/html/de/back1.gif
new file mode 100644
index 00000000..a514ef9a
--- /dev/null
+++ b/ldap/clients/dsgw/html/de/back1.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/de/content.gif b/ldap/clients/dsgw/html/de/content.gif
new file mode 100644
index 00000000..a7eb4276
--- /dev/null
+++ b/ldap/clients/dsgw/html/de/content.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/de/content1.gif b/ldap/clients/dsgw/html/de/content1.gif
new file mode 100644
index 00000000..e5955366
--- /dev/null
+++ b/ldap/clients/dsgw/html/de/content1.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/de/csearchtitle.html b/ldap/clients/dsgw/html/de/csearchtitle.html
new file mode 100644
index 00000000..c8e8af65
--- /dev/null
+++ b/ldap/clients/dsgw/html/de/csearchtitle.html
@@ -0,0 +1,37 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Netscape Directory Server</TITLE>
+</HEAD>
+
+<BODY BGCOLOR="#ffffff" TEXT="#000000">
+
+<IMG SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=title.gif" HEIGHT=40 WIDTH=530 BORDER="0"
+ ALT="Netscape Directory Server"><BR>
+
+<!-- note: do not include any newlines or other whitespace between the tags -->
+<!-- below that enclose images because this leads to blank pixels -->
+<!-- between them (which we do not want). -->
+
+<IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=blank.gif" WIDTH=42 HEIGHT=24 BORDER="0"><A
+ HREF="/clients/dsgw/bin/search?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=stsearch_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Standardsuche"></A><A
+ HREF="/clients/dsgw/bin/csearch?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=adsearch_on.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Erweiterte Suche"></A><A
+ HREF="/clients/dsgw/bin/newentry?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=newentry_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Neuer Eintrag"></A><A
+ HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=auth.html" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=authen_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Beglaubigung"></A>
+
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/html/de/eduser.html b/ldap/clients/dsgw/html/de/eduser.html
new file mode 100644
index 00000000..9fc755c7
--- /dev/null
+++ b/ldap/clients/dsgw/html/de/eduser.html
@@ -0,0 +1,30 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HEAD><TITLE>Benutzer-Management</TITLE></HEAD>
+<HTML><BODY bgcolor="#C0C0C0" link="#0000EE" vlink="#551A8B" alink="#FF0000">
+
+<center><table border=2 width=100%%>
+<tr><td align=center width=100%><hr size=0 width=0><FONT size=+2><b>Benutzer bearbeiten</b></FONT><hr size=0 width=0></th></tr></table></center>
+
+<form method="POST" action=dosearch name=eduserform>
+<input type=hidden name=mode value="smart">
+<input type=hidden name=type value="people">
+<input type=hidden name=editable value="true">
+<!-- PCONTEXT -->
+
+<b>Bearbeiten des Benutzers: </b><INPUT type="text" name="searchstring" value="" size=20>
+</pre>
+<p>
+
+<center><table border=2 width=100%>
+<tr>
+<td width=33% align=center><input type=submit value="Benutzer bearbeiten"></td>
+<td width=34% align=center><input type=reset value="R&uuml;cksetzen"></td>
+<td width=33% align=center><input type=button value=" Hilfe " onclick="var hwin=window.open('', 'infowin_httpd',
+'resizable=1,width=400,height=500');if(top.helpwin==1) hwin.frames[1].location='http://ggood:2001/httpd-ggood/bin/tutor?!usradd&<!-- GCONTEXT -->';else { hwin.location='http://ggood:2001/httpd-ggood/bin/tutor?usradd&<!-- GCONTEXT -->'; hwin.rwin=top; hwin.rwin.helpwin=1; }"></td>
+</tr></table></center>
+</form>
diff --git a/ldap/clients/dsgw/html/de/exit1.gif b/ldap/clients/dsgw/html/de/exit1.gif
new file mode 100644
index 00000000..8a9e3c1b
--- /dev/null
+++ b/ldap/clients/dsgw/html/de/exit1.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/de/forward1.gif b/ldap/clients/dsgw/html/de/forward1.gif
new file mode 100644
index 00000000..5636496d
--- /dev/null
+++ b/ldap/clients/dsgw/html/de/forward1.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/de/greeting.html b/ldap/clients/dsgw/html/de/greeting.html
new file mode 100644
index 00000000..bbf31e5f
--- /dev/null
+++ b/ldap/clients/dsgw/html/de/greeting.html
@@ -0,0 +1,64 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Netscape Directory Server</TITLE>
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript browsers
+function gotoURL(h) {
+ top.location.href = h;
+}
+// End hiding -->
+</SCRIPT>
+</HEAD>
+<BODY BGCOLOR="white">
+<HR>
+<CENTER>
+<FONT SIZE="+2">Netscape Directory Server Gateway</FONT>
+</CENTER>
+<P>
+Mit dieser Schnittstelle k&ouml;nnen Sie Eintr&auml;ge zur Speicherung im Netscape Directory Server suchen, &auml;ndern oder erstellen.
+<P>
+Die Schaltfl&auml;chen oben im Fenster sind bei der Arbeit mit dem Directory Server Gateway st&auml;ndig verf&uuml;gbar. Durch Anklicken dieser Schaltfl&auml;chen k&ouml;nnen Sie die folgenden Aktionen ausf&uuml;hren lassen:
+<P>
+<TABLE BORDER=1>
+<TR>
+<TH>
+<A HREF="/clients/dsgw/bin/search?<!-- GCONTEXT -->" TARGET="_top">Standardsuche</A>
+</TH>
+<TD>
+Die Standardsuche ist die einfachste M&ouml;glichkeit zum Durchsuchen des Verzeichnisses. Hierbei wird Ihre Eingabe analysiert und danach automatisch eine oder mehrere passende Verzeichnis-Suchmethoden aktiviert.
+</TD>
+</TR>
+<TR>
+<TH>
+<A HREF="/clients/dsgw/bin/csearch?<!-- GCONTEXT -->" TARGET="_top">Erweiterte Suche</A>
+</TH>
+<TD>
+Bei der Erweiterten Suche geben Sie genau ein, was Sie suchen, nach welchem Attribut Sie suchen und welche Art der &Uuml;bereinstimmung mit den Suchkriterien erforderlich ist.
+</TD>
+</TR>
+<TR>
+<TH>
+<A HREF="/clients/dsgw/bin/newentry?<!-- GCONTEXT -->" TARGET="_top">Neuer Eintrag</A>
+</TH>
+<TD>
+Mit "Neuer Eintrag" k&ouml;nnen Sie neue Eintr&auml;ge im Verzeichnis vornehmen.. Unter Umst&auml;nden hat der Systemverwalter das Verzeichnis so eingerichtet, da&szlig; Sie zum Hinzuf&uuml;gen neuer Eintr&auml;ge eine besondere Berechtigung ben&ouml;tigen. Wenn Sie nicht sicher sind, wenden Sie sich an Ihren Systemverwalter.
+</TD>
+</TR>
+<TR>
+<TH>
+<A HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=auth.html" TARGET="_top">Beglaubigung</A>
+</TH>
+<TD>
+Mit den Beblaubigungs-Eingabefenstern melden Sie sich im Verzeichnis an und ab. Sie m&uuml;ssen sich beglaubigen lassen, bevor Sie Eintr&auml;ge im dem Verzeichnis &auml;ndern und hinzuf&uuml;gen k&ouml;nnen. Sie m&uuml;ssen sich au&szlig;erdem je nach Vorgabe des Systemverwalters auch beglaubigen lassen, bevor Sie ein Verzeichnis durchsuchen k&ouml;nnen.
+</TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML>
+
diff --git a/ldap/clients/dsgw/html/de/index.html b/ldap/clients/dsgw/html/de/index.html
new file mode 100644
index 00000000..1ccbd0f7
--- /dev/null
+++ b/ldap/clients/dsgw/html/de/index.html
@@ -0,0 +1,21 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Netscape Directory Server Gateway</TITLE>
+</HEAD>
+<FRAMESET ROWS=100,*>
+ <FRAME SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=maintitle.html" NAME="buttonBarFrame" NORESIZE
+ SCROLLING="no">
+ <FRAME SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=greeting.html" NAME="greetingFrame" NORESIZE>
+</FRAMESET>
+<NOFRAMES>
+<H3>Browser muä Rahmen verarbeiten kȸnnen</H3>
+Um das Netscape Directory Server Gateway zu verwenden, muä Ihr Browser HTML-Formulare und JavaScript verarbeiten kȸnnen, wie zum Beispiel Netscape Navigator Version 3 oder hȸher. Wie Sie Netscape Navigator bekommen, erfahren Sie auf der <A HREF="http://home.netscape.com">Netscape-Startseite</A>.
+</NOFRAMES>
+</HTML>
+
diff --git a/ldap/clients/dsgw/html/de/index1.gif b/ldap/clients/dsgw/html/de/index1.gif
new file mode 100644
index 00000000..75d03661
--- /dev/null
+++ b/ldap/clients/dsgw/html/de/index1.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/de/maintitle.html b/ldap/clients/dsgw/html/de/maintitle.html
new file mode 100644
index 00000000..f60e84f9
--- /dev/null
+++ b/ldap/clients/dsgw/html/de/maintitle.html
@@ -0,0 +1,37 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Netscape Directory Server</TITLE>
+</HEAD>
+
+<BODY BGCOLOR="#ffffff" TEXT="#000000">
+
+<IMG SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=title.gif" HEIGHT=40 WIDTH=530 BORDER="0"
+ ALT="Netscape Directory Server"><BR>
+
+<!-- note: do not include any newlines or other whitespace between the tags -->
+<!-- below that enclose images because this leads to blank pixels -->
+<!-- between them (which we do not want). -->
+
+<IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=blank.gif" WIDTH=42 HEIGHT=24 BORDER="0"><A
+ HREF="/clients/dsgw/bin/search?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=stsearch_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Standardsuche"></A><A
+ HREF="/clients/dsgw/bin/csearch?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=adsearch_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Erweiterte Suche"></A><A
+ HREF="/clients/dsgw/bin/newentry?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=newentry_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Neuer Eintrag"></A><A
+ HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=auth.html" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=authen_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Beglaubigung"></A>
+
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/html/de/newentry_off.gif b/ldap/clients/dsgw/html/de/newentry_off.gif
new file mode 100644
index 00000000..9b302478
--- /dev/null
+++ b/ldap/clients/dsgw/html/de/newentry_off.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/de/newentry_on.gif b/ldap/clients/dsgw/html/de/newentry_on.gif
new file mode 100644
index 00000000..25121401
--- /dev/null
+++ b/ldap/clients/dsgw/html/de/newentry_on.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/de/newentrytitle.html b/ldap/clients/dsgw/html/de/newentrytitle.html
new file mode 100644
index 00000000..61e30b3d
--- /dev/null
+++ b/ldap/clients/dsgw/html/de/newentrytitle.html
@@ -0,0 +1,37 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Netscape Directory Server</TITLE>
+</HEAD>
+
+<BODY BGCOLOR="#ffffff" TEXT="#000000">
+
+<IMG SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=title.gif" HEIGHT=40 WIDTH=530 BORDER="0"
+ ALT="Netscape Directory Server"><BR>
+
+<!-- note: do not include any newlines or other whitespace between the tags -->
+<!-- below that enclose images because this leads to blank pixels -->
+<!-- between them (which we do not want). -->
+
+<IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=blank.gif" WIDTH=42 HEIGHT=24 BORDER="0"><A
+ HREF="/clients/dsgw/bin/search?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=stsearch_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Standardsuche"></A><A
+ HREF="/clients/dsgw/bin/csearch?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=adsearch_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Erweiterte Suche"></A><A
+ HREF="/clients/dsgw/bin/newentry?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=newentry_on.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Neuer Eintrag"></A><A
+ HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=auth.html" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=authen_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Beglaubigung"></A>
+
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/html/de/searchtitle.html b/ldap/clients/dsgw/html/de/searchtitle.html
new file mode 100644
index 00000000..a4ae798f
--- /dev/null
+++ b/ldap/clients/dsgw/html/de/searchtitle.html
@@ -0,0 +1,37 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Netscape Directory Server</TITLE>
+</HEAD>
+
+<BODY BGCOLOR="#ffffff" TEXT="#000000">
+
+<IMG SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=title.gif" HEIGHT=40 WIDTH=530 BORDER="0"
+ ALT="Netscape Directory Server"><BR>
+
+<!-- note: do not include any newlines or other whitespace between the tags -->
+<!-- below that enclose images because this leads to blank pixels -->
+<!-- between them (which we do not want). -->
+
+<IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=blank.gif" WIDTH=42 HEIGHT=24 BORDER="0"><A
+ HREF="/clients/dsgw/bin/search?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=stsearch_on.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Standardsuche"></A><A
+ HREF="/clients/dsgw/bin/csearch?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=adsearch_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Erweiterte Suche"></A><A
+ HREF="/clients/dsgw/bin/newentry?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=newentry_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Neuer Eintrag"></A><A
+ HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=auth.html" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=authen_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Beglaubigung"></A>
+
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/html/de/stsearch_off.gif b/ldap/clients/dsgw/html/de/stsearch_off.gif
new file mode 100644
index 00000000..015e1e5a
--- /dev/null
+++ b/ldap/clients/dsgw/html/de/stsearch_off.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/de/stsearch_on.gif b/ldap/clients/dsgw/html/de/stsearch_on.gif
new file mode 100644
index 00000000..f4446593
--- /dev/null
+++ b/ldap/clients/dsgw/html/de/stsearch_on.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/de/title.gif b/ldap/clients/dsgw/html/de/title.gif
new file mode 100644
index 00000000..5fca8c94
--- /dev/null
+++ b/ldap/clients/dsgw/html/de/title.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/eduser.html b/ldap/clients/dsgw/html/eduser.html
new file mode 100644
index 00000000..3a4fd1ea
--- /dev/null
+++ b/ldap/clients/dsgw/html/eduser.html
@@ -0,0 +1,31 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HEAD><TITLE>User Management</TITLE></HEAD>
+<HTML><BODY bgcolor="#C0C0C0" link="#0000EE" vlink="#551A8B" alink="#FF0000">
+
+<center><table border=2 width=100%%>
+<tr><td align=center width=100%><hr size=0 width=0><FONT size=+2><b>Edit
+User</b></FONT><hr size=0 width=0></th></tr></table></center>
+
+<form method="POST" action=dosearch name=eduserform>
+<input type=hidden name=mode value="smart">
+<input type=hidden name=type value="people">
+<input type=hidden name=editable value="true">
+<!-- PCONTEXT -->
+
+<b>Edit the user named: </b><INPUT type="text" name="searchstring" value="" size=20>
+</pre>
+<p>
+
+<center><table border=2 width=100%>
+<tr>
+<td width=33% align=center><input type=submit value="Edit User"></td>
+<td width=34% align=center><input type=reset value="Reset"></td>
+<td width=33% align=center><input type=button value=" Help " onclick="var hwin=window.open('', 'infowin_httpd',
+'resizable=1,width=400,height=500');if(top.helpwin==1) hwin.frames[1].location='http://ggood:2001/httpd-ggood/bin/tutor?!usradd';else { hwin.location='http://ggood:2001/httpd-ggood/bin/tutor?usradd'; hwin.rwin=top; hwin.rwin.helpwin=1; }"></td>
+</tr></table></center>
+</form>
diff --git a/ldap/clients/dsgw/html/emptyFrame.html b/ldap/clients/dsgw/html/emptyFrame.html
new file mode 100644
index 00000000..627efdfb
--- /dev/null
+++ b/ldap/clients/dsgw/html/emptyFrame.html
@@ -0,0 +1,7 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML><BODY BGCOLOR="white"></BODY></HTML>
diff --git a/ldap/clients/dsgw/html/es/adsearch_off.gif b/ldap/clients/dsgw/html/es/adsearch_off.gif
new file mode 100644
index 00000000..6a0864b4
--- /dev/null
+++ b/ldap/clients/dsgw/html/es/adsearch_off.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/es/adsearch_on.gif b/ldap/clients/dsgw/html/es/adsearch_on.gif
new file mode 100644
index 00000000..37ec8ad3
--- /dev/null
+++ b/ldap/clients/dsgw/html/es/adsearch_on.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/es/auth.html b/ldap/clients/dsgw/html/es/auth.html
new file mode 100644
index 00000000..d4f8e7b0
--- /dev/null
+++ b/ldap/clients/dsgw/html/es/auth.html
@@ -0,0 +1,23 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>
+Pasarela de Netscape Directory Server: Autenticar
+</TITLE>
+</HEAD>
+
+<FRAMESET ROWS=75,* BORDER=0>
+ <FRAME SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=authtitle.html" NAME="authTitleFrame" NORESIZE
+ SCROLLING="NO">
+ <FRAME SRC="/clients/dsgw/bin/auth?<!-- GCONTEXT -->" NAME="authFrame">
+</FRAMESET>
+<NOFRAMES>
+<H3>Es necesario un navegador que admita marcos</H3>
+Lo siento, pero para poder usar la Pasarela de Netscape Directory Server, debe emplear un navegador que admita formularios HTML y JavaScript, como Netscape Navigator versi&oacute;n 3 o posterior. Para conseguir Navigator, visite la <A HREF="http://home.es.netscape.com/es/">P&aacute;gina principal de Netscape</A>.
+</NOFRAMES>
+</HTML>
diff --git a/ldap/clients/dsgw/html/es/authen_off.gif b/ldap/clients/dsgw/html/es/authen_off.gif
new file mode 100644
index 00000000..aa979dff
--- /dev/null
+++ b/ldap/clients/dsgw/html/es/authen_off.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/es/authen_on.gif b/ldap/clients/dsgw/html/es/authen_on.gif
new file mode 100644
index 00000000..862644a7
--- /dev/null
+++ b/ldap/clients/dsgw/html/es/authen_on.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/es/authroot.html b/ldap/clients/dsgw/html/es/authroot.html
new file mode 100644
index 00000000..2bd00b1d
--- /dev/null
+++ b/ldap/clients/dsgw/html/es/authroot.html
@@ -0,0 +1,22 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>
+Pasarela de Netscape Directory Server: Autenticar
+</TITLE>
+</HEAD>
+<FRAMESET ROWS=100,* BORDER=0>
+ <FRAME SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=authtitle.html" NAME="authTitleFrame" NORESIZE
+ SCROLLING="NO">
+ <FRAME SRC="/clients/dsgw/bin/auth?MANAGER&<!-- GCONTEXT -->" NAME="authFrame">
+</FRAMESET>
+<NOFRAMES>
+<H3>Es necesario un navegador que admita marcos</H3>
+Lo siento, pero para poder usar la Pasarela de Netscape Directory Server, debe emplear un navegador que admita formularios HTML y JavaScript, como Netscape Navigator versi&oacute;n 3 o posterior. Para conseguir Navigator, visite la <A HREF="http://home.es.netscape.com/es/">P&aacute;gina principal de Netscape</A>.
+</NOFRAMES>
+</HTML>
diff --git a/ldap/clients/dsgw/html/es/authtitle.html b/ldap/clients/dsgw/html/es/authtitle.html
new file mode 100644
index 00000000..ce35909d
--- /dev/null
+++ b/ldap/clients/dsgw/html/es/authtitle.html
@@ -0,0 +1,37 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Netscape Directory Server</TITLE>
+</HEAD>
+
+<BODY BGCOLOR="#ffffff" TEXT="#000000">
+
+<IMG SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=title.gif" HEIGHT=40 WIDTH=530 BORDER="0"
+ ALT="Netscape Directory Server"><BR>
+
+<!-- note: do not include any newlines or other whitespace between the tags -->
+<!-- below that enclose images because this leads to blank pixels -->
+<!-- between them (which we do not want). -->
+
+<IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=blank.gif" WIDTH=42 HEIGHT=24 BORDER="0"><A
+ HREF="/clients/dsgw/bin/search?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=stsearch_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="B&uacute;squeda normal"></A><A
+ HREF="/clients/dsgw/bin/csearch?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=adsearch_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="B&uacute;squeda avanzada"></A><A
+ HREF="/clients/dsgw/bin/newentry?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=newentry_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Nueva entrada"></A><A
+ HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=auth.html" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=authen_on.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Autenticaci&oacute;n"></A>
+
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/html/es/back1.gif b/ldap/clients/dsgw/html/es/back1.gif
new file mode 100644
index 00000000..df7c7916
--- /dev/null
+++ b/ldap/clients/dsgw/html/es/back1.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/es/blank.gif b/ldap/clients/dsgw/html/es/blank.gif
new file mode 100644
index 00000000..afa7fb83
--- /dev/null
+++ b/ldap/clients/dsgw/html/es/blank.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/es/content1.gif b/ldap/clients/dsgw/html/es/content1.gif
new file mode 100644
index 00000000..01e83649
--- /dev/null
+++ b/ldap/clients/dsgw/html/es/content1.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/es/country.gif b/ldap/clients/dsgw/html/es/country.gif
new file mode 100644
index 00000000..d64220f3
--- /dev/null
+++ b/ldap/clients/dsgw/html/es/country.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/es/csearchtitle.html b/ldap/clients/dsgw/html/es/csearchtitle.html
new file mode 100644
index 00000000..7def480d
--- /dev/null
+++ b/ldap/clients/dsgw/html/es/csearchtitle.html
@@ -0,0 +1,37 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Netscape Directory Server</TITLE>
+</HEAD>
+
+<BODY BGCOLOR="#ffffff" TEXT="#000000">
+
+<IMG SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=title.gif" HEIGHT=40 WIDTH=530 BORDER="0"
+ ALT="Netscape Directory Server"><BR>
+
+<!-- note: do not include any newlines or other whitespace between the tags -->
+<!-- below that enclose images because this leads to blank pixels -->
+<!-- between them (which we do not want). -->
+
+<IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=blank.gif" WIDTH=42 HEIGHT=24 BORDER="0"><A
+ HREF="/clients/dsgw/bin/search?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=stsearch_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="B&uacute;squeda normal"></A><A
+ HREF="/clients/dsgw/bin/csearch?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=adsearch_on.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="B&uacute;squeda avanzada"></A><A
+ HREF="/clients/dsgw/bin/newentry?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=newentry_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Nueva entrada"></A><A
+ HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=auth.html" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=authen_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Autenticaci&oacute;n"></A>
+
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/html/es/eduser.html b/ldap/clients/dsgw/html/es/eduser.html
new file mode 100644
index 00000000..203a8fba
--- /dev/null
+++ b/ldap/clients/dsgw/html/es/eduser.html
@@ -0,0 +1,30 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HEAD><TITLE>Administraci&oacute;n de usuarios</TITLE></HEAD>
+<HTML><BODY bgcolor="#C0C0C0" link="#0000EE" vlink="#551A8B" alink="#FF0000">
+
+<center><table border=2 width=100%>
+<tr><td align=center width=100%><hr size=0 width=0><FONT size=+2><b>Modificar usuario</b></FONT><hr size=0 width=0></th></tr></table></center>
+
+<form method="POST" action=dosearch name=eduserform>
+<input type=hidden name=mode value="smart">
+<input type=hidden name=type value="people">
+<input type=hidden name=editable value="true">
+<!-- PCONTEXT -->
+
+<b>Modificar este usuario: </b><INPUT type="text" name="searchstring" value="" size=20>
+</pre>
+<p>
+
+<center><table border=2 width=100%>
+<tr>
+<td width=33% align=center><input type=submit value="Modificar usuario"></td>
+<td width=34% align=center><input type=reset value="Restablecer"></td>
+<td width=33% align=center><input type=button value=" Ayuda " onclick="var hwin=window.open('', 'infowin_httpd',
+'resizable=1,width=400,height=500');if(top.helpwin==1) hwin.frames[1].location='http://ggood:2001/httpd-ggood/bin/tutor?!usradd&<!-- GCONTEXT -->';else { hwin.location='http://ggood:2001/httpd-ggood/bin/tutor?usradd&<!-- GCONTEXT -->'; hwin.rwin=top; hwin.rwin.helpwin=1; }"></td>
+</tr></table></center>
+</form>
diff --git a/ldap/clients/dsgw/html/es/exit1.gif b/ldap/clients/dsgw/html/es/exit1.gif
new file mode 100644
index 00000000..035d4ddf
--- /dev/null
+++ b/ldap/clients/dsgw/html/es/exit1.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/es/forward1.gif b/ldap/clients/dsgw/html/es/forward1.gif
new file mode 100644
index 00000000..34bca12c
--- /dev/null
+++ b/ldap/clients/dsgw/html/es/forward1.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/es/greeting.html b/ldap/clients/dsgw/html/es/greeting.html
new file mode 100644
index 00000000..f13baf6b
--- /dev/null
+++ b/ldap/clients/dsgw/html/es/greeting.html
@@ -0,0 +1,64 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Netscape Directory Server</TITLE>
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript browsers
+function gotoURL(h) {
+ top.location.href = h;
+}
+// End hiding -->
+</SCRIPT>
+</HEAD>
+<BODY BGCOLOR="white">
+<HR>
+<CENTER>
+<FONT SIZE="+2">Bienvenido a la Pasarela de Netscape Directory Server</FONT>
+</CENTER>
+<P>
+Mediante esta interfaz puede buscar, modificar y crear entradas que quedan almacenadas en el Netscape Directory Server.
+<P>
+Siempre que utilice la Pasarela de Netscape Directory Server dispondr&aacute; de la barra de herramientas de la parte superior de esta ventana. Puede hacer clic en los botones para llevar a cabo cualquiera de las siguientes tareas:
+<P>
+<TABLE BORDER=1>
+<TR>
+<TH>
+<A HREF="/clients/dsgw/bin/search?<!-- GCONTEXT -->" TARGET="_top">B&uacute;squeda normal</A>
+</TH>
+<TD>
+Con esta funci&oacute;n puede buscar f&aacute;cilmente informaci&oacute;n del directorio. Esta funci&oacute;n examina los datos que haya introducido y selecciona autom&aacute;ticamente uno o varios m&eacute;todos de b&uacute;squeda en el directorio.
+</TD>
+</TR>
+<TR>
+<TH>
+<A HREF="/clients/dsgw/bin/csearch?<!-- GCONTEXT -->" TARGET="_top">B&uacute;squeda avanzada</A>
+</TH>
+<TD>
+Con esta funci&oacute;n puede especificar exactamente lo que est&eacute; buscando, los atributos que desee buscar y el tipo de concordancia que desee aplicar.
+</TD>
+</TR>
+<TR>
+<TH>
+<A HREF="/clients/dsgw/bin/newentry?<!-- GCONTEXT -->" TARGET="_top">Nueva entrada</A>
+</TH>
+<TD>
+Con esta funci&oacute;n puede crear nuevas entradas en el directorio. Seg&uacute;n la configuraci&oacute;n de directorio aplicada por el administrador del sistema, deber&aacute; disponer de un permiso especial para a&ntilde;adir entradas nuevas. Si no est&aacute; seguro, consulte al administrador del sistema.
+</TD>
+</TR>
+<TR>
+<TH>
+<A HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=auth.html" TARGET="_top">Autenticar</A>
+</TH>
+<TD>
+Con esta funci&oacute;n puede usar las pantallas de autenticaci&oacute;n para entrar y salir del directorio. Debe autenticarse para poder modificar o a&ntilde;adir entradas al directorio. Es posible que tambi&eacute;n tenga que hacerlo para poder buscar en el directorio si el administrador del sistema lo estableci&oacute; de ese modo.
+</TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML>
+
diff --git a/ldap/clients/dsgw/html/es/group.gif b/ldap/clients/dsgw/html/es/group.gif
new file mode 100644
index 00000000..c746e5f0
--- /dev/null
+++ b/ldap/clients/dsgw/html/es/group.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/es/index.html b/ldap/clients/dsgw/html/es/index.html
new file mode 100644
index 00000000..a7f2f7e1
--- /dev/null
+++ b/ldap/clients/dsgw/html/es/index.html
@@ -0,0 +1,20 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Pasarela de Netscape Directory Server</TITLE>
+</HEAD>
+<FRAMESET ROWS=75,* BORDER=0>
+ <FRAME SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=maintitle.html" NAME="buttonBarFrame" NORESIZE
+ SCROLLING="no">
+ <FRAME SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=greeting.html" NAME="greetingFrame" NORESIZE>
+</FRAMESET>
+<NOFRAMES>
+<H3>Es necesario un navegador que admita marcos</H3>
+Lo siento, pero para poder usar la Pasarela de Netscape Directory Server, debe emplear un navegador que admita formularios HTML y JavaScript, como Netscape Navigator versi&oacute;n 3 o posterior. Para conseguir Navigator, visite la <A HREF="http://home.es.netscape.com/es/">P&aacute;gina principal de Netscape</A>.
+</NOFRAMES>
+</HTML>
diff --git a/ldap/clients/dsgw/html/es/index1.gif b/ldap/clients/dsgw/html/es/index1.gif
new file mode 100644
index 00000000..c19d8020
--- /dev/null
+++ b/ldap/clients/dsgw/html/es/index1.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/es/maintitle.html b/ldap/clients/dsgw/html/es/maintitle.html
new file mode 100644
index 00000000..9a6e7398
--- /dev/null
+++ b/ldap/clients/dsgw/html/es/maintitle.html
@@ -0,0 +1,37 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Netscape Directory Server</TITLE>
+</HEAD>
+
+<BODY BGCOLOR="#ffffff" TEXT="#000000">
+
+<IMG SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=title.gif" HEIGHT=40 WIDTH=530 BORDER="0"
+ ALT="Netscape Directory Server"><BR>
+
+<!-- note: do not include any newlines or other whitespace between the tags -->
+<!-- below that enclose images because this leads to blank pixels -->
+<!-- between them (which we do not want). -->
+
+<IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=blank.gif" WIDTH=42 HEIGHT=24 BORDER="0"><A
+ HREF="/clients/dsgw/bin/search?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=stsearch_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="B&uacute;squeda normal"></A><A
+ HREF="/clients/dsgw/bin/csearch?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=adsearch_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="B&uacute;squeda avanzada"></A><A
+ HREF="/clients/dsgw/bin/newentry?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=newentry_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Nueva entrada"></A><A
+ HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=auth.html" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=authen_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Autenticaci&oacute;n"></A>
+
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/html/es/newentry_off.gif b/ldap/clients/dsgw/html/es/newentry_off.gif
new file mode 100644
index 00000000..d9733126
--- /dev/null
+++ b/ldap/clients/dsgw/html/es/newentry_off.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/es/newentry_on.gif b/ldap/clients/dsgw/html/es/newentry_on.gif
new file mode 100644
index 00000000..27c8058e
--- /dev/null
+++ b/ldap/clients/dsgw/html/es/newentry_on.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/es/newentrytitle.html b/ldap/clients/dsgw/html/es/newentrytitle.html
new file mode 100644
index 00000000..a66ed5e4
--- /dev/null
+++ b/ldap/clients/dsgw/html/es/newentrytitle.html
@@ -0,0 +1,37 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Netscape Directory Server</TITLE>
+</HEAD>
+
+<BODY BGCOLOR="#ffffff" TEXT="#000000">
+
+<IMG SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=title.gif" HEIGHT=40 WIDTH=530 BORDER="0"
+ ALT="Netscape Directory Server"><BR>
+
+<!-- note: do not include any newlines or other whitespace between the tags -->
+<!-- below that enclose images because this leads to blank pixels -->
+<!-- between them (which we do not want). -->
+
+<IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=blank.gif" WIDTH=42 HEIGHT=24 BORDER="0"><A
+ HREF="/clients/dsgw/bin/search?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=stsearch_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="B&uacute;squeda normal"></A><A
+ HREF="/clients/dsgw/bin/csearch?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=adsearch_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="B&uacute;squeda avanzada"></A><A
+ HREF="/clients/dsgw/bin/newentry?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=newentry_on.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Nueva entrada"></A><A
+ HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=auth.html" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=authen_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Autenticaci&oacute;n"></A>
+
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/html/es/organization.gif b/ldap/clients/dsgw/html/es/organization.gif
new file mode 100644
index 00000000..2d0b1535
--- /dev/null
+++ b/ldap/clients/dsgw/html/es/organization.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/es/orgunit.gif b/ldap/clients/dsgw/html/es/orgunit.gif
new file mode 100644
index 00000000..0c8be34a
--- /dev/null
+++ b/ldap/clients/dsgw/html/es/orgunit.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/es/person.gif b/ldap/clients/dsgw/html/es/person.gif
new file mode 100644
index 00000000..63044811
--- /dev/null
+++ b/ldap/clients/dsgw/html/es/person.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/es/searchtitle.html b/ldap/clients/dsgw/html/es/searchtitle.html
new file mode 100644
index 00000000..a2f62a02
--- /dev/null
+++ b/ldap/clients/dsgw/html/es/searchtitle.html
@@ -0,0 +1,37 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Netscape Directory Server</TITLE>
+</HEAD>
+
+<BODY BGCOLOR="#ffffff" TEXT="#000000">
+
+<IMG SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=title.gif" HEIGHT=40 WIDTH=530 BORDER="0"
+ ALT="Netscape Directory Server"><BR>
+
+<!-- note: do not include any newlines or other whitespace between the tags -->
+<!-- below that enclose images because this leads to blank pixels -->
+<!-- between them (which we do not want). -->
+
+<IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=blank.gif" WIDTH=42 HEIGHT=24 BORDER="0"><A
+ HREF="/clients/dsgw/bin/search?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=stsearch_on.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="B&uacute;squeda normal"></A><A
+ HREF="/clients/dsgw/bin/csearch?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=adsearch_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="B&uacute;squeda avanzada"></A><A
+ HREF="/clients/dsgw/bin/newentry?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=newentry_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Nueva entrada"></A><A
+ HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=auth.html" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=authen_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Autenticaci&oacute;n"></A>
+
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/html/es/stsearch_off.gif b/ldap/clients/dsgw/html/es/stsearch_off.gif
new file mode 100644
index 00000000..165a8adb
--- /dev/null
+++ b/ldap/clients/dsgw/html/es/stsearch_off.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/es/stsearch_on.gif b/ldap/clients/dsgw/html/es/stsearch_on.gif
new file mode 100644
index 00000000..13552eb1
--- /dev/null
+++ b/ldap/clients/dsgw/html/es/stsearch_on.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/es/title.gif b/ldap/clients/dsgw/html/es/title.gif
new file mode 100644
index 00000000..11bbaafd
--- /dev/null
+++ b/ldap/clients/dsgw/html/es/title.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/exit1.gif b/ldap/clients/dsgw/html/exit1.gif
new file mode 100644
index 00000000..56e23fa8
--- /dev/null
+++ b/ldap/clients/dsgw/html/exit1.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/forward1.gif b/ldap/clients/dsgw/html/forward1.gif
new file mode 100644
index 00000000..ad75557b
--- /dev/null
+++ b/ldap/clients/dsgw/html/forward1.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/fr/adsearch_off.gif b/ldap/clients/dsgw/html/fr/adsearch_off.gif
new file mode 100644
index 00000000..b49ccfe2
--- /dev/null
+++ b/ldap/clients/dsgw/html/fr/adsearch_off.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/fr/adsearch_on.gif b/ldap/clients/dsgw/html/fr/adsearch_on.gif
new file mode 100644
index 00000000..b477d5e0
--- /dev/null
+++ b/ldap/clients/dsgw/html/fr/adsearch_on.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/fr/auth.html b/ldap/clients/dsgw/html/fr/auth.html
new file mode 100644
index 00000000..0b7ad796
--- /dev/null
+++ b/ldap/clients/dsgw/html/fr/auth.html
@@ -0,0 +1,24 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>
+Passerelle Netscape Directory Server : Authentication
+</TITLE>
+</HEAD>
+
+<FRAMESET ROWS=100,* BORDER=2>
+ <FRAME SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=authtitle.html" NAME="authTitleFrame" NORESIZE
+ SCROLLING="NO">
+ <FRAME SRC="/clients/dsgw/bin/auth?<!-- GCONTEXT -->" NAME="authFrame">
+</FRAMESET>
+<NOFRAMES>
+<H3>Un navigateur supportant la fonction de cadres est requis</H3>
+Afin de pouvoir utiliser la passerelle Netscape Directory Server, vous devez utiliser un navigateur compatible avec les formulaires HTML et JavaScript, comme la version 3 ou toute version ultÃërieure de Netscape Navigator. Pour savoir comment vous procurer Navigator, consultez la page d'accueil de Netscape ÃÇ l'adresse : <A HREF="http://home.netscape.com">
+</A>.
+</NOFRAMES>
+</HTML>
diff --git a/ldap/clients/dsgw/html/fr/authen_off.gif b/ldap/clients/dsgw/html/fr/authen_off.gif
new file mode 100644
index 00000000..8d069b93
--- /dev/null
+++ b/ldap/clients/dsgw/html/fr/authen_off.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/fr/authen_on.gif b/ldap/clients/dsgw/html/fr/authen_on.gif
new file mode 100644
index 00000000..80674d25
--- /dev/null
+++ b/ldap/clients/dsgw/html/fr/authen_on.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/fr/authroot.html b/ldap/clients/dsgw/html/fr/authroot.html
new file mode 100644
index 00000000..05f98530
--- /dev/null
+++ b/ldap/clients/dsgw/html/fr/authroot.html
@@ -0,0 +1,22 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>
+Passerelle Netscape Directory Server : authentification
+</TITLE>
+</HEAD>
+<FRAMESET ROWS=100,* BORDER=2>
+ <FRAME SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=authtitle.html" NAME="authTitleFrame" NORESIZE
+ SCROLLING="NO">
+ <FRAME SRC="/clients/dsgw/bin/auth/MANAGER&<!-- GCONTEXT -->" NAME="authFrame">
+</FRAMESET>
+<NOFRAMES>
+<H3> Un navigateur supportant la fonction de cadres est requis</H3>
+Afin de pouvoir utiliser la passerelle Netscape Directory Server, vous devez utiliser un navigateur compatible avec les formulaires HTML et JavaScript, comme la version 3 ou toute version ultȨrieure de Netscape Navigator. Pour savoir comment vous procurer Navigator, consultez la page d'accueil de Netscape Èá l'adresse : <A HREF="http://home.netscape.com">la page d'accueil de Netscape</A>.
+</NOFRAMES>
+</HTML>
diff --git a/ldap/clients/dsgw/html/fr/authtitle.html b/ldap/clients/dsgw/html/fr/authtitle.html
new file mode 100644
index 00000000..21cbf71e
--- /dev/null
+++ b/ldap/clients/dsgw/html/fr/authtitle.html
@@ -0,0 +1,37 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Netscape Directory Server</TITLE>
+</HEAD>
+
+<BODY BGCOLOR="#ffffff" TEXT="#000000">
+
+<IMG SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=title.gif" HEIGHT=40 WIDTH=530 BORDER="0"
+ ALT="Netscape Directory Server"><BR>
+
+<!-- note: do not include any newlines or other whitespace between the tags -->
+<!-- below that enclose images because this leads to blank pixels -->
+<!-- between them (which we do not want). -->
+
+<IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=blank.gif" WIDTH=42 HEIGHT=24 BORDER="0"><A
+ HREF="/clients/dsgw/bin/search?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=stsearch_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Recherche standard"></A><A
+ HREF="/clients/dsgw/bin/csearch?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=adsearch_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Recherche avanc&eacute;e"></A><A
+ HREF="/clients/dsgw/bin/newentry?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=newentry_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Nouvelle entr&eacute;e"></A><A
+ HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=auth.html" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=authen_on.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Authentification"></A>
+
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/html/fr/back.gif b/ldap/clients/dsgw/html/fr/back.gif
new file mode 100644
index 00000000..cc848925
--- /dev/null
+++ b/ldap/clients/dsgw/html/fr/back.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/fr/back1.gif b/ldap/clients/dsgw/html/fr/back1.gif
new file mode 100644
index 00000000..ff77612d
--- /dev/null
+++ b/ldap/clients/dsgw/html/fr/back1.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/fr/content.gif b/ldap/clients/dsgw/html/fr/content.gif
new file mode 100644
index 00000000..b0cd53c6
--- /dev/null
+++ b/ldap/clients/dsgw/html/fr/content.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/fr/content1.gif b/ldap/clients/dsgw/html/fr/content1.gif
new file mode 100644
index 00000000..c54e36b5
--- /dev/null
+++ b/ldap/clients/dsgw/html/fr/content1.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/fr/csearchtitle.html b/ldap/clients/dsgw/html/fr/csearchtitle.html
new file mode 100644
index 00000000..68aa6cd2
--- /dev/null
+++ b/ldap/clients/dsgw/html/fr/csearchtitle.html
@@ -0,0 +1,37 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Netscape Directory Server</TITLE>
+</HEAD>
+
+<BODY BGCOLOR="#ffffff" TEXT="#000000">
+
+<IMG SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=title.gif" HEIGHT=40 WIDTH=530 BORDER="0"
+ ALT="Netscape Directory Server"><BR>
+
+<!-- note: do not include any newlines or other whitespace between the tags -->
+<!-- below that enclose images because this leads to blank pixels -->
+<!-- between them (which we do not want). -->
+
+<IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=blank.gif" WIDTH=42 HEIGHT=24 BORDER="0"><A
+ HREF="/clients/dsgw/bin/search?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=stsearch_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Recherche standard"></A><A
+ HREF="/clients/dsgw/bin/csearch?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=adsearch_on.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Recherche avanc&eacute;e"></A><A
+ HREF="/clients/dsgw/bin/newentry?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=newentry_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Nouvelle entr&eacute;e"></A><A
+ HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=auth.html" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=authen_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Authentification"></A>
+
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/html/fr/eduser.html b/ldap/clients/dsgw/html/fr/eduser.html
new file mode 100644
index 00000000..3dcd8415
--- /dev/null
+++ b/ldap/clients/dsgw/html/fr/eduser.html
@@ -0,0 +1,32 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HEAD><TITLE>Gestion des utilisateurs</TITLE></HEAD>
+<HTML><BODY bgcolor="#C0C0C0" link="#0000EE" vlink="#551A8B" alink="#FF0000">
+
+<center><table border=2 width=100%%>
+<tr><td align=center width=100%><hr size=0 width=0><FONT size=+2><b>Modifier l'utilisateur</b></FONT><hr size=0 width=0></th></tr></table></center>
+
+<form method="POST" action=dosearch name=eduserform>
+<input type=hidden name=mode value="smart">
+<input type=hidden name=type value="people">
+<input type=hidden name=editable value="true">
+<!-- PCONTEXT -->
+
+<b>Modifier l'utilisateur nomm&eacute; :</b><INPUT type="text" name="searchstring" value="" size=20>
+</pre>
+<p>
+
+<center><table border=2 width=100%>
+<tr>
+<td width=33% align=center><input type=submit value="Modifier l'utilisateur"></td>
+<td width=34% align=center><input type=reset value="Remettre &agrave; z&eacute;ro"></td>
+<td width=33% align=center><input type=button value="Aide" onclick="var hwin=window.open('', 'infowin_httpd',
+'resizable=1,width=400,height=500');if(top.helpwin==1) hwin.frames[1].location='http://ggood:2001/httpd-ggood/bin/tutor?!usradd&<!-- GCONTEXT -->';else { hwin.location='http://ggood:2001/httpd-ggood/bin/tutor?usradd&<!-- GCONTEXT -->'; hwin.rwin=top; hwin.rwin.helpwin=1; }"></td>
+</tr></table></center>
+</form>
+
+
diff --git a/ldap/clients/dsgw/html/fr/exit1.gif b/ldap/clients/dsgw/html/fr/exit1.gif
new file mode 100644
index 00000000..70af2dad
--- /dev/null
+++ b/ldap/clients/dsgw/html/fr/exit1.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/fr/forward1.gif b/ldap/clients/dsgw/html/fr/forward1.gif
new file mode 100644
index 00000000..1b80382f
--- /dev/null
+++ b/ldap/clients/dsgw/html/fr/forward1.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/fr/greeting.html b/ldap/clients/dsgw/html/fr/greeting.html
new file mode 100644
index 00000000..cb46a0fa
--- /dev/null
+++ b/ldap/clients/dsgw/html/fr/greeting.html
@@ -0,0 +1,65 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Netscape Directory Server</TITLE>
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript browsers
+function gotoURL(h) {
+ top.location.href = h;
+}
+// End hiding -->
+</SCRIPT>
+</HEAD>
+<BODY BGCOLOR="white">
+<HR>
+<CENTER>
+<FONT SIZE="+2">Bienvenue dans la passerelle de Netscape Directory Server.</FONT>
+</CENTER>
+<P>
+Cette interface peut &ecirc;tre utilis&eacute;e pour rechercher, modifier et cr&eacute;er des entr&eacute;es stock&eacute;es dans Netscape Directory Server.
+<P>
+La barre d'outils qui appara&icirc;t dans la partie sup&eacute;rieure de cette fen&ecirc;tre est toujours affich&eacute;e lorsque vous utilisez la passerelle Directory Server. Vous pouvez cliquer sur ces boutons pour effectuer les t&acirc;ches suivantes :
+<P>
+<TABLE BORDER=1>
+<TR>
+<TH>
+<A HREF="/clients/dsgw/bin/search?<!-- GCONTEXT -->" TARGET="_top">Recherche standard</A>
+</TH>
+<TD>
+La recherche standard est la mani&egrave;re la plus simple d'effectuer une recherche dans un annuaire. Elle examine les donn&eacute;es saisies et s&eacute;lectionne automatiquement une ou plusieurs m&eacute;thodes de recherche d'annuaires.
+</TD>
+</TR>
+<TR>
+<TH>
+<A HREF="/clients/dsgw/bin/csearch?<!-- GCONTEXT -->" TARGET="_top">Recherche avanc&eacute;e</A>
+</TH>
+<TD>
+Le bouton Recherche avanc&eacute;e vous permet de sp&eacute;cifier votre recherche avec exactitude &agrave; l'aide d'options de crit&egrave;res de recherche et de type de correspondance.
+</TD>
+</TR>
+<TR>
+<TH>
+<A HREF="/clients/dsgw/bin/newentry?<!-- GCONTEXT -->" TARGET="_top">Nouvelle entr&eacute;e</A>
+</TH>
+<TD>
+Le bouton Nouvelle entr&eacute;e vous permet de cr&eacute;er de nouvelles entr&eacute;es dans l'annuaire. Selon la fa&ccedil;on dont l'administrateur syst&egrave;me a configur&eacute; votre annuaire, vous devez peut-&ecirc;tre obtenir de celui-ci le privil&egrave;ge d'ajouter de nouvelles entr&eacute;es. Dans le doute, consultez votre administrateur syst&egrave;me.
+</TD>
+</TR>
+<TR>
+<TH>
+<A HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=auth.html" TARGET="_top">Authentification</A>
+</TH>
+<TD>
+Les &eacute;crans d'authentification vous permettent de vous connecter et de vous d&eacute;connecter d'un annuaire. Vous devez vous authentifier avant de modifier ou d'ajouter des entr&eacute;es &agrave; l'annuaire.
+</TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML>
+
+
diff --git a/ldap/clients/dsgw/html/fr/index.html b/ldap/clients/dsgw/html/fr/index.html
new file mode 100644
index 00000000..0d5008d2
--- /dev/null
+++ b/ldap/clients/dsgw/html/fr/index.html
@@ -0,0 +1,20 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Passerelle Netscape Directory Server</TITLE>
+</HEAD>
+<FRAMESET ROWS=100,*>
+ <FRAME SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=maintitle.html" NAME="buttonBarFrame" NORESIZE
+ SCROLLING="no">
+ <FRAME SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=greeting.html" NAME="greetingFrame" NORESIZE>
+</FRAMESET>
+<NOFRAMES>
+<H3> Un navigateur supportant la fonction de cadres est requis</H3>
+Afin de pouvoir utiliser la passerelle Netscape Directory Server, vous devez utiliser un navigateur compatible avec les formulaires HTML et JavaScript, comme la version 3 ou toute version ultȨrieure de Netscape Navigator. Pour savoir comment vous procurer Navigator, consultez la page d'accueil de Netscape Èá l'adresse : <A HREF="http://home.netscape.com">la page d'accueil de Netscape</A>.
+</NOFRAMES>
+</HTML>
diff --git a/ldap/clients/dsgw/html/fr/index1.gif b/ldap/clients/dsgw/html/fr/index1.gif
new file mode 100644
index 00000000..75d03661
--- /dev/null
+++ b/ldap/clients/dsgw/html/fr/index1.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/fr/maintitle.html b/ldap/clients/dsgw/html/fr/maintitle.html
new file mode 100644
index 00000000..f97e7ea6
--- /dev/null
+++ b/ldap/clients/dsgw/html/fr/maintitle.html
@@ -0,0 +1,38 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Netscape Directory Server</TITLE>
+</HEAD>
+
+<BODY BGCOLOR="#ffffff" TEXT="#000000">
+
+<IMG SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=title.gif" HEIGHT=40 WIDTH=530 BORDER="0"
+ ALT="Netscape Directory Server"><BR>
+
+<!-- note: do not include any newlines or other whitespace between the tags -->
+<!-- below that enclose images because this leads to blank pixels -->
+<!-- between them (which we do not want). -->
+
+<IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=blank.gif" WIDTH=42 HEIGHT=24 BORDER="0"><A
+ HREF="/clients/dsgw/bin/search?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=stsearch_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Recherche standard"></A><A
+ HREF="/clients/dsgw/bin/csearch?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=adsearch_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Recherche avanc&eacute;e"></A><A
+ HREF="/clients/dsgw/bin/newentry?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=newentry_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Nouvelle entr&eacute;e"></A><A
+ HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=auth.html" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=authen_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Authentification"></A>
+
+</BODY>
+</HTML>
+
diff --git a/ldap/clients/dsgw/html/fr/newentry_off.gif b/ldap/clients/dsgw/html/fr/newentry_off.gif
new file mode 100644
index 00000000..d98c6fbe
--- /dev/null
+++ b/ldap/clients/dsgw/html/fr/newentry_off.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/fr/newentry_on.gif b/ldap/clients/dsgw/html/fr/newentry_on.gif
new file mode 100644
index 00000000..25e4b2d2
--- /dev/null
+++ b/ldap/clients/dsgw/html/fr/newentry_on.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/fr/newentrytitle.html b/ldap/clients/dsgw/html/fr/newentrytitle.html
new file mode 100644
index 00000000..16eebece
--- /dev/null
+++ b/ldap/clients/dsgw/html/fr/newentrytitle.html
@@ -0,0 +1,38 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Netscape Directory Server</TITLE>
+</HEAD>
+
+<BODY BGCOLOR="#ffffff" TEXT="#000000">
+
+<IMG SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=title.gif" HEIGHT=40 WIDTH=530 BORDER="0"
+ ALT="Netscape Directory Server"><BR>
+
+<!-- note: do not include any newlines or other whitespace between the tags -->
+<!-- below that enclose images because this leads to blank pixels -->
+<!-- between them (which we do not want). -->
+
+<IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=blank.gif" WIDTH=42 HEIGHT=24 BORDER="0"><A
+ HREF="/clients/dsgw/bin/search?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=stsearch_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Recherche standard"></A><A
+ HREF="/clients/dsgw/bin/csearch?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=adsearch_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Recherche avanc&eacute;e"></A><A
+ HREF="/clients/dsgw/bin/newentry?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=newentry_on.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Nouvelle entr&eacute;e"></A><A
+ HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=auth.html" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=authen_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Authentification"></A>
+
+</BODY>
+</HTML>
+
diff --git a/ldap/clients/dsgw/html/fr/searchtitle.html b/ldap/clients/dsgw/html/fr/searchtitle.html
new file mode 100644
index 00000000..58e69228
--- /dev/null
+++ b/ldap/clients/dsgw/html/fr/searchtitle.html
@@ -0,0 +1,38 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Netscape Directory Server</TITLE>
+</HEAD>
+
+<BODY BGCOLOR="#ffffff" TEXT="#000000">
+
+<IMG SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=title.gif" HEIGHT=40 WIDTH=530 BORDER="0"
+ ALT="Netscape Directory Server"><BR>
+
+<!-- note: do not include any newlines or other whitespace between the tags -->
+<!-- below that enclose images because this leads to blank pixels -->
+<!-- between them (which we do not want). -->
+
+<IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=blank.gif" WIDTH=42 HEIGHT=24 BORDER="0"><A
+ HREF="/clients/dsgw/bin/search?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=stsearch_on.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Recherche standard"></A><A
+ HREF="/clients/dsgw/bin/csearch?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=adsearch_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Recherche avanc&eacute;e"></A><A
+ HREF="/clients/dsgw/bin/newentry?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=newentry_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Nouvelle entr&eacute;e"></A><A
+ HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=auth.html" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=authen_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="Authentification"></A>
+
+</BODY>
+</HTML>
+
diff --git a/ldap/clients/dsgw/html/fr/stsearch_off.gif b/ldap/clients/dsgw/html/fr/stsearch_off.gif
new file mode 100644
index 00000000..fce290f4
--- /dev/null
+++ b/ldap/clients/dsgw/html/fr/stsearch_off.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/fr/stsearch_on.gif b/ldap/clients/dsgw/html/fr/stsearch_on.gif
new file mode 100644
index 00000000..8224c0a0
--- /dev/null
+++ b/ldap/clients/dsgw/html/fr/stsearch_on.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/fr/title.gif b/ldap/clients/dsgw/html/fr/title.gif
new file mode 100644
index 00000000..818f6fa9
--- /dev/null
+++ b/ldap/clients/dsgw/html/fr/title.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/greeting.html b/ldap/clients/dsgw/html/greeting.html
new file mode 100644
index 00000000..aa81b54d
--- /dev/null
+++ b/ldap/clients/dsgw/html/greeting.html
@@ -0,0 +1,89 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Netscape Directory Server</TITLE>
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript browsers
+function gotoURL(h) {
+ top.location.href = h;
+}
+// End hiding -->
+</SCRIPT>
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</HEAD>
+
+<BODY>
+
+<CENTER> <TABLE CELLPADDING=5 CELLSPACING=5 WIDTH="80%">
+
+<TR> <TD COLSPAN=2>
+You are using the Netscape Directory Server Gateway. This interface can be
+used to search for, modify, and create entries that are stored in the Netscape Directory Server.
+<P>
+You are currently viewing the Standard Search screen, which provides an
+easy and convenient way to search the directory. Standard Search
+examines what you type and automatically selects one or more methods
+for searching the directory. Enter a name, telephone number, user id,
+or e-mail address in the Search For field and click the
+Search button to quickly locate directory entries. Click the Help
+button if you need additional assistance.
+
+<P>
+The toolbar you see at the top of this window is always available when you
+are using the Directory Server Gateway. In addition to Standard Search,
+you can click the other buttons to perform a variety of tasks.
+If you want to modify your own directory entry, first search for it using
+Standard or Advanced Search and then click the Edit Person button
+within the entry display.
+
+</TD> </TR>
+
+
+<TR> <TD ALIGN="center" class="bgColor9">
+ <A HREF="/clients/dsgw/bin/csearch?<!-- GCONTEXT -->" TARGET="_top" class="link14">
+ <B>Advanced<BR>Search</B>
+ </A></TD>
+
+ <TD BGCOLOR="#CCCCCC">
+With Advanced Search, you can specify exactly what you are looking
+for, what attribute you wish to search for, and what type of matching
+you wish to allow.
+
+ </TD> </TR>
+
+ <TR> <TD ALIGN="center" class="bgColor9">
+ <A HREF="/clients/dsgw/bin/newentry?<!-- GCONTEXT -->" TARGET="_top" class="link14">
+ <B>New Entry</B>
+ </A></TD>
+
+ <TD BGCOLOR="#CCCCCC">
+
+New Entry allows you to create new entries in the directory. Depending
+on how the system administrator has set up your directory you may need
+to be granted special permission to add new entries. If you are not sure, ask
+your system administrator.
+
+ </TD> </TR>
+
+ <TR> <TD ALIGN="center" class="bgColor9">
+ <A HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=auth.html" TARGET="_top" class="link14">
+ <B>Authenticate</B>
+ </A></TD>
+
+ <TD BGCOLOR="#CCCCCC">
+
+You use the authentication screens to log into and out of the directory.
+You need to authenticate before you can modify or add entries to the
+directory. You may also need to authenticate before searching the
+directory, if your system administrator requires it.
+ </TD> </TR>
+
+</TABLE> </CENTER>
+
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/html/group.gif b/ldap/clients/dsgw/html/group.gif
new file mode 100644
index 00000000..182c7174
--- /dev/null
+++ b/ldap/clients/dsgw/html/group.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/index.html b/ldap/clients/dsgw/html/index.html
new file mode 100644
index 00000000..ee2012d0
--- /dev/null
+++ b/ldap/clients/dsgw/html/index.html
@@ -0,0 +1,24 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Netscape Directory Server Gateway</TITLE>
+</HEAD>
+<FRAMESET ROWS=130,* BORDER=0>
+ <FRAME SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=maintitle.html" NAME="buttonBarFrame" NORESIZE
+ SCROLLING="no">
+ <FRAME SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=greeting.html" NAME="greetingFrame"
+ NORESIZE SCROLLING="auto">
+</FRAMESET>
+<NOFRAMES>
+<H3>Frames-capable browser required</H3>
+Sorry, but in order to use the Netscape Directory Server Gateway,
+you must use a browser which supports HTML forms and JavaScript, such
+as Netscape Navigator version 3 or later. To learn how to obtain
+Navigator, visit the <A HREF="http://home.netscape.com">Netscape Home Page</A>.
+</NOFRAMES>
+</HTML>
diff --git a/ldap/clients/dsgw/html/index1.gif b/ldap/clients/dsgw/html/index1.gif
new file mode 100644
index 00000000..ed37959a
--- /dev/null
+++ b/ldap/clients/dsgw/html/index1.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/info/Makefile b/ldap/clients/dsgw/html/info/Makefile
new file mode 100644
index 00000000..34f3f92a
--- /dev/null
+++ b/ldap/clients/dsgw/html/info/Makefile
@@ -0,0 +1,40 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+#
+# Gmakefile for Directory Server Gateway info files.
+#
+
+LDAP_SRC = ../../../..
+MCOM_ROOT = ../../../../../..
+
+NOSTDSTRIP=true # don't let nsconfig.mak define target strip
+NOSTDCLEAN=true # don't let nsconfig.mak define target clean
+NOSTDDEPEND=true # don't let nsconfig.mak define target depend
+
+include $(MCOM_ROOT)/ldapserver/nsconfig.mk
+include $(LDAP_SRC)/nsldap.mk
+
+include ../../dsgw_include.mk
+
+HTMLDEST = $(DSGW_INFO_RELDIR)
+
+HTML = infonav.html
+
+BINS=$(addprefix $(HTMLDEST)/,$(HTML))
+
+all: $(HTMLDEST) $(BINS)
+install: $(HTMLDEST) $(BINS)
+
+clean:
+ $(RM) $(BINS)
+
+$(HTMLDEST)/%: %
+ -@$(RM) $@
+ cp $< $@
+
+strip:
+depend:
diff --git a/ldap/clients/dsgw/html/info/infonav.html b/ldap/clients/dsgw/html/info/infonav.html
new file mode 100644
index 00000000..1cc4c62b
--- /dev/null
+++ b/ldap/clients/dsgw/html/info/infonav.html
@@ -0,0 +1,31 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<TITLE>Info</TITLE>
+
+<BODY bgcolor="#808080">
+
+<center>
+<table width=100%>
+<tr><td align=left valign=top>
+
+<a href="/clients/dsgw/bin/tutor?!contents&context=dsgw" target=infotopic>
+<img src="/clients/dsgw/html/content1.gif" border=0></a>
+
+<a href="javascript:parent.frames[1].history.go(-1)">
+<img src="/clients/dsgw/html/back1.gif" border=0></a>
+
+<a href="javascript:parent.frames[1].history.go(1)">
+<img src="/clients/dsgw/html/forward1.gif" border=0></a>
+
+</td>
+<td align=right valign=top>
+<a href="javascript:top.close()"><img src="/clients/dsgw/html/exit1.gif" border=0></a>
+</td></tr>
+</table>
+</center>
+
+</BODY>
diff --git a/ldap/clients/dsgw/html/ja/adsearch_off.gif b/ldap/clients/dsgw/html/ja/adsearch_off.gif
new file mode 100644
index 00000000..da918342
--- /dev/null
+++ b/ldap/clients/dsgw/html/ja/adsearch_off.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/ja/adsearch_on.gif b/ldap/clients/dsgw/html/ja/adsearch_on.gif
new file mode 100644
index 00000000..9a2b143e
--- /dev/null
+++ b/ldap/clients/dsgw/html/ja/adsearch_on.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/ja/auth.html b/ldap/clients/dsgw/html/ja/auth.html
new file mode 100644
index 00000000..788364c3
--- /dev/null
+++ b/ldap/clients/dsgw/html/ja/auth.html
@@ -0,0 +1,23 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>
+Netscape Directory Server Gateway: Authentication
+</TITLE>
+</HEAD>
+
+<FRAMESET ROWS=100,* BORDER=2>
+ <FRAME SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=authtitle.html" NAME="authTitleFrame" NORESIZE
+ SCROLLING="NO">
+ <FRAME SRC="/clients/dsgw/bin/auth?<!-- GCONTEXT -->" NAME="authFrame">
+</FRAMESET>
+<NOFRAMES>
+<H3>フレーム機能をサãƒãƒ¼ãƒˆã™ã‚‹ãƒ–ラウザãŒå¿…è¦ã§ã™</H3>
+Netscape Directory Server Gatewayを使用ã™ã‚‹ã«ã¯ã€Netscape Navigatorパージョン3以é™ã®ã‚ˆã†ãªHTMLフォームã¨JavaScriptをサãƒãƒ¼ãƒˆã™ã‚‹ãƒ–ラウザãŒå¿…è¦ã§ã™ã€‚Navigatorã®å…¥æ‰‹æ–¹æ³•ã«ã¤ã„ã¦ã¯<A HREF="http://home.netscape.com">Netscapeã®ãƒ›ãƒ¼ãƒ ãƒšãƒ¼ã‚¸</A>ã‚’ã”覧ãã ã•ã„。
+</NOFRAMES>
+</HTML>
diff --git a/ldap/clients/dsgw/html/ja/authen_off.gif b/ldap/clients/dsgw/html/ja/authen_off.gif
new file mode 100644
index 00000000..9e8570a3
--- /dev/null
+++ b/ldap/clients/dsgw/html/ja/authen_off.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/ja/authen_on.gif b/ldap/clients/dsgw/html/ja/authen_on.gif
new file mode 100644
index 00000000..f2e86160
--- /dev/null
+++ b/ldap/clients/dsgw/html/ja/authen_on.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/ja/authroot.html b/ldap/clients/dsgw/html/ja/authroot.html
new file mode 100644
index 00000000..72b73aca
--- /dev/null
+++ b/ldap/clients/dsgw/html/ja/authroot.html
@@ -0,0 +1,23 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>
+Netscape Directory Server Gateway: èªè¨¼
+</TITLE>
+</HEAD>
+<FRAMESET ROWS=100,* BORDER=2>
+ <FRAME SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=authtitle.html" NAME="authTitleFrame" NORESIZE
+ SCROLLING="NO">
+ <FRAME SRC="/clients/dsgw/bin/auth/MANAGER&<!-- GCONTEXT -->" NAME="authFrame">
+</FRAMESET>
+<NOFRAMES>
+<H3>フレーム機能をサãƒãƒ¼ãƒˆã™ã‚‹ãƒ–ラウザãŒå¿…è¦ã§ã™</H3>
+Netscape Directory Server Gatewayを使用ã™ã‚‹ã«ã¯ã€Netscape Navigatorパージョン3以é™ã®ã‚ˆã†ãªHTMLフォームã¨JavaScriptをサãƒãƒ¼ãƒˆã™ã‚‹ãƒ–ラウザãŒå¿…è¦ã§ã™ã€‚Navigatorã®å…¥æ‰‹æ–¹æ³•ã«ã¤ã„ã¦ã¯<A HREF="http://home.netscape.com">Netscape
+ã®ãƒ›ãƒ¼ãƒ ãƒšãƒ¼ã‚¸</A>ã‚’ã”覧ãã ã•ã„。
+</NOFRAMES>
+</HTML>
diff --git a/ldap/clients/dsgw/html/ja/authtitle.html b/ldap/clients/dsgw/html/ja/authtitle.html
new file mode 100644
index 00000000..577fc94f
--- /dev/null
+++ b/ldap/clients/dsgw/html/ja/authtitle.html
@@ -0,0 +1,37 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Netscape Directory Server</TITLE>
+</HEAD>
+
+<BODY BGCOLOR="#ffffff" TEXT="#000000">
+
+<IMG SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=title.gif" HEIGHT=40 WIDTH=530 BORDER="0"
+ ALT="Netscape Directory Server"><BR>
+
+<!-- note: do not include any newlines or other whitespace between the tags -->
+<!-- below that enclose images because this leads to blank pixels -->
+<!-- between them (which we do not want). -->
+
+<IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=blank.gif" WIDTH=42 HEIGHT=24 BORDER="0"><A
+ HREF="/clients/dsgw/bin/search?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=stsearch_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="標準検索"></A><A
+ HREF="/clients/dsgw/bin/csearch?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=adsearch_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="拡張検索"></A><A
+ HREF="/clients/dsgw/bin/newentry?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=newentry_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="æ–°è¦ã‚¨ãƒ³ãƒˆãƒª"></A><A
+ HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=auth.html" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=authen_on.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="èªè¨¼"></A>
+
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/html/ja/back.gif b/ldap/clients/dsgw/html/ja/back.gif
new file mode 100644
index 00000000..31080b38
--- /dev/null
+++ b/ldap/clients/dsgw/html/ja/back.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/ja/back1.gif b/ldap/clients/dsgw/html/ja/back1.gif
new file mode 100644
index 00000000..c63d5bef
--- /dev/null
+++ b/ldap/clients/dsgw/html/ja/back1.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/ja/content.gif b/ldap/clients/dsgw/html/ja/content.gif
new file mode 100644
index 00000000..ca1149f3
--- /dev/null
+++ b/ldap/clients/dsgw/html/ja/content.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/ja/content1.gif b/ldap/clients/dsgw/html/ja/content1.gif
new file mode 100644
index 00000000..fcd29c19
--- /dev/null
+++ b/ldap/clients/dsgw/html/ja/content1.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/ja/csearchtitle.html b/ldap/clients/dsgw/html/ja/csearchtitle.html
new file mode 100644
index 00000000..a3fda592
--- /dev/null
+++ b/ldap/clients/dsgw/html/ja/csearchtitle.html
@@ -0,0 +1,37 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Netscape Directory Server</TITLE>
+</HEAD>
+
+<BODY BGCOLOR="#ffffff" TEXT="#000000">
+
+<IMG SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=title.gif" HEIGHT=40 WIDTH=530 BORDER="0"
+ ALT="Netscape Directory Server"><BR>
+
+<!-- note: do not include any newlines or other whitespace between the tags -->
+<!-- below that enclose images because this leads to blank pixels -->
+<!-- between them (which we do not want). -->
+
+<IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=blank.gif" WIDTH=42 HEIGHT=24 BORDER="0"><A
+ HREF="/clients/dsgw/bin/search?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=stsearch_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="標準検索"></A><A
+ HREF="/clients/dsgw/bin/csearch?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=adsearch_on.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="拡張検索"></A><A
+ HREF="/clients/dsgw/bin/newentry?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=newentry_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="æ–°è¦ã‚¨ãƒ³ãƒˆãƒª"></A><A
+ HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=auth.html" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=authen_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="èªè¨¼"></A>
+
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/html/ja/eduser.html b/ldap/clients/dsgw/html/ja/eduser.html
new file mode 100644
index 00000000..2b07c3ec
--- /dev/null
+++ b/ldap/clients/dsgw/html/ja/eduser.html
@@ -0,0 +1,30 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HEAD><TITLE>ユーザ管ç†</TITLE></HEAD>
+<HTML><BODY bgcolor="#C0C0C0" link="#0000EE" vlink="#551A8B" alink="#FF0000">
+
+<center><table border=2 width=100%%>
+<tr><td align=center width=100%><hr size=0 width=0><FONT size=+2><b>ユーザã®ç·¨é›†</b></FONT><hr size=0 width=0></th></tr></table></center>
+
+<form method="POST" action=dosearch name=eduserform>
+<input type=hidden name=mode value="smart">
+<input type=hidden name=type value="people">
+<input type=hidden name=editable value="true">
+<!-- PCONTEXT -->
+
+<b>次ã®åå‰ã®ãƒ¦ãƒ¼ã‚¶ã‚’編集: </b><INPUT type="text" name="searchstring" value="" size=20>
+</pre>
+<p>
+
+<center><table border=2 width=100%>
+<tr>
+<td width=33% align=center><input type=submit value="ユーザã®ç·¨é›†"></td>
+<td width=34% align=center><input type=reset value="リセット"></td>
+<td width=33% align=center><input type=button value=" ヘルプ " onclick="var hwin=window.open('', 'infowin_httpd',
+'resizable=1,width=400,height=500');if(top.helpwin==1) hwin.frames[1].location='http://ggood:2001/httpd-ggood/bin/tutor?!usradd&<!-- GCONTEXT -->';else { hwin.location='http://ggood:2001/httpd-ggood/bin/tutor?usradd&<!-- GCONTEXT -->'; hwin.rwin=top; hwin.rwin.helpwin=1; }"></td>
+</tr></table></center>
+</form>
diff --git a/ldap/clients/dsgw/html/ja/exit1.gif b/ldap/clients/dsgw/html/ja/exit1.gif
new file mode 100644
index 00000000..cd41fa17
--- /dev/null
+++ b/ldap/clients/dsgw/html/ja/exit1.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/ja/forward1.gif b/ldap/clients/dsgw/html/ja/forward1.gif
new file mode 100644
index 00000000..873ccc33
--- /dev/null
+++ b/ldap/clients/dsgw/html/ja/forward1.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/ja/greeting.html b/ldap/clients/dsgw/html/ja/greeting.html
new file mode 100644
index 00000000..0e75618a
--- /dev/null
+++ b/ldap/clients/dsgw/html/ja/greeting.html
@@ -0,0 +1,65 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Netscape Directory Server</TITLE>
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript browsers
+function gotoURL(h) {
+ top.location.href = h;
+}
+// End hiding -->
+</SCRIPT>
+</HEAD>
+<BODY BGCOLOR="white">
+<HR>
+<CENTER>
+<FONT SIZE="+2">Netscape Directory Server Gateway ã«ã‚ˆã†ã“ã</FONT>
+</CENTER>
+<P>
+ã“ã®ã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ã¯ã€Netscape Directory Server ã«ä¿å­˜ã•ã‚Œã¦ã„るエントリã®æ¤œç´¢ã€å¤‰æ›´ã€ãŠã‚ˆã³ä½œæˆã«ä½¿ç”¨ã§ãã¾ã™ã€‚
+<P>
+Directory Server Gateway ã®ã”使用中ã¯ã€ã“ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ä¸Šéƒ¨ã®ãƒ„ールãƒãƒ¼ã‚’ã„ã¤ã§ã‚‚ã”利用ã„ãŸã ã‘ã¾ã™ã€‚ ボタンをクリックã™ã‚Œã°ä»¥ä¸‹ã®ã‚¿ã‚¹ã‚¯ã‚’実行ã§ãã¾ã™ã€‚
+<P>
+<TABLE BORDER=1>
+<TR>
+<TH>
+<A HREF="/clients/dsgw/bin/search?<!-- GCONTEXT -->" TARGET="_top">標準検索</A>
+</TH>
+<TD>
+[標準検索]ã¯ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªæ¤œç´¢ã®æœ€ã‚‚ç°¡å˜ãªæ–¹æ³•ã§ã™ã€‚ ユーザã®å…¥åŠ›ã«åŸºã¥ã„ã¦ã€1ã¤ä»¥ä¸Šã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªæ¤œç´¢æ–¹æ³•ãŒè‡ªå‹•çš„ã«é¸æŠžã•ã‚Œã¾ã™ã€‚
+</TD>
+</TR>
+<TR>
+<TH>
+<A HREF="/clients/dsgw/bin/csearch?<!-- GCONTEXT -->" TARGET="_top">拡張検索</A>
+</TH>
+<TD>
+[拡張検索]を使用ã™ã‚‹ã¨ã€æ¤œç´¢å¯¾è±¡ã€æ¤œç´¢å±žæ€§ã€ãŠã‚ˆã³ä¸€è‡´ã‚¿ã‚¤ãƒ—を指定ã§ãã¾ã™ã€‚
+</TD>
+</TR>
+<TR>
+<TH>
+<A HREF="/clients/dsgw/bin/newentry?<!-- GCONTEXT -->" TARGET="_top">æ–°è¦ã‚¨ãƒ³ãƒˆãƒª</A>
+</TH>
+<TD>
+[æ–°è¦ã‚¨ãƒ³ãƒˆãƒª]ã§ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«æ–°è¦ã‚¨ãƒ³ãƒˆãƒªã‚’作æˆã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ システム管ç†è€…ã«ã‚ˆã‚‹ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®è¨­å®šæ–¹æ³•ã«ã‚ˆã£ã¦ã¯ã€æ–°è¦ã‚¨ãƒ³ãƒˆãƒªã‚’追加ã™ã‚‹ã®ã«ç‰¹åˆ¥ãªè¨±å¯ã‚’æŒã£ã¦ã„ãªã‘ã‚Œã°ãªã‚‰ãªã„ã“ã¨ã‚‚ã‚ã‚Šã¾ã™ã€‚ ä¸æ˜Žã®å ´åˆã¯ã€ã‚·ã‚¹ãƒ†ãƒ ç®¡ç†è€…ã«ãŠå°‹ã­ãã ã•ã„。
+</TD>
+</TR>
+<TR>
+<TH>
+<A HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=auth.html" TARGET="_top">èªè¨¼</A>
+</TH>
+<TD>
+ディレクトリã«ãƒ­ã‚°ã‚¤ãƒ³ã¾ãŸã¯ãƒ­ã‚°ã‚¢ã‚¦ãƒˆã™ã‚‹ã«ã¯èªè¨¼ç”»é¢ã‚’使用ã—ã¾ã™ã€‚ ディレクトリã®å¤‰æ›´ã¾ãŸã¯ã‚¨ãƒ³ãƒˆãƒªã®è¿½åŠ ã‚’è¡Œã†å‰ã«ã¯èªè¨¼ãŒå¿…è¦ã§ã™ã€‚ システム管ç†è€…ãŒç¾©å‹™ä»˜ã‘ã¦ã„ã‚‹å ´åˆã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªæ¤œç´¢ã®å‰ã«ã‚‚èªè¨¼ãŒå¿…è¦ãªå ´åˆãŒã‚ã‚Šã¾ã™ã€‚
+</TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML>
+
+
diff --git a/ldap/clients/dsgw/html/ja/index.html b/ldap/clients/dsgw/html/ja/index.html
new file mode 100644
index 00000000..2b7ad78d
--- /dev/null
+++ b/ldap/clients/dsgw/html/ja/index.html
@@ -0,0 +1,20 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Netscape Directory Server Gateway</TITLE>
+</HEAD>
+<FRAMESET ROWS=100,*>
+ <FRAME SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=maintitle.html" NAME="buttonBarFrame" NORESIZE
+ SCROLLING="no">
+ <FRAME SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=greeting.html" NAME="greetingFrame" NORESIZE>
+</FRAMESET>
+<NOFRAMES>
+<H3>フレーム機能をサãƒãƒ¼ãƒˆã™ã‚‹ãƒ–ラウザãŒå¿…è¦ã§ã™</H3>
+Netscape Directory Server Gatewayを使用ã™ã‚‹ã«ã¯ã€Netscape Navigatorパージョン3以é™ã®ã‚ˆã†ãªHTMLフォームã¨JavaScriptをサãƒãƒ¼ãƒˆã™ã‚‹ãƒ–ラウザãŒå¿…è¦ã§ã™ã€‚Navigatorã®å…¥æ‰‹æ–¹æ³•ã«ã¤ã„ã¦ã¯<A HREF="http://home.netscape.com">Netscapeã®ãƒ›ãƒ¼ãƒ ãƒšãƒ¼ã‚¸</A>ã‚’ã”覧ãã ã•ã„。
+</NOFRAMES>
+</HTML>
diff --git a/ldap/clients/dsgw/html/ja/index1.gif b/ldap/clients/dsgw/html/ja/index1.gif
new file mode 100644
index 00000000..514f57ed
--- /dev/null
+++ b/ldap/clients/dsgw/html/ja/index1.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/ja/maintitle.html b/ldap/clients/dsgw/html/ja/maintitle.html
new file mode 100644
index 00000000..4e10147c
--- /dev/null
+++ b/ldap/clients/dsgw/html/ja/maintitle.html
@@ -0,0 +1,37 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Netscape Directory Server</TITLE>
+</HEAD>
+
+<BODY BGCOLOR="#ffffff" TEXT="#000000">
+
+<IMG SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=title.gif" HEIGHT=40 WIDTH=530 BORDER="0"
+ ALT="Netscape Directory Server"><BR>
+
+<!-- note: do not include any newlines or other whitespace between the tags -->
+<!-- below that enclose images because this leads to blank pixels -->
+<!-- between them (which we do not want). -->
+
+<IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=blank.gif" WIDTH=42 HEIGHT=24 BORDER="0"><A
+ HREF="/clients/dsgw/bin/search?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=stsearch_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="標準検索"></A><A
+ HREF="/clients/dsgw/bin/csearch?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=adsearch_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="拡張検索"></A><A
+ HREF="/clients/dsgw/bin/newentry?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=newentry_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="æ–°è¦ã‚¨ãƒ³ãƒˆãƒª"></A><A
+ HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=auth.html" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=authen_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="èªè¨¼"></A>
+
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/html/ja/newentry_off.gif b/ldap/clients/dsgw/html/ja/newentry_off.gif
new file mode 100644
index 00000000..cb8553d4
--- /dev/null
+++ b/ldap/clients/dsgw/html/ja/newentry_off.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/ja/newentry_on.gif b/ldap/clients/dsgw/html/ja/newentry_on.gif
new file mode 100644
index 00000000..c8ca4505
--- /dev/null
+++ b/ldap/clients/dsgw/html/ja/newentry_on.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/ja/newentrytitle.html b/ldap/clients/dsgw/html/ja/newentrytitle.html
new file mode 100644
index 00000000..8f215293
--- /dev/null
+++ b/ldap/clients/dsgw/html/ja/newentrytitle.html
@@ -0,0 +1,37 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Netscape Directory Server</TITLE>
+</HEAD>
+
+<BODY BGCOLOR="#ffffff" TEXT="#000000">
+
+<IMG SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=title.gif" HEIGHT=40 WIDTH=530 BORDER="0"
+ ALT="Netscape Directory Server"><BR>
+
+<!-- note: do not include any newlines or other whitespace between the tags -->
+<!-- below that enclose images because this leads to blank pixels -->
+<!-- between them (which we do not want). -->
+
+<IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=blank.gif" WIDTH=42 HEIGHT=24 BORDER="0"><A
+ HREF="/clients/dsgw/bin/search?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=stsearch_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="標準検索"></A><A
+ HREF="/clients/dsgw/bin/csearch?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=adsearch_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="拡張検索"></A><A
+ HREF="/clients/dsgw/bin/newentry?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=newentry_on.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="æ–°è¦ã‚¨ãƒ³ãƒˆãƒª"></A><A
+ HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=auth.html" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=authen_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="èªè¨¼"></A>
+
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/html/ja/searchtitle.html b/ldap/clients/dsgw/html/ja/searchtitle.html
new file mode 100644
index 00000000..e06d4b34
--- /dev/null
+++ b/ldap/clients/dsgw/html/ja/searchtitle.html
@@ -0,0 +1,37 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Netscape Directory Server</TITLE>
+</HEAD>
+
+<BODY BGCOLOR="#ffffff" TEXT="#000000">
+
+<IMG SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=title.gif" HEIGHT=40 WIDTH=530 BORDER="0"
+ ALT="Netscape Directory Server"><BR>
+
+<!-- note: do not include any newlines or other whitespace between the tags -->
+<!-- below that enclose images because this leads to blank pixels -->
+<!-- between them (which we do not want). -->
+
+<IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=blank.gif" WIDTH=42 HEIGHT=24 BORDER="0"><A
+ HREF="/clients/dsgw/bin/search?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=stsearch_on.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="標準検索"></A><A
+ HREF="/clients/dsgw/bin/csearch?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=adsearch_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="拡張検索"></A><A
+ HREF="/clients/dsgw/bin/newentry?<!-- GCONTEXT -->" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=newentry_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="æ–°è¦ã‚¨ãƒ³ãƒˆãƒª"></A><A
+ HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=auth.html" TARGET="_top"><IMG
+ SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=authen_off.gif" WIDTH=122 HEIGHT=24 BORDER="0"
+ ALT="èªè¨¼"></A>
+
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/html/ja/stsearch_off.gif b/ldap/clients/dsgw/html/ja/stsearch_off.gif
new file mode 100644
index 00000000..4238e2f6
--- /dev/null
+++ b/ldap/clients/dsgw/html/ja/stsearch_off.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/ja/stsearch_on.gif b/ldap/clients/dsgw/html/ja/stsearch_on.gif
new file mode 100644
index 00000000..b1b77861
--- /dev/null
+++ b/ldap/clients/dsgw/html/ja/stsearch_on.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/ja/title.gif b/ldap/clients/dsgw/html/ja/title.gif
new file mode 100644
index 00000000..155ae7df
--- /dev/null
+++ b/ldap/clients/dsgw/html/ja/title.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/left_bottom.gif b/ldap/clients/dsgw/html/left_bottom.gif
new file mode 100644
index 00000000..bbd159ca
--- /dev/null
+++ b/ldap/clients/dsgw/html/left_bottom.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/left_off.gif b/ldap/clients/dsgw/html/left_off.gif
new file mode 100644
index 00000000..041754a7
--- /dev/null
+++ b/ldap/clients/dsgw/html/left_off.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/left_on.gif b/ldap/clients/dsgw/html/left_on.gif
new file mode 100644
index 00000000..079675ca
--- /dev/null
+++ b/ldap/clients/dsgw/html/left_on.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/maintitle.html b/ldap/clients/dsgw/html/maintitle.html
new file mode 100644
index 00000000..5b5fee78
--- /dev/null
+++ b/ldap/clients/dsgw/html/maintitle.html
@@ -0,0 +1,152 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Netscape Directory Server</TITLE>
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</HEAD>
+
+<body bgcolor="#FFFFFF" marginwidth="0" marginheight="0" leftmargin="0" topmargin="0">
+
+<TABLE width="100%" cellspacing="0" cellpadding="0" border="0" class="bgColor4">
+ <TR>
+ <TD>
+ <table class="bgColor1" border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td colspan="4"><img border="0" height="10" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif">
+ </td>
+ </tr>
+ <tr>
+ <td><img border="0" height="1" width="15" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td><a href="http://www.netscape.com"><img border="0" height="19" width="19" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=netscape.gif"></a></td>
+ <td><img border="0" height="1" width="7" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td nowrap="true" align=left width="100%" class="appName">Netscape Directory Server Gateway</td>
+ </tr>
+ <tr>
+ <td colspan="4"><img border="0" height="12" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif">
+ </td>
+ </tr>
+ </table>
+ <table class="bgColor1" border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td><img border="0" height="1" width="15" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td>
+ <table class="bgRegTab" border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td rowspan="3"><img border="0" height="23" width="7" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=left_off.gif"></td>
+ <td colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td rowspan="3"><img border="0" height="23" width="9" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=right_off.gif"></td>
+ </tr>
+ <tr>
+ <td class="bgRegTabHighlight" colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </tr>
+ <tr>
+ <td><img border="0" height="21" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td nowrap="true"><a class="link6" HREF="/clients/dsgw/bin/search?<!-- GCONTEXT -->"
+ TARGET="_top" onMouseOver="self.status='Standard Search'; return true;"
+ onMouseOut="self.status=''; return true;"
+ TITLE="Standard Search" ALT="Standard Search">Standard Search</a></td>
+ </tr>
+ <tr>
+ <td class="bgColor1" colspan="4"><img border="0" height="1" width="4" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </tr>
+ </table>
+ </td>
+ <td><img border="0" height="1" width="3" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td>
+ <table class="bgRegTab" border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td rowspan="3"><img border="0" height="23" width="7" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=left_off.gif"></td>
+ <td colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td rowspan="3"><img border="0" height="23" width="9" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=right_off.gif"></td>
+ </tr>
+ <tr>
+ <td class="bgRegTabHighlight" colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </tr>
+ <tr>
+ <td><img border="0" height="21" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td nowrap="true"><a class="link6" HREF="/clients/dsgw/bin/csearch?<!-- GCONTEXT -->"
+ TARGET="_top" onMouseOver="self.status='Advanced Search'; return true;"
+ onMouseOut="self.status=''; return true;"
+ TITLE="Advanced Search" ALT="Advanced Search">Advanced Search</a></td>
+ </tr>
+ <tr>
+ <td class="bgColor1" colspan="4"><img border="0" height="1" width="4" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </tr>
+ </table>
+ </td>
+ <td><img border="0" height="1" width="3" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td>
+ <table class="bgRegTab" border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td rowspan="3"><img border="0" height="23" width="7" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=left_off.gif"></td>
+ <td colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td rowspan="3"><img border="0" height="23" width="9" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=right_off.gif"></td>
+ </tr>
+ <tr>
+ <td class="bgRegTabHighlight" colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </tr>
+ <tr>
+ <td><img border="0" height="21" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td nowrap="true"><a class="link6" HREF="/clients/dsgw/bin/newentry?<!-- GCONTEXT -->"
+ TARGET="_top" onMouseOver="self.status='New Entry'; return true;"
+ onMouseOut="self.status=''; return true;"
+ TITLE="New Entry" ALT="New Entry">New Entry</a></td>
+ </tr>
+ <tr>
+ <td class="bgColor1" colspan="4"><img border="0" height="1" width="4" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </tr>
+ </table>
+ </td>
+ <td><img border="0" height="1" width="3" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td>
+ <table class="bgRegTab" border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td rowspan="3"><img border="0" height="23" width="7" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=left_off.gif"></td>
+ <td colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td rowspan="3"><img border="0" height="23" width="9" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=right_off.gif"></td>
+ </tr>
+ <tr>
+ <td class="bgRegTabHighlight" colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </tr>
+ <tr>
+ <td><img border="0" height="21" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td nowrap="true"><a class="link6" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=auth.html"
+ TARGET="_top" onMouseOver="self.status='Authentication'; return true;"
+ onMouseOut="self.status=''; return true;"
+ TITLE="Authentication" ALT="Authentication">Authentication</a></td>
+ </tr>
+ <tr>
+ <td class="bgColor1" colspan="4"><img border="0" height="1" width="4" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </tr>
+ </table>
+ </td>
+
+ <td width="100%"><img border="0" height="1" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </TR>
+ <TR>
+ <TD class="bgRegTab" colspan="9"><IMG border="0" height="1" width="9" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></TD>
+ </TR>
+ </TABLE>
+ <TABLE class="bgAtTab" border="0" cellpadding="0" cellspacing="0" width="100%">
+ <TR>
+ <TD>
+ <IMG border="0" height="43" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif">
+ </TD>
+ </TR>
+ <TR>
+ <TD class="bgRegTab"><IMG border="0" height="1" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></TD>
+ </TR>
+ <TR>
+ <TD class="bgDarkRule"><IMG border="0" height="2" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></TD>
+ </TR>
+ </TABLE>
+ </TD>
+ </TR>
+</TABLE>
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/html/manual/Makefile b/ldap/clients/dsgw/html/manual/Makefile
new file mode 100644
index 00000000..c8fb1a05
--- /dev/null
+++ b/ldap/clients/dsgw/html/manual/Makefile
@@ -0,0 +1,56 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+#
+# Gmakefile for Directory Server Gateway manual files.
+#
+
+LDAP_SRC = ../../../..
+MCOM_ROOT = ../../../../../..
+
+NOSTDSTRIP=true # don't let nsconfig.mak define target strip
+NOSTDCLEAN=true # don't let nsconfig.mak define target clean
+NOSTDDEPEND=true # don't let nsconfig.mak define target depend
+
+include $(MCOM_ROOT)/ldapserver/nsconfig.mk
+include $(LDAP_SRC)/nsldap.mk
+
+include ../../dsgw_include.mk
+
+HTMLDEST = $(DSGW_MAN_RELDIR)
+
+HTML = a.gif add.htm attribua.gif attribut.htm auth.htm \
+ contents.html intro.htm mod.htm n.gif \
+ objclass.htm search.htm t.gif y.gif index.map
+
+BINS=$(addprefix $(HTMLDEST)/,$(HTML))
+
+ifeq ($(ARCH), WINNT)
+CP2=cmd /c 'sh ../../../../cm/nbsp2utf8.sh $< >'
+else
+CP2=sh ../../../../cm/nbsp2utf8.sh $< >
+endif
+
+all: $(HTMLDEST) $(BINS)
+install: $(HTMLDEST) $(BINS)
+
+clean:
+ $(RM) $(BINS)
+
+$(HTMLDEST)/%.map: %.map
+ @-$(RM) $@
+ cp $< $@
+
+$(HTMLDEST)/%.gif: %.gif
+ @-$(RM) $@
+ cp $< $@
+
+$(HTMLDEST)/%: %
+ -@$(RM) $@
+ $(CP2) $@
+
+strip:
+depend:
diff --git a/ldap/clients/dsgw/html/manual/a.gif b/ldap/clients/dsgw/html/manual/a.gif
new file mode 100644
index 00000000..1a19dba4
--- /dev/null
+++ b/ldap/clients/dsgw/html/manual/a.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/manual/add.htm b/ldap/clients/dsgw/html/manual/add.htm
new file mode 100644
index 00000000..8aa9fb7e
--- /dev/null
+++ b/ldap/clients/dsgw/html/manual/add.htm
@@ -0,0 +1,681 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Portions copyright 1999, 2002-2003 Netscape Communications Corporation.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Adding Directory Entries
+</TITLE></HEAD>
+<BODY>
+
+<H1>
+<A NAME="adding"></A>Adding Entries</H1>
+You can add new entries to the directory
+using the Directory Server interface. To add
+entries, your Directory Server administrator must have granted you the right
+to do so. Before you can add an entry, you must <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#userauth">authenticate</A>
+to the Directory Server.
+
+<P>Using the Directory Server interface you can add:
+<UL>
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#person">a person</A></LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#NTperson">an NT person</A></LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#group">a group</A></LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#NTgroup">an NT group</A></LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#ou">an organizational unit</A></LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#dc">a domain</A></LI>
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#o">an organization</A></LI>
+</UL>
+Before you add an entry for the first time, read the <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#guidelines">New
+Entry Guidelines</A> section for important information about the directory
+tree structure and naming conventions.
+<H2>
+<A NAME="guidelines"></A>New Entry Guidelines</H2>
+Before you begin adding entries to the directory, make sure that you understand
+the following directory concepts:
+<UL>
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#tree">directory tree structure</A></LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#DN">distinguished name syntax</A></LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#uniqueDN">unique distinguished names</A></LI>
+</UL>
+
+<H3>
+<A NAME="tree"></A>Directory Tree Structure</H3>
+Data in the directory is arranged in a tree hierarchy. The top of the tree
+is known as the root or suffix. The root entry usually represents the
+organization entry for the directory.
+
+<BLOCKQUOTE><B>Note:</B>
+<P>
+
+Although your directory may contain more than one suffix, the directory
+server interface only allows you to search for, add, and edit entries in
+a single suffix. Make sure that you know which suffix your Directory Server
+interface is supporting before adding new entries.
+</BLOCKQUOTE>
+
+
+<P>Below the root are branches of the tree, which usually represent organizational
+units such as marketing or accounting. Entries for people and resources
+within your organization are usually contained below these organizational
+unit branches within the directory tree structure.
+
+<P>When you add an entry, make sure that an entry representing a branch
+point is created before new entries are created under that branch. For
+example, if you want to place entries in a Marketing subtree and in an
+Accounting subtree, then create the branch point for those subtrees before
+creating entries within the subtrees:
+
+<PRE>          o=Example.com
+          ou=Marketing, o=Example.com
+          ...
+          <I>Marketing subtree entries</I>
+          ...
+          ou=Accounting, o=Example.com
+          ...
+          <I>Accounting subtree entries</I>
+</PRE>
+
+<H3>
+<A NAME="DN"></A>Distinguished Name Syntax</H3>
+An entry is uniquely identified within the Directory Server through the
+use of a distinguished name (DN). A DN identifies the entry by using a
+series of comma-separated attributes and attribute values. The left-most
+value in the DN represents the entry's name, with each subsequent
+attribute representing a branch point above the entry. For example:
+
+<PRE>uid=bjensen, ou=people, o=example.com</PRE>
+
+This DN represents the entry named <I>bjensen</I> in the subdirectory named
+<I>people</I> in the directory named <I>example.com</I>.
+
+<P>When you add a new entry to the Directory Server, you are prompted
+to enter the complete distinguished name.
+<H3><A NAME="uniqueDN"></A>Unique Distinguished Names</H3>
+
+The Directory Server interface does not allow you to create a duplicate
+entry. To avoid naming duplications, use distinguished names that begin
+with the person's user ID (uid) rather than the person's common name (CN).
+Choose user IDs that are readable; that is,
+do not use a random collection of letters and numbers for
+user IDs. If your enterprise already has an email system, one possibility
+would be to use the left-most value of each person's email address as that
+person's user ID. For example, if a person has the email address:
+
+<P>bjensen@example.com
+
+<P>then give that person's directory entry the following DN:
+
+<P>uid=bjensen, o=example.com
+
+<H2><A NAME="person"></A>Adding a Person</H2>
+
+To add a new person entry, do the following:
+<OL>
+<LI>
+Click the New Entry tab.</LI>
+
+<LI>
+Follow the steps outlined in the New Entry form. When you are done
+filling in this form, click Continue. To cancel the operation click
+the Back button in your browser window.</LI>
+
+<LI>
+If you have not authenticated before you attempt to add a new entry, or
+if your authentication has expired, the Directory Server prompts you
+to <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#userauth">authenticate</A> before continuing.</LI>
+
+<LI>
+When you add a person to the directory, a form that
+allows you to edit that person's data is displayed. This form is displayed in
+a new web browser window. You must supply values for the required fields.
+The required fields for a person are:</LI>
+
+<UL type="disc">
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#cn">Full Name</A></LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#surname">Last Name</A></LI>
+</UL>
+
+<LI>
+You can provide values for the optional fields now, or add them later.
+The optional fields for a person are:</LI>
+ 
+<P>
+<CENTER><TABLE BORDER=2 >
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#givenName">First Name</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#telephoneNumber">Phone</A></TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#mail">Email Address</A> </TD>
+</TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#facsimileTelephoneNumber">Fax</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#uid">User ID</A></TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#pager">Pager</A></TD>
+</TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#mobile">Mobile Phone</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#businessCategory">Business Category</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#title">Title</A></TD>
+</TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#ou">Organizational Unit</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#manager">Manager</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#roomNumber">Room Number </A></TD>
+</TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#secretary">Admin </A></TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#departmentNumber">Dept# </A></TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#employeeNumber">Emp#</A> </TD>
+</TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#carLicnese">Car License# </A></TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#postalAddress">Mailing Address </A></TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#description">Description</A> </TD>
+</TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#seeAlso">See Also </A></TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#labeledUri">URL </A></TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#userPassword">Password</A> </TD>
+</TR>
+</TABLE>
+</CENTER>
+<BLOCKQUOTE><B>Note:</B>
+<P>
+You cannot enter values into the Manager, Admin,
+or See Also fields until you have saved the entry. Furthermore, changing uid in the New Entry screen will result in a multi-valued uid with the value selected in the first screen as the naming component.</BLOCKQUOTE>
+
+<LI>
+To cancel the entry creation, close the web browser window containing
+the form. When you are done filling in the form, click the Save New
+Person button at the top of the form.</LI>
+
+<LI>
+After saving the entry, you can <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#addmanager">add values
+to the Manager and Admin fields</A> or <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#addowner">add
+a See Also value</A>.</LI>
+</OL>
+
+<H2>
+<A NAME="NTperson"></A>Adding an NT Person</H2>
+When creating an NT-person entry, make sure that the subtree
+in which you place the entry is the same subtree that the synchronization service
+uses to synchronize entries. If you place an NT-person entry into another
+location, it is not synchronized with the Windows network.
+
+<P>To add a new NT-person entry, do the following:
+<OL>
+<LI>
+Click the New Entry tab.</LI>
+
+<LI>
+Follow the steps outlined in the New Entry form. When you are done
+filling in this form, click Continue. To cancel the operation click
+the Back button in your browser window.</LI>
+
+<LI>
+If you have not authenticated before you attempt to add a new entry, or
+if your authentication has expired, the Directory Server prompts you
+to <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#userauth">authenticate</A> before continuing.</LI>
+
+<LI>
+When you add an NT-person to the directory, a form that allows you to
+edit that person's data is displayed. This form is displayed
+in a new web browser window. You must supply values for the required fields.
+The required fields for an NT-person are:</LI>
+
+<UL type="disc">
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#commonName">Full Name</A></LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#surname">Last Name</A></LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#ntUserDomainId">NT Domain Name</A></LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#uid">NT User ID</A></LI>
+</UL>
+
+<LI>
+You can provide values for the optional fields now, or add them later.
+The optional fields for a person are:</LI>
+
+<P>
+<CENTER><TABLE BORDER=2>
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#givenName">First Name</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#telephoneNumber">Phone </A></TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#mail">Email Address</A> </TD>
+</TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#fax">Fax </A></TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#userPassword">Directory Server Password</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#pager">Pager</A> </TD>
+</TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#mobile">Mobile Phone</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#businessCategory">Business Category</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#title">Title</A> </TD>
+</TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#organizationalUnitName">Organizational Unit</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#manager">Manager</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#roomNumber">Room Number</A> </TD>
+</TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#secretary">Admin </A></TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#departmentNumber">Dept#</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#employeeNumber">Emp#</A> </TD>
+</TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#carLicnese">Car License#</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#postalAddress">Mailing Address</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#description">Description</A> </TD>
+</TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#seeAlso">See Also</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#labeledURI">URL</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#userid">User Id</A></TD>
+</TR>
+</TABLE></CENTER>
+<BLOCKQUOTE><B>Note:</B>
+<P>
+You cannot enter values into the Manager, Admin,
+or See Also fields until you have saved the entry.
+</BLOCKQUOTE>
+
+<LI>
+You can also change the value for the following two options:</LI>
+
+<UL type="disc">
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#NTUserDelete">Delete NT Account if Person deleted</A></LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#NTUserCreateNewAccount">Create New NT Account</A></LI>
+</UL>
+The default value is shown. If you do not change the value,
+the default value is used.
+<LI>
+When you are done filling in the form, click the Save New NT Person
+button at the top of the form. To cancel the entry creation,
+close the web browser window containing the form.</LI>
+
+<LI>
+After saving the entry, you can <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#addmanager">add values
+to the Manager and Admin fields</A> or <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#addowner">add
+a "See Also" value</A>.</LI>
+</OL>
+
+<H2>
+<A NAME="group"></A>Adding a Group</H2>
+To add a new group entry, do the following:
+<OL>
+<LI>
+Click the New Entry tab.</LI>
+
+<LI>
+Follow the steps outlined in the New Entry form. When you are done
+filling in this form, click Continue. To cancel the operation click
+the Back button in your browser window.</LI>
+
+<LI>
+If you have not authenticated before you attempt to add a new entry, or
+if your authentication has expired, the Directory Server prompts you
+to <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#userauth">authenticate</A> before continuing.</LI>
+
+<LI>
+When you add a group to the directory, a form that
+allows you to edit that group's data is displayed. This form is displayed in
+a new web browser window. You must supply a value for the required field
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#cn">Name</A>.</LI>
+
+<LI>
+You can provide a value for the optional <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#description">Description</A>
+field now, or add it later.</LI>
+
+<BLOCKQUOTE><B>Note:</B>
+<P>
+You cannot enter values into the Owner, Group Members,
+or See Also fields until you have saved the entry.</BLOCKQUOTE>
+
+<LI>
+When you are done filling in the form, click the Save New Group button
+at the top of the form.</LI>
+
+<BR>To cancel the entry creation, close the web browser window containing
+the form.
+<LI>
+After you have saved the entry, you can <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#addowner">add
+values for the Owner, Group Member, and See Also fields</A>.</LI>
+</OL>
+
+<H2>
+<A NAME="NTgroup"></A>Adding an NT Group</H2>
+To add a new NT group entry, do the following:
+<OL>
+<LI>
+Click the New Entry tab.</LI>
+
+<LI>
+Follow the steps outlined in the New Entry form. When you are done
+filling in this form, click Continue. To cancel the operation click
+the Back button in your browser window.</LI>
+
+<LI>
+If you have not authenticated before you attempt to add a new entry, or
+if your authentication has expired, the Directory Server prompts you
+to <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#userauth">authenticate</A> before continuing.</LI>
+
+<LI>
+When you add an NT-group to the directory, a form
+that allows you to edit that group's data is displayed. This form is contained
+in a new web browser window. You must supply a value for the required fields.
+The required fields for an NT-group are:</LI>
+
+<UL type="disc">
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#cn">Name</A></LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#ntGroupId">NT Group Name</A></LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#ntGroupType">NT Group Type</A></LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#ntGroupDomainId">NT Group Domain</A></LI>
+</UL>
+
+<LI>
+You can provide values for the optional fields now, or add them later.
+The optional fields for an NT group are:</LI>
+<P>
+<CENTER><TABLE BORDER=2>
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#description">Description</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#owner">Owner</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#l">Locale</A></TD>
+</TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#uniqueMember">NT Group Members</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#seeAlso">See Also</A></TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#ou">Organizational Unit</A></TD>
+</TR>
+</TABLE>
+</CENTER>
+<P>
+<BLOCKQUOTE><B>Note:</B>
+<P>
+You cannot enter values into the Owner, NT Group Members,
+or See Also fields until you have saved the entry.</BLOCKQUOTE>
+
+<LI>
+You may also change the value for the <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#NTGroupDelete">Delete NT Group if Group Deleted</A> option.</LI>
+
+<LI>
+When you are done filling in the form, click the Save New Group button
+at the top of the form.</LI>
+
+<BR>To cancel the entry creation, close the web browser window containing
+the form.
+<LI>
+After you save the entry, you can <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#addowner">add values
+for the NT Group Members, Owner, and See Also fields</A>.</LI>
+</OL>
+
+<H2>
+<A NAME="ou"></A>Adding an Organizational Unit</H2>
+To add a new organizational unit entry, do the following:
+<OL>
+<LI>
+Click the New Entry tab.</LI>
+
+<LI>
+Follow the steps outlined in the New Entry form. When you are done
+filling in this form, click Continue. To cancel the operation click
+the "Back" button in your browser window.</LI>
+
+<LI>
+If you have not authenticated before you attempt to add a new entry, or
+if your authentication has expired, the Directory Server prompts you
+to <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#userauth">authenticate</A> before continuing.</LI>
+
+<LI>
+When you add an organizational unit to the directory, a form that
+allows you to edit that organization's data is displayed. This
+form is displayed in a new web browser window. You must supply
+a value for the required field, <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#ou">Unit Name</A>.</LI>
+
+<LI>
+You can provide values for the optional fields now, or add them later.
+The optional fields for an organizational unit are:</LI>
+<P>
+<CENTER><TABLE BORDER=2 >
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#description">Description</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#telephoneNumber">Phone</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#businessCategory">Business Category</A> </TD>
+</TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#fax">Fax</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#localityName">Location</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#postalAddress">Mailing Address</A> </TD>
+</TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#seeAlso">See Also</A> </TD>
+
+<TD> </TD>
+
+<TD> </TD>
+</TR>
+</TABLE></CENTER>
+<P>
+<LI>
+When you are done filling in the form, click the Save New Org. Unit
+button at the top of the form. To cancel the entry creation, close
+the web browser window containing the form.</LI>
+</OL>
+
+<H2><A NAME="dc"></A>Adding a Domain Component</H2>
+
+To add a new domain entry, do the following:
+<OL>
+<LI>
+Click the New Entry tab.</LI>
+
+<LI>
+Follow the steps outlined in the New Entry form. When you are done
+filling in this form, click Continue. To cancel the operation click
+the Back button in your browser window.</LI>
+
+<LI>
+If you have not authenticated before you attempt to add a new entry, or
+if your authentication has expired, the Directory Server prompts you
+to <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#userauth">authenticate</A> before continuing.</LI>
+
+<LI>
+You must supply a value for the required field, <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#dc">dc</A>.</LI>
+
+<LI>
+You can provide values for the optional fields now, or add them later.
+The optional fields for a domain are:</LI>
+<P>
+<CENTER><TABLE BORDER=2>
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#description">Description</A></TD>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#telephoneNumber">Phone</A></TD>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#businessCategory">Business Category</A></TD></TR>
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#fax">Fax</A></TD>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#localityName">Location</A></TD>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#postalAddress">Mailing Address</A></TD></TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#seeAlso">See Also</A></TD>
+<TD>&nbsp;</TD>
+<TD>&nbsp;</TD></TR>
+</TABLE>
+</CENTER>
+<P>
+<LI>
+When you are done filling in the form, click the Save New dc button
+at the top of the form. To cancel the entry creation, close the
+web browser window containing the form.</LI>
+</OL>
+
+<H2><A NAME="o"></A>Adding an Organization</H2>
+
+To add a new organization entry, do the following:
+<OL>
+<LI>
+Click the New Entry tab.</LI>
+
+<LI>
+Follow the steps outlined in the New Entry form. When you are done
+filling in this form, click Continue. To cancel the operation click
+the Back button in your browser window.</LI>
+
+<LI>
+If you have not authenticated before you attempt to add a new entry, or
+if your authentication has expired, the Directory Server prompts you
+to <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#userauth">authenticate</A> before continuing.</LI>
+
+<LI>
+Adding an organization is supported only when you initially populate your
+directory tree. The organization you add must match the organization
+you specified in the Database Subtree field when you installed your
+Directory Server. For example, if you specified a value of:</LI>
+
+<PRE>o=Example.com</PRE>
+
+to the Database Subtree field, then you must specify a value of:
+
+<PRE>o=Example.com</PRE>
+
+when you add the organization. The Directory Server checks the add operation to ensure that the directory entry can
+exist with the database subtree. Any value other than:
+
+<PRE>o=Example.com</PRE>
+
+clearly cannot reside under:
+
+<PRE>o=Example.com</PRE>
+
+As a result, the Directory Server rejects the operation.
+<LI>
+You must supply a value for the required field, <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#organizationName">Organization Name</A>.</LI>
+
+<LI>
+You can provide values for the optional fields now, or add them later.
+The optional fields for an organization are:</LI>
+<P>
+<CENTER><TABLE BORDER=2>
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#description">Description</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#telephoneNumber">Phone</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#businessCategory">Business Category</A> </TD>
+</TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#fax">Fax</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#localityName">Location</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#postalAddress">Mailing Address</A> </TD>
+</TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#seeAlso">See Also</A> </TD>
+
+<TD> </TD>
+
+<TD> </TD>
+</TR>
+</TABLE>
+</CENTER>
+<P>
+<LI>
+When you are done filling in the form, click the Save New Org. button
+at the top of the form. To cancel the entry creation, close the
+web browser window containing the form.</LI>
+</OL>
+
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/html/manual/attribua.gif b/ldap/clients/dsgw/html/manual/attribua.gif
new file mode 100644
index 00000000..8ec4a9eb
--- /dev/null
+++ b/ldap/clients/dsgw/html/manual/attribua.gif
@@ -0,0 +1,103 @@
+%-12345X@PJL SET RESOLUTION = 600
+@PJL ENTER LANGUAGE=POSTSCRIPT
+%!PS-Adobe-3.0
+%%Title: Untitled Document
+%%Creator: Windows NT 3.5
+%%CreationDate: 12:32 11/5/1996
+%%Pages: (atend)
+%%BoundingBox: 12 12 599 780
+%%EndComments
+%%BeginProcSet: NTPSOct94
+% Copyright (c) 1991 - 1994 Microsoft Corporation
+/NTPSOct94 100 dict dup begin
+/bd{bind def}bind def/ld{load def}bd/ed{exch def}bd/a/currentpoint ld
+/c{curveto}bd/d/dup ld/e/eofill ld/f/fill ld/tr/translate ld
+/g/setgray ld/gr/grestore ld/gs/gsave ld/j/setlinejoin ld
+/L{lineto}bd/M{moveto}bd/n/newpath ld/cp/closepath ld
+/rlt/rlineto ld/rm/rmoveto ld/sl/setlinewidth ld/sd/setdash ld
+/r/setrgbcolor ld/s/stroke ld/t/show ld/aw/awidthshow ld/im/imagemask ld
+/SF{findfont exch scalefont setfont}bd/SM{cmtx setmatrix}bd
+/MF{findfont exch makefont setfont}bd/CM{/cmtx matrix currentmatrix def}bd
+/B {M exch dup 0 rlt exch 0 exch rlt neg 0 rlt} bd
+/CB {B cp eoclip} bd
+/EA {1 index 0 /G0 put 4 string 1 1 4 -1 roll
+ {3 copy neg exch cvs dup 0 71 put cvn 3 -1 roll exch put} for pop} bd
+ end def
+%%EndProcSet
+%%EndProlog
+%%BeginSetup
+mark {
+%%BeginFeature: *PageSize Letter
+ <</DeferredMediaSelection true /PageSize [612 792] /ImagingBBox null>> setpagedevice
+%%EndFeature
+} stopped cleartomark
+/#copies 1 def
+%%EndSetup
+NTPSOct94 begin
+%%Page: 1 1
+/PageSV save def
+12 780 translate 72 600 div dup neg scale
+0 0 transform .25 add round .25 sub exch .25 add round .25 sub exch itransform translate
+% Copyright (c) 1986-1995 Frame Technology Corporation.
+/FMcmyk 100 dict def
+/FmBD{bind def}bind def
+/FmLD{load def}FmBD
+/FMc {
+ FMcmyk length FMcmyk maxlength ge { /FMcmyk FMcmyk dup length dup add dict copy def } if
+ 4 array astore 4 1 roll 8 bitshift add 8 bitshift add exch FMcmyk 3 1 roll put
+}FmBD
+/setcmykcolor where { pop
+ /sc where { pop /sc load 0 get /scignore eq {
+ /FMsc /sc FmLD
+ /sc { 3 copy 8 bitshift add 8 bitshift add FMcmyk 1 index known
+ { FMcmyk exch get aload pop setcmykcolor pop pop pop } { pop FMsc } ifelse
+ }FmBD
+ } if } if
+} if
+mark { /S load
+ dup 0 get /PenW eq { dup 1 get /sl load eq {
+ dup 0 { PenW .75 sub sl } bind put 1 /exec load put
+ } if } if
+} stopped cleartomark
+/FmX matrix defaultmatrix def
+/FmDC {transform FmX itransform cvi exch cvi exch} def
+/FmBx { dup 3 index lt {3 1 roll exch} if
+ 1 index 4 index lt {4 -1 roll 3 1 roll exch 4 1 roll} if
+}FmBD
+/FmPD/cleartomark FmLD
+/FmPD2/cleartomark FmLD
+/FmPT/pop FmLD
+/FmPA{pop pop pop}FmBD
+systemdict /pdfmark known {
+ /FmPD/pdfmark FmLD
+ currentdistillerparams /CoreDistVersion get 2000 ge {
+ /FmPD2/pdfmark FmLD
+ /FmPA { mark exch /Dest exch 5 3 roll
+ /View [ /XYZ null 6 -2 roll FmDC exch pop null] /DEST FmPD
+ }FmBD
+ } if
+} if
+0 0 0 0.0 0.0 0.0 1.0 FMc
+gs
+gs
+gs
+/s {} def /e {} def
+n
+-217 183 267 6167 B
+cp
+s
+/s /stroke ld /e /eofill ld
+eoclip
+[250 0 0 -250 0 0] /Times-Bold MF
+50 6333 M
+(T)t
+gr
+gr
+gr
+showpage
+PageSV restore
+%%Trailer
+end
+%%Pages: 1
+%%EOF
+%-12345X \ No newline at end of file
diff --git a/ldap/clients/dsgw/html/manual/attribut.htm b/ldap/clients/dsgw/html/manual/attribut.htm
new file mode 100644
index 00000000..da1bc9e8
--- /dev/null
+++ b/ldap/clients/dsgw/html/manual/attribut.htm
@@ -0,0 +1,6712 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Portions copyright 1999, 2002-2003 Netscape Communications Corporation.
+ All rights reserved.
+ -->
+<A NAME="996822">
+<P>
+</A><A NAME="997293">
+<P>
+</A><A NAME="1002619">
+<H1>Attributes
+</H1>
+</A>
+
+<A NAME="996830">
+<br>
+This appendix includes information on attribute definitions. Most of the schema attributes used in the Directory Server are part of the standard LDAP protocol, which is in turn based on the X.500 standard. However, some of the Directory Server's attributes are extensions created by Netscape for use with its implementation of LDAP. If an attribute was created by Netscape and is not part of the standard LDAP schema, a note is made in the description of that object or attribute.<P></A>
+
+<A NAME="1071459">
+For information on what the Directory Server schema is and what it is used for, refer to the <i>Netscape Directory Server Deployment Guide</i>.<P></A>
+
+<A NAME="1078428">
+For information on the object classes in the schema, see <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1002619">Appendix A, "Object Classes."</a><P></A>
+
+
+<A NAME="1020843"> 
+</A>
+<A NAME="Attribute Definitions">
+<H2> Attribute Definitions</H2>
+</A>
+
+<A NAME="1004519">
+The following define the attributes used to describe an entry in the directory tree. To determine which attributes are required and allowed for each object class, see <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1002619">Appendix A, "Object Classes."</a><P></A>
+
+<A NAME="1004699">
+Each attribute has a corresponding syntax definition that describes the nature of the attribute information. This syntax is important only when the Directory Server is performing sorting and pattern matching; there is nothing to otherwise prevent you from, for example, placing a telephone number on an attribute that expects a distinguished name.<P></A>
+
+<A NAME="1067002">
+The possible attribute syntaxes are:<P></A>
+<ul><A NAME="1004700">
+<LI>bin -- binary.<P>
+</A>
+<A NAME="1004701">
+<LI>ces -- case exact string (case must be matched during comparison).<P>
+</A>
+<A NAME="1004702">
+<LI>cis -- case ignore string (case is ignored during comparison).<P>
+</A>
+<A NAME="1004703">
+<LI>tel -- telephone number (identical to cis, but blanks and dashes (-) are ignored during comparisons).<P>
+</A>
+<A NAME="1004704">
+<LI>dn -- distinguished name.<P>
+</A>
+<A NAME="1243260">
+<LI>int -- integer.<P>
+</A>
+<A NAME="1251525">
+<LI>operational -- for internal use only. Operational attributes are not displayed in search results.<P>
+</A>
+</ul>
+<A NAME="1201644">
+The base OID for the Netscape Directory Server is:<P></A>
+<PRE><A NAME="1255332">
+2.16.840.1.113730.3
+</A>
+</PRE>
+<A NAME="1257527">
+All Netscape defined attributes have the base:<P></A>
+<PRE><A NAME="1257537">
+2.16.840.1.113730.3.1
+</A>
+</PRE><A NAME="1255098">
+<A NAME="abstract">
+<B>abstract</B>
+</a></a>
+<P>
+
+
+<A NAME="1201645">
+Provides an abstract of a document entry.<P></A>
+
+<A NAME="1272899">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1104078">
+<A NAME="accountUnlockTime">
+<B>accountUnlockTime</B>
+</a></a>
+<P>
+
+
+<A NAME="1154996">
+Defines, in seconds, the time until a user's account is unlocked after a specified number of failed attempts to bind to the directory.<P></A>
+<PRE><A NAME="1154997">
+ accountUnlockTime: 600
+</A>
+</PRE>
+<A NAME="1259967">
+OID: <code>2.16.840.1.113730.3.1.95</code><P></A>
+
+<A NAME="1104080">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis </a><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1251525">operational</a><P></A>
+<A NAME="1171292">
+<A NAME="aci">
+<B>aci</B>
+</a></a>
+<P>
+
+
+<A NAME="1171293">
+Stores the Directory Server access control information for this entry. For example:<P></A>
+<PRE><A NAME="1171294">
+ aci: (target="ldap:///<I>o=Example.com</I>")(version 3.0;<br> acl "anonymous access"; allow (read, search, compare)<br> userdn=ldap:///self;)
+</A>
+</PRE>
+<A NAME="1258362">
+OID: <code>2.16.840.1.113730.3.1.55</code><P></A>
+
+<A NAME="1171296">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">bin</a><P></A>
+
+<A NAME="1171297">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1032956">
+<A NAME="administratorContactInfo">
+<B>administratorContactInfo</B>
+</a></a>
+<P>
+
+
+<A NAME="1032957">
+Provides a URL to information about the person responsible for administering the Netscape server. This attribute is a Netscape extension used by the <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#">netscapeServer</a> object class. Normally this attribute and this attribute value is written to the directory when a Netscape server is initially installed. For example:<P></A>
+<PRE><A NAME="1032959">
+ administratorContactInfo: ldap://<I>uid=ssarette, o=Example.com</I>
+</A>
+</PRE>
+<A NAME="1259219">
+OID: <code>2.16.840.1.113730.3.1.74</code><P></A>
+
+<A NAME="1098446">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1098448">
+<A NAME="adminUrl">
+<B>adminUrl</B>
+</a></a>
+<P>
+
+
+<A NAME="1098449">
+Provides the URL to the administration server through which you can manage the Netscape server. This attribute is a Netscape extension used by the <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#">netscapeServer</a> object class. Normally this attribute and this attribute value is written to the directory when a Netscape server is initially installed. For example:<P></A>
+<PRE><A NAME="1033050">
+ adminUrl: http://twain.example.com:2468
+</A>
+</PRE>
+<A NAME="1259252">
+OID: <code>2.16.840.1.113730.3.1.75</code><P></A>
+
+<A NAME="1033052">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004701">ces</a><P></A>
+<A NAME="1201653">
+<A NAME="aliasedObjectName">
+<B>aliasedObjectName</B>
+</a></a>
+<P>
+
+
+<A NAME="1206908">
+Used by the Directory Server to identify alias entries in the directory. The attribute contains the distinguished name of the entry for which it is an alias. For example:<P></A>
+<PRE><A NAME="1206909">
+ aliasedObjectName:<I> cn=jdoe, o=Example.com</I>
+</A>
+</PRE>
+<A NAME="1266950">
+OID: <code>2.5.4.1</code><P></A>
+
+<A NAME="1206911">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1100403">dn</a><P></A>
+<A NAME="1243116">
+<A NAME="altServer">
+<B>altServer</B>
+</a></a>
+<P>
+
+
+<A NAME="1243117">
+Undefined.<P></A>
+
+<A NAME="1263098">
+OID: <code>1.3.6.1.4.1.1466.101.120.6</code><P></A>
+
+<A NAME="1243120">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004701">ces</a><P></A>
+<A NAME="1201668">
+<A NAME="associatedDomain">
+<B>associatedDomain</B>
+</a></a>
+<P>
+
+
+<A NAME="1219687">
+Specifies a DNS domain associated with an object in the directory tree. For example, the entry in the directory tree with a distinguished name "C=US, O=Example Corporation" would have an associated domain of "AC.US. Note that all domains should be represented in rfc822 order. For example:<P></A>
+<PRE><A NAME="1201670">
+ associatedDomain: US
+</A>
+</PRE>
+<A NAME="1260172">
+OID: <code>0.9.2342.19200300.100.1.37</code><P></A>
+
+<A NAME="1201672">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1201675">
+<A NAME="associatedName">
+<B>associatedName</B>
+</a></a>
+<P>
+
+
+<A NAME="1218672">
+Specifies an entry in the organizational directory tree associated with a DNS domain. For example:<P></A>
+<PRE><A NAME="1201677">
+ associatedName:<I> c=us</I>
+</A>
+</PRE>
+<A NAME="1266572">
+OID: <code>0.9.2342.19200300.100.1.38</code><P></A>
+
+<A NAME="1201679">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1100403">dn</a><P></A>
+<A NAME="1290840">
+<A NAME="attributeTypes">
+<B>attributeTypes</B>
+</a></a>
+<P>
+
+
+<A NAME="1295396">
+Operational, multi-valued attribute that specifies the attribute types used within a subschema. Each value describes a single matching rule. <P></A>
+
+<A NAME="1263041">
+OID: <code>2.5.21.5</code><P></A>
+
+<A NAME="1242648">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis </a><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1251525">operational</a><P></A>
+<A NAME="1201684">
+<A NAME="audio">
+<B>audio</B>
+</a></a>
+<P>
+
+
+<A NAME="1209771">
+Contains a sound file in binary format. The attribute uses a u-law encoded sound file. For example:<P></A>
+<PRE><A NAME="1286498">
+ audio: AAAAAA==
+</A>
+</PRE>
+<A NAME="1266120">
+OID: <code>0.9.2342.19200300.100.1.55</code><P></A>
+
+<A NAME="1201686">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">Syntax: </a>bin<P></A>
+<A NAME="1201689">
+<A NAME="authorCn">
+<B>authorCn</B>
+</a></a>
+<P>
+
+
+<A NAME="1201690">
+Contains the common name of the author of a document entry. For example:<P></A>
+<PRE><A NAME="1201691">
+ authorCn: Kacey
+</A>
+</PRE>
+<A NAME="1272919">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1201696">
+<A NAME="authorSn">
+<B>authorSn</B>
+</a></a>
+<P>
+
+
+<A NAME="1201697">
+Contains the surname of the author of a document entry. For example:<P></A>
+<PRE><A NAME="1201698">
+ authorSn: Doe
+</A>
+</PRE>
+<A NAME="1201700">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1207170">
+<A NAME="authorityRevocationList">
+<B>authorityRevocationList</B>
+</a></a>
+<P>
+
+
+<A NAME="1207172">
+Contains a text-encoded list of CA certificates that have been revoked. Not recommended; use authorityRevocationList;binary instead.<P></A>
+
+<A NAME="1207174">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">Syntax: </a>bin<P></A>
+<A NAME="1207178">
+<A NAME="authorityRevocationList;binary">
+<B>authorityRevocationList;binary</B>
+</a></a>
+<P>
+
+
+<A NAME="1207180">
+Contains a binary list of certification authority certificates that have been revoked. For example:<P></A>
+<PRE><A NAME="1286569">
+ authorityRevocationList: AAAAAA==
+</A>
+</PRE>
+<A NAME="1277412">
+OID: <code>2.5.4.38</code><P></A>
+
+<A NAME="1207182">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">Syntax: </a>bin<P></A>
+<A NAME="1201711">
+<A NAME="buildingName">
+<B>buildingName</B>
+</a></a>
+<P>
+
+
+<A NAME="1201712">
+Defines the building name associated with the entry. For example:<P></A>
+<PRE><A NAME="1201713">
+ buildingName: 14
+</A>
+</PRE>
+<A NAME="1266616">
+OID: <code>0.9.2342.19200300.100.1.48</code><P></A>
+
+<A NAME="1201715">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1171367">
+<A NAME="businessCategory">
+<B>businessCategory</B>
+</a></a>
+<P>
+
+
+<A NAME="1171368">
+Identifies the type of business in which the entry is engaged. This should be a broad generalization such as is made at the corporate division level. <P></A>
+
+<A NAME="1171369">
+For example:<P></A>
+<PRE><A NAME="1171370">
+ businessCategory: Engineering
+</A>
+</PRE>
+<A NAME="1267233">
+OID: <code>2.5.4.15</code><P></A>
+
+<A NAME="1208474">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1240535">
+<A NAME="c">
+<B>c</B>
+</a></a>
+<P>
+
+
+<A NAME="1240536">
+Contains the two-character code representing country names, as defined by ISO, in the directory. The two-character code for Ireland is used in the following example:<P></A>
+<PRE><A NAME="1240537">
+ countryName: IE
+</A>
+</PRE>
+<A NAME="1240538">
+or:<P></A>
+<PRE><A NAME="1240539">
+ c: IE
+</A>
+</PRE>
+<A NAME="1240541">
+Abbreviation: c<P></A>
+
+<A NAME="1267046">
+OID: <code>2.5.4.6</code><P></A>
+
+<A NAME="1240543">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1208564">
+<A NAME="cACertificate">
+<B>cACertificate</B>
+</a></a>
+<P>
+
+
+<A NAME="1208566">
+Contains a text-encoded version of the CA's certificate. Not recommended; use cACertificate;binary instead.<P></A>
+
+<A NAME="1208568">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">bin</a><P></A>
+<A NAME="1208584">
+<A NAME="cACertificate;binary">
+<B>cACertificate;binary</B>
+</a></a>
+<P>
+
+
+<A NAME="1208586">
+Contains the CA's certificate in binary form. For example:<P></A>
+<PRE><A NAME="1268025">
+ cACertificate;binary: AAAAAA==
+</A>
+</PRE>
+<A NAME="1287133">
+OID: <code>2.5.4.37</code><P></A>
+
+<A NAME="1208588">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">bin</a><P></A>
+<A NAME="1003044">
+<A NAME="carLicense">
+<B>carLicense</B>
+</a></a>
+<P>
+
+
+<A NAME="1003045">
+Identifies the entry's automobile license plate number. For example:<P></A>
+<PRE><A NAME="1003256">
+ carLicense: 6ABC246
+</A>
+</PRE>
+<A NAME="1003274">
+OID: <code>2.16.840.1.113730.3.1.1</code><P></A>
+
+<A NAME="1252881">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1007950">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1208746">
+<A NAME="certificateRevocationList">
+<B>certificateRevocationList</B>
+</a></a>
+<P>
+
+
+<A NAME="1208748">
+Contains a text-encoded version of a list of revoked user certificates. Not recommended; use certificateRevocationList;binary instead.<P></A>
+
+<A NAME="1277475">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">bin</a><P></A>
+<A NAME="1208727">
+<A NAME="certificateRevocationList;binary">
+<B>certificateRevocationList;binary</B>
+</a></a>
+<P>
+
+
+<A NAME="1208729">
+Contains a list, in binary form, of revoked user certificates. For example:<P></A>
+<PRE><A NAME="1287257">
+ certificateRevocationList;binary: AAAAAA==
+</A>
+</PRE>
+<A NAME="1277465">
+OID: <code>2.5.4.39</code><P></A>
+
+<A NAME="1208731">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">bin</a><P></A>
+<A NAME="1103361">
+<A NAME="changeLog">
+<B>changeLog</B>
+</a></a>
+<P>
+
+
+<A NAME="1251549">
+Contains the distinguished name of the container object that holds change log records for the Directory Server. For example:<P></A>
+<PRE><A NAME="1251550">
+changeLog: cn=changelog
+</A>
+</PRE>
+<A NAME="1103363">
+OID: <code>2.16.840.1.113730.3.1.35</code><P></A>
+
+<A NAME="1277486">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1100403">dn</a><P></A>
+<A NAME="1171397">
+<A NAME="changeLogMaximumAge">
+<B>changeLogMaximumAge</B>
+</a></a>
+<P>
+
+
+<A NAME="1171398">
+Identifies the maximum age in seconds for entries in the change log. Entries are discarded once they become older than the maximum age specified. For example:<P></A>
+<PRE><A NAME="1171399">
+ changeLogMaximumAge: 86000
+</A>
+</PRE>
+<A NAME="1171401">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1171402">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1171405">
+<A NAME="changeLogMaximumSize">
+<B>changeLogMaximumSize</B>
+</a></a>
+<P>
+
+
+<A NAME="1171406">
+Identifies the maximum size in bytes for the change log file. Entries are discarded from this file once it reaches the maximum size. For example:<P></A>
+<PRE><A NAME="1171407">
+ changeLogMaximumSize: 2400000
+</A>
+</PRE>
+<A NAME="1171409">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1171410">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1094798">
+<A NAME="changeNumber">
+<B>changeNumber</B>
+</a></a>
+<P>
+
+
+<A NAME="1094841">
+Contains the change number of the entry as assigned by the supplier server. Must be the string representation of an integer. <P></A>
+
+<A NAME="1259352">
+OID: <code>2.16.840.1.113730.3.1.5</code><P></A>
+
+<A NAME="1095210">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1243260">int</a><P></A>
+<A NAME="1095277">
+<A NAME="changes">
+<B>changes</B>
+</a></a>
+<P>
+
+
+<A NAME="1095278">
+Reserved for future use. For example:<P></A>
+<PRE><A NAME="1251562">
+ changes: AAAAAA==
+</A>
+</PRE>
+<A NAME="1257834">
+OID: <code>2.16.840.1.113730.3.1.8</code><P></A>
+
+<A NAME="1095281">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">bin</a><P></A>
+<A NAME="1095285">
+<A NAME="changeTime">
+<B>changeTime</B>
+</a></a>
+<P>
+
+
+<A NAME="1095286">
+Undefined. <P></A>
+
+<A NAME="1259330">
+OID: <code>2.16.840.1.113730.3.1.77</code><P></A>
+
+<A NAME="1095289">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1094968">
+<A NAME="changeType">
+<B>changeType</B>
+</a></a>
+<P>
+
+
+<A NAME="1094969">
+Describes the type of change performed on an entry. The value for changeType can be add, delete, modify, or modrdn. For example:<P></A>
+<PRE><A NAME="1094970">
+ changeType: modify
+</A>
+</PRE>
+<A NAME="1257814">
+OID: <code>2.16.840.1.113730.3.1.7</code><P></A>
+
+<A NAME="1094972">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1103818">
+<A NAME="cirBeginORC">
+<B>cirBeginORC</B>
+</a></a>
+<P>
+
+
+<A NAME="1149985">
+Defines whether or not the consumer server should erase the contents of its directory before replication. If no value exists for this attribute, the consumer will not erase the contents. Two values are acceptable for this attribute; start and stop. Start tells the consumer server to erase the directory, and stop tells the consumer server to abort the operation. For example:<P></A>
+<PRE><A NAME="1151379">
+ cirBeginORC: start
+</A>
+</PRE>
+<A NAME="1259811">
+OID: <code>2.16.840.1.113730.3.1.90</code><P></A>
+
+<A NAME="1103820">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1101818">
+<A NAME="cirBindCredentials">
+<B>cirBindCredentials</B>
+</a></a>
+<P>
+
+
+<A NAME="1101820">
+Contains the credentials used by the consumer in consumer initiated replication (CIR) to connect to the supplier server.<P></A>
+
+<A NAME="1259645">
+OID: <code>2.16.840.1.113730.3.1.85</code><P></A>
+
+<A NAME="1101823">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004701">ces</a><P></A>
+<A NAME="1101379">
+<A NAME="cirBindDn">
+<B>cirBindDn</B>
+</a></a>
+<P>
+
+
+<A NAME="1101380">
+Contains the distinguished name used by the consumer in consumer initiated replication (CIR) when binding to the supplier server. <P></A>
+
+<A NAME="1259534">
+OID: <code>2.16.840.1.113730.3.1.82</code><P></A>
+
+<A NAME="1101383">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1100403">dn</a><P></A>
+<A NAME="1101250">
+<A NAME="cirHost">
+<B>cirHost</B>
+</a></a>
+<P>
+
+
+<A NAME="1101251">
+Undefined. <P></A>
+
+<A NAME="1259486">
+OID: <code>2.16.840.1.113730.3.1.80</code><P></A>
+
+<A NAME="1101254">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1101860">
+<A NAME="cirLastUpdateApplied">
+<B>cirLastUpdateApplied</B>
+</a></a>
+<P>
+
+
+<A NAME="1122710">
+Contains the last date and time that synchronization occurred between the consumer and supplier servers. <P></A>
+
+<A NAME="1259652">
+OID: <code>2.16.840.1.113730.3.1.86</code><P></A>
+
+<A NAME="1101865">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1101283">
+<A NAME="cirPort">
+<B>cirPort</B>
+</a></a>
+<P>
+
+
+<A NAME="1101284">
+Contains the port number of the supplier server. For example:<P></A>
+<PRE><A NAME="1251598">
+ cirPort: 389
+</A>
+</PRE>
+<A NAME="1259507">
+OID: <code>2.16.840.1.113730.3.1.81</code><P></A>
+
+<A NAME="1101287">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1101135">
+<A NAME="cirReplicaRoot">
+<B>cirReplicaRoot</B>
+</a></a>
+<P>
+
+
+<A NAME="1101136">
+Root of the subtree on the supplier server to be replicated on the consumer.<P></A>
+
+<A NAME="1259453">
+OID: <code>2.16.840.1.113730.3.1.79</code><P></A>
+
+<A NAME="1101139">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1100403">dn</a><P></A>
+<A NAME="1102148">
+<A NAME="cirSyncInterval">
+<B>cirSyncInterval</B>
+</a></a>
+<P>
+
+
+<A NAME="1149751">
+Periodically, the consumer server queries the supplier to find out if any changes have been made to the replicated portion of the directory. This attribute defines, in seconds, the interval between consumer queries of the supplier server. For example:<P></A>
+<PRE><A NAME="1102151">
+ cirSyncInterval: 3600
+</A>
+</PRE>
+<A NAME="1259808">
+OID: <code>2.16.840.1.113730.3.1.89</code><P></A>
+
+<A NAME="1102153">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1102114">
+<A NAME="cirUpdateFailedat">
+<B>cirUpdateFailedat</B>
+</a></a>
+<P>
+
+
+<A NAME="1146224">
+Timestamp of the last failed update attempt. <P></A>
+
+<A NAME="1259788">
+OID: <code>2.16.840.1.113730.3.1.88</code><P></A>
+
+<A NAME="1102119">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1102001">
+<A NAME="cirUpdateSchedule">
+<B>cirUpdateSchedule</B>
+</a></a>
+<P>
+
+
+<A NAME="1102003">
+Defines the hours between which replication can occur. For example:<P></A>
+<PRE><A NAME="1148927">
+ cirUpdateSchedule: 0100-0400
+</A>
+<A NAME="1148928">
+ cirUpdateSchedule: * 06
+</A>
+<A NAME="1148929">
+ cirUpdateSchedule: 1145-1300 24
+</A>
+</PRE>
+<A NAME="1148930">
+These values mean:<P></A>
+<PRE><A NAME="1148931">
+ 1:00 AM - 4:00 AM, daily
+</A>
+<A NAME="1148932">
+ All day Saturday and Sunday
+</A>
+<A NAME="1148933">
+ 11:45 AM -1:00 PM, Tuesday and Thursday
+</A>
+</PRE>
+<A NAME="1259785">
+OID: <code>2.16.840.1.113730.3.1.87</code><P></A>
+
+<A NAME="1251614">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1101691">
+<A NAME="cirUsePersistentSearch">
+<B>cirUsePersistentSearch</B>
+</a></a>
+<P>
+
+
+<A NAME="1101693">
+Undefined. <P></A>
+
+<A NAME="1259602">
+OID: <code>2.16.840.1.113730.3.1.83</code><P></A>
+
+<A NAME="1101696">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1101735">
+<A NAME="cirUseSsl">
+<B>cirUseSsl</B>
+</a></a>
+<P>
+
+
+<A NAME="1101737">
+Determines whether SSL should be used during consumer initiated replication.<P></A>
+
+<A NAME="1259621">
+OID: <code>2.16.840.1.113730.3.1.84</code><P></A>
+
+<A NAME="1101740">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1171494">
+<A NAME="cn">
+<B>cn</B>
+</a></a>
+<P>
+
+
+<A NAME="1171495">
+When in reference to an object class other than LDAPReplica or LDAPServer, cn identifies the entry's common name, or full name. For example:<P></A>
+<PRE><A NAME="1171496">
+ commonName: Bill Anderson
+</A>
+</PRE>
+<A NAME="1171497">
+or:<P></A>
+<PRE><A NAME="1171498">
+ cn: Bill Anderson
+</A>
+</PRE>
+<A NAME="1171499">
+When in reference to the LDAPReplica or LDAPServer object classes, it identifies the converted DNS name of the server and root of the replicated directory tree into distinguished name format. For example:<P></A>
+<PRE><A NAME="1171500">
+ commonName: replicater.netscape.com:17430/o%3Dexample<br> %2Cc%3us
+</A>
+</PRE>
+<A NAME="1171501">
+or:<P></A>
+<PRE><A NAME="1171502">
+ cn: replicater.netscape.com:17430/o%3Dexample%2Cc%3us
+</A>
+</PRE>
+<A NAME="1171504">
+Abbreviation: cn<P></A>
+
+<A NAME="1266999">
+OID: <code>2.5.4.3</code><P></A>
+
+<A NAME="1171506">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1265915">
+<A NAME="co">
+<B>co</B>
+</a></a>
+<P>
+
+
+<A NAME="1265916">
+Contains the name of a country. Often, the country attribute is used to describe a two-character code for a country, and the friendlyCountryName attribute is used to describe the actual country name. For example:<P></A>
+<PRE><A NAME="1265917">
+ friendlyCountryName: Ireland<br> countryName: IE
+</A>
+</PRE>
+<A NAME="1265918">
+or:<P></A>
+<PRE><A NAME="1265919">
+ co: Ireland
+</A>
+</PRE>
+<A NAME="1265921">
+Abbreviation: co<P></A>
+
+<A NAME="1265922">
+OID: <code>0.9.2342.19200300.100.1.43</code><P></A>
+
+<A NAME="1265924">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1241971">
+<A NAME="createTimestamp">
+<B>createTimestamp</B>
+</a></a>
+<P>
+
+
+<A NAME="1241973">
+Undefined. <P></A>
+
+<A NAME="1262782">
+OID: <code>2.5.18.1</code><P></A>
+
+<A NAME="1241975">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1242331">
+<A NAME="creatorsName">
+<B>creatorsName</B>
+</a></a>
+<P>
+
+
+<A NAME="1242332">
+Contains the distinguished name (dn) of the creator of an entry. For example:<P></A>
+<PRE><A NAME="1242333">
+ creatorsName: <I>cn=jdoe, o=example.com</I>
+</A>
+</PRE>
+<A NAME="1262998">
+OID: <code>2.5.18.3</code><P></A>
+
+<A NAME="1242335">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1100403">dn</a><P></A>
+<A NAME="1208784">
+<A NAME="crossCertificatePair">
+<B>crossCertificatePair</B>
+</a></a>
+<P>
+
+
+<A NAME="1208786">
+Reserved for future use. Not recommended; use crossCertificatePair;binary instead.<P></A>
+
+<A NAME="1208788">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">bin</a><P></A>
+<A NAME="1208791">
+<A NAME="crossCertificatePair;binary">
+<B>crossCertificatePair;binary</B>
+</a></a>
+<P>
+
+
+<A NAME="1208793">
+Reserved for future use. <P></A>
+<PRE><A NAME="1287327">
+ crossCertificatePair;binary: AAAAAA==
+</A>
+</PRE>
+<A NAME="1208795">
+OID: <code>2.5.4.40</code><P></A>
+
+<A NAME="1277707">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">bin</a><P></A>
+<A NAME="1245094">
+<A NAME="dc">
+<B>dc</B>
+</a></a>
+<P>
+
+
+<A NAME="1245095">
+Specifies one component of a domain name. For example:<P></A>
+<PRE><A NAME="1245096">
+ domainComponent: example
+</A>
+<A NAME="1245097">
+or:
+</A>
+<A NAME="1266284">
+ dc: example
+</A>
+</PRE>
+<A NAME="1266285">
+OID: <code>0.9.2342.19200300.100.1.25</code><P></A>
+
+<A NAME="1266287">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1095547">
+<A NAME="deleteOldRdn">
+<B>deleteOldRdn</B>
+</a></a>
+<P>
+
+
+<A NAME="1095597">
+A flag that defines whether the old RDN of the entry should be retained as a distinguished attribute of the entry, or should be deleted. A value of False indicates that the RDN should be retained as a distinguished attribute, and a value of True indicates that it should not be retained as a distinguished attribute of the entry. If any value other than True or False is contained in the deleteOldRDN attribute, or if the deleteOldRDN contains multiple values, the RDN will be retained as a distinguished attribute (that is, False is the default if no values are present, or if illegal values are present).<P></A>
+<PRE><A NAME="1095550">
+ deleteOldRdn: False
+</A>
+</PRE>
+<A NAME="1257850">
+OID: <code>2.16.840.1.113730.3.1.10</code><P></A>
+
+<A NAME="1095552">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1241799">
+<A NAME="deltaRevocationList;binary">
+<B>deltaRevocationList;binary</B>
+</a></a>
+<P>
+
+
+<A NAME="1241800">
+Reserved for future use.<P></A>
+
+<A NAME="1269247">
+OID: <code>2.5.4.53</code><P></A>
+
+<A NAME="1241803">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">bin</a><P></A>
+<A NAME="1095560">
+<A NAME="departmentNumber">
+<B>departmentNumber</B>
+</a></a>
+<P>
+
+
+<A NAME="1095562">
+Identifies the entry's department number. For example:<P></A>
+<PRE><A NAME="1095563">
+ departmentNumber: 2604
+</A>
+</PRE>
+<A NAME="1257581">
+OID: <code>2.16.840.1.113730.3.1.2</code><P></A>
+
+<A NAME="1095565">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1095566">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1171528">
+<A NAME="description">
+<B>description</B>
+</a></a>
+<P>
+
+
+<A NAME="1171529">
+Describes the entry. For people and organizations this often includes their role or work assignment. For example:<P></A>
+<PRE><A NAME="1171530">
+ description: Quality control inspector for the ME2873 product line
+</A>
+</PRE>
+<A NAME="1267179">
+OID: <code>2.5.4.13</code><P></A>
+
+<A NAME="1171532">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1292809">
+<A NAME="destinationIndicator">
+<B>destinationIndicator</B>
+</a></a>
+<P>
+
+
+<A NAME="1292811">
+The country and city associated with the entry needed to provide Public Telegram Service. It is generally used in conjunction with <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202644">registeredAddress</a>.For example:<P></A>
+<PRE><A NAME="1251644">
+ destinationIndicator: Los Angeles, California
+</A>
+</PRE>
+<A NAME="1267786">
+OID: <code>2.5.4.27</code><P></A>
+
+<A NAME="1201828">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1283336">
+<A NAME="dITContentRules">
+<B>dITContentRules</B>
+</a></a>
+<P>
+
+
+<A NAME="1290848">
+Operational, multi-valued attribute that defines the directory tree content rules used within a subschema. Each value defines one DIT content rule.<P></A>
+
+<A NAME="1283340">
+OID: <code>2.5.21.2</code><P></A>
+
+<A NAME="1283342">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis </a><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1251525">operational</a><P></A>
+<A NAME="1201831">
+<A NAME="ditRedirect">
+<B>ditRedirect</B>
+</a></a>
+<P>
+
+
+<A NAME="1211719">
+Used to indicate that the object described by one entry now has a newer entry in the directory tree. This attribute may be used when an individual's place of work changes, and the individual acquires a new organizational DN. For example:<P></A>
+<PRE><A NAME="1201833">
+ ditRedirect: <I>cn=jdoe, o=example.com</I>
+</A>
+</PRE>
+<A NAME="1266700">
+OID: <code>0.9.2342.19200300.100.1.54</code><P></A>
+
+<A NAME="1283311">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1100403">dn</a><P></A>
+<A NAME="1283313">
+<A NAME="dITStructureRules">
+<B>dITStructureRules</B>
+</a></a>
+<P>
+
+
+<A NAME="1291657">
+Operational, multi-valued attribute that defines the directory tree structure rules used in a subschema. Each value defines one structure rule. . <P></A>
+
+<A NAME="1281826">
+OID: <code>2.5.21.1</code><P></A>
+
+<A NAME="1281828">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis </a><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1251525">operational</a><P></A>
+<A NAME="1100403">
+<A NAME="dn">
+<B>dn</B>
+</a></a>
+<P>
+
+
+<A NAME="1100404">
+Defines the distinguished name (dn) for the entry. For example:<P></A>
+<PRE><A NAME="1268228">
+ <I>dn: cn=Jane Doe, ou=Quality Control, o=example.com</I>
+</A>
+</PRE>
+<A NAME="1268182">
+OID: <code>2.5.4.49</code><P></A>
+
+<A NAME="1268197">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1100403">dn</a><P></A>
+<A NAME="1201841">
+<A NAME="dNSRecord">
+<B>dNSRecord</B>
+</a></a>
+<P>
+
+
+<A NAME="1218890">
+Specifies DNS resource records; including, type A (Address), type MX (Mail Exchange), type NS (Name Server), and type SOA (Start Of Authority) resource records. For example:<P></A>
+<PRE><A NAME="1218996">
+ dNSRecord: IN NS ns.uu.net.
+</A>
+</PRE>
+<A NAME="1264680">
+OID: <code>0.9.2342.19200300.100.1.26</code><P></A>
+
+<A NAME="1201844">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1241256">
+<A NAME="dnQualifier">
+<B>dnQualifier</B>
+</a></a>
+<P>
+
+
+<A NAME="1241257">
+Undefined.<P></A>
+
+<A NAME="1268140">
+OID: <code>2.5.4.46</code><P></A>
+
+<A NAME="1241260">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1201847">
+<A NAME="documentAuthor">
+<B>documentAuthor</B>
+</a></a>
+<P>
+
+
+<A NAME="1201848">
+Contains the distinguished name of the author of a document entry. For example:<P></A>
+<PRE><A NAME="1201849">
+ documentAuthor: <I>cn=John Doe, o=Example.com</I>
+</A>
+</PRE>
+<A NAME="1266431">
+OID: <code>0.9.2342.19200300.100.1.14</code><P></A>
+
+<A NAME="1201851">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1100403">Syntax: </a>dn<P></A>
+<A NAME="1201854">
+<A NAME="documentIdentifier">
+<B>documentIdentifier</B>
+</a></a>
+<P>
+
+
+<A NAME="1214845">
+Specifies a unique identifier for a document.. For example:<P></A>
+<PRE><A NAME="1201856">
+ documentIdentifier: L3204REV1
+</A>
+</PRE>
+<A NAME="1266314">
+OID: <code>0.9.2342.19200300.100.1.11</code><P></A>
+
+<A NAME="1201858">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1201861">
+<A NAME="documentLocation">
+<B>documentLocation</B>
+</a></a>
+<P>
+
+
+<A NAME="1201862">
+Defines the location of the original copy of a document entry. For example:<P></A>
+<PRE><A NAME="1201863">
+ documentLocation: Department Library
+</A>
+</PRE>
+<A NAME="1266449">
+OID: <code>0.9.2342.19200300.100.1.15</code><P></A>
+
+<A NAME="1201865">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1201868">
+<A NAME="documentPublisher">
+<B>documentPublisher</B>
+</a></a>
+<P>
+
+
+<A NAME="1216107">
+The person and/or organization that published a document. For example:<P></A>
+<PRE><A NAME="1201870">
+ documentPublisher: Southeastern Publishing
+</A>
+</PRE>
+<A NAME="1260211">
+OID: <code>0.9.2342.19200300.100.1.56</code><P></A>
+
+<A NAME="1201872">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1201877">
+<A NAME="documentStore">
+<B>documentStore</B>
+</a></a>
+<P>
+
+
+<A NAME="1201878">
+Undefined.<P></A>
+
+<A NAME="1201881">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1201884">
+<A NAME="documentTitle">
+<B>documentTitle</B>
+</a></a>
+<P>
+
+
+<A NAME="1201885">
+Contains the title of a document entry. For example:<P></A>
+<PRE><A NAME="1201886">
+ documentTitle: Directory Administrator's Guide
+</A>
+</PRE>
+<A NAME="1266319">
+OID: <code>0.9.2342.19200300.100.1.12</code><P></A>
+
+<A NAME="1201888">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1201891">
+<A NAME="documentVersion">
+<B>documentVersion</B>
+</a></a>
+<P>
+
+
+<A NAME="1201892">
+Defines the version of a document entry. For example:<P></A>
+<PRE><A NAME="1201893">
+ documentVersion: 1.1
+</A>
+</PRE>
+<A NAME="1266429">
+OID: <code>0.9.2342.19200300.100.1.13</code><P></A>
+
+<A NAME="1201895">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1201909">
+<A NAME="drink">
+<B>drink</B>
+</a></a>
+<P>
+
+
+<A NAME="1201910">
+Describes favorite drink of a person entry. For example:<P></A>
+<PRE><A NAME="1201911">
+ drink: soda
+</A>
+<A NAME="1201912">
+or:
+</A>
+<A NAME="1201913">
+ favouriteDrink: soda
+</A>
+</PRE>
+<A NAME="1264462">
+OID: <code>0.9.2342.19200300.100.1.5</code><P></A>
+
+<A NAME="1201915">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1245205">
+<A NAME="dSAQuality">
+<B>dSAQuality</B>
+</a></a>
+<P>
+
+
+<A NAME="1245207">
+Undefined. <P></A>
+
+<A NAME="1266632">
+OID: <code>0.9.2342.19200300.100.1.49</code><P></A>
+
+<A NAME="1245210">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1003050">
+<A NAME="employeeNumber">
+<B>employeeNumber</B>
+</a></a>
+<P>
+
+
+<A NAME="1003051">
+Identifies the entry's employee number. For example:<P></A>
+<PRE><A NAME="1003356">
+ employeeNumber: 15300
+</A>
+</PRE>
+<A NAME="1257625">
+OID: <code>2.16.840.1.113730.3.1.3</code><P></A>
+
+<A NAME="1003382">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1008204">
+This attribute was created by Netscape for use with its LDAP implementation.<P></A>
+<A NAME="1009035">
+<A NAME="employeeType">
+<B>employeeType</B>
+</a></a>
+<P>
+
+
+<A NAME="1009036">
+Identifies the entry's type of employment. For example:<P></A>
+<PRE><A NAME="1009039">
+ employeeType: Full time
+</A>
+</PRE>
+<A NAME="1257756">
+OID: <code>2.16.840.1.113730.3.1.4</code><P></A>
+
+<A NAME="1009054">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1087204">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1241288">
+<A NAME="enhancedSearchGuide">
+<B>enhancedSearchGuide</B>
+</a></a>
+<P>
+
+
+<A NAME="1241289">
+Used by X.500 clients when construcing search filters. <P></A>
+
+<A NAME="1268147">
+OID: <code>2.5.4.47</code><P></A>
+
+<A NAME="1241292">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1171637">
+<A NAME="facsimileTelephoneNumber">
+<B>facsimileTelephoneNumber</B>
+</a></a>
+<P>
+
+
+<A NAME="1171638">
+Identifies the fax number at which the entry can be reached. For example:<P></A>
+<PRE><A NAME="1171639">
+ facsimileTelephoneNumber: 415-555-1212
+</A>
+</PRE>
+<A NAME="1171640">
+or:<P></A>
+<PRE><A NAME="1171641">
+ fax: 415-555-1212
+</A>
+</PRE>
+<A NAME="1266216">
+Abbreviation: fax<P></A>
+
+<A NAME="1267642">
+OID: <code>2.5.4.23</code><P></A>
+
+<A NAME="1266222">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004703">tel</a><P></A>
+<A NAME="1266221">
+<A NAME="filterInfo">
+<B>filterInfo</B>
+</a></a>
+<P>
+
+
+<A NAME="1284718">
+Reserved for future use.<P></A>
+
+<A NAME="1284721">
+OID: <code>2.16.840.1.113730.3.1.206</code><P></A>
+
+<A NAME="1284746">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">Syntax: cis</a><P></A>
+<A NAME="1284708">
+<A NAME="generation">
+<B>generation</B>
+</a></a>
+<P>
+
+
+<A NAME="1171658">
+Identifies a byte vector assigned to the server to distinguish it from any other generation or version of the server. The generation attribute is used only for replica synchronization.<P></A>
+
+<A NAME="1171660">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004701">ces</a><P></A>
+
+<A NAME="1171661">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1104309">
+<A NAME="generationQualifier">
+<B>generationQualifier</B>
+</a></a>
+<P>
+
+
+<A NAME="1161653">
+Same as generation Qualifier in the Lightweight Internet Person Schema (LIPS).<P></A>
+
+<A NAME="1268127">
+OID: <code>2.5.4.44</code><P></A>
+
+<A NAME="1104311">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1229534">
+<A NAME="givenName">
+<B>givenName</B>
+</a></a>
+<P>
+
+
+<A NAME="1229535">
+Identifies the entry's given, or first, name. For example: <P></A>
+<PRE><A NAME="1229536">
+ givenName: Bill
+</A>
+</PRE>
+<A NAME="1268098">
+OID: <code>2.5.4.42</code><P></A>
+
+<A NAME="1229538">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1201936">
+<A NAME="homePhone">
+<B>homePhone</B>
+</a></a>
+<P>
+
+
+<A NAME="1201937">
+Identifies the entry's home phone number. For example:<P></A>
+<PRE><A NAME="1201938">
+ homeTelephoneNumber: 415-555-1212
+</A>
+</PRE>
+<A NAME="1201939">
+or:<P></A>
+<PRE><A NAME="1201940">
+ homePhone: 415-555-1234
+</A>
+</PRE>
+<A NAME="1201942">
+Abbreviation: homePhone<P></A>
+
+<A NAME="1264518">
+OID: <code>0.9.2342.19200300.100.1.20</code><P></A>
+
+<A NAME="1201944">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004703">tel</a><P></A>
+<A NAME="1201947">
+<A NAME="homePostalAddress">
+<B>homePostalAddress</B>
+</a></a>
+<P>
+
+
+<A NAME="1201948">
+Identifies the entry's home mailing address. This field is intended to include multiple lines, but each line within the entry should be separated by a dollar sign ($). For example:<P></A>
+<PRE><A NAME="1201949">
+ homePostalAddress: 1234 Ridgeway Drive$Santa Clara, CA$99555
+</A>
+</PRE>
+<A NAME="1201950">
+To represent an actual dollar sign ($) or backslash (\) within this text, use the escaped hex values \24 and \5c respectively. For example, to represent the string:<P></A>
+<PRE><A NAME="1201951">
+ The dollar ($) value can be found <br> in the c:\cost file.
+</A>
+</PRE>
+<A NAME="1201952">
+provide the string:<P></A>
+<PRE><A NAME="1201953">
+ The dollar (\24) value can be found$in the c:\5ccost file.
+</A>
+</PRE>
+<A NAME="1264733">
+OID: <code>0.9.2342.19200300.100.1.39</code><P></A>
+
+<A NAME="1201955">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1201958">
+<A NAME="host">
+<B>host</B>
+</a></a>
+<P>
+
+
+<A NAME="1201959">
+Defines the hostname of a computer. For example:<P></A>
+<PRE><A NAME="1201960">
+ host: mozilla
+</A>
+</PRE>
+<A NAME="1264500">
+OID: <code>0.9.2342.19200300.100.1.9</code><P></A>
+
+<A NAME="1201962">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1241726">
+<A NAME="houseIdentifier">
+<B>houseIdentifier</B>
+</a></a>
+<P>
+
+
+<A NAME="1241727">
+Contains an identifier for a house. <P></A>
+
+<A NAME="1269104">
+OID: <code>2.5.4.51</code><P></A>
+
+<A NAME="1241730">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1201965">
+<A NAME="info">
+<B>info</B>
+</a></a>
+<P>
+
+
+<A NAME="1211991">
+The Information attribute type specifies any general information pertinent to an object. It is recommended that specific usage of this attribute type is avoided, and that specific requirements are met by other (possibly additional) attribute types.<P></A>
+<PRE><A NAME="1201967">
+ info: not valid
+</A>
+</PRE>
+<A NAME="1266299">
+OID: <code>0.9.2342.19200300.100.1.4</code><P></A>
+
+<A NAME="1201969">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1229543">
+<A NAME="initials">
+<B>initials</B>
+</a></a>
+<P>
+
+
+<A NAME="1229544">
+Identifies the entry's initials. For example:<P></A>
+<PRE><A NAME="1229545">
+ initials: BFA
+</A>
+</PRE>
+<A NAME="1268110">
+OID: <code>2.5.4.43</code><P></A>
+
+<A NAME="1229547">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1032705">
+<A NAME="installationTimeStamp">
+<B>installationTimeStamp</B>
+</a></a>
+<P>
+
+
+<A NAME="1212073">
+Identifies the date and time in zulu format when the Netscape server was installed. This attribute is a Netscape extension used by the <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1097231">netscapeServer</a> object class. Normally this attribute and this attribute value are written to the directory when a Netscape server is initially installed. For example:<P></A>
+<PRE><A NAME="1212075">
+ installationTimeStamp: 199703261517z
+</A>
+</PRE>
+<A NAME="1259193">
+OID: <code>2.16.840.1.113730.3.1.73</code><P></A>
+
+<A NAME="1032810">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1224256">
+<A NAME="internationalIsdnNumber">
+<B>internationalIsdnNumber</B>
+</a></a>
+<P>
+
+
+<A NAME="1224257">
+Contains the ISDN number of the entry. This is in the internationally agreed format for ISDN addresses given in CCITT Rec. E. 164. <P></A>
+
+<A NAME="1267742">
+OID: <code>2.5.4.25</code><P></A>
+
+<A NAME="1224260">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004701">ces</a><P></A>
+<A NAME="1201988">
+<A NAME="janetMailbox">
+<B>janetMailbox</B>
+</a></a>
+<P>
+
+
+<A NAME="1212260">
+Specifies an email address. This attribute is intended for the convenience of U.K users unfamiliar with rfc822 mail addresses. Entries using this attribute must also include an rfc822Mailbox attribute. For example:<P></A>
+<PRE><A NAME="1201990">
+ janetMailbox: jdoe@example.com
+</A>
+</PRE>
+<A NAME="1266610">
+OID: <code>0.9.2342.19200300.100.1.46</code><P></A>
+
+<A NAME="1201992">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1201995">
+<A NAME="jpegPhoto">
+<B>jpegPhoto</B>
+</a></a>
+<P>
+
+
+<A NAME="1201996">
+Contains a JPEG photo of the entry. For example:<P></A>
+<PRE><A NAME="1201999">
+ jpegPhoto: AAAAAA==
+</A>
+</PRE>
+<A NAME="1287354">
+OID: <code>0.9.2342.19200300.100.1.60</code><P></A>
+
+<A NAME="1266169">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">bin</a><P></A>
+<A NAME="1202004">
+<A NAME="keyWords">
+<B>keyWords</B>
+</a></a>
+<P>
+
+
+<A NAME="1202005">
+Contains keywords for the entry. For example:<P></A>
+<PRE><A NAME="1202006">
+ keyWords: directory LDAP X.500
+</A>
+</PRE>
+<A NAME="1202008">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1202013">
+<A NAME="knowledgeInformation">
+<B>knowledgeInformation</B>
+</a></a>
+<P>
+
+
+<A NAME="1202014">
+This attribute is no longer used.<P></A>
+
+<A NAME="1266967">
+OID: <code>2.5.4.2</code><P></A>
+<A NAME="1244534">
+<A NAME="l">
+<B>l</B>
+</a></a>
+<P>
+
+
+<A NAME="1244535">
+Identifies the county, city, or other geographical area in which the entry is located or in some other way associated with. For example:<P></A>
+<PRE><A NAME="1244536">
+ localityName: Santa Clara
+</A>
+</PRE>
+<A NAME="1244537">
+or:<P></A>
+<PRE><A NAME="1244538">
+ l: Santa Clara
+</A>
+</PRE>
+<A NAME="1244540">
+Abbreviation: l<P></A>
+
+<A NAME="1267059">
+OID: <code>2.5.4.7</code><P></A>
+
+<A NAME="1244542">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1202020">
+<A NAME="labeledUri">
+<B>labeledUri</B>
+</a></a>
+<P>
+
+
+<A NAME="1202021">
+Specifies a Uniform Resource Identifier (URI) that is relevant in some way to the entry. Values placed in the attribute should consist of a URI (currently only URLs are supported) optionally followed by one or more space characters and a label. For example:<P></A>
+<PRE><A NAME="1202022">
+ labeledURI: http://home.netscape.com [Netscape corporations's <br> home page]
+</A>
+</PRE>
+<A NAME="1266144">
+OID: <code>1.3.6.1.4.1.250.1.57</code><P></A>
+
+<A NAME="1202024">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004701">ces</a><P></A>
+<A NAME="1100733">
+<A NAME="lastModifiedBy">
+<B>lastModifiedBy</B>
+</a></a>
+<P>
+
+
+<A NAME="1212108">
+Specifies the distinguished name of the last user to modify the associated entry. For example:<P></A>
+<PRE><A NAME="1202030">
+ lastModifiedby: <I>cn=Jane Doe, ou=Quality Control, o=Example.com</I>
+</A>
+</PRE>
+<A NAME="1258536">
+OID: <code>0.9.2342.19200300.100.1.24</code><P></A>
+
+<A NAME="1280815">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1100403">dn</a><P></A>
+<A NAME="1202035">
+<A NAME="lastModifiedTime">
+<B>lastModifiedTime</B>
+</a></a>
+<P>
+
+
+<A NAME="1202036">
+Defines the last time, in UTC format, that a change was made to the entry. For example:<P></A>
+<PRE><A NAME="1202037">
+ lastModifiedTime: Thursday, 22-Sep-93 14:15:00 GMT
+</A>
+</PRE>
+<A NAME="1266565">
+OID: <code>0.9.2342.19200300.100.1.23</code><P></A>
+
+<A NAME="1202039">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1243273">
+<A NAME="ldapSyntaxes">
+<B>ldapSyntaxes</B>
+</a></a>
+<P>
+
+
+<A NAME="1243274">
+Undefined.<P></A>
+
+<A NAME="1263292">
+OID: <code>1.3.6.1.4.1.1466.101.120.16</code><P></A>
+
+<A NAME="1243277">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1189404">
+<A NAME="mail">
+<B>mail</B>
+</a></a>
+<P>
+
+
+<A NAME="1189405">
+Identifies the entry's email address. For example:<P></A>
+<PRE><A NAME="1189406">
+ mail: banderson@example.com
+</A>
+</PRE>
+<A NAME="1189408">
+OID: <code>0.9.2342.19200300.100.1.3</code><P></A>
+
+<A NAME="1264446">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1024020">
+<A NAME="mailAccessDomain">
+<B>mailAccessDomain</B>
+</a></a>
+<P>
+
+
+<A NAME="1024021">
+Identifies the domain or IP address from which the user can perform a POP/IMAP logon. This attribute is a Netscape extension used by the Messaging Server. For example:<P></A>
+<PRE><A NAME="1024022">
+ mailAccessDomain: example.com
+</A>
+</PRE>
+<A NAME="1024248">
+OID: <code>2.16.840.1.113730.3.1.12</code><P></A>
+
+<A NAME="1269362">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1024250">
+<A NAME="mailAlternateAddress">
+<B>mailAlternateAddress</B>
+</a></a>
+<P>
+
+
+<A NAME="1024251">
+Identifies an alternative mail address for a mail user. This attribute is a Netscape extension used by the Messaging Server to match a mail address to a user. A mail account can have as many instances of this attribute as the user has alternate mail addresses. For example:<P></A>
+<PRE><A NAME="1024061">
+ mailAlternateAddress: Babs_Jensen@example.com<br> mailAlternateAddress: Bjensen@example.com
+</A>
+</PRE>
+<A NAME="1269367">
+OID: <code>2.16.840.1.113730.3.1.13</code><P></A>
+
+<A NAME="1269365">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1024094">
+<A NAME="mailAutoReplyMode">
+<B>mailAutoReplyMode</B>
+</a></a>
+<P>
+
+
+<A NAME="1027423">
+Identifies the mail auto reply mode for the mail user. This attribute is a Netscape extension used by the Messaging Server. Zero or one (0 - 1) instances of this attribute are expected per mail user account. Valid keywords for this attribute are:<P></A>
+<ul><A NAME="1027425">
+<LI>vacation -- Send the vacation message. The vacation message is contained on the mailAutoReplyText attribute.<P>
+</A>
+<A NAME="1027426">
+<LI>reply -- Send a fixed reply. The reply is contained on the mailAutoReplyText attribute.<P>
+</A>
+<A NAME="1027427">
+<LI>echo -- Echo the original message and send the mailAutoReplyText to the original sender of the message.<P>
+</A>
+</ul>
+<A NAME="1027428">
+For example:<P></A>
+<PRE><A NAME="1027429">
+ mailAutoReplyMode: vacation
+</A>
+</PRE>
+<A NAME="1269369">
+OID: <code>2.16.840.1.113730.3.1.14</code><P></A>
+
+<A NAME="1024098">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1024125">
+<A NAME="mailAutoReplyText">
+<B>mailAutoReplyText</B>
+</a></a>
+<P>
+
+
+<A NAME="1027662">
+Provides auto reply text for a mail user. This attribute is a Netscape extension used by Messaging Server. When represented in LDIF format, each line should be separated by a dollar sign ($). The Messaging Server expects 0 or 1 occurrences of this attribute per mail account. For example:<P></A>
+<PRE><A NAME="1027663">
+ mailAutoReplyText: On vacation$Back in the office on Monday.
+</A>
+</PRE>
+<A NAME="1034577">
+To represent an actual dollar sign ($) or backslash (\) within this text, use the escaped hex values \24 and \5c respectively. For example, to represent the string:<P></A>
+<PRE><A NAME="1034578">
+ The dollar ($) value can be found <br> in the c:\cost file.
+</A>
+</PRE>
+<A NAME="1034579">
+provide the string:<P></A>
+<PRE><A NAME="1034580">
+ The dollar (\24) value can be found$in the c:\5ccost file.
+</A>
+</PRE>
+<A NAME="1269558">
+OID: <code>2.16.840.1.113730.3.1.15</code><P></A>
+
+<A NAME="1024293">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1024295">
+<A NAME="mailDeliveryOption">
+<B>mailDeliveryOption</B>
+</a></a>
+<P>
+
+
+<A NAME="1024296">
+Identifies the mail delivery mechanism to be used for the mail user. This attribute is a Netscape extension used by the Messaging Server. Zero to three (0 - 3) instances of this attribute are expected per mail user account. However, if no instance of this attribute exists on the mail user entry, then at least one <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1026154">mailForwardingAddress</a> attribute must exist on the entry. Valid keywords for this attribute are:<P></A>
+<ul><A NAME="1027169">
+<LI>mailbox -- Indicates that mail is to be delivered to the user's POP/IMAP mailbox.<P>
+</A>
+<A NAME="1027175">
+<LI>native -- Indicates that Unix delivery is to be used. This option is available only for Messaging Servers running on a Unix host.<P>
+</A>
+<A NAME="1027197">
+<LI>program -- Indicates that program delivery is to be used. This option is available only for Messaging Servers running on a Unix host.<P>
+</A>
+</ul>
+<A NAME="1027143">
+For example:<P></A>
+<PRE><A NAME="1024297">
+ mailDeliveryOption: mailbox
+</A>
+</PRE>
+<A NAME="1269568">
+OID: <code>2.16.840.1.113730.3.1.16</code><P></A>
+
+<A NAME="1024169">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1026103">
+<A NAME="mailEnhancedUniqueMember">
+<B>mailEnhancedUniqueMember</B>
+</a></a>
+<P>
+
+
+<A NAME="1026104">
+Netscape extension used by the Messaging Server. Reserved for future use.<P></A>
+
+<A NAME="1026153">
+OID: <code>2.16.840.1.113730.3.1.31</code><P></A>
+
+<A NAME="1278474">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1100403">dn</a><P></A>
+<A NAME="1026154">
+<A NAME="mailForwardingAddress">
+<B>mailForwardingAddress</B>
+</a></a>
+<P>
+
+
+<A NAME="1024197">
+Identifies a mail address to which mail is forwarded. This attribute is a Netscape extension used by the Messaging Server to forward incoming mail to the correct location. For example:<P></A>
+<PRE><A NAME="1024198">
+ mailForwardingAddress: bjensen@royalairways.com
+</A>
+</PRE>
+<A NAME="1269579">
+OID: <code>2.16.840.1.113730.3.1.17</code><P></A>
+
+<A NAME="1024200">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1024314">
+<A NAME="mailHost">
+<B>mailHost</B>
+</a></a>
+<P>
+
+
+<A NAME="1024315">
+Identifies the DNS hostname of the host on which the user's mail account resides. This attribute is a Netscape extension used by the Messaging Server to route incoming mail to the correct location. The Messaging Server expects one and only one instance of this attribute per<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#"> mail</a>Recipient entry, or zero or one instances of this attribute on a <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#">mailGroup</a> entry. The value specified on this attribute must be the host's fully qualified domain name. For example:<P></A>
+<PRE><A NAME="1024316">
+ mailHost: mars.example.com
+</A>
+</PRE>
+<A NAME="1269581">
+OID: <code>2.16.840.1.113730.3.1.18</code><P></A>
+
+<A NAME="1024318">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1024377">
+<A NAME="mailMessageStore">
+<B>mailMessageStore</B>
+</a></a>
+<P>
+
+
+<A NAME="1024378">
+Identifies the absolute path on the user's mail host to the location under which the user's mailbox resides. This attribute is a Netscape extension used by the Messaging Server and this attribute is applicable only if the user's<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1024295"> mailDeliveryOption</a> is set to mailbox. The Messaging Server expects zero or one (0 or 1) instances of this attribute. If no instances of this attribute exist on the user's entry, then the default configured on the user's Messaging Server is used. For example:<P></A>
+<PRE><A NAME="1024379">
+ mailMessageStore: /disk2/mail
+</A>
+</PRE>
+<A NAME="1269614">
+OID: <code>2.16.840.1.113730.3.1.19</code><P></A>
+
+<A NAME="1090714">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004701">ces</a><P></A>
+<A NAME="1202044">
+<A NAME="mailPreferenceOption">
+<B>mailPreferenceOption</B>
+</a></a>
+<P>
+
+
+<A NAME="1213101">
+Indicates a preference for inclusion of their names on mailing lists (electronic or physical). There are three acceptable values for this attribute; <code>0</code>, <code>1</code>, and <code>2</code>. A value of <code>0</code> means that the user doesn't want to be included in mailing lists. A value of <code>1</code> means that the user consents to be added to any mailing list. A value of <code>2</code> means that the user only wants to be added to mailing lists which the list provider views as related to the users professional interests. The absence of such an attribute should be interpreted as if the attribute was present with value "no-list-inclusion". This attribute should be interpreted by anyone using the directory to derive mailing lists, and its value respected. For example:<P></A>
+<PRE><A NAME="1202046">
+ mailPreferenceOption: 0
+</A>
+</PRE>
+<A NAME="1266117">
+OID: <code>0.9.2342.19200300.100.1.47</code><P></A>
+
+<A NAME="1202048">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1243260">int single</a><P></A>
+<A NAME="1024400">
+<A NAME="mailProgramDeliveryInfo">
+<B>mailProgramDeliveryInfo</B>
+</a></a>
+<P>
+
+
+<A NAME="1024401">
+Identifies one or more commands, delimited by $, to be used for programmed mail delivery. This attribute is a Netscape extension used by the Messaging Server. The Messaging Server expect zero or one (0-1) instances of this attribute per user account. This attribute is meaningful only if all of the following conditions are true:<P></A>
+<ul><A NAME="1033350">
+<LI>the Messaging Server is running on Unix<P>
+</A>
+<A NAME="1033365">
+<LI>program delivery has been enabled on the Messaging Server by the mail administrator<P>
+</A>
+<A NAME="1033405">
+<LI>the user's <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1024295">mailDeliveryOption</a> is set to<B> </B>program<P>
+</A>
+</ul>
+<A NAME="1039005">
+For example:<P></A>
+<PRE><A NAME="1024402">
+ mailProgramDeliveryInfo: /usr/local/bin/procmail -f-
+</A>
+</PRE>
+<A NAME="1269616">
+OID: <code>2.16.840.1.113730.3.1.20</code><P></A>
+
+<A NAME="1024440">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004701">ces</a><P></A>
+<A NAME="1024509">
+<A NAME="mailQuota">
+<B>mailQuota</B>
+</a></a>
+<P>
+
+
+<A NAME="1024510">
+Identifies the maximum disk space in bytes that may be consumed by the user's mailbox. This attribute is a Netscape extension used by the Messaging Server and this attribute is applicable only if the user's <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1024295">mailDeliveryOption</a> is set to mailbox. The Messaging Server expects zero or one (0 or 1) instances of this attribute. If no instances of this attribute exist on the user's entry, then the default configured on the user's Messaging Server is used. For example:<P></A>
+<PRE><A NAME="1024511">
+ mailQuota: 1000000
+</A>
+</PRE>
+<A NAME="1024513">
+Note that if this attribute is set to zero, then no limit is set on the disk space quota.<P></A>
+
+<A NAME="1269588">
+OID: <code>2.16.840.1.113730.3.1.21</code><P></A>
+
+<A NAME="1033421">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1241537">
+<A NAME="mailRoutingAddress">
+<B>mailRoutingAddress</B>
+</a></a>
+<P>
+
+
+<A NAME="1241538">
+Undefined. <P></A>
+
+<A NAME="1263316">
+OID: <code>2.16.840.1.113730.3.1.47</code><P></A>
+
+<A NAME="1241541">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1007859">
+<A NAME="manager">
+<B>manager</B>
+</a></a>
+<P>
+
+
+<A NAME="1007872">
+Identifies the distinguished name of the entry's manager. For example:<P></A>
+<PRE><A NAME="1007875">
+ manager:<I> cn=Jane Doe, ou=Quality Control, o=Example.com</I>
+</A>
+</PRE>
+<A NAME="1264515">
+OID: <code>0.9.2342.19200300.100.1.10</code><P></A>
+
+<A NAME="1007908">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1100403">dn</a><P></A>
+<A NAME="1242887">
+<A NAME="matchingRules">
+<B>matchingRules</B>
+</a></a>
+<P>
+
+
+<A NAME="1290968">
+Operational, multi-valued attribute that specifies the matching rules used in a subschema. Each value describes a single matching rule. <P></A>
+
+<A NAME="1263068">
+OID: <code>2.5.21.4</code><P></A>
+
+<A NAME="1242891">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis </a><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1251525">operational</a><P></A>
+<A NAME="1242961">
+<A NAME="matchingRuleUse">
+<B>matchingRuleUse</B>
+</a></a>
+<P>
+
+
+<A NAME="1242962">
+Operational attribute that identifies the attribute types to which a matching rule applies in a subschema. <P></A>
+
+<A NAME="1263074">
+OID: <code>2.5.21.8</code><P></A>
+
+<A NAME="1263077">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis </a><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1251525">operational</a><P></A>
+<A NAME="1171811">
+<A NAME="member">
+<B>member</B>
+</a></a>
+<P>
+
+
+<A NAME="1171812">
+Identifies the distinguished names for each member of the group. For example:<P></A>
+<PRE><A NAME="1171813">
+ member: <I>cn=John Doe, o=example.com</I>
+</A>
+</PRE>
+<A NAME="1267883">
+OID: <code>2.5.4.31</code><P></A>
+
+<A NAME="1171815">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1100403">dn</a><P></A>
+<A NAME="1152959">
+<A NAME="memberCertificateDescription">
+<B>memberCertificateDescription</B>
+</a></a>
+<P>
+
+
+<A NAME="1152961">
+Identifies the characteristics of certificates in a particular group of certificates. If a certificate contains a subject distinguished name that matches one of the values in memberCertificateDescription, it is considered a member of the certificate group of which the attribute is a part. The format is as follows:<P></A>
+<PRE><A NAME="1153378">
+ {<I>subject_dn</I>}
+</A>
+</PRE>
+<A NAME="1153395">
+You can specify multiple subject dns by separating them with commas. You can designate more than one <code>ou</code> in the entry. If you specify multiple entries of other attribute types (not <code>ou</code>), all but the last one will be ignored.<P></A>
+
+<A NAME="1154677">
+For example, in order to be considered a member of a group with the following memberCertificateDescription, a certficiate would need to include <code>ou=x</code>, <code>ou=A</code>, and <code>o=example</code> but not <code>o=company</code>.<P></A>
+<PRE><A NAME="1126332">
+ memberCertificateDescription: {<I>ou=x, ou=A, o=company, o=example</I>}
+</A>
+</PRE>
+<A NAME="1154571">
+In order to match the group's requirements, a certificate's subject dns must contain the same ou attribute types in the same order as defined in the memberCertificateDescription attribute.<P></A>
+
+<A NAME="1263664">
+OID: <code>2.16.840.1.113730.3.1.199</code><P></A>
+
+<A NAME="1153423">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004701">ces</a><P></A>
+<A NAME="1246271">
+<A NAME="memberURL">
+<B>memberURL</B>
+</a></a>
+<P>
+
+
+<A NAME="1246272">
+Identifies a URL associated with each member of a group. For example:<P></A>
+<PRE><A NAME="1246273">
+ memberURL: ldap://<I>cn=jdoe, o=Example.com</I>
+</A>
+</PRE>
+<A NAME="1263332">
+OID: <code>2.16.840.1.113730.3.1.198</code><P></A>
+
+<A NAME="1246275">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004701">ces</a><P></A>
+<A NAME="1025144">
+<A NAME="mgrpAllowedBroadcaster">
+<B>mgrpAllowedBroadcaster</B>
+</a></a>
+<P>
+
+
+<A NAME="1025146">
+Identifies mail users allowed to send messages to the mail group. This attribute is a Netscape extension used by the Messaging Server to manage mailing lists. If no instances of this attribute exist on the mailGroup entry, then there are no restrictions on who can send messages to the mail group unless the mgrpAllowedDomain attribute is used. <P></A>
+
+<A NAME="1028370">
+The Messaging Server expects this attribute to contain either a distinguished name or an rfc822address. If a distinguished name is used, it must represent a mailable entry or entries of type group or groupOfUniqueNames. The distinguished name must be represented in the form of a LDAP URL as described in RFC1959, <em>An LDAP URL format</em>.<P></A>
+
+<A NAME="1028354">
+For example:<P></A>
+<PRE><A NAME="1025147">
+ mgrpAllowedBroadcaster: ldap://<I>uid=bjensen, o=Example.com<br></I> mgrpAllowedBroadcaster: mailto:sys50@example.com
+</A>
+</PRE>
+<A NAME="1277878">
+OID: <code>2.16.840.1.113730.3.1.22</code><P></A>
+
+<A NAME="1025149">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004701">ces</a><P></A>
+<A NAME="1024569">
+<A NAME="mgrpAllowedDomain">
+<B>mgrpAllowedDomain</B>
+</a></a>
+<P>
+
+
+<A NAME="1024570">
+Identifies domains from which users are allowed to send messages to the mail group. This attribute is a Netscape extension used by the Messaging Server to manage mailing lists. If no instances of this attribute exist on the mailGroup entry, then there are no restrictions on who can send messages to the mail group unless the mgrpAllowedBroadcaster attribute is used. <P></A>
+
+<A NAME="1028614">
+This is by defaulted to a wild card value. That is, a value of "example.com" will match any user sending from "*.example.com"<P></A>
+
+<A NAME="1028598">
+For example:<P></A>
+<PRE><A NAME="1024571">
+ mgrpAllowedDomain: example.com
+</A>
+</PRE>
+<A NAME="1277883">
+OID: <code>2.16.840.1.113730.3.1.23</code><P></A>
+
+<A NAME="1278549">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1278551">
+<A NAME="mgrpDeliverTo">
+<B>mgrpDeliverTo</B>
+</a></a>
+<P>
+
+
+<A NAME="1278552">
+Alternative method of specifying mail group membership. This attribute is a Netscape extension used by the Messaging Server to manage mailing lists. The Messaging Server expects this attribute to contain an LDAP URL using the format described in RFC1959, <em>An LDAP URL format</em>. Any entries returned by the resulting LDAP search are members of the mailing group. For example:<P></A>
+<PRE><A NAME="1025433">
+ mgrpDeliverTo: ldap:///<I>ou=Accounting,o=Netscape,c=US??sub?(&amp;<br> (objectClass=mailRecipient)(objectClass=inetOrgPerson))</I>
+</A>
+</PRE>
+<A NAME="1277885">
+OID: <code>2.16.840.1.113730.3.1.25</code><P></A>
+
+<A NAME="1025435">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004701">ces</a><P></A>
+<A NAME="1025568">
+<A NAME="mgrpErrorsTo">
+<B>mgrpErrorsTo</B>
+</a></a>
+<P>
+
+
+<A NAME="1028828">
+Identifies a mailing address to send error messages to for notification of mail delivery problems, such as bounced mails or members of the mailing group that lack a mailing address. This attribute is a Netscape extension used by the Messaging Server to manage mailing lists. If no instances of this attribute exist on the mailGroup entry, then error handling is managed according to the default set in the Messaging Server. <P></A>
+
+<A NAME="1028829">
+The Messaging Server expects this attribute to contain either a distinguished name or a rfc822address. If a distinguished name is used, it must represent a mailable entry or entries of type group or groupOfUniqueNames. The distinguished name must be represented in the form of a LDAP URL as described in RFC1959, <em>An LDAP URL format</em>.<P></A>
+
+<A NAME="1126241">
+For example:<P></A>
+<PRE><A NAME="1126242">
+ mgrpErrorsTo: ldap://<I>uid=bjensen, o=Example.com<br></I> mgrpErrorsTo: mailto:sys50@example.com
+</A>
+</PRE>
+<A NAME="1277947">
+OID: <code>2.16.840.1.113730.3.1.26</code><P></A>
+
+<A NAME="1025572">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004701">ces</a><P></A>
+<A NAME="1025705">
+<A NAME="mgrpModerator">
+<B>mgrpModerator</B>
+</a></a>
+<P>
+
+
+<A NAME="1025706">
+Identifies a mailing address to send rejected messages to. This attribute is a Netscape extension used by the Messaging Server to manage mailing lists. This is the address that rejected mail from a mailing list is sent to. <P></A>
+
+<A NAME="1029841">
+The Messaging Server may reject mail either because it is received from an unauthorized domain (as defined by the <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1024569">mgrpAllowedDomain</a> attribute) or is received from an mail address that is not a member of the <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1025144">mgrpAllowedBroadcaster</a> attribute. The Messaging Server will only forward mail to the address(es) identified by this attribute if the <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1025035">mgrpMsgRejectAction</a> attribute includes toModerator<B>. </B>If no instances of this attribute exist on the mailGroup entry, and <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1025035">mgrpMsgRejectAction</a> attribute is set to toModerator, then rejected mail that is supposed to be sent to the moderator is dumped (that is, it is deleted from the mail system with no further human interaction). <P></A>
+
+<A NAME="1029357">
+The Messaging Server expects this attribute to contain either a distinguished name or a rfc822address. If a distinguished name is used, it must represent a mailable entry or entries of type group or groupOfUniqueNames. The distinguished name must be represented in the form of a LDAP URL as described in RFC1959, <em>An LDAP URL format</em>.<P></A>
+
+<A NAME="1029358">
+For example:<P></A>
+<PRE><A NAME="1029359">
+ mgrpErrorsTo: ldap://<I>uid=bjensen, o=Example.com<br></I> mgrpErrorsTo: mailto:sys50@example.com
+</A>
+</PRE>
+<A NAME="1277952">
+OID: <code>2.16.840.1.113730.3.1.33</code><P></A>
+
+<A NAME="1025876">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004701">ces</a><P></A>
+<A NAME="1025878">
+<A NAME="mgrpMsgMaxSize">
+<B>mgrpMsgMaxSize</B>
+</a></a>
+<P>
+
+
+<A NAME="1025879">
+Identifies the maximum message size in bytes that is allowed to be sent to the mail group. This attribute is a Netscape extension used by the Messaging Server to manage mailing lists. The Messaging Server expects one and only one instance of this attribute to exist for every mailGroup entry. For example:<P></A>
+<PRE><A NAME="1025290">
+ mgrpMsgMaxSize: 2000
+</A>
+</PRE>
+<A NAME="1277962">
+OID: <code>2.16.840.1.113730.3.1.32</code><P></A>
+
+<A NAME="1025292">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1025035">
+<A NAME="mgrpMsgRejectAction">
+<B>mgrpMsgRejectAction</B>
+</a></a>
+<P>
+
+
+<A NAME="1024634">
+Identifies the action to be taken when a mail sent to a mail group is rejected. This attribute is a Netscape extension used by the Messaging Server to manage mailing lists.<P></A>
+
+<A NAME="1029427">
+The Messaging Server may reject mail either because it is received from an unauthorized domain (as defined by the <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1024569">mgrpAllowedDomain</a> attribute), is received from an mail address that is not a member of the <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1025144">mgrpAllowedBroadcaster</a> attribute, or is larger than the size permitted on <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1025878">mgrpMsgMaxSize</a>.<P></A>
+
+<A NAME="1031346">
+The Messaging Server expects from zero to two (0-2) instances of this attribute per mailGroup entry. If no instances of this attribute exist on the mailGroup entry, then reply is used by default. Valid keywords for this attribute are:<P></A>
+<ul><A NAME="1029629">
+<LI>reply -- send a failure notice to the sender. The text of the failure notice is stored on the <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#">mgrpMsgRejectTex</a>t attribute.<P>
+</A>
+<A NAME="1029638">
+<LI>bounce -- return the message to the sender with the comment stored on the <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#">mgrpMsgRejectTex</a>t attribute.<P>
+</A>
+<A NAME="1029664">
+<LI>toModerator -- forward the message to the moderator for processing. The moderator is identified by the <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1025705">mgrpModerator</a> attribute.<P>
+</A>
+</ul>
+<A NAME="1029617">
+For example:<P></A>
+<PRE><A NAME="1024635">
+ mgrpMsgRejectAction: bounce
+</A>
+</PRE>
+<A NAME="1278044">
+OID: <code>2.16.840.1.113730.3.1.28</code><P></A>
+
+<A NAME="1024637">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1025981">
+<A NAME="mgrpMsgRejectText">
+<B>mgrpMsgRejectText</B>
+</a></a>
+<P>
+
+
+<A NAME="1025983">
+Identifies the text to be sent by the Messaging Server when mail sent to a mail group is rejected and the mgrpMsgRejectAction attribute is set to either bounce or reply. This attribute is a Netscape extension used by the Messaging Server to manage mailing lists. <P></A>
+
+<A NAME="1030064">
+The Messaging Server expects from zero to one (0-1) instances of this attribute to exist per mailGroup entry. Multiline text may be delimited using $ when represented in LDIF format. If no instances of this attribute exist on the mailGroup entry, then the default text set in the Messaging Server is used for rejected mail.<P></A>
+
+<A NAME="1030130">
+For example:<P></A>
+<PRE><A NAME="1025984">
+ mgrpMsgRejectText: The mail you have sent to the Crazed Bikers$<br> mailing list has been rejected because$you are not a recognized<br> member of the Crazed Bikers group.$Please contact Big Daddy Biker<br> at rsweeny@example.com for information on how to become$a<br> crazed biker.
+</A>
+</PRE>
+<A NAME="1278050">
+OID: <code>2.16.840.1.113730.3.1.29</code><P></A>
+
+<A NAME="1025986">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004701">ces</a><P></A>
+<A NAME="1102613">
+<A NAME="mgrpPassword">
+<B>mgrpPassword</B>
+</a></a>
+<P>
+
+
+<A NAME="1102614">
+Reserved for future use. For example:<P></A>
+<PRE><A NAME="1287369">
+ mgrpPassword: AAAAAA==
+</A>
+</PRE>
+<A NAME="1102615">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">bin</a><P></A>
+<A NAME="1024670">
+<A NAME="mgrpRFC822MailMember">
+<B>mgrpRFC822MailMember</B>
+</a></a>
+<P>
+
+
+<A NAME="1024672">
+Identifies recipients of mail sent to a <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#">mailGroup</a> that are not actually members of the mail group. Conceptually, these mail addresses can be thought of as "CC recipients". That is, this attribute is used to represent mail recipients that cannot be expressed as distinguished names, or who are to be sent mail from this group but who do not have the full privileges of a unique group member. This attribute is a Netscape extension used by the Messaging Server to manage mailing lists.<P></A>
+
+<A NAME="1030207">
+The Messaging Server expects this attribute to contain rfc822 mail addresses using the following form:<P></A>
+<PRE><A NAME="1030236">
+<code> rfc822MailAddress [ % 'full' name] [ %1 (group parameter #1)]<br> [ %2 (group parameter #2)]...</code>
+</A>
+</PRE>
+<A NAME="1030231">
+where:<P></A>
+<ul><A NAME="1030278">
+<LI>rfc822MailAddress is an address such as<P>
+</A>
+</ul><PRE><A NAME="1030338">
+ bjensen@example.com
+</A>
+</PRE><ul><A NAME="1030343">
+<LI>full name is an optional parameter representing the user's full name. This parameter is reserved for future use.<P>
+</A>
+<A NAME="1030396">
+<LI>group parameters are optional parameters that are reserved for future use.<P>
+</A>
+</ul>
+<A NAME="1030305">
+For example:<P></A>
+<PRE><A NAME="1024673">
+ mgrpRFC822MailMember: bjensen@example.com%Babs Jensen
+</A>
+</PRE>
+<A NAME="1278123">
+OID: <code>2.16.840.1.113730.3.1.30</code><P></A>
+
+<A NAME="1024675">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1202056">
+<A NAME="mobile">
+<B>mobile</B>
+</a></a>
+<P>
+
+
+<A NAME="1202057">
+Identifies the entry's mobile or cellular phone number. For example:<P></A>
+<PRE><A NAME="1202058">
+ mobileTelephoneNumber: 415-555-4321
+</A>
+</PRE>
+<A NAME="1202059">
+or:<P></A>
+<PRE><A NAME="1202060">
+ mobile: 415-555-4321
+</A>
+</PRE>
+<A NAME="1202062">
+Abbreviation: mobile<P></A>
+
+<A NAME="1264782">
+OID: <code>0.9.2342.19200300.100.1.41</code><P></A>
+
+<A NAME="1202064">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004703">tel</a><P></A>
+<A NAME="1242555">
+<A NAME="modifiersName">
+<B>modifiersName</B>
+</a></a>
+<P>
+
+
+<A NAME="1242556">
+Contains the distinguished name (dn) of the user that last modified an entry. For example:<P></A>
+<PRE><A NAME="1242557">
+ modifiersName: <I>cn=jdoe, o=example.com</I>
+</A>
+</PRE>
+<A NAME="1263015">
+OID: <code>2.5.18.4</code><P></A>
+
+<A NAME="1242559">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1100403">dn</a><P></A>
+<A NAME="1242117">
+<A NAME="modifyTimestamp">
+<B>modifyTimestamp</B>
+</a></a>
+<P>
+
+
+<A NAME="1242119">
+Undefined.<P></A>
+
+<A NAME="1262948">
+OID: <code>2.5.18.2</code><P></A>
+
+<A NAME="1242126">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1229561">
+<A NAME="multiLineDescription">
+<B>multiLineDescription</B>
+</a></a>
+<P>
+
+
+<A NAME="1229562">
+Provides descriptive text for a mail user. This attribute is a Netscape extension used by Messaging Server. When represented in LDIF format, each line should be separated by a dollar sign ($). The Messaging Server expects 0 or 1 occurrences of this attribute per mail account. For example:<P></A>
+<PRE><A NAME="1229563">
+ multiLineDescription: Account Administrator and$directory manager.
+</A>
+</PRE>
+<A NAME="1229565">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1282059">
+<A NAME="nameForms">
+<B>nameForms</B>
+</a></a>
+<P>
+
+
+<A NAME="1282063">
+Operational, multi-valued attribute that defines the name forms used in a subschema. Each value defines one name form. OID: <code>2.5.21.7</code><P></A>
+
+<A NAME="1282065">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis </a><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1251525">operational</a><P></A>
+<A NAME="1243088">
+<A NAME="namingContexts">
+<B>namingContexts</B>
+</a></a>
+<P>
+
+
+<A NAME="1243089">
+Undefined.<P></A>
+
+<A NAME="1263080">
+OID: <code>1.3.6.1.4.1.1466.101.120.5</code><P></A>
+
+<A NAME="1243092">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1100403">dn</a><P></A>
+<A NAME="1096606">
+<A NAME="netscapeReplicaState">
+<B>netscapeReplicaState</B>
+</a></a>
+<P>
+
+
+<A NAME="1278694">
+This attribute is reserved for use by the Netscape Directory Server and is not included in the <code>slapd.at.conf</code> file. The attribute contains a replica CN and a description of the current state of a directory replication process. The states include the following:<P></A>
+<ul><A NAME="1278883">
+<LI><B>Idle.</B> The synchronization system is not performing work at this time.<P>
+</A>
+<A NAME="1278885">
+<LI><B>Synchronizing.</B> The system is in the process of performing a replication.<P>
+</A>
+<A NAME="1278894">
+<LI><B>Populating.</B> The synchronization system is populating the consumer's directory.<P>
+</A>
+<A NAME="1279072">
+<LI><B>Halted.</B> The synchronization system has stopped.<P>
+</A>
+<A NAME="1279073">
+<LI><B>Unknown.</B> The state of the replication process is unknown.<P>
+</A>
+</ul>
+<A NAME="1279074">
+For example:<P></A>
+<PRE><A NAME="1278705">
+netscapeReplicaState: dirserver.example.com:389/o%3Dmozilla.com idle
+</A>
+</PRE>
+<A NAME="1278700">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1278579">
+<A NAME="newRdn">
+<B>newRdn</B>
+</a></a>
+<P>
+
+
+<A NAME="1096607">
+Contains the new RDN (Relative Distinguished Name) of an entry which is the target of a modRDN or modDN operation. For example:<P></A>
+<PRE><A NAME="1096608">
+ newRdn: <I>cn=Jane Doe</I>
+</A>
+</PRE>
+<A NAME="1257841">
+OID: <code>2.16.840.1.113730.3.1.9</code><P></A>
+
+<A NAME="1100958">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1100403">dn</a><P></A>
+<A NAME="1126531">
+<A NAME="newSuperior">
+<B>newSuperior</B>
+</a></a>
+<P>
+
+
+<A NAME="1126532">
+This attribute gives the name of the entry which becomes the immediate superior of the existing entry, when processing a modDN operation. For example:<P></A>
+<PRE><A NAME="1126533">
+ newSuperior: <I>cn=Jane Doe</I>
+</A>
+</PRE>
+<A NAME="1257875">
+OID: <code>2.16.840.1.113730.3.1.11</code><P></A>
+
+<A NAME="1126631">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1100403">dn</a><P></A>
+<A NAME="1095332">
+<A NAME="ngcomponent">
+<B>ngcomponent</B>
+</a></a>
+<P>
+
+
+<A NAME="1095333">
+Identifies a part of a the news group name. This attribute is a Netscape extension to the standard LDAP schema. It is used by the Collabra server on <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#">nginfo</a> entries to uniquely identify news groups. The format and nature of the information placed on this attribute by the Collabra server is subject to change without notice.<P></A>
+
+<A NAME="1037897">
+For example, the ngcomponent attributes put in place for the comp.sys.mac newsgroup would be:<P></A>
+<PRE><A NAME="1037898">
+ dn: ngcomponent=mac, ngcomponent=sys, ngcomponent=comp,<br> ngcomponent=., <I>o=Example.com<br></I> objectclass: top<br> objectclass: nginfo<br> ngcomponent=mac<br> ngcomponent=sys<br> ngcomponent=comp<br> ngcomponent=.
+</A>
+</PRE>
+<A NAME="1272795">
+OID: <code>2.16.840.1.113730.3.1.196</code><P></A>
+
+<A NAME="1037900">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1100403">dn</a><P></A>
+<A NAME="1036977">
+<A NAME="nsaclrole">
+<B>nsaclrole</B>
+</a></a>
+<P>
+
+
+<A NAME="1037146">
+Identifies the access for individual news group roles (for example, manager, poster, reader, etc). This attribute is a Netscape extension to the standard LDAP schema. It is used by the Collabra server on <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1078583">nginfo</a> entries to identify access control for individual news groups. This attribute is used only on the branch point of the ngcomponent subtree. The format and nature of the information placed on this attribute by the Collabra server is subject to change without notice.<P></A>
+
+<A NAME="1036980">
+For example:<P></A>
+<PRE><A NAME="1036981">
+ nsaclrole: admin:aprv
+</A>
+</PRE>
+<A NAME="1272665">
+OID: <code>2.16.840.1.113730.3.1.192</code><P></A>
+
+<A NAME="1036983">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1104932">
+<A NAME="nsCalAccess">
+<B>nsCalAccess</B>
+</a></a>
+<P>
+
+
+<A NAME="1177104">
+This attribute is reserved for future use.<P></A>
+
+<A NAME="1177105">
+Defines whether a calendar user, administrator, or resource should be allowed or denied access to the Calendar server. For example:<P></A>
+<PRE><A NAME="1120940">
+ nsCalAccess: allow
+</A>
+</PRE>
+<A NAME="1270551">
+OID: <code>2.16.840.1.113730.3.1.112</code><P></A>
+
+<A NAME="1104935">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1177696">
+This attribute is a Netscape extension to the standard LDAP schema used by the Calendar server.<P></A>
+<A NAME="1166044">
+<A NAME="nsCalAccessDomain">
+<B>nsCalAccessDomain</B>
+</a></a>
+<P>
+
+
+<A NAME="1177890">
+This attribute is reserved for future use.<P></A>
+
+<A NAME="1166046">
+Contains the Internet domain or IP address from which the calendar user, administrator, or resource is allowed to access calendar data.<P></A>
+<PRE><A NAME="1120977">
+ nsCalAccessDomain: example.com
+</A>
+</PRE>
+<A NAME="1270575">
+OID: <code>2.16.840.1.113730.3.1.113</code><P></A>
+
+<A NAME="1104940">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1177866">
+This attribute is a Netscape extension to the standard LDAP schema used by the Calendar server.<P></A>
+<A NAME="1104994">
+<A NAME="nsCalAdmd">
+<B>nsCalAdmd</B>
+</a></a>
+<P>
+
+
+<A NAME="1161412">
+This attribute is a Netscape extension to the standard LDAP schema used by the Calendar server. The attribute contains an X.400 Administration Management Domain Name. For example:<P></A>
+<PRE><A NAME="1120980">
+ nsCalAdmd: telemail
+</A>
+</PRE>
+<A NAME="1270587">
+OID: <code>2.16.840.1.113730.3.1.114</code><P></A>
+
+<A NAME="1104995">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1105005">
+<A NAME="nsCalDefaultNoteReminder">
+<B>nsCalDefaultNoteReminder</B>
+</a></a>
+<P>
+
+
+<A NAME="1162561">
+Defines the type (if any) of note reminder sent to a calendar user. The type of reminder can be none (0), visual (1), or visual and audible (2). The Length of the reminder defines the number of minutes before the note expires that the reminder should be sent to the user. The syntax is <code>type:minutes</code>. For example:<P></A>
+<PRE><A NAME="1162562">
+ nsCalDefaultNoteReminder: 1:10
+</A>
+</PRE>
+<A NAME="1270589">
+OID: <code>2.16.840.1.113730.3.1.115</code><P></A>
+
+<A NAME="1105006">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1174630">
+This attribute is a Netscape extension to the standard LDAP schema used by the Calendar server.<P></A>
+<A NAME="1162428">
+<A NAME="nsCalDefaultReminder">
+<B>nsCalDefaultReminder</B>
+</a></a>
+<P>
+
+
+<A NAME="1162430">
+Defines the type (if any) of event reminder sent to calendar event attendees. The type of reminder can be none (0), visual (1), or visual and audible (2). The Length of the reminder defines the number of minutes before the event that the reminder should be sent to event attendees. For example:<P></A>
+<PRE><A NAME="1162431">
+ nsCalDefaultReminder: 1:10
+</A>
+</PRE>
+<A NAME="1270594">
+OID: <code>2.16.840.1.113730.3.1.116</code><P></A>
+
+<A NAME="1162433">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1175363">
+This attribute is a Netscape extension to the standard LDAP schema used by the Calendar server.<P></A>
+<A NAME="1105139">
+<A NAME="nsCalDefaultTaskReminder">
+<B>nsCalDefaultTaskReminder</B>
+</a></a>
+<P>
+
+
+<A NAME="1162515">
+Defines the type (if any) of task reminder sent to a calendar user. The type of reminder can be none (0), visual (1), or visual and audible (2). The Length of the reminder defines the number of minutes before the task is due that the reminder should be sent to the user. For example:<P></A>
+<PRE><A NAME="1162516">
+ nsCalDefaultTaskReminder: 1:10
+</A>
+</PRE>
+<A NAME="1270608">
+OID: <code>2.16.840.1.113730.3.1.117</code><P></A>
+
+<A NAME="1162518">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1175448">
+This attribute is a Netscape extension to the standard LDAP schema used by the Calendar server.<P></A>
+<A NAME="1105164">
+<A NAME="nsCalDisplayPrefs">
+<B>nsCalDisplayPrefs</B>
+</a></a>
+<P>
+
+
+<A NAME="1161965">
+Contains the display preferences for a calendar user or resource. The syntax of this attribute is <code>Flags:StartDay:EndDay:WeekStart:TimeIncrement:ActiveDays:TimeFormat</code>. Flags is no longer used. StartDay is the time in minutes to start the day display. EndDay is the time in minutes to end the day display. WeekStart specifies the first day of the week displayed in the Calendar client, usually Sunday or Monday. TimeIncrement defines the time increment displayed in minutes. ActiveDays specifies which days to display, for example, weekdays only. TimeFormat specifies the time format (AM/PM or 24 hour) to display. In the following example, <code>4</code> represents flags and is not used. The StartDay value (480) is equivalent to 8am, EndDay (1140) is 7pm, WeekStart (0) is Sunday, the TimeIncrement is 15 minutes, the ActiveDays value is set to all, and the TimeFormat is 24 hour.<P></A>
+<PRE><A NAME="1234997">
+ nsCalDisplayPrefs: 4:480:1140:0:15:127:2
+</A>
+</PRE>
+<A NAME="1270696">
+OID: <code>2.16.840.1.113730.3.1.118</code><P></A>
+
+<A NAME="1161784">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1174421">
+This attribute is a Netscape extension to the standard LDAP schema used by the Calendar server.<P></A>
+<A NAME="1164493">
+<A NAME="nsCalFlags">
+<B>nsCalFlags</B>
+</a></a>
+<P>
+
+
+<A NAME="1164494">
+This attribute is a Netscape extension to the standard LDAP schema used by the Calendar server. Reserved for future use.<P></A>
+
+<A NAME="1270698">
+OID: <code>2.16.840.1.113730.3.1.119</code><P></A>
+
+<A NAME="1235001">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1157806">
+<A NAME="nsCalHost">
+<B>nsCalHost</B>
+</a></a>
+<P>
+
+
+<A NAME="1157807">
+This attribute is a Netscape extension to the standard LDAP schema used by the Calendar server. The attribute contains the hostname or IP address of the computer hosting the Calendar server. For example:<P></A>
+<PRE><A NAME="1122178">
+ nsCalHost: calserver.example.com
+</A>
+</PRE>
+<A NAME="1270812">
+OID: <code>2.16.840.1.113730.3.1.120</code><P></A>
+
+<A NAME="1105325">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1105333">
+<A NAME="nsCalLanguageId">
+<B>nsCalLanguageId</B>
+</a></a>
+<P>
+
+
+<A NAME="1162674">
+This attribute is a Netscape extension to the standard LDAP schema used by the Calendar server. The attribute defines the language in which a user, administrator, or resource prefers to receive email notification. For example:<P></A>
+<PRE><A NAME="1122193">
+ nsCalLanguageId: english
+</A>
+</PRE>
+<A NAME="1270838">
+OID: <code>2.16.840.1.113730.3.1.121</code><P></A>
+
+<A NAME="1157843">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1157846">
+<A NAME="nsCalNodeAlias">
+<B>nsCalNodeAlias</B>
+</a></a>
+<P>
+
+
+<A NAME="1157847">
+This attribute is a Netscape extension to the standard LDAP schema used by the Calendar server. The attribute contains the mnemonic name of the node on which a calendar user's information is stored. For example:<P></A>
+<PRE><A NAME="1171879">
+ nsCalNodeAlias: node10000
+</A>
+</PRE>
+<A NAME="1270844">
+OID: <code>2.16.840.1.113730.3.1.122</code><P></A>
+
+<A NAME="1118746">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1118755">
+<A NAME="nsCalNotifMechanism">
+<B>nsCalNotifMechanism</B>
+</a></a>
+<P>
+
+
+<A NAME="1162010">
+Specifies the mechanism used to notify calendar event attendees (usually email). Acceptable values for this attribute are <code>1</code> and <code>0</code> where <code>1</code> means that notification is enabled, and <code>0</code> means that notification is disabled. For example:<P></A>
+<PRE><A NAME="1122226">
+ nsCalNotifMechanism: 0
+</A>
+</PRE>
+<A NAME="1270863">
+OID: <code>2.16.840.1.113730.3.1.123</code><P></A>
+
+<A NAME="1118757">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1175516">
+This attribute is a Netscape extension to the standard LDAP schema used by the Calendar server.<P></A>
+<A NAME="1105631">
+<A NAME="nsCalOperatingPrefs">
+<B>nsCalOperatingPrefs</B>
+</a></a>
+<P>
+
+
+<A NAME="1161868">
+This attribute is a Netscape extension to the standard LDAP schema used by the Calendar server. The attribute defines the operating preferences for a user or resource. Reserved for future use.<P></A>
+
+<A NAME="1270865">
+OID: <code>2.16.840.1.113730.3.1.124</code><P></A>
+
+<A NAME="1161820">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1105739">
+<A NAME="nsCalOrgUnit2">
+<B>nsCalOrgUnit2</B>
+</a></a>
+<P>
+
+
+<A NAME="1161561">
+This attribute is a Netscape extension to the standard LDAP schema used by the Calendar server. The attribute contains the X.400 Organization Unit 2 (OU2) for a user or administrator. For example:<P></A>
+<PRE><A NAME="1122284">
+ nsCalOrgUnit2: marketing
+</A>
+</PRE>
+<A NAME="1270887">
+OID: <code>2.16.840.1.113730.3.1.125</code><P></A>
+
+<A NAME="1105740">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1105752">
+<A NAME="nsCalOrgUnit3">
+<B>nsCalOrgUnit3</B>
+</a></a>
+<P>
+
+
+<A NAME="1161594">
+This attribute is a Netscape extension to the standard LDAP schema used by the Calendar server. The attribute contains the X.400 Organization Unit 3 (OU3) for a user or administrator. For example:<P></A>
+<PRE><A NAME="1122291">
+ nsCalOrgUnit3: sales
+</A>
+</PRE>
+<A NAME="1270897">
+OID: <code>2.16.840.1.113730.3.1.126</code><P></A>
+
+<A NAME="1105753">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1105815">
+<A NAME="nsCalOrgUnit4">
+<B>nsCalOrgUnit4</B>
+</a></a>
+<P>
+
+
+<A NAME="1164929">
+This attribute is a Netscape extension to the standard LDAP schema used by the Calendar server. The attribute contains the X.400 Organization Unit 4 (OU4) for a user or administrator. For example:<P></A>
+<PRE><A NAME="1164930">
+ nsCalOrgUnit4: engineering
+</A>
+</PRE>
+<A NAME="1270918">
+OID: <code>2.16.840.1.113730.3.1.127</code><P></A>
+
+<A NAME="1105816">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1105834">
+<A NAME="nsCalPasswordRequired">
+<B>nsCalPasswordRequired</B>
+</a></a>
+<P>
+
+
+<A NAME="1162629">
+Specifies whether a calendar user must supply a password to access calendar data. Acceptable values are <code>1</code> and <code>0</code>; where <code>1</code> means a password is required, and <code>0</code> means that no password is required. For example:<P></A>
+<PRE><A NAME="1122383">
+ nsCalPasswordRequired: 1
+</A>
+</PRE>
+<A NAME="1270965">
+OID: <code>2.16.840.1.113730.3.1.128</code><P></A>
+
+<A NAME="1105835">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1175590">
+This attribute is a Netscape extension to the standard LDAP schema used by the Calendar server.<P></A>
+<A NAME="1105891">
+<A NAME="nsCalPrmd">
+<B>nsCalPrmd</B>
+</a></a>
+<P>
+
+
+<A NAME="1271009">
+This attribute is a Netscape extension to the standard LDAP schema used by the Calendar server. The attribute contains the X.400 Private Management Domain Name for a user or administrator. For example:<P></A>
+<PRE><A NAME="1271010">
+ nsCalPrmd: example
+</A>
+</PRE>
+<A NAME="1271034">
+OID: <code>2.16.840.1.113730.3.1.129</code><P></A>
+
+<A NAME="1271012">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1105943">
+<A NAME="nsCalRefreshPrefs">
+<B>nsCalRefreshPrefs</B>
+</a></a>
+<P>
+
+
+<A NAME="1165339">
+The attribute defines whether the user's preferences should be refreshed and how often. The syntax for this attribute is <code>on/off:minutes</code>. Acceptable values for <code>on/off</code> are <code>1</code> and <code>0</code>; where <code>1</code> means preferences will be refreshed, and <code>0</code> means preferences won't be refreshed. If the <code>on/off</code> value is set to <code>1</code>, the refresh interval is entered in minutes. In the following example, nsCalRefreshPrefs is set to off:<P></A>
+<PRE><A NAME="1171900">
+ nsCalRefreshPrefs: 0:0
+</A>
+</PRE>
+<A NAME="1271056">
+OID: <code>2.16.840.1.113730.3.1.130</code><P></A>
+
+<A NAME="1105944">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1173593">
+This attribute is a Netscape extension to the standard LDAP schema used by the Calendar server.<P></A>
+<A NAME="1105996">
+<A NAME="nsCalResourceCapacity">
+<B>nsCalResourceCapacity</B>
+</a></a>
+<P>
+
+
+<A NAME="1163461">
+This attribute is a Netscape extension to the standard LDAP schema used by the Calendar server. The attribute defines the capacity of a resource, for example, a conference room. For example:<P></A>
+<PRE><A NAME="1122484">
+ nsCalResourceCapacity: 65
+</A>
+</PRE>
+<A NAME="1271073">
+OID: <code>2.16.840.1.113730.3.1.131</code><P></A>
+
+<A NAME="1209240">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1209242">
+<A NAME="nsCalResourceNumber">
+<B>nsCalResourceNumber</B>
+</a></a>
+<P>
+
+
+<A NAME="1209244">
+This attribute is a Netscape extension to the standard LDAP schema used by the Calendar server. The attribute contains the resource's identification number. For example:<P></A>
+<PRE><A NAME="1165759">
+ nsCalResourceNumber: 6725
+</A>
+</PRE>
+<A NAME="1271092">
+OID: <code>2.16.840.1.113730.3.1.132</code><P></A>
+
+<A NAME="1106037">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1106093">
+<A NAME="nsCalServerVersion">
+<B>nsCalServerVersion</B>
+</a></a>
+<P>
+
+
+<A NAME="1160060">
+This attribute is a Netscape extension to the standard LDAP schema used by the Calendar server. The attribute contains the version number of the Calendar server hosting the calendar user's data. For example:<P></A>
+<PRE><A NAME="1122498">
+ nsCalServerVersion: 1.0
+</A>
+</PRE>
+<A NAME="1271164">
+OID: <code>2.16.840.1.113730.3.1.133</code><P></A>
+
+<A NAME="1106094">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1106115">
+<A NAME="nsCalSysopCanWritePassword">
+<B>nsCalSysopCanWritePassword</B>
+</a></a>
+<P>
+
+
+<A NAME="1162650">
+This attribute is a Netscape extension to the standard LDAP schema used by the Calendar server. The attribute specifies whether the Calendar server administrator can overwrite user, resource, and other administrator passwords. Acceptable values for this attribute are <code>1</code> and <code>0</code> where <code>1</code> means the administrator can overwrite passwords, and <code>0</code> means that the administrator cannot overwrite passwords. For example:<P></A>
+<PRE><A NAME="1171915">
+ nsCalSysopCanWritePassword: 1
+</A>
+</PRE>
+<A NAME="1271166">
+OID: <code>2.16.840.1.113730.3.1.134</code><P></A>
+
+<A NAME="1106116">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1106160">
+<A NAME="nsCalTimezone">
+<B>nsCalTimezone</B>
+</a></a>
+<P>
+
+
+<A NAME="1162695">
+This attribute is a Netscape extension to the standard LDAP schema used by the Calendar server. The attribute contains the current timezone in which the entry is located. For example:<P></A>
+<PRE><A NAME="1122560">
+ nsCalTimezone: PST
+</A>
+</PRE>
+<A NAME="1271168">
+OID: <code>2.16.840.1.113730.3.1.135</code><P></A>
+
+<A NAME="1106161">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1106218">
+<A NAME="nsCalXItemId">
+<B>nsCalXItemId</B>
+</a></a>
+<P>
+
+
+<A NAME="1159973">
+This attribute is a Netscape extension to the standard LDAP schema used by the Calendar server. The attribute contains a unique identifier for an nsCalendarObject represented in the directory. This identification is composed of the identification number of the node on which the calendar user, administrator, or resource's data is stored, and the identification number of the calendar user, administrator, or resource. The format should be <code>NodeId,ItemId</code>. For example:<P></A>
+<PRE><A NAME="1159974">
+ nsCalXItemId: 123,6547
+</A>
+</PRE>
+<A NAME="1271216">
+OID: <code>2.16.840.1.113730.3.1.136</code><P></A>
+
+<A NAME="1106219">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1037693">
+<A NAME="nscreator">
+<B>nscreator</B>
+</a></a>
+<P>
+
+
+<A NAME="1037694">
+Identifies the creator of a news group. This attribute is a Netscape extension to the standard LDAP schema that is used by the Collabra server on <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1078583">nginfo</a> entries to identify a news group creator's uid. The format and nature of the information placed on this attribute by the Collabra server is subject to change without notice.<P></A>
+
+<A NAME="1037696">
+For example:<P></A>
+<PRE><A NAME="1037697">
+ nscreator: admin
+</A>
+</PRE>
+<A NAME="1272746">
+OID: <code>2.16.840.1.113730.3.1.195</code><P></A>
+
+<A NAME="1037699">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1037564">
+<A NAME="nsflags">
+<B>nsflags</B>
+</a></a>
+<P>
+
+
+<A NAME="1037565">
+Reserved for future use.<P></A>
+
+<A NAME="1272737">
+OID: <code>2.16.840.1.113730.3.1.194</code><P></A>
+
+<A NAME="1037567">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1091847">
+<A NAME="nsLicensedFor">
+<B>nsLicensedFor</B>
+</a></a>
+<P>
+
+
+<A NAME="1091848">
+Identifies the Netscape server that the user is licensed to use. The Netscape Administration Server expects each <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#">nsLicenseUser</a> entry to contain zero or more instances of this attribute. Valid keywords for this attribute are currently:<P></A>
+<ul><A NAME="1091850">
+<LI>mail -- the user is a licensed client of the Messaging Server.<P>
+</A>
+<A NAME="1091851">
+<LI>news -- the user is a licensed client of the Collabra Server.<P>
+</A>
+<A NAME="1091852">
+<LI>slapd -- the user is a licensed client of the Directory Server.<P>
+</A>
+<A NAME="1091853">
+<LI>cal -- the user is a licensed client of the Calendar server.<P>
+</A>
+</ul>
+<A NAME="1091854">
+For example:<P></A>
+<PRE><A NAME="1091855">
+ nsLicensedFor: slapd
+</A>
+</PRE>
+<A NAME="1257889">
+OID: <code>2.16.840.1.113730.3.1.36</code><P></A>
+
+<A NAME="1091857">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1091859">
+<A NAME="nsLicenseStartTime">
+<B>nsLicenseStartTime</B>
+</a></a>
+<P>
+
+
+<A NAME="1091860">
+Reserved for future use.<P></A>
+
+<A NAME="1257896">
+OID: <code>2.16.840.1.113730.3.1.37</code><P></A>
+
+<A NAME="1091862">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1091864">
+<A NAME="nsLicenseEndTime">
+<B>nsLicenseEndTime</B>
+</a></a>
+<P>
+
+
+<A NAME="1091865">
+Reserved for future use.<P></A>
+
+<A NAME="1257974">
+OID: <code>2.16.840.1.113730.3.1.38</code><P></A>
+
+<A NAME="1091867">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1092030">
+<A NAME="nsnewsACL">
+<B>nsnewsACL</B>
+</a></a>
+<P>
+
+
+<A NAME="1092031">
+Identifies the access control set for individual news groups. This attribute is a Netscape extension to the standard LDAP schema. It is used by the Collabra server on <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#">nginfo</a> entries to identify access control for individual news groups. The format and nature of the information placed on this attribute by the Collabra server is subject to change without notice.<P></A>
+
+<A NAME="1092033">
+For example:<P></A>
+<PRE><A NAME="1092034">
+ nsnewsACL: 2:*:a:D::admin:bpolk::d:*:a:D::manager:admin::d:
+</A>
+</PRE>
+<A NAME="1272650">
+OID: <code>2.16.840.1.113730.3.1.191</code><P></A>
+
+<A NAME="1092036">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1037277">
+<A NAME="nsprettyname">
+<B>nsprettyname</B>
+</a></a>
+<P>
+
+
+<A NAME="1037278">
+Identifies the pretty name or display name for the news group. This attribute is a Netscape extension to the standard LDAP schema that is used by the Collabra server on <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#">nginfo</a> entries to identify individual news groups. The format and nature of the information placed on this attribute by the Collabra server is subject to change without notice.<P></A>
+
+<A NAME="1037280">
+For example:<P></A>
+<PRE><A NAME="1037281">
+ nsprettyname: MKTG FOR RACHU
+</A>
+</PRE>
+<A NAME="1272668">
+OID: <code>2.16.840.1.113730.3.1.193</code><P></A>
+
+<A NAME="1037283">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1122623">
+<A NAME="ntGroupAttributes">
+<B>ntGroupAttributes</B>
+</a></a>
+<P>
+
+
+<A NAME="1122625">
+Reserved for use by the NT synchronization service to store the attributes of an NT group.<P></A>
+
+<A NAME="1262720">
+OID: <code>1.2.840.113556.1.4.152</code><P></A>
+
+<A NAME="1251757">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">bin</a><P></A>
+<A NAME="1122633">
+<A NAME="ntGroupCreateNewGroup">
+<B>ntGroupCreateNewGroup</B>
+</a></a>
+<P>
+
+
+<A NAME="1122635">
+Reserved for use by the NT synchronization service.<P></A>
+
+<A NAME="1258152">
+OID: <code>2.16.840.1.113730.3.1.45</code><P></A>
+
+<A NAME="1258154">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">Syntax: cis</a><P></A>
+<A NAME="1103799">
+<A NAME="ntGroupDeleteGroup">
+<B>ntGroupDeleteGroup</B>
+</a></a>
+<P>
+
+
+<A NAME="1103800">
+Reserved for use by the NT synchronization service.<P></A>
+
+<A NAME="1258186">
+OID: <code>2.16.840.1.113730.3.1.46</code><P></A>
+
+<A NAME="1258188">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">Syntax: cis</a><P></A>
+<A NAME="1103684">
+<A NAME="ntGroupDomainId">
+<B>ntGroupDomainId</B>
+</a></a>
+<P>
+
+
+<A NAME="1103686">
+Used by the NT synchronization service to store the NT Global Groupname/Domain.<P></A>
+
+<A NAME="1258086">
+OID: <code>2.16.840.1.113730.3.1.44</code><P></A>
+
+<A NAME="1251773">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">Syntax: cis</a><P></A>
+<A NAME="1104232">
+<A NAME="ntGroupId">
+<B>ntGroupId</B>
+</a></a>
+<P>
+
+
+<A NAME="1104233">
+Undefined. <P></A>
+
+<A NAME="1260150">
+OID: <code>2.16.840.1.113730.3.1.110</code><P></A>
+
+<A NAME="1104234">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">Syntax: </a>bin<P></A>
+<A NAME="1283379">
+<A NAME="ntGroupType">
+<B>ntGroupType</B>
+</a></a>
+<P>
+
+
+<A NAME="1283380">
+Two valid values are global or local<P></A>
+
+<A NAME="1283381">
+OID: <code>2.16.840.1.113730.3.1.47</code><P></A>
+
+<A NAME="1283383">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">Syntax: </a>cis<P></A>
+<A NAME="1013839">
+<A NAME="ntUserAcctExpires">
+<B>ntUserAcctExpires</B>
+</a></a>
+<P>
+
+
+<A NAME="1013857">
+Indicates when the entry's Windows NT account will expire. This value is stored as a string in GMT format. For example:<P></A>
+<PRE><A NAME="1013887">
+ ntUserAcctExpires: 19961015203415Z
+</A>
+</PRE>
+<A NAME="1262459">
+OID: <code>1.2.840.113556.1.4.159</code><P></A>
+
+<A NAME="1024626">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis </a><P></A>
+<A NAME="1014052">
+<A NAME="ntUserAuthFlags">
+<B>ntUserAuthFlags</B>
+</a></a>
+<P>
+
+
+<A NAME="1014053">
+Identifies an unsigned long integer that contains the entry's operator privileges on the Windows network. For example:<P></A>
+<PRE><A NAME="1038769">
+ ntUserAuthFlags: AAAAAA==
+</A>
+</PRE>
+<A NAME="1258686">
+OID: <code>2.16.840.1.113730.3.1.60</code><P></A>
+
+<A NAME="1038770">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">bin </a><P></A>
+<A NAME="1038772">
+<A NAME="ntUserBadPwCount">
+<B>ntUserBadPwCount</B>
+</a></a>
+<P>
+
+
+<A NAME="1014169">
+Identifies the number of attempts to log on to the Windows account using an incorrect password. A value of 0xFFFFFFFF represents that the value is unknown. For example:<P></A>
+<PRE><A NAME="1014915">
+ ntUserBadPwCount: AAAAAA==
+</A>
+</PRE>
+<A NAME="1262557">
+OID: <code>1.2.840.113556.1.4.12</code><P></A>
+
+<A NAME="1038807">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">bin </a><P></A>
+<A NAME="1014973">
+<A NAME="ntUserCodePage">
+<B>ntUserCodePage</B>
+</a></a>
+<P>
+
+
+<A NAME="1014989">
+Code page for the user's language of choice. For example:<P></A>
+<PRE><A NAME="1015015">
+ ntUserCodePage: AAAAAA==
+</A>
+</PRE>
+<A NAME="1262625">
+OID: <code>1.2.840.113556.1.4.16</code><P></A>
+
+<A NAME="1246827">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">bin </a><P></A>
+<A NAME="1246829">
+<A NAME="ntUserComment">
+<B>ntUserComment</B>
+</a></a>
+<P>
+
+
+<A NAME="1246830">
+ASCII string representing a description or comments about this entry. For example:<P></A>
+<PRE><A NAME="1015193">
+ ntUserComment: Quality control inspector for the ME2873 <br> product line
+</A>
+</PRE>
+<A NAME="1261310">
+OID: <code>1.2.840.113556.1.4.156</code><P></A>
+
+<A NAME="1038675">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis </a><P></A>
+<A NAME="1015155">
+<A NAME="ntUserCountryCode">
+<B>ntUserCountryCode</B>
+</a></a>
+<P>
+
+
+<A NAME="1015217">
+Country code for the user's language of choice. For example:<P></A>
+<PRE><A NAME="1015224">
+ ntUserCountryCode: AAAAAA==
+</A>
+</PRE>
+<A NAME="1262579">
+OID: <code>1.2.840.113556.1.4.25</code><P></A>
+
+<A NAME="1038682">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis </a><P></A>
+<A NAME="1015239">
+<A NAME="ntUserCreateNewAccount">
+<B>ntUserCreateNewAccount</B>
+</a></a>
+<P>
+
+
+<A NAME="1015245">
+Indicates whether a corresponding NT user account should be created for the new person entry in the Directory Server. ntUserCreateNewAccount can be edited from Directory Server. If ntUserCreateNewAccount is set to True and an NT account does not exist for the specified user name, an NT account will be created. If the attribute is set to False and an NT account does not exist, an error will be logged. If an NT account exists and the attribute is set to False, the existing NT account will be updated. For example:<P></A>
+<PRE><A NAME="1015264">
+ ntUserCreateNewAccount: true
+</A>
+</PRE>
+<A NAME="1258018">
+OID: <code>2.16.840.1.113730.3.1.42</code><P></A>
+
+<A NAME="1258029">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1015309">
+<A NAME="ntUserDeleteAccount">
+<B>ntUserDeleteAccount</B>
+</a></a>
+<P>
+
+
+<A NAME="1015321">
+Indicates whether the NT user account should be deleted when the entry is deleted from the Directory Server. ntUserDeleteAccount can be edited from Directory Server. If the attribute is set to true, the NT user account will be deleted if the entry is deleted from the Directory Server. If the attribute is set to false, the NT user account will not be deleted. See "Deleting NTUser entries" for more information on deleting ntUser entries. For example:<P></A>
+<PRE><A NAME="1015367">
+ ntUserDeleteAccount: true
+</A>
+</PRE>
+<A NAME="1258034">
+OID: <code>2.16.840.1.113730.3.1.43</code><P></A>
+
+<A NAME="1038688">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis </a><P></A>
+<A NAME="1015403">
+<A NAME="ntUserDomainId">
+<B>ntUserDomainId</B>
+</a></a>
+<P>
+
+
+<A NAME="1015422">
+Identifies the NT domain name and user name of the entry in the form NT-domain-name:NT-username. NTUserDomainId can be edited from the Directory Server. For example:<P></A>
+<PRE><A NAME="1015476">
+ ntUserDomainId: workgroup:jsmith
+</A>
+</PRE>
+<A NAME="1258011">
+OID: <code>2.16.840.1.113730.3.1.41</code><P></A>
+
+<A NAME="1038691">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis </a><P></A>
+<A NAME="1015534">
+<A NAME="ntUserFlags">
+<B>ntUserFlags</B>
+</a></a>
+<P>
+
+
+<A NAME="1015550">
+Identifies values that determine several features about the user and their account. For example:<P></A>
+<PRE><A NAME="1015561">
+ ntUserFlags: AQIBAA==
+</A>
+</PRE>
+<A NAME="1262345">
+OID: <code>1.2.840.113556.1.4.38</code><P></A>
+
+<A NAME="1038821">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">bin </a><P></A>
+<A NAME="1015584">
+<A NAME="ntUserHomeDir">
+<B>ntUserHomeDir</B>
+</a></a>
+<P>
+
+
+<A NAME="1015596">
+ASCII string that represents the path of the user's home directory. The string can be null. For example:<P></A>
+<PRE><A NAME="1015610">
+ ntUserHomeDir: c:\u\d78\jsmith\
+</A>
+</PRE>
+<A NAME="1261296">
+OID: <code>1.2.840.113556.1.4.44</code><P></A>
+
+<A NAME="1038694">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis </a><P></A>
+<A NAME="1015624">
+<A NAME="ntUserHomeDirDrive">
+<B>ntUserHomeDirDrive</B>
+</a></a>
+<P>
+
+
+<A NAME="1015648">
+ASCII string that represents the drive letter assigned to the user's home directory. For example:<P></A>
+<PRE><A NAME="1015659">
+ ntUserHomeDirDrive: c:
+</A>
+</PRE>
+<A NAME="1262717">
+OID: <code>1.2.840.113556.1.4.45</code><P></A>
+
+<A NAME="1038697">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis </a><P></A>
+<A NAME="1015682">
+<A NAME="ntUserLastLogoff">
+<B>ntUserLastLogoff</B>
+</a></a>
+<P>
+
+
+<A NAME="1015726">
+Identifies the time of the last logoff. This value is stored as a string in GMT format. For example:<P></A>
+<PRE><A NAME="1015727">
+ ntUserLastLogoff: 19961015203415Z
+</A>
+</PRE>
+<A NAME="1019703">
+Note that if security logging is turned on, then this attribute is updated on synchronization only if some other aspect of the user's entry has changed.<P></A>
+
+<A NAME="1262403">
+OID: <code>1.2.840.113556.1.4.51</code><P></A>
+
+<A NAME="1038700">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis </a><P></A>
+<A NAME="1015722">
+<A NAME="ntUserLastLogon">
+<B>ntUserLastLogon</B>
+</a></a>
+<P>
+
+
+<A NAME="1015750">
+Identifies the time of the last logon. This value is stored as a string in GMT format. For example:<P></A>
+<PRE><A NAME="1015751">
+ ntUserLastLogon: 19961015203415Z
+</A>
+</PRE>
+<A NAME="1019919">
+Note that if security logging is turned on, then this attribute is updated on synchronization only if some other aspect of the user's entry has changed.<P></A>
+
+<A NAME="1262390">
+OID: <code>1.2.840.113556.1.4.52</code><P></A>
+
+<A NAME="1038703">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis </a><P></A>
+<A NAME="1015746">
+<A NAME="ntUserLogonHours">
+<B>ntUserLogonHours</B>
+</a></a>
+<P>
+
+
+<A NAME="1015787">
+Identifies the times during which the user may log on. Time is represented by a one-to-one correspondence between the hour of the week and a bit within the string. For example, bit 0 word 0 is Sunday, 0:00 to 0:59. Bit 1 word 0 is Sunday, 1:00 to 1:59, etc. For example:<P></A>
+<PRE><A NAME="1015803">
+ ntUserLogonHours: ///1000011100000101111111...
+</A>
+</PRE>
+<A NAME="1019921">
+Note that if security logging is turned on, then this attribute is updated on synchronization only if some other aspect of the user's entry has changed.<P></A>
+
+<A NAME="1262547">
+OID: <code>1.2.840.113556.1.4.64</code><P></A>
+
+<A NAME="1038824">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">bin </a><P></A>
+<A NAME="1015839">
+<A NAME="ntUserLogonServer">
+<B>ntUserLogonServer</B>
+</a></a>
+<P>
+
+
+<A NAME="1015859">
+ASCII string that represents the name of the server to which the user's logon requests are sent. Server names should be preceded by two backslashes (\\). Server names of \\* indicate that the logon request can be handled by any logon server. A null string represents that requests are sent to the domain controller. For example:<P></A>
+<PRE><A NAME="1015953">
+ ntUserLogonServer: \\firefly
+</A>
+</PRE>
+<A NAME="1259015">
+OID: <code>2.16.840.1.113730.3.1.65</code><P></A>
+
+<A NAME="1038706">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis </a><P></A>
+<A NAME="1015984">
+<A NAME="ntUserMaxStorage">
+<B>ntUserMaxStorage</B>
+</a></a>
+<P>
+
+
+<A NAME="1015997">
+Maximum amount of disk space the user may use. For example:<P></A>
+<PRE><A NAME="1016004">
+ ntUserMaxStorage: ///////W==
+</A>
+</PRE>
+<A NAME="1262471">
+OID: <code>1.2.840.113556.1.4.76</code><P></A>
+
+<A NAME="1038827">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">bin </a><P></A>
+<A NAME="1016030">
+<A NAME="ntUserNumLogons">
+<B>ntUserNumLogons</B>
+</a></a>
+<P>
+
+
+<A NAME="1016043">
+Identifies the number of successful logons to this account. A value of 0xFFFFFFFF indicates the value is unknown. For example:<P></A>
+<PRE><A NAME="1016085">
+ ntUserNumLogons: WwAAAA==
+</A>
+</PRE>
+<A NAME="1258789">
+OID: <code>2.16.840.1.113730.3.1.64</code><P></A>
+
+<A NAME="1038830">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">bin </a><P></A>
+<A NAME="1021575">
+<A NAME="ntUserParms">
+<B>ntUserParms</B>
+</a></a>
+<P>
+
+
+<A NAME="1021584">
+Unicode string reserved for use by applications. For example:<P></A>
+<PRE><A NAME="1021587">
+ ntUserParms: Temp date is today
+</A>
+</PRE>
+<A NAME="1258702">
+OID: <code>2.16.840.1.113730.3.1.62</code><P></A>
+
+<A NAME="1038709">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis </a><P></A>
+<A NAME="1016157">
+<A NAME="ntUserPasswordExpired">
+<B>ntUserPasswordExpired</B>
+</a></a>
+<P>
+
+
+<A NAME="1259827">
+Identifies if the user's NT password has expired. The value will be zero if the password has not expired, or nonzero if it has. For example:<P></A>
+<PRE><A NAME="1259828">
+ ntUserPasswordExpired: AAAAAA==
+</A>
+</PRE>
+<A NAME="1259829">
+OID: <code>2.16.840.1.113730.3.1.68</code><P></A>
+
+<A NAME="1038833">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">bin </a><P></A>
+<A NAME="1016246">
+<A NAME="ntUserPrimaryGroupId">
+<B>ntUserPrimaryGroupId</B>
+</a></a>
+<P>
+
+
+<A NAME="1016259">
+Identifies the relative ID (RID) of the Primary Global Group for the user. For example:<P></A>
+<PRE><A NAME="1016262">
+ ntUserPrimaryGroupId: AQJAAA==
+</A>
+</PRE>
+<A NAME="1262706">
+OID: <code>1.2.840.113556.1.4.98</code><P></A>
+
+<A NAME="1038836">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">bin </a><P></A>
+<A NAME="1017849">
+<A NAME="ntUserPriv">
+<B>ntUserPriv</B>
+</a></a>
+<P>
+
+
+<A NAME="1017863">
+Identifies the user's level of privilege on the Window's NT Network. For example:<P></A>
+<PRE><A NAME="1017866">
+ ntUserPriv: AgAAAA==
+</A>
+</PRE>
+<A NAME="1258612">
+OID: <code>2.16.840.1.113730.3.1.59</code><P></A>
+
+<A NAME="1038839">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">bin </a><P></A>
+<A NAME="1016298">
+<A NAME="ntUserProfile">
+<B>ntUserProfile</B>
+</a></a>
+<P>
+
+
+<A NAME="1016315">
+Identifies a path to the user's profile. For example:<P></A>
+<PRE><A NAME="1016326">
+ ntUserProfile: c:\u\d78\jsmith\profile.txt
+</A>
+</PRE>
+<A NAME="1259082">
+OID: <code>2.16.840.1.113730.3.1.67</code><P></A>
+
+<A NAME="1038712">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis </a><P></A>
+<A NAME="1016395">
+<A NAME="ntUserScriptPath">
+<B>ntUserScriptPath</B>
+</a></a>
+<P>
+
+
+<A NAME="1016433">
+ASCII string that represents the path to the user's logon script. For example:<P></A>
+<PRE><A NAME="1016470">
+ ntUserScriptPath: c:\u\d78\jsmith\lscript.bat
+</A>
+</PRE>
+<A NAME="1262363">
+OID: <code>1.2.840.113556.1.4.62</code><P></A>
+
+<A NAME="1038715">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis </a><P></A>
+<A NAME="1016531">
+<A NAME="ntUserUniqueId">
+<B>ntUserUniqueId</B>
+</a></a>
+<P>
+
+
+<A NAME="1016564">
+Identifies the unique identifier of an NT user. The identifier uniquely identifies the user to SAM within the domain for all time. For example:<P></A>
+<PRE><A NAME="1016605">
+ ntUserUniqueId: 6AMAAA==
+</A>
+</PRE>
+<A NAME="1259068">
+OID: <code>2.16.840.1.113730.3.1.66</code><P></A>
+
+<A NAME="1038842">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">bin </a><P></A>
+<A NAME="1016632">
+<A NAME="ntUserUnitsPerWeek">
+<B>ntUserUnitsPerWeek</B>
+</a></a>
+<P>
+
+
+<A NAME="1016672">
+Identifies the number of equal length time units to divide the week into in order to compute the length of ntUserLogonHours. For example:<P></A>
+<PRE><A NAME="1016675">
+ ntUserUnitsPerWeek: qAAAAA==
+</A>
+</PRE>
+<A NAME="1258767">
+OID: <code>2.16.840.1.113730.3.1.63</code><P></A>
+
+<A NAME="1038845">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">bin </a><P></A>
+<A NAME="1016696">
+<A NAME="ntUserUsrComment">
+<B>ntUserUsrComment</B>
+</a></a>
+<P>
+
+
+<A NAME="1016715">
+ASCII string representing a description or comments about this entry. For example:<P></A>
+<PRE><A NAME="1016716">
+ ntUserUsrComment: Quality control inspector for the ME2873 <br> product line
+</A>
+</PRE>
+<A NAME="1262251">
+OID: <code>2.16.840.1.113730.3.1.61</code><P></A>
+
+<A NAME="1038718">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis </a><P></A>
+<A NAME="1016728">
+<A NAME="ntUserWorkstations">
+<B>ntUserWorkstations</B>
+</a></a>
+<P>
+
+
+<A NAME="1016750">
+ASCII string that represents the names of workstations from which the user may log on. Up to eight workstations may be specified by separating each with a comma. Use null to allow the user to log on from any workstation. For example:<P></A>
+<PRE><A NAME="1016869">
+ ntUserWorkstations: firefly
+</A>
+</PRE>
+<A NAME="1262383">
+OID: <code>1.2.840.113556.1.4.86</code><P></A>
+
+<A NAME="1038721">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis </a><P></A>
+<A NAME="1281611">
+<A NAME="o">
+<B>o</B>
+</a></a>
+<P>
+
+
+<A NAME="1281612">
+Identifies the name of the organization. For example:<P></A>
+<PRE><A NAME="1281613">
+ organizationName: Example, Inc.
+</A>
+</PRE>
+<A NAME="1281614">
+or:<P></A>
+<PRE><A NAME="1281615">
+ o: Example, Inc
+</A>
+</PRE>
+<A NAME="1281616">
+Abbreviation: o<P></A>
+
+<A NAME="1281617">
+OID: <code>2.5.4.10</code><P></A>
+
+<A NAME="1281619">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1229677">
+<A NAME="objectClass">
+<B>objectClass</B>
+</a></a>
+<P>
+
+
+<A NAME="1229678">
+Reserved for use by the Directory Server.<P></A>
+
+<A NAME="1229681">
+OID: <code>2.5.4.0</code><P></A>
+
+<A NAME="1266934">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1242815">
+<A NAME="objectClasses">
+<B>objectClasses</B>
+</a></a>
+<P>
+
+
+<A NAME="1291515">
+Operational, multi-valued attribute that defines the object classes used in a subschema. Each value defines one object class. <P></A>
+
+<A NAME="1263050">
+OID: <code>2.5.21.6</code><P></A>
+
+<A NAME="1242819">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis </a><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1251525">operational</a><P></A>
+<A NAME="1202192">
+<A NAME="obsoletedByDocument">
+<B>obsoletedByDocument</B>
+</a></a>
+<P>
+
+
+<A NAME="1202193">
+Contains the distinguished name of a document that obsoletes the document entry.<P></A>
+
+<A NAME="1272886">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1100403">dn</a><P></A>
+<A NAME="1202199">
+<A NAME="obsoletesDocument">
+<B>obsoletesDocument</B>
+</a></a>
+<P>
+
+
+<A NAME="1217320">
+Contains the distinguished name of a document that is obsoleted by the document entry.<P></A>
+
+<A NAME="1202203">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1100403">dn</a><P></A>
+<A NAME="1281714">
+<A NAME="organizationalStatus">
+<B>organizationalStatus</B>
+</a></a>
+<P>
+
+
+<A NAME="1214388">
+Specifies a category by which a person is often referred to in an organization. For example:<P></A>
+<PRE><A NAME="1214389">
+ organizationalStatus: researcher
+</A>
+</PRE>
+<A NAME="1266110">
+OID: <code>0.9.2342.19200300.100.1.45</code><P></A>
+
+<A NAME="1240989">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1202220">
+<A NAME="otherMailbox">
+<B>otherMailbox</B>
+</a></a>
+<P>
+
+
+<A NAME="1214414">
+Specifies values for electronic mailbox types other than X.400 and rfc822. For example:<P></A>
+<PRE><A NAME="1202222">
+ otherMailbox: internet $ jdoe@example.com
+</A>
+</PRE>
+<A NAME="1264574">
+OID: <code>0.9.2342.19200300.100.1.22</code><P></A>
+
+<A NAME="1202224">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1241174">
+<A NAME="ou">
+<B>ou</B>
+</a></a>
+<P>
+
+
+<A NAME="1241175">
+Identifies the name of an organizational unit.For example:<P></A>
+<PRE><A NAME="1241176">
+ organizationUnitName: Marketing
+</A>
+</PRE>
+<A NAME="1241177">
+or:<P></A>
+<PRE><A NAME="1241178">
+ ou: Marketing
+</A>
+</PRE>
+<A NAME="1241180">
+Abbreviation: ou<P></A>
+
+<A NAME="1267161">
+OID: <code>2.5.4.11</code><P></A>
+
+<A NAME="1241182">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1005719">
+<A NAME="owner">
+<B>owner</B>
+</a></a>
+<P>
+
+
+<A NAME="1005732">
+Identifies the distinguished name (DN) of the person responsible for the entry. For example:<P></A>
+<PRE><A NAME="1005743">
+ owner: <I>cn=John Smith, o=Netscape Communications Corp., c=US</I>
+</A>
+</PRE>
+<A NAME="1267977">
+OID: <code>2.5.4.32</code><P></A>
+
+<A NAME="1005754">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1100403">dn</a><P></A>
+<A NAME="1003070">
+<A NAME="pager">
+<B>pager</B>
+</a></a>
+<P>
+
+
+<A NAME="1003071">
+Identifies the entry's pager phone number. For example:<P></A>
+<PRE><A NAME="1003777">
+ pagerTelephoneNumber: 415-555-6789
+</A>
+</PRE>
+<A NAME="1011248">
+or:<P></A>
+<PRE><A NAME="1011258">
+ pager: 415-555-6789
+</A>
+</PRE>
+<A NAME="1003795">
+Abbreviation: pager<P></A>
+
+<A NAME="1264789">
+OID: <code>0.9.2342.19200300.100.1.42</code><P></A>
+
+<A NAME="1011303">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004703">tel</a><P></A>
+<A NAME="1157269">
+<A NAME="passwordChange">
+<B>passwordChange</B>
+</a></a>
+<P>
+
+
+<A NAME="1157270">
+Defines whether or not users must, may, or can't change passwords. Valid values include <code>must</code>, <code>may</code>, and <code>no</code>. A value of <code>must</code> means that users will be required to change their password at a designated interval. A value of <code>may</code> indicates that users can change their password. A value of <code>no</code> means that users cannot change their password. For example:<P></A>
+<PRE><A NAME="1157271">
+ passwordChange: <code>no</code>
+</A>
+</PRE>
+<A NAME="1263605">
+OID: <code>2.16.840.1.113730.3.1.102</code><P></A>
+
+<A NAME="1157273">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1157285">
+<A NAME="passwordCheckSyntax">
+<B>passwordCheckSyntax</B>
+</a></a>
+<P>
+
+
+<A NAME="1157402">
+Defines whether password syntax checking is on or off. Acceptable values are <code>1</code> and <code>0</code>; where <code>1</code> means syntax checking is on, and <code>0</code> means that syntax checking is off. For example:<P></A>
+<PRE><A NAME="1157287">
+ passwordCheckSyntax: 0
+</A>
+</PRE>
+<A NAME="1263576">
+OID: <code>2.16.840.1.113730.3.1.103</code><P></A>
+
+<A NAME="1157289">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1155167">
+<A NAME="passwordExp">
+<B>passwordExp</B>
+</a></a>
+<P>
+
+
+<A NAME="1155169">
+Defines whether or not user passwords expire. Acceptable values are <code>1</code> and <code>0</code>; where <code>1</code> means passwords expire, and <code>0</code> means that passwords never expire. For example:<P></A>
+<PRE><A NAME="1155249">
+ passwordExp: 0
+</A>
+</PRE>
+<A NAME="1263339">
+OID: <code>2.16.840.1.113730.3.1.98</code><P></A>
+
+<A NAME="1155171">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1246156">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1103904">
+<A NAME="passwordExpirationTime">
+<B>passwordExpirationTime</B>
+</a></a>
+<P>
+
+
+<A NAME="1166092">
+Defines, in seconds, the time until a user's password expires.<P></A>
+<PRE><A NAME="1166093">
+ passwordExpirationTime: 8640000
+</A>
+</PRE>
+<A NAME="1259845">
+OID: <code>2.16.840.1.113730.3.1.91</code><P></A>
+
+<A NAME="1104141">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis </a><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1251525">operational</a><P></A>
+
+<A NAME="1166110">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1293088">
+<A NAME="passwordExpWarned">
+<B>passwordExpWarned</B>
+</a></a>
+<P>
+
+
+<A NAME="1293090">
+Used by the Directory Server to keep track of password expiration warnings sent to a user. Acceptable values are <code>1</code> and <code>0</code>; where <code>1</code> indicates that a warning has been sent to the user, and <code>0</code> means that no warning has been sent. For example:<P></A>
+<PRE><A NAME="1293091">
+ passwordExpWarned: 0
+</A>
+</PRE>
+<A NAME="1293092">
+OID: <code>2.16.840.1.113730.3.1.92</code><P></A>
+
+<A NAME="1293095">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis </a><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1251525">operational</a><P></A>
+<A NAME="1104144">
+<A NAME="passwordHistory">
+<B>passwordHistory</B>
+</a></a>
+<P>
+
+
+<A NAME="1155016">
+Contains a history of the user's passwords. For example:<P></A>
+<PRE><A NAME="1287441">
+ passwordHistory: AAAAAA==
+</A>
+</PRE>
+<A NAME="1259973">
+OID: <code>2.16.840.1.113730.3.1.96</code><P></A>
+
+<A NAME="1104110">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">bin </a><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1251525">operational</a><P></A>
+
+<A NAME="1166119">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1104470">
+<A NAME="passwordInHistory">
+<B>passwordInHistory</B>
+</a></a>
+<P>
+
+
+<A NAME="1104471">
+If password histories are being kept, the value for this attribute defines how many entries should be stored in the history list. For example:<P></A>
+<PRE><A NAME="1157501">
+ passwordInHistory: 6
+</A>
+</PRE>
+<A NAME="1260030">
+OID: <code>2.16.840.1.113730.3.1.101</code><P></A>
+
+<A NAME="1104473">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1166153">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1156663">
+<A NAME="passwordKeepHistory">
+<B>passwordKeepHistory</B>
+</a></a>
+<P>
+
+
+<A NAME="1156665">
+Defines whether or not password histories should be kept for users. Acceptable values are <code>1</code> and <code>0</code>; where <code>1</code> indicates that histories will be kept, and <code>0</code> means that no histories are kept. For example:<P></A>
+<PRE><A NAME="1156666">
+ passwordKeepHistory: 0
+</A>
+</PRE>
+<A NAME="1263371">
+OID: <code>2.16.840.1.113730.3.1.100</code><P></A>
+
+<A NAME="1156668">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1166196">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1156671">
+<A NAME="passwordLockout">
+<B>passwordLockout</B>
+</a></a>
+<P>
+
+
+<A NAME="1156672">
+Defines whether or not users can be locked out after a succession of failed attempts to bind to the directory. Acceptable values are <code>1</code> and <code>0</code>; where 1 means that users can be locked out, and a value of 0 indicates that users can't be locked out. For example:<P></A>
+<PRE><A NAME="1156673">
+ passwordLockout: 0
+</A>
+</PRE>
+<A NAME="1263488">
+OID: <code>2.16.840.1.113730.3.1.105</code><P></A>
+
+<A NAME="1156675">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1166205">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1104188">
+<A NAME="passwordLockoutDuration">
+<B>passwordLockoutDuration</B>
+</a></a>
+<P>
+
+
+<A NAME="1104189">
+Defines how long, in seconds, to lock users out of the directory. For example:<P></A>
+<PRE><A NAME="1155990">
+ passwordLockoutDuration: 600
+</A>
+</PRE>
+<A NAME="1263555">
+OID: <code>2.16.840.1.113730.3.1.109</code><P></A>
+
+<A NAME="1104190">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1166333">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1166286">
+<A NAME="passwordMaxAge">
+<B>passwordMaxAge</B>
+</a></a>
+<P>
+
+
+<A NAME="1166287">
+Defines, in seconds, how long passwords can be used before they expire.<P></A>
+<PRE><A NAME="1166288">
+ passwordMaxAge: 8640000
+</A>
+</PRE>
+<A NAME="1259984">
+OID: <code>2.16.840.1.113730.3.1.97</code><P></A>
+
+<A NAME="1104336">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1166368">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1104715">
+<A NAME="passwordMaxFailure">
+<B>passwordMaxFailure</B>
+</a></a>
+<P>
+
+
+<A NAME="1104716">
+Tells the server to lock users out after a specified number of failed attempts to bind to the directory. For example:<P></A>
+<PRE><A NAME="1155781">
+ passwordMaxFailure: 3
+</A>
+</PRE>
+<A NAME="1263500">
+OID: <code>2.16.840.1.113730.3.1.106</code><P></A>
+
+<A NAME="1104718">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1166400">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1104413">
+<A NAME="passwordMinLength">
+<B>passwordMinLength</B>
+</a></a>
+<P>
+
+
+<A NAME="1104414">
+Defines the minimum number of characters required for a user's password. For example:<P></A>
+<PRE><A NAME="1156233">
+ passwordMinLength: 6
+</A>
+</PRE>
+<A NAME="1260009">
+OID: <code>2.16.840.1.113730.3.1.99</code><P></A>
+
+<A NAME="1104416">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1166409">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1104754">
+<A NAME="passwordResetDuration">
+<B>passwordResetDuration</B>
+</a></a>
+<P>
+
+
+<A NAME="1157530">
+Defines the time, in seconds, between a user lockout and the time the retry count for the user is reset to zero.<P></A>
+<PRE><A NAME="1157650">
+ passwordResetDuration: 600
+</A>
+</PRE>
+<A NAME="1260081">
+OID: <code>2.16.840.1.113730.3.1.107</code><P></A>
+
+<A NAME="1104757">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1166437">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1103999">
+<A NAME="passwordRetryCount">
+<B>passwordRetryCount</B>
+</a></a>
+<P>
+
+
+<A NAME="1104000">
+Contains the number of times a user has tried to bind to the directory using an incorrect password.<P></A>
+<PRE><A NAME="1154824">
+ passwordRetryCount: 3
+</A>
+</PRE>
+<A NAME="1259924">
+OID: <code>2.16.840.1.113730.3.1.93</code><P></A>
+
+<A NAME="1104001">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis </a><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1251525">operational</a><P></A>
+
+<A NAME="1166462">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1156969">
+<A NAME="passwordUnlock">
+<B>passwordUnlock</B>
+</a></a>
+<P>
+
+
+<A NAME="1157793">
+Specifies whether or not users should be locked out forever after a specified number of failed attempts to bind to the directory. Acceptable values are <code>1</code> and <code>0</code>; where <code>1</code> means users shouldn't be locked out forever, and <code>0</code> means that users should be locked out forever. For example:<P></A>
+<PRE><A NAME="1157794">
+ passwordUnlock: 0
+</A>
+</PRE>
+<A NAME="1263528">
+OID: <code>2.16.840.1.113730.3.1.108</code><P></A>
+
+<A NAME="1156973">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1166485">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1104598">
+<A NAME="passwordWarning">
+<B>passwordWarning</B>
+</a></a>
+<P>
+
+
+<A NAME="1155341">
+Defines, in seconds, when to send a warning message to users about impending password expiration. In the following example, a warning message would be sent to users one day before their password expires.<P></A>
+<PRE><A NAME="1155343">
+ passwordWarning: 86400
+</A>
+</PRE>
+<A NAME="1263428">
+OID: <code>2.16.840.1.113730.3.1.104</code><P></A>
+
+<A NAME="1155421">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1166523">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1202229">
+<A NAME="personalSignature">
+<B>personalSignature</B>
+</a></a>
+<P>
+
+
+<A NAME="1202230">
+A signature file, in binary format, for the entry. For example:<P></A>
+<PRE><A NAME="1266693">
+ personalSignature: AAAAAA==
+</A>
+</PRE>
+<A NAME="1287454">
+OID: <code>0.9.2342.19200300.100.1.53</code><P></A>
+
+<A NAME="1202233">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">bin</a><P></A>
+<A NAME="1202238">
+<A NAME="personalTitle">
+<B>personalTitle</B>
+</a></a>
+<P>
+
+
+<A NAME="1214489">
+Specifies a personal title for a person. Examples of personal titles are "Ms", "Dr", "Prof" and "Rev".<P></A>
+<PRE><A NAME="1202240">
+ personalTitle: Mr
+</A>
+</PRE>
+<A NAME="1264740">
+OID: <code>0.9.2342.19200300.100.1.40</code><P></A>
+
+<A NAME="1202242">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1202247">
+<A NAME="photo">
+<B>photo</B>
+</a></a>
+<P>
+
+
+<A NAME="1202248">
+Contains a photo, in binary form, of the entry. For example:<P></A>
+<PRE><A NAME="1286389">
+ photo: AAAAAA==
+</A>
+</PRE>
+<A NAME="1266307">
+OID: <code>0.9.2342.19200300.100.1.7</code><P></A>
+
+<A NAME="1202251">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">bin</a><P></A>
+<A NAME="1003072">
+<A NAME="physicalDeliveryOfficeName">
+<B>physicalDeliveryOfficeName</B>
+</a></a>
+<P>
+
+
+<A NAME="1003073">
+Identifies the name of the city or village where a physical delivery office is located. For example:<P></A>
+<PRE><A NAME="1003804">
+ physicalDeliveryOfficeName: Santa Clara
+</A>
+</PRE>
+<A NAME="1267563">
+OID: <code>2.5.4.19</code><P></A>
+
+<A NAME="1107471">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1246531">
+<A NAME="pipcompassservers">
+<B>pipcompassservers</B>
+</a></a>
+<P>
+
+
+<A NAME="1246532">
+Undefined.<P></A>
+
+<A NAME="1271255">
+OID: <code>2.16.840.1.113730.3.1.138</code><P></A>
+
+<A NAME="1107499">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236180">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1111357">
+<A NAME="pipformat">
+<B>pipformat</B>
+</a></a>
+<P>
+
+
+<A NAME="1119006">
+Attribute used by the compass server to define the format of the free text search profile update sent to the user.<P></A>
+
+<A NAME="1271403">
+OID: <code>2.16.840.1.113730.3.1.144</code><P></A>
+
+<A NAME="1111360">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1246338">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1246341">
+<A NAME="pipfrequency">
+<B>pipfrequency</B>
+</a></a>
+<P>
+
+
+<A NAME="1246342">
+Attribute used by the compass server to describe how often a user receives My Compass newsletters. <P></A>
+
+<A NAME="1271346">
+OID: <code>2.16.840.1.113730.3.1.142</code><P></A>
+
+<A NAME="1111364">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236223">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1113190">
+<A NAME="pipgroup">
+<B>pipgroup</B>
+</a></a>
+<P>
+
+
+<A NAME="1119538">
+Undefined.<P></A>
+
+<A NAME="1271479">
+OID: <code>2.16.840.1.113730.3.1.158</code><P></A>
+
+<A NAME="1113191">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236260">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1111369">
+<A NAME="piphour">
+<B>piphour</B>
+</a></a>
+<P>
+
+
+<A NAME="1119581">
+Attribute used by the compass server to define the hours during the day that a user receives free text search profile updates.<P></A>
+
+<A NAME="1271454">
+OID: <code>2.16.840.1.113730.3.1.145</code><P></A>
+
+<A NAME="1111370">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236306">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1237689">
+<A NAME="pipidstcount">
+<B>pipidstcount</B>
+</a></a>
+<P>
+
+
+<A NAME="1237690">
+Attribute used by the compass server to define the last unique ID used by the user. <P></A>
+
+<A NAME="1271485">
+OID: <code>2.16.840.1.113730.3.1.159</code><P></A>
+
+<A NAME="1113341">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236324">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1113479">
+<A NAME="pipirlist">
+<B>pipirlist</B>
+</a></a>
+<P>
+
+
+<A NAME="1119793">
+Attribute used by the compass server to contain domains and newsgroups a user wishes to monitor. <P></A>
+
+<A NAME="1271508">
+OID: <code>2.16.840.1.113730.3.1.150</code><P></A>
+
+<A NAME="1113480">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237824">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1237828">
+<A NAME="pipiroption">
+<B>pipiroption</B>
+</a></a>
+<P>
+
+
+<A NAME="1237829">
+Attribute used by the compass server to define whether or not all entries in pipIrList will be updated or excluded from updates.<P></A>
+
+<A NAME="1271566">
+OID: <code>2.16.840.1.113730.3.1.151</code><P></A>
+
+<A NAME="1113621">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236383">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1112574">
+<A NAME="piplastcount">
+<B>piplastcount</B>
+</a></a>
+<P>
+
+
+<A NAME="1237876">
+Attribute used by the compass server to define the number of matches that occurred during the last update.<P></A>
+
+<A NAME="1271585">
+OID: <code>2.16.840.1.113730.3.1.153</code><P></A>
+
+<A NAME="1112575">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1246647">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1246650">
+<A NAME="pipmaxhits">
+<B>pipmaxhits</B>
+</a></a>
+<P>
+
+
+<A NAME="1246651">
+Attribute used by the compass server to define the maximum number of documents returned for each free text search profile update. <P></A>
+
+<A NAME="1271604">
+OID: <code>2.16.840.1.113730.3.1.146</code><P></A>
+
+<A NAME="1173472">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236422">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1111582">
+<A NAME="pipmedium">
+<B>pipmedium</B>
+</a></a>
+<P>
+
+
+<A NAME="1237949">
+Attribute used by the compass server to describes the medium used to send information to the user about updates on free text search profiles. <P></A>
+
+<A NAME="1271368">
+OID: <code>2.16.840.1.113730.3.1.143</code><P></A>
+
+<A NAME="1111583">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236583">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1236460">
+<A NAME="pipnotify">
+<B>pipnotify</B>
+</a></a>
+<P>
+
+
+<A NAME="1119923">
+Undefined.<P></A>
+
+<A NAME="1271613">
+OID: <code>2.16.840.1.113730.3.1.156</code><P></A>
+
+<A NAME="1236507">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236602">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1236511">
+<A NAME="pipprivilege">
+<B>pipprivilege</B>
+</a></a>
+<P>
+
+
+<A NAME="1236512">
+Undefined.<P></A>
+
+<A NAME="1271668">
+OID: <code>2.16.840.1.113730.3.1.157</code><P></A>
+
+<A NAME="1112990">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236630">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1112443">
+<A NAME="pippwp">
+<B>pippwp</B>
+</a></a>
+<P>
+
+
+<A NAME="1238042">
+Attribute used by the compass server that contains the address of a Personal Web Page (PWP) database.<P></A>
+
+<A NAME="1271682">
+OID: <code>2.16.840.1.113730.3.1.152</code><P></A>
+
+<A NAME="1112444">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236643">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1118693">
+<A NAME="pipreservedces1">
+<B>pipreservedces1</B>
+</a></a>
+<P>
+
+
+<A NAME="1120046">
+Attribute reserved for future use for the Netscape Compass Server.<P></A>
+
+<A NAME="1271719">
+OID: <code>2.16.840.1.113730.3.1.188</code><P></A>
+
+<A NAME="1118694">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004701">ces</a><P></A>
+
+<A NAME="1236680">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1118699">
+<A NAME="pipreservedces2">
+<B>pipreservedces2</B>
+</a></a>
+<P>
+
+
+<A NAME="1238136">
+Attribute reserved for future use for the Netscape Compass Server.<P></A>
+
+<A NAME="1271725">
+OID: <code>2.16.840.1.113730.3.1.189</code><P></A>
+
+<A NAME="1118700">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004701">ces</a><P></A>
+
+<A NAME="1236693">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1118705">
+<A NAME="pipreservedces3">
+<B>pipreservedces3</B>
+</a></a>
+<P>
+
+
+<A NAME="1238138">
+Attribute reserved for future use for the Netscape Compass Server.<P></A>
+
+<A NAME="1271783">
+OID: <code>2.16.840.1.113730.3.1.190</code><P></A>
+
+<A NAME="1118706">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004701">ces</a><P></A>
+
+<A NAME="1236718">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1118350">
+<A NAME="pipreservedcis1">
+<B>pipreservedcis1</B>
+</a></a>
+<P>
+
+
+<A NAME="1238140">
+Attribute reserved for future use for the Netscape Compass Server.<P></A>
+
+<A NAME="1271796">
+OID: <code>2.16.840.1.113730.3.1.182</code><P></A>
+
+<A NAME="1118351">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236762">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1118356">
+<A NAME="pipreservedcis2">
+<B>pipreservedcis2</B>
+</a></a>
+<P>
+
+
+<A NAME="1238144">
+Attribute reserved for future use for the Netscape Compass Server.<P></A>
+
+<A NAME="1271840">
+OID: <code>2.16.840.1.113730.3.1.183</code><P></A>
+
+<A NAME="1118357">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236799">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1118362">
+<A NAME="pipreservedcis3">
+<B>pipreservedcis3</B>
+</a></a>
+<P>
+
+
+<A NAME="1238146">
+Attribute reserved for future use for the Netscape Compass Server.<P></A>
+
+<A NAME="1271850">
+OID: <code>2.16.840.1.113730.3.1.184</code><P></A>
+
+<A NAME="1118363">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236816">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1118368">
+<A NAME="pipreservedcis4">
+<B>pipreservedcis4</B>
+</a></a>
+<P>
+
+
+<A NAME="1238148">
+Attribute reserved for future use for the Netscape Compass Server.<P></A>
+
+<A NAME="1271856">
+OID: <code>2.16.840.1.113730.3.1.185</code><P></A>
+
+<A NAME="1118369">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236851">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1118374">
+<A NAME="pipreservedcis5">
+<B>pipreservedcis5</B>
+</a></a>
+<P>
+
+
+<A NAME="1238150">
+Attribute reserved for future use for the Netscape Compass Server.<P></A>
+
+<A NAME="1271872">
+OID: <code>2.16.840.1.113730.3.1.186</code><P></A>
+
+<A NAME="1118375">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236870">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1118380">
+<A NAME="pipreservedcis6">
+<B>pipreservedcis6</B>
+</a></a>
+<P>
+
+
+<A NAME="1238152">
+Attribute reserved for future use for the Netscape Compass Server.<P></A>
+
+<A NAME="1271882">
+OID: <code>2.16.840.1.113730.3.1.187</code><P></A>
+
+<A NAME="1118381">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236893">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1111729">
+<A NAME="pipresultset">
+<B>pipresultset</B>
+</a></a>
+<P>
+
+
+<A NAME="1238541">
+Attribute used by the compass server that contains a list of attributes about which the user wants to receive updates. <P></A>
+
+<A NAME="1271899">
+OID: <code>2.16.840.1.113730.3.1.147</code><P></A>
+
+<A NAME="1111730">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236920">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1111947">
+<A NAME="pipsortorder">
+<B>pipsortorder</B>
+</a></a>
+<P>
+
+
+<A NAME="1238667">
+Attribute used by the compass server that contains the sort order of the information in the summary report of the free text search profile update. <P></A>
+
+<A NAME="1271955">
+OID: <code>2.16.840.1.113730.3.1.148</code><P></A>
+
+<A NAME="1111948">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236950">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1114647">
+<A NAME="pipstatus">
+<B>pipstatus</B>
+</a></a>
+<P>
+
+
+<A NAME="1238753">
+Attribute used by the compass server to define whether a personal interest profile is enabled or disabled. <P></A>
+
+<A NAME="1271286">
+OID: <code>2.16.840.1.113730.3.1.140</code><P></A>
+
+<A NAME="1114648">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236989">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1116402">
+<A NAME="pipstcategory">
+<B>pipstcategory</B>
+</a></a>
+<P>
+
+
+<A NAME="1238824">
+Attribute used by the compass server that contains the categories or search strings a user is interested in. <P></A>
+
+<A NAME="1271969">
+OID: <code>2.16.840.1.113730.3.1.171</code><P></A>
+
+<A NAME="1116403">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237014">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1116837">
+<A NAME="pipstformat">
+<B>pipstformat</B>
+</a></a>
+<P>
+
+
+<A NAME="1238895">
+Attribute used by the compass server to describe the format of the category search profile update sent to a user. <P></A>
+
+<A NAME="1272000">
+OID: <code>2.16.840.1.113730.3.1.174</code><P></A>
+
+<A NAME="1116838">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237031">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1116521">
+<A NAME="pipstfrequency">
+<B>pipstfrequency</B>
+</a></a>
+<P>
+
+
+<A NAME="1120346">
+Attribute used by the compass server to define the frequency that a user receives update alerts. <P></A>
+
+<A NAME="1272198">
+OID: <code>2.16.840.1.113730.3.1.172</code><P></A>
+
+<A NAME="1272200">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237041">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1116707">
+<A NAME="pipsthour">
+<B>pipsthour</B>
+</a></a>
+<P>
+
+
+<A NAME="1120383">
+Attribute used by the compass server to define the hours during the day that a user receives free category profile updates.<P></A>
+
+<A NAME="1272250">
+OID: <code>2.16.840.1.113730.3.1.175</code><P></A>
+
+<A NAME="1116708">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237070">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1115462">
+<A NAME="pipstid">
+<B>pipstid</B>
+</a></a>
+<P>
+
+
+<A NAME="1120405">
+Attribute used by the compass server to contain the unique ID of a search topic included in a personal interest profile.<P></A>
+
+<A NAME="1272264">
+OID: <code>2.16.840.1.113730.3.1.160</code><P></A>
+
+<A NAME="1115463">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237108">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1115769">
+<A NAME="pipstinterest">
+<B>pipstinterest</B>
+</a></a>
+<P>
+
+
+<A NAME="1120445">
+Attribute used by the compass server to describe the importance to a user of each individual search topic in a personal interest profile. <P></A>
+
+<A NAME="1272273">
+OID: <code>2.16.840.1.113730.3.1.164</code><P></A>
+
+<A NAME="1115770">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237118">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1117562">
+<A NAME="pipstirlist">
+<B>pipstirlist</B>
+</a></a>
+<P>
+
+
+<A NAME="1120460">
+Attribute used by the compass server to contain domains and newsgroups a user wishes to monitor.<P></A>
+
+<A NAME="1272285">
+OID: <code>2.16.840.1.113730.3.1.180</code><P></A>
+
+<A NAME="1117563">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237149">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1117790">
+<A NAME="pipstiroption">
+<B>pipstiroption</B>
+</a></a>
+<P>
+
+
+<A NAME="1120493">
+Attribute used by the compass server to define whether or not all entries in pipStIrList will be updated or excluded from updates.<P></A>
+
+<A NAME="1272306">
+OID: <code>2.16.840.1.113730.3.1.181</code><P></A>
+
+<A NAME="1237168">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237182">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1237172">
+<A NAME="pipstlastcount">
+<B>pipstlastcount</B>
+</a></a>
+<P>
+
+
+<A NAME="1237173">
+Attribute used by the compass server that contains the number of category matches during the last update of a personal interest profile. <P></A>
+
+<A NAME="1272312">
+OID: <code>2.16.840.1.113730.3.1.168</code><P></A>
+
+<A NAME="1116157">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237189">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1117134">
+<A NAME="pipstmaxhits">
+<B>pipstmaxhits</B>
+</a></a>
+<P>
+
+
+<A NAME="1120565">
+Attribute used by the compass server that defines the maximum number of documents returned for each category search profile update.<P></A>
+
+<A NAME="1272354">
+OID: <code>2.16.840.1.113730.3.1.176</code><P></A>
+
+<A NAME="1117135">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237205">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1117140">
+<A NAME="pipstmedium">
+<B>pipstmedium</B>
+</a></a>
+<P>
+
+
+<A NAME="1120568">
+Attribute used by the compass server that describes the medium used to send information to a user about updates on category search profiles.<P></A>
+
+<A NAME="1272360">
+OID: <code>2.16.840.1.113730.3.1.173</code><P></A>
+
+<A NAME="1117141">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237235">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1115468">
+<A NAME="pipstname">
+<B>pipstname</B>
+</a></a>
+<P>
+
+
+<A NAME="1120598">
+Attribute used by the compass server that contains an arbitrary name created by a user to describe a search topic.<P></A>
+
+<A NAME="1272404">
+OID: <code>2.16.840.1.113730.3.1.161</code><P></A>
+
+<A NAME="1115469">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237246">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1115898">
+<A NAME="pipstprivacy">
+<B>pipstprivacy</B>
+</a></a>
+<P>
+
+
+<A NAME="1120637">
+Attribute used by the compass server that defines whether queries of this entry should be allowed or disallowed. <P></A>
+
+<A NAME="1272410">
+OID: <code>2.16.840.1.113730.3.1.166</code><P></A>
+
+<A NAME="1115899">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237266">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1115474">
+<A NAME="pipstquery">
+<B>pipstquery</B>
+</a></a>
+<P>
+
+
+<A NAME="1120668">
+Undefined.<P></A>
+
+<A NAME="1272438">
+OID: <code>2.16.840.1.113730.3.1.162</code><P></A>
+
+<A NAME="1115475">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237271">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1117321">
+<A NAME="pipstresultset">
+<B>pipstresultset</B>
+</a></a>
+<P>
+
+
+<A NAME="1120684">
+Attribute used by the compass server that contains a list of attributes about which a user wants to receive updates.<P></A>
+
+<A NAME="1272625">
+OID: <code>2.16.840.1.113730.3.1.177</code><P></A>
+
+<A NAME="1117322">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237300">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1117327">
+<A NAME="pipstsortorder">
+<B>pipstsortorder</B>
+</a></a>
+<P>
+
+
+<A NAME="1120687">
+Attribute used by the compass server that contains the sort order of the information in the summary report of a category search profile update.<P></A>
+
+<A NAME="1272444">
+OID: <code>2.16.840.1.113730.3.1.178</code><P></A>
+
+<A NAME="1117328">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237305">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1116027">
+<A NAME="pipststatus">
+<B>pipststatus</B>
+</a></a>
+<P>
+
+
+<A NAME="1120695">
+Attribute used by the compass server that defines the status of the personal interest profile. <P></A>
+
+<A NAME="1272485">
+OID: <code>2.16.840.1.113730.3.1.167</code><P></A>
+
+<A NAME="1116028">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237322">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1115480">
+<A NAME="pipsttaxonomy">
+<B>pipsttaxonomy</B>
+</a></a>
+<P>
+
+
+<A NAME="1120736">
+Attribute used by the compass server that contains the taxonomy ID.<P></A>
+
+<A NAME="1272491">
+OID: <code>2.16.840.1.113730.3.1.163</code><P></A>
+
+<A NAME="1115481">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237358">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1117445">
+<A NAME="pipsttimestamp">
+<B>pipsttimestamp</B>
+</a></a>
+<P>
+
+
+<A NAME="1120770">
+Attribute used by the compass server that contains the date the category search profile was last updated for a user.<P></A>
+
+<A NAME="1272500">
+OID: <code>2.16.840.1.113730.3.1.179</code><P></A>
+
+<A NAME="1117446">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237387">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1115516">
+<A NAME="pipsttotalcount">
+<B>pipsttotalcount</B>
+</a></a>
+<P>
+
+
+<A NAME="1120801">
+Attribute used by the compass server that contains the number of category matches to date. <P></A>
+
+<A NAME="1272537">
+OID: <code>2.16.840.1.113730.3.1.169</code><P></A>
+
+<A NAME="1115517">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237396">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1115522">
+<A NAME="pipsttotalrun">
+<B>pipsttotalrun</B>
+</a></a>
+<P>
+
+
+<A NAME="1120812">
+Attribute used by the compass server that contains the number of category search updates performed to date.<P></A>
+
+<A NAME="1272560">
+OID: <code>2.16.840.1.113730.3.1.170</code><P></A>
+
+<A NAME="1115523">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237423">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1116285">
+<A NAME="pipsttype">
+<B>pipsttype</B>
+</a></a>
+<P>
+
+
+<A NAME="1120825">
+Attribute used by the compass server that defines whether a search is a category search or a free text search. <P></A>
+
+<A NAME="1272566">
+OID: <code>2.16.840.1.113730.3.1.165</code><P></A>
+
+<A NAME="1116286">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237434">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1117682">
+<A NAME="piptimestamp">
+<B>piptimestamp</B>
+</a></a>
+<P>
+
+
+<A NAME="1120828">
+Attribute used by the compass server that contains the date the free text search profile was last updated for this user.<P></A>
+
+<A NAME="1272571">
+OID: <code>2.16.840.1.113730.3.1.149</code><P></A>
+
+<A NAME="1112096">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237497">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1237470">
+<A NAME="piptotalcount">
+<B>piptotalcount</B>
+</a></a>
+<P>
+
+
+<A NAME="1237471">
+Attribute used by the compass server that contains the number of matches that occurred during all updates to date.<P></A>
+
+<A NAME="1272577">
+OID: <code>2.16.840.1.113730.3.1.154</code><P></A>
+
+<A NAME="1112775">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237516">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1112780">
+<A NAME="piptotalrun">
+<B>piptotalrun</B>
+</a></a>
+<P>
+
+
+<A NAME="1120866">
+Attribute used by the compass server that contains the total number of personal interest profile updates to date.<P></A>
+
+<A NAME="1272619">
+OID: <code>2.16.840.1.113730.3.1.155</code><P></A>
+
+<A NAME="1112781">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237538">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1110777">
+<A NAME="pipuid">
+<B>pipuid</B>
+</a></a>
+<P>
+
+
+<A NAME="1120876">
+Attribute used by the compass server that contains the user ID of the person to whom a personal interest profile belongs.<P></A>
+
+<A NAME="1271249">
+OID: <code>2.16.840.1.113730.3.1.137</code><P></A>
+
+<A NAME="1110778">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237569">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1107663">
+<A NAME="pipuniqueid">
+<B>pipuniqueid</B>
+</a></a>
+<P>
+
+
+<A NAME="1239397">
+Attribute used by the compass server that contains the unique ID of a compass user. <P></A>
+
+<A NAME="1271284">
+OID: <code>2.16.840.1.113730.3.1.139</code><P></A>
+
+<A NAME="1108334">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237586">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1108439">
+<A NAME="pipusertype">
+<B>pipusertype</B>
+</a></a>
+<P>
+
+
+<A NAME="1120926">
+Attribute used by the compass server that describes the type of a compass user.<P></A>
+
+<A NAME="1271340">
+OID: <code>2.16.840.1.113730.3.1.141</code><P></A>
+
+<A NAME="1108473">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237595">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1230025">
+<A NAME="postalAddress">
+<B>postalAddress</B>
+</a></a>
+<P>
+
+
+<A NAME="1230026">
+Identifies the entry's mailing address. This field is intended to include multiple lines. When represented in LDIF format, each line should be separated by a dollar sign ($). For example:<P></A>
+<PRE><A NAME="1230027">
+ postalAddress: 1234 Ridgeway Drive$Santa Clara, CA$99555
+</A>
+</PRE>
+<A NAME="1230030">
+To represent an actual dollar sign ($) or backslash (\) within this text, use the escaped hex values \24 and \5c respectively. For example, to represent the string:<P></A>
+<PRE><A NAME="1230031">
+ The dollar ($) value can be found <br> in the c:\cost file.
+</A>
+</PRE>
+<A NAME="1230032">
+provide the string:<P></A>
+<PRE><A NAME="1230033">
+ The dollar (\24) value can be found$in the c:\5ccost file.
+</A>
+</PRE>
+<A NAME="1267416">
+OID: <code>2.5.4.16</code><P></A>
+
+<A NAME="1267484">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1230036">
+<A NAME="postalCode">
+<B>postalCode</B>
+</a></a>
+<P>
+
+
+<A NAME="1230037">
+Identifies the entry's zip code in the United States. For example:<P></A>
+<PRE><A NAME="1230038">
+ postalCode: 95050
+</A>
+</PRE>
+<A NAME="1267530">
+OID: <code>2.5.4.17</code><P></A>
+
+<A NAME="1230040">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1230043">
+<A NAME="postOfficeBox">
+<B>postOfficeBox</B>
+</a></a>
+<P>
+
+
+<A NAME="1230044">
+Identifies the entry's P.O. Box. For example:<P></A>
+<PRE><A NAME="1230045">
+ postOfficeBox: P.O. Box 1234
+</A>
+</PRE>
+<A NAME="1267556">
+OID: <code>2.5.4.18</code><P></A>
+
+<A NAME="1230047">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1202605">
+<A NAME="preferredDeliveryMethod">
+<B>preferredDeliveryMethod</B>
+</a></a>
+<P>
+
+
+<A NAME="1202606">
+Identifies the entry's preferred contact or delivery method. For example:<P></A>
+<PRE><A NAME="1202607">
+ preferredDeliveryMethod: telephone
+</A>
+</PRE>
+<A NAME="1267850">
+OID: <code>2.5.4.28</code><P></A>
+
+<A NAME="1202609">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1103495">
+<A NAME="preferredLanguage">
+<B>preferredLanguage</B>
+</a></a>
+<P>
+
+
+<A NAME="1103496">
+Defines a person's preffered written or spoken language. The value for this attribute should conform to the syntax for HTTP Accept-Language header values.<P></A>
+
+<A NAME="1257981">
+OID: <code>2.16.840.1.113730.3.1.39</code><P></A>
+
+<A NAME="1103586">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1202620">
+<A NAME="presentationAddress">
+<B>presentationAddress</B>
+</a></a>
+<P>
+
+
+<A NAME="1206932">
+Contains an OSI presentation address for the entry. The presentation address consists of an OSI Network Address and up to three selectors, one each for use by the transport, session, and presentation entities. For example:<P></A>
+<PRE><A NAME="1202622">
+ presentationAddress: TELEX+00726322+RFC-1006+02+130.59.2.1
+</A>
+</PRE>
+<A NAME="1267857">
+OID: <code>2.5.4.29</code><P></A>
+
+<A NAME="1202624">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004701">ces</a><P></A>
+<A NAME="1241471">
+<A NAME="protocolInformation">
+<B>protocolInformation</B>
+</a></a>
+<P>
+
+
+<A NAME="1241473">
+Undefined.<P></A>
+
+<A NAME="1268174">
+OID: <code>2.5.4.48</code><P></A>
+
+<A NAME="1245387">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1245389">
+<A NAME="reciprocalNamingLink">
+<B>reciprocalNamingLink</B>
+</a></a>
+<P>
+
+
+<A NAME="1235430">
+Undefined.<P></A>
+
+<A NAME="1235433">
+Syntax: dn<P></A>
+<A NAME="1100037">
+<A NAME="ref">
+<B>ref</B>
+</a></a>
+<P>
+
+
+<A NAME="1100061">
+Used in LDAPv3 to support smart referrals. Contains an LDAP URL in the format ldap://servername:portnumber/dn. The portnumber is optional. For example:<P></A>
+<PRE><A NAME="1202639">
+ ref: ldap://mozilla/<I>cn=John Doe, o=Example.com</I>
+</A>
+</PRE>
+<A NAME="1257878">
+OID: <code>2.16.840.1.113730.3.1.34</code><P></A>
+
+<A NAME="1100064">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004701">ces</a><P></A>
+<A NAME="1202644">
+<A NAME="registeredAddress">
+<B>registeredAddress</B>
+</a></a>
+<P>
+
+
+<A NAME="1206709">
+This attribute contains a postal address where telegrams or expedited documents should be delivered. Delivery of these documents usually requires a confirmation signature from the recipient upon delivery. <P></A>
+
+<A NAME="1267772">
+OID: <code>2.5.4.26</code><P></A>
+
+<A NAME="1202648">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1092877">
+<A NAME="replicaBeginOrc">
+<B>replicaBeginOrc</B>
+</a></a>
+<P>
+
+
+<A NAME="1092878">
+Defines whether or not the supplier server should erase the contents of the consumer server before replication. If no value exists for this attribute, the supplier will not erase the contents. Two values are acceptable for this attribute; start and stop. Start tells the supplier server to erase the contents of the consumer server, and stop tells the supplier server to abort the operation. For example:<P></A>
+<PRE><A NAME="1092879">
+ replicaBeginOrc: start
+</A>
+</PRE>
+<A NAME="1258252">
+OID: <code>2.16.840.1.113730.3.1.50</code><P></A>
+
+<A NAME="1092881">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1006496">
+<A NAME="replicaBindDn">
+<B>replicaBindDn</B>
+</a></a>
+<P>
+
+
+<A NAME="1006513">
+Identifies the DN that the server uses when communicating with a replica server. This DN can be assigned privileges. For example:<P></A>
+<PRE><A NAME="1006521">
+ replicaBinddn: <I>cn=replicator o=Netscape Communications Corp., <br></I> <I>c=US</I>
+</A>
+</PRE>
+<A NAME="1258581">
+OID: <code>2.16.840.1.113730.3.1.58</code><P></A>
+
+<A NAME="1006538">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1100403">dn</a><P></A>
+
+<A NAME="1009992">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1006636">
+<A NAME="replicaBindMethod">
+<B>replicaBindMethod</B>
+</a></a>
+<P>
+
+
+<A NAME="1006689">
+Identifies the method of replication to be used. This attribute does not need to be present. If it is present it must be set to simple. If it is not set to simple a warning is printed and replication will proceed as if it were "simple." For example:<P></A>
+<PRE><A NAME="1006710">
+ replicaBindMethod: simple
+</A>
+</PRE>
+<A NAME="1258336">
+OID: <code>2.16.840.1.113730.3.1.53</code><P></A>
+
+<A NAME="1006720">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1009994">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1230073">
+<A NAME="replicaCredentials">
+<B>replicaCredentials</B>
+</a></a>
+<P>
+
+
+<A NAME="1230074">
+Identifies the password to be used with the replicaBinddn sent to the consumer server. It is highly recommended that this attribute be specified with strict access controls. For example:<P></A>
+<PRE><A NAME="1230075">
+ replicaCredentials: bogusPassword
+</A>
+</PRE>
+<A NAME="1296701">
+OID: <code>2.16.840.1.113730.3.1.202</code><P></A>
+
+<A NAME="1296703">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">bin</a><P></A>
+
+<A NAME="1296704">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1148497">
+<A NAME="replicaEntryFilter">
+<B>replicaEntryFilter</B>
+</a></a>
+<P>
+
+
+<A NAME="1204405">
+Reserved for future use.<P></A>
+
+<A NAME="1280979">
+OID: <code>2.16.840.1.113730.3.1.203</code><P></A>
+
+<A NAME="1152854">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">c</a>is<P></A>
+<A NAME="1148445">
+<A NAME="replicaHost">
+<B>replicaHost</B>
+</a></a>
+<P>
+
+
+<A NAME="1148446">
+Identifies the host name of the consumer server. For example:<P></A>
+<PRE><A NAME="1148447">
+ replicaHost: slave.netscape.com
+</A>
+</PRE>
+<A NAME="1258218">
+OID: <code>2.16.840.1.113730.3.1.197</code><P></A>
+
+<A NAME="1148449">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1148453">
+<A NAME="replicaNickName">
+<B>replicaNickName</B>
+</a></a>
+<P>
+
+
+<A NAME="1148454">
+Contains a freeform name that describes a particular set of replication rules between a single supplier and a single consumer server.<P></A>
+<PRE><A NAME="1148455">
+ replicaNickName: currentset
+</A>
+</PRE>
+<A NAME="1280981">
+OID: <code>2.16.840.1.113730.3.1.204</code><P></A>
+
+<A NAME="1148552">
+Syntax:<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702"> cis</a><P></A>
+
+<A NAME="1010001">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1007660">
+<A NAME="replicaPort">
+<B>replicaPort</B>
+</a></a>
+<P>
+
+
+<A NAME="1007661">
+Identifies the port number of the consumer server. For example:<P></A>
+<PRE><A NAME="1006466">
+ replicaPort: 9872
+</A>
+</PRE>
+<A NAME="1258224">
+OID: <code>2.16.840.1.113730.3.1.48</code><P></A>
+
+<A NAME="1006484">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1010007">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1006384">
+<A NAME="replicaRoot">
+<B>replicaRoot</B>
+</a></a>
+<P>
+
+
+<A NAME="1006394">
+Identifies the DN for the subtree that is being replicated to the consumer machine. For example:<P></A>
+<PRE><A NAME="1006401">
+ replicaRoot: <I>o=Netscape Communications Corp., c=US</I>
+</A>
+</PRE>
+<A NAME="1258564">
+OID: <code>2.16.840.1.113730.3.1.57</code><P></A>
+
+<A NAME="1006414">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1100403">dn</a><P></A>
+
+<A NAME="1010013">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1281126">
+<A NAME="replicatedAttributeList">
+<B>replicatedAttributeList</B>
+</a></a>
+<P>
+
+
+<A NAME="1281128">
+Reserved for future use.<P></A>
+
+<A NAME="1281133">
+OID: <code>2.16.840.1.113730.3.1.205</code><P></A>
+
+<A NAME="1281135">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">c</a>is<P></A>
+<A NAME="1006918">
+<A NAME="replicaUpdateFailedAt">
+<B>replicaUpdateFailedAt</B>
+</a></a>
+<P>
+
+
+<A NAME="1006939">
+Identifies the day and time in zulu format when an update failed to complete successfully. If all updates have been successful, replicaUpdateFailedAt is blank. For example:<P></A>
+<PRE><A NAME="1006946">
+ replicaUpdateFailedAt: 199603261300z
+</A>
+</PRE>
+<A NAME="1258278">
+OID: <code>2.16.840.1.113730.3.1.49</code><P></A>
+
+<A NAME="1006957">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1010019">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1012768">
+<A NAME="replicaUpdateReplayed">
+<B>replicaUpdateReplayed</B>
+</a></a>
+<P>
+
+
+<A NAME="1012770">
+Identifies the change number of the last change propagated to the consumer server. This value is used internally between servers only.<P></A>
+
+<A NAME="1258309">
+OID: <code>2.16.840.1.113730.3.1.51</code><P></A>
+
+<A NAME="1012772">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1012758">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1006817">
+<A NAME="replicaUpdateSchedule">
+<B>replicaUpdateSchedule</B>
+</a></a>
+<P>
+
+
+<A NAME="1006849">
+Identifies the update schedule for the consumer server. If this attribute is not present, the consumer will be updated immediately. For example: <P></A>
+<PRE><A NAME="1006868">
+ replicaUpdateSchedule: 0100-0400
+</A>
+<A NAME="1007219">
+ replicaUpdateSchedule: * 06
+</A>
+<A NAME="1007229">
+ replicaUpdateSchedule: 1145-1300 24
+</A>
+</PRE>
+<A NAME="1007234">
+These values mean:<P></A>
+<PRE><A NAME="1007241">
+ 1:00 AM - 4:00 AM, daily
+</A>
+<A NAME="1007247">
+ all day Saturday and Sunday
+</A>
+<A NAME="1007252">
+ 11:45 AM -1:00 PM, Tuesday and Thursday
+</A>
+</PRE>
+<A NAME="1258316">
+OID: <code>2.16.840.1.113730.3.1.52</code><P></A>
+
+<A NAME="1006873">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1010052">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1006741">
+<A NAME="replicaUseSSL">
+<B>replicaUseSSL</B>
+</a></a>
+<P>
+
+
+<A NAME="1006754">
+Identifies whether SSL will be used to communicate with the consumer server. A non-zero value will cause SSL to be used. For example:<P></A>
+<PRE><A NAME="1006794">
+ replicaUseSSL: 0
+</A>
+</PRE>
+<A NAME="1258347">
+OID: <code>2.16.840.1.113730.3.1.54</code><P></A>
+
+<A NAME="1006801">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1010064">
+This attribute is a Netscape extension to the standard LDAP schema.<P></A>
+<A NAME="1152805">
+<A NAME="retryCountResetTime">
+<B>retryCountResetTime</B>
+</a></a>
+<P>
+
+
+<A NAME="1154931">
+Defines, in seconds, how much time should pass before the passwordRetryCount attribute should is reset to zero (0).<P></A>
+<PRE><A NAME="1154932">
+ retryCountResetTime: 600
+</A>
+</PRE>
+<A NAME="1259952">
+OID: <code>2.16.840.1.113730.3.1.94</code><P></A>
+
+<A NAME="1146199">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis </a><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1251525">operational</a><P></A>
+<A NAME="1202666">
+<A NAME="roleOccupant">
+<B>roleOccupant</B>
+</a></a>
+<P>
+
+
+<A NAME="1202667">
+Contains the distinguished name of the person acting in the role defined in the organizationalRole entry. For example:<P></A>
+<PRE><A NAME="1204472">
+ roleOccupant: cn=jdoe o=example.com
+</A>
+</PRE>
+<A NAME="1267987">
+OID: <code>2.5.4.33</code><P></A>
+
+<A NAME="1204474">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1100403">dn</a><P></A>
+<A NAME="1204477">
+<A NAME="roomNumber">
+<B>roomNumber</B>
+</a></a>
+<P>
+
+
+<A NAME="1214596">
+Specifies the room number of an object. Note that the commonName attribute should be used for naming room objects. For example:<P></A>
+<PRE><A NAME="1202675">
+ roomNumber: 230
+</A>
+</PRE>
+<A NAME="1264474">
+OID: <code>0.9.2342.19200300.100.1.6</code><P></A>
+
+<A NAME="1202677">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1202682">
+<A NAME="searchGuide">
+<B>searchGuide</B>
+</a></a>
+<P>
+
+
+<A NAME="1202683">
+Specifies information for a suggested search criteria when using the entry as the base object in the directory tree for a search operation. This attribute is obsoleted by <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1241288">enhancedSearchGuide</a>. <P></A>
+
+<A NAME="1267193">
+OID: <code>2.5.4.14</code><P></A>
+
+<A NAME="1230091">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004701">ces</a><P></A>
+<A NAME="1202691">
+<A NAME="secretary">
+<B>secretary</B>
+</a></a>
+<P>
+
+
+<A NAME="1202692">
+Identifies the entry's secretary or administrative assistant. For example:<P></A>
+<PRE><A NAME="1202693">
+ secretary: <I>cn=John Doe, o=Example.com</I>
+</A>
+</PRE>
+<A NAME="1264564">
+OID: <code>0.9.2342.19200300.100.1.21</code><P></A>
+
+<A NAME="1202695">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">dn</a><P></A>
+<A NAME="1172500">
+<A NAME="seeAlso">
+<B>seeAlso</B>
+</a></a>
+<P>
+
+
+<A NAME="1172501">
+Identifies another Directory Server entry that may contain information related to this entry. For example: <P></A>
+<PRE><A NAME="1172502">
+ seeAlso: <I>cn=Quality Control Inspectors, ou=manufacturing, o=Example,<br> c=US</I>
+</A>
+</PRE>
+<A NAME="1267994">
+OID: <code>2.5.4.34</code><P></A>
+
+<A NAME="1172504">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1100403">dn</a><P></A>
+<A NAME="1202700">
+<A NAME="serialNumber">
+<B>serialNumber</B>
+</a></a>
+<P>
+
+
+<A NAME="1202701">
+Defines the serial number of the entry. For example:<P></A>
+<PRE><A NAME="1202702">
+ serialNumber: 555-1234-AZ
+</A>
+</PRE>
+<A NAME="1267035">
+OID: <code>2.5.4.5</code><P></A>
+
+<A NAME="1202704">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1093065">
+<A NAME="serverHostName">
+<B>serverHostName</B>
+</a></a>
+<P>
+
+
+<A NAME="1093066">
+Identifies the name of the host on which the Netscape server is installed. This attribute is a Netscape extension used by the <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#">netscapeServer</a> object class. Normally this attribute and this attribute value is written to the directory when a Netscape server is initially installed. For example:<P></A>
+<PRE><A NAME="1032467">
+ serverHostname: twain.example.com
+</A>
+</PRE>
+<A NAME="1259312">
+OID: <code>2.16.840.1.113730.3.1.76</code><P></A>
+
+<A NAME="1032488">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1032412">
+<A NAME="serverProductName">
+<B>serverProductName</B>
+</a></a>
+<P>
+
+
+<A NAME="1032414">
+Identifies the type of the installed Netscape server. This attribute is a Netscape extension used by the <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#">netscapeServer</a> object class. Normally this attribute and this attribute value is written to the directory when a Netscape server is initially installed. For example:<P></A>
+<PRE><A NAME="1032416">
+ serverProductName: Netscape Enterprise Server
+</A>
+</PRE>
+<A NAME="1259171">
+OID: <code>2.16.840.1.113730.3.1.71</code><P></A>
+
+<A NAME="1032418">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1032294">
+<A NAME="serverRoot">
+<B>serverRoot</B>
+</a></a>
+<P>
+
+
+<A NAME="1032296">
+Identifies the fully qualified path to the installation directory for a Netscape server. This attribute is a Netscape extension used by the <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#">netscapeServer</a> object class. Normally this attribute and this attribute value is written to the directory when a Netscape server is initially installed. For example:<P></A>
+<PRE><A NAME="1032297">
+ serverRoot: /usr/ns-home
+</A>
+</PRE>
+<A NAME="1259165">
+OID: <code>2.16.840.1.113730.3.1.70</code><P></A>
+
+<A NAME="1032346">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1032439">
+<A NAME="serverVersionNumber">
+<B>serverVersionNumber</B>
+</a></a>
+<P>
+
+
+<A NAME="1032441">
+Identifies the version number of the installed Netscape server. This attribute is a Netscape extension used by the <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1097231">netscapeServer</a> object class. Normally this attribute and this attribute value are written to the directory when a Netscape server is initially installed. For example:<P></A>
+<PRE><A NAME="1032443">
+ serverVersionNumber: 3.0
+</A>
+</PRE>
+<A NAME="1259178">
+OID: <code>2.16.840.1.113730.3.1.72</code><P></A>
+
+<A NAME="1203414">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1245426">
+<A NAME="singleLevelQuality">
+<B>singleLevelQuality</B>
+</a></a>
+<P>
+
+
+<A NAME="1245427">
+Undefined. <P></A>
+
+<A NAME="1266643">
+OID: <code>0.9.2342.19200300.100.1.50</code><P></A>
+
+<A NAME="1245430">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1290325">
+<A NAME="sn">
+<B>sn</B>
+</a></a>
+<P>
+
+
+<A NAME="1290326">
+Identifies the entry's surname, or last name. For example:<P></A>
+<PRE><A NAME="1290327">
+ surname: Anderson
+</A>
+</PRE>
+<A NAME="1290328">
+or:<P></A>
+<PRE><A NAME="1290329">
+ sn: Anderson
+</A>
+</PRE>
+<A NAME="1290330">
+Abbreviation: sn<P></A>
+
+<A NAME="1290331">
+OID: <code>2.5.4.4</code><P></A>
+
+<A NAME="1290333">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1203417">
+<A NAME="st">
+<B>st</B>
+</a></a>
+<P>
+
+
+<A NAME="1202711">
+Identifies the state or province in which the entry resides. For example:<P></A>
+<PRE><A NAME="1202712">
+ stateOrProvinceName: California
+</A>
+</PRE>
+<A NAME="1202713">
+or:<P></A>
+<PRE><A NAME="1202714">
+ st: California
+</A>
+</PRE>
+<A NAME="1202716">
+Abbreviation: st<P></A>
+
+<A NAME="1267077">
+OID: <code>2.5.4.8</code><P></A>
+
+<A NAME="1202718">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1202721">
+<A NAME="street">
+<B>street</B>
+</a></a>
+<P>
+
+
+<A NAME="1202722">
+Identifies the entry's house number and street name. For example:<P></A>
+<PRE><A NAME="1202723">
+ streetAddress: 1234 Ridgeway Drive
+</A>
+</PRE>
+<A NAME="1202724">
+or:<P></A>
+<PRE><A NAME="1202725">
+ street: 1234 Ridgeway Drive
+</A>
+</PRE>
+<A NAME="1267080">
+OID: <code>2.5.4.9</code><P></A>
+
+<A NAME="1202727">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1202732">
+<A NAME="subject">
+<B>subject</B>
+</a></a>
+<P>
+
+
+<A NAME="1202733">
+Contains information about the subject matter of the document entry.<P></A>
+
+<A NAME="1202736">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1242622">
+<A NAME="subschemaSubentry">
+<B>subschemaSubentry</B>
+</a></a>
+<P>
+
+
+<A NAME="1242623">
+Undefined.<P></A>
+
+<A NAME="1263030">
+OID: <code>2.5.18.10</code><P></A>
+
+<A NAME="1242626">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1100403">dn</a><P></A>
+<A NAME="1099985">
+<A NAME="subtreeACI">
+<B>subtreeACI</B>
+</a></a>
+<P>
+
+
+<A NAME="1099986">
+Specifies who can update a newsaccessitem entry. <P></A>
+
+<A NAME="1259158">
+OID: <code>2.16.840.1.113730.3.1.69</code><P></A>
+
+<A NAME="1099989">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004701">ces</a><P></A>
+<A NAME="1245467">
+<A NAME="subtreeMaximumQuality">
+<B>subtreeMaximumQuality</B>
+</a></a>
+<P>
+
+
+<A NAME="1245469">
+Undefined. <P></A>
+
+<A NAME="1266679">
+OID: <code>0.9.2342.19200300.100.1.52</code><P></A>
+
+<A NAME="1245472">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1245448">
+<A NAME="subtreeMinimumQuality">
+<B>subtreeMinimumQuality</B>
+</a></a>
+<P>
+
+
+<A NAME="1245450">
+Undefined. <P></A>
+
+<A NAME="1266661">
+OID: <code>0.9.2342.19200300.100.1.51</code><P></A>
+
+<A NAME="1245453">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1241769">
+<A NAME="supportedAlgorithms;binary">
+<B>supportedAlgorithms;binary</B>
+</a></a>
+<P>
+
+
+<A NAME="1241770">
+Reserved for future use. <P></A>
+
+<A NAME="1269236">
+OID: <code>2.5.4.52</code><P></A>
+
+<A NAME="1241967">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">bin</a><P></A>
+<A NAME="1202747">
+<A NAME="supportedApplicationContext">
+<B>supportedApplicationContext</B>
+</a></a>
+<P>
+
+
+<A NAME="1202748">
+This attribute contains the identifiers of OSI application contexts.<P></A>
+
+<A NAME="1267860">
+OID: <code>2.5.4.30</code><P></A>
+
+<A NAME="1202751">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1243196">
+<A NAME="supportedControl">
+<B>supportedControl</B>
+</a></a>
+<P>
+
+
+<A NAME="1243198">
+Undefined.<P></A>
+
+<A NAME="1263262">
+OID: <code>1.3.6.1.4.1.1466.101.120.13</code><P></A>
+
+<A NAME="1243201">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1243163">
+<A NAME="supportedExtension">
+<B>supportedExtension</B>
+</a></a>
+<P>
+
+
+<A NAME="1243164">
+Undefined.<P></A>
+
+<A NAME="1263243">
+OID: <code>1.3.6.1.4.1.1466.101.120.7</code><P></A>
+
+<A NAME="1243167">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1243238">
+<A NAME="supportedLDAPVersion">
+<B>supportedLDAPVersion</B>
+</a></a>
+<P>
+
+
+<A NAME="1243240">
+Undefined.<P></A>
+
+<A NAME="1263280">
+OID: <code>1.3.6.1.4.1.1466.101.120.15</code><P></A>
+
+<A NAME="1243243">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1243260">int</a><P></A>
+<A NAME="1243217">
+<A NAME="supportedSASLMechanisms">
+<B>supportedSASLMechanisms</B>
+</a></a>
+<P>
+
+
+<A NAME="1243219">
+Undefined.<P></A>
+
+<A NAME="1263274">
+OID: <code>1.3.6.1.4.1.1466.101.120.14</code><P></A>
+
+<A NAME="1243222">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1094954">
+<A NAME="targetDn">
+<B>targetDn</B>
+</a></a>
+<P>
+
+
+<A NAME="1094956">
+Defines the distinguished name of an entry that was added, modified, or deleted on a supplier server. In the case of a modrdn operation, the targetDn contains the distinguished name of the entry before it was modified. For example:<P></A>
+<PRE><A NAME="1110601">
+ targetDn:<I> cn=Jane Doe, ou=Quality Control, o=Example.com</I>
+</A>
+</PRE>
+<A NAME="1257807">
+OID: <code>2.16.840.1.113730.3.1.6</code><P></A>
+
+<A NAME="1094942">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1100403">dn</a><P></A>
+<A NAME="1230129">
+<A NAME="telephoneNumber">
+<B>telephoneNumber</B>
+</a></a>
+<P>
+
+
+<A NAME="1230130">
+Identifies the entry's phone number. For example: <P></A>
+<PRE><A NAME="1230131">
+ telephoneNumber: 415-555-2233
+</A>
+</PRE>
+<A NAME="1267615">
+OID: <code>2.5.4.20</code><P></A>
+
+<A NAME="1230133">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004703">tel</a><P></A>
+<A NAME="1205004">
+<A NAME="teletexTerminalIdentifier">
+<B>teletexTerminalIdentifier</B>
+</a></a>
+<P>
+
+
+<A NAME="1205006">
+Identifies the entry's teletex terminal identifier. The format of the attribute is as follows:<P></A>
+<PRE><A NAME="1204973">
+teletex-id = ttx-term 0*("$" ttx-param)<br>ttx-term = printablestring<br>ttx-param = ttx-key ":" ttx-value<br>ttx-key = "graphic" / "control" / "misc" / "page" / "private"<br>ttx-value = octetstring
+</A>
+</PRE>
+<A NAME="1204978">
+In the above, the first printable string is the encoding of the first portion of the teletex terminal identifier to be encoded, and the subsequent 0 or more octetstrings are subsequent portions of the teletex terminal identifier.<P></A>
+
+<A NAME="1267635">
+OID: <code>2.5.4.22</code><P></A>
+
+<A NAME="1205117">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1205120">
+<A NAME="telexNumber">
+<B>telexNumber</B>
+</a></a>
+<P>
+
+
+<A NAME="1205121">
+Defines the telex number of the entry. The format of the telex number is as follows:<P></A>
+<PRE><A NAME="1204750">
+ actual-number "$" country "$" answerback
+</A>
+</PRE>
+<A NAME="1204751">
+In the above, <code>actual-number</code> is the syntactic representation of the number portion of the TELEX number being encoded, <code>country</code> is the TELEX country code, and <code>answerback</code> is the answerback code of a TELEX terminal.<P></A>
+
+<A NAME="1267618">
+OID: <code>2.5.4.21</code><P></A>
+
+<A NAME="1202779">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1202782">
+<A NAME="textEncodedORAddress">
+<B>textEncodedORAddress</B>
+</a></a>
+<P>
+
+
+<A NAME="1202783">
+Defines the text-encoded Originator/Recipient (X.400) address of the entry as defined in RFC987. For example:<P></A>
+<PRE><A NAME="1266243">
+ textEncodedORAddress: /S=doe/OU=eng/O=example/ADMD=telemail/C=us/
+</A>
+</PRE>
+<A NAME="1266245">
+OID: <code>0.9.2342.19200300.100.1.2</code><P></A>
+
+<A NAME="1266267">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1266248">
+<A NAME="title">
+<B>title</B>
+</a></a>
+<P>
+
+
+<A NAME="1230153">
+Identifies the entry's title. For example:<P></A>
+<PRE><A NAME="1230154">
+ title: Senior QC Inspector
+</A>
+</PRE>
+<A NAME="1267172">
+OID: <code>2.5.4.12</code><P></A>
+
+<A NAME="1230156">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1202798">
+<A NAME="ttl">
+<B>ttl</B>
+</a></a>
+<P>
+
+
+<A NAME="1230159">
+Contains the time, in seconds, that cached information about an entry should be considered valid. Once the specified time has elapsed, the information is considered out of date. A value of zero (0) indicates that the entry should not be cached.<P></A>
+<PRE><A NAME="1252259">
+ timeToLive: 120
+</A>
+</PRE>
+<A NAME="1252260">
+or:<P></A>
+<PRE><A NAME="1252261">
+ ttl: 120
+</A>
+</PRE>
+<A NAME="1219626">
+Abbreviation: ttl<P></A>
+
+<A NAME="1278376">
+OID: <code>1.3.6.1.4.1.250.1.60</code><P></A>
+
+<A NAME="1219607">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1296804">
+<A NAME="uid">
+<B>uid</B>
+</a></a>
+<P>
+
+
+<A NAME="1296805">
+Identifies the entry's userid (usually the logon ID). For example:<P></A>
+<PRE><A NAME="1296806">
+ userid: banderson
+</A>
+</PRE>
+<A NAME="1296807">
+or:<P></A>
+<PRE><A NAME="1296808">
+ uid: banderson
+</A>
+</PRE>
+<A NAME="1296809">
+Abbreviation: uid<P></A>
+
+<A NAME="1296810">
+OID: <code>0.9.2342.19200300.100.1.1</code><P></A>
+
+<A NAME="1296812">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1202809">
+<A NAME="uniqueIdentifier">
+<B>uniqueIdentifier</B>
+</a></a>
+<P>
+
+
+<A NAME="1202810">
+Identifies a specific item used to distinguish between two entries when a distinguished name has been reused. This attribute is intended to detect instance of a reference to a distinguished name that has been deleted. This attribute is assigned by the server. For example:<P></A>
+<PRE><A NAME="1286438">
+ uniqueIdentifier: AAAAAA==
+</A>
+</PRE>
+<A NAME="1266101">
+OID: <code>0.9.2342.19200300.100.1.44</code><P></A>
+
+<A NAME="1202812">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1172624">
+<A NAME="uniqueMember">
+<B>uniqueMember</B>
+</a></a>
+<P>
+
+
+<A NAME="1172625">
+Identifies a group of names associated with an entry where each name was given a uniqueIdentifier to ensure its uniqueness. A value for the uniqueMember attribute is a DN followed by the uniqueIdentifier.<P></A>
+
+<A NAME="1269101">
+OID: <code>2.5.4.50</code><P></A>
+
+<A NAME="1172627">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1100403">dn</a><P></A>
+<A NAME="1202817">
+<A NAME="updatedByDocument">
+<B>updatedByDocument</B>
+</a></a>
+<P>
+
+
+<A NAME="1217372">
+Contains the distinguished name of a document that is an updated version of the document entry.<P></A>
+
+<A NAME="1202821">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1100403">dn</a><P></A>
+<A NAME="1202824">
+<A NAME="updatesDocument">
+<B>updatesDocument</B>
+</a></a>
+<P>
+
+
+<A NAME="1217396">
+Contains the distinguished name of a document for which this document is an updated version. <P></A>
+
+<A NAME="1202825">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1100403">dn</a><P></A>
+<A NAME="1208938">
+<A NAME="userCertificate">
+<B>userCertificate</B>
+</a></a>
+<P>
+
+
+<A NAME="1278420">
+Contains a text-encoded version of a user's certificate. Not recommended; use userCertificate;binary instead.<P></A>
+
+<A NAME="1278422">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">bin</a><P></A>
+<A NAME="1278425">
+<A NAME="userCertificate;binary">
+<B>userCertificate;binary</B>
+</a></a>
+<P>
+
+
+<A NAME="1208948">
+Contains a user's certificate in binary form. For example:<P></A>
+<PRE><A NAME="1278402">
+ userCertificate;binary: AAAAAA==
+</A>
+</PRE>
+<A NAME="1286463">
+OID: <code>2.5.4.36</code><P></A>
+
+<A NAME="1278404">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">bin</a><P></A>
+<A NAME="1202840">
+<A NAME="userClass">
+<B>userClass</B>
+</a></a>
+<P>
+
+
+<A NAME="1214739">
+Specifies a category of computer user. The semantics of this attribute are arbitrary. The organizationalStatus attribute makes no distinction between computer users and others users and may be more applicable. For example:<P></A>
+<PRE><A NAME="1202842">
+ userClass: intern
+</A>
+</PRE>
+<A NAME="1264494">
+OID: <code>0.9.2342.19200300.100.1.8</code><P></A>
+
+<A NAME="1202844">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis</a><P></A>
+<A NAME="1196547">
+<A NAME="userPassword">
+<B>userPassword</B>
+</a></a>
+<P>
+
+
+<A NAME="1196548">
+Identifies the entry's password and encryption method in the following format:<P></A>
+<PRE><A NAME="1296829">
+{encryption method}encrypted password
+</A>
+</PRE>
+<A NAME="1196550">
+For example:<P></A>
+<PRE><A NAME="1196551">
+ userPassword: {sha}FTSLQhxXpA05
+</A>
+</PRE>
+<A NAME="1268004">
+OID: <code>2.5.4.35</code><P></A>
+
+<A NAME="1196553">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">bin</a><P></A>
+<A NAME="1103595">
+<A NAME="userSMIMECertificate;binary">
+<B>userSMIMECertificate;binary</B>
+</a></a>
+<P>
+
+
+<A NAME="1103596">
+Used by Netscape Communicator for S/MIME. For example:<P></A>
+<PRE><A NAME="1252279">
+ userSMIMECertificate;binary: AAAAAA==
+</A>
+</PRE>
+<A NAME="1258002">
+OID: <code>2.16.840.1.113730.3.1.40</code><P></A>
+
+<A NAME="1235505">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">bin</a><P></A>
+<A NAME="1281763">
+<A NAME="x121Address">
+<B>x121Address</B>
+</a></a>
+<P>
+
+
+<A NAME="1281764">
+Defines the X.121 address of a person. <P></A>
+
+<A NAME="1281766">
+OID: <code>2.5.4.24</code><P></A>
+
+<A NAME="1292793">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004701">ces</a><P></A>
+<A NAME="1292796">
+<A NAME="x500UniqueIdentifier">
+<B>x500UniqueIdentifier</B>
+</a></a>
+<P>
+
+
+<A NAME="1235526">
+Reserved for future use. For example:<P></A>
+<PRE><A NAME="1252291">
+ x500UniqueIdentifier: AAAAAA==
+</A>
+</PRE>
+<A NAME="1268137">
+OID: <code>2.5.4.45</code><P></A>
+
+<A NAME="1235529">
+Syntax: <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">bin</a><P></A>
+
+<A NAME="1296833">
+<P></A>
diff --git a/ldap/clients/dsgw/html/manual/auth.htm b/ldap/clients/dsgw/html/manual/auth.htm
new file mode 100644
index 00000000..52dfc2da
--- /dev/null
+++ b/ldap/clients/dsgw/html/manual/auth.htm
@@ -0,0 +1,286 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Portions copyright 1999, 2002-2003 Netscape Communications Corporation.
+ All rights reserved.
+ -->
+<html>
+
+<head>
+<title>Directory Authentication</title>
+</head>
+
+<body>
+
+<h1><a name="authenticating"></a>Authentication</h1>
+
+<p>Authentication is the
+process of identifying yourself to the Directory Server. The
+authentication process enables the Directory Server
+to determine what operations you are allowed to perform on the
+directory. Note, however, that authentication is not always
+necessary; your directory administrator can configure the system
+so that permission is not required for some procedures.</p>
+
+<p>By default, access to the directory is denied to all users
+with the exception of the directory administrator. The
+directory administrator defines the permissions that
+grant or remove access to the directory. Because permissions are
+determined on a site by site basis, you need to check with your
+directory administrator to find out what kind of access you have
+to the directory and which operations require authentication, if any.</p>
+
+<p>This chapter contains the following sections:</p>
+
+<ul>
+ <li><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#ustand">Understanding directory access</a></li>
+ <li><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#userauth">Authenticating to the directory</a></li>
+ <li><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#logout">Logging out of the directory</a></li>
+ <li><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#incorrectauth">Problems caused by improper
+ authentication</a></li>
+</ul>
+
+<h2><a name="ustand"></a>Understanding Directory Access</h2>
+
+<p>One of the key tasks of the directory administrator
+is determining which users need access to the directory and the
+types of access required. The directory administrator grants and
+denies permission to the directory through the use of the access
+control mechanism. Using the access control mechanism, the
+directory administrator can allow or deny access:</p>
+
+<ul>
+ <li>to any unauthenticated user (this is known as anonymous
+ access) </li>
+ <li>to all authenticated users</li>
+ <li>to specific authenticated users or groups</li>
+ <li>from a specific machine or DNS domain</li>
+ <li>at a specific time of day or day of the week</li>
+ <li>based on authentication method</li>
+</ul>
+
+<p>The specific rights the administrator assigns can vary from
+user to user. For example, the administrator usually would grant read
+and search access to anonymous users and would grant write access
+only to a select group of authenticated users and groups, perhaps only
+from specific machines.</p>
+
+<p>The following are just some of the things the directory
+administrator can do by applying permissions to the directory.
+The directory administrator can:</p>
+
+<ul>
+ <li>Require you to authenticate before accessing the
+ directory in any way. </li>
+ <li>Require you to authenticate before accessing certain
+ subsections of the directory. </li>
+ <li>Require you to authenticate before performing certain
+ kinds of actions in the directory, such as adding or
+ modifying entries. </li>
+ <li>Deny you access to all or parts of the directory,
+ or deny you the ability to perform certain kinds of
+ functions. </li>
+ <li>Allow anonymous access to all or parts of the directory.</li>
+ <li>Allow anonymous access for some kinds of operations (such
+ as searches), but not others (such as
+ modifications). </li>
+ <li>Allow or deny access based on the physical machine you
+ are currently using. </li>
+</ul>
+
+<p>The Directory Server interface has no way of determining if
+you are required to authenticate before attempting any directory
+access. However, the interface assumes you must authenticate
+before modifying the directory tree in any way, and if you are
+not currently authenticated, it prompts you for authentication
+before you can make any modifications. If you do not
+authenticate, you are allowed only to perform the operations
+and access the portions of the directory that your directory
+administrator has set for anonymous access.</p>
+
+<!--<p>For more information on access control, refer to Chapter 5 of
+the <em>Directory Server Administrator's Guide</em>.</p>-->
+
+<h2><a name="userauth"></a>Authenticating to the Directory</h2>
+
+<p>In some situations, the Directory Server interface
+automatically prompts you to authenticate before continuing with
+an operation. You can also explicitly choose to authenticate by
+clicking the Authentication tab. Either way, the
+authentication procedure is as follows:</p>
+
+<ol>
+ <li>Click the Authentication tab.</li>
+ <li>Enter the name you want to use to identify yourself to
+ the Directory Server:
+ <ul type="disc">
+ <li><a name="userauth2"></a>To authenticate as a regular user, enter your
+ full name and click Continue. <br>
+ Enter your name as it would appear in the
+ Directory Server (your common name or full name).
+ Do not enter your user ID or login for the local
+ operating system. </li>
+ <li><a name="managerauth2"></a>To authenticate as the privileged directory user,
+ click the "Authenticate as directory manager"
+ button.</li>
+ </ul>
+ </li>
+ <li>If the Directory Server interface displays a table of
+ matching entries, select the link that corresponds to
+ your directory entry. If your name is unique in the
+ directory, the system skips this step.</li>
+ <li>Enter your password and click Continue.<br>
+ Contact your directory manager if you do not know your
+ password. <br>
+ <a name="authsuccess"></a>After the authentication
+ operations complete successfully, the interface displays
+ a message indicating the amount of time for which your
+ authentication credentials are valid. When this time has
+ elapsed, you need to reauthenticate to the directory
+ to continue your session. If your password has already
+ expired you should either change
+ it immediately or contact your system administrator.</li>
+ <li>Click "Return to Main" to continue your
+ Directory Server interface session. </li>
+</ol>
+
+<h2><a name="logout"></a>Logging Out of the Directory</h2>
+
+<p>If you have authenticated to the Directory Server and
+want to return to anonymous access, do the following:</p>
+
+<ol>
+ <li>Click the Authentication tab.</li>
+ <li>Click the "Discard Authentication Credentials (log out)"
+ button. </li>
+</ol>
+
+<p>You are returned to anonymous access. To change from one type of
+access to another, you must authenticate to the Directory Server again. See <a
+href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#userauth2">Authenticating as a User</a> or <a
+href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#managerauth2">Authenticating as Directory Manager</a> for
+more information. </p>
+
+<h2><a name="reauth"></a>Reauthenticating to the Directory</h2>
+
+<p>When you authenticate to the directory, you are given
+authentication credentials that are good only for a specific
+amount of time. By default, authentication credentials are valid
+for 120 minutes. However, this period is configurable by the directory administrator.
+If your authentication credentials expire before you have
+finished using the Directory Server interface, you must
+reauthenticate to the directory before your changes can be saved.
+The procedure for reauthenticating to the directory is the same
+as the procedure you originally used to <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#userauth">authenticate</a>
+to the directory.</p>
+
+<h2><a name="incorrectauth"></a>Problems Caused by Incorrect
+Authentication</h2>
+
+<p>When you are not authenticated to the Directory Server, you are
+accessing the directory as an anonymous user. The types of
+operations you can perform as an anonymous user depend on the
+access controls set by your directory administrator. You
+may notice strange behavior when you try to perform a directory
+operation, such as a search. Although not explicitly stated
+by the Directory Server interface, the anomalies you encounter are
+often caused by improper authentication. The interface does not provide
+this information because doing so could compromise security.</p>
+
+<p>The following table lists symptoms of some common
+problems along with the possible causes and the
+action you can take to fix the problem.</p>
+
+<table border="2">
+ <tr>
+ <th width="30%"><b>Symptom</b></th>
+ <th><b>Cause</b></th>
+ <td width="30%"><b>Action</b></td>
+ </tr>
+ <tr>
+ <td valign="top" width="30%">Search results are empty</td>
+ <td valign="top">Either no entries match
+ the search string you entered, or you are required to
+ authenticate to the directory before performing this type of search
+ operation.</td>
+ <td valign="top" width="30%">Try a different search
+ operation. Or, if you are sure that there are entries
+ that match the criteria you entered, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#userauth">authenticate</a>
+ to the directory.</td>
+ </tr>
+ <tr>
+ <td valign="top" width="30%">Search results missing
+ entries or missing attribute information from returned
+ entries.</td>
+ <td valign="top">Either you are not authenticated
+ properly or you do not have access to the information.
+ The directory administrator can specify that all or parts
+ of the directory tree require authentication to access
+ entries, or even certain entry attributes. In this situation,
+ the Directory Server does not indicate that the
+ information exists and that you do not have
+ privileges to access it. Instead, it simply acts as if
+ the information does not exist at all. This behavior is
+ driven by the concern that knowing certain information
+ exists in the tree, even if you are not allowed to see
+ it, can pose a security risk. </td>
+ <td valign="top" width="30%">Make sure you are properly <a
+ href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#userauth">authenticated</a>. Then, verify with
+ your directory administrator that you have access to the
+ directory information you need.</td>
+ </tr>
+ <tr>
+ <td valign="top" width="30%">Operation fails after
+ completion</td>
+ <td valign="top">The directory is failing the operation
+ because of improper authentication. Although, it may seem as if
+ the interface's form action is failing the
+ operation, the form is only passing the operation to the
+ Directory Server, which is then failing the operation.
+ The Directory Server interface simply reports the results
+ of the operation. This occurs because the LDAP protocol
+ does not currently allow the interface to know whether
+ authentication is required before trying an operation.
+ Using the interface, this situation can only arise
+ if your authentication times out while you are creating
+ or modifying the directory entry. </td>
+ <td valign="top" width="30%">Make sure you are properly <a
+ href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#userauth">authenticated</a> and that your authentication
+ has not timed out. </td>
+ </tr>
+ <tr>
+ <td valign="top" width="30%">A table of entries is
+ displayed during the authentication process</td>
+ <td valign="top">Either your full name is not unique in
+ the directory, or the name you entered does not exist in
+ the directory.</td>
+ <td valign="top" width="30%">If your entry is displayed
+ on the table, select the corresponding link and continue
+ with the <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#userauth">authentication</a> process.<p>If
+ your entry is not displayed on the table, click Cancel
+ and then try <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#userauth">authenticating</a>
+ again. Be sure to use your full name and not your user
+ ID.</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="30%">Username is correct, but
+ authentication fails anyway</td>
+ <td valign="top">Your password is incorrect. <p>If you
+ enter a valid username but an incorrect password, and the
+ username you supplied represents an NT person entry, the
+ Directory Server attempts to authenticate you to the
+ Windows network. </p>
+ <p>If that is not successful or the user name you
+ supplied does not represent an NT person entry, you are
+ given the choice to retry, close the window, or seek
+ help.</p>
+ </td>
+ <td valign="top" width="30%">Click Retry
+ and then reenter your password.</td>
+ </tr>
+</table>
+
+<p> </p>
+</body>
+</html>
diff --git a/ldap/clients/dsgw/html/manual/contents.html b/ldap/clients/dsgw/html/manual/contents.html
new file mode 100644
index 00000000..cbcd6c29
--- /dev/null
+++ b/ldap/clients/dsgw/html/manual/contents.html
@@ -0,0 +1,185 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Portions copyright 1999, 2002-2003 Netscape Communications Corporation.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+ <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+ <META NAME="GENERATOR" CONTENT="Mozilla/4.01 [en] (WinNT; U) [Netscape]">
+ <TITLE>Contents</TITLE>
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+
+<H1>
+Contents</H1>
+
+<H2>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/intro.htm">Chapter 1 Introduction to the Directory Server Interface</A></H2>
+
+<H2>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm">Chapter 2 Searching the Directory Tree</A></H2>
+
+<DL>
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#standard">Standard Search</A></DD>
+
+<DL>
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#Performing a Standard Search">Performing a Standard
+Search</A></DD>
+
+<DL>
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#Name">Searching for Names</A></DD>
+
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#initials">Searching for Names with Initials</A></DD>
+
+<BR><A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#phone">Searching for Phone Numbers</A>
+<BR><A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#e-mail">Searching for E-mail Addresses</A>
+<BR><A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#filter">Using Search Filters</A></DL>
+</DL>
+
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#advanced">Advanced Search</A></DD>
+
+<DL>
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#Performing an Advanced Search">Performing an Advanced
+Search</A></DD>
+
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#Advanced Search Examples">Advanced Search Examples</A></DD>
+</DL>
+
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#results">Viewing Search Results</A></DD>
+
+<DL>
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#nomatch">No Matches</A></DD>
+
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#single">A Single Match</A></DD>
+
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#multiple">Multiple Matches</A></DD>
+
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#problems">Other Problems</A></DD>
+</DL>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#vCard">Viewing a vCard</A>
+<H2>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm">Chapter 3 Adding Entries</A></H2>
+
+<DL>
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#guidelines">New Entry Guidelines</A></DD>
+
+<DL>
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#tree">Directory Tree Structure</A></DD>
+
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#DN">Distinguished Name Syntax</A></DD>
+
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#uniqueDN">Unique Distinguished Names</A></DD>
+</DL>
+
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#person">Adding a Person</A></DD>
+
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#NTperson">Adding an NT-Person</A></DD>
+
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#group">Adding a Group</A></DD>
+
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#NTgroup">Adding an NT-Group</A></DD>
+
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#ou">Adding an Organizational Unit</A></DD>
+
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#dc">Adding a Domain</A></DD>
+
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#o">Adding an Organization</A></DD>
+</DL>
+
+<H2>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm">Chapter 4 Editing Entries</A></H2>
+
+<DL>
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#people">Editing People</A></DD>
+
+<DL>
+<DL><A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#addmanager">Adding Values to the Manager and Admin
+Fields</A></DL>
+</DL>
+
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#ntpeople">Editing NT-people</A></DD>
+
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#groups">Editing Groups</A></DD>
+
+<DL>
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#addowner">Adding Values to the Owner, See Also, and Group
+Member Fields</A></DD>
+</DL>
+
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#NTgroups">Editing NT-Groups</A></DD>
+
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#ou">Editing Organizational Units</A></DD>
+
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#dc">Editing Domains</A></DD>
+
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#o">Editing Organizations</A></DD>
+
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#rename">Renaming Entries</A></DD>
+
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#delete">Deleting Entries</A></DD>
+
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#changepw">Changing Passwords</A></DD>
+</DL>
+
+<H2>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm">Chapter 5 Authentication</A></H2>
+
+<DL>
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#ustand">Understanding Directory Access</A></DD>
+
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#userauth">Authenticating to the Directory</A></DD>
+
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#logout">Logging Out of the Directory</A></DD>
+
+<DD>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#incorrectauth">Problems Caused by Incorrect Authentication</A></DD>
+</DL>
+
+<H2>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm">Appendix A Objectclasses</A></H2>
+
+<H2>
+<A HREF="lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm">Appendix B Attributes</A></H2>
+
+
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/html/manual/dn.htm b/ldap/clients/dsgw/html/manual/dn.htm
new file mode 100644
index 00000000..c61111ff
--- /dev/null
+++ b/ldap/clients/dsgw/html/manual/dn.htm
@@ -0,0 +1,262 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Portions copyright 1999, 2002-2003 Netscape Communications Corporation.
+ All rights reserved.
+ -->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+<HEAD>
+ <TITLE></TITLE>
+ <META NAME="GENERATOR" CONTENT="Mozilla/3.0b6Gold (WinNT; I) [Netscape]">
+</HEAD>
+<BODY>
+
+<P><A NAME="1001595"></A></P>
+
+<P><A NAME="1001596"></A></P>
+
+<P><A NAME="996824"></A></P>
+
+<H1>Distinguished Names</H1>
+
+<P><A NAME="1017708"></A>Distinguished
+Names (DNs) are the string representation for entry names in the Directory
+Server database. You use DNs to name entries when you add entries to the
+directory, add members to groups, etc..</P>
+
+<P><A NAME="1017709"></A>A DN can consist of virtually any attributes you
+wish to use. The only caveat is that if schema checking is turned on, then
+the attributes must be recognized by the Directory Server (if you do not
+know whether schema checking is turned on in the server, contact your directory
+manager, or consult the <I>Netscape Directory Server Administrator's Guide</I>
+for more information).</P>
+
+<P><A NAME="1017710"></A>Traditionally, a DN consists of:</P>
+
+<UL>
+<P><A NAME="1017711"></A></P>
+
+<LI>A common name followed by<A NAME="1017712"></A></LI>
+
+<LI>a list of regional or organizational attributes followed by<A NAME="1017713"></A></LI>
+
+<LI>a country designation.</LI>
+</UL>
+
+<P><A NAME="1017714"></A>This string of identifying attributes uniquely
+locates the entry within your Directory Server database. If you choose,
+you can also use this naming structure to uniquely identify your entries
+within the global directory tree as defined in the X.500 standard.</P>
+
+<P><A NAME="1017715"></A>Because a DN represents a path through the directory
+tree, the DN components are order-dependent. For example, the following
+DNs do not represent the same entry:</P>
+
+<P><A NAME="1017716"></A></P>
+
+<PRE>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cn=Ralph Swenson, ou=Accounting, o=Example Corp, c=US
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cn=Ralph Swenson, o=Example Corp, ou=Accounting, c=US
+</PRE>
+
+<P><A NAME="Distinguished Name syntax"></A><A NAME="1017717"></A></P>
+
+<H2>Distinguished Name syntax</H2>
+
+<P><A NAME="1017718"></A>The traditional syntax for a DN string representation
+is as follows:</P>
+
+<P><A NAME="1017719"></A></P>
+
+<UL>
+<PRE>cn=<I>common name</I>, [street=<I>address</I>, l=<I>locality</I>, st = <I>state or province</I>,
+ou=<I>organizational unit</I>, o=<I>organization</I>], c=<I>country name</I>
+</PRE>
+</UL>
+
+<P><A NAME="1017720"></A>Generally a DN begins with a specific common name,
+and proceeds with increasingly broader areas of identification until the
+country name is specified. Note, however, that the actual DN attributes
+you use, and the order in which you choose to specify them, is up to you
+and how you want to organize your database. The only real requirement is
+that DN attributes must be separated by a comma (,) and can optionally
+use a space ( ) following the separator.</P>
+
+<P><A NAME="Distinguished Name attributes"></A><A NAME="1017721"></A></P>
+
+<H2>Distinguished Name attributes</H2>
+
+<P><A NAME="1017792"></A>The various standard attributes that comprise
+a DN are as follows:</P>
+
+<TABLE BORDER=2 >
+<CAPTION></CAPTION>
+
+<TR>
+<TH><A NAME="1017730"></A><B>Attribute</B></TH>
+
+<TH><A NAME="1017732"></A><B>Name</B></TH>
+
+<TH><A NAME="1017734"></A><B>Definition</B></TH>
+</TR>
+
+<TR>
+<TD><A NAME="1017736"></A>c</TD>
+
+<TD><A NAME="1017738"></A>country</TD>
+
+<TD><A NAME="1017740"></A>Identifies the name of the country under which
+the entry resides. For example,
+<UL>
+<P><A NAME="1017741"></A></P>
+
+<LI>c=US<A NAME="1017742"></A></LI>
+
+<LI>c=GB</LI>
+</UL>
+</TD>
+</TR>
+
+<TR>
+<TD><A NAME="1017744"></A>cn</TD>
+
+<TD><A NAME="1017746"></A>common name</TD>
+
+<TD><A NAME="1017748"></A>Required attribute that identifies the person
+or object defined by the entry. For example:
+<UL>
+<P><A NAME="1017749"></A></P>
+
+<LI>cn=Wally Henderson<A NAME="1017750"></A></LI>
+
+<LI>cn=Database Administrators<A NAME="1017751"></A></LI>
+
+<LI>cn=printer3b</LI>
+</UL>
+</TD>
+</TR>
+
+<TR>
+<TD><A NAME="1017753"></A>l</TD>
+
+<TD><A NAME="1017755"></A>locality</TD>
+
+<TD><A NAME="1017757"></A>Identifies the locality in which the entry resides.
+The locality could be a city, county, township, or other geographic region.
+For example:
+<UL>
+<P><A NAME="1017758"></A></P>
+
+<LI>l=Tucson<A NAME="1017759"></A></LI>
+
+<LI>l=Pacific Northwest<A NAME="1017760"></A></LI>
+
+<LI>l=Anoka County</LI>
+</UL>
+</TD>
+</TR>
+
+<TR>
+<TD><A NAME="1017762"></A>o</TD>
+
+<TD><A NAME="1017764"></A>organization</TD>
+
+<TD><A NAME="1017766"></A>Identifies the organization in which the entry
+resides. For example:
+<UL>
+<P><A NAME="1017767"></A></P>
+
+<LI>o=Netscape Communications Corp<A NAME="1017768"></A></LI>
+
+<LI>o=Public Power &amp; Gas</LI>
+</UL>
+</TD>
+</TR>
+
+<TR>
+<TD><A NAME="1017770"></A>ou</TD>
+
+<TD><A NAME="1017772"></A>organizational unit</TD>
+
+<TD><A NAME="1017774"></A>Identifies a unit within the organization. For
+example:
+<UL>
+<P><A NAME="1017775"></A></P>
+
+<LI>ou=Sales<A NAME="1017776"></A></LI>
+
+<LI>ou=Manufacturing</LI>
+</UL>
+</TD>
+</TR>
+
+<TR>
+<TD><A NAME="1017778"></A>st</TD>
+
+<TD><A NAME="1017780"></A>state or province name</TD>
+
+<TD><A NAME="1017782"></A>Identifies the state or province in which the
+entry resides. For example:
+<UL>
+<P><A NAME="1017783"></A></P>
+
+<LI>st=Iowa<A NAME="1017784"></A></LI>
+
+<LI>st=British Columbia</LI>
+</UL>
+</TD>
+</TR>
+
+<TR>
+<TD><A NAME="1017786"></A>street</TD>
+
+<TD><A NAME="1017788"></A>street address</TD>
+
+<TD><A NAME="1017790"></A>Identifies the street address at which the entry
+resides. For example:
+<UL>
+<P><A NAME="1017791"></A></P>
+
+<LI>street=494 Rice Creek Terrace</LI>
+</UL>
+</TD>
+</TR>
+</TABLE>
+
+<TABLE>
+<TR>
+<TD></TD>
+</TR>
+</TABLE>
+
+<P><A NAME="Distinguished Name examples"></A><A NAME="1017793"></A></P>
+
+<H2>Distinguished Name examples</H2>
+
+<P><A NAME="1017794"></A>The following are some examples of DNs:</P>
+
+<P><A NAME="1017795"></A></P>
+
+<UL>
+<PRE>cn=Wally Henderson,ou=Product Development,o=Example Corp,st=Minnesota,c=US
+</PRE>
+</UL>
+
+<P><A NAME="1017796"></A></P>
+
+<UL>
+<PRE>cn=Retch Sweeny, ou=Product Test, o=Example Corp, st=Michigan, c=US
+</PRE>
+</UL>
+
+<P><A NAME="1017797"></A></P>
+
+<UL>
+<PRE>cn=printer3b, l=room 308, o=Example Corp, c=US
+</PRE>
+</UL>
+
+<P><A NAME="997436"></A></P>
+
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/html/manual/dna.gif b/ldap/clients/dsgw/html/manual/dna.gif
new file mode 100644
index 00000000..ad5872c5
--- /dev/null
+++ b/ldap/clients/dsgw/html/manual/dna.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/manual/filters.htm b/ldap/clients/dsgw/html/manual/filters.htm
new file mode 100644
index 00000000..acb47a3e
--- /dev/null
+++ b/ldap/clients/dsgw/html/manual/filters.htm
@@ -0,0 +1,622 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Portions copyright 1999, 2002-2003 Netscape Communications Corporation.
+ All rights reserved.
+ -->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+<HEAD>
+ <TITLE></TITLE>
+ <META NAME="GENERATOR" CONTENT="Mozilla/3.0Gold (WinNT; I) [Netscape]">
+</HEAD>
+<BODY>
+
+<P><A NAME="1001595"></A></P>
+
+<P><A NAME="1001596"></A></P>
+
+<P><A NAME="996824"></A></P>
+
+<H1>Search Filters </H1>
+
+<P><A NAME="997436"></A>This chapter
+describes search filters and <A href="/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1018239">how searches
+work</A>.</P>
+
+<P><A NAME="Search Filters"></A><A NAME="1018822"></A></P>
+
+<H2>Search Filters</H2>
+
+<P><A NAME="1018489"></A>To narrow a search, you can specify search filters
+directly to the <A href="/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1015771">Smart Search</A> field. If
+the search field contains an equal sign (=), Smart Search assumes the value
+is a search filter, and it uses this filter directly to perform the search.</P>
+
+<P><A NAME="1018092"></A>Search filters use the value of an attribute to
+select the entries to be returned for Smart Search. For example, the following
+filter specifies a search for a common name equal to Babs Jensen:</P>
+
+<P><A NAME="1018094"></A></P>
+
+<UL>
+<UL>
+<PRE>cn=babs jensen
+</PRE>
+</UL>
+</UL>
+
+<P><A NAME="Search Filter Syntax"></A><A NAME="1018095"></A></P>
+
+<H3>Search Filter Syntax</H3>
+
+<P><A NAME="1018096"></A>The basic syntax of a search filter is:</P>
+
+<P><A NAME="1018097"></A></P>
+
+<UL>
+<UL>
+<PRE><A href="/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1019127">attribute</A> <A href="/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1019138">operator</A> value
+</PRE>
+</UL>
+</UL>
+
+<P><A NAME="1019085"></A>For example: </P>
+
+<P><A NAME="1019086"></A></P>
+
+<UL>
+<UL>
+<PRE>employeenumber &gt;= 100
+</PRE>
+</UL>
+</UL>
+
+<P><A NAME="1019090"></A>In the example above, <TT>employeenumber</TT>
+is the attribute, <TT>&gt;=</TT> is the operator, and 100 is the value.
+</P>
+
+<P><A NAME="1019104"></A>You can also define filters that use <A href="/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1018167">combinations
+of different attributes</A>. </P>
+
+<P><A NAME="Using Attributes in a Filter"></A><A NAME="1019127"></A></P>
+
+<H4>Using Attributes in a Filter</H4>
+
+<P><A NAME="1019162"></A>When searching for an entry, you can specify attributes
+associated with that type of entry. For example, when you search for entries
+about people, you can use the <TT>cn</TT> attribute to search for people
+with specific common names. </P>
+
+<P><A NAME="1019183"></A>Examples of attributes for entries about people
+might include: </P>
+
+<UL>
+<P><A NAME="1019188"></A></P>
+
+<LI><TT>cn</TT> (the person's common name) <A NAME="1019189"></A></LI>
+
+<LI><TT>telephonenumber</TT> (the person's phone number) <A NAME="1019190"></A></LI>
+
+<LI><TT>employeenumber</TT> (the person's employee number) <A NAME="1019191"></A></LI>
+
+<LI><TT>l</TT> (the person's location) </LI>
+</UL>
+
+<P><A NAME="1019184"></A>For a listing of the attributes associated with
+entries, see <A href="/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1002619">Appendix A, &quot;Entries
+and attribute fields&quot;</A>. Note that you need to use the internal
+attribute names in search filters. </P>
+
+<P><A NAME="Using Operators in a Filter"></A><A NAME="1019138"></A></P>
+
+<H4>Using Operators in a Filter</H4>
+
+<P><A NAME="1018153"></A>An operator defines one of the following types
+of searches: </P>
+
+<TABLE BORDER=2 >
+<CAPTION></CAPTION>
+
+<TR>
+<TH><A NAME="1018101"></A><B>Search type</B> </TH>
+
+<TH><A NAME="1018103"></A><B>Operator</B> </TH>
+
+<TH><A NAME="1018105"></A><B>Description</B> </TH>
+</TR>
+
+<TR>
+<TD><A NAME="1018107"></A>Equality </TD>
+
+<TD><A NAME="1018109"></A>= </TD>
+
+<TD><A NAME="1018111"></A>Returns entries containing attributes which match
+the specified value. For example,
+<UL>
+<P><A NAME="1019083"></A><TT>cn=Bob Johnson</TT></P>
+</UL>
+</TD>
+</TR>
+
+<TR>
+<TD><A NAME="1018113"></A>Substring </TD>
+
+<TD><A NAME="1018115"></A>=&lt;string&gt;*&lt;string&gt; </TD>
+
+<TD><A NAME="1018117"></A>Returns entries containing attributes containing
+the specified substring. For example,
+<UL>
+<P><A NAME="1018118"></A><TT>cn=Bob*</TT></P>
+
+<P><A NAME="1018119"></A><TT>cn=*Johnson</TT></P>
+
+<P><A NAME="1018120"></A><TT>cn=*John*</TT></P>
+
+<P><A NAME="1018121"></A><TT>cn=B*John</TT></P>
+</UL>
+</TD>
+</TR>
+
+<TR>
+<TD><A NAME="1018123"></A>Greater than or equal to </TD>
+
+<TD><A NAME="1018125"></A>&gt;= </TD>
+
+<TD><A NAME="1018127"></A>Returns entries containing attributes that are
+greater than or equal to the specified value. For example,
+<UL>
+<P><A NAME="1018128"></A><TT>employeenumber &gt;= 100</TT></P>
+</UL>
+</TD>
+</TR>
+
+<TR>
+<TD><A NAME="1018130"></A>Less than or equal to </TD>
+
+<TD><A NAME="1018132"></A>&lt;= </TD>
+
+<TD><A NAME="1018134"></A>Returns entries containing attributes that are
+less than or equal to the specified value. For example,
+<UL>
+<P><A NAME="1018135"></A><TT>employeenumber &lt;= 100</TT></P>
+</UL>
+</TD>
+</TR>
+
+<TR>
+<TD><A NAME="1018137"></A>Presence </TD>
+
+<TD><A NAME="1018139"></A>=* </TD>
+
+<TD><A NAME="1018141"></A>Returns entries containing the specified attribute.
+For example,
+<UL>
+<P><A NAME="1018142"></A><TT>cn=*</TT></P>
+
+<P><A NAME="1018143"></A><TT>telephonenumber=*</TT></P>
+
+<P><A NAME="1018144"></A><TT>manager=*</TT></P>
+</UL>
+</TD>
+</TR>
+
+<TR>
+<TD><A NAME="1018146"></A>Approximate </TD>
+
+<TD><A NAME="1018148"></A>~= </TD>
+
+<TD><A NAME="1018150"></A>Returns entries containing the specified attribute
+that is approximately equal to the specified value. For example,
+<UL>
+<P><A NAME="1018151"></A><TT>cn~=surette</TT></P>
+
+<P><A NAME="1018152"></A><TT>l~=san fransico</TT></P>
+</UL>
+</TD>
+</TR>
+</TABLE>
+
+<TABLE>
+<TR>
+<TD></TD>
+</TR>
+</TABLE>
+
+<P><A NAME="1018160"></A>For more information on these types of searches,
+see &quot;<A href="/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1018239">How searching works</A>.&quot;
+</P>
+
+<P><A NAME="Using Multiple Search Filters"></A><A NAME="1018167"></A></P>
+
+<H4>Using Multiple Search Filters</H4>
+
+<P><A NAME="1018168"></A>You can combine different search filters by using
+boolean operators. Use the operators in prefix notation as follows:</P>
+
+<P><A NAME="1018169"></A></P>
+
+<UL>
+<PRE>(<I>boolean_operator</I>((<I>filter</I>)(<I>filter</I>)(<I>filter</I>)...))
+</PRE>
+</UL>
+
+<P><A NAME="1018170"></A>where <I>boolean_operator</I> is any one of the <A href="/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1018173">boolean
+operators</A>. For example: </P>
+
+<P><A NAME="1019218"></A></P>
+
+<UL>
+<PRE>(&amp;(ou=Marketing)(cn=Ray*))
+</PRE>
+</UL>
+
+<P><A NAME="1019216"></A>In the example above, the combination of filters
+finds entries whose organizational unit is Marketing (<TT>ou=Marketing</TT>)
+and whose common name starts with Ray (<TT>cn=Ray*</TT>). The boolean operator
+for &quot;And&quot; (<TT>&amp;</TT>) is used in prefix notation, which
+means that it precedes the search criteria. </P>
+
+<P><A NAME="1019228"></A>In addition, you can nest boolean operators to
+form complex expressions, such as:</P>
+
+<P><A NAME="1018171"></A></P>
+
+<UL>
+<PRE>(boolean_operator(filter)((boolean_operator(filter)(filter)))
+</PRE>
+</UL>
+
+<P><A NAME="Boolean Operators"></A><A NAME="1018173"></A></P>
+
+<H4>Boolean Operators</H4>
+
+<P><A NAME="1018202"></A>The boolean operators available for use with search
+filters are: </P>
+
+<TABLE BORDER=2 >
+<CAPTION></CAPTION>
+
+<TR>
+<TH><A NAME="1018176"></A><B>Operator</B> </TH>
+
+<TH><A NAME="1018178"></A><B>Symbol</B> </TH>
+
+<TH><A NAME="1018180"></A><B>Description</B> </TH>
+</TR>
+
+<TR>
+<TD><A NAME="1018182"></A>And </TD>
+
+<TD><A NAME="1018184"></A>&amp; </TD>
+
+<TD><A NAME="1018186"></A>All specified filters must be true for the statement
+to be true. For example,
+<UL>
+<P><A NAME="1018187"></A><TT>(&amp;(filter1)(filter2)(filter3)...)</TT></P>
+</UL>
+
+<P><A NAME="1019015"></A>Filter1, filter2, and filter3 must all be true
+for an entry to match.</P>
+</TD>
+</TR>
+
+<TR>
+<TD><A NAME="1018189"></A>Or </TD>
+
+<TD><A NAME="1018191"></A>| </TD>
+
+<TD><A NAME="1018193"></A>At least one specified filter must be true for
+the statement to be true. For example,
+<UL>
+<P><A NAME="1018194"></A><TT>(|(filter1)(filter2)(filter3)...)</TT></P>
+</UL>
+
+<P><A NAME="1019024"></A>If any of filter1, filter2, or filter3 match,
+the entry is returned.</P>
+</TD>
+</TR>
+
+<TR>
+<TD><A NAME="1018196"></A>Not </TD>
+
+<TD><A NAME="1018198"></A>! </TD>
+
+<TD><A NAME="1018200"></A>The specified statement must not be true for
+the statement to be true. Note that only one filter is affected by the
+not operator. For example,
+<UL>
+<P><A NAME="1018201"></A><TT>(!(filter))</TT></P>
+</UL>
+
+<P><A NAME="1019025"></A>Any entry not matching the filter is returned.</P>
+</TD>
+</TR>
+</TABLE>
+
+<TABLE>
+<TR>
+<TD></TD>
+</TR>
+</TABLE>
+
+<P><A NAME="Search Filter Examples"></A><A NAME="1018203"></A></P>
+
+<H4>Search Filter Examples</H4>
+
+<P><A NAME="1018204"></A>The following filter searches for entries containing
+the manager attribute. This is also known as a presence search:</P>
+
+<P><A NAME="1018205"></A></P>
+
+<PRE> manager=*
+</PRE>
+
+<P><A NAME="1018206"></A>The following filter searches for entries containing
+the common name of Ray Kultgen. This is also known as an equality search:</P>
+
+<P><A NAME="1018207"></A></P>
+
+<PRE> cn=Ray Kultgen
+</PRE>
+
+<P><A NAME="1018208"></A>The following filter returns any entries that
+do not contain the common name of Ray Kultgen:</P>
+
+<P><A NAME="1018209"></A></P>
+
+<PRE> (!(cn=Ray Kultgen))
+</PRE>
+
+<P><A NAME="1018210"></A>The following filter returns any entries that
+contain a description attribute with a substring of X.500:</P>
+
+<P><A NAME="1018211"></A></P>
+
+<PRE> description=*X.500*
+</PRE>
+
+<P><A NAME="1018212"></A>The following filter returns any entries whose
+organizational unit is Marketing and whose description field does not contain
+the substring X.500:</P>
+
+<P><A NAME="1018213"></A></P>
+
+<PRE> (&amp;(ou=Marketing)(!(description=*X.500*)))
+</PRE>
+
+<P><A NAME="1018214"></A>The following filter returns any entries whose
+organizational unit is Marketing and who have Julie Fulmer or Cindy Zwaska
+as a manager:</P>
+
+<P><A NAME="1018215"></A></P>
+
+<PRE> (&amp;(ou=Marketing)(|(manager=&quot;cn=Julie Fulmer,ou=Marketing,o=Example Corp,c=US&quot;)<br>(manager=&quot;cn=Cindy Zwaska,ou=Marketing,o=Example Corp,c=US&quot;)))
+</PRE>
+
+<P><A NAME="1018216"></A>The following filter returns any entries that
+do not represent a person:</P>
+
+<P><A NAME="1018217"></A></P>
+
+<PRE> (!(objectclass=person))
+</PRE>
+
+<P><A NAME="1018218"></A>The following filter returns any entries that
+do not represent a person and whose common name is approximately printer3b:</P>
+
+<P><A NAME="1018219"></A></P>
+
+<PRE> (&amp;(!(objectclass=person))(cn~=printer3b))
+</PRE>
+
+<P><A NAME="How Searching Works"></A><A NAME="1018239"></A></P>
+
+<H2>How Searching Works</H2>
+
+<P><A NAME="1018240"></A></P>
+
+<BLOCKQUOTE>
+<P><B>Note: </B></P>
+</BLOCKQUOTE>
+
+<P><A NAME="1019880"></A></P>
+
+<BLOCKQUOTE>
+<P>The Directory Server interface is actually a collection of forms and
+CGI programs that operate independently from the Directory Server. This
+interface acts as an LDAP client to the Directory Server. </P>
+</BLOCKQUOTE>
+
+<P><A NAME="1019775"></A>The following section explains what happens when
+you search the Directory Server:</P>
+
+<OL>
+<P><A NAME="1018241"></A></P>
+
+<LI>When you submit the form, you send a search filter to the Directory
+Server. <A NAME="1018242"></A></LI>
+
+<LI>The Directory Server examines the incoming request to verify that the
+information is in the local directory. If the information is not in the
+local directory and the Referral parameter is set for the server, the Directory
+Server returns the URL for the other Directory Server where the client
+can attempt to pursue the request. <A NAME="1018244"></A></LI>
+
+<LI>The Directory Server generates a list of entries from the directory
+tree. The Directory Server then examines each of the candidate entries
+to see if any entry matches the search criteria. Matching entries are returned
+to the Directory Server interface as each is found. <A NAME="1019576"></A>This
+process continues until the Directory Server either has examined all applicable
+entries, or until it reaches one of the following limits: </LI>
+
+<UL>
+<P><A NAME="1018252"></A></P>
+
+<LI>The maximum number of entries that can be returned in response to a
+search <A NAME="1018259"></A></LI>
+
+<LI>The maximum amount of time that can be taken for a search <A NAME="1018266"></A></LI>
+
+<LI>The maximum number of entries that can be examined during a search
+</LI>
+</UL>
+</OL>
+
+<P><A NAME="1019628"></A>Your administrator can configure these settings.
+For more detailed information on the searching algorithm, see the <I>Netscape
+Directory Server Administrator's Guide</I>. </P>
+
+<P><A NAME="1019776"></A>The rest of this section explains how approximate
+searches work and how substring searches work. </P>
+
+<P><A NAME="How Approximate ("></A><A NAME="1018301"></A></P>
+
+<H3>How Approximate (&quot;sounds like&quot;) Searches Work</H3>
+
+<P><A NAME="1018302"></A>The approximate search finds a word that &quot;sounds
+like&quot; the value you enter. In the Advanced Search interface, the approximate
+search corresponds to the &quot;sounds like&quot; search type. </P>
+
+<P><A NAME="1019677"></A>For example, an entry may include the attribute
+value cn=Robert E Lee. An approximate search allows you to find this entry
+by specifying Robert Lee, Robert, or Lee. Similarly, a search for the location
+approximately equal to San Fransico (l~=San Fransico; note the misspelling)
+would return entries including locations exactly equal to San Francisco
+(l=San Francisco).</P>
+
+<P><A NAME="1018303"></A>The Directory Server treats each value in an entry
+as a sequence of words and generates a phonetic code for each word. When
+you enter a value in an approximate search, the Directory Server also translates
+the value to a sequence of phonetic codes. An entry is considered to match
+a query if:</P>
+
+<UL>
+<P><A NAME="1018305"></A></P>
+
+<LI>All of the codes in your search criteria are present in the codes generated
+for the entry. <A NAME="1018306"></A></LI>
+
+<LI>All of the codes in your search criteria are specified in the same
+order as the codes generated for the entry. </LI>
+</UL>
+
+<P><A NAME="1018344"></A>For example: </P>
+
+<TABLE BORDER=2 >
+<CAPTION></CAPTION>
+
+<TR>
+<TH><A NAME="1018309"></A><B>Name in the directory <BR>
+(Phonetic code) </B></TH>
+
+<TH><A NAME="1018311"></A><B>Your search string <BR>
+(Phonetic code) </B></TH>
+
+<TH><A NAME="1018313"></A><B>Match comments</B> </TH>
+</TR>
+
+<TR>
+<TD><A NAME="1018315"></A>Alice B Sarette<BR>
+(ALS B SRT) </TD>
+
+<TD><A NAME="1018317"></A>Alice Sarette<BR>
+(ALS SRT) </TD>
+
+<TD><A NAME="1018319"></A>Matches. Codes are specified in the correct order.
+</TD>
+</TR>
+
+<TR>
+<TD><A NAME="1018321"></A></TD>
+
+<TD><A NAME="1018323"></A>Alice Sarrette<BR>
+(ALS SRT) </TD>
+
+<TD><A NAME="1018325"></A>Matches. Codes are specified in the correct order
+despite the misspelling of Sarette. </TD>
+</TR>
+
+<TR>
+<TD><A NAME="1018327"></A></TD>
+
+<TD><A NAME="1018329"></A>Surette<BR>
+(SRT) </TD>
+
+<TD><A NAME="1018331"></A>Matches. The generated code exists in the original
+name despite the misspelling of Sarette. </TD>
+</TR>
+
+<TR>
+<TD><A NAME="1018333"></A></TD>
+
+<TD><A NAME="1018335"></A>Bertha Sarette<BR>
+(BR0 SRT) </TD>
+
+<TD><A NAME="1018337"></A>No match. The code BR0 does not exist in the
+original name. </TD>
+</TR>
+
+<TR>
+<TD><A NAME="1018339"></A></TD>
+
+<TD><A NAME="1018341"></A>Sarette, Alice<BR>
+(SRT ALS) </TD>
+
+<TD><A NAME="1018343"></A>No match. The codes are not specified in the
+correct order. </TD>
+</TR>
+</TABLE>
+
+<TABLE>
+<TR>
+<TD></TD>
+</TR>
+</TABLE>
+
+<P><A NAME="How Substring Searches Work"></A><A NAME="1018345"></A></P>
+
+<H3>How Substring Searches Work</H3>
+
+<P><A NAME="1018346"></A>The substring search finds entries that contain
+the value you have entered. In the Advanced Search interface, the substring
+search corresponds to the &quot;starts with&quot;, &quot;contains&quot;,
+and &quot;ends with&quot; search types. </P>
+
+<P><A NAME="1018347"></A>For example, searches of the form:</P>
+
+<UL>
+<UL>
+<P><A NAME="1018348"></A><TT>cn=*derson</TT><BR>
+</P>
+</UL>
+</UL>
+
+<P><A NAME="1018349"></A>would match the common names containing strings
+such as:</P>
+
+<P><A NAME="1018350"></A></P>
+
+<UL>
+<UL>
+<PRE>Bill Anderson
+Jill Anderson
+Steve Sanderson
+</PRE>
+</UL>
+</UL>
+
+<P><A NAME="1018351"></A>and so forth. Similarly, the search for</P>
+
+<UL>
+<UL>
+<P><A NAME="1018352"></A><TT>telephonenumber= *555*</TT><BR>
+</P>
+</UL>
+</UL>
+
+<P><A NAME="1018353"></A>would return all the entries in your directory
+with telephone numbers that contain 555.</P>
+
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/html/manual/index.html b/ldap/clients/dsgw/html/manual/index.html
new file mode 100644
index 00000000..2d1fcdbe
--- /dev/null
+++ b/ldap/clients/dsgw/html/manual/index.html
@@ -0,0 +1,150 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Portions copyright 1999, 2002-2003 Netscape Communications Corporation.
+ All rights reserved.
+ -->
+<A NAME="6807">
+<H1>
+</H1>
+</A>
+
+
+<h2>Symbols</h2>
+<dl><dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1018202">! (boolean operator) 28</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1018202">&amp; (boolean operator) 28</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1018153">&lt;= (search filter operator) 27</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1018153">= (search filter operator) 26</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1018153">=* (search filter operator) 27</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1018153">&gt;= (search filter operator) 27</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1015792">@ symbol in search criteria 17</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1018202">| (boolean operator) 28</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1018153">~= (search filter operator) 27</a></dl>
+</dl>
+<h2>A</h2>
+<dl><dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#996824">access control 51</a><dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#1019235">directory manager 56</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#1019233">setting up anonymous access 55</a></dl>
+<dt><dd>adding<dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#996824">entries 33</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#1017016">groups 37</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#1021328">NT-people 35</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#1017017">organizational units 38</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#1020503">organizations 38</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#1017015">people 34</a></dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1016146">Admin (attribute field) 65</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1015906">Advanced Search 18</a><dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1016481">examples of 22</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1015914">Find field 19</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1016028">specifying the attribute used 20</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1020752">specifying the type of search 21</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1020751">type field 21</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1015967">where field 20</a></dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#1019233">anonymous access 55</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1016441">approximate search 22</a><dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1018301">how it works 30</a></dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004519">attribute fields 64</a><dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1011923">defined 58</a></dl>
+<dt><dd>attributes<dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1016028">searching based on an attribute's value 20</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1019127">using in search filters 26</a></dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/intro.htm#1019066">authentication 6</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#996824">51</a><dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#1019235">as the directory manager 56</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1016557">no matching entries found 23</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#1016877">performing 52</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#1019233">setting up anonymous access 55</a></dl>
+</dl>
+</dl>
+
+<h2>B</h2>
+<dl><dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004700">bin (attribute field format) 65</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1018167">boolean operators 27</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1018173">28</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1003042">Business Category (attribute field) 65</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1003042">businessCategory (attribute internal ID) 65</a></dl>
+</dl>
+<h2>C</h2>
+<dl><dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/intro.htm#1019537">c (attribute in a distinguished name) 10</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1003044">Car License (attribute field) 65</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1003044">carLicense (attribute internal ID) 65</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004701">ces (attribute field format) 65</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1018988">changing a person entry's password 41</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1020767">changing an NT-person password 43</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1020703">changing passwords 49</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004702">cis (attribute field format) 65</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/intro.htm#1019537">cn (attribute in a distinguished name) 10</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1015820">cn (attribute internal ID) 67</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1019366">common names 15</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1015820">commonName (attribute internal ID) 67</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1016440">"contains" search 22</a><dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1018345">how it works 31</a></dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1017537">Create New NT Account (attribute field) 66</a></dl>
+</dl>
+<h2>D</h2>
+<dl><dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1017434">Delete NT Account if Person Deleted (attribute field) 66</a><dt><dd>deleting<dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1017977">entries 49</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1018061">group entries 44</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1020767">NT-people entries 43</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1019729">organization entries 46</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1018896">organizational unit entries 45</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1018988">people's entries 41</a></dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1015879">departmentNumber (attribute internal ID) 66</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1015879">Dept# (attribute field) 66</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004238">Description (attribute field) 66</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004238">description (attribute internal ID) 66</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/intro.htm#1017847">Directory Server 5</a><dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/intro.htm#1019066">access control 6</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#996824">51</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#1017016">adding a group 37</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#1017015">adding a person 34</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#1021328">adding an NT-person 35</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#1020503">adding an organization 38</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#1017017">adding an organizational unit 38</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/intro.htm#1019060">adding entries 5</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#996824">33</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/intro.htm#1019066">authenticating to 6</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#996824">authentication 51</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1020767">changing NT-person passwords 43</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1020703">changing passwords 49</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1018988">changing people passwords 41</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/intro.htm#1017847">defined 5</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1018061">deleting a group entry 44</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1018988">deleting a person's entry 41</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1020767">deleting an NT-person entry 43</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1019729">deleting an organization entry 46</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1018896">deleting an organizational unit entry 45</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/intro.htm#1019063">deleting entries 5</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1017977">49</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1018061">editing a group's entry 44</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1018988">editing a person's entry 41</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1020767">43</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1020767">editing an NT-person's entry 43</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1019729">editing an organization entry 46</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1018896">editing an organizational unit entry 45</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1018240">interface defined 29</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/intro.htm#1019063">modifying entries 5</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/intro.htm#1018798">organization of data in 7</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#1016903">permissions 53</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1018061">renaming a group entry 44</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1018988">renaming a person's entry 41</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1020767">renaming an NT-person entry 43</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1019729">renaming an organization entry 46</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1018896">renaming an organizational unit entry 45</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/intro.htm#1019063">renaming entries 5</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1019773">47</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/intro.htm#1019335">searching 5</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#997436">13</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/intro.htm#1019066">security 6</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#996824">51</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/intro.htm#1018798">tree hierarchy 7</a></dl>
+<dt><dd>directory service<dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/intro.htm#1019237">defined 6</a></dl>
+<dt><dd>distinguished name (DN)<dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/intro.htm#1019610">defined 9</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/intro.htm#1019538">examples of 11</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/intro.htm#1019466">standard attributes 10</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/intro.htm#1019462">syntax 9</a></dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004704">dn (attribute field format) 65</a></dl>
+</dl>
+<h2>E</h2>
+<dl><dl>
+<dt><dd>editing<dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#996824">entries 41</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1018061">group entries 44</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1020767">NT-person entries 43</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1019729">organization entries 46</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1018896">organizational unit entries 45</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1018988">people's entries 41</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1020767">43</a></dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1015992">E-Mail Address (attribute field) 66</a><dt><dd>e-mail addresses<dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1015791">searching for 17</a></dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1003050">Emp# (attribute field) 67</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1003050">employeeNumber (attribute internal ID) 67</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1016439">"ends with" search 22</a><dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1018345">how it works 31</a></dl>
+<dt><dd>entries<dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/intro.htm#1019060">adding 5</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#996824">33</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/intro.htm#1019063">deleting 5</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1017977">49</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#996824">editing 41</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/intro.htm#1019063">modifying 5</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#996824">41</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/intro.htm#1019063">renaming 5</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1019773">47</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1016571">searching for types of 14</a></dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1002653">entry types 58</a><dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1002638">defined 58</a></dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1016432">exact match search 22</a></dl>
+</dl>
+<h2>F</h2>
+<dl><dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004782">facsimileTelephoneNumber (attribute internal ID) 67</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004782">Fax (attribute field) 67</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004782">fax (attribute internal ID) 67</a><dt><dd>Find field<dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1018630">Anything 15</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1019829">19</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1016700">Groups 14</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1015931">19</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1015914">in Advanced Search 19</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1016571">in Smart Search 14</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1021638">NT-people 14</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1016705">Org_Units 14</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1019059">19</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1016702">Organizations 14</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1019056">19</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1016698">People 14</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1015916">19</a></dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1003054">First Name (attribute field) 67</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1015820">Full Name (attribute field) 67</a></dl>
+</dl>
+<h2>G</h2>
+<dl><dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1003054">givenName (attribute internal ID) 67</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1005294">Group (entry type) 62</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1016040">Group Members (attribute field) 68</a></dl>
+</dl>
+<h2>I</h2>
+<dl><dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1016236">internal attribute ID 64</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1016433">"is not" search 22</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1016432">"is" search 22</a></dl>
+</dl>
+<h2>L</h2>
+<dl><dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/intro.htm#1019537">l (attribute in a distinguished name) 10</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004816">l (attribute internal ID) 68</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1015921">labeledURI (attribute internal ID) 72</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1015952">Last Name (attribute field) 68</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/intro.htm#1019237">Lightweight Directory Access Protocol (LDAP) 6</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004816">localityName (attribute internal ID) 68</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004816">Location (attribute field) 68</a></dl>
+</dl>
+<h2>M</h2>
+<dl><dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1015992">mail (attribute internal ID) 66</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1016103">Mailing Address (attribute field) 68</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1015579">Manager (attribute field) 69</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1015579">manager (attribute internal ID) 69</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1016040">member (attribute internal ID) 68</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1015590">mobile (attribute internal ID) 69</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1015590">Mobile Phone (attribute field) 69</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1015590">mobileTelephoneNumber (attribute internal ID) 69</a><dt><dd>modifying<dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#996824">entries 41</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1018061">group entries 44</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1020767">NT-people entries 43</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1019729">organization entries 46</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1018896">organizational unit entries 45</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1018988">people's entries 41</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1020767">43</a></dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1018167">multiple search filters 27</a></dl>
+</dl>
+<h2>N</h2>
+<dl><dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1015595">Name (attribute field) 69</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1017346">NT Domain Name (attribute field) 69</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1017371">NT User Id (attribute field) 70</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1018209">NT-person (entry type) 60</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1017682">NTUserCreateNewAccount (attribute internal ID) 66</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1017503">NTUserDelete (attribute internal ID) 66</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1017364">NTUserDomainId (attribute internal ID) 70</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1019356">numbers in search criteria 17</a></dl>
+</dl>
+<h2>O</h2>
+<dl><dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/intro.htm#1019537">o (attribute in a distinguished name) 11</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1015598">o (attribute internal ID) 70</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1005782">Organization (entry type) 64</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1015598">Organization Name (attribute field) 70</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1016060">Organizational Unit (attribute field) 71</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1005780">Organizational Unit (entry type) 63</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1016060">organizationalUnitName (attribute internal ID) 71</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1015598">organizationName (attribute internal ID) 70</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/intro.htm#1019537">ou (attribute in a distinguished name) 11</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1016060">ou (attribute internal ID) 71</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1005719">Owner (attribute field) 70</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1005719">owner (attribute internal ID) 70</a></dl>
+</dl>
+<h2>P</h2>
+<dl><dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1003070">Pager (attribute field) 70</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1003070">pager (attribute internal ID) 70</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1003070">pagerTelephoneNumber (attribute internal ID) 70</a><dt><dd>passwords<dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1018988">changing 41</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1020767">43</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1020703">49</a></dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#1016903">permissions 53</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1005608">Person (entry type) 59</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1018209">60</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1016078">Phone (attribute field) 71</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1016103">postalAddress (attribute internal ID) 68</a></dl>
+</dl>
+<h2>R</h2>
+<dl><dl>
+<dt><dd>renaming<dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1019773">entries 47</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1018061">group entries 44</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1020767">NT-people entries 43</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1019729">organization entries 46</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1018896">organizational unit entries 45</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#1018988">people's entries 41</a></dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1003082">Room Number (attribute field) 71</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1003082">roomNumber (attribute internal ID) 71</a></dl>
+</dl>
+<h2>S</h2>
+<dl><dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1019400">search filters 17</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#996824">25</a><dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1018095">basic syntax 25</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1018167">combining multiple 27</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1018203">examples 28</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1018167">syntax for multiple filters 27</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1019127">using attributes 26</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1019138">using operators 26</a></dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1016552">search results 23</a><dt><dd>search types<dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1018153">approximate 27</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1018153">equality 26</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1018153">exact match 26</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1018153">numeric comparisons 27</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1018153">presence 27</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1019138">search filter operators and 26</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1020752">specifying in Advanced Search 21</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1018153">substring 26</a></dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/intro.htm#1019335">searching 5</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#997436">13</a><dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1019373">case-sensitivity and 15</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1018630">for all types of entries 15</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1019829">19</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1019372">for an exact match 15</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1015791">for e-mail addresses 17</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1016700">for groups 14</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1019362">for names 15</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1021638">for NT-people 14</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1019356">for numbers 17</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1016705">for organizational units 14</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1019059">19</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1016702">for organizations 14</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1019056">19</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1016698">for people 14</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1015916">19</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1016571">for specific types of entries 14</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1019375">for words that sound alike 15</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1018239">how it works 29</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1015906">using Advanced Search 18</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1019400">using filters 17</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1019381">using initials 16</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1015773">using Smart Search 13</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1016552">working with results 23</a></dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1015931">searching for groups 19</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1016146">secretary (attribute internal ID) 65</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#996824">security 51</a><dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#1019235">directory manager 56</a></dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004337">See Also (attribute field) 71</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004337">seeAlso (attribute internal ID) 71</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1015773">Smart Search 13</a><dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1016571">Find field 14</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#996824">search filters 25</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1015791">searching for e-mail addresses 17</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1019362">searching for names 15</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1019381">searching for names with initials 16</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1019356">searching for numbers 17</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1019400">using search filters 17</a></dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1015952">sn (attribute internal ID) 68</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1016441">"sounds like" search 22</a><dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1018301">how it works 30</a></dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/intro.htm#1019537">st (attribute in a distinguished name) 11</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1016434">"starts with" search 22</a><dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1018345">how it works 31</a></dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/intro.htm#1019537">street (attribute in a distinguished name) 11</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1016434">substring search 22</a><dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1019375">defined 15</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/filters.htm#1018345">how it works 31</a></dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1015952">surname (attribute internal ID) 68</a></dl>
+</dl>
+<h2>T</h2>
+<dl><dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1004703">tel (attribute field format) 65</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1016078">telephoneNumber (attribute internal ID) 71</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1003096">Title (attribute field) 71</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1003096">title (attribute internal ID) 71</a><dt><dd>type field<dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1020751">in Advanced Search 21</a></dl>
+</dl>
+</dl>
+<h2>U</h2>
+<dl><dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1017386">uid (attribute internal ID) 70</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1016953">72</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1016060">Unit Name (attribute field) 71</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1015921">URL (attribute field) 72</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1016953">User ID (attribute field) 72</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1016953">userid (attribute internal ID) 72</a></dl>
+</dl>
+<h2>W</h2>
+<dl><dl>
+<dt><dd>where field<dl>
+<dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1015967">in Advanced Search 20</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1020749">options for finding anything 21</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1016358">options for finding groups 20</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1016363">options for finding organizations 21</a><dt><dd><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#1016284">options for finding people 20</a></dl>
+</dl>
diff --git a/ldap/clients/dsgw/html/manual/index.map b/ldap/clients/dsgw/html/manual/index.map
new file mode 100644
index 00000000..a70461c3
--- /dev/null
+++ b/ldap/clients/dsgw/html/manual/index.map
@@ -0,0 +1,49 @@
+;-------------------------------------------------------------------------
+; PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+; license terms. Copyright © 2001 Sun Microsystems, Inc.
+; Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+; All rights reserved.
+;-------------------------------------------------------------------------
+; -------------------------------------------MAPPINGS
+; CGIScriptName = HTMLfile#AnchorName
+; last update, sarette 10/10
+;-------------------------------------------PROGRAMS
+;
+;
+SEARCHING = search.htm
+SMARTSEARCH = search.htm#Performing a Standard Search
+ASEARCH = search.htm#Performing an Advanced Search
+
+AUTHENTICATING = auth.htm
+AUTHHELP_ID = auth.htm#userauth
+AUTHHELP_PW = auth.htm#userauth
+UNAUTH = auth.htm#logout
+AUTHPROBLEM = auth.htm#incorrectauth
+AUTHSUCCESS = auth.htm#authsuccess
+AUTHEXPIRED = auth.htm#reauth
+AUTHMULTMATCH = auth.htm#userauth
+
+EDITING = mod.htm
+EDIT_GROUP = mod.htm#groups
+EDIT_NTGROUP = mod.htm#NTgroups
+EDIT_GROUPMEM = mod.htm#addowner
+EDIT_PERSON = mod.htm#people
+EDIT_NTPERSON = mod.htm#ntpeople
+EDIT_ORG = mod.htm#o
+EDIT_ORGPERSON = mod.htm#people
+EDIT_ORGUNIT = mod.htm#ou
+MODIFYPASSWD = mod.htm#changepw
+EDIT_PERSON_REF = mod.htm#addmanager
+
+ADDING = add.htm
+ADD_NOPARENT = add.htm#tree
+ADD_GROUP = add.htm#group
+ADD_NTGROUP = add.htm#NTgroup
+ADD_PERSON = add.htm#person
+ADD_NTPERSON = add.htm#NTperson
+ADD_ORG = add.htm#o
+ADD_ORGPERSON = add.htm#person
+ADD_ORGUNIT = add.htm#ou
+ENTRYEXISTS = add.htm#uniqueDN
+
+contents = contents.html
diff --git a/ldap/clients/dsgw/html/manual/intro.htm b/ldap/clients/dsgw/html/manual/intro.htm
new file mode 100644
index 00000000..8f9ae90e
--- /dev/null
+++ b/ldap/clients/dsgw/html/manual/intro.htm
@@ -0,0 +1,70 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Portions copyright 1999, 2002-2003 Netscape Communications Corporation.
+ All rights reserved.
+ -->
+<html>
+<head>
+<title>Introduction to the Netscape Directory Server Interface</title>
+</head>
+
+<body>
+
+<h1>Introduction to the Directory Server Interface</h1>
+
+<p>The Netscape Directory Server is a robust, scalable server for storing, querying, and
+managing an enterprise-wide directory of users and information. Using the Directory Server, corporate IS organizations can manage
+information from a single point of control, and employees can retrieve this information from multiple network locations.</p>
+
+<p>The directory server provides a simple interface to
+corporate user information. From this interface, you can:</p>
+
+<ul>
+<P>
+ <li><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#search">Search the directory for
+ information about users and resources.</a> For example,
+ you can search for an employee's email address or phone
+ number. You can find more information about searching the
+ directory in <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm">Chapter 2,
+ &quot;Searching the Directory Tree.&quot;</a></li>
+<P>
+ <li><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#adding">Create a new entry in the
+ directory.</a> For example, you can add information about
+ a new employee, such as the employee's name and phone
+ number. This feature is usually reserved only for
+ users who have authenticated properly to the Directory
+ Server, and who have been granted write permissions by
+ the directory administrator. For information about adding
+ new users, groups, organizational units, and
+ organizations to the directory, see <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm">Chapter 3,
+ &quot;Adding Entries.&quot;</a></li>
+<P>
+ <li><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#editing">Modify existing entries in the
+ directory.</a> For example, if you have the appropriate
+ permissions, you can change existing values to entry
+ attributes, delete the entire entry, rename the entry,
+ or change the password for the entry.
+ This feature is usually reserved only for users who have been
+ granted write permissions by the directory administrator, and
+ have authenticated properly to the Directory Server. For
+ instructions on updating information about users, groups,
+ organizational units, and organizations, see <a
+ href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm">Chapter 4, &quot;Editing
+ Entries.&quot;</a></li>
+<P>
+ <li><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#authenticating">Authenticate to the
+ Directory Server.</a> If your directory manager has made
+ authentication a requirement for accessing or writing to the Directory
+ Server, you may need to enter your user name and password.
+ While the exact authentication requirements
+ vary from site to site, the Directory Server typically
+ requires authentication only if you are adding,
+ modifying, or deleting an entry in the directory. For
+ details on authenticating to the Directory Server, see <a
+ href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm">Chapter 5, &quot;Authentication.&quot;</a></li>
+</ul>
+
+<p> </p>
+</body>
+</html>
diff --git a/ldap/clients/dsgw/html/manual/ja/add.htm b/ldap/clients/dsgw/html/manual/ja/add.htm
new file mode 100644
index 00000000..ce2805e2
--- /dev/null
+++ b/ldap/clients/dsgw/html/manual/ja/add.htm
@@ -0,0 +1,517 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<TITLE>ディレクトリ エントリã®è¿½åŠ 
+</TITLE>
+</HEAD>
+<BODY>
+
+<H1>
+<A NAME="adding"></A>エントリã®è¿½åŠ </H1>
+Directory Serverインタフェースを使用ã—ã¦ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«æ–°è¦ã‚¨ãƒ³ãƒˆãƒªã‚’追加ã§ãã¾ã™ã€‚エントリを追加ã™ã‚‹ã«ã¯ã€ã‚¨ãƒ³ãƒˆãƒªã‚’追加ã§ãる権é™ãŒDirectory Server管ç†è€…ã‹ã‚‰ä»˜ä¸Žã•ã‚Œã¦ã„ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。エントリã®è¿½åŠ ã®å‰ã«ã¯ã€Directory Serverã¸ã®<A HREF="auth.htm#userauth">èªè¨¼</A>ãŒå¿…è¦ã§ã™ã€‚
+
+<P>Directory Serverインタフェースを使用ã—ã¦ã€ä»¥ä¸‹ã‚’追加ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
+<UL>
+<LI>
+<A HREF="#person">ユーザ</A></LI>
+
+<LI>
+<A HREF="#NTperson">NTユーザ</A></LI>
+
+<LI>
+<A HREF="#group">グループ</A></LI>
+
+<LI>
+<A HREF="#NTgroup">NTグループ</A></LI>
+
+<LI>
+<A HREF="#ou">組織å˜ä½</A></LI>
+
+<LI>
+<A HREF="#o">組織</A></LI>
+</UL>
+åˆã‚ã¦ã‚¨ãƒ³ãƒˆãƒªã‚’追加ã™ã‚‹å‰ã«ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª ツリーãŠã‚ˆã³å‘½åè¦ç´„ã«é–¢ã™ã‚‹é‡è¦ãªæƒ…å ±ã«ã¤ã„ã¦ã€<A HREF="#guidelines">「新è¦ã‚¨ãƒ³ãƒˆãƒªã«é–¢ã™ã‚‹ã‚¬ã‚¤ãƒ‰ãƒ©ã‚¤ãƒ³ã€</A>ã®é …ã‚’ãŠèª­ã¿ãã ã•ã„。
+<H2>
+<A NAME="guidelines"></A>æ–°è¦ã‚¨ãƒ³ãƒˆãƒªã«é–¢ã™ã‚‹ã‚¬ã‚¤ãƒ‰ãƒ©ã‚¤ãƒ³</H2>
+ディレクトリã«ã‚¨ãƒ³ãƒˆãƒªã®è¿½åŠ ã‚’始ã‚ã‚‹å‰ã«ã€ä»¥ä¸‹ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªæ¦‚念をç†è§£ã—ã¦ãŠã„ã¦ãã ã•ã„。
+<UL>
+<LI>
+<A HREF="#tree">ディレクトリ ツリー構造</A></LI>
+
+<LI>
+<A HREF="#DN">識別åã®æ§‹æ–‡</A></LI>
+
+<LI>
+<A HREF="#uniqueDN">固有ã®è­˜åˆ¥å</A></LI>
+</UL>
+
+<H3>
+<A NAME="tree"></A>ディレクトリ ツリー構造</H3>
+ディレクトリã®ãƒ‡ãƒ¼ã‚¿ã¯ãƒ„リー階層ã§æ•´ç†ã•ã‚Œã¦ã„ã¾ã™ã€‚ツリーã®æœ€ä¸Šä½ã¯ã€ãƒ«ãƒ¼ãƒˆã¾ãŸã¯ã‚µãƒ•ã‚£ãƒƒã‚¯ã‚¹ã¨å‘¼ã°ã‚Œã¾ã™ã€‚通常ルート エントリã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®çµ„織エントリã«ãªã£ã¦ã„ã¾ã™ã€‚
+
+<BLOCKQUOTE><B>ノート:</B>
+<P>
+
+ã”使用ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ã¯è¤‡æ•°ã®ã‚µãƒ•ã‚£ãƒƒã‚¯ã‚¹ãŒå«ã¾ã‚Œã¦ã„ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“ãŒã€Directory Serverインタフェースã§ã¯ã€å˜ä¸€ã®ã‚µãƒ•ã‚£ãƒƒã‚¯ã‚¹ã«å¯¾ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªã®æ¤œç´¢ã€è¿½åŠ ã€ç·¨é›†ã®ã¿ãŒå¯èƒ½ã§ã™ã€‚æ–°è¦ã‚¨ãƒ³ãƒˆãƒªã®è¿½åŠ ã‚’開始ã™ã‚‹å‰ã«ã€Directory ServerインタフェースãŒã‚µãƒãƒ¼ãƒˆã—ã¦ã„るサフィックスを確èªã—ã¦ãã ã•ã„。</BLOCKQUOTE>
+
+
+<P>ルートã®ä¸‹ã«ã¯ãƒ„リーã®éšŽå±¤ãŒã‚ã‚Šã€é€šå¸¸ãƒžãƒ¼ã‚±ãƒ†ã‚£ãƒ³ã‚°ã‚„財務ãªã©ã®çµ„ç¹”å˜ä½ ãŒã‚ã‚Šã¾ã™ã€‚組織内ã®ãƒ¦ãƒ¼ã‚¶ãŠã‚ˆã³ãƒªã‚½ãƒ¼ã‚¹ã®ã‚¨ãƒ³ãƒˆãƒªã¯ã€æ™®é€šã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª ツリー構造内ã®çµ„ç¹”å˜ä½éšŽå±¤ã®ä¸‹ã«å«ã¾ã‚Œã¦ã„ã¾ã™ã€‚
+
+<P>エントリã®è¿½åŠ ã®éš›ã«ã¯ã€éšŽå±¤ã®ä¸‹ã«æ–°è¦ã‚¨ãƒ³ãƒˆãƒªã‚’作æˆã™ã‚‹å‰ã«ã€ãã®éšŽå±¤ ãƒã‚¤ãƒ³ãƒˆã‚’示ã™ã‚¨ãƒ³ãƒˆãƒªã‚’å¿…ãšä½œæˆã—ã¦ãã ã•ã„。例ãˆã°ã€Marketingã¨Accountingã®ã‚µãƒ–ツリーã«ã‚¨ãƒ³ãƒˆãƒªã‚’追加ã™ã‚‹å ´åˆã€ãれらã®ã‚µãƒ–ツリー内ã«ã‚¨ãƒ³ãƒˆãƒªã‚’作æˆã™ã‚‹å‰ã«ã€ã‚µãƒ–ツリーã®éšŽå±¤ ãƒã‚¤ãƒ³ãƒˆã‚’作æˆã—ã¾ã™ã€‚
+
+<PRE>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; o=Airius.com
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ou=Marketing, o=Airius.com
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <I>Marketing サブツリー エントリ</I>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ou=Accounting, o=Airius.com
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <I>Accounting サブツリー エントリ</I>
+</PRE>
+
+<H3>
+<A NAME="DN"></A>識別åã®æ§‹æ–‡</H3>
+識別å(Distinguished Name = DN)を使用ã—ã¦ã€Directory Server内ã§å›ºæœ‰ã«ã‚¨ãƒ³ãƒˆãƒªã‚’識別ã—ã¾ã™ã€‚一連ã®ã‚«ãƒ³ãƒžã§åŒºåˆ‡ã‚‰ã‚ŒãŸå±žæ€§ã¨å±žæ€§å€¤ã‚’使用ã—ã¦ã€DNã§ã‚¨ãƒ³ãƒˆãƒªã‚’指定ã—ã¾ã™ã€‚DNã®ä¸€ç•ªå·¦ã®å€¤ã¯ã€ã‚¨ãƒ³ãƒˆãƒªåã¨ã€ãã®ã‚¨ãƒ³ãƒˆãƒªã®ä¸Šã®éšŽå±¤ ãƒã‚¤ãƒ³ãƒˆã‚’示ã™å¾Œç¶šã®å„属性を示ã—ã¦ã„ã¾ã™ã€‚ 例:
+<PRE>uid=bjensen, ou=people, o=airius.com</PRE>
+ã“ã®DNã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª<I>airius.com</I>内ã®ã‚µãƒ–ディレクトリ<I>people</I>ã«ã‚るエントリ<I>bjensen</I>を示ã—ã¦ã„ã¾ã™ã€‚
+
+<P>Directory Serverã«æ–°è¦ã‚¨ãƒ³ãƒˆãƒªã‚’追加ã™ã‚‹éš›ã¯ã€å®Œå…¨ãªè­˜åˆ¥åを入力ã™ã‚‹ã‚ˆã†ãƒ—ロンプトãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚
+<H3>
+<A NAME="uniqueDN"></A>固有ã®è­˜åˆ¥å</H3>
+Directory Serverインタフェースã§ã¯ã€é‡è¤‡ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªã¯ä½œæˆã§ãã¾ã›ã‚“。åå‰ã®é‡è¤‡ã‚’é¿ã‘ã‚‹ãŸã‚ã«ã€ãƒ¦ãƒ¼ã‚¶ã®ä¸€èˆ¬å(CN)ã§ã¯ãªãã€ãƒ¦ãƒ¼ã‚¶ID (uid)ã§å§‹ã¾ã‚‹è­˜åˆ¥åを使用ã—ã¾ã™ã€‚人間ãŒè­˜åˆ¥ã§ãるユーザIDã‚’é¸ã‚“ã§ãã ã•ã„。ã¤ã¾ã‚Šã€ãƒ¦ãƒ¼ã‚¶IDã«ã¯ã€æ–‡å­—や数字を無作為ã«é›†ã‚ãŸã‚‚ã®ã¯ä½¿ç”¨ã—ãªã„ã§ãã ã•ã„。既ã«é›»å­ãƒ¡ãƒ¼ãƒ« システムをã”使用ã®å ´åˆã¯ã€ãƒ¦ãƒ¼ã‚¶IDã«å„ユーザã®é›»å­ãƒ¡ãƒ¼ãƒ« アドレスã®ä¸€ç•ªå·¦ã®å€¤ã‚’é¸æŠžã™ã‚‹ã“ã¨ã‚‚1ã¤ã®æ–¹æ³•ã§ã™ã€‚例ãˆã°ã€ãƒ¦ãƒ¼ã‚¶ã®é›»å­ãƒ¡ãƒ¼ãƒ« アドレスãŒ
+
+<P>bjensen@airius.com
+
+<P>ã§ã‚ã‚‹å ´åˆã€ãã®ãƒ¦ãƒ¼ã‚¶ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª エントリã«æ¬¡ã®DNã‚’é¸æŠžã—ã¾ã™ã€‚
+
+<P>uid=bjensen, o=airius.com
+<H2><A NAME="person"></A>ユーザã®è¿½åŠ </H2>
+æ–°è¦ãƒ¦ãƒ¼ã‚¶ã‚’追加ã™ã‚‹ã«ã¯ã€ä»¥ä¸‹ã«å¾“ã£ã¦ãã ã•ã„。
+<OL>
+<LI>
+[æ–°è¦ã‚¨ãƒ³ãƒˆãƒª]タブをクリックã—ã¾ã™ã€‚</LI>
+
+<LI>
+[æ–°è¦ã‚¨ãƒ³ãƒˆãƒª]フォームã«æ¦‚説ã•ã‚Œã¦ã„るステップã«å¾“ã„ã¾ã™ã€‚ã“ã®ãƒ•ã‚©ãƒ¼ãƒ ã®å…¥åŠ›ã‚’終ãˆãŸã‚‰ã€[継続]をクリックã—ã¾ã™ã€‚ã“ã®æ“作をキャンセルã™ã‚‹ã«ã¯ã€ãƒ–ラウザ ウィンドウã®[戻る]ボタンをクリックã—ã¾ã™ã€‚</LI>
+
+<LI>
+æ–°è¦ã‚¨ãƒ³ãƒˆãƒªã®è¿½åŠ ã‚’試ã¿ã‚‹å‰ã«èªè¨¼ã—ã¦ã„ãªã‹ã£ãŸã‚Šã€èªè¨¼ãŒå¤±åŠ¹ã—ã¦ã„ã‚‹å ´åˆã¯ã€å…ˆã«é€²ã‚€å‰ã«<A HREF="auth.htm#userauth">èªè¨¼</A>ã™ã‚‹ã‚ˆã†ãƒ—ロンプトãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚</LI>
+
+<LI>
+ディレクトリã«ãƒ¦ãƒ¼ã‚¶ã‚’追加ã™ã‚‹éš›ã«ã¯ã€ãã®ãƒ¦ãƒ¼ã‚¶ã®ãƒ‡ãƒ¼ã‚¿ã‚’編集å¯èƒ½ã«ã™ã‚‹ãƒ•ã‚©ãƒ¼ãƒ ãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ã“ã®ãƒ•ã‚©ãƒ¼ãƒ ã¯ã€æ–°è¦ã‚¦ã‚§ãƒ– ブラウザ ウィンドウã«è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚必須フィールドã«ã¯å€¤ã‚’入力ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。ユーザã®å¿…須フィールドã¯ä»¥ä¸‹ã®é€šã‚Šã§ã™ã€‚
+</LI>
+
+<UL type="disc">
+<LI>
+<A HREF="attribut.htm#cn">[æ°å]</A></LI>
+
+<LI>
+<A HREF="attribut.htm#sn">[姓]</A></LI>
+</UL>
+
+<LI>
+オプションã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«ã¯ã€å€¤ã‚’今入力ã™ã‚‹ã“ã¨ã‚‚ã€å¾Œã§è¿½åŠ ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ユーザã®ã‚ªãƒ—ションã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã¯ä»¥ä¸‹ã®é€šã‚Šã§ã™ã€‚
+</LI>
+&nbsp;
+<P>
+<CENTER><TABLE BORDER=2 >
+<TR>
+<TD><A HREF="attribut.htm#givenName">[åå‰]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#telephoneNumber">[電話番å·]
+</A></TD>
+
+<TD><A HREF="attribut.htm#mail">[é›»å­ãƒ¡ãƒ¼ãƒ« アドレス]</A>&nbsp;</TD>
+</TR>
+
+<TR>
+<TD><A HREF="attribut.htm#facsimileTelephoneNumber">[ファックス]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#uid">[ユーザID]&nbsp;</A></TD>
+
+<TD><A HREF="attribut.htm#pager">[ãƒã‚±ãƒƒãƒˆãƒ™ãƒ«]&nbsp;</A></TD>
+</TR>
+
+<TR>
+<TD><A HREF="attribut.htm#mobile">[æºå¸¯é›»è©±]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#businessCategory">[事業カテゴリ]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#title">[å½¹è·]</A></TD>
+</TR>
+
+<TR>
+<TD><A HREF="attribut.htm#ou">[組織å˜ä½]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#manager">[マãƒãƒ¼ã‚¸ãƒ£]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#roomNumber">[部屋番å·]&nbsp;</A></TD>
+</TR>
+
+<TR>
+<TD><A HREF="attribut.htm#secretary">[秘書]&nbsp;</A></TD>
+
+<TD><A HREF="attribut.htm#departmentNumber">[部門番å·]&nbsp;</A></TD>
+
+<TD><A HREF="attribut.htm#employeeNumber">[社員番å·]</A>&nbsp;</TD>
+</TR>
+
+<TR>
+<TD><A HREF="attribut.htm#carLicense">[自動車ナンãƒãƒ¼ãƒ—レート番å·]&nbsp;</A></TD>
+
+<TD><A HREF="attribut.htm#postalAddress">[ä½æ‰€]&nbsp;</A></TD>
+
+<TD><A HREF="attribut.htm#description">[説明]</A>&nbsp;</TD>
+</TR>
+
+<TR>
+<TD><A HREF="attribut.htm#seeAlso">[å‚ç…§]&nbsp;</A></TD>
+
+<TD><A HREF="attribut.htm#labeledUri">[URL]&nbsp;</A></TD>
+
+<TD><A HREF="attribut.htm#userPassword">[パスワード]</A>&nbsp;</TD>
+</TR>
+</TABLE>
+</CENTER>
+<BLOCKQUOTE><B>ノート:</B>
+<P>
+エントリをä¿å­˜ã—ã¦ã‹ã‚‰ã§ãªã„ã¨ã€[マãƒãƒ¼ã‚¸ãƒ£]ã€[秘書]ã€ã¾ãŸã¯[å‚ç…§]ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«ã¯å€¤ã‚’入力ã§ãã¾ã›ã‚“。</BLOCKQUOTE>
+
+<LI>
+エントリã®ä½œæˆã‚’キャンセルã™ã‚‹ã«ã¯ã€ãƒ•ã‚©ãƒ¼ãƒ ã®ã‚るウェブ ブラウザã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’é–‰ã˜ã¾ã™ã€‚フォームã®å…¥åŠ›ã‚’終ãˆãŸã‚‰ã€ãƒ•ã‚©ãƒ¼ãƒ ä¸Šéƒ¨ã®[æ–°è¦ãƒ¦ãƒ¼ã‚¶ã®ä¿å­˜]ボタンをクリックã—ã¾ã™ã€‚
+</LI>
+
+<LI>
+エントリをä¿å­˜ã—ãŸå¾Œã€<A HREF="mod.htm#addmanager">[マãƒãƒ¼ã‚¸ãƒ£]ã¨[秘書]ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«å€¤ã‚’追加</A>ã—ãŸã‚Šã€<A HREF="mod.htm#addowner">[å‚ç…§]ã«å€¤ã‚’追加</A>ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚</LI>
+</OL>
+
+<H2>
+<A NAME="NTperson"></A>NTユーザã®è¿½åŠ </H2>
+NTユーザã®ã‚¨ãƒ³ãƒˆãƒªã‚’作æˆã™ã‚‹éš›ã«ã¯ã€ã‚¨ãƒ³ãƒˆãƒªã‚’追加ã™ã‚‹ã‚µãƒ–ツリーãŒã€åŒæœŸåŒ–サービスãŒã‚¨ãƒ³ãƒˆãƒªã®åŒæœŸåŒ–ã«ä½¿ç”¨ã™ã‚‹ã‚‚ã®ã¨åŒã˜ã‚µãƒ–ツリーã§ã‚ã‚‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。別ã®å ´æ‰€ã«NTユーザã®ã‚¨ãƒ³ãƒˆãƒªã‚’追加ã™ã‚‹ã¨ã€Windowsãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã§åŒæœŸåŒ–ãŒè¡Œã‚ã‚Œã¾ã›ã‚“。
+
+<P>æ–°è¦NTユーザã®ã‚¨ãƒ³ãƒˆãƒªã‚’追加ã™ã‚‹ã«ã¯ã€ä»¥ä¸‹ã®æ“作をã—ã¾ã™ã€‚
+<OL>
+<LI>
+[æ–°è¦ã‚¨ãƒ³ãƒˆãƒª]タブをクリックã—ã¾ã™ã€‚</LI>
+
+<LI>
+[æ–°è¦ã‚¨ãƒ³ãƒˆãƒª]フォームã§æ¦‚説ã•ã‚Œã¦ã„るステップã«å¾“ã„ã¾ã™ã€‚ã“ã®ãƒ•ã‚©ãƒ¼ãƒ ã®å…¥åŠ›ã‚’終ãˆãŸã‚‰ã€[継続]をクリックã—ã¾ã™ã€‚ã“ã®æ“作をキャンセルã™ã‚‹ã«ã¯ã€ãƒ–ラウザ ウィンドウã®[戻る]ボタンをクリックã—ã¾ã™ã€‚</LI>
+
+<LI>
+æ–°è¦ã‚¨ãƒ³ãƒˆãƒªã®è¿½åŠ ã‚’試ã¿ã‚‹å‰ã«èªè¨¼ã—ã¦ã„ãªã‹ã£ãŸã‚Šã€èªè¨¼ãŒå¤±åŠ¹ã—ã¦ã„ã‚‹å ´åˆã¯ã€å…ˆã«é€²ã‚€å‰ã«<A HREF="auth.htm#userauth">èªè¨¼</A>ã™ã‚‹ã‚ˆã†ãƒ—ロンプトãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚</LI>
+
+<LI>
+ディレクトリã«NTユーザを追加ã™ã‚‹éš›ã«ã¯ã€ãã®ãƒ¦ãƒ¼ã‚¶ã®ãƒ‡ãƒ¼ã‚¿ã‚’編集å¯èƒ½ã«ã™ã‚‹ãƒ•ã‚©ãƒ¼ãƒ ãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ã“ã®ãƒ•ã‚©ãƒ¼ãƒ ã¯ã€æ–°è¦ã‚¦ã‚§ãƒ– ブラウザ ウィンドウã«è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚必須フィールドã«ã¯å¿…ãšå€¤ã‚’入力ã™ã‚‹ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。NTユーザã®å¿…須フィールドã¯ä»¥ä¸‹ã®é€šã‚Šã§ã™ã€‚</LI>
+
+<UL type="disc">
+<LI>
+<A HREF="attribut.htm#cn">[æ°å]</A></LI>
+
+<LI>
+<A HREF="attribut.htm#sn">[姓]</A></LI>
+
+<LI>
+<A HREF="attribut.htm#ntUserDomainId">[NTドメインå]</A></LI>
+
+<LI>
+<A HREF="attribut.htm#uid">[NTユーザID]</A></LI>
+</UL>
+
+<LI>
+オプションã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«ã¯ã€å€¤ã‚’今入力ã—ã™ã‚‹ã“ã¨ã‚‚ã€å¾Œã§è¿½åŠ ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ユーザã®ã‚ªãƒ—ションã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã¯ä»¥ä¸‹ã®é€šã‚Šã§ã™ã€‚</LI>
+<P>
+<CENTER><TABLE BORDER=2 >
+<TR>
+<TD><A HREF="attribut.htm#givenName">[åå‰]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#telephoneNumber">[電話番å·]&nbsp;</A></TD>
+
+<TD><A HREF="attribut.htm#mail">[é›»å­ãƒ¡ãƒ¼ãƒ« アドレス]</A>&nbsp;</TD>
+</TR>
+
+<TR>
+<TD><A HREF="attribut.htm#facsimileTelephoneNumber">[ファックス]&nbsp;</A></TD>
+
+<TD><A HREF="attribut.htm#userPassword">[Directory Serverã®ãƒ‘スワード]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#pager">[ãƒã‚±ãƒƒãƒˆãƒ™ãƒ«]</A>&nbsp;</TD>
+</TR>
+
+<TR>
+<TD><A HREF="attribut.htm#mobile">[æºå¸¯é›»è©±]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#businessCategory">[事業カテゴリ]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#title">[å½¹è·]</A>&nbsp;</TD>
+</TR>
+
+<TR>
+<TD><A HREF="attribut.htm#ou">[組織å˜ä½]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#manager">[マãƒãƒ¼ã‚¸ãƒ£]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#roomNumber">[部屋番å·]</A>&nbsp;</TD>
+</TR>
+
+<TR>
+<TD><A HREF="attribut.htm#secretary">[秘書]&nbsp;</A></TD>
+
+<TD><A HREF="attribut.htm#departmentNumber">[部門番å·]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#employeeNumber">[社員番å·]</A>&nbsp;</TD>
+</TR>
+
+<TR>
+<TD><A HREF="attribut.htm#carLicense">[自動車ナンãƒãƒ¼ãƒ—レート番å·]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#postalAddress">[ä½æ‰€]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#description">[説明]</A>&nbsp;</TD>
+</TR>
+
+<TR>
+<TD><A HREF="attribut.htm#seeAlso">[å‚ç…§]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#labeledUri">[URL]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#uid">[ユーザID]</A></TD>
+</TR>
+</TABLE></CENTER>
+<BLOCKQUOTE><B>ノート:</B>
+<P>
+
+エントリをä¿å­˜ã—ã¦ã‹ã‚‰ã§ãªã„ã¨ã€[マãƒãƒ¼ã‚¸ãƒ£]ã€[秘書]ã€ã¾ãŸã¯[å‚ç…§]ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«ã¯å€¤ã‚’入力ã§ãã¾ã›ã‚“。
+</BLOCKQUOTE>
+
+<LI>
+ã¾ãŸã€ä»¥ä¸‹ã®2ã¤ã®ã‚ªãƒ—ションã®å€¤ã‚‚変更ã§ãã¾ã™ã€‚</LI>
+
+<UL type="disc">
+<LI>
+<A HREF="attribut.htm#NTUserDelete">[ユーザãŒå‰Šé™¤ã•ã‚ŒãŸã‚‰NTアカウントを削除ã™ã‚‹]</A></LI>
+
+<LI>
+<A HREF="attribut.htm#ntUserCreateNewAccount">[æ–°è¦NTアカウントã®ä½œæˆ]</A></LI>
+</UL>
+デフォルト値ãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ã“ã®å€¤ã‚’変更ã—ãªã„ã¨ã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ãŒä½¿ç”¨ã•ã‚Œã¾ã™ã€‚
+<LI>
+フォームã®å…¥åŠ›ã‚’終ãˆãŸã‚‰ã€ãƒ•ã‚©ãƒ¼ãƒ ä¸Šéƒ¨ã®[æ–°è¦NTユーザã®ä¿å­˜]ボタンをクリックã—ã¾ã™ã€‚エントリã®ä½œæˆã‚’キャンセルã™ã‚‹ã«ã¯ã€ãƒ•ã‚©ãƒ¼ãƒ ã®ã‚るウェブ ブラウザ ウィンドウ閉ã˜ã¾ã™ã€‚ </LI>
+
+<LI>
+エントリをä¿å­˜ã—ãŸå¾Œã€<A HREF="mod.htm#addmanager">[マãƒãƒ¼ã‚¸ãƒ£]ã¨[秘書]フィールドã«å€¤ã‚’追加ã—ãŸã‚Šã€</A><A HREF="mod.htm#addowner">[å‚ç…§]ã«å€¤ã‚’追加</A>ã—ãŸã‚Šã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚</LI>
+</OL>
+
+<H2>
+<A NAME="group"></A>グループã®è¿½åŠ </H2>
+æ–°è¦ã‚°ãƒ«ãƒ¼ãƒ—ã®ã‚¨ãƒ³ãƒˆãƒªã‚’追加ã™ã‚‹ã«ã¯ã€ä»¥ä¸‹ã®æ“作をã—ã¾ã™ã€‚
+<OL>
+<LI>
+[æ–°è¦ã‚¨ãƒ³ãƒˆãƒª]タブをクリックã—ã¾ã™ã€‚</LI>
+
+<LI>
+[æ–°è¦ã‚¨ãƒ³ãƒˆãƒª]フォームã§æ¦‚説ã•ã‚Œã¦ã„るステップã«å¾“ã„ã¾ã™ã€‚ã“ã®ãƒ•ã‚©ãƒ¼ãƒ ã®å…¥åŠ›ã‚’終ãˆãŸã‚‰ã€[継続]をクリックã—ã¾ã™ã€‚ã“ã®æ“作をキャンセルã™ã‚‹ã«ã¯ã€ãƒ–ラウザ ウィンドウã®[戻る]ボタンをクリックã—ã¾ã™ã€‚</LI>
+
+<LI>
+æ–°è¦ã‚¨ãƒ³ãƒˆãƒªã®è¿½åŠ ã‚’試ã¿ã‚‹å‰ã«èªè¨¼ã—ã¦ã„ãªã‹ã£ãŸã‚Šã€èªè¨¼ãŒå¤±åŠ¹ã—ã¦ã„ã‚‹å ´åˆã¯ã€å…ˆã«é€²ã‚€å‰ã«<A HREF="auth.htm#userauth">èªè¨¼</A>ã™ã‚‹ã‚ˆã†ãƒ—ロンプトãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚</LI>
+
+<LI>
+ディレクトリã«ã‚°ãƒ«ãƒ¼ãƒ—を追加ã™ã‚‹éš›ã«ã¯ã€ãã®ã‚°ãƒ«ãƒ¼ãƒ—ã®ãƒ‡ãƒ¼ã‚¿ã®ç·¨é›†ã‚’å¯èƒ½ã«ã™ã‚‹ãƒ•ã‚©ãƒ¼ãƒ ãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ã“ã®ãƒ•ã‚©ãƒ¼ãƒ ã¯ã€æ–°è¦ã‚¦ã‚§ãƒ– ブラウザ ウィンドウã«å«ã¾ã‚Œã¦ã„ã¾ã™ã€‚必須フィールドã«å€¤ã‚’入力ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚
+
+<A HREF="attribut.htm#cn">[åå‰]</A></LI>
+
+<LI>
+オプションã®<A HREF="attribut.htm#description">[説明]</A>ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«ã¯ã€å€¤ã‚’今入力ã™ã‚‹ã“ã¨ã‚‚ã€å¾Œã§è¿½åŠ ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚</LI>
+
+<BLOCKQUOTE><B>ノート:</B>
+<P>
+
+エントリをä¿å­˜ã—ã¦ã‹ã‚‰ã§ãªã„ã¨ã€[所有者]ã€[グループ メンãƒãƒ¼]ã€ã¾ãŸã¯[å‚ç…§]ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«ã¯å€¤ã‚’入力ã§ãã¾ã›ã‚“。</BLOCKQUOTE>
+
+<LI>
+フォームã®å…¥åŠ›ã‚’終ãˆãŸã‚‰ã€ãƒ•ã‚©ãƒ¼ãƒ ä¸Šéƒ¨ã®[æ–°è¦ã‚°ãƒ«ãƒ¼ãƒ—ã®ä¿å­˜]ボタンをクリックã—ã¾ã™ã€‚</LI>
+
+<BR>エントリã®ä½œæˆã‚’キャンセルã™ã‚‹ã«ã¯ã€ãƒ•ã‚©ãƒ¼ãƒ ã®ã‚るウェブ ブラウザ ウィンドウを閉ã˜ã¾ã™ã€‚
+<LI>
+エントリをä¿å­˜ã—ãŸå¾Œã€<A HREF="mod.htm#addowner">[所有者]ã€[グループ メンãƒãƒ¼]ã€ãŠã‚ˆã³[å‚ç…§]ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«å€¤ã‚’追加ã§ãã¾ã™ã€‚</A></LI>
+</OL>
+
+<H2>
+<A NAME="NTgroup"></A>NTグループã®è¿½åŠ </H2>
+æ–°è¦NTグループã®ã‚¨ãƒ³ãƒˆãƒªã‚’追加ã™ã‚‹ã«ã¯ã€ä»¥ä¸‹ã®æ“作をã—ã¾ã™ã€‚
+<OL>
+<LI>
+[æ–°è¦ã‚¨ãƒ³ãƒˆãƒª]タブをクリックã—ã¾ã™ã€‚</LI>
+
+<LI>
+[æ–°è¦ã‚¨ãƒ³ãƒˆãƒª]フォームã§æ¦‚説ã•ã‚Œã¦ã„るステップã«å¾“ã„ã¾ã™ã€‚ã“ã®ãƒ•ã‚©ãƒ¼ãƒ ã®å…¥åŠ›ã‚’終ãˆãŸã‚‰ã€[継続]をクリックã—ã¾ã™ã€‚ã“ã®æ“作をキャンセルã™ã‚‹ã«ã¯ã€ãƒ–ラウザ ウィンドウã®[戻る]ボタンをクリックã—ã¾ã™ã€‚</LI>
+
+<LI>
+æ–°è¦ã‚¨ãƒ³ãƒˆãƒªã®è¿½åŠ ã‚’試ã¿ã‚‹å‰ã«èªè¨¼ã—ã¦ã„ãªã‹ã£ãŸã‚Šã€èªè¨¼ãŒå¤±åŠ¹ã—ã¦ã„ã‚‹å ´åˆã¯ã€å…ˆã«é€²ã‚€å‰ã«<A HREF="auth.htm#userauth">èªè¨¼</A>ã™ã‚‹ã‚ˆã†ãƒ—ロンプトãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚</LI>
+
+<LI>
+ディレクトリã«NTグループを追加ã™ã‚‹éš›ã«ã¯ã€ãã®ã‚°ãƒ«ãƒ¼ãƒ—ã®ãƒ‡ãƒ¼ã‚¿ã®ç·¨é›†ã‚’å¯èƒ½ã«ã™ã‚‹ãƒ•ã‚©ãƒ¼ãƒ ãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ã“ã®ãƒ•ã‚©ãƒ¼ãƒ ã¯ã€æ–°è¦ã‚¦ã‚§ãƒ– ブラウザ ウィンドウã«å«ã¾ã‚Œã¦ã„ã¾ã™ã€‚必須フィールドã«ã¯å€¤ã‚’å¿…ãšå…¥åŠ›ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。NTグループã®å¿…須フィールドã¯ä»¥ä¸‹ã®é€šã‚Šã§ã™ã€‚</LI>
+
+<UL type="disc">
+<LI>
+<A HREF="attribut.htm#cn">[åå‰]</A></LI>
+
+<LI>
+<A HREF="attribut.htm#ntGroupId">[NTグループå]</A></LI>
+
+<LI>
+<A HREF="attribut.htm#ntGroupDomainId">[NTグループ ドメイン]</A></LI>
+
+</UL>
+
+<LI>
+オプションã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«ã¯ã€å€¤ã‚’今入力ã™ã‚‹ã“ã¨ã‚‚ã€å¾Œã§è¿½åŠ ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚NTグループã®ã‚ªãƒ—ションã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã¯ä»¥ä¸‹ã®é€šã‚Šã§ã™ã€‚</LI>
+&nbsp;
+<CENTER><TABLE BORDER=2 >
+<TR>
+<TD><A HREF="attribut.htm#description">[説明]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#owner">[所有者]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#l">[言語情報]</A></TD>
+</TR>
+
+<TR>
+<TD><A HREF="attribut.htm#uniqueMember">[NTグループ メンãƒãƒ¼]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#seeAlso">[å‚ç…§]</A></TD>
+
+<TD><A HREF="attribut.htm#ou">[組織å˜ä½]</A></TD>
+</TR>
+</TABLE>
+
+</CENTER>
+<P>
+<BLOCKQUOTE><B>ノート:</B>
+<P>
+
+エントリをä¿å­˜ã—ã¦ã‹ã‚‰ã§ãªã„ã¨ã€[所有者]ã€[NTグループ メンãƒãƒ¼]ã€ã¾ãŸã¯[å‚ç…§]ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«å€¤ã‚’入力ã§ãã¾ã›ã‚“。</BLOCKQUOTE>
+
+<LI>
+ã¾ãŸã€<A HREF="attribut.htm#ntGroupDeleteGroup">[グループãŒå‰Šé™¤ã•ã‚Œã‚‹ã¨NTグループも削除ã™ã‚‹]</A>オプションã®å€¤ã‚‚変更ã§ãã¾ã™ã€‚</LI>
+
+<LI>
+フォームã®å…¥åŠ›ã‚’終ãˆãŸã‚‰ã€ãƒ•ã‚©ãƒ¼ãƒ ä¸Šéƒ¨ã®[æ–°è¦ã‚°ãƒ«ãƒ¼ãƒ—ã®ä¿å­˜]ボタンをクリックã—ã¾ã™ã€‚</LI>
+
+<BR>エントリã®ä½œæˆã‚’キャンセルã™ã‚‹ã«ã¯ã€ãƒ•ã‚©ãƒ¼ãƒ ã‚’å«ã‚€ã‚¦ã‚§ãƒ– ブラウザ ウィンドウ閉ã˜ã¾ã™ã€‚
+<LI>
+エントリをä¿å­˜ã—ãŸå¾Œã€<A HREF="mod.htm#addowner">[NTグループ メンãƒãƒ¼]ã€[所有者]ã€ãŠã‚ˆã³[å‚ç…§]ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«å€¤ã‚’追加</A>ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚</LI>
+</OL>
+
+<H2>
+<A NAME="ou"></A>組織å˜ä½ã®è¿½åŠ </H2>
+æ–°è¦çµ„ç¹”ã®ã‚¨ãƒ³ãƒˆãƒªã‚’追加ã™ã‚‹ã«ã¯ã€ä»¥ä¸‹ã®æ“作をã—ã¾ã™ã€‚
+<OL>
+<LI>
+[æ–°è¦ã‚¨ãƒ³ãƒˆãƒª]タブをクリックã—ã¾ã™ã€‚</LI>
+
+<LI>
+[æ–°è¦ã‚¨ãƒ³ãƒˆãƒª]フォームã§æ¦‚説ã•ã‚Œã¦ã„るステップã«å¾“ã„ã¾ã™ã€‚ã“ã®ãƒ•ã‚©ãƒ¼ãƒ ã®å…¥åŠ›ã‚’終ãˆãŸã‚‰ã€[継続]をクリックã—ã¾ã™ã€‚ã“ã®æ“作をキャンセルã™ã‚‹ã«ã¯ã€ãƒ–ラウザ ウィンドウã®[戻る]ボタンをクリックã—ã¾ã™ã€‚</LI>
+
+<LI>
+æ–°è¦ã‚¨ãƒ³ãƒˆãƒªã®è¿½åŠ ã‚’試ã¿ã‚‹å‰ã«èªè¨¼ã—ã¦ã„ãªã‹ã£ãŸã‚Šã€èªè¨¼ãŒå¤±åŠ¹ã—ã¦ã„ã‚‹å ´åˆã¯ã€å…ˆã«é€²ã‚€å‰ã«<A HREF="auth.htm#userauth">èªè¨¼</A>ã™ã‚‹ã‚ˆã†ãƒ—ロンプトãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚</LI>
+
+<LI>
+ディレクトリã«çµ„ç¹”å˜ä½ã‚’追加ã™ã‚‹éš›ã«ã¯ã€ãã®çµ„ç¹”ã®ãƒ‡ãƒ¼ã‚¿ã®ç·¨é›†ã‚’å¯èƒ½ã«ã™ã‚‹ãƒ•ã‚©ãƒ¼ãƒ ãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ã“ã®ãƒ•ã‚©ãƒ¼ãƒ ã¯ã€æ–°è¦ã‚¦ã‚§ãƒ– ブラウザ ウィンドウã«è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚必須フィールドã«ã¯å¿…ãšå€¤ã‚’入力ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。組織å˜ä½ã®å¿…須フィールドã¯<A HREF="attribut.htm#ou">[å˜ä½å]</A>ã§ã™ã€‚</LI>
+
+<LI>
+オプションã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«ã¯ã€å€¤ã‚’今入力ã™ã‚‹ã“ã¨ã‚‚ã€å¾Œã§è¿½åŠ ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚組織å˜ä½ã®ã‚ªãƒ—ションã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã¯ä»¥ä¸‹ã®é€šã‚Šã§ã™ã€‚</LI>
+&nbsp;
+<CENTER><TABLE BORDER=2 >
+<TR>
+<TD><A HREF="attribut.htm#description">[説明]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#telephoneNumber">[電話番å·]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#businessCategory">[事業カテゴリ]</A>&nbsp;</TD>
+</TR>
+
+<TR>
+<TD><A HREF="attribut.htm#facsimileTelephoneNumber">[ファックス]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#l">[場所]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#postalAddress">[ä½æ‰€]</A>&nbsp;</TD>
+</TR>
+
+<TR>
+<TD><A HREF="attribut.htm#seeAlso">[å‚ç…§]</A>&nbsp;</TD>
+
+<TD>&nbsp;</TD>
+
+<TD>&nbsp;</TD>
+</TR>
+</TABLE></CENTER>
+<P>
+<LI>
+フォームã®å…¥åŠ›ã‚’終ãˆãŸã‚‰ã€ãƒ•ã‚©ãƒ¼ãƒ ä¸Šéƒ¨ã®[æ–°è¦çµ„ç¹”å˜ä½ã®ä¿å­˜]ボタンをクリックã—ã¾ã™ã€‚エントリã®ä½œæˆã‚’キャンセルã™ã‚‹ã«ã¯ã€ãƒ•ã‚©ãƒ¼ãƒ ã‚’å«ã‚€ã‚¦ã‚§ãƒ– ブラウザ ウィンドウ閉ã˜ã¾ã™ã€‚</LI>
+</OL>
+
+<H2><A NAME="o"></A>組織ã®è¿½åŠ </H2>
+æ–°è¦çµ„ç¹”ã®ã‚¨ãƒ³ãƒˆãƒªã‚’追加ã™ã‚‹ã«ã¯ã€ä»¥ä¸‹ã®æ“作をã—ã¾ã™ã€‚
+<OL>
+<LI>
+[æ–°è¦ã‚¨ãƒ³ãƒˆãƒª]タブをクリックã—ã¾ã™ã€‚</LI>
+
+<LI>
+[æ–°è¦ã‚¨ãƒ³ãƒˆãƒª]フォームã§æ¦‚説ã•ã‚Œã¦ã„るステップã«å¾“ã„ã¾ã™ã€‚ã“ã®ãƒ•ã‚©ãƒ¼ãƒ ã®å…¥åŠ›ã‚’終ãˆãŸã‚‰ã€[継続]をクリックã—ã¾ã™ã€‚ã“ã®æ“作をキャンセルã™ã‚‹ã«ã¯ã€ãƒ–ラウザ ウィンドウã®[戻る]ボタンをクリックã—ã¾ã™ã€‚</LI>
+
+<LI>
+æ–°è¦ã‚¨ãƒ³ãƒˆãƒªã®è¿½åŠ ã‚’試ã¿ã‚‹å‰ã«èªè¨¼ã—ã¦ã„ãªã‹ã£ãŸã‚Šã€èªè¨¼ãŒå¤±åŠ¹ã—ã¦ã„ã‚‹å ´åˆã¯ã€å…ˆã«é€²ã‚€å‰ã«<A HREF="auth.htm#userauth">èªè¨¼</A>ã™ã‚‹ã‚ˆã†ãƒ—ロンプトãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚</LI>
+
+<LI>
+ディレクトリ ツリーã«æœ€åˆã«æƒ…報をセットアップã™ã‚‹å ´åˆã«é™ã‚Šã€çµ„ç¹”ã®è¿½åŠ ãŒã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã™ã€‚追加ã™ã‚‹çµ„ç¹”ã¯ã€Directory Serverã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ™‚ã«[データベース サブツリー]フィールドã§æŒ‡å®šã—ãŸçµ„ç¹”ã¨ä¸€è‡´ã—ã¦ã„ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。ãŸã¨ãˆã°ã€</LI>
+
+<PRE>o=Airius.com</PRE>ã®å€¤ã‚’[データベース サブツリー]フィールドã«æŒ‡å®šã—ãŸå ´åˆã¯ã€çµ„織を追加ã™ã‚‹éš›ã«ã‚‚ã€
+<PRE>o=Airius.com</PRE>ã®å€¤ã‚’指定ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚Directory Serverã¯ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ サブツリーã¨ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª エントリãŒå…±å­˜å¯èƒ½ã§ã‚ã‚‹ã‹ã‚’確èªã™ã‚‹ãŸã‚ã€è¿½åŠ æ“作をãƒã‚§ãƒƒã‚¯ã—ã¾ã™ã€‚明らã‹ã«<PRE>o=Airius.com</PRE>以外ã®å€¤ã¯ã€
+<PRE>o=Airius.com</PRE>ã®ä¸‹ã«ã¯å…±å­˜ã§ãã¾ã›ã‚“。ãã®çµæžœã€è¿½åŠ æ“作ã¯æ‹’å¦ã•ã‚Œã¾ã™ã€‚
+
+<LI>
+必須フィールドã§ã‚ã‚‹<A HREF="attribut.htm#o">[組織å]</A>ã«ã¯å¿…ãšå€¤ã‚’入力ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。</LI>
+
+<LI>
+オプションã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«ã¯ã€å€¤ã‚’今入力ã™ã‚‹ã“ã¨ã‚‚ã€å¾Œã§è¿½åŠ ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚組織ã®ã‚ªãƒ—ションã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã¯ä»¥ä¸‹ã®é€šã‚Šã§ã™ã€‚</LI>
+<P>
+<CENTER><TABLE BORDER=2 >
+<TR>
+<TD><A HREF="attribut.htm#description">[説明]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#telephoneNumber">[電話番å·]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#businessCategory">[事業カテゴリ]</A>&nbsp;</TD>
+</TR>
+
+<TR>
+<TD><A HREF="attribut.htm#facsimileTelephoneNumber">[ファックス]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#l">[場所]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#postalAddress">[ä½æ‰€]</A>&nbsp;</TD>
+</TR>
+
+<TR>
+<TD><A HREF="attribut.htm#seeAlso">[å‚ç…§]</A>&nbsp;</TD>
+
+<TD>&nbsp;</TD>
+
+<TD>&nbsp;</TD>
+</TR>
+</TABLE></CENTER>
+<P>
+<LI>
+フォームã®å…¥åŠ›ã‚’終ãˆãŸã‚‰ã€ãƒ•ã‚©ãƒ¼ãƒ ä¸Šéƒ¨ã®[æ–°è¦çµ„ç¹”ã®ä¿å­˜]ボタンをクリックã—ã¾ã™ã€‚エントリã®ä½œæˆã‚’キャンセルã™ã‚‹ã«ã¯ã€ãƒ•ã‚©ãƒ¼ãƒ ã‚’å«ã‚€ã‚¦ã‚§ãƒ– ブラウザ ウィンドウ閉ã˜ã¾ã™ã€‚</LI>
+</OL>
+
+</BODY>
+</HTML>
+
+
diff --git a/ldap/clients/dsgw/html/manual/ja/attribut.htm b/ldap/clients/dsgw/html/manual/ja/attribut.htm
new file mode 100644
index 00000000..ee84baaf
--- /dev/null
+++ b/ldap/clients/dsgw/html/manual/ja/attribut.htm
@@ -0,0 +1,7139 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<html>
+<!-- HEAD -->
+<title></title>
+</head>
+
+<body>
+
+<A NAME="996822">
+<H1>
+</H1>
+</A>
+<A NAME="997293">
+<P>
+</A><A NAME="1002619">
+<H1>属性
+</H1>
+</A>
+
+<A NAME="996830">
+<br>
+ã“ã®ä»˜éŒ²ã§ã¯ã€å±žæ€§ã®å®šç¾©ã«ã¤ã„ã¦è§£èª¬ã—ã¦ã„ã¾ã™ã€‚Directory Serverã§ä½¿ç”¨ã•ã‚Œã‚‹ã‚¹ã‚­ãƒ¼ãƒžå±žæ€§ã®å¤§éƒ¨åˆ†ã¯æ¨™æº–LDAPプロトコルã®ä¸€éƒ¨ã§ã‚ã‚Šã€X.500è¦æ ¼ã«åŸºã¥ã„ã¦ã„ã¾ã™ã€‚ã—ã‹ã—ã€Directory Serverã®å±žæ€§ã®ãªã‹ã«ã¯ã€ LDAPã®å°Žå…¥ã«ä½¿ç”¨ã™ã‚‹ãŸã‚ã«Netscape社ãŒä½œæˆã—ãŸæ‹¡å¼µã‚‚ã‚ã‚Šã¾ã™ã€‚属性ãŒNetscape社ã«ã‚ˆã£ã¦ä½œæˆã•ã‚ŒãŸã‚‚ã®ã§ã€æ¨™æº–LDAPスキーマã®ä¸€éƒ¨ã§ãªã„å ´åˆã¯ã€ãã®ã‚ªãƒ–ジェクト クラスや属性ã®èª¬æ˜Žã«ãã®æ—¨ãŒç¤ºã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1071459">
+Directory Serverスキーマã®å†…容ãŠã‚ˆã³ç”¨é€”ã«é–¢ã™ã‚‹è©³ç´°ã¯ã€ã€ŽNetscape Directoryã®å°Žå…¥ã€ã‚’ã”覧ãã ã•ã„。<P></A>
+
+<A NAME="1078428">
+スキーマã«ãŠã‘るオブジェクト クラスã«é–¢ã™ã‚‹è©³ç´°ã¯ã€<a href="objclass.htm#1002619">付録 A「オブジェクト クラスã€</a>ã‚’ã”覧ãã ã•ã„。<P></A>
+
+
+<A NAME="1020843">&nbsp;
+</A>
+<A NAME="Attribute Definitions">
+<H2>属性ã®å®šç¾©</H2>
+</A>
+
+<A NAME="1004519">
+以下ã«ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª ツリー内ã®ã‚¨ãƒ³ãƒˆãƒªã®è¨˜è¿°ã«ä½¿ç”¨ã•ã‚ŒãŸå±žæ€§ãŒå®šç¾©ã•ã‚Œã¦ã„ã¾ã™ã€‚å„オブジェクト クラスã«å¿…è¦ã§ã—ã‹ã‚‚許å¯ã•ã‚Œã¦ã„る属性を判定ã™ã‚‹ã«ã¯ã€<a href="objclass.htm#1002619">付録 A「オブジェクト クラスã€</a>ã‚’ã”覧ãã ã•ã„。<P></A>
+
+<A NAME="1004699">
+属性情報ã®æ€§è³ªã‚’記述ã™ã‚‹æ§‹æ–‡ã®å®šç¾©ãŒã€å±žæ€§ã”ã¨ã«è¨˜è¼‰ã•ã‚Œã¦ã„ã¾ã™ã€‚ã“ã®æ§‹æ–‡ã¯ã€Directory Serverã§ã‚½ãƒ¼ãƒˆã‚„パターンマッãƒã‚’実行ã—ã¦ã„ã‚‹ã¨ãã«é™ã‚Šé‡è¦ã¨ãªã‚Šã¾ã™ã€‚ãれ以外ã®å ´åˆã€ä¾‹ãˆã°ã€è­˜åˆ¥åã‚’è¦æ±‚ã™ã‚‹å±žæ€§ã«é›»è©±ç•ªå·ã‚’入力ã™ã‚‹ã‚ˆã†ãªå ´åˆã«ã€å…¥åŠ›ã‚’制é™ã™ã‚‹ã‚‚ã®ã§ã¯ã‚ã‚Šã¾ã›ã€‚<P></A>
+
+<A NAME="1067002">
+å¯èƒ½ãªå±žæ€§æ§‹æ–‡:<P></A>
+<ul><A NAME="1004700">
+<LI>bin -- ãƒã‚¤ãƒŠãƒª<BR>
+</A>
+<A NAME="1004701">
+<LI>ces -- 大文字å°æ–‡å­—を区別ã™ã‚‹æ–‡å­—列 (比較ã®éš›ã«å¤§å°æ–‡å­—ãŒä¸€è‡´ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚)<BR>
+</A>
+<A NAME="1004702">
+<LI>cis -- 大文字å°æ–‡å­—を区別ã—ãªã„文字列 (比較ã®éš›ã«å¤§å°æ–‡å­—ã®åŒºåˆ¥ãŒç„¡è¦–ã•ã‚Œã¾ã™ã€‚)<BR>
+</A>
+<A NAME="1004703">
+<LI>tel -- é›»è©±ç•ªå· (cisã¨åŒã˜ã§ã™ãŒã€æ¯”較ã®éš›ã«ãƒ–ランクã¨ãƒ€ãƒƒã‚·ãƒ¥ (-) ãŒç„¡è¦–ã•ã‚Œã¾ã™ã€‚)<BR>
+</A>
+<A NAME="1004704">
+<LI>dn -- 識別å<BR>
+</A>
+<A NAME="1243260">
+<LI>int -- æ•´æ•°<BR>
+</A>
+<A NAME="1251525">
+<LI>operational -- 予約ã•ã‚Œã¦ã„ã¾ã™ã€‚検索çµæžœã«ã¯ã€å‹•ä½œå±žæ€§ã¯è¡¨ç¤ºã•ã‚Œã¾ã›ã‚“。<BR>
+</A>
+</ul>
+<A NAME="1072472">
+標準的ãªå±žæ€§ã¯ã€æ¬¡ã®ãƒ•ã‚¡ã‚¤ãƒ«ã§å®šç¾©ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+<A NAME="1072513">
+<PRE> NSHOME/slapd-[server]/config/slapd.at.conf
+</PRE>
+</A>
+
+
+<A NAME="1201644">&nbsp;
+</A>
+<A NAME="abstract">
+<H3> abstract</H3>
+</A>
+
+
+
+<A NAME="1201645">
+ドキュメント エントリã®æ¦‚è¦ã‚’示ã—ã¾ã™ã€‚<P></A>
+
+<A NAME="1201648">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1104078">&nbsp;
+</A>
+<A NAME="accountUnlockTime">
+<H3> accountUnlockTime</H3>
+</A>
+
+
+
+<A NAME="1154996">
+ディレクトリã¸ã®ãƒã‚¤ãƒ³ãƒ‰ã«æŒ‡å®šå›žæ•°å¤±æ•—ã—ãŸå¾Œã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ アカウントã®ãƒ­ãƒƒã‚¯ãŒè§£é™¤ã•ã‚Œã‚‹ã¾ã§ã®æ™‚間を秒数ã§å®šç¾©ã—ã¾ã™ã€‚<P></A>
+<A NAME="1154997">
+<PRE> accountUnlockTime: 600
+</PRE>
+</A>
+
+<A NAME="1104080">
+構文: <a href="attribut.htm#1004702">cis operational</a><P></A>
+
+
+<A NAME="1171292">&nbsp;
+</A>
+<A NAME="aci">
+<H3> aci</H3>
+</A>
+
+
+
+<A NAME="1171293">
+ã“ã®ã‚¨ãƒ³ãƒˆãƒªã«é–¢ã™ã‚‹Directory Serverã®ã‚¢ã‚¯ã‚»ã‚¹åˆ¶å¾¡æƒ…報をä¿å­˜ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1171294">
+<PRE> aci: (target="ldap:///<I>o=Airius.com</I>")(version 3.0;<br>
+ acl "anonymous access"; allow (read, search, compare)<br>
+ userdn=ldap:///self;)
+</PRE>
+</A>
+
+<A NAME="1171296">
+構文: <a href="attribut.htm#1004700">ces</a><P></A>
+
+<A NAME="1171297">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1032956">&nbsp;
+</A>
+<A NAME="administratorContactInfo">
+<H3>administratorContactInfo</H3>
+</A>
+
+
+
+<A NAME="1032957">
+Netscapeサーãƒãƒ¼ã®ç®¡ç†è²¬ä»»è€…ã«é–¢ã™ã‚‹æƒ…å ±ã¸ã®ã€URLを供給ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€<a href="attribut.htm#">netscapeServer</a>オブジェクト クラスãŒä½¿ç”¨ã—ã¾ã™ã€‚通常ã€ã“ã®å±žæ€§ã¨å±žæ€§å€¤ã¯ã€Netscapeサーãƒãƒ¼ã‚’åˆã‚ã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹éš›ã«ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«æ›¸ãè¾¼ã¾ã‚Œã¾ã™ã€‚例: <P></A>
+<A NAME="1032959">
+<PRE> administratorContactInfo: ldap://<I>uid=ssarette, o=Airius.com
+</I></PRE>
+</A>
+
+<A NAME="1098446">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1098448">&nbsp;
+</A>
+<A NAME="adminUrl">
+<H3>adminUrl</H3>
+</A>
+
+
+
+<A NAME="1098449">
+Netscapeサーãƒãƒ¼ã‚’管ç†ã§ãるアドミニストレーション サーãƒãƒ¼ã¸ã®ã€URLを供給ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€<a href="attribut.htm#">netscapeServer</a>オブジェクト クラスãŒä½¿ç”¨ã—ã¾ã™ã€‚通常ã€ã“ã®å±žæ€§ã¨å±žæ€§å€¤ã¯ã€Netscapeサーãƒãƒ¼ã‚’åˆã‚ã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹éš›ã«ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«æ›¸ãè¾¼ã¾ã‚Œã¾ã™ã€‚ 例:<P></A>
+<A NAME="1033050">
+<PRE> adminUrl: http://twain.airius.com:2468
+</PRE>
+</A>
+
+<A NAME="1033052">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1201653">&nbsp;
+</A>
+<A NAME="aliasedObjectName">
+<H3> aliasedObjectName</H3>
+</A>
+
+
+
+<A NAME="1206908">
+ディレクトリã«ãŠã‘るエイリアス エントリを示ã™ãŸã‚ã«ã€Directory Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã¾ã™ã€‚ ã“ã®å±žæ€§ã«ã¯ã€ã‚¨ã‚¤ãƒªã‚¢ã‚¹ã§ã‚るエントリã®å…ƒã®ã‚¨ãƒ³ãƒˆãƒªã®è­˜åˆ¥åãŒå«ã¾ã‚Œã¾ã™ã€‚例:<P></A>
+<A NAME="1206909">
+<PRE> aliasedObjectName:<I> cn=jdoe, o=Airius.com
+</I></PRE>
+</A>
+
+<A NAME="1206911">
+構文: <a href="attribut.htm#1100403">dn</a><P></A>
+
+
+<A NAME="1243116">&nbsp;
+</A>
+<A NAME="altServer">
+<H3> altServer</H3>
+</A>
+
+
+
+<A NAME="1243117">
+未定義。<P></A>
+
+<A NAME="1243120">
+構文: <a href="attribut.htm#1004701">ces</a><P></A>
+
+
+<A NAME="1102441">&nbsp;
+</A>
+<A NAME="archiveFile">
+<H3> archiveFile</H3>
+</A>
+
+
+
+<A NAME="1102442">
+特定ã®ãƒ¡ãƒ¼ãƒ«ãƒ‹ãƒ¥ãƒ¼ã‚¹ グループã«é€ä¿¡ã•ã‚ŒãŸå„メッセージã®ã‚³ãƒ”ーãŒå«ã¾ã‚Œã¦ã„るファイルã®ãƒ‘スåãŒå«ã¾ã‚Œã¾ã™ã€‚<P></A>
+
+<A NAME="1102443">
+構文: <a href="attribut.htm#1004701">ces</a><P></A>
+
+
+<A NAME="1201668">&nbsp;
+</A>
+<A NAME="associatedDomain">
+<H3> associatedDomain</H3>
+</A>
+
+
+<a name="1219687">
+<BLOCKQUOTE>
+DITã«ãŠã‘るオブジェクトã«é–¢ä¿‚ã™ã‚‹DNSドメインを示ã—ã¾ã™ã€‚例ãˆã°ã€
+C=US, O=Airius Corporationã¨ã„ã†è­˜åˆ¥åã‚’æŒã¤ DITã«ãŠã‘るエントリã«ã¯ã€"AC.US. ã¨ã„ã†é–¢é€£ãƒ‰ãƒ¡ã‚¤ãƒ³ãŒã‚ã‚Šã¾ã™ã€‚rfc822ã®é †ã§ã™ã¹ã¦ã®ãƒ‰ãƒ¡ã‚¤ãƒ³ã‚’示ã™å¿…è¦ãŒã‚ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。例:
+
+</BLOCKQUOTE>
+</a>
+<A NAME="1201670">
+<PRE> associatedDomain: US
+</PRE>
+</A>
+
+<A NAME="1201672">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1201675">&nbsp;
+</A>
+<A NAME="associatedName">
+<H3> associatedName</H3>
+</A>
+
+
+
+<A NAME="1218672">
+DNSドメインã«é–¢ä¿‚ã™ã‚‹çµ„織的DITã«ãŠã‘るエントリを指定ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1201677">
+<PRE> associatedName:<I> c=us
+</I></PRE>
+</A>
+
+<A NAME="1201679">
+構文: <a href="attribut.htm#1100403">dn</a><P></A>
+
+
+<A NAME="1242644">&nbsp;
+</A>
+<A NAME="attributeTypes">
+<H3> attributeTypes</H3>
+</A>
+
+
+
+<A NAME="1242645">
+未定義。<P></A>
+
+<A NAME="1242648">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1201684">&nbsp;
+</A>
+<A NAME="audio">
+<H3>audio</H3>
+</A>
+
+
+
+<A NAME="1209771">
+ãƒã‚¤ãƒŠãƒªå½¢å¼ã®ã‚µã‚¦ãƒ³ãƒ‰ ファイルをå«ã¿ã¾ã™ã€‚ã“ã®å±žæ€§ã¯ã€u-法ã§ã‚³ãƒ¼ãƒ‰ã•ã‚ŒãŸéŸ³å£°ãƒ•ã‚¡ã‚¤ãƒ«ã‚’使用ã—ã¾ã™ã€‚例:<P></A>
+
+<A NAME="1201686">
+構文: <a href="attribut.htm#1004700">bin</a><P></A>
+
+
+<A NAME="1201689">&nbsp;
+</A>
+<A NAME="authorCn">
+<H3> authorCn</H3>
+</A>
+
+
+
+<A NAME="1201690">
+ドキュメント エントリã®è‘—者ã®ä¸€èˆ¬åãŒå«ã¾ã‚Œã¾ã™ã€‚例:<P></A>
+<A NAME="1201691">
+<PRE> authorCn: Kacey
+</PRE>
+</A>
+
+<A NAME="1201693">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1201696">&nbsp;
+</A>
+<A NAME="authorSn">
+<H3> authorSn</H3>
+</A>
+
+
+
+<A NAME="1201697">
+ドキュメント エントリã®è‘—者ã®è‹—å­—ãŒå«ã¾ã‚Œã¾ã™ã€‚例:<P></A>
+<A NAME="1201698">
+<PRE> authorSn: Doe
+</PRE>
+</A>
+
+<A NAME="1201700">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1207170">&nbsp;
+</A>
+<A NAME="authorityRevocationList">
+<H3>authorityRevocationList</H3>
+</A>
+
+
+
+<A NAME="1207172">
+無効ã«ãªã£ãŸCA証明書ã®ãƒ†ã‚­ã‚¹ãƒˆ コード リストをå«ã¿ã¾ã™ã€‚ã“ã‚Œã¯ãŠè–¦ã‚ã—ã¾ã›ã‚“。代ã‚ã‚Šã«authorityRevocationList;binaryã‚’ã”使用ãã ã•ã„。<P></A>
+
+<A NAME="1207174">
+構文: <a href="attribut.htm#1004700">bin</a><P></A>
+
+
+<A NAME="1207178">&nbsp;
+</A>
+<A NAME="authorityRevocationList;binary">
+<H3>authorityRevocationList;binary</H3>
+</A>
+
+
+
+<A NAME="1207180">
+無効ã«ãªã£ãŸCertification Authority証明書ã®ãƒã‚¤ãƒŠãƒª リストをå«ã¿ã¾ã™ã€‚例: <P></A>
+
+<A NAME="1207182">
+構文: <a href="attribut.htm#1004700">bin</a><P></A>
+
+
+<A NAME="1201711">&nbsp;
+</A>
+<A NAME="buildingName">
+<H3> buildingName</H3>
+</A>
+
+
+
+<A NAME="1201712">
+エントリã«é–¢ä¿‚ã™ã‚‹ãƒ“ルã®åå‰ã‚’定義ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1201713">
+<PRE> buildingName: 14
+</PRE>
+</A>
+
+<A NAME="1201715">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1171367">&nbsp;
+</A>
+<A NAME="businessCategory">
+<H3> businessCategory</H3>
+</A>
+
+
+
+<A NAME="1171368">
+エントリãŒå¾“事ã™ã‚‹äº‹æ¥­ã‚¿ã‚¤ãƒ—を示ã—ã¾ã™ã€‚ã“ã‚Œã¯ã€ä¼æ¥­ã®éƒ¨é–€ãƒ¬ãƒ™ãƒ«ã§è¡Œã‚れるよã†ãªåºƒç¯„ã§ä¸€èˆ¬çš„ãªã‚‚ã®ã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。<P></A>
+
+<A NAME="1171369">
+例:<P></A>
+<A NAME="1171370">
+<PRE> businessCategory: Engineering
+</PRE>
+</A>
+
+<A NAME="1208474">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1240535">&nbsp;
+</A>
+<A NAME="c">
+<H3> c</H3>
+</A>
+
+
+
+<A NAME="1240536">
+ディレクトリã«ãŠã‘る国åを表ã™ã€ISO定義ã«ã‚ˆã‚‹2文字ã®ã‚³ãƒ¼ãƒ‰ãŒå«ã¾ã‚Œã¾ã™ã€‚例ãˆã°ã€ã‚¢ã‚¤ãƒ«ãƒ©ãƒ³ãƒ‰ã®2文字コードã¯ã€æ¬¡ã®ã‚ˆã†ã«ä½¿ç”¨ã—ã¾ã™ã€‚<P></A>
+<A NAME="1240537">
+<PRE> countryName: IE
+</PRE>
+</A>
+
+<A NAME="1240538">
+ã¾ãŸã¯ã€<P></A>
+<A NAME="1240539">
+<PRE> c: IE
+</PRE>
+</A>
+
+<A NAME="1240541">
+<a href="attribut.htm#">ç•¥å·</a>: c<P></A>
+
+<A NAME="1240543">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1208564">&nbsp;
+</A>
+<A NAME="cACertificate">
+<H3>cACertificate</H3>
+</A>
+
+
+
+<A NAME="1208566">
+CA証明書ã®ãƒ†ã‚­ã‚¹ãƒˆ コード版をå«ã¿ã¾ã™ã€‚ã“ã‚Œã¯ãŠè–¦ã‚ã—ã¾ã›ã‚“。代ã‚ã‚Šã«cACertificate;binary ã‚’ã”使用ãã ã•ã„。<P></A>
+
+<A NAME="1208568">
+構文: <a href="attribut.htm#1004700">bin</a><P></A>
+
+
+<A NAME="1208584">&nbsp;
+</A>
+<A NAME="cACertificate;binary">
+<H3> cACertificate;binary</H3>
+</A>
+
+
+
+<A NAME="1208586">
+ãƒã‚¤ãƒŠãƒªå½¢å¼ã®CAã®è¨¼æ˜Žæ›¸ãŒå«ã¾ã‚Œã¾ã™ã€‚<P></A>
+
+<A NAME="1208588">
+構文: <a href="attribut.htm#1004700">bin</a><P></A>
+
+
+<A NAME="1003044">&nbsp;
+</A>
+<A NAME="carLicense">
+<H3> carLicense</H3>
+</A>
+
+
+
+<A NAME="1003045">
+エントリã®è‡ªå‹•è»ŠãƒŠãƒ³ãƒãƒ¼ãƒ—レート番å·ã‚’示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1003256">
+<PRE> carLicense: 6ABC246
+</PRE>
+</A>
+
+<A NAME="1003274">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1007950">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1208746">&nbsp;
+</A>
+<A NAME="certificateRevocationList">
+<H3>certificateRevocationList</H3>
+</A>
+
+
+
+<A NAME="1208748">
+無効ã«ãªã£ãŸãƒ¦ãƒ¼ã‚¶è¨¼æ˜Žæ›¸ãƒªã‚¹ãƒˆã®ãƒ†ã‚­ã‚¹ãƒˆ コード版をå«ã¿ã¾ã™ã€‚ã“ã‚Œã¯ãŠè–¦ã‚ã—ã¾ã›ã‚“。代ã‚ã‚Šã«certificateRevocationList;binaryã‚’ã”使用ãã ã•ã„。<P></A>
+
+<A NAME="1208708">
+構文: <a href="attribut.htm#1004700">bin</a><P></A>
+
+
+<A NAME="1208727">&nbsp;
+</A>
+<A NAME="certificateRevocationList;binary">
+<H3> certificateRevocationList;binary</H3>
+</A>
+
+
+
+<A NAME="1208729">
+無効ã«ãªã£ãŸãƒ¦ãƒ¼ã‚¶ãƒ¼è¨¼æ˜Žæ›¸ãƒªã‚¹ãƒˆãŒãƒã‚¤ãƒŠãƒªå½¢å¼ã§å«ã¾ã‚Œã¾ã™ã€‚<P></A>
+
+<A NAME="1208731">
+構文: <a href="attribut.htm#1004700">bin</a><P></A>
+
+
+<A NAME="1103361">&nbsp;
+</A>
+<A NAME="changelog">
+<H3>changeLog</H3>
+</A>
+
+
+
+<A NAME="1251549">
+Directory Serverã®å¤‰æ›´ãƒ­ã‚°è¨˜éŒ²ã‚’ä¿æŒã™ã‚‹ã‚³ãƒ³ãƒ†ãƒŠ オブジェクトã®è­˜åˆ¥åã‚’å«ã¿ã¾ã™ã€‚例: <P></A>
+<PRE><A NAME="1251550">
+changeLog: cn=changelog
+</A>
+</PRE>
+<A NAME="1103363">
+OID: <code>2.16.840.1.113730.3.1.35</code><P></A>
+
+<A NAME="1277486">
+構文: <a href="attribut.htm#1100403">dn</a><P></A>
+<P>
+<A NAME="1171397">&nbsp;
+</A>
+<A NAME="changeLogMaximumAge">
+<H3> changeLogMaximumAge</H3>
+</A>
+
+
+
+<A NAME="1171398">
+変更ログ内ã®ã‚¨ãƒ³ãƒˆãƒªã®æœ€é«˜å¹´é½¢ã‚’秒å˜ä½ã§ç¤ºã—ã¾ã™ã€‚指定ã•ã‚ŒãŸæœ€é«˜å¹´é½¢ã‚’越ãˆã‚‹ã¨ã‚¨ãƒ³ãƒˆãƒªã¯ç ´æ£„ã•ã‚Œã¾ã™ã€‚例:<P></A>
+<A NAME="1171399">
+<PRE> changeLogMaximumAge: 86000
+</PRE>
+</A>
+
+<A NAME="1171401">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1171402">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1171405">&nbsp;
+</A>
+<A NAME="changeLogMaximumSize">
+<H3> changeLogMaximumSize</H3>
+</A>
+
+
+
+<A NAME="1171406">
+変更ログファイルã®æœ€å¤§å®¹é‡ã‚’ãƒã‚¤ãƒˆã§ç¤ºã—ã¾ã™ã€‚最大容é‡ã‚’越ãˆã‚‹ã¨ã‚¨ãƒ³ãƒˆãƒªã¯ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‹ã‚‰ç ´æ£„ã•ã‚Œã¾ã™ã€‚例:<P></A>
+<A NAME="1171407">
+<PRE> changeLogMaximumSize: 2400000
+</PRE>
+</A>
+
+<A NAME="1171409">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1171410">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1094798">&nbsp;
+</A>
+<A NAME="changeNumber">
+<H3> changeNumber</H3>
+</A>
+
+
+
+<A NAME="1094841">
+未定義。<P></A>
+
+<A NAME="1095210">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1095277">&nbsp;
+</A>
+<A NAME="changes">
+<H3> changes</H3>
+</A>
+
+
+
+<A NAME="1095278">
+未定義。<P></A>
+
+<A NAME="1095281">
+構文: <a href="attribut.htm#1004700">bin</a><P></A>
+
+
+<A NAME="1095285">&nbsp;
+</A>
+<A NAME="changeTime">
+<H3> changeTime</H3>
+</A>
+
+
+
+<A NAME="1095286">
+未定義。<P></A>
+
+<A NAME="1095289">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1094968">&nbsp;
+</A>
+<A NAME="changeType">
+<H3> changeType</H3>
+</A>
+
+
+
+<A NAME="1094969">
+エントリã«è¡Œã‚ã‚ŒãŸå¤‰æ›´ã®ã‚¿ã‚¤ãƒ—を示ã—ã¾ã™ã€‚changeTypeã®å€¤ã¯ã€addã€deleteã€modifyã€ã¾ãŸã¯modrdnã§ã™ã€‚例:<P></A>
+<A NAME="1094970">
+<PRE> changeType: modify
+</PRE>
+</A>
+
+<A NAME="1094972">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1103818">&nbsp;
+</A>
+<A NAME="cirBeginORC">
+<H3> cirBeginORC</H3>
+</A>
+
+
+
+<A NAME="1149985">
+複製ã®å‰ã«ã€æ¶ˆè²»ã‚µãƒ¼ãƒãƒ¼ãŒãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®å†…容を消去ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã‹ã©ã†ã‹ã‚’定義ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã®å€¤ãŒå­˜åœ¨ã—ãªã„å ´åˆã¯ã€å†…容ã¯æ¶ˆåŽ»ã•ã‚Œã¾ã›ã‚“。ã“ã®å±žæ€§ã«ã¯ã€startã¨stopã®å€¤ãŒè¨±å¯ã•ã‚Œã¦ã„ã¾ã™ã€‚startã§ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®å†…容ãŒæ¶ˆåŽ»ã•ã‚Œã€stopã§ã“ã®å‹•ä½œãŒä¸­æ­¢ã•ã‚Œã¾ã™ã€‚ 例:<P></A>
+<A NAME="1151379">
+<PRE> cirBeginORC: start
+</PRE>
+</A>
+
+<A NAME="1103820">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1101818">&nbsp;
+</A>
+<A NAME="cirBindCredentials">
+<H3> cirBindCredentials</H3>
+</A>
+
+
+
+<A NAME="1101820">
+未定義。<P></A>
+
+<A NAME="1101823">
+構文: <a href="attribut.htm#1004701">ces</a><P></A>
+
+
+<A NAME="1101379">&nbsp;
+</A>
+<A NAME="cirBindDn">
+<H3> cirBindDn</H3>
+</A>
+
+
+
+<A NAME="1101380">
+未定義。 <P></A>
+
+<A NAME="1101383">
+構文: <a href="attribut.htm#1100403">dn</a><P></A>
+
+
+<A NAME="1101250">&nbsp;
+</A>
+<A NAME="cirHost">
+<H3> cirHost</H3>
+</A>
+
+
+
+<A NAME="1101251">
+未定義。 <P></A>
+
+<A NAME="1101254">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1101860">&nbsp;
+</A>
+<A NAME="cirLastUpdateApplied">
+<H3> cirLastUpdateApplied</H3>
+</A>
+
+
+
+<A NAME="1122710">
+未定義。<P></A>
+
+<A NAME="1101865">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1101283">&nbsp;
+</A>
+<A NAME="cirPort">
+<H3> cirPort</H3>
+</A>
+
+
+
+<A NAME="1101284">
+未定義。 <P></A>
+
+<A NAME="1101287">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1101135">&nbsp;
+</A>
+<A NAME="cirReplicaRoot">
+<H3> cirReplicaRoot</H3>
+</A>
+
+
+
+<A NAME="1101136">
+未定義。 <P></A>
+
+<A NAME="1101139">
+構文: <a href="attribut.htm#1100403">dn</a><P></A>
+
+
+<A NAME="1102148">&nbsp;
+</A>
+<A NAME="cirSyncInterval">
+<H3> cirSyncInterval</H3>
+</A>
+
+
+
+<A NAME="1149751">
+ディレクトリã®è¤‡è£½éƒ¨åˆ†ã«å¤‰æ›´ãŒè¡Œã‚ã‚ŒãŸã‹ã©ã†ã‹ã‚’定期的ã«ãƒã‚§ãƒƒã‚¯ã™ã‚‹ãŸã‚ã€æ¶ˆè²»ã‚µãƒ¼ãƒãƒ¼ã«ã‚ˆã£ã¦ä¾›çµ¦ã‚µãƒ¼ãƒãƒ¼ã«å•åˆã›ãŒè¡Œã‚ã‚Œã¾ã™ã€‚ã“ã®å±žæ€§ã¯ã€æ¶ˆè²»ã‚µãƒ¼ãƒãƒ¼ã«ã‚ˆã‚‹ä¾›çµ¦ã‚µãƒ¼ãƒãƒ¼ã¸ã®å•åˆã›é–“隔を秒å˜ä½ã§å®šç¾©ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1102151">
+<PRE> cirSyncInterval: 3600
+</PRE>
+</A>
+
+<A NAME="1102153">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1102114">&nbsp;
+</A>
+<A NAME="cirUpdateFailedat">
+<H3> cirUpdateFailedat</H3>
+</A>
+
+
+
+<A NAME="1146224">
+未定義。<P></A>
+
+<A NAME="1102119">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1102001">&nbsp;
+</A>
+<A NAME="cirUpdateSchedule">
+<H3> cirUpdateSchedule</H3>
+</A>
+
+
+
+<A NAME="1102003">
+複製ã®ç™ºç”ŸãŒå¯èƒ½ãªæ™‚間帯を定義ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1148927">
+<PRE> cirUpdateSchedule: 0100-0400
+</PRE>
+</A>
+<A NAME="1148928">
+<PRE> cirUpdateSchedule: * 06
+</PRE>
+</A>
+<A NAME="1148929">
+<PRE> cirUpdateSchedule: 1145-1300 24
+</PRE>
+</A>
+
+<A NAME="1148930">
+ã“れらã®å€¤ã®æ„味:<P></A>
+<A NAME="1148931">
+<PRE> 毎日ã€åˆå‰1時ã‹ã‚‰åˆå‰4時ã¾ã§
+</PRE>
+</A>
+<A NAME="1148932">
+<PRE> 土曜ã¨æ—¥æ›œã®çµ‚æ—¥
+</PRE>
+</A>
+<A NAME="1148933">
+<PRE> ç«æ›œã¨æœ¨æ›œã®åˆå‰11時45分ã‹ã‚‰åˆå¾Œ1時ã¾ã§
+</PRE>
+</A>
+
+
+<A NAME="1101691">&nbsp;
+</A>
+<A NAME="cirUsePersistentSearch">
+<H3> cirUsePersistentSearch</H3>
+</A>
+
+
+
+<A NAME="1101693">
+未定義。 <P></A>
+
+<A NAME="1101696">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1101735">&nbsp;
+</A>
+<A NAME="cirUseSsl">
+<H3> cirUseSsl</H3>
+</A>
+
+
+
+<A NAME="1101737">
+未定義。 <P></A>
+
+<A NAME="1101740">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1171494">&nbsp;
+</A>
+<A NAME="cn">
+<H3> cn</H3>
+</A>
+
+
+
+<A NAME="1171495">
+LDAPReplicaã¾ãŸã¯LDAPServer以外ã®ã‚ªãƒ–ジェクト クラスã¸ã®å‚照時ã«ã€cnã§ã‚¨ãƒ³ãƒˆãƒªã®ä¸€èˆ¬åã¾ãŸã¯æ°åãŒç¤ºã•ã‚Œã¾ã™ã€‚例:<P></A>
+<A NAME="1171496">
+<PRE> commonName: Bill Anderson
+</PRE>
+</A>
+
+<A NAME="1171497">
+ã¾ãŸã¯ã€<P></A>
+<A NAME="1171498">
+<PRE> cn: Bill Anderson
+</PRE>
+</A>
+
+<A NAME="1171499">
+LDAPReplicaã¾ãŸã¯LDAPServer以外ã®ã‚ªãƒ–ジェクト クラスã¸ã®å‚照時ã«ã€è¤‡è£½ã•ã‚ŒãŸãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª ツリーã®ã‚µãƒ¼ãƒãƒ¼ã¨ãƒ«ãƒ¼ãƒˆã®DNSåを識別åå½¢å¼ã«å¤‰æ›ã—ãŸã‚‚ã®ã‚’示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1171500">
+<PRE> commonName: replicater.netscape.com:17430/o%3Dairius<br>
+ %2Cc%3us
+</PRE>
+</A>
+
+<A NAME="1171501">
+ã¾ãŸã¯ã€<P></A>
+<A NAME="1171502">
+<PRE> cn: replicater.netscape.com:17430/o%3Dairius%2Cc%3us
+</PRE>
+</A>
+
+<A NAME="1171504">
+<a href="attribut.htm#">ç•¥å·</a>: cn<P></A>
+
+<A NAME="1171506">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1241971">&nbsp;
+</A>
+<A NAME="createTimestamp">
+<H3> createTimestamp</H3>
+</A>
+
+
+
+<A NAME="1241973">
+未定義。 <P></A>
+
+<A NAME="1241975">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1242331">&nbsp;
+</A>
+<A NAME="creatorsName">
+<H3> creatorsName</H3>
+</A>
+
+
+
+<A NAME="1242332">
+エントリ作æˆè€…ã®è­˜åˆ¥å(dn)ãŒå«ã¾ã‚Œã¾ã™ã€‚例:<P></A>
+<A NAME="1242333">
+<PRE> creatorsName: <I>cn=jdoe, o=airius.com
+</I></PRE>
+</A>
+
+<A NAME="1242335">
+構文: <a href="attribut.htm#1100403">dn</a><P></A>
+
+
+<A NAME="1208784">&nbsp;
+</A>
+<A NAME="crossCertificatePair">
+<H3>crossCertificatePair</H3>
+</A>
+
+
+
+<A NAME="1208786">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„。ã“ã‚Œã¯ãŠè–¦ã‚ã—ã¾ã›ã‚“。代ã‚ã‚Šã«crossCertificatePair;binaryã‚’ã”使用ãã ã•ã„。<P></A>
+
+<A NAME="1208788">
+構文: <a href="attribut.htm#1004700">bin</a><P></A>
+
+
+<A NAME="1208791">&nbsp;
+</A>
+<A NAME="crossCertificatePair;binary">
+<H3> crossCertificatePair;binary</H3>
+</A>
+
+
+
+<A NAME="1208793">
+å°†æ¥ã®ä½¿ç”¨ã®ãŸã‚ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1208795">
+構文: <a href="attribut.htm#1004700">bin</a><P></A>
+
+
+<A NAME="1245094">&nbsp;
+</A>
+<A NAME="dc">
+<H3> dc</H3>
+</A>
+
+
+
+<A NAME="1245095">
+DNSドメインを指定ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1245096">
+<PRE> domainComponent: uk
+</PRE>
+</A>
+<A NAME="1245097">
+<PRE>ã¾ãŸã¯ã€
+</PRE>
+</A>
+<A NAME="1245098">
+<PRE> dc: uk
+</PRE>
+</A>
+
+<A NAME="1245100">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1095547">&nbsp;
+</A>
+<A NAME="deleteOldRdn">
+<H3> deleteOldRdn</H3>
+</A>
+
+
+
+<A NAME="1095597">
+エントリã®è­˜åˆ¥å±žæ€§ã¨ã—ã¦ã‚¨ãƒ³ãƒˆãƒªã®å¤ã„RDNã‚’ä¿æŒã™ã‚‹ã‹ã€ã¾ãŸã¯å‰Šé™¤ã™ã‚‹ã‹ã‚’定義ã™ã‚‹ãƒ•ãƒ©ã‚°ã€‚値<code>False</code>ã¯è­˜åˆ¥å±žæ€§ã¨ã—ã¦RDNãŒä¿æŒã•ã‚Œã‚‹ã“ã¨ã‚’ã€å€¤<code>True</code>ã¯ã‚¨ãƒ³ãƒˆãƒªã®è­˜åˆ¥å±žæ€§ã¨ã—ã¦RDNãŒä¿æŒã•ã‚Œãªã„ã“ã¨ã‚’示ã—ã¾ã™ã€‚<code>True</code>ã¾ãŸã¯<code>False</code>以外ã®å€¤ãŒdeleteOldRDNã®å±žæ€§ã«å«ã¾ã‚Œã¦ã„ã‚‹å ´åˆã‚„ã€deleteOldRDNã«è¤‡æ•°ã®å€¤ãŒå«ã¾ã‚Œã¦ã„ã‚‹å ´åˆã¯ã€RDNãŒè­˜åˆ¥å±žæ€§ã¨ã—ã¦ä¿æŒã•ã‚Œã¾ã™(ã¤ã¾ã‚Šã€å€¤ãŒå­˜åœ¨ã—ãªã‹ã£ãŸã‚Šã€ç„¡åŠ¹ãªå€¤ãŒå­˜åœ¨ã™ã‚‹å ´åˆã€<code>False</code>ãŒãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§ã™)。<P></A>
+<A NAME="1095550">
+<PRE> deleteOldRdn: False
+</PRE>
+</A>
+
+<A NAME="1095552">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1241799">&nbsp;
+</A>
+<A NAME="deltaRevocationList;binary">
+<H3> deltaRevocationList;binary</H3>
+</A>
+
+
+
+<A NAME="1241800">
+未定義。<P></A>
+
+<A NAME="1241803">
+構文: <a href="attribut.htm#1004700">bin</a><P></A>
+
+
+<A NAME="1095560">&nbsp;
+</A>
+<A NAME="departmentNumber">
+<H3> departmentNumber</H3>
+</A>
+
+
+
+<A NAME="1095562">
+Identifies the entryユs department number. 例:<P></A>
+<A NAME="1095563">
+<PRE> departmentNumber: 2604
+</PRE>
+</A>
+
+<A NAME="1095565">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1095566">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1171528">&nbsp;
+</A>
+<A NAME="description">
+<H3> description</H3>
+</A>
+
+
+
+<A NAME="1171529">
+エントリを説明ã—ã¾ã™ã€‚ユーザーや組織ã®å ´åˆã«ã€ãã®å½¹å‰²ã‚„作業ã®å‰²å½“ã¦ãŒèª¬æ˜Žã«å«ã¾ã‚Œã‚‹ã“ã¨ãŒã‚ˆãã‚ã‚Šã¾ã™ã€‚例:<P></A>
+<A NAME="1171530">
+<PRE> description: Quality control inspector for the ME2873 product line (ME2873製å“ラインã®å“質管ç†æ¤œæŸ»è€…)
+</PRE>
+</A>
+
+<A NAME="1171532">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1201824">&nbsp;
+</A>
+<A NAME="destinationIndicator">
+<H3> destinationIndicator</H3>
+</A>
+
+
+
+<A NAME="1201825">
+ã“ã®å±žæ€§ã¯é›»å ±ã‚µãƒ¼ãƒ“スã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã¾ã™ã€‚<P></A>
+
+<A NAME="1201828">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1201831">&nbsp;
+</A>
+<A NAME="ditRedirect">
+<H3> ditRedirect</H3>
+</A>
+
+
+
+<A NAME="1211719">
+ã‚るエントリã§è¨˜è¿°ã•ã‚Œã‚‹ã‚ªãƒ–ジェクトãŒã€DIT内ã«ã‚ˆã‚Šæ–°ã—ã„エントリをæŒã¤ã‚ˆã†ã«ãªã£ãŸã“ã¨ã‚’示ã™ã®ã«ä½¿ç”¨ã—ã¾ã™ã€‚個人ã®ä»•äº‹å ´ãŒå¤‰ã‚ã£ãŸãŸã‚æ–°ã—ã„組織DNã‚’å¾—ãŸå ´åˆãªã©ã«ã€ã“ã®å±žæ€§ã‚’使用ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1201833">
+<PRE> ditRedirect: <I>cn=jdoe, o=airius.com
+</I></PRE>
+</A>
+
+<A NAME="1201835">
+構文: <a href="attribut.htm#1100403">dn</a><P></A>
+
+
+<A NAME="1100403">&nbsp;
+</A>
+<A NAME="dn">
+<H3> dn</H3>
+</A>
+
+
+
+<A NAME="1100404">
+エントリã®è­˜åˆ¥å (dn - distinguished name)を定義ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1171552">
+<PRE> <I>dn: cn=Jane Doe, ou=Quality Control, o=airius.com
+</I></PRE>
+</A>
+
+<A NAME="1100407">
+構文: <a href="attribut.htm#1100403">dn</a><P></A>
+
+
+<A NAME="1201841">&nbsp;
+</A>
+<A NAME="dnsRecord">
+<H3> dnsRecord</H3>
+</A>
+
+
+
+<A NAME="1218890">
+タイプA (Address)ã€ã‚¿ã‚¤ãƒ—MX (Mail Exchange)ã€ã‚¿ã‚¤ãƒ—NS (Name Server)ã€ãŠã‚ˆã³ã‚¿ã‚¤ãƒ— SOA (Start Of Authority) ã®ãƒªã‚½ãƒ¼ã‚¹ レコードをå«ã‚€DNS リソース レコードを指定ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1218996">
+<PRE> dnsRecord: IN NS ns.uu.net.
+</PRE>
+</A>
+
+<A NAME="1201844">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1241256">&nbsp;
+</A>
+<A NAME="dnQualifier">
+<H3> dnQualifier</H3>
+</A>
+
+
+
+<A NAME="1241257">
+未定義。<P></A>
+
+<A NAME="1241260">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1201847">&nbsp;
+</A>
+<A NAME="documentAuthor">
+<H3> documentAuthor</H3>
+</A>
+
+
+
+<A NAME="1201848">
+ドキュメント エントリã®è‘—者ã®è­˜åˆ¥åãŒå«ã¾ã‚Œã¾ã™ã€‚例:<P></A>
+<A NAME="1201849">
+<PRE> documentAuthor: <I>cn=John Doe, o=Airius.com</I>
+</PRE>
+</A>
+
+<A NAME="1201851">
+構文: <a href="attribut.htm#1100403">dn</a><P></A>
+
+
+<A NAME="1201854">&nbsp;
+</A>
+<A NAME="documentIdentifier">
+<H3> documentIdentifier</H3>
+</A>
+
+
+
+<A NAME="1214845">
+ドキュメントã®ä¸€æ„ã®è­˜åˆ¥å­ã‚’示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1201856">
+<PRE> documentIdentifier: L3204REV1
+</PRE>
+</A>
+
+<A NAME="1201858">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1201861">&nbsp;
+</A>
+<A NAME="documentLocation">
+<H3> documentLocation</H3>
+</A>
+
+
+
+<A NAME="1201862">
+ドキュメント エントリã®å…ƒã®ã‚³ãƒ”ー場所を定義ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1201863">
+<PRE> documentLocation: Department Library
+</PRE>
+</A>
+
+<A NAME="1201865">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1201868">&nbsp;
+</A>
+<A NAME="documentPublisher">
+<H3> documentPublisher</H3>
+</A>
+
+
+
+<A NAME="1216107">
+ドキュメントをパブリッシュã—ãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ãŠã‚ˆã³/ã¾ãŸã¯çµ„織。例:<P></A>
+<A NAME="1201870">
+<PRE> documentPublisher: Southeastern Publishing
+</PRE>
+</A>
+
+<A NAME="1201872">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1201877">&nbsp;
+</A>
+<A NAME="documentStore">
+<H3> documentStore</H3>
+</A>
+
+
+
+<A NAME="1201878">
+未定義。<P></A>
+
+<A NAME="1201881">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1201884">&nbsp;
+</A>
+<A NAME="documentTitle">
+<H3> documentTitle</H3>
+</A>
+
+
+
+<A NAME="1201885">
+ドキュメント エントリã®é¡ŒåãŒå«ã¾ã‚Œã¾ã™ã€‚例:<P></A>
+<A NAME="1201886">
+<PRE> documentTitle: Directory Administratorユs Guide
+</PRE>
+</A>
+
+<A NAME="1201888">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1201891">&nbsp;
+</A>
+<A NAME="documentVersion">
+<H3> documentVersion</H3>
+</A>
+
+
+
+<A NAME="1201892">
+ドキュメント エントリã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’定義ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1201893">
+<PRE> documentVersion: 1.1
+</PRE>
+</A>
+
+<A NAME="1201895">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1201909">&nbsp;
+</A>
+<A NAME="drink">
+<H3> drink</H3>
+</A>
+
+
+
+<A NAME="1201910">
+ユーザー エントリã®å¥½ã¿ã®é£²ç‰©ã‚’説明ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1201911">
+<PRE> drink: soda
+</PRE>
+</A>
+<A NAME="1201912">
+<PRE>ã¾ãŸã¯ã€
+</PRE>
+</A>
+<A NAME="1201913">
+<PRE> favouriteDrink: soda
+</PRE>
+</A>
+
+<A NAME="1201915">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1245205">&nbsp;
+</A>
+<A NAME="dSAQuality">
+<H3> dSAQuality</H3>
+</A>
+
+
+
+<A NAME="1245207">
+未定義。 <P></A>
+
+<A NAME="1245210">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1003050">&nbsp;
+</A>
+<A NAME="employeeNumber">
+<H3> employeeNumber</H3>
+</A>
+
+
+
+<A NAME="1003051">
+エントリã®ç¤¾ï¿½ï¿½ç•ªå·ã‚’示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1003356">
+<PRE> employeeNumber: 15300
+</PRE>
+</A>
+
+<A NAME="1003382">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1008204">
+ã“ã®å±žæ€§ã¯ã€LDAPå°Žå…¥ã¨ã®ä½µç”¨ã®ãŸã‚ã«Netscape社ãŒä½œæˆã—ãŸã‚‚ã®ã§ã™ã€‚<P></A>
+
+
+<A NAME="1009035">&nbsp;
+</A>
+<A NAME="employeeType">
+<H3> employeeType</H3>
+</A>
+
+
+
+<A NAME="1009036">
+エントリã®æŽ¡ç”¨ã‚¿ã‚¤ãƒ—を示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1009039">
+<PRE> employeeType: Full time
+</PRE>
+</A>
+
+<A NAME="1009054">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1087204">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1241288">&nbsp;
+</A>
+<A NAME="enhancedSearchGuide">
+<H3> enhancedSearchGuide</H3>
+</A>
+
+
+
+<A NAME="1241289">
+未定義。 <P></A>
+
+<A NAME="1241292">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1171637">&nbsp;
+</A>
+<A NAME="facsimileTelephoneNumber">
+<H3> facsimileTelephoneNumber</H3>
+</A>
+
+
+
+<A NAME="1171638">
+エントリã«é€£çµ¡å¯èƒ½ãªãƒ•ã‚¡ãƒƒã‚¯ã‚¹ç•ªå·ã‚’示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1171639">
+<PRE> facsimileTelephoneNumber: 415-555-1212
+</PRE>
+</A>
+
+<A NAME="1171640">
+ã¾ãŸã¯ã€<P></A>
+<A NAME="1171641">
+<PRE> fax: 415-555-1212
+</PRE>
+</A>
+
+<A NAME="1171643">
+<a href="attribut.htm#">ç•¥å·</a>: fax<P></A>
+
+<A NAME="1171645">
+構文: <a href="attribut.htm#1004703">tel</a><P></A>
+
+
+<A NAME="1229525">&nbsp;
+</A>
+<A NAME="co">
+<H3> co</H3>
+</A>
+
+
+
+<A NAME="1229526">
+国åãŒå«ã¾ã‚Œã¾ã™ã€‚country属性ã¯å›½ã®2文字コードを示ã—ã€friendlyCountryName属性ã¯å®Ÿéš›ã®å›½åを示ã™ã®ã«ä½¿ç”¨ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1229527">
+<PRE> friendlyCountryName: Ireland<br>
+ countryName: IE
+</PRE>
+</A>
+
+<A NAME="1244785">
+ã¾ãŸã¯ã€<P></A>
+<A NAME="1244786">
+<PRE> co: Ireland
+</PRE>
+</A>
+
+<A NAME="1244788">
+<a href="attribut.htm#">ç•¥å·</a>: co<P></A>
+
+<A NAME="1229529">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1171657">&nbsp;
+</A>
+<A NAME="generation">
+<H3> generation</H3>
+</A>
+
+
+
+<A NAME="1171658">
+サーãƒãƒ¼ã‚’ãã®åˆ¥ã®ä¸–代ã¾ãŸã¯ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‹ã‚‰åŒºåˆ¥ã™ã‚‹ãŸã‚ã«ã€ã‚µãƒ¼ãƒãƒ¼ã«å‰²ã‚Šå½“ã¦ã‚‹ãƒã‚¤ãƒˆ ベクトルを示ã—ã¾ã™ã€‚generation属性ã¯è¤‡è£½åŒæœŸåŒ–ã®ã¿ã«ä½¿ç”¨ã—ã¾ã™ã€‚<P></A>
+
+<A NAME="1171660">
+構文: <a href="attribut.htm#1004701">ces</a><P></A>
+
+<A NAME="1171661">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1104309">&nbsp;
+</A>
+<A NAME="generationQualifier">
+<H3>generationQualifier</H3>
+</A>
+
+
+
+<A NAME="1161653">
+Lightweight Internet Person Schema (LIPS)ã®Generation Qualifierã¨åŒã˜ã§ã™ã€‚<P></A>
+
+<A NAME="1104311">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1229534">&nbsp;
+</A>
+<A NAME="givenName">
+<H3> givenName</H3>
+</A>
+
+
+
+<A NAME="1229535">
+エントリã®åã¾ãŸã¯ãƒ•ã‚¡ãƒ¼ã‚¹ãƒˆãƒãƒ¼ãƒ ã‚’示ã—ã¾ã™ã€‚例: <P></A>
+<A NAME="1229536">
+<PRE> givenName: Bill
+</PRE>
+</A>
+
+<A NAME="1229538">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1201936">&nbsp;
+</A>
+<A NAME="homePhone">
+<H3> homePhone</H3>
+</A>
+
+
+
+<A NAME="1201937">
+エントリã®è‡ªå®…電話番å·ã‚’示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1201938">
+<PRE> homeTelephoneNumber: 415-555-1212
+</PRE>
+</A>
+
+<A NAME="1201939">
+ã¾ãŸã¯ã€<P></A>
+<A NAME="1201940">
+<PRE> homePhone: 415-555-1234
+</PRE>
+</A>
+
+<A NAME="1201942">
+<a href="attribut.htm#">ç•¥å·</a>: homePhone<P></A>
+
+<A NAME="1201944">
+構文: <a href="attribut.htm#1004703">tel</a><P></A>
+
+
+<A NAME="1201947">&nbsp;
+</A>
+<A NAME="homePostalAddress">
+<H3> homePostalAddress</H3>
+</A>
+
+
+
+<A NAME="1201948">
+エントリã®è‡ªå®…郵便ä½æ‰€ã‚’示ã—ã¾ã™ã€‚ã“ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã¯è¤‡æ•°è¡Œã‚’å«ã‚€ã‚ˆã†æ„図ã•ã‚Œã¦ã„ã¾ã™ãŒã€ã‚¨ãƒ³ãƒˆãƒªå†…ã®å„行をドル記å·($)ã§åŒºåˆ‡ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚例:<P></A>
+<A NAME="1201949">
+<PRE> homePostalAddress: 1234 Ridgeway Drive$Santa Clara, CA$99555
+</PRE>
+</A>
+
+<A NAME="1201950">
+テキスト内ã§ã®åŒºåˆ‡ã‚Šã¨ã—ã¦ã§ã¯ãªãã€å®Ÿéš›ã®ãƒ‰ãƒ«è¨˜å·($)ã¾ãŸã¯ãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥(\)を示ã™ã«ã¯ã€ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—ã•ã‚ŒãŸ16進値 \24㨠\5cを使用ã—ã¾ã™ã€‚例ãˆã°ã€æ¬¡ã®ã‚ˆã†ãªæ–‡å­—列を示ã™å ´åˆã€<P></A>
+<A NAME="1201951">
+<PRE> The dollar ($) value can be found <br>
+ in the c:\cost file.
+</PRE>
+</A>
+
+<A NAME="1201952">
+次ã®ã‚ˆã†ã«ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—文字を使用ã—ã¾ã™ã€‚<P></A>
+<A NAME="1201953">
+<PRE> The dollar (\24) value can be found$in the c:\5ccost file.
+</PRE>
+</A>
+
+<A NAME="1201955">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1201958">&nbsp;
+</A>
+<A NAME="host">
+<H3> host</H3>
+</A>
+
+
+
+<A NAME="1201959">
+コンピュータã®ãƒ›ã‚¹ãƒˆåを定義ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1201960">
+<PRE> host: mozilla
+</PRE>
+</A>
+
+<A NAME="1201962">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1241726">&nbsp;
+</A>
+<A NAME="houseIdentifier">
+<H3> houseIdentifier</H3>
+</A>
+
+
+
+<A NAME="1241727">
+家ã®è­˜åˆ¥å­ãŒå«ã¾ã‚Œã¾ã™ã€‚<P></A>
+
+<A NAME="1241730">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1201965">&nbsp;
+</A>
+<A NAME="info">
+<H3> info</H3>
+</A>
+
+
+
+<A NAME="1211991">
+Informationã®å±žæ€§ã‚¿ã‚¤ãƒ—ã¯ã€ã‚ªãƒ–ジェクトã«é–¢ä¿‚ã™ã‚‹ä¸€èˆ¬çš„ãªæƒ…報を示ã™ã‚‚ã®ã§ã™ã€‚ã“ã®å±žæ€§ã‚¿ã‚¤ãƒ—ã§ã¯ç‰¹å®šã®ä½¿ç”¨ã‚’é¿ã‘ã€ã•ã‚‰ã«ã€ç‰¹å®šã®è¦ä»¶ãŒä»–ã® (ã¾ãŸã¯è¿½åŠ ã®)属性タイプã«ã‚ˆã£ã¦æº€ãŸã•ã‚Œã‚‹ã‚ˆã†ã«ã™ã‚‹ã“ã¨ã‚’ãŠè–¦ã‚ã—ã¾ã™ã€‚<P></A>
+<A NAME="1201967">
+<PRE> info: not valid
+</PRE>
+</A>
+
+<A NAME="1201969">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1229543">&nbsp;
+</A>
+<A NAME="initials">
+<H3> initials</H3>
+</A>
+
+
+
+<A NAME="1229544">
+エントリã®ã‚¤ãƒ‹ã‚·ãƒ£ãƒ«ã‚’示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1229545">
+<PRE> initials: BFA
+</PRE>
+</A>
+
+<A NAME="1229547">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1032705">&nbsp;
+</A>
+<A NAME="installationTimeStamp">
+<H3>installationTimeStamp</H3>
+</A>
+
+
+
+<A NAME="1212073">
+Netscapeサーãƒãƒ¼ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚ŒãŸæ—¥ã¨æ™‚é–“ã‚’zuluå½¢å¼ã§è¡¨ç¤ºã—ã¾ã™ã€‚ ã“ã®å±žæ€§ã¯Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€<a href="attribut.htm#">netscapeServer</a>オブジェクト クラスãŒä½¿ç”¨ã—ã¾ã™ã€‚通常ã€ã“ã®å±žæ€§ã¨å±žæ€§å€¤ã¯ã€Netscapeサーãƒã‚’åˆã‚ã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹éš›ã«ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«æ›¸ãè¾¼ã¾ã‚Œã¾ã™ã€‚例: <P></A>
+<A NAME="1212075">
+<PRE><A NAME="1212075">
+ installationTimeStamp: 199703261517z
+</A>
+</PRE>
+<A NAME="1259193">
+OID: <code>2.16.840.1.113730.3.1.73</code><P></A>
+
+<A NAME="1032810">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1224256">&nbsp;
+</A>
+<A NAME="internationalIsdnNumber">
+<H3> internationalIsdnNumber</H3>
+</A>
+
+
+
+<A NAME="1224257">
+エントリã®å›½éš›ISDN番å·ã‚’定義ã—ã¾ã™ã€‚<P></A>
+
+<A NAME="1224260">
+構文: <a href="attribut.htm#1004701">ces</a><P></A>
+
+
+<A NAME="1201988">&nbsp;
+</A>
+<A NAME="janetMailBox">
+<H3> janetMailBox</H3>
+</A>
+
+
+
+<A NAME="1212260">
+é›»å­ãƒ¡ãƒ¼ãƒ« アドレスを示ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯ã€rfc822メール アドレスã«æ…£ã‚Œã¦ã„ãªã„英国ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ä¾¿å®œã‚’図るãŸã‚ã®ã‚‚ã®ã§ã™ã€‚ã“ã®å±žæ€§ã‚’使用ã—ãŸã‚¨ãƒ³ãƒˆãƒªã«ã¯ã€rfc822Mailboxã®å±žæ€§ã‚‚å«ã¾ã‚Œã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚例:<P></A>
+<A NAME="1201990">
+<PRE> janetMailBox: jdoe@airius.com
+</PRE>
+</A>
+
+<A NAME="1201992">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1201995">&nbsp;
+</A>
+<A NAME="jpegPhoto">
+<H3> jpegPhoto</H3>
+</A>
+
+
+
+<A NAME="1201996">
+エントリã®JPEG写真ãŒå«ã¾ã‚Œã¾ã™ã€‚<P></A>
+
+<A NAME="1201999">
+構文: <a href="attribut.htm#1004700">bin</a><P></A>
+
+
+<A NAME="1202004">&nbsp;
+</A>
+<A NAME="keyWords">
+<H3> keyWords</H3>
+</A>
+
+
+
+<A NAME="1202005">
+エントリã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ãŒå«ã¾ã‚Œã¾ã™ã€‚例:<P></A>
+<A NAME="1202006">
+<PRE> keyWords: directory LDAP X.500
+</PRE>
+</A>
+
+<A NAME="1202008">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1202013">&nbsp;
+</A>
+<A NAME="knowledgeInformation">
+<H3> knowledgeInformation</H3>
+</A>
+
+
+
+<A NAME="1202014">
+ã“ã®å±žæ€§ã¯ç¾åœ¨ä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã›ã‚“。<P></A>
+
+
+<A NAME="1244534">&nbsp;
+</A>
+<A NAME="l">
+<H3> l</H3>
+</A>
+
+
+
+<A NAME="1244535">
+エントリãŒå­˜åœ¨ã—ã¦ã„ã‚‹ã€ã¾ãŸã¯ã‚¨ãƒ³ãƒˆãƒªãŒä½•ã‚‰ã‹ã®æ–¹æ³•ã§é–¢ä¿‚ã™ã‚‹å›½ã€éƒ½å¸‚ã€ãã®ä»–ã®åœ°ç†çš„領域を示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1244536">
+<PRE> localityName: Santa Clara
+</PRE>
+</A>
+
+<A NAME="1244537">
+ã¾ãŸã¯ã€<P></A>
+<A NAME="1244538">
+<PRE> l: Santa Clara
+</PRE>
+</A>
+
+<A NAME="1244540">
+<a href="attribut.htm#">ç•¥å·</a>: l<P></A>
+
+<A NAME="1244542">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1202020">&nbsp;
+</A>
+<A NAME="labeledUri">
+<H3> labeledUri</H3>
+</A>
+
+
+
+<A NAME="1202021">
+何らã‹ã®æ–¹æ³•ã§ã‚¨ãƒ³ãƒˆãƒªã«é–¢ä¿‚ã™ã‚‹ã€Uniform Resource Identifier (URI)を示ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã®å…¥åŠ›å€¤ã¯ã€URIã¨(ç¾åœ¨ã¯URLã«é™ã‚Šã‚µãƒãƒ¼ãƒˆ)ã€ã‚ªãƒ—ションã¨ã—ã¦ã€å¾Œç¶šã™ã‚‹ä¸€ã¤ä»¥ä¸Šã®ã‚¹ãƒšãƒ¼ã‚¹æ–‡å­—ã¨ãƒ©ãƒ™ãƒ«ä¸€ã¤ã‹ã‚‰æ§‹æˆã•ã‚Œãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。例:<P></A>
+<A NAME="1202022">
+<PRE> labeledURI: http://home.netscape.com [Netscape社ã®ãƒ›ãƒ¼ãƒ ãƒšãƒ¼ã‚¸<br>
+ ]
+</PRE>
+</A>
+
+<A NAME="1202024">
+構文: <a href="attribut.htm#1004701">ces</a><P></A>
+
+
+<A NAME="1100733">&nbsp;
+</A>
+<A NAME="lastModifiedBy">
+<H3> lastModifiedBy</H3>
+</A>
+
+
+
+<A NAME="1212108">
+関連エントリã®æœ€çµ‚変更者ã®è­˜åˆ¥åを示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1202030">
+<PRE> lastModifiedby: <I>cn=Jane Doe, ou=Quality Control, o=Airius.com
+</I></PRE>
+</A>
+
+<A NAME="1100642">
+構文: <a href="attribut.htm#1100403">dn</a><P></A>
+
+
+<A NAME="1202035">&nbsp;
+</A>
+<A NAME="lastModifiedTime">
+<H3> lastModifiedTime</H3>
+</A>
+
+
+
+<A NAME="1202036">
+エントリãŒå¤‰æ›´ã•ã‚ŒãŸæœ€çµ‚時刻をUTCå½¢å¼ã§å®šç¾©ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1202037">
+<PRE> lastModifiedTime: Thursday, 22-Sep-93 14:15:00 GMT
+</PRE>
+</A>
+
+<A NAME="1202039">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1243273">&nbsp;
+</A>
+<A NAME="ldap構文es">
+<H3> ldap構文es</H3>
+</A>
+
+
+
+<A NAME="1243274">
+未定義。<P></A>
+
+<A NAME="1243277">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1189404">&nbsp;
+</A>
+<A NAME="mail">
+<H3> mail</H3>
+</A>
+
+
+
+<A NAME="1189405">
+エントリã®é›»å­ãƒ¡ãƒ¼ãƒ« アドレスを示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1189406">
+<PRE> mail: banderson@airius.com
+</PRE>
+</A>
+
+<A NAME="1189408">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1024020">&nbsp;
+</A>
+<A NAME="mailAccessDomain">
+<H3>mailAccessDomain</H3>
+</A>
+
+
+
+<A NAME="1024021">
+ユーザãŒPOP/IMAPログオンを実行ã™ã‚‹ãƒ‰ãƒ¡ã‚¤ãƒ³ã¾ãŸã¯IPアドレスを識別ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Messaging ServerãŒä½¿ç”¨ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1024022">
+<PRE><A NAME="1024022">
+ mailAccessDomain: airius.com
+</A>
+</PRE>
+<A NAME="1024248">
+OID: <code>2.16.840.1.113730.3.1.12</code><P></A>
+
+<A NAME="1269362">
+構文:<a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1024250">
+<A NAME="mailAlternateAddress">
+<B>mailAlternateAddress</B>
+</a></a>
+<P>
+
+
+<A NAME="1024251">
+メール ユーザã®ä»£æ›¿ãƒ¡ãƒ¼ãƒ« アドレスを識別ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€ãƒ¡ãƒ¼ãƒ« アドレスã¨ãƒ¦ãƒ¼ã‚¶ã‚’ç…§åˆã™ã‚‹ãŸã‚ã«Messaging ServerãŒä½¿ç”¨ã—ã¾ã™ã€‚メール アカウントã¯ã“ã®å±žæ€§ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ä»£æ›¿ãƒ¡ãƒ¼ãƒ« アドレスã¨åŒæ•°æŒã¤ã“ã¨ãŒã§ãã¾ã™ã€‚例:<P></A>
+<A NAME="1024061">
+<PRE><A NAME="1024061">
+ mailAlternateAddress: Babs_Jensen@airius.com<br> mailAlternateAddress: Bjensen@airius.com
+</A>
+</PRE>
+<A NAME="1269367">
+OID: <code>2.16.840.1.113730.3.1.13</code><P></A>
+
+<A NAME="1269365">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1024094">
+<A NAME="mailAutoReplyMode">
+<B>mailAutoReplyMode</B>
+</a></a>
+<P>
+
+
+<A NAME="1027423">
+メール ユーザã®ãƒ¡ãƒ¼ãƒ«è‡ªå‹•å¿œç­”モードを識別ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Messaging ServerãŒä½¿ç”¨ã—ã¾ã™ã€‚å„メール ユーザ アカウントã«ã¤ãã€ã“ã®å±žæ€§ãŒã‚¼ãƒ­ã¾ãŸã¯1 (0〜1)インスタンス必è¦ã§ã™ã€‚ã“ã®å±žæ€§ã®æœ‰åŠ¹ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã¯ã€æ¬¡ã®ã¨ãŠã‚Šã§ã™ã€‚<P></A>
+<ul><A NAME="1027425">
+<LI>vacation -- 休暇メッセージをé€ä¿¡ã—ã¾ã™ã€‚休暇メッセージã¯mailAutoReplyText属性ã«å«ã¾ã‚Œã¦ã„ã¾ã™ã€‚<BR>
+</A>
+<A NAME="1027426">
+<LI>reply --一定ã®å¿œç­”ã‚’é€ä¿¡ã—ã¾ã™ã€‚応答ã¯mailAutoReplyText属性ã«å«ã¾ã‚Œã¦ã„ã¾ã™ã€‚<BR>
+</A>
+<A NAME="1027427">
+<LI>echo -- å…ƒã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’エコーã—ã¦ã€ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®å…ƒã®é€ä¿¡è€…ã«mailAutoReplyTextã‚’é€ä¿¡ã—ã¾ã™ã€‚<BR>
+</A>
+</ul>
+<A NAME="1027428">
+例:<P></A>
+<PRE><A NAME="1027429">
+ mailAutoReplyMode: vacation
+</A>
+</PRE>
+<A NAME="1269369">
+OID: <code>2.16.840.1.113730.3.1.14</code><P></A>
+
+<A NAME="1024098">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1024125">
+<A NAME="mailAutoReplyText">
+<B>mailAutoReplyText</B>
+</a></a>
+<P>
+
+
+<A NAME="1027662">
+メール ユーザã«è‡ªå‹•å¿œç­”テキストをæä¾›ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Messaging ServerãŒä½¿ç”¨ã—ã¾ã™ã€‚LDIFå½¢å¼ã§è¡¨ã‚ã™å ´åˆã€å„行をドル記å·($)ã§åŒºåˆ‡ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚Messaging Serverã§ã¯ã€å„メール アカウントã«ã¤ãã“ã®å±žæ€§ãŒ0ã¾ãŸã¯1回発生ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ 例:<P></A>
+<PRE><A NAME="1027663">
+ mailAutoReplyText: 休暇中$月曜日ã«æˆ»ã‚Šã¾ã™ã€‚
+</A>
+</PRE>
+<A NAME="1034577">
+テキスト内ã§ã®åŒºåˆ‡ã‚Šã¨ã—ã¦ã§ã¯ãªãã€å®Ÿéš›ã®ãƒ‰ãƒ«è¨˜å·($)ã¾ãŸã¯ãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥(\)を示ã™ã«ã¯ã€ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—ã•ã‚ŒãŸ16進値\24㨠\5cを使用ã—ã¾ã™ã€‚例ãˆã°ã€æ¬¡ã®ã‚ˆã†ãªæ–‡å­—列を示ã™å ´åˆã€<P></A>
+<A NAME="1034578">
+<PRE> The dollar ($) value can be found <br>
+ in the c:\cost file.
+</PRE>
+</A>
+
+<A NAME="1034579">
+次ã®ã‚ˆã†ã«ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—文字を使用ã—ã¾ã™ã€‚<P></A>
+<A NAME="1034580">
+<PRE> The dollar (\24) value can be found$in the c:\5ccost file.
+</PRE>
+</A>
+<A NAME="1269558">
+OID: <code>2.16.840.1.113730.3.1.15</code><P></A>
+
+<A NAME="1024293">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1024295">
+<A NAME="mailDeliveryOption">
+<B>mailDeliveryOption</B>
+</a></a>
+<P>
+
+
+<A NAME="1024296">
+メール ユーザãŒä½¿ç”¨ã™ã‚‹ãƒ¡ãƒ¼ãƒ«é…信機構を識別ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Messaging ServerãŒä½¿ç”¨ã—ã¾ã™ã€‚å„メール ユーザ アカウントã«ã¤ãã€ã“ã®å±žæ€§ãŒã‚¼ãƒ­ã¾ãŸã¯3(0〜3)インスタンス必è¦ã§ã™ã€‚ãŸã ã—ã€ãƒ¡ãƒ¼ãƒ« ユーザー エントリã«ã“ã®å±žæ€§ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒç„¡ã„å ´åˆã¯ã€æœ€ä½Žä¸€ã¤ã®<a href="attribut.htm#1026154">mailForwardingAddress</a>属性ãŒã‚¨ãƒ³ãƒˆãƒªã«å­˜åœ¨ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。ã“ã®å±žæ€§ã®æœ‰åŠ¹ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã¯æ¬¡ã®ã¨ãŠã‚Šã§ã™ã€‚<P></A>
+<ul><A NAME="1027169">
+<LI>mailbox --ユーザã®POP/IMAPメールボックスã«ãƒ¡ãƒ¼ãƒ«ãŒé…ä¿¡ã•ã‚Œã‚‹ã®ã‚’示ã—ã¾ã™ã€‚<P>
+</A>
+<A NAME="1027175">
+<LI>native -- Unixé…ä¿¡ãŒä½¿ç”¨ã•ã‚Œã¦ã„ã‚‹ã®ã‚’示ã—ã¾ã™ã€‚Unixホストã§å®Ÿè¡Œã•ã‚Œã¦ã„ã‚‹Messaging Serversã«é™ã‚Šã“ã®ã‚ªãƒ—ションを利用ã§ãã¾ã™ã€‚<P>
+</A>
+<A NAME="1027197">
+<LI>program -- プログラムé…ä¿¡ãŒä½¿ç”¨ã•ã‚Œã¦ã„ã‚‹ã®ã‚’示ã—ã¾ã™ã€‚Unixホストã§å®Ÿè¡Œã•ã‚Œã¦ã„ã‚‹Messaging Serversã«é™ã‚Šã“ã®ã‚ªãƒ—ションを利用ã§ãã¾ã™ã€‚<P>
+</A>
+</ul>
+<A NAME="1027143">
+例:<P></A>
+<PRE><A NAME="1024297">
+ mailDeliveryOption: mailbox
+</A>
+</PRE>
+<A NAME="1269568">
+OID: <code>2.16.840.1.113730.3.1.16</code><P></A>
+
+<A NAME="1024169">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1026103">
+<A NAME="mailEnhancedUniqueMember">
+<B>mailEnhancedUniqueMember</B>
+</a></a>
+<P>
+
+
+<A NAME="1026104">
+Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Messaging ServerãŒä½¿ç”¨ã—ã¾ã™ã€‚å°†æ¥ã®ä½¿ç”¨ã®ãŸã‚予約。<P></A>
+
+<A NAME="1026153">
+OID: <code>2.16.840.1.113730.3.1.31</code><P></A>
+
+<A NAME="1278474">
+構文: <a href="attribut.htm#1100403">dn</a><P></A>
+<P>
+<A NAME="1026154">
+<A NAME="mailForwardingAddress">
+<B>mailForwardingAddress</B>
+</a></a>
+<P>
+
+
+<A NAME="1024197">
+メールãŒè»¢é€ã•ã‚Œã‚‹ãƒ¡ãƒ¼ãƒ« アドレスを識別ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Messaging ServerãŒä½¿ç”¨ã—ã¦ã€æ­£ã—ã„場所ã«ç€ä¿¡ãƒ¡ãƒ¼ãƒ«ã‚’転é€ã—ã¾ã™ã€‚例:<P></A>
+<PRE><A NAME="1024198">
+ mailForwardingAddress: bjensen@royalairways.com
+</A>
+</PRE>
+<A NAME="1269579">
+OID: <code>2.16.840.1.113730.3.1.17</code><P></A>
+
+<A NAME="1024200">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1024314">
+<A NAME="mailHost">
+<B>mailHost</B>
+</a></a>
+<P>
+
+
+<A NAME="1308000">
+ユーザã®ãƒ¡ãƒ¼ãƒ« アカウントãŒå­˜åœ¨ã™ã‚‹ãƒ›ã‚¹ãƒˆã®DNSホストåを識別ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Messaging ServerãŒä½¿ç”¨ã—ã¦ã€æ­£ã—ã„場所ã«ç€ä¿¡ãƒ¡ãƒ¼ãƒ«ã‚’ルートã—ã¾ã™ã€‚Messaging Serverã§ã¯ã€å„<a href="attribut.htm#">mail</a>Recipientエントリã«ã¤ãã“ã®å±žæ€§ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒå¿…ãšä¸€ã¤ã ã‘ã€å„<a href="attribut.htm#">mailGroup</a>エントリã«ã¤ãã“ã®å±žæ€§ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒã‚¼ãƒ­ã¾ãŸã¯ä¸€ã¤å¿…è¦ã§ã™ã€‚ã“ã®å±žæ€§ã®æŒ‡å®šå€¤ã¯ã€ãƒ›ã‚¹ãƒˆã®å®Œå…¨ä¿®é£¾ãƒ‰ãƒ¡ã‚¤ãƒ³åã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。例:<P></A>
+<PRE><A NAME="1024316">
+ mailHost: mars.airius.com
+</A>
+</PRE>
+<A NAME="1269581">
+OID: <code>2.16.840.1.113730.3.1.18</code><P></A>
+
+<A NAME="1024318">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1024377">
+<A NAME="mailMessageStore">
+<B>mailMessageStore</B>
+</a></a>
+<P>
+
+
+<A NAME="1024378">
+ユーザã®ãƒ¡ãƒ¼ãƒ« ホスト上ã§ã€ãƒ¦ãƒ¼ã‚¶ã®ãƒ¡ãƒ¼ãƒ« ボックスãŒå­˜åœ¨ã™ã‚‹å ´æ‰€ã¸ã®çµ¶å¯¾ãƒ‘スを識別ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯Messaging ServerãŒä½¿ç”¨ã™ã‚‹Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®<a href="attribut.htm#1024295"> mailDeliveryOption</a>ãŒ<I>mailbox</I>ã«è¨­å®šã•ã‚Œã¦ã„ã‚‹å ´åˆã«é™ã‚Šã“ã®å±žæ€§ã‚’é©ç”¨ã§ãã¾ã™ã€‚Messaging Serverã§ã¯ã€ã“ã®å±žæ€§ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒã‚¼ãƒ­ã¾ãŸã¯ä¸€ã¤ (0〜1)å¿…è¦ã§ã™ã€‚ユーザー エントリã«ã“ã®å±žæ€§ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒå­˜åœ¨ã—ãªã„å ´åˆã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®Messaging Serverã§è¨­å®šã•ã‚Œã¦ã„るデフォルトãŒä½¿ç”¨ã•ã‚Œã¾ã™ã€‚例:<P></A>
+<PRE><A NAME="1024379">
+ mailMessageStore: /disk2/mail
+</A>
+</PRE>
+<A NAME="1269614">
+OID: <code>2.16.840.1.113730.3.1.19</code><P></A>
+
+<A NAME="1090714">
+構文: <a href="attribut.htm#1004701">ces</a><P></A>
+
+
+<A NAME="1202044">&nbsp;
+</A>
+<A NAME="mailPreferenceOption">
+<H3> mailPreferenceOption</H3>
+</A>
+
+
+
+<A NAME="1213101">
+メール リスト (é›»å­ã¾ãŸã¯ç‰©ç†çš„)ã«ãƒ¦ãƒ¼ã‚¶ãƒ¼åã‚’å«ã‚ã‚‹ã‹ã©ã†ã‹ã®ç’°å¢ƒè¨­å®šã‚’示ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã®3ã¤ã®è¨±å®¹å€¤ã¯<code>0</code>ã€<code>1</code>ã€ãŠã‚ˆã³<code>2</code>ã§ã™ã€‚<code>0</code>ã®å€¤ã¯ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒãƒ¡ãƒ¼ãƒ« リストã¸ã®è¿½åŠ ã‚’希望ã—ãªã„ã“ã¨ã€<code>1</code>ã®å€¤ã¯ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒä»»æ„ã®ãƒ¡ãƒ¼ãƒ« リストã¸ã®è¿½åŠ ã«åŒæ„ã™ã‚‹ã“ã¨ã€<code>2</code>ã®å€¤ã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®å°‚門的ãªé–¢å¿ƒäº‹ã§ã‚ã‚‹ã¨ãƒ¡ãƒ¼ãƒ« リストæ供者ãŒè¦‹ãªã™ã‚ˆã†ãªãƒ¡ãƒ¼ãƒ« リストã«ã®ã¿ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’追加ã™ã‚‹ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚属性値ã®æŒ‡å®šãŒãªã„å ´åˆã¯ã€å±žæ€§ã®å€¤ãŒ "no-list-inclusion" (リストã«å«ã¾ãªã„)ã§ã‚ã¨è§£é‡ˆã•ã‚Œã¾ã™ã€‚ã“ã®å±žæ€§ã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ãŠã„ã¦ãƒ¡ãƒ¼ãƒ« リストãŠã‚ˆã³ãã®ç’°å¢ƒè¨­å®šå€¤ã‚’å–り出ã™ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ã™ã¹ã¦ãŒè§£é‡ˆã§ãã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚例:<P></A>
+<A NAME="1202046">
+<PRE> mailPreferenceOption: 0
+</PRE>
+</A>
+
+<A NAME="1202048">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1024400">&nbsp;
+</A>
+<A NAME="mailProgramDeliveryInfo">
+<H3>mailProgramDeliveryInfo</H3>
+</A>
+
+
+
+<A NAME="1024401">
+プログラムã«ã‚ˆã‚‹ãƒ¡ãƒ¼ãƒ«é…ä¿¡ã§ä½¿ç”¨ã™ã‚‹ã€$ã§åŒºåˆ‡ã‚‰ã‚ŒãŸä¸€ã¤ä»¥ä¸Šã®ã‚³ãƒžãƒ³ãƒ‰ã‚’識別ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Messaging ServerãŒä½¿ç”¨ã—ã¾ã™ã€‚Messaging Serverã§ã¯ã€å„ユーザー アカウントã«ã¤ãã“ã®å±žæ€§ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒã‚¼ãƒ­ã¾ãŸã¯ä¸€ã¤ (0〜1)å¿…è¦ã§ã™ã€‚次ã®æ¡ä»¶ãŒã™ã¹ã¦çœŸã§ã‚ã‚‹å ´åˆã«é™ã‚Šã€ã“ã®å±žæ€§ã«ã¯æ„味ãŒã‚ã‚Šã¾ã™ã€‚<P></A>
+<ul><A NAME="1033350">
+<LI>Messaging ServerãŒUNIXã§å®Ÿè¡Œã•ã‚Œã¦ã„ã‚‹<P>
+</A>
+<A NAME="1033365">
+<LI>メール管ç†è€…ãŒã€Messaging Serverã§ãƒ—ログラムé…信を使用å¯èƒ½ã«ã—ã¦ã„ã‚‹<P>
+</A>
+<A NAME="1033405">
+<LI>ユーザã®<a href="attribut.htm#1024295">mailDeliveryOption</a>ãŒ<B> </B><I>program</I>ã«è¨­å®šã•ã‚Œã¦ã„ã‚‹<P>
+</A>
+</ul>
+<A NAME="1039005">
+例:<P></A>
+<PRE><A NAME="1024402">
+ mailProgramDeliveryInfo: /usr/local/bin/procmail -f-
+</A>
+</PRE>
+<A NAME="1269616">
+OID: <code>2.16.840.1.113730.3.1.20</code><P></A>
+
+<A NAME="1024440">
+<A NAME="1024440">
+構文: <a href="attribut.htm#1004701">ces</a><P></A>
+<P>
+<A NAME="1024509">
+<A NAME="mailQuota">
+<B>mailQuota</B>
+</a></a>
+<P>
+
+
+<A NAME="1024510">
+ユーザã®ãƒ¡ãƒ¼ãƒ«ãƒœãƒƒã‚¯ã‚¹ãŒä½¿ç”¨å¯èƒ½ãªæœ€å¤§ãƒ‡ã‚£ã‚¹ã‚¯å®¹é‡ã‚’ãƒã‚¤ãƒˆæ•°ã§è¡¨ç¤ºã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Messaging ServerãŒä½¿ç”¨ã—ã€ãƒ¦ãƒ¼ã‚¶ã®<a href="attribut.htm#1024295">mailDeliveryOption</a>ãŒ<I>mailbox</I>ã«è¨­å®šã•ã‚Œã¦ã„ã‚‹å ´åˆã«é™ã‚Šã“ã®å±žæ€§ã‚’é©ç”¨ã§ãã¾ã™ã€‚Messaging Serverã§ã¯ã€ã“ã®å±žæ€§ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒã‚¼ãƒ­ã¾ãŸã¯ä¸€ã¤ (0〜1)å¿…è¦ã§ã™ã€‚ユーザ エントリã«ã“ã®å±žæ€§ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒå­˜åœ¨ã—ãªã„å ´åˆã¯ã€ãƒ¦ãƒ¼ã‚¶ã®Messaging Serverã§è¨­å®šã•ã‚Œã¦ã„るデフォルトãŒä½¿ç”¨ã•ã‚Œã¾ã™ã€‚例:<P></A>
+<PRE><A NAME="1024511">
+ mailQuota: 1000000
+</A>
+</PRE>
+<A NAME="1024513">
+ã“ã®å±žæ€§ãŒã‚¼ãƒ­ã«è¨­å®šã•ã‚Œã¦ã„ã‚‹å ´åˆã¯ã€ãƒ‡ã‚£ã‚¹ã‚¯å®¹é‡ã®å‰²å½“ã¦ãŒç„¡åˆ¶é™ã§ã‚ã‚‹ã®ã«æ³¨æ„ã—ã¦ãã ã•ã„。<P></A>
+
+<A NAME="1269588">
+OID: <code>2.16.840.1.113730.3.1.21</code><P></A>
+
+<A NAME="1033421">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1241537">
+<A NAME="mailRoutingAddress">
+<B>mailRoutingAddress</B>
+</a></a>
+<P>
+
+
+<A NAME="1241538">
+未定義。 <P></A>
+
+<A NAME="1241541">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1007859">&nbsp;
+</A>
+<A NAME="manager">
+<H3> manager</H3>
+</A>
+
+
+
+<A NAME="1007872">
+エントリã®ä¸Šå¸ã®è­˜åˆ¥åを示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1007875">
+<PRE> manager:<I> cn=Jane Doe, ou=Quality Control, o=Airius.com
+</I></PRE>
+</A>
+
+<A NAME="1007908">
+構文: <a href="attribut.htm#1100403">dn</a><P></A>
+
+
+<A NAME="1242887">&nbsp;
+</A>
+<A NAME="matchingRules">
+<H3> matchingRules</H3>
+</A>
+
+
+
+<A NAME="1242888">
+未定義。<P></A>
+
+<A NAME="1242891">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1242961">&nbsp;
+</A>
+<A NAME="matchingRuleUse">
+<H3> matchingRuleUse</H3>
+</A>
+
+
+
+<A NAME="1242962">
+未定義。<P></A>
+
+<A NAME="1242965">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1171811">&nbsp;
+</A>
+<A NAME="member">
+<H3> member</H3>
+</A>
+
+
+
+<A NAME="1171812">
+グループã®å„メンãƒãƒ¼ã®è­˜åˆ¥åを示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1171813">
+<PRE> member: <I>cn=John Doe, o=airius.com
+</I></PRE>
+</A>
+
+<A NAME="1171815">
+構文: <a href="attribut.htm#1100403">dn</a><P></A>
+
+
+<A NAME="1152959">&nbsp;
+</A>
+<A NAME="memberCertificateDescription">
+<H3> memberCertificateDescription</H3>
+</A>
+
+
+
+<A NAME="1152961">
+特定グループã®è¨¼æ˜Žæ›¸ã«ãŠã‘る証明書ã®ç‰¹å¾´ã‚’示ã—ã¾ã™ã€‚memberCertificateDescriptionã®å€¤ã®ä¸€ã¤ã«ä¸€è‡´ã™ã‚‹ä¸»é¡Œè­˜åˆ¥åãŒè¨¼æ˜Žæ›¸ã«å«ã¾ã‚Œã‚‹å ´åˆã€ãã‚Œã¯ã€ã“ã®å±žæ€§ãŒå±žã™ã‚‹è¨¼æ˜Žæ›¸ã‚°ãƒ«ãƒ¼ãƒ—ã®ãƒ¡ãƒ³ãƒãƒ¼ã§ã‚ã‚‹ã¨è¦‹ãªã•ã‚Œã¾ã™ã€‚<P></A>
+<A NAME="1153378">
+<PRE> {<I>subject_dn</I>}
+</PRE>
+</A>
+
+<A NAME="1153395">
+カンマã§åŒºåˆ‡ã‚‹ã¨è¤‡æ•°ã®ä¸»é¡Œdnを指定ã§ãã¾ã™ã€‚エントリã«ãŠã„ã¦è¤‡æ•°ã®<code>ou</code>を指定ã§ãã¾ã™ã€‚(<code>ou</code>ã§ãªã„)ä»–ã®å±žæ€§ã‚¿ã‚¤ãƒ—ã®è¤‡æ•°ã‚¨ãƒ³ãƒˆãƒªã‚’指定ã™ã‚‹å ´åˆã€æœ€å¾Œã‚’除ãã™ã¹ã¦ãŒç„¡è¦–ã•ã‚Œã¾ã™ã€‚<P></A>
+
+<A NAME="1154677">
+例ãˆã°ã€æ¬¡ã®memberCertificateDescriptionã‚’æŒã¤ã‚°ãƒ«ãƒ¼ãƒ—ã®ãƒ¡ãƒ³ãƒãƒ¼ã‚’考慮ã™ã‚‹ã«ã¯ã€è¨¼æ˜Žæ›¸ã«ã¯<code>o=company</code>を除ãã€<code>ou=x</code>ã€<code>ou=A</code>ã€ãŠã‚ˆã³<code>o=airius</code>ã‚’å«ã‚ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚<P></A>
+<A NAME="1126332">
+<PRE> memberCertificateDescription: {<I>ou=x, ou=A, o=company, o=airius</I>}
+</PRE>
+</A>
+
+<A NAME="1154571">
+グループã®è¦ä»¶ãŒæº€ãŸã•ã‚Œã‚‹ã«ã¯ã€è¨¼æ˜Žæ›¸ã®ä¸»é¡Œdnã«ã€memberCertificateDescriptionã®å±žæ€§ã§å®šç¾©ã•ã‚Œã¦ã„ã‚‹ã®ã¨åŒã˜é †åºã§ouã®å±žæ€§ã‚¿ã‚¤ãƒ—ãŒå«ã¾ã‚Œã¦ã„ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚<P></A>
+
+<A NAME="1153423">
+構文: <a href="attribut.htm#1004701">ces</a><P></A>
+
+
+<A NAME="1246271">&nbsp;
+</A>
+<A NAME="memberURL">
+<H3> memberURL</H3>
+</A>
+
+
+
+<A NAME="1246272">
+グループã®å„メンãƒãƒ¼ã«é–¢ä¿‚ã™ã‚‹URLを示ã—ã¾ã™ã€‚例:<P></A>
+<PRE><A NAME="1246273">
+ memberURL: ldap://<I>cn=jdoe, o=Airius.com</I>
+</A>
+</PRE>
+<A NAME="1263332">
+OID: <code>2.16.840.1.113730.3.1.198</code><P></A>
+
+
+<A NAME="1025144">&nbsp;
+</A>
+<A NAME="mgrpAllowedBroadcaster">
+<H3>mgrpAllowedBroadcaster</H3>
+</A>
+
+
+
+<A NAME="1025146">
+メール グループã¸ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸é€ä¿¡ã‚’許ã•ã‚Œã¦ã„るメール ユーザを識別ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Messaging ServerãŒä½¿ç”¨ã—ã¦ã€ãƒ¡ãƒ¼ãƒ« リストを管ç†ã—ã¾ã™ã€‚mailGroupエントリã«ã“ã®å±žæ€§ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒå­˜åœ¨ã—ãªã„å ´åˆã¯ã€mgrpAllowedDomain属性を使用ã—ãªã„é™ã‚Šã€ãƒ¡ãƒ¼ãƒ« グループã«ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’é€ä¿¡ã§ãるユーザã®åˆ¶é™ã¯ä¸€åˆ‡ã‚ã‚Šã¾ã›ã‚“。<P></A>
+
+<A NAME="1028370">
+Messaging Serverã§ã¯ã€è­˜åˆ¥åã¾ãŸã¯rfc822addressã®ã„ãšã‚Œã‹ã‚’å«ã‚€å±žæ€§ãŒå¿…è¦ã§ã™ã€‚識別åを使用ã™ã‚‹å ´åˆã¯ã€ãƒ¡ãƒ¼ãƒ«å¯èƒ½ãªã‚¨ãƒ³ãƒˆãƒªã€ã‚¿ã‚¤ãƒ—groupã®ã‚¨ãƒ³ãƒˆãƒªã€ã¾ãŸã¯groupOfUniqueNamesを識別åãŒè¡¨ç¤ºã—ã¦ã„ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。識別åã¯ã€RFC1959ã®<em>LDAP URLフォーマット</em>ã§è¨˜è¿°ã•ã‚Œã¦ã„るよã†ã«ã€LDAP URLフォーマットã§è¡¨ç¤ºã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚<P></A>
+
+<A NAME="1028354">
+例:<P></A>
+<PRE><A NAME="1025147">
+ mgrpAllowedBroadcaster: ldap://<I>uid=bjensen, o=Airius.com<br></I> mgrpAllowedBroadcaster: mailto:sys50@airius.com
+</A>
+</PRE>
+<A NAME="1277878">
+OID: <code>2.16.840.1.113730.3.1.22</code><P></A>
+
+<A NAME="1025149">
+構文: <a href="attribut.htm#1004701">ces</a><P></A>
+<P>
+<A NAME="1024569">
+<A NAME="mgrpAllowedDomain">
+<B>mgrpAllowedDomain</B>
+</a></a>
+<P>
+
+
+<A NAME="1024570">
+ユーザãŒãƒ¡ãƒ¼ãƒ« グループã¸ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸é€ä¿¡ã‚’許ã•ã‚Œã¦ã„ã‚‹é€ä¿¡å…ƒãƒ‰ãƒ¡ã‚¤ãƒ³ã‚’識別ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Messaging ServerãŒä½¿ç”¨ã—ã¦ã€ãƒ¡ãƒ¼ãƒ« リストを管ç†ã—ã¾ã™ã€‚mailGroupエントリã«ã“ã®å±žæ€§ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒå­˜åœ¨ã—ãªã„å ´åˆã¯ã€mgrpAllowedBroadcaster属性を使用ã—ãªã„é™ã‚Šã€ãƒ¡ãƒ¼ãƒ« グループã«ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’é€ä¿¡ã§ãるユーザーã®åˆ¶é™ã¯ä¸€åˆ‡ã‚ã‚Šã¾ã›ã‚“。 <P></A>
+
+<A NAME="1028614">
+ã“ã‚Œã¯ã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§ãƒ¯ã‚¤ãƒ«ãƒ‰ã‚«ãƒ¼ãƒ‰å€¤ã«è¨­å®šã•ã‚Œã¾ã™ã€‚ã¤ã¾ã‚Šã€å€¤ "airius.com"ã¯"*.airius.com"ã‹ã‚‰é€ä¿¡ã—ã¦ã„ã‚‹ã™ã¹ã¦ã®ãƒ¦ãƒ¼ã‚¶ã¨ç…§åˆã—ã¾ã™ã€‚<P></A>
+
+<A NAME="1028598">
+例:<P></A>
+<PRE><A NAME="1024571">
+ mgrpAllowedDomain: airius.com
+</A>
+</PRE>
+<A NAME="1277883">
+OID: <code>2.16.840.1.113730.3.1.23</code><P></A>
+<A NAME="1278549">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1278551">
+<A NAME="mgrpDeliverTo">
+<B>mgrpDeliverTo</B>
+</a></a>
+<P>
+
+
+<A NAME="1278552">
+メール グループã®ãƒ¡ãƒ³ãƒãƒ¼ã‚·ãƒƒãƒ—を指定ã™ã‚‹ä»£æ›¿æ–¹æ³•ã€‚ã“ã®å±žæ€§ã¯Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Messaging ServerãŒä½¿ç”¨ã—ã¦ã€ãƒ¡ãƒ¼ãƒ« リストを管ç†ã—ã¾ã™ã€‚Messaging Serverã§ã¯ã€ã“ã®å±žæ€§ãŒRFC1959ã®<em>LDAP URLフォーマット</em>ã§è¨˜è¿°ã•ã‚Œã¦ã„るフォーマットを使用ã—ãŸLDAP URLã‚’å«ã‚“ã§ã„ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚LDAP検索ãŒè¿”ã—ã¦ãるエントリã¯ã€ã“ã®ãƒ¡ãƒ¼ãƒ« グループã®ãƒ¡ãƒ³ãƒãƒ¼ã§ã™ã€‚例:<P></A>
+<PRE><A NAME="1025433">
+ mgrpDeliverTo: ldap:///<I>ou=Accounting,o=Netscape,c=US??sub?(&amp;<br> (objectClass=mailRecipient)(objectClass=inetOrgPerson))</I>
+</A>
+</PRE>
+<A NAME="1277885">
+OID: <code>2.16.840.1.113730.3.1.25</code><P></A>
+
+<A NAME="1025435">
+構文: <a href="attribut.htm#1004701">ces</a><P></A>
+<P>
+<A NAME="1025568">
+<A NAME="mgrpErrorsTo">
+<B>mgrpErrorsTo</B>
+</a></a>
+<P>
+
+
+<A NAME="1028828">
+è·³ã­è¿”ã•ã‚ŒãŸãƒ¡ãƒ¼ãƒ«ã‚„ã€ãƒ¡ãƒ¼ãƒ« アドレスã®ãªã„メール グループã®ãƒ¡ãƒ³ãƒãƒ¼ãªã©ã€ãƒ¡ãƒ¼ãƒ«é…信上ã®å•é¡Œã‚’通知ã™ã‚‹ã‚¨ãƒ©ãƒ¼ メッセージã®é€ä¿¡ãƒ¡ãƒ¼ãƒ« アドレスを識別ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Messaging ServerãŒä½¿ç”¨ã—ã¦ã€ãƒ¡ãƒ¼ãƒ« リストを管ç†ã—ã¾ã™ã€‚mailGroupエントリã«ã“ã®å±žæ€§ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒå­˜åœ¨ã—ãªã„å ´åˆã¯ã€Messaging Serverã§è¨­å®šã•ã‚Œã¦ã„るデフォルトã«åŸºã¥ã„ã¦ã‚¨ãƒ©ãƒ¼å‡¦ç†ãŒè¡Œã‚ã‚Œã¾ã™ã€‚ <P></A>
+
+<A NAME="1028829">
+Messaging Serverã§ã¯ã€è­˜åˆ¥åã¾ãŸã¯rfc822addressã®ã„ãšã‚Œã‹ã‚’å«ã‚€å±žæ€§ãŒå¿…è¦ã§ã™ã€‚識別åを使用ã™ã‚‹å ´åˆã¯ã€ãƒ¡ãƒ¼ãƒ«å¯èƒ½ãªã‚¨ãƒ³ãƒˆãƒªã€ã‚¿ã‚¤ãƒ—groupã®ã‚¨ãƒ³ãƒˆãƒªã€ã¾ãŸã¯groupOfUniqueNamesを表示ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚識別åã¯ã€RFC1959ã®<em>LDAP URLフォーマット</em>ã§è¨˜è¿°ã•ã‚Œã¦ã„るよã†ã«LDAP URLフォーマットã§è¡¨ç¤ºã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。<P></A>
+
+<A NAME="1126241">
+例:<P></A>
+<PRE><A NAME="1126242">
+ mgrpErrorsTo: ldap://<I>uid=bjensen, o=Airius.com<br></I> mgrpErrorsTo: mailto:sys50@airius.com
+</A>
+</PRE>
+<A NAME="1277947">
+OID: <code>2.16.840.1.113730.3.1.26</code><P></A>
+
+<A NAME="1025572">
+構文: <a href="attribut.htm#1004701">ces</a><P></A>
+<P>
+<A NAME="1025705">
+<A NAME="mgrpModerator">
+<B>mgrpModerator</B>
+</a></a>
+<P>
+
+
+<A NAME="1025706">
+æ‹’å¦ã•ã‚ŒãŸãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®é€ä¿¡å…ˆãƒ¡ãƒ¼ãƒ« アドレスを識別ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Messaging ServerãŒä½¿ç”¨ã—ã¦ã€ãƒ¡ãƒ¼ãƒ« リストを管ç†ã—ã¾ã™ã€‚ã“ã‚Œã¯ã€æ‹’å¦ã•ã‚ŒãŸãƒ¡ãƒ¼ãƒ«ãŒé€ã‚‰ã‚ŒãŸãƒ¡ãƒ¼ãƒ« リストã‹ã‚‰ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã§ã™ã€‚<P></A>
+
+<A NAME="1029841">
+Messaging Serverã¯ã€ï¼ˆ<a href="attribut.htm#1024569">mgrpAllowedDomain</a>属性ã§å®šç¾©ã•ã‚ŒãŸ) 未許å¯ã®ãƒ‰ãƒ¡ã‚¤ãƒ³ã‹ã‚‰å—ã‘å–ã£ãŸã‹ã€ã¾ãŸã¯<a href="attribut.htm#1025144">mgrpAllowedBroadcaster</a>属性ã®ãƒ¡ãƒ³ãƒãƒ¼ã§ãªã„メール アドレスã‹ã‚‰å—ã‘å–ã£ãŸãƒ¡ãƒ¼ãƒ«ã‚’ã€æ‹’å¦ã™ã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚<a href="attribut.htm#1025035">mgrpMsgRejectAction</a>属性ã«<I>toModerator</I>ãŒå«ã¾ã‚Œã¦ã„ã‚‹å ´åˆã€Messaging Serverã¯ã€ã“ã®å±žæ€§ã§æŒ‡å®šã•ã‚ŒãŸã‚¢ãƒ‰ãƒ¬ã‚¹ã«ã®ã¿ãƒ¡ãƒ¼ãƒ«ã‚’転é€ã—ã¾ã™<B>。</B> mailGroupエントリã«ã“ã®å±žæ€§ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒå­˜åœ¨ã›ãšã€ã•ã‚‰ã«<a href="attribut.htm#1025035">mgrpMsgRejectAction</a>属性ãŒ<I>toModerator</I>, ã«è¨­å®šã•ã‚Œã¦ã„ã‚‹å ´åˆã¯ã€moderatorã«é€ä¿¡ã•ã‚Œã‚‹ã¯ãšã®æ‹’å¦ã•ã‚ŒãŸãƒ¡ãƒ¼ãƒ«ã¯ç ´æ£„ã•ã‚Œã¾ã™ (ã¤ã¾ã‚Šã€äººçš„介入ãªã—ã«ãƒ¡ãƒ¼ãƒ« システムã‹ã‚‰å‰Šé™¤ã•ã‚Œã¾ã™)。<P></A>
+
+Messaging Serverã§ã¯ã€ã“ã®å±žæ€§ãŒè­˜åˆ¥åã¾ãŸã¯rfc822addressã®ã„ãšã‚Œã‹ã‚’å«ã‚€å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚識別åを使用ã™ã‚‹å ´åˆã¯ã€ãƒ¡ãƒ¼ãƒ«å¯èƒ½ãªã‚¨ãƒ³ãƒˆãƒªã€ã‚¿ã‚¤ãƒ—groupã®ã‚¨ãƒ³ãƒˆãƒªã€ã¾ãŸã¯groupOfUniqueNamesを表示ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。識別åã¯ã€RFC1959ã®<em>LDAP URLフォーマット</em>ã§è¨˜è¿°ã•ã‚Œã¦ã„るよã†ã«LDAP URLフォーマットã§è¡¨ç¤ºã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚<P></A>
+
+<A NAME="1029358">
+例:<P></A>
+<PRE><A NAME="1029359">
+ mgrpErrorsTo: ldap://<I>uid=bjensen, o=Airius.com<br></I> mgrpErrorsTo: mailto:sys50@airius.com
+</A>
+</PRE>
+<A NAME="1277952">
+OID: <code>2.16.840.1.113730.3.1.33</code><P></A>
+
+<A NAME="1025876">
+構文: <a href="attribut.htm#1004701">ces</a><P></A>
+<P>
+<A NAME="1025878">
+<A NAME="mgrpMsgMaxSize">
+<B>mgrpMsgMaxSize</B>
+</a></a>
+<P>
+
+
+<A NAME="1025879">
+メール グループã«é€ä¿¡ãŒè¨±å¯ã•ã‚Œã¦ã„る最大メッセージ サイズをãƒã‚¤ãƒˆæ•°ã§è¡¨ç¤ºã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Messaging ServerãŒä½¿ç”¨ã—ã¦ã€ãƒ¡ãƒ¼ãƒ« リストを管ç†ã—ã¾ã™ã€‚Messaging Serverã§ã¯ã€å„everymailGroupエントリã«ã¤ãå¿…ãšä¸€ã¤ã ã‘ã€ã“ã®å±žæ€§ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒå­˜åœ¨ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚例:<P></A>
+<PRE><A NAME="1025290">
+ mgrpMsgMaxSize: 2000
+</A>
+</PRE>
+<A NAME="1277962">
+OID: <code>2.16.840.1.113730.3.1.32</code><P></A>
+
+<A NAME="1025292">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1025035">
+<A NAME="mgrpMsgRejectAction">
+<B>mgrpMsgRejectAction</B>
+</a></a>
+<P>
+
+
+<A NAME="1024634">
+メール グループã«é€ä¿¡ã•ã‚ŒãŸãƒ¡ãƒ¼ãƒ«ãŒæ‹’å¦ã•ã‚ŒãŸéš›ã®å¯¾ç­–を示ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Messaging ServerãŒä½¿ç”¨ã—ã¦ã€ãƒ¡ãƒ¼ãƒ« リストを管ç†ã—ã¾ã™ã€‚<P></A>
+
+<A NAME="1029427">
+Messaging Serverã¯ã€ (<a href="attribut.htm#1024569">mgrpAllowedDomain</a>属性ã§å®šç¾©ã•ã‚ŒãŸ) 未許å¯ã®ãƒ‰ãƒ¡ã‚¤ãƒ³ã‹ã‚‰å—ã‘å–ã£ãŸã‹ã€<a href="attribut.htm#1025144">mgrpAllowedBroadcaster</a>属性ã®ãƒ¡ãƒ³ãƒãƒ¼ã§ãªã„メール アドレスã‹ã‚‰å—ã‘å–ã£ãŸã‹ã€ã¾ãŸã¯<a href="attribut.htm#1025878">mgrpMsgMaxSize</a>ã§è¨±å¯ã•ã‚ŒãŸã‚µã‚¤ã‚ºã‚’越ãˆã‚‹ãƒ¡ãƒ¼ãƒ«ã§ã‚ã‚‹ãŸã‚ã€ãƒ¡ãƒ¼ãƒ«ã‚’æ‹’å¦ã™ã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚<P></A>
+
+<A NAME="1031346">
+Messaging Serverã§ã¯ã€å„mailGroupエントリã«ã¤ãã“ã®å±žæ€§ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒã‚¼ãƒ­ã‹ã‚‰2(0〜2)å¿…è¦ã§ã™ã€‚ãŸã ã—ã€mailGroupエントリã«ã“ã®å±žæ€§ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒã¾ã£ãŸã存在ã—ãªã„å ´åˆã¯ã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®<I>reply</I>ãŒä½¿ç”¨ã•ã‚Œã¾ã™ã€‚ã“ã®å±žæ€§ã®æœ‰åŠ¹ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã¯ã€æ¬¡ã®ã¨ãŠã‚Šã§ã™ã€‚<P></A>
+<ul><A NAME="1029629">
+<LI>reply -- é€ä¿¡è€…ã«å¤±æ•—通知ãŒé€ä¿¡ã•ã‚Œã¾ã™ã€‚失敗通知ã®ãƒ†ã‚­ã‚¹ãƒˆã¯<a href="attribut.htm#1025981">mgrpMsgRejectText </a>属性ã«ä¿å­˜ã•ã‚Œã¾ã™ã€‚<P>
+</A>
+<A NAME="1029638">
+<LI>bounce -- <a href="attribut.htm#1025981">mgrpMsgRejectText</a>属性ã§ä¿å­˜ã•ã‚ŒãŸæ³¨é‡ˆã‚’ä¼´ãªã†ãƒ¡ã‚»ãƒ¼ã‚¸ãŒé€ä¿¡è€…ã«è¿”ã•ã‚Œã¾ã™ã€‚<P>
+</A>
+<A NAME="1029664">
+<LI>toModerator -- 処ç†ã®ãŸã‚メッセージを仲è£è€…ã«è»¢é€ã—ã¾ã™ã€‚仲è£è€…ã¯ã€<a href="attribut.htm#1025705">mgrpModerator</a>属性ã§æŒ‡å®šã•ã‚Œã¾ã™ã€‚<P>
+</A>
+</ul>
+<A NAME="1029617">
+例:<P></A>
+<PRE><A NAME="1024635">
+ mgrpMsgRejectAction: bounce
+</A>
+</PRE>
+<A NAME="1278044">
+OID: <code>2.16.840.1.113730.3.1.28</code><P></A>
+
+<A NAME="1024637">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1025981">
+<A NAME="mgrpMsgRejectText">
+<B>mgrpMsgRejectText</B>
+</a></a>
+<P>
+
+
+<A NAME="1025983">
+メール グループã«é€ä¿¡ã•ã‚ŒãŸãƒ¡ãƒ¼ãƒ«ãŒæ‹’å¦ã•ã‚Œã€ã•ã‚‰ã«ã€mgrpMsgRejectAction属性㌠<I>bounce</I>ã¾ãŸã¯<I>reply</I>ã®ã„ãšã‚Œã‹ã«è¨­å®šã•ã‚Œã¦ã„ã‚‹å ´åˆã«ã€Messaging Serverã«ã‚ˆã£ã¦é€ä¿¡ã•ã‚Œã‚‹ãƒ†ã‚­ã‚¹ãƒˆã‚’表示ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Messaging ServerãŒä½¿ç”¨ã—ã¦ã€ãƒ¡ãƒ¼ãƒ« リストを管ç†ã—ã¾ã™ã€‚<P></A>
+
+<A NAME="1030064">
+Messaging Serverã§ã¯ã€å„mailGroupエントリã«ã¤ãã“ã®å±žæ€§ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒã‚¼ãƒ­ã‹ã‚‰1(0〜1)å¿…è¦ã§ã™ã€‚LDIFå½¢å¼ã§ç¤ºã™å ´åˆã¯ã€$を使用ã—ã¦è¤‡æ•°è¡Œã®ãƒ†ã‚­ã‚¹ãƒˆã‚’区切るã“ã¨ãŒã§ãã¾ã™ã€‚mailGroupエントリã«ã“ã®å±žæ€§ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒã¾ã£ãŸã存在ã—ãªã„å ´åˆã¯ã€Messaging Serverã§è¨­å®šã•ã‚ŒãŸãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®ãƒ†ã‚­ã‚¹ãƒˆãŒã€æ‹’å¦ã•ã‚ŒãŸãƒ¡ãƒ¼ãƒ«ã«å¯¾ã—ã¦ä½¿ç”¨ã•ã‚Œã¾ã™ã€‚<P></A>
+
+<A NAME="1030130">
+例:<P></A>
+<PRE><A NAME="1025984">
+ mgrpMsgRejectText: Crazed Bikersメール リストã«é€ä¿¡ã—ãŸãƒ¡ãƒ¼ãƒ«ã¯$<br> æ‹’å¦ã•ã‚Œã¾ã—ãŸã€‚$ã‚ãªãŸã¯Crazed Bikersグループã®<br> メンãƒãƒ¼ã§ã¯ã‚ã‚Šã¾ã›ã‚“。$ Big Daddy Biker<br> (ä½æ‰€ã¯rsweeny@airius.com)ã«é€£çµ¡ã—ã¦ã€$crazed bikerã®ãƒ¡ãƒ³ãƒãƒ¼ã«ãªã‚‹<br> 情報をå–å¾—ã—ã¦ãã ã•ã„。
+</A>
+</PRE>
+<A NAME="1278050">
+OID: <code>2.16.840.1.113730.3.1.29</code><P></A>
+
+<A NAME="1025986">
+構文: <a href="attribut.htm#1004701">ces</a><P></A>
+<P>
+<A NAME="1102613">
+<A NAME="mgrpPassword">
+<B>mgrpPassword</B>
+</a></a>
+<P>
+
+
+<A NAME="1102614">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„。例:<P></A>
+<PRE><A NAME="1287369">
+ mgrpPassword: AAAAAA==
+</A>
+</PRE>
+<A NAME="1102615">
+構文: <a href="attribut.htm#1004700">bin</a><P></A>
+<P>
+<A NAME="1024670">
+<A NAME="mgrpRFC822MailMember">
+<B>mgrpRFC822MailMember</B>
+</a></a>
+<P>
+
+
+<A NAME="1024672">
+<a href="attribut.htm#">mailGroup</a>ã«é€ä¿¡ã•ã‚ŒãŸãƒ¡ãƒ¼ãƒ«ã§ã€ãƒ¡ãƒ¼ãƒ« グループã®å®Ÿéš›ã®ãƒ¡ãƒ³ãƒãƒ¼ã§ãªã„å—信者を示ã—ã¾ã™ã€‚概念的ã«ã¯ã€ã“れらã®ãƒ¡ãƒ¼ãƒ« アドレスã¯ã€Œã‚«ãƒ¼ãƒœãƒ³ コピーã®å—信者ã€ã¨ã—ã¦è€ƒãˆã‚‰ã‚Œã¾ã™ã€‚ã¤ã¾ã‚Šã€ã“ã®å±žæ€§ã¯ã€è­˜åˆ¥åã§è¡¨ç¾ã§ããªã„メールå—信者やã€ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã‹ã‚‰ã®ãƒ¡ãƒ¼ãƒ«é€ä¿¡å…ˆã¨ã¯ãªã‚‹ãŒã€ã‚°ãƒ«ãƒ¼ãƒ— メンãƒãƒ¼ç‰¹æœ‰ã®å®Œå…¨ãªç‰¹æ¨©ã‚’æŒãŸãªã„メールå—信者を示ã™ã®ã«ä½¿ç”¨ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Messaging ServerãŒä½¿ç”¨ã—ã¦ã€ãƒ¡ãƒ¼ãƒ« リストを管ç†ã—ã¾ã™ã€‚<P></A>
+
+<A NAME="1030207">
+Messaging Serverã§ã¯ã€ã“ã®å±žæ€§ãŒæ¬¡ã®å½¢å¼ã‚’使用ã—ãŸrfc822メール アドレスをå«ã‚€å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚<P></A>
+<PRE><A NAME="1030236">
+<code> rfc822MailAddress [ % ユfullユ name] [ %1 (group parameter #1)]<br> [ %2 (group parameter #2)]...</code>
+</A>
+</PRE>
+<A NAME="1030231">
+説明:<P></A>
+<ul><A NAME="1030278">
+<LI>rfc822MailAddressã¯ã€æ¬¡ã®ã‚ˆã†ãªã‚¢ãƒ‰ãƒ¬ã‚¹ã§ã™ã€‚<P>
+</A>
+</ul><PRE><A NAME="1030338">
+ bjensen@airius.com
+</A>
+</PRE><ul><A NAME="1030343">
+<LI> full nameã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®æ°åを表示ã™ã‚‹ã‚ªãƒ—ションã®ãƒ‘ラメータã§ã™ã€‚ã“ã®ãƒ‘ラメータã¯å°†æ¥ã®ä½¿ç”¨ã®ãŸã‚ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P>
+</A>
+<A NAME="1030396">
+<LI> groupパラメータã¯ã€å°†æ¥ã®ä½¿ç”¨ã®ãŸã‚ã«äºˆç´„ã•ã‚Œã¦ã„るオプションã®ãƒ‘ラメータã§ã™ã€‚<P>
+</A>
+</ul>
+<A NAME="1030305">
+例:<P></A>
+<PRE><A NAME="1024673">
+ mgrpRFC822MailMember: bjensen@airius.com%Babs Jensen
+</A>
+</PRE>
+<A NAME="1278123">
+OID: <code>2.16.840.1.113730.3.1.30</code><P></A>
+
+<A NAME="1024675">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1202056">&nbsp;
+</A>
+<A NAME="mobile">
+<H3> mobile</H3>
+</A>
+
+
+
+<A NAME="1202057">
+エントリã®æºå¸¯é›»è©±ç•ªå·ã‚’示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1202058">
+<PRE> mobileTelephoneNumber: 415-555-4321
+</PRE>
+</A>
+
+<A NAME="1202059">
+ã¾ãŸã¯ã€<P></A>
+<A NAME="1202060">
+<PRE> mobile: 415-555-4321
+</PRE>
+</A>
+
+<A NAME="1202062">
+<a href="attribut.htm#">ç•¥å·</a>: mobile<P></A>
+
+<A NAME="1202064">
+構文: <a href="attribut.htm#1004703">tel</a><P></A>
+
+
+<A NAME="1242555">&nbsp;
+</A>
+<A NAME="modifiersName">
+<H3> modifiersName</H3>
+</A>
+
+
+
+<A NAME="1242556">
+エントリã®æœ€çµ‚変更者ã®è­˜åˆ¥å(dn - distinguished name)ãŒå«ã¾ã‚Œã¾ã™ã€‚例:<P></A>
+<A NAME="1242557">
+<PRE> modifiersName: <I>cn=jdoe, o=airius.com
+</I></PRE>
+</A>
+
+<A NAME="1242559">
+構文: <a href="attribut.htm#1100403">dn</a><P></A>
+
+
+<A NAME="1242117">&nbsp;
+</A>
+<A NAME="modifyTimestamp">
+<H3> modifyTimestamp</H3>
+</A>
+
+
+
+<A NAME="1242119">
+未定義。<P></A>
+
+<A NAME="1242126">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1229561">&nbsp;
+</A>
+<A NAME="multiLineDescription">
+<H3>multiLineDescription</H3>
+</A>
+
+
+
+<A NAME="1229562">
+メール ユーザを記述ã™ã‚‹ãƒ†ã‚­ã‚¹ãƒˆã‚’æä¾›ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Messaging ServerãŒä½¿ç”¨ã—ã¾ã™ã€‚LDIFå½¢å¼ã§è¡¨ç¤ºã™ã‚‹å ´åˆã¯ã€å„行をドル記å·($)ã§åŒºåˆ‡ã‚Šã¾ã™ã€‚Messaging Serverã§ã¯ã€å„メール アカウントã«ã¤ãã“ã®å±žæ€§ãŒ0ã¾ãŸã¯1回æä¾›ã•ã‚Œã‚‹ã“ã¨ãŒå¿…è¦ã§ã™ã€‚例:<P></A>
+<PRE><A NAME="1229563">
+ multiLineDescription: アカウント管ç†è€…ãŠã‚ˆã³$ディレクトリ マãƒãƒ¼ã‚¸ãƒ£ã€‚
+</A>
+</PRE>
+<A NAME="1229565">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1243088">&nbsp;
+</A>
+<A NAME="namingContexts">
+<H3> namingContexts</H3>
+</A>
+
+
+
+<A NAME="1243089">
+未定義。<P></A>
+
+<A NAME="1243092">
+構文: <a href="attribut.htm#1100403">dn</a><P></A>
+
+
+<A NAME="1096606">&nbsp;
+</A>
+<A NAME="newRdn">
+<H3> newRdn</H3>
+</A>
+
+
+
+<A NAME="1096607">
+modRDNã¾ãŸã¯modDN動作ã®ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã§ã‚るエントリã®æ–°è¦RDN (Relative Distinguished Name)ãŒå«ã¾ã‚Œã¾ã™ã€‚例:<P></A>
+<A NAME="1096608">
+<PRE> newRdn: <I>cn=Jane Doe
+</I></PRE>
+</A>
+
+<A NAME="1100958">
+構文: <a href="attribut.htm#1100403">dn</a><P></A>
+
+
+<A NAME="1126531">&nbsp;
+</A>
+<A NAME="newSuperior">
+<H3> newSuperior</H3>
+</A>
+
+
+
+<A NAME="1126532">
+modDN動作ã®å‡¦ç†ã®éš›ã«ã€ç¾å­˜ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªã®ç›´ã上ã«ãªã‚‹ã‚¨ãƒ³ãƒˆãƒªåを示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1126533">
+<PRE> newSuperior: <I>cn=Jane Doe
+</I></PRE>
+</A>
+
+<A NAME="1126631">
+構文: <a href="attribut.htm#1100403">dn</a><P></A>
+
+
+<A NAME="1126633">&nbsp;
+</A>
+<A NAME="newsComponentName">
+<H3> newsComponentName</H3>
+</A>
+
+
+
+<A NAME="1126540">
+ã“ã®å±žæ€§ã«ã¯è¨Žè«– (ニュース)グループåãŒå«ã¾ã‚Œã¾ã™ã€‚ã“ã®åå‰ã¯ã€è¨Žè«–グループã®è­˜åˆ¥åã«ã‚‚使用ã§ãã¾ã™ã€‚例:<P></A>
+<A NAME="1126541">
+<PRE> newsComponentName: <I>marketing
+</I></PRE>
+</A>
+
+<A NAME="1126543">
+構文: <a href="attribut.htm#1100403">dn</a><P></A>
+
+
+<A NAME="1095332">&nbsp;
+</A>
+<A NAME="ngcomponent">
+<H3>ngcomponent</H3>
+</A>
+
+
+
+<A NAME="1095333">
+ニュース グループåã®ä¸€éƒ¨ã‚’識別ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯ã€æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚ニュース グループを一æ„ã«è­˜åˆ¥ã™ã‚‹ãŸã‚ã€Collabra ServerãŒ<a href="attribut.htm#">nginfo</a>エントリã§ä½¿ç”¨ã—ã¾ã™ã€‚Collabra ServerãŒã“ã®å±žæ€§ã«å…¥åŠ›ã™ã‚‹æƒ…å ±ã®ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆã¨æ€§è³ªã¯ã€äºˆå‘Šãªã—ã«å¤‰æ›´ã•ã‚Œã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚<P></A>
+
+<A NAME="1037897">
+例ãˆã°ã€comp.sys.mac newsgroup用ã«å…¥åŠ›ã•ã‚ŒãŸngcomponent属性ã¯æ¬¡ã®ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚<P></A>
+<PRE><A NAME="1037898">
+ dn: ngcomponent=mac, ngcomponent=sys, ngcomponent=comp,<br> ngcomponent=., <I>o=Airius.com<br></I> objectclass: top<br> objectclass: nginfo<br> ngcomponent=mac<br> ngcomponent=sys<br> ngcomponent=comp<br> ngcomponent=.
+</A>
+</PRE>
+<A NAME="1272795">
+OID: <code>2.16.840.1.113730.3.1.196</code><P></A>
+
+<A NAME="1037900">
+構文: <a href="attribut.htm#1100403">dn</a><P></A>
+<P>
+<A NAME="1036977">
+<A NAME="nsaclrole">
+<B>nsaclrole</B>
+</a></a>
+<P>
+
+
+<A NAME="1037146">
+個々ã®ãƒ‹ãƒ¥ãƒ¼ã‚¹ グループã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹éš›ã®å½¹å‰² (マãƒãƒ¼ã‚¸ãƒ£ã€æŽ²ç¤ºè€…ã€èª­è€…ãªã©)を表示ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯ã€æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚ã“ã‚Œã¯ã€<a href="objclass.htm#1078583">nginfo</a>エントリã§Collabra ServerãŒä½¿ç”¨ã—ã€å€‹ã€…ã®ãƒ‹ãƒ¥ãƒ¼ã‚¹ グループã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’管ç†ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯ã€ngcomponent subtreeã®ãƒ–ランムãƒã‚¤ãƒ³ãƒˆã«ãŠã„ã¦ã®ã¿ä½¿ç”¨ã•ã‚Œã¾ã™ã€‚Collabra ServerãŒã“ã®å±žæ€§ã«å…¥åŠ›ã™ã‚‹æƒ…å ±ã®ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆã¨æ€§è³ªã¯ã€äºˆå‘Šãªã—ã«å¤‰æ›´ã•ã‚Œã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚<P></A>
+
+<A NAME="1036980">
+例:<P></A>
+<PRE><A NAME="1036981">
+ nsaclrole: admin:aprv
+</A>
+</PRE>
+<A NAME="1272665">
+OID: <code>2.16.840.1.113730.3.1.192</code><P></A>
+
+<A NAME="1036983">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1104932">
+<A NAME="nsCalAccess">
+<B>nsCalAccess</B>
+</a></a>
+<P>
+
+
+<A NAME="1177104">
+ã“ã®å±žæ€§ã¯å°†æ¥ã®ä½¿ç”¨ã®ãŸã‚ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1177105">
+Calendarユーザã€ç®¡ç†è€…ã€ã¾ãŸã¯ãƒªã‚½ãƒ¼ã‚¹ã«ã€Calendar Serverã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã®èªå¦ã‚’定義ã—ã¾ã™ã€‚例:<P></A>
+<PRE><A NAME="1120940">
+ nsCalAccess: allow
+</A>
+</PRE>
+<A NAME="1270551">
+OID: <code>2.16.840.1.113730.3.1.112</code><P></A>
+
+<A NAME="1104935">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1177696">
+ã“ã®å±žæ€§ã¯ã€æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Calendar ServerãŒä½¿ç”¨ã—ã¾ã™ã€‚<P></A>
+<P>
+<A NAME="1166044">
+<A NAME="nsCalAccessDomain">
+<B>nsCalAccessDomain</B>
+</a></a>
+<P>
+
+
+<A NAME="1177890">
+Calendarユーザã€ç®¡ç†è€…ã€ã¾ãŸã¯ãƒªã‚½ãƒ¼ã‚¹ãŒCalendarデータã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯ã•ã‚Œã‚‹ã€ã‚¢ã‚¯ã‚»ã‚¹å…ƒã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒãƒˆ ドメインã¾ãŸã¯IPアドレスをå«ã¿ã¾ã™ã€‚<P></A>
+<PRE><A NAME="1120977">
+ nsCalAccessDomain: airius.com
+</A>
+</PRE>
+<A NAME="1270575">
+OID: <code>2.16.840.1.113730.3.1.113</code><P></A>
+
+<A NAME="1104940">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1177866">
+ã“ã®å±žæ€§ã¯ã€æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Calendar ServerãŒä½¿ç”¨ã—ã¾ã™ã€‚<P></A>
+<P>
+<A NAME="1104994">
+<A NAME="nsCalAdmd">
+<B>nsCalAdmd</B>
+</a></a>
+<P>
+
+
+<A NAME="1161412">
+ã“ã®å±žæ€§ã¯ã€æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Calendar ServerãŒä½¿ç”¨ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã«ã¯ã€X.400 Administration Management Domain NameãŒå«ã¾ã‚Œã¾ã™ã€‚例:<P></A>
+<PRE><A NAME="1120980">
+ nsCalAdmd: telemail
+</A>
+</PRE>
+<A NAME="1270587">
+OID: <code>2.16.840.1.113730.3.1.114</code><P></A>
+
+<A NAME="1104995">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1105005">&nbsp;
+</A>
+<A NAME="nsCalDefaultNoteReminder">
+<H3> nsCalDefaultNoteReminder</H3>
+</A>
+
+
+
+<A NAME="1162561">
+Calendarユーザーã«é€ä¿¡ã•ã‚Œã‚‹ãƒŽãƒ¼ãƒˆ リマインダã®ã‚¿ã‚¤ãƒ—ãŒã‚ã‚‹å ´åˆã€ã“れを定義ã—ã¾ã™ã€‚リマインダ タイプã¯none (0)ã€visual (1)ã€ã¾ãŸã¯visual and audible (2)ã§ã™ã€‚Length of the reminder (リマインダã®é•·ã•)ã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«é€ä¿¡ã•ã‚Œã‚‹ãƒªãƒžã‚¤ãƒ³ãƒ€ã®ãƒŽãƒ¼ãƒˆã®æœ‰åŠ¹æ™‚間を分å˜ä½ã§å®šç¾©ã—ã¾ã™ã€‚構文㯠<code>タイプ:分</code>ã§ã™ã€‚例:<P></A>
+<PRE><A NAME="1162562">
+ nsCalDefaultNoteReminder: 1:10
+</A>
+</PRE>
+<A NAME="1270589">
+OID: <code>2.16.840.1.113730.3.1.115</code><P></A>
+
+<A NAME="1105006">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1174630">
+ã“ã®å±žæ€§ã¯ã€æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Calendar ServerãŒä½¿ç”¨ã—ã¾ã™ã€‚<P></A>
+<P>
+<A NAME="1162428">&nbsp;
+</A>
+<A NAME="nsCalDefaultReminder">
+<H3> nsCalDefaultReminder</H3>
+</A>
+
+
+
+<A NAME="1162430">
+カレンダーã®ã‚¤ãƒ™ãƒ³ãƒˆå‚加者ã«é€ä¿¡ã•ã‚Œã‚‹ã‚¤ãƒ™ãƒ³ãƒˆ リマインダã®ã‚¿ã‚¤ãƒ—ãŒã‚ã‚‹å ´åˆã€ã“れを定義ã—ã¾ã™ã€‚リマインダ タイプã¯none (0)ã€visual (1)ã€ã¾ãŸã¯ visual and audible (2)ã§ã™ã€‚Length of the reminder (リマインダã®é•·ã•)ã¯ã€ã‚¤ãƒ™ãƒ³ãƒˆå‚加者ã«é€ä¿¡ã•ã‚Œã‚‹ãƒªãƒžã‚¤ãƒ³ãƒ€ã®ã‚¤ãƒ™ãƒ³ãƒˆã¾ã§ã®æ™‚間を分å˜ä½ã§å®šç¾©ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1162431">
+<PRE><A NAME="1162431">
+ nsCalDefaultReminder: 1:10
+</A>
+</PRE>
+<A NAME="1270594">
+OID: <code>2.16.840.1.113730.3.1.116</code><P></A>
+
+<A NAME="1162433">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1175363">
+ã“ã®å±žæ€§ã¯ã€æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Calendar ServerãŒä½¿ç”¨ã—ã¾ã™ã€‚<P></A>
+
+
+<A NAME="1105139">&nbsp;
+</A>
+<A NAME="nsCalDefaultTaskReminder">
+<H3> nsCalDefaultTaskReminder</H3>
+</A>
+
+
+
+<A NAME="1162515">
+Calendarユーザーã«é€ä¿¡ã•ã‚Œã‚‹ã‚¿ã‚¹ã‚¯ リマインダã®ã‚¿ã‚¤ãƒ—ãŒã‚ã‚‹å ´åˆã€ã“れを定義ã—ã¾ã™ã€‚リマインダ タイプã¯none (0)ã€visual (1)ã€ã¾ãŸã¯ visual and audible (2)ã§ã™ã€‚Length of the reminder (リマインダã®é•·ã•)ã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«é€ä¿¡ã•ã‚Œã‚‹ãƒªãƒžã‚¤ãƒ³ãƒ€ã®ã‚¿ã‚¹ã‚¯ç· åˆ‡ã‚Šã¾ã§ã®æ™‚間を分å˜ä½ã§å®šç¾©ã—ã¾ã™ã€‚例:<P></A>
+<PRE><A NAME="1162516">
+ nsCalDefaultTaskReminder: 1:10
+</A>
+</PRE>
+<A NAME="1270608">
+OID: <code>2.16.840.1.113730.3.1.117</code><P></A>
+
+<A NAME="1162518">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1175448">
+ã“ã®å±žæ€§ã¯ã€æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Calendar ServerãŒä½¿ç”¨ã—ã¾ã™ã€‚<P></A>
+
+
+<A NAME="1105164">
+<A NAME="nsCalDisplayPrefs">
+<B>nsCalDisplayPrefs</B>
+</a></a>
+<P>
+
+
+<A NAME="1161965">
+Calendarユーザã¾ãŸã¯ãƒªã‚½ãƒ¼ã‚¹ã®è¡¨ç¤ºç’°å¢ƒè¨­å®šã‚’å«ã¿ã¾ã™ã€‚ã“ã®å±žæ€§ã®æ§‹æ–‡ã¯ã€æ¬¡ã®ã¨ãŠã‚Šã§ã™ã€‚<code>Flags:StartDay:EndDay:WeekStart:TimeIncrement:ActiveDays:TimeFormat</code>. Flagsã¯ç¾åœ¨ä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã›ã‚“。StartDayã¯æ—¥ä»˜è¡¨ç¤ºã®é–‹å§‹æ™‚é–“(分)〠EndDayã¯æ—¥ä»˜è¡¨ç¤ºã®çµ‚了時間(分)ã€WeekStartã¯Calendarクライアントã§è¡¨ç¤ºã™ã‚‹é€±ã®ç¬¬1日目ã§ã€é€šå¸¸ã¯æ—¥æ›œã‹æœˆæ›œã‚’示ã—ã¾ã™ã€‚TimeIncrementã§ã¯è¡¨ç¤ºã™ã‚‹æ™‚é–“å˜ä½(分)を定義ã—ã¾ã™ã€‚ActiveDaysã§ã¯ã€å¹³æ—¥ã®ã¿ãªã©ã€è¡¨ç¤ºã™ã‚‹æ—¥ã‚’指定ã—ã¾ã™ã€‚TimeFormatã§ã¯è¡¨ç¤ºæ™‚é–“å½¢å¼ (AM/PMã¾ãŸã¯24時間)を示ã—ã¾ã™ã€‚以下ã®ä¾‹ã§ã¯ã€<code>4</code>ã¯ãƒ•ãƒ©ã‚°ã‚’示ã—ã€ãƒ•ãƒ©ã‚°ã¯ä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã›ã‚“。StartDay値 (480)ã¯åˆå‰8時ã€EndDay (1140)ã¯åˆå¾Œ7時ã€WeekStart (0)ã¯æ—¥æ›œã€TimeIncrementã¯15 分ã€ActiveDays値ã¯ã™ã¹ã¦ã€TimeFormatã¯24時間ã«è¨­å®šã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+<A NAME="1234997">
+<PRE><A NAME="1234997">
+ nsCalDisplayPrefs: 4:480:1140:0:15:127:2
+</A>
+</PRE>
+<A NAME="1270696">
+OID: <code>2.16.840.1.113730.3.1.118</code><P></A>
+
+<A NAME="1161784">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1174421">
+ã“ã®å±žæ€§ã¯ã€æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Calendar ServerãŒä½¿ç”¨ã—ã¾ã™ã€‚<P></A>
+
+
+<A NAME="1164493">
+<A NAME="nsCalFlags">
+<B>nsCalFlags</B>
+</a></a>
+<P>
+
+
+<A NAME="1164494">
+ã“ã®å±žæ€§ã¯ã€æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Calendar ServerãŒä½¿ç”¨ã—ã¾ã™ã€‚å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„。<P></A>
+
+<A NAME="1270698">
+OID: <code>2.16.840.1.113730.3.1.119</code><P></A>
+
+<A NAME="1235001">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1157806">
+<A NAME="nsCalHost">
+<B>nsCalHost</B>
+</a></a>
+<P>
+
+
+<A NAME="1157807">
+ã“ã®å±žæ€§ã¯ã€æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Calendar ServerãŒä½¿ç”¨ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯ã€Calendar Serverをホストã™ã‚‹ãƒ›ã‚¹ãƒˆåã¾ãŸã¯IPアドレスをå«ã¿ã¾ã™ã€‚例:<P></A>
+<PRE><A NAME="1122178">
+ nsCalHost: calserver.airius.com
+</A>
+</PRE>
+<A NAME="1270812">
+OID: <code>2.16.840.1.113730.3.1.120</code><P></A>
+
+<A NAME="1105325">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1105333">
+<A NAME="nsCalLanguageId">
+<B>nsCalLanguageId</B>
+</a></a>
+<P>
+
+
+<A NAME="1162674">
+ã“ã®å±žæ€§ã¯ã€æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Calendar ServerãŒä½¿ç”¨ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã€ç®¡ç†è€…ã€ã¾ãŸã¯ãƒªã‚½ãƒ¼ã‚¹ãŒé›»å­ãƒ¡ãƒ¼ãƒ«é€šçŸ¥ã‚’å—ä¿¡ã™ã‚‹è¨€èªžã‚’定義ã—ã¾ã™ã€‚例:<P></A>
+<PRE><A NAME="1122193">
+ nsCalLanguageId: english
+</A>
+</PRE>
+<A NAME="1270838">
+OID: <code>2.16.840.1.113730.3.1.121</code><P></A>
+
+<A NAME="1157843">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1157846">
+<A NAME="nsCalNodeAlias">
+<B>nsCalNodeAlias</B>
+</a></a>
+<P>
+
+
+<A NAME="1157847">
+ã“ã®å±žæ€§ã¯ã€æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Calendar ServerãŒä½¿ç”¨ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯ã€Calendarユーザã®æƒ…å ±ãŒä¿å­˜ã•ã‚Œã¦ã„るノードã®ãƒ‹ãƒ¼ãƒ¢ãƒ‹ãƒƒã‚¯åã‚’å«ã¿ã¾ã™ã€‚例:<P></A>
+<PRE><A NAME="1171879">
+ nsCalNodeAlias: node10000
+</A>
+</PRE>
+<A NAME="1270844">
+OID: <code>2.16.840.1.113730.3.1.122</code><P></A>
+
+<A NAME="1118746">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1118755">
+<A NAME="nsCalNotifMechanism">
+<B>nsCalNotifMechanism</B>
+</a></a>
+<P>
+
+
+<A NAME="1162010">
+カレンダー イベントå‚加者ã®é€šçŸ¥(通常ã¯é›»å­ãƒ¡ãƒ¼ãƒ«)ã«ä½¿ç”¨ã•ã‚Œã‚‹æ©Ÿæ§‹ã‚’指定ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã®è¨±å®¹å€¤ã¯<code>1</code>ãŠã‚ˆã³<code>0</code> ã§ã€<code>1</code> ã¯é€šçŸ¥ãŒä½¿ç”¨å¯èƒ½ã§ã€<code>0</code>ã¯é€šçŸ¥ãŒä½¿ç”¨ä¸èƒ½ã§ã‚ã‚‹ã®ã‚’æ„味ã—ã¾ã™ã€‚例:<P></A>
+<PRE><A NAME="1122226">
+ nsCalNotifMechanism: 0
+</A>
+</PRE>
+<A NAME="1270863">
+OID: <code>2.16.840.1.113730.3.1.123</code><P></A>
+
+<A NAME="1118757">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1175516">
+ã“ã®å±žæ€§ã¯ã€æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Calendar ServerãŒä½¿ç”¨ã—ã¾ã™ã€‚<P></A>
+<P>
+<A NAME="1105631">
+<A NAME="nsCalOperatingPrefs">
+<B>nsCalOperatingPrefs</B>
+</a></a>
+<P>
+
+
+<A NAME="1161868">
+ã“ã®å±žæ€§ã¯ã€æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Calendar ServerãŒä½¿ç”¨ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯ã€ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ãƒªã‚½ãƒ¼ã‚¹ã®OS環境設定を定義ã—ã¾ã™ã€‚å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„。<P></A>
+
+<A NAME="1270865">
+OID: <code>2.16.840.1.113730.3.1.124</code><P></A>
+
+<A NAME="1161820">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1105739">
+<A NAME="nsCalOrgUnit2">
+<B>nsCalOrgUnit2</B>
+</a></a>
+<P>
+
+
+<A NAME="1161561">
+ã“ã®å±žæ€§ã¯ã€æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Calendar ServerãŒä½¿ç”¨ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯ã€ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ç®¡ç†è€…ã®X.400 Organization Unit 2(OU2)ã‚’å«ã¿ã¾ã™ã€‚例:<P></A>
+<PRE><A NAME="1122284">
+ nsCalOrgUnit2: marketing
+</A>
+</PRE>
+<A NAME="1270887">
+OID: <code>2.16.840.1.113730.3.1.125</code><P></A>
+
+<A NAME="1105740">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1105752">
+<A NAME="nsCalOrgUnit3">
+<B>nsCalOrgUnit3</B>
+</a></a>
+<P>
+
+
+<A NAME="1161594">
+ã“ã®å±žæ€§ã¯ã€æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Calendar ServerãŒä½¿ç”¨ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯ã€ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ç®¡ç†è€…ã®X.400 Organization Unit 3(OU3)ã‚’å«ã¿ã¾ã™ã€‚例:<P></A>
+<PRE><A NAME="1122291">
+ nsCalOrgUnit3: sales
+</A>
+</PRE>
+<A NAME="1270897">
+OID: <code>2.16.840.1.113730.3.1.126</code><P></A>
+
+<A NAME="1105753">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1105815">
+<A NAME="nsCalOrgUnit4">
+<B>nsCalOrgUnit4</B>
+</a></a>
+<P>
+
+
+<A NAME="1164929">
+ã“ã®å±žæ€§ã¯ã€æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Calendar ServerãŒä½¿ç”¨ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯ã€ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ç®¡ç†è€…ã®X.400 Organization Unit 4(OU4)ã‚’å«ã¿ã¾ã™ã€‚例:<P></A>
+<PRE><A NAME="1164930">
+ nsCalOrgUnit4: engineering
+</A>
+</PRE>
+<A NAME="1270918">
+OID: <code>2.16.840.1.113730.3.1.127</code><P></A>
+
+<A NAME="1105816">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1105834">
+<A NAME="nsCalPasswordRequired">
+<B>nsCalPasswordRequired</B>
+</a></a>
+<P>
+
+
+<A NAME="1162629">
+Calendarデータã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹éš›ã«ã€CalendarユーザãŒãƒ‘スワードを入力ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã‹ã©ã†ã‹ã‚’指定ã—ã¾ã™ã€‚許容値ã¯ã€<code>1</code>ãŠã‚ˆã³<code>0</code>ã§ã€<code>1</code>ã¯ãƒ‘スワードãŒå¿…è¦ã§ã‚ã‚Šã€<code>0</code>ã¯ãƒ‘スワードãŒå¿…è¦ã§ãªã„ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚例:<P></A>
+<PRE><A NAME="1122383">
+ nsCalPasswordRequired: 1
+</A>
+</PRE>
+<A NAME="1270965">
+OID: <code>2.16.840.1.113730.3.1.128</code><P></A>
+
+<A NAME="1105835">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1175590">
+ã“ã®å±žæ€§ã¯ã€æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Calendar ServerãŒä½¿ç”¨ã—ã¾ã™ã€‚<P></A>
+<P>
+<A NAME="1105891">
+<A NAME="nsCalPrmd">
+<B>nsCalPrmd</B>
+</a></a>
+<P>
+
+
+<A NAME="1161468">
+ã“ã®å±žæ€§ã¯ã€æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Calendar ServerãŒä½¿ç”¨ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯ã€ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ç®¡ç†è€…ã®X.400 Private Management Domain Nameã‚’å«ã¿ã¾ã™ã€‚例:<P></A>
+<PRE><A NAME="1271010">
+ nsCalPrmd: airius
+</A>
+</PRE>
+<A NAME="1271034">
+OID: <code>2.16.840.1.113730.3.1.129</code><P></A>
+
+<A NAME="1271012">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1105943">
+<A NAME="nsCalRefreshPrefs">
+<B>nsCalRefreshPrefs</B>
+</a></a>
+<P>
+
+
+<A NAME="1165339">
+ã“ã®å±žæ€§ã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ç’°å¢ƒè¨­å®šã‚’æ›´æ–°ã™ã‚‹ã‹ã©ã†ã‹ã€ã¾ãŸãã®æ›´æ–°é »åº¦ã‚’定義ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã®æ§‹æ–‡ã¯ <code>オン/オフ:分</code>ã§ã™ã€‚<code>オン/オフ</code>ã®è¨±å®¹å€¤ã¯<code>1</code>ãŠã‚ˆã³<code>0</code>ã§ã€<code>1</code>ã¯ç’°å¢ƒè¨­å®šã‚’æ›´æ–°ã—ã€<code>0</code> ã¯ç’°å¢ƒè¨­å®šã‚’æ›´æ–°ã—ãªã„ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚ <code>オン/オフ</code>ã®å€¤ã‚’<code>1</code>ã«è¨­å®šã—ã¦ã„ã‚‹å ´åˆã€æ›´æ–°é–“éš”ã¯åˆ†ã§å…¥åŠ›ã—ã¾ã™ã€‚次ã®ä¾‹ã§ã¯ã€nsCalRefreshPrefsã¯ã‚ªãƒ•ã«è¨­å®šã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+<PRE><A NAME="1171900">
+ nsCalRefreshPrefs: 0:0
+</A>
+</PRE>
+<A NAME="1271056">
+OID: <code>2.16.840.1.113730.3.1.130</code><P></A>
+
+<A NAME="1105944">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1173593">
+ã“ã®å±žæ€§ã¯ã€æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Calendar ServerãŒä½¿ç”¨ã—ã¾ã™ã€‚<P></A>
+<P>
+<A NAME="1105996">
+<A NAME="nsCalResourceCapacity">
+<B>nsCalResourceCapacity</B>
+</a></a>
+<P>
+
+
+<A NAME="1163461">
+ã“ã®å±žæ€§ã¯ã€æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Calendar ServerãŒä½¿ç”¨ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯ã€ä¾‹ãˆã°ä¼šè­°å®¤ã®ã‚ˆã†ãªãƒªã‚½ãƒ¼ã‚¹ã®å®¹é‡ã‚’定義ã—ã¾ã™ã€‚例:<P></A>
+<PRE><A NAME="1122484">
+ nsCalResourceCapacity: 65
+</A>
+</PRE>
+<A NAME="1271073">
+OID: <code>2.16.840.1.113730.3.1.131</code><P></A>
+
+<A NAME="1209240">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<A NAME="1209242">
+<A NAME="nsCalResourceNumber">
+<B>nsCalResourceNumber</B>
+</a></a>
+<P>
+
+
+<A NAME="1209244">
+ã“ã®å±žæ€§ã¯ã€æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Calendar ServerãŒä½¿ç”¨ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯ã€ãƒªã‚½ãƒ¼ã‚¹ã®è­˜åˆ¥ç•ªå·ã‚’å«ã¿ã¾ã™ã€‚例:<P></A>
+<PRE><A NAME="1165759">
+ nsCalResourceNumber: 6725
+</A>
+</PRE>
+<A NAME="1271092">
+OID: <code>2.16.840.1.113730.3.1.132</code><P></A>
+
+<A NAME="1106037">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1106093">
+<A NAME="nsCalServerVersion">
+<B>nsCalServerVersion</B>
+</a></a>
+<P>
+
+
+<A NAME="1160060">
+ã“ã®å±žæ€§ã¯ã€æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Calendar ServerãŒä½¿ç”¨ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯ã€Calendarユーザã®ãƒ‡ãƒ¼ã‚¿ã‚’ホストã—ã¦ã„ã‚‹Calendar Serverã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã‚’å«ã¿ã¾ã™ã€‚例:<P></A>
+<A NAME="1122498">
+<PRE><A NAME="1122498">
+ nsCalServerVersion: 1.0
+</A>
+</PRE>
+<A NAME="1271164">
+OID: <code>2.16.840.1.113730.3.1.133</code><P></A>
+
+<A NAME="1106094">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1106115">
+<A NAME="nsCalSysopCanWritePassword">
+<B>nsCalSysopCanWritePassword</B>
+</a></a>
+<P>
+
+
+<A NAME="1162650">
+ã“ã®å±žæ€§ã¯ã€æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Calendar ServerãŒä½¿ç”¨ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯ã€Calendar Server管ç†è€…ãŒãƒ¦ãƒ¼ã‚¶ã€ãƒªã‚½ãƒ¼ã‚¹ã€ãŠã‚ˆã³ä»–ã®ç®¡ç†è€…ã®ãƒ‘スワードを上書ãã§ãã‚‹ã‹ã©ã†ã‹ã‚’指定ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã®è¨±å®¹å€¤ã¯<code>1</code>ãŠã‚ˆã³<code>0</code>ã§ã€<code>1</code>ã¯ç®¡ç†è€…ãŒãƒ‘スワードを上書ãã§ãã€<code>0</code>ã¯ç®¡ç†è€…ãŒãƒ‘スワードを上書ãã§ããªã„ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚例:<P></A>
+<PRE><A NAME="1171915">
+ nsCalSysopCanWritePassword: 1
+</A>
+</PRE>
+<A NAME="1271166">
+OID: <code>2.16.840.1.113730.3.1.134</code><P></A>
+
+<A NAME="1106116">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1106160">
+<A NAME="nsCalTimezone">
+<B>nsCalTimezone</B>
+</a></a>
+<P>
+
+
+<A NAME="1162695">
+ã“ã®å±žæ€§ã¯ã€æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Calendar ServerãŒä½¿ç”¨ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯ã€ãƒªã‚½ãƒ¼ã‚¹ã®ç¾åœ¨ã®æ™‚間帯をå«ã¿ã¾ã™ã€‚例:<P></A>
+<PRE><A NAME="1122560">
+ nsCalTimezone: PST
+</A>
+</PRE>
+<A NAME="1271168">
+OID: <code>2.16.840.1.113730.3.1.135</code><P></A>
+
+<A NAME="1106161">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1106218">
+<A NAME="nsCalXItemId">
+<B>nsCalXItemId</B>
+</a></a>
+<P>
+
+
+<A NAME="1159973">
+ã“ã®å±žæ€§ã¯ã€æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Calendar ServerãŒä½¿ç”¨ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’代表ã™ã‚‹nsCalendarObjectã®ä¸€æ„ã®è­˜åˆ¥å­ã‚’å«ã¿ã¾ã™ã€‚ã“ã®è­˜åˆ¥å­ã¯ã€Calendarユーザーã€ç®¡ç†è€…ã€ã¾ãŸã¯ãƒªã‚½ãƒ¼ã‚¹ã®ãƒ‡ãƒ¼ã‚¿ãŒä¿å­˜ã•ã‚Œã¦ã„るノードã®è­˜åˆ¥ç•ªå·ã¨ã€Calendarユーザーã€ç®¡ç†è€…ã€ã¾ãŸã¯ãƒªã‚½ãƒ¼ã‚¹ã®è­˜åˆ¥ç•ªå·ã¨ã‹ã‚‰æ§‹æˆã•ã‚Œã¦ã„ã¾ã™ã€‚å½¢å¼ã¯<code>NodeId,ItemId</code>ã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。例:<P></A>
+<PRE><A NAME="1159974">
+ nsCalXItemId: 123,6547
+</A>
+</PRE>
+<A NAME="1271216">
+OID: <code>2.16.840.1.113730.3.1.136</code><P></A>
+
+<A NAME="1106219">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1037693">
+<A NAME="nscreator">
+<B>nscreator</B>
+</a></a>
+<P>
+
+
+<A NAME="1037694">
+ニュース グループã®ä½œæˆè€…を識別ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯ã€æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Collabra ServerãŒä½¿ç”¨ã—ã¦ã€<a href="objclass.htm#1078583">nginfo</a>エントリã§ãƒ‹ãƒ¥ãƒ¼ã‚¹ グループã®ä½œæˆè€…uidを識別ã—ã¾ã™ã€‚Collabra ServerãŒã“ã®å±žæ€§ã«å…¥åŠ›ã™ã‚‹æƒ…å ±ã®ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆã¨æ€§è³ªã¯ã€äºˆå‘Šãªã—ã«å¤‰æ›´ã•ã‚Œã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚<P></A>
+
+<A NAME="1037696">
+例:<P></A>
+<PRE><A NAME="1037697">
+ nscreator: admin
+</A>
+</PRE>
+<A NAME="1272746">
+OID: <code>2.16.840.1.113730.3.1.195</code><P></A>
+
+<A NAME="1037699">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1037564">
+<A NAME="nsflags">
+<B>nsflags</B>
+</a></a>
+<P>
+
+<A NAME="1037565">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„。<P></A>
+
+<A NAME="1272737">
+OID: <code>2.16.840.1.113730.3.1.194</code><P></A>
+
+<A NAME="1037567">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1091847">
+<A NAME="nsLicensedFor">
+<B>nsLicensedFor</B>
+</a></a>
+<P>
+
+
+<A NAME="1305579">
+ユーザãŒä½¿ç”¨è¨±è«¾å¥‘ç´„ã‚’æŒã¤Netscapeサーãƒã‚’識別ã—ã¾ã™ã€‚Netscape Administration Serverã§ã¯ã€ã“ã®å±žæ€§ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãŒå„<a href="attribut.htm#">nsLicenseUser</a>エントリã«ã¤ã„ã¦ã€ã‚¼ãƒ­ã¾ãŸã¯ãれ以上å«ã¾ã‚Œã¦ã„ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ç¾åœ¨ã“ã®å±žæ€§ã®æœ‰åŠ¹ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã¯ã€æ¬¡ã®ã¨ãŠã‚Šã§ã™ã€‚<P></A>
+<ul><A NAME="1305581">
+<LI><code>mail</code>--ユーザã¯ã€Messaging Serverã®ãƒ©ã‚¤ã‚»ãƒ³ã‚¹å¥‘ç´„ã‚’æŒã¤ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã§ã™ã€‚<P>
+</A>
+<A NAME="1305582">
+<LI><code>news</code>--ユーザã¯ã€Collabra Serverã®ãƒ©ã‚¤ã‚»ãƒ³ã‚¹å¥‘ç´„ã‚’æŒã¤ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã§ã™ã€‚<P>
+</A>
+<A NAME="1091852">
+<LI><code>slapd</code>--ユーザã¯ã€Directory Serverã®ãƒ©ã‚¤ã‚»ãƒ³ã‚¹å¥‘ç´„ã‚’æŒã¤ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã§ã™ã€‚<P>
+</A>
+<A NAME="1091853">
+<LI><code>cal</code>--ユーザã¯ã€Calendar Serverã®ãƒ©ã‚¤ã‚»ãƒ³ã‚¹å¥‘ç´„ã‚’æŒã¤ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã§ã™ã€‚<P>
+</A>
+</ul>
+<A NAME="1091854">
+例:<P></A>
+<PRE><A NAME="1091855">
+ nsLicensedFor: slapd
+</A>
+</PRE>
+<A NAME="1257889">
+OID: <code>2.16.840.1.113730.3.1.36</code><P></A>
+
+<A NAME="1091857">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1091859">
+<A NAME="nsLicenseStartTime">
+<B>nsLicenseStartTime</B>
+</a></a>
+<P>
+
+
+<A NAME="1091860">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„。<P></A>
+
+<A NAME="1257896">
+OID: <code>2.16.840.1.113730.3.1.37</code><P></A>
+
+<A NAME="1091862">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1091864">
+<A NAME="nsLicenseEndTime">
+<B>nsLicenseEndTime</B>
+</a></a>
+<P>
+
+<A NAME="1091865">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„。<P></A>
+
+<A NAME="1257974">
+OID: <code>2.16.840.1.113730.3.1.38</code><P></A>
+
+<A NAME="1091867">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1092030">
+<A NAME="nsnewsACL">
+<B>nsnewsACL</B>
+</a></a>
+<P>
+
+
+<A NAME="1092031">
+個々ã®ãƒ‹ãƒ¥ãƒ¼ã‚¹ グループã«è¨­å®šã•ã‚ŒãŸã‚¢ã‚¯ã‚»ã‚¹åˆ¶å¾¡ã‚’識別ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚Collabra ServerãŒä½¿ç”¨ã—ã¦ã€<a href="attribut.htm#">nginfo</a>エントリã§å€‹ã€…ã®ãƒ‹ãƒ¥ãƒ¼ã‚¹ グループã®ã‚¢ã‚¯ã‚»ã‚¹åˆ¶å¾¡ã‚’識別ã—ã¾ã™ã€‚Collabra ServerãŒã“ã®å±žæ€§ã«å…¥åŠ›ã™ã‚‹æƒ…å ±ã®ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆã¨æ€§è³ªã¯ã€äºˆå‘Šãªã—ã«å¤‰æ›´ã•ã‚Œã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚<P></A>
+
+<A NAME="1092033">
+例:<P></A>
+<PRE><A NAME="1092034">
+ nsnewsACL: 2:*:a:D::admin:bpolk::d:*:a:D::manager:admin::d:
+</A>
+</PRE>
+<A NAME="1272650">
+OID: <code>2.16.840.1.113730.3.1.191</code><P></A>
+
+<A NAME="1092036">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1037277">
+<A NAME="nsprettyname">
+<B>nsprettyname</B>
+</a></a>
+<P>
+
+
+<A NAME="1037278">
+ニュース グループã®æ´’è½ãŸåå‰ã¾ãŸã¯è¡¨ç¤ºåを識別ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯ã€æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€Collabra ServerãŒä½¿ç”¨ã—ã¦ã€<a href="attribut.htm#">nginfo</a>エントリã§å€‹ã€…ã®ãƒ‹ãƒ¥ãƒ¼ã‚¹ グループを識別ã—ã¾ã™ã€‚Collabra ServerãŒã“ã®å±žæ€§ã«å…¥åŠ›ã™ã‚‹æƒ…å ±ã®ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆã¨æ€§è³ªã¯ã€äºˆå‘Šãªã—ã«å¤‰æ›´ã•ã‚Œã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚<P></A>
+
+<A NAME="1037280">
+例:<P></A>
+<PRE><A NAME="1037281">
+ nsprettyname: MKTG FOR RACHU
+</A>
+</PRE>
+<A NAME="1272668">
+OID: <code>2.16.840.1.113730.3.1.193</code><P></A>
+
+<A NAME="1037283">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1122623">
+<A NAME="ntGroupAttributes">
+<B>ntGroupAttributes</B>
+</a></a>
+<P>
+
+
+<A NAME="1122625">
+NTåŒæœŸåŒ–サービスãŒã€NTグループã®å±žæ€§ä¿å­˜ã«ä½¿ç”¨ã™ã‚‹ãŸã‚予約。<P></A>
+
+<A NAME="1262720">
+OID: <code>1.2.840.113556.1.4.152</code><P></A>
+
+<A NAME="1251757">
+構文: <a href="attribut.htm#1004700">bin</a><P></A>
+<P>
+<A NAME="1122633">
+<A NAME="ntGroupCreateNewGroup">
+<B>ntGroupCreateNewGroup</B>
+</a></a>
+<P>
+
+
+<A NAME="1122635">
+NTåŒæœŸåŒ–サービスã®ä½¿ç”¨ã«äºˆç´„。<P></A>
+
+<A NAME="1258152">
+OID: <code>2.16.840.1.113730.3.1.45</code><P></A>
+
+<A NAME="1258154">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1103799">
+<A NAME="ntGroupDeleteGroup">
+<B>ntGroupDeleteGroup</B>
+</a></a>
+<P>
+
+
+<A NAME="1103800">
+NTåŒæœŸåŒ–サービスã®ä½¿ç”¨ã«äºˆç´„。<P></A>
+
+<A NAME="1258186">
+OID: <code>2.16.840.1.113730.3.1.46</code><P></A>
+
+<A NAME="1258188">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1103684">
+<A NAME="ntGroupDomainId">
+<B>ntGroupDomainId</B>
+</a></a>
+<P>
+
+
+<A NAME="1103686">
+NTåŒæœŸåŒ–サービスã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã€NT Global Groupname/Domainã‚’ä¿å­˜ã—ã¾ã™ã€‚<P></A>
+
+<A NAME="1258086">
+OID: <code>2.16.840.1.113730.3.1.44</code><P></A>
+
+<A NAME="1251773">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1104232">
+<A NAME="ntGroupId">
+<B>ntGroupId</B>
+</a></a>
+<P>
+
+
+<A NAME="1104233">
+未定義<P></A>
+
+<A NAME="1260150">
+OID: <code>2.16.840.1.113730.3.1.110</code><P></A>
+
+<A NAME="1104234">
+構文: <a href="attribut.htm#1004700">bin</a><P></A>
+<P>
+<A NAME="1283379">
+<A NAME="ntGroupType">
+<B>ntGroupType</B>
+</a></a>
+<P>
+
+
+<A NAME="1283380">
+2ã¤ã®æœ‰åŠ¹å€¤ã¯globalãŠã‚ˆã³localã§ã™ã€‚<P></A>
+
+<A NAME="1283381">
+OID: <code>2.16.840.1.113730.3.1.47</code><P></A>
+
+<A NAME="1283383">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1013839">&nbsp;
+</A>
+<A NAME="ntUserAcctExpires">
+<H3> ntUserAcctExpires</H3>
+</A>
+
+
+
+<A NAME="1013857">
+エントリã®Windows NTアカウント失効日を示ã—ã¾ã™ã€‚ã“ã®å€¤ã¯ã€GMTå½¢å¼ã®æ–‡å­—列ã¨ã—ã¦ä¿å­˜ã•ã‚Œã¾ã™ã€‚例:<P></A>
+<A NAME="1013887">
+<PRE> ntUserAcctExpires: 19961015203415Z
+</PRE>
+</A>
+
+<A NAME="1024626">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1014052">&nbsp;
+</A>
+<A NAME="ntUserAuthFlags">
+<H3> ntUserAuthFlags</H3>
+</A>
+
+
+
+<A NAME="1014053">
+Windowsãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã«ãŠã‘るエントリã®å‘½ä»¤ç‰¹æ¨©ãŒå«ã¾ã‚Œã‚‹ç¬¦å·ãªã—ã®é•·æ•´æ•°ã‚’示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1038769">
+<PRE> ntUserAuthFlags: AAAAAA==
+</PRE>
+</A>
+
+<A NAME="1038770">
+構文: <a href="attribut.htm#1004700">bin</a><P></A>
+
+
+<A NAME="1038772">&nbsp;
+</A>
+<A NAME="ntUserBadPwCount">
+<H3> ntUserBadPwCount</H3>
+</A>
+
+
+
+<A NAME="1014169">
+æ­£ã—ããªã„パスワードを使用ã—ã¦Windowsアカウントã«ãƒ­ã‚°ã‚ªãƒ³ã‚’試ã¿ãŸå›žæ•°ã‚’示ã—ã¾ã™ã€‚ 0xFFFFFFFFã®å€¤ã¯ã€å€¤ãŒä¸æ˜Žã§ã‚ã‚‹ã“ã¨ã‚’示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1014915">
+<PRE> ntUserBadPwCount: AAAAAA==
+</PRE>
+</A>
+
+<A NAME="1038807">
+構文: <a href="attribut.htm#1004700">bin</a><P></A>
+
+
+<A NAME="1014973">&nbsp;
+</A>
+<A NAME="ntUserCodePage">
+<H3> ntUserCodePage</H3>
+</A>
+
+
+
+<A NAME="1014989">
+ユーザーã®é¸æŠžè¨€èªžã®ã‚³ãƒ¼ãƒ‰ ページ。例:<P></A>
+<A NAME="1015015">
+<PRE> ntUserCodePage: AAAAAA==
+</PRE>
+</A>
+
+<A NAME="1246827">
+構文: <a href="attribut.htm#1004700">bin</a><P></A>
+
+
+<A NAME="1246829">&nbsp;
+</A>
+<A NAME="ntUsercomment">
+<H3> ntUsercomment</H3>
+</A>
+
+
+
+<A NAME="1246830">
+ã“ã®ã‚¨ãƒ³ãƒˆãƒªã«é–¢ã™ã‚‹è¨˜è¿°ã¾ãŸã¯æ³¨é‡ˆã‚’示ã™ASCII文字列。例:<P></A>
+<A NAME="1015193">
+<PRE> ntUserComment: Quality control inspector for the ME2873 <br>
+ product line
+</PRE>
+</A>
+
+<A NAME="1038675">
+構文: <a href="attribut.htm#1004702">cis </a><P></A>
+
+
+<A NAME="1015155">&nbsp;
+</A>
+<A NAME="ntUserCountryCode">
+<H3> ntUserCountryCode</H3>
+</A>
+
+
+
+<A NAME="1015217">
+ユーザーã®é¸æŠžè¨€èªžã®å›½ã‚³ãƒ¼ãƒ‰ã€‚例:<P></A>
+<A NAME="1015224">
+<PRE> ntUserCountryCode: AAAAAA==
+</PRE>
+</A>
+
+<A NAME="1038682">
+構文: <a href="attribut.htm#1004702">cis </a><P></A>
+
+
+<A NAME="1015239">&nbsp;
+</A>
+<A NAME="ntUserCreateNewAccount">
+<H3> ntUserCreateNewAccount</H3>
+</A>
+
+
+
+<A NAME="1015245">
+Directory Serverã®æ–°è¦ãƒ¦ãƒ¼ã‚¶ãƒ¼ エントリã«å¯¾å¿œã™ã‚‹NTユーザー アカウントを作æˆã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã‹ã©ã†ã‹ã‚’示ã—ã¾ã™ã€‚ ntUserCreateNewAccountã¯Directory Serverã‹ã‚‰ç·¨é›†ã§ãã¾ã™ã€‚ntUserCreateNewAccountãŒ<code>True</code>ã«è¨­å®šã•ã‚Œã¦ãŠã‚Šã€ã—ã‹ã‚‚特定ユーザーåã®NTアカウントãŒå­˜åœ¨ã—ãªã„å ´åˆã¯ã€NTアカウントãŒä½œæˆã•ã‚Œã¾ã™ã€‚ã“ã®å±žæ€§ãŒ<code>False</code>ã«è¨­å®šã•ã‚Œã¦ãŠã‚Šã€ã—ã‹ã‚‚NTアカウントãŒå­˜åœ¨ã—ãªã„å ´åˆã¯ã€ã‚¨ãƒ©ãƒ¼ãŒè¨˜éŒ²ã•ã‚Œã¾ã™ã€‚NTアカウントãŒå­˜åœ¨ã—ã€å±žæ€§ãŒ<code>False</code>ã«è¨­å®šã•ã‚Œã¦ã„ã‚‹å ´åˆã¯ã€æ—¢å­˜ã®NTアカウントãŒæ›´æ–°ã•ã‚Œã¾ã™ã€‚例:<P></A>
+<PRE><A NAME="1015264">
+ ntUserCreateNewAccount: true
+</A>
+</PRE>
+<A NAME="1258018">
+OID: <code>2.16.840.1.113730.3.1.42</code><P></A>
+
+<A NAME="1258029">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1015309">
+<A NAME="NTUserDelete">
+<B>ntUserDeleteAccount</B>
+</a></a>
+<P>
+<A NAME="1015321">
+Directory Serverã‹ã‚‰ã‚¨ãƒ³ãƒˆãƒªã‚’削除ã™ã‚‹éš›ã«NTユーザー アカウントを削除ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã‹ã©ã†ã‹ã‚’示ã—ã¾ã™ã€‚ntUserDeleteAccountã¯Directory Serverã‹ã‚‰ç·¨é›†ã§ãã¾ã™ã€‚ã“ã®å±žæ€§ãŒ<code>true</code>ã«è¨­å®šã•ã‚Œã¦ã„ã‚‹å ´åˆã¯ã€Directory Serverã‹ã‚‰ã‚¨ãƒ³ãƒˆãƒªã‚’削除ã™ã‚‹ã¨ NTユーザー アカウントãŒå‰Šé™¤ã•ã‚Œã¾ã™ã€‚ã“ã®å±žæ€§ãŒ<code>false</code>ã«è¨­å®šã•ã‚Œã¦ã„ã‚‹å ´åˆã¯ã€NTユーザー アカウントã¯å‰Šé™¤ã•ã‚Œã¾ã›ã‚“。ntUserエントリã®å‰Šé™¤ã®è©³ç´°ã¯ã€ã€ŒNTUserエントリã®å‰Šé™¤ã€ã‚’ã”覧ãã ã•ã„。例:<P></A>
+<A NAME="1015367">
+<PRE> ntUserDeleteAccount: true
+</PRE>
+</A>
+
+<A NAME="1038688">
+構文: <a href="attribut.htm#1004702">cis </a><P></A>
+<P>
+<A NAME="1015403">
+<A NAME="ntUserDomainId">
+<B>ntUserDomainId</B>
+</a></a>
+<P>
+
+
+<A NAME="1015422">
+エントリã®NTドメインåã¨ãƒ¦ãƒ¼ã‚¶ãƒ¼åã‚’NT-domain-name:NT-usernameã®å½¢å¼ã§ç¤ºã—ã¾ã™ã€‚NTUserDomainIdã¯Directory Serverã‹ã‚‰ç·¨é›†ã§ãã¾ã™ã€‚例:<P></A>
+<A NAME="1015476">
+<PRE> ntUserDomainId: workgroup:jsmith
+</PRE>
+</A>
+
+<A NAME="1038691">
+構文: <a href="attribut.htm#1004702">cis </a><P></A>
+<P>
+<A NAME="1015534">
+<A NAME="ntUserFlags">
+<B>ntUserFlags</B>
+</a></a>
+<P>
+
+
+<A NAME="1015550">
+ユーザーã¨ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã«é–¢ã™ã‚‹ã„ãã¤ã‹ã®æ©Ÿèƒ½ã‚’判定ã™ã‚‹å€¤ã‚’示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1015561">
+<PRE> ntUserFlags: AQIBAA==
+</PRE>
+</A>
+
+<A NAME="1038821">
+構文: <a href="attribut.htm#1004700">bin</a><P></A>
+
+
+<A NAME="1015584">&nbsp;
+</A>
+<A NAME="ntUserHomeDir">
+<H3> ntUserHomeDir</H3>
+</A>
+
+
+
+<A NAME="1015596">
+ユーザーã®ãƒ›ãƒ¼ãƒ  ディレクトリã®ãƒ‘スを示ã™ASCII文字列。文字列ã«ã¯ãƒŒãƒ«ã‚’使用ã§ãã¾ã™ã€‚例:<P></A>
+<A NAME="1015610">
+<PRE> ntUserHomeDir: c:\u\d78\jsmith\
+</PRE>
+</A>
+
+<A NAME="1038694">
+構文: <a href="attribut.htm#1004702">cis </a><P></A>
+<P>
+<A NAME="1015624">
+<A NAME="ntUserHomeDirDrive">
+<B>ntUserHomeDirDrive</B>
+</a></a>
+<P>
+
+
+<A NAME="1015648">
+ユーザーã®ãƒ›ãƒ¼ãƒ  ディレクトリã«å‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸãƒ‰ãƒ©ã‚¤ãƒ–ã®æ–‡å­—を示ã™ASCII文字列。例:<P></A>
+<A NAME="1015659">
+<PRE> ntUserHomeDirDrive: c:
+</PRE>
+</A>
+
+<A NAME="1038697">
+構文: <a href="attribut.htm#1004702">cis </a><P></A>
+<P>
+<A NAME="1015682">
+<A NAME="ntUserLastLogoff">
+<B>ntUserLastLogoff</B>
+</a></a>
+<P>
+
+
+<A NAME="1015726">
+最後ã®ãƒ­ã‚°ã‚ªãƒ•æ™‚刻を示ã—ã¾ã™ã€‚ã“ã®å€¤ã¯GMTå½¢å¼ã®æ–‡å­—列ã¨ã—ã¦ä¿å­˜ã•ã‚Œã¾ã™ã€‚例:<P></A>
+<A NAME="1015727">
+<PRE> ntUserLastLogoff: 19961015203415Z
+</PRE>
+</A>
+
+<A NAME="1019703">
+セキュリティ ログãŒã‚ªãƒ³ã«ãªã£ã¦ã„ã¦ã€ãã®ä»–ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ エントリã«å¤‰æ›´ã•ã‚Œã¦ã„ã‚‹ã‚‚ã®ãŒã‚ã‚‹å ´åˆã«é™ã‚Šã€ã“ã®å±žæ€§ãŒåŒæœŸåŒ–ã®éš›ã«æ›´æ–°ã•ã‚Œã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。<P></A>
+
+<A NAME="1038700">
+構文: <a href="attribut.htm#1004702">cis </a><P></A>
+<P>
+<A NAME="1015722">
+<A NAME="ntUserLastLogon">
+<B>ntUserLastLogon</B>
+</a></a>
+<P>
+
+
+<A NAME="1015750">
+最後ã®ãƒ­ã‚°ã‚ªãƒ³æ™‚刻を示ã—ã¾ã™ã€‚ã“ã®å€¤ã¯GMTå½¢å¼ã®æ–‡å­—列ã¨ã—ã¦ä¿å­˜ã•ã‚Œã¾ã™ã€‚例:<P></A>
+<A NAME="1015751">
+<PRE> ntUserLastLogon: 19961015203415Z
+</PRE>
+</A>
+
+<A NAME="1019919">
+セキュリティ ログãŒã‚ªãƒ³ã«ãªã£ã¦ã„ã¦ã€ãã®ä»–ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ エントリã«å¤‰æ›´ã•ã‚Œã¦ã„ã‚‹ã‚‚ã®ãŒã‚ã‚‹å ´åˆã«é™ã‚Šã€ã“ã®å±žæ€§ãŒåŒæœŸåŒ–ã®éš›ã«æ›´æ–°ã•ã‚Œã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。<P></A>
+
+<A NAME="1038703">
+構文: <a href="attribut.htm#1004702">cis </a><P></A>
+<P>
+<A NAME="1015746">
+<A NAME="ntUserLogonHours">
+<B>ntUserLogonHours</B>
+</a></a>
+<P>
+
+
+<A NAME="1015787">
+ユーザーãŒãƒ­ã‚°ã‚ªãƒ³å¯èƒ½ãªæ™‚間帯を示ã—ã¾ã™ã€‚時刻ã¯ã€æ–‡å­—列内ã«ãŠã„ã¦æ›œæ—¥ã®æ™‚é–“ã¨ãƒ“ットã¨ã®1対1対応ã§ç¤ºã•ã‚Œã¾ã™ã€‚例ãˆã°ã€ãƒ“ット 0ワード0ã¯æ—¥æ›œã® 0:00ã‹ã‚‰0:59ã§ã™ã€‚ビット1 ワード0ã¯æ—¥æ›œã®1:00ã‹ã‚‰1:59ã§ã™ã€‚例:<P></A>
+<A NAME="1015803">
+<PRE> ntUserLogonHours: ///1000011100000101111111...
+</PRE>
+</A>
+
+<A NAME="1019921">
+セキュリティ ログãŒã‚ªãƒ³ã«ãªã£ã¦ã„ã¦ã€ãã®ä»–ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ エントリã«å¤‰æ›´ã•ã‚Œã¦ã„ã‚‹ã‚‚ã®ãŒã‚ã‚‹å ´åˆã«é™ã‚Šã€ã“ã®å±žæ€§ãŒåŒæœŸåŒ–ã®éš›ã«æ›´æ–°ã•ã‚Œã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。<P></A>
+
+<A NAME="1038824">
+構文: <a href="attribut.htm#1004700">bin</a><P></A>
+
+
+<A NAME="1015839">&nbsp;
+</A>
+<A NAME="ntUserLogonServer">
+<H3> ntUserLogonServer</H3>
+</A>
+
+
+
+<A NAME="1015859">
+ユーザーã®ãƒ­ã‚°ã‚ªãƒ³è¦æ±‚ãŒé€ä¿¡ã•ã‚ŒãŸã‚µãƒ¼ãƒãƒ¼åを示ã™ASCII文字列。サーãƒãƒ¼åã¯2個ã®ãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥(\\)ã«ã‚ˆã£ã¦å…ˆè¡Œã•ã‚Œãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。\\*ã®ã‚µãƒ¼ãƒãƒ¼åã¯ã€ãƒ­ã‚°ã‚ªãƒ³è¦æ±‚ãŒä»»æ„ã®ãƒ­ã‚°ã‚ªãƒ³ã‚µãƒ¼ãƒãƒ¼ã«ã‚ˆã£ã¦å‡¦ç†å¯èƒ½ãªã“ã¨ã‚’示ã—ã¾ã™ã€‚ヌル文字列ã¯ã€è¦æ±‚ãŒãƒ‰ãƒ¡ã‚¤ãƒ³ コントローラã«é€ä¿¡ã•ã‚Œã‚‹ã“ã¨ã‚’示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1015953">
+<PRE> ntUserLogonServer: \\firefly
+</PRE>
+</A>
+
+<A NAME="1038706">
+構文: <a href="attribut.htm#1004702">cis </a><P></A>
+<P>
+<A NAME="1015984">
+<A NAME="ntUserMaxStorage">
+<B>ntUserMaxStorage</B>
+</a></a>
+<P>
+
+
+<A NAME="1015997">
+ユーザーãŒä½¿ç”¨ã§ãる最大ディスク容é‡ã€‚例:<P></A>
+<A NAME="1016004">
+<PRE> ntUserMaxStorage: ///////W==
+</PRE>
+</A>
+
+<A NAME="1038827">
+構文: <a href="attribut.htm#1004700">bin</a><P></A>
+
+
+<A NAME="1016030">&nbsp;
+</A>
+<A NAME="ntUserNumLogons">
+<H3> ntUserNumLogons</H3>
+</A>
+
+
+
+<A NAME="1016043">
+ã“ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã«æˆåŠŸã—ãŸãƒ­ã‚°ã‚ªãƒ³å›žæ•°ã‚’示ã—ã¾ã™ã€‚0xFFFFFFFFã®å€¤ã¯ã€å€¤ãŒä¸æ˜Žã§ã‚ã‚‹ã“ã¨ã‚’示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1016085">
+<PRE> ntUserNumLogons: WwAAAA==
+</PRE>
+</A>
+
+<A NAME="1038830">
+構文: <a href="attribut.htm#1004700">bin</a><P></A>
+
+
+<A NAME="1021575">&nbsp;
+</A>
+<A NAME="ntUserParms">
+<H3> ntUserParms</H3>
+</A>
+
+
+
+<A NAME="1021584">
+アプリケーションã«ã‚ˆã‚‹ä½¿ç”¨ã®ãŸã‚ã«äºˆç´„ã•ã‚Œã¦ã„るユニコード文字列。例:<P></A>
+<A NAME="1021587">
+<PRE> ntUserParms: Temp date is today
+</PRE>
+</A>
+
+<A NAME="1038709">
+構文: <a href="attribut.htm#1004702">cis </a><P></A>
+<P>
+<A NAME="1016157">
+<A NAME="ntUserPasswordExpired">
+<B>ntUserPasswordExpired</B>
+</a></a>
+<P>
+
+
+<A NAME="1259827">
+ユーザーã®NTパスワードãŒå¤±åŠ¹ã—ã¦ã„ã‚‹ã‹ã©ã†ã‹ã‚’示ã—ã¾ã™ã€‚パスワードãŒå¤±åŠ¹ã—ã¦ã„ãªã„å ´åˆã¯å€¤ã¯ã‚¼ãƒ­ã§ã€å¤±åŠ¹ã—ã¦ã„ã‚‹å ´åˆã¯éžã‚¼ãƒ­ã§ã™ã€‚例:<P></A>
+<PRE><A NAME="1259828">
+ ntUserPasswordExpired: AAAAAA==
+</A>
+</PRE>
+<A NAME="1259829">
+OID: <code>2.16.840.1.113730.3.1.68</code><P></A>
+
+<A NAME="1038833">
+構文: <a href="attribut.htm#1004700">bin</a><P></A>
+
+
+<A NAME="1016246">&nbsp;
+</A>
+<A NAME="ntUserPrimaryGroupId">
+<H3> ntUserPrimaryGroupId</H3>
+</A>
+
+
+
+<A NAME="1016259">
+ユーザーã«ã¤ã„ã¦ã®Primary Global Groupã®ç›¸å¯¾ID (RID)を示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1016262">
+<PRE> ntUserPrimaryGroupId: AQJAAA==
+</PRE>
+</A>
+
+<A NAME="1038836">
+構文: <a href="attribut.htm#1004700">bin</a><P></A>
+
+
+<A NAME="1017849">&nbsp;
+</A>
+<A NAME="ntUserPriv">
+<H3> ntUserPriv</H3>
+</A>
+
+
+
+<A NAME="1017863">
+Windowsãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã«ãŠã‘るユーザーã®ç‰¹æ¨©ãƒ¬ãƒ™ãƒ«ã‚’示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1017866">
+<PRE> ntUserPriv: AgAAAA==
+</PRE>
+</A>
+
+<A NAME="1038839">
+構文: <a href="attribut.htm#1004700">bin</a><P></A>
+
+
+<A NAME="1016298">&nbsp;
+</A>
+<A NAME="ntUserProfile">
+<H3> ntUserProfile</H3>
+</A>
+
+
+
+<A NAME="1016315">
+ユーザーã®ãƒ—ロフィールã¸ã®ãƒ‘スを示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1016326">
+<PRE> ntUserProfile: c:\u\d78\jsmith\profile.txt
+</PRE>
+</A>
+
+<A NAME="1038712">
+構文: <a href="attribut.htm#1004702">cis </a><P></A>
+<P>
+<A NAME="1016395">
+<A NAME="ntUserScriptPath">
+<B>ntUserScriptPath</B>
+</a></a>
+<P>
+
+
+<A NAME="1016433">
+ユーザーã®ãƒ­ã‚°ã‚¤ãƒ³ スクリプトã¸ã®ãƒ‘スを示ã™ASCII文字列。例:<P></A>
+<A NAME="1016470">
+<PRE> ntUserScriptPath: c:\u\d78\jsmith\lscript.bat
+</PRE>
+</A>
+
+<A NAME="1038715">
+構文: <a href="attribut.htm#1004702">cis </a><P></A>
+<P>
+<A NAME="1016531">
+<A NAME="ntUserUniqueId">
+<B>ntUserUniqueId</B>
+</a></a>
+<P>
+
+
+<A NAME="1016564">
+ユーザーã®ç›¸å¯¾ID (RID)を示ã—ã¾ã™ã€‚RIDã¯ã€ãƒ‰ãƒ¡ã‚¤ãƒ³å†…ã®SAMã«å¯¾ã—ユーザーã®èº«åˆ†ã‚’証明ã™ã‚‹ã‚‚ã®ã§ã™ã€‚例:<P></A>
+<A NAME="1016605">
+<PRE> ntUserUniqueId: 6AMAAA==
+</PRE>
+</A>
+
+<A NAME="1038842">
+構文: <a href="attribut.htm#1004700">bin</a><P></A>
+
+
+<A NAME="1016632">&nbsp;
+</A>
+<A NAME="ntUserUnitsPerWeek">
+<H3> ntUserUnitsPerWeek</H3>
+</A>
+
+
+
+<A NAME="1016672">
+ntUserLogonHoursã®é•·ã•ã‚’計算ã™ã‚‹ãŸã‚ã«ã€é€±ã‚’å‡ç­‰ã®æ™‚é–“å˜ä½ã«åˆ†å‰²ã™ã‚‹æ•°ã‚’示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1016675">
+<PRE> ntUserUnitsPerWeek: qAAAAA==
+</PRE>
+</A>
+
+<A NAME="1038845">
+構文: <a href="attribut.htm#1004700">bin</a><P></A>
+
+
+<A NAME="1016696">&nbsp;
+</A>
+<A NAME="ntUserusrComment">
+<H3> ntUserusrComment</H3>
+</A>
+
+
+
+<A NAME="1016715">
+ã“ã®ã‚¨ãƒ³ãƒˆãƒªã«é–¢ã™ã‚‹è¨˜è¿°ã¾ãŸã¯æ³¨é‡ˆã‚’示ã™ASCII文字列。例:<P></A>
+<A NAME="1016716">
+<PRE> ntUserComment: Quality control inspector for the ME2873 <br>
+ product line
+</PRE>
+</A>
+
+<A NAME="1038718">
+構文: <a href="attribut.htm#1004702">cis </a><P></A>
+<P>
+<A NAME="1016728">
+<A NAME="ntUserWorkstations">
+<B>ntUserWorkstations</B>
+</a></a>
+<P>
+
+
+<A NAME="1016750">
+ユーザーãŒãƒ­ã‚°ã‚ªãƒ³ã™ã‚‹ã®ã«ä½¿ç”¨ãƒ¯ãƒ¼ã‚¯ã‚¹ãƒ†ãƒ¼ã‚·ãƒ§ãƒ³åを示ã™ASCII文字列。カンマã§åŒºåˆ‡ã£ã¦ã€æœ€é«˜8å°ã®ãƒ¯ãƒ¼ã‚¯ã‚¹ãƒ†ãƒ¼ã‚·ãƒ§ãƒ³ã‚’指定ã§ãã¾ã™ã€‚ä»»æ„ã®ãƒ¯ãƒ¼ã‚¯ã‚¹ãƒ†ãƒ¼ã‚·ãƒ§ãƒ³ã‹ã‚‰ãƒ­ã‚°ã‚ªãƒ³ã™ã‚‹å ´åˆã¯ãƒŒãƒ«ã‚’使用ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1016869">
+<PRE> ntUserWorkstations: firefly
+</PRE>
+</A>
+
+<A NAME="1038721">
+構文: <a href="attribut.htm#1004702">cis </a><P></A>
+<P>
+<A NAME="1281611">
+<A NAME="o">
+<B>o</B>
+</a></a>
+<P>
+
+
+<A NAME="1281612">
+組織åを指定ã—ã¾ã™ã€‚例:<P></A>
+<PRE><A NAME="1281613">
+ organizationName: Airius, Inc.
+</A>
+</PRE>
+<A NAME="1281614">
+ã¾ãŸã¯<P></A>
+<PRE><A NAME="1281615">
+ o: Airius, Inc
+</A>
+</PRE>
+<A NAME="1281616">
+ç•¥å·: o<P></A>
+
+<A NAME="1281617">
+OID: <code>2.5.4.10</code><P></A>
+
+<A NAME="1281619">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1229677">
+<A NAME="objectClass">
+<B>objectClass</B>
+</a></a>
+<P>
+
+
+<A NAME="1229678">
+ディレクトリサーãƒãƒ¼ã®ä½¿ç”¨ã«äºˆç´„。<P></A>
+
+<A NAME="1229681">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1242815">&nbsp;
+</A>
+<A NAME="objectClasses">
+<H3> objectClasses</H3>
+</A>
+
+
+
+<A NAME="1242816">
+予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1242819">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1202192">&nbsp;
+</A>
+<A NAME="obsoletedByDocument">
+<H3> obsoletedByDocument</H3>
+</A>
+
+
+
+<A NAME="1202193">
+ドキュメント エントリを使用ã—ãªããªã£ãŸãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã®è­˜åˆ¥åãŒå«ã¾ã‚Œã¾ã™ã€‚<P></A>
+
+<A NAME="1202196">
+構文: <a href="attribut.htm#1100403">dn</a><P></A>
+
+
+<A NAME="1202199">&nbsp;
+</A>
+<A NAME="obsoletesDocument">
+<H3> obsoletesDocument</H3>
+</A>
+
+
+
+<A NAME="1217320">
+ドキュメント エントリã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œãªããªã£ãŸãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã®è­˜åˆ¥åãŒå«ã¾ã‚Œã¾ã™ã€‚<P></A>
+
+<A NAME="1202203">
+構文: <a href="attribut.htm#1100403">dn</a><P></A>
+
+
+<A NAME="1202208">&nbsp;
+</A>
+<A NAME="organizationalStatus">
+<H3> organizationalStatus</H3>
+</A>
+
+
+
+<A NAME="1214388">
+組織ã«ãŠã„ã¦ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒé »ç¹ã«å‚ç…§ã•ã‚Œã‚‹ã‚«ãƒ†ã‚´ãƒªã‚’示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1214389">
+<PRE> organizationalStatus: researcher
+</PRE>
+</A>
+
+<A NAME="1240989">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1202220">&nbsp;
+</A>
+<A NAME="otherMailbox">
+<H3> otherMailbox</H3>
+</A>
+
+
+
+<A NAME="1214414">
+X.400ã¨rfc822以外ã®é›»å­ãƒ¡ãƒ¼ãƒ«ãƒœãƒƒã‚¯ã‚¹ タイプã®å€¤ã‚’示ã—ã¾ã™ã€‚<P></A>
+
+<A NAME="1202221">
+. 例:<P></A>
+<A NAME="1202222">
+<PRE> otherMailbox: internet $ jdoe@airius.com
+</PRE>
+</A>
+
+<A NAME="1202224">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1241174">&nbsp;
+</A>
+<A NAME="ou">
+<H3> ou</H3>
+</A>
+
+
+
+<A NAME="1241175">
+組織å˜ä½åを示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1241176">
+<PRE> organizationUnitName: Marketing
+</PRE>
+</A>
+
+<A NAME="1241177">
+ã¾ãŸã¯ã€<P></A>
+<A NAME="1241178">
+<PRE> ou: Marketing
+</PRE>
+</A>
+
+<A NAME="1241180">
+<a href="attribut.htm#">ç•¥å·</a>: ou<P></A>
+
+<A NAME="1241182">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1005719">&nbsp;
+</A>
+<A NAME="owner">
+<H3> owner</H3>
+</A>
+
+
+
+<A NAME="1005732">
+エントリã®è²¬ä»»è€…ã®è­˜åˆ¥å (DN - distinguished name)を示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1005743">
+<PRE> owner: <I>cn=John Smith, o=Netscape Communications Corp., c=US
+</I></PRE>
+</A>
+
+<A NAME="1005754">
+構文: <a href="attribut.htm#1100403">dn</a><P></A>
+
+
+<A NAME="1003070">&nbsp;
+</A>
+<A NAME="pager">
+<H3> pager</H3>
+</A>
+
+
+
+<A NAME="1003071">
+エントリã®ãƒã‚±ãƒƒãƒˆãƒ™ãƒ«ç•ªå·ã‚’示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1003777">
+<PRE> pagerTelephoneNumber: 415-555-6789
+</PRE>
+</A>
+
+<A NAME="1011248">
+ã¾ãŸã¯ã€<P></A>
+<A NAME="1011258">
+<PRE> pager: 415-555-6789
+</PRE>
+</A>
+
+<A NAME="1003795">
+<a href="attribut.htm#">ç•¥å·</a>: pager<P></A>
+
+<A NAME="1011303">
+構文: <a href="attribut.htm#1004703">tel</a><P></A>
+
+
+<A NAME="1157269">&nbsp;
+</A>
+<A NAME="passwordChange">
+<H3> passwordChange</H3>
+</A>
+
+
+
+<A NAME="1157270">
+ユーザーã«ã‚ˆã‚‹ãƒ‘スワードã®å¤‰æ›´ãŒã€å¿…é ˆã€å¯èƒ½ã€ä¸å¯èƒ½ã®ã„ãšã‚Œã§ã‚ã‚‹ã‹å®šç¾©ã—ã¾ã™ã€‚有効値ã¯ã€<code>must</code>ã€<code>may</code>ã€ã¾ãŸã¯<code>no</code>ã§ã™ã€‚<code>must</code>ã®å€¤ã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒæŒ‡å®šé–“éš”ã§ãƒ‘スワードを変更ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã“ã¨ã‚’示æ„味ã—ã¾ã™ã€‚<code>may</code>ã®å€¤ã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒãƒ‘スワードを変更ã§ãã‚‹ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚<code>no</code>ã®å€¤ã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒãƒ‘スワードを変更ã§ããªã„ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1157271">
+<PRE> passwordChange: <code>no
+</code></PRE>
+</A>
+
+<A NAME="1157273">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1157285">&nbsp;
+</A>
+<A NAME="passwordCheck構文">
+<H3>passwordCheck構文</H3>
+</A>
+
+
+
+<A NAME="1157402">
+パスワードã®æ§‹æ–‡ãƒã‚§ãƒƒã‚¯ãŒã‚ªãƒ³ã€ã‚ªãƒ•ã®ã„ãšã‚Œã§ã‚ã‚‹ã‹å®šç¾©ã—ã¾ã™ã€‚許容値ã¯<code>1</code>ãŠã‚ˆã³<code>0</code>ã§ã€<code>1</code>ã¯æ§‹æ–‡ãƒã‚§ãƒƒã‚¯ãŒã‚ªãƒ³ã€<code>0</code>ã¯æ§‹æ–‡ãƒã‚§ãƒƒã‚¯ãŒã‚ªãƒ•ã§ã‚ã‚‹ã®ã‚’æ„味ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1157287">
+<PRE> passwordCheck構文: 0
+</PRE>
+</A>
+
+<A NAME="1157289">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1155167">&nbsp;
+</A>
+<A NAME="passwordExp">
+<H3>passwordExp</H3>
+</A>
+
+
+
+<A NAME="1155169">
+ユーザ パスワードãŒæœŸé™åˆ‡ã‚Œã«ãªã‚‹ã‹ã©ã†ã‹ã‚’定義ã—ã¾ã™ã€‚許容値ã¯<code>1</code>ãŠã‚ˆã³<code>0</code>ã§ã€<code>1</code>ã¯ãƒ‘スワードãŒæœŸé™åˆ‡ã‚Œã«ãªã‚‹ã“ã¨ã€<code>0</code>ã¯ãƒ‘スワードãŒæœŸé™åˆ‡ã‚Œã—ãªã„ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1155249">
+<PRE> passwordExp: 0
+</PRE>
+</A>
+
+<A NAME="1155171">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1246150">&nbsp;
+</A>
+<A NAME="passwordExpWarned">
+<H3>passwordExpWarned</H3>
+</A>
+
+
+
+<A NAME="1246152">
+ユーザーã«é€ä¿¡ã•ã‚Œã‚‹ãƒ‘スワード失効警告を追跡ã™ã‚‹ãŸã‚ã«ã€Directory ServerãŒä½¿ç”¨ã—ã¾ã™ã€‚許容値ã¯<code>1</code>ã¨<code>0</code>ã§ã€<code>1</code>ã¯è­¦å‘ŠãŒãƒ¦ãƒ¼ã‚¶ãƒ¼ã«é€ä¿¡ã•ã‚Œã‚‹ã“ã¨ã€ <code>0</code>ã¯è­¦å‘ŠãŒãƒ¦ãƒ¼ã‚¶ãƒ¼ã«é€ä¿¡ã•ã‚Œãªã„ã“ã¨æ„味ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1246153">
+<PRE> passwordExpWarned: 0
+</PRE>
+</A>
+
+<A NAME="1246155">
+構文: <a href="attribut.htm#1004702">cis operational</a><P></A>
+
+<A NAME="1246156">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1103904">&nbsp;
+</A>
+<A NAME="passwordExpirationTime">
+<H3>passwordExpirationTime</H3>
+</A>
+
+
+
+<A NAME="1166092">
+ユーザã®ãƒ‘スワードãŒæœŸé™åˆ‡ã‚Œã«ãªã‚‹ã¾ã§ã®æ™‚間を秒数ã§å®šç¾©ã—ã¾ã™ã€‚<P></A>
+<A NAME="1166093">
+<PRE> passwordExpirationTime: 8640000
+</PRE>
+</A>
+
+<A NAME="1104141">
+構文: <a href="attribut.htm#1004702">cis operational</a><P></A>
+
+<A NAME="1166110">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+<P>
+<A NAME="1293088">
+<A NAME="passwordExpWarned">
+<B>passwordExpWarned</B>
+</a></a>
+<P>
+
+
+<A NAME="1293090">
+Directory ServerãŒä½¿ç”¨ã—ã¦ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«é€ä¿¡ã•ã‚Œã‚‹ãƒ‘スワード失効警告を追跡ã—ã¾ã™ã€‚許容値ã¯<code>1</code>ãŠã‚ˆã³<code>0</code>ã§ã€<code>1</code>ã¯è­¦å‘ŠãŒãƒ¦ãƒ¼ã‚¶ãƒ¼ã«é€ä¿¡ã•ã‚ŒãŸã“ã¨ã€<code>0</code>ã¯è­¦å‘ŠãŒãƒ¦ãƒ¼ã‚¶ãƒ¼ã«é€ä¿¡ã•ã‚Œã¦ã„ãªã„ã“ã¨æ„味ã—ã¾ã™ã€‚例:<P></A>
+<PRE><A NAME="1293091">
+ passwordExpWarned: 0
+</A>
+</PRE>
+<A NAME="1293092">
+OID: <code>2.16.840.1.113730.3.1.92</code><P></A>
+
+<A NAME="1293095">
+構文: <a href="attribut.htm#1004702">cis </a><a href="attribut.htm#1251525">operational</a><P></A>
+<P>
+
+<A NAME="1104144">
+<A NAME="passwordHistory">
+<B>passwordHistory</B>
+</a></a>
+<P>
+
+
+<A NAME="1155016">
+ユーザ パスワードã®å±¥æ­´ã‚’å«ã¿ã¾ã™ã€‚例:<P></A>
+
+<A NAME="1104110">
+構文: <a href="attribut.htm#1004700">bin operational</a><P></A>
+
+<A NAME="1166119">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+<P>
+<A NAME="1104470">
+<A NAME="passwordInHistory">
+<B>passwordInHistory</B>
+</a></a>
+<P>
+
+
+<A NAME="1104471">
+パスワード履歴ãŒä¿å­˜ã•ã‚Œã¦ã„ã‚‹å ´åˆã€ã“ã®å±žæ€§å€¤ã¯å±¥æ­´ãƒªã‚¹ãƒˆã«ä¿å­˜ã•ã‚Œã‚‹ã‚¨ãƒ³ãƒˆãƒªã®æ•°ã‚’定義ã—ã¾ã™ã€‚例:<P></A>
+<PRE><A NAME="1157501">
+ passwordInHistory: 6
+</A>
+</PRE>
+<A NAME="1260030">
+OID: <code>2.16.840.1.113730.3.1.101</code><P></A>
+
+<A NAME="1104473">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1166153">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1156663">
+<A NAME="passwordKeepHistory">
+<B>passwordKeepHistory</B>
+</a></a>
+<P>
+
+
+<A NAME="1156665">
+ユーザ パスワードã®å±¥æ­´ã‚’ä¿å­˜ã™ã‚‹ã‹ã©ã†ã‹ã‚’定義ã—ã¾ã™ã€‚許容値ã¯<code>1</code>ãŠã‚ˆã³<code>0</code>ã§ã€<code>1</code>ã¯å±¥æ­´ã‚’ä¿å­˜ã™ã‚‹ã“ã¨ã€<code>0</code>ã¯å±¥æ­´ã‚’ä¿å­˜ã—ãªã„ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1156666">
+<PRE> passwordKeepHistory: 0
+</PRE>
+</A>
+
+<A NAME="1156668">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1166196">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1156671">&nbsp;
+</A>
+<A NAME="passwordLockout">
+<H3>passwordLockout</H3>
+</A>
+
+
+
+<A NAME="1156672">
+ディレクトリã¸ã®ãƒã‚¤ãƒ³ãƒ‰å¤±æ•—ãŒé€£ç¶šã—ãŸå ´åˆã€ãƒ¦ãƒ¼ã‚¶ã‚’ç· ã‚出ã™ã‹ã©ã†ã‹ã‚’定義ã—ã¾ã™ã€‚許容値ã¯<code>1</code>ãŠã‚ˆã³<code>0</code>ã§ã€1ã¯ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒç· ã‚出ã•ã‚Œã‚‹ã“ã¨ã€0ã¯ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒç· ã‚出ã•ã‚Œãªã„ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1156673">
+<PRE> passwordLockout: 0
+</PRE>
+</A>
+
+<A NAME="1156675">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1166205">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1104188">&nbsp;
+</A>
+<A NAME="passwordLockoutDuration">
+<H3> passwordLockoutDuration</H3>
+</A>
+
+
+
+<A NAME="1104189">
+ディレクトリã‹ã‚‰ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’ç· ã‚出ã™æ™‚間を秒å˜ä½ã§å®šç¾©ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1155990">
+<PRE> passwordLockoutDuration: 600
+</PRE>
+</A>
+
+<A NAME="1104190">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1166333">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1166286">&nbsp;
+</A>
+<A NAME="passwordMaxAge">
+<H3> passwordMaxAge</H3>
+</A>
+
+
+
+<A NAME="1166287">
+パスワード失効ã¾ã§ã®ãƒ‘スワードã®ä½¿ç”¨æ™‚間を秒å˜ä½ã§å®šç¾©ã—ã¾ã™ã€‚<P></A>
+<A NAME="1166288">
+<PRE> passwordMaxAge: 8640000
+</PRE>
+</A>
+
+<A NAME="1104336">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1166368">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1104715">&nbsp;
+</A>
+<A NAME="passwordMaxFailure">
+<H3>passwordMaxFailure</H3>
+</A>
+
+
+
+<A NAME="1104716">
+ディレクトリã¸ã®ãƒã‚¤ãƒ³ãƒ‰å¤±æ•—を指定回数繰り返ã—ãŸã‚‰ã€ãƒ¦ãƒ¼ã‚¶ã‚’締出ã™ã‚ˆã†ã‚µãƒ¼ãƒã«æŒ‡ç¤ºã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1155781">
+<PRE> passwordMaxFailure: 3
+</PRE>
+</A>
+
+<A NAME="1104718">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1166400">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1104413">&nbsp;
+</A>
+<A NAME="passwordMinLength">
+<H3>passwordMinLength</H3>
+</A>
+
+
+
+<A NAME="1104414">
+ユーザ パスワードã«å¿…è¦ãªæœ€ä½Žã®æ–‡å­—数を定義ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1156233">
+<PRE> passwordMinLength: 6
+</PRE>
+</A>
+
+<A NAME="1104416">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1166409">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1104754">&nbsp;
+</A>
+<A NAME="passwordResetDuration">
+<H3> passwordResetDuration</H3>
+</A>
+
+
+
+<A NAME="1157530">
+ユーザーã®ç· å‡ºã—ã‹ã‚‰ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ãƒ‘スワードå†å…¥åŠ›å›žæ•°ã‚’ゼロã«è¨­å®šã—ç›´ã™ã¾ã§ã®æ™‚間を秒å˜ä½ã§å®šç¾©ã—ã¾ã™ã€‚<P></A>
+<A NAME="1157650">
+<PRE> passwordResetDuration: 600
+</PRE>
+</A>
+
+<A NAME="1104757">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1166437">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1103999">&nbsp;
+</A>
+<A NAME="passwordRetryCount">
+<H3>passwordRetryCount</H3>
+</A>
+
+
+
+<A NAME="1104000">
+ユーザãŒé–“é•ã£ãŸãƒ‘スワードを使ã£ã¦ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã¸ã®ãƒã‚¤ãƒ³ãƒ‰ã‚’試ã¿ãŸå›žæ•°ã‚’å«ã¿ã¾ã™ã€‚<P></A>
+<A NAME="1154824">
+<PRE> passwordRetryCount: 3
+</PRE>
+</A>
+
+<A NAME="1104001">
+構文: <a href="attribut.htm#1004702">cis operational</a><P></A>
+
+<A NAME="1166462">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1156969">&nbsp;
+</A>
+<A NAME="passwordUnlock">
+<H3>passwordUnlock</H3>
+</A>
+
+
+
+<A NAME="1157793">
+ディレクトリã¸ã®ãƒã‚¤ãƒ³ãƒ‰ã‚’指定回数失敗ã—ãŸå ´åˆã€ãƒ¦ãƒ¼ã‚¶ã‚’永久ã«ç· ã‚出ã™ã‹ã©ã†ã‹ã‚’指定ã—ã¾ã™ã€‚許容値ã¯<code>1</code>ãŠã‚ˆã³<code>0</code>ã§ã€<code>1</code>ã¯ãƒ¦ãƒ¼ã‚¶ã‚’永久ã«ç· ã‚出ã•ãªã„ã“ã¨ã‚’ã€<code>0</code>ã¯æ°¸ä¹…ã«ç· ã‚出ã™ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1157794">
+<PRE> passwordUnlock: 0
+</PRE>
+</A>
+
+<A NAME="1156973">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1166485">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1104598">&nbsp;
+</A>
+<A NAME="passwordWarning">
+<H3>passwordWarning</H3>
+</A>
+
+
+
+<A NAME="1155341">
+é–“ã‚‚ãªãパスワードãŒå¤±åŠ¹ã™ã‚‹ã®ã‚’ã€è­¦å‘Šã™ã‚‹ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®é€ä¿¡æ™‚期を秒数ã§å®šç¾©ã—ã¾ã™ã€‚次ã®ä¾‹ã§ã¯ã€è­¦å‘Šãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒãƒ‘スワード失効ã®1æ—¥å‰ã«ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«é€ä¿¡ã•ã‚Œã¾ã™ã€‚<P></A>
+<A NAME="1155343">
+<PRE> passwordWarning: 86400
+</PRE>
+</A>
+
+<A NAME="1155421">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1166523">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1202229">&nbsp;
+</A>
+<A NAME="personalSignature">
+<H3> personalSignature</H3>
+</A>
+
+
+
+<A NAME="1202230">
+エントリã®ãƒã‚¤ãƒŠãƒªå½¢å¼ã®ç½²åファイル。<P></A>
+
+<A NAME="1202233">
+構文: <a href="attribut.htm#1004700">bin</a><P></A>
+
+
+<A NAME="1202238">&nbsp;
+</A>
+<A NAME="personalTitle">
+<H3> personalTitle</H3>
+</A>
+
+
+
+<A NAME="1214489">
+ユーザーã®å€‹äººçš„ãªè‚©æ›¸ãを示ã—ã¾ã™ã€‚個人的ãªè‚©æ›¸ãã®ä¾‹ã¯ã€Msã€Drã€Profã€Revãªã©ã§ã™ã€‚<P></A>
+<A NAME="1202240">
+<PRE> personalTitle: Mr
+</PRE>
+</A>
+
+<A NAME="1202242">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1202247">&nbsp;
+</A>
+<A NAME="photo">
+<H3> photo</H3>
+</A>
+
+
+
+<A NAME="1202248">
+エントリã®å†™çœŸãŒãƒã‚¤ãƒŠãƒªå½¢å¼ã§å«ã¾ã‚Œã¾ã™ã€‚例:<P></A>
+
+<A NAME="1202251">
+構文: <a href="attribut.htm#1004700">bin</a><P></A>
+
+
+<A NAME="1003072">&nbsp;
+</A>
+<A NAME="physicalDeliveryOfficeName">
+<H3> physicalDeliveryOfficeName</H3>
+</A>
+
+
+
+<A NAME="1003073">
+物ç†çš„ãªé…é€ã‚ªãƒ•ã‚£ã‚¹ãŒæ‰€åœ¨ã™ã‚‹å¸‚町æ‘ã®åå‰ã‚’示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1003804">
+<PRE> physicalDeliveryOfficeName: Santa Clara
+</PRE>
+</A>
+
+<A NAME="1107471">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1246531">&nbsp;
+</A>
+<A NAME="pipcompassservers">
+<H3>pipcompassservers</H3>
+</A>
+
+
+
+<A NAME="1246532">
+未定義。<P></A>
+
+<A NAME="1271255">
+OID: <code>2.16.840.1.113730.3.1.138</code><P></A>
+
+<A NAME="1107499">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236180">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1111357">&nbsp;
+</A>
+<A NAME="pipformat">
+<H3>pipformat</H3>
+</A>
+
+
+
+<A NAME="1119006">
+Compass ServerãŒä½¿ç”¨ã™ã‚‹å±žæ€§ã§ã€ãƒ¦ãƒ¼ã‚¶ã«é€ä¿¡ã™ã‚‹ç„¡æ–™ã®ãƒ†ã‚­ã‚¹ãƒˆæ¤œç´¢ãƒ—ロフィールã®æ›´æ–°ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆã‚’定義ã—ã¾ã™ã€‚<P></A>
+
+<A NAME="1271403">
+OID: <code>2.16.840.1.113730.3.1.144</code><P></A>
+
+<A NAME="1111360">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1246338">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1246341">&nbsp;
+</A>
+<A NAME="pipfrequency">
+<H3>pipfrequency</H3>
+</A>
+
+
+
+<A NAME="1246342">
+Compass ServerãŒä½¿ç”¨ã™ã‚‹å±žæ€§ã§ã€My Compassニュースレターã®å—信頻度を記述ã—ã¾ã™ã€‚<P></A>
+
+
+<A NAME="1271346">
+OID: <code>2.16.840.1.113730.3.1.142</code><P></A>
+
+<A NAME="1111364">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236223">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1113190">&nbsp;
+</A>
+<A NAME="pipgroup">
+<H3>pipgroup</H3>
+</A>
+
+
+<A NAME="1119538">
+未定義。<P></A>
+
+<A NAME="1271479">
+OID: <code>2.16.840.1.113730.3.1.158</code><P></A>
+
+<A NAME="1113191">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236260">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1111369">&nbsp;
+</A>
+<A NAME="piphour">
+<H3> piphour</H3>
+</A>
+
+
+
+<A NAME="1119581">
+ユーザーãŒç„¡æ–™ãƒ†ã‚­ã‚¹ãƒˆæ¤œç´¢ãƒ—ロフィール更新をå—ä¿¡ã™ã‚‹æ—¥ä¸­ã®æ™‚間帯を定義ã™ã‚‹ãŸã‚ã«ã€Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ã€‚<P></A>
+
+<A NAME="1271454">
+OID: <code>2.16.840.1.113730.3.1.145</code><P></A>
+
+<A NAME="1111370">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236306">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1237689">&nbsp;
+</A>
+<A NAME="pipidstcount">
+<H3>pipidstcount</H3>
+</A>
+
+
+
+<A NAME="1237690">
+Compass ServerãŒä½¿ç”¨ã™ã‚‹å±žæ€§ã§ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒä½¿ç”¨ã™ã‚‹æœ€å¾Œã®ä¸€æ„ã®IDを定義ã—ã¾ã™ã€‚<P></A>
+
+<A NAME="1271485">
+OID: <code>2.16.840.1.113730.3.1.159</code><P></A>
+
+<A NAME="1113341">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236324">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1113479">&nbsp;
+</A>
+<A NAME="pipirlist">
+<H3> pipirlist</H3>
+</A>
+
+
+
+<A NAME="1119793">
+ユーザーãŒãƒ¢ãƒ‹ã‚¿ãƒ¼ã™ã‚‹ãƒ‰ãƒ¡ã‚¤ãƒ³ã¨ãƒ‹ãƒ¥ãƒ¼ã‚¹ã‚°ãƒ«ãƒ¼ãƒ—ã‚’å«ã‚€ãŸã‚ã«ã€Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ã€‚<P></A>
+
+<A NAME="1271508">
+OID: <code>2.16.840.1.113730.3.1.150</code><P></A>
+
+<A NAME="1113480">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237824">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1237828">&nbsp;
+</A>
+<A NAME="pipiroption">
+<H3> pipiroption</H3>
+</A>
+
+
+
+<A NAME="1237829">
+pipIrListã®ã™ã¹ã¦ã®ã‚¨ãƒ³ãƒˆãƒªã‚’æ›´æ–°ã™ã‚‹ã‹ã€ã¾ãŸã¯æ›´æ–°ã‹ã‚‰é™¤å¤–ã™ã‚‹ã‹ã‚’定義ã™ã‚‹ãŸã‚ã«ã€Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ã€‚<P></A>
+
+<A NAME="1271566">
+OID: <code>2.16.840.1.113730.3.1.151</code><P></A>
+
+<A NAME="1113621">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236383">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1112574">&nbsp;
+</A>
+<A NAME="piplastcount">
+<H3>piplastcount</H3>
+</A>
+
+
+
+<A NAME="1237876">
+Compass ServerãŒä½¿ç”¨ã™ã‚‹å±žæ€§ã§ã€æœ€å¾Œã®æ›´æ–°æ™‚ã«ç™ºç”Ÿã—ãŸç…§åˆæ•°ã‚’定義ã—ã¾ã™ã€‚<P></A>
+
+<A NAME="1271585">
+OID: <code>2.16.840.1.113730.3.1.153</code><P></A>
+
+<A NAME="1112575">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1246647">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1246650">&nbsp;
+</A>
+<A NAME="pipmaxhits">
+<H3> pipmaxhits</H3>
+</A>
+
+
+
+<A NAME="1246651">
+無料テキスト検索プロフィール更新ã”ã¨ã«æˆ»ã•ã‚Œã‚‹æœ€å¤§ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆæ•°ã‚’定義ã™ã‚‹ãŸã‚ã«ã€Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ã€‚<P></A>
+
+<A NAME="1271604">
+OID: <code>2.16.840.1.113730.3.1.146</code><P></A>
+
+<A NAME="1173472">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236422">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1111582">&nbsp;
+</A>
+<A NAME="pipmedium">
+<H3> pipmedium</H3>
+</A>
+
+
+
+<A NAME="1237949">
+無料テキスト検索プロフィール更新ã«é–¢ã™ã‚‹æƒ…報をユーザーã«é€ä¿¡ã™ã‚‹æ‰‹æ®µã‚’示ã™ãŸã‚ã«ã€Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ã€‚<P></A>
+
+<A NAME="1271368">
+OID: <code>2.16.840.1.113730.3.1.143</code><P></A>
+
+<A NAME="1111583">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236583">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1236460">&nbsp;
+</A>
+<A NAME="pipnotify">
+<H3>pipnotify</H3>
+</A>
+
+
+
+<A NAME="1119923">
+未定義。<P></A>
+
+<A NAME="1271613">
+OID: <code>2.16.840.1.113730.3.1.156</code><P></A>
+
+<A NAME="1236507">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236602">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1236511">&nbsp;
+</A>
+<A NAME="pipprivilege">
+<H3>pipprivilege</H3>
+</A>
+
+
+
+<A NAME="1236512">
+未定義。<P></A>
+
+<A NAME="1271668">
+OID: <code>2.16.840.1.113730.3.1.157</code><P></A>
+
+<A NAME="1112990">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236630">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1112443">&nbsp;
+</A>
+<A NAME="pippwp">
+<H3> pippwp</H3>
+</A>
+
+
+
+<A NAME="1238042">
+Personal Web Page (PWP)データベースã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å«ã‚€ã€Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ã€‚<P></A>
+
+<A NAME="1271682">
+OID: <code>2.16.840.1.113730.3.1.152</code><P></A>
+
+<A NAME="1112444">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236643">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1118693">&nbsp;
+</A>
+<A NAME="pipreservedces1">
+<H3>pipreservedces1</H3>
+</A>
+
+
+
+<A NAME="1120046">
+Netscape Compass Serverã§å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚ŒãŸå±žæ€§ã§ã™ã€‚<P></A>
+
+<A NAME="1271719">
+OID: <code>2.16.840.1.113730.3.1.188</code><P></A>
+
+<A NAME="1118694">
+構文: <a href="attribut.htm#1004701">ces</a><P></A>
+
+<A NAME="1236680">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1118699">&nbsp;
+</A>
+<A NAME="pipreservedces2">
+<H3>pipreservedces2</H3>
+</A>
+
+
+
+<A NAME="1238136">
+Netscape Compass Serverã§å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚ŒãŸå±žæ€§ã§ã™ã€‚<P></A>
+
+<A NAME="1271725">
+OID: <code>2.16.840.1.113730.3.1.189</code><P></A>
+
+<A NAME="1118700">
+構文: <a href="attribut.htm#1004701">ces</a><P></A>
+
+<A NAME="1236693">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1118705">&nbsp;
+</A>
+<A NAME="pipreservedces3">
+<H3>pipreservedces3</H3>
+</A>
+
+
+
+<A NAME="1238138">
+Netscape Compass Serverã§å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚ŒãŸå±žæ€§ã§ã™ã€‚<P></A>
+
+<A NAME="1271783">
+OID: <code>2.16.840.1.113730.3.1.190</code><P></A>
+
+<A NAME="1118706">
+構文: <a href="attribut.htm#1004701">ces</a><P></A>
+
+<A NAME="1236718">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1118350">&nbsp;
+</A>
+<A NAME="pipreservedcis1">
+<H3>pipreservedcis1</H3>
+</A>
+
+
+
+<A NAME="1238140">
+Netscape Compass Serverã§å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚ŒãŸå±žæ€§ã§ã™ã€‚<P></A>
+
+<A NAME="1271796">
+OID: <code>2.16.840.1.113730.3.1.182</code><P></A>
+
+<A NAME="1118351">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236762">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1118356">&nbsp;
+</A>
+<A NAME="pipreservedcis2">
+<H3>pipreservedcis2</H3>
+</A>
+
+
+
+<A NAME="1238144">
+Netscape Compass Serverã§å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚ŒãŸå±žæ€§ã§ã™ã€‚<P></A>
+
+<A NAME="1271840">
+OID: <code>2.16.840.1.113730.3.1.183</code><P></A>
+
+<A NAME="1118357">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236799">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1118362">&nbsp;
+</A>
+<A NAME="pipreservedcis3">
+<H3>pipreservedcis3</H3>
+</A>
+
+
+
+<A NAME="1238146">
+Netscape Compass Serverã§å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚ŒãŸå±žæ€§ã§ã™ã€‚<P></A>
+
+<A NAME="1271850">
+OID: <code>2.16.840.1.113730.3.1.184</code><P></A>
+
+<A NAME="1118363">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236816">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1118368">&nbsp;
+</A>
+<A NAME="pipreservedcis4">
+<H3>pipreservedcis4</H3>
+</A>
+
+
+
+<A NAME="1238148">
+Netscape Compass Serverã§å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚ŒãŸå±žæ€§ã§ã™ã€‚<P></A>
+
+<A NAME="1271856">
+OID: <code>2.16.840.1.113730.3.1.185</code><P></A>
+
+<A NAME="1118369">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236851">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1118374">&nbsp;
+</A>
+<A NAME="pipreservedcis5">
+<H3>pipreservedcis5</H3>
+</A>
+
+
+
+<A NAME="1238150">
+Netscape Compass Serverã§å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚ŒãŸå±žæ€§ã§ã™ã€‚<P></A>
+
+<A NAME="1271872">
+OID: <code>2.16.840.1.113730.3.1.186</code><P></A>
+
+<A NAME="1118375">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236870">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1118380">&nbsp;
+</A>
+<A NAME="pipreservedcis6">
+<H3>pipreservedcis6</H3>
+</A>
+
+
+
+<A NAME="1238152">
+Netscape Compass Serverã§å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚ŒãŸå±žæ€§ã§ã™ã€‚<P></A>
+
+<A NAME="1271882">
+OID: <code>2.16.840.1.113730.3.1.187</code><P></A>
+
+<A NAME="1118381">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236893">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1111729">&nbsp;
+</A>
+<A NAME="pipresultset">
+<H3> pipresultset</H3>
+</A>
+
+
+
+<A NAME="1238541">
+ユーザーãŒæ›´æ–°ã®å—信を希望ã™ã‚‹å±žæ€§ã®ãƒªã‚¹ãƒˆã‚’å«ã‚€ã€Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ã€‚<P></A>
+
+<A NAME="1271899">
+OID: <code>2.16.840.1.113730.3.1.147</code><P></A>
+
+<A NAME="1111730">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236920">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1111947">&nbsp;
+</A>
+<A NAME="pipsortorder">
+<H3> pipsortorder</H3>
+</A>
+
+
+
+<A NAME="1238667">
+無料テキスト検索プロフィール更新ã®æ¦‚è¦ãƒ¬ãƒãƒ¼ãƒˆã«ãŠã‘る情報ã®ä¸¦ã¹æ›¿ãˆé †åºã‚’å«ã‚€ã€Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ã€‚<P></A>
+
+<A NAME="1271955">
+OID: <code>2.16.840.1.113730.3.1.148</code><P></A>
+
+<A NAME="1111948">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236950">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1114647">&nbsp;
+</A>
+<A NAME="pipstatus">
+<H3> pipstatus</H3>
+</A>
+
+
+
+<A NAME="1238753">
+Personal Interest Profile (PIP)を使用å¯èƒ½ã€ä½¿ç”¨ç¦æ­¢ã®ã„ãšã‚Œã«ã™ã‚‹ã‹ã‚’定義ã™ã‚‹ãŸã‚ã«ã€Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ã€‚<P></A>
+
+<A NAME="1271286">
+OID: <code>2.16.840.1.113730.3.1.140</code><P></A>
+
+<A NAME="1114648">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1236989">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1116402">&nbsp;
+</A>
+<A NAME="pipstcategory">
+<H3> pipstcategory</H3>
+</A>
+
+
+
+<A NAME="1238824">
+ユーザーãŒé–¢å¿ƒã‚’æŒã¤ã‚«ãƒ†ã‚´ãƒªã¾ãŸã¯æ¤œç´¢æ–‡å­—列をå«ã‚€ã€Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ã€‚<P></A>
+
+<A NAME="1271969">
+OID: <code>2.16.840.1.113730.3.1.171</code><P></A>
+
+<A NAME="1116403">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237014">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1116837">&nbsp;
+</A>
+<A NAME="pipstformat">
+<H3> pipstformat</H3>
+</A>
+
+
+
+<A NAME="1238895">
+ユーザーã«é€ä¿¡ã•ã‚Œã‚‹ã‚«ãƒ†ã‚´ãƒªæ¤œç´¢ãƒ—ロフィール更新形å¼ã‚’示ã™ãŸã‚ã«ã€Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ã€‚<P></A>
+
+<A NAME="1272000">
+OID: <code>2.16.840.1.113730.3.1.174</code><P></A>
+
+<A NAME="1116838">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237031">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1116521">&nbsp;
+</A>
+<A NAME="pipstfrequency">
+<H3>pipstfrequency</H3>
+</A>
+
+
+
+<A NAME="1120346">
+Compass ServerãŒä½¿ç”¨ã™ã‚‹å±žæ€§ã§ã€ãƒ¦ãƒ¼ã‚¶ãŒæ›´æ–°è­¦å‘Šã‚’å—ä¿¡ã™ã‚‹é »åº¦ã‚’定義ã—ã¾ã™ã€‚<P></A>
+
+<A NAME="1272198">
+OID: <code>2.16.840.1.113730.3.1.172</code><P></A>
+
+<A NAME="1116522">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237041">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1116707">&nbsp;
+</A>
+<A NAME="pipsthour">
+<H3> pipsthour</H3>
+</A>
+
+
+
+<A NAME="1120383">
+ユーザーãŒç„¡æ–™ã‚«ãƒ†ã‚´ãƒª プロフィール更新をå—ä¿¡ã™ã‚‹æ—¥ä¸­ã®æ™‚間帯を定義ã™ã‚‹ãŸã‚ã«ã€Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ã€‚<P></A>
+
+<A NAME="1272250">
+OID: <code>2.16.840.1.113730.3.1.175</code><P></A>
+
+<A NAME="1116708">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237070">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1115462">&nbsp;
+</A>
+<A NAME="pipstid">
+<H3> pipstid</H3>
+</A>
+
+
+
+<A NAME="1120405">
+Personal Interest Profile (PIP)内ã®æ¤œç´¢ãƒˆãƒ”ックã®ä¸€æ„ã®IDã‚’å«ã‚ã‚‹ãŸã‚ã«ã€Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ã€‚<P></A>
+
+<A NAME="1272264">
+OID: <code>2.16.840.1.113730.3.1.160</code><P></A>
+
+<A NAME="1115463">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237108">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1115769">&nbsp;
+</A>
+<A NAME="pipstinterest">
+<H3> pipstinterest</H3>
+</A>
+
+
+
+<A NAME="1120445">
+Personal Interest Profile (PIP)内ã®æ¤œç´¢ãƒˆãƒ”ックã®å€‹ã€…ã®ãƒˆãƒ”ックã®é‡è¦æ€§ã‚’ユーザーã«ç¤ºã™ãŸã‚ã«ã€Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ã€‚<P></A>
+
+<A NAME="1272273">
+OID: <code>2.16.840.1.113730.3.1.164</code><P></A>
+
+<A NAME="1115770">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237118">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1117562">&nbsp;
+</A>
+<A NAME="pipstirlist">
+<H3> pipstirlist</H3>
+</A>
+
+
+
+<A NAME="1120460">
+ユーザーãŒãƒ¢ãƒ‹ã‚¿ãƒ¼ã™ã‚‹ãƒ‰ãƒ¡ã‚¤ãƒ³ã¨ãƒ‹ãƒ¥ãƒ¼ã‚¹ã‚°ãƒ«ãƒ¼ãƒ—ã‚’å«ã‚€ã€Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ã€‚<P></A>
+
+<A NAME="1272285">
+OID: <code>2.16.840.1.113730.3.1.180</code><P></A>
+
+<A NAME="1117563">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237149">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1117790">&nbsp;
+</A>
+<A NAME="pipstiroption">
+<H3> pipstiroption</H3>
+</A>
+
+
+
+<A NAME="1120493">
+pipStIrListã®ã™ã¹ã¦ã®ã‚¨ãƒ³ãƒˆãƒªã‚’æ›´æ–°ã™ã‚‹ã‹ã€ã¾ãŸã¯æ›´æ–°ã‹ã‚‰é™¤å¤–ã™ã‚‹ã‹ã‚’定義ã™ã‚‹ãŸã‚ã«ã€Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ã€‚<P></A>
+
+<A NAME="1272306">
+OID: <code>2.16.840.1.113730.3.1.181</code><P></A>
+
+<A NAME="1237168">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237182">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1237172">&nbsp;
+</A>
+<A NAME="pipstlastcount">
+<H3> pipstlastcount</H3>
+</A>
+
+
+
+<A NAME="1237173">
+Personal Interest Profile (PIP)ã®æœ€å¾Œã®æ›´æ–°æ™‚ã«ãŠã‘るカテゴリ一致数をå«ã‚€ã€Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ã€‚<P></A>
+
+<A NAME="1272312">
+OID: <code>2.16.840.1.113730.3.1.168</code><P></A>
+
+<A NAME="1116157">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237189">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1117134">&nbsp;
+</A>
+<A NAME="pipstmaxhits">
+<H3> pipstmaxhits</H3>
+</A>
+
+
+
+<A NAME="1120565">
+カテゴリ検索プロフィール更新ã”ã¨ã«æˆ»ã•ã‚Œã‚‹æœ€å¤§ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆæ•°ã‚’定義ã™ã‚‹ãŸã‚ã«ã€Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ã€‚<P></A>
+
+<A NAME="1272354">
+OID: <code>2.16.840.1.113730.3.1.176</code><P></A>
+
+<A NAME="1117135">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237205">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1117140">&nbsp;
+</A>
+<A NAME="pipstmedium">
+<H3> pipstmedium</H3>
+</A>
+
+
+
+<A NAME="1120568">
+カテゴリ検索プロフィール更新ã«é–¢ã™ã‚‹æƒ…報をé€ä¿¡ã™ã‚‹æ‰‹æ®µã‚’示ã™ãŸã‚ã«ã€Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ã€‚<P></A>
+
+<A NAME="1272360">
+OID: <code>2.16.840.1.113730.3.1.173</code><P></A>
+
+<A NAME="1117141">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237235">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1115468">&nbsp;
+</A>
+<A NAME="pipstname">
+<H3> pipstname</H3>
+</A>
+
+
+
+<A NAME="1120598">
+検索トピックを示ã™ãŸã‚ã«ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ã‚ˆã£ã¦ä½œæˆã•ã‚ŒãŸä»»æ„ã®åå‰ã‚’å«ã‚€ã€Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ã€‚<P></A>
+
+<A NAME="1272404">
+OID: <code>2.16.840.1.113730.3.1.161</code><P></A>
+
+<A NAME="1115469">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237246">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1115898">&nbsp;
+</A>
+<A NAME="pipstprivacy">
+<H3> pipstprivacy</H3>
+</A>
+
+
+
+<A NAME="1120637">
+ã“ã®ã‚¨ãƒ³ãƒˆãƒªã®å•åˆã›ã‚’許å¯ã™ã‚‹ã‹å´ä¸‹ã™ã‚‹ã‹ã‚’定義ã™ã‚‹ã€Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ã€‚<P></A>
+
+<A NAME="1272410">
+OID: <code>2.16.840.1.113730.3.1.166</code><P></A>
+
+<A NAME="1115899">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237266">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1115474">&nbsp;
+</A>
+<A NAME="pipstquery">
+<H3>pipstquery</H3>
+</A>
+
+
+
+<A NAME="1120668">
+未定義。<P></A>
+
+<A NAME="1272438">
+OID: <code>2.16.840.1.113730.3.1.162</code><P></A>
+
+<A NAME="1115475">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237271">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1117321">&nbsp;
+</A>
+<A NAME="pipstresultset">
+<H3> pipstresultset</H3>
+</A>
+
+
+
+<A NAME="1120684">
+ユーザーãŒæ›´æ–°ã‚’å—ä¿¡ã™ã‚‹å±žæ€§ãƒªã‚¹ãƒˆã‚’å«ã‚€Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§<P></A>
+
+<A NAME="1272625">
+OID: <code>2.16.840.1.113730.3.1.177</code><P></A>
+
+<A NAME="1117322">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237300">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1117327">&nbsp;
+</A>
+<A NAME="pipstsortorder">
+<H3> pipstsortorder</H3>
+</A>
+
+
+
+<A NAME="1120687">
+カテゴリ検索プロフィール更新ã®æ¦‚è¦ãƒ¬ãƒãƒ¼ãƒˆã«ãŠã‘る情報ã®ä¸¦ã¹æ›¿ãˆé †åºã‚’å«ã‚€ã€Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ã€‚<P></A>
+
+<A NAME="1272444">
+OID: <code>2.16.840.1.113730.3.1.178</code><P></A>
+
+<A NAME="1117328">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237305">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1116027">&nbsp;
+</A>
+<A NAME="pipststatus">
+<H3> pipststatus</H3>
+</A>
+
+
+
+<A NAME="1120695">
+Personal Interest Profile (PIP)ã®çŠ¶æ…‹ã‚’定義ã—ã¾ã™ã€‚Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ 。<P></A>
+
+<A NAME="1272485">
+OID: <code>2.16.840.1.113730.3.1.167</code><P></A>
+
+<A NAME="1116028">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237322">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1115480">&nbsp;
+</A>
+<A NAME="pipsttaxonomy">
+<H3> pipsttaxonomy</H3>
+</A>
+
+
+
+<A NAME="1120736">
+分類法IDã‚’å«ã‚€ã€Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ã€‚ <P></A>
+
+<A NAME="1272491">
+OID: <code>2.16.840.1.113730.3.1.163</code><P></A>
+
+<A NAME="1115481">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237358">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1117445">&nbsp;
+</A>
+<A NAME="pipsttimestamp">
+<H3> pipsttimestamp</H3>
+</A>
+
+
+
+<A NAME="1120770">
+ユーザーã®ã‚«ãƒ†ã‚´ãƒªæ¤œç´¢ãƒ—ロフィールã®æœ€çµ‚更新日をå«ã‚€ã€Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ã€‚<P></A>
+
+<A NAME="1272500">
+OID: <code>2.16.840.1.113730.3.1.179</code><P></A>
+
+<A NAME="1117446">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237387">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1115516">&nbsp;
+</A>
+<A NAME="pipsttotalcount">
+<H3> pipsttotalcount</H3>
+</A>
+
+
+
+<A NAME="1120801">
+ç¾åœ¨ã¾ã§ã®ã‚«ãƒ†ã‚´ãƒªä¸€è‡´æ•°ã‚’å«ã‚€ã€Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ã€‚<P></A>
+
+<A NAME="1272537">
+OID: <code>2.16.840.1.113730.3.1.169</code><P></A>
+
+<A NAME="1115517">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237396">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1115522">&nbsp;
+</A>
+<A NAME="pipsttotalrun">
+<H3> pipsttotalrun</H3>
+</A>
+
+
+
+<A NAME="1120812">
+ç¾åœ¨ã¾ã§ã«å®Ÿè¡Œã•ã‚ŒãŸã‚«ãƒ†ã‚´ãƒªæ¤œç´¢æ›´æ–°æ•°ã‚’å«ã‚€ã€Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ã€‚<P></A>
+
+<A NAME="1272560">
+OID: <code>2.16.840.1.113730.3.1.170</code><P></A>
+
+<A NAME="1115523">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237423">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1116285">&nbsp;
+</A>
+<A NAME="pipsttype">
+<H3> pipsttype</H3>
+</A>
+
+
+
+<A NAME="1120825">
+ 検索ãŒã‚«ãƒ†ã‚´ãƒªæ¤œç´¢ã¾ãŸã¯ç„¡æ–™ãƒ†ã‚­ã‚¹ãƒˆæ¤œç´¢ã§ã‚ã‚‹ã‹ã‚’定義ã™ã‚‹ã€Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ã€‚<P></A>
+
+<A NAME="1272566">
+OID: <code>2.16.840.1.113730.3.1.165</code><P></A>
+
+<A NAME="1116286">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237434">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1117682">&nbsp;
+</A>
+<A NAME="piptimestamp">
+<H3> piptimestamp</H3>
+</A>
+
+
+
+<A NAME="1120828">
+ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ç„¡æ–™ãƒ†ã‚­ã‚¹ãƒˆæ¤œç´¢ãƒ—ロフィールã®æœ€çµ‚更新日をå«ã‚€ã€Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ã€‚<P></A>
+
+<A NAME="1272571">
+OID: <code>2.16.840.1.113730.3.1.149</code><P></A>
+
+<A NAME="1112096">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237497">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1237470">&nbsp;
+</A>
+<A NAME="piptotalcount">
+<H3> piptotalcount</H3>
+</A>
+
+
+<A NAME="1237471">
+ç¾åœ¨ã¾ã§ã®ã™ã¹ã¦ã®æ›´æ–°ä¸­ã«ç™ºç”Ÿã—ãŸä¸€è‡´æ•°ã‚’å«ã‚€ã€Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ã€‚<P></A>
+
+<A NAME="1272577">
+OID: <code>2.16.840.1.113730.3.1.154</code><P></A>
+
+<A NAME="1112775">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237516">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1112780">&nbsp;
+</A>
+<A NAME="piptotalrun">
+<H3> piptotalrun</H3>
+</A>
+
+
+
+<A NAME="1120866">
+ç¾åœ¨ã¾ã§ã®Personal Interest Profile (PIP)æ›´æ–°åˆè¨ˆæ•°ã‚’å«ã‚€ã€Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ã€‚<P></A>
+
+<A NAME="1272619">
+OID: <code>2.16.840.1.113730.3.1.155</code><P></A>
+
+<A NAME="1112781">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237538">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1110777">&nbsp;
+</A>
+<A NAME="pipuid">
+<H3> pipuid</H3>
+</A>
+
+
+
+<A NAME="1120876">
+Personal Interest Profile (PIP)ã®å±žã™ã‚‹ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼IDã‚’å«ã‚€ã€Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ã€‚<P></A>
+
+<A NAME="1271249">
+OID: <code>2.16.840.1.113730.3.1.137</code><P></A>
+
+<A NAME="1110778">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237569">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1107663">&nbsp;
+</A>
+<A NAME="pipuniqueid">
+<H3> pipuniqueid</H3>
+</A>
+
+
+
+<A NAME="1239397">
+Compassユーザーã®ä¸€æ„ã®IDã‚’å«ã‚€ã€Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ã€‚<P></A>
+
+<A NAME="1271284">
+OID: <code>2.16.840.1.113730.3.1.139</code><P></A>
+
+<A NAME="1108334">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237586">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1108439">&nbsp;
+</A>
+<A NAME="pipusertype">
+<H3> pipusertype</H3>
+</A>
+
+
+
+<A NAME="1120926">
+Compassユーザー タイプを記述ã™ã‚‹ã€Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ã€‚<P></A>
+
+<A NAME="1271340">
+OID: <code>2.16.840.1.113730.3.1.141</code><P></A>
+
+<A NAME="1108473">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1237595">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1230025">&nbsp;
+</A>
+<A NAME="postalAddress">
+<H3> postalAddress</H3>
+</A>
+
+
+
+<A NAME="1230026">
+エントリã®ãƒ¡ãƒ¼ãƒªãƒ³ã‚° アドレスを示ã—ã¾ã™ã€‚ã“ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã¯è¤‡æ•°è¡ŒãŒå«ã¾ã‚Œã‚‹ã‚ˆã†æ„図ã•ã‚Œã¦ã„ã¾ã™ã€‚LDIFå½¢å¼ã§ç¤ºã™å ´åˆã¯ã€å„行をドル記å·($)ã§åŒºåˆ‡ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚例:<P></A>
+<A NAME="1230027">
+<PRE> postalAddress: 1234 Ridgeway Drive$Santa Clara, CA$99555
+</PRE>
+</A>
+
+<A NAME="1230029">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1230030">
+テキスト内ã§ã®åŒºåˆ‡ã‚Šã¨ã—ã¦ã§ã¯ãªãã€å®Ÿéš›ã®ãƒ‰ãƒ«è¨˜å·($)ã¾ãŸã¯ãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥(\)を示ã™ã«ã¯ã€ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—ã•ã‚ŒãŸ16進値\24㨠\5cを使用ã—ã¾ã™ã€‚例ãˆã°ã€æ¬¡ã®ã‚ˆã†ãªæ–‡å­—列を示ã™å ´åˆã€<P></A>
+<A NAME="1230031">
+<PRE> The dollar ($) value can be found <br>
+ in the c:\cost file.
+</PRE>
+</A>
+
+<A NAME="1230032">
+次ã®ã‚ˆã†ã«ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—文字を使用ã—ã¾ã™ã€‚<P></A>
+<A NAME="1230033">
+<PRE> The dollar (\24) value can be found$in the c:\5ccost file.
+</PRE>
+</A>
+
+
+<A NAME="1230036">&nbsp;
+</A>
+<A NAME="postalCode">
+<H3> postalCode</H3>
+</A>
+
+
+
+<A NAME="1230037">
+米国ã«ãŠã‘るエントリã®éƒµä¾¿ç•ªå·ã‚’示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1230038">
+<PRE> postalCode: 95050
+</PRE>
+</A>
+
+<A NAME="1230040">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1230043">&nbsp;
+</A>
+<A NAME="postOfficeBox">
+<H3> postOfficeBox</H3>
+</A>
+
+
+
+<A NAME="1230044">
+エントリã®ç§æ›¸ç®±ã‚’示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1230045">
+<PRE> postOfficeBox: P.O. Box 1234
+</PRE>
+</A>
+
+<A NAME="1230047">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1202605">&nbsp;
+</A>
+<A NAME="preferredDeliveryMethod">
+<H3> preferredDeliveryMethod</H3>
+</A>
+
+
+
+<A NAME="1202606">
+エントリãŒå¸Œæœ›ã™ã‚‹é€£çµ¡æ–¹æ³•ã¾ãŸã¯é…信方法を示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1202607">
+<PRE> preferredDeliveryMethod: telephone
+</PRE>
+</A>
+
+<A NAME="1202609">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1103495">&nbsp;
+</A>
+<A NAME="preferredLanguage">
+<H3>preferredLanguage</H3>
+</A>
+
+
+
+<A NAME="1103496">
+ユーザーãŒå¸Œæœ›ã™ã‚‹æ›¸è¨€èªžã¾ãŸã¯è©±è¨€èªžã‚’定義ã—ã¾ã™ã€‚ã“ã®å±žæ€§å€¤ã¯ã€HTTP Accept-Languageヘッダ値ã®æ§‹æ–‡ã«æº–æ‹ ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。<P></A>
+
+<A NAME="1103586">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1202620">&nbsp;
+</A>
+<A NAME="presentationAddress">
+<H3> presentationAddress</H3>
+</A>
+
+
+
+<A NAME="1206932">
+エントリã®OSI表示アドレスãŒå«ã¾ã‚Œã¾ã™ã€‚表示アドレスã¯ä¸€ã¤ã®OSI Network Addressã¨æœ€é«˜3ã¤ã®ã‚»ãƒ¬ã‚¯ã‚¿ã‹ã‚‰æ§‹æˆã•ã‚Œã€ç§»é€ã€ã‚»ãƒƒã‚·ãƒ§ãƒ³ã€ã¾ãŸã¯è¡¨ç¤ºã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ãŒã“ã®ã‚»ãƒ¬ã‚¯ã‚¿ã‚’å„一ã¤ãšã¤ä½¿ç”¨ã•ã‚Œã¾ã™ã€‚例:<P></A>
+<A NAME="1202622">
+<PRE> presentationAddress: TELEX+00726322+RFC-1006+02+130.59.2.1
+</PRE>
+</A>
+
+<A NAME="1202624">
+構文: <a href="attribut.htm#1004701">ces</a><P></A>
+
+
+<A NAME="1241471">&nbsp;
+</A>
+<A NAME="protocolInformation">
+<H3> protocolInformation</H3>
+</A>
+
+
+
+<A NAME="1241473">
+未定義。<P></A>
+
+<A NAME="1245387">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1245389">&nbsp;
+</A>
+<A NAME="reciprocalNamingLink">
+<H3> reciprocalNamingLink</H3>
+</A>
+
+
+
+<A NAME="1235430">
+未定義。<P></A>
+
+<A NAME="1235433">
+構文: dn<P></A>
+
+
+<A NAME="1100037">&nbsp;
+</A>
+<A NAME="ref">
+<H3> ref</H3>
+</A>
+
+
+
+<A NAME="1100061">
+スマートå‚照をサãƒãƒ¼ãƒˆã™ã‚‹ãŸã‚ã«LDAPv3ã§ä½¿ç”¨ã•ã‚Œã¾ã™ã€‚LDAP URLãŒã€ldap://サーãƒãƒ¼å:ãƒãƒ¼ãƒˆç•ªå·/dnã®æ›¸å¼ã§å«ã¾ã‚Œã¾ã™ã€‚ãƒãƒ¼ãƒˆç•ªå·ã¯ã‚ªãƒ—ションã§ã™ã€‚例:<P></A>
+<A NAME="1202639">
+<PRE> ref: ldap://mozilla/<I>cn=John Doe, o=Airius.com
+</I></PRE>
+</A>
+
+<A NAME="1100064">
+構文: <a href="attribut.htm#1004701">ces</a><P></A>
+
+
+<A NAME="1202644">&nbsp;
+</A>
+<A NAME="registeredAddress">
+<H3> registeredAddress</H3>
+</A>
+
+
+
+<A NAME="1206709">
+ã“ã®å±žæ€§ã«ã¯ã€å—å–人ãŒé…é€ã‚’å—ç†ã™ã‚‹å¿…è¦ã®ã‚る電報や急é€ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã®å—ç†ã«é©åˆ‡ãªéƒµä¾¿ä½æ‰€ã‚’入力ã—ã¾ã™ã€‚<P></A>
+
+<A NAME="1202648">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1092877">&nbsp;
+</A>
+<A NAME="replicaBeginOrc">
+<H3> replicaBeginOrc</H3>
+</A>
+
+
+
+<A NAME="1092878">
+複製å‰ã«ä¾›çµ¦ã‚µãƒ¼ãƒãƒ¼ãŒæ¶ˆè²»ã‚µãƒ¼ãƒãƒ¼ã®å†…容を消去ã™ã¹ãã‹ã©ã†ã‹ã‚’定義ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã«å€¤ãŒå­˜åœ¨ã—ãªã„å ´åˆã¯ã€ä¾›çµ¦ã‚µãƒ¼ãƒãƒ¼ã«ã‚ˆã£ã¦ãã®å†…容ãŒæ¶ˆåŽ»ã•ã‚Œã¾ã™ã€‚ã“ã®å±žæ€§ã®è¨±å®¹å€¤ã¯startã¨stopã®2ã¤ã§ã™ã€‚startã§æ¶ˆè²»ã‚µãƒ¼ãƒãƒ¼ã®å†…容ãŒæ¶ˆåŽ»ã•ã‚Œã€stopã§ä¾›çµ¦ã‚µãƒ¼ãƒãƒ¼ã«ã‚ˆã‚‹ã“ã®å‹•ä½œãŒä¸­æ­¢ã•ã‚Œã¾ã™ã€‚例:<P></A>
+<A NAME="1092879">
+<PRE> replicaBeginOrc: start
+</PRE>
+</A>
+
+<A NAME="1092881">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1006496">&nbsp;
+</A>
+<A NAME="replicaBindDn">
+<H3> replicaBindDn</H3>
+</A>
+
+
+
+<A NAME="1006513">
+複製サーãƒãƒ¼ã¨ã®é€šä¿¡ã®éš›ã«ã‚µãƒ¼ãƒãƒ¼ãŒä½¿ç”¨ã™ã‚‹DNを示ã—ã¾ã™ã€‚ã“ã®DNã¯å‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸç‰¹æ¨©ã§ã‚ã‚‹å ´åˆã‚‚ã‚ã‚Šã¾ã™ã€‚例:<P></A>
+<A NAME="1006521">
+<PRE> replicaBinddn: <I>cn=replicator o=Netscape Communications Corp., <br>
+</I> <I>c=US
+</I></PRE>
+</A>
+
+<A NAME="1006538">
+構文: <a href="attribut.htm#1100403">dn</a><P></A>
+
+<A NAME="1009992">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1006636">&nbsp;
+</A>
+<A NAME="replicaBindMethod">
+<H3> replicaBindMethod</H3>
+</A>
+
+
+
+<A NAME="1006689">
+使用ã™ã‚‹è¤‡è£½æ–¹æ³•ã‚’示ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯å­˜åœ¨ã™ã‚‹å¿…è¦ã¯ã‚ã‚Šã¾ã›ã‚“。存在ã™ã‚‹å ´åˆã¯<code>simple</code>ã«è¨­å®šã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。<code>simple</code>ã«è¨­å®šã—ã¦ã„ãªã„ã¨ã€è­¦å‘ŠãŒå°åˆ·ã•ã‚Œã€simpleã¨ã—ã¦è¤‡è£½ãŒå‡¦ç†ã•ã‚Œã¾ã™ã€‚例:<P></A>
+<A NAME="1006710">
+<PRE> replicaBindMethod: simple
+</PRE>
+</A>
+
+<A NAME="1006720">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1009994">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1230073">&nbsp;
+</A>
+<A NAME="replicaCredentials">
+<H3> replicaCredentials</H3>
+</A>
+
+
+
+<A NAME="1230074">
+消費サーãƒãƒ¼ã«é€ä¿¡ã•ã‚Œã‚‹replicaBinddnã¨ã¨ã‚‚ã«ä½¿ç”¨ã™ã‚‹ãƒ‘スワードを示ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯ã€åŽ³æ ¼ãªã‚¢ã‚¯ã‚»ã‚¹åˆ¶å¾¡ã§æŒ‡å®šã™ã‚‹ã“ã¨ãŒç‰¹ã«æŽ¨å¥¨ã•ã‚Œã¾ã™ã€‚例:<P></A>
+<A NAME="1230075">
+<PRE> replicaCredentials: bogusPassword
+</PRE>
+</A>
+
+<A NAME="1230077">
+構文: <a href="attribut.htm#1004700">bin</a> (plain text)<P></A>
+
+<A NAME="1230078">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1148497">&nbsp;
+</A>
+<A NAME="replicaEntryFilter">
+<H3>replicaEntryFilter</H3>
+</A>
+
+
+
+<A NAME="1204405">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„。<P></A>
+
+<A NAME="1280979">
+OID: <code>2.16.840.1.113730.3.1.203</code><P></A>
+
+<A NAME="1152854">
+構文: <a href="attribut.htm#1004702">c</a>is<P></A>
+<P>
+<A NAME="1148445">
+<A NAME="replicaHost">
+<B>replicaHost</B>
+</a></a>
+<P>
+
+
+<A NAME="1148446">
+消費サーãƒãƒ¼ã®ãƒ›ã‚¹ãƒˆåを示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1148447">
+<PRE><A NAME="1148447">
+ replicaHost: slave.netscape.com
+</A>
+</PRE>
+<A NAME="1258218">
+OID: <code>2.16.840.1.113730.3.1.197</code><P></A>
+
+<A NAME="1148449">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1148453">&nbsp;
+</A>
+<A NAME="replicaNickname">
+<H3> replicaNickname</H3>
+</A>
+
+
+
+<A NAME="1148454">
+å˜ä¸€ã®ä¾›çµ¦ã‚µãƒ¼ãƒãƒ¼ã¨å˜ä¸€ã®æ¶ˆè²»ã‚µãƒ¼ãƒãƒ¼é–“ã«ãŠã‘る特定ã®è¤‡è£½ãƒ«ãƒ¼ãƒ«ã‚’記述ã™ã‚‹è‡ªç”±å½¢å¼ã®åå‰ãŒå«ã¾ã‚Œã¾ã™ã€‚<P></A>
+<A NAME="1148455">
+<PRE><A NAME="1148455">
+ replicaNickName: currentset
+</A>
+</PRE>
+<A NAME="1280981">
+OID: <code>2.16.840.1.113730.3.1.204</code><P></A>
+
+<A NAME="1148552">
+構文:<a href="attribut.htm#1004702"> cis</a><P></A>
+
+<A NAME="1010001">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+<A NAME="1007660">
+<A NAME="replicaPort">
+<B>replicaPort</B>
+</a></a>
+<P>
+
+
+<A NAME="1007661">
+消費サーãƒãƒ¼ã®ãƒãƒ¼ãƒˆç•ªå·ã‚’示ã—ã¾ã™ã€‚例:<P></A>
+<PRE><A NAME="1006466">
+ replicaPort: 9872
+</A>
+</PRE>
+<A NAME="1258224">
+OID: <code>2.16.840.1.113730.3.1.48</code><P></A>
+
+<A NAME="1006484">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1010007">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1006384">&nbsp;
+</A>
+<A NAME="replicaRoot">
+<H3> replicaRoot</H3>
+</A>
+
+
+
+<A NAME="1006394">
+消費マシンã«è¤‡è£½ä¸­ã®ã‚µãƒ–ツリーã®DNを示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1006401">
+<PRE><A NAME="1006401">
+ replicaRoot: <I>o=Netscape Communications Corp., c=US</I>
+</A>
+</PRE>
+<A NAME="1258564">
+OID: <code>2.16.840.1.113730.3.1.57</code><P></A>
+
+<A NAME="1006414">
+構文: <a href="attribut.htm#1100403">dn</a><P></A>
+
+<A NAME="1010013">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+<A NAME="1281126">
+<A NAME="replicatedAttributeList">
+<B>replicatedAttributeList</B>
+</a></a>
+<P>
+
+
+<A NAME="1281128">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„。<P></A>
+
+<A NAME="1281133">
+OID: <code>2.16.840.1.113730.3.1.205</code><P></A>
+
+<A NAME="1281135">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+<P>
+<A NAME="1006918">&nbsp;
+</A>
+<A NAME="replicaUpdateFailedAt">
+<H3> replicaUpdateFailedAt</H3>
+</A>
+
+
+
+<A NAME="1006939">
+更新完了ã«å¤±æ•—ã—ãŸæ—¥æ™‚ã‚’zuluå½¢å¼ã§ç¤ºã—ã¾ã™ã€‚ã™ã¹ã¦ã®æ›´æ–°ãŒæˆåŠŸã—ãŸå ´åˆã€replicaUpdateFailedAtã¯ç©ºç™½ã§ã™ã€‚例:<P></A>
+<A NAME="1006946">
+<PRE> replicaUpdateFailedAt: 199603261300z
+</PRE>
+</A>
+
+<A NAME="1006957">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1010019">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1012768">&nbsp;
+</A>
+<A NAME="replicaUpdateReplayed">
+<H3> replicaUpdateReplayed</H3>
+</A>
+
+
+
+<A NAME="1012770">
+消費サーãƒãƒ¼ã«ä¼ãˆã‚‰ã‚ŒãŸæœ€çµ‚変更ã®å¤‰æ›´ç•ªå·ã‚’示ã—ã¾ã™ã€‚ã“ã®å€¤ã¯ã‚µãƒ¼ãƒãƒ¼é–“ã®å†…部ã§ã®ã¿ä½¿ç”¨ã•ã‚Œã¾ã™ã€‚<P></A>
+
+<A NAME="1012772">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1012758">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1006817">&nbsp;
+</A>
+<A NAME="replicaUpdateSchedule">
+<H3> replicaUpdateSchedule</H3>
+</A>
+
+
+
+<A NAME="1006849">
+消費サーãƒãƒ¼ã®æ›´æ–°ã‚¹ã‚±ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’示ã—ã¾ã™ã€‚ã“ã®å±žæ€§ãŒå­˜åœ¨ã—ãªã„å ´åˆã¯ã€æ¶ˆè²»ã‚µãƒ¼ãƒãƒ¼ã¯ç›´ã¡ã«æ›´æ–°ã•ã‚Œã¾ã™ã€‚例: <P></A>
+<A NAME="1006868">
+<PRE> replicaUpdateSchedule: 0100-0400
+</PRE>
+</A>
+<A NAME="1007219">
+<PRE> replicaUpdateSchedule: * 06
+</PRE>
+</A>
+<A NAME="1007229">
+<PRE> replicaUpdateSchedule: 1145-1300 24
+</PRE>
+</A>
+
+<A NAME="1007234">
+ã“れらã®å€¤ã®æ„味:<P></A>
+<A NAME="1007241">
+<PRE> 毎日ã€åˆå‰1時ã‹ã‚‰åˆå‰4時ã¾ã§
+</PRE>
+</A>
+<A NAME="1007247">
+<PRE> 土曜ã¨æ—¥æ›œã®çµ‚æ—¥
+</PRE>
+</A>
+<A NAME="1007252">
+<PRE> ç«æ›œã¨æœ¨æ›œã®åˆå‰11時45分ã‹ã‚‰åˆå¾Œ1時ã¾ã§
+</PRE>
+</A>
+
+<A NAME="1006873">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1010052">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+
+<A NAME="1006741">&nbsp;
+</A>
+<A NAME="replicaUseSsl">
+<H3> replicaUseSsl</H3>
+</A>
+
+
+
+<A NAME="1006754">
+消費サーãƒãƒ¼ã¨ã®é€šä¿¡ã«SSLを使用ã™ã‚‹ã‹ã©ã†ã‹ã‚’示ã—ã¾ã™ã€‚éžã‚¼ãƒ­ã®å€¤ãŒã‚ã‚‹ã¨SSLãŒä½¿ç”¨ã•ã‚Œã¾ã™ã€‚例:<P></A>
+<A NAME="1006794">
+<PRE> replicaUseSsl: 0
+</PRE>
+</A>
+
+<A NAME="1006801">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+<A NAME="1010064">
+ã“ã®å±žæ€§ã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µã§ã™ã€‚<P></A>
+<P>
+<A NAME="1152805">
+<A NAME="retryCountResetTime">
+<B>retryCountResetTime</B>
+</a></a>
+<P>
+
+
+<A NAME="1154931">
+passwordRetryCount属性ãŒã‚¼ãƒ­ (0)ã«ãƒªã‚»ãƒƒãƒˆã•ã‚Œã‚‹ã¾ã§ã®æ™‚間を秒数ã§å®šç¾©ã—ã¾ã™ã€‚<P></A>
+<A NAME="1154932">
+<PRE> retryCountResetTime: 600
+</PRE>
+</A>
+
+<A NAME="1146199">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1202666">&nbsp;
+</A>
+<A NAME="roleOccupant">
+<H3> roleOccupant</H3>
+</A>
+
+
+
+<A NAME="1202667">
+organizationalRoleエントリã§å®šç¾©ã•ã‚ŒãŸå½¹å‰²ã‚’å—ã‘æŒã¤ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®è­˜åˆ¥åãŒå«ã¾ã‚Œã¾ã™ã€‚例:<P></A>
+<A NAME="1204472">
+<PRE> roleOccupant: cn=jdoe o=airius.com
+</PRE>
+</A>
+
+<A NAME="1204474">
+構文: <a href="attribut.htm#1100403">dn</a><P></A>
+
+
+<A NAME="1204477">&nbsp;
+</A>
+<A NAME="roomNumber">
+<H3> roomNumber</H3>
+</A>
+
+
+
+<A NAME="1214596">
+オブジェクトã®éƒ¨å±‹ç•ªå·ã‚’示ã—ã¾ã™ã€‚部屋オブジェクトã®å‘½åã«commonName属性を使用ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。例:<P></A>
+<A NAME="1202675">
+<PRE> roomNumber: 230
+</PRE>
+</A>
+
+<A NAME="1202677">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1202682">&nbsp;
+</A>
+<A NAME="searchGuide">
+<H3> searchGuide</H3>
+</A>
+
+
+
+<A NAME="1202683">
+検索動作ã®ãŸã‚ã«ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª ツリーã®ãƒ™ãƒ¼ã‚¹ オブジェクトã¨ã—ã¦ã‚¨ãƒ³ãƒˆãƒªã‚’使用ã™ã‚‹éš›ã«ã€æ案ã•ã‚Œã‚‹æ¤œç´¢åŸºæº–ã«é–¢ã™ã‚‹æƒ…報を示ã—ã¾ã™ã€‚<P></A>
+
+<A NAME="1230091">
+構文: <a href="attribut.htm#1004701">ces</a><P></A>
+
+
+<A NAME="1202691">&nbsp;
+</A>
+<A NAME="secretary">
+<H3> secretary</H3>
+</A>
+
+
+
+<A NAME="1202692">
+エントリã®ç§˜æ›¸ã¾ãŸã¯ã‚¢ã‚·ã‚¹ã‚¿ãƒ³ãƒˆã‚’示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1202693">
+<PRE> secretary: <I>cn=John Doe, o=Airius.com
+</I></PRE>
+</A>
+
+<A NAME="1202695">
+構文: <a href="attribut.htm#1004702">dn</a><P></A>
+
+
+<A NAME="1172500">&nbsp;
+</A>
+<A NAME="seeAlso">
+<H3> seeAlso</H3>
+</A>
+
+
+
+<A NAME="1172501">
+ã“ã®ã‚¨ãƒ³ãƒˆãƒªã«é–¢ä¿‚ã™ã‚‹æƒ…報をå«ã‚€å¯èƒ½æ€§ã®ã‚る別ã®Directory Serverã®ã‚¨ãƒ³ãƒˆãƒªã‚’示ã—ã¾ã™ã€‚ 例: <P></A>
+<A NAME="1172502">
+<PRE> seeAlso: <I>cn=Quality Control Inspectors, ou=manufacturing, o=Airius,<br>
+ c=US
+</I></PRE>
+</A>
+
+<A NAME="1172504">
+構文: <a href="attribut.htm#1100403">dn</a><P></A>
+
+
+<A NAME="1202700">&nbsp;
+</A>
+<A NAME="serialNumber">
+<H3> serialNumber</H3>
+</A>
+
+
+
+<A NAME="1202701">
+エントリã®ã‚·ãƒªã‚¢ãƒ«ç•ªå·ã‚’定義ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1202702">
+<PRE> serialNumber: 555-1234-AZ
+</PRE>
+</A>
+
+<A NAME="1202704">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1093065">&nbsp;
+</A>
+<A NAME="serverHostName">
+<H3>serverHostName</H3>
+</A>
+
+
+
+<A NAME="1093066">
+NetscapeサーãƒãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„るホストåを示ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€<a href="attribut.htm#">netscapeServer</a>ã®ã‚ªãƒ–ジェクト クラスãŒä½¿ç”¨ã—ã¾ã™ã€‚通常ã€ã“ã®å±žæ€§ã¨å±žæ€§å€¤ã¯ã€Netscapeサーãƒã‚’åˆã‚ã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹éš›ã«ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«æ›¸ãè¾¼ã¾ã‚Œã¾ã™ã€‚例:<P></A>
+<PRE><A NAME="1032467">
+ serverHostname: twain.airius.com
+</A>
+</PRE>
+<A NAME="1259312">
+OID: <code>2.16.840.1.113730.3.1.76</code><P></A>
+
+<A NAME="1032488">
+構文: <a href="attribut.htm#1004701">ces</a><P></A>
+
+
+<A NAME="1032412">&nbsp;
+</A>
+<A NAME="serverProductName">
+<H3>serverProductName</H3>
+</A>
+
+
+
+<A NAME="1032414">
+インストールã•ã‚Œã¦ã„ã‚‹Netscapeサーãƒã®ã‚¿ã‚¤ãƒ—を識別ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€<a href="attribut.htm#">netscapeServer</a>ã®ã‚ªãƒ–ジェクト クラスãŒä½¿ç”¨ã—ã¾ã™ã€‚通常ã€ã“ã®å±žæ€§ã¨å±žæ€§å€¤ã¯ã€Netscapeサーãƒã‚’åˆã‚ã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹éš›ã«ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«æ›¸ãè¾¼ã¾ã‚Œã¾ã™ã€‚例:<P></A>
+<PRE><A NAME="1032416">
+ serverProductName: Netscape Enterprise Server
+</A>
+</PRE>
+<A NAME="1259171">
+OID: <code>2.16.840.1.113730.3.1.71</code><P></A>
+
+<A NAME="1032418">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1032294">&nbsp;
+</A>
+<A NAME="serverRoot">
+<H3>serverRoot</H3>
+</A>
+
+
+
+<A NAME="1032296">
+NetscapeサーãƒãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„るディレクトリã¸ã®ã€å®Œå…¨ãªãƒ‘スを識別ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€<a href="attribut.htm#">netscapeServer</a>ã®ã‚ªãƒ–ジェクト クラスãŒä½¿ç”¨ã—ã¾ã™ã€‚通常ã€ã“ã®å±žæ€§ã¨å±žæ€§å€¤ã¯ã€Netscapeサーãƒã‚’åˆã‚ã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹éš›ã«ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«æ›¸ãè¾¼ã¾ã‚Œã¾ã™ã€‚例:<P></A>
+<PRE><A NAME="1032297">
+ serverRoot: /usr/ns-home
+</A>
+</PRE>
+<A NAME="1259165">
+OID: <code>2.16.840.1.113730.3.1.70</code><P></A>
+
+<A NAME="1032346">
+構文: <a href="attribut.htm#1004701">ces</a><P></A>
+
+
+<A NAME="1032439">&nbsp;
+</A>
+<A NAME="serverVersionNumber">
+<H3>serverVersionNumber</H3>
+</A>
+
+
+
+<A NAME="1032441">
+インストールã•ã‚ŒãŸNetscapeサーãƒã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã‚’識別ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã€<a href="objclass.htm#1097231">netscapeServer</a>ã®ã‚ªãƒ–ジェクト クラスãŒä½¿ç”¨ã—ã¾ã™ã€‚通常ã€ã“ã®å±žæ€§ã¨å±žæ€§å€¤ã¯ã€Netscapeサーãƒã‚’åˆã‚ã¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹éš›ã«ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«æ›¸ãè¾¼ã¾ã‚Œã¾ã™ã€‚例:<P></A>
+<PRE><A NAME="1032443">
+ serverVersionNumber: 3.0
+</A>
+</PRE>
+<A NAME="1259178">
+OID: <code>2.16.840.1.113730.3.1.72</code><P></A>
+
+<A NAME="1203414">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1245426">&nbsp;
+</A>
+<A NAME="singleLevelQuality">
+<H3> singleLevelQuality</H3>
+</A>
+
+
+
+<A NAME="1245427">
+未定義。 <P></A>
+
+<A NAME="1245430">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1203417">&nbsp;
+</A>
+<A NAME="st">
+<H3> st</H3>
+</A>
+
+
+
+<A NAME="1202711">
+エントリã®å±…ä½ã™ã‚‹å·žã¾ãŸã¯éƒ½é“府県を示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1202712">
+<PRE> stateOrProvinceName: California
+</PRE>
+</A>
+
+<A NAME="1202713">
+ã¾ãŸã¯ã€<P></A>
+<A NAME="1202714">
+<PRE> st: California
+</PRE>
+</A>
+
+<A NAME="1202716">
+<a href="attribut.htm#">ç•¥å·</a>: st<P></A>
+
+<A NAME="1202718">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1202721">&nbsp;
+</A>
+<A NAME="street">
+<H3> street</H3>
+</A>
+
+
+
+<A NAME="1202722">
+エントリã®å®¶ã®ç•ªåœ°ã¨è¡—è·¯ã®åå‰ã‚’示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1202723">
+<PRE> streetAddress: 1234 Ridgeway Drive
+</PRE>
+</A>
+
+<A NAME="1202724">
+ã¾ãŸã¯ã€<P></A>
+<A NAME="1202725">
+<PRE> street: 1234 Ridgeway Drive
+</PRE>
+</A>
+
+<A NAME="1202727">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1202732">&nbsp;
+</A>
+<A NAME="subject">
+<H3> subject</H3>
+</A>
+
+
+
+<A NAME="1202733">
+ドキュメント エントリã®ä¸»é¡Œã«é–¢ã™ã‚‹æƒ…å ±ãŒå«ã¾ã‚Œã¾ã™ã€‚<P></A>
+
+<A NAME="1202736">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1242622">&nbsp;
+</A>
+<A NAME="subschemaSubentry">
+<H3> subschemaSubentry</H3>
+</A>
+
+
+
+<A NAME="1242623">
+未定義。<P></A>
+
+<A NAME="1242626">
+構文: <a href="attribut.htm#1100403">dn</a><P></A>
+
+
+<A NAME="1099985">&nbsp;
+</A>
+<A NAME="subtreeaci">
+<H3> subtreeaci</H3>
+</A>
+
+
+
+<A NAME="1099986">
+ newsaccessitemエントリを更新ã§ãるユーザーを示ã—ã¾ã™ã€‚<P></A>
+
+<A NAME="1099989">
+構文: <a href="attribut.htm#1004701">ces</a><P></A>
+
+
+<A NAME="1245467">&nbsp;
+</A>
+<A NAME="subtreeMaximumQuality">
+<H3> subtreeMaximumQuality</H3>
+</A>
+
+
+
+<A NAME="1245469">
+未定義。 <P></A>
+
+<A NAME="1245472">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1245448">&nbsp;
+</A>
+<A NAME="subtreeMinimumQuality">
+<H3> subtreeMinimumQuality</H3>
+</A>
+
+
+
+<A NAME="1245450">
+未定義。 <P></A>
+
+<A NAME="1245453">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1241769">&nbsp;
+</A>
+<A NAME="supportedAlgorithms;binary">
+<H3> supportedAlgorithms;binary</H3>
+</A>
+
+
+
+<A NAME="1241770">
+未定義。 <P></A>
+
+<A NAME="1241967">
+構文: <a href="attribut.htm#1004700">bin</a><P></A>
+
+
+<A NAME="1202747">&nbsp;
+</A>
+<A NAME="supportedApplicationContext">
+<H3> supportedApplicationContext</H3>
+</A>
+
+
+
+<A NAME="1202748">
+ã“ã®å±žæ€§ã«ã¯OSIアプリケーション コンテキストã®è­˜åˆ¥å­ãŒå«ã¾ã‚Œã¾ã™ã€‚<P></A>
+
+<A NAME="1202751">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1243196">&nbsp;
+</A>
+<A NAME="supportedControl">
+<H3> supportedControl</H3>
+</A>
+
+
+
+<A NAME="1243198">
+未定義。<P></A>
+
+<A NAME="1243201">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1243163">&nbsp;
+</A>
+<A NAME="supportedExtension">
+<H3> supportedExtension</H3>
+</A>
+
+
+
+<A NAME="1243164">
+未定義。<P></A>
+
+<A NAME="1243167">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1243238">&nbsp;
+</A>
+<A NAME="supportedLDAPVersion">
+<H3> supportedLDAPVersion</H3>
+</A>
+
+
+
+<A NAME="1243240">
+未定義。<P></A>
+
+<A NAME="1243243">
+構文: <a href="attribut.htm#1243260">int</a><P></A>
+
+
+<A NAME="1243217">&nbsp;
+</A>
+<A NAME="supportedSASLMechanisms">
+<H3> supportedSASLMechanisms</H3>
+</A>
+
+
+
+<A NAME="1243219">
+未定義。<P></A>
+
+<A NAME="1243222">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1230116">&nbsp;
+</A>
+<A NAME="sn">
+<H3> sn</H3>
+</A>
+
+
+
+<A NAME="1230117">
+エントリã®è‹—å­—ã€ã¾ãŸã¯ãƒ©ã‚¹ãƒˆãƒãƒ¼ãƒ ã‚’示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1230118">
+<PRE> surname: Anderson
+</PRE>
+</A>
+
+<A NAME="1230119">
+ã¾ãŸã¯ã€<P></A>
+<A NAME="1230120">
+<PRE> sn: Anderson
+</PRE>
+</A>
+
+<A NAME="1230122">
+<a href="attribut.htm#">ç•¥å·</a>: sn<P></A>
+
+<A NAME="1230124">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1094954">&nbsp;
+</A>
+<A NAME="targetDn">
+<H3> targetDn</H3>
+</A>
+
+
+
+<A NAME="1094956">
+供給サーãƒãƒ¼ã«ãŠã„ã¦è¿½åŠ ã€å¤‰æ›´ã€ã¾ãŸã¯å‰Šé™¤ã•ã‚ŒãŸã‚¨ãƒ³ãƒˆãƒªã®è­˜åˆ¥åを定義ã—ã¾ã™ã€‚modrdn動作ã®å ´åˆã€targetDnã«ã¯ã€å¤‰æ›´å‰ã®ã‚¨ãƒ³ãƒˆãƒªã®è­˜åˆ¥åãŒå«ã¾ã‚Œã¾ã™ã€‚例:<P></A>
+<A NAME="1110601">
+<PRE> targetDn:<I> cn=Jane Doe, ou=Quality Control, o=Airius.com
+</I></PRE>
+</A>
+
+<A NAME="1094942">
+構文: <a href="attribut.htm#1100403">dn</a><P></A>
+
+
+<A NAME="1230129">&nbsp;
+</A>
+<A NAME="telephoneNumber">
+<H3> telephoneNumber</H3>
+</A>
+
+
+
+<A NAME="1230130">
+エントリã®é›»è©±ç•ªå·ã‚’示ã—ã¾ã™ã€‚例: <P></A>
+<A NAME="1230131">
+<PRE> telephoneNumber: 415-555-2233
+</PRE>
+</A>
+
+<A NAME="1230133">
+構文: <a href="attribut.htm#1004703">tel</a><P></A>
+
+
+<A NAME="1205004">&nbsp;
+</A>
+<A NAME="teletexTerminalIdentifier">
+<H3> teletexTerminalIdentifier</H3>
+</A>
+
+
+
+<A NAME="1205006">
+エントリã®ãƒ†ãƒ¬ãƒ†ãƒƒã‚¯ã‚¹ ターミナルã®è­˜åˆ¥å­ã‚’示ã—ã¾ã™ã€‚属性ã®å½¢å¼ã¯æ¬¡ã®é€šã‚Šã§ã™ã€‚<P></A>
+<A NAME="1204973">
+<PRE>teletex-id = ttx-term 0*("$" ttx-param)<br>
+ttx-term = å°åˆ·å¯èƒ½æ–‡å­—列<br>
+ttx-param = ttx-key ":" ttx-value<br>
+ttx-key = "graphic" / "control" / "misc" / "page" / "private"<br>
+ttx-value = オクテット文字列
+</PRE>
+</A>
+<a name="1204978">
+<BLOCKQUOTE>
+上記ã§ã¯ã€æœ€åˆã®å°åˆ·å¯èƒ½æ–‡å­—列ã¯ã€æš—å·åŒ–ã•ã‚Œã‚‹ãƒ†ãƒ¬ãƒ†ãƒƒã‚¯ã‚¹ ターミナル識別å­ã®æœ€åˆã®éƒ¨åˆ†ã®æš—å·ã§ã€å¾Œã®0以上ã®ã‚ªã‚¯ãƒ†ãƒƒãƒˆæ–‡å­—列ã¯ã“ã®ãƒ†ãƒ¬ãƒ†ãƒƒã‚¯ã‚¹ ターミナル識別å­ã®å¾Œç¶šéƒ¨åˆ†ã§ã™ã€‚
+
+</BLOCKQUOTE>
+</a>
+<a name="1205117">
+<BLOCKQUOTE>
+構文: <a href="attribut.htm#1004703">tel
+</a>
+</BLOCKQUOTE>
+</a>
+
+
+<A NAME="1205120">&nbsp;
+</A>
+<A NAME="telexNumber">
+<H3> telexNumber</H3>
+</A>
+
+
+
+<A NAME="1205121">
+エントリã®ãƒ†ãƒ¬ãƒƒã‚¯ã‚¹ç•ªå·ã‚’定義ã—ã¾ã™ã€‚テレックス番å·ã®å½¢å¼ã¯ä»¥ä¸‹ã®é€šã‚Šã§ã™ã€‚<P></A>
+<A NAME="1204750">
+<PRE> actual-number "$" country "$" answerback
+</PRE>
+</A>
+
+<A NAME="1204751">
+上記ã§ã¯ã€<code>actual-number</code>ã¯æš—å·åŒ–ã•ã‚Œã‚‹ãƒ†ãƒ¬ãƒƒã‚¯ã‚¹ç•ªå·ã®ç•ªå·éƒ¨ã‚’構文的ã«è¡¨ç¤ºã—ãŸã‚‚ã®ã§ã€<code>country</code>ã¯ãƒ†ãƒ¬ãƒƒã‚¯ã‚¹ã®å›½ã‚³ãƒ¼ãƒ‰ã€<code>answerback</code>ã¯ãƒ†ãƒ¬ãƒƒã‚¯ã‚¹ ターミナル㮠返信コードã§ã™ã€‚<P></A>
+
+<A NAME="1202779">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1202782">&nbsp;
+</A>
+<A NAME="textEncodedOrAddress">
+<H3> textEncodedOrAddress</H3>
+</A>
+
+
+
+<A NAME="1202783">
+RFC987ã§å®šç¾©ã•ã‚Œã¦ã„る通りã«ã€ã‚¨ãƒ³ãƒˆãƒªã®ãƒ†ã‚­ã‚¹ãƒˆæš—å·åŒ–ã•ã‚ŒãŸç™ºä¿¡å…ƒ/å—信者 (X.400)アドレスを定義ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1202784">
+<PRE> textEncodedOrAddress: /S=doe/OU=eng/O=airius/ADMD=telemail/C=us/
+</PRE>
+</A>
+
+<A NAME="1202786">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1230152">&nbsp;
+</A>
+<A NAME="title">
+<H3> title</H3>
+</A>
+
+
+
+<A NAME="1230153">
+エントリã®å½¹è·ã‚’示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1230154">
+<PRE> title: Senior QC Inspector
+</PRE>
+</A>
+
+<A NAME="1230156">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1202798">&nbsp;
+</A>
+<A NAME="ttl">
+<H3> ttl</H3>
+</A>
+
+
+
+<A NAME="1230159">
+å°†æ¥ã®ä½¿ç”¨ã®ãŸã‚ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1219626">
+<a href="attribut.htm#">ç•¥å·</a>: ttl<P></A>
+<a name="1219607">
+<BLOCKQUOTE>
+構文: <a href="attribut.htm#1004702">cis
+</a>
+</BLOCKQUOTE>
+</a>
+
+
+<A NAME="1202809">&nbsp;
+</A>
+<A NAME="uniqueIdentifier">
+<H3> uniqueIdentifier</H3>
+</A>
+
+
+
+<A NAME="1202810">
+識別åãŒå†ä½¿ç”¨ã•ã‚Œã‚‹éš›ã«2ã¤ã®ã‚¨ãƒ³ãƒˆãƒªã‚’区別ã™ã‚‹ã®ã«ä½¿ç”¨ã™ã‚‹ç‰¹å®šé …目を示ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã¯ã€å‰Šé™¤ã•ã‚ŒãŸè­˜åˆ¥åã¸ã®å‚ç…§ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’検出ã™ã‚‹ãŸã‚ã®ã‚‚ã®ã§ã™ã€‚ã“ã®å±žæ€§ã¯ã‚µãƒ¼ãƒãƒ¼ã«ã‚ˆã£ã¦å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¾ã™ã€‚<P></A>
+
+<A NAME="1202812">
+構文: <a href="attribut.htm#1004700">bin</a> (ビット文字列)<P></A>
+
+
+<A NAME="1172624">&nbsp;
+</A>
+<A NAME="uniqueMember">
+<H3> uniqueMember</H3>
+</A>
+
+
+
+<A NAME="1172625">
+一æ„性をä¿è¨¼ã™ã‚‹ãŸã‚ã«å„åå‰ã«uniqueIdentifierãŒä¸Žãˆã‚‰ã‚ŒãŸã€ã‚¨ãƒ³ãƒˆãƒªã¨é–¢ä¿‚ã™ã‚‹åå‰ã®ã‚°ãƒ«ãƒ¼ãƒ—を示ã—ã¾ã™ã€‚uniqueMemberã®å±žæ€§å€¤ã¯uniqueIdentifierãŒå¾Œã«ç¶šãDNã§ã™ã€‚<P></A>
+
+<A NAME="1172627">
+構文: <a href="attribut.htm#1100403">dn</a><P></A>
+
+
+<A NAME="1202817">&nbsp;
+</A>
+<A NAME="updatedByDocument">
+<H3> updatedByDocument</H3>
+</A>
+
+
+
+<A NAME="1217372">
+ドキュメント エントリã®æ›´æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã‚るドキュメントã®è­˜åˆ¥åãŒå«ã¾ã‚Œã¾ã™ã€‚<P></A>
+
+<A NAME="1202821">
+構文: <a href="attribut.htm#1100403">dn</a><P></A>
+
+
+<A NAME="1202824">&nbsp;
+</A>
+<A NAME="updatesDocument">
+<H3> updatesDocument</H3>
+</A>
+
+
+
+<A NAME="1217396">
+æ›´æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã‚ã‚‹ã“ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã®å…ƒã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã®è­˜åˆ¥åãŒå«ã¾ã‚Œã¾ã™ã€‚<P></A>
+
+<A NAME="1202825">
+構文: <a href="attribut.htm#1100403">dn</a><P></A>
+
+
+<A NAME="1208938">&nbsp;
+</A>
+<A NAME="userCertificate">
+<H3>userCertificate</H3>
+</A>
+
+
+
+<A NAME="1208940">
+ユーザーã®è¨¼æ˜Žæ›¸ã®ãƒ†ã‚­ã‚¹ãƒˆã‚³ãƒ¼ãƒ‰ ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’å«ã¿ã¾ã™ã€‚ã“ã‚Œã¯ãŠè–¦ã‚ã—ã¾ã›ã‚“。代ã‚ã‚Šã«userCertificate;binaryã‚’ã”使用ãã ã•ã„。<P></A>
+
+<A NAME="1208942">
+構文: <a href="attribut.htm#1004700">bin</a><P></A>
+
+
+<A NAME="1208946">&nbsp;
+</A>
+<A NAME="userCertificate;binary">
+<H3> userCertificate;binary</H3>
+</A>
+
+
+
+<A NAME="1208948">
+ユーザーã®è¨¼æ˜Žæ›¸ãŒãƒã‚¤ãƒŠãƒªå½¢å¼ã§å«ã¾ã‚Œã¾ã™ã€‚<P></A>
+
+<A NAME="1208950">
+構文: <a href="attribut.htm#1004700">bin</a><P></A>
+
+
+<A NAME="1202840">&nbsp;
+</A>
+<A NAME="userClass">
+<H3> userClass</H3>
+</A>
+
+
+
+<A NAME="1214739">
+コンピュータ ユーザーã®ã‚«ãƒ†ã‚´ãƒªã‚’示ã—ã¾ã™ã€‚ã“ã®å±žæ€§ã®æ„味ã¯ä»»æ„ã®ã‚‚ã®ã§ã™ã€‚organizationalStatus属性ã§ã¯ã‚³ãƒ³ãƒ”ュータ ユーザーã¨ä»–ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®åŒºåˆ¥ãŒãªã„ãŸã‚ã€é©ç”¨æ€§ãŒé«˜ã„å ´åˆãŒã‚ã‚Šã¾ã™ã€‚例:<P></A>
+<A NAME="1202842">
+<PRE> userClass: intern
+</PRE>
+</A>
+
+<A NAME="1202844">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1202847">&nbsp;
+</A>
+<A NAME="uid">
+<H3> uid</H3>
+</A>
+
+
+
+<A NAME="1202848">
+エントリã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ID(通常ã¯ãƒ­ã‚°ã‚ªãƒ³ ID)を示ã—ã¾ã™ã€‚例:<P></A>
+<A NAME="1202849">
+<PRE> userid: banderson
+</PRE>
+</A>
+
+<A NAME="1202850">
+ã¾ãŸã¯ã€<P></A>
+<A NAME="1202851">
+<PRE> uid: banderson
+</PRE>
+</A>
+
+<A NAME="1202853">
+<a href="attribut.htm#">ç•¥å·</a>: uid<P></A>
+
+<A NAME="1202855">
+構文: <a href="attribut.htm#1004702">cis</a><P></A>
+
+
+<A NAME="1196547">&nbsp;
+</A>
+<A NAME="userPassword">
+<H3> userPassword</H3>
+</A>
+
+
+
+<A NAME="1196548">
+エントリã®ãƒ‘スワードã¨æš—å·åŒ–方法をã€{æš—å·åŒ–方法}æš—å·åŒ–パスワードã®å½¢å¼ã§ç¤ºã—ã¾ã™ã€‚<P></A>
+
+<A NAME="1196550">
+例:<P></A>
+<A NAME="1196551">
+<PRE> userPassword: {sha}FTSLQhxXpA05
+</PRE>
+</A>
+
+<A NAME="1196553">
+構文: <a href="attribut.htm#1004700">bin</a><P></A>
+
+
+<A NAME="1103595">&nbsp;
+</A>
+<A NAME="userSMIMECertificate;binary">
+<H3>userSMIMECertificate;binary</H3>
+</A>
+
+
+
+<A NAME="1103596">
+S/MIMEã§Netscape CommunicatorãŒä½¿ç”¨ã—ã¾ã™ã€‚例: <P></A>
+
+<A NAME="1235505">
+構文: <a href="attribut.htm#1004700">bin</a><P></A>
+
+
+<A NAME="1202876">&nbsp;
+</A>
+<A NAME="x121Address">
+<H3> x121Address</H3>
+</A>
+
+
+
+<A NAME="1202877">
+ユーザーã®X.121アドレスを定義ã—ã¾ã™ã€‚<P></A>
+
+<A NAME="1202880">
+構文: <a href="attribut.htm#1004701">ces</a><P></A>
+
+
+<A NAME="1235525">&nbsp;
+</A>
+<A NAME="x500UniqueIdentifier">
+<H3> x500UniqueIdentifier</H3>
+</A>
+
+
+
+<A NAME="1235526">
+未定義。 <P></A>
+
+<A NAME="1235529">
+構文: <a href="attribut.htm#1004700">bin</a><P></A>
+<a name="1241249">
+<BLOCKQUOTE>
+
+
+</BLOCKQUOTE>
+</a>
+
+<p>
+
+<hr width="80%" size="2">
+<FONT SIZE="-2">
+<CENTER>
+Copyright 1997 Netscape Communications Corporation. All rights reserved.
+</CENTER>
+</FONT>
+
+</body>
+</html>
+
diff --git a/ldap/clients/dsgw/html/manual/ja/auth.htm b/ldap/clients/dsgw/html/manual/ja/auth.htm
new file mode 100644
index 00000000..2b611322
--- /dev/null
+++ b/ldap/clients/dsgw/html/manual/ja/auth.htm
@@ -0,0 +1,151 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<html>
+<!-- HEAD -->
+
+<title>ディレクトリã¸ã®èªè¨¼</title>
+</head>
+<body>
+
+<h1><a name="authenticating"></a>èªè¨¼</h1>
+
+<p>èªè¨¼ã¯ã€Directory Serverã«èº«åˆ†ã‚’証明ã™ã‚‹å‡¦ç†ã§ã™ã€‚èªè¨¼å‡¦ç†ã«ã‚ˆã£ã¦ã€Directory Serverã¯ã€ãƒ¦ãƒ¼ã‚¶ã«è¨±å¯ã™ã‚‹ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®æ“作を決ã‚ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã—ã‹ã—ã€èªè¨¼ã¯å¿…ãšå¿…è¦ã§ã‚ã‚‹ã¨ã¯é™ã‚‰ãªã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。ディレクトリ管ç†è€…ã¯ã€ã‚る処ç†ã«å¯¾ã—ã¦ã¯è¨±å¯ã‚’ä¸è¦ã«ã™ã‚‹ã‚ˆã†ã«ã‚·ã‚¹ãƒ†ãƒ ã‚’設定ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚</p>
+
+<p>デフォルトã§ã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªç®¡ç†è€…以外ã®ã™ã¹ã¦ã®ãƒ¦ãƒ¼ã‚¶ã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’æ‹’å¦ã•ã‚Œã¾ã™ã€‚ディレクトリ管ç†è€…ãŒãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã¸ã®ã‚¢ã‚¯ã‚»ã‚¹æ¨©ã®ä»˜ä¸Žã¾ãŸã¯å‰Šé™¤ã‚’è¡Œã„ã¾ã™ã€‚ã“ã®ã‚ˆã†ãªè¨±å¯ã¯ã‚µã‚¤ãƒˆã”ã¨ã«æ±ºå®šã•ã‚Œã‚‹ãŸã‚ã€è‡ªåˆ†ãŒä¿æŒã—ã¦ã„るディレクトリã¸ã®ã‚¢ã‚¯ã‚»ã‚¹æ¨©ã®ç¨®é¡žã‚„ã©ã®æ“作ã«èªè¨¼ãŒå¿…è¦ã‹ã«ã¤ã„ã¦ã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªç®¡ç†è€…ã«å°‹ã­ã¦ãã ã•ã„。</p>
+
+<p>本章ã®å†…容:</p>
+
+<ul>
+ <li><a href="#ustand">ディレクトリ アクセスã«ã¤ã„ã¦</a></li>
+ <li><a href="#userauth">ディレクトリã¸ã®èªè¨¼</a></li>
+ <li><a href="#logout">ディレクトリã‹ã‚‰ã®ãƒ­ã‚°ã‚¢ã‚¦ãƒˆ</a></li>
+ <li><a href="#incorrectauth">ä¸é©åˆ‡ãªèªè¨¼ã«ã‚ˆã£ã¦ç™ºç”Ÿã™ã‚‹å•é¡Œ</a></li>
+</ul>
+
+<h2><a name="ustand"></a>ディレクトリ アクセスã«ã¤ã„ã¦</h2>
+
+<p>ディレクトリã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã®å¿…è¦ãªãƒ¦ãƒ¼ã‚¶ã‚„å¿…è¦ã¨ã•ã‚Œã‚‹ã‚¢ã‚¯ã‚»ã‚¹ タイプを決定ã™ã‚‹ã“ã¨ã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªç®¡ç†è€…ã®é‡è¦ãªä»•äº‹ã®1ã¤ã§ã™ã€‚ディレクトリ管ç†è€…ã¯ã€ã‚¢ã‚¯ã‚»ã‚¹åˆ¶å¾¡æ©Ÿæ§‹ã‚’使用ã—ã¦ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã¸ã®ã‚¢ã‚¯ã‚»ã‚¹è¨±å¯ã‚’付与ã¾ãŸã¯ç¦æ­¢ã—ã¾ã™ã€‚アクセス制御機構を使用ã—ã¦ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªç®¡ç†è€…ã¯ä»¥ä¸‹ã®ã‚¢ã‚¯ã‚»ã‚¹æ¨©ã‚’付与ã¾ãŸã¯ç¦æ­¢ã§ãã¾ã™ã€‚
+ </p>
+
+<ul>
+ <li>ã™ã¹ã¦ã®æœªèªè¨¼ã®ãƒ¦ãƒ¼ã‚¶ã«å¯¾ã™ã‚‹ã‚¢ã‚¯ã‚»ã‚¹æ¨©(ã“ã‚Œã¯åŒ¿åアクセスã¨å‘¼ã°ã‚Œã¾ã™) </li>
+ <li>ã™ã¹ã¦ã®èªè¨¼ãƒ¦ãƒ¼ã‚¶ã«å¯¾ã™ã‚‹ã‚¢ã‚¯ã‚»ã‚¹æ¨©</li>
+ <li>特定ã®èªè¨¼ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚°ãƒ«ãƒ¼ãƒ—ã«å¯¾ã™ã‚‹ã‚¢ã‚¯ã‚»ã‚¹æ¨©</li>
+ <li>特定ã®ãƒžã‚·ãƒ³ã¾ãŸã¯DNSドメインã‹ã‚‰ã®ã‚¢ã‚¯ã‚»ã‚¹æ¨©</li>
+ <li>特定ã®æ™‚é–“ã¾ãŸã¯æ›œæ—¥ã«ãŠã‘るアクセス権</li>
+ <li>èªè¨¼æ–¹æ³•ã«åŸºã¥ãアクセス権</li>
+</ul>
+
+<p>管ç†è€…ãŒå‰²ã‚Šå½“ã¦ã‚‹ç‰¹å®šã®æ¨©é™ã¯ã€ãƒ¦ãƒ¼ã‚¶ã«ã‚ˆã£ã¦ç•°ãªã‚‹ã“ã¨ã‚‚ã‚ã‚Šã¾ã™ã€‚例ãˆã°ã€åŒ¿åユーザã«ã¯èª­è¾¼ã¿ãŠã‚ˆã³æ¤œç´¢ã®ã‚¢ã‚¯ã‚»ã‚¹æ¨©ã®ã¿ãŒé€šå¸¸ä»˜ä¸Žã•ã‚Œã¾ã™ãŒã€ç‰¹å®šã®èªè¨¼ãƒ¦ãƒ¼ã‚¶ã€ã¾ãŸã¯ã‚°ãƒ«ãƒ¼ãƒ—ã®ã¿ã«æ›¸è¾¼ã¿ã‚¢ã‚¯ã‚»ã‚¹æ¨©ãŒä»˜ä¸Žã•ã‚ŒãŸã‚Šã€ã¾ãŸã¯ç‰¹å®šã®ãƒžã‚·ãƒ³ã‹ã‚‰æ“作ã«ã®ã¿æ›¸è¾¼ã¿ã‚¢ã‚¯ã‚»ã‚¹æ¨©ãŒä»˜ä¸Žã•ã‚Œã‚‹ã“ã¨ã‚‚ã‚ã‚Šã¾ã™ã€‚</p>
+
+<p>ディレクトリ管ç†è€…ãŒãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«è¨±å¯ã‚’é©ç”¨ã—ã¦å®Ÿè¡Œã§ãã‚‹æ“作をã€ä»¥ä¸‹ã«ã„ãã¤ã‹ç¤ºã—ã¾ã™ã€‚ディレクトリ管ç†è€…ãŒå®Ÿè¡Œå¯èƒ½ãªã“ã¨:</p>
+
+<ul>
+ <li>ä»»æ„ã®æ–¹æ³•ã§ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹å‰ã«èªè¨¼ã‚’義務付ã‘ã‚‹</li>
+ <li>ディレクトリã®ç‰¹å®šã®ã‚µãƒ–セクションã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹å‰ã«èªè¨¼ã‚’義務付ã‘ã‚‹ </li>
+ <li>エントリã®è¿½åŠ ã¾ãŸã¯å¤‰æ›´ãªã©ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ãŠã‘る特定ã®æ“作を実行ã™ã‚‹å‰ã«èªè¨¼ã‚’義務付ã‘ã‚‹</li>
+ <li>ディレクトリ全体ã¾ãŸã¯ä¸€éƒ¨ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’æ‹’å¦ã—ãŸã‚Šã€ã¾ãŸã¯ç‰¹å®šã®æ“作ã®å®Ÿè¡Œã‚’æ‹’å¦ã™ã‚‹</li>
+ <li>ディレクトリ全体ã¾ãŸã¯ä¸€éƒ¨ã®åŒ¿åアクセスを許å¯ã™ã‚‹ </li>
+ <li>ã‚る種ã®å‹•ä½œ(検索ãªã©)ã®åŒ¿åアクセスを許å¯ã™ã‚‹ãŒã€ãã®ä»–ã®æ“作(変更ãªã©)ã®åŒ¿åアクセスをç¦æ­¢ã™ã‚‹</li>
+ <li>ç¾åœ¨ä½¿ç”¨ä¸­ã®ç‰©ç†çš„マシンã«åŸºã¥ã„ã¦ã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯ã¾ãŸã¯æ‹’å¦ã™ã‚‹ </li>
+</ul>
+
+<p>Directory Serverゲートウェイインタフェースã§ã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª アクセスを試ã¿ã‚‹å‰ã«èªè¨¼ãŒç¾©å‹™ä»˜ã‘られã¦ã„ã‚‹ã‹ã©ã†ã‹ã‚’èªè­˜ã™ã‚‹æ‰‹æ®µãŒã‚ã‚Šã¾ã›ã‚“。ã—ã‹ã—ã€ã“ã®ã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ã§ã¯ã€ä»»æ„ã®æ–¹æ³•ã§ãƒ¦ãƒ¼ã‚¶ãŒãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª ツリーを変更ã™ã‚‹å‰ã«èªè¨¼ãŒå¿…è¦ã§ã‚ã‚‹ã“ã¨ãŒè¨­å®šã•ã‚Œã¦ãŠã‚Šã€ç¾åœ¨ãƒ¦ãƒ¼ã‚¶ãŒèªè¨¼ã—ã¦ã„ãªã„å ´åˆã¯ã€å¤‰æ›´å‰ã«èªè¨¼ã™ã‚‹ã‚ˆã†ãƒ—ロンプトãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚èªè¨¼ã—ãªã„å ´åˆã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªç®¡ç†è€…ãŒåŒ¿åアクセス用ã«è¨­å®šã—ãŸæ“作ã¨ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªéƒ¨åˆ†ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã®ã¿ãŒè¨±å¯ã•ã‚Œã¾ã™ã€‚</p>
+
+<!--<p>アクセス制御ã®è©³ç´°ã¯ã€ã€ŽDirectory Server管ç†è€…用ガイドã€ã‚’ã”覧ãã ã•ã„。</p>-->
+
+<h2><a name="userauth"></a>ディレクトリã¸ã®èªè¨¼</h2>
+
+<p>å ´åˆã«ã‚ˆã£ã¦ã¯ã€ã‚ã‚‹æ“作å‰ã«èªè¨¼ã™ã‚‹ã‚ˆã†ãƒ—ロンプトãŒè‡ªå‹•çš„ã«è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ ã¾ãŸã€[èªè¨¼]タブをクリックã—ã¦ã€æ˜Žç¤ºçš„ã«èªè¨¼ã‚’é¸æŠžã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ã„ãšã‚Œã®å ´åˆã‚‚ã€èªè¨¼éŽç¨‹ã¯ä»¥ä¸‹ã®é€šã‚Šã§ã™ã€‚</p>
+
+<ol>
+ <li>[èªè¨¼]タブをクリックã—ã¾ã™ã€‚</li>
+ <li>Directory Serverã«èº«åˆ†ã‚’証明ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã™ã‚‹åå‰ã‚’入力ã—ã¾ã™ã€‚
+ <ul type="disc">
+ <li><a name="userauth2"></a>通常ã®ãƒ¦ãƒ¼ã‚¶ã¨ã—ã¦èªè¨¼ã™ã‚‹ã«ã¯ã€æ°åを入力ã—ã¦[継続]をクリックã—ã¾ã™ã€‚<br>
+ Directory Serverã«è¡¨ç¤ºã•ã‚Œã‚‹é€šã‚Šã«åå‰(一般åã€æ°åã‚ã‚‹ã„ã¯ãƒ¦ãƒ¼ã‚¶ID)を入力ã—ã¾ã™ã€‚
+ ローカルã®ã‚ªãƒšãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚° システムã®ãƒ¦ãƒ¼ã‚¶IDã¾ãŸã¯ãƒ­ã‚°ã‚¤ãƒ³ã‚’入力ã—ãªã„ã§ãã ã•ã„。 </li>
+ <li><a name="managerauth2"></a>特権ã®ã‚るディレクトリ ユーザã¨ã—ã¦èªè¨¼ã™ã‚‹ã«ã¯ã€<b>[ディレクトリ管ç†è€…ã¨ã—ã¦èªè¨¼]</b>ボタンをクリックã—ã¾ã™ã€‚</li>
+ </ul>
+ </li>
+ <li>一致ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªã®ãƒ†ãƒ¼ãƒ–ルãŒè¤‡æ•°è¡¨ç¤ºã•ã‚ŒãŸå ´åˆã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª エントリã«å¯¾å¿œã™ã‚‹ãƒªãƒ³ã‚¯ã‚’é¸æŠžã—ã¾ã™ã€‚åå‰ãŒãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ãŠã„ã¦å›ºæœ‰ã®ã‚‚ã®ã§ã‚ã‚‹å ´åˆã¯ã€ã‚·ã‚¹ãƒ†ãƒ ã¯ã“ã®ã‚¹ãƒ†ãƒƒãƒ—を飛ã°ã—ã¾ã™ã€‚</li>
+ <li>パスワードを入力ã—ã¦[継続]をクリックã—ã¾ã™ã€‚<br>
+ 自分ã®ãƒ‘スワードãŒä¸æ˜Žã®å ´åˆã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªç®¡ç†è€…ã«ãŠå°‹ã­ãã ã•ã„。<br>
+ <a name="authsuccess"></a>èªè¨¼å‹•ä½œã®å®Œäº†ã«æˆåŠŸã—ãŸã‚‰ã€èªè¨¼ã®æœ‰åŠ¹æ™‚間を示ã™ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ã“ã®æ™‚é–“ãŒéŽãŽãŸã‚‰ã€ã‚»ãƒƒã‚·ãƒ§ãƒ³ã‚’継続ã™ã‚‹ãŸã‚ã«ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«å†åº¦èªè¨¼ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚パスワードãŒå¤±åŠ¹ã—ã¦ã„ã‚Œã°ã€ãã®å ´ã§ãƒ‘スワードを変更ã™ã‚‹ã‹ã€ã‚·ã‚¹ãƒ†ãƒ ç®¡ç†è€…ã«é€£çµ¡ã—ã¦ãã ã•ã„。</li>
+ <li>[メインã¸æˆ»ã‚‹]をクリックã—ã¦Directory Serverインタフェースã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã‚’継続ã—ã¾ã™ã€‚</li>
+</ol>
+
+<h2><a name="logout"></a>ディレクトリã‹ã‚‰ã®ãƒ­ã‚°ã‚¢ã‚¦ãƒˆ</h2>
+
+<p>Directory Serverã«æ—¢ã«èªè¨¼æ¸ˆã¿ã§ã€åŒ¿åアクセスã«æˆ»ã‚‹å ´åˆã¯ã€ä»¥ä¸‹ã‚’実行ã—ã¦ãã ã•ã„。</p>
+
+<ol>
+ <li>[èªè¨¼]タブをクリックã—ã¾ã™ã€‚</li>
+ <li> <b>[èªè¨¼ã®ç ´æ£„(ログアウト)]</b>ボタンをクリックã—ã¾ã™ã€‚ </li>
+</ol>
+
+<p>ã“ã‚Œã§åŒ¿åアクセスã«æˆ»ã‚Šã¾ã™ã€‚アクセスã®ã‚¿ã‚¤ãƒ—を変更ã™ã‚‹ã«ã¯ã€å†åº¦Directory Serverã«èªè¨¼ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚詳細ã¯ã€<a
+href="#userauth2">「ユーザã¨ã—ã¦èªè¨¼ã€</a>ã¾ãŸã¯<a
+href="#managerauth2">「ディレクトリ管ç†è€…ã¨ã—ã¦èªè¨¼ã€</a>ã‚’ã”覧ãã ã•ã„。</p>
+
+<h2><a name="reauth"></a>ディレクトリã¸ã®å†åº¦èªè¨¼</h2>
+
+<p>ディレクトリã«èªè¨¼ã™ã‚‹ã¨ã€ç‰¹å®šæ™‚間有効ãªèªè¨¼è¨¼æ˜Žæ›¸ãŒä»˜ä¸Žã•ã‚Œã¾ã™ã€‚デフォルトã§ã¯ã€èªè¨¼è¨¼æ˜Žæ›¸ã¯120分間有効ã§ã™ã€‚ãŸã ã—ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªç®¡ç†è€…ãŒæœ‰åŠ¹æœŸé–“を設定ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚Directory Serverインタフェースã®ä½¿ç”¨ãŒçµ‚ã‚ã‚‹å‰ã«èªè¨¼è¨¼æ˜Žæ›¸ãŒå¤±åŠ¹ã™ã‚‹å ´åˆã€å¤‰æ›´ã‚’ä¿å­˜ã™ã‚‹ã«ã¯ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«å†åº¦èªè¨¼ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ディレクトリã¸ã®å†åº¦èªè¨¼æ‰‹é †ã¯ã€æœ€åˆã«ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã¸ã®<a href="#userauth">èªè¨¼</a>ã«ä½¿ç”¨ã—ãŸã‚‚ã®ã¨åŒã˜ã§ã™ã€‚</p>
+
+<h2><a name="incorrectauth"></a>ä¸é©åˆ‡ãªèªè¨¼ã«ã‚ˆã£ã¦ç™ºç”Ÿã™ã‚‹å•é¡Œ</h2>
+
+<p>Directory Serverã«èªè¨¼ã—ã¦ã„ãªã„å ´åˆã¯ã€åŒ¿åユーザã¨ã—ã¦ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦ã„ã¾ã™ã€‚匿åユーザã¨ã—ã¦å®Ÿè¡Œå¯èƒ½ãªå‹•ä½œã®ã‚¿ã‚¤ãƒ—ã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªç®¡ç†è€…ã«ã‚ˆã£ã¦è¨­å®šã•ã‚ŒãŸã‚¢ã‚¯ã‚»ã‚¹åˆ¶å¾¡ã«ã‚ˆã£ã¦ç•°ãªã‚Šã¾ã™ã€‚検索ãªã©ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªæ“作ã®å®Ÿè¡Œã‚’試ã¿ã‚‹ã¨ã€å¥‡å¦™ãªå‹•ä½œã‚’ã™ã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚Directory Serverインタフェースã«ã‚ˆã£ã¦æ˜Žç¤ºçš„ã«ç¤ºã•ã‚Œã¦ã¯ã„ã¾ã›ã‚“ãŒã€ç™ºç”Ÿã™ã‚‹ç•°å¸¸ã¯ä¸é©åˆ‡ãªèªè¨¼ã«ã‚ˆã‚‹ã“ã¨ãŒè€ƒãˆã‚‰ã‚Œã¾ã™ã€‚インタフェース上ã§ã“ã®æƒ…報をæä¾›ã—ãªã„ã®ã¯ã€ãã‚Œã«ã‚ˆã£ã¦ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ãŒå¼±ã‚られるå¯èƒ½æ€§ãŒã‚ã‚‹ã‹ã‚‰ã§ã™ã€‚</p>
+
+<p>下表ã«ã¯ã€ä¸€èˆ¬çš„ãªå•é¡Œã®å…†å€™ã€è€ƒãˆã‚‰ã‚Œã‚‹åŽŸå› ã€ãŠã‚ˆã³å•é¡Œã®è§£æ±ºç­–ãŒãƒªã‚¹ãƒˆã•ã‚Œã¦ã„ã¾ã™ã€‚</p>
+
+<table border="2">
+ <tr>
+ <th width="30%"><b>兆候</b></th>
+ <th><b>原因</b></th>
+ <td width="30%"><b>解決策</b></td>
+ </tr>
+ <tr>
+ <td valign="top" width="30%">検索çµæžœãŒä½•ã‚‚ãªã„。</td>
+ <td valign="top">入力ã—ãŸæ¤œç´¢æ–‡å­—列ã«ä¸€è‡´ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªãŒãªã„ã‹ã€ã¾ãŸã¯ã“ã®ã‚¿ã‚¤ãƒ—ã®æ¤œç´¢å‹•ä½œã®å®Ÿè¡Œå‰ã«ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã¸ã®èªè¨¼ãŒç¾©å‹™ä»˜ã‘られã¦ã„ã¾ã™ã€‚</td>
+ <td valign="top" width="30%">ç•°ãªã£ãŸæ¤œç´¢å‹•ä½œã‚’試ã—ã¦ã¿ã¦ãã ã•ã„。ã¾ãŸã¯ã€å…¥åŠ›ã—ãŸåŸºæº–ã«ä¸€è‡´ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªãŒå¿…ãšã‚ã‚‹ã“ã¨ãŒåˆ†ã‹ã£ã¦ã„ã‚‹å ´åˆã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«<a href="#userauth">èªè¨¼</a>ã—ã¾ã™ã€‚</td>
+ </tr>
+ <tr>
+ <td valign="top" width="30%">検索çµæžœã«ã‚¨ãƒ³ãƒˆãƒªãŒæ¬ ã‘ã¦ã„ã‚‹ã‹ã€ã¾ãŸã¯æˆ»ã•ã‚ŒãŸã‚¨ãƒ³ãƒˆãƒªã‹ã‚‰å±žæ€§æƒ…å ±ãŒæ¬ ã‘ã¦ã„る。</td>
+ <td valign="top">æ­£ã—ãèªè¨¼ã—ã¦ã„ãªã„ã‹ã€ã‚ã‚‹ã„ã¯æƒ…å ±ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹æ¨©ãŒä»˜ä¸Žã•ã‚Œã¦ã„ã¾ã›ã‚“。ディレクトリ管ç†è€…ã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª ツリー全体ã¾ãŸã¯ä¸€éƒ¨ã§ã‚¨ãƒ³ãƒˆãƒªã¾ãŸã¯ç‰¹å®šã®ã‚¨ãƒ³ãƒˆãƒªå±žæ€§ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã®ã«èªè¨¼ãŒå¿…è¦ã§ã‚ã‚‹ã“ã¨ã‚’指定ã§ãã¾ã™ã€‚ã“ã®å ´åˆã€æƒ…å ±ãŒå­˜åœ¨ã™ã‚‹ã‹ã€ã•ã‚‰ã«ãã®æƒ…å ±ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹æ¨©é™ã‚’ユーザãŒä¿æŒã—ã¦ã„ã‚‹ã‹ã¯Directory Serverã§ã¯ç¤ºã•ã‚Œã¾ã›ã‚“。代ã‚ã‚Šã«ã€æƒ…å ±ãŒã¾ã£ãŸã存在ã—ãªã„ã‹ã®ã‚ˆã†ã«å‹•ä½œã—ã¾ã™ã€‚ツリーã«ãŠã‘る特定ã®æƒ…報を表示ã§ããªãã¦ã‚‚ã€ãã‚ŒãŒå­˜åœ¨ã™ã‚‹ã“ã¨ã‚’知ã£ã¦ã„ã‚‹ã“ã¨ã¯ã€ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ä¸Šã®ãƒªã‚¹ã‚¯ã¨ãªã‚Šã†ã‚‹ã¨ã®é…æ…®ã‹ã‚‰ã€ã“ã®ã‚ˆã†ã«å‹•ä½œã™ã‚‹ã‚ˆã†ã«ãªã£ã¦ã„ã¾ã™ã€‚ </td>
+ <td valign="top" width="30%">æ­£ã—ã<a
+ href="#userauth">èªè¨¼ã•ã‚Œã¦ã„ã‚‹</a>ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。必è¦ãªãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªæƒ…å ±ã«ã‚¢ã‚¯ã‚»ã‚¹æ¨©ãŒã‚ã‚‹ã“ã¨ã‚’ディレクトリ管ç†è€…ã«ç¢ºèªã—ã¾ã™ã€‚</td>
+ </tr>
+ <tr>
+ <td valign="top" width="30%">完了後ã€å‹•ä½œã«å¤±æ•—ã™ã‚‹ã€‚</td>
+ <td valign="top">ä¸é©åˆ‡ãªèªè¨¼ã®ãŸã‚ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãŒå‹•ä½œã«å¤±æ•—ã—ã¦ã„ã¾ã™ã€‚ã‚ãŸã‹ã‚‚インタフェースã®ãƒ•ã‚©ãƒ¼ãƒ ã®å‹•ä½œãŒå¤±æ•—ã—ã¦ã„るよã†ã«è¦‹ãˆã¾ã™ãŒã€ãƒ•ã‚©ãƒ¼ãƒ ã¯å‹•ä½œã‚’Directory Serverã«å‹•ä½œã‚’å—ã‘渡ã™ã ã‘ã§ã€å®Ÿéš›ã¯Directory ServerãŒå‹•ä½œã«å¤±æ•—ã—ã¦ã„ã¾ã™ã€‚Directory Serverインタフェースã¯ã€å˜ã«å‹•ä½œã®çµæžœã‚’報告ã™ã‚‹ã ã‘ã®ã‚‚ã®ã§ã™ã€‚ç¾åœ¨ã€LDAPプロトコルã§ã¯ã€å‹•ä½œãŒè©¦ã¿ã‚‰ã‚Œã‚‹å‰ã«èªè¨¼ãŒå¿…è¦ã§ã‚ã‚‹ã‹ãŒã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ã«ã‚ˆã£ã¦èªè­˜ã§ããªã„よã†ã«ãªã£ã¦ã„ã‚‹ãŸã‚ã«ã€ã“ã®äº‹æ…‹ãŒç™ºç”Ÿã—ã¾ã™ã€‚ディレクトリ エントリã®ä½œæˆã¾ãŸã¯å¤‰æ›´ä¸­ã«èªè¨¼ãŒå¤±åŠ¹ã—ãŸå ´åˆã«é™ã‚Šã€ã“ã®ã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ä½¿ç”¨ä¸­ã«ã“ã®äº‹æ…‹ãŒç™ºç”Ÿã™ã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚</td>
+ <td valign="top" width="30%">æ­£ã—ã<a
+ href="#userauth">èªè¨¼ã•ã‚Œã¦ã„ã‚‹</a>ã“ã¨ã¨èªè¨¼ãŒå¤±åŠ¹ã—ã¦ã„ãªã„ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。</td>
+ </tr>
+ <tr>
+ <td valign="top" width="30%">èªè¨¼éŽç¨‹ä¸­ã«ã‚¨ãƒ³ãƒˆãƒªã®ãƒ†ãƒ¼ãƒ–ルãŒè¡¨ç¤ºã•ã‚Œã‚‹ã€‚</td>
+ <td valign="top">æ°åãŒãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ãŠã„ã¦å›ºæœ‰ã®ã‚‚ã®ã§ãªã„ã‹ã€ã¾ãŸã¯å…¥åŠ›ã—ãŸåå‰ãŒãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«å­˜åœ¨ã—ã¾ã›ã‚“。</td>
+ <td valign="top" width="30%">エントリãŒãƒ†ãƒ¼ãƒ–ルã«è¡¨ç¤ºã•ã‚ŒãŸã‚‰ã€å¯¾å¿œã™ã‚‹ãƒªãƒ³ã‚¯ã‚’é¸æŠžã—〠<a href="#userauth">èªè¨¼</a>éŽç¨‹ã‚’継続ã—ã¾ã™ã€‚<p>エントリãŒãƒ†ãƒ¼ãƒ–ルã«è¡¨ç¤ºã•ã‚Œãªã„å ´åˆã¯ã€
+ <strong>[キャンセル]</strong>
+ をクリックã—ã€<a href="#userauth">èªè¨¼</a>
+ ã‚’å†åº¦è©¦ã¿ã¾ã™ã€‚ユーザIDã§ãªãã€æ°åã‚’å¿…ãšä½¿ç”¨ã—ã¦ãã ã•ã„。</p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" width="30%">ユーザåã¯æ­£ã—ã„ã®ã«ã€èªè¨¼ã«å¤±æ•—ã—ãŸã€‚</td>
+ <td valign="top">パスワードãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“。 <p>有効ãªãƒ¦ãƒ¼ã‚¶åã¨æ­£ã—ããªã„パスワードを入力ã—ã€ã—ã‹ã‚‚入力ã—ãŸãƒ¦ãƒ¼ã‚¶åãŒNTユーザã®ã‚¨ãƒ³ãƒˆãƒªã‚’示ã™å ´åˆã¯ã€Windowsãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã§èªè¨¼ãŒè©¦ã¿ã‚‰ã‚Œã¾ã™ã€‚</p>
+ <p>ãã‚ŒãŒæˆåŠŸã—ãªã‹ã£ãŸã‚Šã€å…¥åŠ›ã—ãŸãƒ¦ãƒ¼ã‚¶åãŒNTユーザã®ã‚¨ãƒ³ãƒˆãƒªã‚’示ã•ãªã„å ´åˆã¯ã€å†åº¦å®Ÿè¡Œã€ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’é–‰ã˜ã‚‹ã€ã¾ãŸã¯ãƒ˜ãƒ«ãƒ—ã®ã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã¾ã™ã€‚</p>
+ </td>
+ <td valign="top" width="30%"><strong>[Retry]</strong>
+ をクリックã—ã¦ãƒ‘スワードをå†åº¦å…¥åŠ›ã—ã¾ã™ã€‚</td>
+ </tr>
+</table>
+
+<p>&nbsp;</p>
+</body>
+</html>
+
+
diff --git a/ldap/clients/dsgw/html/manual/ja/contents.html b/ldap/clients/dsgw/html/manual/ja/contents.html
new file mode 100644
index 00000000..360311e8
--- /dev/null
+++ b/ldap/clients/dsgw/html/manual/ja/contents.html
@@ -0,0 +1,172 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+ <TITLE>Directory Serverインタフェースã®ç›®æ¬¡</TITLE>
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+
+<H1>
+目次</H1>
+
+<H2>
+<A HREF="intro.htm">第1ç«  Directory Serverインタフェースã«ã¤ã„ã¦</A></H2>
+
+<H2>
+<A HREF="search.htm">第2ç«  ディレクトリ ツリーã®æ¤œç´¢ </A></H2>
+
+<DL>
+<DD>
+<A HREF="search.htm#standard">標準検索</A></DD>
+
+<DL>
+<DD>
+<A HREF="search.htm#Performing a Standard Search">[標準検索]ã®å®Ÿè¡Œ</A></DD>
+
+<DL>
+<DD>
+<A HREF="search.htm#Name">æ°åã®æ¤œç´¢</A></DD>
+
+<DD>
+<A HREF="search.htm#initials">イニシャルを伴ãªã†æ°åã®æ¤œç´¢</A></DD>
+
+<BR><A HREF="search.htm#phone">電話番å·ã®æ¤œç´¢</A>
+<BR><A HREF="search.htm#e-mail">é›»å­ãƒ¡ãƒ¼ãƒ« アドレスã®æ¤œç´¢</A>
+<BR><A HREF="search.htm#filter">検索フィルタã®ä½¿ç”¨</A></DL>
+</DL>
+
+<DD>
+<A HREF="search.htm#advanced">拡張検索</A></DD>
+
+<DL>
+<DD>
+<A HREF="search.htm#Performing an Advanced Search">[拡張検索]ã®å®Ÿè¡Œ</A></DD>
+
+<DD>
+<A HREF="search.htm#Advanced Search Examples">[拡張検索]ã®ä¾‹</A></DD>
+</DL>
+
+<DD>
+<A HREF="search.htm#results">検索çµæžœã®è¡¨ç¤º</A></DD>
+
+<DL>
+<DD>
+<A HREF="search.htm#nomatch">一致ãªã—</A></DD>
+
+<DD>
+<A HREF="search.htm#single">1件ã®ä¸€è‡´</A></DD>
+
+<DD>
+<A HREF="search.htm#multiple">複数ã®ä¸€è‡´</A></DD>
+
+<DD>
+<A HREF="search.htm#problems">ãã®ä»–ã®å•é¡Œ</A></DD>
+</DL>
+<A HREF="search.htm#vCard">vCardã®è¡¨ç¤º</A>
+<DL>
+<H2>
+<A HREF="add.htm">第3ç«  エントリã®è¿½åŠ </A></H2>
+
+<DL>
+<DD>
+<A HREF="add.htm#guidelines">æ–°è¦ã‚¨ãƒ³ãƒˆãƒªã«é–¢ã™ã‚‹ã‚¬ã‚¤ãƒ‰ãƒ©ã‚¤ãƒ³</A></DD>
+
+<DL>
+<DD>
+<A HREF="add.htm#tree">ディレクトリ ツリー構造</A></DD>
+
+<DD>
+<A HREF="add.htm#DN">識別åã®æ§‹æ–‡</A></DD>
+
+<DD>
+<A HREF="add.htm#uniqueDN">固有ã®è­˜åˆ¥å</A></DD>
+</DL>
+
+<DD>
+<A HREF="add.htm#person">ユーザã®è¿½åŠ </A></DD>
+
+<DD>
+<A HREF="add.htm#NTperson">NTユーザã®è¿½åŠ </A></DD>
+
+<DD>
+<A HREF="add.htm#group">グループã®è¿½åŠ </A></DD>
+
+<DD>
+<A HREF="add.htm#NTgroup">NTグループã®è¿½åŠ </A></DD>
+
+<DD>
+<A HREF="add.htm#ou">組織å˜ä½ã®è¿½åŠ </A></DD>
+
+<DD>
+<A HREF="add.htm#o">組織ã®è¿½åŠ </A></DD>
+</DL>
+
+<H2>
+<A HREF="mod.htm">第4ç«  エントリã®ç·¨é›†</A></H2>
+
+<DL>
+<DD>
+<A HREF="mod.htm#people">ユーザã®ç·¨é›†</A></DD>
+
+<DL>
+<DL><A HREF="mod.htm#addmanager">[マãƒãƒ¼ã‚¸ãƒ£]ã¨[秘書]フィールドã¸ã®å€¤ã®è¿½åŠ 
+</A></DL>
+</DL>
+
+<DD>
+<A HREF="mod.htm#ntpeople">NTユーザã®ç·¨é›†</A></DD>
+
+<DD>
+<A HREF="mod.htm#groups">グループã®ç·¨é›†</A></DD>
+
+<DL>
+<DD>
+<A HREF="mod.htm#addowner">[åŒæ™‚å‚ç…§]ã€[所有者]ã€ãŠã‚ˆã³[グループ メンãƒãƒ¼]フィールドã¸ã®
+値ã®è¿½åŠ </A></DD>
+</DL>
+
+<DD>
+<A HREF="mod.htm#NTgroups">NTグループã®ç·¨é›†</A></DD>
+
+<DD>
+<A HREF="mod.htm#ou">組織å˜ä½ã®ç·¨é›†</A></DD>
+
+<DD>
+<A HREF="mod.htm#o">組織ã®ç·¨é›†</A></DD>
+
+<DD>
+<A HREF="mod.htm#rename">エントリåã®å¤‰æ›´</A></DD>
+
+<DD>
+<A HREF="mod.htm#delete">エントリã®å‰Šé™¤</A></DD>
+
+<DD>
+<A HREF="mod.htm#changepw">パスワードã®å¤‰æ›´</A></DD>
+</DL>
+
+<H2>
+<A HREF="auth.htm">第5ç«  èªè¨¼</A></H2>
+
+<DL>
+<DD>
+<A HREF="auth.htm#ustand">ディレクトリ アクセスã«ã¤ã„ã¦</A></DD>
+
+<DD>
+<A HREF="auth.htm#userauth">ディレクトリã¸ã®èªè¨¼</A></DD>
+
+<DD>
+<A HREF="auth.htm#logout">ディレクトリã‹ã‚‰ã®ãƒ­ã‚°ã‚¢ã‚¦ãƒˆ</A></DD>
+
+<DD>
+<A HREF="auth.htm#incorrectauth">ä¸é©åˆ‡ãªèªè¨¼ã«ã‚ˆã£ã¦ç™ºç”Ÿã™ã‚‹å•é¡Œ</A></DD>
+</DL>
+<P>
+<H2><A HREF="attribut.htm">属性</A></H2>
+
+</BODY>
+</HTML>
+
diff --git a/ldap/clients/dsgw/html/manual/ja/filters.htm b/ldap/clients/dsgw/html/manual/ja/filters.htm
new file mode 100644
index 00000000..23288a6d
--- /dev/null
+++ b/ldap/clients/dsgw/html/manual/ja/filters.htm
@@ -0,0 +1,1062 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+
+<!-- HEAD-->
+ <TITLE>Netscape ディレクトリ インタフェィス 検索フィルタ</TITLE>
+
+</HEAD>
+
+<BODY>
+
+
+
+<P><A NAME="1001595"></A></P>
+
+
+
+<P><A NAME="1001596"></A></P>
+
+
+
+<P><A NAME="996824"></A></P>
+
+
+
+<H1>検索フィルタ</H1>
+
+
+
+<P><A NAME="997436"></A>本章ã§ã¯ã€æ¤œç´¢ãƒ•ã‚£ãƒ«ã‚¿ãŠã‚ˆã³<A HREF="filters.htm#1018239">検索ã®ä»•çµ„ã¿</A>を説明ã—ã¦ã„ã¾ã™ã€‚</P>
+
+
+
+<P><A NAME="Search Filters"></A><A NAME="1018822"></A></P>
+
+
+
+<H2>検索フィルタ</H2>
+
+
+
+<P><A NAME="1018489"></A>検索範囲をé™å®šã™ã‚‹ãŸã‚ã«ã€ <A HREF="search.htm#1015771">[標準検索]</A>フィールドã«ç›´æŽ¥æ¤œç´¢ãƒ•ã‚£ãƒ«ã‚¿ã‚’指定ã§ãã¾ã™ã€‚検索ã«ç­‰å·è¨˜å·(=)ãŒå«ã¾ã‚Œã‚‹å ´åˆã¯ã€[標準検索]ã§ã¯å€¤ãŒæ¤œç´¢ãƒ•ã‚£ãƒ«ã‚¿ã§ã‚ã‚‹ã‚‚ã®ã¨æƒ³å®šã•ã‚Œã€ã“ã®ãƒ•ã‚£ãƒ«ã‚¿ãŒç›´æŽ¥ä½¿ç”¨ã•ã‚Œã¦æ¤œç´¢ãŒå®Ÿè¡Œã•ã‚Œã¾ã™ã€‚</P>
+
+
+
+<P><A NAME="1018092"></A>検索フィルタã§ã¯ã€[標準検索]ã®ãŸã‚ã«æˆ»ã•ã‚Œã‚‹ã‚¨ãƒ³ãƒˆãƒªã‚’é¸æŠžã™ã‚‹ã®ã«ã€å±žæ€§ã®å€¤ãŒä½¿ç”¨ã•ã‚Œã¾ã™ã€‚例ãˆã°ã€æ¬¡ã®æ¤œç´¢ãƒ•ã‚£ãƒ«ã‚¿ã§ã¯ã€Babs Jensenã«ç­‰ã—ã„一般åã®æ¤œç´¢ãŒæŒ‡å®šã•ã‚Œã¾ã™ã€‚</P>
+
+
+
+<P><A NAME="1018094"></A></P>
+
+
+
+<UL>
+
+<UL>
+
+<PRE>cn=babs jensen
+
+</PRE>
+
+</UL>
+
+</UL>
+
+
+
+<P><A NAME="Search filter syntax"></A><A NAME="1018095"></A></P>
+
+
+
+<H3>検索フィルタã®æ§‹æ–‡</H3>
+
+
+
+<P><A NAME="1018096"></A>検索フィルタã®åŸºæœ¬æ§‹æ–‡:</P>
+
+
+
+<P><A NAME="1018097"></A></P>
+
+
+
+<UL>
+
+<UL>
+
+<PRE><A HREF="filters.htm#1019127">属性</A> <A HREF="filters.htm#1019138">演算å­</A>値
+
+</PRE>
+
+</UL>
+
+</UL>
+
+
+
+<P><A NAME="1019085"></A>例: </P>
+
+
+
+<P><A NAME="1019086"></A></P>
+
+
+
+<UL>
+
+<UL>
+
+<PRE>employeenumber &gt;= 100
+
+</PRE>
+
+</UL>
+
+</UL>
+
+
+
+<P><A NAME="1019090"></A>上記ã®ä¾‹ã§ã¯ã€<TT>employeenumber</TT>ã¯å±žæ€§ã€<TT>&gt;=</TT> ã¯æ¼”ç®—å­ã€100ã¯å€¤ã§ã™ã€‚
+</P>
+
+
+
+<P><A NAME="1019104"></A><A HREF="filters.htm#1018167">ç•°ãªã£ãŸå±žæ€§ã®çµ„åˆã›</A>を使用ã™ã‚‹ãƒ•ã‚£ãƒ«ã‚¿ã‚‚定義ã§ãã¾ã™ã€‚ </P>
+
+
+
+<P><A NAME="Using attributes in a filter"></A><A NAME="1019127"></A></P>
+
+
+
+<H4>フィルタã«ãŠã‘る属性ã®ä½¿ç”¨</H4>
+
+
+
+<P><A NAME="1019162"></A>エントリã®æ¤œç´¢ã®éš›ã«ã€ãã®ã‚¿ã‚¤ãƒ—ã®ã‚¨ãƒ³ãƒˆãƒªã¨é–¢ä¿‚ã™ã‚‹å±žæ€§ã‚’指定ã§ãã¾ã™ã€‚例ãˆã°ã€ãƒ¦ãƒ¼ã‚¶ã«é–¢ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªã‚’検索ã™ã‚‹å ´åˆã€ç‰¹å®šã®ä¸€èˆ¬åã‚’æŒã¤ãƒ¦ãƒ¼ã‚¶ã®æ¤œç´¢ã«<TT>cn</TT>属性を使用ã§ãã¾ã™ã€‚</P>
+
+
+
+<P><A NAME="1019183"></A>ユーザã«é–¢ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªã®ä¾‹ã¨ã—ã¦æ¬¡ã®ã‚‚ã®ãŒå«ã¾ã‚Œã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚</P>
+
+
+
+<UL>
+
+<P><A NAME="1019188"></A></P>
+
+
+
+<LI><TT>cn</TT> (ユーザã®ä¸€èˆ¬å) <A NAME="1019189"></A></LI>
+
+
+
+<LI><TT>telephonenumber</TT> (ユーザã®é›»è©±ç•ªå·) <A NAME="1019190"></A></LI>
+
+
+
+<LI><TT>employeenumber</TT> (ユーザã®ç¤¾å“¡ç•ªå·) <A NAME="1019191"></A></LI>
+
+
+
+<LI><TT>l</TT> (ユーザã®å ´æ‰€) </LI>
+
+</UL>
+
+
+
+<P><A NAME="1019184"></A>エントリã«é–¢ä¿‚ã™ã‚‹å±žæ€§ã®ãƒªã‚¹ãƒˆã«ã¤ã„ã¦ã¯ã€<A HREF="attribut.htm#1002619">付録A「エントリã¨å±žæ€§ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã€</A>ã‚’ã”覧ãã ã•ã„。 検索フィルタã«ãŠã„ã¦å†…部属性åを使用ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。</P>
+
+
+
+<P><A NAME="Using operators in a filter"></A><A NAME="1019138"></A></P>
+
+
+
+<H4>フィルタã«ãŠã‘る演算å­ã®ä½¿ç”¨</H4>
+
+
+
+<P><A NAME="1018153"></A>演算å­ã§ä»¥ä¸‹ã®ã‚¿ã‚¤ãƒ—ã®æ¤œç´¢ã‚’定義ã—ã¾ã™ã€‚</P>
+
+
+
+<TABLE BORDER=2 >
+
+<CAPTION></CAPTION>
+
+
+
+<TR>
+
+<TH><A NAME="1018101"></A><B>検索タイプ</B> </TH>
+
+
+
+<TH><A NAME="1018103"></A><B>演算å­</B> </TH>
+
+
+
+<TH><A NAME="1018105"></A><B>説明</B> </TH>
+
+</TR>
+
+
+
+<TR>
+
+<TD><A NAME="1018107"></A>ç­‰å·</TD>
+
+
+
+<TD><A NAME="1018109"></A>= </TD>
+
+
+
+<TD><A NAME="1018111"></A>指定値ã«ä¸€è‡´ã™ã‚‹å±žæ€§ã‚’å«ã‚€ã‚¨ãƒ³ãƒˆãƒªãŒæˆ»ã•ã‚Œã¾ã™ã€‚例:
+
+<UL>
+
+<P><A NAME="1019083"></A><TT>cn=Bob Johnson</TT></P>
+
+</UL>
+
+</TD>
+
+</TR>
+
+
+
+<TR>
+
+<TD><A NAME="1018113"></A>副文字列</TD>
+
+
+
+<TD><A NAME="1018115"></A>=&lt;文字列&gt;*&lt;文字列&gt; </TD>
+
+
+
+<TD><A NAME="1018117"></A>指定副文字をæŒã¤ 列属性をå«ã‚€ã‚¨ãƒ³ãƒˆãƒªãŒæˆ»ã•ã‚Œã¾ã™ã€‚例:
+<UL>
+
+<P><A NAME="1018118"></A><TT>cn=Bob*</TT></P>
+
+
+
+<P><A NAME="1018119"></A><TT>cn=*Johnson</TT></P>
+
+
+
+<P><A NAME="1018120"></A><TT>cn=*John*</TT></P>
+
+
+
+<P><A NAME="1018121"></A><TT>cn=B*John</TT></P>
+
+</UL>
+
+</TD>
+
+</TR>
+
+
+
+<TR>
+
+<TD><A NAME="1018123"></A>大ãªã‚Šã¾ãŸã¯ç­‰ä¾¡</TD>
+
+
+
+<TD><A NAME="1018125"></A>&gt;= </TD>
+
+
+
+<TD><A NAME="1018127"></A>指定値より大ãã„ã‹ã€ç­‰ã—ã„属性をå«ã‚€ã‚¨ãƒ³ãƒˆãƒªãŒæˆ»ã•ã‚Œã¾ã™ã€‚例:
+
+<UL>
+
+<P><A NAME="1018128"></A><TT>employeenumber &gt;= 100</TT></P>
+
+</UL>
+
+</TD>
+
+</TR>
+
+
+
+<TR>
+
+<TD><A NAME="1018130"></A>å°ãªã‚Šã¾ãŸã¯ç­‰ä¾¡</TD>
+
+
+
+<TD><A NAME="1018132"></A>&lt;= </TD>
+
+
+
+<TD><A NAME="1018134"></A>指定値よりå°ã•ã„ã‹ã€ç­‰ã—ã„属性をå«ã‚€ã‚¨ãƒ³ãƒˆãƒªãŒæˆ»ã•ã‚Œã¾ã™ã€‚例:
+<UL>
+
+<P><A NAME="1018135"></A><TT>employeenumber &lt;= 100</TT></P>
+
+</UL>
+
+</TD>
+
+</TR>
+
+
+
+<TR>
+
+<TD><A NAME="1018137"></A>存在</TD>
+
+
+
+<TD><A NAME="1018139"></A>=* </TD>
+
+
+
+<TD><A NAME="1018141"></A>指定属性をå«ã‚€ã‚¨ãƒ³ãƒˆãƒªãŒæˆ»ã•ã‚Œã¾ã™ã€‚例:
+
+<UL>
+
+<P><A NAME="1018142"></A><TT>cn=*</TT></P>
+
+
+
+<P><A NAME="1018143"></A><TT>telephonenumber=*</TT></P>
+
+
+
+<P><A NAME="1018144"></A><TT>manager=*</TT></P>
+
+</UL>
+
+</TD>
+
+</TR>
+
+
+
+<TR>
+
+<TD><A NAME="1018146"></A>è¿‘ä¼¼</TD>
+
+
+
+<TD><A NAME="1018148"></A>~= </TD>
+
+
+
+<TD><A NAME="1018150"></A>指定値ã«ã»ã¼ç­‰ã—ã„指定属性をå«ã‚€ã‚¨ãƒ³ãƒˆãƒªãŒæˆ»ã•ã‚Œã¾ã™ã€‚例:
+
+<UL>
+
+<P><A NAME="1018151"></A><TT>cn~=surette</TT></P>
+
+
+
+<P><A NAME="1018152"></A><TT>l~=san fransico</TT></P>
+
+</UL>
+
+</TD>
+
+</TR>
+
+</TABLE>
+
+
+
+<TABLE>
+
+<TR>
+
+<TD></TD>
+
+</TR>
+
+</TABLE>
+
+
+
+<P><A NAME="1018160"></A>ã“れらã®æ¤œç´¢ã‚¿ã‚¤ãƒ—ã®è©³ç´°ã¯ã€<A HREF="filters.htm#1018239">「検索ã®ä»•çµ„ã¿ã€</A>ã‚’ã”覧ãã ã•ã„。
+
+</P>
+
+
+
+<P><A NAME="Using multiple search filters"></A><A NAME="1018167"></A></P>
+
+
+
+<H4>複数ã®æ¤œç´¢ãƒ•ã‚£ãƒ«ã‚¿ã®ä½¿ç”¨</H4>
+
+
+
+<P><A NAME="1018168"></A>ブール演算å­ã‚’使用ã—ã¦ã€ç•°ãªã£ãŸæ¤œç´¢ãƒ•ã‚£ãƒ«ã‚¿ã‚’組ã¿åˆã‚ã›ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚接頭辞表記ã«ä»¥ä¸‹ã®æ¼”ç®—å­ã‚’使用ã§ãã¾ã™ã€‚</P>
+
+
+
+<P><A NAME="1018169"></A></P>
+
+
+
+<UL>
+
+<PRE>(<I>ブール_演算å­</I>((<I>フィルタ</I>)(<I>フィルタ</I>)(<I>フィルタ</I>)...))
+
+</PRE>
+
+</UL>
+
+
+
+<P><A NAME="1018170"></A>ã“ã®å ´åˆã€ãƒ–ール_演算å­ã¯ã€ä»»æ„ã®<A HREF="filters.htm#1018173">ブール演算å­</A>ã§ã™ã€‚例: </P>
+
+
+
+<P><A NAME="1019218"></A></P>
+
+
+
+<UL>
+
+<PRE>(&amp;(ou=Marketing)(cn=Ray*))
+
+</PRE>
+
+</UL>
+
+
+
+<P><A NAME="1019216"></A>上記ã®ä¾‹ã§ã¯ã€ãƒ•ã‚£ãƒ«ã‚¿ã®çµ„åˆã›ã«ã‚ˆã£ã¦ã€çµ„ç¹”å˜ä½ãŒMarketing (<TT>ou=Marketing</TT>)ã§ã€ä¸€èˆ¬åãŒRay (<TT>cn=Ray*</TT>)ã§å§‹ã¾ã‚‹ã‚¨ãƒ³ãƒˆãƒªãŒæ¤œç´¢ã•ã‚Œã¾ã™ã€‚And(<TT>&amp;</TT>)ã®ãƒ–ール演算å­ã¯ã€ã“ã®æ¼”ç®—å­ãŒæ¤œç´¢åŸºæº–を先行ã™ã‚‹æŽ¥é ­è¾žè¡¨è¨˜æ³•ã§ä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™ã€‚</P>
+
+
+
+<P><A NAME="1019228"></A>ã•ã‚‰ã«ã€ä»¥ä¸‹ã®ã‚ˆã†ã«ã€è¤‡é›‘ãªå¼ã‚’å½¢æˆã™ã‚‹ã®ã«ãƒ–ール演算å­ã‚’入れå­ã«ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚</P>
+
+
+
+<P><A NAME="1018171"></A></P>
+
+
+
+<UL>
+
+<PRE>(ブール_演算å­(フィルタ)((ブール_演算å­(フィルタ)(フィルタ)))
+
+</PRE>
+
+</UL>
+
+
+
+<P><A NAME="Boolean operators"></A><A NAME="1018173"></A></P>
+
+
+
+<H4>ブール演算å­</H4>
+
+
+
+<P><A NAME="1018202"></A>検索フィルタã¨ã¨ã‚‚ã«ä½¿ç”¨ã§ãるブール演算å­: </P>
+
+
+
+<TABLE BORDER=2 >
+
+<CAPTION></CAPTION>
+
+
+
+<TR>
+
+<TH><A NAME="1018176"></A><B>演算å­</B> </TH>
+
+
+
+<TH><A NAME="1018178"></A><B>記å·</B> </TH>
+
+
+
+<TH><A NAME="1018180"></A><B>説明</B> </TH>
+
+</TR>
+
+
+
+<TR>
+
+<TD><A NAME="1018182"></A>And </TD>
+
+
+
+<TD><A NAME="1018184"></A>&amp; </TD>
+
+
+
+<TD><A NAME="1018186"></A>æ–‡ãŒçœŸã§ã‚ã‚‹ãŸã‚ã«ã¯ã€ã™ã¹ã¦ã®æŒ‡å®šãƒ•ã‚£ãƒ«ã‚¿ãŒçœŸã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。例:
+
+<UL>
+
+<P><A NAME="1018187"></A><TT>(&amp;(フィルタ1)(フィルタ2)(フィルタ3)...)</TT></P>
+
+</UL>
+
+
+
+<P><A NAME="1019015"></A>エントリãŒä¸€è‡´ã™ã‚‹ãŸã‚ã«ã¯ã€ãƒ•ã‚£ãƒ«ã‚¿1ã€ãƒ•ã‚£ãƒ«ã‚¿2ã€ãŠã‚ˆã³ãƒ•ã‚£ãƒ«ã‚¿3ãŒã™ã¹ã¦çœŸã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。</P>
+
+</TD>
+
+</TR>
+
+
+
+<TR>
+
+<TD><A NAME="1018189"></A>Or </TD>
+
+
+
+<TD><A NAME="1018191"></A>| </TD>
+
+
+
+<TD><A NAME="1018193"></A>æ–‡ãŒçœŸã§ã‚ã‚‹ãŸã‚ã«ã¯ã€æœ€ä½Žä¸€ã¤ã®æŒ‡å®šãƒ•ã‚£ãƒ«ã‚¿ãŒçœŸã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。例:
+
+<UL>
+
+<P><A NAME="1018194"></A><TT>(|(フィルタ1)(フィルタ2)(フィルタ3)...)</TT></P>
+
+</UL>
+
+
+
+<P><A NAME="1019024"></A>フィルタ1ã€ãƒ•ã‚£ãƒ«ã‚¿2ã€ã¾ãŸã¯ãƒ•ã‚£ãƒ«ã‚¿3ã®ä¸€ã¤ã§ã‚‚一致ã™ã‚‹ã¨ã€ã‚¨ãƒ³ãƒˆãƒªãŒæˆ»ã•ã‚Œã¾ã™ã€‚</P>
+
+</TD>
+
+</TR>
+
+
+
+<TR>
+
+<TD><A NAME="1018196"></A>Not </TD>
+
+
+
+<TD><A NAME="1018198"></A>! </TD>
+
+
+
+<TD><A NAME="1018200"></A>æ–‡ãŒçœŸã§ã‚ã‚‹ãŸã‚ã«ã¯ã€æŒ‡å®šã•ã‚ŒãŸæ–‡ãŒçœŸã§ã‚ã£ã¦ã¯ãªã‚Šã¾ã›ã‚“。一ã¤ã®ãƒ•ã‚£ãƒ«ã‚¿ã®ã¿ãŒNot演算å­ã«ã‚ˆã£ã¦å½±éŸ¿ã•ã‚Œã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。例:
+
+
+<UL>
+
+<P><A NAME="1018201"></A><TT>(!(フィルタ))</TT></P>
+
+</UL>
+
+
+
+<P><A NAME="1019025"></A>フィルタã«ä¸€è‡´ã—ãªã„エントリãŒæˆ»ã•ã‚Œã¾ã™ã€‚</P>
+
+</TD>
+
+</TR>
+
+</TABLE>
+
+
+
+<TABLE>
+
+<TR>
+
+<TD></TD>
+
+</TR>
+
+</TABLE>
+
+
+
+<P><A NAME="Search filter examples"></A><A NAME="1018203"></A></P>
+
+
+
+<H4>検索フィルタã®ä¾‹</H4>
+
+
+
+<P><A NAME="1018204"></A>マãƒãƒ¼ã‚¸ãƒ£å±žæ€§ã‚’å«ã‚€ã‚¨ãƒ³ãƒˆãƒªãŒæ¬¡ã®ãƒ•ã‚£ãƒ«ã‚¿ã«ã‚ˆã£ã¦æ¤œç´¢ã•ã‚Œã¾ã™ã€‚ã“ã‚Œã¯å­˜åœ¨æ¤œç´¢ã¨ã‚‚呼ã°ã‚Œã¾ã™ã€‚</P>
+
+
+
+<P><A NAME="1018205"></A></P>
+
+
+
+<PRE> manager=*
+
+</PRE>
+
+
+
+<P><A NAME="1018206"></A>Ray Kultgenã®ä¸€èˆ¬åã‚’å«ã‚€ã‚¨ãƒ³ãƒˆãƒªãŒæ¬¡ã®ãƒ•ã‚£ãƒ«ã‚¿ã«ã‚ˆã£ã¦æ¤œç´¢ã•ã‚Œã¾ã™ã€‚ã“ã‚Œã¯ç­‰å·æ¤œç´¢ã¨ã—ã¦ã‚‚呼ã°ã‚Œã¾ã™ã€‚</P>
+
+
+
+<P><A NAME="1018207"></A></P>
+
+
+
+<PRE> cn=Ray Kultgen
+
+</PRE>
+
+
+
+<P><A NAME="1018208"></A>Ray Kultgenã®ä¸€èˆ¬åã‚’å«ã¾ãªã„エントリãŒæ¬¡ã®ãƒ•ã‚£ãƒ«ã‚¿ã«ã‚ˆã£ã¦æˆ»ã•ã‚Œã¾ã™ã€‚</P>
+
+
+
+<P><A NAME="1018209"></A></P>
+
+
+
+<PRE> (!(cn=Ray Kultgen))
+
+</PRE>
+
+
+
+<P><A NAME="1018210"></A>X.500ã®å‰¯æ–‡å­—列をæŒã¤[description]属性をå«ã‚€ã‚¨ãƒ³ãƒˆãƒªãŒæ¬¡ã®ãƒ•ã‚£ãƒ«ã‚¿ã«ã‚ˆã£ã¦æˆ»ã•ã‚Œã¾ã™ã€‚</P>
+
+
+
+<P><A NAME="1018211"></A></P>
+
+
+
+<PRE> description=*X.500*
+
+</PRE>
+
+
+
+<P><A NAME="1018212"></A>組織å˜ä½ãŒMarketingã§ã€[description]フィールドã«å‰¯æ–‡å­—列X.500ãŒå«ã¾ã‚Œãªã„エントリãŒæ¬¡ã®ãƒ•ã‚£ãƒ«ã‚¿ã«ã‚ˆã£ã¦æˆ»ã•ã‚Œã¾ã™ã€‚</P>
+
+
+
+<P><A NAME="1018213"></A></P>
+
+
+
+<PRE> (&amp;(ou=Marketing)(!(description=*X.500*)))
+
+</PRE>
+
+
+
+<P><A NAME="1018214"></A>組織å˜ä½ãŒMarketingã§ã€ãƒžãƒãƒ¼ã‚¸ãƒ£ãŒJulie Fulmerã¾ãŸã¯Cindy Zwaskaã§ã‚るエントリãŒæ¬¡ã®ãƒ•ã‚£ãƒ«ã‚¿ã«ã‚ˆã£ã¦æˆ»ã•ã‚Œã¾ã™ã€‚</P>
+
+
+
+<P><A NAME="1018215"></A></P>
+
+
+
+<PRE> (&amp;(ou=Marketing)(|(manager=&quot;cn=Julie
+Fulmer,ou=Marketing,o=Airius,c=US&quot;)(manager=&quot;cn=Cindy
+Zwaska,ou=Marketing,o=Airius,
+c=US&quot;)))
+
+</PRE>
+
+
+
+<P><A NAME="1018216"></A>ユーザを示ã•ãªã„エントリãŒæ¬¡ã®ãƒ•ã‚£ãƒ«ã‚¿ã«ã‚ˆã£ã¦æˆ»ã•ã‚Œã¾ã™ã€‚</P>
+
+
+
+<P><A NAME="1018217"></A></P>
+
+
+
+<PRE> (!(objectclass=person))
+
+</PRE>
+
+
+
+<P><A NAME="1018218"></A>ユーザ(person)を示ã•ãšã€ã—ã‹ã‚‚一般å(cn)ãŒãƒ—リンタ3bã«é¡žä¼¼ã—ãŸã‚¨ãƒ³ãƒˆãƒªãŒæ¬¡ã®ãƒ•ã‚£ãƒ«ã‚¿ã«ã‚ˆã£ã¦æˆ»ã•ã‚Œã¾ã™ã€‚</P>
+
+
+
+<P><A NAME="1018219"></A></P>
+
+
+
+<PRE> (&amp;(!(objectclass=person))(cn~=printer3b))
+
+</PRE>
+
+
+
+<P><A NAME="How searching works"></A><A NAME="1018239"></A></P>
+
+
+
+<H2>検索ã®ä»•çµ„ã¿</H2>
+
+
+
+<P><A NAME="1018240"></A></P>
+
+
+
+<BLOCKQUOTE>
+
+<P><B>注: </B></P>
+
+</BLOCKQUOTE>
+
+
+
+<P><A NAME="1019880"></A></P>
+
+
+
+<BLOCKQUOTE>
+
+<P>Directory Serverインタフェースã¯ã€å®Ÿéš›ã€Directory Serverã‹ã‚‰ç‹¬ç«‹ã—ã¦å‹•ä½œã™ã‚‹ãƒ•ã‚©ãƒ¼ãƒ ã¨CGIプログラムã®é›†ã¾ã‚Šã§ã™ã€‚ã“ã®ã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ã¯ã€Directory Serverã«å¯¾ã—ã¦LDAPクライアントã¨ã—ã¦å‹•ä½œã™ã‚‹ã‚‚ã®ã§ã™ã€‚</P>
+
+</BLOCKQUOTE>
+
+
+
+<P><A NAME="1019775"></A>以下ã«ã¯ã€Directory Serverを検索ã™ã‚‹éš›ã®ä»•çµ„ã¿ãŒèª¬æ˜Žã•ã‚Œã¦ã„ã¾ã™ã€‚</P>
+
+
+
+<OL>
+
+<P><A NAME="1018241"></A></P>
+
+
+
+<LI>フォームをé€ä¿¡ã™ã‚‹ã¨ã€Directory Serverã«æ¤œç´¢ãƒ•ã‚£ãƒ«ã‚¿ãŒé€ä¿¡ã•ã‚Œã¾ã™ã€‚ <A NAME="1018242"></A></LI>
+
+
+
+<LI>Directory Serverã§ã¯ã€æƒ…å ±ãŒãƒ­ãƒ¼ã‚«ãƒ« ディレクトリã«ã‚ã‚‹ã‹ã‚’確èªã™ã‚‹ãŸã‚ç€ä¿¡ã—ãŸè¦æ±‚ãŒãƒã‚§ãƒƒã‚¯ã•ã‚Œã¾ã™ã€‚ãã®æƒ…å ±ãŒãƒ­ãƒ¼ã‚«ãƒ« ディレクトリã«ãªãã€[Referral]パラメータãŒã‚µãƒ¼ãƒãƒ¼ã«è¨­å®šã•ã‚Œã¦ã„ã‚‹å ´åˆã¯ã€ãã®ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆãŒè¦æ±‚ã®è¿½æ±‚を試ã¿ã‚‰ã‚Œã‚‹ä»–ã®Directory Serverã®URLãŒæˆ»ã•ã‚Œã¾ã™ã€‚<A NAME="1018244"></A></LI>
+
+
+
+<LI>Directory Serverã«ã‚ˆã£ã¦ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª ツリーã‹ã‚‰ã‚¨ãƒ³ãƒˆãƒª リストãŒç”Ÿæˆã•ã‚Œã¾ã™ã€‚ 検索基準ã«ä¸€è‡´ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªãŒã‚ã‚‹ã‹ã©ã†ã‹å„候補エントリãŒãƒã‚§ãƒƒã‚¯ã•ã‚Œã¾ã™ã€‚一致エントリãŒæ¤œå‡ºã•ã‚Œã‚‹ãŸã³ã«ã€ãã‚ŒãŒDirectory Serverインタフェースã«æˆ»ã•ã‚Œã¾ã™ã€‚<A NAME="1019576"></A>Directory Serverã«ã‚ˆã£ã¦è©²å½“ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªãŒã™ã¹ã¦ãƒã‚§ãƒƒã‚¯ã•ã‚Œã‚‹ã‹ã€ã¾ãŸã¯ä»¥ä¸‹ã®é™åº¦ã®ä¸€ã¤ã«é”ã™ã‚‹ã¾ã§ã€ã“ã®éŽç¨‹ãŒç¶™ç¶šã•ã‚Œã¾ã™ã€‚</LI>
+
+
+
+<UL>
+
+<P><A NAME="1018252"></A></P>
+
+
+
+<LI>検索ã«å¯¾ã—ã¦æˆ»ã•ã‚Œã‚‹ã“ã¨ãŒè¨±ã•ã‚Œã¦ã„る最大エントリ数<A NAME="1018259"></A></LI>
+
+
+
+<LI>許ã•ã‚Œã¦ã„る最高検索所è¦æ™‚é–“ <A NAME="1018266"></A></LI>
+
+
+
+<LI>検索中ã«ãƒã‚§ãƒƒã‚¯ã™ã‚‹ã“ã¨ãŒè¨±ã•ã‚Œã¦ã„る最大エントリ数
+
+</LI>
+
+</UL>
+
+</OL>
+
+
+
+<P><A NAME="1019628"></A>ディレクトリ管ç†è€…ãŒã“れらã®è¨­å®šã‚’構æˆã§ãã¾ã™ã€‚検索アルゴリズムã®è©³ç´°ã¯ã€ã€ŽNetscape Directory Server管ç†è€…用ガイドã€ã‚’ã”覧ãã ã•ã„。</P>
+
+
+
+<P><A NAME="1019776"></A>以下ã«ã¯ã€è¿‘似検索ãŠã‚ˆã³å‰¯æ–‡å­—列検索ã®ä»•çµ„ã¿ãŒèª¬æ˜Žã•ã‚Œã¦ã„ã¾ã™ã€‚ </P>
+
+
+
+<P><A NAME="How approximate ("></A><A NAME="1018301"></A></P>
+
+
+
+<H3>è¿‘ä¼¼(é¡žä¼¼)検索ã®ä»•çµ„ã¿</H3>
+
+
+
+<P><A NAME="1018302"></A>近似検索ã§ã¯å…¥åŠ›å€¤ã«é¡žä¼¼ã—ãŸèªžãŒæ¤œç´¢ã•ã‚Œã¾ã™ã€‚[拡張検索]インタフェースã§ã¯ã€è¿‘似検索ã¯sounds like (é¡žä¼¼)検索タイプã«å¯¾å¿œã—ã¦ã„ã¾ã™ã€‚</P>
+
+
+
+<P><A NAME="1019677"></A>例ãˆã°ã€ã‚¨ãƒ³ãƒˆãƒªã«å±žæ€§å€¤cn=Robert E LeeãŒå«ã¾ã‚Œã‚‹ã¨ã—ã¾ã™ã€‚ 近似検索ã§ã¯ã€Robert Leeã€Robertã€ã¾ãŸã¯Leeを指定ã—ã¦ã“ã®ã‚¨ãƒ³ãƒˆãƒªã‚’検索ã§ãã¾ã™ã€‚åŒæ§˜ã«ã€ San Fransico (l~=San Fransicoã®ã‚¹ãƒšãƒ«é–“é•ã„ã«æ³¨æ„)ã«ã»ã¼ç­‰ã—ã„場所ã®æ¤œç´¢ã§ã¯ã€San Francisco
+(l=San Francisco)ã«å®Œå…¨ã«ä¸€è‡´ã™ã‚‹å ´æ‰€ã‚’å«ã‚€ã‚¨ãƒ³ãƒˆãƒªãŒæˆ»ã•ã‚Œã¾ã™ã€‚</P>
+
+
+
+<P><A NAME="1018303"></A>Directory Serverã§ã¯ã€ã‚¨ãƒ³ãƒˆãƒªã®å„値ãŒä¸€é€£ã®èªžã¨ã—ã¦å‡¦ç†ã•ã‚Œã€å„語ã®è¡¨éŸ³ã‚³ãƒ¼ãƒ‰ãŒä½œæˆã•ã‚Œã¾ã™ã€‚ã¾ãŸã€è¿‘似検索ã«å€¤ã‚’入力ã™ã‚‹ã¨ã€ãã®å€¤ãŒä¸€é€£ã®è¡¨éŸ³ã‚³ãƒ¼ãƒ‰ã«ç¿»è¨³ã•ã‚Œã¾ã™ã€‚以下ã®å ´åˆã«ã‚¨ãƒ³ãƒˆãƒªãŒå•åˆã›ã«ä¸€è‡´ã™ã‚‹ã¨è¦‹ãªã•ã‚Œã¾ã™ã€‚</P>
+
+
+
+<UL>
+
+<P><A NAME="1018305"></A></P>
+
+
+
+<LI>検索基準ã«ãŠã‘ã‚‹ã™ã¹ã¦ã®ã‚³ãƒ¼ãƒ‰ãŒç”Ÿæˆã•ã‚ŒãŸã‚¨ãƒ³ãƒˆãƒªã®ã‚³ãƒ¼ãƒ‰ã«å­˜åœ¨ã™ã‚‹å ´åˆ <A NAME="1018306"></A></LI>
+
+
+
+<LI>検索基準ã«ãŠã‘ã‚‹ã™ã¹ã¦ã®ã‚³ãƒ¼ãƒ‰ãŒç”Ÿæˆã•ã‚ŒãŸã‚¨ãƒ³ãƒˆãƒªã®ã‚³ãƒ¼ãƒ‰ã¨åŒã˜é †åºã§æŒ‡å®šã•ã‚Œã¦ã„ã‚‹å ´åˆ</LI>
+
+</UL>
+
+
+
+<P><A NAME="1018344"></A>例: </P>
+
+
+
+<TABLE BORDER=2 >
+
+<CAPTION></CAPTION>
+
+
+
+<TR>
+
+<TH><A NAME="1018309"></A><B>ディレクトリã«ãŠã‘ã‚‹åå‰<BR>
+
+(表音コード) </B></TH>
+
+
+
+<TH><A NAME="1018311"></A><B>検索文字列<BR>
+
+(表音コード) </B></TH>
+
+
+
+<TH><A NAME="1018313"></A><B>一致ã«é–¢ã™ã‚‹æ³¨é‡ˆ</B> </TH>
+
+</TR>
+
+
+
+<TR>
+
+<TD><A NAME="1018315"></A>Alice B Sarette<BR>
+
+(ALS B SRT) </TD>
+
+
+
+<TD><A NAME="1018317"></A>Alice Sarette<BR>
+
+(ALS SRT) </TD>
+
+
+
+<TD><A NAME="1018319"></A>一致。コードãŒæ­£ã—ã„é †åºã§æŒ‡å®šã•ã‚Œã¦ã„ã¾ã™ã€‚
+
+</TD>
+
+</TR>
+
+
+
+<TR>
+
+<TD><A NAME="1018321"></A></TD>
+
+
+
+<TD><A NAME="1018323"></A>Alice Sarrette<BR>
+
+(ALS SRT) </TD>
+
+
+
+<TD><A NAME="1018325"></A>一致。Saretteã®ã‚¹ãƒšãƒ«ãŒé–“é•ã£ã¦ã„ã‚‹ã«ã‚‚é–¢ã‚らãšã€ã‚³ãƒ¼ãƒ‰ãŒæ­£ã—ã„é †åºã§æŒ‡å®šã•ã‚Œã¦ã„ã¾ã™ã€‚ </TD>
+
+</TR>
+
+
+
+<TR>
+
+<TD><A NAME="1018327"></A></TD>
+
+
+
+<TD><A NAME="1018329"></A>Surette<BR>
+
+(SRT) </TD>
+
+
+
+<TD><A NAME="1018331"></A>一致。Saretteã®ã‚¹ãƒšãƒ«ãŒé–“é•ã£ã¦ã„ã‚‹ã«ã‚‚é–¢ã‚らãšã€ç”Ÿæˆã•ã‚ŒãŸã‚³ãƒ¼ãƒ‰ã«ã¯å…ƒã®åå‰ãŒå­˜åœ¨ã—ã¾ã™ã€‚</TD>
+
+</TR>
+
+
+
+<TR>
+
+<TD><A NAME="1018333"></A></TD>
+
+
+
+<TD><A NAME="1018335"></A>Bertha Sarette<BR>
+
+(BR0 SRT) </TD>
+
+
+
+<TD><A NAME="1018337"></A>一致ãªã—。コードBR0ã¯å…ƒã®åå‰ã«ã¯å­˜åœ¨ã—ã¾ã›ã‚“。</TD>
+
+</TR>
+
+
+
+<TR>
+
+<TD><A NAME="1018339"></A></TD>
+
+
+
+<TD><A NAME="1018341"></A>Sarette, Alice<BR>
+
+(SRT ALS) </TD>
+
+
+
+<TD><A NAME="1018343"></A>一致ãªã—ã€ã‚³ãƒ¼ãƒ‰ãŒæ­£ã—ã„é †åºã§æŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“。</TD>
+
+</TR>
+
+</TABLE>
+
+
+
+<TABLE>
+
+<TR>
+
+<TD></TD>
+
+</TR>
+
+</TABLE>
+
+
+
+<P><A NAME="How substring searches work"></A><A NAME="1018345"></A></P>
+
+
+
+<H3>副文字列検索ã®ä»•çµ„ã¿</H3>
+
+
+
+<P><A NAME="1018346"></A>副文字列検索ã§ã¯ã€å…¥åŠ›ã—ãŸå€¤ã‚’å«ã‚€ã‚¨ãƒ³ãƒˆãƒªãŒæ¤œç´¢ã•ã‚Œã¾ã™ã€‚[拡張検索]インタフェースã§ã¯ã€å‰¯æ–‡å­—列検索starts with(開始文字)ã€contains (å«æœ‰)ã€ãŠã‚ˆã³ends with (終了文字)ã®æ¤œç´¢ã«å¯¾å¿œã—ã¾ã™ã€‚</P>
+
+
+
+<P><A NAME="1018347"></A>例ãˆã°ã€</P>
+
+
+
+<UL>
+
+<UL>
+
+<P><A NAME="1018348"></A><TT>cn=*derson</TT><BR>
+
+</P>
+
+</UL>
+
+</UL>
+
+
+
+<P><A NAME="1018349"></A>ã®ãƒ•ã‚©ãƒ¼ãƒ ã®æ¤œç´¢ã§ã¯ã€ä»¥ä¸‹ã®æ–‡å­—列をå«ã‚€ä¸€èˆ¬åã«ä¸€è‡´ã—ã¾ã™ã€‚ </P>
+
+
+
+<P><A NAME="1018350"></A></P>
+
+
+
+<UL>
+
+<UL>
+
+<PRE>Bill Anderson
+
+Jill Anderson
+
+Steve Sanderson
+
+</PRE>
+
+</UL>
+
+</UL>
+
+
+
+<P><A NAME="1018351"></A>åŒæ§˜ã«ã€</P>
+
+
+
+<UL>
+
+<UL>
+
+<P><A NAME="1018352"></A><TT>telephonenumber= *555*</TT><BR>
+
+</P>
+
+</UL>
+
+</UL>
+
+
+
+<P><A NAME="1018353"></A>ã®æ¤œç´¢ã§ã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ãŠã„ã¦555ã‚’å«ã‚€é›»è©±ç•ªå·ã‚’æŒã¤ã™ã¹ã¦ã®ã‚¨ãƒ³ãƒˆãƒªãŒæˆ»ã•ã‚Œã¾ã™ã€‚</P>
+
+
+
+</BODY>
+
+</HTML>
+
+
diff --git a/ldap/clients/dsgw/html/manual/ja/intro.htm b/ldap/clients/dsgw/html/manual/ja/intro.htm
new file mode 100644
index 00000000..484d980d
--- /dev/null
+++ b/ldap/clients/dsgw/html/manual/ja/intro.htm
@@ -0,0 +1,39 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<html>
+<!-- HEAD -->
+<title>Netscape Directory Serverインタフェースã«ã¤ã„ã¦</title>
+</head>
+
+<body>
+
+<h1>Directory Serverインタフェースã«ã¤ã„ã¦</h1>
+
+<p>Netscape Directory Serverã¯ã€ä¼æ¥­å…¨ä½“ã®ãƒ¦ãƒ¼ã‚¶ã¨æƒ…å ±ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®ä¿å­˜ã€æ¤œç´¢ã€ãŠã‚ˆã³ç®¡ç†ã‚’ã™ã‚‹ãŸã‚ã«è¨­è¨ˆã•ã‚ŒãŸä¿¡é ¼æ€§ãŒé«˜ãæ‹¡å¼µå¯èƒ½ãªã‚µãƒ¼ãƒãƒ¼ã§ã™ã€‚Directory Serverを使用ã™ã‚‹ã¨ã€ä¼æ¥­ã®æƒ…報処ç†éƒ¨é–€ã¯ã€æƒ…報を一箇所ã‹ã‚‰åˆ¶å¾¡ã—ã¦ç®¡ç†ã§ãã‚‹ã¨åŒæ™‚ã«ã€ä¼æ¥­ã®ãƒ¦ãƒ¼ã‚¶ã¯è¤‡æ•°ã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ä¸Šã®å ´æ‰€ã‹ã‚‰ã“ã®æƒ…報をå–り出ã™ã“ã¨ãŒã§ãã¾ã™ã€‚</p>
+
+<p>Directory Serverã«ã‚ˆã‚Šã€ä¼æ¥­ã®ãƒ¦ãƒ¼ã‚¶æƒ…å ±ã¸ã®ã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ãŒå¾—られã¾ã™ã€‚ã“ã®ã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ã‹ã‚‰ä»¥ä¸‹ã®ã“ã¨ãŒå®Ÿè¡Œã§ãã¾ã™ã€‚</p>
+
+<ul>
+<P>
+ <li><a href="search.htm#search">ユーザã¨ãƒªã‚½ãƒ¼ã‚¹ã«é–¢ã™ã‚‹æƒ…å ±ã«ã¤ã„ã¦ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’検索ã§ãã¾ã™ã€‚</a> 例ãˆã°ã€ç¤¾å“¡ã®é›»å­ãƒ¡ãƒ¼ãƒ« アドレスや電話番å·ãŒæ¤œç´¢ã§ãã¾ã™ã€‚ <a href="search.htm">「ディレクトリ ツリーã®æ¤œç´¢ã€</a>ã«ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®æ¤œç´¢ã«ã¤ã„ã¦ã®è©³ç´°ãŒè¨˜è¼‰ã•ã‚Œã¦ã„ã¾ã™ã€‚</li>
+<P>
+ <li><a href="add.htm#adding">ディレクトリã«æ–°è¦ã‚¨ãƒ³ãƒˆãƒªã‚’作æˆã§ãã¾ã™ã€‚</a>例ãˆã°ã€æ–°å…¥ç¤¾å“¡ã®é›»å­ãƒ¡ãƒ¼ãƒ« アドレスや電話番å·ãªã©ãã®ç¤¾å“¡ã«é–¢ã™ã‚‹æƒ…報を追加ã§ãã¾ã™ã€‚通常ã€ã“ã®æ©Ÿèƒ½ã¯ã€Directory Serverã«é©åˆ‡ã«èªè¨¼ã—ãŸãƒ¦ãƒ¼ã‚¶ã¨ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªç®¡ç†è€…ã«ã‚ˆã‚Šæ›¸è¾¼ã¿è¨±å¯ã‚’付与ã•ã‚ŒãŸãƒ¦ãƒ¼ã‚¶å°‚用ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚ディレクトリã«æ–°è¦ãƒ¦ãƒ¼ã‚¶ã€ã‚°ãƒ«ãƒ¼ãƒ—ã€çµ„ç¹”å˜ä½ãŠã‚ˆã³çµ„織を追加ã™ã‚‹ã“ã¨ã«é–¢ã™ã‚‹è©³ç´°ã¯ã€<a href="add.htm">「エントリã®è¿½åŠ ã€
+</a>ã‚’ã”覧ãã ã•ã„。</li>
+
+
+<P>
+ <li><a href="mod.htm#editing">ディレクトリã®æ—¢å­˜ã‚¨ãƒ³ãƒˆãƒªã‚’変更ã§ãã¾ã™ã€‚</a>例ãˆã°ã€é©åˆ‡ãªãƒ‘ーミッションãŒã‚ã‚Œã°ã€ã‚¨ãƒ³ãƒˆãƒªå±žæ€§ã«å¯¾ã™ã‚‹æ—¢å­˜å€¤ã®å¤‰æ›´ã€ã‚¨ãƒ³ãƒˆãƒªå…¨ä½“ã®å‰Šé™¤ã€ã‚¨ãƒ³ãƒˆãƒªåã®å¤‰æ›´ã€ã¾ãŸã¯ã‚¨ãƒ³ãƒˆãƒª パスワードã®å¤‰æ›´ãªã©ã‚’実行ã§ãã¾ã™ã€‚通常ã€ã“ã®æ©Ÿèƒ½ã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªç®¡ç†è€…ã‹ã‚‰æ›¸ãè¾¼ã¿æ¨©ã‚’与ãˆã‚‰ã‚Œã€Directory Serverã«é©åˆ‡ã«èªè¨¼ã—ãŸãƒ¦ãƒ¼ã‚¶å°‚用ã¨ãªã£ã¦ã„ã¾ã™ã€‚ユーザã€ã‚°ãƒ«ãƒ¼ãƒ—ã€çµ„ç¹”å˜ä½ã€ãŠã‚ˆã³çµ„ç¹”ã«é–¢ã™ã‚‹æƒ…報更新方法ã«ã¤ã„ã¦ã¯ã€<a href="mod.htm">「エントリã®ç·¨é›†ã€</a>ã‚’ã”覧ãã ã•ã„。</li>
+</P>
+ <li><a href="auth.htm#authenticating">Directory Serverã«èªè¨¼ã§ãã¾ã™ã€‚</a>Directory Serverã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã‹æ›¸ã込むãŸã‚ã®èªè¨¼å¿…è¦æ¡ä»¶ãŒãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªç®¡ç†è€…ã«ã‚ˆã£ã¦å®šã‚られã¦ã„ã‚‹å ´åˆã¯ã€ãƒ¦ãƒ¼ã‚¶åã¨ãƒ‘スワードã®å…¥åŠ›ãŒå¿…è¦ãªå ´åˆã‚‚ã‚ã‚Šã¾ã™ã€‚正確ãªèªè¨¼å¿…è¦æ¡ä»¶ã¯ã€ã‚µã‚¤ãƒˆã«ã‚ˆã£ã¦ç•°ãªã‚Šã¾ã™ãŒã€é€šå¸¸ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ãŠã‘るエントリã®è¿½åŠ ã€å¤‰æ›´ã€ã¾ãŸã¯å‰Šé™¤ã®éš›ã«é™ã‚Šã€èªè¨¼ãŒå¿…è¦ã¨ãªã‚Šã¾ã™ã€‚Directory Serverã¸ã®èªè¨¼ã«ã¤ã„ã¦ã®è©³ç´°ã¯ã€<a
+ href="auth.htm">「ディレクトリã¸ã®èªè¨¼ã€</a>ã‚’ã”覧ãã ã•ã„。</li>
+</ul>
+
+<p> </p>
+</body>
+</html>
+
+
diff --git a/ldap/clients/dsgw/html/manual/ja/mod.htm b/ldap/clients/dsgw/html/manual/ja/mod.htm
new file mode 100644
index 00000000..13e71bca
--- /dev/null
+++ b/ldap/clients/dsgw/html/manual/ja/mod.htm
@@ -0,0 +1,670 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<TITLE>ディレクトリ エントリã®è¿½åŠ </TITLE>
+</HEAD>
+<BODY>
+
+<H1><A NAME="editing"></A>エントリã®è¿½åŠ </H1>
+
+Directory Server インタフェースã§ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªä¸­ã«ã‚るエントリを編集ã§ãã¾ã™ã€‚<A HREF="search.htm">エントリを探ã—ã¦</A>ã€<A HREF="search.htm#results">表示ã•ã›ã¦ã‹ã‚‰</A>ã€[編集]ボタンをクリックã—ã¾ã™ã€‚
+
+<P>エントリã®ç·¨é›†ã‚’試ã¿ã‚‹å‰ã«<A HREF="auth.htm#userauth">èªè¨¼</A>ã—ã¦ã„ãªã‹ã£ãŸã‚Šã€èªè¨¼ãŒå¤±åŠ¹ã—ã¦ã„ã‚‹å ´åˆã¯ã€å…ˆã«é€²ã‚€å‰ã«èªè¨¼ã™ã‚‹ã‚ˆã†ã«æ±‚ã‚るプロンプトãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚
+
+<P>以下を編集ã§ãã¾ã™ã€‚
+<UL>
+<LI>
+<A HREF="mod.htm#people">ユーザ</A></LI>
+
+<LI>
+<A HREF="mod.htm#ntpeople">NT ユーザ</A></LI>
+
+<LI>
+<A HREF="mod.htm#groups">グループ</A></LI>
+
+<LI>
+<A HREF="#NTgroups">NT グループ</A></LI>
+
+<LI>
+<A HREF="mod.htm#o">組織</A></LI>
+
+<LI>
+<A HREF="mod.htm#ou">組織å˜ä½</A></LI>
+</UL>
+
+<H2>
+<A NAME="people"></A>ユーザã®ç·¨é›†</H2>
+ユーザã®ã‚¨ãƒ³ãƒˆãƒªã‚’編集ã™ã‚‹ã«ã¯ã€ä»¥ä¸‹ã®æ“作をã—ã¾ã™ã€‚
+<OL>
+<LI>
+<A HREF="search.htm#standard">[標準検索]</A>
+ã¾ãŸã¯ <A HREF="search.htm#advanced">[拡張検索]</A>を使ã£ã¦ã€ç›®çš„ã®ã‚¨ãƒ³ãƒˆãƒªã‚’検索ã—ã¾ã™ã€‚</LI>
+
+<LI>
+<A HREF="search.htm#results">エントリを表示ã•ã›ã¾ã™</A>。</LI>
+
+<LI>
+[ユーザã®ç·¨é›†] ボタンをクリックã—ã¾ã™ã€‚</LI>
+
+<LI>
+エントリã®ç·¨é›†ã‚’試ã¿ã‚‹å‰ã«<A HREF="auth.htm#userauth">èªè¨¼</A>ã—ã¦ã„ãªã‹ã£ãŸã‚Šã€èªè¨¼ãŒå¤±åŠ¹ã—ã¦ã„ã‚‹å ´åˆã¯ã€å…ˆã«é€²ã‚€å‰ã«èªè¨¼ã™ã‚‹ã‚ˆã†ã«æ±‚ã‚るプロンプトãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚</LI>
+
+<LI>
+ユーザã®ã‚¨ãƒ³ãƒˆãƒªã‚’編集ã™ã‚‹ã«ã¯ã€å„フィールドã«å¸Œæœ›ã®å€¤ã‚’入力ã—ã¾ã™ã€‚必須フィールドã«ã¯ã‹ãªã‚‰ãšå€¤ã‚’入力ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ユーザã®å¿…須フィールドã«ã¯æ¬¡ã®ã‚‚ã®ãŒã‚ã‚Šã¾ã™ã€‚</LI>
+
+<UL type="disc">
+<LI>
+<A HREF="attribut.htm#cn">[æ°å]</A></LI>
+
+<LI>
+<A HREF="attribut.htm#sn">[姓]</A></LI>
+</UL>
+
+<LI>
+ã“ã“ã§ã‚ªãƒ—ションã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«å€¤ã‚’入力ã™ã‚‹ã“ã¨ã‚‚ã€å¾Œã§ã“れらã®å€¤ã‚’変更ã™ã‚‹ã“ã¨ã‚‚å¯èƒ½ã§ã™ã€‚ユーザã®ã‚ªãƒ—ションã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«ã¯ä»¥ä¸‹ã®ã‚‚ã®ãŒã‚ã‚Šã¾ã™ã€‚</LI>
+
+<P>
+<CENTER><TABLE BORDER=2>
+<TR>
+<TD><A HREF="attribut.htm#givenName">[åå‰]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#telephoneNumber">[電話番å·]&nbsp;</A></TD>
+
+<TD><A HREF="attribut.htm#mail">[é›»å­ãƒ¡ãƒ¼ãƒ« アドレス]</A>&nbsp;</TD>
+</TR>
+
+<TR>
+<TD><A HREF="attribut.htm#facsimileTelephoneNumber">[ファックス]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#uid">[ユーザID]&nbsp;</A></TD>
+
+<TD><A HREF="attribut.htm#pager">[ãƒã‚±ãƒƒãƒˆãƒ™ãƒ«]&nbsp;</A></TD>
+</TR>
+
+<TR>
+<TD><A HREF="attribut.htm#mobile">[æºå¸¯é›»è©±]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#businessCategory">[事業カテゴリ]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#title">[å½¹è·]&nbsp;</A></TD>
+</TR>
+
+<TR>
+<TD><A HREF="attribut.htm#ou">[組織å˜ä½]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#manager">[マãƒãƒ¼ã‚¸ãƒ£]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#roomNumber">[部屋番å·]&nbsp;</A></TD>
+</TR>
+
+<TR>
+<TD><A HREF="attribut.htm#secretary">[秘書]&nbsp;</A></TD>
+
+<TD><A HREF="attribut.htm#departmentNumber">[部門番å·]&nbsp;</A></TD>
+
+<TD><A HREF="attribut.htm#employeeNumber">[社員番å·]</A>&nbsp;</TD>
+</TR>
+
+<TR>
+<TD><A HREF="attribut.htm#carLicense">[自動車ナンãƒãƒ¼ãƒ—レート番å·]&nbsp;</A></TD>
+
+<TD><A HREF="attribut.htm#postalAddress">[ä½æ‰€]&nbsp;</A></TD>
+
+<TD><A HREF="attribut.htm#description">[説明]</A>&nbsp;</TD>
+</TR>
+
+<TR>
+<TD><A HREF="attribut.htm#seeAlso">[å‚ç…§]&nbsp;</A></TD>
+
+<TD><A HREF="attribut.htm#labeledUri">[URL]&nbsp;</A></TD>
+
+<TD><A HREF="attribut.htm#userPassword">[パスワード]</A>&nbsp;</TD>
+</TR>
+</TABLE></CENTER>
+<P>
+<LI>
+対応ã™ã‚‹ [編集] ボタンをクリックã—ã¦ã€<A HREF="#addmanager">[マãƒãƒ¼ã‚¸ãƒ£] ã‚„ [秘書] フィールドã«å€¤ã‚’追加</A>ã§ãã¾ã™ã€‚</LI>
+
+<LI>
+対応ã™ã‚‹ [編集] ボタンをクリックã—ã¦ã€<A HREF="#addowner">[å‚ç…§] フィールドã«å€¤ã‚’追加</A>ã§ãã¾ã™ã€‚</LI>
+
+<LI>
+フィールドã®ç·¨é›†ãŒçµ‚ã‚ã£ãŸã‚‰ã€[変更ä¿å­˜] をクリックã—ã¾ã™ã€‚</LI>
+</OL>
+ã“ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‹ã‚‰ã¯ä»¥ä¸‹ã®æ“作もå¯èƒ½ã§ã™ã€‚
+<UL>
+<LI>
+<A HREF="#rename">エントリåã®å¤‰æ›´</A></LI>
+
+<LI>
+<A HREF="mod.htm#delete">エントリã®å‰Šé™¤</A></LI>
+
+<LI>
+<A HREF="#changepw">パスワードã®å¤‰æ›´</A></LI>
+</UL>
+
+<H3><A NAME="addmanager"></A>[マãƒãƒ¼ã‚¸ãƒ£] 㨠[秘書] フィールドã¸ã®å€¤ã®è¿½åŠ </H3>
+
+[マãƒãƒ¼ã‚¸ãƒ£] ã¾ãŸã¯ [秘書] フィールド中㮠[編集] ボタンをクリックã™ã‚‹ã¨ã€è©²å½“ã™ã‚‹å±žæ€§å€¤ã‚’追加ã—ãŸã‚Šå‰Šé™¤ã™ã‚‹ãŸã‚ã®æ–°ã—ã„フォームãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚
+[マãƒãƒ¼ã‚¸ãƒ£] ã‚„ [秘書] ã®å±žæ€§ã¨ã—ã¦ãƒ¦ãƒ¼ã‚¶ã‚’追加ã™ã‚‹ãŸã‚ã«ã¯ã€ä»¥ä¸‹ã®æ‰‹é †ã«å¾“ã£ã¦ãã ã•ã„。
+
+<OL>
+<LI>
+テキスト ボックス中ã«ã€ç›®çš„ã®ãƒžãƒãƒ¼ã‚¸ãƒ£ã¾ãŸã¯ç§˜æ›¸ã®ã‚¨ãƒ³ãƒˆãƒªã‚’探ã™ãŸã‚ã«ä½¿ç”¨ã™ã‚‹æ¤œç´¢æ–‡å­—列を入力ã—ã¾ã™ã€‚以下ã®ã†ã¡ã€ã©ã‚Œã§ã‚‚入力ã—ã¦ãã ã•ã„。</LI>
+
+<UL type="disc">
+<LI>
+åå‰ã€‚æ°å全体ã¾ãŸã¯ä¸€éƒ¨ã‚’入力ã—ã¾ã™ã€‚ãã®æ¤œç´¢æ–‡å­—列ã«ä¸€è‡´ã™ã‚‹ã™ã¹ã¦ã®ã‚¨ãƒ³ãƒˆãƒªãŒè¿”ã•ã‚Œã¾ã™ã€‚該当ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªãŒè¦‹ã¤ã‹ã‚‰ãªã„å ´åˆã¯ã€æ¤œç´¢æ–‡å­—列をå«ã‚€ã™ã¹ã¦ã®ã‚¨ãƒ³ãƒˆãƒªãŒè¿”ã•ã‚Œã¾ã™ã€‚検索文字列をå«ã‚€ã‚¨ãƒ³ãƒˆãƒªãŒè¦‹ã¤ã‹ã‚‰ãªã„å ´åˆã¯ã€æ¤œç´¢æ–‡å­—列ã«é¡žä¼¼ã—ãŸã‚¨ãƒ³ãƒˆãƒªãŒè¿”ã•ã‚Œã¾ã™ã€‚</LI>
+
+<LI>
+ユーザ ID (ユーザ エントリを検索ã—ã¦ã„ã‚‹å ´åˆï¼‰</LI>
+
+<LI>
+電話番å·ã€‚電話番å·ã®ä¸€éƒ¨ã ã‘を入力ã™ã‚‹ã¨ã€ãã®æ¤œç´¢ç•ªå·ã§çµ‚ã‚ã‚‹ã™ã¹ã¦ã®é›»è©±ç•ªå·ãŒè¿”ã•ã‚Œã¾ã™ã€‚</LI>
+
+<LI>
+é›»å­ãƒ¡ãƒ¼ãƒ« アドレス。アットマーク(@)をå«ã‚“ã§ã„る文字列ã¯ã™ã¹ã¦é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã¨ã¿ãªã•ã‚Œã¾ã™ã€‚完全ã«ä¸€è‡´ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªãŒè¦‹ã¤ã‹ã‚‰ãªã„å ´åˆã¯ã€ãã®æ¤œç´¢æ–‡å­—列ã§å§‹ã¾ã‚‹ã™ã¹ã¦ã®é›»å­ãƒ¡ãƒ¼ãƒ« アドレスãŒæ¤œç´¢ã•ã‚Œã¾ã™ã€‚</LI>
+
+<LI>
+アスタリスク(*)を使ã†ã¨ã€ç¾åœ¨ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªä¸­ã«ã‚ã‚‹ã™ã¹ã¦ã®ã‚¨ãƒ³ãƒˆãƒªã‚„グループを表示ã§ãã¾ã™ã€‚</LI>
+
+<LI>
+ä»»æ„ã®<A HREF="search.htm#filter">LDAP 検索フィルタ</A>。 ç­‰å· (=) ã‚’å«ã‚“ã§ã„る文字列ã¯ã™ã¹ã¦ã€æ¤œç´¢ãƒ•ã‚£ãƒ«ã‚¿ã¨ã¿ãªã•ã‚Œã¾ã™ã€‚</LI>
+</UL>
+
+<LI>
+[検索ã—ã¦è¿½åŠ ]をクリックã—ã€ä¸€è‡´ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªã‚’見ã¤ã‘ã¦ãƒªã‚¹ãƒˆã«è¿½åŠ ã—ã¾ã™ã€‚マãƒãƒ¼ã‚¸ãƒ£ã‚„秘書ã¨ã—ã¦æŒ‡å®šã—ãŸããªã„エントリãŒã‚ã‚‹å ´åˆã¯ã€[リストã‹ã‚‰å‰Šé™¤] 欄ã®ãƒœãƒƒã‚¯ã‚¹ã‚’クリックã—ã¾ã™ã€‚削除ã—ãŸã„エントリã«ä¸€è‡´ã™ã‚‹æ¤œç´¢ãƒ•ã‚£ãƒ«ã‚¿ã‚’作æˆã—ã¦ã‹ã‚‰ã€[検索ã—ã¦å‰Šé™¤] をクリックã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚</LI>
+
+<LI>
+グループ メンãƒãƒ¼ã®ãƒªã‚¹ãƒˆãŒå®Œæˆã—ãŸã‚‰ã€[変更ä¿å­˜] をクリックã—ã¾ã™ã€‚ã“ã®æ™‚点ã§è¡¨ç¤ºã•ã‚Œã¦ã„るエントリãŒã€ãƒžãƒãƒ¼ã‚¸ãƒ£ã¾ãŸã¯ç§˜æ›¸å±žæ€§ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã®å€¤ã«ãªã£ã¦ã„ã¾ã™ã€‚</LI>
+</OL>
+
+<H2>
+<A NAME="ntpeople"></A>NT ユーザã®ç·¨é›†</H2>
+NT ユーザã®ã‚¨ãƒ³ãƒˆãƒªã‚’編集ã™ã‚‹ã«ã¯ã€ä»¥ä¸‹ã®æ“作を行ã„ã¾ã™ã€‚
+<OL>
+<LI>
+<A HREF="search.htm#standard">[標準検索]</A>
+ã¾ãŸã¯ <A HREF="search.htm#advanced">[拡張検索]</A>を使ã£ã¦ã€ç›®çš„ã®ã‚¨ãƒ³ãƒˆãƒªã‚’検索ã—ã¾ã™ã€‚</LI>
+
+<LI>
+<A HREF="search.htm#results">エントリを表示ã•ã›ã¾ã™</A>。</LI>
+
+<LI>
+[NT ユーザã®ç·¨é›†] ボタンをクリックã—ã¾ã™ã€‚</LI>
+
+<LI>
+エントリã®ç·¨é›†ã‚’試ã¿ã‚‹å‰ã«<A HREF="auth.htm#userauth">èªè¨¼</A>ã—ã¦ã„ãªã‹ã£ãŸã‚Šã€èªè¨¼ãŒå¤±åŠ¹ã—ã¦ã„ã‚‹å ´åˆã¯ã€å…ˆã«é€²ã‚€å‰ã«èªè¨¼ã™ã‚‹ã‚ˆã†ã«æ±‚ã‚るプロンプトãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚</LI>
+
+<LI>
+ユーザã®ã‚¨ãƒ³ãƒˆãƒªã‚’編集ã™ã‚‹ã«ã¯ã€å„フィールドã«å¸Œæœ›ã®å€¤ã‚’入力ã—ã¾ã™ã€‚必須フィールドã«ã¯ã‹ãªã‚‰ãšå€¤ã‚’入力ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚NT ユーザã®å¿…須フィールドã«ã¯æ¬¡ã®ã‚‚ã®ãŒã‚ã‚Šã¾ã™ã€‚</LI>
+
+<UL type="disc">
+<LI>
+<A HREF="attribut.htm#cn">[æ°å]</A></LI>
+
+<LI>
+<A HREF="attribut.htm#sn">[姓]</A></LI>
+
+<LI>
+<A HREF="attribut.htm#ntUserDomainId">[NT ドメインå] </A></LI>
+
+<LI>
+<A HREF="attribut.htm#ntUserDomainId">[NT ユーザ ID]</A></LI>
+</UL>
+
+<LI>
+ã“ã“ã§ã‚ªãƒ—ションã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«å€¤ã‚’入力ã—ãŸã‚Šã€å¾Œã«ã“れらã®å€¤ã‚’変更ã™ã‚‹ã“ã¨ã‚‚å¯èƒ½ã§ã™ã€‚NT ユーザã®ã‚ªãƒ—ションã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã¯æ¬¡ã®é€šã‚Šã§ã™ã€‚</LI>
+
+<P>
+<CENTER><TABLE BORDER=2>
+<TR>
+<TD><A HREF="attribut.htm#givenName">[åå‰]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#telephoneNumber">[電話番å·]&nbsp;</A></TD>
+
+<TD><A HREF="attribut.htm#mail">[é›»å­ãƒ¡ãƒ¼ãƒ« アドレス]</A>&nbsp;</TD>
+</TR>
+
+<TR>
+<TD><A HREF="attribut.htm#facsimileTelephoneNumber">[ファックス]&nbsp;</A></TD>
+
+<TD><A HREF="attribut.htm#userPassword">[Directory Server パスワード] </A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#pager">[ãƒã‚±ãƒƒãƒˆãƒ™ãƒ«]</A>&nbsp;</TD>
+</TR>
+
+<TR>
+<TD><A HREF="attribut.htm#mobile">[æºå¸¯é›»è©±]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#businessCategory">[事業カテゴリ]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#title">[å½¹è·]</A>&nbsp;</TD>
+</TR>
+
+<TR>
+<TD><A HREF="attribut.htm#ou">[組織å˜ä½]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#manager">[マãƒãƒ¼ã‚¸ãƒ£]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#roomNumber">[部屋番å·]</A>&nbsp;</TD>
+</TR>
+
+<TR>
+<TD><A HREF="attribut.htm#secretary">[秘書]&nbsp;</A></TD>
+
+<TD><A HREF="attribut.htm#departmentNumber">[部門番å·]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#employeeNumber">[社員番å·]</A>&nbsp;</TD>
+</TR>
+
+<TR>
+<TD><A HREF="attribut.htm#carLicense">[自動車ナンãƒãƒ¼ãƒ—レート番å·]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#postalAddress">[ä½æ‰€]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#description">[説明]</A>&nbsp;</TD>
+</TR>
+
+<TR>
+<TD><A HREF="attribut.htm#seeAlso">[å‚ç…§]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#labeledUri">[URL]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#uid">[ユーザ ID]</A>&nbsp;</TD>
+</TR>
+</TABLE></CENTER>
+<P>
+<LI>
+<A HREF="attribut.htm#NTUserDelete">[ユーザを削除ã—ãŸå ´åˆã¯ NTアカウントを削除]</A> オプションã®å€¤ã‚’変更ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚</LI>
+
+<LI>
+対応ã™ã‚‹ [編集] ボタンをクリックã—ã¦ã€<A HREF="#addmanager"> [マãƒãƒ¼ã‚¸ãƒ£] ã‚„ [秘書] フィールドã«å€¤ã‚’追加</A>ã§ãã¾ã™ã€‚</LI>
+
+<LI>
+対応ã™ã‚‹ [編集] ボタンをクリックã—ã¦ã€<A HREF="#addowner"> [å‚ç…§] フィールドã«å€¤ã‚’追加</A>ã§ãã¾ã™ã€‚</LI>
+
+<LI>
+フィールドã®ç·¨é›†ãŒçµ‚ã‚ã£ãŸã‚‰ã€[変更ä¿å­˜] をクリックã—ã¾ã™ã€‚</LI>
+</OL>
+ã“ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‹ã‚‰ã¯ä»¥ä¸‹ã‚‚実行ã§ãã¾ã™ã€‚
+<UL>
+<LI>
+<A HREF="#rename">エントリåã®å¤‰æ›´</A></LI>
+
+<LI>
+<A HREF="mod.htm#delete">エントリã®å‰Šé™¤</A></LI>
+
+<LI>
+<A HREF="#changepw">パスワードã®å¤‰æ›´</A></LI>
+</UL>
+
+<H2><A NAME="groups"></A>グループã®ç·¨é›†</H2>
+
+グループã®ã‚¨ãƒ³ãƒˆãƒªã‚’編集ã™ã‚‹ã«ã¯ã€ä»¥ä¸‹ã®æ“作を行ã„ã¾ã™ã€‚
+<OL>
+<LI>
+<A HREF="search.htm#standard">[標準検索]</A>
+ã¾ãŸã¯ <A HREF="search.htm#advanced">[拡張検索]</A>を使ã£ã¦ã€ç›®çš„ã®ã‚¨ãƒ³ãƒˆãƒªã‚’検索ã—ã¾ã™ã€‚</LI>
+
+<LI>
+<A HREF="search.htm#results">エントリを表示ã•ã›ã¾ã™</A>。</LI>
+
+<LI>
+[グループã®ç·¨é›†] ボタンをクリックã—ã¾ã™ã€‚</LI>
+
+<LI>
+エントリã®ç·¨é›†ã‚’試ã¿ã‚‹å‰ã«<A HREF="auth.htm#userauth">èªè¨¼</A>ã—ã¦ã„ãªã‹ã£ãŸã‚Šã€èªè¨¼ãŒå¤±åŠ¹ã—ã¦ã„ã‚‹å ´åˆã¯ã€å…ˆã«é€²ã‚€å‰ã«èªè¨¼ã™ã‚‹ã‚ˆã†ã«æ±‚ã‚るプロンプトãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚</LI>
+
+<LI>
+グループã®ã‚¨ãƒ³ãƒˆãƒªã‚’編集ã™ã‚‹ã«ã¯ã€å„フィールドã«ç·¨é›†ã—ãŸå€¤ã‚’入力ã—ã¾ã™ã€‚必須フィールドã§ã‚ã‚‹<A HREF="attribut.htm#cn"> [åå‰] </A>ã«ã¯ã‹ãªã‚‰ãšå€¤ã‚’入力ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚
+
+<LI>
+ã“ã“ã§ã‚ªãƒ—ションã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«å€¤ã‚’入力ã™ã‚‹ã“ã¨ã‚‚ã€å¾Œã§ã“れらã®å€¤ã‚’変更ã™ã‚‹ã“ã¨ã‚‚å¯èƒ½ã§ã™ã€‚グループã®ã‚ªãƒ—ションã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«ã¯æ¬¡ã®ã‚‚ã®ãŒã‚ã‚Šã¾ã™ã€‚</LI>
+
+<P>
+<CENTER><TABLE BORDER=2>
+<TR>
+<TD><A HREF="attribut.htm#description">[説明]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#owner">[所有者]</A>&nbsp;</TD>
+</TR>
+
+<TR>
+<TD><A HREF="attribut.htm#member">[グループ メンãƒãƒ¼]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#seeAlso">[å‚ç…§]</A></TD>
+</TR>
+</TABLE></CENTER>
+<P>
+<LI>
+対応ã™ã‚‹ [編集] ボタンをクリックã—ã¦ã€<A HREF="#addowner"> [å‚ç…§]ã€[所有者] ãŠã‚ˆã³ [秘書] フィールドã«å€¤ã‚’追加</A>ã§ãã¾ã™ã€‚</LI>
+
+<LI>
+フィールドã®ç·¨é›†ãŒçµ‚ã‚ã£ãŸã‚‰ã€[変更ä¿å­˜] をクリックã—ã¾ã™ã€‚</LI>
+</OL>
+ã“ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‹ã‚‰ã¯ä»¥ä¸‹ã®æ“作も行ãˆã¾ã™ã€‚
+<UL>
+<LI>
+<A HREF="#rename">エントリåã®å¤‰æ›´</A></LI>
+
+<LI>
+<A HREF="mod.htm#delete">エントリã®å‰Šé™¤</A></LI>
+</UL>
+
+<H3><A NAME="addowner"></A>[所有者]ã€[å‚ç…§] ãŠã‚ˆã³ [グループ メンãƒãƒ¼] フィールドã¸ã®å€¤ã®è¿½åŠ </H3>
+
+[所有者]ã€[å‚ç…§] ã¾ãŸã¯ [グループ メンãƒãƒ¼] フィールド㮠[編集] ボタンをクリックã™ã‚‹ã¨ã€ãƒ¡ãƒ³ãƒãƒ¼ã‚’追加ã—ãŸã‚Šå‰Šé™¤ã™ã‚‹ãŸã‚ã®æ–°ã—ã„フォームãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚[所有者]ã€[å‚ç…§]ã€ã¾ãŸã¯[グループ メンãƒãƒ¼]ã¯å€‹äººã¾ãŸã¯ã‚°ãƒ«ãƒ¼ãƒ—ã§ã™ã€‚ã¤ã¾ã‚Šã€[所有者]ã€[å‚ç…§]ã€ã¾ãŸã¯[グループ メンãƒãƒ¼]ã¨ã—ã¦ã‚°ãƒ«ãƒ¼ãƒ—を追加ã™ã‚‹å ´åˆã€ã‚°ãƒ«ãƒ¼ãƒ—ã«å±žã™ã‚‹ãƒ¦ãƒ¼ã‚¶ã¯ã™ã¹ã¦ãƒªã‚¹ãƒˆã®ãƒ¡ãƒ³ãƒãƒ¼ã«ãªã‚Šã¾ã™ã€‚例ãˆã°ã€Barbara Jensen ãŒãƒžãƒ¼ã‚±ãƒ†ã‚£ãƒ³ã‚° マãƒãƒ¼ã‚¸ãƒ£ グループã®ãƒ¡ãƒ³ãƒãƒ¼ã§ã€ãƒžãƒ¼ã‚±ãƒ†ã‚£ãƒ³ã‚° マãƒãƒ¼ã‚¸ãƒ£ グループをマーケティング人事グループã®ãƒ¡ãƒ³ãƒãƒ¼ã«ã—ãŸå ´åˆã€Barbara Jensenもマーケティング人事グループã®ãƒ¡ãƒ³ãƒãƒ¼ã«ãªã‚Šã¾ã™ã€‚[グループ メンãƒãƒ¼]ã€[所有者]ã€ã¾ãŸã¯[å‚ç…§]を追加ã™ã‚‹ãŸã‚ã«ã¯ã€ä»¥ä¸‹ã®æ‰‹é †ã«å¾“ã£ã¦ãã ã•ã„。
+<OL>
+<LI>
+リストã«ãƒ¦ãƒ¼ã‚¶ エントリを追加ã™ã‚‹å ´åˆã¯ã€[ユーザ]ãŒæœ€åˆã®ãƒ€ã‚¤ã‚¢ãƒ­ã‚°ãƒœãƒƒã‚¯ã‚¹ã«è¡¨ç¤ºã•ã‚Œã¦ã„ã‚‹ã“ã¨ã‚’確èªã—ã¾ã™ã€‚グループã«ã‚°ãƒ«ãƒ¼ãƒ— エントリを追加ã™ã‚‹å ´åˆã¯ã€[グループ]ãŒè¡¨ç¤ºã•ã‚Œã¦ã„ã‚‹ã“ã¨ã‚’確èªã—ã¾ã™ã€‚</LI>
+
+<LI>
+2番目ã®ãƒ€ã‚¤ã‚¢ãƒ­ã‚°ãƒœãƒƒã‚¯ã‚¹ã«æ¤œç´¢æ–‡å­—列を入力ã—ã¾ã™ã€‚以下ã®ã†ã¡ã€ã©ã‚Œã§ã‚‚入力ã—ã¦ãã ã•ã„。</LI>
+
+<UL type="disc">
+<LI>
+åå‰ã€‚æ°å全体ã¾ãŸã¯ä¸€éƒ¨ã‚’入力ã—ã¾ã™ã€‚ãã®æ¤œç´¢æ–‡å­—列ã«ä¸€è‡´ã™ã‚‹ã™ã¹ã¦ã®ã‚¨ãƒ³ãƒˆãƒªãŒè¿”ã•ã‚Œã¾ã™ã€‚該当ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªãŒè¦‹ã¤ã‹ã‚‰ãªã„å ´åˆã¯ã€æ¤œç´¢æ–‡å­—列をå«ã‚€ã™ã¹ã¦ã®ã‚¨ãƒ³ãƒˆãƒªãŒè¿”ã•ã‚Œã¾ã™ã€‚検索文字列をå«ã‚€ã‚¨ãƒ³ãƒˆãƒªãŒè¦‹ã¤ã‹ã‚‰ãªã„å ´åˆã¯ã€æ¤œç´¢æ–‡å­—列ã«é¡žä¼¼ã—ãŸã‚¨ãƒ³ãƒˆãƒªãŒè¿”ã•ã‚Œã¾ã™ã€‚</LI>
+
+<LI>
+ユーザ ID (ユーザ エントリを検索ã—ã¦ã„ã‚‹å ´åˆï¼‰</LI>
+
+<LI>
+電話番å·ã€‚電話番å·ã®ä¸€éƒ¨ã ã‘を入力ã™ã‚‹ã¨ã€ãã®æ¤œç´¢ç•ªå·ã§çµ‚ã‚ã‚‹ã™ã¹ã¦ã®é›»è©±ç•ªå·ãŒè¿”ã•ã‚Œã¾ã™ã€‚</LI>
+
+<LI>
+é›»å­ãƒ¡ãƒ¼ãƒ« アドレス。アットマーク(@)をå«ã‚“ã§ã„る文字列ã¯ã™ã¹ã¦é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã¨ã¿ãªã•ã‚Œã¾ã™ã€‚完全ã«ä¸€è‡´ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªãŒè¦‹ã¤ã‹ã‚‰ãªã„å ´åˆã¯ã€ãã®æ¤œç´¢æ–‡å­—列ã§å§‹ã¾ã‚‹ã™ã¹ã¦ã®é›»å­ãƒ¡ãƒ¼ãƒ« アドレスãŒæ¤œç´¢ã•ã‚Œã¾ã™ã€‚</LI>
+
+<LI>
+アスタリスク(*)を使ã†ã¨ã€ç¾åœ¨ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªä¸­ã«ã‚ã‚‹ã™ã¹ã¦ã®ã‚¨ãƒ³ãƒˆãƒªã‚„グループを表示ã§ãã¾ã™ã€‚</LI>
+
+<LI>
+ä»»æ„ã®<A HREF="search.htm#filter">LDAP 検索フィルタ</A>ã€‚ç­‰å· (=) ã‚’å«ã‚“ã§ã„る文字列ã¯ã™ã¹ã¦ã€æ¤œç´¢ãƒ•ã‚£ãƒ«ã‚¿ã¨ã¿ãªã•ã‚Œã¾ã™ã€‚</LI>
+</UL>
+
+<LI>
+[検索ã—ã¦è¿½åŠ ]をクリックã—ã€ä¸€è‡´ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªã‚’見ã¤ã‘ã¦ãƒªã‚¹ãƒˆã«è¿½åŠ ã—ã¾ã™ã€‚リストã«å«ã‚ãŸããªã„エントリãŒã‚ã‚‹å ´åˆã¯ã€[リストã‹ã‚‰å‰Šé™¤] 欄ã®ãƒœãƒƒã‚¯ã‚¹ã‚’クリックã—ã¾ã™ã€‚削除ã—ãŸã„エントリã«ä¸€è‡´ã™ã‚‹æ¤œç´¢ãƒ•ã‚£ãƒ«ã‚¿ã‚’作æˆã—ã¦ã‹ã‚‰ã€[検索ã—ã¦å‰Šé™¤] をクリックã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚</LI>
+
+<LI>
+グループ メンãƒãƒ¼ã®ãƒªã‚¹ãƒˆãŒå®Œæˆã—ãŸã‚‰ã€[変更ä¿å­˜] をクリックã—ã¾ã™ã€‚ã“ã®æ™‚点ã§è¡¨ç¤ºã•ã‚Œã¦ã„るエントリãŒã€ãƒªã‚¹ãƒˆã«åŠ ãˆã‚‰ã‚Œã¾ã™ã€‚</LI>
+</OL>
+
+<H2>
+<A NAME="NTgroups"></A>NT グループã®ç·¨é›†</H2>
+NT グループã®ã‚¨ãƒ³ãƒˆãƒªã‚’編集ã™ã‚‹ã«ã¯ã€ä»¥ä¸‹ã®æ“作を行ã„ã¾ã™ã€‚
+<OL>
+<LI>
+<A HREF="search.htm#standard">[標準検索]</A>
+ã¾ãŸã¯ <A HREF="search.htm#advanced">[拡張検索]</A>を使ã£ã¦ã€ç›®çš„ã®ã‚¨ãƒ³ãƒˆãƒªã‚’検索ã—ã¾ã™ã€‚</LI>
+
+<LI>
+<A HREF="search.htm#results">エントリを表示ã•ã›ã¾ã™</A>。</LI>
+
+<LI>
+[NT グループã®ç·¨é›†] ボタンをクリックã—ã¾ã™ã€‚</LI>
+
+<LI>
+エントリã®ç·¨é›†ã‚’試ã¿ã‚‹å‰ã«<A HREF="auth.htm#userauth">èªè¨¼</A>ã—ã¦ã„ãªã‹ã£ãŸã‚Šã€èªè¨¼ãŒå¤±åŠ¹ã—ã¦ã„ã‚‹å ´åˆã¯ã€å…ˆã«é€²ã‚€å‰ã«èªè¨¼ã™ã‚‹ã‚ˆã†ã«æ±‚ã‚るプロンプトãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚</LI>
+
+<LI>
+ãã®ã‚°ãƒ«ãƒ¼ãƒ—ã®ã‚¨ãƒ³ãƒˆãƒªã‚’編集ã™ã‚‹ã«ã¯ã€å„フィールドã«ç·¨é›†ã—ãŸå€¤ã‚’入力ã—ã¾ã™ã€‚必須フィールドã«ã¯ã‹ãªã‚‰ãšå€¤ã‚’入力ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚NT グループã®å¿…須フィールドã«ã¯æ¬¡ã®ã‚‚ã®ãŒã‚ã‚Šã¾ã™ã€‚</LI>
+
+<UL type="disc">
+<LI>
+<A HREF="attribut.htm#cn">[åå‰]</A></LI>
+
+<LI>
+<A HREF="attribut.htm#ntGroupId">[NT グループå]</A></LI>
+
+<LI>
+<A HREF="attribut.htm#ntGroupDomainId">[NT ドメインå]</A></LI>
+
+<LI>
+<A HREF="attribut.htm#ntGroupType">[NTグループ タイプ]</A></LI>
+
+</UL>
+
+<LI>
+ã“ã“ã§ã‚ªãƒ—ションã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«å€¤ã‚’入力ã™ã‚‹ã“ã¨ã‚‚ã€å¾Œã§ã“れらã®å€¤ã‚’変更ã™ã‚‹ã“ã¨ã‚‚å¯èƒ½ã§ã™ã€‚NT グループã®ã‚ªãƒ—ションã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«ã¯æ¬¡ã®ã‚‚ã®ãŒã‚ã‚Šã¾ã™ã€‚</LI>
+
+<P>
+<CENTER><TABLE BORDER=2>
+<TR>
+<TD><A HREF="attribut.htm#description">[説明]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#owner">[所有者]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#l">[言語情報]</A></TD>
+</TR>
+
+<TR>
+<TD><A HREF="attribut.htm#member">[グループ メンãƒãƒ¼]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#seeAlso">[å‚ç…§]</A></TD>
+
+<TD><A HREF="attribut.htm#ou">[組織å˜ä½]</A></TD>
+</TR>
+</TABLE></CENTER>
+&nbsp;
+<LI>
+<A HREF="attribut.htm#ntGroupDeleteGroup">[グループを削除ã—ãŸå ´åˆã¯ NTグループアカウントを削除]</A> オプションã®å€¤ã‚’変更ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚</LI>
+
+<LI>
+対応ã™ã‚‹ [編集] ボタンをクリックã—ã¦ã€<A HREF="#addmanager"> [å‚ç…§]ã€[所有者]ã€ãŠã‚ˆã³ [グループ メンãƒãƒ¼] フィールドã«å€¤ã‚’追加</A>ã§ãã¾ã™ã€‚</LI>
+
+<LI>
+編集ãŒçµ‚ã‚ã£ãŸã‚‰ã€[変更ä¿å­˜] をクリックã—ã¾ã™ã€‚</LI>
+</OL>
+ã“ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‹ã‚‰ã¯ä»¥ä¸‹ã®æ“作も行ãˆã¾ã™ã€‚
+<UL>
+<LI>
+<A HREF="#rename">エントリåã®å¤‰æ›´</A></LI>
+
+<LI>
+<A HREF="mod.htm#delete">エントリã®å‰Šé™¤</A></LI>
+</UL>
+
+<H2>
+<A NAME="ou"></A>組織å˜ä½ã®ç·¨é›†</H2>
+組織å˜ä½ã‚’編集ã™ã‚‹ã«ã¯ã€ä»¥ä¸‹ã®æ“作を行ã„ã¾ã™ã€‚
+<OL>
+<LI>
+<A HREF="search.htm#standard">[標準検索]</A>
+ã¾ãŸã¯ <A HREF="search.htm#advanced">[拡張検索]</A>を使ã£ã¦ã€ç›®çš„ã®ã‚¨ãƒ³ãƒˆãƒªã‚’検索ã—ã¾ã™ã€‚</LI>
+
+<LI>
+<A HREF="search.htm#results">エントリを表示ã•ã›ã¾ã™</A>。</LI>
+
+<LI>
+[組織å˜ä½ã®ç·¨é›†] ボタンをクリックã—ã¾ã™ã€‚</LI>
+
+<LI>
+エントリã®ç·¨é›†ã‚’試ã¿ã‚‹å‰ã«<A HREF="auth.htm#userauth">èªè¨¼</A>ã—ã¦ã„ãªã‹ã£ãŸã‚Šã€èªè¨¼ãŒå¤±åŠ¹ã—ã¦ã„ã‚‹å ´åˆã¯ã€å…ˆã«é€²ã‚€å‰ã«èªè¨¼ã™ã‚‹ã‚ˆã†ã«æ±‚ã‚るプロンプトãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚</LI>
+
+<LI>
+組織å˜ä½ã®ã‚¨ãƒ³ãƒˆãƒªã‚’編集ã™ã‚‹ã«ã¯ã€å„フィールドã«ç·¨é›†ã—ãŸå€¤ã‚’入力ã—ã¾ã™ã€‚必須フィールドã«ã¯ã‹ãªã‚‰ãšå€¤ã‚’入力ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚</LI>
+
+<LI>
+組織å˜ä½ã®å¿…須フィールドã¯ã€<A HREF="attribut.htm#ou">[å˜ä½å]</A>ã§ã™ã€‚</LI>
+
+<LI>
+ã“ã“ã§ã‚ªãƒ—ションã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«å€¤ã‚’入力ã—ãŸã‚Šã€å¾Œã«ã“れらã®å€¤ã‚’変更ã™ã‚‹ã“ã¨ã‚‚å¯èƒ½ã§ã™ã€‚組織å˜ä½ã®ã‚ªãƒ—ションã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã¯æ¬¡ã®é€šã‚Šã§ã™ã€‚</LI>
+
+<P>
+<CENTER><TABLE BORDER=2>
+<TR>
+<TD><A HREF="attribut.htm#description">[説明]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#telephoneNumber">[電話番å·]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#businessCategory">[事業カテゴリ]</A>&nbsp;</TD>
+</TR>
+
+<TR>
+<TD><A HREF="attribut.htm#facsimileTelephoneNumber">[ファックス]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#l">[場所]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#postalAddress">[ä½æ‰€]</A>&nbsp;</TD>
+</TR>
+
+<TR>
+<TD><A HREF="attribut.htm#seeAlso">[å‚ç…§]</A>&nbsp;</TD>
+
+<TD>&nbsp;</TD>
+
+<TD>&nbsp;</TD>
+</TR>
+</TABLE></CENTER>
+<P>
+<LI>
+編集ãŒçµ‚ã‚ã£ãŸã‚‰ã€[変更ä¿å­˜] をクリックã—ã¾ã™ã€‚</LI>
+</OL>
+ã“ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‹ã‚‰ã¯ä»¥ä¸‹ã‚‚実行ã§ãã¾ã™ã€‚
+<UL>
+<LI>
+<A HREF="#rename">エントリåã®å¤‰æ›´</A></LI>
+
+<LI>
+<A HREF="mod.htm#delete">エントリã®å‰Šé™¤</A></LI>
+</UL>
+
+<H2>
+<A NAME="o"></A>組織ã®ç·¨é›†</H2>
+組織ã®ã‚¨ãƒ³ãƒˆãƒªã‚’編集ã™ã‚‹ã«ã¯ã€ä»¥ä¸‹ã®æ“作をã—ã¾ã™ã€‚
+<OL>
+<LI>
+<A HREF="search.htm#standard">[標準検索]</A>
+ã¾ãŸã¯ <A HREF="search.htm#advanced">[拡張検索]</A>を使ã£ã¦ã€ç›®çš„ã®ã‚¨ãƒ³ãƒˆãƒªã‚’検索ã—ã¾ã™ã€‚</LI>
+
+<LI>
+<A HREF="search.htm#results">エントリを表示ã•ã›ã¾ã™</A>。</LI>
+
+<LI>
+[組織ã®ç·¨é›†] ボタンをクリックã—ã¾ã™ã€‚</LI>
+
+<LI>
+エントリã®ç·¨é›†ã‚’試ã¿ã‚‹å‰ã«<A HREF="auth.htm#userauth">èªè¨¼</A>ã—ã¦ã„ãªã‹ã£ãŸã‚Šã€èªè¨¼ãŒå¤±åŠ¹ã—ã¦ã„ã‚‹å ´åˆã¯ã€å…ˆã«é€²ã‚€å‰ã«èªè¨¼ã™ã‚‹ã‚ˆã†ã«æ±‚ã‚るプロンプトãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚</LI>
+
+<LI>
+組織ã®ã‚¨ãƒ³ãƒˆãƒªã‚’編集ã™ã‚‹ã«ã¯ã€å„フィールドã«ç·¨é›†ã—ãŸå€¤ã‚’入力ã—ã¾ã™ã€‚必須フィールドã«ã¯ã‹ãªã‚‰ãšå€¤ã‚’入力ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚</LI>
+
+<LI>
+組織ã®å¿…須フィールドã¯ã€<A HREF="attribut.htm#o">[組織å]</A>ã§ã™ã€‚</LI>
+
+<LI>
+ã“ã“ã§ã‚ªãƒ—ションã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«å€¤ã‚’入力ã™ã‚‹ã“ã¨ã‚‚ã€å¾Œã§ã“れらã®å€¤ã‚’変更ã™ã‚‹ã“ã¨ã‚‚å¯èƒ½ã§ã™ã€‚組織ã®ã‚ªãƒ—ションã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã¯æ¬¡ã®é€šã‚Šã§ã™ã€‚</LI>
+
+<P>
+<CENTER><TABLE BORDER=2>
+<TR>
+<TD><A HREF="attribut.htm#description">[説明]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#telephoneNumber">[電話番å·]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#businessCategory">[事業カテゴリ]</A>&nbsp;</TD>
+</TR>
+
+<TR>
+<TD><A HREF="attribut.htm#facsimileTelephoneNumber">[ファックス]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#l">[場所]</A>&nbsp;</TD>
+
+<TD><A HREF="attribut.htm#postalAddress">[ä½æ‰€]</A>&nbsp;</TD>
+</TR>
+
+<TR>
+<TD><A HREF="attribut.htm#seeAlso">[å‚ç…§]</A>&nbsp;</TD>
+
+<TD>&nbsp;</TD>
+
+<TD>&nbsp;</TD>
+</TR>
+</TABLE></CENTER>
+&nbsp;
+<LI>
+編集ãŒçµ‚ã‚ã£ãŸã‚‰ã€[変更ä¿å­˜] をクリックã—ã¾ã™ã€‚</LI>
+</OL>
+
+<H2><A NAME="rename"></A>エントリåã®å¤‰æ›´</H2>
+エントリåを変更ã™ã‚‹ã«ã¯ã€ä»¥ä¸‹ã‚’実行ã—ã¦ãã ã•ã„。
+<OL>
+<LI>
+<A HREF="search.htm#standard">[標準検索]</A>
+ã¾ãŸã¯ <A HREF="search.htm#advanced">[拡張検索]</A>を使ã£ã¦ã€ç›®çš„ã®ã‚¨ãƒ³ãƒˆãƒªã‚’検索ã—ã¾ã™ã€‚</LI>
+
+<LI>
+<A HREF="search.htm#results">エントリを表示ã•ã›ã¾ã™</A>。</LI>
+
+<LI>
+[編集] ボタンをクリックã—ã¾ã™ã€‚</LI>
+
+<LI>
+エントリã®æ–°ã—ã„一般åを入力ã—ã¾ã™ã€‚</LI>
+
+<LI>
+[変更ä¿å­˜]をクリックã—ã¾ã™ã€‚</LI>
+</OL>
+エントリåã®å¤‰æ›´ã«é–¢ã™ã‚‹ä»¥ä¸‹ã®è¦å‰‡ã«æ³¨æ„ã—ã¦ãã ã•ã„。
+<UL>
+<LI>
+エントリã®<A HREF="add.htm#DN">識別å</A>ã®ä¸€ç•ªå·¦ã®å€¤ã«é™ã‚Šå¤‰æ›´ã§ãã¾ã™ã€‚ã“ã‚Œã¯ã€å®Ÿè³ªçš„ã«ã‚¨ãƒ³ãƒˆãƒªåã«é™ã‚Šå¤‰æ›´ã§ãã‚‹ã“ã¨ã‚’æ„味ã—ã¦ã„ã¾ã™ã€‚ã“ã®æ–¹å¼ã‚’使ã£ã¦ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®åˆ¥ã®ãƒ–ランãƒã«ã‚¨ãƒ³ãƒˆãƒªã‚’移動ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。例ãˆã°ã€</LI>
+
+<PRE>uid=tandrew, ou=Accounting, o=Airius.com</PRE>
+
+ã® DN ã‚’æŒã¤ã‚¨ãƒ³ãƒˆãƒªãŒã‚ã‚‹å ´åˆã¯ã€ã“ã®ã‚¨ãƒ³ãƒˆãƒªã®ãƒ¦ãƒ¼ã‚¶ ID (uid) 部分ã®åå‰ã«é™ã‚Šå¤‰æ›´ã§ãã¾ã™ã€‚ã—ã‹ã—ã€Marketing ã®ã‚µãƒ–ツリーã«ãƒ¦ãƒ¼ã‚¶ tandrew を移動ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。移動ã™ã‚‹ã«ã¯ã€Marketing ã®ã‚µãƒ–ツリー㫠tandrew ã®æ–°è¦ã‚¨ãƒ³ãƒˆãƒªã‚’作æˆã—ã¦ã‹ã‚‰ã€Accounting ã®ãƒ„リーã«ã‚ã‚‹å…ƒã®ã‚¨ãƒ³ãƒˆãƒªã‚’削除ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚
+<LI>
+組織å˜ä½ã®ãƒ„リーã®ä¸‹ã«ã‚¨ãƒ³ãƒˆãƒªãŒã‚ã‚‹å ´åˆã¯ãã®çµ„ç¹”å˜ä½ã®åå‰ã‚’変更ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。ディレクトリ ツリーã®ãƒ–ランムãƒã‚¤ãƒ³ãƒˆåを変更ã™ã‚‹ã«ã¯ã€ãƒ„リー内ã®ãã®ãƒã‚¤ãƒ³ãƒˆã®ä¸‹ã«ã‚ã‚‹ã‚‚ã®ã™ã¹ã¦ã‚’削除ã—ã¦ã‹ã‚‰ã€ãã®ã‚¨ãƒ³ãƒˆãƒªåを変更ã—ã¾ã™ã€‚</LI>
+</UL>
+
+<H2>
+<A NAME="delete"></A>エントリã®å‰Šé™¤</H2>
+エントリåを削除ã™ã‚‹ã«ã¯ã€ä»¥ä¸‹ã‚’実行ã—ã¦ãã ã•ã„。
+<OL>
+<LI>
+<A HREF="search.htm#standard">[標準検索]</A>
+ã¾ãŸã¯ <A HREF="search.htm#advanced">[拡張検索]</A>を使ã£ã¦ã€ç›®çš„ã®ã‚¨ãƒ³ãƒˆãƒªã‚’検索ã—ã¾ã™ã€‚</LI>
+
+<LI>
+<A HREF="search.htm#results">エントリを表示ã•ã›ã¾ã™</A>。</LI>
+
+<LI>
+[編集] ボタンをクリックã—ã¾ã™ã€‚</LI>
+
+<LI>
+[削除]ボタンをクリックã—ã¾ã™ã€‚</LI>
+</OL>
+エントリã«å­ã®ã‚¨ãƒ³ãƒˆãƒªãŒã‚ã‚‹å ´åˆã¯ãã®ã‚¨ãƒ³ãƒˆãƒªã‚’削除ã§ããªã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。特ã«ã€çµ„ç¹”å˜ä½ã®ãƒ„リーã®ä¸‹ã«ã‚¨ãƒ³ãƒˆãƒªãŒã‚ã‚‹å ´åˆã¯ãã®çµ„ç¹”å˜ä½ã‚’削除ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。ディレクトリ ツリーã®ãƒ–ランムãƒã‚¤ãƒ³ãƒˆã‚’削除ã™ã‚‹ã«ã¯ã€ãƒ„リー内ã®ãã®ãƒã‚¤ãƒ³ãƒˆã®ä¸‹ã«ã‚ã‚‹ã‚‚ã®ã™ã¹ã¦ã‚’削除ã—ã¦ã‹ã‚‰ã€ãã®ã‚¨ãƒ³ãƒˆãƒªã‚’削除ã—ã¾ã™ã€‚
+<H2>
+<A NAME="changepw"></A>パスワードã®å¤‰æ›´</H2>
+Directory Server インタフェースã§ã€è‡ªåˆ†ã®ãƒ‘スワードを変更ã§ãã¾ã™ã€‚ã¾ãŸã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª マãƒãƒ¼ã‚¸ãƒ£ã¾ãŸã¯ãƒ‘スワード属性ã«å¯¾ã™ã‚‹æ›¸è¾¼ã¿ç‰¹æ¨©ã‚’æŒã¤æœªåˆ¶é™ãƒ¦ãƒ¼ã‚¶ã§ã‚ã‚‹å ´åˆã¯ã€åˆ¥ã®ãƒ¦ãƒ¼ã‚¶ã®ãƒ‘スワードも変更ã§ãã¾ã™ã€‚
+
+<P>パスワードを変更ã™ã‚‹ã«ã¯ã€ä»¥ä¸‹ã®æ“作をã—ã¾ã™ã€‚
+<OL>
+<LI>
+<A HREF="search.htm#standard">[標準検索]</A>
+ã¾ãŸã¯ <A HREF="search.htm#advanced">[拡張検索]</A>を使ã£ã¦ã€ç›®çš„ã®ã‚¨ãƒ³ãƒˆãƒªã‚’検索ã—ã¾ã™ã€‚</LI>
+
+<LI>
+<A HREF="search.htm#results">エントリを表示ã•ã›ã¾ã™</A>。</LI>
+
+<LI>
+[編集] ボタンをクリックã—ã¾ã™ã€‚</LI>
+
+<LI>
+[パスワード変更] ボタンをクリックã—ã¾ã™ã€‚</LI>
+
+<BR>自分ã®ãƒ‘スワードを変更ã™ã‚‹å ´åˆã€å¤‰æ›´ã‚³ãƒžãƒ³ãƒ‰ã§ãƒ‘スワードを変更ã™ã‚‹ã«ã¯å¤ã„パスワードを入力ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。 (ç¾åœ¨ã®ã‚¨ãƒ³ãƒˆãƒªä»¥å¤–ã®ãƒ¦ãƒ¼ã‚¶ã¨ã—ã¦èªè¨¼ã•ã‚Œã¦ã„ã‚‹å ´åˆã¯ã€å¤ã„パスワードã®å…¥åŠ›ã‚’促ã•ã‚Œã‚‹ã“ã¨ã¯ã‚ã‚Šã¾ã›ã‚“。)
+<LI>
+[パスワード変更] ボタンをクリックã—ã¾ã™ã€‚</LI>
+
+</OL>
+
+</BODY>
+</HTML>
+
diff --git a/ldap/clients/dsgw/html/manual/ja/objclass.htm b/ldap/clients/dsgw/html/manual/ja/objclass.htm
new file mode 100644
index 00000000..7da45679
--- /dev/null
+++ b/ldap/clients/dsgw/html/manual/ja/objclass.htm
@@ -0,0 +1,7249 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+
+<A NAME="1096805">
+<P>
+</A><A NAME="1096807">
+<P>
+</A><A NAME="1002619">
+<H1>オブジェクト クラス
+</H1>
+</A>
+
+<A NAME="996830">
+<br>
+ã“ã®ä»˜éŒ²ã§ã¯ã€ã‚ªãƒ–ジェクト クラスã®å®šç¾©ã‚’解説ã—ã¦ã„ã¾ã™ã€‚Directory Serverã§ä½¿ç”¨ã•ã‚Œã‚‹ã‚¹ã‚­ãƒ¼ãƒžè¦ç´ ã®å¤§éƒ¨åˆ†ã¯æ¨™æº–LDAPプロトコルã®ä¸€éƒ¨ã§ã‚ã‚Šã€X.500è¦æ ¼ã«åŸºã¥ã„ã¦ã„ã¾ã™ã€‚ã—ã‹ã—ã€Directory Serverã®ã‚ªãƒ–ジェクト クラスã®ãªã‹ã«ã¯ã€LDAPã®å°Žå…¥ã«ä½¿ç”¨ã™ã‚‹ãŸã‚ã«Netscape社ãŒä½œæˆã—ãŸæ‹¡å¼µã‚‚ã‚ã‚Šã¾ã™ã€‚オブジェクト クラスãŒNetscape社ã«ã‚ˆã£ã¦ä½œæˆã•ã‚ŒãŸã‚‚ã®ã§ã€æ¨™æº–LDAPスキーマã®ä¸€éƒ¨ã§ãªã„å ´åˆã¯ã€ãã®ã‚ªãƒ–ジェクト クラスã®èª¬æ˜Žã«ãã®æ—¨ãŒç¤ºã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1080540">
+Directory Serverã®ã‚¹ã‚­ãƒ¼ãƒžã¨ãã®ç”¨é€”ã®è©³ç´°ã¯ã€ã€ŽNetscapeディレクトリã®å°Žå…¥ã‚¬ã‚¤ãƒ‰ã‚’ã”覧ãã ã•ã„。<P></A>
+
+<A NAME="1080543">
+スキーマã«ãŠã‘る属性ã®è©³ç´°ã¯ã€<a href="attribut.htm#1002619">「属性ã€</A>ã‚’ã”覧ãã ã•ã„。<P></A>
+<A NAME="1080587">
+以下ã®ã‚¿ã‚¤ãƒ—ã®ã‚ªãƒ–ジェクト クラスãŒèª¬æ˜Žã•ã‚Œã¦ã„ã¾ã™ã€‚<P>
+</A><ul><A NAME="1080589">
+<LI><a href="objclass.htm#1005608">グループ</A><P>
+</A>
+<A NAME="1080591">
+<LI><a href="objclass.htm#1005780">複製</A><P>
+</A>
+<A NAME="1011931">
+<LI><a href="objclass.htm#1005591">場所</A><P>
+</A>
+<A NAME="1002658">
+<LI><a href="objclass.htm#1004915">組織</A><P>
+</A>
+<A NAME="1002659">
+<LI><a href="objclass.htm#1004958">ユーザ</A><P>
+</A>
+<A NAME="1021627">
+<LI><a href="objclass.htm#1078660">Calendar Serverã®æ‹¡å¼µ</A><P>
+</A>
+<A NAME="1085862">
+<LI><a href="objclass.htm#1078479">Certificate Serverã®æ‹¡å¼µ</A><P>
+</A>
+<A NAME="1085922">
+<LI><a href="objclass.htm#1078576">Collabra Serverã®æ‹¡å¼µ</A><P>
+</A>
+<A NAME="1085927">
+<LI><a href="objclass.htm#1078655">Compass Serverã®æ‹¡å¼µ</A><P>
+</A>
+<A NAME="1085932">
+<LI><a href="objclass.htm#1097229">Directory Serverã®æ‹¡å¼µ</A><P>
+</A>
+<A NAME="1085945">
+<LI><a href="objclass.htm#1097091">Media Serverã®æ‹¡å¼µ</A><P>
+</A>
+<A NAME="1100342">
+<LI><a href="objclass.htm#1097135">Messaging Serverã®æ‹¡å¼µ</A><P>
+</A>
+<A NAME="1085950">
+<LI><a href="objclass.htm#1086191">Proxy Serverã®æ‹¡å¼µ</A><P>
+</A>
+<A NAME="1085955">
+<LI><a href="objclass.htm#1081607">Web Serverã®æ‹¡å¼µ</A><P>
+</A>
+<A NAME="1089730">
+<LI><a href="objclass.htm#1108799">予約ã•ã‚ŒãŸã‚ªãƒ–ジェクト クラス</A><P>
+</A>
+</ul>
+<A NAME="1108856">
+Netscape Directory Server ã®ãƒ™ãƒ¼ã‚¹OIDã¯ä»¥ä¸‹ã®ã¨ãŠã‚Šã§ã™ã€‚<P></A>
+<PRE><A NAME="1108857">
+2.16.840.1.113730.3
+</A>
+</PRE>
+<A NAME="1108858">
+Netscape ãŒå®šç¾©ã—ãŸã™ã¹ã¦ã®ã‚ªãƒ–ジェクト クラスã¯ä»¥ä¸‹ã®ãƒ™ãƒ¼ã‚¹å€¤ã‚’æŒã£ã¦ã„ã¾ã™ã€‚<P></A>
+<PRE><A NAME="1108859">
+2.16.840.1.113730.3.2
+</A>
+</PRE>
+
+<A NAME="1005608">&nbsp;
+</A>
+<A NAME="Groups">
+<H2> グループ</H2>
+</A>
+
+<A NAME="1080703">
+以下ã®ã‚ªãƒ–ジェクト クラスã¯ã€å€‹ã€…ã®ã‚ªãƒ–ジェクトã¾ãŸã¯ãã®ä»–ã®ã‚ªãƒ–ジェクト グループã®åå‰ãŒé †åºä¸åŒã§ç¤ºã•ã‚ŒãŸã‚¨ãƒ³ãƒˆãƒªã‚’記述ã—ã¾ã™ã€‚グループã®ãƒ¡ãƒ³ãƒãƒ¼ã‚·ãƒƒãƒ—ã¯é™çš„ã§ã™ã€‚管ç†æ´»å‹•ã«ã‚ˆã£ã¦ã®ã¿ã‚°ãƒ«ãƒ¼ãƒ—を変更ã§ã(メンãƒãƒ¼ã®è¿½åŠ ãªã©)ã€ã‚°ãƒ«ãƒ¼ãƒ—ãŒå‚ç…§ã•ã‚Œã‚‹ãŸã³ã«ãƒ¡ãƒ³ãƒãƒ¼ã‚·ãƒƒãƒ—ãŒå‹•çš„ã«æ±ºå®šã•ã‚Œã‚‹ã‚ã‘ã§ã¯ã‚ã‚Šã¾ã›ã‚“。å„オブジェクト クラスã«ã¯ã€ã‚°ãƒ«ãƒ¼ãƒ—ã¨ãã®ãƒ¡ãƒ³ãƒãƒ¼ã‚’記述ã™ã‚‹å±žæ€§ãŒå«ã¾ã‚Œã¾ã™ã€‚ã“ã“ã§èª¬æ˜Žã•ã‚Œã¦ã„るオブジェクト クラスã¯ã€<a href="objclass.htm#1080708">groupOfNames</A>ã¨<a href="objclass.htm#1005294">groupOfUniqueNames</A>ã¨<a href="objclass.htm#1100399">NTGroup</A>ã§ã™ã€‚<P></A>
+
+<A NAME="1080708">&nbsp;
+</A>
+<A NAME="groupOfNames">
+<H3> groupOfNames</H3>
+</A>
+
+<A NAME="1080709">
+グループåã®ã‚¨ãƒ³ãƒˆãƒªã‚’定義ã—ã¾ã™ã€‚ã“ã®ã‚ªãƒ–ジェクト クラスã¯ã€X.500 Directory Servicesã‹ã‚‰ç¶™æ‰¿ã•ã‚Œã¾ã—ãŸã€‚<P></A>
+
+<A NAME="1096982">
+OID: <CODE>2.5.6.9</CODE><P></A>
+
+<A NAME="1067760">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1075396">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1075398">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1069038">
+<a href="attribut.htm#1171494">cn</A><P></A>
+<td>
+<A NAME="1069041">
+(å¿…é ˆ) グループã®ä¸€èˆ¬å<P></A>
+
+<tr><td>
+<A NAME="1069044">
+<a href="attribut.htm#1171811">member</A><P></A>
+<td>
+<A NAME="1069047">
+(å¿…é ˆ) 識別åå½¢å¼ã®ã‚°ãƒ«ãƒ¼ãƒ— メンãƒãƒ¼ã€‚<P></A>
+
+<tr><td>
+<A NAME="1069050">
+<a href="attribut.htm#1171367">businessCategory</A><P></A>
+<td>
+<A NAME="1069052">
+グループãŒå¾“事ã™ã‚‹è·ç¨®ã€‚<P></A>
+
+<tr><td>
+<A NAME="1069055">
+<a href="attribut.htm#1171528">description</A><P></A>
+<td>
+<A NAME="1069057">
+グループã®ç›®çš„ã®èª¬æ˜Žæ–‡ã€‚<P></A>
+
+<tr><td>
+<A NAME="1104361">
+<a href="attribut.htm#1246271">memberURL</A><P></A>
+<td>
+<A NAME="1104363">
+グループ メンãƒã«é–¢ä¿‚ã™ã‚‹æƒ…å ±ã¸ã®URL。<P></A>
+
+<tr><td>
+<A NAME="1069060">
+<a href="attribut.htm#1281611">o</A><P></A>
+<td>
+<A NAME="1069062">
+グループãŒå±žã™ã‚‹çµ„織。<P></A>
+
+<tr><td>
+<A NAME="1104337">
+<a href="attribut.htm#1241174">ou</A><P></A>
+<td>
+<A NAME="1069067">
+グループãŒå±žã™ã‚‹çµ„ç¹”å˜ä½ã€‚<P></A>
+
+<tr><td>
+<A NAME="1104340">
+<a href="attribut.htm#1005719">owner</A><P></A>
+<td>
+<A NAME="1069072">
+グループã®ã‚ªãƒ¼ãƒŠã€‚<P></A>
+
+<tr><td>
+<A NAME="1069075">
+<a href="attribut.htm#1172500">seeAlso</A><P></A>
+<td>
+<A NAME="1069077">
+グループã«é–¢ä¿‚ã™ã‚‹æƒ…å ±ã¸ã®URL。<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1005294">&nbsp;
+</A>
+<A NAME="groupOfUniqueNames">
+<H3> groupOfUniqueNames</H3>
+</A>
+
+
+
+<A NAME="1005764">
+一æ„ã®åå‰ã‚’æŒã¤ã‚°ãƒ«ãƒ¼ãƒ—ã®ã‚¨ãƒ³ãƒˆãƒªã‚’定義ã—ã¾ã™ã€‚ã“ã®ã‚ªãƒ–ジェクト クラスã¯ã€X.500 Directory Servicesã‹ã‚‰ç¶™æ‰¿ã•ã‚Œã¾ã—ãŸã€‚<P></A>
+
+<A NAME="1097009">
+OID: <CODE>2.5.6.17</CODE><P></A>
+
+<A NAME="1067761">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1075392">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1075394">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1069137">
+<a href="attribut.htm#1171494">cn</A><P></A>
+<td>
+<A NAME="1069140">
+(å¿…é ˆ) グループã®ä¸€èˆ¬å<P></A>
+
+<tr><td>
+<A NAME="1069144">
+<a href="attribut.htm#1172624">uniqueMember</A><P></A>
+<td>
+<A NAME="1069147">
+(å¿…é ˆ) 識別åå½¢å¼ã®ã‚°ãƒ«ãƒ¼ãƒ— メンãƒãƒ¼ã€‚<P></A>
+
+<tr><td>
+<A NAME="1104391">
+<a href="attribut.htm#1171367">businessCategory</A><P></A>
+<td>
+<A NAME="1069152">
+グループãŒå¾“事ã™ã‚‹è·ç¨®ã€‚<P></A>
+
+<tr><td>
+<A NAME="1104396">
+<a href="attribut.htm#1171528">description</A><P></A>
+<td>
+<A NAME="1069157">
+グループã®ç›®çš„ã®èª¬æ˜Žæ–‡ã€‚<P></A>
+
+<tr><td>
+<A NAME="1104401">
+<a href="attribut.htm#1281611">o</A><P></A>
+<td>
+<A NAME="1069162">
+グループãŒå±žã™ã‚‹çµ„織。<P></A>
+
+<tr><td>
+<A NAME="1104406">
+<a href="attribut.htm#1241174">ou</A><P></A>
+<td>
+<A NAME="1069167">
+グループãŒå±žã™ã‚‹çµ„ç¹”å˜ä½ã€‚<P></A>
+
+<tr><td>
+<A NAME="1104411">
+<a href="attribut.htm#1005719">owner</A><P></A>
+<td>
+<A NAME="1069172">
+グループã®ã‚ªãƒ¼ãƒŠã€‚<P></A>
+
+<tr><td>
+<A NAME="1104416">
+<a href="attribut.htm#1172500">seeAlso</A><P></A>
+<td>
+<A NAME="1069177">
+グループã«é–¢ä¿‚ã™ã‚‹æƒ…å ±ã¸ã®URL。<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1100399">&nbsp;
+</A>
+<A NAME="NTGroup">
+<H3> NTGroup</H3>
+</A>
+
+
+
+<A NAME="1100400">
+NT åŒæœŸã‚µãƒ¼ãƒ“スãŒä½¿ç”¨ã™ã‚‹ã‚ªãƒ–ジェクト クラスã§ã€NTグループã®å±žæ€§ã‚’ディレクトリã®ã‚¨ãƒ³ãƒˆãƒªã«ãƒžãƒƒãƒ—ã—ã¾ã™ã€‚ã“ã®ã‚ªãƒ–ジェクト クラスã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚<P></A>
+
+<A NAME="1100401">
+OID: <CODE>2.16.840.1.113730.3.2.9</CODE><P></A>
+
+<A NAME="1100458">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1100404">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1100406">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1100410">
+<a href="attribut.htm#1103684">ntGroupDomainId</A><P></A>
+<td>
+<A NAME="1100412">
+(å¿…é ˆ) NT Global Groupname/Domainã‚’ä¿å­˜ã™ã‚‹ãŸã‚ã«ã€NTåŒæœŸåŒ–サービスã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1100415">
+<a href="attribut.htm#1171528">description</A><P></A>
+<td>
+<A NAME="1100417">
+NTグループã®èª¬æ˜Žæ–‡ã€‚<P></A>
+
+<tr><td>
+<A NAME="1100420">
+<a href="attribut.htm#1244534">l</A><P></A>
+<td>
+<A NAME="1100422">
+サーãƒã®ã‚る場所ã®åœ°åŸŸæ€§ã€‚<P></A>
+
+<tr><td>
+<A NAME="1104514">
+<a href="attribut.htm#1122623">ntGroupAttributes</A><P></A>
+<td>
+<A NAME="1104516">
+NTグループã®å±žæ€§ã‚’ä¿å­˜ã™ã‚‹ãŸã‚ã«ã€NTåŒæœŸåŒ–サービスã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1104538">
+<a href="attribut.htm#1122633">ntGroupCreateNewGroup</A><P></A>
+<td>
+<A NAME="1104540">
+NTåŒæœŸåŒ–サービスã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹ãŸã‚ã€äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1104480">
+<a href="attribut.htm#1103799">ntGroupDeleteGroup</A><P></A>
+<td>
+<A NAME="1104482">
+NTåŒæœŸåŒ–サービスã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹ãŸã‚ã€äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1104557">
+<a href="attribut.htm#1104232">ntGroupId</A><P></A>
+<td>
+<A NAME="1104559">
+グループã®è­˜åˆ¥å­ã‚’ä¿å­˜ã™ã‚‹ãŸã‚ã«ã€NTåŒæœŸåŒ–サービスã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1100425">
+<a href="attribut.htm#1241174">ou</A><P></A>
+<td>
+<A NAME="1100427">
+グループãŒå±žã™ã‚‹çµ„ç¹”å˜ä½ã€‚<P></A>
+
+<tr><td>
+<A NAME="1100435">
+<a href="attribut.htm#1172500">seeAlso</A><P></A>
+<td>
+<A NAME="1100437">
+グループã«é–¢ä¿‚ã™ã‚‹æƒ…å ±ã¸ã®URL。<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1005780">&nbsp;
+</A>
+<A NAME="Replication">
+<H2> 複製</H2>
+</A>
+
+<A NAME="1005974">
+以下ã®ã‚ªãƒ–ジェクト クラスã¯ã€Directory Serverを定義ã—ã¾ã™ã€‚最åˆã®ã‚ªãƒ–ジェクト クラスã¯ã€ãƒžã‚¹ã‚¿ãƒ¼ã¾ãŸã¯ä¾›çµ¦ã‚µãƒ¼ãƒã‚’指定ã—ã¾ã™ã€‚2番目ã®ã‚ªãƒ–ジェクト クラスã¯ã€æ¶ˆè²»ã‚µãƒ¼ãƒãŠã‚ˆã³ãれらã®æ¶ˆè²»ã‚µãƒ¼ãƒã«ä¾›çµ¦ã•ã‚Œã‚‹ã‚¨ãƒ³ãƒˆãƒªã‚’指定ã—ã¾ã™ã€‚オブジェクト クラスã«ã¯a href="objclass.htm#1100614">cirReplicaSource</A>ã€<a href="objclass.htm#1005781">LDAPServer</A>ãŠã‚ˆã³ <a href="objclass.htm#1005782">LDAPReplica</A>ãŒã‚ã‚Šã¾ã™ã€‚<P></A>
+
+
+<A NAME="1100614">&nbsp;
+</A>
+<A NAME="cirReplicaSource">
+<H3> cirReplicaSource</H3>
+</A>
+
+
+
+<A NAME="1100615">
+Netscape Directory ServerãŒã€æ¶ˆè²»è€…åˆæœŸåŒ–ã®è¤‡è£½ã«ä½¿ç”¨ã™ã‚‹ã‚ªãƒ–ジェクト クラスã§ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®ç‰¹å®šã®ã‚µãƒ–ツリーã«é–¢ã™ã‚‹ã™ã¹ã¦ã®è¤‡è£½æƒ…報をå«ã¿ã¾ã™ã€‚ã“ã®ã‚ªãƒ–ジェクト クラスã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚<P></A>
+
+<A NAME="1100616">
+OID: <CODE>2.16.840.1.113730.3.2.11</CODE><P></A>
+
+<A NAME="1100703">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1100619">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1100621">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1100624">
+<a href="attribut.htm#1171494">cn</A><P></A>
+<td>
+<A NAME="1100626">
+(å¿…é ˆ) 供給サーãƒã®ä¸€æ„ã®è­˜åˆ¥å­ã€‚<P></A>
+
+<tr><td>
+<A NAME="1104680">
+<a href="attribut.htm#1103818">cirBeginORC</A><P></A>
+<td>
+<A NAME="1104682">
+複製ã®å‰ã«ã€æ¶ˆè²»ã‚µãƒ¼ãƒãŒãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®å†…容を消去ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã‹ã©ã†ã‹ã‚’定義ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1104646">
+<a href="attribut.htm#1101818">cirBindCredentials</A><P></A>
+<td>
+<A NAME="1104648">
+供給サーãƒã¸ã®æŽ¥ç¶šã«ä½¿ç”¨ã™ã‚‹ãƒã‚¤ãƒ³ãƒ‰è¨¼æ˜Žæ›¸ã€‚<P></A>
+
+<tr><td>
+<A NAME="1104607">
+<a href="attribut.htm#1101379">cirBindDn</A><P></A>
+<td>
+<A NAME="1104609">
+供給サーãƒã¸ã®ãƒã‚¤ãƒ³ãƒ‰ã«ä½¿ç”¨ã™ã‚‹è­˜åˆ¥å。<P></A>
+
+<tr><td>
+<A NAME="1104731">
+<a href="attribut.htm#1101250">cirHost</A><P></A>
+<td>
+<A NAME="1104733">
+供給サーãƒã®ãƒ›ã‚¹ãƒˆå。<P></A>
+
+<tr><td>
+<A NAME="1104629">
+<a href="attribut.htm#1101860">cirLastUpdateApplied</A><P></A>
+<td>
+<A NAME="1104631">
+消費サーãƒã¨ä¾›çµ¦ã‚µãƒ¼ãƒé–“ã§æœ€å¾Œã«ç™ºç”Ÿã—ãŸåŒæœŸåŒ–ã®æ—¥ä»˜ã¨æ™‚刻。<P></A>
+
+<tr><td>
+<A NAME="1100639">
+<a href="attribut.htm#1101283">cirPort</A><P></A>
+<td>
+<A NAME="1100641">
+供給サーãƒã®ãƒãƒ¼ãƒˆç•ªå·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1104589">
+<a href="attribut.htm#1101135">cirReplicaRoot</A><P></A>
+<td>
+<A NAME="1104591">
+消費サーãƒã«è¤‡è£½ã•ã‚Œã‚‹ä¾›çµ¦ã‚µãƒ¼ãƒã®ã‚µãƒ–ツリーã®ãƒ«ãƒ¼ãƒˆã€‚<P></A>
+
+<tr><td>
+<A NAME="1104766">
+<a href="attribut.htm#1102148">cirSyncInterval</A><P></A>
+<td>
+<A NAME="1104768">
+ディレクトリã®è¤‡è£½éƒ¨åˆ†ã«å¤‰æ›´ãŒè¡Œã‚ã‚ŒãŸã‹ã©ã†ã‹ã‚’定期的ã«ãƒã‚§ãƒƒã‚¯ã™ã‚‹ãŸã‚ã€æ¶ˆè²»ã‚µãƒ¼ãƒã‹ã‚‰ä¾›çµ¦ã‚µãƒ¼ãƒã«å•åˆã›ãŒè¡Œã‚ã‚Œã¾ã™ã€‚ã“ã®å±žæ€§ã¯ã€æ¶ˆè²»ã‚µãƒ¼ãƒã«ã‚ˆã‚‹ä¾›çµ¦ã‚µãƒ¼ãƒã¸ã®å•åˆã›é–“隔を秒å˜ä½ã§å®šç¾©ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1104811">
+<a href="attribut.htm#1102114">cirUpdateFailedat</A><P></A>
+<td>
+<A NAME="1104813">
+æ›´æ–°ãŒæœ€å¾Œã«å¤±æ•—ã—ãŸã¨ãã®ã‚¿ã‚¤ãƒ  スタンプ。<P></A>
+
+<tr><td>
+<A NAME="1104814">
+<a href="attribut.htm#1102001">cirUpdateSchedule</A><P></A>
+<td>
+<A NAME="1104792">
+複製を行ã£ã¦ã‚‚よã„時間帯。<P></A>
+
+<tr><td>
+<A NAME="1100650">
+<a href="attribut.htm#1101691">cirUsePersistentSearch</A><P></A>
+<td>
+<A NAME="1100652">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1100655">
+<a href="attribut.htm#1101735">cirUseSsl</A><P></A>
+<td>
+<A NAME="1100657">
+供給サーãƒã«ãƒã‚¤ãƒ³ãƒ‰ã™ã‚‹éš›ã«SSL接続を使用ã™ã‚‹ã‚ˆã†æ¶ˆè²»ã‚µãƒ¼ãƒã«æŒ‡ç¤ºã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1104823">
+<a href="attribut.htm#1148497">replicaEntryFilter</A><P></A>
+<td>
+<A NAME="1104699">
+複製中ã«è¤‡è£½ã¾ãŸã¯çœç•¥ã™ã‚‹å±žæ€§ã‚’示ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1100690">
+<a href="attribut.htm#1148453">replicaNickName</A><P></A>
+<td>
+<A NAME="1100692">
+å˜ä¸€ã®ä¾›çµ¦ã‚µãƒ¼ãƒã¨å˜ä¸€ã®æ¶ˆè²»ã‚µãƒ¼ãƒé–“ã®è¤‡è£½ãƒ«ãƒ¼ãƒ«ã®ç‰¹å®šã®ã‚»ãƒƒãƒˆã‚’示ã™è‡ªç”±å½¢å¼ã®åå‰ã€‚<P></A>
+
+<tr><td>
+<A NAME="1100700">
+<a href="attribut.htm#1281126">replicatedAttributeList</A><P></A>
+<td>
+<A NAME="1100702">
+複製中ã«è¤‡è£½ã¾ãŸã¯çœç•¥ã™ã‚‹å±žæ€§ã‚’示ã—ã¾ã™ã€‚<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1105809">&nbsp;
+</A>
+<A NAME="glue">
+<H3> glue</H3>
+</A>
+
+
+
+<A NAME="1105810">
+複製を容易ã«ã™ã‚‹ãŸã‚ã«Netscape Directory Server ãŒä½¿ç”¨ã™ã‚‹æ‹¡å¼µå¯èƒ½ãªã‚ªãƒ–ジェクト クラス。拡張å¯èƒ½ãªã‚ªãƒ–ジェクト クラスã«é–¢ã™ã‚‹è©³ç´°ã¯ã€ã€ŽNetscape Directory Server 導入ガイドã€ã®ã€Œã‚ªãƒ–ジェクト クラスã®ã‚¿ã‚¤ãƒ—ã€ã‚’å‚ç…§ã—ã¦ãã ã•ã„。予約済。ã“ã®ã‚ªãƒ–ジェクトクラスã¯æ¨™æº–LDAPスキーマã«å¯¾ã™ã‚‹Netscapeã®æ‹¡å¼µã§ã™ã€‚<P></A>
+
+<A NAME="1105811">
+OID: <CODE>2.16.840.1.113730.3.2.30</CODE><P></A>
+
+
+<A NAME="1005781">&nbsp;
+</A>
+<A NAME="LDAPServer">
+<H3> LDAPServer</H3>
+</A>
+
+
+
+<A NAME="1042902">
+ローカル サーãƒã‚’指定ã—ã¾ã™ã€‚ã“ã®ã‚ªãƒ–ジェクト クラスã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚<P></A>
+
+<A NAME="1098493">
+OID: <CODE>2.16.840.1.113730.3.2.35</CODE><P></A>
+
+<A NAME="1067762">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1075388">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1075390">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1069192">
+<a href="attribut.htm#1171494">cn</A><P></A>
+<td>
+<A NAME="1069195">
+(å¿…é ˆ) サーãƒã®ä¸€èˆ¬å<P></A>
+
+<tr><td>
+<A NAME="1069199">
+<a href="attribut.htm#1171397">changeLogMaximumAge</A><P></A>
+<td>
+<A NAME="1100535">
+サーãƒã®å¤‰æ›´ãƒ­ã‚°ã«è¨±ã•ã‚Œã‚‹å¤ã•ã®æœ€å¤§å€¤ã€‚<P></A>
+
+<tr><td>
+<A NAME="1069204">
+<a href="attribut.htm#1171405">changeLogMaximumSize</A><P></A>
+<td>
+<A NAME="1069206">
+サーãƒã®å¤‰æ›´ãƒ­ã‚°ã«è¨±ã•ã‚Œã‚‹ã‚µã‚¤ã‚ºã®æœ€å¤§å€¤ã€‚<P></A>
+
+<tr><td>
+<A NAME="1069209">
+<a href="attribut.htm#1171528">description</A><P></A>
+<td>
+<A NAME="1069211">
+サーãƒã®èª¬æ˜Žæ–‡ã€‚<P></A>
+
+<tr><td>
+<A NAME="1069214">
+<a href="attribut.htm#1171657">generation</A><P></A>
+<td>
+<A NAME="1069216">
+複製ã®ç›®çš„ã®ãŸã‚ã«ã‚µãƒ¼ãƒã‚’示ã™å›ºæœ‰ã®ãƒã‚¤ãƒˆ ベクトル。<P></A>
+
+<tr><td>
+<A NAME="1069219">
+<a href="attribut.htm#1244534">l</A><P></A>
+<td>
+<A NAME="1069221">
+サーãƒã®ã‚る場所ã®åœ°åŸŸæ€§ã€‚<P></A>
+
+<tr><td>
+<A NAME="1069224">
+<a href="attribut.htm#1241174">ou</A><P></A>
+<td>
+<A NAME="1069226">
+サーãƒãŒå±žã™ã‚‹çµ„ç¹”å˜ä½ã€‚<P></A>
+
+<tr><td>
+<A NAME="1069229">
+<a href="attribut.htm#1172500">seeAlso</A><P></A>
+<td>
+<A NAME="1069231">
+サーãƒã«é–¢ä¿‚ã™ã‚‹æƒ…å ±ã¸ã®URL。<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1005782">&nbsp;
+</A>
+<A NAME="LDAPReplica">
+<H3> LDAPReplica</H3>
+</A>
+
+
+
+<A NAME="1006031">
+ローカル サーãƒå†…ã®ã‚¨ãƒ³ãƒˆãƒªã§ãƒªãƒ¢ãƒ¼ãƒˆ サーãƒã«è¤‡è£½ã•ã‚Œã‚‹ã‚‚ã®ã‚’指定ã—ã€ã‚¨ãƒ³ãƒˆãƒªè¤‡è£½å…ˆã®ãƒªãƒ¢ãƒ¼ãƒˆ サーãƒã‚’指定ã—ã¾ã™ã€‚ã“ã®ã‚ªãƒ–ジェクト クラスã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚<P></A>
+
+<A NAME="1098496">
+OID: <CODE>2.16.840.1.113730.3.2.36</CODE><P></A>
+
+<A NAME="1067881">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1075384">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1075386">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1069247">
+<a href="attribut.htm#1171494">cn</A><P></A>
+<td>
+<A NAME="1069250">
+(å¿…é ˆ) エントリã®ä¸€èˆ¬å<P></A>
+
+<tr><td>
+<A NAME="1069253">
+<a href="attribut.htm#1171528">description</A><P></A>
+<td>
+<A NAME="1069255">
+エントリã®èª¬æ˜Žæ–‡ã€‚<P></A>
+
+<tr><td>
+<A NAME="1104907">
+<a href="attribut.htm#1244534">l</A><P></A>
+<td>
+<A NAME="1069260">
+エントリãŒå­˜åœ¨ã™ã‚‹å ´æ‰€ã®åœ°åŸŸæ€§ã€‚<P></A>
+
+<tr><td>
+<A NAME="1104912">
+<a href="attribut.htm#1241174">ou</A><P></A>
+<td>
+<A NAME="1069265">
+エントリãŒå±žã™ã‚‹çµ„ç¹”å˜ä½ã€‚<P></A>
+
+<tr><td>
+<A NAME="1106807">
+<a href="attribut.htm#1092877">replicaBeginOrc</A><P></A>
+<td>
+<A NAME="1106809">
+複製ã®å‰ã«ã€ä¾›çµ¦ã‚µãƒ¼ãƒãŒæ¶ˆè²»ã‚µãƒ¼ãƒã®å†…容を消去ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã‹ã©ã†ã‹ã‚’定義ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1069268">
+<a href="attribut.htm#1006496">replicaBindDn</A><P></A>
+<td>
+<A NAME="1069270">
+ローカル サーãƒãŒæ¶ˆè²»ã‚µãƒ¼ãƒã«ãƒã‚¤ãƒ³ãƒ‰ã™ã‚‹ã®ã«ä½¿ç”¨ã™ã‚‹DN。<P></A>
+
+<tr><td>
+<A NAME="1069273">
+<a href="attribut.htm#1006636">replicaBindMethod</A><P></A>
+<td>
+<A NAME="1069275">
+ローカル サーãƒãŒæ¶ˆè²»ã‚µãƒ¼ãƒã«ãƒã‚¤ãƒ³ãƒ‰ã™ã‚‹ã®ã«ä½¿ç”¨ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ã€‚ç¾åœ¨ã€ã“ã®å±žæ€§ã¯<CODE>simple</CODE>ã«è¨­å®šã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1069278">
+<a href="attribut.htm#1230073">replicaCredentials</A><P></A>
+<td>
+<A NAME="1069280">
+ローカル サーãƒãŒæ¶ˆè²»ã‚µãƒ¼ãƒã«ãƒã‚¤ãƒ³ãƒ‰ã™ã‚‹ã®ã«ä½¿ç”¨ã™ã‚‹ãƒ‘スワード。<P></A>
+
+<tr><td>
+<A NAME="1106878">
+<a href="attribut.htm#1148497">replicaEntryFilter</A><P></A>
+<td>
+<A NAME="1106880">
+フィルタ付ã複製è¦ç´„ã§ã©ã®å±žæ€§ã‚’複製ã—ã€ã©ã®å±žæ€§ã‚’除ãã®ã‹ã‚’指定ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1069283">
+<a href="attribut.htm#1148445">replicaHost</A><P></A>
+<td>
+<A NAME="1069285">
+消費サーãƒã®ãƒ›ã‚¹ãƒˆå。<P></A>
+
+<tr><td>
+<A NAME="1106816">
+<a href="attribut.htm#1148453">replicaNickName</A><P></A>
+<td>
+<A NAME="1106818">
+複製è¦ç´„ã®è‡ªç”±å½¢å¼ã®åå‰ã‚’指定ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1069288">
+<a href="attribut.htm#1007660">replicaPort</A><P></A>
+<td>
+<A NAME="1069290">
+消費サーãƒãŒLDAP通信ã«ä½¿ç”¨ã™ã‚‹ãƒãƒ¼ãƒˆã€‚<P></A>
+
+<tr><td>
+<A NAME="1069293">
+<a href="attribut.htm#1006384">replicaRoot</A><P></A>
+<td>
+<A NAME="1069295">
+消費サーãƒã«ä¾›çµ¦ã™ã‚‹ã‚µãƒ–ツリーã®ãƒ­ãƒ¼ã‚«ãƒ« サーãƒã«ãŠã‘る識別å。<P></A>
+
+<tr><td>
+<A NAME="1106928">
+<a href="attribut.htm#1281126">replicatedAttributeList</A><P></A>
+<td>
+<A NAME="1106930">
+é¸æŠžå±žæ€§è¤‡è£½è¦ç´„ã§ã©ã®å±žæ€§ã‚’複製ã—ã€ã©ã®å±žæ€§ã‚’除ãã®ã‹ã‚’指定ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1069298">
+<a href="attribut.htm#1006918">replicaUpdateFailedAt</A><P></A>
+<td>
+<A NAME="1069300">
+消費サーãƒã¸ã®æ›´æ–°ãŒå¤±æ•—ã—ãŸã¨ãã®ã‚¿ã‚¤ãƒ  スタンプ。<P></A>
+
+<tr><td>
+<A NAME="1069303">
+<a href="attribut.htm#1012768">replicaUpdateReplayed</A><P></A>
+<td>
+<A NAME="1069305">
+消費サーãƒã«ä¾›çµ¦ã•ã‚ŒãŸæœ€å¾Œã®å¤‰æ›´ã®å¤‰æ›´ç•ªå·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1069308">
+<a href="attribut.htm#1006817">replicaUpdateSchedule</A><P></A>
+<td>
+<A NAME="1069310">
+ローカル サーãƒãŒæ¶ˆè²»ã‚µãƒ¼ãƒã¸ã®æ›´æ–°ã‚’開始ã™ã‚‹ã‚¹ã‚±ã‚¸ãƒ¥ãƒ¼ãƒ«ã€‚<P></A>
+
+<tr><td>
+<A NAME="1069313">
+<a href="attribut.htm#1006741">replicaUseSSL</A><P></A>
+<td>
+<A NAME="1069315">
+消費サーãƒã¨ã®é€šä¿¡ã«SSLを使用ã™ã‚‹ã‹ã©ã†ã‹ã‚’指定ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1069318">
+<a href="attribut.htm#1172500">seeAlso</A><P></A>
+<td>
+<A NAME="1069320">
+サーãƒã«é–¢ä¿‚ã™ã‚‹æƒ…å ±ã¸ã®URL。<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1005591">&nbsp;
+</A>
+<A NAME="Locations">
+<H2> 場所</H2>
+</A>
+
+<A NAME="1005809">
+以下ã®ã‚ªãƒ–ジェクト クラスã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª ツリーã«ãŠã‘ã‚‹ä½ç½®ã‚’記述ã—ã¾ã™ã€‚å„オブジェクト クラスã«ã¯ã€å›½åや記述ãªã©ã€å ´æ‰€ã‚’説明ã™ã‚‹å±žæ€§ãŒå«ã¾ã‚Œã¾ã™ã€‚ã“ã“ã§èª¬æ˜Žã•ã‚Œã¦ã„るオブジェクト クラスã¯ã€<a href="objclass.htm#1005812">country</A>ã¨<a href="objclass.htm#1005427">locality</A>ã§ã™ã€‚<P></A>
+
+
+<A NAME="1005812">&nbsp;
+</A>
+<A NAME="country">
+<H3> country</H3>
+</A>
+
+
+
+<A NAME="1005813">
+国を表示ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªã‚’定義ã—ã¾ã™ã€‚ã“ã®ã‚ªãƒ–ジェクト クラスã¯ã€X.500 Directory Servicesã‹ã‚‰ç¶™æ‰¿ã•ã‚Œã¾ã—ãŸã€‚<P></A>
+
+<A NAME="1096900">
+OID: <CODE>2.5.6.2</CODE><P></A>
+
+<A NAME="1068820">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1088379">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1088381">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1088384">
+<a href="attribut.htm#1240535">c</A><P></A>
+<td>
+<A NAME="1088387">
+(å¿…é ˆ) エントリã®å›½å<P></A>
+
+<tr><td>
+<A NAME="1088390">
+<a href="attribut.htm#1171528">description</A><P></A>
+<td>
+<A NAME="1088392">
+国ã®èª¬æ˜Žæ–‡ã€‚<P></A>
+
+<tr><td>
+<A NAME="1088397">
+<a href="attribut.htm#1202682">searchGuide</A><P></A>
+<td>
+<A NAME="1088399">
+検索動作ã®ãŸã‚ã«ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª ツリーã®ãƒ™ãƒ¼ã‚¹ オブジェクトã¨ã—ã¦ã‚¨ãƒ³ãƒˆãƒªã‚’使用ã™ã‚‹éš›ã«ã€æ案ã•ã‚Œã‚‹æ¤œç´¢åŸºæº–ã®æƒ…報を指定ã—ã¾ã™ã€‚<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1005427">&nbsp;
+</A>
+<A NAME="locality">
+<H3> locality</H3>
+</A>
+
+
+
+<A NAME="1005428">
+地域ã¾ãŸã¯åœ°ç†çš„領域を表示ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªã‚’定義ã—ã¾ã™ã€‚ã“ã®ã‚ªãƒ–ジェクト クラスã¯ã€X.500 Directory Servicesã‹ã‚‰ç¶™æ‰¿ã•ã‚Œã¾ã—ãŸã€‚<P></A>
+
+<A NAME="1096910">
+OID: <CODE>2.5.6.3</CODE><P></A>
+
+<A NAME="1068821">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1075380">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1075382">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1071009">
+<a href="attribut.htm#1171528">description</A><P></A>
+<td>
+<A NAME="1071011">
+地域性ã®èª¬æ˜Žæ–‡ã€‚<P></A>
+
+<tr><td>
+<A NAME="1071014">
+<a href="attribut.htm#1244534">l</A><P></A>
+<td>
+<A NAME="1071016">
+エントリã®åœ°åŸŸæ€§ã€‚<P></A>
+
+<tr><td>
+<A NAME="1106986">
+<a href="attribut.htm#1202682">searchGuide</A><P></A>
+<td>
+<A NAME="1106988">
+検索動作ã®ãŸã‚ã«ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª ツリーã®ãƒ™ãƒ¼ã‚¹ オブジェクトã¨ã—ã¦ã‚¨ãƒ³ãƒˆãƒªã‚’使用ã™ã‚‹éš›ã«ã€æ案ã•ã‚Œã‚‹æ¤œç´¢åŸºæº–ã®æƒ…報を指定ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1071019">
+<a href="attribut.htm#1172500">seeAlso</A><P></A>
+<td>
+<A NAME="1071021">
+地域ã«é–¢ä¿‚ã™ã‚‹æƒ…å ±ã¸ã®URL。<P></A>
+
+<tr><td>
+<A NAME="1071024">
+<a href="attribut.htm#1203417">st</A><P></A>
+<td>
+<A NAME="1071026">
+ãã®åœ°åŸŸæ€§ã®å±žã™ã‚‹å·žã¾ãŸã¯éƒ½é“府県を示ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1071029">
+<a href="attribut.htm#1202721">street</A><P></A>
+<td>
+<A NAME="1071031">
+ãã®åœ°åŸŸæ€§ã«é–¢é€£ã™ã‚‹è¡—è·¯ã¨ç•ªåœ°ã€‚<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1004915">&nbsp;
+</A>
+<A NAME="Organizations">
+<H2> 組織</H2>
+</A>
+
+<A NAME="1004913">
+以下ã®ã‚ªãƒ–ジェクト クラスã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª ツリーã«ãŠã‘る組織を示ã™ã‚¨ãƒ³ãƒˆãƒªã‚’記述ã—ã¾ã™ã€‚å„オブジェクト クラスã«ã¯ã€çµ„ç¹”ã®åå‰ã‚„記述ãªã©ã€çµ„織を説明ã™ã‚‹å±žæ€§ãŒå«ã¾ã‚Œã¾ã™ã€‚ã“ã“ã§èª¬æ˜Žã•ã‚Œã¦ã„るオブジェクト クラスã¯ã€<a href="objclass.htm#1004980">organization</A>ã¨<a href="objclass.htm#1005108">organizationalUnit</A>ã§ã™ã€‚<P></A>
+
+
+<A NAME="1004980">&nbsp;
+</A>
+<A NAME="organization">
+<H3> organization</H3>
+</A>
+
+
+
+<A NAME="1004981">
+組織を示ã™ã‚¨ãƒ³ãƒˆãƒªã‚’定義ã—ã¾ã™ã€‚一般ã«ã€çµ„ç¹”ã¯ã€å¤§ããªä¼æ¥­ã‚„事業内ã«ãŠã‘る大ããªæ¯”較的é™çš„ãªã‚°ãƒ«ãƒ¼ãƒ—ã§ã‚ã‚‹ã“ã¨ã‚’想定ã—ã¾ã™ã€‚ã“ã®ã‚ªãƒ–ジェクト クラスã¯ã€X.500 Directory Servicesã‹ã‚‰ç¶™æ‰¿ã•ã‚Œã¾ã—ãŸã€‚<P></A>
+
+<A NAME="1096920">
+OID: <CODE>2.5.6.4</CODE><P></A>
+
+<A NAME="1068822">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1107038">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1107040">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1107045">
+<a href="attribut.htm#1281611">o</A><P></A>
+<td>
+<A NAME="1107047">
+(å¿…é ˆ) 組織å<P></A>
+
+<tr><td>
+<A NAME="1107052">
+<a href="attribut.htm#1171367">businessCategory</A><P></A>
+<td>
+<A NAME="1107054">
+組織ãŒé–¢ä¸Žã™ã‚‹äº‹æ¥­ã€‚<P></A>
+
+<tr><td>
+<A NAME="1107059">
+<a href="attribut.htm#1171528">description</A><P></A>
+<td>
+<A NAME="1107061">
+組織ã®èª¬æ˜Žæ–‡ã€‚<P></A>
+
+<tr><td>
+<A NAME="1107065">
+<a href="attribut.htm#1171637">facsimileTelephoneNumber</A><P></A>
+<td>
+<A NAME="1107068">
+組織ã«é–¢ä¿‚ã™ã‚‹ãƒ•ã‚¡ãƒƒã‚¯ã‚¹ç•ªå·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1107073">
+<a href="attribut.htm#1244534">l</A><P></A>
+<td>
+<A NAME="1107075">
+組織ã®ã‚る場所。<P></A>
+
+<tr><td>
+<A NAME="1107079">
+<a href="attribut.htm#1003072">physicalDeliveryOfficeName</A><P></A>
+<td>
+<A NAME="1107082">
+物ç†çš„ã«ã‚‚ã®ã‚’é…é”ã™ã‚‹ãŸã‚ã®çµ„ç¹”ã®å ´æ‰€ã€‚<P></A>
+
+<tr><td>
+<A NAME="1107087">
+<a href="attribut.htm#1230025">postalAddress</A><P></A>
+<td>
+<A NAME="1107089">
+郵é€ã®ãŸã‚ã®çµ„ç¹”ã®ä½æ‰€ã€‚<P></A>
+
+<tr><td>
+<A NAME="1107094">
+<a href="attribut.htm#1230036">postalCode</A><P></A>
+<td>
+<A NAME="1107096">
+組織ã®éƒµä¾¿ç•ªå·(米国ã«ãŠã‘る郵便番å·ãªã©)。<P></A>
+
+<tr><td>
+<A NAME="1107101">
+<a href="attribut.htm#1230043">postOfficeBox</A><P></A>
+<td>
+<A NAME="1107103">
+組織ã®ç§æ›¸ç®±ã€‚<P></A>
+
+<tr><td>
+<A NAME="1107108">
+<a href="attribut.htm#1202605">preferredDeliveryMethod</A><P></A>
+<td>
+<A NAME="1107110">
+組織ãŒå¸Œæœ›ã™ã‚‹é€£çµ¡æ–¹æ³•ã¾ãŸã¯é…é”方法。<P></A>
+
+<tr><td>
+<A NAME="1107115">
+<a href="attribut.htm#1202682">searchGuide</A><P></A>
+<td>
+<A NAME="1107117">
+検索動作ã®ãŸã‚ã«ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª ツリーã®ãƒ™ãƒ¼ã‚¹ オブジェクトã¨ã—ã¦ã‚¨ãƒ³ãƒˆãƒªã‚’使用ã™ã‚‹éš›ã«ã€æ案ã•ã‚Œã‚‹æ¤œç´¢åŸºæº–ã®æƒ…報を指定ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1107122">
+<a href="attribut.htm#1172500">seeAlso</A><P></A>
+<td>
+<A NAME="1107124">
+組織ã«é–¢ä¿‚ã™ã‚‹æƒ…å ±ã¸ã®URL。<P></A>
+
+<tr><td>
+<A NAME="1107129">
+<a href="attribut.htm#1203417">st</A><P></A>
+<td>
+<A NAME="1107131">
+組織ã®ã‚ã‚‹å·žã¾ãŸã¯éƒ½é“府県。<P></A>
+
+<tr><td>
+<A NAME="1107136">
+<a href="attribut.htm#1202721">street</A><P></A>
+<td>
+<A NAME="1107138">
+組織ã®ã‚ã‚‹è¡—è·¯ã¨ç•ªåœ°ã€‚<P></A>
+
+<tr><td>
+<A NAME="1107143">
+<a href="attribut.htm#1230129">telephoneNumber</A><P></A>
+<td>
+<A NAME="1107145">
+組織ã«é–¢é€£ã™ã‚‹é›»è©±ç•ªå·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1107150">
+<a href="attribut.htm#1205004">teletexTerminalIdentifier</A><P></A>
+<td>
+<A NAME="1107152">
+組織ã®ãƒ†ãƒ¬ãƒ†ãƒƒã‚¯ã‚¹ ターミナルã®è­˜åˆ¥å­ã€‚<P></A>
+
+<tr><td>
+<A NAME="1107157">
+<a href="attribut.htm#1205120">telexNumber</A><P></A>
+<td>
+<A NAME="1107159">
+組織ã®ãƒ†ãƒ¬ãƒƒã‚¯ã‚¹ç•ªå·<P></A>
+
+<tr><td>
+<A NAME="1107171">
+<a href="attribut.htm#1196547">userPassword</A><P></A>
+<td>
+<A NAME="1107173">
+エントリãŒãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ãƒã‚¤ãƒ³ãƒ‰ã§ãるパスワード。<P></A>
+
+<tr><td>
+<A NAME="1107164">
+<a href="attribut.htm#1281763">x121Address</A><P></A>
+<td>
+<A NAME="1107166">
+組織ã®X.121アドレス<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1005108">&nbsp;
+</A>
+<A NAME="organizationalUnit">
+<H3> organizationalUnit</H3>
+</A>
+
+
+
+<A NAME="1005109">
+組織å˜ä½ã‚’示ã™ã‚¨ãƒ³ãƒˆãƒªã‚’定義ã—ã¾ã™ã€‚一般ã«ã€çµ„ç¹”å˜ä½ã¯ã€ã•ã‚‰ã«å¤§ããªçµ„ç¹”ã«ãŠã‘る比較的é™çš„ãªã‚°ãƒ«ãƒ¼ãƒ—ã§ã‚ã‚‹ã¨æƒ³å®šã—ã¾ã™ã€‚ã“ã®ã‚ªãƒ–ジェクト クラスã¯ã€X.500 Directory Servicesã‹ã‚‰ç¶™æ‰¿ã•ã‚Œã¾ã—ãŸã€‚<P></A>
+
+<A NAME="1096923">
+OID: <CODE>2.5.6.5</CODE><P></A>
+
+<A NAME="1068823">
+.
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1107182">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1107184">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1107189">
+<a href="attribut.htm#1241174">ou</A><P></A>
+<td>
+<A NAME="1107191">
+(å¿…é ˆ) 組織å˜ä½å<P></A>
+
+<tr><td>
+<A NAME="1107196">
+<a href="attribut.htm#1171367">businessCategory</A><P></A>
+<td>
+<A NAME="1107198">
+組織å˜ä½ãŒé–¢ä¸Žã™ã‚‹äº‹æ¥­ã€‚<P></A>
+
+<tr><td>
+<A NAME="1107203">
+<a href="attribut.htm#1171528">description</A><P></A>
+<td>
+<A NAME="1107205">
+組織å˜ä½ã®èª¬æ˜Žæ–‡ã€‚<P></A>
+
+<tr><td>
+<A NAME="1107326">
+<a href="attribut.htm#1201824">destinationIndicator</A><P></A>
+<td>
+<A NAME="1107328">
+公衆電報サービスをæä¾›ã™ã‚‹ã«ã¯çµ„ç¹”å˜ä½ã«é–¢é€£ã™ã‚‹å›½ã‚„都市ã®æƒ…å ±ãŒå¿…è¦ã§ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1107209">
+<a href="attribut.htm#1171637">facsimileTelephoneNumber</A><P></A>
+<td>
+<A NAME="1107212">
+組織å˜ä½ã«é–¢ä¿‚ã™ã‚‹ãƒ•ã‚¡ãƒƒã‚¯ã‚¹ç•ªå·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1107337">
+<a href="attribut.htm#1224256">internationalIsdnNumber</A><P></A>
+<td>
+<A NAME="1107339">
+組織å˜ä½ã®ISDN番å·ã‚’指定ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1107217">
+<a href="attribut.htm#1244534">l</A><P></A>
+<td>
+<A NAME="1107219">
+組織å˜ä½ã®å ´æ‰€ã€‚<P></A>
+
+<tr><td>
+<A NAME="1107223">
+<a href="attribut.htm#1003072">physicalDeliveryOfficeName</A><P></A>
+<td>
+<A NAME="1107226">
+物ç†çš„ã«ã‚‚ã®ã‚’é…é”ã™ã‚‹ãŸã‚ã®çµ„ç¹”å˜ä½ã®å ´æ‰€ã€‚<P></A>
+
+<tr><td>
+<A NAME="1107231">
+<a href="attribut.htm#1230025">postalAddress</A><P></A>
+<td>
+<A NAME="1107233">
+組織å˜ä½ã®ä½æ‰€ã€‚<P></A>
+
+<tr><td>
+<A NAME="1107238">
+<a href="attribut.htm#1230036">postalCode</A><P></A>
+<td>
+<A NAME="1107240">
+組織å˜ä½ã®éƒµä¾¿ç•ªå·(米国ã«ãŠã‘る郵便番å·ãªã©)。<P></A>
+
+<tr><td>
+<A NAME="1107245">
+<a href="attribut.htm#1230043">postOfficeBox</A><P></A>
+<td>
+<A NAME="1107247">
+組織å˜ä½ã®ç§æ›¸ç®±ã€‚<P></A>
+
+<tr><td>
+<A NAME="1107252">
+<a href="attribut.htm#1202605">preferredDeliveryMethod</A><P></A>
+<td>
+<A NAME="1107254">
+組織å˜ä½ãŒå¸Œæœ›ã™ã‚‹é€£çµ¡æ–¹æ³•ã¾ãŸã¯é…é”方法。<P></A>
+
+<tr><td>
+<A NAME="1107352">
+<a href="attribut.htm#1202644">registeredAddress</A><P></A>
+<td>
+<A NAME="1107366">
+緊急ã®æ›¸é¡žã®å—ã‘å–ã‚Šãªã©ã€å—å–人ãŒé…é”を確èªã™ã‚‹å¿…è¦ã®ã‚ã‚‹ã‚‚ã®ã‚’é…é”ã™ã‚‹ã®ã«ãµã•ã‚ã—ã„郵é€ç”¨ã®ä½æ‰€ã€‚<P></A>
+
+<tr><td>
+<A NAME="1107259">
+<a href="attribut.htm#1202682">searchGuide</A><P></A>
+<td>
+<A NAME="1107261">
+検索動作ã®ãŸã‚ã«ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª ツリーã®ãƒ™ãƒ¼ã‚¹ オブジェクトã¨ã—ã¦ã‚¨ãƒ³ãƒˆãƒªã‚’使用ã™ã‚‹éš›ã«ã€æ案ã•ã‚Œã‚‹æ¤œç´¢åŸºæº–ã®æƒ…報を指定ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1107266">
+<a href="attribut.htm#1172500">seeAlso</A><P></A>
+<td>
+<A NAME="1107268">
+組織å˜ä½ã«é–¢ä¿‚ã™ã‚‹æƒ…å ±ã¸ã®URL。<P></A>
+
+<tr><td>
+<A NAME="1107273">
+<a href="attribut.htm#1203417">st</A><P></A>
+<td>
+<A NAME="1107275">
+組織å˜ä½ã®å±žã™ã‚‹å·žã¾ãŸã¯éƒ½é“府県。<P></A>
+
+<tr><td>
+<A NAME="1107280">
+<a href="attribut.htm#1202721">street</A><P></A>
+<td>
+<A NAME="1107282">
+組織å˜ä½ã®ã‚ã‚‹è¡—è·¯ã¨ç•ªåœ°ã€‚<P></A>
+
+<tr><td>
+<A NAME="1107287">
+<a href="attribut.htm#1230129">telephoneNumber</A><P></A>
+<td>
+<A NAME="1107289">
+組織å˜ä½ã«é–¢é€£ã™ã‚‹é›»è©±ç•ªå·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1107322">
+<a href="attribut.htm#1205004">teletexTerminalIdentifier</A><P></A>
+<td>
+<A NAME="1107324">
+組織ã®ãƒ†ãƒ¬ãƒ†ãƒƒã‚¯ã‚¹ ターミナルã®è­˜åˆ¥å­ã€‚<P></A>
+
+<tr><td>
+<A NAME="1107315">
+<a href="attribut.htm#1205120">telexNumber</A><P></A>
+<td>
+<A NAME="1107317">
+組織ã®ãƒ†ãƒ¬ãƒƒã‚¯ã‚¹ç•ªå·<P></A>
+
+<tr><td>
+<A NAME="1107308">
+<a href="attribut.htm#1196547">userPassword</A><P></A>
+<td>
+<A NAME="1107310">
+エントリãŒãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ãƒã‚¤ãƒ³ãƒ‰ã§ãるパスワード。<P></A>
+
+<tr><td>
+<A NAME="1107301">
+<a href="attribut.htm#1281763">x121Address</A><P></A>
+<td>
+<A NAME="1107303">
+組織ã®X.121アドレス<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1004958">&nbsp;
+</A>
+<A NAME="People">
+<H2> ユーザ</H2>
+</A>
+
+<A NAME="1100949">
+以下ã®ã‚ªãƒ–ジェクト クラスã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ãŠã‘るユーザを示ã™ã‚¨ãƒ³ãƒˆãƒªã‚’記述ã—ã¾ã™ã€‚å„オブジェクト クラスã«ã¯ã€åå‰ã€é›»è©±ç•ªå·ã€ä½æ‰€ãªã©ã€ãƒ¦ãƒ¼ã‚¶ã‚’説明ã™ã‚‹å±žæ€§ãŒå«ã¾ã‚Œã¾ã™ã€‚ã“ã“ã§èª¬æ˜Žã•ã‚Œã¦ã„るオブジェクト クラスã¯ã€<a href="objclass.htm#1089249">inetOrgPerson</A>ã€<a href="objclass.htm#1100980">newPilotPerson</A>ã€<a href="objclass.htm#1100862">nsLicenseUser</A>, <a href="objclass.htm#1089442">ntUser</A>ã€<a href="objclass.htm#1002805">organizationalPerson</A>ã€<a href="objclass.htm#1088567">organizationalRole</A>ã€<a href="objclass.htm#1089681">person</A>ãŠã‚ˆã³<a href="objclass.htm#1106267">residentialPerson</A>ã§ã™ã€‚<P></A>
+
+
+<A NAME="1089249">&nbsp;
+</A>
+<A NAME="inetOrgPerson">
+<H3> inetOrgPerson</H3>
+</A>
+
+
+
+<A NAME="1089250">
+組織ã®ã‚¤ãƒ³ãƒˆãƒ©ãƒãƒƒãƒˆã®ãƒ¦ãƒ¼ã‚¶ã‚’示ã™ã‚¨ãƒ³ãƒˆãƒªã‚’定義ã—ã¾ã™ã€‚ã“ã®ã‚ªãƒ–ジェクト クラスã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚<P></A>
+
+<A NAME="1096822">
+OID: <CODE>2.16.840.1.113730.3.2.2</CODE><P></A>
+
+<A NAME="1089439">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1089253">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1089255">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1102952">
+<a href="attribut.htm#1201684">audio</A><P></A>
+<td>
+<A NAME="1102954">
+ãƒã‚¤ãƒŠãƒªå½¢å¼ã®ã‚µã‚¦ãƒ³ãƒ‰ ファイル。<P></A>
+
+<tr><td>
+<A NAME="1089270">
+<a href="attribut.htm#1171367">businessCategory</A><P></A>
+<td>
+<A NAME="1089272">
+ユーザãŒé–¢ä¸Žã™ã‚‹äº‹æ¥­ã€‚<P></A>
+
+<tr><td>
+<A NAME="1089275">
+<a href="attribut.htm#1003044">carLicense</A><P></A>
+<td>
+<A NAME="1089277">
+ユーザã®è‡ªå‹•è»Šã®ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ プレート番å·<P></A>
+
+<tr><td>
+<A NAME="1089280">
+<a href="attribut.htm#1095560">departmentNumber</A><P></A>
+<td>
+<A NAME="1089282">
+ユーザãŒå‹¤å‹™ã™ã‚‹éƒ¨é–€ã€‚<P></A>
+
+<tr><td>
+<A NAME="1089290">
+<a href="attribut.htm#1111357">employeeNumber</A><P></A>
+<td>
+<A NAME="1089292">
+ユーザã®ç¤¾å“¡ç•ªå·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1089295">
+<a href="attribut.htm#1009035">employeeType</A><P></A>
+<td>
+<A NAME="1089297">
+ユーザã®é›‡ç”¨ã‚¿ã‚¤ãƒ—(フルタイムãªã©)。<P></A>
+
+<tr><td>
+<A NAME="1089305">
+<a href="attribut.htm#1229534">givenName</A><P></A>
+<td>
+<A NAME="1089307">
+ユーザã®åå‰ã€ã¤ã¾ã‚Šãƒ•ã‚¡ãƒ¼ã‚¹ãƒˆãƒãƒ¼ãƒ ã€‚<P></A>
+
+<tr><td>
+<A NAME="1089310">
+<a href="attribut.htm#1201936">homePhone</A><P></A>
+<td>
+<A NAME="1089312">
+ユーザã®é›»è©±ç•ªå·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1089315">
+<a href="attribut.htm#1201947">homePostalAddress</A><P></A>
+<td>
+<A NAME="1089317">
+ユーザã®è‡ªå®…ä½æ‰€ã€‚<P></A>
+
+<tr><td>
+<A NAME="1089320">
+<a href="attribut.htm#1229543">initials</A><P></A>
+<td>
+<A NAME="1089322">
+ユーザã®ã‚¤ãƒ‹ã‚·ãƒ£ãƒ«ã€‚<P></A>
+
+<tr><td>
+<A NAME="1089325">
+<a href="attribut.htm#1201995">jpegPhoto</A><P></A>
+<td>
+<A NAME="1089327">
+jpegå½¢å¼ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã€‚<P></A>
+
+<tr><td>
+<A NAME="1107552">
+<a href="attribut.htm#1202020">labeledUri</A><P></A>
+<td>
+<A NAME="1089337">
+ユーザã«é–¢ä¿‚ã™ã‚‹universal resource locator (URL)。<P></A>
+
+<tr><td>
+<A NAME="1089340">
+<a href="attribut.htm#1189404">mail</A><P></A>
+<td>
+<A NAME="1089342">
+ユーザã®é›»å­ãƒ¡ãƒ¼ãƒ« アドレス。<P></A>
+
+<tr><td>
+<A NAME="1089345">
+<a href="attribut.htm#1007859">manager</A><P></A>
+<td>
+<A NAME="1089347">
+ユーザã®ä¸Šå¸ã‚’示ã™è­˜åˆ¥å。<P></A>
+
+<tr><td>
+<A NAME="1089350">
+<a href="attribut.htm#1202056">mobile</A><P></A>
+<td>
+<A NAME="1089352">
+ユーザã®æºå¸¯é›»è©±ç•ªå·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1089361">
+<a href="attribut.htm#1003070">pager</A><P></A>
+<td>
+<A NAME="1089363">
+ユーザã®ãƒã‚±ãƒƒãƒˆãƒ™ãƒ«ç•ªå·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1107511">
+<a href="attribut.htm#1202247">photo</A><P></A>
+<td>
+<A NAME="1107514">
+ãƒã‚¤ãƒŠãƒªå½¢å¼ã®å†™çœŸã€‚<P></A>
+
+<tr><td>
+<A NAME="1107521">
+<a href="attribut.htm#1103495">preferredLanguage</A><P></A>
+<td>
+<A NAME="1107523">
+ユーザãŒæ›¸ã„ãŸã‚Šè©±ã—ãŸã‚Šã™ã‚‹è¨€èªžã‚’定義ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1089391">
+<a href="attribut.htm#1204477">roomNumber</A><P></A>
+<td>
+<A NAME="1089393">
+ユーザã®éƒ¨å±‹ç•ªå·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1089396">
+<a href="attribut.htm#1202691">secretary</A><P></A>
+<td>
+<A NAME="1089398">
+ユーザã®ç§˜æ›¸ã¾ãŸã¯ã‚¢ã‚·ã‚¹ã‚¿ãƒ³ãƒˆã€‚<P></A>
+
+<tr><td>
+<A NAME="1089406">
+<a href="attribut.htm#1202847">uid</A><P></A>
+<td>
+<A NAME="1089408">
+エントリã®ãƒ¦ãƒ¼ã‚¶ID(通常ã¯ãƒ­ã‚°ã‚ªãƒ³ID)を示ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1089431">
+<a href="attribut.htm#1208938">userCertificate</A><P></A>
+<td>
+<A NAME="1089433">
+クリアテキスト形å¼ã®ãƒ¦ãƒ¼ã‚¶ã®è¨¼æ˜Žæ›¸(未使用)<P></A>
+
+<tr><td>
+<A NAME="1107557">
+<a href="attribut.htm#1208946">userCertificate;binary</A><P></A>
+<td>
+<A NAME="1107559">
+ãƒã‚¤ãƒŠãƒªå½¢å¼ã®ãƒ¦ãƒ¼ã‚¶ã®è¨¼æ˜Žæ›¸ã€‚<P></A>
+
+<tr><td>
+<A NAME="1089436">
+<a href="attribut.htm#1103595">userSMIMECertificate;binary</A><P></A>
+<td>
+<A NAME="1107562">
+ãƒã‚¤ãƒŠãƒªå½¢å¼ã®ãƒ¦ãƒ¼ã‚¶ã®è¨¼æ˜Žæ›¸ã€‚Netscape Communicator(コミュニケータ)ãŒS/MIMEã§ä½¿ç”¨ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1095842">
+<a href="attribut.htm#1292796">x500UniqueIdentifier</A><P></A>
+<td>
+<A NAME="1095844">
+未定義。<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1100980">&nbsp;
+</A>
+<A NAME="newPilotPerson">
+<H3> newPilotPerson</H3>
+</A>
+
+
+
+<A NAME="1100981">
+人物ã®ã‚µãƒ–クラスã¨ã—ã¦ä½¿ã‚ã‚Œã€ãŸãã•ã‚“ã®è¿½åŠ å±žæ€§ã‚’使用ã—ã¦ãã®äººç‰©ã®ã‚ªãƒ–ジェクト クラスã®ã‚¨ãƒ³ãƒˆãƒªã«å‰²ã‚Šå½“ã¦ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1100982">
+OID: <CODE>0.9.2342.19200300.100.4.4</CODE><P></A>
+
+<A NAME="1101121">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1100985">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1100987">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1100992">
+<a href="attribut.htm#1171367">businessCategory</A><P></A>
+<td>
+<A NAME="1100994">
+ã“ã®ãƒ¦ãƒ¼ã‚¶ãŒå¾“事ã™ã‚‹äº‹æ¥­ã‚¿ã‚¤ãƒ—。<P></A>
+
+<tr><td>
+<A NAME="1100999">
+<a href="attribut.htm#1201909">drink</A><P></A>
+<td>
+<A NAME="1101001">
+ユーザã®å¥½ã¿ã®é£²ã¿ç‰©<P></A>
+
+<tr><td>
+<A NAME="1101006">
+<a href="attribut.htm#1201936">homePhone</A><P></A>
+<td>
+<A NAME="1101008">
+ユーザã®é›»è©±ç•ªå·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1101013">
+<a href="attribut.htm#1201947">homePostalAddress</A><P></A>
+<td>
+<A NAME="1101015">
+ユーザã®è‡ªå®…ä½æ‰€ã€‚<P></A>
+
+<tr><td>
+<A NAME="1101020">
+<a href="attribut.htm#1201988">janetMailbox</A><P></A>
+<td>
+<A NAME="1101022">
+ユーザã®é›»å­ãƒ¡ãƒ¼ãƒ« アドレス。<P></A>
+
+<tr><td>
+<A NAME="1101027">
+<a href="attribut.htm#1189404">mail</A><P></A>
+<td>
+<A NAME="1101029">
+ユーザã®é›»å­ãƒ¡ãƒ¼ãƒ« アドレス。<P></A>
+
+<tr><td>
+<A NAME="1101034">
+<a href="attribut.htm#1202044">mailPreferenceOption</A><P></A>
+<td>
+<A NAME="1101036">
+(é›»å­ã¾ãŸã¯ç‰©ç†çš„ãª)メーリング リストã«ãƒ¦ãƒ¼ã‚¶åã‚’å«ã‚ã‚‹ã“ã¨ã«é–¢ã™ã‚‹ç’°å¢ƒè¨­å®šã‚’示ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1101041">
+<a href="attribut.htm#1202056">mobile</A><P></A>
+<td>
+<A NAME="1101043">
+ユーザã®æºå¸¯é›»è©±ç•ªå·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1101048">
+<a href="attribut.htm#1202208">organizationalStatus</A><P></A>
+<td>
+<A NAME="1101175">
+ユーザã®é›‡ç”¨ã‚¿ã‚¤ãƒ—(フルタイムãªã©)。<P></A>
+
+<tr><td>
+<A NAME="1101055">
+<a href="attribut.htm#1202220">otherMailbox</A><P></A>
+<td>
+<A NAME="1101057">
+X.400ã¨rfc822以外ã®é›»å­ãƒ¡ãƒ¼ãƒ«ãƒœãƒƒã‚¯ã‚¹ タイプã®å€¤ã€‚<P></A>
+
+<tr><td>
+<A NAME="1101062">
+<a href="attribut.htm#1003070">pager</A><P></A>
+<td>
+<A NAME="1101064">
+ユーザã®ãƒã‚±ãƒƒãƒˆãƒ™ãƒ«ç•ªå·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1101069">
+<a href="attribut.htm#1202229">personalSignature</A><P></A>
+<td>
+<A NAME="1101071">
+ユーザã®ç½²åファイル。<P></A>
+
+<tr><td>
+<A NAME="1101076">
+<a href="attribut.htm#1202238">personalTitle</A><P></A>
+<td>
+<A NAME="1101078">
+ユーザã®å€‹äººã®å½¹è·<P></A>
+
+<tr><td>
+<A NAME="1101083">
+<a href="attribut.htm#1202605">preferredDeliveryMethod</A><P></A>
+<td>
+<A NAME="1101085">
+ユーザãŒå¸Œæœ›ã™ã‚‹é€£çµ¡æ–¹æ³•ã¾ãŸã¯é…é”方法。<P></A>
+
+<tr><td>
+<A NAME="1101090">
+<a href="attribut.htm#1204477">roomNumber</A><P></A>
+<td>
+<A NAME="1101092">
+ユーザã®éƒ¨å±‹ç•ªå·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1101097">
+<a href="attribut.htm#1202691">secretary</A><P></A>
+<td>
+<A NAME="1101099">
+ユーザã®ç§˜æ›¸ã¾ãŸã¯ã‚¢ã‚·ã‚¹ã‚¿ãƒ³ãƒˆã®è­˜åˆ¥å。<P></A>
+
+<tr><td>
+<A NAME="1101104">
+<a href="attribut.htm#1202782">textEncodedORAddress</A><P></A>
+<td>
+<A NAME="1101106">
+æš—å·åŒ–ã•ã‚ŒãŸãƒ†ã‚­ã‚¹ãƒˆã«ã‚ˆã‚‹ãƒ¦ãƒ¼ã‚¶ã®Originator/Recipient (X.400)アドレス。<P></A>
+
+<tr><td>
+<A NAME="1101111">
+<a href="attribut.htm#1296804">uid</A><P></A>
+<td>
+<A NAME="1101113">
+ユーザã®ãƒ­ã‚°ã‚ªãƒ³ID。<P></A>
+
+<tr><td>
+<A NAME="1101118">
+<a href="attribut.htm#1202840">userClass</A><P></A>
+<td>
+<A NAME="1101120">
+ユーザã®ã‚«ãƒ†ã‚´ãƒªã€‚<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1100862">&nbsp;
+</A>
+<A NAME="nsLicenseUser">
+<H3> nsLicenseUser</H3>
+</A>
+
+
+
+<A NAME="1100863">
+クライアントã”ã¨ã«å¥‘ç´„ã•ã‚Œã¦ã„ã‚‹Netscape サーãƒã®ä½¿ç”¨è¨±è«¾æ›¸ã®è¿½è·¡ã«ä½¿ç”¨ã™ã‚‹ã‚ªãƒ–ジェクト クラス。nsLicenseUserã¯ã€inetOrgPersonオブジェクト クラスã¨ä½µç”¨ã•ã‚Œã¾ã™ã€‚ã“ã®ã‚ªãƒ–ジェクト クラスã®å†…容ã¯ã€Netscape管ç†ã‚µãƒ¼ãƒã®[ユーザãŠã‚ˆã³ã‚°ãƒ«ãƒ¼ãƒ—]領域ã§ç®¡ç†ã§ãã¾ã™ã€‚ã“ã®ã‚ªãƒ–ジェクト クラスã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚<P></A>
+
+<A NAME="1100864">
+OID: <CODE>2.16.840.1.113730.3.2.7</CODE><P></A>
+
+<A NAME="1100891">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1100867">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1100869">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1100873">
+<a href="attribut.htm#1091847">nsLicensedFor</A><P></A>
+<td>
+<A NAME="1100875">
+ユーザãŒä½¿ç”¨è¨±è«¾å¥‘ç´„ã‚’æŒã¤Netscapeサーãƒã€‚<P></A>
+
+<tr><td>
+<A NAME="1107587">
+<a href="attribut.htm#1091864">nsLicenseEndTime</A><P></A>
+<td>
+<A NAME="1107589">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1100880">
+<a href="attribut.htm#1091859">nsLicenseStartTime</A><P></A>
+<td>
+<A NAME="1100882">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1089442">&nbsp;
+</A>
+<A NAME="ntUser">
+<H3> ntUser</H3>
+</A>
+
+
+
+<A NAME="1089443">
+Directory Serverã¨Windows NTãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯é–“ã§åŒæœŸåŒ–ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªã‚’指定ã—ã¾ã™ã€‚ntUserã«ã‚ˆã£ã¦å®šç¾©ã•ã‚Œã‚‹å±žæ€§ã¯ã€NTåŒæœŸåŒ–を支æ´ã—ã¾ã™ã€‚ã“ã®ã‚ªãƒ–ジェクト クラスã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚<P></A>
+
+<A NAME="1098670">
+OID: <CODE>2.16.840.1.113730.3.2.8</CODE><P></A>
+<a name="1089444">
+<B>
+
+<P>
+ノート
+</P>
+</B>
+
+</a>
+
+
+<A NAME="1089445">
+ntUserCreateNewAccountã€ntUserDomainIdã€ntUserDeleteAccountを除ãã€ntUser属性ã¯ã™ã¹ã¦èª­è¾¼ã¿å°‚用ã§ã™ã€‚次ã®NTåŒæœŸåŒ–ãŒè¡Œã‚れる際ã«ã€èª­è¾¼ã¿å°‚用ntUser属性ã¸ã®å¤‰æ›´ãŒå‰Šé™¤ã•ã‚Œã€å…ƒã®å€¤ã¨ç½®ãæ›ãˆã‚‰ã‚Œã¾ã™ã€‚<P></A>
+
+<A NAME="1089446">
+Directory Serverã®å±žæ€§ã®ã„ãã¤ã‹ã¯ã€[NT user account]フィールドã«ç›´æŽ¥å¯¾å¿œã—ã¦ã„ã¾ã™ã€‚NTã¨åŒæœŸåŒ–ã™ã‚‹æ–°è¦ãƒ¦ãƒ¼ã‚¶ã®ã‚¨ãƒ³ãƒˆãƒªã‚’Directory Serverã«ä½œæˆã™ã‚‹å ´åˆã€Directory Serverã®å±žæ€§ãŒæ¬¡ã®ã‚ˆã†ã«NTユーザ アカウント フィールドã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¾ã™ã€‚
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><td>
+<A NAME="1089449">
+Directory Serverã®å±žæ€§<P></A>
+<td>
+<A NAME="1089451">
+NTユーザ アカウント フィールド<P></A>
+
+<tr><td>
+<A NAME="1089453">
+cnã¾ãŸã¯commonName<P></A>
+<td>
+<A NAME="1089455">
+full_name<P></A>
+
+<tr><td>
+<A NAME="1089457">
+description<P></A>
+<td>
+<A NAME="1089459">
+comment<P></A>
+
+<tr><td>
+<A NAME="1089461">
+userid<P></A>
+<td>
+<A NAME="1089463">
+name<P></A>
+
+<tr><td>
+<A NAME="1089465">
+userPassword<P></A>
+<td>
+<A NAME="1089467">
+password<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+<A NAME="1098497">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1089470">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1089472">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1107594">
+<a href="attribut.htm#1171528">description</A><P></A>
+<td>
+<A NAME="1107596">
+ユーザã®èª¬æ˜Žæ–‡ã€‚<P></A>
+
+<tr><td>
+<A NAME="1107601">
+<a href="attribut.htm#1244534">l</A><P></A>
+<td>
+<A NAME="1107603">
+ユーザã®åœ°åŸŸæ€§ã€‚<P></A>
+
+<tr><td>
+<A NAME="1107608">
+<a href="attribut.htm#1241174">ou</A><P></A>
+<td>
+<A NAME="1107610">
+ユーザãŒå±žã™ã‚‹çµ„ç¹”å˜ä½ã€‚<P></A>
+
+<tr><td>
+<A NAME="1107615">
+<a href="attribut.htm#1172500">seeAlso</A><P></A>
+<td>
+<A NAME="1107617">
+ユーザã«é–¢ä¿‚ã™ã‚‹æƒ…å ±ã¸ã®URL。<P></A>
+
+<tr><td>
+<A NAME="1089476">
+<a href="attribut.htm#1015403">ntUserDomainId</A><P></A>
+<td>
+<A NAME="1089479">
+(å¿…é ˆ) 対応ã™ã‚‹NT ユーザã¨ãƒ‰ãƒ¡ã‚¤ãƒ³å。<P></A>
+
+<tr><td>
+<A NAME="1089482">
+<a href="attribut.htm#1013839">ntUserAcctExpires</A><P></A>
+<td>
+<A NAME="1089484">
+ユーザã®NTアカウントã®å¤±åŠ¹æ™‚期を示ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1089487">
+<a href="attribut.htm#1014052">ntUserAuthFlags</A><P></A>
+<td>
+<A NAME="1089489">
+NTãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã«ãŠã‘るユーザã®ç‰¹æ¨©ã€‚<P></A>
+
+<tr><td>
+<A NAME="1089492">
+<a href="attribut.htm#1038772">ntUserBadPwCount</A><P></A>
+<td>
+<A NAME="1089494">
+ユーザã®NTログインIDを使用ã—ã¦NTã§å¤±æ•—ã—ãŸãƒ­ã‚°ã‚¤ãƒ³è©¦è¡Œå›žæ•°ã€‚<P></A>
+
+<tr><td>
+<A NAME="1089497">
+<a href="attribut.htm#1014973">ntUserCodePage</A><P></A>
+<td>
+<A NAME="1089499">
+ユーザã®ã‚³ãƒ¼ãƒ‰ ページ。<P></A>
+
+<tr><td>
+<A NAME="1089502">
+<a href="attribut.htm#1246829">ntUserComment</A><P></A>
+<td>
+<A NAME="1089504">
+ユーザã®NTアカウントã®èª¬æ˜Žã€‚<P></A>
+
+<tr><td>
+<A NAME="1089507">
+<a href="attribut.htm#1015155">ntUserCountryCode</A><P></A>
+<td>
+<A NAME="1089509">
+ユーザã®å›½ã‚³ãƒ¼ãƒ‰ã€‚<P></A>
+
+<tr><td>
+<A NAME="1089512">
+<a href="attribut.htm#1015239">ntUserCreateNewAccount</A><P></A>
+<td>
+<A NAME="1089514">
+ã“ã®ã‚¨ãƒ³ãƒˆãƒªã‚’Directory Serverã«ä½œæˆã™ã‚‹éš›ã«ã€NTアカウントを作æˆã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã‹ã©ã†ã‹ã‚’指定ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1089517">
+<a href="attribut.htm#1015309">ntUserDeleteAccount</A><P></A>
+<td>
+<A NAME="1089519">
+ã“ã®ã‚¨ãƒ³ãƒˆãƒªã‚’Directory Serverã«å‰Šé™¤ã™ã‚‹éš›ã«ã€NTアカウントを削除ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã‹ã©ã†ã‹ã‚’指定ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1089522">
+<a href="attribut.htm#1015534">ntUserFlags</A><P></A>
+<td>
+<A NAME="1089524">
+ã•ã¾ã–ã¾ãªNTアカウント フラグを指定ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1089527">
+<a href="attribut.htm#1015584">ntUserHomeDir</A><P></A>
+<td>
+<A NAME="1089529">
+ユーザã®ãƒ›ãƒ¼ãƒ  ディレクトリã¸ã®ãƒ‘ス。<P></A>
+
+<tr><td>
+<A NAME="1089532">
+<a href="attribut.htm#1015624">ntUserHomeDirDrive</A><P></A>
+<td>
+<A NAME="1089534">
+ユーザã®ãƒ›ãƒ¼ãƒ  ディレクトリã«å‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸãƒ‰ãƒ©ã‚¤ãƒ–ã®æ–‡å­—。<P></A>
+
+<tr><td>
+<A NAME="1089537">
+<a href="attribut.htm#1015682">ntUserLastLogoff</A><P></A>
+<td>
+<A NAME="1089539">
+ユーザãŒNTã‹ã‚‰æœ€å¾Œã«ãƒ­ã‚°ã‚ªãƒ•ã—ãŸæ™‚刻。<P></A>
+
+<tr><td>
+<A NAME="1089542">
+<a href="attribut.htm#1015722">ntUserLastLogon</A><P></A>
+<td>
+<A NAME="1089544">
+ユーザãŒNTã«æœ€å¾Œã«ãƒ­ã‚°ã‚ªãƒ³ã—ãŸæ™‚刻。<P></A>
+
+<tr><td>
+<A NAME="1089547">
+<a href="attribut.htm#1015746">ntUserLogonHours</A><P></A>
+<td>
+<A NAME="1089549">
+ユーザãŒNTã«ãƒ­ã‚°ã‚ªãƒ³ã§ãる時間帯。<P></A>
+
+<tr><td>
+<A NAME="1101276">
+<a href="attribut.htm#1015839">ntUserLogonServer</A><P></A>
+<td>
+<A NAME="1089554">
+ユーザã®NTログオンè¦æ±‚ãŒé€ä¿¡ã•ã‚Œã‚‹ã‚µãƒ¼ãƒã€‚<P></A>
+
+<tr><td>
+<A NAME="1089557">
+<a href="attribut.htm#1015984">ntUserMaxStorage</A><P></A>
+<td>
+<A NAME="1089559">
+NTã«ãŠã„ã¦ãƒ¦ãƒ¼ã‚¶ãŒåˆ©ç”¨ã§ãる最大ディスク容é‡ã€‚<P></A>
+
+<tr><td>
+<A NAME="1089562">
+<a href="attribut.htm#1016030">ntUserNumLogons</A><P></A>
+<td>
+<A NAME="1089564">
+ユーザã®NTアカウントã¸ã®ãƒ­ã‚°ã‚ªãƒ³æˆåŠŸå›žæ•°ã€‚<P></A>
+
+<tr><td>
+<A NAME="1101297">
+<a href="attribut.htm#1021575">ntUserParms</A><P></A>
+<td>
+<A NAME="1101299">
+アプリケーションãŒä½¿ç”¨ã™ã‚‹ãŸã‚ã«äºˆç´„ã•ã‚ŒãŸUnicode文字列。<P></A>
+
+<tr><td>
+<A NAME="1089567">
+<a href="attribut.htm#1016157">ntUserPasswordExpired</A><P></A>
+<td>
+<A NAME="1089569">
+ユーザã®NTパスワードãŒå¤±åŠ¹ã—ã¦ã„ã‚‹ã‹ã‚’示ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1089572">
+<a href="attribut.htm#1016246">ntUserPrimaryGroupId</A><P></A>
+<td>
+<A NAME="1089574">
+ユーザã®ä¸»è¦ã‚°ãƒ­ãƒ¼ãƒãƒ« グループ。<P></A>
+
+<tr><td>
+<A NAME="1101331">
+<a href="attribut.htm#1017849">ntUserPriv</A><P></A>
+<td>
+<A NAME="1101333">
+Windows NTãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ä¸Šã§ã®ãƒ¦ãƒ¼ã‚¶ã®ç‰¹æ¨©ãƒ¬ãƒ™ãƒ«ã€‚<P></A>
+
+<tr><td>
+<A NAME="1089577">
+<a href="attribut.htm#1016298">ntUserProfile</A><P></A>
+<td>
+<A NAME="1089579">
+ユーザã®NTプロフィールã¸ã®ãƒ‘ス。<P></A>
+
+<tr><td>
+<A NAME="1089582">
+<a href="attribut.htm#1016395">ntUserScriptPath</A><P></A>
+<td>
+<A NAME="1089584">
+ユーザã®NTログイン スクリプトã¸ã®ãƒ‘ス。<P></A>
+
+<tr><td>
+<A NAME="1089587">
+<a href="attribut.htm#1016531">ntUserUniqueId</A><P></A>
+<td>
+<A NAME="1089589">
+ユーザã®NT RIDを示ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1089592">
+<a href="attribut.htm#1016632">ntUserUnitsPerWeek</A><P></A>
+<td>
+<A NAME="1089594">
+ユーザã®NTUserLogonHoursã®è¨ˆç®—ã«ä½¿ç”¨ã•ã‚Œã‚‹å€¤ã€‚<P></A>
+
+<tr><td>
+<A NAME="1089597">
+<a href="attribut.htm#1016696">ntUserUsrComment</A><P></A>
+<td>
+<A NAME="1089599">
+ユーザã®NTエントリã«é–¢ã™ã‚‹æ³¨é‡ˆã€‚<P></A>
+
+<tr><td>
+<A NAME="1089607">
+<a href="attribut.htm#1016728">ntUserWorkstations</A><P></A>
+<td>
+<A NAME="1089609">
+ユーザãŒNTドメインã«ãƒ­ã‚°ã‚¤ãƒ³ã™ã‚‹ã®ã«ä½¿ç”¨ã§ãã‚‹NTワークステーション。<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1002805">&nbsp;
+</A>
+<A NAME="organizationalPerson">
+<H3> organizationalPerson</H3>
+</A>
+
+
+
+<A NAME="1002806">
+組織ã®å¾“業員ã§ã‚ã‚‹ã€ã¾ãŸã¯çµ„ç¹”ã®é–¢ä¿‚者ã§ã‚るユーザã®ã‚¨ãƒ³ãƒˆãƒªã‚’定義ã—ã¾ã™ã€‚organizationalPersonã¯personオブジェクト クラスã®æ‹¡å¼µã§ã™ã€‚ã“ã®ã‚ªãƒ–ジェクト クラスã¯ã€X.500 Directory Servicesã‹ã‚‰ç¶™æ‰¿ã•ã‚Œã¾ã—ãŸã€‚<P></A>
+
+<A NAME="1096977">
+OID: <CODE>2.5.6.7</CODE><P></A>
+
+<A NAME="1068825">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1070698">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1070700">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1070715">
+<a href="attribut.htm#1292809">destinationIndicator</A><P></A>
+<td>
+<A NAME="1070717">
+公衆電報サービスをæä¾›ã™ã‚‹ã«ã¯ãƒ¦ãƒ¼ã‚¶ã«é–¢é€£ã™ã‚‹å›½ã‚„都市ã®æƒ…å ±ãŒå¿…è¦ã§ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1070720">
+<a href="attribut.htm#1171637">facsimileTelephoneNumber</A><P></A>
+<td>
+<A NAME="1070722">
+ユーザã®ãƒ•ã‚¡ãƒƒã‚¯ã‚¹ç•ªå·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1107649">
+<a href="attribut.htm#1224256">internationalIsdnNumber</A><P></A>
+<td>
+<A NAME="1107651">
+ユーザã®ISDN番å·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1070725">
+<a href="attribut.htm#1244534">l</A><P></A>
+<td>
+<A NAME="1070727">
+ユーザãŒå±…ä½ã™ã‚‹å ´æ‰€ã€‚<P></A>
+
+<tr><td>
+<A NAME="1070731">
+<a href="attribut.htm#1241174">ou</A><P></A>
+<td>
+<A NAME="1070733">
+ユーザãŒå±žã™ã‚‹çµ„ç¹”å˜ä½ã€‚<P></A>
+
+<tr><td>
+<A NAME="1070736">
+<a href="attribut.htm#1003072">physicalDeliveryOfficeName</A><P></A>
+<td>
+<A NAME="1070738">
+物ç†çš„ã«ã‚‚ã®ã‚’é…é”ã™ã‚‹ãŸã‚ã®ãƒ¦ãƒ¼ã‚¶ã®å ´æ‰€ã€‚<P></A>
+
+<tr><td>
+<A NAME="1070741">
+<a href="attribut.htm#1230025">postalAddress</A><P></A>
+<td>
+<A NAME="1070743">
+ユーザã®ä½æ‰€ã€‚<P></A>
+
+<tr><td>
+<A NAME="1070746">
+<a href="attribut.htm#1230036">postalCode</A><P></A>
+<td>
+<A NAME="1070748">
+ユーザã®éƒµä¾¿ç•ªå·(米国ã«ãŠã‘る郵便番å·ãªã©)。<P></A>
+
+<tr><td>
+<A NAME="1070751">
+<a href="attribut.htm#1230043">postOfficeBox</A><P></A>
+<td>
+<A NAME="1070753">
+ユーザã®ç§æ›¸ç®±ã€‚<P></A>
+
+<tr><td>
+<A NAME="1070756">
+<a href="attribut.htm#1202605">preferredDeliveryMethod</A><P></A>
+<td>
+<A NAME="1070758">
+ユーザãŒå¸Œæœ›ã™ã‚‹é€£çµ¡æ–¹æ³•ã¾ãŸã¯é…é”方法。<P></A>
+
+<tr><td>
+<A NAME="1107658">
+<a href="attribut.htm#1202644">registeredAddress</A><P></A>
+<td>
+<A NAME="1107671">
+緊急ã®æ›¸é¡žã®å—ã‘å–ã‚Šãªã©ã€å—å–人ãŒé…é”を確èªã™ã‚‹å¿…è¦ã®ã‚ã‚‹ã‚‚ã®ã‚’é…é”ã™ã‚‹ã®ã«ãµã•ã‚ã—ã„郵é€ç”¨ã®ä½æ‰€ã€‚<P></A>
+
+<tr><td>
+<A NAME="1070766">
+<a href="attribut.htm#1203417">st</A><P></A>
+<td>
+<A NAME="1070768">
+ユーザãŒå±…ä½ã™ã‚‹å·žã¾ãŸã¯éƒ½é“府県。<P></A>
+
+<tr><td>
+<A NAME="1070771">
+<a href="attribut.htm#1202721">street</A><P></A>
+<td>
+<A NAME="1070773">
+ユーザãŒå±…ä½ã™ã‚‹è¡—è·¯ã¨ç•ªåœ°ã€‚<P></A>
+
+<tr><td>
+<A NAME="1107723">
+<a href="attribut.htm#1205004">teletexTerminalIdentifier</A><P></A>
+<td>
+<A NAME="1107725">
+組織ã®ãƒ†ãƒ¬ãƒ†ãƒƒã‚¯ã‚¹ ターミナルã®è­˜åˆ¥å­ã€‚<P></A>
+
+<tr><td>
+<A NAME="1107716">
+<a href="attribut.htm#1205120">telexNumber</A><P></A>
+<td>
+<A NAME="1107718">
+組織ã®ãƒ†ãƒ¬ãƒƒã‚¯ã‚¹ç•ªå·<P></A>
+
+<tr><td>
+<A NAME="1107709">
+<a href="attribut.htm#1230152">title</A><P></A>
+<td>
+<A NAME="1107711">
+ユーザã®ä»•äº‹ä¸Šã®å½¹è·<P></A>
+
+<tr><td>
+<A NAME="1107702">
+<a href="attribut.htm#1281763">x121Address</A><P></A>
+<td>
+<A NAME="1107704">
+組織ã®X.121アドレス<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1088567">&nbsp;
+</A>
+<A NAME="organizationalRole">
+<H3> organizationalRole</H3>
+</A>
+
+
+
+<A NAME="1088568">
+組織内ã®äººã€…ãŒæŒã¤å½¹å‰²ã‚’表示ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªã‚’定義ã—ã¾ã™ã€‚ã“ã®ã‚ªãƒ–ジェクト クラスã¯ã€X.500 Directory Servicesã‹ã‚‰ç¶™æ‰¿ã•ã‚Œã¾ã—ãŸã€‚<P></A>
+
+<A NAME="1096979">
+OID: <CODE>2.5.6.8</CODE><P></A>
+
+<A NAME="1088606">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1088571">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1088573">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1088576">
+<a href="attribut.htm#1171494">cn</A><P></A>
+<td>
+<A NAME="1088579">
+(å¿…é ˆ) 役割ã®ä¸€èˆ¬å<P></A>
+
+<tr><td>
+<A NAME="1088588">
+<a href="attribut.htm#1171528">description</A><P></A>
+<td>
+<A NAME="1088590">
+役割ã®èª¬æ˜Žæ–‡ã€‚<P></A>
+
+<tr><td>
+<A NAME="1088716">
+<a href="attribut.htm#1292809">destinationIndicator</A><P></A>
+<td>
+<A NAME="1088718">
+ã“ã®å±žæ€§ã¯ã€ã“ã®å½¹å‰²ã®ãƒ¦ãƒ¼ã‚¶ã¸ã®é›»å ±ã‚µãƒ¼ãƒ“スã«ä½¿ç”¨ã•ã‚Œã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1088780">
+<a href="attribut.htm#1171637">facsimileTelephoneNumber</A><P></A>
+<td>
+<A NAME="1088782">
+ã“ã®å½¹å‰²ã®ãƒ¦ãƒ¼ã‚¶ã®ãƒ•ã‚¡ãƒƒã‚¯ã‚¹ç•ªå·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1088726">
+<a href="attribut.htm#1224256">internationalIsdnNumber</A><P></A>
+<td>
+<A NAME="1088728">
+ã“ã®å½¹å‰²ã®ãƒ¦ãƒ¼ã‚¶ã®ISDN番å·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1088806">
+<a href="attribut.htm#1244534">l</A><P></A>
+<td>
+<A NAME="1088808">
+ã“ã®å½¹å‰²ã®ãƒ¦ãƒ¼ã‚¶ãŒå±…ä½ã™ã‚‹å ´æ‰€ã€‚<P></A>
+
+<tr><td>
+<A NAME="1088812">
+<a href="attribut.htm#1241174">ou</A><P></A>
+<td>
+<A NAME="1088814">
+ã“ã®å½¹å‰²ã®ãƒ¦ãƒ¼ã‚¶ãŒå±žã™ã‚‹çµ„ç¹”å˜ä½ã€‚<P></A>
+
+<tr><td>
+<A NAME="1088817">
+<a href="attribut.htm#1003072">physicalDeliveryOfficeName</A><P></A>
+<td>
+<A NAME="1088819">
+物ç†çš„ã«ã‚‚ã®ã‚’é…é”ã™ã‚‹ãŸã‚ã®ã“ã®å½¹å‰²ã®ãƒ¦ãƒ¼ã‚¶ã®å ´æ‰€ã€‚<P></A>
+
+<tr><td>
+<A NAME="1101602">
+<a href="attribut.htm#1230025">postalAddress</A><P></A>
+<td>
+<A NAME="1088824">
+ã“ã®å½¹å‰²ã®ãƒ¦ãƒ¼ã‚¶ã®å‹¤å‹™å…ˆä½æ‰€ã€‚<P></A>
+
+<tr><td>
+<A NAME="1101607">
+<a href="attribut.htm#1230036">postalCode</A><P></A>
+<td>
+<A NAME="1088829">
+ã“ã®å½¹å‰²ã®ãƒ¦ãƒ¼ã‚¶ã®å‹¤å‹™å…ˆéƒµä¾¿ç•ªå·(米国ã«ãŠã‘る郵便番å·ãªã©)。<P></A>
+
+<tr><td>
+<A NAME="1101612">
+<a href="attribut.htm#1230043">postOfficeBox</A><P></A>
+<td>
+<A NAME="1088834">
+ã“ã®å½¹å‰²ã®ãƒ¦ãƒ¼ã‚¶ã®å‹¤å‹™å…ˆã®ç§æ›¸ç®±ã€‚<P></A>
+
+<tr><td>
+<A NAME="1101617">
+<a href="attribut.htm#1202605">preferredDeliveryMethod</A><P></A>
+<td>
+<A NAME="1088839">
+ã“ã®å½¹å‰²ã®ãƒ¦ãƒ¼ã‚¶ãŒå¸Œæœ›ã™ã‚‹é€£çµ¡æ–¹æ³•ã¾ãŸã¯é…é”方法。<P></A>
+
+<tr><td>
+<A NAME="1088771">
+<a href="attribut.htm#1202644">registeredAddress</A><P></A>
+<td>
+<A NAME="1106144">
+緊急ã®æ›¸é¡žã®å—ã‘å–ã‚Šãªã©ã€å—å–人ãŒé…é”を確èªã™ã‚‹å¿…è¦ã®ã‚ã‚‹ã‚‚ã®ã‚’é…é”ã™ã‚‹ã®ã«ãµã•ã‚ã—ã„郵é€ç”¨ã®ä½æ‰€ã€‚<P></A>
+
+<tr><td>
+<A NAME="1088863">
+<a href="attribut.htm#1202666">roleOccupant</A><P></A>
+<td>
+<A NAME="1088865">
+ã“ã®å½¹å‰²ã®ãƒ¦ãƒ¼ã‚¶ã®è­˜åˆ¥å。<P></A>
+
+<tr><td>
+<A NAME="1088593">
+<a href="attribut.htm#1172500">seeAlso</A><P></A>
+<td>
+<A NAME="1088595">
+ã“ã®å½¹å‰²ã®ãƒ¦ãƒ¼ã‚¶ã«é–¢ä¿‚ã™ã‚‹æƒ…å ±ã¸ã®URL。<P></A>
+
+<tr><td>
+<A NAME="1101632">
+<a href="attribut.htm#1203417">st</A><P></A>
+<td>
+<A NAME="1088879">
+ã“ã®å½¹å‰²ã®ãƒ¦ãƒ¼ã‚¶ãŒå±…ä½ã™ã‚‹å·žã¾ãŸã¯éƒ½é“府県。<P></A>
+
+<tr><td>
+<A NAME="1101637">
+<a href="attribut.htm#1202721">street</A><P></A>
+<td>
+<A NAME="1088884">
+ã“ã®å½¹å‰²ã®ãƒ¦ãƒ¼ã‚¶ãŒå±…ä½ã™ã‚‹è¡—è·¯ã¨ç•ªåœ°ã€‚<P></A>
+
+<tr><td>
+<A NAME="1101642">
+<a href="attribut.htm#1230129">telephoneNumber</A><P></A>
+<td>
+<A NAME="1088600">
+ユーザã®é›»è©±ç•ªå·<P></A>
+
+<tr><td>
+<A NAME="1088888">
+<a href="attribut.htm#1205004">teletexTerminalIdentifier</A><P></A>
+<td>
+<A NAME="1088890">
+ã“ã®å½¹å‰²ã®ãƒ¦ãƒ¼ã‚¶ã®ãƒ†ãƒ¬ãƒ†ãƒƒã‚¯ã‚¹ ターミナルã®è­˜åˆ¥å­ã€‚<P></A>
+
+<tr><td>
+<A NAME="1088937">
+<a href="attribut.htm#1205120">telexNumber</A><P></A>
+<td>
+<A NAME="1088939">
+ã“ã®å½¹å‰²ã®ãƒ¦ãƒ¼ã‚¶ã®ãƒ†ãƒ¬ãƒƒã‚¯ã‚¹ç•ªå·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1088978">
+<a href="attribut.htm#1281763">x121Address</A><P></A>
+<td>
+<A NAME="1088980">
+ã“ã®å½¹å‰²ã®ãƒ¦ãƒ¼ã‚¶ã®X.121アドレス。<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1089681">&nbsp;
+</A>
+<A NAME="person">
+<H3> person</H3>
+</A>
+
+
+
+<A NAME="1089682">
+人々を概念的ã«è¡¨ç¤ºã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªã‚’定義ã—ã¾ã™ã€‚ã“ã®ã‚ªãƒ–ジェクト クラスã¯ã€organizationalPersonオブジェクト クラスã®åŸºæœ¬ã‚¯ãƒ©ã‚¹ã§ã™ã€‚ã“ã®ã‚ªãƒ–ジェクト クラスã¯ã€X.500 Directory Servicesã‹ã‚‰ç¶™æ‰¿ã•ã‚Œã¾ã—ãŸã€‚<P></A>
+
+<A NAME="1096975">
+OID: <CODE>2.5.6.6</CODE><P></A>
+
+<A NAME="1089720">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1089685">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1089687">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1089690">
+<a href="attribut.htm#1171494">cn</A><P></A>
+<td>
+<A NAME="1089693">
+(å¿…é ˆ) ユーザã®ä¸€èˆ¬å<P></A>
+
+<tr><td>
+<A NAME="1089696">
+<a href="attribut.htm#1230116">sn</A><P></A>
+<td>
+<A NAME="1089699">
+(å¿…é ˆ) ユーザã®å§“ã€ã¤ã¾ã‚Šãƒ©ã‚¹ãƒˆãƒãƒ¼ãƒ ã€‚<P></A>
+
+<tr><td>
+<A NAME="1089702">
+<a href="attribut.htm#1171528">description</A><P></A>
+<td>
+<A NAME="1089704">
+ユーザã®èª¬æ˜Žæ–‡ã€‚<P></A>
+
+<tr><td>
+<A NAME="1089707">
+<a href="attribut.htm#1172500">seeAlso</A><P></A>
+<td>
+<A NAME="1089709">
+ユーザã«é–¢ä¿‚ã™ã‚‹æƒ…å ±ã¸ã®URL。<P></A>
+
+<tr><td>
+<A NAME="1089712">
+<a href="attribut.htm#1230129">telephoneNumber</A><P></A>
+<td>
+<A NAME="1089714">
+ユーザã®é›»è©±ç•ªå·<P></A>
+
+<tr><td>
+<A NAME="1089717">
+<a href="attribut.htm#1196547">userPassword</A><P></A>
+<td>
+<A NAME="1089719">
+ユーザãŒãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ãƒã‚¤ãƒ³ãƒ‰ã§ãるパスワード。<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1106267">&nbsp;
+</A>
+<A NAME="residentialPerson">
+<H3> residentialPerson</H3>
+</A>
+
+
+
+<A NAME="1106268">
+Directory ServerãŒä½¿ç”¨ã™ã‚‹ã‚ªãƒ–ジェクト クラスã§ã€äººç‰©ã®ä½å±…情報をå«ã¿ã¾ã™ã€‚ã“ã®ã‚ªãƒ–ジェクト クラスã¯ã€X.500 Directory Servicesã‹ã‚‰ç¶™æ‰¿ã•ã‚Œã¾ã—ãŸã€‚<P></A>
+
+<A NAME="1106269">
+OID: <CODE>2.5.6.10</CODE><P></A>
+
+<A NAME="1106387">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1106272">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1106274">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1106279">
+<a href="attribut.htm#1244534">l</A><P></A>
+<td>
+<A NAME="1106281">
+(å¿…é ˆ) ユーザãŒå±…ä½ã™ã‚‹å ´æ‰€ã®åœ°åŸŸæ€§ã€‚<P></A>
+
+<tr><td>
+<A NAME="1106286">
+<a href="attribut.htm#1171367">businessCategory</A><P></A>
+<td>
+<A NAME="1106288">
+ユーザãŒé–¢ä¸Žã™ã‚‹äº‹æ¥­ã€‚<P></A>
+
+<tr><td>
+<A NAME="1106293">
+<a href="attribut.htm#1292809">destinationIndicator</A><P></A>
+<td>
+<A NAME="1106295">
+ã“ã®å±žæ€§ã¯ã€ã“ã®ãƒ¦ãƒ¼ã‚¶ã¸ã®é›»å ±ã‚µãƒ¼ãƒ“スã«ä½¿ç”¨ã•ã‚Œã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1106299">
+<a href="attribut.htm#1171637">facsimileTelephoneNumber</A><P></A>
+<td>
+<A NAME="1106302">
+ユーザã®ãƒ•ã‚¡ãƒƒã‚¯ã‚¹ç•ªå·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1106307">
+<a href="attribut.htm#1224256">internationalIsdnNumber</A><P></A>
+<td>
+<A NAME="1106309">
+ユーザã®ISDN番å·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1106313">
+<a href="attribut.htm#1003072">physicalDeliveryOfficeName</A><P></A>
+<td>
+<A NAME="1106316">
+物ç†çš„ãªé…é€ãŒã§ãる場所。<P></A>
+
+<tr><td>
+<A NAME="1106321">
+<a href="attribut.htm#1230025">postalAddress</A><P></A>
+<td>
+<A NAME="1106323">
+ユーザã®å‹¤å‹™å…ˆéƒµé€ç”¨ä½æ‰€ã€‚<P></A>
+
+<tr><td>
+<A NAME="1106328">
+<a href="attribut.htm#1230036">postalCode</A><P></A>
+<td>
+<A NAME="1106330">
+ユーザã®å‹¤å‹™å…ˆéƒµä¾¿ç•ªå·(米国ã«ãŠã‘る郵便番å·ãªã©)。<P></A>
+
+<tr><td>
+<A NAME="1106335">
+<a href="attribut.htm#1230043">postOfficeBox</A><P></A>
+<td>
+<A NAME="1106337">
+ユーザã®å‹¤å‹™å…ˆã®ç§æ›¸ç®±ã€‚<P></A>
+
+<tr><td>
+<A NAME="1106342">
+<a href="attribut.htm#1202605">preferredDeliveryMethod</A><P></A>
+<td>
+<A NAME="1106344">
+ユーザãŒå¸Œæœ›ã™ã‚‹é€£çµ¡æ–¹æ³•ã¾ãŸã¯é…é”方法。<P></A>
+
+<tr><td>
+<A NAME="1106349">
+<a href="attribut.htm#1202644">registeredAddress</A><P></A>
+<td>
+<A NAME="1106351">
+緊急ã®æ›¸é¡žã®å—ã‘å–ã‚Šãªã©ã€å—å–人ãŒé…é”を確èªã™ã‚‹å¿…è¦ã®ã‚ã‚‹ã‚‚ã®ã‚’é…é”ã™ã‚‹ã®ã«ãµã•ã‚ã—ã„郵é€ç”¨ã®ä½æ‰€ã€‚<P></A>
+
+<tr><td>
+<A NAME="1106356">
+<a href="attribut.htm#1203417">st</A><P></A>
+<td>
+<A NAME="1106358">
+ユーザãŒå±…ä½ã™ã‚‹å·žã¾ãŸã¯éƒ½é“府県。<P></A>
+
+<tr><td>
+<A NAME="1106363">
+<a href="attribut.htm#1202721">street</A><P></A>
+<td>
+<A NAME="1106365">
+ユーザãŒå±…ä½ã™ã‚‹è¡—è·¯ã¨ç•ªåœ°ã€‚<P></A>
+
+<tr><td>
+<A NAME="1106370">
+<a href="attribut.htm#1205004">teletexTerminalIdentifier</A><P></A>
+<td>
+<A NAME="1106372">
+ユーザã®ãƒ†ãƒ¬ãƒ†ãƒƒã‚¯ã‚¹ ターミナルã®è­˜åˆ¥å­ã€‚<P></A>
+
+<tr><td>
+<A NAME="1106377">
+<a href="attribut.htm#1205120">telexNumber</A><P></A>
+<td>
+<A NAME="1106379">
+ユーザã®ãƒ†ãƒ¬ãƒƒã‚¯ã‚¹ç•ªå·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1106384">
+<a href="attribut.htm#1281763">x121Address</A><P></A>
+<td>
+<A NAME="1106386">
+ユーザã®X.121アドレス。<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1078660">&nbsp;
+</A>
+<A NAME="Calendar Server Extensions">
+<H2> Calendar Serverã®æ‹¡å¼µ</H2>
+</A>
+
+<A NAME="1081153">
+以下ã®ã‚ªãƒ–ジェクト クラスã¯ã€Netscape Calendar Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã¾ã™ã€‚ã“ã“ã§èª¬æ˜Žã•ã‚Œã¦ã„るオブジェクト クラスã¯ã€<a href="objclass.htm#1078663">netscapeCalendarServer</A>ã€<a href="objclass.htm#1097420">nsCalAdmin</A>ã€<a href="objclass.htm#1084445">nsCalResource</A>ã€ãŠã‚ˆã³<a href="objclass.htm#1078672">nsCalUser</A>ã§ã™ã€‚<P></A>
+
+
+<A NAME="1078663">&nbsp;
+</A>
+<A NAME="netscapeCalendarServer">
+<H3> netscapeCalendarServer</H3>
+</A>
+
+
+
+<A NAME="1078664">
+Netscape Calendar Server(カレンダーサーãƒï¼‰ã®æƒ…報をã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§ä¿å­˜ã™ã‚‹ã‚ªãƒ–ジェクト クラス。ã“ã®ã‚ªãƒ–ジェクト クラスã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1097056">
+OID: <CODE>2.16.840.1.113730.3.2.17</CODE><P></A>
+
+<A NAME="1107920">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1107742">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1107744">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1107749">
+<a href="attribut.htm#1229677">objectClass</A><P></A>
+<td>
+<A NAME="1107751">
+(å¿…é ˆ) 予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+<A NAME="1097417">
+<P></A>
+
+
+<A NAME="1097420">&nbsp;
+</A>
+<A NAME="nsCalAdmin">
+<H3> nsCalAdmin</H3>
+</A>
+
+
+
+<A NAME="1097421">
+Netscape Calendar Server(カレンダーサーãƒï¼‰ãŒä½¿ç”¨ã™ã‚‹ã‚ªãƒ–ジェクト クラスã§ã€ã‚«ãƒ¬ãƒ³ãƒ€ サーãƒã‚¢ãƒ‰ãƒŸãƒ‹ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¿ã®æƒ…報をディレクトリã§ä¿å­˜ã—ã¾ã™ã€‚ã“ã®ã‚ªãƒ–ジェクト クラスã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚<P></A>
+
+<A NAME="1097052">
+OID: <CODE>2.16.840.1.113730.3.2.15</CODE><P></A>
+
+<A NAME="1084442">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1102028">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1102030">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1108105">
+<a href="attribut.htm#1229677">objectClass</A><P></A>
+<td>
+<A NAME="1108107">
+(å¿…é ˆ) 予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1108100">
+<a href="attribut.htm#1171494">cn</A><P></A>
+<td>
+<A NAME="1102037">
+管ç†è€…ã®ä¸€èˆ¬å。<P></A>
+
+<tr><td>
+<A NAME="1102042">
+<a href="attribut.htm#1171637">facsimileTelephoneNumber</A><P></A>
+<td>
+<A NAME="1102044">
+管ç†è€…ã®ãƒ•ã‚¡ãƒƒã‚¯ã‚¹ç•ªå·<P></A>
+
+<tr><td>
+<A NAME="1102049">
+<a href="attribut.htm#1104309">generationQualifier</A><P></A>
+<td>
+<A NAME="1102051">
+Lightweight Internet Person Schema (LIPS)ã®generation Qualifierã¨åŒã˜ã§ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1102056">
+<a href="attribut.htm#1229534">givenName</A><P></A>
+<td>
+<A NAME="1102058">
+管ç†è€…ã®åã¾ãŸã¯ãƒ•ã‚¡ãƒ¼ã‚¹ãƒˆãƒãƒ¼ãƒ ã€‚<P></A>
+
+<tr><td>
+<A NAME="1102063">
+<a href="attribut.htm#1229543">initials</A><P></A>
+<td>
+<A NAME="1102065">
+管ç†è€…ã®ã‚¤ãƒ‹ã‚·ãƒ£ãƒ«ã€‚<P></A>
+
+<tr><td>
+<A NAME="1102193">
+<a href="attribut.htm#1104932">nsCalAccess</A><P></A>
+<td>
+<A NAME="1102195">
+管ç†è€…ã«Calendar Serverã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯ã™ã‚‹ã‹æ‹’å¦ã™ã‚‹ã‹ã‚’定義ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1102198">
+<a href="attribut.htm#1166044">nsCalAccessDomain</A><P></A>
+<td>
+<A NAME="1102200">
+Calendar Server管ç†è€…ãŒCalendar Serverデータã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã®ã«ä½¿ç”¨ã§ãるインターãƒãƒƒãƒˆ ドメインã¾ãŸã¯IPアドレス。ã“ã®å±žæ€§ã¯å°†æ¥ã®ä½¿ç”¨ã®ãŸã‚ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1102203">
+<a href="attribut.htm#1104994">nsCalAdmd</A><P></A>
+<td>
+<A NAME="1102205">
+管ç†è€…ã®X.400管ç†ãƒ‰ãƒ¡ã‚¤ãƒ³å<P></A>
+
+<tr><td>
+<A NAME="1102208">
+<a href="attribut.htm#1164493">nsCalFlags</A><P></A>
+<td>
+<A NAME="1102210">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1102213">
+<a href="attribut.htm#1157806">nsCalHost</A><P></A>
+<td>
+<A NAME="1102215">
+Calendar Server管ç†è€…ã®æƒ…報をホストã™ã‚‹ã‚³ãƒ³ãƒ”ュータã®ãƒ›ã‚¹ãƒˆåã¾ãŸã¯IPアドレス。<P></A>
+
+<tr><td>
+<A NAME="1102218">
+<a href="attribut.htm#1105333">nsCalLanguageId</A><P></A>
+<td>
+<A NAME="1102220">
+é›»å­ãƒ¡ãƒ¼ãƒ«é€šçŸ¥ã‚’å—ã‘ã‚‹ã®ã«ç®¡ç†è€…ãŒå¸Œæœ›ã™ã‚‹è¨€èªžã€‚<P></A>
+
+<tr><td>
+<A NAME="1102223">
+<a href="attribut.htm#1157846">nsCalNodeAlias</A><P></A>
+<td>
+<A NAME="1102225">
+管ç†è€…データãŒä¿å­˜ã•ã‚Œã¦ã„るノードã®ãƒ‹ãƒ¼ãƒ¢ãƒ‹ãƒƒã‚¯å。<P></A>
+
+<tr><td>
+<A NAME="1102228">
+<a href="attribut.htm#1105739">nsCalOrgUnit2</A><P></A>
+<td>
+<A NAME="1102230">
+X.400 Organization Unit 2 (OU2)<P></A>
+
+<tr><td>
+<A NAME="1102233">
+<a href="attribut.htm#1105752">nsCalOrgUnit3</A><P></A>
+<td>
+<A NAME="1102235">
+X.400 Organization Unit 3 (OU3)<P></A>
+
+<tr><td>
+<A NAME="1102238">
+<a href="attribut.htm#1105815">nsCalOrgUnit4</A><P></A>
+<td>
+<A NAME="1102240">
+X.400 Organization Unit 4 (OU4)<P></A>
+
+<tr><td>
+<A NAME="1102243">
+<a href="attribut.htm#1105834">nsCalPasswordRequired</A><P></A>
+<td>
+<A NAME="1102245">
+CalendarユーザãŒCalendarデータã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã®ã«ãƒ‘スワードを入力ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã‹ã©ã†ã‹ã‚’指定ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1102248">
+<a href="attribut.htm#1105891">nsCalPrmd</A><P></A>
+<td>
+<A NAME="1102250">
+管ç†è€…ã®X.400 プライベート管ç†ãƒ‰ãƒ¡ã‚¤ãƒ³å。<P></A>
+
+<tr><td>
+<A NAME="1102253">
+<a href="attribut.htm#1106093">nsCalServerVersion</A><P></A>
+<td>
+<A NAME="1102255">
+Calendar Server管ç†è€…ã®ãƒ‡ãƒ¼ã‚¿ã‚’ホストã™ã‚‹Calendar Serverã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1102258">
+<a href="attribut.htm#1106115">nsCalSysopCanWritePassword</A><P></A>
+<td>
+<A NAME="1102260">
+Calendar Server管ç†è€…ãŒãƒ¦ãƒ¼ã‚¶æƒ…報を上書ãã§ãã‚‹ã‹ã©ã†ã‹ã‚’指定ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1102263">
+<a href="attribut.htm#1106218">nsCalXItemId</A><P></A>
+<td>
+<A NAME="1102265">
+管ç†è€…データãŒä¿å­˜ã•ã‚Œã¦ã„るノードã®ãƒ‹ãƒ¼ãƒ¢ãƒ‹ãƒƒã‚¯å。<P></A>
+
+<tr><td>
+<A NAME="1102070">
+<a href="attribut.htm#1241174">ou</A><P></A>
+<td>
+<A NAME="1102072">
+管ç†è€…ãŒå±žã™ã‚‹çµ„ç¹”å˜ä½ã€‚<P></A>
+
+<tr><td>
+<A NAME="1102077">
+<a href="attribut.htm#1230025">postalAddress</A><P></A>
+<td>
+<A NAME="1102079">
+管ç†è€…ã®ä½æ‰€ã€‚<P></A>
+
+<tr><td>
+<A NAME="1102084">
+<a href="attribut.htm#1290325">sn</A><P></A>
+<td>
+<A NAME="1102086">
+管ç†è€…ã®å§“ã¾ãŸã¯ãƒ©ã‚¹ãƒˆãƒãƒ¼ãƒ ã€‚<P></A>
+
+<tr><td>
+<A NAME="1102091">
+<a href="attribut.htm#1230129">telephoneNumber</A><P></A>
+<td>
+<A NAME="1102093">
+リソースã®é›»è©±ç•ªå·<P></A>
+
+<tr><td>
+<A NAME="1102098">
+<a href="attribut.htm#1196547">userPassword</A><P></A>
+<td>
+<A NAME="1102100">
+管ç†è€…ã®ãƒ‘スワード。<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1084445">&nbsp;
+</A>
+<A NAME="nsCalResource">
+<H3> nsCalResource</H3>
+</A>
+
+
+
+<A NAME="1084446">
+Netscape Calendar ServerãŒä½¿ç”¨ã™ã‚‹ã‚ªãƒ–ジェクト クラスã§ã€ä¼šè­°å®¤ãªã©ã®ã‚«ãƒ¬ãƒ³ãƒ€è³‡æºã«é–¢ã™ã‚‹æƒ…報をディレクトリã§ä¿å­˜ã—ã¾ã™ã€‚ã“ã®ã‚ªãƒ–ジェクト クラスã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚<P></A>
+
+<A NAME="1097054">
+OID: <CODE>2.16.840.1.113730.3.2.16</CODE><P></A>
+
+<A NAME="1079532">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1079408">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1079410">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1108114">
+<a href="attribut.htm#1229677">objectClass</A><P></A>
+<td>
+<A NAME="1108116">
+(å¿…é ˆ) 予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1102373">
+<a href="attribut.htm#1171494">cn</A><P></A>
+<td>
+<A NAME="1080905">
+リソースã®ä¸€èˆ¬å。<P></A>
+
+<tr><td>
+<A NAME="1102378">
+<a href="attribut.htm#1171637">facsimileTelephoneNumber</A><P></A>
+<td>
+<A NAME="1081264">
+リソースã«é–¢ä¿‚ã™ã‚‹ãƒ•ã‚¡ãƒƒã‚¯ã‚¹ç•ªå·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1102455">
+<a href="attribut.htm#1104932">nsCalAccess</A><P></A>
+<td>
+<A NAME="1083840">
+リソースãŒCalendar Serverã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã®ã‚’許å¯ã™ã‚‹ã‹æ‹’å¦ã™ã‚‹ã‹ã‚’定義ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1102460">
+<a href="attribut.htm#1166044">nsCalAccessDomain</A><P></A>
+<td>
+<A NAME="1083873">
+CalendarリソースãŒCalendarデータã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã®ã«ä½¿ç”¨ã§ãるインターãƒãƒƒãƒˆ ドメインã¾ãŸã¯IPアドレス。ã“ã®å±žæ€§ã¯å°†æ¥ã®ä½¿ç”¨ã®ãŸã‚ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1079434">
+<a href="attribut.htm#1105005">nsCalDefaultNoteReminder</A><P></A>
+<td>
+<A NAME="1084773">
+ノート リマインダã®ã‚¿ã‚¤ãƒ—ãŒã‚ã‚‹å ´åˆã€å…¥åŠ›ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1079439">
+<a href="attribut.htm#1162428">nsCalDefaultReminder</A><P></A>
+<td>
+<A NAME="1084609">
+イベント リマインダã®ã‚¿ã‚¤ãƒ—ãŒã‚ã‚‹å ´åˆã€å…¥åŠ›ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1079444">
+<a href="attribut.htm#1105139">nsCalDefaultTaskReminder</A><P></A>
+<td>
+<A NAME="1084642">
+タスク リマインダã®ã‚¿ã‚¤ãƒ—ãŒã‚ã‚‹å ´åˆã€å…¥åŠ›ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1079449">
+<a href="attribut.htm#1105164">nsCalDisplayPrefs</A><P></A>
+<td>
+<A NAME="1084565">
+リソースã®è¡¨ç¤ºè¨­å®šã€‚<P></A>
+
+<tr><td>
+<A NAME="1102485">
+<a href="attribut.htm#1164493">nsCalFlags</A><P></A>
+<td>
+<A NAME="1079456">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1102490">
+<a href="attribut.htm#1157806">nsCalHost</A><P></A>
+<td>
+<A NAME="1083661">
+Calendarリソースã®æƒ…報をä¿æŒã™ã‚‹ã‚³ãƒ³ãƒ”ュータã®ãƒ›ã‚¹ãƒˆåã¾ãŸã¯IPアドレス。<P></A>
+
+<tr><td>
+<A NAME="1102495">
+<a href="attribut.htm#1105333">nsCalLanguageId</A><P></A>
+<td>
+<A NAME="1085033">
+リソース管ç†è€…ãŒé›»å­ãƒ¡ãƒ¼ãƒ«é€šçŸ¥ã‚’å—ã‘ã¨ã‚ŠãŸã„言語。<P></A>
+
+<tr><td>
+<A NAME="1102500">
+<a href="attribut.htm#1157846">nsCalNodeAlias</A><P></A>
+<td>
+<A NAME="1083631">
+管ç†è€…データãŒä¿å­˜ã•ã‚Œã¦ã„るノードã®ãƒ‹ãƒ¼ãƒ¢ãƒ‹ãƒƒã‚¯å。<P></A>
+
+<tr><td>
+<A NAME="1079474">
+<a href="attribut.htm#1118755">nsCalNotifMechanism</A><P></A>
+<td>
+<A NAME="1079476">
+イベントã®å‚加者ã¸ã®é€šçŸ¥ã«ä½¿ç”¨ã™ã‚‹ãƒ¡ã‚«ãƒ‹ã‚ºãƒ (通常ã¯é›»å­ãƒ¡ãƒ¼ãƒ«)。<P></A>
+
+<tr><td>
+<A NAME="1079479">
+<a href="attribut.htm#1105631">nsCalOperatingPrefs</A><P></A>
+<td>
+<A NAME="1084552">
+リソースã®å‹•ä½œè¨­å®šã€‚å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1079613">
+<a href="attribut.htm#1105834">nsCalPasswordRequired</A><P></A>
+<td>
+<A NAME="1084950">
+ã“ã®ãƒªã‚½ãƒ¼ã‚¹ã«ã¤ã„ã¦ã®ã‚«ãƒ¬ãƒ³ãƒ€ データã«ã‚«ãƒ¬ãƒ³ãƒ€ ユーザãŒã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã®ã«ãƒ‘スワードを入力ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã‹ã©ã†ã‹ã‚’指定ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1079509">
+<a href="attribut.htm#1105943">nsCalRefreshPrefs</A><P></A>
+<td>
+<A NAME="1079511">
+リソースã®å‹•ä½œç’°å¢ƒã‚’リフレッシュã™ã‚‹ã‹ã©ã†ã‹ã€ã¾ãŸãã®é »åº¦ã‚’定義ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1079626">
+<a href="attribut.htm#1105996">nsCalResourceCapacity</A><P></A>
+<td>
+<A NAME="1079619">
+部屋ã«å…¥ã‚Œã‚‹æœ€å¤§äººæ•°ãªã©ã®ãƒªã‚½ãƒ¼ã‚¹ã®åŽå®¹èƒ½åŠ›ã€‚<P></A>
+
+<tr><td>
+<A NAME="1079631">
+<a href="attribut.htm#1209242">nsCalResourceNumber</A><P></A>
+<td>
+<A NAME="1079623">
+リソースã®ID番å·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1079514">
+<a href="attribut.htm#1106093">nsCalServerVersion</A><P></A>
+<td>
+<A NAME="1083778">
+Calendarリソースã®ãƒ‡ãƒ¼ã‚¿ã‚’ホストã™ã‚‹Calendar Serverã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1079519">
+<a href="attribut.htm#1106115">nsCalSysopCanWritePassword</A><P></A>
+<td>
+<A NAME="1085009">
+Calendar Serverã®ç®¡ç†è€…ãŒãƒªã‚½ãƒ¼ã‚¹ã®ãƒ‘スワードを上書ãã§ãã‚‹ã‹ã©ã†ã‹ã‚’指定ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1079524">
+<a href="attribut.htm#1106160">nsCalTimezone</A><P></A>
+<td>
+<A NAME="1079526">
+リソースãŒã‚ã‚‹ã¨ã“ã‚ã®ç¾åœ¨ã®ã‚¿ã‚¤ãƒ ã‚¾ãƒ¼ãƒ³ã€‚<P></A>
+
+<tr><td>
+<A NAME="1079529">
+<a href="attribut.htm#1106218">nsCalXItemId</A><P></A>
+<td>
+<A NAME="1084486">
+カレンダ リソース データãŒä¿å­˜ã•ã‚Œã¦ã„るノードã®ID番å·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1102416">
+<a href="attribut.htm#1230025">postalAddress</A><P></A>
+<td>
+<A NAME="1102418">
+リソースã®éƒµé€ä½æ‰€ã€‚<P></A>
+
+<tr><td>
+<A NAME="1102409">
+<a href="attribut.htm#1230129">telephoneNumber</A><P></A>
+<td>
+<A NAME="1102411">
+リソースã®é›»è©±ç•ªå·<P></A>
+
+<tr><td>
+<A NAME="1102402">
+<a href="attribut.htm#1196547">userPassword</A><P></A>
+<td>
+<A NAME="1102404">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1078672">&nbsp;
+</A>
+<A NAME="nsCalUser">
+<H3> nsCalUser</H3>
+</A>
+
+
+
+<A NAME="1078673">
+Netscape Calendar ServerãŒä½¿ç”¨ã™ã‚‹ã‚ªãƒ–ジェクト クラスã§ã€ã‚«ãƒ¬ãƒ³ãƒ€ ユーザã«é–¢ã™ã‚‹æƒ…報をディレクトリã§ä¿å­˜ã—ã¾ã™ã€‚ã“ã®ã‚ªãƒ–ジェクト クラスã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚<P></A>
+
+<A NAME="1097050">
+OID: <CODE>2.16.840.1.113730.3.2.14</CODE><P></A>
+
+<A NAME="1078727">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1078677">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1078679">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1108154">
+<a href="attribut.htm#1229677">objectClass</A><P></A>
+<td>
+<A NAME="1108156">
+(å¿…é ˆ) 予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1078683">
+<a href="attribut.htm#1104309">generationQualifier</A><P></A>
+<td>
+<A NAME="1078686">
+Lightweight Internet Person Schema (LIPS)ã®generation Qualifierã¨åŒã˜ã§ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1102672">
+<a href="attribut.htm#1104932">nsCalAccess</A><P></A>
+<td>
+<A NAME="1083848">
+ユーザã«Calendar Serverã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯ã™ã‚‹ã‹å¦å®šã™ã‚‹ã‹ã‚’定義ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1102677">
+<a href="attribut.htm#1166044">nsCalAccessDomain</A><P></A>
+<td>
+<A NAME="1078696">
+CalendarユーザãŒCalendarデータã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã®ã«ä½¿ç”¨ã§ãるインターãƒãƒƒãƒˆ ドメインã¾ãŸã¯IPアドレス。ã“ã®å±žæ€§ã¯å°†æ¥ã®ä½¿ç”¨ã®ãŸã‚ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1102682">
+<a href="attribut.htm#1104994">nsCalAdmd</A><P></A>
+<td>
+<A NAME="1083983">
+ユーザã®X.400管ç†ãƒ‰ãƒ¡ã‚¤ãƒ³å。<P></A>
+
+<tr><td>
+<A NAME="1102697">
+<a href="attribut.htm#1105005">nsCalDefaultNoteReminder</A><P></A>
+<td>
+<A NAME="1084798">
+ノート リマインダã®ã‚¿ã‚¤ãƒ—ãŒã‚ã‚‹å ´åˆã€å…¥åŠ›ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1102702">
+<a href="attribut.htm#1162428">nsCalDefaultReminder</A><P></A>
+<td>
+<A NAME="1078711">
+イベント リマインダã®ã‚¿ã‚¤ãƒ—ãŒã‚ã‚‹å ´åˆã€å…¥åŠ›ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1102707">
+<a href="attribut.htm#1105139">nsCalDefaultTaskReminder</A><P></A>
+<td>
+<A NAME="1084619">
+タスク リマインダã®ã‚¿ã‚¤ãƒ—ãŒã‚ã‚‹å ´åˆã€å…¥åŠ›ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1102712">
+<a href="attribut.htm#1105164">nsCalDisplayPrefs</A><P></A>
+<td>
+<A NAME="1078721">
+ユーザã®è¡¨ç¤ºè¨­å®šã€‚<P></A>
+
+<tr><td>
+<A NAME="1102717">
+<a href="attribut.htm#1164493">nsCalFlags</A><P></A>
+<td>
+<A NAME="1078726">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1102722">
+<a href="attribut.htm#1157806">nsCalHost</A><P></A>
+<td>
+<A NAME="1083672">
+Calendarユーザã®æƒ…報をä¿æŒã™ã‚‹ã‚³ãƒ³ãƒ”ュータã®ãƒ›ã‚¹ãƒˆåã¾ãŸã¯IPアドレスã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1102727">
+<a href="attribut.htm#1105333">nsCalLanguageId</A><P></A>
+<td>
+<A NAME="1085040">
+é›»å­ãƒ¡ãƒ¼ãƒ«é€šçŸ¥ã‚’å—ã‘ã‚‹ã®ã«ãƒ¦ãƒ¼ã‚¶ãŒå¸Œæœ›ã™ã‚‹è¨€èªžã€‚<P></A>
+
+<tr><td>
+<A NAME="1102732">
+<a href="attribut.htm#1157846">nsCalNodeAlias</A><P></A>
+<td>
+<A NAME="1083651">
+ユーザデータãŒä¿å­˜ã•ã‚Œã¦ã„るノードã®ãƒ‹ãƒ¼ãƒ¢ãƒ‹ãƒƒã‚¯å。<P></A>
+
+<tr><td>
+<A NAME="1102737">
+<a href="attribut.htm#1118755">nsCalNotifMechanism</A><P></A>
+<td>
+<A NAME="1084582">
+イベントã®å‚加者ã¸ã®é€šçŸ¥ã«ä½¿ç”¨ã™ã‚‹ãƒ¡ã‚«ãƒ‹ã‚ºãƒ (通常ã¯é›»å­ãƒ¡ãƒ¼ãƒ«)。<P></A>
+
+<tr><td>
+<A NAME="1102742">
+<a href="attribut.htm#1105631">nsCalOperatingPrefs</A><P></A>
+<td>
+<A NAME="1078828">
+ユーザã®å‹•ä½œè¨­å®šã€‚å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1078821">
+<a href="attribut.htm#1105739">nsCalOrgUnit2</A><P></A>
+<td>
+<A NAME="1078823">
+X.400 Organization Unit 2 (OU2)<P></A>
+
+<tr><td>
+<A NAME="1078816">
+<a href="attribut.htm#1105752">nsCalOrgUnit3</A><P></A>
+<td>
+<A NAME="1083904">
+X.400 Organization Unit 3 (OU3)<P></A>
+
+<tr><td>
+<A NAME="1078811">
+<a href="attribut.htm#1105815">nsCalOrgUnit4</A><P></A>
+<td>
+<A NAME="1083922">
+X.400 Organization Unit 4 (OU4)<P></A>
+
+<tr><td>
+<A NAME="1102762">
+<a href="attribut.htm#1105834">nsCalPasswordRequired</A><P></A>
+<td>
+<A NAME="1082746">
+カレンダ ユーザãŒã‚«ãƒ¬ãƒ³ãƒ€ãƒ‡ãƒ¼ã‚¿ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã®ã«ãƒ‘スワードを入力ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã‹ã©ã†ã‹ã‚’指定ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1102767">
+<a href="attribut.htm#1105891">nsCalPrmd</A><P></A>
+<td>
+<A NAME="1083961">
+ユーザã®X.400プライベート管ç†ãƒ‰ãƒ¡ã‚¤ãƒ³å。<P></A>
+
+<tr><td>
+<A NAME="1078796">
+<a href="attribut.htm#1105943">nsCalRefreshPrefs</A><P></A>
+<td>
+<A NAME="1084526">
+ユーザã®ã‚«ãƒ¬ãƒ³ãƒ€æƒ…å ±ãŒæœ€æ–°ã®ã‚‚ã®ã§æ›´æ–°ã•ã‚Œã‚‹ã¹ãã‹ã€ã©ã‚Œãらã„ã®é »åº¦ã§è¡Œã‚れるã¹ãã‹ã‚’定義ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1078791">
+<a href="attribut.htm#1106093">nsCalServerVersion</A><P></A>
+<td>
+<A NAME="1083785">
+Calendarユーザã®ãƒ‡ãƒ¼ã‚¿ã‚’ホストã™ã‚‹Calendar Serverã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1078786">
+<a href="attribut.htm#1106115">nsCalSysopCanWritePassword</A><P></A>
+<td>
+<A NAME="1085016">
+Calendar Serverã®ç®¡ç†è€…ãŒãƒ¦ãƒ¼ã‚¶ã®ãƒ‘スワードを上書ãã§ãã‚‹ã‹ã‚’指定ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1078781">
+<a href="attribut.htm#1106160">nsCalTimezone</A><P></A>
+<td>
+<A NAME="1085063">
+ユーザã®ç¾åœ¨ã®ã‚¿ã‚¤ãƒ ã‚¾ãƒ¼ãƒ³ã€‚<P></A>
+
+<tr><td>
+<A NAME="1078836">
+<a href="attribut.htm#1106218">nsCalXItemId</A><P></A>
+<td>
+<A NAME="1084493">
+カレンダ ユーザã®ãƒ‡ãƒ¼ã‚¿ãŒä¿å­˜ã•ã‚Œã¦ã„るノードã®ID番å·ã€‚<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1078479">&nbsp;
+</A>
+<A NAME="Certificate Server Extensions">
+<H2> Certificate Serverã®æ‹¡å¼µ</H2>
+</A>
+
+<A NAME="1080510">
+ã“ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§ã¯ã€Netscape Certificate Serverã§ä½¿ç”¨ã•ã‚Œã¦ã„ã‚‹<a href="objclass.htm#1078501">netscapeCertificateServer</A>ã®ã‚ªãƒ–ジェクト クラスãŒèª¬æ˜Žã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+
+<A NAME="1078501">&nbsp;
+</A>
+<A NAME="netscapeCertificateServer">
+<H3> netscapeCertificateServer</H3>
+</A>
+
+
+
+<A NAME="1078564">
+Netscape証明書サーãƒã®æƒ…報をã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§ä¿å­˜ã™ã‚‹ã‚ªãƒ–ジェクト クラス。ã“ã®ã‚ªãƒ–ジェクト クラスã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1097058">
+OID: <CODE>2.16.840.1.113730.3.2.18</CODE><P></A>
+
+<A NAME="1108183">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1108173">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1108175">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1108180">
+<a href="attribut.htm#1229677">objectClass</A><P></A>
+<td>
+<A NAME="1108182">
+(å¿…é ˆ) 予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1078576">&nbsp;
+</A>
+<A NAME="Collabra Server Extensions">
+<H2> Collabra Serverã®æ‹¡å¼µ</H2>
+</A>
+
+<A NAME="1080748">
+ã“ã®ã‚ªãƒ–ジェクト クラスã¯ã€Netscape Collabra Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã¾ã™ã€‚ã“ã“ã§èª¬æ˜Žã•ã‚Œã¦ã„るオブジェクト クラスã¯ã€<a href="objclass.htm#1078579">netscapeNewsServer</A>ã¨<a href="objclass.htm#1078583">nginfo</A>ã§ã™ã€‚<P></A>
+
+
+<A NAME="1078579">&nbsp;
+</A>
+<A NAME="netscapeNewsServer">
+<H3> netscapeNewsServer</H3>
+</A>
+
+
+
+<A NAME="1108221">
+Netscape Collabra Serverã®æƒ…報をã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ä¿å­˜ã™ã‚‹ã‚ªãƒ–ジェクト クラス。ã“ã®ã‚ªãƒ–ジェクト クラスã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1097154">
+OID: <CODE>2.16.840.1.113730.3.2.27</CODE><P></A>
+
+<A NAME="1108205">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1108195">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1108197">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1108202">
+<a href="attribut.htm#1229677">objectClass</A><P></A>
+<td>
+<A NAME="1108204">
+(å¿…é ˆ) 予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1078583">&nbsp;
+</A>
+<A NAME="nginfo">
+<H3> nginfo</H3>
+</A>
+
+
+
+<A NAME="1078584">
+Netscape Collabra ServerãŒä½¿ç”¨ã™ã‚‹ã‚ªãƒ–ジェクト クラスã§ã€discussion(news)グループã®æƒ…報をä¿å­˜ã—ã¾ã™ã€‚ã“ã®ã‚ªãƒ–ジェクト クラスã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚<P></A>
+
+<A NAME="1098802">
+OID: <CODE>2.16.840.1.113730.3.2.26</CODE><P></A>
+
+<A NAME="1105306">
+ã“ã®ã‚¿ã‚¤ãƒ—ã®ã‚ªãƒ–ジェクト クラスã¯<I>ou=Netscape Servers</I>ã®ä¸‹ã®å€‹åˆ¥ã®ã‚µãƒ–ツリーã«ä¿å­˜ã•ã‚Œã¦ã„ã¾ã™ã€‚ブランムãƒã‚¤ãƒ³ãƒˆã¯ <I>ngcomponent=.</I> エントリã«ã‚ˆã£ã¦ç¤ºã•ã‚Œã¾ã™ã€‚ã—ãŸãŒã£ã¦ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®æŽ¥å°¾è¾žãŒ<I>o=Airius.com</I>ã§ã‚ã‚‹å ´åˆã¯ã€ã™ã¹ã¦ã®è¨Žè«–グループ情報ã¯æ¬¡ã®ã‚µãƒ–ツリーã«ä¿å­˜ã•ã‚Œã¦ã¾ã™ã€‚<P></A>
+<PRE><A NAME="1078586">
+<I>ngcomponent=., o=Airius.com</I>
+</A>
+</PRE>
+<A NAME="1078587">
+ã“ã®ã‚µãƒ–ツリーã¨ãã®å†…容ã¯ã€Collabra Serverã«ã‚ˆã£ã¦ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«æ›¸ãè¾¼ã¾ã‚Œã¾ã™ã€‚ã“ã®ãƒ„リーã®æ§‹é€ <CODE>nginfo<CODE>ã®ã‚ªãƒ–ジェクト クラスã®å½¢å¼ã¨ä½¿ç”¨æ³•ã€ãŠã‚ˆã³<CODE>nginfo</CODE>属性ã®å½¢å¼ã¨ä½¿ç”¨æ³•ã¯ã€äºˆå‘Šãªã—ã«å¤‰æ›´ã•ã‚Œã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚<P></A>
+
+<A NAME="1078640">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1078590">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1078592">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1078596">
+<a href="attribut.htm#1095332">ngcomponent</A><P></A>
+<td>
+<A NAME="1078599">
+(å¿…é ˆ) 討論グループåã®ä¸€éƒ¨ã€‚<P></A>
+
+<tr><td>
+<A NAME="1108256">
+<a href="attribut.htm#1229677">objectClass</A><P></A>
+<td>
+<A NAME="1108258">
+(å¿…é ˆ) 予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1078602">
+<a href="attribut.htm#1171528">description</A><P></A>
+<td>
+<A NAME="1078604">
+討論グループã®èª¬æ˜Žæ–‡ã€‚<P></A>
+
+<tr><td>
+<A NAME="1103112">
+<a href="attribut.htm#1036977">nsaclrole</A><P></A>
+<td>
+<A NAME="1103114">
+ã•ã¾ã–ã¾ãªCollabraã®å½¹å‰²ã®ã‚¢ã‚¯ã‚»ã‚¹è¨±å¯ã‚»ãƒƒãƒˆã€‚<P></A>
+
+<tr><td>
+<A NAME="1103119">
+<a href="attribut.htm#1037693">nscreator</A><P></A>
+<td>
+<A NAME="1103121">
+討論グループ作æˆè€…ã®ãƒ¦ãƒ¼ã‚¶ID。<P></A>
+
+<tr><td>
+<A NAME="1103133">
+<a href="attribut.htm#1037564">nsflags</A><P></A>
+<td>
+<A NAME="1103135">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1103140">
+<a href="attribut.htm#1092030">nsnewsACL</A><P></A>
+<td>
+<A NAME="1103142">
+討論グループã®ã‚¢ã‚¯ã‚»ã‚¹åˆ¶å¾¡ã‚»ãƒƒãƒˆã€‚<P></A>
+
+<tr><td>
+<A NAME="1078627">
+<a href="attribut.htm#1037277">nsprettyname</A><P></A>
+<td>
+<A NAME="1078629">
+討論グループå。<P></A>
+
+<tr><td>
+<A NAME="1108272">
+<a href="attribut.htm#1099985">subtreeACI</A><P></A>
+<td>
+<A NAME="1108274">
+予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1078655">&nbsp;
+</A>
+<A NAME="Compass Server Extensions">
+<H2> Compass Serverã®æ‹¡å¼µ</H2>
+</A>
+
+<A NAME="1080778">
+ã“ã“ã§èª¬æ˜Žã•ã‚Œã¦ã„るオブジェクト クラスã¯ã€Netscape Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã¾ã™ã€‚ã“れらã®ã‚ªãƒ–ジェクト クラスã¯ã€<a href="objclass.htm#1080497">netscapeCompassServer</A>, <a href="objclass.htm#1079636">personalInterestProfile</A>ã€<a href="objclass.htm#1080358">PIPUser</A>ã€ãŠã‚ˆã³<a href="objclass.htm#1080065">PIPUserInfo</A>ã§ã™ã€‚<P></A>
+
+
+<A NAME="1080497">&nbsp;
+</A>
+<A NAME="netscapeCompassServer">
+<H3> netscapeCompassServer</H3>
+</A>
+
+
+
+<A NAME="1080498">
+Netscape Compass Serverã®æƒ…報をã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§ä¿å­˜ã™ã‚‹ã‚ªãƒ–ジェクト クラス。ã“ã®ã‚ªãƒ–ジェクト クラスã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1097064">
+OID: <CODE>2.16.840.1.113730.3.2.19</CODE><P></A>
+
+<A NAME="1108299">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1108289">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1108291">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1108296">
+<a href="attribut.htm#1229677">objectClass</A><P></A>
+<td>
+<A NAME="1108298">
+(å¿…é ˆ) 予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1079636">&nbsp;
+</A>
+<A NAME="personalInterestProfile">
+<H3> personalInterestProfile</H3>
+</A>
+
+
+
+<A NAME="1082056">
+Compassユーザã®å€‹äººã®èˆˆå‘³ã«é–¢ã™ã‚‹æƒ…報をä¿å­˜ã™ã‚‹ãŸã‚ã«ã€Compass Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹ã‚ªãƒ–ジェクト クラス。個人ã®èˆˆå‘³ã«é–¢ã™ã‚‹æƒ…å ±ã®è©³ç´°ã¯ã€ã€ŽNetscape Compass Server管ç†è€…ガイドã€ã‚’ã”覧ãã ã•ã„。ã“ã®ã‚ªãƒ–ジェクト クラスã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚<P></A>
+
+<A NAME="1097066">
+OID: <CODE>2.16.840.1.113730.3.2.20</CODE><P></A>
+
+<A NAME="1079693">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1079643">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1079645">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1108309">
+<a href="attribut.htm#1229677">objectClass</A><P></A>
+<td>
+<A NAME="1108311">
+(å¿…é ˆ) 予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1079649">
+<a href="attribut.htm#1110777">pipuid</A><P></A>
+<td>
+<A NAME="1079652">
+(å¿…é ˆ) ã“ã®ãƒ—ロフィールãŒå±žã™ã‚‹ãƒ¦ãƒ¼ã‚¶ã®ãƒ¦ãƒ¼ã‚¶ID。<P></A>
+
+<tr><td>
+<A NAME="1079655">
+<a href="attribut.htm#1107663">pipuniqueid</A><P></A>
+<td>
+<A NAME="1088167">
+ã“ã®ãƒ—ロフィールãŒå±žã™ã‚‹ãƒ¦ãƒ¼ã‚¶ã®å›ºæœ‰ã®ID。<P></A>
+
+<tr><td>
+<A NAME="1079660">
+<a href="attribut.htm#1114647">pipstatus</A><P></A>
+<td>
+<A NAME="1079662">
+プロフィールãŒä½¿ç”¨å¯èƒ½ã§ã‚ã‚‹ã‹ä½¿ç”¨ç¦æ­¢ã§ã‚ã‚‹ã‹ã‚’定義ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1079665">
+<a href="attribut.htm#1108439">pipusertype</A><P></A>
+<td>
+<A NAME="1079667">
+ã“ã®ãƒ—ロフィールãŒå±žã™ã‚‹ãƒ¦ãƒ¼ã‚¶ã®ã‚¿ã‚¤ãƒ—。<P></A>
+
+<tr><td>
+<A NAME="1079670">
+<a href="attribut.htm#1116521">pipstfrequency</A><P></A>
+<td>
+<A NAME="1079672">
+カテゴリを更新ã—ãŸMy Compassニュースレターã®å—信頻度を示ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1079675">
+<a href="attribut.htm#1111582">pipmedium</A><P></A>
+<td>
+<A NAME="1079677">
+無料テキスト検索プロフィール更新情報をユーザã«é€ä¿¡ã™ã‚‹ã®ã«ä½¿ç”¨ã™ã‚‹æ‰‹æ®µã€‚<P></A>
+
+<tr><td>
+<A NAME="1108316">
+<a href="attribut.htm#1111357">pipformat</A><P></A>
+<td>
+<A NAME="1108318">
+ユーザã«é€ä¿¡ã•ã‚Œã‚‹ç„¡æ–™ãƒ†ã‚­ã‚¹ãƒˆæ¤œç´¢ãƒ—ロフィール更新ã®å½¢å¼ã€‚<P></A>
+
+<tr><td>
+<A NAME="1079680">
+<a href="attribut.htm#1246341">pipfrequency</A><P></A>
+<td>
+<A NAME="1079682">
+コンパス サーãƒã§ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ã€‚ユーザãŒãƒ•ãƒªãƒ¼ テキスト検索ã§æ›´æ–°ã•ã‚ŒãŸã€ŒMy Compassã€ãƒ‹ãƒ¥ãƒ¼ã‚¹ãƒ¬ã‚¿ãƒ¼ã‚’ã©ã®ã‚ˆã†ãªé »åº¦ã§å—ã‘å–ã‚‹ã‹ã‚’記述ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1079685">
+<a href="attribut.htm#1111369">piphour</A><P></A>
+<td>
+<A NAME="1079687">
+ユーザãŒç„¡æ–™ãƒ†ã‚­ã‚¹ãƒˆæ¤œç´¢ãƒ—ロフィール更新をé€ä¿¡ã™ã‚‹æ™‚間帯。<P></A>
+
+<tr><td>
+<A NAME="1079690">
+<a href="attribut.htm#1246650">pipmaxhits</A><P></A>
+<td>
+<A NAME="1079692">
+無料テキスト検索プロフィール更新ã”ã¨ã«æˆ»ã•ã‚Œã‚‹æœ€å¤§ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆæ•°ã€‚<P></A>
+
+<tr><td>
+<A NAME="1086287">
+<a href="attribut.htm#1111729">pipresultset</A><P></A>
+<td>
+<A NAME="1079792">
+ユーザãŒæ›´æ–°ã®å—信を希望ã™ã‚‹å±žæ€§ãƒªã‚¹ãƒˆã€‚<P></A>
+
+<tr><td>
+<A NAME="1079799">
+<a href="attribut.htm#1111947">pipsortorder</A><P></A>
+<td>
+<A NAME="1079788">
+無料テキスト検索プロフィール更新ã®æ¦‚è¦ãƒ¬ãƒãƒ¼ãƒˆã®æƒ…報を並ã¹æ›¿ãˆã‚‹é †åºã€‚<P></A>
+
+<tr><td>
+<A NAME="1079802">
+<a href="attribut.htm#1117682">piptimestamp</A><P></A>
+<td>
+<A NAME="1079784">
+ã“ã®ãƒ¦ãƒ¼ã‚¶ã«ã¤ã„ã¦ã®ç„¡æ–™ãƒ†ã‚­ã‚¹ãƒˆæ¤œç´¢ãƒ—ロフィールã®æœ€çµ‚更新日。<P></A>
+
+<tr><td>
+<A NAME="1079805">
+<a href="attribut.htm#1113479">pipirlist</A><P></A>
+<td>
+<A NAME="1105425">
+ユーザãŒãƒ¢ãƒ‹ã‚¿ãƒ¼ã™ã‚‹ãƒ‰ãƒ¡ã‚¤ãƒ³ã¨ãƒ‹ãƒ¥ãƒ¼ã‚¹ã‚°ãƒ«ãƒ¼ãƒ—。<P></A>
+
+<tr><td>
+<A NAME="1079808">
+<a href="attribut.htm#1237828">pipiroption</A><P></A>
+<td>
+<A NAME="1079776">
+pipIrListã®ã™ã¹ã¦ã®ã‚¨ãƒ³ãƒˆãƒªã‚’æ›´æ–°ã™ã‚‹ã‹ã€ã¾ãŸã¯æ›´æ–°ã‹ã‚‰é™¤å¤–ã™ã‚‹ã‹ã‚’定義ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1079811">
+<a href="attribut.htm#1112443">pippwp</A><P></A>
+<td>
+<A NAME="1079772">
+Personal Web Page (PWP) データベースã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã€‚<P></A>
+
+<tr><td>
+<A NAME="1079814">
+<a href="attribut.htm#1112574">piplastcount</A><P></A>
+<td>
+<A NAME="1079768">
+最後ã®æ›´æ–°ä¸­ã«ç™ºç”Ÿã—ãŸä¸€è‡´æ•°ã€‚<P></A>
+
+<tr><td>
+<A NAME="1079817">
+<a href="attribut.htm#1237470">piptotalcount</A><P></A>
+<td>
+<A NAME="1082119">
+ç¾åœ¨ã«è‡³ã‚‹ã¾ã§ã®ã™ã¹ã¦ã®æ›´æ–°ä¸­ã«ç™ºç”Ÿã—ãŸä¸€è‡´æ•°ã€‚<P></A>
+
+<tr><td>
+<A NAME="1079820">
+<a href="attribut.htm#1112780">piptotalrun</A><P></A>
+<td>
+<A NAME="1079760">
+ç¾åœ¨ã«è‡³ã‚‹ã¾ã§ã®æ›´æ–°ç·æ•°ã€‚<P></A>
+
+<tr><td>
+<A NAME="1079824">
+<a href="attribut.htm#1236460">pipnotify</A><P></A>
+<td>
+<A NAME="1079756">
+未定義。<P></A>
+
+<tr><td>
+<A NAME="1079827">
+<a href="attribut.htm#1236511">pipprivilege</A><P></A>
+<td>
+<A NAME="1079752">
+未定義。<P></A>
+
+<tr><td>
+<A NAME="1086357">
+<a href="attribut.htm#1113190">pipgroup</A><P></A>
+<td>
+<A NAME="1079748">
+未定義。<P></A>
+
+<tr><td>
+<A NAME="1086370">
+<a href="attribut.htm#1237689">pipidstcount</A><P></A>
+<td>
+<A NAME="1082159">
+ユーザã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚ŒãŸæœ€å¾Œã®ä¸€æ„ã®ID。<P></A>
+
+<tr><td>
+<A NAME="1086382">
+<a href="attribut.htm#1115462">pipstid</A><P></A>
+<td>
+<A NAME="1079861">
+プロフィールã«å«ã¾ã‚Œã¦ã„る検索トピックã®ä¸€æ„ã®ID。<P></A>
+
+<tr><td>
+<A NAME="1079875">
+<a href="attribut.htm#1115468">pipstname</A><P></A>
+<td>
+<A NAME="1079857">
+検索トピックを説明ã™ã‚‹ãŸã‚ã«ã€ãƒ¦ãƒ¼ã‚¶ã«ã‚ˆã£ã¦ä½œæˆã•ã‚ŒãŸä»»æ„ã®åå‰ã€‚<P></A>
+
+<tr><td>
+<A NAME="1079878">
+<a href="attribut.htm#1115474">pipstquery</A><P></A>
+<td>
+<A NAME="1079853">
+未定義。<P></A>
+
+<tr><td>
+<A NAME="1079881">
+<a href="attribut.htm#1115480">pipsttaxonomy</A><P></A>
+<td>
+<A NAME="1079849">
+検索トピックã®åˆ†é¡žId。<P></A>
+
+<tr><td>
+<A NAME="1079884">
+<a href="attribut.htm#1115769">pipstinterest</A><P></A>
+<td>
+<A NAME="1099692">
+個々ã®æ¤œç´¢ãƒˆãƒ”ックã”ã¨ã®ãƒ¦ãƒ¼ã‚¶ã«å¯¾ã™ã‚‹é‡è¦åº¦ã‚’説明ã—ã¾ã™ã€‚(ã“ã®å±žæ€§ã¯Netscape Compass Server Professionalã§ã®ã¿ä½¿ç”¨ã•ã‚Œã¾ã™ã€‚)<P></A>
+
+<tr><td>
+<A NAME="1079887">
+<a href="attribut.htm#1116285">pipsttype</A><P></A>
+<td>
+<A NAME="1079841">
+検索ãŒã‚«ãƒ†ã‚´ãƒªæ¤œç´¢ã§ã‚ã‚‹ã‹ç„¡æ–™ãƒ†ã‚­ã‚¹ãƒˆæ¤œç´¢ã§ã‚ã‚‹ã‹ã‚’定義ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1079890">
+<a href="attribut.htm#1115898">pipstprivacy</A><P></A>
+<td>
+<A NAME="1079837">
+ã“ã®ã‚¨ãƒ³ãƒˆãƒªã®å•åˆã›ã‚’許å¯ã™ã‚‹ã‹æ‹’å¦ã™ã‚‹ã‹ã‚’定義ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1079955">
+<a href="attribut.htm#1116027">pipststatus</A><P></A>
+<td>
+<A NAME="1079950">
+Personal Interest Profile (PIP)ã®çŠ¶æ…‹ã€‚<P></A>
+
+<tr><td>
+<A NAME="1079958">
+<a href="attribut.htm#1237172">pipstlastcount</A><P></A>
+<td>
+<A NAME="1079946">
+最後ã®æ›´æ–°ä¸­ã«ä¸€è‡´ã—ãŸã‚«ãƒ†ã‚´ãƒªæ•°ã€‚<P></A>
+
+<tr><td>
+<A NAME="1079961">
+<a href="attribut.htm#1115516">pipsttotalcount</A><P></A>
+<td>
+<A NAME="1082234">
+ç¾åœ¨ã«è‡³ã‚‹ã¾ã§ã«ä¸€è‡´ã—ãŸã‚«ãƒ†ã‚´ãƒªæ•°ã€‚<P></A>
+
+<tr><td>
+<A NAME="1079964">
+<a href="attribut.htm#1115522">pipsttotalrun</A><P></A>
+<td>
+<A NAME="1082240">
+ç¾åœ¨ã«è‡³ã‚‹ã¾ã§ã«å®Ÿè¡Œã•ã‚ŒãŸã‚«ãƒ†ã‚´ãƒªæ¤œç´¢æ›´æ–°æ•°ã€‚<P></A>
+
+<tr><td>
+<A NAME="1079967">
+<a href="attribut.htm#1116402">pipstcategory</A><P></A>
+<td>
+<A NAME="1079934">
+ユーザãŒèˆˆå‘³ã®ã‚るカテゴリã¾ãŸã¯æ¤œç´¢æ–‡å­—列。<P></A>
+
+<tr><td>
+<A NAME="1079970">
+<a href="attribut.htm#1116521">pipstfrequency</A><P></A>
+<td>
+<A NAME="1079930">
+ユーザãŒæ›´æ–°ã®è­¦å‘Šã‚’å—ã‘る頻度。<P></A>
+
+<tr><td>
+<A NAME="1079973">
+<a href="attribut.htm#1117140">pipstmedium</A><P></A>
+<td>
+<A NAME="1096703">
+カテゴリ検索プロフィールã®æ›´æ–°æƒ…報をユーザã«é€ä¿¡ã™ã‚‹ã®ã«ä½¿ç”¨ã™ã‚‹æ‰‹æ®µã€‚<P></A>
+
+<tr><td>
+<A NAME="1079976">
+<a href="attribut.htm#1116837">pipstformat</A><P></A>
+<td>
+<A NAME="1082369">
+ユーザã«é€ä¿¡ã•ã‚Œã‚‹ã‚«ãƒ†ã‚´ãƒªæ¤œç´¢ãƒ—ロフィール更新ã®å½¢å¼ã€‚<P></A>
+
+<tr><td>
+<A NAME="1079979">
+<a href="attribut.htm#1116707">pipsthour</A><P></A>
+<td>
+<A NAME="1082375">
+ユーザãŒç„¡æ–™ã‚«ãƒ†ã‚´ãƒª プロフィール更新をé€ä¿¡ã™ã‚‹æ™‚間帯。<P></A>
+
+<tr><td>
+<A NAME="1079982">
+<a href="attribut.htm#1117134">pipstmaxhits</A><P></A>
+<td>
+<A NAME="1082402">
+カテゴリ検索プロフィール更新ã”ã¨ã«æˆ»ã•ã‚Œã‚‹æœ€å¤§ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆæ•°ã€‚<P></A>
+
+<tr><td>
+<A NAME="1079985">
+<a href="attribut.htm#1117321">pipstresultset</A><P></A>
+<td>
+<A NAME="1082414">
+ユーザãŒæ›´æ–°ã®å—信を希望ã™ã‚‹ã‚«ãƒ†ã‚´ãƒª リストãŒå«ã¾ã‚Œã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1079988">
+<a href="attribut.htm#1117327">pipstsortorder</A><P></A>
+<td>
+<A NAME="1082427">
+カテゴリ検索プロフィール更新ã®æ¦‚è¦ãƒ¬ãƒãƒ¼ãƒˆã®æƒ…報を並ã¹æ›¿ãˆã‚‹é †åºã€‚<P></A>
+
+<tr><td>
+<A NAME="1079991">
+<a href="attribut.htm#1117445">pipsttimestamp</A><P></A>
+<td>
+<A NAME="1082432">
+ã“ã®ãƒ¦ãƒ¼ã‚¶ã«ã¤ã„ã¦ã®ã‚«ãƒ†ã‚´ãƒªæ¤œç´¢ãƒ—ロフィールã®æœ€çµ‚更新日。<P></A>
+
+<tr><td>
+<A NAME="1079994">
+<a href="attribut.htm#1117562">pipstirlist</A><P></A>
+<td>
+<A NAME="1082443">
+ユーザãŒãƒ¢ãƒ‹ã‚¿ãƒ¼ã—ãŸã„ドメインã¨ãƒ‹ãƒ¥ãƒ¼ã‚¹ã‚°ãƒ«ãƒ¼ãƒ—。<P></A>
+
+<tr><td>
+<A NAME="1079997">
+<a href="attribut.htm#1117790">pipstiroption</A><P></A>
+<td>
+<A NAME="1082447">
+pipstirlistã®ã™ã¹ã¦ã®ã‚¨ãƒ³ãƒˆãƒªã‚’æ›´æ–°ã™ã‚‹ã‹ã€ã¾ãŸã¯ã‚«ãƒ†ã‚´ãƒªã®æ›´æ–°ã‹ã‚‰é™¤å¤–ã™ã‚‹ã‹ã‚’定義ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1080036">
+<a href="attribut.htm#1118693">pipreservedces1</A><P></A>
+<td>
+<A NAME="1080033">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1080041">
+<a href="attribut.htm#1118699">pipreservedces2</A><P></A>
+<td>
+<A NAME="1082335">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1080044">
+<a href="attribut.htm#1118705">pipreservedces3</A><P></A>
+<td>
+<A NAME="1080025">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1080047">
+<a href="attribut.htm#1118350">pipreservedcis1</A><P></A>
+<td>
+<A NAME="1080021">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1080050">
+<a href="attribut.htm#1118356">pipreservedcis2</A><P></A>
+<td>
+<A NAME="1080017">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1080053">
+<a href="attribut.htm#1118362">pipreservedcis3</A><P></A>
+<td>
+<A NAME="1080013">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1080056">
+<a href="attribut.htm#1118368">pipreservedcis4</A><P></A>
+<td>
+<A NAME="1080009">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1080059">
+<a href="attribut.htm#1118374">pipreservedcis5</A><P></A>
+<td>
+<A NAME="1080005">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1080062">
+<a href="attribut.htm#1118380">pipreservedcis6</A><P></A>
+<td>
+<A NAME="1080001">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1080358">&nbsp;
+</A>
+<A NAME="PIPUser">
+<H3> PIPUser</H3>
+</A>
+
+
+
+<A NAME="1082531">
+Netscape Compass ServerãŒä½¿ç”¨ã™ã‚‹ã‚ªãƒ–ジェクト クラスã§ã€Personal Interest Profile (PIP)ユーザã®æƒ…報をå«ã¿ã¾ã™ã€‚ã“ã®ã‚ªãƒ–ジェクト クラスã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚PIPã®è©³ç´°ã¯ã€ã€ŽNetscape Compass Server Administrator's Guideã€ã‚’ã”覧ãã ã•ã„。将æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1097068">
+OID: <CODE>2.16.840.1.113730.3.2.22</CODE><P></A>
+
+<A NAME="1080396">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1080362">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1080364">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1108446">
+<a href="attribut.htm#1229677">objectClass</A><P></A>
+<td>
+<A NAME="1108448">
+(å¿…é ˆ) 予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1086592">
+<a href="attribut.htm#1246531">pipcompassservers</A><P></A>
+<td>
+<A NAME="1080405">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1086632">
+<a href="attribut.htm#1118693">pipreservedces1</A><P></A>
+<td>
+<A NAME="1080442">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1086637">
+<a href="attribut.htm#1118699">pipreservedces2</A><P></A>
+<td>
+<A NAME="1080447">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1086642">
+<a href="attribut.htm#1118705">pipreservedces3</A><P></A>
+<td>
+<A NAME="1080452">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1086647">
+<a href="attribut.htm#1118350">pipreservedcis1</A><P></A>
+<td>
+<A NAME="1080457">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1086652">
+<a href="attribut.htm#1118356">pipreservedcis2</A><P></A>
+<td>
+<A NAME="1080462">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1086657">
+<a href="attribut.htm#1118362">pipreservedcis3</A><P></A>
+<td>
+<A NAME="1080467">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1086662">
+<a href="attribut.htm#1118368">pipreservedcis4</A><P></A>
+<td>
+<A NAME="1080484">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1086667">
+<a href="attribut.htm#1118374">pipreservedcis5</A><P></A>
+<td>
+<A NAME="1080489">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1086672">
+<a href="attribut.htm#1118380">pipreservedcis6</A><P></A>
+<td>
+<A NAME="1080494">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1108453">
+<a href="attribut.htm#1107663">pipuniqueid</A><P></A>
+<td>
+<A NAME="1108455">
+ユーザ固有ã®ID。<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1080065">&nbsp;
+</A>
+<A NAME="PIPUserInfo">
+<H3> PIPUserInfo</H3>
+</A>
+
+
+
+<A NAME="1080066">
+ユーザIDã‚’æŒãŸãªã„Personal Interest Profile (PIP)ユーザ情報をå«ã‚ã‚‹ãŸã‚ã«ã€Netscape Compass ServerãŒä½¿ç”¨ã™ã‚‹ã‚ªãƒ–ジェクト クラス。ã“ã®ã‚ªãƒ–ジェクト クラスã¯æ¨™æº–LDAPスキーマã«å¯¾ã™ã‚‹Netscape社ã®æ‹¡å¼µã§ã™ã€‚PIPã®è©³ç´°ã¯ã€ã€ŽNetscape Compass Server Administrator's Guideã€ã‚’ã”覧ãã ã•ã„。将æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1097070">
+OID: <CODE>2.16.840.1.113730.3.2.21</CODE><P></A>
+
+<A NAME="1097227">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1105721">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1105723">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1105728">
+<a href="attribut.htm#1171494">cn</A><P></A>
+<td>
+<A NAME="1105730">
+(å¿…é ˆ) ユーザã®ä¸€èˆ¬å<P></A>
+
+<tr><td>
+<A NAME="1108460">
+<a href="attribut.htm#1229677">objectClass</A><P></A>
+<td>
+<A NAME="1108462">
+(å¿…é ˆ) 予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1105735">
+<a href="attribut.htm#1171528">description</A><P></A>
+<td>
+<A NAME="1105737">
+自由形å¼ã§ã®ãƒ¦ãƒ¼ã‚¶ã®èª¬æ˜Žã€‚<P></A>
+
+<tr><td>
+<A NAME="1105763">
+<a href="attribut.htm#1189404">mail</A><P></A>
+<td>
+<A NAME="1105765">
+ユーザã®é›»å­ãƒ¡ãƒ¼ãƒ« アドレス。<P></A>
+
+<tr><td>
+<A NAME="1105742">
+<a href="attribut.htm#1246531">pipcompassservers</A><P></A>
+<td>
+<A NAME="1105744">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1105749">
+<a href="attribut.htm#1107663">pipuniqueid</A><P></A>
+<td>
+<A NAME="1105751">
+ユーザ固有ã®ID。<P></A>
+
+<tr><td>
+<A NAME="1105756">
+<a href="attribut.htm#1196547">userPassword</A><P></A>
+<td>
+<A NAME="1105758">
+ユーザã®ãƒ‘スワード<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1097229">&nbsp;
+</A>
+<A NAME="Directory Server Extensions">
+<H2> Directory Serverã®æ‹¡å¼µ</H2>
+</A>
+
+<A NAME="1077861">
+以下ã®ã‚ªãƒ–ジェクト クラスã¯Netscape Directory Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã¾ã™ã€‚ã“ã“ã§èª¬æ˜Žã•ã‚Œã¦ã„るオブジェクト クラスã¯ã€<a href="objclass.htm#1077794">changeLogEntry</A>ã€href="objclass.htm#1100614">cirReplicaSource</A>ã€<a href="objclass.htm#1098555">groupOfCertificates</A>ã€<a href="objclass.htm#1106267">residentialPerson</A>ã€<a href="objclass.htm#1078109">netscapeMachineData</A>ã€<a href="objclass.htm#1097231">netscapeServer</A>ã€<a href="objclass.htm#1100862">nsLicenseUser</A>ã€<a href="objclass.htm#1100399">NTGroup</A>ã€<a href="objclass.htm#1081708">passwordObject</A>ã€<a href="objclass.htm#1081724">passwordPolicy</A>ã€<a href="objclass.htm#1097669">referral</A>ãŠã‚ˆã³<a href="objclass.htm#1097986">subschema</A>ã§ã™ã€‚<P></A>
+
+
+<A NAME="1077794">&nbsp;
+</A>
+<A NAME="changeLogEntry">
+<H3> changeLogEntry</H3>
+</A>
+
+
+
+<A NAME="1077795">
+Netscape Directory ServerãŒä½¿ç”¨ã™ã‚‹ã‚ªãƒ–ジェクト クラスã§ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã¸ã®å¤‰æ›´ã‚’表示ã—ã¾ã™ã€‚ã“ã®ã‚ªãƒ–ジェクト クラスã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚<P></A>
+
+<A NAME="1098541">
+OID: <CODE>2.16.840.1.113730.3.2.1</CODE><P></A>
+
+<A NAME="1077846">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1077798">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1077800">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1077816">
+<a href="attribut.htm#1094798">changeNumber</A><P></A>
+<td>
+<A NAME="1077819">
+(å¿…é ˆ) 変更ログã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã‚‹ä»»æ„ã®ç•ªå·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1108478">
+<a href="attribut.htm#1095285">changeTime</A><P></A>
+<td>
+<A NAME="1108480">
+(å¿…é ˆ) 変更ãŒè¡Œã‚ã‚ŒãŸæ™‚刻を定義ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1077822">
+<a href="attribut.htm#1094968">changeType</A><P></A>
+<td>
+<A NAME="1077825">
+(å¿…é ˆ) エントリã«è¡Œã‚ã‚ŒãŸå¤‰æ›´ã®ã‚¿ã‚¤ãƒ—。<P></A>
+
+<tr><td>
+<A NAME="1108471">
+<a href="attribut.htm#1094954">targetDn</A><P></A>
+<td>
+<A NAME="1108473">
+(å¿…é ˆ) 供給サーãƒã«ãŠã„ã¦è¿½åŠ ã€å¤‰æ›´ã€ã¾ãŸã¯å‰Šé™¤ã•ã‚ŒãŸã‚¨ãƒ³ãƒˆãƒªã®è­˜åˆ¥å。<P></A>
+
+<tr><td>
+<A NAME="1077828">
+<a href="attribut.htm#1095277">changes</A><P></A>
+<td>
+<A NAME="1077830">
+Directory Serverã«è¡Œã‚ã‚ŒãŸå¤‰æ›´ã€‚<P></A>
+
+<tr><td>
+<A NAME="1077833">
+<a href="attribut.htm#1095547">deleteOldRdn</A><P></A>
+<td>
+<A NAME="1077835">
+エントリã®è­˜åˆ¥å±žæ€§ã¨ã—ã¦ã€ã‚¨ãƒ³ãƒˆãƒªã®å¤ã„RDN(Relative Distinguished Name=相対識別å)ã‚’ä¿æŒã™ã‚‹ã‹ã€ã¾ãŸã¯å‰Šé™¤ã™ã‚‹ã‹ã‚’定義ã™ã‚‹ãƒ•ãƒ©ã‚°ã€‚<P></A>
+
+<tr><td>
+<A NAME="1098195">
+<a href="attribut.htm#1266221">filterInfo</A><P></A>
+<td>
+<A NAME="1098197">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1077838">
+<a href="attribut.htm#1096606">newRdn</A><P></A>
+<td>
+<A NAME="1077840">
+modRDNã¾ãŸã¯modDNã®å‹•ä½œã®ç›®æ¨™ã¨ãªã‚‹ã‚¨ãƒ³ãƒˆãƒªã®æ–°è¦RDN。<P></A>
+
+<tr><td>
+<A NAME="1077843">
+<a href="attribut.htm#1126531">newSuperior</A><P></A>
+<td>
+<A NAME="1077845">
+modDN動作ã®å‡¦ç†ä¸­ã«ã€æ—¢å­˜ã‚¨ãƒ³ãƒˆãƒªã®ç›´ã上ä½ã«ãªã‚‹ã‚¨ãƒ³ãƒˆãƒªã®åå‰ã€‚<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1098555">&nbsp;
+</A>
+<A NAME="groupOfCertificates">
+<H3> groupOfCertificates</H3>
+</A>
+
+
+
+<A NAME="1098563">
+X.509証明書ã®ã‚°ãƒ«ãƒ¼ãƒ—情報をå«ã‚ã‚‹ãŸã‚ã«ã€Netscape Directory Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹ã‚ªãƒ–ジェクト クラス。<a href="attribut.htm#1152959">memberCertificateDescription</A>ã®å€¤ã«ä¸€è‡´ã™ã‚‹è¨¼æ˜Žæ›¸ã¯ã€ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã®ãƒ¡ãƒ³ãƒãƒ¼ã¨è¦‹ãªã•ã‚Œã¾ã™ã€‚ã“ã®ã‚ªãƒ–ジェクト クラスã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚<P></A>
+
+<A NAME="1098564">
+OID: <CODE>2.16.840.1.113730.3.2.31</CODE><P></A>
+
+<A NAME="1081487">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1081442">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1081444">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1081448">
+<a href="attribut.htm#1171494">cn</A><P></A>
+<td>
+<A NAME="1081451">
+(å¿…é ˆ) グループã®ä¸€èˆ¬å<P></A>
+
+<tr><td>
+<A NAME="1081454">
+<a href="attribut.htm#1171367">businessCategory</A><P></A>
+<td>
+<A NAME="1082983">
+グループãŒé–¢ä¸Žã™ã‚‹äº‹æ¥­ã€‚<P></A>
+
+<tr><td>
+<A NAME="1081459">
+<a href="attribut.htm#1171528">description</A><P></A>
+<td>
+<A NAME="1081461">
+自由形å¼ã§ã®ã‚°ãƒ«ãƒ¼ãƒ—ã®èª¬æ˜Žã€‚<P></A>
+
+<tr><td>
+<A NAME="1081464">
+<a href="attribut.htm#1152959">memberCertificateDescription</A><P></A>
+<td>
+<A NAME="1081466">
+特定ã®è¨¼æ˜Žæ›¸ãŒã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã®ãƒ¡ãƒ³ãƒãƒ¼ã§ã‚ã‚‹ã‹ã©ã†ã‹ã®åˆ¤å®šã«ä½¿ç”¨ã•ã‚Œã‚‹å€¤ã€‚<P></A>
+
+<tr><td>
+<A NAME="1081469">
+<a href="attribut.htm#1281611">o</A><P></A>
+<td>
+<A NAME="1081471">
+証明書ã®ã‚°ãƒ«ãƒ¼ãƒ—を制御ã™ã‚‹çµ„織。<P></A>
+
+<tr><td>
+<A NAME="1081474">
+<a href="attribut.htm#1241174">ou</A><P></A>
+<td>
+<A NAME="1081476">
+グループãŒå±žã™ã‚‹çµ„ç¹”å˜ä½ã€‚<P></A>
+
+<tr><td>
+<A NAME="1081479">
+<a href="attribut.htm#1005719">owner</A><P></A>
+<td>
+<A NAME="1081481">
+グループã®ã‚ªãƒ¼ãƒŠã€‚<P></A>
+
+<tr><td>
+<A NAME="1081484">
+<a href="attribut.htm#1172500">seeAlso</A><P></A>
+<td>
+<A NAME="1081486">
+グループã«é–¢ä¿‚ã™ã‚‹æƒ…å ±ã¸ã®URL。<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1089068">&nbsp;
+</A>
+<A NAME="netscapeDirectoryServer">
+<H3> netscapeDirectoryServer</H3>
+</A>
+
+
+
+<A NAME="1089069">
+Netscape Directory Serverã®æƒ…報をã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§ä¿å­˜ã™ã‚‹ã‚ªãƒ–ジェクト クラス。ã“ã®ã‚ªãƒ–ジェクト クラスã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1097076">
+OID: <CODE>2.16.840.1.113730.3.2.23</CODE><P></A>
+
+<A NAME="1108594">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1108584">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1108586">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1108591">
+<a href="attribut.htm#1229677">objectClass</A><P></A>
+<td>
+<A NAME="1108593">
+(å¿…é ˆ) 予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1078109">&nbsp;
+</A>
+<A NAME="netscapeMachineData">
+<H3> netscapeMachineData</H3>
+</A>
+
+
+
+<A NAME="1097236">
+Netscape Directory ServerãŒãƒžã‚·ãƒ³ データã¨éžãƒžã‚·ãƒ³ データを区別ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã™ã‚‹ã‚ªãƒ–ジェクト クラス。マシン データã¯è¤‡è£½ä¸­ã«ãƒ•ã‚£ãƒ«ã‚¿ã«ã‚ˆã£ã¦é™¤å¤–ã•ã‚Œã¾ã™ã€‚ã“ã®ã‚ªãƒ–ジェクト クラスã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1097237">
+OID: <CODE>2.16.840.1.113730.3.2.32</CODE><P></A>
+
+
+<A NAME="1097231">&nbsp;
+</A>
+<A NAME="netscapeServer">
+<H3> netscapeServer</H3>
+</A>
+
+
+
+<A NAME="1098570">
+ディレクトリã«ãƒã‚¤ãƒ³ãƒ‰ã—ãŸã¨ãã€NetscapeサーãƒãŒä½¿ç”¨ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªã‚’識別ã™ã‚‹ã‚ªãƒ–ジェクト クラス。ã“ã®ã‚ªãƒ–ジェクト クラスã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚<P></A>
+
+<A NAME="1098571">
+OID: <CODE>2.16.840.1.113730.3.2.10</CODE><P></A>
+
+<A NAME="1078166">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1078113">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1078115">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1078118">
+<a href="attribut.htm#1171494">cn</A><P></A>
+<td>
+<A NAME="1078121">
+(å¿…é ˆ) サーãƒã®ä¸€èˆ¬å<P></A>
+
+<tr><td>
+<A NAME="1103187">
+<a href="attribut.htm#1032956">administratorContactInfo</A><P></A>
+<td>
+<A NAME="1103189">
+Netscapeサーãƒã®ç®¡ç†è²¬ä»»è€…ã«é–¢é€£ã—ãŸæƒ…å ±ã¸ã®URL。<P></A>
+
+<tr><td>
+<A NAME="1103192">
+<a href="attribut.htm#1098448">adminUrl</A><P></A>
+<td>
+<A NAME="1103194">
+NetscapeサーãƒãŒå®Ÿè¡Œä¸­ã®ç®¡ç†ã‚µãƒ¼ãƒã¸ã®URL。<P></A>
+
+<tr><td>
+<A NAME="1078124">
+<a href="attribut.htm#1171528">description</A><P></A>
+<td>
+<A NAME="1078126">
+サーãƒã®èª¬æ˜Žæ–‡ã€‚<P></A>
+
+<tr><td>
+<A NAME="1103205">
+<a href="attribut.htm#1032705">installationTimeStamp</A><P></A>
+<td>
+<A NAME="1103207">
+NetscapeãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚ŒãŸæ™‚刻。<P></A>
+
+<tr><td>
+<A NAME="1078137">
+<a href="attribut.htm#1093065">serverHostName</A><P></A>
+<td>
+<A NAME="1078139">
+NetscapeサーãƒãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„るホストå。<P></A>
+
+<tr><td>
+<A NAME="1078143">
+<a href="attribut.htm#1032412">serverProductName</A><P></A>
+<td>
+<A NAME="1078145">
+Netscapeサーãƒè£½å“å。<P></A>
+
+<tr><td>
+<A NAME="1103220">
+<a href="attribut.htm#1032294">serverRoot</A><P></A>
+<td>
+<A NAME="1103222">
+サームインストール ルートã¸ã®ãƒ‘ス。<P></A>
+
+<tr><td>
+<A NAME="1108651">
+<a href="attribut.htm#1032439">serverVersionNumber</A><P></A>
+<td>
+<A NAME="1108653">
+Netscapeサームãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1078148">
+<a href="attribut.htm#1196547">userPassword</A><P></A>
+<td>
+<A NAME="1078150">
+サーãƒã«å¯¾ã™ã‚‹ãƒ‘スワードをä¿æŒã—ã¦ã„ã¾ã™ã€‚<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1081708">&nbsp;
+</A>
+<A NAME="passwordObject">
+<H3> passwordObject</H3>
+</A>
+
+
+
+<A NAME="1098598">
+ディレクトリ内ã®ãƒ¦ãƒ¼ã‚¶ã®ãƒ‘スワード情報をå«ã‚€ã‚ªãƒ–ジェクト クラス。ã“ã®ã‚ªãƒ–ジェクト クラスã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚<P></A>
+
+<A NAME="1098599">
+OID: <CODE>2.16.840.1.113730.3.2.12</CODE><P></A>
+
+<A NAME="1081721">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1081712">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1081714">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1108661">
+<a href="attribut.htm#1229677">objectClass</A><P></A>
+<td>
+<A NAME="1108663">
+(å¿…é ˆ) 予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1103292">
+<a href="attribut.htm#1104078">accountUnlockTime</A><P></A>
+<td>
+<A NAME="1103294">
+ユーザ アカウントã®ãƒ­ãƒƒã‚¯ã‚’ã„ã¤è§£é™¤ã™ã‚‹ã‹ã‚’示ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1108668">
+<a href="attribut.htm#1103904">passwordExpirationTime</A><P></A>
+<td>
+<A NAME="1108670">
+ユーザ パスワードã®å¤±åŠ¹æ™‚期。<P></A>
+
+<tr><td>
+<A NAME="1081718">
+<a href="attribut.htm#1293088">passwordExpWarned</A><P></A>
+<td>
+<A NAME="1081720">
+ユーザã«é€ã£ãŸãƒ‘スワード失効ã®è­¦å‘Šã®è¨˜éŒ²ã‚’ä¿æŒã™ã‚‹ãŸã‚ã«Directory ServerãŒä½¿ç”¨ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1103273">
+<a href="attribut.htm#1104144">passwordHistory</A><P></A>
+<td>
+<A NAME="1103275">
+ユーザã®ãƒ‘スワード履歴。<P></A>
+
+<tr><td>
+<A NAME="1083145">
+<a href="attribut.htm#1103999">passwordRetryCount</A><P></A>
+<td>
+<A NAME="1083110">
+ユーザã®ãƒ‘スワード入力失敗回数。<P></A>
+
+<tr><td>
+<A NAME="1083153">
+<a href="attribut.htm#1152805">retryCountResetTime</A><P></A>
+<td>
+<A NAME="1083106">
+passwordRetryCountã‚’ã„ã¤ã‚¼ãƒ­ (0)ã«å†è¨­å®šã™ã‚‹ã‹ã‚’示ã—ã¾ã™ã€‚<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1081724">&nbsp;
+</A>
+<A NAME="passwordPolicy">
+<H3> passwordPolicy</H3>
+</A>
+
+
+
+<A NAME="1098606">
+全ディレクトリã«ã‚ã‚‹ã€ã™ã¹ã¦ã®ãƒ¦ãƒ¼ã‚¶ã®ãƒ‘スワード方é‡ã‚’å«ã‚€ã‚ªãƒ–ジェクト クラス。ã“ã®ã‚ªãƒ–ジェクト クラスã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚<P></A>
+
+<A NAME="1098607">
+OID: <CODE>2.16.840.1.113730.3.2.13</CODE><P></A>
+
+<A NAME="1081725">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1103339">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1103341">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1108677">
+<a href="attribut.htm#1229677">objectClass</A><P></A>
+<td>
+<A NAME="1108679">
+(å¿…é ˆ) 予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1103461">
+<a href="attribut.htm#1157269">passwordChange</A><P></A>
+<td>
+<A NAME="1103463">
+ユーザã«ã‚ˆã‚‹ãƒ‘スワードã®å¤‰æ›´ãŒã€å¿…è¦ã€å¯èƒ½ã€ä¸å¯èƒ½ã®ã„ãšã‚Œã§ã‚ã‚‹ã‹ã‚’定義ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1103478">
+<a href="attribut.htm#1157285">passwordCheckSyntax</A><P></A>
+<td>
+<A NAME="1103480">
+ユーザ パスワードã§æ§‹æ–‡ãƒã‚§ãƒƒã‚¯ã‚’実行ã™ã‚‹ã‹ã©ã†ã‹ã‚’定義ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1103346">
+<a href="attribut.htm#1155167">passwordExp</A><P></A>
+<td>
+<A NAME="1103348">
+ユーザ パスワードãŒå¤±åŠ¹ã™ã‚‹ã‹ã©ã†ã‹ã‚’定義ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1103444">
+<a href="attribut.htm#1104470">passwordInHistory</A><P></A>
+<td>
+<A NAME="1103446">
+パスワード履歴をä¿å­˜ã™ã‚‹å ´åˆã€å±¥æ­´ãƒªã‚¹ãƒˆã«è¨˜éŒ²ã™ã‚‹ãƒ‘スワード数を定義ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1103427">
+<a href="attribut.htm#1156663">passwordKeepHistory</A><P></A>
+<td>
+<A NAME="1103429">
+ユーザ パスワードã®å±¥æ­´ã‚’ä¿å­˜ã™ã‚‹ã‹ã©ã†ã‹ã‚’定義ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1103495">
+<a href="attribut.htm#1156671">passwordLockout</A><P></A>
+<td>
+<A NAME="1103497">
+é–“é•ã£ãŸãƒ‘スワードを特定回数使用ã—ãŸã‚‰ãƒ¦ãƒ¼ã‚¶ã‚’ç· ã‚出ã™ã‹ã©ã†ã‹ã‚’定義ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1103551">
+<a href="attribut.htm#1104188">passwordLockoutDuration</A><P></A>
+<td>
+<A NAME="1103553">
+特定回数ã®å†è©¦è¡Œå¾Œã«ãƒ¦ãƒ¼ã‚¶ã‚’ç· ã‚出ã™æœŸé–“を定義ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1103353">
+<a href="attribut.htm#1166286">passwordMaxAge</A><P></A>
+<td>
+<A NAME="1103355">
+パスワードã®æœ‰åŠ¹æœŸé–“を定義ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1103512">
+<a href="attribut.htm#1104715">passwordMaxFailure</A><P></A>
+<td>
+<A NAME="1103514">
+ユーザãŒç· ã‚出ã•ã‚Œã‚‹å‰ã«å…¥åŠ›ã§ãるパスワードã®æœ€å¤§å…¥åŠ›å›žæ•°ã€‚<P></A>
+
+<tr><td>
+<A NAME="1103360">
+<a href="attribut.htm#1104413">passwordMinLength</A><P></A>
+<td>
+<A NAME="1103362">
+ユーザ パスワードã«ä½¿ç”¨å¯èƒ½ãªæœ€å°æ–‡å­—数を定義ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1103529">
+<a href="attribut.htm#1104754">passwordResetDuration</A><P></A>
+<td>
+<A NAME="1103531">
+サーãƒãŒãƒ¦ãƒ¼ã‚¶ã‚’ç· ã‚出ã—ã¦ã‹ã‚‰ãƒªãƒˆãƒ©ã‚¤ カウントをゼロã«æˆ»ã™ã¾ã§ã®çµŒéŽæ™‚間を指定ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1103534">
+<a href="attribut.htm#1156969">passwordUnlock</A><P></A>
+<td>
+<A NAME="1103536">
+特定回数ã®å†è©¦è¡Œå¾Œã«ãƒ¦ãƒ¼ã‚¶ã‚’永久ã«ç· ã‚出ã™ã‹ã©ã†ã‹ã‚’定義ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1103387">
+<a href="attribut.htm#1104598">passwordWarning</A><P></A>
+<td>
+<A NAME="1103389">
+パスワード失効ã®è­¦å‘Šã‚’失効ã®ã©ã‚Œãらã„å‰ã«ã«ãƒ¦ãƒ¼ã‚¶ã«é€ä¿¡ã™ã‚‹ã‹ã‚’指定ã—ã¾ã™ã€‚<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1097669">&nbsp;
+</A>
+<A NAME="referral">
+<H3> referral</H3>
+</A>
+
+
+
+<A NAME="1097670">
+エントリã«ã€ã‚¹ãƒžãƒ¼ãƒˆå‚照を入れるã®ã‚’å¯èƒ½ã«ã™ã‚‹ã‚ªãƒ–ジェクト クラス。ã“ã®ã‚ªãƒ–ジェクト クラスã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚<P></A>
+
+<A NAME="1078339">
+OID: <CODE>2.16.840.1.113730.3.2.6</CODE><P></A>
+
+<A NAME="1098034">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1078330">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1078332">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1078336">
+<a href="attribut.htm#1100037">ref</A><P></A>
+<td>
+<A NAME="1078338">
+LDAP URLãŒä»¥ä¸‹ã®å½¢å¼ã§ä¿æŒã•ã‚Œã¦ã„ã¾ã™ã€‚<br>ldap://servername:portnumber/dn.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1097986">&nbsp;
+</A>
+<A NAME="subschema">
+<H3> subschema</H3>
+</A>
+
+
+
+<A NAME="1097987">
+与ãˆã‚‰ã‚ŒãŸDirectory Serverã®ã€ã™ã¹ã¦ã®å±žæ€§ã¨ã‚ªãƒ–ジェクト クラスをå«ã‚€ã‚ªãƒ–ジェクト クラス。ã“ã®ã‚ªãƒ–ジェクト クラスã¯ã€X.500 Directory Servicesã‹ã‚‰ç¶™æ‰¿ã•ã‚Œã¾ã—ãŸã€‚Directory Serverã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1098036">
+OID: <CODE>2.5.20.1</CODE><P></A>
+
+<A NAME="1097998">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1097990">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1097992">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1098110">
+<a href="attribut.htm#1242644">attributeTypes</A><P></A>
+<td>
+<A NAME="1098112">
+サブスキーマ内ã§ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ã‚¿ã‚¤ãƒ—。<P></A>
+
+<tr><td>
+<A NAME="1098086">
+<a href="attribut.htm#1283336">dITContentRules</A><P></A>
+<td>
+<A NAME="1098088">
+サブスキーマ内ã§ä½¿ç”¨ã•ã‚Œã‚‹ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª ツリー内容ã«é–¢ã™ã‚‹ãƒ«ãƒ¼ãƒ«ã‚’定義ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1098082">
+<a href="attribut.htm#1283313">dITStructureRules</A><P></A>
+<td>
+<A NAME="1098084">
+サブスキーマ内ã§ä½¿ç”¨ã•ã‚Œã‚‹ãƒ„リー構造ã®ãƒ«ãƒ¼ãƒ«ã‚’定義ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1098078">
+<a href="attribut.htm#1242887">matchingRules</A><P></A>
+<td>
+<A NAME="1098080">
+サブスキーマ内ã§ä½¿ç”¨ã•ã‚Œã‚‹ãƒžãƒƒãƒãƒ³ã‚° ルールを定義ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1098074">
+<a href="attribut.htm#1242961">matchingRuleUse</A><P></A>
+<td>
+<A NAME="1098076">
+サブスキーマ内ã§ãƒžãƒƒãƒãƒ³ã‚° ルールãŒé©ç”¨ã•ã‚Œã‚‹å±žæ€§ã‚¿ã‚¤ãƒ—を示ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1098070">
+<a href="attribut.htm#1282059">nameForms</A><P></A>
+<td>
+<A NAME="1098072">
+サブスキーマ内ã§ä½¿ç”¨ã•ã‚Œã‚‹ãƒ•ã‚©ãƒ¼ãƒ ã®åå‰ã‚’定義ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1098066">
+<a href="attribut.htm#1242815">objectClasses</A><P></A>
+<td>
+<A NAME="1098068">
+サブスキーマ内ã§ä½¿ç”¨ã•ã‚Œã‚‹ã‚ªãƒ–ジェクト クラスを定義ã—ã¾ã™ã€‚<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1097091">&nbsp;
+</A>
+<A NAME="Media Server Extensions">
+<H2> Media Serverã®æ‹¡å¼µ</H2>
+</A>
+
+<A NAME="1097095">
+以下ã¯ã€Netscape Media Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹<a href="objclass.htm#1097098">netscapeMediaServer</A>ã®ã‚ªãƒ–ジェクト クラスã®èª¬æ˜Žã§ã™ã€‚<P></A>
+
+
+<A NAME="1097098">&nbsp;
+</A>
+<A NAME="netscapeMediaServer">
+<H3> netscapeMediaServer</H3>
+</A>
+
+
+
+<A NAME="1097132">
+Netscape Media Serverã®æƒ…報をã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ä¿å­˜ã™ã‚‹ã‚ªãƒ–ジェクト クラス。ã“ã®ã‚ªãƒ–ジェクト クラスã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1097133">
+OID: <CODE>2.16.840.1.113730.3.2.25</CODE><P></A>
+
+<A NAME="1108693">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1108683">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1108685">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1108690">
+<a href="attribut.htm#1229677">objectClass</A><P></A>
+<td>
+<A NAME="1108692">
+(å¿…é ˆ) 予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1097135">&nbsp;
+</A>
+<A NAME="Messaging Server Extensions">
+<H2> Messaging Serverã®æ‹¡å¼µ</H2>
+</A>
+
+<A NAME="1108700">
+以下ã®ã‚ªãƒ–ジェクト クラスã¯Netscape Messaging Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã¾ã™ã€‚ã“ã“ã§èª¬æ˜Žã•ã‚Œã¦ã„るオブジェクト クラスã¯ã€<a href="objclass.htm#1108716">groupOfMailEnhancedUniqueNames</A>ã€<a href="objclass.htm#1077922">mailRecipient</A>ã€<a href="objclass.htm#1078007">mailGroup</A>ã€ãŠã‚ˆã³<a href="objclass.htm#1081545">netscapeMailServer</A>ã§ã™ã€‚<P></A>
+
+
+<A NAME="1108716">&nbsp;
+</A>
+<A NAME="groupOfMailEnhancedUniqueNames">
+<H3> groupOfMailEnhancedUniqueNames</H3>
+</A>
+
+
+
+<A NAME="1098817">
+Messaging ServerãŒãƒ¡ãƒ¼ãƒ« グループã«é–¢ã™ã‚‹æƒ…報をä¿å­˜ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã™ã‚‹Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã€‚ã“ã®ã‚ªãƒ–ジェクト クラスã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1098818">
+OID: <CODE>2.16.840.1.113730.3.2.5</CODE><P></A>
+
+<A NAME="1077920">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1077885">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1077887">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1077890">
+<a href="attribut.htm#1171494">cn</A><P></A>
+<td>
+<A NAME="1077893">
+(å¿…é ˆ) グループã®ä¸€èˆ¬å<P></A>
+
+<tr><td>
+<A NAME="1108721">
+<a href="attribut.htm#1229677">objectClass</A><P></A>
+<td>
+<A NAME="1108723">
+(å¿…é ˆ) 予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1077896">
+<a href="attribut.htm#1171367">businessCategory</A><P></A>
+<td>
+<A NAME="1077898">
+メール グループãŒé–¢ä¸Žã™ã‚‹äº‹æ¥­ã€‚<P></A>
+
+<tr><td>
+<A NAME="1077901">
+<a href="attribut.htm#1171528">description</A><P></A>
+<td>
+<A NAME="1077903">
+グループã®èª¬æ˜Žæ–‡ã€‚<P></A>
+
+<tr><td>
+<A NAME="1108728">
+<a href="attribut.htm#1026103">mailEnhancedUniqueMember</A><P></A>
+<td>
+<A NAME="1108730">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1077906">
+<a href="attribut.htm#1281611">o</A><P></A>
+<td>
+<A NAME="1077908">
+グループãŒå±žã™ã‚‹çµ„織。<P></A>
+
+<tr><td>
+<A NAME="1108738">
+<a href="attribut.htm#1241174">ou</A><P></A>
+<td>
+<A NAME="1108740">
+グループãŒå±žã™ã‚‹çµ„ç¹”å˜ä½ã€‚<P></A>
+
+<tr><td>
+<A NAME="1077912">
+<a href="attribut.htm#1005719">owner</A><P></A>
+<td>
+<A NAME="1077914">
+グループã®ã‚ªãƒ¼ãƒŠã€‚<P></A>
+
+<tr><td>
+<A NAME="1077917">
+<a href="attribut.htm#1172500">seeAlso</A><P></A>
+<td>
+<A NAME="1077919">
+グループã«é–¢ä¿‚ã™ã‚‹æƒ…å ±ã¸ã®URL。<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1077922">&nbsp;
+</A>
+<A NAME="mailRecipient">
+<H3> mailRecipient</H3>
+</A>
+
+
+
+<A NAME="1077923">
+inetOrgPersonã®æ©Ÿèƒ½æ‹¡å¼µã¨ã—ã¦ä½¿ç”¨ã™ã‚‹ã‚ªãƒ–ジェクト クラスã§ã€Netscape Messaging Serverユーザを定義ã—ã¾ã™ã€‚ã™ãªã‚ã¡ã€mailRecipientã¯ãƒ¡ãƒ¼ãƒ« アカウントを表示ã—ã¾ã™ã€‚ã“ã®ã‚ªãƒ–ジェクト クラスã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚<P></A>
+
+<A NAME="1097030">
+OID: <CODE>2.16.840.1.113730.3.2.3</CODE><P></A>
+
+<A NAME="1078005">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1087545">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1087547">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1087550">
+<a href="attribut.htm#1171494">cn</A><P></A>
+<td>
+<A NAME="1087553">
+(å¿…é ˆ) ユーザã®ä¸€èˆ¬å<P></A>
+
+<tr><td>
+<A NAME="1087556">
+<a href="attribut.htm#1189404">mail</A><P></A>
+<td>
+<A NAME="1087558">
+ユーザã®é›»å­ãƒ¡ãƒ¼ãƒ« アドレス。<P></A>
+
+<tr><td>
+<A NAME="1087561">
+<a href="attribut.htm#1024020">mailAccessDomain</A><P></A>
+<td>
+<A NAME="1087563">
+メール ユーザãŒãƒ¡ãƒ¼ãƒ«ã‚’入手ã™ã‚‹ã®ã«ãƒ­ã‚°ã‚¤ãƒ³å…ƒã¨ã—ã¦ä½¿ç”¨ã§ãるドメイン。<P></A>
+
+<tr><td>
+<A NAME="1103655">
+<a href="attribut.htm#1024250">mailAlternateAddress</A><P></A>
+<td>
+<A NAME="1087568">
+ユーザã®ä»£æ›¿é›»å­ãƒ¡ãƒ¼ãƒ« アドレス。複数ã®ä»£æ›¿é›»å­ãƒ¡ãƒ¼ãƒ« アドレスãŒå¯èƒ½ã§ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1087571">
+<a href="attribut.htm#1024094">mailAutoReplyMode</A><P></A>
+<td>
+<A NAME="1087573">
+メール ユーザã®ãŸã‚ã«è¨­å®šã•ã‚ŒãŸè‡ªå‹•å¿œç­”モード。<P></A>
+
+<tr><td>
+<A NAME="1087576">
+<a href="attribut.htm#1024125">mailAutoReplyText</A><P></A>
+<td>
+<A NAME="1087578">
+自動応答ãŒãƒ¦ãƒ¼ã‚¶ã«é€ä¿¡ã•ã‚Œã‚‹éš›ã®é€ä¿¡ãƒ†ã‚­ã‚¹ãƒˆã€‚<P></A>
+
+<tr><td>
+<A NAME="1087581">
+<a href="attribut.htm#1024295">mailDeliveryOption</A><P></A>
+<td>
+<A NAME="1087583">
+メール ユーザã®ãŸã‚ã«ä½¿ç”¨ã•ã‚Œã‚‹ãƒ¡ãƒ¼ãƒ«é…信機構。<P></A>
+
+<tr><td>
+<A NAME="1087586">
+<a href="attribut.htm#1026154">mailForwardingAddress</A><P></A>
+<td>
+<A NAME="1087588">
+ユーザã®ãƒ¡ãƒ¼ãƒ«ã®è»¢é€å…ˆãƒ¡ãƒ¼ãƒ« アドレス。<P></A>
+
+<tr><td>
+<A NAME="1087591">
+<a href="attribut.htm#1024314">mailHost</A><P></A>
+<td>
+<A NAME="1087593">
+ユーザã®ãƒ¡ãƒ¼ãƒ« アカウントãŒå­˜åœ¨ã™ã‚‹ãƒ›ã‚¹ãƒˆã€‚<P></A>
+
+<tr><td>
+<A NAME="1087596">
+<a href="attribut.htm#1024377">mailMessageStore</A><P></A>
+<td>
+<A NAME="1087598">
+ユーザã®ãƒ¡ãƒ¼ãƒ«ãƒœãƒƒã‚¯ã‚¹ãŒå«ã¾ã‚Œã¦ã„るディレクトリã¸ã®ãƒ‘ス。<P></A>
+
+<tr><td>
+<A NAME="1087601">
+<a href="attribut.htm#1024400">mailProgramDeliveryInfo</A><P></A>
+<td>
+<A NAME="1087603">
+プログラムã•ã‚ŒãŸãƒ¡ãƒ¼ãƒ«é…ä¿¡ã«ä½¿ç”¨ã•ã‚Œã‚‹ã‚³ãƒžãƒ³ãƒ‰ã€‚<P></A>
+
+<tr><td>
+<A NAME="1087606">
+<a href="attribut.htm#1024509">mailQuota</A><P></A>
+<td>
+<A NAME="1087608">
+ユーザã®ãƒ¡ãƒ¼ãƒ«ãƒœãƒƒã‚¯ã‚¹ã®æœ€å¤§è¨±å®¹ãƒ‡ã‚£ã‚¹ã‚¯å®¹é‡ã€‚<P></A>
+
+<tr><td>
+<A NAME="1087611">
+<a href="attribut.htm#1229561">multiLineDescription</A><P></A>
+<td>
+<A NAME="1087613">
+メール ユーザã«ã¤ã„ã¦ã®èª¬æ˜Žæ–‡ã€‚<P></A>
+
+<tr><td>
+<A NAME="1087616">
+<a href="attribut.htm#1296804">uid</A><P></A>
+<td>
+<A NAME="1087618">
+メール ユーザã®ãƒ¦ãƒ¼ã‚¶ID。<P></A>
+
+<tr><td>
+<A NAME="1087621">
+<a href="attribut.htm#1196547">userPassword</A><P></A>
+<td>
+<A NAME="1087623">
+メール ユーザãŒãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ãƒã‚¤ãƒ³ãƒ‰ã§ãã‚‹ãŸã‚ã®ãƒ‘スワード。<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1078007">&nbsp;
+</A>
+<A NAME="mailGroup">
+<H3> mailGroup</H3>
+</A>
+
+
+
+<A NAME="1078009">
+<a href="objclass.htm#1005294">groupOfUniqueNames</A>ã®æ‹¡å¼µæ©Ÿèƒ½ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹ã‚ªãƒ–ジェクト クラスã§ã€ãƒ¡ãƒ¼ãƒ«å—å–人ã®ã‚°ãƒ«ãƒ¼ãƒ—を定義ã—ã¾ã™ã€‚ã™ãªã‚ã¡ã€mailGroupã¯ã€Messaging Serverメール リストã®ä¿å­˜ã«ä½¿ç”¨ã•ã‚Œã¾ã™ã€‚ã“ã®ã‚ªãƒ–ジェクト クラスã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚<P></A>
+
+<A NAME="1097032">
+OID: <CODE>2.16.840.1.113730.3.2.4</CODE><P></A>
+
+<A NAME="1078087">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1078012">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1078014">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1078017">
+<a href="attribut.htm#1189404">mail</A><P></A>
+<td>
+<A NAME="1078020">
+(å¿…é ˆ) グループã®é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã€‚<P></A>
+
+<tr><td>
+<A NAME="1108751">
+<a href="attribut.htm#1229677">objectClass</A><P></A>
+<td>
+<A NAME="1108753">
+(å¿…é ˆ) 予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1078023">
+<a href="attribut.htm#1171494">cn</A><P></A>
+<td>
+<A NAME="1078025">
+クループã®ä¸€èˆ¬å<P></A>
+
+<tr><td>
+<A NAME="1103727">
+<a href="attribut.htm#1024250">mailAlternateAddress</A><P></A>
+<td>
+<A NAME="1078030">
+グループã®ä»£æ›¿é›»å­ãƒ¡ãƒ¼ãƒ« アドレス。<P></A>
+
+<tr><td>
+<A NAME="1078033">
+<a href="attribut.htm#1024314">mailHost</A><P></A>
+<td>
+<A NAME="1078035">
+グループã®ãƒ¡ãƒ¼ãƒ« アカウントãŒå­˜åœ¨ã™ã‚‹ãƒ›ã‚¹ãƒˆã‚’示ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1078038">
+<a href="attribut.htm#1025144">mgrpAllowedBroadcaster</A><P></A>
+<td>
+<A NAME="1078040">
+メール グループã«ãƒ¡ãƒ¼ãƒ«ã‚’é€ä¿¡ã§ãるメール ユーザを示ã™URL。<P></A>
+
+<tr><td>
+<A NAME="1078043">
+<a href="attribut.htm#1024569">mgrpAllowedDomain</A><P></A>
+<td>
+<A NAME="1078045">
+ユーザãŒãƒ¡ãƒ¼ãƒ« グループã«ãƒ¡ãƒ¼ãƒ«ã‚’é€ä¿¡ã§ãã‚‹é€ä¿¡å…ƒãƒ‰ãƒ¡ã‚¤ãƒ³ã€‚<P></A>
+
+<tr><td>
+<A NAME="1078048">
+<a href="attribut.htm#1278551">mgrpDeliverTo</A><P></A>
+<td>
+<A NAME="1078050">
+メール グループã®ãƒ¡ãƒ³ãƒãƒ¼ã‚’指定ã™ã‚‹ä»£æ›¿æ–¹æ³•ã€‚<P></A>
+
+<tr><td>
+<A NAME="1078053">
+<a href="attribut.htm#1025568">mgrpErrorsTo</A><P></A>
+<td>
+<A NAME="1078055">
+メールé…信エラー メッセージã®é€ä¿¡å…ˆãƒ¡ãƒ¼ãƒ« アドレス。<P></A>
+
+<tr><td>
+<A NAME="1078058">
+<a href="attribut.htm#1025705">mgrpModerator</A><P></A>
+<td>
+<A NAME="1078060">
+æ‹’å¦ã•ã‚ŒãŸãƒ¡ãƒ¼ãƒ« メッセージã®é€ä¿¡å…ˆãƒ¡ãƒ¼ãƒ« アドレス。<P></A>
+
+<tr><td>
+<A NAME="1078063">
+<a href="attribut.htm#1025878">mgrpMsgMaxSize</A><P></A>
+<td>
+<A NAME="1078065">
+メール グループã«é€ä¿¡ã§ãる最大メッセージ サイズ。<P></A>
+
+<tr><td>
+<A NAME="1078068">
+<a href="attribut.htm#1025035">mgrpMsgRejectAction</A><P></A>
+<td>
+<A NAME="1078070">
+メール グループã«é€ä¿¡ã•ã‚ŒãŸãƒ¡ãƒ¼ãƒ«ãŒæ‹’å¦ã•ã‚ŒãŸå ´åˆã®å¯¾ç­–を示ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1078073">
+<a href="attribut.htm#1025981">mgrpMsgRejectText</A><P></A>
+<td>
+<A NAME="1078075">
+メール グループã«é€ä¿¡ã•ã‚ŒãŸãƒ¡ãƒ¼ãƒ«ãŒæ‹’å¦ã•ã‚ŒãŸå ´åˆã«é€ä¿¡ã™ã‚‹ãƒ†ã‚­ã‚¹ãƒˆã€‚<P></A>
+
+<tr><td>
+<A NAME="1078078">
+<a href="attribut.htm#1024670">mgrpRFC822MailMember</A><P></A>
+<td>
+<A NAME="1078080">
+実際ã¯ãƒ¡ãƒ¼ãƒ« グループã®ãƒ¡ãƒ³ãƒãƒ¼ã§ã¯ãªã„ユーザã§ã€ãƒ¡ãƒ¼ãƒ« グループã«é€ä¿¡ã•ã‚ŒãŸãƒ¡ãƒ¼ãƒ«ã‚’å—ã‘å–ã‚‹å—信者。<P></A>
+
+<tr><td>
+<A NAME="1078084">
+<a href="attribut.htm#1005719">owner</A><P></A>
+<td>
+<A NAME="1078086">
+メール グループã®ã‚ªãƒ¼ãƒŠã®è­˜åˆ¥å。<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1081545">&nbsp;
+</A>
+<A NAME="netscapeMailServer">
+<H3> netscapeMailServer</H3>
+</A>
+
+
+
+<A NAME="1081546">
+Netscape Messaging Serverã®æƒ…報をã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ä¿å­˜ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã™ã‚‹ã‚ªãƒ–ジェクト クラス。ã“ã®ã‚ªãƒ–ジェクト クラスã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1097044">
+OID: <CODE>2.16.840.1.113730.3.2.24</CODE><P></A>
+
+<A NAME="1108767">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1108757">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1108759">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1108764">
+<a href="attribut.htm#1229677">objectClass</A><P></A>
+<td>
+<A NAME="1108766">
+(å¿…é ˆ) 予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1086191">&nbsp;
+</A>
+<A NAME="Proxy Server Extensions">
+<H2> Proxy Serverã®æ‹¡å¼µ</H2>
+</A>
+
+<A NAME="1086195">
+以下ã¯ã€Netscape Proxy Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹<a href="objclass.htm#1081588">netscapeProxyServer</A>ã®ã‚ªãƒ–ジェクト クラスã®èª¬æ˜Žã§ã™ã€‚<P></A>
+
+
+<A NAME="1081588">&nbsp;
+</A>
+<A NAME="netscapeProxyServer">
+<H3> netscapeProxyServer</H3>
+</A>
+
+
+
+<A NAME="1081589">
+Netscape Proxy Serverã®æƒ…報をã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§ä¿å­˜ã™ã‚‹ã‚ªãƒ–ジェクト クラス。ã“ã®ã‚ªãƒ–ジェクト クラスã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1097160">
+OID: <CODE>2.16.840.1.113730.3.2.28</CODE><P></A>
+
+<A NAME="1108781">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1108771">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1108773">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1108778">
+<a href="attribut.htm#1229677">objectClass</A><P></A>
+<td>
+<A NAME="1108780">
+(å¿…é ˆ) 予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1081607">&nbsp;
+</A>
+<A NAME="Web Server Extensions">
+<H2> Web Serverã®æ‹¡å¼µ</H2>
+</A>
+
+<A NAME="1081611">
+以下ã¯ã€Netscape Web Serverã«ã‚ˆã£ã¦ä½¿ç”¨ã•ã‚Œã‚‹<a href="objclass.htm#1081614">netscapeWebServer</A>ã®ã‚ªãƒ–ジェクト クラスã®èª¬æ˜Žã§ã™ã€‚<P></A>
+
+
+<A NAME="1081614">&nbsp;
+</A>
+<A NAME="netscapeWebServer">
+<H3> netscapeWebServer</H3>
+</A>
+
+
+
+<A NAME="1081615">
+Netscapeウェブ サーãƒã®æƒ…報をã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§ä¿å­˜ã™ã‚‹ã‚ªãƒ–ジェクト クラス。ã“ã®ã‚ªãƒ–ジェクト クラスã¯æ¨™æº–LDAPスキーマã¸ã®Netscape社ã®æ‹¡å¼µæ©Ÿèƒ½ã§ã™ã€‚å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1108796">
+OID: <CODE>2.16.840.1.113730.3.2.29</CODE><P></A>
+
+<A NAME="1108814">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1108804">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1108806">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1108811">
+<a href="attribut.htm#1229677">objectClass</A><P></A>
+<td>
+<A NAME="1108813">
+(å¿…é ˆ) 予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1108799">&nbsp;
+</A>
+<A NAME="Reserved Object Classes">
+<H2> 予約ã•ã‚ŒãŸã‚ªãƒ–ジェクト クラス</H2>
+</A>
+
+<A NAME="1108800">
+ã“ã®ç¯€ã§ã¯ã€æœ¬ãƒªãƒªãƒ¼ã‚¹ã§å®šç¾©ã•ã‚Œã¦ã„ãªã„ã‹ã€Netscape Directory ServerãŒå°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã—ã¦ã„るオブジェクト クラスã«ã¤ã„ã¦èª¬æ˜Žã—ã¾ã™ã€‚<P></A>
+
+
+<A NAME="1091117">&nbsp;
+</A>
+<A NAME="account">
+<H3> account</H3>
+</A>
+
+
+
+<A NAME="1091854">
+予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1098856">
+OID: <CODE>0.9.2342.19200300.100.4.5</CODE><P></A>
+
+<A NAME="1091903">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1091857">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1091859">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1091907">
+<a href="attribut.htm#1296804">uid</A><P></A>
+<td>
+<A NAME="1091909">
+(å¿…é ˆ) アカウントã®ãƒ¦ãƒ¼ã‚¶ID。<P></A>
+
+<tr><td>
+<A NAME="1091874">
+<a href="attribut.htm#1171528">description</A><P></A>
+<td>
+<A NAME="1091876">
+アカウントã®èª¬æ˜Žæ–‡ã€‚<P></A>
+
+<tr><td>
+<A NAME="1091917">
+<a href="attribut.htm#1201958">host</A><P></A>
+<td>
+<A NAME="1091919">
+アカウントãŒå­˜åœ¨ã™ã‚‹ã‚³ãƒ³ãƒ”ュータã®ãƒ›ã‚¹ãƒˆå。<P></A>
+
+<tr><td>
+<A NAME="1091879">
+<a href="attribut.htm#1244534">l</A><P></A>
+<td>
+<A NAME="1091881">
+アカウントãŒå­˜åœ¨ã™ã‚‹å ´æ‰€ã€‚<P></A>
+
+<tr><td>
+<A NAME="1091884">
+<a href="attribut.htm#1281611">o</A><P></A>
+<td>
+<A NAME="1091886">
+アカウントãŒå±žã™ã‚‹çµ„織。<P></A>
+
+<tr><td>
+<A NAME="1091890">
+<a href="attribut.htm#1241174">ou</A><P></A>
+<td>
+<A NAME="1091892">
+アカウントãŒå±žã™ã‚‹çµ„ç¹”å˜ä½ã€‚<P></A>
+
+<tr><td>
+<A NAME="1091895">
+<a href="attribut.htm#1172500">seeAlso</A><P></A>
+<td>
+<A NAME="1091897">
+アカウントã«é–¢ä¿‚ã™ã‚‹æƒ…å ±ã¸ã®URL。<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1089961">&nbsp;
+</A>
+<A NAME="alias">
+<H3> alias</H3>
+</A>
+
+
+
+<A NAME="1089993">
+ディレクトリ ツリーã®ä»–ã®ã‚¨ãƒ³ãƒˆãƒªã‚’指ã™ãŸã‚ã«ä½¿ç”¨ã™ã‚‹ã‚ªãƒ–ジェクト クラス。ã“ã®ã‚ªãƒ–ジェクト クラスã¯ã€X.500 Directory Servicesã‹ã‚‰ç¶™æ‰¿ã•ã‚Œã¾ã—ãŸã€‚予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1096898">
+OID: <CODE>2.5.6.1</CODE><P></A>
+
+<A NAME="1090031">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1089996">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1089998">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1090103">
+<a href="attribut.htm#1201653">aliasedObjectName</A><P></A>
+<td>
+<A NAME="1090004">
+(å¿…é ˆ) エイリアスã§ã‚ã‚‹ã“ã®ã‚¨ãƒ³ãƒˆãƒªã®å…ƒã¨ãªã‚‹ã‚¨ãƒ³ãƒˆãƒªã®è­˜åˆ¥å。<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1091270">&nbsp;
+</A>
+<A NAME="applicationEntity">
+<H3> applicationEntity</H3>
+</A>
+
+
+
+<A NAME="1106068">
+ディレクトリã§ã‚¢ãƒ—リケーション エンティティを表示ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã™ã‚‹ã‚ªãƒ–ジェクト クラス。ã“ã®ã‚ªãƒ–ジェクト クラスã¯ã€X.500 Directory Servicesã‹ã‚‰ç¶™æ‰¿ã•ã‚Œã¾ã—ãŸã€‚予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1096990">
+OID: <CODE>2.5.6.12</CODE><P></A>
+
+<A NAME="1091320">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1091274">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1091276">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1091279">
+<a href="attribut.htm#1202620">presentationAddress</A><P></A>
+<td>
+<A NAME="1091282">
+(å¿…é ˆ) エンティティã®OSIプレゼンテーション アドレス。<P></A>
+
+<tr><td>
+<A NAME="1091285">
+<a href="attribut.htm#1171494">cn</A><P></A>
+<td>
+<A NAME="1091288">
+(å¿…é ˆ) エンティティã®ä¸€èˆ¬å。<P></A>
+
+<tr><td>
+<A NAME="1091291">
+<a href="attribut.htm#1171528">description</A><P></A>
+<td>
+<A NAME="1091293">
+エンティティã®èª¬æ˜Žæ–‡ã€‚<P></A>
+
+<tr><td>
+<A NAME="1091296">
+<a href="attribut.htm#1244534">l</A><P></A>
+<td>
+<A NAME="1091298">
+エンティティãŒå­˜åœ¨ã™ã‚‹å ´æ‰€ã®åœ°åŸŸæ€§ã€‚<P></A>
+
+<tr><td>
+<A NAME="1103836">
+<a href="attribut.htm#1281611">o</A><P></A>
+<td>
+<A NAME="1091303">
+エンティティãŒå±žã™ã‚‹çµ„織。<P></A>
+
+<tr><td>
+<A NAME="1103841">
+<a href="attribut.htm#1241174">ou</A><P></A>
+<td>
+<A NAME="1091309">
+エンティティãŒå±žã™ã‚‹çµ„ç¹”å˜ä½ã€‚<P></A>
+
+<tr><td>
+<A NAME="1103846">
+<a href="attribut.htm#1172500">seeAlso</A><P></A>
+<td>
+<A NAME="1091314">
+エンティティã«é–¢ä¿‚ã™ã‚‹æƒ…å ±ã¸ã®URL。<P></A>
+
+<tr><td>
+<A NAME="1091317">
+<a href="attribut.htm#1202747">supportedApplicationContext</A><P></A>
+<td>
+<A NAME="1091319">
+OSIアプリケーション コンテキストã®è­˜åˆ¥å­ã€‚<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1090381">&nbsp;
+</A>
+<A NAME="applicationProcess">
+<H3> applicationProcess</H3>
+</A>
+
+
+
+<A NAME="1106091">
+ディレクトリã§ã‚¢ãƒ—リケーション プロセスを表示ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªã®å®šç¾©ã«ä½¿ç”¨ã™ã‚‹ã‚ªãƒ–ジェクト クラス。ã“ã®ã‚ªãƒ–ジェクト クラスã¯ã€X.500 Directory Servicesã‹ã‚‰ç¶™æ‰¿ã•ã‚Œã¾ã—ãŸã€‚予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1096988">
+OID: <CODE>2.5.6.11</CODE><P></A>
+
+<A NAME="1090515">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1090555">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1090557">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1103871">
+<a href="attribut.htm#1171494">cn</A><P></A>
+<td>
+<A NAME="1090563">
+(å¿…é ˆ) プロセスã®ä¸€èˆ¬å。<P></A>
+
+<tr><td>
+<A NAME="1103876">
+<a href="attribut.htm#1171528">description</A><P></A>
+<td>
+<A NAME="1090574">
+プロセスã®èª¬æ˜Žæ–‡ã€‚<P></A>
+
+<tr><td>
+<A NAME="1103866">
+<a href="attribut.htm#1244534">l</A><P></A>
+<td>
+<A NAME="1090599">
+プロセスã®ã‚る場所ã®åœ°åŸŸæ€§ã€‚<P></A>
+
+<tr><td>
+<A NAME="1103856">
+<a href="attribut.htm#1241174">ou</A><P></A>
+<td>
+<A NAME="1090585">
+プロセスãŒå±žã™ã‚‹çµ„ç¹”å˜ä½ã€‚<P></A>
+
+<tr><td>
+<A NAME="1103861">
+<a href="attribut.htm#1172500">seeAlso</A><P></A>
+<td>
+<A NAME="1090590">
+プロセスã«é–¢ä¿‚ã™ã‚‹æƒ…å ±ã¸ã®URL。<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1091421">&nbsp;
+</A>
+<A NAME="cacheObject">
+<H3> cacheObject</H3>
+</A>
+
+
+
+<A NAME="1093594">
+timeToLive (<a href="attribut.htm#1202798">ttl</A>)属性をå«ã‚€ã‚¨ãƒ³ãƒˆãƒªã‚’å¯èƒ½ã«ã™ã‚‹ã‚ªãƒ–ジェクト クラス。<P></A>
+
+<A NAME="1098472">
+OID: <CODE>1.3.6.1.4.1.250.3.18</CODE><P></A>
+
+<A NAME="1093607">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1093597">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1093599">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1093604">
+<a href="attribut.htm#1202798">ttl</A><P></A>
+<td>
+<A NAME="1093606">
+エントリã«ã¤ã„ã¦ã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã•ã‚ŒãŸæƒ…å ±ãŒæœ‰åŠ¹ã§ã‚ã‚‹ã¨ã™ã‚‹æ™‚間(秒å˜ä½ï¼‰ã€‚<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1091225">&nbsp;
+</A>
+<A NAME="certificationAuthority">
+<H3> certificationAuthority</H3>
+</A>
+
+
+
+<A NAME="1091226">
+ディレクトリã®è¨¼æ˜Žæ›¸ç™ºè¡Œæ¨©é™ï¼ˆCertificate Authoritiesã€CAs)ã«é–¢ã™ã‚‹æƒ…報をä¿å­˜ã™ã‚‹ã‚ªãƒ–ジェクト クラス。ã“ã®ã‚ªãƒ–ジェクト クラスã¯ã€X.500 Directory Servicesã‹ã‚‰ç¶™æ‰¿ã•ã‚Œã¾ã—ãŸã€‚予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1097006">
+OID: <CODE>2.5.6.16</CODE><P></A>
+
+<A NAME="1091261">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1091229">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1091231">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1091236">
+<a href="attribut.htm#1208584">cACertificate;binary</A><P></A>
+<td>
+<A NAME="1091239">
+(å¿…é ˆ) 証明書èªå¯è€…ã‹ã‚‰ã®è¨¼æ˜Žæ›¸ãŒãƒã‚¤ãƒŠãƒªå½¢å¼ã€‚<P></A>
+
+<tr><td>
+<A NAME="1091243">
+<a href="attribut.htm#1207178">authorityRevocationList;binary</A><P></A>
+<td>
+<A NAME="1091246">
+ã™ã§ã«ç„¡åŠ¹ã«ã•ã‚Œã¦ã„ã‚‹ã®ã§ã€æœ‰åŠ¹ã‚ã‚‹ã„ã¯å®‰å…¨ã¨ã¯ã¿ãªã•ã‚Œãªã„CA証明書ã®ãƒªã‚¹ãƒˆ(ãƒã‚¤ãƒŠãƒªå½¢å¼)。<P></A>
+
+<tr><td>
+<A NAME="1091250">
+<a href="attribut.htm#1208727">certificateRevocationList;binary</A><P></A>
+<td>
+<A NAME="1091253">
+ã™ã§ã«ç„¡åŠ¹ã«ã•ã‚ŒãŸãƒ¦ãƒ¼ã‚¶è¨¼æ˜Žæ›¸ãƒªã‚¹ãƒˆ(ãƒã‚¤ãƒŠãƒªå½¢å¼)。<P></A>
+
+<tr><td>
+<A NAME="1091258">
+<a href="attribut.htm#1208791">crossCertificatePair;binary</A><P></A>
+<td>
+<A NAME="1091260">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1097268">&nbsp;
+</A>
+<A NAME="dcObject">
+<H3> dcObject</H3>
+</A>
+
+
+
+<A NAME="1097806">
+エントリã®ãƒ‰ãƒ¡ã‚¤ãƒ³ コンãƒãƒ¼ãƒãƒ³ãƒˆã®å®šç¾©ã‚’å¯èƒ½ã«ã™ã‚‹ã‚ªãƒ–ジェクト クラス。ã“ã®ã‚ªãƒ–ジェクト クラスã¯ã€é€šå¸¸ã€<a href="objclass.htm#1004980">organization</A>ã€<a href="objclass.htm#1005108">organizationalUnit</A>ã€ã¾ãŸã¯<a href="objclass.htm#1005427">locality</A>ãªã©ã€ä»–ã®ã‚ªãƒ–ジェクト クラスã¨ã®çµ„åˆã›ã§ä½¿ç”¨ã•ã‚Œã‚‹ã®ã§ã€å‰¯æ¬¡çš„オブジェクトã¨å®šç¾©ã•ã‚Œã¾ã™ã€‚例ãˆã°ã€ä»¥ä¸‹ã®ã‚‚ã®ãŒã‚ã‚Šã¾ã™ã€‚<P></A>
+<PRE><A NAME="1097855">
+dn: dc=airius,dc=com<br>objectClass: top<br>objectClass: organization<br>objectClass: dcObject<br>dc: airius<br>o: Airius Corp.
+</A>
+</PRE>
+<A NAME="1097270">
+OID: <CODE>1.3.6.1.4.1.1466.344</CODE><P></A>
+
+<A NAME="1097318">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1097273">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1097275">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1097278">
+<a href="attribut.htm#1245094">dc</A><P></A>
+<td>
+<A NAME="1097281">
+(å¿…é ˆ) エントリã®ãƒ‰ãƒ¡ã‚¤ãƒ³ コンãƒãƒ¼ãƒãƒ³ãƒˆã€‚<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1090760">&nbsp;
+</A>
+<A NAME="device">
+<H3> device</H3>
+</A>
+
+
+
+<A NAME="1090817">
+プリンタãªã©ã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ デãƒã‚¤ã‚¹ã®æƒ…報をã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§ä¿å­˜ã™ã‚‹ã‚ªãƒ–ジェクト クラス。ã“ã®ã‚ªãƒ–ジェクト クラスã¯ã€X.500 Directory Servicesã‹ã‚‰ç¶™æ‰¿ã•ã‚Œã¾ã—ãŸã€‚予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1096996">
+OID: <CODE>2.5.6.14</CODE><P></A>
+
+<A NAME="1090828">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1103908">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1103910">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1103915">
+<a href="attribut.htm#1171494">cn</A><P></A>
+<td>
+<A NAME="1103917">
+(å¿…é ˆ) デãƒã‚¤ã‚¹ã®ä¸€èˆ¬å。<P></A>
+
+<tr><td>
+<A NAME="1103922">
+<a href="attribut.htm#1171528">description</A><P></A>
+<td>
+<A NAME="1103924">
+デãƒã‚¤ã‚¹ã®èª¬æ˜Žæ–‡ã€‚<P></A>
+
+<tr><td>
+<A NAME="1103960">
+<a href="attribut.htm#1244534">l</A><P></A>
+<td>
+<A NAME="1103929">
+デãƒã‚¤ã‚¹ã®ã‚る場所ã®åœ°åŸŸæ€§ã€‚<P></A>
+
+<tr><td>
+<A NAME="1103965">
+<a href="attribut.htm#1281611">o</A><P></A>
+<td>
+<A NAME="1103934">
+デãƒã‚¤ã‚¹ãŒå±žã™ã‚‹çµ„織。<P></A>
+
+<tr><td>
+<A NAME="1103970">
+<a href="attribut.htm#1241174">ou</A><P></A>
+<td>
+<A NAME="1103940">
+デãƒã‚¤ã‚¹ãŒå±žã™ã‚‹çµ„ç¹”å˜ä½ã€‚<P></A>
+
+<tr><td>
+<A NAME="1103943">
+<a href="attribut.htm#1005719">owner</A><P></A>
+<td>
+<A NAME="1103945">
+デãƒã‚¤ã‚¹ã®è²¬ä»»è€…ã®è­˜åˆ¥å。<P></A>
+
+<tr><td>
+<A NAME="1103948">
+<a href="attribut.htm#1172500">seeAlso</A><P></A>
+<td>
+<A NAME="1103950">
+デãƒã‚¤ã‚¹ã«é–¢ä¿‚ã™ã‚‹æƒ…å ±ã¸ã®URL。<P></A>
+
+<tr><td>
+<A NAME="1103953">
+<a href="attribut.htm#1202700">serialNumber</A><P></A>
+<td>
+<A NAME="1103955">
+デãƒã‚¤ã‚¹ã®ã‚·ãƒªã‚¢ãƒ«ç•ªå·ã€‚<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1091390">&nbsp;
+</A>
+<A NAME="DNSDomain">
+<H3> DNSDomain</H3>
+</A>
+
+
+
+<A NAME="1093025">
+ドメインã®ã‚µãƒ–クラスã¨ã—ã¦ä½¿ç”¨ã™ã‚‹ã‚ªãƒ–ジェクト クラスã§ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«DNSリソース レコードをä¿å­˜ã—ã¾ã™ã€‚予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1096887">
+OID: <CODE>0.9.2342.19200300.100.4.15</CODE><P></A>
+
+<A NAME="1093023">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1093008">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1093010">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1093013">
+<a href="attribut.htm#1201841">dNSRecord</A><P></A>
+<td>
+<A NAME="1093015">
+DNSリソース レコード。<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1091348">&nbsp;
+</A>
+<A NAME="document">
+<H3> document</H3>
+</A>
+
+
+
+<A NAME="1092549">
+ディレクトリã§ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã‚’表示ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªã®å®šç¾©ã«ä½¿ç”¨ã€‚予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1096874">
+OID: <CODE>0.9.2342.19200300.100.4.6</CODE><P></A>
+
+<A NAME="1091981">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1092165">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1092167">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1092172">
+<a href="attribut.htm#1201854">documentIdentifier</A><P></A>
+<td>
+<A NAME="1092175">
+(å¿…é ˆ) ドキュメント固有ã®è­˜åˆ¥å­ã€‚<P></A>
+
+<tr><td>
+<A NAME="1092180">
+<a href="attribut.htm#1201644">abstract</A><P></A>
+<td>
+<A NAME="1092182">
+ドキュメントã®æ¦‚è¦ã€‚<P></A>
+
+<tr><td>
+<A NAME="1092187">
+<a href="attribut.htm#1201689">authorCn</A><P></A>
+<td>
+<A NAME="1092189">
+著者ã®ä¸€èˆ¬åã€ã¾ãŸã¯åå‰ã€‚<P></A>
+
+<tr><td>
+<A NAME="1092194">
+<a href="attribut.htm#1201696">authorSn</A><P></A>
+<td>
+<A NAME="1092196">
+著者ã®å§“。<P></A>
+
+<tr><td>
+<A NAME="1092201">
+<a href="attribut.htm#1171494">cn</A><P></A>
+<td>
+<A NAME="1092203">
+ドキュメントã®ä¸€èˆ¬å。<P></A>
+
+<tr><td>
+<A NAME="1092206">
+<a href="attribut.htm#1171528">description</A><P></A>
+<td>
+<A NAME="1092208">
+内容ã®èª¬æ˜Žæ–‡ã€‚<P></A>
+
+<tr><td>
+<A NAME="1092213">
+<a href="attribut.htm#1201847">documentAuthor</A><P></A>
+<td>
+<A NAME="1092215">
+ドキュメントã®è‘—者ã®è­˜åˆ¥å。<P></A>
+
+<tr><td>
+<A NAME="1092220">
+<a href="attribut.htm#1201861">documentLocation</A><P></A>
+<td>
+<A NAME="1092222">
+å…ƒã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã®å ´æ‰€ã€‚<P></A>
+
+<tr><td>
+<A NAME="1092227">
+<a href="attribut.htm#1201868">documentPublisher</A><P></A>
+<td>
+<A NAME="1092229">
+ドキュメントをパブリッシュã—ãŸãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯çµ„織。<P></A>
+
+<tr><td>
+<A NAME="1092234">
+<a href="attribut.htm#1201877">documentStore</A><P></A>
+<td>
+<A NAME="1092236">
+未定義。<P></A>
+
+<tr><td>
+<A NAME="1092241">
+<a href="attribut.htm#1201884">documentTitle</A><P></A>
+<td>
+<A NAME="1092243">
+ドキュメントã®é¡Œå。<P></A>
+
+<tr><td>
+<A NAME="1092248">
+<a href="attribut.htm#1201891">documentVersion</A><P></A>
+<td>
+<A NAME="1092250">
+ドキュメントã®æ”¹è¨‚番å·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1092255">
+<a href="attribut.htm#1202004">keyWords</A><P></A>
+<td>
+<A NAME="1092257">
+ドキュメントを記述ã™ã‚‹ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã€‚<P></A>
+
+<tr><td>
+<A NAME="1103998">
+<a href="attribut.htm#1244534">l</A><P></A>
+<td>
+<A NAME="1092262">
+ドキュメントãŒå­˜åœ¨ã™ã‚‹å ´æ‰€ã€‚<P></A>
+
+<tr><td>
+<A NAME="1104003">
+<a href="attribut.htm#1281611">o</A><P></A>
+<td>
+<A NAME="1092267">
+ドキュメントãŒå±žã™ã‚‹çµ„織。<P></A>
+
+<tr><td>
+<A NAME="1092272">
+<a href="attribut.htm#1202192">obsoletedByDocument</A><P></A>
+<td>
+<A NAME="1092274">
+ã“ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã‚’旧版ã«ã—ãŸãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã®è­˜åˆ¥å。<P></A>
+
+<tr><td>
+<A NAME="1092279">
+<a href="attribut.htm#1202199">obsoletesDocument</A><P></A>
+<td>
+<A NAME="1092281">
+ã“ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆãŒæ—§ç‰ˆã«ã—ãŸãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã®è­˜åˆ¥å。<P></A>
+
+<tr><td>
+<A NAME="1104008">
+<a href="attribut.htm#1241174">ou</A><P></A>
+<td>
+<A NAME="1092299">
+ドキュメントãŒå±žã™ã‚‹çµ„ç¹”å˜ä½ã€‚<P></A>
+
+<tr><td>
+<A NAME="1104013">
+<a href="attribut.htm#1172500">seeAlso</A><P></A>
+<td>
+<A NAME="1092293">
+ドキュメントã«é–¢ä¿‚ã™ã‚‹æƒ…å ±ã¸ã®URL。<P></A>
+
+<tr><td>
+<A NAME="1092306">
+<a href="attribut.htm#1202732">subject</A><P></A>
+<td>
+<A NAME="1092308">
+ドキュメントã®ä¸»é¡Œã€‚<P></A>
+
+<tr><td>
+<A NAME="1092330">
+<a href="attribut.htm#1202817">updatedByDocument</A><P></A>
+<td>
+<A NAME="1092334">
+ã“ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã®æ›´æ–°ç‰ˆãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã®è­˜åˆ¥å。<P></A>
+
+<tr><td>
+<A NAME="1092323">
+<a href="attribut.htm#1202824">updatesDocument</A><P></A>
+<td>
+<A NAME="1092340">
+ã“ã®æ›´æ–°ç‰ˆãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã®å…ƒã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã®è­˜åˆ¥å。<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1091354">&nbsp;
+</A>
+<A NAME="documentSeries">
+<H3> documentSeries</H3>
+</A>
+
+
+
+<A NAME="1092560">
+ドキュメントã®ã‚·ãƒªãƒ¼ã‚ºã‚’表示ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªã®å®šç¾©ã«ä½¿ç”¨ã€‚予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1096876">
+OID: <CODE>0.9.2342.19200300.100.4.9</CODE><P></A>
+
+<A NAME="1092547">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1092502">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1092504">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1092507">
+<a href="attribut.htm#1171494">cn</A><P></A>
+<td>
+<A NAME="1092579">
+(å¿…é ˆ) シリーズã®ä¸€èˆ¬å。<P></A>
+
+<tr><td>
+<A NAME="1104028">
+<a href="attribut.htm#1171528">description</A><P></A>
+<td>
+<A NAME="1092515">
+シリーズã®èª¬æ˜Žæ–‡ã€‚<P></A>
+
+<tr><td>
+<A NAME="1104033">
+<a href="attribut.htm#1244534">l</A><P></A>
+<td>
+<A NAME="1092520">
+シリーズã®ã‚る場所ã®åœ°åŸŸæ€§ã€‚<P></A>
+
+<tr><td>
+<A NAME="1104038">
+<a href="attribut.htm#1281611">o</A><P></A>
+<td>
+<A NAME="1092525">
+シリーズãŒå±žã™ã‚‹çµ„織。<P></A>
+
+<tr><td>
+<A NAME="1104043">
+<a href="attribut.htm#1241174">ou</A><P></A>
+<td>
+<A NAME="1092531">
+シリーズãŒå±žã™ã‚‹çµ„ç¹”å˜ä½ã€‚<P></A>
+
+<tr><td>
+<A NAME="1104048">
+<a href="attribut.htm#1172500">seeAlso</A><P></A>
+<td>
+<A NAME="1092541">
+シリーズã«é–¢ä¿‚ã™ã‚‹æƒ…å ±ã¸ã®URL。<P></A>
+
+<tr><td>
+<A NAME="1092600">
+<a href="attribut.htm#1230129">telephoneNumber</A><P></A>
+<td>
+<A NAME="1092602">
+シリーズ責任者ã®é›»è©±ç•ªå·ã€‚<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1091357">&nbsp;
+</A>
+<A NAME="domain">
+<H3> domain</H3>
+</A>
+
+
+
+<A NAME="1097945">
+ディレクトリã§ã€DNSドメインを表示ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªã‚’定義ã™ã‚‹ã‚ªãƒ–ジェクト クラス。ã“ã®ã‚ªãƒ–ジェクト クラスã®ã‚¨ãƒ³ãƒˆãƒªã®å‘½åã«ã¯ã€domainComponent属性を使用ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1096879">
+OID: <CODE>0.9.2342.19200300.100.4.13</CODE><P></A>
+
+<A NAME="1092674">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1092632">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1092634">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1092639">
+<a href="attribut.htm#1245094">dc</A><P></A>
+<td>
+<A NAME="1092642">
+(å¿…é ˆ) ドメインåã®ã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã®1ã¤ã€‚<P></A>
+
+<tr><td>
+<A NAME="1092701">
+<a href="attribut.htm#1201675">associatedName</A><P></A>
+<td>
+<A NAME="1092708">
+DNSドメインã¨ã«é–¢é€£ã—ãŸçµ„ç¹”ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª ツリー内ã®ã‚¨ãƒ³ãƒˆãƒªã€‚<P></A>
+
+<tr><td>
+<A NAME="1092721">
+<a href="attribut.htm#1171367">businessCategory</A><P></A>
+<td>
+<A NAME="1092723">
+ã“ã®ãƒ‰ãƒ¡ã‚¤ãƒ³ãŒå¾“事ã™ã‚‹äº‹æ¥­ã‚¿ã‚¤ãƒ—。<P></A>
+
+<tr><td>
+<A NAME="1092645">
+<a href="attribut.htm#1171528">description</A><P></A>
+<td>
+<A NAME="1092647">
+ドメインã®èª¬æ˜Žæ–‡ã€‚<P></A>
+
+<tr><td>
+<A NAME="1092735">
+<a href="attribut.htm#1292809">destinationIndicator</A><P></A>
+<td>
+<A NAME="1092737">
+ã“ã®å±žæ€§ã¯ã€ã“ã®ãƒ‰ãƒ¡ã‚¤ãƒ³ã¸ã®é›»å ±ã‚µãƒ¼ãƒ“スã«ä½¿ç”¨ã•ã‚Œã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1092741">
+<a href="attribut.htm#1171637">facsimileTelephoneNumber</A><P></A>
+<td>
+<A NAME="1092744">
+ドメインã«é–¢ä¿‚ã™ã‚‹ãƒ•ã‚¡ãƒƒã‚¯ã‚¹ç•ªå·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1092749">
+<a href="attribut.htm#1224256">internationalIsdnNumber</A><P></A>
+<td>
+<A NAME="1092751">
+ドメインã«é–¢ä¿‚ã™ã‚‹ISDN番å·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1092650">
+<a href="attribut.htm#1244534">l</A><P></A>
+<td>
+<A NAME="1092652">
+ドメインã®ã‚る場所ã®åœ°åŸŸæ€§ã€‚<P></A>
+
+<tr><td>
+<A NAME="1092778">
+<a href="attribut.htm#1007859">manager</A><P></A>
+<td>
+<A NAME="1092780">
+ドメインã«é–¢ä¿‚ã™ã‚‹ãƒžãƒãƒ¼ã‚¸ãƒ£ã®è­˜åˆ¥å。<P></A>
+
+<tr><td>
+<A NAME="1092655">
+<a href="attribut.htm#1281611">o</A><P></A>
+<td>
+<A NAME="1092657">
+ドメインãŒå±žã™ã‚‹çµ„織。<P></A>
+
+<tr><td>
+<A NAME="1092789">
+<a href="attribut.htm#1003072">physicalDeliveryOfficeName</A><P></A>
+<td>
+<A NAME="1092791">
+物ç†çš„ãªé…é€ãŒã§ãる場所。<P></A>
+
+<tr><td>
+<A NAME="1092794">
+<a href="attribut.htm#1230025">postalAddress</A><P></A>
+<td>
+<A NAME="1092796">
+ドメインã«é–¢ä¿‚ã™ã‚‹éƒµä¾¿ä½æ‰€ã€‚<P></A>
+
+<tr><td>
+<A NAME="1092799">
+<a href="attribut.htm#1230036">postalCode</A><P></A>
+<td>
+<A NAME="1092801">
+ドメインã®çµ„ç¹”ã®éƒµä¾¿ç•ªå·(米国ã«ãŠã‘る郵便番å·ãªã©)。<P></A>
+
+<tr><td>
+<A NAME="1092804">
+<a href="attribut.htm#1230043">postOfficeBox</A><P></A>
+<td>
+<A NAME="1092806">
+ドメインã®ç§æ›¸ç®±ã€‚<P></A>
+
+<tr><td>
+<A NAME="1092809">
+<a href="attribut.htm#1202605">preferredDeliveryMethod</A><P></A>
+<td>
+<A NAME="1092811">
+ドメインãŒå¸Œæœ›ã™ã‚‹é€£çµ¡æ–¹æ³•ã¾ãŸã¯é…é”方法。<P></A>
+
+<tr><td>
+<A NAME="1092824">
+<a href="attribut.htm#1202644">registeredAddress</A><P></A>
+<td>
+<A NAME="1092826">
+緊急ã®æ›¸é¡žã®å—ã‘å–ã‚Šãªã©ã€å—å–人ãŒé…é”を確èªã™ã‚‹å¿…è¦ã®ã‚ã‚‹ã‚‚ã®ã‚’é…é”ã™ã‚‹ã®ã«ãµã•ã‚ã—ã„郵é€ç”¨ã®ä½æ‰€ã€‚<P></A>
+
+<tr><td>
+<A NAME="1092857">
+<a href="attribut.htm#1202682">searchGuide</A><P></A>
+<td>
+<A NAME="1092859">
+検索動作ã®ãŸã‚ã«ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª ツリーã®ãƒ™ãƒ¼ã‚¹ オブジェクトã¨ã—ã¦ã‚¨ãƒ³ãƒˆãƒªã‚’使用ã™ã‚‹éš›ã«ã€æ案ã•ã‚Œã‚‹æ¤œç´¢åŸºæº–ã®æƒ…報を指定ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1092871">
+<a href="attribut.htm#1172500">seeAlso</A><P></A>
+<td>
+<A NAME="1092873">
+ドメインã«é–¢ä¿‚ã™ã‚‹æƒ…å ±ã¸ã®URL。<P></A>
+
+<tr><td>
+<A NAME="1092829">
+<a href="attribut.htm#1203417">st</A><P></A>
+<td>
+<A NAME="1092831">
+ドメインã®å­˜åœ¨ã™ã‚‹å·žã¾ãŸã¯éƒ½é“府県。<P></A>
+
+<tr><td>
+<A NAME="1092834">
+<a href="attribut.htm#1202721">street</A><P></A>
+<td>
+<A NAME="1092836">
+ドメインã«é–¢ä¿‚ã™ã‚‹è¡—è·¯ã¨ç•ªåœ°ã€‚<P></A>
+
+<tr><td>
+<A NAME="1092882">
+<a href="attribut.htm#1230129">telephoneNumber</A><P></A>
+<td>
+<A NAME="1092884">
+ドメインã«é–¢ä¿‚ã™ã‚‹é›»è©±ç•ªå·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1092839">
+<a href="attribut.htm#1205004">teletexTerminalIdentifier</A><P></A>
+<td>
+<A NAME="1092841">
+ドメインã«é–¢ä¿‚ã™ã‚‹ãƒ†ãƒ¬ãƒ†ãƒƒã‚¯ã‚¹ ターミナルã®è­˜åˆ¥å­ã€‚<P></A>
+
+<tr><td>
+<A NAME="1092844">
+<a href="attribut.htm#1205120">telexNumber</A><P></A>
+<td>
+<A NAME="1092846">
+ドメインã«é–¢ä¿‚ã™ã‚‹ãƒ†ãƒ¬ãƒƒã‚¯ã‚¹ç•ªå·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1092909">
+<a href="attribut.htm#1196547">userPassword</A><P></A>
+<td>
+<A NAME="1092911">
+å°†æ¥ã®ä½¿ç”¨ã«äºˆç´„ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1092851">
+<a href="attribut.htm#1281763">x121Address</A><P></A>
+<td>
+<A NAME="1092853">
+ドメインã«é–¢ä¿‚ã™ã‚‹ X.121アドレス。<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1091384">&nbsp;
+</A>
+<A NAME="domainRelatedObject">
+<H3> domainRelatedObject</H3>
+</A>
+
+
+
+<A NAME="1093633">
+通常ã€çµ„ç¹”ã¾ãŸã¯çµ„ç¹”å˜ä½ã§ã‚ã‚‹X.500ドメインã«ç­‰ã—ã„DNSドメインを示ã™ã‚¨ãƒ³ãƒˆãƒªã®å®šç¾©ã«ä½¿ç”¨ã™ã‚‹ã‚ªãƒ–ジェクト クラス。予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1098880">
+OID: <CODE>0.9.2342.19200300.100.4.17</CODE><P></A>
+
+<A NAME="1097753">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1097743">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1097745">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1097750">
+<a href="attribut.htm#1201668">associatedDomain</A><P></A>
+<td>
+<A NAME="1097752">
+ディレクトリ ツリー内ã®ã‚ªãƒ–ジェクトã«é–¢ä¿‚ã™ã‚‹DNSドメイン。<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1097756">&nbsp;
+</A>
+<A NAME="dSA">
+<H3> dSA</H3>
+</A>
+
+
+
+<A NAME="1097757">
+ディレクトリã§ã€DSAを表示ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªã®å®šç¾©ã«ä½¿ç”¨ã™ã‚‹ã‚ªãƒ–ジェクト クラス。ã“ã®ã‚ªãƒ–ジェクト クラスã¯ã€X.500 Directory Servicesã‹ã‚‰ç¶™æ‰¿ã•ã‚Œã¾ã—ãŸã€‚予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1096993">
+OID: <CODE>2.5.6.13</CODE><P></A>
+
+<A NAME="1091405">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1091397">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1091399">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1091402">
+<a href="attribut.htm#1202013">knowledgeInformation</A><P></A>
+<td>
+<A NAME="1091404">
+ã“ã®å±žæ€§ã¯ç¾åœ¨ä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã›ã‚“。<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1091415">&nbsp;
+</A>
+<A NAME="friendlyCountry">
+<H3> friendlyCountry</H3>
+</A>
+
+
+
+<A NAME="1093062">
+ディレクトリ ツリーã§ã€å›½ã®ã‚¨ãƒ³ãƒˆãƒªã‚’定義ã™ã‚‹ã‚ªãƒ–ジェクト クラス。ã“ã®ã‚ªãƒ–ジェクト クラスを使用ã™ã‚‹ã¨ã€å›½ã‚ªãƒ–ジェクト クラスã§è¨±ã•ã‚Œã¦ã„るよりもã€ã‚‚ã£ã¨ãƒ¦ãƒ¼ã‚¶ フレンドリãªå›½åãŒå¯èƒ½ã«ãªã‚Šã¾ã™ã€‚予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1098883">
+OID: <CODE>0.9.2342.19200300.100.4.18</CODE><P></A>
+
+<A NAME="1093060">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1093050">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1093052">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1093057">
+<a href="attribut.htm#1265915">co</A><P></A>
+<td>
+<A NAME="1093059">
+国åã‚’ä¿æŒã—ã¦ã„ã¾ã™ã€‚<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1091443">&nbsp;
+</A>
+<A NAME="labeledURIObject">
+<H3> labeledURIObject</H3>
+</A>
+
+
+
+<A NAME="1096833">
+ã“ã®ã‚ªãƒ–ジェクト クラスã¯ã€æ—¢å­˜ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª オブジェクトã«è¿½åŠ ã—ã¦ã€URI値ã«å«ã‚ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã“ã®ã‚¢ãƒ—ローãƒã¯ã€labeledURI属性を他ã®ã‚ªãƒ–ジェクト クラスã«ç›´æŽ¥å…¥ã‚Œã‚‹ã®ã‚’妨ã’ã¾ã›ã‚“(é©åˆ‡ãªå ´åˆï¼‰ã€‚予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1096829">
+OID: <CODE>1.3.6.1.4.1.250.3.15</CODE><P></A>
+
+<A NAME="1093588">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1093578">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1093580">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1093585">
+<a href="attribut.htm#1202020">labeledUri</A><P></A>
+<td>
+<A NAME="1093587">
+エントリã«é–¢ä¿‚ã™ã‚‹Uniform Resource Identifier (URI)。<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1091410">&nbsp;
+</A>
+<A NAME="pilotObject">
+<H3> pilotObject</H3>
+</A>
+
+
+
+<A NAME="1091508">
+ä»–ã®ã™ã¹ã¦ã®ã‚ªãƒ–ジェクト クラスã®ã‚¨ãƒ³ãƒˆãƒªã«è¿½åŠ ã®å±žæ€§ã‚’割り当ã¦ã‚‰ã‚Œã‚‹ã‚ˆã†ã«ã™ã‚‹ã‚µãƒ–クラスã¨ã—ã¦ä½¿ç”¨ã™ã‚‹ã‚ªãƒ–ジェクト クラス。予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1096860">
+OID: <CODE>0.9.2342.19200300.100.4.3</CODE><P></A>
+
+<A NAME="1091544">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1091536">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1091538">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1091541">
+<a href="attribut.htm#1201684">audio</A><P></A>
+<td>
+<A NAME="1091543">
+サウンド ファイル。<P></A>
+
+<tr><td>
+<A NAME="1091579">
+<a href="attribut.htm#1201831">ditRedirect</A><P></A>
+<td>
+<A NAME="1091581">
+エントリã®ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã«ä½¿ç”¨ã™ã‚‹è­˜åˆ¥å。<P></A>
+
+<tr><td>
+<A NAME="1091575">
+<a href="attribut.htm#1201965">info</A><P></A>
+<td>
+<A NAME="1091577">
+オブジェクトã®æƒ…報。<P></A>
+
+<tr><td>
+<A NAME="1091571">
+<a href="attribut.htm#1201995">jpegPhoto</A><P></A>
+<td>
+<A NAME="1091573">
+JPEGå½¢å¼ã®å†™çœŸã€‚<P></A>
+
+<tr><td>
+<A NAME="1091567">
+<a href="attribut.htm#1100733">lastModifiedBy</A><P></A>
+<td>
+<A NAME="1091569">
+オブジェクトã®æœ€çµ‚変更者ã®è­˜åˆ¥å。<P></A>
+
+<tr><td>
+<A NAME="1091563">
+<a href="attribut.htm#1202035">lastModifiedTime</A><P></A>
+<td>
+<A NAME="1091565">
+オブジェクトã®æœ€çµ‚変更時刻。<P></A>
+
+<tr><td>
+<A NAME="1091559">
+<a href="attribut.htm#1007859">manager</A><P></A>
+<td>
+<A NAME="1091561">
+オブジェクトã®ãƒžãƒãƒ¼ã‚¸ãƒ£ã®è­˜åˆ¥å。<P></A>
+
+<tr><td>
+<A NAME="1091555">
+<a href="attribut.htm#1202247">photo</A><P></A>
+<td>
+<A NAME="1091557">
+オブジェクトã®å†™çœŸã€‚<P></A>
+
+<tr><td>
+<A NAME="1091551">
+<a href="attribut.htm#1202809">uniqueIdentifier</A><P></A>
+<td>
+<A NAME="1091553">
+識別åãŒå†ä½¿ç”¨ã•ã‚Œã¦ã„ã‚‹å ´åˆã«ã€2ã¤ã®ã‚¨ãƒ³ãƒˆãƒªã‚’区別ã™ã‚‹ã®ã«ä½¿ç”¨ã™ã‚‹ç‰¹å®šé …目。<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1091437">&nbsp;
+</A>
+<A NAME="pilotOrganization">
+<H3> pilotOrganization</H3>
+</A>
+
+
+
+<A NAME="1093224">
+organizationã¨organizationalUnitã®ã‚ªãƒ–ジェクト クラスã®ã‚¨ãƒ³ãƒˆãƒªã«è¿½åŠ ã®å±žæ€§ã‚’割り当ã¦ã‚‰ã‚Œã‚‹ã‚ˆã†ã«ã™ã‚‹ã‚µãƒ–クラスã¨ã—ã¦ä½¿ç”¨ã™ã‚‹ã‚ªãƒ–ジェクト クラス。予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1096890">
+OID: <CODE>0.9.2342.19200300.100.4.20</CODE><P></A>
+
+<A NAME="1093387">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1093251">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1093253">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1093394">
+<a href="attribut.htm#1281611">o</A><P></A>
+<td>
+<A NAME="1093396">
+(å¿…é ˆ) エントリãŒå±žã™ã‚‹çµ„織。<P></A>
+
+<tr><td>
+<A NAME="1093400">
+<a href="attribut.htm#1241174">ou</A><P></A>
+<td>
+<A NAME="1093402">
+(å¿…é ˆ) エントリãŒå±žã™ã‚‹çµ„ç¹”å˜ä½ã€‚<P></A>
+
+<tr><td>
+<A NAME="1093418">
+<a href="attribut.htm#1201711">buildingName</A><P></A>
+<td>
+<A NAME="1093420">
+エントリãŒã‚る建物ã®åå‰ã€‚<P></A>
+
+<tr><td>
+<A NAME="1093258">
+<a href="attribut.htm#1171367">businessCategory</A><P></A>
+<td>
+<A NAME="1093260">
+ã“ã®ã‚¨ãƒ³ãƒˆãƒªãŒå¾“事ã™ã‚‹äº‹æ¥­ã‚¿ã‚¤ãƒ—。<P></A>
+
+<tr><td>
+<A NAME="1093265">
+<a href="attribut.htm#1171528">description</A><P></A>
+<td>
+<A NAME="1093267">
+エントリã®èª¬æ˜Žæ–‡ã€‚<P></A>
+
+<tr><td>
+<A NAME="1093433">
+<a href="attribut.htm#1292809">destinationIndicator</A><P></A>
+<td>
+<A NAME="1093435">
+ã“ã®å±žæ€§ã¯ã€ã“ã®ã‚¨ãƒ³ãƒˆãƒªã¸ã®é›»å ±ã‚µãƒ¼ãƒ“スã«ä½¿ç”¨ã•ã‚Œã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1093439">
+<a href="attribut.htm#1171637">facsimileTelephoneNumber</A><P></A>
+<td>
+<A NAME="1093442">
+エントリã«é–¢ä¿‚ã™ã‚‹ãƒ•ã‚¡ãƒƒã‚¯ã‚¹ç•ªå·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1093447">
+<a href="attribut.htm#1224256">internationalIsdnNumber</A><P></A>
+<td>
+<A NAME="1093449">
+エントリã«é–¢ä¿‚ã™ã‚‹ISDN番å·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1093452">
+<a href="attribut.htm#1244534">l</A><P></A>
+<td>
+<A NAME="1093454">
+エントリãŒå­˜åœ¨ã™ã‚‹å ´æ‰€ã®åœ°åŸŸæ€§ã€‚<P></A>
+
+<tr><td>
+<A NAME="1093516">
+<a href="attribut.htm#1003072">physicalDeliveryOfficeName</A><P></A>
+<td>
+<A NAME="1093518">
+物ç†çš„ã«ã‚‚ã®ã‚’é…é”ã™ã‚‹ãŸã‚ã®ã‚¨ãƒ³ãƒˆãƒªã®å ´æ‰€ã€‚<P></A>
+
+<tr><td>
+<A NAME="1104165">
+<a href="attribut.htm#1230025">postalAddress</A><P></A>
+<td>
+<A NAME="1093513">
+エントリã®å‹¤å‹™å…ˆéƒµé€ç”¨ä½æ‰€ã€‚<P></A>
+
+<tr><td>
+<A NAME="1104170">
+<a href="attribut.htm#1230036">postalCode</A><P></A>
+<td>
+<A NAME="1093508">
+エントリã®å‹¤å‹™å…ˆéƒµä¾¿ç•ªå·(米国ã«ãŠã‘る郵便番å·ãªã©)。<P></A>
+
+<tr><td>
+<A NAME="1104175">
+<a href="attribut.htm#1230043">postOfficeBox</A><P></A>
+<td>
+<A NAME="1093503">
+エントリã®å‹¤å‹™å…ˆã®ç§æ›¸ç®±ã€‚<P></A>
+
+<tr><td>
+<A NAME="1104180">
+<a href="attribut.htm#1202605">preferredDeliveryMethod</A><P></A>
+<td>
+<A NAME="1093498">
+エントリãŒå¸Œæœ›ã™ã‚‹é€£çµ¡æ–¹æ³•ã¾ãŸã¯é…é”方法。<P></A>
+
+<tr><td>
+<A NAME="1104185">
+<a href="attribut.htm#1202644">registeredAddress</A><P></A>
+<td>
+<A NAME="1106134">
+緊急ã®æ›¸é¡žã®å—ã‘å–ã‚Šãªã©ã€å—å–人ãŒé…é”を確èªã™ã‚‹å¿…è¦ã®ã‚ã‚‹ã‚‚ã®ã‚’é…é”ã™ã‚‹ã®ã«ãµã•ã‚ã—ã„郵é€ç”¨ã®ä½æ‰€ã€‚<P></A>
+
+<tr><td>
+<A NAME="1104190">
+<a href="attribut.htm#1202682">searchGuide</A><P></A>
+<td>
+<A NAME="1093532">
+検索動作ã®ãŸã‚ã«ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª ツリーã®ãƒ™ãƒ¼ã‚¹ オブジェクトã¨ã—ã¦ã‚¨ãƒ³ãƒˆãƒªã‚’使用ã™ã‚‹éš›ã«ã€æ案ã•ã‚Œã‚‹æ¤œç´¢åŸºæº–ã®æƒ…報を指定ã—ã¾ã™ã€‚<P></A>
+
+<tr><td>
+<A NAME="1104195">
+<a href="attribut.htm#1172500">seeAlso</A><P></A>
+<td>
+<A NAME="1093544">
+エントリã«é–¢ä¿‚ã™ã‚‹æƒ…å ±ã¸ã®URL。<P></A>
+
+<tr><td>
+<A NAME="1104200">
+<a href="attribut.htm#1203417">st</A><P></A>
+<td>
+<A NAME="1093488">
+エントリã®å­˜åœ¨ã™ã‚‹å·žã¾ãŸã¯éƒ½é“府県。<P></A>
+
+<tr><td>
+<A NAME="1104205">
+<a href="attribut.htm#1202721">street</A><P></A>
+<td>
+<A NAME="1093483">
+エントリã®ã‚ã‚‹è¡—è·¯ã¨ç•ªåœ°ã€‚<P></A>
+
+<tr><td>
+<A NAME="1104210">
+<a href="attribut.htm#1230129">telephoneNumber</A><P></A>
+<td>
+<A NAME="1093557">
+エントリã«é–¢é€£ã™ã‚‹é›»è©±ç•ªå·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1104215">
+<a href="attribut.htm#1205004">teletexTerminalIdentifier</A><P></A>
+<td>
+<A NAME="1093478">
+エントリã®ãƒ†ãƒ¬ãƒ†ãƒƒã‚¯ã‚¹ ターミナルã®è­˜åˆ¥å­ã€‚<P></A>
+
+<tr><td>
+<A NAME="1104220">
+<a href="attribut.htm#1205120">telexNumber</A><P></A>
+<td>
+<A NAME="1093473">
+エントリã®ãƒ†ãƒ¬ãƒƒã‚¯ã‚¹ç•ªå·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1104225">
+<a href="attribut.htm#1196547">userPassword</A><P></A>
+<td>
+<A NAME="1093572">
+エントリã®ãƒ‘スワードã¨æš—å·åŒ–方法。<P></A>
+
+<tr><td>
+<A NAME="1104230">
+<a href="attribut.htm#1281763">x121Address</A><P></A>
+<td>
+<A NAME="1093468">
+エントリã®X.121アドレス。<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1091375">&nbsp;
+</A>
+<A NAME="RFC822LocalPart">
+<H3> RFC822LocalPart</H3>
+</A>
+
+
+
+<A NAME="1092973">
+RFC822メール アドレスã®ãƒ­ãƒ¼ã‚«ãƒ«éƒ¨åˆ†ã‚’表示ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªã®å®šç¾©ã«ä½¿ç”¨ã™ã‚‹ã‚ªãƒ–ジェクト クラス。ディレクトリã¯ã€RFC822アドレスã®ã“ã®éƒ¨åˆ†ã‚’ドメインã¨ã—ã¦å–り扱ã„ã¾ã™ã€‚予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1096884">
+OID: <CODE>0.9.2342.19200300.100.4.14</CODE><P></A>
+
+<A NAME="1092966">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1092920">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1092922">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1092931">
+<a href="attribut.htm#1171494">cn</A><P></A>
+<td>
+<A NAME="1092934">
+エントリã®ä¸€èˆ¬åã¾ãŸã¯åå‰ã€‚<P></A>
+
+<tr><td>
+<A NAME="1092963">
+<a href="attribut.htm#1290325">sn</A><P></A>
+<td>
+<A NAME="1092965">
+エントリã®å§“<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1091363">&nbsp;
+</A>
+<A NAME="room">
+<H3> room</H3>
+</A>
+
+
+
+<A NAME="1092427">
+ディレクトリã§ã€éƒ¨å±‹ã«ã¤ã„ã¦ã®æƒ…報をä¿å­˜ã™ã‚‹ã‚ªãƒ–ジェクト クラス。予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1098891">
+OID: <CODE>0.9.2342.19200300.100.4.7</CODE><P></A>
+
+<A NAME="1098892">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1092361">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1092363">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1092443">
+<a href="attribut.htm#1171494">cn</A><P></A>
+<td>
+<A NAME="1092446">
+(å¿…é ˆ) 部屋ã®ä¸€èˆ¬å。<P></A>
+
+<tr><td>
+<A NAME="1092449">
+<a href="attribut.htm#1171528">description</A><P></A>
+<td>
+<A NAME="1092451">
+部屋ã®èª¬æ˜Žæ–‡ã€‚<P></A>
+
+<tr><td>
+<A NAME="1092468">
+<a href="attribut.htm#1204477">roomNumber</A><P></A>
+<td>
+<A NAME="1092470">
+部屋番å·ã€‚<P></A>
+
+<tr><td>
+<A NAME="1092477">
+<a href="attribut.htm#1172500">seeAlso</A><P></A>
+<td>
+<A NAME="1092479">
+部屋ã«é–¢ä¿‚ã™ã‚‹æƒ…å ±ã¸ã®URL。<P></A>
+
+<tr><td>
+<A NAME="1092491">
+<a href="attribut.htm#1230129">telephoneNumber</A><P></A>
+<td>
+<A NAME="1092493">
+部屋ã®é›»è©±ç•ªå·<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1091431">&nbsp;
+</A>
+<A NAME="simpleSecurityObject">
+<H3> simpleSecurityObject</H3>
+</A>
+
+
+
+<A NAME="1093131">
+主オブジェクト クラスãŒå±žæ€§ã‚¿ã‚¤ãƒ—ã¨ã—ã¦userPasswordを許ã•ãªã„å ´åˆã«ã€userPassword属性をå«ã‚€ã‚¨ãƒ³ãƒˆãƒªã‚’å¯èƒ½ã«ã™ã‚‹ã‚ªãƒ–ジェクト クラス。予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1093125">
+OID: <CODE>0.9.2342.19200300.100.4.19</CODE><P></A>
+
+<A NAME="1098903">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1093106">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1093108">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1093113">
+<a href="attribut.htm#1196547">userPassword</A><P></A>
+<td>
+<A NAME="1093116">
+(å¿…é ˆ) エントリã®ãƒ‘スワードã¨æš—å·åŒ–方法。<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1089871">&nbsp;
+</A>
+<A NAME="strongAuthenticationUser">
+<H3> strongAuthenticationUser</H3>
+</A>
+
+
+
+<A NAME="1090921">
+クライアントã¨è¨¼æ˜Žæ›¸ã®æƒ…報をã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§ä¿å­˜ã™ã‚‹ã‚ªãƒ–ジェクト クラス。ã“ã®ã‚ªãƒ–ジェクト クラスã¯ã€X.500 Directory Servicesã‹ã‚‰ç¶™æ‰¿ã•ã‚Œã¾ã—ãŸã€‚予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1106458">
+OID: <CODE>2.5.6.15</CODE><P></A>
+
+<A NAME="1106478">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1106461">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1106463">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1106468">
+<a href="attribut.htm#1208938">userCertificate</A><P></A>
+<td>
+<A NAME="1106470">
+未使用。<P></A>
+
+<tr><td>
+<A NAME="1106475">
+<a href="attribut.htm#1278425">userCertificate;binary</A><P></A>
+<td>
+<A NAME="1106477">
+(å¿…é ˆ) ãƒã‚¤ãƒŠãƒªå½¢å¼ã®ãƒ¦ãƒ¼ã‚¶ã®è¨¼æ˜Žæ›¸ã€‚<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1106481">&nbsp;
+</A>
+<A NAME="top">
+<H3> top</H3>
+</A>
+
+
+
+<A NAME="1106482">
+ディレクトリã§ã€ä»–ã®ã™ã¹ã¦ã®ã‚ªãƒ–ジェクト クラスã®ã‚µãƒ–クラスã¨ã—ã¦ä½¿ç”¨ã•ã‚Œã‚‹ã‚ªãƒ–ジェクト クラス。ã“ã®ã‚ªãƒ–ジェクト クラスã¯ã€X.500 Directory Servicesã‹ã‚‰ç¶™æ‰¿ã•ã‚Œã¾ã—ãŸã€‚予約ã•ã‚Œã¦ã„ã¾ã™ã€‚<P></A>
+
+<A NAME="1106020">
+OID: <CODE>2.5.6.0</CODE><P></A>
+
+<A NAME="1106503">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1106486">
+<B>属性</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1106488">
+<B>属性ã®èª¬æ˜Ž</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1106493">
+<a href="attribut.htm#1229677">objectClass</A><P></A>
+<td>
+<A NAME="1106495">
+(å¿…é ˆ) ã™ã¹ã¦ã®ã‚ªãƒ–ジェクト クラスã«å¿…é ˆã®å±žæ€§ã€‚<P></A>
+
+<tr><td>
+<A NAME="1106500">
+<a href="attribut.htm#1171292">aci</A><P></A>
+<td>
+<A NAME="1106502">
+ã“ã®ã‚¨ãƒ³ãƒˆãƒªã«å¯¾ã™ã‚‹Directory Serverアクセス制御情報をä¿å­˜ã—ã¦ã‚ã‚Šã¾ã™ã€‚<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+<A NAME="1106011">
+<P></A>
+
+</HTML>
+
diff --git a/ldap/clients/dsgw/html/manual/ja/search.htm b/ldap/clients/dsgw/html/manual/ja/search.htm
new file mode 100644
index 00000000..7593acfc
--- /dev/null
+++ b/ldap/clients/dsgw/html/manual/ja/search.htm
@@ -0,0 +1,380 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+
+<html>
+<!-- HEAD -->
+<title>ディレクトリ ツリーã®æ¤œç´¢</title>
+</head>
+
+<body>
+
+<h1><a name="search"></a>ディレクトリ ツリーã®æ¤œç´¢</h1>
+
+<p>Directory Serverã«ã¯ã€ä¼æ¥­ã®ãƒ¦ãƒ¼ã‚¶ã¨ãƒªã‚½ãƒ¼ã‚¹ã«é–¢ã™ã‚‹è²´é‡ãªæƒ…å ±ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚Directory Serverã®ã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ã‚’使用ã—ã¦ã€å¿…è¦ãªæƒ…報を簡å˜ã«è¦‹ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚検索プロセスを簡略化ã™ã‚‹ãŸã‚ã€ã“ã®ã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ã§ã¯2種類ã®æ¤œç´¢ã‚’æä¾›ã—ã¦ã„ã¾ã™ã€‚</p>
+
+<ul>
+ <li><a href="#standard">標準検索</a> -- 指定ã—ãŸå€¤ã«åŸºã¥ã„ã¦é©åˆ‡ãªæ¤œç´¢æ–¹æ³•ãŒé¸æŠžã•ã‚Œã¾ã™ã€‚例ãˆã°ã€moz@airius.comを指定ã™ã‚‹ã¨ã€æ¨™æº–検索ã§ã¯ä¸€è‡´ã™ã‚‹é›»å­ãƒ¡ãƒ¼ãƒ« アドレスãŒæ¤œç´¢ã•ã‚Œã¾ã™ã€‚</li>
+<P>
+ <li><a href="#advanced">拡張検索</a>特定ã®ã‚¨ãƒ³ãƒˆãƒªå±žæ€§ã«å¯¾ã™ã‚‹ç°¡å˜ãªæ¤œç´¢æ–¹æ³•ã‚’æä¾›ã—ã¾ã™ã€‚例ãˆã°ã€åå­—ãŒ<b>k</b>ã§å§‹ã¾ã‚Šã€é›»è©±ç•ªå·ãŒ<b>2110</b>ã§çµ‚ã‚るユーザを検索ã™ã‚‹ã‚ˆã†ã«æŒ‡å®šã§ãã¾ã™ã€‚</li>
+</ul>
+
+<p>ã„ãšã‚Œã®ã‚¿ã‚¤ãƒ—ã®æ¤œç´¢ã‚’使用ã™ã‚‹å ´åˆã§ã‚‚ã€æ¤œç´¢ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªã®ã‚¿ã‚¤ãƒ—ã‚’é¸æŠžã§ãã¾ã™ã€‚以下ã®ã‚¨ãƒ³ãƒˆãƒª タイプを検索ã§ãã¾ã™ã€‚</p>
+
+<table border="2">
+ <tr>
+ <th><a name="type"></a><b>エントリ タイプ</b></th>
+ <th>説明</th>
+ </tr>
+ <tr>
+ <td valign="top">ユーザ</td>
+ <td valign="top">ユーザを記述ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªã€‚</td>
+ </tr>
+ <tr>
+ <td valign="top">NTユーザ</td>
+ <td valign="top">NTユーザを記述ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªã€‚</td>
+ </tr>
+ <tr>
+ <td valign="top">グループ<b> </b></td>
+ <td valign="top">グループを記述ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªã€‚グループã¯ã€1ã¤ã¾ãŸã¯è¤‡æ•°ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª エントリã®é›†ã¾ã‚Šã§ã™ã€‚例ãˆã°ã€ã‚·ã‚¹ãƒ†ãƒ ç®¡ç†è€…ã®ã‚°ãƒ«ãƒ¼ãƒ—ã€ãƒ†ã‚¯ãƒ‹ã‚«ãƒ«ãƒ©ã‚¤ã‚¿ãƒ¼ã®ã‚°ãƒ«ãƒ¼ãƒ—ã€é‡£ã‚Šã«èˆˆå‘³ã®ã‚る全ユーザã®ã‚°ãƒ«ãƒ¼ãƒ—ãªã©ã‚’サイトã§å®šç¾©ã§ãã¾ã™ã€‚グループã¯å¿…ãšã—もユーザã®é›†ã¾ã‚Šã§ã‚ã‚‹å¿…è¦ã¯ã‚ã‚Šã¾ã›ã‚“。例ãˆã°ã€ã‚µã‚¤ãƒˆã«ãŠã‘ã‚‹ã™ã¹ã¦ã®ã‚«ãƒ©ãƒ¼ プリンタやファクシミリã®ã‚°ãƒ«ãƒ¼ãƒ—ãªã©ã‚’定義ã§ãã¾ã™ã€‚ã¾ãŸã€ã‚°ãƒ«ãƒ¼ãƒ—ã«ä»–ã®ã‚°ãƒ«ãƒ¼ãƒ—ã‚’å«ã‚ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚</td>
+ </tr>
+ <tr>
+ <td>NTグループ</td>
+ <td>NTユーザã®ã‚°ãƒ«ãƒ¼ãƒ—を記述ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªã€‚</td>
+ </tr>
+ <tr>
+ <td valign="top">組織</td>
+ <td valign="top">組織を記述ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªã€‚一般ã«ã€çµ„ç¹”ã¯ã€ä¼æ¥­ã‚„大学ãªã©ã®å˜ä¸€ã®å¤§è¦æ¨¡ã®çµ„織を表ã—ã¾ã™ã€‚通常ã¯ãƒ¦ãƒ¼ã‚¶ã‚„デãƒã‚¤ã‚¹ã®é›†ã¾ã‚Šã§ã‚るグループã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«å®Ÿä½“ãŒè¿½åŠ ã¾ãŸã¯å‰Šé™¤ã•ã‚Œã‚‹ã¨å¤‰åŒ–ã™ã‚‹ã“ã¨ãŒã‚ã‚Šã€ã“ã®ç‚¹ã§çµ„ç¹”ã¯ã‚°ãƒ«ãƒ¼ãƒ—ã¨ã¯ç•°ãªã‚Šã¾ã™ã€‚ã“ã‚Œã«å¯¾ã—ã¦çµ„ç¹”ã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®æ¯”較的安定ã—ãŸä¸»è¦éƒ¨åˆ†ã¾ãŸã¯ãƒ–ランãƒã‚’表ã—ã¾ã™ã€‚組織エントリã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªå†…ã§ã®ã‚¨ãƒ³ãƒ†ã‚£ãƒ†ã‚£ã®è¿½åŠ ã‚„削除ã«ã‚ˆã£ã¦å½±éŸ¿ã‚’å—ã‘ã‚‹ã“ã¨ã¯ã‚ã¾ã‚Šã‚ã‚Šã¾ã›ã‚“。</td>
+ </tr>
+ <tr>
+ <td valign="top">組織å˜ä½</td>
+ <td valign="top">組織å˜ä½ã‚’記述ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªã€‚一般ã«ã€çµ„ç¹”å˜ä½ã¯ã€æ¯”較的大ããªçµ„織内ã§ã®ä¸»è¦éƒ¨é–€ã‚’表ã—ã¾ã™ã€‚ä¼æ¥­ã‚„大学ãªã©ã®å˜ä¸€ã®å¤§è¦æ¨¡ãªçµ„織エントリã¨ã¯ç•°ãªã‚Šã€çµ„ç¹”å˜ä½ã¯ã€ä¼šè¨ˆéƒ¨ã€è²©å£²éƒ¨ã€äººæ–‡å­¦éƒ¨ã€ç”Ÿç‰©å­¦éƒ¨ãªã©ã€ã‚ˆã‚Šå°ã•ãªçµ„織を表ã—ã¾ã™ã€‚</td>
+ </tr>
+ <tr>
+ <td valign="top">ä»»æ„ã®ã‚¿ã‚¤ãƒ—</td>
+ <td valign="top">ディレクトリ内ã§æ¤œç´¢åŸºæº–ã«ä¸€è‡´ã™ã‚‹ä»»æ„ã®ã‚¿ã‚¤ãƒ—ã®ã‚¨ãƒ³ãƒˆãƒªã€‚ä»»æ„ã®ã‚¿ã‚¤ãƒ—ã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªå†…ã®ã‚¨ãƒ³ãƒˆãƒªãŒãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªç®¡ç†è€…ã«ã‚ˆã£ã¦ã©ã®ã‚ˆã†ã«æŒ‡å®šã•ã‚Œã¦ã„ã‚‹ã‹ä¸æ˜Žãªå ´åˆã«ä½¿ç”¨ã—ã¾ã™ã€‚検索ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒª タイプãŒãƒ¦ãƒ¼ã‚¶ã€ã‚°ãƒ«ãƒ¼ãƒ—ã€çµ„ç¹”ã®ã„ãšã‚Œã§ã‚‚ãªã„å ´åˆã«ã¯ã€ä»»æ„ã®ã‚¿ã‚¤ãƒ—ãŒä¾¿åˆ©ã§ã™ã€‚</td>
+ </tr>
+</table>
+
+<p>Directory ServerãŒæ¤œç´¢ã‚’完了ã—ãŸå¾Œã€ä¸€è‡´ã—ãŸã™ã¹ã¦ã®ã‚¨ãƒ³ãƒˆãƒªã¸ã®ãƒªãƒ³ã‚¯ã‚’示ã™<a href="#results">検索çµæžœ</a>ãŒã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ã«ã‚ˆã£ã¦è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚検索çµæžœãƒªã‚¹ãƒˆã«è¡¨ç¤ºã•ã‚Œã‚‹ã‚¨ãƒ³ãƒˆãƒªã‚’クリックã™ã‚‹ã¨ã€ãã®ã‚¨ãƒ³ãƒˆãƒªã«é–¢ã™ã‚‹è©³ç´°æƒ…å ±ãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚エントリãŒãƒ¦ãƒ¼ã‚¶ã®å ´åˆã€<a href="#vCard">ãã®ãƒ¦ãƒ¼ã‚¶ã®ãƒ‡ã‚¸ã‚¿ãƒ«å刺ã€ã¤ã¾ã‚ŠvCardを表示</a>ã™ã‚‹ã‚ˆã†ã«é¸æŠžã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚vCardを使用ã™ã‚‹ã¨ã€ãƒœã‚¿ãƒ³ã‚’クリックã™ã‚‹ã ã‘ã§ã€ãƒ¦ãƒ¼ã‚¶ã‚’Communicatorã®ã‚¢ãƒ‰ãƒ¬ã‚¹å¸³ã«ç°¡å˜ã«è¿½åŠ ã§ãã¾ã™ã€‚</p>
+
+<h2><a name="standard"></a>標準検索</h2>
+
+<p>標準検索ã¯ã€æŒ‡å®šã•ã‚ŒãŸãƒ‡ãƒ¼ã‚¿ã®æ€§è³ªã«ã‚ˆã£ã¦ç•°ãªã‚‹ã‚¿ã‚¤ãƒ—ã®æ¤œç´¢ã‚’実行ã—ã¾ã™ã€‚ã¤ã¾ã‚Šã€æ¤œç´¢ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«å…¥åŠ›ã—ãŸå†…容ã«ã‚ˆã£ã¦ã€ä¸€è‡´ã™ã‚‹<a href="#Name">æ°å</a>ã€<a href="#phone">電話番å·</a>ã€<a href="#email">é›»å­ãƒ¡ãƒ¼ãƒ« アドレス</a>ãªã©ã®æ¤œç´¢ãŒã§ãã¾ã™ã€‚</p>
+
+<p>入力ã—ãŸå†…容ã«å¿œã˜ã¦ã€æ¨™æº–検索ã§ã¯ã€åŸºæº–ã«å®Œå…¨ã«ä¸€è‡´ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªã€åŸºæº–ã‚’å«ã‚€ã‚¨ãƒ³ãƒˆãƒªã€åŸºæº–ã«é¡žä¼¼ã—ãŸéŸ³ã®èªžã‚’å«ã‚€ã‚¨ãƒ³ãƒˆãƒªã®ã„ãšã‚Œã‚’検索ã™ã‚‹ã‹ãŒåˆ¤å®šã•ã‚Œã¾ã™ã€‚ã¾ãŸã€[標準検索] フィールド㫠LDAP (Lightweight Directory Access Protocol) <a href="#filter">検索フィルタ</a>を指定ã—ã¦æ¤œç´¢ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚</p>
+
+<h3><a name="Performing a Standard Search"></a>標準検索ã®å®Ÿè¡Œ</h3>
+
+<ol>
+ <li>[標準検索] タブをクリックã—ã¾ã™ã€‚</li>
+ <li>[検索] ã®ãƒ‰ãƒ­ãƒƒãƒ—ダウン リストã‹ã‚‰ã€æ¤œç´¢ã—ãŸã„<a href="#type">エントリ タイプ</a>ã‚’é¸æŠžã—ã¾ã™ã€‚</li>
+ <li>[検索対象] フィールドã«ã€æ¤œç´¢ã—ãŸã„値を入力ã—ã¾ã™ã€‚[検索対象] フィールドã¯å¤§æ–‡å­—/å°æ–‡å­—を区別ã—ã¾ã›ã‚“。以下ã®ã„ãšã‚Œã§ã‚‚入力ã§ãã¾ã™ã€‚
+ <ul type="disc">
+ <li><a href="#Name">æ°å</a>ã¾ãŸã¯æ°åã®ä¸€éƒ¨</li>
+ <li>ユーザã®<a href="#initials">イニシャル</a> </li>
+ <li><a href="#phone">電話番å·</a>ã®ä¸€éƒ¨ã¾ãŸã¯å…¨éƒ¨
+ </li>
+ <li><a href="#email">é›»å­ãƒ¡ãƒ¼ãƒ« アドレス</a>ã®ä¸€éƒ¨ã¾ãŸã¯å…¨éƒ¨</li>
+ <li>LDAP <a href="#filter">検索フィルタ</a></li>
+ </ul>
+ </li>
+ <li>[é€ä¿¡] をクリックã—ã¾ã™ã€‚<br>
+ フォーム データをDirectory Serverã«é€ä¿¡ã™ã‚‹ã¨ã€å…¥åŠ›ã—ãŸå€¤ã«å®Œå…¨ä¸€è‡´ã€éƒ¨åˆ†ä¸€è‡´ã€ã¾ãŸã¯é¡žä¼¼ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªãŒæ¤œç´¢ã•ã‚Œã¾ã™ã€‚一致çµæžœã¯ã€<a href="#results">検索çµæžœ</a>テーブルã«è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚</li>
+</ol>
+
+<h4><a name="Name"></a>æ°åを検索ã™ã‚‹</h4>
+
+<p>以下ã®ã‚ˆã†ãªæ–‡å­—列を指定ã—ãŸå ´åˆ:</p>
+
+<ul>
+ <li>数字以外ã®æ–‡å­—ã‚’å«ã‚€</li>
+ <li>アット (@) 記å·ã‚’å«ã¾ãªã„</li>
+</ul>
+
+<p>標準検索ã§ã¯ã€æŒ‡å®šã—ãŸå€¤ã«å®Œå…¨ä¸€è‡´ã€éƒ¨åˆ†ä¸€è‡´ã€ã¾ãŸã¯é¡žä¼¼ã™ã‚‹æ°åã€åã€åå­—ã®æ¤œç´¢ãŒè©¦ã¿ã‚‰ã‚Œã¾ã™ã€‚</p>
+
+<p>例ãˆã°ã€æ–‡å­—列「<font face="Courier">son</font>ã€ã‚’指定ã™ã‚‹ã¨ã€ä»¥ä¸‹ã®ã‚ˆã†ãªçµæžœãŒæˆ»ã•ã‚Œã¾ã™ã€‚</p>
+
+<p>
+<ul>
+ <li>Gary Stevenson</li>
+ <li>Mary Sun</li>
+ <li>Allison Barker</li>
+</ul>
+
+<h4><a name="initials"></a>イニシャルを伴ãªã†æ°åを検索ã™ã‚‹</h4>
+
+<p>以下ã®é †åºã§ä»¥ä¸‹ã®é …目をå«ã‚€å€¤ã‚’指定ã—ãŸå ´åˆ:</p>
+
+<ol>
+ <li>1文字</li>
+ <li>スペース ( )ã€ãƒ”リオド (.)ã€ã¾ãŸã¯ãƒ”リオドã¨ã‚¹ãƒšãƒ¼ã‚¹ã‚’ä»»æ„ã®é †åºã§</li>
+ <li>1ã¤ã¾ãŸã¯è¤‡æ•°ã®æ–‡å­—</li>
+</ol>
+
+標準検索ã§ã¯ã€åを表ã™ã‚¤ãƒ‹ã‚·ãƒ£ãƒ«ã®å¾Œã«åå­—ãŒç¶šãã‚‚ã®ãŒæ¤œç´¢ã•ã‚Œã¾ã™ã€‚例ãˆã°ã€æ–‡å­—列「S.Andersonã€ã‚’指定ã™ã‚‹ã¨ã€ä»¥ä¸‹ã®ã‚ˆã†ãªçµæžœãŒæˆ»ã•ã‚Œã¾ã™ã€‚</p>
+
+<ul>
+ <li>Sally Anderson</li>
+ <li>Steve Anderson</li>
+ <li>Sue Anderson</li>
+</ul>
+
+<p>åŒæ§˜ã«ã€ä»¥ä¸‹ã®é †åºã§ä»¥ä¸‹ã®é …目をå«ã‚€å€¤ã‚’指定ã—ãŸå ´åˆ:</p>
+
+<ol>
+ <li>複数ã®æ–‡å­—</li>
+ <li>スペース ( )ã€ãƒ”リオド (.)ã€ã¾ãŸã¯ãƒ”リオドã¨ã‚¹ãƒšãƒ¼ã‚¹ã‚’ä»»æ„ã®é †åºã§</li>
+ <li>1文字</li>
+</ol>
+
+<p>標準検索ã§ã¯ã€åã®å¾Œã«å字を表ã™ã‚¤ãƒ‹ã‚·ãƒ£ãƒ«ãŒç¶šãã‚‚ã®ãŒæ¤œç´¢ã•ã‚Œã¾ã™ã€‚例ãˆã°ã€æ–‡å­—列「<font face="Courier New"></font>Mark
+.Pã€ã‚’指定ã™ã‚‹ã¨ã€ä»¥ä¸‹ã®ã‚ˆã†ãªçµæžœãŒæˆ»ã•ã‚Œã¾ã™ã€‚</p>
+
+<ul>
+ <li>Mark Payne</li>
+ <li>Mark Peck</li>
+ <li>Mark Polk</li>
+</ul>
+
+<blockquote>
+ <p><b>注: </b></p>
+ <p>イニシャルを使用ã—ãŸå ´åˆã€æ¨™æº–検索ã§ã¯å®Œå…¨ä¸€è‡´ã®æ¤œç´¢ã ã‘ãŒå®Ÿè¡Œã•ã‚Œã¾ã™ã€‚検索ã§æŒ‡å®šã—ãŸé€šã‚Šã®ã‚¤ãƒ‹ã‚·ãƒ£ãƒ«ã¨åå‰ã‚’æŒã¤ã‚¨ãƒ³ãƒˆãƒªã®ã¿ãŒæˆ»ã•ã‚Œã¾ã™ã€‚é¡žä¼¼ (発音ãŒä¼¼ã¦ã„ã‚‹) 検索ã¨å‰¯æ–‡å­—列検索ã¯å®Ÿè¡Œã•ã‚Œã¾ã›ã‚“。</p>
+</blockquote>
+
+<h4><a name="phone"></a>電話番å·ã‚’検索ã™ã‚‹</h4>
+
+<p>標準検索ã§ã¯ã€å…¥åŠ›ã—ãŸå€¤ãŒæ•°å­—ã ã‘ã‹ã‚‰æˆã‚‹å ´åˆã€é›»è©±ç•ªå·ãŒè‡ªå‹•çš„ã«æ¤œç´¢ã•ã‚Œã¾ã™ã€‚å°‘ãªãã¨ã‚‚1ã¤ã®æ•°å­—ã®å¾Œã«ç¶šã1ã¤ã®ãƒã‚¤ãƒ•ãƒ³ (-) を使用ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚</p>
+
+<p>ã“ã®ã‚¿ã‚¤ãƒ—ã®æ¤œç´¢ã¯ã€ã€Œçµ‚了文字ã€æ¤œç´¢ã§ã™ã€‚ã¤ã¾ã‚Šã€Directory Serverã¯æŒ‡å®šã•ã‚ŒãŸå€¤ã§çµ‚了ã™ã‚‹é›»è©±ç•ªå·ã‚’検索ã—ã¾ã™ã€‚例ãˆã°ã€å€¤<tt>123</tt>を入力ã—ãŸå ´åˆã€123ã§çµ‚了ã™ã‚‹ã™ã¹ã¦ã®é›»è©±ç•ªå·ãŒæ¤œç´¢ã•ã‚Œã¾ã™ã€‚</p>
+
+<h4><a name="email"></a>é›»å­ãƒ¡ãƒ¼ãƒ« アドレスを検索ã™ã‚‹</h4>
+
+<p>標準検索ã§ã¯ã€å…¥åŠ›ã—ãŸå€¤ã«ã‚¢ãƒƒãƒˆ (@) 記å·ãŒå«ã¾ã‚Œã‚‹å ´åˆã€ä¸€è‡´ã™ã‚‹é›»å­ãƒ¡ãƒ¼ãƒ« アドレスãŒè‡ªå‹•çš„ã«æ¤œç´¢ã•ã‚Œã¾ã™ã€‚ã¾ãšã€å…¥åŠ›å€¤ã«å®Œå…¨ã«ä¸€è‡´ã™ã‚‹é›»å­ãƒ¡ãƒ¼ãƒ« アドレスãŒæ¤œç´¢ã•ã‚Œã¾ã™ã€‚一致エントリãŒè¦‹ã¤ã‹ã‚‰ãªã‹ã£ãŸå ´åˆã¯ã€å…¥åŠ›å€¤ã§é–‹å§‹ã•ã‚Œã‚‹ã‚¨ãƒ³ãƒˆãƒªãŒæ¤œç´¢ã•ã‚Œã¾ã™ã€‚</p>
+
+<p>例ãˆã°ã€æ–‡å­—列「<font face="Courier">son@</font>ã€ã‚’指定ã™ã‚‹ã¨ã€æ¬¡ã®ã‚ˆã†ãªçµæžœãŒæˆ»ã•ã‚Œã¾ã™ã€‚</p>
+
+<ul>
+ <li>son@</li>
+</ul>
+ã¾ãŸã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªå†…ã§ä¸€è‡´ã‚¨ãƒ³ãƒˆãƒªãŒè¦‹ã¤ã‹ã‚‰ãªã‹ã£ãŸå ´åˆã¯ã€æ¬¡ã®ã‚ˆã†ãªçµæžœãŒæˆ»ã•ã‚Œã¾ã™ã€‚
+<ul>
+ <li>son@aardvark.org</li>
+ <li>son@acme.com</li>
+</ul>
+
+<h4><a name="filter"></a>検索フィルタを使用ã™ã‚‹</h4>
+
+<p>標準検索ã«æ­£ã—ã„検索ã®ã‚¿ã‚¤ãƒ—を判定ã•ã›ã‚‹ä»£ã‚Šã«ã€LDAP検索フィルタを明示的ã«æŒ‡å®šã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚LDAP検索フィルタを使用ã™ã‚‹ã¨ã€ç‰¹å®šã®<a HREF="attribut.htm">属性</a>値を対象ã«ã‚¨ãƒ³ãƒˆãƒªã‚’検索ã§ãã¾ã™ã€‚標準検索ã§ã¯ã€ç­‰å·è¨˜å· (=) ã‚’å«ã‚€æ–‡å­—列ã¯ã™ã¹ã¦LDAP検索フィルタã§ã‚ã‚‹ã¨ã¿ãªã•ã‚Œã¾ã™ã€‚例ãˆã°ã€</p>
+
+<pre>cn=*eve*</pre>
+
+<p>ã¯LDAP検索フィルタã§ã‚ã‚Šã€æ–‡å­—列<tt>eve</tt>ã‚’å«ã‚€ä¸€èˆ¬å (common name - CN) を探ã™å‰¯æ–‡å­—列検索を実行ã—ã¾ã™ã€‚LDAP検索フィルタ内ã§å±žæ€§ã‚’指定ã™ã‚‹ã¨ãã€Directory Serverã®ã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ã§è¡¨ç¤ºã•ã‚Œã‚‹å±žæ€§ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰åã§ã¯ãªãã€Directory Server内部ã§ä½¿ç”¨ã•ã‚Œã‚‹å±žæ€§ãƒ©ãƒ™ãƒ« (内部ID) を使用ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。例ãˆã°ã€[æ°å] 属性フィールドã®å†…部IDã¯ã€<TT>cn</TT>ã§ã™ã€‚標準検索ã§æ¤œç´¢ãƒ•ã‚£ãƒ«ã‚¿ã‚’入力ã™ã‚‹ã«ã¯ã€æ¬¡ã®ã‚ˆã†ã«ã€å±žæ€§ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰å (æ°å) ã§ã¯ãªãã€å†…部ID (commonName) を使用ã—ã¦ãã ã•ã„。
+</P>
+<P><TT>commonName=Smith Fukuda</TT></P>
+
+<P>属性フィールドã®ä¸­ã«ã¯ã€ç¬¬äºŒã®çœç•¥å½¢ã®å†…部IDã‚’æŒã¤ã‚‚ã®ãŒã‚ã‚Šã¾ã™ã€‚例ãˆã°ã€[æ°å] フィールドã«ã¯ã€commonNameã¨cnã®2ã¤ã®å†…部IDãŒã‚ã‚Šã¾ã™ã€‚検索フィルタã§ã¯ã€ã“れらã®ã„ãšã‚Œã§ã‚‚使用ã§ãã¾ã™ã€‚</p>
+
+<p>検索フィルタã®è©³ç´°ã¯ã€ã€Ž<em>Directory Server管ç†è€…用ガイド</em>ã€ã‚’å‚ç…§ã—ã¦ãã ã•ã„。</p>
+
+<h2><a name="advanced"></a>拡張検索</h2>
+
+<p>拡張検索を使用ã—ã¦ã€ç‰¹å®šã®å±žæ€§ãŒæŒ‡å®šã®å€¤ã‚’æŒã¤ã‚ˆã†ãªã‚¨ãƒ³ãƒˆãƒªã‚’検索ã§ãã¾ã™ã€‚例ãˆã°ã€æŒ‡å®šã—ãŸå€¤ã®é›»å­ãƒ¡ãƒ¼ãƒ« アドレスをæŒã¤ãƒ¦ãƒ¼ã‚¶ã‚’検索ã§ãã¾ã™ã€‚ã¾ãŸã€æŒ‡å®šã—ãŸå±žæ€§å€¤ã‚’<i>å«ã¾ãªã„</i>エントリを検索ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚例ãˆã°ã€åå­—ãŒSmithã§ãªã„ã™ã¹ã¦ã®ãƒ¦ãƒ¼ã‚¶ã‚’検索ã§ãã¾ã™ (ã“ã®ã‚ˆã†ãªæ¤œç´¢ã§ã¯å¤§é‡ã®çµæžœãŒæˆ»ã•ã‚Œã‚‹ãŸã‚ã€ã“ã®ç¨®ã®æ¤œç´¢ã®å®Ÿè¡Œã¯é¿ã‘ã¦ãã ã•ã„)。</p>
+
+<p>拡張検索ã§ã¯ã€å…¥åŠ›ã—ãŸèªžã«å®Œå…¨ã«ä¸€è‡´ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªã‚’戻ã™å®Œå…¨ä¸€è‡´æ¤œç´¢ãŒè¡Œã‚ã‚Œã¾ã™ã€‚検索を構築ã™ã‚‹ãŸã‚ã® [拡張検索] フォームã«ã¯ã€4ã¤ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ãŒã‚ã‚Šã¾ã™ã€‚ã“れら4ã¤ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«ã‚ˆã£ã¦ã€æ¤œç´¢ã‚’指定ã™ã‚‹æ–‡ãŒç¤ºã•ã‚Œã¾ã™ã€‚一般ã«ã€ã“ã®æ–‡ã®ã¯æ¬¡ã®ã‚ˆã†ã«æ§‹æˆã•ã‚Œã¾ã™ã€‚</p>
+
+<p><a href="#type">検索:</a><i> [エントリ タイプ] </i><a
+href="search.htm#wherethe">ãŸã ã—:</a><i> [属性] </i><a
+href="search.htm#typeofsearch">[検索タイプ]</a><i> [検索文字列]</i></p>
+
+<p>ã“れらã®æœ€åˆã®3ã¤ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã®ã‚ªãƒ—ションã¯ãƒ—ルダウン メニューã§é¸æŠžã§ãã¾ã™ã€‚最後ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«ã¯ã€å®Ÿéš›ã®æ¤œç´¢æ–‡å­—列を入力ã—ã¾ã™ã€‚例ãˆã°ã€æ¬¡ã®ã‚ˆã†ã«æ¤œç´¢ã‚’構築ã§ãã¾ã™ã€‚</p>
+
+<p><b>検索:</b><i> </i>[ユーザ]<i> </i><b>ãŸã ã—: </b>[åå­—] [is (一致)] [Bowker]</p>
+
+<p>ã¾ãŸã¯ã€æ¬¡ã®ã‚ˆã†ã«æ¤œç´¢ã‚’構築ã§ãã¾ã™ã€‚</p>
+
+<p><b>検索: </b>[ユーザ] <b>ãŸã ã—: </b>[æ°å] [sounds like (é¡žä¼¼)] [tree]</p>
+
+<h3><a name="Performing an Advanced Search"></a>拡張検索ã®å®Ÿè¡Œ</h3>
+
+<ol>
+ <li>[拡張検索] タブをクリックã—ã¾ã™ã€‚</li>
+ <li>[検索] ã®ãƒ‰ãƒ­ãƒƒãƒ—ダウン リストã‹ã‚‰ã€æ¤œç´¢ã—ãŸã„<a href="#type">エントリ タイプ</a>ã‚’é¸æŠžã—ã¾ã™ã€‚</li>
+ <li>[ãŸã ã—] フィールドã®ãƒ‰ãƒ­ãƒƒãƒ—ダウン リストã‹ã‚‰ã€æ¤œç´¢ã—ãŸã„属性をé¸æŠžã—ã¾ã™ã€‚é¸æŠžè‚¢ã¯ã€[検索] フィールドã§é¸æŠžã—ãŸã‚¨ãƒ³ãƒˆãƒª タイプã«ã‚ˆã£ã¦ç•°ãªã‚Šã¾ã™ã€‚下表ã«ã€é¸æŠžå¯èƒ½ãªã‚ªãƒ—ションã¨ãã®èª¬æ˜Žã‚’示ã—ã¾ã™ã€‚<br>
+<P>
+ <table border="2">
+ <tr>
+ <th><a name="wherethe"></a><b>[検索]フィールドã®å†…容. . .</b></th>
+ <th><b>é¸æŠžè‚¢. . .</b></th>
+ </tr>
+ <tr>
+ <td>ユーザã¾ãŸã¯NTユーザ</td>
+ <td><a HREF="attribut.htm#cn">æ°å</a>ã€
+ <a HREF="attribut.htm#sn">åå­—</a>ã€<a
+ HREF="attribut.htm#telephoneNumber">電話番å·</a>ã€
+ <a HREF="attribut.htm#mail">é›»å­ãƒ¡ãƒ¼ãƒ« アドレス</a>ã€<a
+ HREF="attribut.htm#uid">ユーザID</a>ã€ã¾ãŸã¯<a
+ HREF="attribut.htm#title">å½¹è·</a></td>
+ </tr>
+ <tr>
+ <td>グループã¾ãŸã¯NTグループ</td>
+ <td><a HREF="attribut.htm#description">記述</a>ã€
+ <a HREF="attribut.htm#owner">所有者</a>ã€ã¾ãŸã¯
+ <a HREF="attribut.htm#ntGroupType">NTグループ タイプ</a> (NTグループã®å ´åˆ)</td>
+ </tr>
+ <tr>
+ <td>組織</td>
+ <td><a HREF="attribut.htm#l">場所</a>ã€
+ <a HREF="attribut.htm#telephoneNumber">電話番å·
+ </a>ã€ã¾ãŸã¯<a HREF="attribut.htm#description">記述</a></td>
+ </tr>
+ <tr>
+ <td>ä»»æ„ã®ã‚¿ã‚¤ãƒ—</td>
+ <td><a HREF="attribut.htm#cn">å</a>ã¾ãŸã¯
+ <a HREF="attribut.htm#description">記述</a></td>
+ </tr>
+ </table>
+ </li>
+<P>
+ <li>実行ã—ãŸã„検索ã®ã‚¿ã‚¤ãƒ—ã‚’é¸æŠžã—ã¾ã™ã€‚<br>
+ <br>
+ 一般ã«ã€ã“ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã¯ã€æ¤œç´¢ãŒç­‰å·æ¤œç´¢ã€å‰¯æ–‡å­—列検索ã€é¡žä¼¼
+ (発音ãŒä¼¼ã¦ã„ã‚‹) 検索ã®ã„ãšã‚Œã§ã‚ã‚‹ã‹ã‚’示ã—ã¾ã™ã€‚下表ã«ã€ä½¿ç”¨å¯èƒ½ãªå„キーワードã¨ã€ãã‚Œãžã‚ŒãŒè¡¨ã™æ¤œç´¢ã‚¿ã‚¤ãƒ—ã®å®šç¾©ã‚’示ã—ã¾ã™ã€‚ã“れらã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã®ã™ã¹ã¦ãŒå„検索ã§ä½¿ç”¨ã§ãã‚‹ã‚ã‘ã§ã¯ã‚ã‚Šã¾ã›ã‚“。実際ã«ä½¿ç”¨ã§ãるキーワードã¯ã€[検索] フィールド㨠[ãŸã ã—] フィールドã§é¸æŠžã—ãŸå€¤ã«ã‚ˆã£ã¦ç•°ãªã‚Šã¾ã™ã€‚以下ã®ã„ãšã‚Œã‹1ã¤ã‚’é¸æŠžã§ãã¾ã™ã€‚
+<p>
+ <table border="2">
+ <tr>
+ <th><a name="typeofsearch"></a><b>検索タイプ</b></th>
+ <th><b>説明</b></th>
+ </tr>
+ <tr>
+ <td>is (一致)</td>
+ <td>完全一致ãŒæ¤œç´¢ã•ã‚Œã¾ã™ã€‚ã¤ã¾ã‚Šã€ã“ã®ã‚ªãƒ—ションã¯ç­‰å·æ¤œç´¢ã‚’指定ã—ã¾ã™ã€‚エントリã®å±žæ€§ã®å®Œå…¨ãªå€¤ãŒåˆ†ã‹ã£ã¦ã„ã‚‹å ´åˆã«ã“ã®ã‚ªãƒ—ションを使用ã—ã¾ã™ã€‚例ãˆã°ã€ãƒ¦ãƒ¼ã‚¶ã®åå­—ã®å®Œå…¨ãªã‚¹ãƒšãƒ«ãŒåˆ†ã‹ã£ã¦ã„ã‚‹å ´åˆã«ä½¿ç”¨ã—ã¾ã™ã€‚</td>
+ </tr>
+ <tr>
+ <td>is not (ä¸ä¸€è‡´)</td>
+ <td>検索文字列ã«å®Œå…¨ã«ä¸€è‡´ã—ãªã„属性値をæŒã¤ã‚¨ãƒ³ãƒˆãƒªãŒã™ã¹ã¦æˆ»ã•ã‚Œã¾ã™ã€‚例ãˆã°ã€åå­—ãŒSmithã§ãªã„ã™ã¹ã¦ã®ãƒ¦ãƒ¼ã‚¶ã‚’ディレクトリã§æ¤œç´¢ã™ã‚‹å ´åˆã«ã“ã®ã‚ªãƒ—ションを使用ã—ã¾ã™ã€‚ãŸã ã—ã€ã“ã®ã‚ªãƒ—ションを使用ã™ã‚‹ã¨ã€å¤§é‡ã®ã‚¨ãƒ³ãƒˆãƒªãŒæˆ»ã•ã‚Œã‚‹ã“ã¨ãŒã‚ã‚‹ã®ã§æ³¨æ„ã—ã¦ãã ã•ã„。</td>
+ </tr>
+ <tr>
+ <td>sounds like (é¡žä¼¼)</td>
+ <td>発音ã«å³ã—ãŸæ¤œç´¢ãŒå®Ÿè¡Œã•ã‚Œã¾ã™ã€‚属性値ã¯åˆ†ã‹ã£ã¦ã„ã‚‹ãŒã€ã‚¹ãƒšãƒ«ãŒä¸æ˜Žã®å ´åˆã«ã“ã®ã‚ªãƒ—ションを使用ã—ã¾ã™ã€‚例ãˆã°ã€ãƒ¦ãƒ¼ã‚¶ã®åå­—ã®ã‚¹ãƒšãƒ«ãŒSarretã€Saretteã€Sarettã®ã„ãšã‚Œã§ã‚ã‚‹ã‹ä¸æ˜Žã®å ´åˆã«ä½¿ç”¨ã—ã¾ã™ã€‚</td>
+ </tr>
+ <tr>
+ <td>starts with (開始文字)</td>
+ <td>副文字列検索ãŒå®Ÿè¡Œã•ã‚Œã¾ã™ã€‚指定ã—ãŸæ¤œç´¢æ–‡å­—列ã§é–‹å§‹ã™ã‚‹å€¤ã‚’æŒã¤å±žæ€§ãŒæˆ»ã•ã‚Œã¾ã™ã€‚例ãˆã°ã€ãƒ¦ãƒ¼ã‚¶ã®åãŒSteveã§ã‚ã‚‹ã¨åˆ†ã‹ã£ã¦ã„ã‚‹ãŒã€åå­—ãŒä¸æ˜Žã®å ´åˆã«ã€ã“ã®ã‚ªãƒ—ションを使用ã—ã¦æ°åを検索ã§ãã¾ã™ã€‚</td>
+ </tr>
+ <tr>
+ <td>ends with (終了文字)</td>
+ <td>副文字列検索ãŒå®Ÿè¡Œã•ã‚Œã¾ã™ã€‚指定ã—ãŸæ¤œç´¢æ–‡å­—列ã§çµ‚了ã™ã‚‹å€¤ã‚’æŒã¤å±žæ€§ãŒæˆ»ã•ã‚Œã¾ã™ã€‚例ãˆã°ã€ãƒ¦ãƒ¼ã‚¶ã®é›»è©±ç•ªå·ã®æœ€å¾Œã®4æ¡ãŒ9876ã§ã‚ã‚‹ã¨åˆ†ã‹ã£ã¦ã„ã‚‹å ´åˆã«ã€ã“ã®ã‚ªãƒ—ションを使用ã—ã¦ãã®ãƒ¦ãƒ¼ã‚¶ã®ã‚¨ãƒ³ãƒˆãƒªã‚’検索ã—ã¾ã™ã€‚</td>
+ </tr>
+ <tr>
+ <td>contains (å«æœ‰)</td>
+ <td>副文字列検索ãŒå®Ÿè¡Œã•ã‚Œã¾ã™ã€‚指定ã—ãŸæ¤œç´¢æ–‡å­—列をå«ã‚€å€¤ã‚’æŒã¤å±žæ€§ãŒæˆ»ã•ã‚Œã¾ã™ã€‚例ãˆã°ã€çµ„ç¹”ã®è¨˜è¿°ã«ãŠãらãsupportã¨ã„ã†èªžãŒå«ã¾ã‚Œã‚‹ã¨æ€ã†å ´åˆã«ã€ã“ã®ã‚ªãƒ—ションã§æ¤œç´¢æ–‡å­—列「supportã€ã‚’使用ã—ã¦ãã®çµ„ç¹”ã®ã‚¨ãƒ³ãƒˆãƒªã‚’検索ã—ã¾ã™ã€‚</td>
+ </tr>
+ </table>
+ </li>
+<p>
+ <li>検索ã—ãŸã„文字列をテキストボックスã«å…¥åŠ›ã—ã€[検索] をクリックã—ã¾ã™ã€‚<br>
+ Directory Serverã«ãƒ•ã‚©ãƒ¼ãƒ  データをé€ä¿¡ã™ã‚‹ã¨ã€æŒ‡å®šã—ãŸå€¤ã«å®Œå…¨ã«ä¸€è‡´ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªãŒæ¤œç´¢ã•ã‚Œã¾ã™ã€‚一致çµæžœã¯æ¤œç´¢çµæžœãƒªã‚¹ãƒˆã¨ã—ã¦è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚</li>
+</ol>
+
+<h3><a name="Advanced Search Examples"></a>拡張検索ã®ä¾‹</h3>
+
+<p>以下ã¯ã€[拡張検索]フォームã®ä½¿ç”¨ä¾‹ã§ã™ã€‚åž‚ç›´ãƒãƒ¼ (|) ã¯ãƒ•ã‚©ãƒ¼ãƒ ä¸Šã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã®åŒºåˆ‡ã‚Šã‚’表ã—ã¾ã™ã€‚</p>
+
+<table border="2">
+ <tr>
+ <th><b>検索項目. . .</b></th>
+ <th><b>入力内容. . .</b></th>
+ </tr>
+ <tr>
+ <td>Darleneã¨ã„ã†åã®ã™ã¹ã¦ã®ãƒ¦ãƒ¼ã‚¶</td>
+ <td><b>検索:</b> ユーザ | <b>ãŸã ã—:</b> æ°å |
+ starts with (開始文字) | Darlene</td>
+ </tr>
+ <tr>
+ <td>åå­—ãŒSweeneyã®ã™ã¹ã¦ã®ãƒ¦ãƒ¼ã‚¶</td>
+ <td><b>検索:</b> ユーザ | <b>ãŸã ã—:</b> åå­— |
+ is (一致) | Sweeny</td>
+ </tr>
+ <tr>
+ <td>Vice President (副社長) ã§ã‚ã‚‹ã™ã¹ã¦ã®ãƒ¦ãƒ¼ã‚¶</td>
+ <td><b>検索:</b> ユーザ | <b>ãŸã ã—:</b> å½¹è· |
+ contains (å«æœ‰) | Vice President</td>
+ </tr>
+ <tr>
+ <td>Accounting (会計) ã¨ã„ã†åå‰ã®çµ„ç¹”</td>
+ <td><b>検索:</b> 組織 | <b>ãŸã ã—:</b> åå‰ |
+ is (一致) | Accounting</td>
+ </tr>
+ <tr>
+ <td>Scuba Diving (スキューãƒãƒ€ã‚¤ãƒ“ング) ã«èˆˆå‘³ã®ã‚るグループ</td>
+ <td><b>検索:</b> グループ | <b>ãŸã ã—:</b> 記述 |
+ contains (å«æœ‰) | scuba</td>
+ </tr>
+ <tr>
+ <td>printerã¨ã„ã†èªžã‚’å«ã‚€åã‚’æŒã¤ã‚¨ãƒ³ãƒˆãƒª</td>
+ <td><b>検索:</b> ä»»æ„ã®ã‚¿ã‚¤ãƒ— | <b>ãŸã ã—:</b> åå‰ |
+ contains (å«æœ‰) | printer</td>
+ </tr>
+</table>
+
+<h2><a name="results"></a>検索çµæžœã®è¡¨ç¤º</h2>
+
+<p>標準検索ã¾ãŸã¯æ‹¡å¼µæ¤œç´¢ã‚’実行ã™ã‚‹ã¨ãã€æ¤œç´¢ãƒ‡ãƒ¼ã‚¿ãŒDirectory Serverインタフェースã«ã‚ˆã£ã¦Directory Serverã¸é€ä¿¡ã•ã‚Œã¾ã™ã€‚Directory Serverã§æ¤œç´¢ãŒå®Ÿè¡Œã•ã‚Œã€ä¸€è‡´ã—ãŸã‚¨ãƒ³ãƒˆãƒªãŒDirectory Serverã®ã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ã¸æˆ»ã•ã‚Œã¾ã™ã€‚çµæžœã®è¡¨ç¤ºæ–¹æ³•ã¯ã€ä»¥ä¸‹ã®ã‚ˆã†ãªä¸€è‡´ã®ç¨®é¡žã«ã‚ˆã£ã¦ç•°ãªã‚Šã¾ã™ã€‚</p>
+
+<ul>
+ <li><a href="#nomatch">一致ãªã—</a></li>
+ <li><a href="#single">1件ã®ä¸€è‡´</a></li>
+ <li><a href="#multiple">複数ã®ä¸€è‡´</a></li>
+</ul>
+
+<p>ã“ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§ã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª ツリーã§æ¤œç´¢ã‚’試ã¿ã‚‹ã¨ãã«é­é‡ã™ã‚‹<a href="#problems">ãã®ä»–ã®å•é¡Œ</a>ã«ã¤ã„ã¦ã‚‚説明ã—ã¦ã„ã¾ã™ã€‚</p>
+
+<h3><a name="nomatch"></a>一致ãªã—</h3>
+
+<p>検索çµæžœã¨ã—ã¦ä¸€è‡´ãªã—ãŒæˆ»ã•ã‚ŒãŸå ´åˆã€ä»¥ä¸‹ã®ã„ãšã‚Œã‹ã‚’æ„味ã—ã¾ã™ã€‚</p>
+
+<ul>
+ <li>検索基準ã«ä¸€è‡´ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªãŒãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªå†…ã«å­˜åœ¨ã—ãªã„ã“ã¨ã€‚ã“ã‚ŒãŒæ­£ã—ããªã„ã¨æ€ã‚れる場åˆã¯ã€ä»–ã®çµæžœãŒå¾—られるã‹ã©ã†ã‹ã€å¤šå°‘ç•°ãªã‚‹ãƒ‘ラメータを使用ã—ã¦åˆ¥ã®æ¤œç´¢ã‚’試ã¿ã¦ãã ã•ã„。</li>
+ <li>検索を実行ã™ã‚‹å‰ã«<a href="auth.htm#1016877">èªè¨¼</a>ã‚’è¡Œã‚ãªã‹ã£ãŸã“ã¨ã€‚èªè¨¼ã®å¿…è¦æ¡ä»¶ã¯ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªç®¡ç†è€…ãŒæ±ºå®šã—ã¾ã™ã€‚ディレクトリ管ç†è€…ã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ã‚¢ã‚¯ã‚»ã‚¹åˆ¶å¾¡ã‚’設定ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€ãƒ„リーを検索ã™ã‚‹å‰ã«ãƒ¦ãƒ¼ã‚¶ãŒèªè¨¼ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„よã†ã«ã§ãã¾ã™ã€‚アクセス制御ã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª ツリー全体ã¾ãŸã¯ãƒ„リーã®ä¸€éƒ¨ã®ã¿ã‚’対象ã«è¨­å®šã§ãã¾ã™ã€‚ディレクトリ ツリーを検索ã™ã‚‹å‰ã«èªè¨¼ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã®ã«ã€æ¤œç´¢ã®å®Ÿè¡Œå‰ã«èªè¨¼ã—ãªã‹ã£ãŸå ´åˆã€Directory Serverã¯ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§ä¸€è‡´ã‚¨ãƒ³ãƒˆãƒªãŒè¦‹ã¤ã‹ã‚‰ãªã‹ã£ãŸã‹ã®ã‚ˆã†ã«å‹•ä½œã—ã¾ã™ã€‚セキュリティã®ç†ç”±ã‹ã‚‰ã€èªè¨¼ãŒå¿…è¦ã§ã‚ã‚‹ã“ã¨ã‚’知らã›ã‚‹ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ã¾ã£ãŸã表示ã•ã‚Œã¾ã›ã‚“。検索ã®å®Ÿè¡Œå‰ã«Directory Serverã«èªè¨¼ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã‹ã©ã†ã‹ã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªç®¡ç†è€…ã«ãŠå°‹ã­ãã ã•ã„。èªè¨¼ã®è©³ç´°ã¯ã€ã€Œãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã¸ã®èªè¨¼ã€ã‚’å‚ç…§ã—ã¦ãã ã•ã„。</li>
+ <li>èªè¨¼ã®å¿…è¦æ€§ã«é–¢ã‚らãšã€ãƒ„リーã®ã‚¢ã‚¯ã‚»ã‚¹åˆ¶å¾¡ã«ã‚ˆã‚Šã€ã‚¨ãƒ³ãƒˆãƒªã®è¡¨ç¤ºãŒç¦æ­¢ã•ã‚Œã¦ã„ã‚‹ã“ã¨ã€‚</li>
+</ul>
+
+<h3><a name="single"></a>1件ã®ä¸€è‡´<b> </b></h3>
+
+<p>「is (一致)ã€æ¤œç´¢ã«å¯¾ã—ã¦1件ã ã‘ã®ä¸€è‡´ãŒæˆ»ã•ã‚ŒãŸå ´åˆã€Directory Serverインタフェースã«ã‚ˆã£ã¦ã€ãã®ã‚¨ãƒ³ãƒˆãƒªã«é–¢ã™ã‚‹æƒ…å ±ãŒæ¤œç´¢çµæžœã¨ã—ã¦è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ã“ã®1件ã®ä¸€è‡´ãŒä»–ã®æ¤œç´¢æ–¹æ³•ã§ã‚‚見ã¤ã‹ã£ãŸå ´åˆã¯ãƒ†ãƒ¼ãƒ–ルã«è¡¨ç¤ºã•ã‚Œã‚‹ã®ã§ã€ãƒªãƒ³ã‚¯ã‚’クリックã—ã¦ãã®ã‚¨ãƒ³ãƒˆãƒªã®è©³ç´°æƒ…報を表示ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ã“ã®ãƒ•ã‚©ãƒ¼ãƒ ã«ã¯ã€ã‚¨ãƒ³ãƒˆãƒªã‚’<a href="mod.htm">編集</a>ã™ã‚‹ãŸã‚ã®ãƒœã‚¿ãƒ³ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚エントリを編集ã™ã‚‹ã«ã¯é©åˆ‡ãªè¨±å¯ãŒå¿…è¦ã§ã™ã€‚ã¾ãŸã€ã‚¨ãƒ³ãƒˆãƒªã‚’編集ã™ã‚‹å‰ã«ã€<a href="auth.htm#userauth">èªè¨¼</a>ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚</p>
+
+<h3><a name="multiple"></a>複数ã®ä¸€è‡´<b> </b></h3>
+
+<p>検索ã«å¯¾ã—ã¦è¤‡æ•°ã®ä¸€è‡´ãŒæˆ»ã•ã‚ŒãŸå ´åˆã€Directory Serverインタフェースã«ã‚ˆã£ã¦ã€ä¸€è‡´ã—ãŸã™ã¹ã¦ã®ã‚¨ãƒ³ãƒˆãƒªã¨ã€å„エントリã®é–¢é€£æƒ…å ± (エントリã®é›»è©±ç•ªå·ã‚„é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ãªã©) ãŒãƒ†ãƒ¼ãƒ–ルã«è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚実際ã«è¡¨ç¤ºã•ã‚Œã‚‹æƒ…å ±ã¯ã€æ¤œç´¢ä¸­ã®ã‚¨ãƒ³ãƒˆãƒªã®ã‚¿ã‚¤ãƒ—ã«ã‚ˆã£ã¦æ±ºå®šã•ã‚Œã¾ã™ã€‚特定ã®ã‚¨ãƒ³ãƒˆãƒªã«ã¤ã„ã¦è©³ç´°ã‚’表示ã™ã‚‹ã«ã¯ã€ãƒ†ãƒ¼ãƒ–ルã®æœ€åˆã®åˆ—ã«ã‚るエントリã®åå‰ã‚’クリックã—ã¾ã™ã€‚</p>
+
+<h3><a name="problems"></a><b>ãã®ä»–ã®å•é¡Œ</b></h3>
+
+<p>数値を検索ã™ã‚‹å ´åˆã€å¥‡å¦™ãªçµæžœãŒè¡¨ç¤ºã•ã‚Œã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚ã“ã‚Œã¯ã€Directory Serverã§ã¯ã€å®Ÿéš›ã«æ•°å€¤ (電話番å·ã‚„部屋番å·) ã§ã‚ã‚‹ã‹ã©ã†ã‹ã«é–¢ã‚ãšã€ã™ã¹ã¦ã®å€¤ãŒæ–‡å­—列ã¨ã—ã¦ä¿å­˜ã•ã‚Œã‚‹ãŸã‚ã§ã™ã€‚ã“ã®ãŸã‚ã€æ•°å€¤ã‚’検索ã™ã‚‹ã¨ãã¯ã€ã‚¹ãƒšãƒ¼ã‚¹ã‚„先行ã™ã‚‹ã‚¼ãƒ­ãŒã‚ã‚‹å ´åˆã€ãれらもã™ã¹ã¦å«ã‚るよã†ã«æ³¨æ„ã—ã¦ãã ã•ã„。</p>
+
+<p>ã¾ãŸã€Directory Serverインタフェースã«ã‚ˆã£ã¦ã€å…ˆè¡ŒãŠã‚ˆã³å¾Œç¶šã®ç©ºç™½ã‚¹ãƒšãƒ¼ã‚¹ãŒæ¤œç´¢åŸºæº–ã‹ã‚‰ã™ã¹ã¦é™¤åŽ»ã•ã‚Œã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。実際ã«ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª エントリã®å€¤ã«å…ˆè¡Œã¾ãŸã¯å¾Œç¶šã®ç©ºç™½ã‚¹ãƒšãƒ¼ã‚¹ãŒå«ã¾ã‚Œã‚‹ã“ã¨ã¯ã»ã¨ã‚“ã©ã‚ã‚Šã¾ã›ã‚“ãŒã€å«ã¾ã‚Œã‚‹å ´åˆã‚‚ã‚ã‚Šã¾ã™ã€‚ã“ã®ãŸã‚ã«ã€å…ˆè¡Œã¾ãŸã¯å¾Œç¶šã®ç©ºç™½ã‚¹ãƒšãƒ¼ã‚¹ãŒå«ã¾ã‚Œã‚‹å€¤ã«å¯¾ã™ã‚‹å®Œå…¨ä¸€è‡´ã®æ¤œç´¢ãŒå¤±æ•—ã—ã¾ã™ã€‚ã“ã®å•é¡ŒãŒç™ºç”Ÿã—ãŸå ´åˆã¯ã€å®Œå…¨ä¸€è‡´æ¤œç´¢ã®ä»£ã‚ã‚Šã«ã€<a
+href="filters.htm#1018345">副文字列検索</a> (contains (å«æœ‰) 検索) を使用ã™ã‚‹ã¨è‰¯ã„ã§ã—ょã†ã€‚</p>
+
+<h2><a name="vCard"></a>vCardã®è¡¨ç¤º</h2>
+
+<p>vCardã¨ã¯ãƒ‡ã‚¸ã‚¿ãƒ«å¼ã®å刺ã§ã™ã€‚普通ã®å刺ã¨åŒæ§˜ã€vCardã«ã¯ã€ãƒ¦ãƒ¼ã‚¶ã®åå‰ã€å½¹è·ã€é›»è©±ãŠã‚ˆã³ãƒ•ã‚¡ãƒƒã‚¯ã‚¹ç•ªå·ã€é›»å­ãƒ¡ãƒ¼ãƒ« アドレスãªã©ã®é€£çµ¡å…ˆæƒ…å ±ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚ãŸã ã—ã€æ™®é€šã®å刺ã¨ç•°ãªã‚Šã€vCardã«ã¯ã€ç”»åƒã€éŸ³å£°ã€ãƒ“デオãªã©ã®ãƒžãƒ«ãƒãƒ¡ãƒ‡ã‚£ã‚¢è¦ç´ ã‚‚å«ã‚ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚vCardを表示ã™ã‚‹ã«ã¯ã€ä»¥ä¸‹ã«å¾“ã£ã¦ãã ã•ã„。</p>
+
+<ol>
+ <li><a href="#standard">標準検索</a>ã¾ãŸã¯<a
+ href="#advanced">拡張検索</a>機能を使用ã—ã¦ã€è¡¨ç¤ºã—ãŸã„vCardã®æ‰€æœ‰è€…を検索ã—ã¾ã™ã€‚</li>
+ <li>[View Card] ボタンをクリックã—ã¾ã™ã€‚<br>
+ Directory Serverインタフェースã«ã‚ˆã£ã¦ã€vCardã®ç¸®å°ç‰ˆãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚</li>
+ <li>詳細を表示ã™ã‚‹ã«ã¯ã€[View
+ Complete Card] をクリックã—ã¾ã™ã€‚</li>
+ <li>Communicatorã®ã‚¢ãƒ‰ãƒ¬ã‚¹å¸³ã«ãã®ãƒ¦ãƒ¼ã‚¶ã‚’追加ã™ã‚‹ã«ã¯ã€
+ [Add to Address Book] をクリックã—㦠[OK] をクリックã—ã¾ã™ã€‚</li>
+</ol>
+</body>
+</html>
+
+
+
diff --git a/ldap/clients/dsgw/html/manual/mod.htm b/ldap/clients/dsgw/html/manual/mod.htm
new file mode 100644
index 00000000..1cb9e64d
--- /dev/null
+++ b/ldap/clients/dsgw/html/manual/mod.htm
@@ -0,0 +1,828 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Portions copyright 1999, 2002-2003 Netscape Communications Corporation.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Editing Directory Entries</TITLE>
+</HEAD>
+<BODY>
+
+<H1><A NAME="editing"></A>Editing Entries</H1>
+
+You can modify existing entries in
+the directory using the Directory Server interface. Modify an entry
+by <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm">searching for the entry</A>, <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#results">viewing
+it</A>, and then clicking the edit button.
+
+<P>If you have not <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#userauth">authenticated</A> before
+you attempt to edit an entry, or if your authentication has expired, the
+Directory Server prompts you to authenticate before continuing.
+
+<P>You can edit:
+<UL>
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#people">people</A></LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#ntpeople">NT people</A></LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#groups">groups</A></LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#NTgroups">NT groups</A></LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#o">organizations</A></LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#dc">domains</A></LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#ou">organizational units</A></LI>
+</UL>
+
+<H2>
+<A NAME="people"></A>Editing People</H2>
+To edit a person's entry, do the following:
+<OL>
+<LI>
+Search for the entry using the <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#standard">Standard Search</A>
+or <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#advanced">Advanced Search</A> mechanism.</LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#results">View the entry</A>.</LI>
+
+<LI>
+Click the Edit Person button.</LI>
+
+<LI>
+If you have not authenticated before you attempt to edit an entry, or if
+your authentication has expired, the Directory Server prompts you to
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#userauth">authenticate</A> before continuing.</LI>
+
+<LI>
+To edit the person's entry, type the value you desire for each
+field. You must supply values for the required fields. The required fields
+for a person are:</LI>
+
+<UL type="disc">
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#commonName">Full Name</A></LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#surname">Last Name</A></LI>
+</UL>
+
+<LI>
+You can provide values for the optional fields now, or edit them later.
+The optional fields for a person are:</LI>
+
+<P>
+<CENTER><TABLE BORDER=2>
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#givenName">First Name</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#telephoneNumber">Phone </A></TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#mail">Email Address</A> </TD>
+</TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#fax">Fax</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#userid">User ID </A></TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#pager">Pager </A></TD>
+</TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#mobile">Mobile Phone</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#businessCategory">Business Category</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#title">Title </A></TD>
+</TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#organizationalUnitName">Organizational Unit</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#manager">Manager</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#roomNumber">Room Number </A></TD>
+</TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#secretary">Admin </A></TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#departmentNumber">Dept# </A></TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#employeeNumber">Emp#</A> </TD>
+</TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#carLicnese">Car License# </A></TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#postalAddress">Mailing Address </A></TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#description">Description</A> </TD>
+</TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#seeAlso">See Also </A></TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#labeledURI">URL </A></TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#userPassword">Password</A> </TD>
+</TR>
+</TABLE></CENTER>
+<P>
+<LI>
+You may <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#addmanager">add values to the Manager and Admin
+fields</A> by clicking the corresponding Edit button.</LI>
+
+<LI>
+You may <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#addowner">add values to the See Also field</A>
+by clicking the corresponding Edit button.</LI>
+
+<LI>
+When you are done editing the fields, click Save Changes.</LI>
+</OL>
+From this window you can also:
+<UL>
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#rename">Rename an entry</A></LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#delete">Delete an entry</A></LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#changepw">Change a password</A></LI>
+</UL>
+
+<H3><A NAME="addmanager"></A>Adding Values to the Manager and Admin Fields</H3>
+
+When you click the Edit button in the Manager or Admin field,
+a new form that allows you to add or delete the corresponding
+attribute value is displayed. To add an individual to the Manager or Admin attribute,
+do the following:
+<OL>
+<LI>
+In the text box, enter a search string to be used to locate the entry of
+the person who is the manager or admin. Enter any of the following:</LI>
+
+<UL type="disc">
+<LI>
+A name. Enter a full name or a partial name. All entries that equally match
+the search string are returned. If no such entries are found, all entries
+that contain the search string are returned. If no such entries are found,
+any entries that sound like the search string are returned.</LI>
+
+<LI>
+A user ID (if you are searching for user entries).</LI>
+
+<LI>
+A telephone number. If you enter only a partial number, any entries that
+have telephone numbers ending in the search number are returned.</LI>
+
+<LI>
+An email address. Any search string containing an at (@) symbol is assumed
+to be an email address. If an exact match cannot be found, then a search
+is performed to find all email addresses that begin with the search string.</LI>
+
+<LI>
+An asterisk (*) to see all of the entries or groups currently residing
+in your directory.</LI>
+
+<LI>
+Any <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#filter">LDAP search filter</A>. Any string that
+contains an equal sign (=) is considered to be a search filter.</LI>
+</UL>
+
+<LI>
+Click "Find and Add" to find the matching entry and add it to the
+list. If any entries that you do not want to designate as manager
+or admin are listed, click the box in the "Remove from list" column. You can
+also construct a search filter to match the entries you want removed and
+then click "Find and Remove."</LI>
+
+<LI>
+When the list of group members is complete, click Save Changes.
+The currently displayed entry is now the value for the manager or admin
+attribute field.</LI>
+</OL>
+
+<H2>
+<A NAME="ntpeople"></A>Editing NT People</H2>
+To edit an NT person's entry, do the following:
+<OL>
+<LI>
+Search for the entry using the <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#standard">Standard Search</A>
+or <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#advanced">Advanced Search</A> mechanism.</LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#results">View the entry</A>.</LI>
+
+<LI>
+Click the Edit NT Person button.</LI>
+
+<LI>
+If you have not authenticated before you attempt to edit an entry, or if
+your authentication has expired, the Directory Server prompts you to
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#userauth">authenticate</A> before continuing.</LI>
+
+<LI>
+To edit the person's entry, type in the new value for each
+field. You must supply values for the required fields. The required fields
+for an NT person are:</LI>
+
+<UL type="disc">
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#commonName">Full Name</A></LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#surname">Last Name</A></LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#ntUserDomainId">NT Domain Name</A></LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#uid">NT User ID</A></LI>
+</UL>
+
+<LI>
+You can provide values for the optional fields now, or add them later.
+The optional fields for an NT person are:</LI>
+
+<P>
+<CENTER><TABLE BORDER=2>
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#givenName">First Name</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#telephoneNumber">Phone </A></TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#mail">Email Address</A> </TD>
+</TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#fax">Fax </A></TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#userPassword">Directory Server Password</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#pager">Pager</A> </TD>
+</TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#mobile">Mobile Phone</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#businessCategory">Business Category</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#title">Title</A> </TD>
+</TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#organizationalUnitName">Organizational Unit</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#manager">Manager</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#roomNumber">Room Number</A> </TD>
+</TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#secretary">Admin </A></TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#departmentNumber">Dept#</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#employeeNumber">Emp#</A> </TD>
+</TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#carLicnese">Car License#</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#postalAddress">Mailing Address</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#description">Description</A> </TD>
+</TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#seeAlso">See Also</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#labeledURI">URL</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#userid">User Id</A> </TD>
+</TR>
+</TABLE></CENTER>
+<P>
+<LI>
+You can also change the value for the <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#ntUserDeleteAccount">Delete
+NT Account if Person deleted</A> option.</LI>
+
+<LI>
+To <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#addmanager">add values to the Manager and Admin
+fields</A>, click the corresponding Edit button.</LI>
+
+<LI>
+To <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#addowner">add values to the See Also field</A>,
+click the corresponding Edit button.</LI>
+
+<LI>
+When you are done editing the fields, click Save Changes.</LI>
+</OL>
+From this window you can also:
+<UL>
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#rename">Rename the entry</A></LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#delete">Delete an entry</A></LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#changepw">Change the password</A></LI>
+</UL>
+
+<H2><A NAME="groups"></A>Editing Groups</H2>
+
+To edit a group entry, do the following:
+<OL>
+<LI>
+Search for the entry using the <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#standard">Standard Search</A>
+or <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#advanced">Advanced Search</A> mechanism.</LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#results">View the entry</A>.</LI>
+
+<LI>
+Click the Edit Group button.</LI>
+
+<LI>
+If you have not authenticated before you attempt to edit an entry, or if
+your authentication has expired, the Directory Server prompts you to
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#userauth">authenticate</A> before continuing.</LI>
+
+<LI>
+To edit the group's entry, type the new value for each
+field. You must supply values for the required field,
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#name">Name</A>.
+
+<LI>
+You can provide values for the optional fields now, or edit them later.
+The optional fields for a group are:</LI>
+
+<P>
+<CENTER><TABLE BORDER=2>
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#description">Description</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#owner">Owner</A> </TD>
+</TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#member">Group Members</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#seeAlso">See Also</A></TD>
+</TR>
+</TABLE></CENTER>
+<P>
+<LI>
+To <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#addowner">add values to the See Also, Owners, and Group
+Members fields</A> click the corresponding Edit button.</LI>
+
+<LI>
+When you are done editing the fields, click Save Changes.</LI>
+</OL>
+From this window you can also:
+<UL>
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#rename">Rename the entry</A></LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#delete">Delete an entry</A></LI>
+</UL>
+
+<H3><A NAME="addowner"></A>Adding Values to the Owner, See Also, and
+Group Member Fields</H3>
+
+When you click the Edit button for Owner, See Also, or Group
+Members, a new form that allows you to add or delete members is displayed.
+An owner, see also, or group member can be either an individual or a group.
+That is, if you add a group as an owner, see also, or group member, anyone
+belonging to the group becomes a member of the list. For example,
+if Barbara Jensen is a member of the Marketing Managers group, and you make
+the Marketing Managers group a member of the Marketing Personnel group,
+then Barbara Jensen is also a member of the Marketing Personnel group. To add
+members, owners, or see alsos, do the following:
+<OL>
+<LI>
+If you want to add user entries to the list, make sure People is shown
+in the first dialog box. If you want to add group entries to the group,
+make sure Group is shown.</LI>
+
+<LI>
+In the second dialog box, enter a search string. Enter any of the following:</LI>
+
+<UL type="disc">
+<LI>
+A name. Enter a full name or a partial name. All entries that equally match
+the search string are returned. If no such entries are found, all entries
+that contain the search string are found. If no such entries are found,
+any entries that sounds like the search string are returned.</LI>
+
+<LI>
+A user ID, (if you are searching for user entries).</LI>
+
+<LI>
+A telephone number. If you enter only a partial number, any entries that
+have telephone numbers ending in the search number are returned.</LI>
+
+<LI>
+An email address. Any search string containing an at (@) symbol is assumed
+to be an email address. If an exact match cannot be found, then a search
+is performed to find all email addresses that begin with the search string.</LI>
+
+<LI>
+An asterisk (*) to see all of the entries or groups currently residing
+in your directory.</LI>
+
+<LI>
+Any <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#filter">LDAP search filter</A>. Any string that
+contains an equal sign (=) is considered to be a search filter.</LI>
+</UL>
+
+<LI>
+Click "Find and Add" to find all the matching entries and add them
+to the list. If any entries are shown that you do not want to include in
+the list, click the box in the "Remove from list" column. You
+can also construct a search filter to match the entries you want removed
+and then click "Find and Remove."</LI>
+
+<LI>
+When the list of group members is complete, click Save Changes.
+The currently displayed entries now belong to the list.</LI>
+</OL>
+
+<H2>
+<A NAME="NTgroups"></A>Editing NT Groups</H2>
+To edit an NT group entry, do the following:
+<OL>
+<LI>
+Search for the entry using the <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#standard">Standard Search</A>
+or <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#advanced">Advanced Search</A> mechanism.</LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#results">View the entry</A>.</LI>
+
+<LI>
+Click the Edit NT Group button.</LI>
+
+<LI>
+If you have not authenticated before you attempt to edit an entry, or if
+your authentication has expired, the Directory Server prompts you to
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#userauth">authenticate</A> before continuing.</LI>
+
+<LI>
+To edit the group's entry, type in the value for each
+field. You must supply values for the required fields. The required fields
+for an NT group are:</LI>
+
+<UL type="disc">
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#cn">Name</A></LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#ntGroupId">NT Group Name</A></LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#ntGroupDomainId">NT Domain Name</A></LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#ntGroupType">NT Group Type</A></LI>
+
+</UL>
+
+<LI>
+You can provide values for the optional fields now, or add them later.
+The optional fields for an NT group are:</LI>
+
+<P>
+<CENTER><TABLE BORDER=2>
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#description">Description</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#owner">Owner</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#l">Locale</A></TD>
+</TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#uniqueMember">Group Members</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#seeAlso">See Also</A></TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#organizationalUnitName">Organizational Unit</A></TD>
+</TR>
+</TABLE></CENTER>
+ 
+<LI>
+You can also change the value for the <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#ntGroupDeleteGroup">Delete NT Group if Group Deleted</A> option.</LI>
+
+<LI>
+You can <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#addowner">add values to the See Also, Owners, and Group
+Members fields</A> by clicking the corresponding "Edit" button.</LI>
+
+<LI>
+When you are done editing, click Save Changes.</LI>
+</OL>
+From this window you can also:
+<UL>
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#rename">Rename an entry</A></LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#delete">Delete an entry</A></LI>
+</UL>
+
+<H2>
+<A NAME="ou"></A>Editing Organizational Units</H2>
+To edit an organizational unit, do the following:
+<OL>
+<LI>
+Search for the entry using the <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#standard">Standard Search</A>
+or <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#advanced">Advanced Search</A> mechanism.</LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#results">View the entry</A>.</LI>
+
+<LI>
+Click the Edit Organizational Unit button.</LI>
+
+<LI>
+If you have not authenticated before you attempt to edit an entry, or if
+your authentication has expired, the Directory Server prompts you to
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#userauth">authenticate</A> before continuing.</LI>
+
+<LI>
+To edit the organizational unit's entry, type in the value
+for each field. You must supply values for the required fields.</LI>
+
+<LI>
+The required field for an organizational unit is <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#organizationalUnitName">Unit Name</A>.</LI>
+
+<LI>
+You can provide values for the optional fields now, or add them later.
+The optional fields for an organizational unit are:</LI>
+
+<P>
+<CENTER><TABLE BORDER=2>
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#description">Description</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#telephoneNumber">Phone</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#businessCategory">Business Category</A> </TD>
+</TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#fax">Fax</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#localityName">Location</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#postalAddress">Mailing Address</A> </TD>
+</TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#seeAlso">See Also</A> </TD>
+
+<TD> </TD>
+
+<TD> </TD>
+</TR>
+</TABLE></CENTER>
+<P>
+<LI>
+When you are done editing, click Save Changes.</LI>
+</OL>
+From this window you can also:
+<UL>
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#rename">Rename an entry</A></LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#delete">Delete an entry</A></LI>
+</UL>
+
+<H2>
+<A NAME="dc"></A>Editing Domain Components</H2>
+To edit a domain, do the following:
+<OL>
+<LI>
+Search for the entry using the <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#standard">Standard Search</A>
+or <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#advanced">Advanced Search</A> mechanism.</LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#results">View the entry</A>.</LI>
+
+<LI>
+Click the Edit Domaincomponent button.</LI>
+
+<LI>
+If you have not authenticated before you attempt to edit an entry, or if
+your authentication has expired, the Directory Server prompts you to
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#userauth">authenticate</A> before continuing.</LI>
+
+<LI>
+To edit the domain's entry, type in the value
+for each field. You must supply values for the required fields.</LI>
+
+<LI>
+The required field for a domain is <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#name">Domaincomponent Name</A>.</LI>
+
+<LI>
+You can provide values for the optional fields now, or add them later.
+The optional fields for a domain are:</LI>
+
+<P>
+<CENTER><TABLE BORDER=2>
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#description">Description</A></TD>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#telephoneNumber">Phone</A></TD>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#businessCategory">Business Category</A></TD></TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#fax">Fax</A></TD>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#localityName">Location</A></TD>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#postalAddress">Mailing Address</A></TD></TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#seeAlso">See Also</A></TD>
+<TD>&nbsp;</TD>
+<TD>&nbsp;</TD></TR>
+</TABLE></CENTER>
+<P>
+<LI>
+When you are done editing, click Save Changes.</LI>
+</OL>
+From this window you can also:
+<UL>
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#rename">Rename an entry</A></LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm#delete">Delete an entry</A></LI>
+</UL>
+
+<H2>
+<A NAME="o"></A>Editing Organizations</H2>
+To edit an organization entry, do the following:
+<OL>
+<LI>
+Search for the entry using the <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#standard">Standard Search</A>
+or <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#advanced">Advanced Search</A> mechanism.</LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#results">View the entry</A>.</LI>
+
+<LI>
+Click the Edit Organization button.</LI>
+
+<LI>
+If you have not authenticated before you attempt to edit an entry, or if
+your authentication has expired, the Directory Server prompts you to
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#userauth">authenticate</A> before continuing.</LI>
+
+<LI>
+To edit the organizational unit's entry, type in the value
+for each field. You must supply values for the required fields.</LI>
+
+<LI>
+The required fields for an organization is <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#organizationName">Organization Name</A>.</LI>
+
+<LI>
+You may provide values for the optional fields now, or edit them later.
+The optional fields for an organization are:</LI>
+
+<P>
+<CENTER><TABLE BORDER=2>
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#description">Description</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#telephoneNumber">Phone</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#businessCategory">Business Category</A> </TD>
+</TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#fax">Fax</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#l">Location</A> </TD>
+
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#postalAddress">Mailing Address</A> </TD>
+</TR>
+
+<TR>
+<TD><A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#seeAlso">See Also</A> </TD>
+
+<TD> </TD>
+
+<TD> </TD>
+</TR>
+</TABLE></CENTER>
+ 
+<LI>
+When you are done editing, click Save Changes.</LI>
+</OL>
+
+<H2><A NAME="rename"></A>Renaming Entries</H2>
+To rename an entry, do the following:
+<OL>
+<LI>
+Search for the entry using the <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#standard">Standard Search</A>
+or <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#advanced">Advanced Search</A> mechanism.</LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#results">View the entry</A>.</LI>
+
+<LI>
+Click the Edit button.</LI>
+
+<LI>
+Enter the new common name for the entry.</LI>
+
+<LI>
+Click Save Changes.</LI>
+</OL>
+Note the following rules about renaming an entry:
+<UL>
+<LI>
+You can change only the left-most value in an entry's <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/add.htm#DN">distinguished
+name</A>. This effectively means you can only change the entry's name;
+you cannot move the entry to another branch in the directory through this
+mechanism. For example, if you have an entry that has a DN of:</LI>
+
+<PRE>uid=tandrew, ou=Accounting, o=Example.com</PRE>
+
+you can rename only the user ID (uid) part of this entry. You cannot, however,
+move user tandrew to the Marketing subtree. To do that, you must create
+a new entry for tandrew in the Marketing subtree, and then delete his old
+entry in the Accounting tree.
+<LI>
+You cannot rename an organizational unit if it has any entries below it
+in the tree. To rename a branch point in the directory tree, you must first
+delete everything below that point in the tree, and then rename the entry.</LI>
+</UL>
+
+<H2>
+<A NAME="delete"></A>Deleting Entries</H2>
+To delete an entry, do the following:
+<OL>
+<LI>
+Search for the entry using the <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#standard">Standard Search</A>
+or <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#advanced">Advanced Search</A> mechanism.</LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#results">View the entry</A>.</LI>
+
+<LI>
+Click the Edit button.</LI>
+
+<LI>
+Click the Delete button.</LI>
+</OL>
+Note that you cannot delete an entry if it has any child entries. Specifically,
+you cannot delete an organizational unit if it has any entries below it
+in the tree. To delete a branch point in the directory tree, you must first
+delete everything below that point in the tree, and then delete the entry.
+<H2>
+<A NAME="changepw"></A>Changing Passwords</H2>
+In the Directory Server interface, you can change your own password. You
+can also change another person's password if you are the directory manager
+or an unrestricted user with write privileges to the password attribute.
+
+<P>To change a password, do the following:
+<OL>
+<LI>
+Search for the entry using the <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#standard">Standard Search</A>
+or <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#advanced">Advanced Search</A> mechanism.</LI>
+
+<LI>
+<A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#results">View the entry</A>.</LI>
+
+<LI>
+Click the Edit button.</LI>
+
+<LI>
+Click the Change Password button.</LI>
+
+<BR>If you are changing your own password, you must enter the old password
+for the change command to succeed. (If you are authenticated as
+anyone besides the current entry, you are not prompted to enter the
+old password.)
+<LI>
+Click the Change Password button.</LI>
+
+</OL>
+
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/html/manual/n.gif b/ldap/clients/dsgw/html/manual/n.gif
new file mode 100644
index 00000000..1dd64dbf
--- /dev/null
+++ b/ldap/clients/dsgw/html/manual/n.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/manual/objclass.htm b/ldap/clients/dsgw/html/manual/objclass.htm
new file mode 100644
index 00000000..708746fa
--- /dev/null
+++ b/ldap/clients/dsgw/html/manual/objclass.htm
@@ -0,0 +1,7246 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Portions copyright 1999, 2002-2003 Netscape Communications Corporation.
+ All rights reserved.
+ -->
+<A NAME="1096805">
+<P>
+</A><A NAME="1096807">
+<P>
+</A><A NAME="1002619">
+<H1>Object Classes
+</H1>
+</A>
+
+<A NAME="996830">
+<br>
+This appendix includes information on object class definitions. Most of the schema elements used in the Directory Server are part of the standard LDAP protocol, which is in turn based on the X.500 standard. However, some of the Directory Server's object classes are extensions created by Netscape for use with its implementation of LDAP. If an object class was created by Netscape and is not part of the standard LDAP schema, a note is made in the description of that object class. <P></A>
+
+<A NAME="1080540">
+For information on what the Directory Server schema is and what it is used for, refer to the <i>Netscape Directory Server Deployment Guide</i>.<P></A>
+
+<A NAME="1080543">
+For information on the attributes in the schema, see <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1002619">Appendix B, "Attributes."</a><P></A>
+<A NAME="1080587">
+The following types of object classes are described here:<P>
+</A><ul><A NAME="1080589">
+<LI><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1005608">Groups</a><P>
+</A>
+<A NAME="1080591">
+<LI><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1005780">Replication</a><P>
+</A>
+<A NAME="1011931">
+<LI><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1005591">Locations</a><P>
+</A>
+<A NAME="1002658">
+<LI><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1004915">Organizations</a><P>
+</A>
+<A NAME="1002659">
+<LI><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1004958">People</a><P>
+</A>
+<A NAME="1021627">
+<LI><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1078660">Calendar Server Extensions</a><P>
+</A>
+<A NAME="1085862">
+<LI><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1078479">Certificate Server Extensions</a><P>
+</A>
+<A NAME="1085922">
+<LI><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1078576">Collabra Server Extensions</a><P>
+</A>
+<A NAME="1085927">
+<LI><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1078655">Compass Server Extensions</a><P>
+</A>
+<A NAME="1085932">
+<LI><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1097229">Directory Server Extensions</a><P>
+</A>
+<A NAME="1085945">
+<LI><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1097091">Media Server Extensions</a><P>
+</A>
+<A NAME="1100342">
+<LI><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1097135">Messaging Server Extensions</a><P>
+</A>
+<A NAME="1085950">
+<LI><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1086191">Proxy Server Extensions</a><P>
+</A>
+<A NAME="1085955">
+<LI><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1081607">Web Server Extensions</a><P>
+</A>
+<A NAME="1089730">
+<LI><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1108799">Reserved Object Classes</a><P>
+</A>
+</ul>
+<A NAME="1108856">
+The base OID for the Netscape Directory Server is:<P></A>
+<PRE><A NAME="1108857">
+2.16.840.1.113730.3
+</A>
+</PRE>
+<A NAME="1108858">
+All Netscape defined object classes have the base:<P></A>
+<PRE><A NAME="1108859">
+2.16.840.1.113730.3.2
+</A>
+</PRE>
+
+<A NAME="1005608"> 
+</A>
+<A NAME="Groups">
+<H2> Groups</H2>
+</A>
+
+<A NAME="1080703">
+The following object classes describe entries representing an unordered set of names that represent individual objects or other groups of objects. Membership of a group is static: only administrative action can modify a group (such as adding a member), the membership is not determined dynamically each time a reference is made to the group. Each object class contains attributes that describe the group and its members. The object classes described here are <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1080708">groupOfNames</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1005294">groupOfUniqueNames</a>, and <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1100399">NTGroup</a>.<P></A>
+
+
+<A NAME="1080708"> 
+</A>
+<A NAME="groupOfNames">
+<H3> groupOfNames</H3>
+</A>
+
+
+
+<A NAME="1080709">
+Defines entries for a group of names. This object class was inherited from X.500 Directory Services. <P></A>
+
+<A NAME="1096982">
+OID: <code>2.5.6.9</code><P></A>
+
+<A NAME="1067760">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1075396">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1075398">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1069038">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171494">cn</a><P></A>
+<td>
+<A NAME="1069041">
+(Required) The group's common name.<P></A>
+
+<tr><td>
+<A NAME="1069044">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171811">member</a><P></A>
+<td>
+<A NAME="1069047">
+(Required) A group member in distinguished name format.<P></A>
+
+<tr><td>
+<A NAME="1069050">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171367">businessCategory</a><P></A>
+<td>
+<A NAME="1069052">
+Type of business in which the group is engaged.<P></A>
+
+<tr><td>
+<A NAME="1069055">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171528">description</a><P></A>
+<td>
+<A NAME="1069057">
+Text description of the group's purpose.<P></A>
+
+<tr><td>
+<A NAME="1104361">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1246271">memberURL</a><P></A>
+<td>
+<A NAME="1104363">
+URL to information relevant to a group member.<P></A>
+
+<tr><td>
+<A NAME="1069060">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1281611">o</a><P></A>
+<td>
+<A NAME="1069062">
+Organization to which the group belongs.<P></A>
+
+<tr><td>
+<A NAME="1104337">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1241174">ou</a><P></A>
+<td>
+<A NAME="1069067">
+Organizational unit to which the group belongs.<P></A>
+
+<tr><td>
+<A NAME="1104340">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1005719">owner</a><P></A>
+<td>
+<A NAME="1069072">
+The group's owner.<P></A>
+
+<tr><td>
+<A NAME="1069075">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1172500">seeAlso</a><P></A>
+<td>
+<A NAME="1069077">
+URL to information relevant to the group.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1005294"> 
+</A>
+<A NAME="groupOfUniqueNames">
+<H3> groupOfUniqueNames</H3>
+</A>
+
+
+
+<A NAME="1005764">
+Defines entries for a group of unique names. This object class was inherited from X.500 Directory Services. <P></A>
+
+<A NAME="1097009">
+OID: <code>2.5.6.17</code><P></A>
+
+<A NAME="1067761">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1075392">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1075394">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1069137">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171494">cn</a><P></A>
+<td>
+<A NAME="1069140">
+(Required) The group's common name.<P></A>
+
+<tr><td>
+<A NAME="1069144">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1172624">uniqueMember</a><P></A>
+<td>
+<A NAME="1069147">
+(Required) A unique group member in distinguished name format.<P></A>
+
+<tr><td>
+<A NAME="1104391">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171367">businessCategory</a><P></A>
+<td>
+<A NAME="1069152">
+Type of business in which the group is engaged.<P></A>
+
+<tr><td>
+<A NAME="1104396">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171528">description</a><P></A>
+<td>
+<A NAME="1069157">
+Text description of the group's purpose.<P></A>
+
+<tr><td>
+<A NAME="1104401">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1281611">o</a><P></A>
+<td>
+<A NAME="1069162">
+Organization to which the group belongs.<P></A>
+
+<tr><td>
+<A NAME="1104406">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1241174">ou</a><P></A>
+<td>
+<A NAME="1069167">
+Organizational unit to which the group belongs.<P></A>
+
+<tr><td>
+<A NAME="1104411">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1005719">owner</a><P></A>
+<td>
+<A NAME="1069172">
+The group's owner.<P></A>
+
+<tr><td>
+<A NAME="1104416">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1172500">seeAlso</a><P></A>
+<td>
+<A NAME="1069177">
+URL to information relevant to the group.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1100399"> 
+</A>
+<A NAME="NTGroup">
+<H3> NTGroup</H3>
+</A>
+
+
+
+<A NAME="1100400">
+Object class used by the NT synchronization service to map the attributes of an NT group to an entry in the directory. This object class is a Netscape extension to the standard LDAP schema.<P></A>
+
+<A NAME="1100401">
+OID: <code>2.16.840.1.113730.3.2.9</code><P></A>
+
+<A NAME="1100458">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1100404">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1100406">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1100410">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1103684">ntGroupDomainId</a><P></A>
+<td>
+<A NAME="1100412">
+(Required) Used by the NT synchronization service to store the NT Global Groupname/Domain.<P></A>
+
+<tr><td>
+<A NAME="1100415">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171528">description</a><P></A>
+<td>
+<A NAME="1100417">
+Text description of the NT group.<P></A>
+
+<tr><td>
+<A NAME="1100420">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1244534">l</a><P></A>
+<td>
+<A NAME="1100422">
+Locality in which the server resides.<P></A>
+
+<tr><td>
+<A NAME="1104514">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1122623">ntGroupAttributes</a><P></A>
+<td>
+<A NAME="1104516">
+Used by the NT synchronization service to store attributes for an NT group.<P></A>
+
+<tr><td>
+<A NAME="1104538">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1122633">ntGroupCreateNewGroup</a><P></A>
+<td>
+<A NAME="1104540">
+Reserved for use by the NT synchronization service.<P></A>
+
+<tr><td>
+<A NAME="1104480">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1103799">ntGroupDeleteGroup</a><P></A>
+<td>
+<A NAME="1104482">
+Reserved for use by the NT synchronization service.<P></A>
+
+<tr><td>
+<A NAME="1104557">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1104232">ntGroupId</a><P></A>
+<td>
+<A NAME="1104559">
+Used by the NT synchronization service to store the identifier for the group.<P></A>
+
+<tr><td>
+<A NAME="1100425">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1241174">ou</a><P></A>
+<td>
+<A NAME="1100427">
+Organizational unit to which the group belongs.<P></A>
+
+<tr><td>
+<A NAME="1100435">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1172500">seeAlso</a><P></A>
+<td>
+<A NAME="1100437">
+URL to information relevant to the group.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1005780"> 
+</A>
+<A NAME="Replication">
+<H2> Replication</H2>
+</A>
+
+<A NAME="1005974">
+The following object classes define Directory Servers. The first object class identifies the master or supplier server. The second object class identifies consumer servers and the entries to be supplied to those consumers. The object classes are <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1100614">cirReplicaSource</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1005781">LDAPServer</a>, and <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1005782">LDAPReplica</a>. <P></A>
+
+
+<A NAME="1100614"> 
+</A>
+<A NAME="cirReplicaSource">
+<H3> cirReplicaSource</H3>
+</A>
+
+
+
+<A NAME="1100615">
+Object class used by the Netscape Directory Server for consumer initiated replication that contains all the replication information for a particular subtree of the directory. This object class is a Netscape extension to the standard LDAP schema.<P></A>
+
+<A NAME="1100616">
+OID: <code>2.16.840.1.113730.3.2.11</code><P></A>
+
+<A NAME="1100703">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1100619">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1100621">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1100624">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171494">cn</a><P></A>
+<td>
+<A NAME="1100626">
+(Required) unique identifier of the supplier server.<P></A>
+
+<tr><td>
+<A NAME="1104680">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1103818">cirBeginORC</a><P></A>
+<td>
+<A NAME="1104682">
+Defines whether or not the consumer server should erase the contents of its directory before replication.<P></A>
+
+<tr><td>
+<A NAME="1104646">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1101818">cirBindCredentials</a><P></A>
+<td>
+<A NAME="1104648">
+Bind credentials used to connect to the supplier server.<P></A>
+
+<tr><td>
+<A NAME="1104607">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1101379">cirBindDn</a><P></A>
+<td>
+<A NAME="1104609">
+Distinguished name used to bind to the supplier server.<P></A>
+
+<tr><td>
+<A NAME="1104731">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1101250">cirHost</a><P></A>
+<td>
+<A NAME="1104733">
+Hostname of the supplier server.<P></A>
+
+<tr><td>
+<A NAME="1104629">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1101860">cirLastUpdateApplied</a><P></A>
+<td>
+<A NAME="1104631">
+Last date and time that synchronization occurred between the consumer and supplier servers.<P></A>
+
+<tr><td>
+<A NAME="1100639">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1101283">cirPort</a><P></A>
+<td>
+<A NAME="1100641">
+Port number of the supplier server.<P></A>
+
+<tr><td>
+<A NAME="1104589">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1101135">cirReplicaRoot</a><P></A>
+<td>
+<A NAME="1104591">
+Root of the subtree on the supplier server to be replicated on the consumer.<P></A>
+
+<tr><td>
+<A NAME="1104766">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1102148">cirSyncInterval</a><P></A>
+<td>
+<A NAME="1104768">
+Periodically, the consumer server queries the supplier to find out if any changes have been made to the replicated portion of the directory. This attribute defines, in seconds, the interval between consumer queries of the supplier server.<P></A>
+
+<tr><td>
+<A NAME="1104811">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1102114">cirUpdateFailedat</a><P></A>
+<td>
+<A NAME="1104813">
+Timestamp of the last failed update attempt.<P></A>
+
+<tr><td>
+<A NAME="1104814">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1102001">cirUpdateSchedule</a><P></A>
+<td>
+<A NAME="1104792">
+Hours between which replication can occur.<P></A>
+
+<tr><td>
+<A NAME="1100650">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1101691">cirUsePersistentSearch</a><P></A>
+<td>
+<A NAME="1100652">
+Reserved for future use.<P></A>
+
+<tr><td>
+<A NAME="1100655">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1101735">cirUseSsl</a><P></A>
+<td>
+<A NAME="1100657">
+Tells the consumer server to use an SSL connection when binding to the supplier server.<P></A>
+
+<tr><td>
+<A NAME="1104823">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1148497">replicaEntryFilter</a><P></A>
+<td>
+<A NAME="1104699">
+Specifies which attributes should be replicated or omitted during replication.<P></A>
+
+<tr><td>
+<A NAME="1100690">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1148453">replicaNickName</a><P></A>
+<td>
+<A NAME="1100692">
+Freeform name that describes a particular set of replication rules between a single supplier and a single consumer server.<P></A>
+
+<tr><td>
+<A NAME="1100700">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1281126">replicatedAttributeList</a><P></A>
+<td>
+<A NAME="1100702">
+Specifies which attributes should be replicated or omitted during replication.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1105809"> 
+</A>
+<A NAME="glue">
+<H3> glue</H3>
+</A>
+
+
+
+<A NAME="1105810">
+Extensible object class used by the Netscape Directory Server to facilitate replication. For more information about extensible object classes, see "Types of Object Classes" in the Netscape Directory Server Deployment Guide. Reserved. This object class is a Netscape extension to the standard LDAP schema.<P></A>
+
+<A NAME="1105811">
+OID: <code>2.16.840.1.113730.3.2.30</code><P></A>
+
+
+<A NAME="1005781"> 
+</A>
+<A NAME="LDAPServer">
+<H3> LDAPServer</H3>
+</A>
+
+
+
+<A NAME="1042902">
+Identifies the local server. This object class is a Netscape extension to the standard LDAP schema.<P></A>
+
+<A NAME="1098493">
+OID: <code>2.16.840.1.113730.3.2.35</code><P></A>
+
+<A NAME="1067762">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1075388">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1075390">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1069192">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171494">cn</a><P></A>
+<td>
+<A NAME="1069195">
+(Required) The server's common name.<P></A>
+
+<tr><td>
+<A NAME="1069199">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171397">changeLogMaximumAge</a><P></A>
+<td>
+<A NAME="1100535">
+Maximum age permitted for the server's change log.<P></A>
+
+<tr><td>
+<A NAME="1069204">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171405">changeLogMaximumSize</a><P></A>
+<td>
+<A NAME="1069206">
+Maximum size permitted for the server's change log.<P></A>
+
+<tr><td>
+<A NAME="1069209">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171528">description</a><P></A>
+<td>
+<A NAME="1069211">
+Text description of the server.<P></A>
+
+<tr><td>
+<A NAME="1069214">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1284708">generation</a><P></A>
+<td>
+<A NAME="1069216">
+Unique byte vector that identifies the server for replication purposes.<P></A>
+
+<tr><td>
+<A NAME="1069219">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1244534">l</a><P></A>
+<td>
+<A NAME="1069221">
+Locality in which the server resides.<P></A>
+
+<tr><td>
+<A NAME="1069224">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1241174">ou</a><P></A>
+<td>
+<A NAME="1069226">
+Organizational unit to which the server belongs.<P></A>
+
+<tr><td>
+<A NAME="1069229">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1172500">seeAlso</a><P></A>
+<td>
+<A NAME="1069231">
+URL to information relevant to the server.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1005782"> 
+</A>
+<A NAME="LDAPReplica">
+<H3> LDAPReplica</H3>
+</A>
+
+
+
+<A NAME="1006031">
+Identifies entries in the local server that are replicated to a remote server, and identifies the remote server to which the entries are replicated. This object class is a Netscape extension to the standard LDAP schema.<P></A>
+
+<A NAME="1098496">
+OID: <code>2.16.840.1.113730.3.2.36</code><P></A>
+
+<A NAME="1067881">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1075384">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1075386">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1069247">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171494">cn</a><P></A>
+<td>
+<A NAME="1069250">
+(Required) The entry's common name.<P></A>
+
+<tr><td>
+<A NAME="1069253">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171528">description</a><P></A>
+<td>
+<A NAME="1069255">
+Text description of the entry.<P></A>
+
+<tr><td>
+<A NAME="1104907">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1244534">l</a><P></A>
+<td>
+<A NAME="1069260">
+Locality in which the entry resides.<P></A>
+
+<tr><td>
+<A NAME="1104912">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1241174">ou</a><P></A>
+<td>
+<A NAME="1069265">
+Organizational unit in which the entry resides.<P></A>
+
+<tr><td>
+<A NAME="1106807">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1092877">replicaBeginOrc</a><P></A>
+<td>
+<A NAME="1106809">
+Defines whether or not the supplier server should erase the contents of the consumer server before replication.<P></A>
+
+<tr><td>
+<A NAME="1069268">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1006496">replicaBindDn</a><P></A>
+<td>
+<A NAME="1069270">
+DN used by the local server to bind to the consumer server.<P></A>
+
+<tr><td>
+<A NAME="1069273">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1006636">replicaBindMethod</a><P></A>
+<td>
+<A NAME="1069275">
+Method used by the local server to bind to the consumer. Currently this attribute must be set to <code>simple</code>.<P></A>
+
+<tr><td>
+<A NAME="1069278">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1230073">replicaCredentials</a><P></A>
+<td>
+<A NAME="1069280">
+Password used by the local server to bind to the consumer.<P></A>
+
+<tr><td>
+<A NAME="1106878">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1148497">replicaEntryFilter</a><P></A>
+<td>
+<A NAME="1106880">
+Specifies which attributes should be replicated or omitted in a filtered replication agreement.<P></A>
+
+<tr><td>
+<A NAME="1069283">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1148445">replicaHost</a><P></A>
+<td>
+<A NAME="1069285">
+Hostname of the consumer server.<P></A>
+
+<tr><td>
+<A NAME="1106816">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1148453">replicaNickName</a><P></A>
+<td>
+<A NAME="1106818">
+Contains a freeform name for the replication agreement.<P></A>
+
+<tr><td>
+<A NAME="1069288">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1007660">replicaPort</a><P></A>
+<td>
+<A NAME="1069290">
+Port used by the consumer server for LDAP communications.<P></A>
+
+<tr><td>
+<A NAME="1069293">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1006384">replicaRoot</a><P></A>
+<td>
+<A NAME="1069295">
+Distinguished name representing the subtree on the local server that is to be supplied to the consumer server.<P></A>
+
+<tr><td>
+<A NAME="1106928">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1281126">replicatedAttributeList</a><P></A>
+<td>
+<A NAME="1106930">
+Specifies which attributes should be replicated or omitted in a selected attribute replication agreement.<P></A>
+
+<tr><td>
+<A NAME="1069298">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1006918">replicaUpdateFailedAt</a><P></A>
+<td>
+<A NAME="1069300">
+Time stamp when an update to the consumer server failed.<P></A>
+
+<tr><td>
+<A NAME="1069303">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1012768">replicaUpdateReplayed</a><P></A>
+<td>
+<A NAME="1069305">
+Change number of the last change supplied to the consumer server.<P></A>
+
+<tr><td>
+<A NAME="1069308">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1006817">replicaUpdateSchedule</a><P></A>
+<td>
+<A NAME="1069310">
+Schedule when the local server begins an update to the consumer server.<P></A>
+
+<tr><td>
+<A NAME="1069313">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1006741">replicaUseSSL</a><P></A>
+<td>
+<A NAME="1069315">
+Indicates whether SSL is to be used for communications with the consumer server.<P></A>
+
+<tr><td>
+<A NAME="1069318">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1172500">seeAlso</a><P></A>
+<td>
+<A NAME="1069320">
+URL to information relevant to the server.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1005591"> 
+</A>
+<A NAME="Locations">
+<H2> Locations</H2>
+</A>
+
+<A NAME="1005809">
+The following object classes describe locations in the directory tree. Each object class contains attributes that describe a location, such as the country name and description. The object classes described here are <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1005812">country</a> and <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1005427">locality</a>.<P></A>
+
+
+<A NAME="1005812"> 
+</A>
+<A NAME="country">
+<H3> country</H3>
+</A>
+
+
+
+<A NAME="1005813">
+Defines entries that represent countries. This object class was inherited from X.500 Directory Services. <P></A>
+
+<A NAME="1096900">
+OID: <code>2.5.6.2</code><P></A>
+
+<A NAME="1068820">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1088379">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1088381">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1088384">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1240535">c</a><P></A>
+<td>
+<A NAME="1088387">
+(Required) The entry's country name.<P></A>
+
+<tr><td>
+<A NAME="1088390">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171528">description</a><P></A>
+<td>
+<A NAME="1088392">
+Text description of the country.<P></A>
+
+<tr><td>
+<A NAME="1088397">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202682">searchGuide</a><P></A>
+<td>
+<A NAME="1088399">
+Specifies information for suggested search criteria when using the entry as the base object in the directory tree for a search operation.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1005427"> 
+</A>
+<A NAME="locality">
+<H3> locality</H3>
+</A>
+
+
+
+<A NAME="1005428">
+Defines entries that represent localities or geographic areas. This object class was inherited from X.500 Directory Services. <P></A>
+
+<A NAME="1096910">
+OID: <code>2.5.6.3</code><P></A>
+
+<A NAME="1068821">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1075380">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1075382">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1071009">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171528">description</a><P></A>
+<td>
+<A NAME="1071011">
+Text description of the locality.<P></A>
+
+<tr><td>
+<A NAME="1071014">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1244534">l</a><P></A>
+<td>
+<A NAME="1071016">
+The entry's locality.<P></A>
+
+<tr><td>
+<A NAME="1106986">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202682">searchGuide</a><P></A>
+<td>
+<A NAME="1106988">
+Specifies information for a suggested search criteria when using the entry as the base object in the directory tree for a search operation.<P></A>
+
+<tr><td>
+<A NAME="1071019">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1172500">seeAlso</a><P></A>
+<td>
+<A NAME="1071021">
+URL to information relevant to the locality.<P></A>
+
+<tr><td>
+<A NAME="1071024">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1203417">st</a><P></A>
+<td>
+<A NAME="1071026">
+State or province to which the locality belongs.<P></A>
+
+<tr><td>
+<A NAME="1071029">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202721">street</a><P></A>
+<td>
+<A NAME="1071031">
+Street address associated with the locality.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1004915"> 
+</A>
+<A NAME="Organizations">
+<H2> Organizations</H2>
+</A>
+
+<A NAME="1004913">
+The following object classes describe entries representing organizations in the directory tree. Each object class contains attributes that describe an organization, such as its name and description. The object classes described here are <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1004980">organization</a> and <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1005108">organizationalUnit</a>.<P></A>
+
+
+<A NAME="1004980"> 
+</A>
+<A NAME="organization">
+<H3> organization</H3>
+</A>
+
+
+
+<A NAME="1004981">
+Defines entries that represent organizations. An organization is generally assumed to be a large, relatively static grouping within a larger corporation or enterprise. This object class was inherited from X.500 Directory Services. <P></A>
+
+<A NAME="1096920">
+OID: <code>2.5.6.4</code><P></A>
+
+<A NAME="1068822">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1107038">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1107040">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1107045">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1281611">o</a><P></A>
+<td>
+<A NAME="1107047">
+(Required) The organization's name.<P></A>
+
+<tr><td>
+<A NAME="1107052">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171367">businessCategory</a><P></A>
+<td>
+<A NAME="1107054">
+Business in which the organization is involved.<P></A>
+
+<tr><td>
+<A NAME="1107059">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171528">description</a><P></A>
+<td>
+<A NAME="1107061">
+Text description of the organization.<P></A>
+
+<tr><td>
+<A NAME="1107065">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171637">facsimileTelephoneNumber</a><P></A>
+<td>
+<A NAME="1107068">
+Fax number associated with the organization.<P></A>
+
+<tr><td>
+<A NAME="1107073">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1244534">l</a><P></A>
+<td>
+<A NAME="1107075">
+The organization's location.<P></A>
+
+<tr><td>
+<A NAME="1107079">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1003072">physicalDeliveryOfficeName</a><P></A>
+<td>
+<A NAME="1107082">
+A location where physical deliveries can be made to the organization.<P></A>
+
+<tr><td>
+<A NAME="1107087">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1230025">postalAddress</a><P></A>
+<td>
+<A NAME="1107089">
+The organization's mailing address.<P></A>
+
+<tr><td>
+<A NAME="1107094">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1230036">postalCode</a><P></A>
+<td>
+<A NAME="1107096">
+The organization's postal code (such as a United States zip code).<P></A>
+
+<tr><td>
+<A NAME="1107101">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1230043">postOfficeBox</a><P></A>
+<td>
+<A NAME="1107103">
+The organization's post office box.<P></A>
+
+<tr><td>
+<A NAME="1107108">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202605">preferredDeliveryMethod</a><P></A>
+<td>
+<A NAME="1107110">
+The organization's preferred method of contact or delivery.<P></A>
+
+<tr><td>
+<A NAME="1107115">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202682">searchGuide</a><P></A>
+<td>
+<A NAME="1107117">
+Specifies information for suggested search criteria when using the entry as the base object in the directory tree for a search operation.<P></A>
+
+<tr><td>
+<A NAME="1107122">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1172500">seeAlso</a><P></A>
+<td>
+<A NAME="1107124">
+URL to information relevant to the organization.<P></A>
+
+<tr><td>
+<A NAME="1107129">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1203417">st</a><P></A>
+<td>
+<A NAME="1107131">
+State or province in which the organization resides.<P></A>
+
+<tr><td>
+<A NAME="1107136">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202721">street</a><P></A>
+<td>
+<A NAME="1107138">
+Street address at which the organization is located.<P></A>
+
+<tr><td>
+<A NAME="1107143">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1230129">telephoneNumber</a><P></A>
+<td>
+<A NAME="1107145">
+Telephone number associated with the organization.<P></A>
+
+<tr><td>
+<A NAME="1107150">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1205004">teletexTerminalIdentifier</a><P></A>
+<td>
+<A NAME="1107152">
+Identifier for the teletex terminal of the organization.<P></A>
+
+<tr><td>
+<A NAME="1107157">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1205120">telexNumber</a><P></A>
+<td>
+<A NAME="1107159">
+Telex number of the organization.<P></A>
+
+<tr><td>
+<A NAME="1107171">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1196547">userPassword</a><P></A>
+<td>
+<A NAME="1107173">
+Password with which the entry can bind to the directory.<P></A>
+
+<tr><td>
+<A NAME="1107164">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1281763">x121Address</a><P></A>
+<td>
+<A NAME="1107166">
+X.121 address of the organization.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1005108"> 
+</A>
+<A NAME="organizationalUnit">
+<H3> organizationalUnit</H3>
+</A>
+
+
+
+<A NAME="1005109">
+Defines entries that represent organizational units. An organizational unit is generally assumed to be a relatively static grouping within a larger organization. This object class was inherited from X.500 Directory Services. <P></A>
+
+<A NAME="1096923">
+OID: <code>2.5.6.5</code><P></A>
+
+<A NAME="1068823">
+.
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1107182">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1107184">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1107189">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1241174">ou</a><P></A>
+<td>
+<A NAME="1107191">
+(Required) The organizational unit's name.<P></A>
+
+<tr><td>
+<A NAME="1107196">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171367">businessCategory</a><P></A>
+<td>
+<A NAME="1107198">
+Business in which the organizational unit is involved.<P></A>
+
+<tr><td>
+<A NAME="1107203">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171528">description</a><P></A>
+<td>
+<A NAME="1107205">
+Text description of the organizational unit.<P></A>
+
+<tr><td>
+<A NAME="1107326">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1292809">destinationIndicator</a><P></A>
+<td>
+<A NAME="1107328">
+The country and city associated with the organizational unit needed to provide Public Telegram Service.<P></A>
+
+<tr><td>
+<A NAME="1107209">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171637">facsimileTelephoneNumber</a><P></A>
+<td>
+<A NAME="1107212">
+Fax number associated with the organizational unit.<P></A>
+
+<tr><td>
+<A NAME="1107337">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1224256">internationalIsdnNumber</a><P></A>
+<td>
+<A NAME="1107339">
+Contains an ISDN number for the organizational unit.<P></A>
+
+<tr><td>
+<A NAME="1107217">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1244534">l</a><P></A>
+<td>
+<A NAME="1107219">
+The organizational unit's location.<P></A>
+
+<tr><td>
+<A NAME="1107223">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1003072">physicalDeliveryOfficeName</a><P></A>
+<td>
+<A NAME="1107226">
+Location where physical deliveries can be made to the organizational unit.<P></A>
+
+<tr><td>
+<A NAME="1107231">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1230025">postalAddress</a><P></A>
+<td>
+<A NAME="1107233">
+The organizational unit's mailing address.<P></A>
+
+<tr><td>
+<A NAME="1107238">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1230036">postalCode</a><P></A>
+<td>
+<A NAME="1107240">
+The organizational unit's postal code (such as a United States zip code).<P></A>
+
+<tr><td>
+<A NAME="1107245">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1230043">postOfficeBox</a><P></A>
+<td>
+<A NAME="1107247">
+The organizational unit's post office box.<P></A>
+
+<tr><td>
+<A NAME="1107252">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202605">preferredDeliveryMethod</a><P></A>
+<td>
+<A NAME="1107254">
+The organizational unit's preferred method of contact or delivery.<P></A>
+
+<tr><td>
+<A NAME="1107352">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202644">registeredAddress</a><P></A>
+<td>
+<A NAME="1107366">
+Postal address suitable for reception of expedited documents, where the recipient must verify delivery.<P></A>
+
+<tr><td>
+<A NAME="1107259">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202682">searchGuide</a><P></A>
+<td>
+<A NAME="1107261">
+Specifies information for suggested search criteria when using the entry as the base object in the directory tree for a search operation.<P></A>
+
+<tr><td>
+<A NAME="1107266">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1172500">seeAlso</a><P></A>
+<td>
+<A NAME="1107268">
+URL to information relevant to the organizational unit.<P></A>
+
+<tr><td>
+<A NAME="1107273">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1203417">st</a><P></A>
+<td>
+<A NAME="1107275">
+State or province in which the organizational unit resides.<P></A>
+
+<tr><td>
+<A NAME="1107280">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202721">street</a><P></A>
+<td>
+<A NAME="1107282">
+Street address at which the organizational unit is located.<P></A>
+
+<tr><td>
+<A NAME="1107287">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1230129">telephoneNumber</a><P></A>
+<td>
+<A NAME="1107289">
+Telephone number associated with the organizational unit.<P></A>
+
+<tr><td>
+<A NAME="1107322">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1205004">teletexTerminalIdentifier</a><P></A>
+<td>
+<A NAME="1107324">
+Identifier for the teletex terminal of the organization.<P></A>
+
+<tr><td>
+<A NAME="1107315">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1205120">telexNumber</a><P></A>
+<td>
+<A NAME="1107317">
+Telex number of the organization.<P></A>
+
+<tr><td>
+<A NAME="1107308">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1196547">userPassword</a><P></A>
+<td>
+<A NAME="1107310">
+Password with which the entry can bind to the directory.<P></A>
+
+<tr><td>
+<A NAME="1107301">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1281763">x121Address</a><P></A>
+<td>
+<A NAME="1107303">
+X.121 address of the organization.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1004958"> 
+</A>
+<A NAME="People">
+<H2> People</H2>
+</A>
+
+<A NAME="1100949">
+The following object classes describe entries representing people in the directory. Each object class contains attributes that describe a person, such as name, telephone number, and address. The object classes described here are <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1089249">inetOrgPerson</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1100980">newPilotPerson</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1100862">nsLicenseUser</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1089442">ntUser</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1002805">organizationalPerson</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1088567">organizationalRole</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1089681">person</a>, and <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1106267">residentialPerson</a>. <P></A>
+
+
+<A NAME="1089249"> 
+</A>
+<A NAME="inetOrgPerson">
+<H3> inetOrgPerson</H3>
+</A>
+
+
+
+<A NAME="1089250">
+Defines entries representing people in an organization's intranet. This object class is a Netscape extension to the standard LDAP schema.<P></A>
+
+<A NAME="1096822">
+OID: <code>2.16.840.1.113730.3.2.2</code><P></A>
+
+<A NAME="1089439">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1089253">
+<I></I>Attribute<P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1089255">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1102952">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1201684">audio</a><P></A>
+<td>
+<A NAME="1102954">
+Contains a sound file in binary format.<P></A>
+
+<tr><td>
+<A NAME="1089270">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171367">businessCategory</a><P></A>
+<td>
+<A NAME="1089272">
+Business in which the person is involved.<P></A>
+
+<tr><td>
+<A NAME="1089275">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1003044">carLicense</a><P></A>
+<td>
+<A NAME="1089277">
+The license plate number of the person's vehicle.<P></A>
+
+<tr><td>
+<A NAME="1089280">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1095560">departmentNumber</a><P></A>
+<td>
+<A NAME="1089282">
+Department for which the person works.<P></A>
+
+<tr><td>
+<A NAME="1089290">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1111357">employeeNumber</a><P></A>
+<td>
+<A NAME="1089292">
+The person's employee number.<P></A>
+
+<tr><td>
+<A NAME="1089295">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1009035">employeeType</a><P></A>
+<td>
+<A NAME="1089297">
+The person's type of employment (for example, full time).<P></A>
+
+<tr><td>
+<A NAME="1089305">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1229534">givenName</a><P></A>
+<td>
+<A NAME="1089307">
+The person's given, or first, name.<P></A>
+
+<tr><td>
+<A NAME="1089310">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1201936">homePhone</a><P></A>
+<td>
+<A NAME="1089312">
+The person's home phone number.<P></A>
+
+<tr><td>
+<A NAME="1089315">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1201947">homePostalAddress</a><P></A>
+<td>
+<A NAME="1089317">
+The person's home mailing address.<P></A>
+
+<tr><td>
+<A NAME="1089320">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1229543">initials</a><P></A>
+<td>
+<A NAME="1089322">
+The person's initials.<P></A>
+
+<tr><td>
+<A NAME="1089325">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1201995">jpegPhoto</a><P></A>
+<td>
+<A NAME="1089327">
+An image in JPEG format.<P></A>
+
+<tr><td>
+<A NAME="1107552">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202020">labeledUri</a><P></A>
+<td>
+<A NAME="1089337">
+Universal resource locator that is relevant to the person.<P></A>
+
+<tr><td>
+<A NAME="1089340">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1189404">mail</a><P></A>
+<td>
+<A NAME="1089342">
+The person's electronic mailing address.<P></A>
+
+<tr><td>
+<A NAME="1089345">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1007859">manager</a><P></A>
+<td>
+<A NAME="1089347">
+Distinguished name representing the person's manager.<P></A>
+
+<tr><td>
+<A NAME="1089350">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202056">mobile</a><P></A>
+<td>
+<A NAME="1089352">
+The person's mobile phone number.<P></A>
+
+<tr><td>
+<A NAME="1089361">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1003070">pager</a><P></A>
+<td>
+<A NAME="1089363">
+The person's pager number.<P></A>
+
+<tr><td>
+<A NAME="1107511">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202247">photo</a><P></A>
+<td>
+<A NAME="1107514">
+Contains a photo, in binary form.<P></A>
+
+<tr><td>
+<A NAME="1107521">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1103495">preferredLanguage</a><P></A>
+<td>
+<A NAME="1107523">
+Defines a person's preffered written or spoken language.<P></A>
+
+<tr><td>
+<A NAME="1089391">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1204477">roomNumber</a><P></A>
+<td>
+<A NAME="1089393">
+The room number in which the person is located.<P></A>
+
+<tr><td>
+<A NAME="1089396">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202691">secretary</a><P></A>
+<td>
+<A NAME="1089398">
+The person's secretary or administrator.<P></A>
+
+<tr><td>
+<A NAME="1089406">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1296804">uid</a><P></A>
+<td>
+<A NAME="1089408">
+Identifies the entry's userid (usually the logon ID).<P></A>
+
+<tr><td>
+<A NAME="1089431">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1208938">userCertificate</a><P></A>
+<td>
+<A NAME="1089433">
+Contains a user's certificate in cleartext (not used).<P></A>
+
+<tr><td>
+<A NAME="1107557">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1278425">userCertificate;binary</a><P></A>
+<td>
+<A NAME="1107559">
+Contains a user's certificate in binary form.<P></A>
+
+<tr><td>
+<A NAME="1089436">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1103595">userSMIMECertificate;binary</a><P></A>
+<td>
+<A NAME="1107562">
+Contains a user's certificate in binary form. Used by Netscape Communicator for S/MIME.<P></A>
+
+<tr><td>
+<A NAME="1095842">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1292796">x500UniqueIdentifier</a><P></A>
+<td>
+<A NAME="1095844">
+Undefined.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1100980"> 
+</A>
+<A NAME="newPilotPerson">
+<H3> newPilotPerson</H3>
+</A>
+
+
+
+<A NAME="1100981">
+Used as a subclass of person, to allow the use of a number of additional attributes to be assigned to entries of the person object class. Reserved.<P></A>
+
+<A NAME="1100982">
+OID: <code>0.9.2342.19200300.100.4.4</code><P></A>
+
+<A NAME="1101121">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1100985">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1100987">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1100992">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171367">businessCategory</a><P></A>
+<td>
+<A NAME="1100994">
+Type of business this person is engaged in.<P></A>
+
+<tr><td>
+<A NAME="1100999">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1201909">drink</a><P></A>
+<td>
+<A NAME="1101001">
+The person's favorite drink.<P></A>
+
+<tr><td>
+<A NAME="1101006">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1201936">homePhone</a><P></A>
+<td>
+<A NAME="1101008">
+The person's home phone number.<P></A>
+
+<tr><td>
+<A NAME="1101013">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1201947">homePostalAddress</a><P></A>
+<td>
+<A NAME="1101015">
+The person's home address.<P></A>
+
+<tr><td>
+<A NAME="1101020">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1201988">janetMailbox</a><P></A>
+<td>
+<A NAME="1101022">
+An email address for the person.<P></A>
+
+<tr><td>
+<A NAME="1101027">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1189404">mail</a><P></A>
+<td>
+<A NAME="1101029">
+An email address for the person.<P></A>
+
+<tr><td>
+<A NAME="1101034">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202044">mailPreferenceOption</a><P></A>
+<td>
+<A NAME="1101036">
+Indicates a preference for inclusion of the person's name on mailing lists (electronic or physical).<P></A>
+
+<tr><td>
+<A NAME="1101041">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202056">mobile</a><P></A>
+<td>
+<A NAME="1101043">
+The person's mobile phone number.<P></A>
+
+<tr><td>
+<A NAME="1101048">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1281714">organizationalStatus</a><P></A>
+<td>
+<A NAME="1101175">
+The person's type of employment (for example, full time).<P></A>
+
+<tr><td>
+<A NAME="1101055">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202220">otherMailbox</a><P></A>
+<td>
+<A NAME="1101057">
+Values for electronic mailbox types other than X.400 and rfc822.<P></A>
+
+<tr><td>
+<A NAME="1101062">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1003070">pager</a><P></A>
+<td>
+<A NAME="1101064">
+The person's pager number.<P></A>
+
+<tr><td>
+<A NAME="1101069">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202229">personalSignature</a><P></A>
+<td>
+<A NAME="1101071">
+The person's signature file.<P></A>
+
+<tr><td>
+<A NAME="1101076">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202238">personalTitle</a><P></A>
+<td>
+<A NAME="1101078">
+The person's personal title.<P></A>
+
+<tr><td>
+<A NAME="1101083">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202605">preferredDeliveryMethod</a><P></A>
+<td>
+<A NAME="1101085">
+The person's preferred contact or delivery method.<P></A>
+
+<tr><td>
+<A NAME="1101090">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1204477">roomNumber</a><P></A>
+<td>
+<A NAME="1101092">
+Room number of the person.<P></A>
+
+<tr><td>
+<A NAME="1101097">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202691">secretary</a><P></A>
+<td>
+<A NAME="1101099">
+Distinguished name of the person's secretary or administrative assistant.<P></A>
+
+<tr><td>
+<A NAME="1101104">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202782">textEncodedORAddress</a><P></A>
+<td>
+<A NAME="1101106">
+Text-encoded Originator/Recipient (X.400) address of the person.<P></A>
+
+<tr><td>
+<A NAME="1101111">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1296804">uid</a><P></A>
+<td>
+<A NAME="1101113">
+Logon ID of the person.<P></A>
+
+<tr><td>
+<A NAME="1101118">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202840">userClass</a><P></A>
+<td>
+<A NAME="1101120">
+Category of user.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1100862"> 
+</A>
+<A NAME="nsLicenseUser">
+<H3> nsLicenseUser</H3>
+</A>
+
+
+
+<A NAME="1100863">
+Object class used to track licenses for Netscape servers that are licensed on a per-client basis. nsLicenseUser is intended to be used with the inetOrgPerson object class. You can manage the contents of this object class through the Users and Groups area of the Netscape Administration Server. This object class is a Netscape extension to the standard LDAP schema.<P></A>
+
+<A NAME="1100864">
+OID: <code>2.16.840.1.113730.3.2.7</code><P></A>
+
+<A NAME="1100891">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1100867">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1100869">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1100873">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1091847">nsLicensedFor</a><P></A>
+<td>
+<A NAME="1100875">
+Netscape server that the user is licensed to use.<P></A>
+
+<tr><td>
+<A NAME="1107587">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1091864">nsLicenseEndTime</a><P></A>
+<td>
+<A NAME="1107589">
+Reserved for future use.<P></A>
+
+<tr><td>
+<A NAME="1100880">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1091859">nsLicenseStartTime</a><P></A>
+<td>
+<A NAME="1100882">
+Reserved for future use.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1089442"> 
+</A>
+<A NAME="ntUser">
+<H3> ntUser</H3>
+</A>
+
+
+
+<A NAME="1089443">
+Defines entries that are to be synchronized between the Directory Server and a Windows NT network. The attributes defined by ntUser assist in NT Synchronization. This object class is a Netscape extension to the standard LDAP schema.<P></A>
+
+<A NAME="1098670">
+OID: <code>2.16.840.1.113730.3.2.8</code><P></A>
+<a name="1089444">
+<B>
+<UL>
+
+Note
+
+</B>
+</UL>
+</a>
+
+
+<A NAME="1089445">
+All ntUser attributes are read-only, except for ntUserCreateNewAccount, ntUserDomainId, and ntUserDeleteAccount. Any modifications you make to read-only ntUser attributes will be deleted and the original values will be replaced when the next NT Synchronization occurs.<P></A>
+
+<A NAME="1089446">
+Several Directory Server attributes correspond directly to NT user account fields. When you create a new person entry in the Directory Server that is to be synchronized with NT, Directory Server attributes will be assigned to NT user account fields as follows:
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><td>
+<A NAME="1089449">
+Directory Server attribute<P></A>
+<td>
+<A NAME="1089451">
+NT user account field<P></A>
+
+<tr><td>
+<A NAME="1089453">
+cn or commonName<P></A>
+<td>
+<A NAME="1089455">
+full_name<P></A>
+
+<tr><td>
+<A NAME="1089457">
+description<P></A>
+<td>
+<A NAME="1089459">
+comment<P></A>
+
+<tr><td>
+<A NAME="1089461">
+userid<P></A>
+<td>
+<A NAME="1089463">
+name<P></A>
+
+<tr><td>
+<A NAME="1089465">
+userPassword<P></A>
+<td>
+<A NAME="1089467">
+password<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+<A NAME="1098497">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1089470">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1089472">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1107594">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171528">description</a><P></A>
+<td>
+<A NAME="1107596">
+Text description of the user.<P></A>
+
+<tr><td>
+<A NAME="1107601">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1244534">l</a><P></A>
+<td>
+<A NAME="1107603">
+The user's locality.<P></A>
+
+<tr><td>
+<A NAME="1107608">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1241174">ou</a><P></A>
+<td>
+<A NAME="1107610">
+The organizational unit to which the user belongs.<P></A>
+
+<tr><td>
+<A NAME="1107615">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1172500">seeAlso</a><P></A>
+<td>
+<A NAME="1107617">
+URL to information relevant to the user.<P></A>
+
+<tr><td>
+<A NAME="1089476">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1015403">ntUserDomainId</a><P></A>
+<td>
+<A NAME="1089479">
+(Required) Corresponding NT user and domain name.<P></A>
+
+<tr><td>
+<A NAME="1089482">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1013839">ntUserAcctExpires</a><P></A>
+<td>
+<A NAME="1089484">
+Identifies when the user's NT account will expire.<P></A>
+
+<tr><td>
+<A NAME="1089487">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1014052">ntUserAuthFlags</a><P></A>
+<td>
+<A NAME="1089489">
+The user's privileges on the NT network.<P></A>
+
+<tr><td>
+<A NAME="1089492">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1038772">ntUserBadPwCount</a><P></A>
+<td>
+<A NAME="1089494">
+Number of times that a failed login attempt occurred in NT using the user's NT login ID.<P></A>
+
+<tr><td>
+<A NAME="1089497">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1014973">ntUserCodePage</a><P></A>
+<td>
+<A NAME="1089499">
+The user's code page.<P></A>
+
+<tr><td>
+<A NAME="1089502">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1246829">ntUserComment</a><P></A>
+<td>
+<A NAME="1089504">
+Description for the user's NT account.<P></A>
+
+<tr><td>
+<A NAME="1089507">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1015155">ntUserCountryCode</a><P></A>
+<td>
+<A NAME="1089509">
+The user's country code.<P></A>
+
+<tr><td>
+<A NAME="1089512">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1015239">ntUserCreateNewAccount</a><P></A>
+<td>
+<A NAME="1089514">
+Identifies whether an NT account should be created when this entry is created in the Directory Server.<P></A>
+
+<tr><td>
+<A NAME="1089517">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1015309">ntUserDeleteAccount</a><P></A>
+<td>
+<A NAME="1089519">
+Identifies whether the user's NT account should be deleted when this entry is deleted from the Directory Server.<P></A>
+
+<tr><td>
+<A NAME="1089522">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1015534">ntUserFlags</a><P></A>
+<td>
+<A NAME="1089524">
+Identifies various NT account flags.<P></A>
+
+<tr><td>
+<A NAME="1089527">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1015584">ntUserHomeDir</a><P></A>
+<td>
+<A NAME="1089529">
+Path to the user's home directory.<P></A>
+
+<tr><td>
+<A NAME="1089532">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1015624">ntUserHomeDirDrive</a><P></A>
+<td>
+<A NAME="1089534">
+Drive letter assigned to the user's home directory.<P></A>
+
+<tr><td>
+<A NAME="1089537">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1015682">ntUserLastLogoff</a><P></A>
+<td>
+<A NAME="1089539">
+Time of the user's last logoff from NT.<P></A>
+
+<tr><td>
+<A NAME="1089542">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1015722">ntUserLastLogon</a><P></A>
+<td>
+<A NAME="1089544">
+Time of the user's last logon to NT.<P></A>
+
+<tr><td>
+<A NAME="1089547">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1015746">ntUserLogonHours</a><P></A>
+<td>
+<A NAME="1089549">
+Times when the user is allowed to log on to NT.<P></A>
+
+<tr><td>
+<A NAME="1101276">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1015839">ntUserLogonServer</a><P></A>
+<td>
+<A NAME="1089554">
+Server to which the user's NT logon requests are sent.<P></A>
+
+<tr><td>
+<A NAME="1089557">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1015984">ntUserMaxStorage</a><P></A>
+<td>
+<A NAME="1089559">
+Maximum disk space available to the user under NT.<P></A>
+
+<tr><td>
+<A NAME="1089562">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1016030">ntUserNumLogons</a><P></A>
+<td>
+<A NAME="1089564">
+Number of successful logins to the user's NT account.<P></A>
+
+<tr><td>
+<A NAME="1101297">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1021575">ntUserParms</a><P></A>
+<td>
+<A NAME="1101299">
+Unicode string reserved for use by applications.<P></A>
+
+<tr><td>
+<A NAME="1089567">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1016157">ntUserPasswordExpired</a><P></A>
+<td>
+<A NAME="1089569">
+Identifies if the user's NT password has expired.<P></A>
+
+<tr><td>
+<A NAME="1089572">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1016246">ntUserPrimaryGroupId</a><P></A>
+<td>
+<A NAME="1089574">
+The user's primary global group.<P></A>
+
+<tr><td>
+<A NAME="1101331">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1017849">ntUserPriv</a><P></A>
+<td>
+<A NAME="1101333">
+User's level of privilege on the Windows NT Network.<P></A>
+
+<tr><td>
+<A NAME="1089577">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1016298">ntUserProfile</a><P></A>
+<td>
+<A NAME="1089579">
+Path to the user's NT profile.<P></A>
+
+<tr><td>
+<A NAME="1089582">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1016395">ntUserScriptPath</a><P></A>
+<td>
+<A NAME="1089584">
+Path to the user's NT login script.<P></A>
+
+<tr><td>
+<A NAME="1089587">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1016531">ntUserUniqueId</a><P></A>
+<td>
+<A NAME="1089589">
+Identifies the user's NT RID.<P></A>
+
+<tr><td>
+<A NAME="1089592">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1016632">ntUserUnitsPerWeek</a><P></A>
+<td>
+<A NAME="1089594">
+Value used to compute the user's NTUserLogonHours.<P></A>
+
+<tr><td>
+<A NAME="1089597">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1016696">ntUserUsrComment</a><P></A>
+<td>
+<A NAME="1089599">
+Comments regarding the user's NT entry.<P></A>
+
+<tr><td>
+<A NAME="1089607">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1016728">ntUserWorkstations</a><P></A>
+<td>
+<A NAME="1089609">
+NT workstations from which the user is allowed to log into the NT domain.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1002805"> 
+</A>
+<A NAME="organizationalPerson">
+<H3> organizationalPerson</H3>
+</A>
+
+
+
+<A NAME="1002806">
+Defines entries for people employed by or associated with an organization. The organizationalPerson object class is an extension of the person object class. This object class was inherited from X.500 Directory Services. <P></A>
+
+<A NAME="1096977">
+OID: <code>2.5.6.7</code><P></A>
+
+<A NAME="1068825">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1070698">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1070700">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1070715">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1292809">destinationIndicator</a><P></A>
+<td>
+<A NAME="1070717">
+The country and city associated with the person needed to provide Public Telegram Service.<P></A>
+
+<tr><td>
+<A NAME="1070720">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171637">facsimileTelephoneNumber</a><P></A>
+<td>
+<A NAME="1070722">
+The person's fax number.<P></A>
+
+<tr><td>
+<A NAME="1107649">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1224256">internationalIsdnNumber</a><P></A>
+<td>
+<A NAME="1107651">
+The person's ISDN number.<P></A>
+
+<tr><td>
+<A NAME="1070725">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1244534">l</a><P></A>
+<td>
+<A NAME="1070727">
+Location at which the person resides.<P></A>
+
+<tr><td>
+<A NAME="1070731">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1241174">ou</a><P></A>
+<td>
+<A NAME="1070733">
+Organizational unit to which the person belongs.<P></A>
+
+<tr><td>
+<A NAME="1070736">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1003072">physicalDeliveryOfficeName</a><P></A>
+<td>
+<A NAME="1070738">
+Location where physical deliveries can be made to this person.<P></A>
+
+<tr><td>
+<A NAME="1070741">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1230025">postalAddress</a><P></A>
+<td>
+<A NAME="1070743">
+The person's mailing address.<P></A>
+
+<tr><td>
+<A NAME="1070746">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1230036">postalCode</a><P></A>
+<td>
+<A NAME="1070748">
+The person's postal code (such as a United States zip code).<P></A>
+
+<tr><td>
+<A NAME="1070751">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1230043">postOfficeBox</a><P></A>
+<td>
+<A NAME="1070753">
+The person's post office box.<P></A>
+
+<tr><td>
+<A NAME="1070756">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202605">preferredDeliveryMethod</a><P></A>
+<td>
+<A NAME="1070758">
+The person's preferred method of contact or delivery.<P></A>
+
+<tr><td>
+<A NAME="1107658">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202644">registeredAddress</a><P></A>
+<td>
+<A NAME="1107671">
+Postal address suitable for reception of expedited documents, where the recipient must verify delivery.<P></A>
+
+<tr><td>
+<A NAME="1070766">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1203417">st</a><P></A>
+<td>
+<A NAME="1070768">
+State or province in which the person resides.<P></A>
+
+<tr><td>
+<A NAME="1070771">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202721">street</a><P></A>
+<td>
+<A NAME="1070773">
+Street address at which the person is located.<P></A>
+
+<tr><td>
+<A NAME="1107723">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1205004">teletexTerminalIdentifier</a><P></A>
+<td>
+<A NAME="1107725">
+Identifier for the teletex terminal of the organization.<P></A>
+
+<tr><td>
+<A NAME="1107716">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1205120">telexNumber</a><P></A>
+<td>
+<A NAME="1107718">
+Telex number of the organization.<P></A>
+
+<tr><td>
+<A NAME="1107709">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1266248">title</a><P></A>
+<td>
+<A NAME="1107711">
+The person's job title.<P></A>
+
+<tr><td>
+<A NAME="1107702">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1281763">x121Address</a><P></A>
+<td>
+<A NAME="1107704">
+X.121 address of the organization.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1088567"> 
+</A>
+<A NAME="organizationalRole">
+<H3> organizationalRole</H3>
+</A>
+
+
+
+<A NAME="1088568">
+Defines entries that represent roles held by people within an organization. This object class was inherited from X.500 Directory Services. <P></A>
+
+<A NAME="1096979">
+OID: <code>2.5.6.8</code><P></A>
+
+<A NAME="1088606">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1088571">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1088573">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1088576">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171494">cn</a><P></A>
+<td>
+<A NAME="1088579">
+(Required) The role's common name.<P></A>
+
+<tr><td>
+<A NAME="1088588">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171528">description</a><P></A>
+<td>
+<A NAME="1088590">
+Text description of the role.<P></A>
+
+<tr><td>
+<A NAME="1088716">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1292809">destinationIndicator</a><P></A>
+<td>
+<A NAME="1088718">
+This attribute is used for telegram services to the person in this role.<P></A>
+
+<tr><td>
+<A NAME="1088780">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171637">facsimileTelephoneNumber</a><P></A>
+<td>
+<A NAME="1088782">
+Fax number of the person in the role.<P></A>
+
+<tr><td>
+<A NAME="1088726">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1224256">internationalIsdnNumber</a><P></A>
+<td>
+<A NAME="1088728">
+ISDN number of the person in the role.<P></A>
+
+<tr><td>
+<A NAME="1088806">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1244534">l</a><P></A>
+<td>
+<A NAME="1088808">
+Location in which the person in the role resides.<P></A>
+
+<tr><td>
+<A NAME="1088812">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1241174">ou</a><P></A>
+<td>
+<A NAME="1088814">
+Organizational unit to which the person in the role belongs.<P></A>
+
+<tr><td>
+<A NAME="1088817">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1003072">physicalDeliveryOfficeName</a><P></A>
+<td>
+<A NAME="1088819">
+Location where physical deliveries can be made to the person in this role.<P></A>
+
+<tr><td>
+<A NAME="1101602">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1230025">postalAddress</a><P></A>
+<td>
+<A NAME="1088824">
+Business mailing address for the person in this role.<P></A>
+
+<tr><td>
+<A NAME="1101607">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1230036">postalCode</a><P></A>
+<td>
+<A NAME="1088829">
+Business postal code (such as a United States zip code) for the person in this role.<P></A>
+
+<tr><td>
+<A NAME="1101612">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1230043">postOfficeBox</a><P></A>
+<td>
+<A NAME="1088834">
+Business post office box for the person in this role.<P></A>
+
+<tr><td>
+<A NAME="1101617">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202605">preferredDeliveryMethod</a><P></A>
+<td>
+<A NAME="1088839">
+Preferred method of contact or delivery of the person in this role.<P></A>
+
+<tr><td>
+<A NAME="1088771">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202644">registeredAddress</a><P></A>
+<td>
+<A NAME="1106144">
+Postal address suitable for reception of expedited documents, where the recipient must verify delivery.<P></A>
+
+<tr><td>
+<A NAME="1088863">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202666">roleOccupant</a><P></A>
+<td>
+<A NAME="1088865">
+Distinguished name of the person in this role.<P></A>
+
+<tr><td>
+<A NAME="1088593">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1172500">seeAlso</a><P></A>
+<td>
+<A NAME="1088595">
+URL to information relevant to the person in the role.<P></A>
+
+<tr><td>
+<A NAME="1101632">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1203417">st</a><P></A>
+<td>
+<A NAME="1088879">
+State or province in which the person in this role resides.<P></A>
+
+<tr><td>
+<A NAME="1101637">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202721">street</a><P></A>
+<td>
+<A NAME="1088884">
+Street address at which the person in this role is located.<P></A>
+
+<tr><td>
+<A NAME="1101642">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1230129">telephoneNumber</a><P></A>
+<td>
+<A NAME="1088600">
+The person's telephone number.<P></A>
+
+<tr><td>
+<A NAME="1088888">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1205004">teletexTerminalIdentifier</a><P></A>
+<td>
+<A NAME="1088890">
+Identifier for the teletex terminal of the person in this role.<P></A>
+
+<tr><td>
+<A NAME="1088937">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1205120">telexNumber</a><P></A>
+<td>
+<A NAME="1088939">
+Telex number of the person in this role.<P></A>
+
+<tr><td>
+<A NAME="1088978">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1281763">x121Address</a><P></A>
+<td>
+<A NAME="1088980">
+X.121 address of the person in this role.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1089681"> 
+</A>
+<A NAME="person">
+<H3> person</H3>
+</A>
+
+
+
+<A NAME="1089682">
+Defines entries that generically represent people. This object class is the base class for the organizationalPerson object class. This object class was inherited from X.500 Directory Services. <P></A>
+
+<A NAME="1096975">
+OID: <code>2.5.6.6</code><P></A>
+
+<A NAME="1089720">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1089685">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1089687">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1089690">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171494">cn</a><P></A>
+<td>
+<A NAME="1089693">
+(Required) The person's common name.<P></A>
+
+<tr><td>
+<A NAME="1089696">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1290325">sn</a><P></A>
+<td>
+<A NAME="1089699">
+(Required) The person's surname, or last name.<P></A>
+
+<tr><td>
+<A NAME="1089702">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171528">description</a><P></A>
+<td>
+<A NAME="1089704">
+Text description of the person.<P></A>
+
+<tr><td>
+<A NAME="1089707">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1172500">seeAlso</a><P></A>
+<td>
+<A NAME="1089709">
+URL to information relevant to the person.<P></A>
+
+<tr><td>
+<A NAME="1089712">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1230129">telephoneNumber</a><P></A>
+<td>
+<A NAME="1089714">
+The person's telephone number.<P></A>
+
+<tr><td>
+<A NAME="1089717">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1196547">userPassword</a><P></A>
+<td>
+<A NAME="1089719">
+Password with which the person can bind to the directory.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1106267"> 
+</A>
+<A NAME="residentialPerson">
+<H3> residentialPerson</H3>
+</A>
+
+
+
+<A NAME="1106268">
+Object class used by the Directory Server to contain a person's residential information. This object class was inherited from X.500 Directory Services.<P></A>
+
+<A NAME="1106269">
+OID: <code>2.5.6.10</code><P></A>
+
+<A NAME="1106387">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1106272">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1106274">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1106279">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1244534">l</a><P></A>
+<td>
+<A NAME="1106281">
+(Required) Locality in which the person resides.<P></A>
+
+<tr><td>
+<A NAME="1106286">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171367">businessCategory</a><P></A>
+<td>
+<A NAME="1106288">
+Business in which the person is involved.<P></A>
+
+<tr><td>
+<A NAME="1106293">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1292809">destinationIndicator</a><P></A>
+<td>
+<A NAME="1106295">
+This attribute is used for telegram services to this person.<P></A>
+
+<tr><td>
+<A NAME="1106299">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171637">facsimileTelephoneNumber</a><P></A>
+<td>
+<A NAME="1106302">
+Fax number for the person.<P></A>
+
+<tr><td>
+<A NAME="1106307">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1224256">internationalIsdnNumber</a><P></A>
+<td>
+<A NAME="1106309">
+ISDN number of the person.<P></A>
+
+<tr><td>
+<A NAME="1106313">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1003072">physicalDeliveryOfficeName</a><P></A>
+<td>
+<A NAME="1106316">
+Location where physical deliveries can be made.<P></A>
+
+<tr><td>
+<A NAME="1106321">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1230025">postalAddress</a><P></A>
+<td>
+<A NAME="1106323">
+Business mailing address for the person.<P></A>
+
+<tr><td>
+<A NAME="1106328">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1230036">postalCode</a><P></A>
+<td>
+<A NAME="1106330">
+Business postal code (such as a United States zip code) for the person.<P></A>
+
+<tr><td>
+<A NAME="1106335">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1230043">postOfficeBox</a><P></A>
+<td>
+<A NAME="1106337">
+Business post office box for the person.<P></A>
+
+<tr><td>
+<A NAME="1106342">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202605">preferredDeliveryMethod</a><P></A>
+<td>
+<A NAME="1106344">
+Preferred method of contact or delivery of the person.<P></A>
+
+<tr><td>
+<A NAME="1106349">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202644">registeredAddress</a><P></A>
+<td>
+<A NAME="1106351">
+Postal address suitable for reception of expedited documents, where the recipient must verify delivery.<P></A>
+
+<tr><td>
+<A NAME="1106356">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1203417">st</a><P></A>
+<td>
+<A NAME="1106358">
+State or province in which the person resides.<P></A>
+
+<tr><td>
+<A NAME="1106363">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202721">street</a><P></A>
+<td>
+<A NAME="1106365">
+Street address at which the person is located.<P></A>
+
+<tr><td>
+<A NAME="1106370">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1205004">teletexTerminalIdentifier</a><P></A>
+<td>
+<A NAME="1106372">
+Identifier for the teletex terminal of the person.<P></A>
+
+<tr><td>
+<A NAME="1106377">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1205120">telexNumber</a><P></A>
+<td>
+<A NAME="1106379">
+Telex number of the person.<P></A>
+
+<tr><td>
+<A NAME="1106384">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1281763">x121Address</a><P></A>
+<td>
+<A NAME="1106386">
+X.121 address of the person.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1078660"> 
+</A>
+<A NAME="Calendar Server Extensions">
+<H2> Calendar Server Extensions</H2>
+</A>
+
+<A NAME="1081153">
+The following object classes are used by the Netscape Calendar Server. The object classes described here include <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1078663">netscapeCalendarServer</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1097420">nsCalAdmin</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1084445">nsCalResource</a>, and <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1078672">nsCalUser</a>.<P></A>
+
+
+<A NAME="1078663"> 
+</A>
+<A NAME="netscapeCalendarServer">
+<H3> netscapeCalendarServer</H3>
+</A>
+
+
+
+<A NAME="1078664">
+Object class used to store information about the Netscape Calendar Server in the directory. This object class is a Netscape extension to the standard LDAP schema. Reserved for future use.<P></A>
+
+<A NAME="1097056">
+OID: <code>2.16.840.1.113730.3.2.17</code><P></A>
+
+<A NAME="1107920">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1107742">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1107744">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1107749">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1229677">objectClass</a><P></A>
+<td>
+<A NAME="1107751">
+(Required) Reserved.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+<A NAME="1097417">
+<P></A>
+
+
+<A NAME="1097420"> 
+</A>
+<A NAME="nsCalAdmin">
+<H3> nsCalAdmin</H3>
+</A>
+
+
+
+<A NAME="1097421">
+Object class used by the Netscape Calendar Server to store information about the calendar server administrator in the directory. This object class is a Netscape extension to the standard LDAP schema.<P></A>
+
+<A NAME="1097052">
+OID: <code>2.16.840.1.113730.3.2.15</code><P></A>
+
+<A NAME="1084442">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1102028">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1102030">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1108105">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1229677">objectClass</a><P></A>
+<td>
+<A NAME="1108107">
+(Required) Reserved.<P></A>
+
+<tr><td>
+<A NAME="1108100">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171494">cn</a><P></A>
+<td>
+<A NAME="1102037">
+The administrator's common name.<P></A>
+
+<tr><td>
+<A NAME="1102042">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171637">facsimileTelephoneNumber</a><P></A>
+<td>
+<A NAME="1102044">
+The administrator's fax number.<P></A>
+
+<tr><td>
+<A NAME="1102049">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1104309">generationQualifier</a><P></A>
+<td>
+<A NAME="1102051">
+Same as generation Qualifier in the Lightweight Internet Person Schema (LIPS).<P></A>
+
+<tr><td>
+<A NAME="1102056">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1229534">givenName</a><P></A>
+<td>
+<A NAME="1102058">
+The administrator's given, or first name.<P></A>
+
+<tr><td>
+<A NAME="1102063">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1229543">initials</a><P></A>
+<td>
+<A NAME="1102065">
+The administrator's initials.<P></A>
+
+<tr><td>
+<A NAME="1102193">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1104932">nsCalAccess</a><P></A>
+<td>
+<A NAME="1102195">
+Defines whether the administrator should be allowed or denied access to the calendar server.<P></A>
+
+<tr><td>
+<A NAME="1102198">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1166044">nsCalAccessDomain</a><P></A>
+<td>
+<A NAME="1102200">
+Internet domain or IP address from which the calendar administrator is allowed to access calendar data. This attribute is reserved for future use.<P></A>
+
+<tr><td>
+<A NAME="1102203">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1104994">nsCalAdmd</a><P></A>
+<td>
+<A NAME="1102205">
+X.400 Administration Management Domain Name of the administrator.<P></A>
+
+<tr><td>
+<A NAME="1102208">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1164493">nsCalFlags</a><P></A>
+<td>
+<A NAME="1102210">
+Reserved for future use.<P></A>
+
+<tr><td>
+<A NAME="1102213">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1157806">nsCalHost</a><P></A>
+<td>
+<A NAME="1102215">
+Hostname, or IP address, of the computer hosting the calendar administrator's information.<P></A>
+
+<tr><td>
+<A NAME="1102218">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1105333">nsCalLanguageId</a><P></A>
+<td>
+<A NAME="1102220">
+Language in which the administrator prefers to receive email.<P></A>
+
+<tr><td>
+<A NAME="1102223">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1157846">nsCalNodeAlias</a><P></A>
+<td>
+<A NAME="1102225">
+Mnemonic name of the node on which the administrator's data is stored.<P></A>
+
+<tr><td>
+<A NAME="1102228">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1105739">nsCalOrgUnit2</a><P></A>
+<td>
+<A NAME="1102230">
+X.400 Organization Unit 2 (OU2).<P></A>
+
+<tr><td>
+<A NAME="1102233">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1105752">nsCalOrgUnit3</a><P></A>
+<td>
+<A NAME="1102235">
+X.400 Organization Unit 3 (OU3).<P></A>
+
+<tr><td>
+<A NAME="1102238">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1105815">nsCalOrgUnit4</a><P></A>
+<td>
+<A NAME="1102240">
+X.400 Organization Unit 4 (OU4).<P></A>
+
+<tr><td>
+<A NAME="1102243">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1105834">nsCalPasswordRequired</a><P></A>
+<td>
+<A NAME="1102245">
+Specifies whether a calendar administrator must supply a password to access calendar data.<P></A>
+
+<tr><td>
+<A NAME="1102248">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1105891">nsCalPrmd</a><P></A>
+<td>
+<A NAME="1102250">
+X.400 Private Management Domain Name of the administrator.<P></A>
+
+<tr><td>
+<A NAME="1102253">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1106093">nsCalServerVersion</a><P></A>
+<td>
+<A NAME="1102255">
+Version number of the calendar server hosting the calendar administrator's data.<P></A>
+
+<tr><td>
+<A NAME="1102258">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1106115">nsCalSysopCanWritePassword</a><P></A>
+<td>
+<A NAME="1102260">
+Specifies if the calendar server administrator can overwrite user passwords.<P></A>
+
+<tr><td>
+<A NAME="1102263">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1106218">nsCalXItemId</a><P></A>
+<td>
+<A NAME="1102265">
+Identification number of the node on which the calendar administrator's data is stored.<P></A>
+
+<tr><td>
+<A NAME="1102070">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1241174">ou</a><P></A>
+<td>
+<A NAME="1102072">
+Organizational unit to which the administrator belongs.<P></A>
+
+<tr><td>
+<A NAME="1102077">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1230025">postalAddress</a><P></A>
+<td>
+<A NAME="1102079">
+The administrator's postal address.<P></A>
+
+<tr><td>
+<A NAME="1102084">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1290325">sn</a><P></A>
+<td>
+<A NAME="1102086">
+The administrator's surname or last name.<P></A>
+
+<tr><td>
+<A NAME="1102091">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1230129">telephoneNumber</a><P></A>
+<td>
+<A NAME="1102093">
+The administrator's telephone number.<P></A>
+
+<tr><td>
+<A NAME="1102098">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1196547">userPassword</a><P></A>
+<td>
+<A NAME="1102100">
+The administrator's password.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1084445"> 
+</A>
+<A NAME="nsCalResource">
+<H3> nsCalResource</H3>
+</A>
+
+
+
+<A NAME="1084446">
+Object class used by the Netscape Calendar Server to store information about calendar resources, such as conference rooms, in the directory. This object class is a Netscape extension to the standard LDAP schema.<P></A>
+
+<A NAME="1097054">
+OID: <code>2.16.840.1.113730.3.2.16</code><P></A>
+
+<A NAME="1079532">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1079408">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1079410">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1108114">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1229677">objectClass</a><P></A>
+<td>
+<A NAME="1108116">
+(Required) Reserved.<P></A>
+
+<tr><td>
+<A NAME="1102373">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171494">cn</a><P></A>
+<td>
+<A NAME="1080905">
+The resource's common name.<P></A>
+
+<tr><td>
+<A NAME="1102378">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171637">facsimileTelephoneNumber</a><P></A>
+<td>
+<A NAME="1081264">
+Fax number associated with the resource.<P></A>
+
+<tr><td>
+<A NAME="1102455">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1104932">nsCalAccess</a><P></A>
+<td>
+<A NAME="1083840">
+Defines whether the resource should be allowed or denied access to the calendar server.<P></A>
+
+<tr><td>
+<A NAME="1102460">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1166044">nsCalAccessDomain</a><P></A>
+<td>
+<A NAME="1083873">
+Internet domain or IP address from which the calendar resource is allowed to access calendar data. This attribute is reserved for future use.<P></A>
+
+<tr><td>
+<A NAME="1079434">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1105005">nsCalDefaultNoteReminder</a><P></A>
+<td>
+<A NAME="1084773">
+Type (if any) of note reminder.<P></A>
+
+<tr><td>
+<A NAME="1079439">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1162428">nsCalDefaultReminder</a><P></A>
+<td>
+<A NAME="1084609">
+Type (if any) of event reminder.<P></A>
+
+<tr><td>
+<A NAME="1079444">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1105139">nsCalDefaultTaskReminder</a><P></A>
+<td>
+<A NAME="1084642">
+Type (if any) of task reminder.<P></A>
+
+<tr><td>
+<A NAME="1079449">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1105164">nsCalDisplayPrefs</a><P></A>
+<td>
+<A NAME="1084565">
+Display preferences for the resource.<P></A>
+
+<tr><td>
+<A NAME="1102485">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1164493">nsCalFlags</a><P></A>
+<td>
+<A NAME="1079456">
+Reserved for future use.<P></A>
+
+<tr><td>
+<A NAME="1102490">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1157806">nsCalHost</a><P></A>
+<td>
+<A NAME="1083661">
+Hostname, or IP address, of the computer hosting the calendar resource's information.<P></A>
+
+<tr><td>
+<A NAME="1102495">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1105333">nsCalLanguageId</a><P></A>
+<td>
+<A NAME="1085033">
+Language in which the person responsible for the resource prefers to receive email notification.<P></A>
+
+<tr><td>
+<A NAME="1102500">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1157846">nsCalNodeAlias</a><P></A>
+<td>
+<A NAME="1083631">
+Mnemonic name of the node on which the resource's data is stored.<P></A>
+
+<tr><td>
+<A NAME="1079474">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1118755">nsCalNotifMechanism</a><P></A>
+<td>
+<A NAME="1079476">
+Mechanism used to notify event attendees (usually email).<P></A>
+
+<tr><td>
+<A NAME="1079479">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1105631">nsCalOperatingPrefs</a><P></A>
+<td>
+<A NAME="1084552">
+Operating preferences for the resource. Reserved for future use.<P></A>
+
+<tr><td>
+<A NAME="1079613">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1105834">nsCalPasswordRequired</a><P></A>
+<td>
+<A NAME="1084950">
+Specifies whether a calendar user must supply a password to access calendar data about this resource.<P></A>
+
+<tr><td>
+<A NAME="1079509">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1105943">nsCalRefreshPrefs</a><P></A>
+<td>
+<A NAME="1079511">
+Defines whether the resource's preferences should be refreshed and how often.<P></A>
+
+<tr><td>
+<A NAME="1079626">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1105996">nsCalResourceCapacity</a><P></A>
+<td>
+<A NAME="1079619">
+Capacity of the resource, such as maximum room occupancy.<P></A>
+
+<tr><td>
+<A NAME="1079631">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1209242">nsCalResourceNumber</a><P></A>
+<td>
+<A NAME="1079623">
+The resource's identification number.<P></A>
+
+<tr><td>
+<A NAME="1079514">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1106093">nsCalServerVersion</a><P></A>
+<td>
+<A NAME="1083778">
+Version number of the calendar server hosting the calendar resource's data.<P></A>
+
+<tr><td>
+<A NAME="1079519">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1106115">nsCalSysopCanWritePassword</a><P></A>
+<td>
+<A NAME="1085009">
+Specifies if the calendar server administrator can overwrite the resource's password.<P></A>
+
+<tr><td>
+<A NAME="1079524">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1106160">nsCalTimezone</a><P></A>
+<td>
+<A NAME="1079526">
+The current timezone in which the resource is located.<P></A>
+
+<tr><td>
+<A NAME="1079529">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1106218">nsCalXItemId</a><P></A>
+<td>
+<A NAME="1084486">
+Identification number of the node on which the calendar resource's data is stored.<P></A>
+
+<tr><td>
+<A NAME="1102416">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1230025">postalAddress</a><P></A>
+<td>
+<A NAME="1102418">
+Postal address of the resource.<P></A>
+
+<tr><td>
+<A NAME="1102409">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1230129">telephoneNumber</a><P></A>
+<td>
+<A NAME="1102411">
+The resource's telephone number.<P></A>
+
+<tr><td>
+<A NAME="1102402">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1196547">userPassword</a><P></A>
+<td>
+<A NAME="1102404">
+Reserved for future use.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1078672"> 
+</A>
+<A NAME="nsCalUser">
+<H3> nsCalUser</H3>
+</A>
+
+
+
+<A NAME="1078673">
+Object class used by the Netscape Calendar Server to store information about calendar users in the directory. This object class is a Netscape extension to the standard LDAP schema.<P></A>
+
+<A NAME="1097050">
+OID: <code>2.16.840.1.113730.3.2.14</code><P></A>
+
+<A NAME="1078727">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1078677">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1078679">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1108154">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1229677">objectClass</a><P></A>
+<td>
+<A NAME="1108156">
+(Required) Reserved.<P></A>
+
+<tr><td>
+<A NAME="1078683">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1104309">generationQualifier</a><P></A>
+<td>
+<A NAME="1078686">
+Same as generation Qualifier in the Lightweight Internet Person Schema (LIPS).<P></A>
+
+<tr><td>
+<A NAME="1102672">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1104932">nsCalAccess</a><P></A>
+<td>
+<A NAME="1083848">
+Defines whether the user should be allowed or denied access to the calendar server.<P></A>
+
+<tr><td>
+<A NAME="1102677">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1166044">nsCalAccessDomain</a><P></A>
+<td>
+<A NAME="1078696">
+Internet domain or IP address from which the calendar user is allowed to access calendar data. This attribute is reserved for future use.<P></A>
+
+<tr><td>
+<A NAME="1102682">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1104994">nsCalAdmd</a><P></A>
+<td>
+<A NAME="1083983">
+X.400 Administration Management Domain Name of the user.<P></A>
+
+<tr><td>
+<A NAME="1102697">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1105005">nsCalDefaultNoteReminder</a><P></A>
+<td>
+<A NAME="1084798">
+Type (if any) of note reminder.<P></A>
+
+<tr><td>
+<A NAME="1102702">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1162428">nsCalDefaultReminder</a><P></A>
+<td>
+<A NAME="1078711">
+Type (if any) of event reminder.<P></A>
+
+<tr><td>
+<A NAME="1102707">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1105139">nsCalDefaultTaskReminder</a><P></A>
+<td>
+<A NAME="1084619">
+Type (if any) of task reminder.<P></A>
+
+<tr><td>
+<A NAME="1102712">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1105164">nsCalDisplayPrefs</a><P></A>
+<td>
+<A NAME="1078721">
+Display preferences for the user.<P></A>
+
+<tr><td>
+<A NAME="1102717">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1164493">nsCalFlags</a><P></A>
+<td>
+<A NAME="1078726">
+Reserved for future use.<P></A>
+
+<tr><td>
+<A NAME="1102722">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1157806">nsCalHost</a><P></A>
+<td>
+<A NAME="1083672">
+Hostname, or IP address, of the computer hosting the calendar user's information.<P></A>
+
+<tr><td>
+<A NAME="1102727">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1105333">nsCalLanguageId</a><P></A>
+<td>
+<A NAME="1085040">
+Language in which the user prefers to receive email.<P></A>
+
+<tr><td>
+<A NAME="1102732">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1157846">nsCalNodeAlias</a><P></A>
+<td>
+<A NAME="1083651">
+Mnemonic name of the node on which the user's data is stored.<P></A>
+
+<tr><td>
+<A NAME="1102737">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1118755">nsCalNotifMechanism</a><P></A>
+<td>
+<A NAME="1084582">
+Mechanism used to notify event attendees (usually email).<P></A>
+
+<tr><td>
+<A NAME="1102742">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1105631">nsCalOperatingPrefs</a><P></A>
+<td>
+<A NAME="1078828">
+Operating preferences for the user. Reserved for future use.<P></A>
+
+<tr><td>
+<A NAME="1078821">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1105739">nsCalOrgUnit2</a><P></A>
+<td>
+<A NAME="1078823">
+X.400 Organization Unit 2 (OU2).<P></A>
+
+<tr><td>
+<A NAME="1078816">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1105752">nsCalOrgUnit3</a><P></A>
+<td>
+<A NAME="1083904">
+X.400 Organization Unit 3 (OU3).<P></A>
+
+<tr><td>
+<A NAME="1078811">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1105815">nsCalOrgUnit4</a><P></A>
+<td>
+<A NAME="1083922">
+X.400 Organization Unit 4 (OU4).<P></A>
+
+<tr><td>
+<A NAME="1102762">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1105834">nsCalPasswordRequired</a><P></A>
+<td>
+<A NAME="1082746">
+Specifies whether the user must supply a password to access calendar data.<P></A>
+
+<tr><td>
+<A NAME="1102767">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1105891">nsCalPrmd</a><P></A>
+<td>
+<A NAME="1083961">
+X.400 Private Management Domain Name of the user.<P></A>
+
+<tr><td>
+<A NAME="1078796">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1105943">nsCalRefreshPrefs</a><P></A>
+<td>
+<A NAME="1084526">
+Defines whether the user's calendar information should be refreshed and how often.<P></A>
+
+<tr><td>
+<A NAME="1078791">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1106093">nsCalServerVersion</a><P></A>
+<td>
+<A NAME="1083785">
+Version number of the calendar server hosting the calendar user's data.<P></A>
+
+<tr><td>
+<A NAME="1078786">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1106115">nsCalSysopCanWritePassword</a><P></A>
+<td>
+<A NAME="1085016">
+Specifies if the calendar server administrator can overwrite the user's password.<P></A>
+
+<tr><td>
+<A NAME="1078781">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1106160">nsCalTimezone</a><P></A>
+<td>
+<A NAME="1085063">
+The user's current timezone.<P></A>
+
+<tr><td>
+<A NAME="1078836">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1106218">nsCalXItemId</a><P></A>
+<td>
+<A NAME="1084493">
+Identification number of the node on which the calendar user's data is stored.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1078479"> 
+</A>
+<A NAME="Certificate Server Extensions">
+<H2> Certificate Server Extensions</H2>
+</A>
+
+<A NAME="1080510">
+This section describes the <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1078501">netscapeCertificateServer</a> object class used by the Netscape Certificate Server.<P></A>
+
+
+<A NAME="1078501"> 
+</A>
+<A NAME="netscapeCertificateServer">
+<H3> netscapeCertificateServer</H3>
+</A>
+
+
+
+<A NAME="1078564">
+Object class used to store information about the Netscape Certificate Server in the directory. This object class is a Netscape extension to the standard LDAP schema. Reserved for future use.<P></A>
+
+<A NAME="1097058">
+OID: <code>2.16.840.1.113730.3.2.18</code><P></A>
+
+<A NAME="1108183">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1108173">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1108175">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1108180">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1229677">objectClass</a><P></A>
+<td>
+<A NAME="1108182">
+(Required) Reserved.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1078576"> 
+</A>
+<A NAME="Collabra Server Extensions">
+<H2> Collabra Server Extensions</H2>
+</A>
+
+<A NAME="1080748">
+The object classes in this section are used by the Netscape Collabra Server. The object classes described here include <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1078579">netscapeNewsServer</a> and <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1078583">nginfo</a>.<P></A>
+
+
+<A NAME="1078579"> 
+</A>
+<A NAME="netscapeNewsServer">
+<H3> netscapeNewsServer</H3>
+</A>
+
+
+
+<A NAME="1108221">
+Object class used to store information about the Netscape Collabra Server in the directory. This object class is a Netscape extension to the standard LDAP schema. Reserved for future use.<P></A>
+
+<A NAME="1097154">
+OID: <code>2.16.840.1.113730.3.2.27</code><P></A>
+
+<A NAME="1108205">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1108195">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1108197">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1108202">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1229677">objectClass</a><P></A>
+<td>
+<A NAME="1108204">
+(Required) Reserved.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1078583"> 
+</A>
+<A NAME="nginfo">
+<H3> nginfo</H3>
+</A>
+
+
+
+<A NAME="1078584">
+Object class used by the Netscape Collabra Server to store discussion (news) group information. This object class is a Netscape extension to the standard LDAP schema.<P></A>
+
+<A NAME="1098802">
+OID: <code>2.16.840.1.113730.3.2.26</code><P></A>
+
+<A NAME="1105306">
+Object classes of this type are stored in a separate subtree under <I>ou=Netscape Servers</I>. The branch point is represented by the ngcomponent=. entry. Thus, if your directory's suffix is <I>o=Example.com</I>, then all discussion group information is stored in the subtree:<P></A>
+<PRE><A NAME="1078586">
+<I>ngcomponent=., o=Example.com</I>
+</A>
+</PRE>
+<A NAME="1078587">
+This subtree and it's contents are written to the directory by the Collabra server. The structure of this tree, the format and usage of the <code>nginfo</code> object class, and the format and usage of the <code>nginfo</code> attributes are subject to change without notice.<P></A>
+
+<A NAME="1078640">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1078590">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1078592">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1078596">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1095332">ngcomponent</a><P></A>
+<td>
+<A NAME="1078599">
+(Required) A single part of the discussion group's name.<P></A>
+
+<tr><td>
+<A NAME="1108256">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1229677">objectClass</a><P></A>
+<td>
+<A NAME="1108258">
+(Required) Reserved.<P></A>
+
+<tr><td>
+<A NAME="1078602">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171528">description</a><P></A>
+<td>
+<A NAME="1078604">
+Text description of the discussion group.<P></A>
+
+<tr><td>
+<A NAME="1103112">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1036977">nsaclrole</a><P></A>
+<td>
+<A NAME="1103114">
+Access permissions set for the various Collabra roles.<P></A>
+
+<tr><td>
+<A NAME="1103119">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1037693">nscreator</a><P></A>
+<td>
+<A NAME="1103121">
+User ID of the discussion group's creator.<P></A>
+
+<tr><td>
+<A NAME="1103133">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1037564">nsflags</a><P></A>
+<td>
+<A NAME="1103135">
+Reserved for future use.<P></A>
+
+<tr><td>
+<A NAME="1103140">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1092030">nsnewsACL</a><P></A>
+<td>
+<A NAME="1103142">
+Access control set for the discussion group.<P></A>
+
+<tr><td>
+<A NAME="1078627">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1037277">nsprettyname</a><P></A>
+<td>
+<A NAME="1078629">
+The discussion group's name.<P></A>
+
+<tr><td>
+<A NAME="1108272">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1099985">subtreeACI</a><P></A>
+<td>
+<A NAME="1108274">
+Reserved.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1078655"> 
+</A>
+<A NAME="Compass Server Extensions">
+<H2> Compass Server Extensions</H2>
+</A>
+
+<A NAME="1080778">
+The object classes in this section are used by the Netscape Compass Server. The object classes described here include <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1080497">netscapeCompassServer</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1079636">personalInterestProfile</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1080358">PIPUser</a>, and <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1080065">PIPUserInfo</a>.<P></A>
+
+
+<A NAME="1080497"> 
+</A>
+<A NAME="netscapeCompassServer">
+<H3> netscapeCompassServer</H3>
+</A>
+
+
+
+<A NAME="1080498">
+Object class used to store information about the Netscape Compass Server in the directory. This object class is a Netscape extension to the standard LDAP schema. Reserved for future use.<P></A>
+
+<A NAME="1097064">
+OID: <code>2.16.840.1.113730.3.2.19</code><P></A>
+
+<A NAME="1108299">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1108289">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1108291">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1108296">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1229677">objectClass</a><P></A>
+<td>
+<A NAME="1108298">
+(Required) Reserved.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1079636"> 
+</A>
+<A NAME="personalInterestProfile">
+<H3> personalInterestProfile</H3>
+</A>
+
+
+
+<A NAME="1082056">
+Object class used by the Netscape Compass Server to store personal interest profile information for Compass server users. For more information on personal interest profiles, see the Netscape Compass Server Administrator's Guide. This object class is a Netscape extension to the standard LDAP schema.<P></A>
+
+<A NAME="1097066">
+OID: <code>2.16.840.1.113730.3.2.20</code><P></A>
+
+<A NAME="1079693">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1079643">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1079645">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1108309">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1229677">objectClass</a><P></A>
+<td>
+<A NAME="1108311">
+(Required) Reserved.<P></A>
+
+<tr><td>
+<A NAME="1079649">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1110777">pipuid</a><P></A>
+<td>
+<A NAME="1079652">
+(Required) User ID of the person to whom this profile belongs.<P></A>
+
+<tr><td>
+<A NAME="1079655">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1107663">pipuniqueid</a><P></A>
+<td>
+<A NAME="1088167">
+Unique ID of the user to whom this profile belongs.<P></A>
+
+<tr><td>
+<A NAME="1079660">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1114647">pipstatus</a><P></A>
+<td>
+<A NAME="1079662">
+Defines whether the profile is enabled or disabled.<P></A>
+
+<tr><td>
+<A NAME="1079665">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1108439">pipusertype</a><P></A>
+<td>
+<A NAME="1079667">
+Type of user to whom this profile belongs.<P></A>
+
+<tr><td>
+<A NAME="1079670">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1116521">pipstfrequency</a><P></A>
+<td>
+<A NAME="1079672">
+Describes how often the user receives "My Compass" newsletters with category updates.<P></A>
+
+<tr><td>
+<A NAME="1079675">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1111582">pipmedium</a><P></A>
+<td>
+<A NAME="1079677">
+Medium used to send information to the user about updates on free text search profiles.<P></A>
+
+<tr><td>
+<A NAME="1108316">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1111357">pipformat</a><P></A>
+<td>
+<A NAME="1108318">
+Format of the free text search profile update sent to the user.<P></A>
+
+<tr><td>
+<A NAME="1079680">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1246341">pipfrequency</a><P></A>
+<td>
+<A NAME="1079682">
+Attribute used by the compass server to describe how often a user receives "My Compass" newsletters with free text search updates.<P></A>
+
+<tr><td>
+<A NAME="1079685">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1111369">piphour</a><P></A>
+<td>
+<A NAME="1079687">
+Hours during the day that the user receives free text search profile updates.<P></A>
+
+<tr><td>
+<A NAME="1079690">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1246650">pipmaxhits</a><P></A>
+<td>
+<A NAME="1079692">
+Maximum number of documents returned for each free text search profile update.<P></A>
+
+<tr><td>
+<A NAME="1086287">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1111729">pipresultset</a><P></A>
+<td>
+<A NAME="1079792">
+List of attributes about which the user wants to receive updates.<P></A>
+
+<tr><td>
+<A NAME="1079799">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1111947">pipsortorder</a><P></A>
+<td>
+<A NAME="1079788">
+Sort order of the information in the summary report of the free text search profile update.<P></A>
+
+<tr><td>
+<A NAME="1079802">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1117682">piptimestamp</a><P></A>
+<td>
+<A NAME="1079784">
+Date the free text search profile was last updated for this user.<P></A>
+
+<tr><td>
+<A NAME="1079805">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1113479">pipirlist</a><P></A>
+<td>
+<A NAME="1105425">
+Domains and newsgroups the user wishes to monitor.<P></A>
+
+<tr><td>
+<A NAME="1079808">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1237828">pipiroption</a><P></A>
+<td>
+<A NAME="1079776">
+Defines whether or not all entries in pipirlist should be updated or excluded from updates.<P></A>
+
+<tr><td>
+<A NAME="1079811">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1112443">pippwp</a><P></A>
+<td>
+<A NAME="1079772">
+Address of the Personal Web Page (PWP) database.<P></A>
+
+<tr><td>
+<A NAME="1079814">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1112574">piplastcount</a><P></A>
+<td>
+<A NAME="1079768">
+Number of matches that occurred during the last update.<P></A>
+
+<tr><td>
+<A NAME="1079817">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1237470">piptotalcount</a><P></A>
+<td>
+<A NAME="1082119">
+Number of matches that occurred during all updates to date.<P></A>
+
+<tr><td>
+<A NAME="1079820">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1112780">piptotalrun</a><P></A>
+<td>
+<A NAME="1079760">
+Total number of updates to date.<P></A>
+
+<tr><td>
+<A NAME="1079824">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1236460">pipnotify</a><P></A>
+<td>
+<A NAME="1079756">
+Undefined.<P></A>
+
+<tr><td>
+<A NAME="1079827">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1236511">pipprivilege</a><P></A>
+<td>
+<A NAME="1079752">
+Undefined.<P></A>
+
+<tr><td>
+<A NAME="1086357">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1113190">pipgroup</a><P></A>
+<td>
+<A NAME="1079748">
+Undefined.<P></A>
+
+<tr><td>
+<A NAME="1086370">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1237689">pipidstcount</a><P></A>
+<td>
+<A NAME="1082159">
+Last unique ID used by the user.<P></A>
+
+<tr><td>
+<A NAME="1086382">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1115462">pipstid</a><P></A>
+<td>
+<A NAME="1079861">
+Unique ID of a search topic included in the profile.<P></A>
+
+<tr><td>
+<A NAME="1079875">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1115468">pipstname</a><P></A>
+<td>
+<A NAME="1079857">
+Arbitrary name created by the user to describe a search topic.<P></A>
+
+<tr><td>
+<A NAME="1079878">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1115474">pipstquery</a><P></A>
+<td>
+<A NAME="1079853">
+Undefined.<P></A>
+
+<tr><td>
+<A NAME="1079881">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1115480">pipsttaxonomy</a><P></A>
+<td>
+<A NAME="1079849">
+Taxonomy ID of a search topic.<P></A>
+
+<tr><td>
+<A NAME="1079884">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1115769">pipstinterest</a><P></A>
+<td>
+<A NAME="1099692">
+Describes the importance to the user of each individual search topic. (This attribute is used with Netscape Compass Server Professional only.)<P></A>
+
+<tr><td>
+<A NAME="1079887">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1116285">pipsttype</a><P></A>
+<td>
+<A NAME="1079841">
+Defines whether a search is a category search or a free text search.<P></A>
+
+<tr><td>
+<A NAME="1079890">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1115898">pipstprivacy</a><P></A>
+<td>
+<A NAME="1079837">
+Defines whether queries of this entry should be allowed or disallowed.<P></A>
+
+<tr><td>
+<A NAME="1079955">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1116027">pipststatus</a><P></A>
+<td>
+<A NAME="1079950">
+Status of the personal interest profile.<P></A>
+
+<tr><td>
+<A NAME="1079958">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1237172">pipstlastcount</a><P></A>
+<td>
+<A NAME="1079946">
+Number of category matches during the last update.<P></A>
+
+<tr><td>
+<A NAME="1079961">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1115516">pipsttotalcount</a><P></A>
+<td>
+<A NAME="1082234">
+Number of category matches to date.<P></A>
+
+<tr><td>
+<A NAME="1079964">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1115522">pipsttotalrun</a><P></A>
+<td>
+<A NAME="1082240">
+Number of category search updates performed to date.<P></A>
+
+<tr><td>
+<A NAME="1079967">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1116402">pipstcategory</a><P></A>
+<td>
+<A NAME="1079934">
+Categories or search strings the user is interested in.<P></A>
+
+<tr><td>
+<A NAME="1079970">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1116521">pipstfrequency</a><P></A>
+<td>
+<A NAME="1079930">
+Frequency that the user receives category update alerts.<P></A>
+
+<tr><td>
+<A NAME="1079973">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1117140">pipstmedium</a><P></A>
+<td>
+<A NAME="1096703">
+Medium used to send information to the user about updates on category search profiles.<P></A>
+
+<tr><td>
+<A NAME="1079976">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1116837">pipstformat</a><P></A>
+<td>
+<A NAME="1082369">
+Format of the category search profile update sent to the user.<P></A>
+
+<tr><td>
+<A NAME="1079979">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1116707">pipsthour</a><P></A>
+<td>
+<A NAME="1082375">
+Hours during the day that the user receives free category profile updates.<P></A>
+
+<tr><td>
+<A NAME="1079982">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1117134">pipstmaxhits</a><P></A>
+<td>
+<A NAME="1082402">
+Maximum number of documents returned for each category search profile update.<P></A>
+
+<tr><td>
+<A NAME="1079985">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1117321">pipstresultset</a><P></A>
+<td>
+<A NAME="1082414">
+List of categories about which the user wants to receive updates.<P></A>
+
+<tr><td>
+<A NAME="1079988">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1117327">pipstsortorder</a><P></A>
+<td>
+<A NAME="1082427">
+Sort order of the information in the summary report of the category search profile update.<P></A>
+
+<tr><td>
+<A NAME="1079991">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1117445">pipsttimestamp</a><P></A>
+<td>
+<A NAME="1082432">
+Date the category search profile was last updated for this user.<P></A>
+
+<tr><td>
+<A NAME="1079994">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1117562">pipstirlist</a><P></A>
+<td>
+<A NAME="1082443">
+Domains and newsgroups the user wants to monitor.<P></A>
+
+<tr><td>
+<A NAME="1079997">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1117790">pipstiroption</a><P></A>
+<td>
+<A NAME="1082447">
+Defines whether or not all entries in pipstirlist will be updated or excluded from category updates.<P></A>
+
+<tr><td>
+<A NAME="1080036">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1118693">pipreservedces1</a><P></A>
+<td>
+<A NAME="1080033">
+Reserved for future use.<P></A>
+
+<tr><td>
+<A NAME="1080041">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1118699">pipreservedces2</a><P></A>
+<td>
+<A NAME="1082335">
+Reserved for future use.<P></A>
+
+<tr><td>
+<A NAME="1080044">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1118705">pipreservedces3</a><P></A>
+<td>
+<A NAME="1080025">
+Reserved for future use.<P></A>
+
+<tr><td>
+<A NAME="1080047">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1118350">pipreservedcis1</a><P></A>
+<td>
+<A NAME="1080021">
+Reserved for future use.<P></A>
+
+<tr><td>
+<A NAME="1080050">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1118356">pipreservedcis2</a><P></A>
+<td>
+<A NAME="1080017">
+Reserved for future use.<P></A>
+
+<tr><td>
+<A NAME="1080053">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1118362">pipreservedcis3</a><P></A>
+<td>
+<A NAME="1080013">
+Reserved for future use.<P></A>
+
+<tr><td>
+<A NAME="1080056">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1118368">pipreservedcis4</a><P></A>
+<td>
+<A NAME="1080009">
+Reserved for future use.<P></A>
+
+<tr><td>
+<A NAME="1080059">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1118374">pipreservedcis5</a><P></A>
+<td>
+<A NAME="1080005">
+Reserved for future use.<P></A>
+
+<tr><td>
+<A NAME="1080062">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1118380">pipreservedcis6</a><P></A>
+<td>
+<A NAME="1080001">
+Reserved for future use.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1080358"> 
+</A>
+<A NAME="PIPUser">
+<H3> PIPUser</H3>
+</A>
+
+
+
+<A NAME="1082531">
+Object class used by the Netscape Compass Server to contain information about Personal Interest Profile (PIP) users. This object class is a Netscape extension to the standard LDAP schema. For more information about PIPs, see the Netscape Compass Server Administrator's Guide. Reserved for future use.<P></A>
+
+<A NAME="1097068">
+OID: <code>2.16.840.1.113730.3.2.22</code><P></A>
+
+<A NAME="1080396">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1080362">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1080364">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1108446">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1229677">objectClass</a><P></A>
+<td>
+<A NAME="1108448">
+(Required) Reserved.<P></A>
+
+<tr><td>
+<A NAME="1086592">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1246531">pipcompassservers</a><P></A>
+<td>
+<A NAME="1080405">
+Reserved for future use.<P></A>
+
+<tr><td>
+<A NAME="1086632">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1118693">pipreservedces1</a><P></A>
+<td>
+<A NAME="1080442">
+Reserved for future use.<P></A>
+
+<tr><td>
+<A NAME="1086637">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1118699">pipreservedces2</a><P></A>
+<td>
+<A NAME="1080447">
+Reserved for future use.<P></A>
+
+<tr><td>
+<A NAME="1086642">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1118705">pipreservedces3</a><P></A>
+<td>
+<A NAME="1080452">
+Reserved for future use.<P></A>
+
+<tr><td>
+<A NAME="1086647">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1118350">pipreservedcis1</a><P></A>
+<td>
+<A NAME="1080457">
+Reserved for future use.<P></A>
+
+<tr><td>
+<A NAME="1086652">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1118356">pipreservedcis2</a><P></A>
+<td>
+<A NAME="1080462">
+Reserved for future use.<P></A>
+
+<tr><td>
+<A NAME="1086657">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1118362">pipreservedcis3</a><P></A>
+<td>
+<A NAME="1080467">
+Reserved for future use.<P></A>
+
+<tr><td>
+<A NAME="1086662">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1118368">pipreservedcis4</a><P></A>
+<td>
+<A NAME="1080484">
+Reserved for future use.<P></A>
+
+<tr><td>
+<A NAME="1086667">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1118374">pipreservedcis5</a><P></A>
+<td>
+<A NAME="1080489">
+Reserved for future use.<P></A>
+
+<tr><td>
+<A NAME="1086672">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1118380">pipreservedcis6</a><P></A>
+<td>
+<A NAME="1080494">
+Reserved for future use.<P></A>
+
+<tr><td>
+<A NAME="1108453">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1107663">pipuniqueid</a><P></A>
+<td>
+<A NAME="1108455">
+Unique ID of the user.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1080065"> 
+</A>
+<A NAME="PIPUserInfo">
+<H3> PIPUserInfo</H3>
+</A>
+
+
+
+<A NAME="1080066">
+Object class used by the Netscape Compass Server to contain information about Personal Interest Profile (PIP) users that do not have a user ID. This object class is a Netscape extension to the standard LDAP schema. For more information about PIPs, see the Netscape Compass Server Administrator's Guide. Reserved for future use.<P></A>
+
+<A NAME="1097070">
+OID: <code>2.16.840.1.113730.3.2.21</code><P></A>
+
+<A NAME="1097227">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1105721">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1105723">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1105728">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171494">cn</a><P></A>
+<td>
+<A NAME="1105730">
+(Required) The user's common name.<P></A>
+
+<tr><td>
+<A NAME="1108460">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1229677">objectClass</a><P></A>
+<td>
+<A NAME="1108462">
+(Required) Reserved.<P></A>
+
+<tr><td>
+<A NAME="1105735">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171528">description</a><P></A>
+<td>
+<A NAME="1105737">
+Freeform description of the user.<P></A>
+
+<tr><td>
+<A NAME="1105763">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1189404">mail</a><P></A>
+<td>
+<A NAME="1105765">
+Email address of the user.<P></A>
+
+<tr><td>
+<A NAME="1105742">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1246531">pipcompassservers</a><P></A>
+<td>
+<A NAME="1105744">
+Reserved for future use.<P></A>
+
+<tr><td>
+<A NAME="1105749">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1107663">pipuniqueid</a><P></A>
+<td>
+<A NAME="1105751">
+Unique ID of the user.<P></A>
+
+<tr><td>
+<A NAME="1105756">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1196547">userPassword</a><P></A>
+<td>
+<A NAME="1105758">
+The user's password.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1097229"> 
+</A>
+<A NAME="Directory Server Extensions">
+<H2> Directory Server Extensions</H2>
+</A>
+
+<A NAME="1077861">
+The following object classes are used by the Netscape Directory Server. The object classes described here include <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1077794">changeLogEntry</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1100614">cirReplicaSource</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1098555">groupOfCertificates</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1106267">residentialPerson</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1078109">netscapeMachineData</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1097231">netscapeServer</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1100862">nsLicenseUser</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1100399">NTGroup</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1081708">passwordObject</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1081724">passwordPolicy</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1097669">referral</a>, and <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1097986">subschema</a>.<P></A>
+
+
+<A NAME="1077794"> 
+</A>
+<A NAME="changeLogEntry">
+<H3> changeLogEntry</H3>
+</A>
+
+
+
+<A NAME="1077795">
+Object class used by the Netscape Directory Server to represent a change made to its directory. This object class is a Netscape extension to the standard LDAP schema.<P></A>
+
+<A NAME="1098541">
+OID: <code>2.16.840.1.113730.3.2.1</code><P></A>
+
+<A NAME="1077846">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1077798">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1077800">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1077816">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1094798">changeNumber</a><P></A>
+<td>
+<A NAME="1077819">
+(Required) Arbitrarily assigned number to the changelog.<P></A>
+
+<tr><td>
+<A NAME="1108478">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1095285">changeTime</a><P></A>
+<td>
+<A NAME="1108480">
+(Required) The time a change took place.<P></A>
+
+<tr><td>
+<A NAME="1077822">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1094968">changeType</a><P></A>
+<td>
+<A NAME="1077825">
+(Required) Type of change performed on an entry.<P></A>
+
+<tr><td>
+<A NAME="1108471">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1094954">targetDn</a><P></A>
+<td>
+<A NAME="1108473">
+(Required) Distinguished name of an entry that was added, modified, or deleted on a supplier server.<P></A>
+
+<tr><td>
+<A NAME="1077828">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1095277">changes</a><P></A>
+<td>
+<A NAME="1077830">
+Changes made to a Directory Server.<P></A>
+
+<tr><td>
+<A NAME="1077833">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1095547">deleteOldRdn</a><P></A>
+<td>
+<A NAME="1077835">
+A flag that defines whether the old Relative Distinguished Name (RDN) of the entry should be retained as a distinguished attribute of the entry, or should be deleted.<P></A>
+
+<tr><td>
+<A NAME="1098195">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1266221">filterInfo</a><P></A>
+<td>
+<A NAME="1098197">
+Reserved for future use.<P></A>
+
+<tr><td>
+<A NAME="1077838">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1278579">newRdn</a><P></A>
+<td>
+<A NAME="1077840">
+New RDN of an entry that is the target of a modRDN or modDN operation.<P></A>
+
+<tr><td>
+<A NAME="1077843">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1126531">newSuperior</a><P></A>
+<td>
+<A NAME="1077845">
+Name of the entry that becomes the immediate superior of the existing entry, when processing a modDN operation.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1098555"> 
+</A>
+<A NAME="groupOfCertificates">
+<H3> groupOfCertificates</H3>
+</A>
+
+
+
+<A NAME="1098563">
+Object class used by the Netscape Directory Server to contain information about a group of X.509 certificates. Any certificate that matches the values in <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1152959">memberCertificateDescription</a> is considered to be a member of the group. This object class is a Netscape extension to the standard LDAP schema.<P></A>
+
+<A NAME="1098564">
+OID: <code>2.16.840.1.113730.3.2.31</code><P></A>
+
+<A NAME="1081487">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1081442">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1081444">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1081448">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171494">cn</a><P></A>
+<td>
+<A NAME="1081451">
+(Required) The group's common name.<P></A>
+
+<tr><td>
+<A NAME="1081454">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171367">businessCategory</a><P></A>
+<td>
+<A NAME="1082983">
+Business in which the group is involved.<P></A>
+
+<tr><td>
+<A NAME="1081459">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171528">description</a><P></A>
+<td>
+<A NAME="1081461">
+Freeform description of the group.<P></A>
+
+<tr><td>
+<A NAME="1081464">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1152959">memberCertificateDescription</a><P></A>
+<td>
+<A NAME="1081466">
+Values used to determine if a particular certificate is a member of this group.<P></A>
+
+<tr><td>
+<A NAME="1081469">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1281611">o</a><P></A>
+<td>
+<A NAME="1081471">
+Organization that controls the group of certificates.<P></A>
+
+<tr><td>
+<A NAME="1081474">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1241174">ou</a><P></A>
+<td>
+<A NAME="1081476">
+Organizational unit to which the group belongs.<P></A>
+
+<tr><td>
+<A NAME="1081479">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1005719">owner</a><P></A>
+<td>
+<A NAME="1081481">
+The group's owner.<P></A>
+
+<tr><td>
+<A NAME="1081484">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1172500">seeAlso</a><P></A>
+<td>
+<A NAME="1081486">
+URL to information relevant to the group.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1089068"> 
+</A>
+<A NAME="netscapeDirectoryServer">
+<H3> netscapeDirectoryServer</H3>
+</A>
+
+
+
+<A NAME="1089069">
+Object class used to store information about the Netscape Directory Server in the directory. This object class is a Netscape extension to the standard LDAP schema. Reserved for future use.<P></A>
+
+<A NAME="1097076">
+OID: <code>2.16.840.1.113730.3.2.23</code><P></A>
+
+<A NAME="1108594">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1108584">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1108586">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1108591">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1229677">objectClass</a><P></A>
+<td>
+<A NAME="1108593">
+(Required) Reserved.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1078109"> 
+</A>
+<A NAME="netscapeMachineData">
+<H3> netscapeMachineData</H3>
+</A>
+
+
+
+<A NAME="1097236">
+Object class used by the Netscape Directory Server to distinguish between machine data and non-machine data. Machine data is filtered out during replication. This object class is a Netscape extension to the standard LDAP schema. Reserved.<P></A>
+
+<A NAME="1097237">
+OID: <code>2.16.840.1.113730.3.2.32</code><P></A>
+
+
+<A NAME="1097231"> 
+</A>
+<A NAME="netscapeServer">
+<H3> netscapeServer</H3>
+</A>
+
+
+
+<A NAME="1098570">
+Object class that identifies entries used by Netscape servers when they bind to the directory. This object class is a Netscape extension to the standard LDAP schema.<P></A>
+
+<A NAME="1098571">
+OID: <code>2.16.840.1.113730.3.2.10</code><P></A>
+
+<A NAME="1078166">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1078113">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1078115">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1078118">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171494">cn</a><P></A>
+<td>
+<A NAME="1078121">
+(Required) The server's common name.<P></A>
+
+<tr><td>
+<A NAME="1103187">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1032956">administratorContactInfo</a><P></A>
+<td>
+<A NAME="1103189">
+URL to information relevant to the person responsible for administering the Netscape server.<P></A>
+
+<tr><td>
+<A NAME="1103192">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1098448">adminUrl</a><P></A>
+<td>
+<A NAME="1103194">
+URL to the administration server under which the Netscape server is running.<P></A>
+
+<tr><td>
+<A NAME="1078124">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171528">description</a><P></A>
+<td>
+<A NAME="1078126">
+Text description of the server.<P></A>
+
+<tr><td>
+<A NAME="1103205">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1032705">installationTimeStamp</a><P></A>
+<td>
+<A NAME="1103207">
+Time when the Netscape server was installed.<P></A>
+
+<tr><td>
+<A NAME="1078137">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1093065">serverHostName</a><P></A>
+<td>
+<A NAME="1078139">
+Hostname on which the Netscape server is installed.<P></A>
+
+<tr><td>
+<A NAME="1078143">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1032412">serverProductName</a><P></A>
+<td>
+<A NAME="1078145">
+Netscape server's product name.<P></A>
+
+<tr><td>
+<A NAME="1103220">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1032294">serverRoot</a><P></A>
+<td>
+<A NAME="1103222">
+Path to the server's installation root.<P></A>
+
+<tr><td>
+<A NAME="1108651">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1032439">serverVersionNumber</a><P></A>
+<td>
+<A NAME="1108653">
+Netscape server's version number.<P></A>
+
+<tr><td>
+<A NAME="1078148">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1196547">userPassword</a><P></A>
+<td>
+<A NAME="1078150">
+Contains a password for the server.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1081708"> 
+</A>
+<A NAME="passwordObject">
+<H3> passwordObject</H3>
+</A>
+
+
+
+<A NAME="1098598">
+Object class that contains password information for a user in the directory. This object class is a Netscape extension to the standard LDAP schema.<P></A>
+
+<A NAME="1098599">
+OID: <code>2.16.840.1.113730.3.2.12</code><P></A>
+
+<A NAME="1081721">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1081712">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1081714">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1108661">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1229677">objectClass</a><P></A>
+<td>
+<A NAME="1108663">
+(Required) Reserved.<P></A>
+
+<tr><td>
+<A NAME="1103292">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1104078">accountUnlockTime</a><P></A>
+<td>
+<A NAME="1103294">
+When the user account will be unlocked.<P></A>
+
+<tr><td>
+<A NAME="1108668">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1103904">passwordExpirationTime</a><P></A>
+<td>
+<A NAME="1108670">
+When the user's password expires.<P></A>
+
+<tr><td>
+<A NAME="1081718">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1293088">passwordExpWarned</a><P></A>
+<td>
+<A NAME="1081720">
+Used by the Directory Server to keep track of password expiration warnings sent to a user.<P></A>
+
+<tr><td>
+<A NAME="1103273">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1104144">passwordHistory</a><P></A>
+<td>
+<A NAME="1103275">
+Password history of the user.<P></A>
+
+<tr><td>
+<A NAME="1083145">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1103999">passwordRetryCount</a><P></A>
+<td>
+<A NAME="1083110">
+Password failure count for the user.<P></A>
+
+<tr><td>
+<A NAME="1083153">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1152805">retryCountResetTime</a><P></A>
+<td>
+<A NAME="1083106">
+Describes when the passwordRetryCount should be reset to zero (0).<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1081724"> 
+</A>
+<A NAME="passwordPolicy">
+<H3> passwordPolicy</H3>
+</A>
+
+
+
+<A NAME="1098606">
+Object class that contains the password policy for all users in the entire directory. This object class is a Netscape extension to the standard LDAP schema.<P></A>
+
+<A NAME="1098607">
+OID: <code>2.16.840.1.113730.3.2.13</code><P></A>
+
+<A NAME="1081725">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1103339">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1103341">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1108677">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1229677">objectClass</a><P></A>
+<td>
+<A NAME="1108679">
+(Required) Reserved.<P></A>
+
+<tr><td>
+<A NAME="1103461">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1157269">passwordChange</a><P></A>
+<td>
+<A NAME="1103463">
+Defines whether users must, may, or cannot change passwords.<P></A>
+
+<tr><td>
+<A NAME="1103478">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1157285">passwordCheckSyntax</a><P></A>
+<td>
+<A NAME="1103480">
+Defines whether or not a syntax check is performed on user passwords.<P></A>
+
+<tr><td>
+<A NAME="1103346">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1155167">passwordExp</a><P></A>
+<td>
+<A NAME="1103348">
+Defines whether or not user passwords expire.<P></A>
+
+<tr><td>
+<A NAME="1103444">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1104470">passwordInHistory</a><P></A>
+<td>
+<A NAME="1103446">
+If password histories are being kept, this attribute defines how many passwords to keep in the history list.<P></A>
+
+<tr><td>
+<A NAME="1103427">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1156663">passwordKeepHistory</a><P></A>
+<td>
+<A NAME="1103429">
+Defines whether or not a history of user passwords should be saved.<P></A>
+
+<tr><td>
+<A NAME="1103495">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1156671">passwordLockout</a><P></A>
+<td>
+<A NAME="1103497">
+Defines whether or not users should be locked out after using an incorrect password a specified number of times.<P></A>
+
+<tr><td>
+<A NAME="1103551">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1104188">passwordLockoutDuration</a><P></A>
+<td>
+<A NAME="1103553">
+Defines how long users should be locked out after a specified number of retries.<P></A>
+
+<tr><td>
+<A NAME="1103353">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1166286">passwordMaxAge</a><P></A>
+<td>
+<A NAME="1103355">
+Defines how long passwords can be used before they expire.<P></A>
+
+<tr><td>
+<A NAME="1103512">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1104715">passwordMaxFailure</a><P></A>
+<td>
+<A NAME="1103514">
+Maximum number of retries allowed before a user is locked out.<P></A>
+
+<tr><td>
+<A NAME="1103360">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1104413">passwordMinLength</a><P></A>
+<td>
+<A NAME="1103362">
+Defines the minimum number of characters allowed in user passwords.<P></A>
+
+<tr><td>
+<A NAME="1103529">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1104754">passwordResetDuration</a><P></A>
+<td>
+<A NAME="1103531">
+Specifies how much time passes between the server locking a user out and resetting the retry count to zero.<P></A>
+
+<tr><td>
+<A NAME="1103534">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1156969">passwordUnlock</a><P></A>
+<td>
+<A NAME="1103536">
+Defines whether or not users should be locked out forever after a specified number of retries.<P></A>
+
+<tr><td>
+<A NAME="1103387">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1104598">passwordWarning</a><P></A>
+<td>
+<A NAME="1103389">
+Specifies how much time prior to password expiration to send a warning to the user.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1097669"> 
+</A>
+<A NAME="referral">
+<H3> referral</H3>
+</A>
+
+
+
+<A NAME="1097670">
+Object class that allows smart referrals to be placed in an entry. This object class is a Netscape extension to the standard LDAP schema.<P></A>
+
+<A NAME="1078339">
+OID: <code>2.16.840.1.113730.3.2.6</code><P></A>
+
+<A NAME="1098034">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1078330">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1078332">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1078336">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1100037">ref</a><P></A>
+<td>
+<A NAME="1078338">
+LDAP URL in the format<br>ldap://servername:portnumber/dn.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1097986"> 
+</A>
+<A NAME="subschema">
+<H3> subschema</H3>
+</A>
+
+
+
+<A NAME="1097987">
+Object class that contains all the attributes and object classes for a given Directory Server. This object class was inherited from X.500 Directory Services. Reserved for use by the Directory Server.<P></A>
+
+<A NAME="1098036">
+OID: <code>2.5.20.1</code><P></A>
+
+<A NAME="1097998">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1097990">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1097992">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1098110">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1290840">attributeTypes</a><P></A>
+<td>
+<A NAME="1098112">
+Attribute types used within a subschema.<P></A>
+
+<tr><td>
+<A NAME="1098086">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1283336">dITContentRules</a><P></A>
+<td>
+<A NAME="1098088">
+Defines directory tree content rules used within a subschema.<P></A>
+
+<tr><td>
+<A NAME="1098082">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1283313">dITStructureRules</a><P></A>
+<td>
+<A NAME="1098084">
+Defines directory tree structure rules used in a subschema.<P></A>
+
+<tr><td>
+<A NAME="1098078">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1242887">matchingRules</a><P></A>
+<td>
+<A NAME="1098080">
+Defines matching rules used in a subschema.<P></A>
+
+<tr><td>
+<A NAME="1098074">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1242961">matchingRuleUse</a><P></A>
+<td>
+<A NAME="1098076">
+Identifies the attribute types to which a matching rule applies in a subschema.<P></A>
+
+<tr><td>
+<A NAME="1098070">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1282059">nameForms</a><P></A>
+<td>
+<A NAME="1098072">
+Defines the name forms used in a subschema.<P></A>
+
+<tr><td>
+<A NAME="1098066">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1242815">objectClasses</a><P></A>
+<td>
+<A NAME="1098068">
+Defines the object classes used in a subschema.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1097091"> 
+</A>
+<A NAME="Media Server Extensions">
+<H2> Media Server Extensions</H2>
+</A>
+
+<A NAME="1097095">
+This section describes the <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1097098">netscapeMediaServer</a> object class used by the Netscape Media Server.<P></A>
+
+
+<A NAME="1097098"> 
+</A>
+<A NAME="netscapeMediaServer">
+<H3> netscapeMediaServer</H3>
+</A>
+
+
+
+<A NAME="1097132">
+Object class used to store information about the Netscape Media Server in the directory. This object class is a Netscape extension to the standard LDAP schema. Reserved for future use.<P></A>
+
+<A NAME="1097133">
+OID: <code>2.16.840.1.113730.3.2.25</code><P></A>
+
+<A NAME="1108693">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1108683">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1108685">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1108690">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1229677">objectClass</a><P></A>
+<td>
+<A NAME="1108692">
+(Required) Reserved.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1097135"> 
+</A>
+<A NAME="Messaging Server Extensions">
+<H2> Messaging Server Extensions</H2>
+</A>
+
+<A NAME="1108700">
+The following object classes are used by the Netscape Messaging Server. The object classes described here include <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1108716">groupOfMailEnhancedUniqueNames</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1077922">mailRecipient</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1078007">mailGroup</a>,and <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1081545">netscapeMailServer</a>.<P></A>
+
+
+<A NAME="1108716"> 
+</A>
+<A NAME="groupOfMailEnhancedUniqueNames">
+<H3> groupOfMailEnhancedUniqueNames</H3>
+</A>
+
+
+
+<A NAME="1098817">
+Netscape extension used by the Messaging Server to store information about a mail group. This object class is a Netscape extension to the standard LDAP schema. Reserved for future use.<P></A>
+
+<A NAME="1098818">
+OID: <code>2.16.840.1.113730.3.2.5</code><P></A>
+
+<A NAME="1077920">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1077885">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1077887">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1077890">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171494">cn</a><P></A>
+<td>
+<A NAME="1077893">
+(Required) The group's common name.<P></A>
+
+<tr><td>
+<A NAME="1108721">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1229677">objectClass</a><P></A>
+<td>
+<A NAME="1108723">
+(Required) Reserved.<P></A>
+
+<tr><td>
+<A NAME="1077896">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171367">businessCategory</a><P></A>
+<td>
+<A NAME="1077898">
+Business in which the mail group is involved.<P></A>
+
+<tr><td>
+<A NAME="1077901">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171528">description</a><P></A>
+<td>
+<A NAME="1077903">
+Text description of the group.<P></A>
+
+<tr><td>
+<A NAME="1108728">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1026103">mailEnhancedUniqueMember</a><P></A>
+<td>
+<A NAME="1108730">
+Reserved for future use.<P></A>
+
+<tr><td>
+<A NAME="1077906">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1281611">o</a><P></A>
+<td>
+<A NAME="1077908">
+Organization to which the group belongs.<P></A>
+
+<tr><td>
+<A NAME="1108738">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1241174">ou</a><P></A>
+<td>
+<A NAME="1108740">
+Organizational unit to which the group belongs.<P></A>
+
+<tr><td>
+<A NAME="1077912">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1005719">owner</a><P></A>
+<td>
+<A NAME="1077914">
+The group's owner.<P></A>
+
+<tr><td>
+<A NAME="1077917">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1172500">seeAlso</a><P></A>
+<td>
+<A NAME="1077919">
+URL to information relevant to the group.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1077922"> 
+</A>
+<A NAME="mailRecipient">
+<H3> mailRecipient</H3>
+</A>
+
+
+
+<A NAME="1077923">
+Object class used as an enhancement to inetOrgPerson to define a Netscape Messaging Server user. That is, mailRecipient represents a mail account. This object class is a Netscape extension to the standard LDAP schema.<P></A>
+
+<A NAME="1097030">
+OID: <code>2.16.840.1.113730.3.2.3</code><P></A>
+
+<A NAME="1078005">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1087545">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1087547">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1087550">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171494">cn</a><P></A>
+<td>
+<A NAME="1087553">
+(Required) The user's common name.<P></A>
+
+<tr><td>
+<A NAME="1087556">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1189404">mail</a><P></A>
+<td>
+<A NAME="1087558">
+The user's electronic mailing address.<P></A>
+
+<tr><td>
+<A NAME="1087561">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1024020">mailAccessDomain</a><P></A>
+<td>
+<A NAME="1087563">
+Domain from which the mail user can login to obtain mail.<P></A>
+
+<tr><td>
+<A NAME="1103655">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1024250">mailAlternateAddress</a><P></A>
+<td>
+<A NAME="1087568">
+Alternate mail address for the user. More than one alternate address is acceptable.<P></A>
+
+<tr><td>
+<A NAME="1087571">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1024094">mailAutoReplyMode</a><P></A>
+<td>
+<A NAME="1087573">
+Auto reply mode set for the mail user.<P></A>
+
+<tr><td>
+<A NAME="1087576">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1024125">mailAutoReplyText</a><P></A>
+<td>
+<A NAME="1087578">
+Text sent when autoreplying to mail sent to the user.<P></A>
+
+<tr><td>
+<A NAME="1087581">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1024295">mailDeliveryOption</a><P></A>
+<td>
+<A NAME="1087583">
+Mail delivery mechanism to be used for the mail user.<P></A>
+
+<tr><td>
+<A NAME="1087586">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1026154">mailForwardingAddress</a><P></A>
+<td>
+<A NAME="1087588">
+Mail address to which the user's mail should be forwarded.<P></A>
+
+<tr><td>
+<A NAME="1087591">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1024314">mailHost</a><P></A>
+<td>
+<A NAME="1087593">
+Host on which the user's mail account resides.<P></A>
+
+<tr><td>
+<A NAME="1087596">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1024377">mailMessageStore</a><P></A>
+<td>
+<A NAME="1087598">
+Path to the directory containing the user's mail box.<P></A>
+
+<tr><td>
+<A NAME="1087601">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1024400">mailProgramDeliveryInfo</a><P></A>
+<td>
+<A NAME="1087603">
+Commands used for programmed mail delivery.<P></A>
+
+<tr><td>
+<A NAME="1087606">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1024509">mailQuota</a><P></A>
+<td>
+<A NAME="1087608">
+Maximum disk space allowed for the user's mail box.<P></A>
+
+<tr><td>
+<A NAME="1087611">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1229561">multiLineDescription</a><P></A>
+<td>
+<A NAME="1087613">
+Descriptive text about the mail user.<P></A>
+
+<tr><td>
+<A NAME="1087616">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1296804">uid</a><P></A>
+<td>
+<A NAME="1087618">
+Mail user's user ID.<P></A>
+
+<tr><td>
+<A NAME="1087621">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1196547">userPassword</a><P></A>
+<td>
+<A NAME="1087623">
+Password with which the mail user can bind to the directory.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1078007"> 
+</A>
+<A NAME="mailGroup">
+<H3> mailGroup</H3>
+</A>
+
+
+
+<A NAME="1078009">
+Object class used as an enhancement to <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1005294">groupOfUniqueNames</a> to define a group of mail recipients. That is, mailGroup is used to store Messaging Server mailing lists. This object class is a Netscape extension to the standard LDAP schema.<P></A>
+
+<A NAME="1097032">
+OID: <code>2.16.840.1.113730.3.2.4</code><P></A>
+
+<A NAME="1078087">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1078012">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1078014">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1078017">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1189404">mail</a><P></A>
+<td>
+<A NAME="1078020">
+(Required) The group's electronic mailing address.<P></A>
+
+<tr><td>
+<A NAME="1108751">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1229677">objectClass</a><P></A>
+<td>
+<A NAME="1108753">
+(Required) Reserved.<P></A>
+
+<tr><td>
+<A NAME="1078023">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171494">cn</a><P></A>
+<td>
+<A NAME="1078025">
+The group's common name.<P></A>
+
+<tr><td>
+<A NAME="1103727">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1024250">mailAlternateAddress</a><P></A>
+<td>
+<A NAME="1078030">
+Alternate mail address for the group.<P></A>
+
+<tr><td>
+<A NAME="1078033">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1024314">mailHost</a><P></A>
+<td>
+<A NAME="1078035">
+Host on which the group's mail account resides.<P></A>
+
+<tr><td>
+<A NAME="1078038">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1025144">mgrpAllowedBroadcaster</a><P></A>
+<td>
+<A NAME="1078040">
+URL identifying a mail user that is allowed to send mail to the mail group.<P></A>
+
+<tr><td>
+<A NAME="1078043">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1024569">mgrpAllowedDomain</a><P></A>
+<td>
+<A NAME="1078045">
+Domain from which users can send mail to the mail group.<P></A>
+
+<tr><td>
+<A NAME="1078048">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1278551">mgrpDeliverTo</a><P></A>
+<td>
+<A NAME="1078050">
+Alternative method of identifying members of the mail group.<P></A>
+
+<tr><td>
+<A NAME="1078053">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1025568">mgrpErrorsTo</a><P></A>
+<td>
+<A NAME="1078055">
+Mailing address to which mail delivery error messages are sent.<P></A>
+
+<tr><td>
+<A NAME="1078058">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1025705">mgrpModerator</a><P></A>
+<td>
+<A NAME="1078060">
+Mailing address to which rejected mail messages are sent.<P></A>
+
+<tr><td>
+<A NAME="1078063">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1025878">mgrpMsgMaxSize</a><P></A>
+<td>
+<A NAME="1078065">
+Maximum message size that can be sent to the mail group.<P></A>
+
+<tr><td>
+<A NAME="1078068">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1025035">mgrpMsgRejectAction</a><P></A>
+<td>
+<A NAME="1078070">
+Specifies the action to the taken in the event that mail sent to the mail group is rejected.<P></A>
+
+<tr><td>
+<A NAME="1078073">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1025981">mgrpMsgRejectText</a><P></A>
+<td>
+<A NAME="1078075">
+Text to be sent in the event that mail sent to the mail group is rejected.<P></A>
+
+<tr><td>
+<A NAME="1078078">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1024670">mgrpRFC822MailMember</a><P></A>
+<td>
+<A NAME="1078080">
+Recipient of mail that is sent to the mail group, but who is not in actuality a member of the mail group.<P></A>
+
+<tr><td>
+<A NAME="1078084">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1005719">owner</a><P></A>
+<td>
+<A NAME="1078086">
+Distinguished name of the mail group's owner.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1081545"> 
+</A>
+<A NAME="netscapeMailServer">
+<H3> netscapeMailServer</H3>
+</A>
+
+
+
+<A NAME="1081546">
+Object class used to store information about the Netscape Messaging Server in the directory. This object class is a Netscape extension to the standard LDAP schema. Reserved for future use.<P></A>
+
+<A NAME="1097044">
+OID: <code>2.16.840.1.113730.3.2.24</code><P></A>
+
+<A NAME="1108767">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1108757">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1108759">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1108764">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1229677">objectClass</a><P></A>
+<td>
+<A NAME="1108766">
+(Required) Reserved.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1086191"> 
+</A>
+<A NAME="Proxy Server Extensions">
+<H2> Proxy Server Extensions</H2>
+</A>
+
+<A NAME="1086195">
+This section describes the <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1081588">netscapeProxyServer</a> object class used by the Netscape Proxy Server.<P></A>
+
+
+<A NAME="1081588"> 
+</A>
+<A NAME="netscapeProxyServer">
+<H3> netscapeProxyServer</H3>
+</A>
+
+
+
+<A NAME="1081589">
+Object class used to store information about the Netscape Proxy Server in the directory. This object class is a Netscape extension to the standard LDAP schema. Reserved for future use.<P></A>
+
+<A NAME="1097160">
+OID: <code>2.16.840.1.113730.3.2.28</code><P></A>
+
+<A NAME="1108781">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1108771">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1108773">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1108778">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1229677">objectClass</a><P></A>
+<td>
+<A NAME="1108780">
+(Required) Reserved.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1081607"> 
+</A>
+<A NAME="Web Server Extensions">
+<H2> Web Server Extensions</H2>
+</A>
+
+<A NAME="1081611">
+This section describes the <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1081614">netscapeWebServer</a> object class used by Netscape's web servers.<P></A>
+
+
+<A NAME="1081614"> 
+</A>
+<A NAME="netscapeWebServer">
+<H3> netscapeWebServer</H3>
+</A>
+
+
+
+<A NAME="1081615">
+Object class used to store information about a Netscape web server in the directory. This object class is a Netscape extension to the standard LDAP schema. Reserved for future use.<P></A>
+
+<A NAME="1108796">
+OID: <code>2.16.840.1.113730.3.2.29</code><P></A>
+
+<A NAME="1108814">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1108804">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1108806">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1108811">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1229677">objectClass</a><P></A>
+<td>
+<A NAME="1108813">
+(Required) Reserved.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1108799"> 
+</A>
+<A NAME="Reserved Object Classes">
+<H2> Reserved Object Classes</H2>
+</A>
+
+<A NAME="1108800">
+This section describes object classes that are not defined for this release or are reserved for future use by the Netscape Directory Server.<P></A>
+
+
+<A NAME="1091117"> 
+</A>
+<A NAME="account">
+<H3> account</H3>
+</A>
+
+
+
+<A NAME="1091854">
+Reserved.<P></A>
+
+<A NAME="1098856">
+OID: <code>0.9.2342.19200300.100.4.5</code><P></A>
+
+<A NAME="1091903">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1091857">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1091859">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1091907">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1296804">uid</a><P></A>
+<td>
+<A NAME="1091909">
+(Required) The account's user ID.<P></A>
+
+<tr><td>
+<A NAME="1091874">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171528">description</a><P></A>
+<td>
+<A NAME="1091876">
+Text description of the account.<P></A>
+
+<tr><td>
+<A NAME="1091917">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1201958">host</a><P></A>
+<td>
+<A NAME="1091919">
+Hostname of the computer on which the account resides.<P></A>
+
+<tr><td>
+<A NAME="1091879">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1244534">l</a><P></A>
+<td>
+<A NAME="1091881">
+Locality in which the account resides.<P></A>
+
+<tr><td>
+<A NAME="1091884">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1281611">o</a><P></A>
+<td>
+<A NAME="1091886">
+Organization to which the account belongs.<P></A>
+
+<tr><td>
+<A NAME="1091890">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1241174">ou</a><P></A>
+<td>
+<A NAME="1091892">
+Organizational unit to which the account belongs.<P></A>
+
+<tr><td>
+<A NAME="1091895">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1172500">seeAlso</a><P></A>
+<td>
+<A NAME="1091897">
+URL to information relevant to the account.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1089961"> 
+</A>
+<A NAME="alias">
+<H3> alias</H3>
+</A>
+
+
+
+<A NAME="1089993">
+Object class used to point to other entries in the directory tree. This object class was inherited from X.500 Directory Services. Reserved.<P></A>
+
+<A NAME="1096898">
+OID: <code>2.5.6.1</code><P></A>
+
+<A NAME="1090031">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1089996">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1089998">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1090103">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1201653">aliasedObjectName</a><P></A>
+<td>
+<A NAME="1090004">
+(Required) Distinguished name of the entry for which this entry is an alias.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1091270"> 
+</A>
+<A NAME="applicationEntity">
+<H3> applicationEntity</H3>
+</A>
+
+
+
+<A NAME="1106068">
+Object class used to represent application entities in the directory. This object class was inherited from X.500 Directory Services. Reserved.<P></A>
+
+<A NAME="1096990">
+OID: <code>2.5.6.12</code><P></A>
+
+<A NAME="1091320">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1091274">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1091276">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1091279">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202620">presentationAddress</a><P></A>
+<td>
+<A NAME="1091282">
+(Required) OSI presentation address of the entity.<P></A>
+
+<tr><td>
+<A NAME="1091285">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171494">cn</a><P></A>
+<td>
+<A NAME="1091288">
+(Required) Common name of the entity.<P></A>
+
+<tr><td>
+<A NAME="1091291">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171528">description</a><P></A>
+<td>
+<A NAME="1091293">
+Text description of the entity.<P></A>
+
+<tr><td>
+<A NAME="1091296">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1244534">l</a><P></A>
+<td>
+<A NAME="1091298">
+Locality in which the entity resides.<P></A>
+
+<tr><td>
+<A NAME="1103836">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1281611">o</a><P></A>
+<td>
+<A NAME="1091303">
+Organization to which the entity belongs.<P></A>
+
+<tr><td>
+<A NAME="1103841">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1241174">ou</a><P></A>
+<td>
+<A NAME="1091309">
+Organizational unit to which the entity belongs.<P></A>
+
+<tr><td>
+<A NAME="1103846">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1172500">seeAlso</a><P></A>
+<td>
+<A NAME="1091314">
+URL to information relevant to the entity.<P></A>
+
+<tr><td>
+<A NAME="1091317">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202747">supportedApplicationContext</a><P></A>
+<td>
+<A NAME="1091319">
+Identifiers of OSI application contexts.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1090381"> 
+</A>
+<A NAME="applicationProcess">
+<H3> applicationProcess</H3>
+</A>
+
+
+
+<A NAME="1106091">
+Object class used to define entries representing application processes in the directory. This object class was inherited from X.500 Directory Services. Reserved.<P></A>
+
+<A NAME="1096988">
+OID: <code>2.5.6.11</code><P></A>
+
+<A NAME="1090515">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1090555">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1090557">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1103871">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171494">cn</a><P></A>
+<td>
+<A NAME="1090563">
+(Required) Common name of the process.<P></A>
+
+<tr><td>
+<A NAME="1103876">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171528">description</a><P></A>
+<td>
+<A NAME="1090574">
+Text description of the process.<P></A>
+
+<tr><td>
+<A NAME="1103866">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1244534">l</a><P></A>
+<td>
+<A NAME="1090599">
+Locality in which the process resides.<P></A>
+
+<tr><td>
+<A NAME="1103856">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1241174">ou</a><P></A>
+<td>
+<A NAME="1090585">
+Organizational unit to which the process belongs.<P></A>
+
+<tr><td>
+<A NAME="1103861">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1172500">seeAlso</a><P></A>
+<td>
+<A NAME="1090590">
+URL to information relevant to the process.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1091421"> 
+</A>
+<A NAME="cacheObject">
+<H3> cacheObject</H3>
+</A>
+
+
+
+<A NAME="1093594">
+Object class that allows an entry to contain the timeToLive (<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202798">ttl</a>) attribute.<P></A>
+
+<A NAME="1098472">
+OID: <code>1.3.6.1.4.1.250.3.18</code><P></A>
+
+<A NAME="1093607">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1093597">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1093599">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1093604">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202798">ttl</a><P></A>
+<td>
+<A NAME="1093606">
+Time, in seconds, that cached information about an entry should be considered valid.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1091225"> 
+</A>
+<A NAME="certificationAuthority">
+<H3> certificationAuthority</H3>
+</A>
+
+
+
+<A NAME="1091226">
+Object class used to store information about Certificate Authorities (CAs) in the directory. This object class was inherited from X.500 Directory Services. Reserved.<P></A>
+
+<A NAME="1097006">
+OID: <code>2.5.6.16</code><P></A>
+
+<A NAME="1091261">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1091229">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1091231">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1091236">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1208584">cACertificate;binary</a><P></A>
+<td>
+<A NAME="1091239">
+(Required) Certificate, in binary form, from a certification authority.<P></A>
+
+<tr><td>
+<A NAME="1091243">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1207178">authorityRevocationList;binary</a><P></A>
+<td>
+<A NAME="1091246">
+List, in binary form, of CA certificates that have been revoked and are no longer considered valid or secure.<P></A>
+
+<tr><td>
+<A NAME="1091250">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1208727">certificateRevocationList;binary</a><P></A>
+<td>
+<A NAME="1091253">
+List, in binary form, of user certificates that have been revoked.<P></A>
+
+<tr><td>
+<A NAME="1091258">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1208791">crossCertificatePair;binary</a><P></A>
+<td>
+<A NAME="1091260">
+Reserved for future use.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1097268"> 
+</A>
+<A NAME="dcObject">
+<H3> dcObject</H3>
+</A>
+
+
+
+<A NAME="1097806">
+Object class that allows domain components to be defined for an entry. This object class is defined as auxiliary because it is commonly used in combination with another object class, such as <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1004980">organization</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1005108">organizationalUnit</a>, or <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/objclass.htm#1005427">locality</a>. For example,<P></A>
+<PRE><A NAME="1097855">
+dn: dc=example,dc=com<br>objectClass: top<br>objectClass: organization<br>objectClass: dcObject<br>dc: example<br>o: Example Corp.
+</A>
+</PRE>
+<A NAME="1097270">
+OID: <code>1.3.6.1.4.1.1466.344</code><P></A>
+
+<A NAME="1097318">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1097273">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1097275">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1097278">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1245094">dc</a><P></A>
+<td>
+<A NAME="1097281">
+(Required) Domain component of the entry.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1090760"> 
+</A>
+<A NAME="device">
+<H3> device</H3>
+</A>
+
+
+
+<A NAME="1090817">
+Object class used to store information about network devices, such as printers, in the directory. This object class was inherited from X.500 Directory Services. Reserved.<P></A>
+
+<A NAME="1096996">
+OID: <code>2.5.6.14</code><P></A>
+
+<A NAME="1090828">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1103908">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1103910">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1103915">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171494">cn</a><P></A>
+<td>
+<A NAME="1103917">
+(Required) Common name of the device.<P></A>
+
+<tr><td>
+<A NAME="1103922">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171528">description</a><P></A>
+<td>
+<A NAME="1103924">
+Text description of the device.<P></A>
+
+<tr><td>
+<A NAME="1103960">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1244534">l</a><P></A>
+<td>
+<A NAME="1103929">
+Locality in which the device resides.<P></A>
+
+<tr><td>
+<A NAME="1103965">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1281611">o</a><P></A>
+<td>
+<A NAME="1103934">
+Organization to which the device belongs.<P></A>
+
+<tr><td>
+<A NAME="1103970">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1241174">ou</a><P></A>
+<td>
+<A NAME="1103940">
+Organizational unit to which the device belongs.<P></A>
+
+<tr><td>
+<A NAME="1103943">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1005719">owner</a><P></A>
+<td>
+<A NAME="1103945">
+Distinguished name of the person responsible for the device.<P></A>
+
+<tr><td>
+<A NAME="1103948">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1172500">seeAlso</a><P></A>
+<td>
+<A NAME="1103950">
+URL to information relevant to the device.<P></A>
+
+<tr><td>
+<A NAME="1103953">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202700">serialNumber</a><P></A>
+<td>
+<A NAME="1103955">
+Serial number of the device.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1091390"> 
+</A>
+<A NAME="DNSDomain">
+<H3> DNSDomain</H3>
+</A>
+
+
+
+<A NAME="1093025">
+Object class used as a subclass of domain to store DNS resource records in the directory. Reserved.<P></A>
+
+<A NAME="1096887">
+OID: <code>0.9.2342.19200300.100.4.15</code><P></A>
+
+<A NAME="1093023">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1093008">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1093010">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1093013">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1201841">dNSRecord</a><P></A>
+<td>
+<A NAME="1093015">
+DNS resource records.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1091348"> 
+</A>
+<A NAME="document">
+<H3> document</H3>
+</A>
+
+
+
+<A NAME="1092549">
+Used to define entries which represent documents in the directory. Reserved.<P></A>
+
+<A NAME="1096874">
+OID: <code>0.9.2342.19200300.100.4.6</code><P></A>
+
+<A NAME="1091981">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1092165">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1092167">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1092172">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1201854">documentIdentifier</a><P></A>
+<td>
+<A NAME="1092175">
+(Required) Unique identifier for a document.<P></A>
+
+<tr><td>
+<A NAME="1092180">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1255098">abstract</a><P></A>
+<td>
+<A NAME="1092182">
+Abstract of the document.<P></A>
+
+<tr><td>
+<A NAME="1092187">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1201689">authorCn</a><P></A>
+<td>
+<A NAME="1092189">
+Author's common, or given, name.<P></A>
+
+<tr><td>
+<A NAME="1092194">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1201696">authorSn</a><P></A>
+<td>
+<A NAME="1092196">
+The author's surname.<P></A>
+
+<tr><td>
+<A NAME="1092201">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171494">cn</a><P></A>
+<td>
+<A NAME="1092203">
+Common name of the document.<P></A>
+
+<tr><td>
+<A NAME="1092206">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171528">description</a><P></A>
+<td>
+<A NAME="1092208">
+Text description of the description.<P></A>
+
+<tr><td>
+<A NAME="1092213">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1201847">documentAuthor</a><P></A>
+<td>
+<A NAME="1092215">
+Distinguished name of the document author.<P></A>
+
+<tr><td>
+<A NAME="1092220">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1201861">documentLocation</a><P></A>
+<td>
+<A NAME="1092222">
+Location of the original document.<P></A>
+
+<tr><td>
+<A NAME="1092227">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1201868">documentPublisher</a><P></A>
+<td>
+<A NAME="1092229">
+Person or organization that published the document.<P></A>
+
+<tr><td>
+<A NAME="1092234">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1201877">documentStore</a><P></A>
+<td>
+<A NAME="1092236">
+Not defined.<P></A>
+
+<tr><td>
+<A NAME="1092241">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1201884">documentTitle</a><P></A>
+<td>
+<A NAME="1092243">
+The document's title.<P></A>
+
+<tr><td>
+<A NAME="1092248">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1201891">documentVersion</a><P></A>
+<td>
+<A NAME="1092250">
+The document's version number.<P></A>
+
+<tr><td>
+<A NAME="1092255">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202004">keyWords</a><P></A>
+<td>
+<A NAME="1092257">
+Keywords that describe the document.<P></A>
+
+<tr><td>
+<A NAME="1103998">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1244534">l</a><P></A>
+<td>
+<A NAME="1092262">
+Locality in which the document resides.<P></A>
+
+<tr><td>
+<A NAME="1104003">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1281611">o</a><P></A>
+<td>
+<A NAME="1092267">
+Organization to which the document belongs.<P></A>
+
+<tr><td>
+<A NAME="1092272">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202192">obsoletedByDocument</a><P></A>
+<td>
+<A NAME="1092274">
+Distinguished name of a document that obsoletes this document.<P></A>
+
+<tr><td>
+<A NAME="1092279">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202199">obsoletesDocument</a><P></A>
+<td>
+<A NAME="1092281">
+Distinguished name of a document that is obsoleted by this document.<P></A>
+
+<tr><td>
+<A NAME="1104008">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1241174">ou</a><P></A>
+<td>
+<A NAME="1092299">
+Organizational unit to which the document belongs.<P></A>
+
+<tr><td>
+<A NAME="1104013">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1172500">seeAlso</a><P></A>
+<td>
+<A NAME="1092293">
+URL to information relevant to the document.<P></A>
+
+<tr><td>
+<A NAME="1092306">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202732">subject</a><P></A>
+<td>
+<A NAME="1092308">
+Subject of the document.<P></A>
+
+<tr><td>
+<A NAME="1092330">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202817">updatedByDocument</a><P></A>
+<td>
+<A NAME="1092334">
+Distinguished name of a document that is an updated version of this document.<P></A>
+
+<tr><td>
+<A NAME="1092323">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202824">updatesDocument</a><P></A>
+<td>
+<A NAME="1092340">
+Distinguished name of a document for which this document is an updated version.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1091354"> 
+</A>
+<A NAME="documentSeries">
+<H3> documentSeries</H3>
+</A>
+
+
+
+<A NAME="1092560">
+Used to define an entry that represents a series of documents. Reserved.<P></A>
+
+<A NAME="1096876">
+OID: <code>0.9.2342.19200300.100.4.9</code><P></A>
+
+<A NAME="1092547">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1092502">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1092504">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1092507">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171494">cn</a><P></A>
+<td>
+<A NAME="1092579">
+(Required) The common name of the series.<P></A>
+
+<tr><td>
+<A NAME="1104028">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171528">description</a><P></A>
+<td>
+<A NAME="1092515">
+Text description of the series.<P></A>
+
+<tr><td>
+<A NAME="1104033">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1244534">l</a><P></A>
+<td>
+<A NAME="1092520">
+Locality in which the series resides.<P></A>
+
+<tr><td>
+<A NAME="1104038">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1281611">o</a><P></A>
+<td>
+<A NAME="1092525">
+Organization to which the series belongs.<P></A>
+
+<tr><td>
+<A NAME="1104043">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1241174">ou</a><P></A>
+<td>
+<A NAME="1092531">
+Organizational unit to which the series belongs.<P></A>
+
+<tr><td>
+<A NAME="1104048">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1172500">seeAlso</a><P></A>
+<td>
+<A NAME="1092541">
+URL to information relevant to the series.<P></A>
+
+<tr><td>
+<A NAME="1092600">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1230129">telephoneNumber</a><P></A>
+<td>
+<A NAME="1092602">
+Telephone number of the person responsible for the series.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1091357"> 
+</A>
+<A NAME="domain">
+<H3> domain</H3>
+</A>
+
+
+
+<A NAME="1097945">
+Object class used to define entries that represent DNS domains in the directory. The domainComponent attribute should be used for naming entries of this object class. Reserved.<P></A>
+
+<A NAME="1096879">
+OID: <code>0.9.2342.19200300.100.4.13</code><P></A>
+
+<A NAME="1092674">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1092632">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1092634">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1092639">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1245094">dc</a><P></A>
+<td>
+<A NAME="1092642">
+(Required) One component of a domain name.<P></A>
+
+<tr><td>
+<A NAME="1092701">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1201675">associatedName</a><P></A>
+<td>
+<A NAME="1092708">
+Entry in the organizational directory tree associated with a DNS domain.<P></A>
+
+<tr><td>
+<A NAME="1092721">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171367">businessCategory</a><P></A>
+<td>
+<A NAME="1092723">
+Type of business this domain is engaged in.<P></A>
+
+<tr><td>
+<A NAME="1092645">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171528">description</a><P></A>
+<td>
+<A NAME="1092647">
+Text description of the domain.<P></A>
+
+<tr><td>
+<A NAME="1092735">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1292809">destinationIndicator</a><P></A>
+<td>
+<A NAME="1092737">
+This attribute is used for telegram services to this domain.<P></A>
+
+<tr><td>
+<A NAME="1092741">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171637">facsimileTelephoneNumber</a><P></A>
+<td>
+<A NAME="1092744">
+Fax number associated with the domain.<P></A>
+
+<tr><td>
+<A NAME="1092749">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1224256">internationalIsdnNumber</a><P></A>
+<td>
+<A NAME="1092751">
+ISDN number associated with the domain.<P></A>
+
+<tr><td>
+<A NAME="1092650">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1244534">l</a><P></A>
+<td>
+<A NAME="1092652">
+Locality in which the domain resides.<P></A>
+
+<tr><td>
+<A NAME="1092778">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1007859">manager</a><P></A>
+<td>
+<A NAME="1092780">
+Distinguished name of a manager associated with the domain.<P></A>
+
+<tr><td>
+<A NAME="1092655">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1281611">o</a><P></A>
+<td>
+<A NAME="1092657">
+Organization to which the domain belongs.<P></A>
+
+<tr><td>
+<A NAME="1092789">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1003072">physicalDeliveryOfficeName</a><P></A>
+<td>
+<A NAME="1092791">
+Location where physical deliveries can be made.<P></A>
+
+<tr><td>
+<A NAME="1092794">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1230025">postalAddress</a><P></A>
+<td>
+<A NAME="1092796">
+Mailing address associated with the domain.<P></A>
+
+<tr><td>
+<A NAME="1092799">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1230036">postalCode</a><P></A>
+<td>
+<A NAME="1092801">
+Domain's postal code (such as a United States zip code).<P></A>
+
+<tr><td>
+<A NAME="1092804">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1230043">postOfficeBox</a><P></A>
+<td>
+<A NAME="1092806">
+Domain's post office box.<P></A>
+
+<tr><td>
+<A NAME="1092809">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202605">preferredDeliveryMethod</a><P></A>
+<td>
+<A NAME="1092811">
+Domain's preferred method of contact or delivery.<P></A>
+
+<tr><td>
+<A NAME="1092824">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202644">registeredAddress</a><P></A>
+<td>
+<A NAME="1092826">
+Postal address suitable for reception of expedited documents, where the recipient must verify delivery.<P></A>
+
+<tr><td>
+<A NAME="1092857">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202682">searchGuide</a><P></A>
+<td>
+<A NAME="1092859">
+Specifies information for suggested search criteria when using the entry as the base object in the directory tree for a search operation.<P></A>
+
+<tr><td>
+<A NAME="1092871">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1172500">seeAlso</a><P></A>
+<td>
+<A NAME="1092873">
+URL to information relevant to the domain.<P></A>
+
+<tr><td>
+<A NAME="1092829">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1203417">st</a><P></A>
+<td>
+<A NAME="1092831">
+State or province in which the domain resides.<P></A>
+
+<tr><td>
+<A NAME="1092834">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202721">street</a><P></A>
+<td>
+<A NAME="1092836">
+Street address associated with the domain.<P></A>
+
+<tr><td>
+<A NAME="1092882">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1230129">telephoneNumber</a><P></A>
+<td>
+<A NAME="1092884">
+Telephone number associated with the domain.<P></A>
+
+<tr><td>
+<A NAME="1092839">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1205004">teletexTerminalIdentifier</a><P></A>
+<td>
+<A NAME="1092841">
+Identifier for a teletex terminal associated with the domain.<P></A>
+
+<tr><td>
+<A NAME="1092844">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1205120">telexNumber</a><P></A>
+<td>
+<A NAME="1092846">
+Telex number associated with the domain.<P></A>
+
+<tr><td>
+<A NAME="1092909">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1196547">userPassword</a><P></A>
+<td>
+<A NAME="1092911">
+Reserved for future use.<P></A>
+
+<tr><td>
+<A NAME="1092851">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1281763">x121Address</a><P></A>
+<td>
+<A NAME="1092853">
+X.121 address associated with the domain.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1091384"> 
+</A>
+<A NAME="domainRelatedObject">
+<H3> domainRelatedObject</H3>
+</A>
+
+
+
+<A NAME="1093633">
+Object class used to define entries that represent a DNS domain that is equivalent to an X.500 domain, usually an organization or organizational unit. Reserved.<P></A>
+
+<A NAME="1098880">
+OID: <code>0.9.2342.19200300.100.4.17</code><P></A>
+
+<A NAME="1097753">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1097743">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1097745">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1097750">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1201668">associatedDomain</a><P></A>
+<td>
+<A NAME="1097752">
+DNS domain associated with an object in the directory tree.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1097756"> 
+</A>
+<A NAME="dSA">
+<H3> dSA</H3>
+</A>
+
+
+
+<A NAME="1097757">
+Object class used to define entries representing DSAs in the directory. This object class was inherited from X.500 Directory Services. Reserved.<P></A>
+
+<A NAME="1096993">
+OID: <code>2.5.6.13</code><P></A>
+
+<A NAME="1091405">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1091397">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1091399">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1091402">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202013">knowledgeInformation</a><P></A>
+<td>
+<A NAME="1091404">
+This attribute is no longer used.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1091415"> 
+</A>
+<A NAME="friendlyCountry">
+<H3> friendlyCountry</H3>
+</A>
+
+
+
+<A NAME="1093062">
+Object class used to define country entries in the directory tree. This object class is used to allow more user-friendly country names than those allowed by the country object class. Reserved.<P></A>
+
+<A NAME="1098883">
+OID: <code>0.9.2342.19200300.100.4.18</code><P></A>
+
+<A NAME="1093060">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1093050">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1093052">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1093057">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1265915">co</a><P></A>
+<td>
+<A NAME="1093059">
+Contains the name of a country.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1091443"> 
+</A>
+<A NAME="labeledURIObject">
+<H3> labeledURIObject</H3>
+</A>
+
+
+
+<A NAME="1096833">
+This object class can be added to existing directory objects to allow for inclusion of URI values. This approach does not preclude including the labeledURI attribute type directly in other object classes as appropriate. Reserved.<P></A>
+
+<A NAME="1096829">
+OID: <code>1.3.6.1.4.1.250.3.15</code><P></A>
+
+<A NAME="1093588">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1093578">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1093580">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1093585">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202020">labeledUri</a><P></A>
+<td>
+<A NAME="1093587">
+A Uniform Resource Identifier (URI) that is relevant to the entry.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1091410"> 
+</A>
+<A NAME="pilotObject">
+<H3> pilotObject</H3>
+</A>
+
+
+
+<A NAME="1091508">
+Object class used as a subclass to allow additional attributes to be assigned to entries of all other object classes. Reserved.<P></A>
+
+<A NAME="1096860">
+OID: <code>0.9.2342.19200300.100.4.3</code><P></A>
+
+<A NAME="1091544">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1091536">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1091538">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1091541">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1201684">audio</a><P></A>
+<td>
+<A NAME="1091543">
+Sound file.<P></A>
+
+<tr><td>
+<A NAME="1091579">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1201831">ditRedirect</a><P></A>
+<td>
+<A NAME="1091581">
+Distinguished name to use as a redirect for the entry.<P></A>
+
+<tr><td>
+<A NAME="1091575">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1201965">info</a><P></A>
+<td>
+<A NAME="1091577">
+Information about the object.<P></A>
+
+<tr><td>
+<A NAME="1091571">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1201995">jpegPhoto</a><P></A>
+<td>
+<A NAME="1091573">
+Photo in jpeg format.<P></A>
+
+<tr><td>
+<A NAME="1091567">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1100733">lastModifiedBy</a><P></A>
+<td>
+<A NAME="1091569">
+Distinguished name of the last user to modify the object.<P></A>
+
+<tr><td>
+<A NAME="1091563">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202035">lastModifiedTime</a><P></A>
+<td>
+<A NAME="1091565">
+Last time the object was modified.<P></A>
+
+<tr><td>
+<A NAME="1091559">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1007859">manager</a><P></A>
+<td>
+<A NAME="1091561">
+Distinguished name of the object's manager.<P></A>
+
+<tr><td>
+<A NAME="1091555">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202247">photo</a><P></A>
+<td>
+<A NAME="1091557">
+Photo of the object.<P></A>
+
+<tr><td>
+<A NAME="1091551">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202809">uniqueIdentifier</a><P></A>
+<td>
+<A NAME="1091553">
+Specific item used to distinguish between two entries when a distinguished name has been reused.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1091437"> 
+</A>
+<A NAME="pilotOrganization">
+<H3> pilotOrganization</H3>
+</A>
+
+
+
+<A NAME="1093224">
+Object class used as a subclass to allow additional attributes to be assigned to organization and organizationalUnit object class entries. Reserved.<P></A>
+
+<A NAME="1096890">
+OID: <code>0.9.2342.19200300.100.4.20</code><P></A>
+
+<A NAME="1093387">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1093251">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1093253">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1093394">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1281611">o</a><P></A>
+<td>
+<A NAME="1093396">
+(Required) Organization to which the entry belongs.<P></A>
+
+<tr><td>
+<A NAME="1093400">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1241174">ou</a><P></A>
+<td>
+<A NAME="1093402">
+(Required) Organizational unit to which the entry belongs.<P></A>
+
+<tr><td>
+<A NAME="1093418">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1201711">buildingName</a><P></A>
+<td>
+<A NAME="1093420">
+Name of the building in which the entry resides.<P></A>
+
+<tr><td>
+<A NAME="1093258">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171367">businessCategory</a><P></A>
+<td>
+<A NAME="1093260">
+Type of business this entry is engaged in.<P></A>
+
+<tr><td>
+<A NAME="1093265">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171528">description</a><P></A>
+<td>
+<A NAME="1093267">
+Text description of the entry.<P></A>
+
+<tr><td>
+<A NAME="1093433">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1292809">destinationIndicator</a><P></A>
+<td>
+<A NAME="1093435">
+This attribute is used for telegram services to this entry.<P></A>
+
+<tr><td>
+<A NAME="1093439">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171637">facsimileTelephoneNumber</a><P></A>
+<td>
+<A NAME="1093442">
+Fax number associated with the entry.<P></A>
+
+<tr><td>
+<A NAME="1093447">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1224256">internationalIsdnNumber</a><P></A>
+<td>
+<A NAME="1093449">
+ISDN number associated with the entry.<P></A>
+
+<tr><td>
+<A NAME="1093452">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1244534">l</a><P></A>
+<td>
+<A NAME="1093454">
+Locality in which the entry resides.<P></A>
+
+<tr><td>
+<A NAME="1093516">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1003072">physicalDeliveryOfficeName</a><P></A>
+<td>
+<A NAME="1093518">
+Location where physical deliveries can be made to this entry.<P></A>
+
+<tr><td>
+<A NAME="1104165">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1230025">postalAddress</a><P></A>
+<td>
+<A NAME="1093513">
+Business mailing address for the entry.<P></A>
+
+<tr><td>
+<A NAME="1104170">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1230036">postalCode</a><P></A>
+<td>
+<A NAME="1093508">
+Business postal code (such as a United States zip code) for the entry.<P></A>
+
+<tr><td>
+<A NAME="1104175">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1230043">postOfficeBox</a><P></A>
+<td>
+<A NAME="1093503">
+Business post office box for the entry.<P></A>
+
+<tr><td>
+<A NAME="1104180">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202605">preferredDeliveryMethod</a><P></A>
+<td>
+<A NAME="1093498">
+Preferred method of contact or delivery of the entry.<P></A>
+
+<tr><td>
+<A NAME="1104185">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202644">registeredAddress</a><P></A>
+<td>
+<A NAME="1106134">
+Postal address suitable for reception of expedited documents, where the recipient must verify delivery.<P></A>
+
+<tr><td>
+<A NAME="1104190">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202682">searchGuide</a><P></A>
+<td>
+<A NAME="1093532">
+Specifies information for suggested search criteria when using the entry as the base object in the directory tree for a search operation.<P></A>
+
+<tr><td>
+<A NAME="1104195">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1172500">seeAlso</a><P></A>
+<td>
+<A NAME="1093544">
+URL to information relevant to the entry.<P></A>
+
+<tr><td>
+<A NAME="1104200">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1203417">st</a><P></A>
+<td>
+<A NAME="1093488">
+State or province in which the entry resides.<P></A>
+
+<tr><td>
+<A NAME="1104205">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1202721">street</a><P></A>
+<td>
+<A NAME="1093483">
+Street address at which the entry is located.<P></A>
+
+<tr><td>
+<A NAME="1104210">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1230129">telephoneNumber</a><P></A>
+<td>
+<A NAME="1093557">
+Telephone number associated with the entry.<P></A>
+
+<tr><td>
+<A NAME="1104215">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1205004">teletexTerminalIdentifier</a><P></A>
+<td>
+<A NAME="1093478">
+Identifier for the teletex terminal of the entry.<P></A>
+
+<tr><td>
+<A NAME="1104220">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1205120">telexNumber</a><P></A>
+<td>
+<A NAME="1093473">
+Telex number of the entry.<P></A>
+
+<tr><td>
+<A NAME="1104225">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1196547">userPassword</a><P></A>
+<td>
+<A NAME="1093572">
+The entry's password and encryption method.<P></A>
+
+<tr><td>
+<A NAME="1104230">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1281763">x121Address</a><P></A>
+<td>
+<A NAME="1093468">
+X.121 address of the entry.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1091375"> 
+</A>
+<A NAME="RFC822LocalPart">
+<H3> RFC822LocalPart</H3>
+</A>
+
+
+
+<A NAME="1092973">
+Object class used to define entries that represent the local part of RFC822 mail addresses. The directory treats this part of an RFC822 address as a domain. Reserved.<P></A>
+
+<A NAME="1096884">
+OID: <code>0.9.2342.19200300.100.4.14</code><P></A>
+
+<A NAME="1092966">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1092920">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1092922">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1092931">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171494">cn</a><P></A>
+<td>
+<A NAME="1092934">
+Common, or given name of the entry.<P></A>
+
+<tr><td>
+<A NAME="1092963">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1290325">sn</a><P></A>
+<td>
+<A NAME="1092965">
+Surname of the entry.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1091363"> 
+</A>
+<A NAME="room">
+<H3> room</H3>
+</A>
+
+
+
+<A NAME="1092427">
+Object class used to store information about a room in the directory. Reserved.<P></A>
+
+<A NAME="1098891">
+OID: <code>0.9.2342.19200300.100.4.7</code><P></A>
+
+<A NAME="1098892">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1092361">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1092363">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1092443">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171494">cn</a><P></A>
+<td>
+<A NAME="1092446">
+(Required) Common name of the room.<P></A>
+
+<tr><td>
+<A NAME="1092449">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171528">description</a><P></A>
+<td>
+<A NAME="1092451">
+Text description of the room.<P></A>
+
+<tr><td>
+<A NAME="1092468">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1204477">roomNumber</a><P></A>
+<td>
+<A NAME="1092470">
+The room's number.<P></A>
+
+<tr><td>
+<A NAME="1092477">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1172500">seeAlso</a><P></A>
+<td>
+<A NAME="1092479">
+URL to information relevant to the room.<P></A>
+
+<tr><td>
+<A NAME="1092491">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1230129">telephoneNumber</a><P></A>
+<td>
+<A NAME="1092493">
+The room's telephone number.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1091431"> 
+</A>
+<A NAME="simpleSecurityObject">
+<H3> simpleSecurityObject</H3>
+</A>
+
+
+
+<A NAME="1093131">
+Object class used to allow an entry to contain the userPassword attribute when an entry's principal object classes do not allow userPassword as an attribute type. Reserved.<P></A>
+
+<A NAME="1093125">
+OID: <code>0.9.2342.19200300.100.4.19</code><P></A>
+
+<A NAME="1098903">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1093106">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1093108">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1093113">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1196547">userPassword</a><P></A>
+<td>
+<A NAME="1093116">
+(Required) The entry's password and encryption method.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1089871"> 
+</A>
+<A NAME="strongAuthenticationUser">
+<H3> strongAuthenticationUser</H3>
+</A>
+
+
+
+<A NAME="1090921">
+Object class used to store information about clients and certificates in the directory. This object class was inherited from X.500 Directory Services. Reserved.<P></A>
+
+<A NAME="1106458">
+OID: <code>2.5.6.15</code><P></A>
+
+<A NAME="1106478">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1106461">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1106463">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1106468">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1208938">userCertificate</a><P></A>
+<td>
+<A NAME="1106470">
+Not used.<P></A>
+
+<tr><td>
+<A NAME="1106475">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1278425">userCertificate;binary</a><P></A>
+<td>
+<A NAME="1106477">
+(Required) User's certificate in binary form.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+
+<A NAME="1106481"> 
+</A>
+<A NAME="top">
+<H3> top</H3>
+</A>
+
+
+
+<A NAME="1106482">
+Object class used as a superclass for all other object classes in the directory. This object class was inherited from X.500 Directory Services. Reserved.<P></A>
+
+<A NAME="1106020">
+OID: <code>2.5.6.0</code><P></A>
+
+<A NAME="1106503">
+
+<TABLE BORDER="1" cellpadding="1">
+<CAPTION></caption>
+<tr><th valign=baseline align=left><b>
+<A NAME="1106486">
+<B>Attribute</B><P></A>
+<B><th valign=baseline align=left><b>
+<A NAME="1106488">
+<B>Attribute Description</B><P></A>
+<B></tr>
+<tr><td>
+<A NAME="1106493">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1229677">objectClass</a><P></A>
+<td>
+<A NAME="1106495">
+(Required) Mandatory attribute for all object classes.<P></A>
+
+<tr><td>
+<A NAME="1106500">
+<a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#1171292">aci</a><P></A>
+<td>
+<A NAME="1106502">
+Stores the Directory Server access control information for this entry.<P></A>
+
+
+</TABLE>
+
+<TABLE>
+<tr><td>
+</TABLE>
+<P></A>
+
+<A NAME="1106011">
+<P></A>
diff --git a/ldap/clients/dsgw/html/manual/search.htm b/ldap/clients/dsgw/html/manual/search.htm
new file mode 100644
index 00000000..95665f0f
--- /dev/null
+++ b/ldap/clients/dsgw/html/manual/search.htm
@@ -0,0 +1,651 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Portions copyright 1999, 2002-2003 Netscape Communications Corporation.
+ All rights reserved.
+ -->
+<html>
+<head>
+<title>Searching the Directory Tree</title>
+</head>
+
+<body>
+
+<h1><a name="search"></a>Searching the Directory Tree</h1>
+
+<p>The Directory Server
+contains information about the people and resources in
+your organization. Using the Directory Server interface, you can
+easily find the information you need. To simplify the search
+process, the Directory Server interface provides two types of
+searches:</p>
+
+<ul>
+ <li><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#standard">Standard Search</a> -- Selects an
+ appropriate method of searching based on the value you
+ specify. For example, if you search for moz@example.com,
+ Standard Search searches for matching email
+ addresses. </li>
+<P>
+ <li><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#advanced">Advanced Search</a> -- Provides a
+ simple method for searching against specific entry
+ attributes. For example, you can specify that you want to
+ search for users whose last names start with <b>k</b> and
+ whose phone numbers end with <b>2110</b>. </li>
+</ul>
+
+<p>Both types of searches allow you select the type of entry to
+search for. You can search for any of the following types of
+entries:</p>
+
+<table border="2">
+ <tr>
+ <th><a name="type"></a><b>Type of Entry</b></th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td valign="top">People</td>
+ <td valign="top">Entries that describe a person. </td>
+ </tr>
+ <tr>
+ <td valign="top">NT people</td>
+ <td valign="top">Entries that describe an NT user.</td>
+ </tr>
+ <tr>
+ <td valign="top">Groups<b> </b></td>
+ <td valign="top">Entries that describe a group. Groups
+ are collections of one or more directory
+ entries. For example, groups may be defined at your site
+ that include the System Administrators, the Technical
+ Writers, or all the people interested in fishing. Note
+ that a group does not always have to identify a
+ collection of people. For example, a group could be
+ defined that identifies all the color printers or fax machines
+ at your site. Groups can also contain other groups. </td>
+ </tr>
+ <tr>
+ <td>NT Groups</td>
+ <td>Entries that describe a group of NT users.</td>
+ </tr>
+ <tr>
+ <td valign="top">Organizations</td>
+ <td valign="top">Entries that describe an organization.
+ An organization is usually a single, very
+ large organization such as a corporation or a university.
+ An organization differs from a group in that a
+ group is typically an arbitrary collection of people or
+ devices that is subject to change as entities are added
+ to or removed from the directory. Organizations, however,
+ represent a major, relatively static, subdivision or
+ branching of the directory. Additions and
+ subtractions of entities within the directory do not usually
+ affect organization entries.</td>
+ </tr>
+ <tr>
+ <td valign="top">Domain Components</td>
+ <td valign="top">Entries that describe your domain.
+ The Domain Component represents your directory suffix by
+ breaking your domain name into its component parts. In a
+ single enterprise environment, a directory suffix typically
+ aligns with a DNS name or Internet domain name of your
+ enterprise. For example, if your enterprise owns the domain
+ name of example.com, then your directory suffix would be of
+ the form dc=example,dc=com.
+ </tr>
+ <tr>
+ <td valign="top">Org-Units</td>
+ <td valign="top">Entries that describe an organizational
+ unit. Organizational units usually identify major
+ subdivisions within a larger organization. In contrast to
+ entries from a single, very large organization such as a
+ corporation or university, organizational units describe
+ smaller organizations such as accounting, marketing, the
+ humanities, or Biology. </td>
+ </tr>
+ <tr>
+ <td valign="top">Anything </td>
+ <td valign="top">Any type of entry within the directory
+ that matches the search criteria. Use Anything
+ if you are unsure of how the directory manager
+ represented an entry within the directory. Anything is
+ also useful if the type of entry for which you are
+ searching is not a person, group, or organization.</td>
+ </tr>
+</table>
+
+<p>After the Directory Server completes the search, the Directory
+Server interface displays the <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#results">search results</a>,
+which provide links to all matching entries. When you click an
+entry displayed on the search results list, the Directory Server
+displays detailed information about the entry. If the entry is a
+person, you can also choose to <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#vCard">view the person's
+digital business card</a>, or vCard. Using the vCard, you can
+add the person to your Communicator address book with a
+click of a button.</p>
+
+<h2><a name="standard"></a>Standard Search</h2>
+
+<p>Standard search performs different types of searches according to the
+nature of the data that you specify. Depending on what
+you type in the search field, Standard Search attempts to find
+matching <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#Name">names</a>, <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#phone">telephone
+numbers</a>, or <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#email">email addresses</a>. </p>
+
+<p>Depending on what you enter, Standard Search
+determines whether to find entries that exactly match your
+criteria, entries that contain your criteria, or entries that
+contain words or syllables that sound like your criteria. You can also use
+an LDAP (Lightweight Directory Access Protocol) <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#filter">search filter</a>
+in the Standard Search field.</p>
+
+<h3><a name="Performing a Standard Search"></a>Performing a
+Standard Search</h3>
+
+<ol>
+ <li>Click the Standard Search tab.</li>
+ <li>Select the <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#type">type of entry</a> you want to
+ search for from the Find drop-down list.</li>
+ <li>Enter the value you want to find in the "Search
+ for" field. The "Search for" field
+ is not case sensitive. You can enter any of the following:
+ <ul type="disc">
+ <li>A <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#Name">name</a> or part of a name </li>
+ <li>A person's <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#initials">initials</a> </li>
+ <li>Some or all of a <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#phone">phone number</a>
+ </li>
+ <li>Some or all of an <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#email">email
+ address</a> </li>
+ <li>An LDAP <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#filter">search filter</a></li>
+ </ul>
+ </li>
+ <li>Click Submit. <br>
+ Once the form data has been submitted to the Directory
+ Server, the server searches for any entries
+ that exactly match, partially match, or sound like the
+ value you supplied. The resulting matches are displayed
+ as a <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#results">search results</a> table.</li>
+</ol>
+
+<h4><a name="Name"></a>Searching for Names</h4>
+
+<p>If the string you specify:</p>
+
+<ul>
+ <li>contains characters other than numbers </li>
+ <li>does not contain an at (@) symbol </li>
+</ul>
+
+<p>Standard Search attempts to find full names, first names, or
+last names that exactly match, partially match, or sound like the
+supplied value.</p>
+
+<p>For example, specifying the string <font face="Courier">son</font>
+could return results such as: </p>
+
+<p>
+<ul>
+ <li>Gary Stevenson</li>
+ <li>Mary Sun</li>
+ <li>Allison Barker</li>
+</ul>
+
+<h4><a name="initials"></a>Searching for Names with Initials</h4>
+
+<p>If you specify a value that includes the following items in
+the following order:</p>
+
+<ol>
+ <li>a single letter </li>
+ <li>a space ( ), period (.), or period and space in any order</li>
+ <li>one or more characters </li>
+</ol>
+
+<p>then Standard Search executes the search as if you
+requested a first initial followed by a last name. For example,
+specifying the string &quot;S.Anderson&quot; could return results
+such as:</p>
+
+<ul>
+ <li>Sally Anderson</li>
+ <li>Steve Anderson</li>
+ <li>Sue Anderson</li>
+</ul>
+
+<p>Similarly, if you specify a value that has the following items
+in the following order:</p>
+
+<ol>
+ <li>more than one character</li>
+ <li>a space ( ), period (.), or period and space in any order</li>
+ <li>a single character </li>
+</ol>
+
+<p>then Standard Search executes the search as if you
+requested a first name followed by a last initial. For example,
+specifying the string <font face="Courier New">&quot;</font>Mark
+.P&quot; could return search results such as:</p>
+
+<ul>
+ <li>Mark Payne</li>
+ <li>Mark Peck</li>
+ <li>Mark Polk</li>
+</ul>
+
+<blockquote>
+ <p><b>Note: </b></p>
+ <p>When you use initials Standard Search looks only for exact matches.
+ It returns entries with names that use the
+ same initial and name as you specify on the search.
+ Approximate (or &quot;sounds-like&quot;) and substring
+ searches are not performed. </p>
+</blockquote>
+
+<h4><a name="phone"></a>Searching for Phone Numbers</h4>
+
+<p>Standard Search automatically searches for a phone number if
+the value you enter consists only of numerical digits. A single
+hyphen (-) is also allowed if at least one digit precedes
+it.</p>
+
+<p>This type of search is an &quot;ends with&quot; search. That
+is, the Directory Server searches for any phone numbers that end
+with the specified value. For example, if you enter a value such
+as <tt>123</tt>, the Directory Server searches for all phone numbers that
+end with 123.</p>
+
+<h4><a name="email"></a>Searching for Email Addresses</h4>
+
+<p>Standard Search automatically searches for matching email
+addresses if you provide a value that contains an at (@) symbol.
+Standard Search first searches for any email addresses that
+exactly match the value you entered. If Standard Search doesn't
+find any matching entries, it then searches for any entries that
+start with the value you entered. </p>
+
+<p>For example, specifying the string <font face="Courier">son@</font>
+could return:</p>
+
+<ul>
+ <li>son@</li>
+</ul>
+or, if no exact match exists in the directory:
+<ul>
+ <li>son@aardvark.org</li>
+ <li>son@acme.com</li>
+</ul>
+
+<h4><a name="filter"></a>Using Search Filters</h4>
+
+<p>Rather than allowing Standard Search to determine the correct
+type of search, you can explicitly specify an LDAP search filter.
+An LDAP search filter allows you to search for entries with a
+specific <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm">attribute</a> value.
+Standard Search assumes that any string containing an equal sign
+(=) is an LDAP search filter. For example,</p>
+
+<pre>cn=*eve*</pre>
+
+<p>is an LDAP search filter that performs a substring search for
+any common name (CN) containing the string <tt>eve</tt>.
+When specifying attributes within an LDAP search filter, you
+must use the attribute label used by the Directory Server
+internally, the internal ID, rather than the attribute
+field name as displayed in the Directory Server interface.
+For example, the internal ID for the Full Name attribute field
+is <TT>cn</TT>. When you enter a search filter in Standard Search,
+use the internal ID (commonName) rather than the attribute field name (Full Name)
+as follows:
+</P>
+<P><TT>commonName=Smith Fukuda</TT></P>
+
+<P>Some attribute fields also have a second, abbreviated internal ID. For example, the Full Name field has two
+internal IDs: commonName and cn. You can use either name in the search filter.
+</p>
+
+<p>For more information on search filters, refer to
+the <em>Directory Server Administrator's Guide</em>.</p>
+
+<h2><a name="advanced"></a>Advanced Search</h2>
+
+<p>With Advanced Search, you can search for entries that have
+specific values for certain attributes. For example, Advanced
+Search allows you to look for a person whose email address is a
+specified value. Advanced Search also allows you to look up
+entries that do <i>not</i> include a specified attribute value. For
+example, you can find all the people whose last name is not
+&quot;Smith&quot; (such a search is likely to return a
+large number of results, so you may want to avoid these kinds of
+searches).</p>
+
+<p>Advanced Search performs an exact search, returning entries
+that exactly match the words you enter. There are four fields in
+the Advanced Search form that you use to construct your search.
+Together these four fields represent a sentence specifying the
+search. In general, the sentence is constructed as follows: </p>
+
+<p><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#type">Find:</a><i> [a type of entry] </i><a
+href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#wherethe">where the:</a><i> [attribute] </i><a
+href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#typeofsearch">[type of search]</a><i> [search
+string]</i></p>
+
+<p>The options
+for the first three of these fields are provided in pull-down
+menus. The last field contains the actual search string. For example, you can
+construct a search to:</p>
+
+<p><b>Find:</b><i> </i>[People]<i> </i><b>where the: </b>[Last
+Name] [is] [Bowker]</p>
+
+<p>Or you can construct a search to: </p>
+
+<p><b>Find: </b>[People] <b>where the: </b>[Full Name] [sounds
+like] [tree]</p>
+
+<h3><a name="Performing an Advanced Search"></a>Performing an
+Advanced Search</h3>
+
+<ol>
+ <li>Click the Advanced Search tab.</li>
+ <li>Select the <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#type">type of entry</a> you want to
+ search for from the Find drop-down list.</li>
+ <li>Select the attribute you want to search for from the "where
+ the" field drop-down list. The choices
+ vary depending on the type of entry you selected in the Find
+ field. The options are explained in the following table.<br>
+<P>
+ <table border="2">
+ <tr>
+ <th><a name="wherethe"></a><b>If the Find field
+ is . . .</b></th>
+ <th><b>You can choose . . .</b></th>
+ </tr>
+ <tr>
+ <td>People</td>
+ <td><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#cn">full name</a>,
+ <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#surname">last name</a>, <a
+ href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#telephoneNumber">phone number</a>,
+ <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#mail">email address</a>, <a
+ href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#uid">user ID</a>, or <a
+ href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#title">title</a></td>
+ </tr>
+ <tr>
+ <td>Groups</td>
+ <td><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#cn">name</a>,
+ <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#description">description</a>,
+ <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#owner">owner</a>, or
+ <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#member">member</a></td>
+ </tr>
+ <tr>
+ <td>Organizations</td>
+ <td><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#cn">name</a>,
+ <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#l">location</a>,
+ <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#telephoneNumber">phone
+ number</a>, or <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#description">description</a></td>
+ </tr>
+ <tr>
+ <td>Domaincomponent</td>
+ <td><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#cn">name</a>,
+ <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#l">location</a>,
+ <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#telephoneNumber">phone
+ number</a>, or <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#description">description</a></td>
+ </tr>
+ <tr>
+ <td>Org-Units</td>
+ <td><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#cn">name</a>,
+ <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#l">location</a>,
+ <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#telephoneNumber">phone
+ number</a>, or <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#description">description</a></td>
+ </tr>
+ <tr>
+ <td>Anything</td>
+ <td><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#cn">name</a> or
+ <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/attribut.htm#description">description</a></td>
+ </tr>
+ </table>
+ </li>
+<P>
+ <li>Select the type of search you want to perform. <br>
+ <br>
+ In general, this field indicates if the search is to be
+ an equality search, substring search, or approximate
+ (&quot;sounds like&quot;) search. The following defines
+ all of the available keywords and the type of search
+ that each represents. Not all of these keywords
+ are available for every search; the actual keywords you
+ can use depends on the values you select for the 'Find'
+ and "where the" fields. You can
+ choose one of the following:
+<p>
+ <table border="2">
+ <tr>
+ <th><a name="typeofsearch"></a><b>Type of search</b></th>
+ <th><b>Description</b></th>
+ </tr>
+ <tr>
+ <td>is</td>
+ <td>Finds an exact match. That is,
+ this option specifies an equality search. Use
+ this option when you know the exact value of an
+ entry's attribute. For example, if you know the
+ exact spelling of a person's last name, use this
+ option. </td>
+ </tr>
+ <tr>
+ <td>is not</td>
+ <td>Returns all the entries having an attribute value
+ that does not exactly match the search string. That
+ is, if you want to find all the people in the
+ directory whose last name is not
+ &quot;Smith,&quot; use this option. Be aware,
+ however, that use of this option can return an
+ extremely large number of entries. </td>
+ </tr>
+ <tr>
+ <td>sounds like</td>
+ <td>Finds phonetic matches. Use this option if you know an
+ attribute's value, but you are unsure of the
+ spelling. For example, if you are not sure if a
+ person's last name is spelled &quot;Sarret,&quot;
+ &quot;Sarette,&quot; or &quot;Sarett,&quot; use
+ this option. </td>
+ </tr>
+ <tr>
+ <td>starts with</td>
+ <td>Performs a substring search.
+ Entries having attributes with values starting with the
+ specified search string are returned. For
+ example, if you know a person's first name is
+ &quot;Steve,&quot; but you do not know the last
+ name, use this option on a full name search. </td>
+ </tr>
+ <tr>
+ <td>ends with</td>
+ <td>Performs a substring search.
+ Entries having attributes with values ending with the specified
+ search string are returned. For example, if you
+ know the last four digits of a person's telephone
+ number are &quot;9876,&quot; use this option to
+ locate the person's entry. </td>
+ </tr>
+ <tr>
+ <td>contains</td>
+ <td>Performs a substring search.
+ Entries having attributes with values containing the specified
+ search string are returned. For example, if you
+ know an organization's description
+ contains the word &quot;support,&quot; use this
+ option with the search string &quot;support&quot;
+ to find the organization's entry.</td>
+ </tr>
+ </table>
+ </li>
+<p>
+ <li>Enter the string you want to search against in the text
+ box and click Search.<br>
+ Once the form data has been submitted to the directory
+ server, the Directory Server searches for any entries
+ that exactly match the value you supplied. The resulting
+ matches are displayed as a search results list.</li>
+</ol>
+
+<h3><a name="Advanced Search Examples"></a>Advanced Search
+Examples</h3>
+
+<p>The following examples show a few possible uses of the
+Advanced Search form. The vertical bars (|) delimit the various
+fields in the form.</p>
+
+<table border="2">
+ <tr>
+ <th><b>To find . . .</b></th>
+ <th><b>Enter . . .</b></th>
+ </tr>
+ <tr>
+ <td>All people named Darlene</td>
+ <td><b>Find:</b> People | <b>where the:</b> full name |
+ starts with | Darlene</td>
+ </tr>
+ <tr>
+ <td>All people with the last name Sweeney</td>
+ <td><b>Find:</b> People | <b>where the:</b> last name |
+ is | Sweeny</td>
+ </tr>
+ <tr>
+ <td>All the people who are vice presidents</td>
+ <td><b>Find:</b> People | <b>where the:</b> title |
+ contains | Vice President</td>
+ </tr>
+ <tr>
+ <td>The organization named Accounting</td>
+ <td><b>Find:</b> Organization | <b>where the:</b> name |
+ is | Accounting</td>
+ </tr>
+ <tr>
+ <td>Groups interested in scuba diving</td>
+ <td><b>Find:</b> Groups | <b>where the:</b> description |
+ contains | scuba</td>
+ </tr>
+ <tr>
+ <td>Any entry with a name that contains the word
+ &quot;printer&quot;</td>
+ <td><b>Find:</b> Anything | <b>where the:</b> name |
+ contains | printer</td>
+ </tr>
+</table>
+
+<h2><a name="results"></a>Viewing Search Results</h2>
+
+<p>When you perform a search using either a Standard Search or an
+Advanced Search, the Directory Server interface sends the search
+data to the Directory Server. The Directory Server performs the
+search and then returns any matching entries to the directory
+server interface. The resulting display depends on whether there
+were:</p>
+
+<ul>
+ <li><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#nomatch">no matches</a></li>
+ <li><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#single">a single match</a></li>
+ <li><a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#multiple">multiple matches</a></li>
+</ul>
+
+<p>This section also discusses some of the <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#problems">other
+problems</a> you may run into when attempting to search the
+directory tree.</p>
+
+<h3><a name="nomatch"></a>No Matches </h3>
+
+<p>A search result that returns no matches means one of the
+following. </p>
+
+<ul>
+ <li>No entries in the directory match your search
+ criteria. If you believe that this is the problem, try
+ another search using slightly different parameters to
+ see if you can get any other results.</li>
+ <li>You did not <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#1016877">authenticate</a>
+ before performing the search. The directory administrator
+ determines Authentication requirements. Your
+ directory administrator can set the access control on the
+ directory so that you are required to
+ authenticate before you can search the tree. This access
+ control can be set for the entire directory or for
+ just part of it. If you are required to
+ authenticate before you can search the directory tree,
+ and you do not authenticate before running the search,
+ the Directory Server acts as if no matching
+ entries were found in the directory; no message informs you
+ that you need to authenticate. This is for security reasons. Contact your
+ directory administrator to find out if you must
+ authenticate to the Directory Server before running a
+ search. See Chapter 5, &quot;Authentication&quot;
+ for more information on authentication.</li>
+ <li>The access control for the tree disallows you
+ from viewing the entry or entries; regardless of authentication.</li>
+</ul>
+
+<h3><a name="single"></a>A Single Match<b> </b></h3>
+
+<p>If one and only one match is returned in response to an
+&quot;is&quot; search, the Directory Server interface displays
+information about that entry as a result of the search. If the
+single result was found using any other search method, it is
+displayed in a table, and you must click the link to view
+detailed information about the entry. This form
+contains a button that allows you to <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/mod.htm">edit</a>
+the entry. You must have the appropriate permissions to edit an
+entry, and you need to <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/auth.htm#userauth">authenticate</a>
+before doing so. </p>
+
+<h3><a name="multiple"></a>Multiple Matches<b> </b></h3>
+
+<p>If multiple matches are found in response to your
+search, the directory interface displays
+a table listing each of the matching entries and
+certain relevant information for each entry, such as the entry's
+phone number and email address. The type of entry for which
+you are searching determines this information.
+To view more information on a specific entry, click the
+entry's name in the first column of the table. </p>
+
+<h3><a name="problems"></a><b>Other Problems</b></h3>
+
+<p>You may see odd results if you are searching for numerical
+values because the Directory Server stores all values as
+strings, regardless of whether they are actually numerical values
+(such as telephone or room numbers). Consequently, when you
+search for numerical values, be sure to include all spaces and
+leading zeros, if any. </p>
+
+<p>Also note that the Directory Server interface strips all
+leading and trailing blank spaces from your search criteria.
+While it is unlikely that directory entries actually have leading
+and trailing blank spaces in their values, the possibility still
+exists. Because of this, exact matches against values that have
+leading and trailing blank spaces fail. If you encounter
+this problem, try using a substring search (a
+&quot;contains&quot; search) instead of an exact search. </p>
+
+<h2><a name="vCard"></a>Viewing a vCard</h2>
+
+<p>A vCard is a digital business card. Like a regular business
+card, a vCard contains contact information about a person such as
+name, title, telephone and fax numbers, and email
+address. Unlike a regular business card, however, the vCard can
+also contain multimedia elements such as graphics, sound,
+and video. To view a vCard, do the following:</p>
+
+<ol>
+ <li>Use the <a href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#standard">Standard Search</a> or <a
+ href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=.MANUAL/search.htm#advanced">Advanced Search</a> mechanism to locate
+ the person whose vCard you want to view.</li>
+ <li>Click the View Card button.<br>
+ The Directory Server interface displays a condensed
+ version of the vCard.</li>
+ <li>If you want to see more details, click View
+ Complete Card.</li>
+ <li>If you want to add the person to your Communicator
+ address book, click "Add to Address Book"
+ and then click OK.</li>
+</ol>
+</body>
+</html>
diff --git a/ldap/clients/dsgw/html/manual/t.gif b/ldap/clients/dsgw/html/manual/t.gif
new file mode 100644
index 00000000..8068a16f
--- /dev/null
+++ b/ldap/clients/dsgw/html/manual/t.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/manual/y.gif b/ldap/clients/dsgw/html/manual/y.gif
new file mode 100644
index 00000000..1a27f360
--- /dev/null
+++ b/ldap/clients/dsgw/html/manual/y.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/message.gif b/ldap/clients/dsgw/html/message.gif
new file mode 100644
index 00000000..e46c67a0
--- /dev/null
+++ b/ldap/clients/dsgw/html/message.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/netscape.gif b/ldap/clients/dsgw/html/netscape.gif
new file mode 100644
index 00000000..81a3e4a6
--- /dev/null
+++ b/ldap/clients/dsgw/html/netscape.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/newentrytitle.html b/ldap/clients/dsgw/html/newentrytitle.html
new file mode 100644
index 00000000..4c668396
--- /dev/null
+++ b/ldap/clients/dsgw/html/newentrytitle.html
@@ -0,0 +1,156 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Netscape Directory Server</TITLE>
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</HEAD>
+
+<body bgcolor="#FFFFFF" marginwidth="0" marginheight="0" leftmargin="0" topmargin="0">
+
+<TABLE width="100%" cellspacing="0" cellpadding="0" border="0" class="bgColor4">
+ <TR>
+ <TD>
+ <table class="bgColor1" border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td colspan="4"><img border="0" height="10" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif">
+ </td>
+ </tr>
+ <tr>
+ <td><img border="0" height="1" width="15" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td><a href="http://www.netscape.com"><img border="0" height="19" width="19" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=netscape.gif"></a></td>
+ <td><img border="0" height="1" width="7" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td nowrap="true" align=left width="100%" class="appName">Netscape Directory Server Gateway</td>
+ </tr>
+ <tr>
+ <td colspan="4"><img border="0" height="12" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif">
+ </td>
+ </tr>
+ </table>
+ <table class="bgColor1" border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td><img border="0" height="1" width="15" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td>
+ <table class="bgRegTab" border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td rowspan="3"><img border="0" height="23" width="7" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=left_off.gif"></td>
+ <td colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td rowspan="3"><img border="0" height="23" width="9" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=right_off.gif"></td>
+ </tr>
+ <tr>
+ <td class="bgRegTabHighlight" colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </tr>
+ <tr>
+ <td><img border="0" height="21" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td nowrap="true"><a class="link6" HREF="/clients/dsgw/bin/search?<!-- GCONTEXT -->"
+ TARGET="_top" onMouseOver="self.status='Standard Search'; return true;"
+ onMouseOut="self.status=''; return true;"
+ TITLE="Standard Search" ALT="Standard Search">Standard Search</a></td>
+ </tr>
+ <tr>
+ <td class="bgColor1" colspan="4"><img border="0" height="1" width="4" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </tr>
+ </table>
+ </td>
+ <td><img border="0" height="1" width="3" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td>
+ <table class="bgRegTab" border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td rowspan="3"><img border="0" height="23" width="7" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=left_off.gif"></td>
+ <td colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td rowspan="3"><img border="0" height="23" width="9" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=right_off.gif"></td>
+ </tr>
+ <tr>
+ <td class="bgRegTabHighlight" colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </tr>
+ <tr>
+ <td><img border="0" height="21" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td nowrap="true"><a class="link6" HREF="/clients/dsgw/bin/csearch?<!-- GCONTEXT -->"
+ TARGET="_top" onMouseOver="self.status='Advanced Search'; return true;"
+ onMouseOut="self.status=''; return true;"
+ TITLE="Advanced Search" ALT="Advanced Search">Advanced Search</a></td>
+ </tr>
+ <tr>
+ <td class="bgColor1" colspan="4"><img border="0" height="1" width="4" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </tr>
+ </table>
+ </td>
+ <td><img border="0" height="1" width="3" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td>
+ <table class="bgAtTab" border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td rowspan="3"><img border="0" height="23" width="7" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=left_on.gif"></td>
+ <td colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td rowspan="3"><img border="0" height="23" width="9" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=right_on.gif"></td>
+ </tr>
+ <tr>
+ <td class="bgAtTabHighlight" colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </tr>
+ <tr>
+ <td><img border="0" height="21" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td nowrap="true"><A HREF="/clients/dsgw/bin/newentry?<!-- GCONTEXT -->"
+ TARGET="_top" onMouseOver="self.status='New Entry'; return true;"
+ onMouseOut="self.status=''; return true;" TITLE="New Entry"
+ ALT="New Entry" class="link7">New Entry</a></td>
+ </tr>
+ <tr>
+ <td><img border="0" height="1" width="7" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=left_bottom.gif"></td>
+ <td colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td><img border="0" height="1" width="9" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=right_bottom.gif"></td>
+ </tr>
+ </table>
+ </td>
+ <td><img border="0" height="1" width="3" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td>
+ <table class="bgRegTab" border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td rowspan="3"><img border="0" height="23" width="7" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=left_off.gif"></td>
+ <td colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td rowspan="3"><img border="0" height="23" width="9" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=right_off.gif"></td>
+ </tr>
+ <tr>
+ <td class="bgRegTabHighlight" colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </tr>
+ <tr>
+ <td><img border="0" height="21" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td nowrap="true"><a class="link6" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=auth.html"
+ TARGET="_top" onMouseOver="self.status='Authentication'; return true;"
+ onMouseOut="self.status=''; return true;"
+ TITLE="Authentication" ALT="Authentication">Authentication</a></td>
+ </tr>
+ <tr>
+ <td class="bgColor1" colspan="4"><img border="0" height="1" width="4" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </tr>
+ </table>
+ </td>
+
+ <td width="100%"><img border="0" height="1" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </TR>
+ <TR>
+ <TD class="bgRegTab" colspan="5"><IMG border="0" height="1" width="5" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></TD>
+ <TD class="bgAtTab"><IMG border="0" height="1" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></TD>
+ <TD class="bgRegTab" colspan="3"><IMG border="0" height="1" width="3" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></TD>
+ </TR>
+ </TABLE>
+ <TABLE class="bgAtTab" border="0" cellpadding="0" cellspacing="0" width="100%">
+ <TR>
+ <TD>
+ <IMG border="0" height="43" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif">
+ </TD>
+ </TR>
+ <TR>
+ <TD class="bgRegTab"><IMG border="0" height="1" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></TD>
+ </TR>
+ <TR>
+ <TD class="bgDarkRule"><IMG border="0" height="2" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></TD>
+ </TR>
+ </TABLE>
+ </TD>
+ </TR>
+</TABLE>
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/html/organization.gif b/ldap/clients/dsgw/html/organization.gif
new file mode 100644
index 00000000..6324da4b
--- /dev/null
+++ b/ldap/clients/dsgw/html/organization.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/orgicon.gif b/ldap/clients/dsgw/html/orgicon.gif
new file mode 100644
index 00000000..034f2c20
--- /dev/null
+++ b/ldap/clients/dsgw/html/orgicon.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/orgunit.gif b/ldap/clients/dsgw/html/orgunit.gif
new file mode 100644
index 00000000..56b7c59e
--- /dev/null
+++ b/ldap/clients/dsgw/html/orgunit.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/person.gif b/ldap/clients/dsgw/html/person.gif
new file mode 100644
index 00000000..958547e0
--- /dev/null
+++ b/ldap/clients/dsgw/html/person.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/right_bottom.gif b/ldap/clients/dsgw/html/right_bottom.gif
new file mode 100644
index 00000000..b49e450e
--- /dev/null
+++ b/ldap/clients/dsgw/html/right_bottom.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/right_off.gif b/ldap/clients/dsgw/html/right_off.gif
new file mode 100644
index 00000000..cf5b930b
--- /dev/null
+++ b/ldap/clients/dsgw/html/right_off.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/right_on.gif b/ldap/clients/dsgw/html/right_on.gif
new file mode 100644
index 00000000..643b540b
--- /dev/null
+++ b/ldap/clients/dsgw/html/right_on.gif
Binary files differ
diff --git a/ldap/clients/dsgw/html/searchtitle.html b/ldap/clients/dsgw/html/searchtitle.html
new file mode 100644
index 00000000..41719512
--- /dev/null
+++ b/ldap/clients/dsgw/html/searchtitle.html
@@ -0,0 +1,157 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>Netscape Directory Server</TITLE>
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</HEAD>
+
+<body bgcolor="#FFFFFF" marginwidth="0" marginheight="0" leftmargin="0" topmargin="0">
+
+<TABLE width="100%" cellspacing="0" cellpadding="0" border="0" class="bgColor4">
+ <TR>
+ <TD>
+ <table class="bgColor1" border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td colspan="4"><img border="0" height="10" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif">
+ </td>
+ </tr>
+ <tr>
+ <td><img border="0" height="1" width="15" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td><a href="http://www.netscape.com"><img border="0" height="19" width="19" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=netscape.gif"></a></td>
+ <td><img border="0" height="1" width="7" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td nowrap="true" align=left width="100%" class="appName">Netscape Directory Server Gateway</td>
+ </tr>
+ <tr>
+ <td colspan="4"><img border="0" height="12" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif">
+ </td>
+ </tr>
+ </table>
+ <table class="bgColor1" border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td><img border="0" height="1" width="15" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td>
+ <table class="bgAtTab" border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td rowspan="3"><img border="0" height="23" width="7" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=left_on.gif"></td>
+ <td colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td rowspan="3"><img border="0" height="23" width="9" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=right_on.gif"></td>
+ </tr>
+ <tr>
+ <td class="bgAtTabHighlight" colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </tr>
+ <tr>
+ <td><img border="0" height="21" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td nowrap="true"><A HREF="/clients/dsgw/bin/search?<!-- GCONTEXT -->"
+ TARGET="_top" onMouseOver="self.status='Standard Search'; return true;"
+ onMouseOut="self.status=''; return true;" TITLE="Standard Search"
+ ALT="Standard Search" class="link7">Standard Search</a></td>
+ </tr>
+ <tr>
+ <td><img border="0" height="1" width="7" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=left_bottom.gif"></td>
+ <td colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td><img border="0" height="1" width="9" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=right_bottom.gif"></td>
+ </tr>
+ </table>
+ </td>
+ <td><img border="0" height="1" width="3" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td>
+ <table class="bgRegTab" border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td rowspan="3"><img border="0" height="23" width="7" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=left_off.gif"></td>
+ <td colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td rowspan="3"><img border="0" height="23" width="9" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=right_off.gif"></td>
+ </tr>
+ <tr>
+ <td class="bgRegTabHighlight" colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </tr>
+ <tr>
+ <td><img border="0" height="21" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td nowrap="true"><a class="link6" HREF="/clients/dsgw/bin/csearch?<!-- GCONTEXT -->"
+ TARGET="_top" onMouseOver="self.status='Advanced Search'; return true;"
+ onMouseOut="self.status=''; return true;"
+ TITLE="Advanced Search" ALT="Advanced Search">Advanced Search</a></td>
+ </tr>
+ <tr>
+ <td class="bgColor1" colspan="4"><img border="0" height="1" width="4" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </tr>
+ </table>
+ </td>
+ <td><img border="0" height="1" width="3" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td>
+ <table class="bgRegTab" border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td rowspan="3"><img border="0" height="23" width="7" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=left_off.gif"></td>
+ <td colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td rowspan="3"><img border="0" height="23" width="9" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=right_off.gif"></td>
+ </tr>
+ <tr>
+ <td class="bgRegTabHighlight" colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </tr>
+ <tr>
+ <td><img border="0" height="21" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td nowrap="true"><a class="link6" HREF="/clients/dsgw/bin/newentry?<!-- GCONTEXT -->"
+ TARGET="_top" onMouseOver="self.status='New Entry'; return true;"
+ onMouseOut="self.status=''; return true;"
+ TITLE="New Entry" ALT="New Entry">New Entry</a></td>
+ </tr>
+ <tr>
+ <td class="bgColor1" colspan="4"><img border="0" height="1" width="4" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </tr>
+ </table>
+ </td>
+ <td><img border="0" height="1" width="3" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td>
+ <table class="bgRegTab" border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td rowspan="3"><img border="0" height="23" width="7" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=left_off.gif"></td>
+ <td colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td rowspan="3"><img border="0" height="23" width="9" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=right_off.gif"></td>
+ </tr>
+ <tr>
+ <td class="bgRegTabHighlight" colspan="2"><img border="0" height="1" width="2" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </tr>
+ <tr>
+ <td><img border="0" height="21" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ <td nowrap="true"><a class="link6" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=auth.html"
+ TARGET="_top" onMouseOver="self.status='Authentication'; return true;"
+ onMouseOut="self.status=''; return true;"
+ TITLE="Authentication" ALT="Authentication">Authentication</a></td>
+ </tr>
+ <tr>
+ <td class="bgColor1" colspan="4"><img border="0" height="1" width="4" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </tr>
+ </table>
+ </td>
+
+ <td width="100%"><img border="0" height="1" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></td>
+ </TR>
+ <TR>
+ <TD class="bgRegTab"><IMG border="0" height="1" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></TD>
+ <TD class="bgAtTab"><IMG border="0" height="1" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></TD>
+ <TD class="bgRegTab" colspan="7"><IMG border="0" height="1" width="7" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></TD>
+ </TR>
+ </TABLE>
+ <TABLE class="bgAtTab" border="0" cellpadding="0" cellspacing="0" width="100%">
+ <TR>
+ <TD>
+ <IMG border="0" height="43" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif">
+ </TD>
+ </TR>
+ <TR>
+ <TD class="bgRegTab"><IMG border="0" height="1" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></TD>
+ </TR>
+ <TR>
+ <TD class="bgDarkRule"><IMG border="0" height="2" width="1" src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif"></TD>
+ </TR>
+ </TABLE>
+ </TD>
+ </TR>
+</TABLE>
+
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/html/style.css b/ldap/clients/dsgw/html/style.css
new file mode 100644
index 00000000..d6d59a0e
--- /dev/null
+++ b/ldap/clients/dsgw/html/style.css
@@ -0,0 +1,142 @@
+/* ======================================================= *
+ * Style sheet for the Directory Express application *
+ * ======================================================= */
+
+/* All Links */
+A:link {font-family: verdana, Arial, Helvetica, sans-serif; color: #0033cc; font-size: 11px}
+A:active {color: #0033cc; font-size: 11px;}
+A:visited {color: #0033cc; font-size: 11px;}
+
+/*All Regular Table Data--for the whole application*/
+body {
+ background-color: #FFFFFF;
+ font-family: Verdana, Arial, Helvetica, san-serif;
+ font-size: 11px;
+}
+
+td {
+ font-family: verdana, Arial, Helvetica, sans-serif;
+ font-size: 11px;
+ color: #000000;
+ vertical-align : middle;
+}
+
+th {
+ font-family: verdana, Arial, Helvetica, sans-serif;
+ font-size: 12px;
+ font-weight: bold;
+ color: #ffffff;
+ vertical-align : middle;
+ background-color: #336699;
+}
+
+
+p {
+ font-family: verdana, Arial, Helvetica, sans-serif;
+ font-size: 11px;
+ color: #000000;
+}
+
+
+td.bold {
+ font-family: verdana, Arial, Helvetica, sans-serif;
+ font-size: 11px;
+ vertical-align : middle;
+ color: #000000;
+ font-weight: bold;
+}
+
+td.boldbig {
+ font-family: verdana, Arial, Helvetica, sans-serif;
+ font-size: 12px;
+ vertical-align : middle;
+ color: #000000;
+ font-weight: bold;
+}
+
+input {
+ font-family: verdana, Arial, Helvetica, sans-serif;
+ font-size: 11px;
+ /*color: #000000;*/
+}
+
+
+A.searchlinknorm:link {color: #CCFFFF}
+A.searchlinknorm:visited {color: #CCFFFF}
+A.searchlinknorm:active {color: #CCFFFF}
+
+A.searchlinkspec:link {color: #FF0000}
+A.searchlinkspec:visited {color: #FF0000}
+A.searchlinkspec:active {color: #CCFFFF}
+
+/* *********Search frame*************/
+
+body.Search {
+ background-color: #003366;
+ font-family: Verdana, Arial, Helvetica, san-serif;
+ color: #ccffff;
+ font-size: 12px;
+}
+
+td.appName {
+ font-family: verdana, Arial, Helvetica, sans-serif;
+ font-size: 12px;
+ vertical-align : middle;
+ color: #ccffff;
+ font-weight: bold;
+}
+
+.apptext {
+ font-family: verdana, Arial, Helvetica, sans-serif;
+ font-size: 12px;
+ vertical-align: middle;
+ color: #ccffff;
+}
+
+/* Special Links */
+.linknodec {text-decoration:none; color:#000000; font-family: verdana, Arial, Helvetica, sans-serif; font-size: 11px}
+
+.link3 {color: #ccffff; font-size: 11px;}
+.link3:Link {color: #ccffff; font-size: 11px;}
+.link3:Active {color: #ccffff; font-size: 11px;}
+.link3:Visited {color: #ccffff; font-size: 11px;}
+.link3:Hover {color: #ccffff; font-size: 11px;}
+
+.link6 {color: #ffffff; font-size: 12px; font-weight: bold; text-decoration: none;}
+.link6:Link {color: #ffffff; font-size: 12px; font-weight: bold; text-decoration: none;}
+.link6:Hover {color: #ffffff; font-size: 12px; font-weight: bold; text-decoration: none;}
+.link6:Visited {color: #ffffff; font-size: 12px; font-weight: bold; text-decoration: none;}
+.link6:Active {color: #ffffff; font-size: 12px; font-weight: bold; text-decoration: none;}
+
+.link7 {color: #003366; font-size: 12px; font-weight: bold; text-decoration: none;}
+.link7:Link {color: #003366; font-size: 12px; font-weight: bold; text-decoration: none;}
+.link7:Hover {color: #003366; font-size: 12px; font-weight: bold; text-decoration: none;}
+.link7:Visited {color: #003366; font-size: 12px; font-weight: bold; text-decoration: none;}
+.link7:Active {color: #003366; font-size: 12px; font-weight: bold; text-decoration: none;}
+
+.link14 {color: #ffffff; font-size: 11px;}
+.link14:Link {color: #ffffff; font-size: 11px;}
+.link14:Hover {color: #ffffff; font-size: 11px;}
+.link14:Visited {color: #ffffff; font-size: 11px;}
+.link14:Active {color: #ffffff; font-size: 11px;}
+
+/* Fonts */
+.text8 {color: #0099cc; font-size: 11px; font-family: Verdana, Arial, Helvetica; font-weight: bold;}
+.text15 {color: #ffffff; font-size: 12px; font-family: Verdana, Arial, Helvetica; font-weight: bold;}
+.text30 {color: #CCFFFF; font-size: 8px; font-family: Verdana, Arial, Helvetica;}
+.text31 {color: #000000; font-size: 14px; font-family: Verdana, Arial, Helvetica; font-weight: bold;}
+.text22 {color: #000000; font-size: 11px; font-family: Verdana, Arial, Helvetica;}
+
+.bgColor1 {background-color: #003366;}
+.bgColor4 {background-color: #cccccc;}
+.bgColor7 {background-color: #66ccff;}
+.bgColor9 {background-color: #336699;}
+.bgColor16 {background-color: #0033CC;}
+
+/* background colors for tabs and tab area */
+.bgAtTab {background-color: #ccffff;}
+.bgAtTabHighlight {background-color: #ffffff;}
+.bgRegTab {background-color: #0099cc;}
+.bgRegTabHighlight {background-color: #66ccff;}
+.bgInsideRule {background-color: #66ccff;}
+.bgDarkRule {background-color: #000000;}
diff --git a/ldap/clients/dsgw/html/transparent.gif b/ldap/clients/dsgw/html/transparent.gif
new file mode 100644
index 00000000..afa7fb83
--- /dev/null
+++ b/ldap/clients/dsgw/html/transparent.gif
Binary files differ
diff --git a/ldap/clients/dsgw/htmlout.c b/ldap/clients/dsgw/htmlout.c
new file mode 100644
index 00000000..456a649a
--- /dev/null
+++ b/ldap/clients/dsgw/htmlout.c
@@ -0,0 +1,431 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+/*
+ * htmlout.c -- routines to output HTML elements -- HTTP gateway
+ *
+ * Copyright (c) 1996 Netscape Communications Corp.
+ * All rights reserved.
+ */
+
+#include "dsgw.h"
+#include "dbtdsgw.h"
+
+#define DSGW_POSTEDVARARG_NAME "name"
+
+static char*
+dsgw_change( char *s, dsgwsubst *changes )
+{
+ auto dsgwsubst *ch;
+ if ( changes == NULL ) return s;
+ for ( ch = changes; ch; ch = ch->dsgwsubst_next ) {
+ if ( strstr( s, ch->dsgwsubst_from ) ) {
+ break;
+ }
+ }
+ if ( ch != NULL ) {
+ auto char *cs = dsgw_ch_strdup( s );
+ for ( ch = changes; ch; ch = ch->dsgwsubst_next ) {
+ auto const size_t from_len = strlen( ch->dsgwsubst_from );
+ auto const size_t to_len = strlen( ch->dsgwsubst_to );
+ auto const long change_len = to_len - from_len;
+ auto char *p;
+ for ( p = cs; (p = strstr( p, ch->dsgwsubst_from )) != NULL; p += to_len ) {
+ if ( change_len ) {
+ if ( change_len > 0 ) { /* allocate more space: */
+ auto const size_t offset = p - cs;
+ cs = dsgw_ch_realloc( cs, strlen( cs ) + change_len + 1 );
+ p = cs + offset;
+ }
+ memmove( p + to_len, p + from_len, strlen( p + from_len ) + 1 );
+ }
+ if ( to_len != 0 ) {
+ memcpy( p, ch->dsgwsubst_to, to_len );
+ }
+ }
+ }
+ return cs;
+ }
+ return s;
+}
+
+void
+dsgw_HTML_emits( char *s )
+{
+ auto char *sc = dsgw_change( s, gc->gc_changeHTML );
+ dsgw_emits( sc );
+ if ( sc != s ) free( sc );
+}
+
+void
+dsgw_html_begin( char *title, int titleinbody )
+{
+ static int header_done = 0;
+
+ if ( !header_done ) {
+ dsgw_emits( "<HTML>" );
+ dsgw_head_begin();
+ dsgw_emits( "\n" );
+ if ( title != NULL ) {
+ dsgw_emitf( "<TITLE>%s</TITLE>\n", title );
+ }
+ dsgw_emitf( "</HEAD>\n<BODY %s>\n", dsgw_html_body_colors );
+ } else {
+ dsgw_emits( "\n<HR>\n" );
+ }
+
+ if (( title != NULL ) && ( header_done || titleinbody )) {
+ dsgw_emitf( "<CENTER><TABLE BORDER=\"2\" CELLPADDING=\"10\" WIDTH=100%%>\n"
+ "<TR><TD ALIGN=\"center\" WIDTH=\"100%%\">\n<FONT SIZE=\"+2\">"
+ "<B>%s</B></FONT></TD></TR></TABLE></CENTER>\n<P>\n", title );
+ }
+
+ header_done = 1;
+}
+
+
+void
+dsgw_html_end()
+{
+ dsgw_emits( "</BODY></HTML>\n" );
+
+ /* make sure everything has been written to the server before we exit */
+ fflush( stdout );
+ fflush( stderr );
+}
+
+
+/*
+ * output a hypertext reference/URL:
+ * if "urlprefix" != NULL, it is prepended to "url" and "url" is hex-escaped.
+ * if "urlprefix" == NULL, "url" is assumed to be already escaped as needed.
+ *
+ * if "value" != NULL, any occurrence of "--value--" in "url" is replaced by
+ * a URL-escaped version of the actual value.
+ * if "value" == NULL, no substitution is done.
+ *
+ * if "label" == NULL or is of zero length, the closing ">LABEL</A>" is omitted.
+ */
+void
+dsgw_html_href( char *urlprefix, char *url, char *label, char *value,
+ char *extra )
+{
+ char *escaped_url, *tag = "--value--";
+ char *newlabel = NULL;
+ int freenewlabel;
+
+ if ( urlprefix == NULL ) {
+ dsgw_emits( "<A HREF=" );
+ escaped_url = NULL;
+ } else {
+ dsgw_emitf( "<A HREF=%s", urlprefix );
+ escaped_url = dsgw_ch_malloc( 3 * strlen( url ) + 1 );
+ *escaped_url = '\0';
+ dsgw_strcat_escaped( escaped_url, url );
+ url = escaped_url;
+ }
+
+ if ( value != NULL ) {
+ dsgw_substitute_and_output( url, tag, value, 1 );
+ } else {
+ dsgw_emits( url );
+ }
+
+ if ( extra != NULL ) {
+ dsgw_emits( " " );
+ if ( value != NULL ) {
+ dsgw_substitute_and_output( extra, tag, value, 1 );
+ } else {
+ dsgw_emits( extra );
+ }
+ }
+
+ newlabel = dsgw_strdup_with_entities( label, &freenewlabel );
+ if ( newlabel != NULL && *newlabel != '\0' ) {
+ dsgw_emitf( ">%s</A>\n", newlabel );
+ if ( freenewlabel ) {
+ free( newlabel );
+ }
+ } else {
+ dsgw_emits( "></A>\n" );
+ }
+
+ if ( escaped_url != NULL ) {
+ free( escaped_url );
+ }
+}
+
+
+void
+dsgw_substitute_and_output( char *s, char *tag, char *value, int escape )
+{
+ char *p, *escval;
+
+ escval = NULL;
+
+ while ( ( p = strstr( s, tag )) != NULL ) {
+ if ( p > s ) {
+ dsgw_emitn( stdout, s, p - s );
+ }
+ if ( escape ) {
+ if ( escval == NULL ) {
+ escval = dsgw_strdup_escaped( value );
+ }
+ dsgw_emits( escval );
+ } else {
+ dsgw_emits( value );
+ }
+
+ s = p + strlen( tag );
+ }
+
+ if ( escval != NULL ) {
+ free( escval );
+ }
+
+ if ( *s != '\0' ) {
+ dsgw_emits( s );
+ }
+}
+
+
+char *
+dsgw_strdup_escaped( const char *s )
+{
+ char *p;
+
+ p = dsgw_ch_malloc( 3 * strlen( s ) + 1 );
+ *p = '\0';
+ dsgw_strcat_escaped( p, s );
+ return( p );
+}
+
+
+/* this macro was copied from libldap/tmplout.c */
+
+#define HREF_CHAR_ACCEPTABLE( c ) (( c >= '-' && c <= '9' ) || \
+ ( c >= '@' && c <= 'Z' ) || \
+ ( c == '_' ) || \
+ ( c >= 'a' && c <= 'z' ))
+
+/* this function is copied from libldap/tmplout.c:strcat_escaped */
+void
+dsgw_strcat_escaped( char *s1, const char *s2 )
+{
+ unsigned char *q;
+ char *p, *hexdig = "0123456789ABCDEF";
+
+ p = s1 + strlen( s1 );
+ for ( q = (unsigned char *)s2; *q != '\0'; ++q ) {
+ if ( HREF_CHAR_ACCEPTABLE( *q )) {
+ *p++ = *q;
+ } else {
+ *p++ = '%';
+ *p++ = hexdig[ 0x0F & ((*(unsigned char*)q) >> 4) ];
+ *p++ = hexdig[ 0x0F & *q ];
+ }
+ }
+
+ *p = '\0';
+}
+
+
+#define DSGW_MAX_ENTITY_LEN 6 /* &quot; */
+static char *specials = "&\"<>";
+static char *entities[] = { "&amp;", "&quot;", "&lt;", "&gt;" };
+static int entitylen[] = { 5, 6, 4, 4 };
+
+char *
+dsgw_strdup_with_entities( char *s, int *madecopyp )
+{
+/*
+ * If the UTF8 string "s" contains any HTML special characters, make a
+ * duplicate where the appropriate HTML "entities" have been substituted
+ * for the special chars. For example, "<mcs@ace.com>" will be translated
+ * to "&lt;mcs@ace.com&gt;".
+ *
+ * If "s" does not contain any special characters, it is returned and
+ * *madecopyp is set to 0.
+ * Otherwise a malloc'd string is returned and *madecopyp is set to 1.
+ */
+ int spcount, idx;
+ char *p, *q, *r, *d;
+
+ spcount = 0;
+ for ( p = s; *p != '\0'; LDAP_UTF8INC( p )) {
+ if ( ((*p) & 0x80) == 0 && strchr( specials, *p ) != NULL ) {
+ ++spcount;
+ }
+ }
+
+ if ( spcount == 0 ) {
+ *madecopyp = 0;
+ return( s );
+ }
+
+ d = r = dsgw_ch_malloc( strlen( s ) + 1 + spcount * DSGW_MAX_ENTITY_LEN );
+ for ( p = s; *p != '\0'; LDAP_UTF8INC( p )) {
+ if ( ((*p) & 0x80) == 0 && ( q = strchr( specials, *p )) != NULL ) {
+ idx = ( q - specials );
+ memcpy( r, entities[ idx ], entitylen[ idx ] );
+ r += entitylen[ idx ];
+ } else {
+ r += LDAP_UTF8COPY( r, p );
+ }
+ }
+ *r = '\0';
+
+ *madecopyp = 1;
+ return( d );
+}
+
+
+void
+dsgw_form_begin( const char* name, const char* format, ... )
+{
+ dsgw_emits ("<FORM method=POST");
+ if (name) {
+ dsgw_emitf (" name=\"%s\"", name);
+ }
+ if (format) {
+ va_list argl;
+ va_start (argl, format);
+ dsgw_emits (" ");
+ dsgw_emitfv (format, argl);
+ va_end (argl);
+ }
+ dsgw_emits (">");
+ dsgw_emitf("<INPUT type=hidden name=context value=\"%s\">", context);
+ dsgw_emitf ("<INPUT type=hidden name=charset value=\"%s\">",
+ (gc->gc_charset && *(gc->gc_charset)) ? gc->gc_charset : ISO_8859_1_ENCODING );
+}
+
+void
+dsgw_emit_cgi_var( int argc, char **argv )
+{
+ char *name, *postedvalue;
+
+ if (( name = get_arg_by_name( DSGW_POSTEDVARARG_NAME, argc, argv ))
+ == NULL ) {
+ dsgw_emitf( XP_GetClientStr(DBT_missingS_1), DSGW_POSTEDVARARG_NAME );
+ } else if (( postedvalue = dsgw_get_cgi_var( name, DSGW_CGIVAR_OPTIONAL ))
+ != NULL ) {
+ dsgw_emits( postedvalue );
+ }
+}
+
+void
+dsgw_emit_button( int argc, char **argv, const char* format, ... )
+{
+ auto char *name = get_arg_by_name( DSGW_ARG_BUTTON_NAME, argc, argv );
+ auto char *label = get_arg_by_name( DSGW_ARG_BUTTON_LABEL, argc, argv );
+
+ if ( !label ) label = XP_GetClientStr( DBT_closeWindow_3 );
+
+ dsgw_emitf( "<INPUT TYPE=\"button\" VALUE=\"%s\"", label );
+ if ( name ) dsgw_emitf( " NAME=\"%s\"", name );
+ if ( format ) {
+ va_list argl;
+ va_start( argl, format );
+ dsgw_emits( " " );
+ dsgw_emitfv( format, argl );
+ va_end( argl );
+ }
+ dsgw_emits( ">" );
+}
+
+void
+dsgw_emit_alertForm ()
+{
+ dsgw_form_begin ("alertForm", "action=\"%s\" target=alertWindow",
+ DSGW_URLPREFIX_MAIN_HTTP "alert.html");
+ dsgw_emitf ("<INPUT TYPE=hidden NAME=TITLE VALUE=\"%s\">", XP_GetClientStr(DBT_alertTitle_));
+ dsgw_emits ("<INPUT TYPE=hidden NAME=MSG VALUE=\"\">"
+ "</FORM>\n");
+}
+
+void
+dsgw_emit_confirmForm ()
+{
+ dsgw_form_begin ("confirmForm", "action=\"%s\" target=confirmWindow",
+ DSGW_URLPREFIX_MAIN_HTTP "confirm.html");
+ dsgw_emitf ("<INPUT TYPE=hidden NAME=TITLE VALUE=\"%s\">", XP_GetClientStr(DBT_confirmTitle_));
+ dsgw_emits ("<INPUT TYPE=hidden NAME=MSG VALUE=\"\">"
+ "<INPUT TYPE=hidden NAME=YES VALUE=\"\">"
+ "<INPUT TYPE=hidden NAME=NO VALUE=\"\">"
+ "</FORM>\n");
+}
+
+static const char*
+defaultWindowOptions = "width=350,height=130,resizable";
+
+void
+dsgw_emit_alert (const char* frame, const char* windowOptions, const char* format, ...)
+{
+ if (!windowOptions) windowOptions = defaultWindowOptions;
+ dsgw_emits (" var aw = window.open(");
+ dsgw_emits ("''");
+/* dsgw_quote_emits (QUOTATION_JAVASCRIPT, DSGW_URLPREFIX_MAIN_HTTP "emptyFrame.html"); */
+ dsgw_emits ( ", 'alertWindow', ");
+ dsgw_quote_emits (QUOTATION_JAVASCRIPT, windowOptions);
+ dsgw_emits ( ");\n"
+ " aw.focus();\n"
+ " window."); /* Navigator 3 needs this */
+ if (frame) dsgw_emitf ("%s.", frame);
+ dsgw_emits ( "document.alertForm.MSG.value =");
+ dsgw_quotation_begin (QUOTATION_JAVASCRIPT);
+ if (format) {
+ va_list argl;
+ va_start (argl, format);
+ dsgw_emitfv (format, argl);
+ va_end (argl);
+ }
+ dsgw_quotation_end();
+ dsgw_emits ( ";\n"
+ " window.");
+ if (frame) dsgw_emitf ("%s.", frame);
+ dsgw_emits ("document.alertForm.submit();\n");
+}
+
+void
+dsgw_emit_confirm (const char* frame, const char* yes, const char* no,
+ const char* windowOptions, int enquote, const char* format, ...)
+{
+ if (!windowOptions) windowOptions = defaultWindowOptions;
+ dsgw_emits (" cw = window.open ('', 'confirmWindow', ");
+ dsgw_quote_emits (QUOTATION_JAVASCRIPT, windowOptions);
+ dsgw_emits ( ");\n"
+ " cw.focus();\n"
+ " if (cw.opener == null) cw.opener = self;\n" /* Navigator 2 needs this */
+ " window."); /* Navigator 3 needs this */
+ if (frame) dsgw_emitf ("%s.", frame);
+ dsgw_emits ( "document.confirmForm.MSG.value = ");
+ if (enquote) dsgw_quotation_begin (QUOTATION_JAVASCRIPT);
+ if (format) {
+ va_list argl;
+ va_start (argl, format);
+ dsgw_emitfv (format, argl);
+ va_end (argl);
+ }
+ if (enquote) dsgw_quotation_end();
+ dsgw_emits ( ";\n");
+
+ dsgw_emits (" window.");
+ if (frame) dsgw_emitf ("%s.", frame);
+ dsgw_emits ( "document.confirmForm.YES.value = ");
+ dsgw_quote_emits (QUOTATION_JAVASCRIPT, yes ? yes : "");
+ dsgw_emits ( ";\n");
+
+ dsgw_emits (" window.");
+ if (frame) dsgw_emitf ("%s.", frame);
+ dsgw_emits ( "document.confirmForm.NO.value = ");
+ dsgw_quote_emits (QUOTATION_JAVASCRIPT, no ? no : "");
+ dsgw_emits ( ";\n");
+
+ dsgw_emits (" window.");
+ if (frame) dsgw_emitf ("%s.", frame);
+ dsgw_emits ( "document.confirmForm.submit();\n");
+}
diff --git a/ldap/clients/dsgw/htmlparse.c b/ldap/clients/dsgw/htmlparse.c
new file mode 100644
index 00000000..cbb706af
--- /dev/null
+++ b/ldap/clients/dsgw/htmlparse.c
@@ -0,0 +1,805 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+/*
+ * htmlparse.c -- routines to parse HTML templates -- HTTP gateway.
+ * Stolen from libadmin/template.c and libadmin/form_get.c, originally
+ * by Mike McCool.
+ *
+ * Copyright (c) 1996 Netscape Communications Corp.
+ * All rights reserved.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdarg.h>
+#include "dsgw.h"
+#include "dbtdsgw.h"
+
+extern char *Versionstr; /* from Versiongw.c */
+
+/* global variables */
+char *dsgw_last_op_info; /* set in edit.c and genscreen.c */
+char *dsgw_dnattr; /* set in edit.c */
+char *dsgw_dndesc; /* set in edit.c */
+
+/*
+ * Save yourself a lot of grief and put a space after the name.
+ */
+
+static struct template_s templates[] = {
+ {"IF ", "FUNC conditional"},
+ {"ELSE ", "FUNC conditional"},
+ {"ELIF ", "FUNC conditional"},
+ {"ENDIF ", "FUNC conditional"},
+ {"TITLE ", "FUNC title"},
+ {"BODY ", "FUNC body"},
+ {"COLORS ", "FUNC colors"},
+ {"PAGEHEADER ", "FUNC pageheader"},
+ {"BEGININFO ", "<table border=2 width=100%% cellpadding=2>\n"
+ "<tr><td align=center colspan=2>"
+ "<b><FONT size=+1>%s</FONT></b></td></tr>"
+ "<td colspan=2>\n"},
+ {"ADDINFO ", "</td></tr><tr><td colspan=2>"},
+ {"ENDINFO ", "</td></tr></table>\n<hr width=10%%>\n"},
+ {"SUBMIT ", "FUNC submit\n"},
+ {"BEGINELEM ", "<pre>"},
+ {"ELEM ", "\n<b>%s</b>"},
+ {"ENDELEM ", "</pre>\n"},
+ {"ELEMADD ", "<b>%s</b>"},
+ {"ELEMDIV ", "\n"},
+ {"INDEX ", "<a href=\"index\">%s</a>\n"},
+ {"HELPBUTTON", "FUNC helpbutton"},
+ {"DIALOGSUBMIT", "FUNC dialogsubmit"},
+ {DRCT_DS_LAST_OP_INFO, "FUNC emit_last_op_info"},
+ {DRCT_DS_GATEWAY_VERSION, "FUNC emit_version_str"},
+ {DRCT_DS_ALERT_NOENTRIES " ", "FUNC emit_alert_noentries"},
+ {"ENDHTML", "</BODY></HTML>"},
+ {"GCONTEXT ", "context=%s"},
+ {"PCONTEXT ", "<INPUT TYPE=\"hidden\" NAME=\"context\" VALUE=\"%s\">\n"},
+ { NULL, NULL }
+};
+
+/* global to track output status */
+#define DSGW_PARSE_STATUS_NO_IF_SEEN -1
+#define DSGW_PARSE_STATUS_NO_OUTPUT 0
+#define DSGW_PARSE_STATUS_OUTPUT 1
+static int parse_status = DSGW_PARSE_STATUS_NO_IF_SEEN;
+
+static int dsgw_get_directive(char *string);
+static char **dsgw_get_vars(char *string, int *argc);
+static void dsgw_pageheader(int argc, char **argv);
+static void dsgw_title(int argc, char **argv);
+static void dsgw_body(int argc, char **argv);
+static void dsgw_colors(int argc, char **argv);
+static void dsgw_submit(int verify, char **vars);
+static void dsgw_dialogsubmit(void);
+static void dsgw_conditional(char *name, int argc, char **argv,
+ condfunc conditionalfn, void *condarg);
+static int dsgw_condition_true( int argc, char **argv,
+ condfunc conditionalfn, void *condarg );
+static void emit_last_op_info(int argc, char **argv);
+static void emit_version_str( void );
+static void emit_alert_noentries( void );
+static void template_error( char *msg );
+
+/* Filter a page. Takes the page to filter as an argument. Uses above
+ * filters to process. If we encounter a directive we don't know about,
+ * we set argc and argv, and return -1. The caller is responsible for
+ * figuring out what to do with the directive and arg vector.
+ *
+ * If parseonly is non-zero, this routine will just parse lines that contain
+ * directives -- nothing will be written to stdout.
+ */
+int
+dsgw_parse_line(
+char *line_input,
+int *argc,
+char ***argv,
+int parseonly,
+condfunc conditionalfn,
+void *condarg
+)
+{
+ register int index;
+ char *position;
+ int dirlen = strlen(DIRECTIVE_START);
+ char **vars;
+ int func_flag = 0;
+
+
+ *argc = 0;
+ *argv = NULL;
+ if ( !strncmp( line_input, DIRECTIVE_START, dirlen )) {
+ position = (char *) ( line_input + dirlen );
+ if ( parseonly ) {
+ index = -1; /* treat all directives as "unknown" */
+ } else {
+ index = dsgw_get_directive( position );
+ }
+
+ /* did we get one? */
+ if ( index != -1 ) {
+ /* if so, get the vars. */
+ position += strlen( templates[index].name );
+ vars = dsgw_get_vars( position, argc );
+ /* Dispatch the correct function (done for readability) */
+ if ( !strncmp(templates[ index ].format, "FUNC ", 5 )) {
+ func_flag = 1;
+ }
+
+ /* Don't check the parse_status for conditionals -RJP */
+ if (func_flag == 1 &&
+ !strncmp( templates[index].format+5, "conditional", 11 )) {
+ dsgw_conditional( templates[index].name, *argc, vars,
+ conditionalfn, condarg );
+ /* But do so for the other directives */
+ } else if (func_flag == 1 && parse_status != DSGW_PARSE_STATUS_NO_OUTPUT) {
+ if ( !strncmp( templates[ index ].format+5, "pageheader",10 ))
+ dsgw_pageheader( *argc, vars );
+ else if ( !strncmp( templates[index].format+5,"title",5))
+ dsgw_title( *argc, vars );
+ else if ( !strncmp( templates[index].format+5,"body",4))
+ dsgw_body( *argc, vars );
+ else if ( !strncmp( templates[index].format+5,"colors",6))
+ dsgw_colors( *argc, vars );
+ else if ( !strncmp( templates[ index ].format+5, "submit",6 ))
+ dsgw_submit( 0, vars );
+ else if ( !strncmp( templates[ index ].format+5, "verify",6 ))
+ dsgw_submit( 1, vars );
+ else if ( !strncmp( templates[index].format+5,
+ "dialogsubmit",12 ))
+ dsgw_dialogsubmit();
+ else if ( !strncmp( templates[index].format+5, "helpbutton", 10 ) && ( *argc > 0 ))
+ dsgw_emit_helpbutton( vars[ 0 ] );
+ else if ( !strncmp( templates[index].format+5,"emit_last_op_info", 17 ))
+ emit_last_op_info( *argc, vars );
+ else if ( !strncmp( templates[index].format+5, "emit_version_str", 16 ))
+ emit_version_str();
+ else if ( !strncmp( templates[index].format+5, "emit_alert_noentries", 20 ))
+ emit_alert_noentries();
+ else { /* We don't know what this template is. Send it back. */
+ *argv = vars;
+ return -1;
+ }
+ /*
+ * Handle the context case specially, because there is no
+ * vars generated, yet the format has a %s in it. Handle
+ * both the GCONTEXT and the PCONTEXT case (GET AND POST)
+ */
+ } else if ( parse_status != DSGW_PARSE_STATUS_NO_OUTPUT &&
+ !strcmp(templates[ index ].name + 1, "CONTEXT ")) {
+ char line[ BIG_LINE ];
+ PR_snprintf( line, BIG_LINE, templates[ index ].format, context);
+ dsgw_emits( line );
+
+ } else if ( parse_status != DSGW_PARSE_STATUS_NO_OUTPUT ) {
+ /* I just can't believe there's no easy way to create
+ * a va_list. */
+ char line[ BIG_LINE ];
+ PR_snprintf( line, BIG_LINE, templates[ index ].format,
+ ( *argc > 0 && vars[ 0 ] != NULL ) ? vars[ 0 ]: "",
+ ( *argc > 1 && vars[ 1 ] != NULL ) ? vars[ 1 ]: "",
+ ( *argc > 2 && vars[ 2 ] != NULL ) ? vars[ 2 ]: "",
+ ( *argc > 3 && vars[ 3 ] != NULL ) ? vars[ 3 ]: "");
+ dsgw_emits( line );
+ }
+ } else if ( parse_status != DSGW_PARSE_STATUS_NO_OUTPUT ) {
+ /* We found a directive, but we can't identify it. Return non-zero
+ * value so caller knows to deal with it.
+ */
+ vars = dsgw_get_vars( position, argc );
+ *argv = vars;
+ return -1;
+ }
+ } else if ( !parseonly && parse_status != DSGW_PARSE_STATUS_NO_OUTPUT ) {
+ auto char *gcontext = NULL;
+ auto char *start_of_newline = (char *) dsgw_ch_strdup(line_input);
+ auto char *new_line_input = start_of_newline;
+
+ /* We found no directive at the beginning. Look for GCONTEXT
+ * It could be anywhere in the line. Sorry, but that's the way
+ * It has to be. - RJP
+ */
+ for (gcontext = strstr(new_line_input, GCONTEXT_DIRECTIVE);
+ gcontext != NULL;
+ gcontext = strstr(new_line_input, GCONTEXT_DIRECTIVE)){
+
+ *gcontext = '\0';
+ /*
+ * Print the new_line_input (everything up to the first
+ * GCONTEXT_DIRECTIVE
+ */
+ dsgw_HTML_emits( new_line_input );
+
+
+ /*Now print "context=whatever"*/
+ dsgw_emitf("context=%s", context);
+
+ /* Now skip past the directive */
+ new_line_input = gcontext + strlen(GCONTEXT_DIRECTIVE);
+ }
+
+ /* If there's anything left, output it*/
+ if (*new_line_input) {
+ dsgw_HTML_emits( new_line_input );
+ }
+
+ free ((void*)start_of_newline);
+ }
+
+ /* If we're here, we either handled it correctly or the line was benign.*/
+ return 0;
+}
+
+
+FILE *
+dsgw_open_html_file(char *filename, int erropts)
+{
+ FILE *f;
+ char *tfname = NULL;
+
+ tfname = dsgw_file2path( gc->gc_tmpldir, filename);
+ if (!(f = fopen(tfname, "r"))) {
+ /* punt */
+ dsgw_error(DSGW_ERR_OPENHTMLFILE, tfname, erropts, 0, NULL );
+ }
+
+ free( tfname );
+
+ return f;
+}
+
+
+#define DSGW_INCLUDE_DRCT "<!-- INCLUDE "
+#define DSGW_INCLUDE_DRCT_LEN 13
+#define DSGW_INCLSET_DRCT "<!-- INCLUDESET "
+#define DSGW_INCLSET_DRCT_LEN 16
+
+int
+dsgw_next_html_line(FILE *f, char *line)
+{
+ char *p, *incfile;
+ int linelen;
+ static FILE *incfp = NULL;
+ static FILE *parentfp = NULL;
+ static int incset_index = 0;
+ static dsgwinclset *incsetp = NULL;
+
+ if ( incfp != NULL && parentfp == f ) {
+ /* we're in the midst of an include -- read from include file */
+ if ( fgets(line, BIG_LINE, incfp ) != 0 ) {
+ return 1; /* success */
+ }
+
+ /* end of include file */
+ fclose( incfp );
+
+ /* if in middle of an include set, open and use next file in set */
+ if ( incsetp != NULL && ++incset_index < incsetp->dsiset_itemcount ) {
+ incfp = dsgw_open_html_file(
+ incsetp->dsiset_filenames[ incset_index ],
+ DSGW_ERROPT_EXIT );
+ return( dsgw_next_html_line( f, line ));
+ }
+ incfp = NULL;
+ incsetp = NULL;
+ }
+
+ if(!(fgets(line, BIG_LINE, f))) {
+ return 0; /* end of file */
+ }
+
+ if ( incfp != NULL ) {
+ return 1; /* ignore nested includes */
+ }
+
+ /* check for start of a simple or an include set based include */
+ incfile = NULL;
+ linelen = strlen( line );
+ if ( linelen > DSGW_INCLUDE_DRCT_LEN && strncasecmp( line,
+ DSGW_INCLUDE_DRCT, DSGW_INCLUDE_DRCT_LEN ) == 0 ) {
+ incfile = line + DSGW_INCLUDE_DRCT_LEN;
+ if (( p = strchr( incfile, ' ' )) != NULL ) {
+ *p = '\0';
+ }
+ } else if ( linelen > DSGW_INCLSET_DRCT_LEN && strncasecmp( line,
+ DSGW_INCLSET_DRCT, DSGW_INCLSET_DRCT_LEN ) == 0 ) {
+ char *sethandle;
+
+ sethandle = line + DSGW_INCLSET_DRCT_LEN;
+ if (( p = strchr( sethandle, ' ' )) != NULL ) {
+ *p = '\0';
+ }
+
+ for ( incsetp = gc->gc_includesets; incsetp != NULL;
+ incsetp = incsetp->dsiset_next ) {
+ if ( strcasecmp( sethandle, incsetp->dsiset_handle ) == 0 ) {
+ break;
+ }
+ }
+ if ( incsetp == NULL ) { /* set not found -- ignore it */
+ if ( p != NULL ) {
+ *p = ' ';
+ }
+ return( 1 );
+ }
+ incset_index = 0;
+ incfile = incsetp->dsiset_filenames[ 0 ];
+ }
+
+ if ( incfile != NULL ) {
+ incfp = dsgw_open_html_file( incfile, DSGW_ERROPT_EXIT );
+ parentfp = f;
+ return( dsgw_next_html_line( f, line ));
+ }
+
+ return 1;
+}
+
+
+static void
+dsgw_pageheader(int argc, char **argv)
+{
+ char line[BIG_LINE];
+
+ dsgw_emits("<center><table border=2 width=100%%>\n");
+
+ util_snprintf(line, BIG_LINE, "<tr>");
+ dsgw_emits(line);
+
+ util_snprintf(line, BIG_LINE, "<td align=center width=100%%>");
+ dsgw_emits(line);
+ util_snprintf(line, BIG_LINE, "<hr size=0 width=0>");
+ dsgw_emits(line);
+ util_snprintf(line, BIG_LINE, "<FONT size=+2><b>%s</b></FONT>"
+ "<hr size=0 width=0>"
+ "</th>", ( argc > 0 ) ? argv[0] : "" );
+ dsgw_emits(line);
+
+ dsgw_emits("</tr></table></center>\n");
+}
+
+
+static void
+dsgw_title( int argc, char **argv)
+{
+ char line[BIG_LINE];
+ dsgw_emits("<HTML>");
+ dsgw_head_begin();
+ util_snprintf(line, BIG_LINE, "\n<TITLE>%s</TITLE></HEAD>\n"
+ "<BODY %s>\n", ( argc > 0 ) ? argv[0] : "", dsgw_html_body_colors );
+ dsgw_emits(line);
+}
+
+
+static void
+dsgw_body( int argc, char **argv)
+{
+ char line[BIG_LINE];
+
+ if ( argc > 0 ) {
+ util_snprintf(line, BIG_LINE, "<BODY %s %s>\n", dsgw_html_body_colors,
+ ( argc > 0 ) ? argv[0] : "" );
+ } else {
+ util_snprintf(line, BIG_LINE, "<BODY %s>\n", dsgw_html_body_colors );
+ }
+
+ dsgw_emits(line);
+}
+
+
+static void
+dsgw_colors( int argc, char **argv)
+{
+ if ( argc > 0 ) {
+ dsgw_html_body_colors = dsgw_ch_strdup( argv[0] );
+ } else {
+ dsgw_html_body_colors = "";
+ }
+}
+
+
+static void
+dsgw_submit(int verify, char **vars)
+{
+ if(verify) {
+ dsgw_emits ("<SCRIPT language=JavaScript><!--\n"
+ "function verify(form)\n{\n"
+ " window.confirmedForm = form;\n");
+ dsgw_emit_confirm (NULL, "opener.confirmedForm.submit();", NULL /* no */,
+ XP_GetClientStr(DBT_doYouReallyWantToWindow_), 1,
+ XP_GetClientStr(DBT_doYouReallyWantTo_), vars[0]);
+ dsgw_emits ("}\n"
+ "// -->\n"
+ "</SCRIPT>\n");
+ }
+
+ dsgw_emits("<center><table border=2 width=100%%><tr>");
+
+ if(!verify) {
+ char outstr[256];
+ PR_snprintf(outstr, 256, "<td width=50%% align=center>"
+ "<input type=submit value=\"%s\">"
+ "</td>\n",
+ XP_GetClientStr(DBT_ok_1));
+ dsgw_emits(outstr);
+ } else {
+ char outstr[256];
+ PR_snprintf(outstr, 256, "<td width=50%% align=center>"
+ "<input type=button value=\"%s\" "
+ "onclick=\"verify(this.form)\">"
+ "</td>\n",
+ XP_GetClientStr(DBT_ok_2));
+ dsgw_emits(outstr);
+ }
+ {
+ char outstr[256];
+ PR_snprintf(outstr, 256, "<td width=50%% align=center>"
+ "<input type=reset value=\"%s\"></td>\n",
+ XP_GetClientStr(DBT_reset_));
+ dsgw_emits(outstr);
+ }
+
+ dsgw_emits("</tr></table></center>\n");
+
+ dsgw_emits("</form>\n");
+
+ dsgw_emits("<SCRIPT language=JavaScript>\n");
+ dsgw_emits("</SCRIPT>\n");
+}
+
+
+static void
+dsgw_dialogsubmit(void)
+{
+ char outstr[256];
+
+ dsgw_emits("<center><table border=2 width=100%%><tr>");
+
+ PR_snprintf(outstr, 256, "<td width=50%% align=center>"
+ "<input type=submit value=\"%s\">"
+ "</td>\n",
+ XP_GetClientStr(DBT_done_));
+ dsgw_emits(outstr);
+ PR_snprintf(outstr, 256, "<td width=50%% align=center>"
+ "<input type=button value=\"%s\" "
+ "onClick=\"top.close()\"></td>\n",
+ XP_GetClientStr(DBT_cancel_2));
+ dsgw_emits(outstr);
+
+ dsgw_emits("</tr></table></center>\n");
+
+ dsgw_emits("</form>\n");
+
+ dsgw_emits("<SCRIPT language=JavaScript>\n");
+ dsgw_emits("</SCRIPT>\n");
+}
+
+
+static void
+dsgw_conditional( char *name, int argc, char **argv, condfunc conditionalfn,
+ void *condarg )
+{
+#define DSGW_COND_STATUS_NO_COND_SEEN 0
+#define DSGW_COND_STATUS_IN_IF 1
+#define DSGW_COND_STATUS_IN_ELSE 2
+#define DSGW_COND_STATUS_IN_ELIF 3
+
+ static int cond_status = DSGW_COND_STATUS_NO_COND_SEEN;
+ static int cond_was_true = 0;
+
+ if ( strncmp( name, "IF", 2 ) == 0 ) {
+ if ( cond_status != DSGW_COND_STATUS_NO_COND_SEEN ) {
+ template_error( XP_GetClientStr(DBT_foundAnotherIfNestedIfsAreNotSup_) );
+ return;
+ }
+ cond_was_true = dsgw_condition_true( argc, argv, conditionalfn,
+ condarg );
+ parse_status = cond_was_true ? DSGW_PARSE_STATUS_OUTPUT
+ : DSGW_PARSE_STATUS_NO_OUTPUT;
+ cond_status = DSGW_COND_STATUS_IN_IF;
+
+ } else if ( strncmp( name, "ELSE", 4 ) == 0 ) {
+ if ( cond_status == DSGW_COND_STATUS_NO_COND_SEEN ) {
+ template_error( XP_GetClientStr(DBT_foundElseButDidnTSeeAnIf_) );
+ return;
+ }
+ if ( cond_status == DSGW_COND_STATUS_IN_ELSE ) {
+ template_error( XP_GetClientStr(DBT_foundElseAfterElseExpectingEndif_) );
+ return;
+ }
+ parse_status = cond_was_true ? DSGW_PARSE_STATUS_NO_OUTPUT
+ : DSGW_PARSE_STATUS_OUTPUT;
+ cond_status = DSGW_COND_STATUS_IN_ELSE;
+
+ } else if ( strncmp( name, "ELIF", 4 ) == 0 ) {
+ if ( cond_status == DSGW_COND_STATUS_NO_COND_SEEN ) {
+ template_error( XP_GetClientStr(DBT_foundElifButDidnTSeeAnIf_) );
+ return;
+ }
+ if ( cond_status == DSGW_COND_STATUS_IN_ELSE ) {
+ template_error( XP_GetClientStr(DBT_foundElifAfterElseExpectingEndif_) );
+ return;
+ }
+
+ if ( cond_was_true ) {
+ parse_status = DSGW_PARSE_STATUS_NO_OUTPUT;
+ } else {
+ cond_was_true = dsgw_condition_true( argc, argv, conditionalfn,
+ condarg );
+ parse_status = cond_was_true ? DSGW_PARSE_STATUS_OUTPUT
+ : DSGW_PARSE_STATUS_NO_OUTPUT;
+ }
+ cond_status = DSGW_COND_STATUS_IN_ELIF;
+
+ } else if ( strncmp( name, "ENDIF", 5 ) == 0 ) {
+ if ( cond_status == DSGW_COND_STATUS_NO_COND_SEEN ) {
+ template_error( XP_GetClientStr(DBT_foundEndifButDidnTSeeAnIf_) );
+ }
+ parse_status = DSGW_PARSE_STATUS_NO_IF_SEEN;
+ cond_status = DSGW_COND_STATUS_NO_COND_SEEN;
+ }
+}
+
+
+static void
+emit_last_op_info( int argc, char **argv )
+{
+ char *s;
+
+ if ( dsgw_last_op_info != NULL ) {
+ if (( s = get_arg_by_name( "prefix", argc, argv )) != NULL ) {
+ dsgw_emits( s );
+ }
+
+ dsgw_emits( dsgw_last_op_info );
+
+ if (( s = get_arg_by_name( "suffix", argc, argv )) != NULL ) {
+ dsgw_emits( s );
+ }
+ }
+}
+
+
+static void
+emit_version_str()
+{
+ dsgw_emits( Versionstr );
+}
+
+
+static void
+emit_alert_noentries()
+{
+ dsgw_emit_alertForm();
+ dsgw_emits( "<SCRIPT LANGUAGE=JavaScript><!--\n" );
+ dsgw_emit_alert (NULL, NULL, XP_GetClientStr(DBT_SearchFound0Entries_),
+ 0L, "", "", "");
+ dsgw_emits( "// -->\n</SCRIPT>\n");
+}
+
+
+static void
+template_error( char *msg )
+{
+ dsgw_emitf( XP_GetClientStr(DBT_BrBTemplateErrorBSBrN_), msg );
+}
+
+
+static int
+dsgw_condition_true( int argc, char **argv, condfunc conditionalfn,
+ void *condarg )
+{
+ char *save_argv0;
+ int rc;
+
+ if ( argc < 1 || conditionalfn == NULL ) {
+ return( 1 ); /* unknown, but we default to true */
+ }
+
+ if ( argv[0][0] == '!' ) { /* NOT */
+ save_argv0 = argv[0];
+ argv[0] = save_argv0 + 1;
+ } else {
+ save_argv0 = NULL;
+ }
+
+ rc = (*conditionalfn)( argc, argv, condarg );
+
+ if ( save_argv0 != NULL ) {
+ argv[0] = save_argv0;
+ rc = !rc; /* '!' was seen -- reverse the result */
+ }
+
+ return( rc );
+}
+
+static int
+dsgw_get_directive(
+char *string
+)
+{
+ int index = -1;
+ register int x;
+
+ for ( x = 0; templates[ x ].name != NULL; x++ ) {
+ if ( !strncmp( string, templates[ x ].name,
+ strlen( templates[ x ].name ))) {
+ index = x;
+ break;
+ }
+ }
+ return index;
+}
+
+int
+dsgw_directive_is(char *target, char *directive)
+{
+ char *position = (target + strlen(DIRECTIVE_START));
+ return(!(strncmp(directive, position, strlen(directive))));
+}
+
+static char **
+dsgw_get_vars(
+char *string,
+int *argc
+)
+{
+ char **vars = (char **) NULL;
+ register int x;
+ int isvar;
+ char scratch[BIG_LINE];
+ char lastchar, *p;
+ int numvars = 0;
+
+ isvar = -1;
+ x = 0;
+ scratch[0] = '\0';
+ lastchar = ' ';
+
+ while ( *string != '\0' ) {
+ if (( *string == '\"' ) && ( lastchar != '\\' )) {
+ if ( isvar != -1 ) {
+ numvars++;
+ vars = (char **)dsgw_ch_realloc( vars,
+ ( numvars + 1 ) * sizeof ( char * ));
+ vars[ numvars - 1 ] = (char *) dsgw_ch_strdup( scratch );
+ if (( p = strchr( vars[ numvars - 1 ], '=' )) != NULL ) {
+ dsgw_form_unescape( p + 1 );
+ }
+ vars[ numvars ] = NULL;
+ isvar = -1;
+ } else {
+ isvar = 0;
+ }
+ } else {
+ if ( isvar != -1 ) {
+ isvar += LDAP_UTF8COPY(scratch + isvar, string);
+ scratch[ isvar ] = '\0';
+ } else {
+ if ( *string == DIRECTIVE_END ) {
+ break;
+ }
+ }
+ }
+ lastchar = *string;
+ LDAP_UTF8INC(string);
+ }
+ *argc = numvars;
+ return vars;
+}
+
+
+
+
+/*
+ * Search the given arg vector for a "tag=value" string where "tag" is
+ * the same string as "name". If found, return a pointer to the beginning
+ * of the "value" string. If the value string is missing (e.g. "tag="
+ * was given), return a zero-length string. If no matching tag was found,
+ * return NULL.
+ */
+char *
+get_arg_by_name( char *name, int argc, char **argv )
+{
+ int i;
+
+ if (( i = dsgw_get_arg_pos_by_name( name, argc, argv )) >= 0 ) {
+ return( &argv[ i ][ strlen( name ) + 1 ] );
+ } else {
+ return( NULL );
+ }
+}
+
+
+int
+dsgw_get_arg_pos_by_name( char *name, int argc, char **argv )
+{
+ int i;
+ int nl = strlen( name );
+
+ for ( i = 0; i < argc; i++ ) {
+ if ( argv[ i ] != NULL ) {
+ if ( !strncasecmp( name, argv[ i ], nl )) {
+ if (( argv[ i ][ nl ] == '=' )) {
+ return( i );
+ }
+ }
+ }
+ }
+ return( -1 );
+}
+
+
+void
+dsgw_argv_free( char **argv )
+{
+ char **p;
+
+ if ( argv != NULL ) {
+ for ( p = argv; *p != NULL; ++p ) {
+ free( *p );
+ }
+ free( argv );
+ }
+}
+
+
+savedlines *
+dsgw_savelines_alloc()
+{
+ savedlines *slp;
+
+ slp = dsgw_ch_malloc( sizeof( savedlines ));
+ memset( slp, 0, sizeof( savedlines ));
+ return( slp );
+}
+
+
+void
+dsgw_savelines_free( savedlines *svlp )
+{
+ int i;
+
+ for ( i = 0; i < svlp->svl_count; ++i ) {
+ free( svlp->svl_line[ i ] );
+ }
+ free( svlp );
+}
+
+
+void
+dsgw_savelines_rewind( savedlines *svlp )
+{
+ svlp->svl_current = 0;
+}
+
+
+void
+dsgw_savelines_save( savedlines *svlp, char *line )
+{
+ svlp->svl_line = (char **)dsgw_ch_realloc( svlp->svl_line,
+ (1 + svlp->svl_count ) * sizeof( char * ));
+ svlp->svl_line[ svlp->svl_count++ ] = dsgw_ch_strdup( line );
+}
+
+
+char *
+dsgw_savelines_next( savedlines *svlp )
+{
+ char *p;
+
+ if ( svlp->svl_current >= svlp->svl_count ) {
+ return( NULL );
+ }
+
+ p = svlp->svl_line[ svlp->svl_current ];
+ ++svlp->svl_current;
+
+ return( p );
+}
diff --git a/ldap/clients/dsgw/lang.c b/ldap/clients/dsgw/lang.c
new file mode 100644
index 00000000..3771ead5
--- /dev/null
+++ b/ldap/clients/dsgw/lang.c
@@ -0,0 +1,246 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+/*
+ * Convert a document from ../html, or redirect the server to it.
+ */
+
+#include "dsgw.h"
+#include "dbtdsgw.h"
+
+#ifdef XP_WIN
+#define PATH_SLASH "\\"
+#else
+#define PATH_SLASH "/"
+#endif
+
+static int
+doc_is_UTF_8 (const char* docname)
+{
+ static const char* suffixes [] = {".html", ".htm", NULL};
+ const size_t doclen = strlen (docname);
+ const char** suf = suffixes;
+ for (suf = suffixes; *suf; ++suf) {
+ const size_t suflen = strlen (*suf);
+ if (doclen >= suflen && !strcasecmp (*suf, docname + doclen - suflen)) {
+ return 1;
+ }
+ }
+ return 0;
+}
+
+static const char*
+skip_prefix (const char* prefix, const char* s)
+{
+ const size_t prelen = strlen (prefix);
+ if (!strncmp (prefix, s, prelen)) return s + prelen;
+ return s;
+}
+
+static int
+doc_convert( FILE** fpp, char* stop_at_directive, int erropts )
+{
+ char **argv, line[ BIG_LINE ];
+ int argc;
+
+ while ( dsgw_next_html_line( *fpp, line )) {
+ if ( dsgw_parse_line( line, &argc, &argv, 0, dsgw_simple_cond_is_true,
+ NULL )) {
+ if ( stop_at_directive != NULL &&
+ dsgw_directive_is( line, stop_at_directive )) {
+ return( 0 );
+
+ } else if ( dsgw_directive_is( line, DRCT_HEAD )) {
+ dsgw_head_begin();
+ dsgw_emits ("\n");
+
+ } else if ( dsgw_directive_is( line, DRCT_DS_POSTEDVALUE )) {
+ dsgw_emit_cgi_var (argc, argv);
+
+ } else if ( dsgw_directive_is( line, DRCT_DS_CLOSEBUTTON )) {
+ dsgw_emit_button (argc, argv, "onClick=\"top.close()\"");
+
+ } else if ( dsgw_directive_is( line, "DS_CONFIRM_SCRIPT" )) {
+ {
+ auto char* yes = dsgw_get_cgi_var ("YES", DSGW_CGIVAR_OPTIONAL);
+ auto char* no = dsgw_get_cgi_var ("NO", DSGW_CGIVAR_OPTIONAL);
+ dsgw_emitf ("<SCRIPT LANGUAGE=JavaScript><!--\n"
+ "function OK() {\n");
+ if (yes) dsgw_emitf (" %s\n", yes);
+ dsgw_emits (" top.close();\n"
+ "}\n"
+ "\n"
+ "function Cancel() {\n");
+ if (no) dsgw_emitf (" %s\n", no);
+ dsgw_emits (" top.close();\n"
+ "}\n"
+ "// -->\n"
+ "</SCRIPT>\n");
+ }
+
+ } else if ( dsgw_directive_is( line, "DS_CONFIRM_BUTTON_OK" )) {
+ dsgw_emitf ("<INPUT TYPE=BUTTON VALUE=\"%s\" onClick=\"parent.OK()\">\n",
+ XP_GetClientStr(DBT_ok_2));
+
+ } else if ( dsgw_directive_is( line, "DS_CONFIRM_BUTTON_CANCEL" )) {
+ dsgw_emitf ("<INPUT TYPE=BUTTON VALUE=\"%s\" onClick=\"parent.Cancel()\">\n",
+ XP_GetClientStr(DBT_cancel_2));
+
+ } else {
+ dsgw_emits (line);
+ }
+ }
+ }
+ fclose( *fpp );
+ *fpp = NULL;
+ return( 0 );
+}
+
+int
+main( int argc, char *argv[]
+#ifdef DSGW_DEBUG
+ , char *env[]
+#endif
+ )
+{
+ /*static char* docdir = ".." PATH_SLASH "html" PATH_SLASH;*/
+ static char* docdir = NULL;
+ static char* helpdir = NULL;
+ char* docname = NULL;
+ char* tfname;
+ int result = 0;
+ char *qs = NULL;
+ int manual_file = 0; /* Flag: is the file a documentation file? */
+
+ /* Parse out the file=blah.html */
+ if (( qs = getenv( "QUERY_STRING" )) != NULL && *qs != '\0' ) {
+ /* parse the query string: */
+ auto char *p, *iter = NULL;
+ qs = dsgw_ch_strdup( qs );
+
+ for ( p = ldap_utf8strtok_r( qs, "&", &iter ); p != NULL;
+ p = ldap_utf8strtok_r( NULL, "&", &iter )) {
+
+ /*
+ * Get the conf file name. It'll be translated
+ * into /dsgw/context/CONTEXT.conf if
+ * CONTEXT is all alphanumeric (no slahes,
+ * or dots). CONTEXT is passed into the cgi.
+ * if context=CONTEXT is not there, or PATH_INFO
+ * was used, then use dsgw.conf
+ */
+ if ( !strncasecmp( p, "context=", 8 )) {
+ context = dsgw_ch_strdup( p + 8 );
+ dsgw_form_unescape( context );
+ continue;
+ }
+
+
+ /*Get the filename and check it for naughtiness -RJP*/
+ if ( !strncasecmp( p, "file=", 5 )) {
+
+ /*If there is no file specified, go with index.html*/
+ if (strlen(p) == 5) {
+ docname = dsgw_ch_strdup("index.html");
+ } else {
+ docname = dsgw_ch_strdup( p + 5 );
+ dsgw_form_unescape( docname );
+ }
+
+
+ /*If we're handling a help page, forgo the filename check*/
+ if ( strlen( docname ) > DSGW_MANUALSHORTCUT_LEN &&
+ strncmp( docname, DSGW_MANUALSHORTCUT,
+ DSGW_MANUALSHORTCUT_LEN ) == 0 ) {
+ manual_file = 1;
+ }
+
+ /*
+ * Make sure the person isn't trying to get
+ * some file not in the gateway.
+ */
+ if (manual_file == 0 && !dsgw_valid_docname(docname)) {
+ dsgw_error( DSGW_ERR_BADFILEPATH, docname,
+ DSGW_ERROPT_EXIT, 0, NULL );
+ }
+ continue;
+ }
+
+
+ }
+
+ free( qs ); qs = NULL;
+ }
+
+ (void)dsgw_init( argc, argv, DSGW_METHOD_GET | DSGW_METHOD_POST );
+ docdir = dsgw_get_docdir();
+
+ /*If there is no docname, default to index.html*/
+ if (docname == NULL) {
+ docname = dsgw_ch_strdup("index.html");
+ }
+
+ if (!strcmp (docname, "/")) {
+ printf( "Location: %s?context=%s\n\n",
+ dsgw_getvp( DSGW_CGINUM_SEARCH ), context );
+ return( result );
+ } else {
+ char* p;
+ if (*docname == '/') ++docname;
+ docname = dsgw_ch_strdup( docname );
+ if (( p = strrchr( docname, '&' )) != NULL ) {
+ *p++ = '\0';
+ if ( strncasecmp( p, "info=", 5 ) == 0 ) {
+ dsgw_last_op_info = dsgw_ch_strdup( p + 5 );
+ dsgw_form_unescape( dsgw_last_op_info );
+ }
+ }
+ }
+
+ if (manual_file) {
+ helpdir = dsgw_file2path ( DSGW_MANROOT, "slapd/gw/manual/" );
+ tfname = (char *)dsgw_ch_malloc( strlen( helpdir ) +
+ strlen( docname + DSGW_MANUALSHORTCUT_LEN ) +
+ 1 );
+ sprintf( tfname, "%s%s",
+ helpdir, docname + DSGW_MANUALSHORTCUT_LEN);
+ free( helpdir );
+
+ } else {
+ tfname = dsgw_file2path (docdir, docname);
+ }
+
+ if ( ! doc_is_UTF_8 (tfname)) { /* Redirect the Web server: */
+ printf ("Location: %s%s%s\n\n",
+ getenv("SERVER_URL"), gc->gc_gwnametrans, skip_prefix (docdir, tfname));
+ /* It's tempting to also redirect if is_UTF_8(gc->gc_charset).
+ But it would be wrong: the Web server would transmit an
+ HTTP Content-type with no charset parameter. The header
+ must include ";charset=UTF-8". So we transmit it:
+ */
+ } else { /* Transmit the document: */
+ const int erropts = DSGW_ERROPT_EXIT;
+ auto FILE* docfile;
+
+ dsgw_send_header();
+#ifdef DSGW_DEBUG
+ dsgw_logstringarray( "env", env );
+#endif
+ if ((docfile = fopen(tfname, "r")) == NULL) {
+ dsgw_error( DSGW_ERR_OPENHTMLFILE, tfname, erropts, 0, NULL );
+ return( -1 );
+ }
+ result = doc_convert( &docfile, NULL, erropts );
+ }
+/*
+ * XXXmcs: the following free() causes a crash on NT... so don't do it!
+ */
+#if 0
+ free( tfname );
+#endif
+
+ return result;
+}
diff --git a/ldap/clients/dsgw/ldaputil.c b/ldap/clients/dsgw/ldaputil.c
new file mode 100644
index 00000000..d574cd1f
--- /dev/null
+++ b/ldap/clients/dsgw/ldaputil.c
@@ -0,0 +1,1564 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+/*
+ * ldaputil.c -- LDAP utility functions -- HTTP gateway
+ *
+ * Copyright (c) 1996 Netscape Communications Corp.
+ * All rights reserved.
+ */
+
+#include "dsgw.h"
+#include "dbtdsgw.h"
+#include "../../include/disptmpl.h"
+#ifndef NO_LIBLCACHE
+#include <lcache.h>
+#endif
+#if XP_WIN32
+#include <windows.h>
+#include <io.h>
+#include <fcntl.h>
+#endif
+
+static dsgwtmplinfo *init_listdisplay( char *tmplname, unsigned long options );
+static int do_search( dsgwtmplinfo *tip, LDAP *ld, char *base, int scope,
+ char *filter, LDAPMessage **msgpp );
+static void handle_search_results( dsgwtmplinfo *tip, LDAP *ld, int rc,
+ LDAPMessage *msgp, unsigned long options );
+static int LDAP_CALL LDAP_CALLBACK
+ get_rebind_credentials( LDAP *ld, char **whop, char **credp,
+ int *methodp, int freeit, void *arg );
+static void strcpy_special_undo( char *d, char *s );
+static int entry2htmlwrite( void *fp, char *buf, int len );
+static void emit_one_loc_dn( char *dn, char *friendlyname, char *rootname,
+ int only_one );
+static char *uid2dn( LDAP *ld, char *uid, char *base, int *ldaprc,
+ char **lderrtxtp, char **errsp );
+static void return_one_attr( LDAP *ld, LDAPMessage *entry, char *attrtype,
+ char *mimetype, int valindex );
+static void break_up_one_attr( char *attr, char **attrtypep, char **mimetypep,
+ int *valindexp );
+
+/* binddn and bindpasswd are used in get_rebind_credentials() */
+static char *binddn = NULL, *bindpasswd = NULL;
+
+#ifndef DSGW_NO_SSL
+/*static CERTCertDBHandle certdbh;*/
+static char * certdbh;
+
+#endif
+
+/*
+ * initialize various LDAP library things -- any non-NULL parameters are
+ * initialized and set. If an error occurs, this function will not
+ * return at all.
+ * If an LDAP connection was opened, this function will return either
+ * DSGW_BOUND_ASUSER if a valid cookie was found in the environment
+ * and we were able to bind to the directory as that user. If no
+ * cookie was found, or the cookie would not be used to bind, then
+ * an anonymous bind is performed and DSGW_BOUND_ANONYMOUS is returned.
+ * If skipac (skip authentication check) is non-zero, then this
+ * function will always authenticate as NULL.
+ *
+ * If we are configured to use a local LDAP database instead of a real
+ * directory server, we always do an unauthenticated bind but we return
+ * DSGW_BOUND_ASUSER. This is done to keep our CGIs that check for a
+ * return code of DSGW_BOUND_ASUSER happy.
+ *
+ * If skipauthwarning is set, then we don't display the javascript
+ * auth warning for searches. - RJP
+ */
+int
+dsgw_init_ldap( LDAP **ldp, LDAPFiltDesc **lfdpp, int skipac, int skipauthwarning )
+{
+ char *path;
+ char *userid, *dn, *rndstr, *passwd, *cookie, *p;
+ int ret = 0, optval, limit;
+#ifdef XP_WIN32
+ WSADATA wsadata;
+#endif
+
+ /* LDAP search filters */
+ if ( lfdpp != NULL ) {
+ path = dsgw_file2path( gc->gc_configdir, DSGW_FILTERFILE );
+ if (( *lfdpp = ldap_init_getfilter( path )) == NULL ) {
+ dsgw_error( DSGW_ERR_BADCONFIG, path, DSGW_ERROPT_EXIT, 0, NULL );
+ }
+ free( path );
+ ret = 0;
+ }
+
+#ifdef XP_WIN32
+
+ if( ret = WSAStartup(0x0101, &wsadata ) != 0 )
+ dsgw_error( DSGW_ERR_WSAINIT, NULL, DSGW_ERROPT_EXIT, 0, NULL );
+
+#endif /* XP_WIN32 */
+
+ /* LDAP connection */
+ if ( ldp != NULL ) {
+ if ( gc == NULL ) {
+ dsgw_error( DSGW_ERR_INTERNAL,
+ XP_GetClientStr(DBT_ldapInitLcacheInitAttemptedBefor_),
+ DSGW_ERROPT_EXIT, 0, NULL );
+ }
+ if ( gc->gc_localdbconf == NULL ) {
+ /* "Real LDAP server" case */
+#ifdef DSGW_NO_SSL
+ *ldp = ldap_init( gc->gc_ldapserver, gc->gc_ldapport );
+#else /* DSGW_NO_SSL */
+ if ( gc->gc_ldapssl ) {
+ if ( gc->gc_securitypath == NULL ) {
+ dsgw_error( DSGW_ERR_NOSECPATH, NULL, DSGW_ERROPT_EXIT,
+ 0, NULL );
+ }
+ if ( ldapssl_client_init( gc->gc_securitypath,
+ &certdbh ) < 0 ) {
+ dsgw_error( DSGW_ERR_SSLINIT, gc->gc_securitypath,
+ DSGW_ERROPT_EXIT, 0, NULL );
+ }
+ *ldp = ldapssl_init( gc->gc_ldapserver, gc->gc_ldapport, 1 );
+ dsgw_NSSInitializedAlready = 1;
+ } else {
+ *ldp = ldap_init( gc->gc_ldapserver, gc->gc_ldapport );
+ }
+#endif /* !DSGW_NO_SSL */
+ if ( *ldp == NULL ) {
+ dsgw_error( DSGW_ERR_LDAPINIT, NULL, DSGW_ERROPT_EXIT, 0,
+ NULL );
+ }
+
+ }
+#ifndef NO_LIBLCACHE
+else {
+ /* Local DB case */
+ if (( *ldp = ldap_init( NULL, 0 )) == NULL ) {
+ dsgw_error( DSGW_ERR_LDAPINIT, NULL, DSGW_ERROPT_EXIT, 0,
+ NULL );
+ }
+ if ( lcache_init( *ldp, gc->gc_localdbconf ) != 0 ) {
+ dsgw_error( DSGW_ERR_LCACHEINIT, strerror(errno),
+ DSGW_ERROPT_EXIT, 0, NULL );
+ }
+ optval = 1;
+ (void) ldap_set_option( *ldp, LDAP_OPT_CACHE_ENABLE, &optval );
+ optval = LDAP_CACHE_LOCALDB;
+ (void) ldap_set_option( *ldp, LDAP_OPT_CACHE_STRATEGY, &optval );
+ }
+#endif
+ rndstr = dn = NULL;
+ passwd = dsgw_get_cgi_var( "passwd", DSGW_CGIVAR_OPTIONAL );
+
+ if (( p = dsgw_get_cgi_var( "ldapsizelimit", DSGW_CGIVAR_OPTIONAL ))
+ != NULL ) {
+ limit = atoi( p );
+ (void) ldap_set_option( *ldp, LDAP_OPT_SIZELIMIT, &limit );
+ }
+
+ if (( p = dsgw_get_cgi_var( "ldaptimelimit", DSGW_CGIVAR_OPTIONAL ))
+ != NULL ) {
+ limit = atoi( p );
+ (void) ldap_set_option( *ldp, LDAP_OPT_TIMELIMIT, &limit );
+ }
+
+ /*
+ * we don't bother with authentication if:
+ * the "skipac" flag is non-zero OR
+ * no "passwd" form element was passed in and we are using local db
+ */
+ if ( !skipac && ( passwd != NULL || gc->gc_localdbconf == NULL )) {
+ /*
+ * There are several ways in which authentication might
+ * happen.
+ */
+ if ( gc->gc_admserv ) {
+ /*
+ * We're running under the admin server, so ask libadmin
+ * for the user's credentials. If a password comes as a form
+ * field, it overrides value we get from admin server
+ */
+ (void)dsgw_get_adm_identity( *ldp, &userid, &dn,
+ ( passwd == NULL ) ? &passwd : NULL, DSGW_ERROPT_EXIT );
+
+#ifdef DSGW_DEBUG
+ dsgw_log( "dsgw_init_ldap: run under admserv, user id = %s, "
+ "dn = %s, passwd = %s, skipac = %d, dn = 0x%x\n",
+ userid == NULL ? "NULL" : userid,
+ dn == NULL ? "NULL" : dn,
+ passwd == NULL ? "NULL" : passwd,
+ skipac, dn );
+#endif
+ } else {
+ /*
+ * Not running under admin server. The DN and password
+ * might come in as form fields, or the authentication
+ * might be accomplished via a client-side cookie which
+ * gets looked up in the gateway's cookie database.
+ */
+
+ /* check for dn/binddn in request */
+ if ( passwd != NULL ) {
+ if (( dn = dsgw_get_escaped_cgi_var( "escapedbinddn",
+ "binddn", DSGW_CGIVAR_OPTIONAL )) == NULL &&
+ ( dn = dsgw_get_cgi_var( "dn",
+ DSGW_CGIVAR_OPTIONAL )) == NULL ) {
+ free( passwd );
+ passwd = NULL;
+ } else {
+ /* got DN: undo extra level of escaping */
+ dsgw_form_unescape( dn );
+ }
+ }
+
+ if ( passwd == NULL ) {
+ /* Check for a valid authentication cookie */
+ cookie = dsgw_get_auth_cookie();
+ if ( cookie != NULL ) {
+ if ( dsgw_parse_cookie( cookie, &rndstr, &dn ) == 0 ) {
+ int ckrc;
+ if (( ckrc = dsgw_ckdn2passwd( rndstr, dn,
+ &passwd )) != 0 ) {
+
+ passwd = NULL;
+ dn = NULL;
+ /*
+ * Delete the cookie and print out the error message.
+ * dn2passwd_error() returns 1 if the CGI should exit,
+ * 0 if it should continue.
+ */
+ if (dsgw_dn2passwd_error( ckrc, skipauthwarning )) {
+ exit( 0 );
+ }
+
+ }
+ }
+ }
+
+ if ( rndstr != NULL ) {
+ free( rndstr );
+ }
+ if ( cookie != NULL ) {
+ free( cookie );
+ }
+ }
+ }
+ }
+
+ /*
+ * try to use LDAP version 3 but fall back to v2 if bind fails
+ */
+ optval = LDAP_VERSION3;
+ (void)ldap_set_option( *ldp, LDAP_OPT_PROTOCOL_VERSION, &optval );
+
+ /*
+ * If everything above failed to set the dn/password, then use
+ * the binddn and bindpw, if any.
+ */
+ if (dn == NULL && passwd == NULL &&
+ strlen(gc->gc_binddn) > 0 && strlen(gc->gc_bindpw) > 0) {
+ dn = dsgw_ch_strdup(gc->gc_binddn);
+ passwd = dsgw_ch_strdup(gc->gc_bindpw);
+ }
+
+ if (( ret = ldap_simple_bind_s( *ldp, dn, passwd ))
+ == LDAP_PROTOCOL_ERROR ) {
+ optval = LDAP_VERSION2;
+ (void)ldap_set_option( *ldp, LDAP_OPT_PROTOCOL_VERSION,
+ &optval );
+ ret = ldap_simple_bind_s( *ldp, dn, passwd );
+ }
+
+ if ( ret != LDAP_SUCCESS ){
+ dsgw_ldap_error( *ldp, DSGW_ERROPT_DURINGBIND );
+
+ /* Display back button */
+ dsgw_form_begin( NULL, NULL );
+ dsgw_emits( "\n<CENTER><TABLE border=2 width=\"100%\"><TR>\n" );
+ dsgw_emits( "<TD WIDTH=\"100%\" ALIGN=\"center\">\n" );
+ dsgw_emitf( "<INPUT TYPE=\"button\" VALUE=\"%s\" "
+ "onClick=\"history.back()\">\n",
+ XP_GetClientStr(DBT_goBack_) );
+ dsgw_emits( "\n</TABLE></CENTER></FORM>\n" );
+ exit(0);
+ }
+
+ if (( dn != NULL ) && ( passwd != NULL )) {
+ ret = DSGW_BOUND_ASUSER;
+ binddn = dn;
+ bindpasswd = passwd;
+ ldap_set_rebind_proc( *ldp, get_rebind_credentials, NULL );
+ } else if ( gc->gc_localdbconf != NULL ) {
+ ret = DSGW_BOUND_ASUSER; /* a small, harmless lie */
+ } else {
+ ret = DSGW_BOUND_ANONYMOUS;
+ }
+
+ }
+ return ret;
+}
+
+
+/*
+ * get user identity from the admin. server (if running under it)
+ * if uidp is non-NULL, it is set to point to user's login id.
+ * if dnp is non-NULL, it is set to point to user's DN.
+ * if pwdp is non-NULL, it is set to point to user's password.
+ * Returns: 0 if all goes well, -1 if an error occurs.
+ *
+ * Note that ld is used only if dnp != NULL, and then only if the admin server
+ * returns NULL when asked for the DN.
+ */
+int
+dsgw_get_adm_identity( LDAP *ld, char **uidp, char **dnp, char **pwdp,
+ int erropts )
+{
+ int rc, need_to_get_dn;
+ char *uid;
+ static int adm_inited = 0;
+
+ if ( !gc->gc_admserv ) {
+ dsgw_error( DSGW_ERR_ADMSERV_CREDFAIL,
+ XP_GetClientStr(DBT_notRunningUnderTheAdministration_),
+ erropts, 0, NULL );
+ return( -1 );
+ }
+
+ if ( !adm_inited ) {
+ if ( ADM_InitializePermissions( &rc ) < 0 ) {
+ dsgw_error( DSGW_ERR_ADMSERV_CREDFAIL,
+ XP_GetClientStr(DBT_couldNotInitializePermissions_),
+ erropts, 0, NULL );
+ return( -1 );
+ }
+ adm_inited = 1;
+ }
+
+ need_to_get_dn = ( dnp != NULL );
+
+ if ( need_to_get_dn && ADM_GetUserDNString( &rc, dnp ) < 0 ) {
+ dsgw_error( DSGW_ERR_ADMSERV_CREDFAIL,
+ XP_GetClientStr(DBT_couldNotMapUsernameToADnErrorFro_),
+ erropts, 0, NULL );
+ return( -1 );
+ }
+
+ /*
+ * get userid if:
+ * 1. requested by caller (uidp != NULL)
+ * or 2. DN was requested but Admin Server didn't return the DN
+ */
+ if (( uidp != NULL || ( need_to_get_dn && *dnp == NULL )) &&
+ ( ADM_GetCurrentUsername( &rc, &uid ) < 0 || uid == NULL )) {
+ dsgw_error( DSGW_ERR_ADMSERV_CREDFAIL,
+ XP_GetClientStr(DBT_couldNotGetCurrentUsername_), erropts,
+ 0, NULL );
+ return( -1 );
+ }
+
+ if ( uidp != NULL ) {
+ *uidp = uid;
+ }
+
+ if ( need_to_get_dn && *dnp == NULL ) {
+ /*
+ * try to map userid to DN using LDAP search
+ */
+ int lderr;
+ char *errstr, *lderrtxt;
+
+ if (( *dnp = uid2dn( ld, uid, gc->gc_ldapsearchbase, &lderr,
+ &lderrtxt, &errstr )) == NULL ) {
+ dsgw_error( DSGW_ERR_ADMSERV_CREDFAIL, errstr, erropts, lderr,
+ lderrtxt );
+ return( -1 );
+ }
+ }
+
+ if ( pwdp != NULL && ADM_GetCurrentPassword( &rc, pwdp ) < 0 ) {
+ dsgw_error( DSGW_ERR_ADMSERV_CREDFAIL,
+ XP_GetClientStr(DBT_couldNotGetCurrentUserPassword_), erropts,
+ 0, NULL );
+ return( -1 );
+ }
+
+ return( 0 );
+}
+
+
+void
+dsgw_ldap_error( LDAP *ld, int erropts )
+{
+ int lderr;
+ char *lderrtxt = NULL;
+
+ lderr = ldap_get_lderrno( ld, NULL, &lderrtxt );
+ dsgw_error( DSGW_ERR_LDAPGENERAL, dsgw_ldaperr2string( lderr ),
+ erropts, lderr, lderrtxt );
+}
+
+
+struct ldap_searchobj *
+dsgw_type2searchobj( struct ldap_searchobj *solistp, char *type )
+{
+ struct ldap_searchobj *sop;
+
+ for ( sop = ldap_first_searchobj( solistp ); sop != NULL;
+ sop = ldap_next_searchobj( solistp, sop )) {
+ if ( strcasecmp( type, sop->so_objtypeprompt ) == 0 ) {
+ return( sop );
+ }
+ }
+
+ return( NULL );
+}
+
+
+struct ldap_searchattr *
+dsgw_label2searchattr( struct ldap_searchobj *sop, char *label )
+{
+ struct ldap_searchattr *sap;
+
+ for ( sap = sop->so_salist; sap != NULL; sap = sap->sa_next ) {
+ if ( strcasecmp( label, sap->sa_attrlabel ) == 0 ) {
+ return( sap );
+ }
+ }
+
+ return( NULL );
+}
+
+
+struct ldap_searchmatch *
+dsgw_prompt2searchmatch( struct ldap_searchobj *sop, char *prompt )
+{
+ struct ldap_searchmatch *smp;
+
+ for ( smp = sop->so_smlist; smp != NULL; smp = smp->sm_next ) {
+ if ( strcasecmp( prompt, smp->sm_matchprompt ) == 0 ) {
+ return( smp );
+ }
+ }
+
+ return( NULL );
+}
+
+
+static dsgwtmplinfo *
+init_listdisplay( char *tmplname, unsigned long options )
+{
+ char *s;
+
+ if (( s = dsgw_get_cgi_var( "listtemplate", DSGW_CGIVAR_OPTIONAL ))
+ != NULL ) {
+ tmplname = s;
+ }
+
+ return( dsgw_display_init( DSGW_TMPLTYPE_LIST, tmplname, options ));
+}
+
+
+void
+dsgw_smart_search( LDAP *ld, struct ldap_searchobj *sop, LDAPFiltDesc *lfdp,
+ char *base, char *value, unsigned long options )
+{
+ int rc;
+ LDAPFiltInfo *lfip;
+ dsgwtmplinfo *tip;
+ LDAPMessage *msgp;
+
+ ldap_setfilteraffixes( lfdp, sop->so_filterprefix, NULL );
+ tip = init_listdisplay( sop->so_objtypeprompt, options );
+
+ if (( lfip = ldap_getfirstfilter( lfdp, sop->so_filtertag, value ))
+ == NULL ) {
+ dsgw_error( DSGW_ERR_NOFILTERS, sop->so_objtypeprompt,
+ DSGW_ERROPT_EXIT, 0, NULL );
+ }
+
+ for ( ; lfip != NULL; lfip = ldap_getnextfilter( lfdp )) {
+ dsgw_set_searchdesc( tip, NULL, lfip->lfi_desc, value );
+
+ rc = do_search( tip, ld, base, sop->so_defaultscope, lfip->lfi_filter,
+ &msgp );
+
+ if ( rc != LDAP_SUCCESS ||
+ ( msgp != NULL && ldap_count_entries( ld, msgp ) > 0 )) {
+ if ( strstr( lfip->lfi_filter, "~=" ) != NULL ) {
+ /* always list if approximate filter used to find entry */
+ options |= DSGW_DISPLAY_OPT_LIST_IF_ONE;
+ }
+ break; /* error or got some entries: stop searching */
+ }
+ }
+
+ handle_search_results( tip, ld, rc, msgp, options );
+}
+
+
+void
+dsgw_pattern_search( LDAP *ld, char *listtmpl,
+ char *searchdesc2, char *searchdesc3, char *searchdesc4,
+ char *filtpattern, char *filtprefix, char *filtsuffix, char *attr,
+ char *base, int scope, char *value, unsigned long options )
+{
+ char buf[ 4096 ];
+ int rc;
+ dsgwtmplinfo *tip;
+ LDAPMessage *msgp;
+
+ tip = init_listdisplay( listtmpl, options );
+
+ ldap_build_filter( buf, sizeof( buf ), filtpattern,
+ filtprefix, filtsuffix, attr, value, NULL );
+
+ dsgw_set_searchdesc( tip, searchdesc2, searchdesc3, searchdesc4 );
+
+ rc = do_search( tip, ld, base, scope, buf, &msgp );
+ handle_search_results( tip, ld, rc, msgp, options );
+}
+
+
+/*
+ * Perform URL-based search.
+ * Note that if "ld" is NULL, this routine sets gc->gc_ldapserver and
+ * gc->gc_ldapport globals itself, calls dsgw_init_ldap(), and then does
+ * the URL-based search. If "ld" is not NULL, no initialization is done
+ * here.
+ */
+void
+dsgw_ldapurl_search( LDAP *ld, char *ldapurl )
+{
+ int rc, ec, saveport, did_init_ldap;
+ LDAPMessage *msgp;
+ LDAPURLDesc *ludp;
+ char *saveserver;
+ unsigned long no_options = 0;
+ int one_attr = 0;
+
+ if (( rc = ldap_url_parse( ldapurl, &ludp )) != 0 ) {
+ switch ( rc ) {
+ case LDAP_URL_ERR_NODN:
+ ec = DSGW_ERR_LDAPURL_NODN;
+ break;
+ case LDAP_URL_ERR_BADSCOPE:
+ ec = DSGW_ERR_LDAPURL_BADSCOPE;
+ break;
+ case LDAP_URL_ERR_MEM:
+ ec = DSGW_ERR_NOMEMORY;
+ break;
+ case LDAP_URL_ERR_NOTLDAP:
+ default:
+ ec = DSGW_ERR_LDAPURL_NOTLDAP;
+ break;
+ }
+ dsgw_error( ec, ldapurl, DSGW_ERROPT_EXIT, 0, NULL );
+ }
+
+ if ( ld == NULL ) {
+ saveserver = gc->gc_ldapserver;
+ gc->gc_ldapserver = ludp->lud_host;
+ saveport = gc->gc_ldapport;
+ gc->gc_ldapport = ludp->lud_port;
+ one_attr = ( ludp->lud_attrs != NULL && ludp->lud_attrs[ 0 ] != NULL && ludp->lud_attrs[ 1 ] == NULL );
+ (void)dsgw_init_ldap( &ld, NULL, 0, one_attr );
+ did_init_ldap = 1;
+ } else {
+ did_init_ldap = 0;
+ }
+
+ /* XXX a bit of a hack: if it looks like only a DN was included, we
+ * assume that a read of the entry is desired.
+ */
+ if ( ludp->lud_scope == LDAP_SCOPE_BASE && strcasecmp( ludp->lud_filter,
+ "(objectClass=*)" ) == 0 ) {
+ dsgw_read_entry( ld, ludp->lud_dn, NULL, NULL, ludp->lud_attrs,
+ no_options );
+ } else {
+ dsgwtmplinfo *tip;
+
+ dsgw_send_header();
+ tip = init_listdisplay( "urlsearch", no_options );
+ dsgw_set_searchdesc( tip, NULL, XP_GetClientStr(DBT_theLDAPFilterIs_), ldapurl );
+ rc = do_search( tip, ld, ludp->lud_dn, ludp->lud_scope,
+ ludp->lud_filter, &msgp );
+ handle_search_results( tip, ld, rc, msgp, no_options );
+ }
+
+ if ( did_init_ldap ) {
+ ldap_unbind( ld );
+ gc->gc_ldapserver = saveserver;
+ gc->gc_ldapport = saveport;
+ }
+}
+
+
+/*
+ * do the actual search over LDAP. Return an LDAP error code.
+ */
+static int
+do_search( dsgwtmplinfo *tip, LDAP *ld, char *base, int scope, char *filter,
+ LDAPMessage **msgpp )
+{
+ char **attrlist, *attrs[ 3 ];
+
+ *msgpp = NULL;
+
+ if ( tip == NULL || tip->dsti_attrs == NULL ) {
+ attrs[ 0 ] = DSGW_ATTRTYPE_OBJECTCLASS;
+ if ( tip != NULL && tip->dsti_sortbyattr != NULL ) {
+ attrs[ 1 ] = tip->dsti_sortbyattr;
+ attrs[ 2 ] = NULL;
+ } else {
+ attrs[ 1 ] = NULL;
+ }
+ attrlist = attrs;
+ } else {
+ attrlist = tip->dsti_attrs;
+ }
+#ifdef DSGW_DEBUG
+ dsgw_log ("ldap_search_s(ld,\"%s\",%i,\"%s\")\n", base, scope, filter);
+#endif
+ return( ldap_search_s( ld, base, scope, filter, attrlist, 0, msgpp ));
+}
+
+
+static int
+is_subtype( const char *sub, const char *sup )
+{
+ auto const size_t subLen = strlen( sub );
+ auto const size_t supLen = strlen( sup );
+ if ( subLen < supLen ) return 0;
+ if ( subLen == supLen ) return !strcasecmp( sub, sup );
+ if ( sub[supLen] != ';' ) return 0;
+ return !strncasecmp( sub, sup, strlen( sup ));
+}
+
+static const struct berval* LDAP_C LDAP_CALLBACK
+dsgw_keygen( void *arg, LDAP *ld, LDAPMessage *entry )
+{
+ auto const char* sortbyattr = (char*)arg;
+ auto struct berval* result = NULL;
+
+ if (sortbyattr == NULL) { /* sort by DN */
+ auto char* DN = ldap_get_dn( ld, entry );
+ if (DN) {
+ result = dsgw_strkeygen( CASE_INSENSITIVE, DN );
+ ldap_memfree( DN );
+ }
+ } else {
+ auto char* attr;
+ auto BerElement *ber;
+ for (attr = ldap_first_attribute( ld, entry, &ber ); attr != NULL;
+ attr = ldap_next_attribute ( ld, entry, ber ) ) {
+ auto char **vals;
+ if ( is_subtype( attr, sortbyattr ) &&
+ NULL != ( vals = ldap_get_values( ld, entry, attr ))) {
+ auto size_t i;
+ for ( i = 0; vals[i] != NULL; ++i ) {
+ auto struct berval* key = dsgw_strkeygen( CASE_INSENSITIVE, vals[i] );
+ if ( result == NULL || dsgw_keycmp( NULL, key, result ) < 0 ) {
+ auto struct berval* tmp = result;
+ result = key;
+ key = tmp;
+#ifdef DSGW_DEBUG
+ {
+ auto char* ev = dsgw_strdup_escaped( vals[i] );
+ auto char* DN = ldap_get_dn( ld, entry );
+ dsgw_log( "dsgw_keygen(%s,%s) %p %s\n", sortbyattr, DN, (void*)result, ev );
+ ldap_memfree( DN );
+ free( ev );
+ }
+#endif
+ }
+ if ( key != NULL ) {
+ dsgw_keyfree( arg, key );
+ }
+ }
+ ldap_value_free( vals );
+ }
+ ldap_memfree( attr );
+ }
+ if ( ber != NULL ) {
+ ldap_ber_free( ber, 0 );
+ }
+ }
+ return result ? result : /* no such attribute */ dsgw_key_last;
+}
+
+static void
+handle_search_results( dsgwtmplinfo *tip, LDAP *ld, int rc, LDAPMessage *msgp,
+ unsigned long options )
+{
+ int count;
+ LDAPMessage *entry;
+ char *dn, *errortext, *lderrtxt, **ocvals;
+
+ count = ( msgp == NULL ) ? 0 : ldap_count_entries( ld, msgp );
+ if ( rc == LDAP_SUCCESS ) {
+ errortext = NULL;
+ lderrtxt = NULL;
+ } else {
+ errortext = dsgw_ldaperr2string( rc );
+ (void)ldap_get_lderrno( ld, NULL, &lderrtxt );
+ }
+ dsgw_set_search_result( tip, count, errortext, lderrtxt );
+
+ if ( count > 0 ) {
+ entry = ldap_first_entry( ld, msgp );
+
+ if ( count == 1 && ( options & DSGW_DISPLAY_OPT_LIST_IF_ONE ) == 0 ) {
+ /* found exactly one entry: read and display it */
+ dn = ldap_get_dn( ld, entry );
+ ocvals = ldap_get_values( ld, entry, DSGW_ATTRTYPE_OBJECTCLASS );
+ ldap_msgfree( msgp );
+
+ dsgw_read_entry( ld, dn, ocvals, NULL, NULL, options );
+
+ if ( ocvals != NULL ) {
+ ldap_value_free( ocvals );
+ }
+ return;
+ }
+
+ /* list entries */
+#ifdef DSGW_DEBUG
+ dsgw_log( "handle_search_results: sort entries by %s\n",
+ tip->dsti_sortbyattr ? tip->dsti_sortbyattr : "DN" );
+#endif
+ ldap_keysort_entries( ld, &msgp, tip->dsti_sortbyattr,
+ dsgw_keygen, dsgw_keycmp, dsgw_keyfree );
+ for ( entry = ldap_first_entry( ld, msgp ); entry != NULL;
+ entry = ldap_next_entry( ld, entry )) {
+ dsgw_display_entry( tip, ld, entry, NULL, NULL );
+ }
+ if ( options & DSGW_DISPLAY_OPT_DNLIST_JS ) {
+ int i;
+ char *edn, *js0, *js1;
+ char **xdn;
+ char **sn;
+
+ dsgw_emits( "<SCRIPT LANGUAGE=\"JavaScript\">\n" );
+ dsgw_emits( "var dnlist = new Array;\n" );
+ for ( i = 0, entry = ldap_first_entry( ld, msgp ); entry != NULL;
+ i++, entry = ldap_next_entry( ld, entry )) {
+ dn = ldap_get_dn( ld, entry );
+ edn = dsgw_strdup_escaped( dn );
+ xdn = ldap_explode_dn( dn, 1 );
+ dsgw_emitf( "dnlist[%d] = new Object\n", i );
+ dsgw_emitf( "dnlist[%d].edn = '%s';\n", i, edn );
+ js0 = dsgw_escape_quotes( xdn[ 0 ] );
+ if ( xdn[1] != NULL ) {
+ js1 = dsgw_escape_quotes( xdn[ 1 ] );
+ dsgw_emitf( "dnlist[%d].rdn = '%s, %s';\n", i, js0, js1 );
+ free( js1 );
+ } else {
+ dsgw_emitf( "dnlist[%d].rdn = '%s';\n", i, js0 );
+ }
+ free( js0 );
+ if (( sn = ldap_get_values( ld, entry, "sn" )) == NULL ) {
+ js0 = NULL;
+ } else {
+ js0 = dsgw_escape_quotes( sn[ 0 ] );
+ ldap_value_free( sn );
+ }
+ dsgw_emitf( "dnlist[%d].sn = '%s';\n", i, ( js0 == NULL ) ?
+ " " : js0 );
+ if ( js0 != NULL ) {
+ free( js0 );
+ }
+
+ dsgw_emitf( "dnlist[%d].selected = false;\n", i );
+ free( edn );
+ ldap_value_free( xdn );
+ ldap_memfree( dn );
+ }
+ dsgw_emitf( "dnlist.count = %d;\n", i );
+ dsgw_emitf( "</SCRIPT>\n" );
+ }
+ ldap_msgfree( msgp );
+ } else {
+ /* Count <= 0 */
+ if ( options & DSGW_DISPLAY_OPT_DNLIST_JS ) {
+ dsgw_emitf( "<SCRIPT LANGUAGE=\"JavaScript\">\n" );
+ dsgw_emitf( "var dnlist = new Array;\n" );
+ dsgw_emitf( "dnlist.count = 0;\n" );
+ dsgw_emitf( "</SCRIPT>\n" );
+ }
+ }
+
+ dsgw_display_done( tip );
+}
+
+
+/*
+ * read and display a single entry. If ocvals is non-NULL, it should
+ * contain the list of objectClass values for this entry.
+ */
+void
+dsgw_read_entry( LDAP *ld, char *dn, char **ocvals, char *tmplname,
+ char **attrs, unsigned long options )
+{
+ int rc, one_attr, freeocvals, valindex;
+ char *tmpattr, *attr0, *mimetype;
+ LDAPMessage *msgp, *entry, *aomsgp, *aoentry;
+ dsgwtmpl *tmpl;
+ dsgwtmplinfo *tip;
+
+ if (( options & DSGW_DISPLAY_OPT_AUTH ) != 0 ) {
+ /*
+ * XXX hack -- if we are trying to authenticate, we don't generate an
+ * entry display at all. Instead, we generate an authenticate form.
+ */
+ dsgw_send_header();
+ dsgw_emit_auth_form( dn );
+ return;
+ }
+
+ one_attr = ( attrs != NULL && attrs[ 0 ] != NULL && attrs[ 1 ] == NULL );
+ if ( one_attr ) {
+ break_up_one_attr( attrs[ 0 ], &tmpattr, &mimetype, &valindex );
+ if ( strcasecmp( tmpattr, "_vcard" ) == 0 ) { /* VCards are special */
+ dsgw_vcard_from_entry( ld, dn, mimetype );
+ return;
+ }
+ attr0 = attrs[ 0 ]; /* replace first & only attr. */
+ attrs[ 0 ] = tmpattr;
+ } else {
+ attr0 = NULL;
+ }
+
+ if ( tmplname == NULL && ( tmplname = dsgw_get_cgi_var( "displaytemplate",
+ DSGW_CGIVAR_OPTIONAL )) == NULL && attrs == NULL ) {
+ /* determine what display template to use based on objectClass values */
+ freeocvals = 0;
+ if ( ocvals == NULL ) { /* read entry to get objectClasses */
+ char *attrs[ 2 ];
+
+ attrs[ 0 ] = DSGW_ATTRTYPE_OBJECTCLASS;
+ attrs[ 1 ] = NULL;
+
+ if (( rc = ldap_search_s( ld, dn, LDAP_SCOPE_BASE, "objectClass=*",
+ attrs, 0, &msgp )) != LDAP_SUCCESS ||
+ ( entry = ldap_first_entry( ld, msgp )) == NULL ) {
+ dsgw_ldap_error( ld, DSGW_ERROPT_EXIT );
+ }
+ ocvals = ldap_get_values( ld, msgp, DSGW_ATTRTYPE_OBJECTCLASS );
+ freeocvals = 1;
+ ldap_msgfree( msgp );
+ }
+
+
+ if ( ocvals == NULL || ( tmpl = dsgw_oc2template( ocvals )) == NULL ) {
+ tmplname = NULL;
+ } else {
+ tmplname = tmpl->dstmpl_name;
+ }
+
+ if ( freeocvals ) {
+ ldap_value_free( ocvals );
+ }
+ }
+
+ if ( tmplname == NULL ) {
+ tip = NULL;
+
+ if ( !one_attr ) {
+ char *title;
+
+ if (( title = ldap_dn2ufn( dn )) == NULL ) {
+ title = dn;
+ }
+ dsgw_send_header();
+ dsgw_html_begin( title, 1 );
+ dsgw_emitf( "<FONT SIZE=\"+1\">\n%s\n</FONT>\n",
+ XP_GetClientStr(DBT_noteThereIsNoDisplayTemplateForT_) );
+ }
+
+ } else if (( tip = dsgw_display_init( DSGW_TMPLTYPE_DISPLAY, tmplname,
+ options )) != NULL ) {
+ dsgw_send_header();
+ attrs = tip->dsti_attrs;
+ }
+
+ /* now read the attributes needed for the template */
+ if (( rc = ldap_search_s( ld, dn, LDAP_SCOPE_BASE, "objectClass=*",
+ attrs, 0, &msgp )) != LDAP_SUCCESS ) {
+ dsgw_ldap_error( ld, DSGW_ERROPT_EXIT );
+ }
+
+ if (( entry = ldap_first_entry( ld, msgp )) == NULL ) {
+ ldap_msgfree( msgp );
+ dsgw_ldap_error( ld, DSGW_ERROPT_EXIT );
+ }
+
+ /* and retrieve attribute types only if we need any of them */
+ if ( one_attr || tip == NULL || tip->dsti_attrsonly_attrs == NULL ) {
+ aomsgp = NULL;
+ } else {
+ if (( rc = ldap_search_s( ld, dn, LDAP_SCOPE_BASE, "objectClass=*",
+ tip->dsti_attrsonly_attrs, 1, &aomsgp )) != LDAP_SUCCESS ) {
+ dsgw_ldap_error( ld, DSGW_ERROPT_EXIT );
+ }
+
+ /*
+ * if no entries were returned, "aoentry" will be set to NULL by the
+ * next statement. We don't treat that as an error since we know the
+ * entry exists. It probably just means none of the "attrsonly" types
+ * were present in the entry.
+ */
+ aoentry = ldap_first_entry( ld, aomsgp );
+ }
+
+ /* display it (finally!) */
+ if ( one_attr ) {
+ return_one_attr( ld, entry, attrs[ 0 ], mimetype, valindex );
+ } else if ( tip == NULL ) {
+ /* no template available -- display in an ugly but complete manner */
+ if (( rc = ldap_entry2html( ld, NULL, entry, NULL, NULL, NULL,
+ entry2htmlwrite, stdout, "\n", 0, LDAP_DISP_OPT_HTMLBODYONLY,
+ NULL, NULL )) != LDAP_SUCCESS ) {
+ dsgw_ldap_error( ld, DSGW_ERROPT_EXIT );
+ }
+ dsgw_html_end();
+ } else {
+ /* use template to create a nicely formatted display */
+ dsgw_display_entry( tip, ld, entry, aoentry, NULL );
+ dsgw_display_done( tip );
+ }
+
+ if ( attr0 != NULL ) {
+ attrs[ 0 ] = attr0; /* if we replaced this, put original back */
+ }
+
+ if ( msgp != NULL ) {
+ ldap_msgfree( msgp );
+ }
+ if ( aomsgp != NULL ) {
+ ldap_msgfree( aomsgp );
+ }
+}
+
+
+/*
+ * return 1 if the entry already exists, 0 if not, -1 if some error occurs
+ */
+int
+dsgw_ldap_entry_exists( LDAP *ld, char *dn, char **matchedp,
+ unsigned long erropts )
+{
+ LDAPMessage *msgp;
+ int rc;
+
+ msgp = NULL;
+ if ( matchedp != NULL ) {
+ *matchedp = NULL;
+ }
+
+ if (( rc = do_search( NULL, ld, dn, LDAP_SCOPE_BASE, "(objectClass=*)",
+ &msgp )) != LDAP_SUCCESS && rc != LDAP_NO_SUCH_OBJECT ) {
+ dsgw_ldap_error( ld, erropts );
+ }
+
+ if ( msgp == NULL || rc == LDAP_NO_SUCH_OBJECT ) {
+ rc = 0;
+ if ( matchedp != NULL ) {
+ (void)ldap_get_lderrno( ld, matchedp, NULL );
+ }
+ } else {
+ rc = ( ldap_count_entries( ld, msgp ) > 0 ? 1 : 0 );
+ ldap_msgfree( msgp );
+ }
+
+ return( rc );
+}
+
+
+static int
+entry2htmlwrite( void *fp, char *buf, int len )
+{
+ return( fwrite( buf, len, 1, (FILE *)fp ) == 0 ? -1 : len );
+}
+
+
+/*
+ * return 1 if the entry's parent exists, 0 if not, -1 if some error occurs.
+ * If the entry is the same as gc->gc_ldapsearchbase, then we return 1,
+ * so we don't prevent people from adding their organizational entry.
+ */
+int
+dsgw_ldap_parent_exists( LDAP *ld, char *dn, unsigned long erropts )
+{
+ LDAPMessage *msgp;
+ int rc;
+
+ /* Is "dn" == gc->gc_ldapsearchbase? */
+ msgp = NULL;
+ if (( rc = do_search( NULL, ld, dn, LDAP_SCOPE_BASE, "(objectClass=*)",
+ &msgp )) != LDAP_SUCCESS && rc != LDAP_NO_SUCH_OBJECT ) {
+ dsgw_ldap_error( ld, erropts );
+ }
+
+ if ( msgp == NULL ) {
+ rc = 0;
+ } else {
+ rc = ( ldap_count_entries( ld, msgp ) > 0 ? 1 : 0 );
+ ldap_msgfree( msgp );
+ }
+
+ return( rc );
+}
+
+
+
+/*
+ * this function is called back by LIBLDAP when chasing referrals
+ */
+static int LDAP_CALL LDAP_CALLBACK
+get_rebind_credentials( LDAP *ld, char **whop, char **credp,
+ int *methodp, int freeit, void *arg )
+{
+ if ( !freeit ) {
+ *whop = binddn;
+ *credp = bindpasswd;
+ *methodp = LDAP_AUTH_SIMPLE;
+ }
+
+ return( LDAP_SUCCESS );
+}
+
+
+char *
+dsgw_get_binddn()
+{
+ return( binddn );
+}
+
+/*
+ * return 1 if bound using "dn"
+ * return 0 if definitely bound as someone else
+ * return "def_answer" is we can't tell for sure
+ */
+int
+dsgw_bound_as_dn( char *dn, int def_answer )
+{
+ int i, rc;
+ char **rdns1, **rdns2;
+
+ if ( binddn == NULL ) {
+ /*
+ * not authenticated: if not using local db or using it as an
+ * end-user, return the default
+ */
+ if ( gc->gc_localdbconf == NULL || gc->gc_enduser ) {
+ return( def_answer );
+ }
+
+ /*
+ * if using local db as an admin, return "bound as someone else"
+ * since there is no access control enforced anyways.
+ */
+ return( 0 );
+ }
+
+ /* first try a simple case-insensitive comparison */
+ if ( strcasecmp( binddn, dn ) == 0 ) {
+ return( 1 ); /* DNs are the same */
+ }
+
+ /*
+ * These DNs may not have the same spacing or punctuation. Compare RDN
+ * components to eliminate any differences.
+ */
+ if (( rdns1 = ldap_explode_dn( binddn, 0 )) == NULL ) {
+ return( def_answer ); /* we don't know: return the default */
+ }
+
+ if (( rdns2 = ldap_explode_dn( dn, 0 )) == NULL ) {
+ ldap_value_free( rdns1 );
+ return( def_answer ); /* we don't know: return the default */
+ }
+
+ for ( i = 0; rdns1[ i ] != NULL && rdns2[ i ] != NULL; ++i ) {
+ if ( strcasecmp( rdns1[ i ], rdns2[ i ] ) != 0 ) {
+ break; /* DNs are not the same */
+ }
+ }
+
+ rc = ( rdns1[ i ] == NULL && rdns2[ i ] == NULL );
+
+ ldap_value_free( rdns1 );
+ ldap_value_free( rdns2 );
+
+ return( rc );
+}
+
+
+
+/*
+ * Compare 2 DNs. Return 1 if they are equivalent, 0 if not.
+ */
+int
+dsgw_dn_cmp( char *dn1, char *dn2 )
+{
+ int i, rc;
+ char **rdns1, **rdns2;
+
+ /* first try a simple case-insensitive comparison */
+ if ( dsgw_utf8casecmp( (unsigned char *)dn1, (unsigned char *)dn2 ) == 0 ) {
+ return( 1 ); /* DNs are the same */
+ }
+
+ /*
+ * These DNs may not have the same spacing or punctuation. Compare RDN
+ * components to eliminate any differences.
+ */
+ if (( rdns1 = ldap_explode_dn( dn1, 0 )) == NULL ) {
+ return( 0 ); /* we don't know: return 0 */
+ }
+
+ if (( rdns2 = ldap_explode_dn( dn2, 0 )) == NULL ) {
+ ldap_value_free( rdns1 );
+ return( 0 ); /* we don't know: return 0 */
+ }
+
+ for ( i = 0; rdns1[ i ] != NULL && rdns2[ i ] != NULL; ++i ) {
+ if ( dsgw_utf8casecmp( (unsigned char *)rdns1[ i ], (unsigned char *)rdns2[ i ] ) != 0 ) {
+ break; /* DNs are not the same */
+ }
+ }
+
+ rc = ( rdns1[ i ] == NULL && rdns2[ i ] == NULL );
+
+ ldap_value_free( rdns1 );
+ ldap_value_free( rdns2 );
+
+ return( rc );
+}
+
+
+/*
+ * Return the parent of dn. The caller is responsible for freeing the
+ * returned value. Returns NULL on error.
+ */
+char *
+dsgw_dn_parent( char *dn )
+{
+ char *dnp;
+ int i;
+ char **rdns;
+
+ if ( dn == NULL ) {
+ return( NULL );
+ }
+
+ dnp = dsgw_ch_malloc( strlen( dn ));
+ dnp[ 0 ] = '\0';
+ if (( rdns = ldap_explode_dn( dn, 0 )) == NULL ) {
+ return NULL;
+ }
+ for ( i = 1; rdns[ i ] != NULL; i++ ) {
+ strcat( dnp, rdns[ i ] );
+ strcat( dnp, "," );
+ }
+ /* Get rid of the trailing "," we just appended */
+ dnp[ strlen( dnp ) - 1 ] = '\0';
+ ldap_value_free( rdns );
+ return( dnp );
+}
+
+
+/*
+ * Return 1 if dn1 is the immediate ancestor of dn2, 0 otherwise.
+ */
+int
+dsgw_is_dnparent( char *dn1, char *dn2 )
+{
+ char *dnp;
+ int rc;
+
+ /* A null or zero-length DN cannot have a parent */
+ if ( dn2 == NULL || strlen( dn2 ) == 0 ) {
+ return 0;
+ }
+
+ dnp = dsgw_dn_parent( dn2 );
+ rc = dsgw_dn_cmp( dn1, dnp );
+ free( dnp );
+
+ return rc;
+}
+
+
+/*
+ * return malloc'd array of RDN attribute value pairs
+ * each element of the array is a string that looks like: TAG=VALUE
+ * this is used to extract values from the RDN when a new entry is added
+ */
+char **
+dsgw_rdn_values( char *dn )
+{
+ char **rdns, **rdncomps, *val;
+ int i;
+
+ if (( rdns = ldap_explode_dn( dn, 0 )) == NULL ) {
+ return( NULL );
+ }
+
+ rdncomps = ldap_explode_rdn( rdns[0], 0 );
+ ldap_value_free( rdns );
+ if ( rdncomps == NULL ) {
+ return( NULL );
+ }
+
+ for ( i = 0; rdncomps[ i ] != NULL; ++i ) {
+ if (( val = strchr( rdncomps[ i ], '=' )) == NULL ) {
+ ldap_value_free( rdncomps );
+ return( NULL );
+ }
+ ++val;
+ strcpy_special_undo( val, val ); /* undo in place */
+ }
+
+ return( rdncomps );
+}
+
+
+/*
+ * the following routine was lifted from servers/slapd/ava.c
+ * it removes special quoting, etc. from values that appear in an LDAP DN
+ */
+static void
+strcpy_special_undo( char *d, char *s )
+{
+ int quote;
+
+ quote = 0;
+ if ( *s == '"' ) {
+ s++;
+ quote = 1;
+ }
+ for ( ; *s; LDAP_UTF8INC(s)) {
+ switch ( *s ) {
+ case '"':
+ break;
+ case '\\':
+ s++;
+ /* FALL */
+ default:
+ d += LDAP_UTF8COPY (d, s);
+ break;
+ }
+ }
+ *d = '\0'; LDAP_UTF8DEC(d);
+ if ( quote && *d == '"' ) {
+ *d = '\0';
+ }
+}
+
+
+static char *
+uid2dn( LDAP *ld, char *uid, char *base, int *ldaprc, char **lderrtxtp,
+ char **errsp )
+{
+ char *attrs[] = { "objectclass", NULL };
+ char filtbuf[ 85 ]; /* max of 80 char. uid + "uid=" + zero terminator */
+ int rc, count;
+ LDAPMessage *result;
+ LDAPMessage *e;
+ char *dn;
+
+ *ldaprc = LDAP_SUCCESS; /* optimistic */
+ *errsp = *lderrtxtp = NULL;
+
+ if ( ld == NULL || uid == NULL || strlen( uid ) > 80 ) {
+ *errsp = XP_GetClientStr(DBT_invalidUserIdOrNullLdapHandle_);
+ return NULL;
+ }
+ PR_snprintf( filtbuf, 85, "uid=%s", uid );
+
+ if (( rc = ldap_search_s( ld, base, LDAP_SCOPE_SUBTREE, filtbuf,
+ attrs, 1, &result )) != LDAP_SUCCESS ) {
+ *ldaprc = rc;
+ (void)ldap_get_lderrno( ld, NULL, lderrtxtp );
+ return NULL;
+ }
+ if (( count = ldap_count_entries( ld, result )) != 1 ) {
+ /* Search either returned no entries, or more than one entry */
+ ldap_msgfree( result );
+ if ( count == 0 ) {
+ *errsp = XP_GetClientStr(DBT_noMatchForUserId_);
+ } else {
+ *errsp = XP_GetClientStr(DBT_moreThanOneMatchForUserId_);
+ }
+ return NULL;
+ }
+
+ dn = NULL;
+ if (( e = ldap_first_entry( ld, result )) == NULL ||
+ ( dn = ldap_get_dn( ld, e )) == NULL ) {
+ *ldaprc = ldap_get_lderrno( ld, NULL, NULL );
+ }
+ ldap_msgfree( result );
+ return( dn );
+}
+
+
+/*
+ * Emit an HTML "SELECT" object that contains all the o's and ou's that
+ * are underneath our default searchbase. If there are none other than
+ * the searchbase, we emit a hidden HTML TEXT object that contains the
+ * searchbase and the "prefix" and "suffix" are not used. The values for
+ * the SELECT options and for the TEXT object are all escaped DNs.
+ *
+ * Location popup directives look like this:
+ * <-- DS_LOCATIONPOPUP "name=VARNAME" "prefix=PREFIX" "suffix=SUFFIX" -->
+ *
+ * If "prefix" and/or "suffix" are omitted, they default to "".
+ * If "name" is omitted it defaults to "base".
+ *
+ * If there are "location" directives in the dsgw.conf file, we use those
+ * instead of actually searching the directory.
+ */
+void
+dsgw_emit_location_popup( LDAP *ld, int argc, char **argv, int erropts )
+{
+ char line[BIG_LINE];
+ char *varname, *prefix, *suffix, *rootname, *dn;
+ int i, count, did_init_ldap;
+ LDAPMessage *res, *e;
+
+ if (( varname = get_arg_by_name( "name", argc, argv )) == NULL ) {
+ varname = "base";
+ }
+ if (( prefix = get_arg_by_name( "prefix", argc, argv )) == NULL ) {
+ prefix = "";
+ }
+ if (( suffix = get_arg_by_name( "suffix", argc, argv )) == NULL ) {
+ suffix = "";
+ }
+ rootname = get_arg_by_name( "rootname", argc, argv );
+
+ did_init_ldap = 0;
+ res = NULL;
+
+ if ( gc->gc_newentryloccount > 0 ) {
+ count = gc->gc_newentryloccount;
+ } else {
+ char *attrs[ 3 ];
+ int rc;
+
+ if ( ld == NULL ) {
+ (void)dsgw_init_ldap( &ld, NULL, 0, 0 );
+ did_init_ldap = 1;
+ }
+ attrs[ 0 ] = "o";
+ attrs[ 1 ] = "ou";
+ attrs[ 2 ] = NULL;
+
+ rc = ldap_search_s( ld, gc->gc_ldapsearchbase, LDAP_SCOPE_SUBTREE,
+ "(|(objectclass=organization)(objectclass=organizationalunit))",
+ attrs, 1, &res );
+ if ( rc != LDAP_SUCCESS || res == NULL ) {
+ dsgw_ldap_error( ld, erropts );
+ return;
+ }
+
+ count = ldap_count_entries( ld, res );
+ if ( gc->gc_ldapsearchbase == NULL || *gc->gc_ldapsearchbase == '\0' ) {
+ ++count; /* include base DN even if it is "" */
+ } else {
+ /*
+ * check to see if search base was one of the entries returned
+ * we want to always list the base entry, so we need to check
+ */
+ for ( e = ldap_first_entry( ld, res ); e != NULL;
+ e = ldap_next_entry( ld, e )) {
+ if (( dn = ldap_get_dn( ld, e )) == NULL ) {
+ dsgw_ldap_error( ld, erropts );
+ ldap_msgfree( res );
+ return;
+ }
+
+ rc = dsgw_dn_cmp( dn, gc->gc_ldapsearchbase );
+ free( dn );
+ if ( rc ) { /* base DN was returned */
+ break;
+ }
+ }
+ if ( e == NULL ) {
+ ++count; /* include base DN even if was not returned */
+ }
+ }
+ }
+
+ if ( count > 1 ) {
+ util_snprintf( line, BIG_LINE, "%s\n<SELECT NAME=\"%s\">\n",
+ prefix, varname );
+ } else {
+ util_snprintf( line, BIG_LINE, "<INPUT TYPE=\"hidden\" NAME=\"%s\" ",
+ varname );
+ }
+ dsgw_emits( line );
+
+ if ( gc->gc_newentryloccount > 0 ) {
+ for ( i = 0; i < gc->gc_newentryloccount; ++i ) {
+ emit_one_loc_dn( gc->gc_newentrylocs[ i ].dsloc_dnsuffix,
+ gc->gc_newentrylocs[i].dsloc_fullname, rootname,
+ ( count < 2 ));
+ }
+ } else {
+ /* always include the base dn first */
+ emit_one_loc_dn( gc->gc_ldapsearchbase, NULL, rootname, ( count < 2 ));
+
+ /* XXXmcs it would be nice to do a more intelligent sort here */
+#ifdef DSGW_DEBUG
+ dsgw_log( "dsgw_emit_location_popup: ldap_sort_entries(NULL)\n" );
+#endif
+ ldap_sort_entries( ld, &res, NULL, dsgw_strcmp (CASE_INSENSITIVE));
+
+ for ( e = ldap_first_entry( ld, res ); e != NULL;
+ e = ldap_next_entry( ld, e )) {
+ if (( dn = ldap_get_dn( ld, e )) == NULL ) {
+ dsgw_ldap_error( ld, erropts );
+ ldap_msgfree( res );
+ return;
+ }
+
+ if ( !dsgw_dn_cmp( dn, gc->gc_ldapsearchbase )) {
+ emit_one_loc_dn( dn, NULL, rootname, ( count < 2 ));
+ }
+ free( dn );
+ }
+ }
+
+ if ( count > 1 ) {
+ util_snprintf( line, BIG_LINE, "</SELECT>\n%s\n", suffix );
+ dsgw_emits( line );
+ }
+
+ if ( res != NULL ) {
+ ldap_msgfree( res );
+ }
+ if ( did_init_ldap ) {
+ ldap_unbind( ld );
+ }
+}
+
+
+static void
+emit_one_loc_dn( char *dn, char *friendlyname, char *rootname, int only_one )
+{
+ char *escapeddn, **rdns, line[ BIG_LINE ];
+
+ rdns = NULL;
+ escapeddn = dsgw_strdup_escaped( dn );
+
+ if ( !only_one ) {
+ dsgw_emits( "<OPTION" );
+ }
+
+ if ( friendlyname == NULL ) { /* use first component of DN */
+ if ( *dn == '\0' ) {
+ friendlyname = ( rootname == NULL ? XP_GetClientStr(DBT_theEntireDirectory_)
+ : rootname );
+ } else if (( rdns = ldap_explode_dn( dn, 1 )) == NULL
+ || rdns[ 0 ] == NULL ) {
+ friendlyname = dn;
+ } else {
+ friendlyname = rdns[ 0 ];
+ }
+ }
+
+ util_snprintf( line, BIG_LINE, " VALUE=\"%s\">%s\n", escapeddn,
+ only_one ? "" : friendlyname );
+ free( escapeddn );
+ if ( rdns != NULL ) {
+ ldap_value_free( rdns );
+ }
+ dsgw_emits( line );
+}
+
+
+/*
+ * Return a MIME document that contains a single value.
+ * XXX: does this really belong in ldaputil.c?
+ */
+static void
+return_one_attr( LDAP *ld, LDAPMessage *entry, char *attrtype, char *mimetype,
+ int valindex )
+{
+ char *val;
+ struct berval **bvals;
+ unsigned long vlen;
+
+ if (( bvals = ldap_get_values_len( ld, entry, attrtype )) == NULL ) {
+ dsgw_error( DSGW_ERR_NOATTRVALUE, attrtype, DSGW_ERROPT_EXIT, 0, NULL );
+ }
+
+ if ( valindex > ldap_count_values_len( bvals )) {
+ dsgw_error( DSGW_ERR_NOATTRVALUE, attrtype, DSGW_ERROPT_EXIT, 0, NULL );
+ }
+
+ val = bvals[ valindex ]->bv_val;
+ vlen = bvals[ valindex ]->bv_len;
+
+ fprintf( stdout, "Content-Type: %s\n", mimetype );
+ fprintf( stdout, "Content-Length: %ld\n\n", vlen );
+
+#ifdef XP_WIN32
+ /* flush any data on stdout before changing the mode */
+ fflush( stdout );
+
+ /* set the mode to binary
+ so windows doesn't replace with carriage
+ return line feed and mess everything up
+ */
+ _setmode( _fileno( stdout ), _O_BINARY );
+#endif
+
+ fwrite( val, vlen, 1, stdout );
+
+#ifdef XP_WIN32
+ /* flush any remaining binary data */
+ fflush( stdout );
+
+ /* set the mode back to text */
+ _setmode( _fileno( stdout ), _O_TEXT );
+#endif
+
+ ldap_value_free_len( bvals );
+ free( attrtype );
+}
+
+
+/*
+ * The general format of attrtype is:
+ * <attrtype> [ &<mimetype> ] [ &<valindex> ]
+ * This routine breaks it up. Callers should free( *attrtypep ) after they
+ * are done using attrtypep and mimetypep.
+ */
+static void
+break_up_one_attr( char *attr, char **attrtypep, char **mimetypep,
+ int *valindexp )
+{
+ char *p;
+
+ *attrtypep = dsgw_ch_strdup( attr );
+
+ *mimetypep = "text/plain"; /* default */
+ *valindexp = 0; /* default: retrieve first value */
+
+ if (( p = strchr( *attrtypep, '&' )) != NULL ) {
+ *p++ = '\0';
+ if ( *p != '\0' ) {
+ *mimetypep = p;
+ if (( p = strchr( *mimetypep, '&' )) != NULL ) {
+ *p++ = '\0';
+ *valindexp = atoi( p );
+ }
+ }
+ }
+}
diff --git a/ldap/clients/dsgw/newentry.c b/ldap/clients/dsgw/newentry.c
new file mode 100644
index 00000000..67145195
--- /dev/null
+++ b/ldap/clients/dsgw/newentry.c
@@ -0,0 +1,447 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+/*
+ * newentry.c -- CGI program to generate newentry form -- HTTP gateway
+ *
+ * Copyright (c) 1996 Netscape Communications Corp.
+ * All rights reserved.
+ */
+#include "dsgw.h"
+#include "dbtdsgw.h"
+
+static void emit_file(char* filename, dsgwnewtype* entType);
+
+#if 0 /* unused */
+static void
+unquote_emits(char* s)
+{
+ dsgw_quotation_end();
+ dsgw_emits (s);
+ dsgw_quotation_begin (QUOTATION_JAVASCRIPT_MULTILINE);
+}
+
+static void
+quote_emit_file(char* filename)
+{
+ dsgw_quotation_begin (QUOTATION_JAVASCRIPT_MULTILINE);
+ emit_file (filename, NULL);
+ dsgw_quotation_end();
+}
+#endif
+
+static void
+emit_file (char* filename, dsgwnewtype* entType)
+{
+ auto FILE* html = dsgw_open_html_file( filename, DSGW_ERROPT_EXIT );
+ auto char line[ BIG_LINE ];
+ auto int argc;
+ auto char **argv;
+ char *deleteme = NULL;
+
+ while ( dsgw_next_html_line( html, line )) {
+ if ( dsgw_parse_line( line, &argc, &argv, 0, dsgw_simple_cond_is_true, NULL )) {
+ if ( dsgw_directive_is( line, DRCT_HEAD )) {
+ dsgw_head_begin();
+ dsgw_emits ("\n");
+
+ } else if ( dsgw_directive_is( line, "DS_NEWENTRY_SCRIPT" )) {
+ dsgw_emits ("<SCRIPT LANGUAGE=\"JavaScript\">\n"
+ "<!-- Hide from non-JavaScript-capable browsers\n"
+ "var selectedType = -1;\n"
+ "\n"
+ "function typeChange(selectType)\n"
+ "{\n"
+ " var newType = selectType.selectedIndex;\n"
+ " if ( newType != selectedType ) {\n"
+ " selectedType = newType;\n"
+ " newentryNameFrame.location.href = '"
+ DSGW_URLPREFIX_CGI_HTTP
+ "newentry?context=");
+ dsgw_emits(context);
+ dsgw_emits( "&file=name&etype=' +\n"
+ " escape (selectType.options[newType].value);\n"
+ " }\n"
+ "}\n"
+ "\n"
+ "var previousLocation = '';\n"
+ "var locationChangedRecently = false;\n"
+ "\n"
+ "function locationChange(nameForm)\n"
+ "{\n"
+ " var location = nameForm.selectLocation.options[nameForm.selectLocation.selectedIndex].value;\n"
+ " if ( location != previousLocation ) {\n"
+ " if ( nameForm.dnsuffix != null ) {\n"
+ " if ( location != '' ) {\n"
+ " nameForm.dnsuffix.blur();\n"
+ " nameForm.dnsuffix.value = '';\n"
+ " // In Navigator for Macintosh, the preceding code\n"
+ " // causes a subsequent focus event in dnsuffix.\n"
+ " // Prevent dnsuffixFocus from acting on it:\n"
+ " locationChangedRecently = true;\n"
+ " setTimeout ('locationChangedRecently = false', 100);\n"
+ " } else {\n"
+ " nameForm.dnsuffix.value = previousLocation;\n"
+ " nameForm.dnsuffix.focus();\n"
+ " nameForm.dnsuffix.select();\n"
+ " }\n"
+ " }\n"
+ " previousLocation = location;\n"
+ " }\n"
+ "}\n"
+ "\n"
+ "function dnsuffixFocus(nameForm)\n"
+ "{\n"
+ " var location = nameForm.selectLocation.options[nameForm.selectLocation.selectedIndex].value;\n"
+ " if ( location != '' && ( ! locationChangedRecently )) {\n"
+ " if ( nameForm.dnsuffix.value == '' ) {\n"
+ " nameForm.dnsuffix.value = location;\n"
+ " setTimeout ('newentryNameFrame.document.nameForm.dnsuffix.select()', 75);\n"
+ " // This is not done immediately, to avoid interference from mouse-up.\n"
+ " }\n"
+ " for ( i = 0; i < nameForm.selectLocation.length; i++ ) {\n"
+ " if ( nameForm.selectLocation.options[i].value == '' ) {\n"
+ " previousLocation = '';\n"
+ " nameForm.selectLocation.selectedIndex = i;\n"
+ " break;\n"
+ " }\n"
+ " }\n"
+ " }\n"
+ "}\n"
+ "\n"
+ "function submitNameForm(nameForm)\n"
+ "{\n"
+ " if ( nameForm.entryname.value == '' ) {\n");
+ deleteme = XP_GetClientStr (DBT_enterNameForNewEntry_);
+
+ dsgw_emit_alert ("newentryNameFrame", "width=400,height=130,resizable",
+ XP_GetClientStr (DBT_enterNameForNewEntry_));
+ dsgw_emits (" return false;\n"
+ " } else if ( nameForm.selectLocation.options[nameForm.selectLocation.selectedIndex].value == '' &&\n"
+ " ( nameForm.dnsuffix == null ||\n"
+ " nameForm.dnsuffix.value == '' )) {\n");
+ dsgw_emit_alert ("newentryNameFrame", "width=400,height=130,resizable",
+ XP_GetClientStr (DBT_enterLocationForNewEntry_));
+ dsgw_emits (" return false;\n"
+ " } else {\n"
+ " open('', 'NewEntryWindow');\n"
+ " }\n"
+ " return true;\n"
+ "}\n"
+ "\n"
+ "function init()\n"
+ "{\n"
+ "}\n"
+ "\n"
+ "// end hiding -->\n"
+ "</SCRIPT>\n");
+
+ } else if ( dsgw_directive_is( line, "DS_NEWENTRY_TYPE_BODY" )) {
+ dsgw_emitf ("<BODY %s>\n",
+ dsgw_html_body_colors );
+
+ } else if ( dsgw_directive_is( line, "DS_NEWENTRY_TYPE_FORM" )) {
+ dsgw_form_begin ("typeForm", NULL);
+ dsgw_emits ("\n");
+
+ } else if ( dsgw_directive_is( line, "DS_NEWENTRY_TYPE_SELECT" )) {
+ auto dsgwnewtype* ntp;
+ dsgw_emits ("<SELECT NAME=\"selectType\" onChange=\"parent.typeChange(this)\">\n");
+ for (ntp = gc->gc_newentrytypes; ntp; ntp = ntp->dsnt_next) {
+ dsgw_emitf ("<OPTION VALUE=\"%s\">%s</OPTION>\n",
+ ntp->dsnt_template ? ntp->dsnt_template : "",
+ ntp->dsnt_fullname ? ntp->dsnt_fullname : "");
+ }
+ dsgw_emits ("</SELECT>\n" );
+
+ } else if ( dsgw_directive_is( line, "DS_NEWENTRY_NAME_BODY" )) {
+ dsgw_emits ("<BODY onLoad=\"");
+ if (entType && entType->dsnt_loccount) {
+ dsgw_emits ("parent.locationChange(document.nameForm);");
+ }
+ dsgw_emitf ("document.nameForm.entryname.focus()\" %s>\n",
+ dsgw_html_body_colors );
+ dsgw_emit_alertForm();
+
+ } else if ( dsgw_directive_is( line, "DS_NEWENTRY_NAME_FORM" )) {
+ dsgw_form_begin ("nameForm", "action=\"" DSGW_URLPREFIX_CGI_HTTP "newentry\""
+ " target=NewEntryWindow"
+ " onSubmit=\"return parent.submitNameForm(this)\"");
+ dsgw_emits ("\n");
+
+ if (entType) {
+ if (entType->dsnt_rdnattr) {
+ dsgw_emitf ("<INPUT TYPE=\"hidden\" NAME=\"rdntag\" VALUE=\"%s\">\n",
+ entType->dsnt_rdnattr);
+ }
+ if (entType->dsnt_template) {
+ dsgw_emitf ("<INPUT TYPE=\"hidden\" NAME=\"entrytype\" VALUE=\"%s\">\n",
+ entType->dsnt_template);
+ }
+ }
+
+ } else if ( dsgw_directive_is( line, "DS_NEWENTRY_LOCATION_BEGIN" )) {
+ if ( ! (entType && entType->dsnt_loccount)) {
+ while ( dsgw_next_html_line( html, line )) {
+ if ( dsgw_parse_line( line, &argc, &argv, 1, dsgw_simple_cond_is_true, NULL )) {
+ if ( dsgw_directive_is( line, "DS_NEWENTRY_LOCATION_END" )) {
+ break;
+ }
+ }
+ }
+ }
+
+ } else if ( dsgw_directive_is( line, "DS_NEWENTRY_LOCATION_SELECT" )) {
+ dsgw_emits ("<SELECT NAME=\"selectLocation\""
+ " onChange=\"parent.locationChange(this.form)\">\n");
+ if (entType) {
+ auto dsgwloc* locarray = gc->gc_newentrylocs;
+ auto const int loccount = gc->gc_newentryloccount;
+ auto int j;
+ for ( j = 0; j < entType->dsnt_loccount; ++j ) {
+ auto const int i = entType->dsnt_locations[j];
+ if (i < loccount) {
+ dsgw_emits ("<OPTION VALUE=");
+ dsgw_emitf ("\"%s\"", locarray[i].dsloc_dnsuffix); /* XXX should escape '"' in dnsuffix */
+ dsgw_emitf (">%s</OPTION>\n", locarray[i].dsloc_fullname);
+ }
+ }
+ }
+
+ } else if ( dsgw_directive_is( line, "DS_NEWENTRY_LOCATION_END" )) {
+
+ } else if ( dsgw_directive_is( line, "EVALUATE" )) {
+ if (entType) {
+ auto int i;
+ for (i = 0; i < argc; ++i) {
+ if (!strcmp (argv[i], "entType.fullname")) {
+ if (entType->dsnt_fullname) dsgw_emits (entType->dsnt_fullname);
+ } else if (!strcmp (argv[i], "entType.rdnattr")) {
+ if (entType->dsnt_rdnattr) dsgw_emits (entType->dsnt_rdnattr);
+ } else if (!strcmp (argv[i], "entType.template")) {
+ if (entType->dsnt_template) dsgw_emits (entType->dsnt_template);
+ }
+ }
+ }
+
+ } else if ( dsgw_directive_is( line, "DS_HELP_BUTTON" ) && argc > 0) {
+ dsgw_emit_helpbutton (argv[0]);
+ } else {
+ dsgw_emits (line);
+ }
+ dsgw_argv_free( argv );
+ }
+ }
+ fclose (html);
+}
+
+static char*
+compute_newurl()
+{
+ auto char* entryType = dsgw_get_cgi_var( "entrytype", DSGW_CGIVAR_REQUIRED );
+ auto char* entryName = dsgw_get_cgi_var( "entryname", DSGW_CGIVAR_REQUIRED );
+ auto char* rdnTag = dsgw_get_cgi_var( "rdntag", DSGW_CGIVAR_REQUIRED );
+ auto char* dnSuffix = dsgw_get_cgi_var( "selectLocation", DSGW_CGIVAR_OPTIONAL );
+ auto size_t entryTypeLen = strlen (entryType);
+ auto size_t entryNameLen = strlen (entryName);
+ auto size_t rdnTagLen = strlen (rdnTag);
+ auto size_t dnSuffixLen;
+ auto char* dn;
+ auto char* newurl = NULL;
+
+ if (!dnSuffix || !*dnSuffix) {
+ dnSuffix = dsgw_get_cgi_var( "dnsuffix", DSGW_CGIVAR_REQUIRED );
+ }
+ dnSuffixLen = strlen (dnSuffix);
+ dn = dsgw_ch_malloc (rdnTagLen + 1 + entryNameLen + 2 + 1 + dnSuffixLen + 1);
+ memcpy (dn, rdnTag, rdnTagLen + 1);
+ strcat (dn, "=");
+ if ( strchr (entryName, ',') || strchr (entryName, ';') ) {
+ strcat (dn, "\"");
+ strcat (dn, entryName);
+ strcat (dn, "\"");
+ } else {
+ strcat (dn, entryName);
+ }
+ strcat (dn, ",");
+ strcat (dn, dnSuffix);
+ {
+ auto char* edn = dsgw_strdup_escaped (dn);
+ auto const char* const prefix = DSGW_URLPREFIX_CGI_HTTP "edit?";
+ auto const char* const suffix = "&ADD";
+ auto const size_t ednLen = strlen (edn);
+ auto const size_t prefixLen = strlen (prefix);
+ auto const size_t suffixLen = strlen (suffix);
+ auto const size_t contextLen = strlen (context) + 9;
+
+ newurl = dsgw_ch_malloc (prefixLen + entryTypeLen + contextLen + suffixLen + 4 + ednLen + 1);
+
+ memcpy (newurl, prefix, prefixLen + 1);
+ strcat (newurl, entryType);
+ strcat (newurl, "&context=");
+ strcat (newurl, context);
+ strcat (newurl, suffix);
+ strcat (newurl, "&dn=");
+ strcat (newurl, edn);
+ free (edn);
+ }
+ free (dn);
+ return newurl;
+}
+
+static int
+client_is_authenticated()
+{
+ auto char* cookie = dsgw_get_auth_cookie();
+ auto char* rndstr = NULL;
+ auto char* dn = NULL;
+ auto int answer = 0;
+ if (cookie == NULL) return 0;
+ if (dsgw_parse_cookie (cookie, &rndstr, &dn) == 0) {
+ if (dn) {
+ answer = 1;
+ free (dn);
+ }
+ if (rndstr) free (rndstr);
+ }
+ free (cookie);
+ return answer;
+}
+
+static dsgwnewtype*
+find_entryType (char* query)
+{
+ auto dsgwnewtype* ntp = gc->gc_newentrytypes;
+ if (query && *query) {
+ auto char* template = dsgw_ch_strdup (query);
+ dsgw_form_unescape (template);
+ for ( ; ntp; ntp = ntp->dsnt_next) {
+ if (ntp->dsnt_template && !strcmp (ntp->dsnt_template, template)) {
+ break;
+ }
+ }
+ free (template);
+ }
+ return ntp;
+}
+
+static void
+get_request(char *docname, char *etype)
+{
+ if ( docname == NULL || *docname == '\0' ) {
+ emit_file ("newentry.html", NULL);
+ } else if ( !strcmp( docname, "type" )) {
+ emit_file ("newentryType.html", NULL);
+ } else if ( !strcmp( docname, "name" )) {
+ /*emit_file ("newentryName.html", find_entryType (getenv ("QUERY_STRING")));*/
+ emit_file ("newentryName.html", find_entryType (etype));
+ }
+}
+
+static void
+post_request()
+{
+ auto char* newurl = compute_newurl();
+ if (client_is_authenticated()) {
+ /* Direct the client to GET newurl */
+ dsgw_emits ("<HTML>" );
+ dsgw_head_begin();
+ dsgw_emitf ("\n<TITLE>%s</TITLE>\n", XP_GetClientStr (DBT_titleNewEntry_));
+ dsgw_emits ("</HEAD>\n"
+ "<FRAMESET ROWS=*,1>\n");
+ dsgw_emitf (" <FRAME SRC=\"%s\" NORESIZE>\n", newurl);
+ dsgw_emits ("</FRAMESET>\n"
+ "</HTML>\n");
+ /* It's tempting to use server redirection, like this:
+ printf ("Location: %s\n\n", newurl);
+ ... but it won't work, because we're handling a POST,
+ and the client should GET newurl.
+ */
+ } else {
+#ifdef DSGW_DEBUG
+ dsgw_log ("dsgw_emit_auth_dest (NULL, %s)\n",
+ newurl ? newurl : "NULL");
+#endif
+ dsgw_emit_auth_dest (NULL, newurl);
+ }
+ if (newurl) free (newurl);
+}
+
+int
+main( argc, argv, env )
+ int argc;
+ char *argv[];
+#ifdef DSGW_DEBUG
+ char *env[];
+#endif
+{
+ auto int reqmethod;
+ char *qs = NULL;
+ char *docname = NULL;
+ char *etype = NULL;
+
+ /* Parse out the file=blah.html */
+ if (( qs = getenv( "QUERY_STRING" )) != NULL && *qs != '\0' ) {
+ /* parse the query string: */
+ auto char *p, *iter = NULL;
+ qs = dsgw_ch_strdup( qs );
+
+ for ( p = ldap_utf8strtok_r( qs, "&", &iter ); p != NULL;
+ p = ldap_utf8strtok_r( NULL, "&", &iter )) {
+
+ /*
+ * Get the conf file name. It'll be translated
+ * into /dsgw/context/CONTEXT.conf if
+ * CONTEXT is all alphanumeric (no slahes,
+ * or dots). CONTEXT is passed into the cgi.
+ * if context=CONTEXT is not there, or PATH_INFO
+ * was used, then use dsgw.conf
+ */
+ if ( !strncasecmp( p, "context=", 8 )) {
+ context = dsgw_ch_strdup( p + 8 );
+ dsgw_form_unescape( context );
+ continue;
+ }
+
+ /*
+ * file will be either "name", "type", or nothing.
+ * It'll be mapped into an html file in get_request
+ */
+ if ( !strncasecmp( p, "file=", 5 )) {
+ docname = dsgw_ch_strdup( p + 5 );
+ dsgw_form_unescape( docname );
+
+ continue;
+ }
+
+ /* etype will be ntgroup, or person, etc */
+ if ( !strncasecmp( p, "etype=", 6 )) {
+ etype = dsgw_ch_strdup( p + 6 );
+ dsgw_form_unescape( etype );
+
+ continue;
+ }
+ }
+ free( qs ); qs = NULL;
+ }
+
+ if (docname != NULL && *docname == '/') {
+ docname++;
+ }
+
+ reqmethod = dsgw_init( argc, argv, DSGW_METHOD_POST | DSGW_METHOD_GET);
+ dsgw_send_header();
+#ifdef DSGW_DEBUG
+ dsgw_logstringarray( "env", env );
+#endif
+
+ if ( reqmethod == DSGW_METHOD_GET ) {
+ get_request(docname, etype);
+ } else {
+ post_request();
+ }
+ exit( 0 );
+}
diff --git a/ldap/clients/dsgw/pbconfig/Makefile b/ldap/clients/dsgw/pbconfig/Makefile
new file mode 100644
index 00000000..f81f381d
--- /dev/null
+++ b/ldap/clients/dsgw/pbconfig/Makefile
@@ -0,0 +1,50 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+#
+# Gmakefile for Directory Server Gateway config files.
+#
+
+LDAP_SRC = ../../..
+MCOM_ROOT = ../../../../..
+
+NOSTDSTRIP=true # don't let nsconfig.mak define target strip
+NOSTDCLEAN=true # don't let nsconfig.mak define target clean
+NOSTDDEPEND=true # don't let nsconfig.mak define target depend
+
+include $(MCOM_ROOT)/ldapserver/nsconfig.mk
+include $(LDAP_SRC)/nsldap.mk
+
+include ../dsgw_include.mk
+
+HTMLDEST = $(DSGW_PBCONF_RELDIR)
+
+HTML = pb.tmpl dsgwsearchprefs.conf display-room.html edit-passwd.html\
+ display-orgperson.html list-Auth.html authPassword.html \
+ list-People.html authSearch.html display-orgunit.html \
+ dsgwfilter.conf
+
+BINS=$(addprefix $(HTMLDEST)/,$(HTML))
+
+ifeq ($(ARCH), WINNT)
+CP2=cmd /c 'sh ../../../cm/nbsp2utf8.sh $< >'
+else
+CP2=sh ../../../cm/nbsp2utf8.sh $< >
+endif
+
+all: $(HTMLDEST) $(BINS)
+
+install: $(HTMLDEST) $(BINS)
+
+clean:
+ $(RM) $(BINS)
+
+$(HTMLDEST)/%: %
+ -@$(RM) $@
+ $(CP2) $@
+
+strip:
+depend:
diff --git a/ldap/clients/dsgw/pbconfig/authPassword.html b/ldap/clients/dsgw/pbconfig/authPassword.html
new file mode 100644
index 00000000..98395470
--- /dev/null
+++ b/ldap/clients/dsgw/pbconfig/authPassword.html
@@ -0,0 +1,43 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!--
+ | $Id: authPassword.html,v 1.1 2005/01/21 00:40:49 cvsadm Exp $
+ |
+ | AUTHOR:
+ |
+ | SYNOPSIS:
+ | Display the vendor information.
+ |
+ | HISTORY:
+ |
+ +------------------------------------------------------------------------
+-->
+
+<HTML>
+<!-- HEAD -->
+<!--authPassword.html-->
+<TITLE>Authenticate...</TITLE>
+<!-- DS_AUTH_PASSWORD_SCRIPT -->
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</HEAD>
+
+<!-- DS_AUTH_PASSWORD_BODY -->
+<!-- DS_AUTH_PASSWORD_INFO -->
+<!-- DS_AUTH_PASSWORD_FORM -->
+<P>
+Password for <b>
+<!-- DS_AUTH_PASSWORD_NAME -->
+</b>: <INPUT NAME="password" TYPE="password" SIZE=16>
+<P>
+<CENTER>
+<TABLE BORDER=2 WIDTH=100%>
+<TR>
+<!-- DS_AUTH_PASSWORD_BUTTONS -->
+</TABLE>
+</FORM>
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/pbconfig/authSearch.html b/ldap/clients/dsgw/pbconfig/authSearch.html
new file mode 100644
index 00000000..dc2c1fc7
--- /dev/null
+++ b/ldap/clients/dsgw/pbconfig/authSearch.html
@@ -0,0 +1,44 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- ---------------------------------------------------------------------------
+ | $Id: authSearch.html,v 1.1 2005/01/21 00:40:49 cvsadm Exp $
+ |
+ | AUTHOR:
+ |
+ | SYNOPSIS:
+ | Display the vendor information.
+ |
+ | HISTORY:
+ |
+ +------------------------------------------------------------------------------ -->
+
+<HTML>
+<!-- HEAD -->
+<!--authSearch.html-->
+<TITLE>Authenticate...</TITLE>
+<!-- DS_AUTH_SEARCH_SCRIPT -->
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</HEAD>
+<!-- DS_AUTH_SEARCH_BODY -->
+<!-- DS_AUTH_SEARCH_INFO -->
+<!-- DS_AUTH_SEARCH_FORM -->
+The first step in authenticating to the directory is identifying
+yourself.<br>Please type your name:
+<!-- DS_AUTH_SEARCH_NAME -->
+<P>
+<CENTER>
+<TABLE BORDER=1 WIDTH=100%%>
+<TR>
+<!-- DS_AUTH_SEARCH_BUTTONS -->
+</TABLE>
+</FORM>
+<P>
+<!-- DS_AUTH_AS_ROOT_FORM -->
+<INPUT TYPE="submit" VALUE="Authenticate as directory manager"> (only available to Directory Administrators)
+</FORM>
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/pbconfig/display-orgperson.html b/ldap/clients/dsgw/pbconfig/display-orgperson.html
new file mode 100644
index 00000000..b7eea966
--- /dev/null
+++ b/ldap/clients/dsgw/pbconfig/display-orgperson.html
@@ -0,0 +1,388 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<html>
+<!-- HEAD -->
+<!-- inet. organizational person directory entry -->
+<!-- DS_OBJECTCLASS "value=person,inetOrgPerson" -->
+
+<!-- DS_ENTRYBEGIN -->
+<title>
+
+
+<!-- IF "Adding" -->
+New
+<!-- ENDIF // Adding -->
+Person Entry -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</title>
+
+<script language="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+
+var cardurl;
+
+function locator(){
+
+<!-- DS_ATTRIBUTE "attr=_vcard" "options=link" "mimetype=text/x-vcard" "prefix=var cardurl=" "suffix=";" -->
+
+ card.cards.document.location = cardurl;
+}
+
+function showVCard()
+{
+
+ card = window.open("/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=carded.html","leif","width=525,height=250,toolbar=no");
+
+ setTimeout("locator()",1000);
+
+}
+
+function showAimIcon()
+{
+var aimStatusText = "";
+var aimID = "";
+
+<!-- IF "DisplayAimPresence" -->
+aimStatusText =
+<!-- DS_ATTRIBUTE "attr=nsaimstatustext" "options=quoted" -->
+;
+
+aimID =
+<!-- DS_ATTRIBUTE "attr=nsaimid" "options=quoted" -->
+;
+<!-- ENDIF -->
+
+if (aimStatusText == "" || aimID == "" || aimStatusText != "ONLINE") {
+ return;
+}
+
+document.write('<a href=\"aim:goim?Screenname=' + aimID.replace(/ /,"+") + '\"><IMG SRC=\"lang?<!-- GCONTEXT -->&file=aim-online.gif\" ALT=\"Click to send an AIM to this person\" BORDER=0 HSPACE=5></a>');
+}
+
+// End hiding -->
+</script>
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</head>
+
+
+<!-- COLORS "BGCOLOR=white" -->
+<!-- IF "!Displaying" -->
+<body bgcolor="#FFFFFF" marginheight=0 marginwidth=0 leftmargin="0" topmargin="0" rightmargin="0">
+<table width="100%" class="bgColor1" cellspacing="0" cellpadding="0" border="0">
+<tr width="100%" class="bgColor1">
+<TD valign="top" class="bgColor1"><IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif" width="10" height="45" border="0"></TD>
+<TD valign="middle" align="left" class="text15" width="100%">Person Entry</td>
+</tr>
+</table>
+<table cellspacing="0" cellpadding="0">
+<tr>
+<td><IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif" width="1" height="10" border="0"></td>
+</tr>
+</table>
+<!-- ELSE -->
+<body bgcolor="#FFFFFF">
+<!-- ENDIF -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<!-- IF "Adding" -->
+ <input type="hidden" name="add_objectClass" value="top">
+ <input type="hidden" name="add_objectClass" value="person">
+ <input type="hidden" name="add_objectClass" value="organizationalPerson">
+ <input type="hidden" name="add_objectClass" value="inetOrgPerson">
+ <input type="hidden" name="add_objectClass" value="nsAIMpresence">
+<!-- PCONTEXT -->
+<!-- ENDIF // Adding -->
+
+
+<!-- --------------- Begin Header Info ------------------ -->
+<!-- single-pixel gif to enforce left alignment -->
+<img src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=pixel.gif" height="1" width="1" hspace="20" align="left" border="0">
+
+<table width="90%" border="0" cellpadding="2" cellspacing="0" align="left" bgcolor="#FFFFFF">
+ <tr valign="middle" align="left" class="bgcolor4">
+ <td width="10" nowrap align="center">
+ <img src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=32-person.gif" height="32" width="32" border="0" align="center">
+ </td>
+ <td nowrap class="boldbig">
+<!-- IF "Adding" -->
+ New Person -
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=cn" "syntax=cis" "options=readonly" -->
+ </td>
+ <td align="right">
+<!-- IF "DisplayOrgChart" -->
+<A HREF=
+<!-- DS_ORGCHARTLINK -->
+ class="linknodec">
+<IMG SRC="lang?<!-- GCONTEXT -->&file=orgicon.gif" BORDER=0 ALT="Click to view this person's organization chart." HSPACE=5><span style="text-decoration:none;color:black">&nbsp;org chart</span></a>
+<!-- ENDIF -->
+ <a href="javascript:showVCard()" onMouseOver="top.status='View this person\'s digital business card.'; return true" class="linknodec"><img src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=tiny_vcard.gif" align="texttop" border="0" height="20"
+ width="20" alt="Click to view this person's digital business card."><span style="text-decoration:none;color:black">&nbsp; vCard</span></a>
+<!-- DS_ATTRIBUTE "attr=userCertificate;binary" "type=hidden" "options=typeonly" -->
+<!-- IF "AttributeHasValues" "userCertificate;binary" -->
+ &nbsp;&nbsp;
+<a href=
+<!-- DS_ATTRIBUTE "attr=userCertificate;binary" "options=link" "mimetype=application/x-x509-email-cert" -->
+onMouseOver="top.status='Retrieve this person\'s security certificate.'; return true"><img src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=tiny_cert.gif" align="texttop" border="0" height="20" width="20" alt="Click to retrieve this
+person's security certificate."><span style="text-decoration:none;color:black">&nbsp;Get&nbsp;Certificate</span></a>
+<!-- ENDIF -->
+ &nbsp;
+ </td>
+ </tr>
+ <tr valign="top" align="left">
+ <td>
+ &nbsp;
+ </td>
+ <td colspan="2" nowrap>
+<!-- DS_ATTRIBUTE "attr=title" "type=hidden" "options=typeonly" -->
+<!-- IF "AttributeHasValues" "title" -->
+<!-- DS_ATTRIBUTE "attr=title" "options=readonly" -->
+<br>
+<!-- ENDIF -->
+<!-- DS_ATTRIBUTE "attr=ou" "options=readonly" -->
+ </td>
+ </tr>
+
+<!-- DS_ATTRIBUTE "attr=jpegPhoto" "type=hidden" "options=typeonly" -->
+
+ <tr valign="top">
+<!-- IF "AttributeHasValues" "jpegPhoto" -->
+ <td colspan="2">
+<!-- ELSE -->
+ <td colspan="3">
+<!-- ENDIF -->
+
+<!-- ---------------- Begin Table Data ------------------ -->
+
+<table border="0" cellpadding="4" cellspacing="1" width="100%" align="center">
+
+ <tr>
+ <td colspan="2">&nbsp;</td>
+ </tr>
+
+
+ <tr valign="top">
+ <td align="right" nowrap width="25%"
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>
+ Work Phone
+ </td>
+ <td align="left" bgcolor="white">
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>20" "numfields=+1" "options=readonly"-->
+ </td>
+ </tr>
+
+
+ <tr valign="top">
+ <td align="right" nowrap
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>
+ Email Address
+ </td>
+ <td align="left" bgcolor="white">
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" "cols=>20" "options=readonly" -->
+ </td>
+ </tr>
+
+ <tr valign="top">
+ <td align="right" nowrap
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>
+ AIM ID
+ </td>
+ <td align="left" bgcolor="white">
+<!-- DS_ATTRIBUTE "attr=nsaimid" "cols=>16" -->
+<!-- IF "DisplayAimPresence" -->
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+showAimIcon();
+// End hiding -->
+</SCRIPT>
+<!-- ENDIF -->
+ </td>
+ </tr>
+
+
+ <tr valign="top">
+ <td align="right" nowrap
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>
+ Homepage
+ </td>
+ <td align="left" bgcolor="white">
+<!-- DS_ATTRIBUTE "attr=labeledURI" "syntax=url" "cols=>60" "hrefextra=TARGET=_top" -->
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="4">&nbsp;</td>
+ </tr>
+
+ <tr valign="top">
+ <td align="right" nowrap
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>
+ Home Phone
+ </td>
+ <td align="left" bgcolor="white">
+<!-- DS_ATTRIBUTE "attr=homePhone" "numfields=+1" "cols=>20" -->
+ </td>
+ </tr>
+
+ <tr valign="top">
+ <td align="right" nowrap
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>
+ Mobile Phone
+ </td>
+ <td align="left" bgcolor="white">
+<!-- DS_ATTRIBUTE "attr=mobile" "syntax=tel" "cols=>20" -->
+ </td>
+ </tr>
+
+ <tr valign="top">
+ <td align="right" nowrap
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>
+ Pager
+ </td>
+ <td align="left" bgcolor="white">
+<!-- DS_ATTRIBUTE "attr=pager" "syntax=tel" "cols=>20" -->
+ </td>
+ </tr>
+
+ <tr valign="top">
+ <td align="right" nowrap
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>
+ FAX
+ </td>
+ <td align="left" bgcolor="white">
+<!-- DS_ATTRIBUTE "attr=facsimiletelephonenumber" "syntax=tel" "cols=>20" -->
+ </td>
+ </tr>
+
+
+ <tr>
+ <td colspan="4">&nbsp;</td>
+ </tr>
+
+ <tr valign="top">
+ <td align="right" nowrap
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>
+ Mailing Address
+ </td>
+ <td align="left" bgcolor="white">
+<!-- DS_ATTRIBUTE "attr=postalAddress" "cols=>60" "options=readonly" -->
+ </td>
+ </tr>
+
+ <tr valign="top">
+ <td align="right" nowrap
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>
+ Mailstop
+ </td>
+ <td align="left" bgcolor="white">
+<!-- DS_ATTRIBUTE "attr=physicalDeliveryOfficeName" "cols=>10" "options=readonly" -->
+ </td>
+ </tr>
+
+ <tr valign="top">
+ <td align="right" nowrap
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>
+ Location
+ </td>
+ <td align="left" bgcolor="white">
+<!-- DS_ATTRIBUTE "attr=l" "cols=>30" "options=readonly" -->
+ </td>
+ </tr>
+
+
+
+ <tr valign="top">
+ <td align="right" nowrap
+<!-- IF "Displaying" -->
+ class="bold"
+<!-- ENDIF -->
+>
+ Cube Number
+ </td>
+ <td align="left" bgcolor="white">
+<!-- DS_ATTRIBUTE "attr=roomNumber" "cols=>8" "options=readonly"-->
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">&nbsp;</td>
+ </tr>
+
+</table>
+
+<!-- ---------------------------------------------- -->
+ </td>
+
+<!-- IF "AttributeHasValues" "jpegPhoto" -->
+ <td align="left" bgcolor="white">
+<IMG SRC=
+<!-- DS_ATTRIBUTE "attr=jpegPhoto" "options=link" "mimetype=image/jpeg" -->
+BORDER=0>
+ </td>
+<!-- ENDIF -->
+
+ </tr>
+ <tr align="right">
+ <td colspan="4" class="bgColor4">
+<!-- IF "Displaying" -->
+<!-- DS_EDITBUTTON "label=Edit Person" -->
+<!-- ELIF "Adding" -->
+<!-- DS_SAVEBUTTON "label=Save New Person" -->
+<!-- ELIF "Editing" -->
+<!-- DS_SAVEBUTTON -->
+<!-- ENDIF // Editing -->
+
+<!-- IF "!Displaying" -->
+<!-- DS_CLOSEBUTTON "label=Cancel" -->
+<!-- ENDIF // !Displaying -->
+
+<!-- DS_EDITASBUTTON "label=Change Password" "template=passwd" -->
+ </td>
+
+ </tr>
+
+</table>
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+</body>
+</html>
diff --git a/ldap/clients/dsgw/pbconfig/display-orgunit.html b/ldap/clients/dsgw/pbconfig/display-orgunit.html
new file mode 100644
index 00000000..5a999993
--- /dev/null
+++ b/ldap/clients/dsgw/pbconfig/display-orgunit.html
@@ -0,0 +1,198 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- ---------------------------------------------------------------------------
+ | $Id: display-orgunit.html,v 1.1 2005/01/21 00:40:49 cvsadm Exp $
+ |
+ | AUTHOR:
+ |
+ | SYNOPSIS:
+ | Display the vendor information.
+ |
+ | HISTORY:
+ |
+ |
+ +--------------------------------------------------------------------------- -->
+
+<HTML>
+<!-- HEAD -->
+<!-- inet. organizational person directory entry -->
+<!-- DS_OBJECTCLASS "value=organizationalUnit" -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>
+<!-- IF "Adding" -->
+New
+<!-- ENDIF // Adding -->
+Organizational Unit Entry
+</TITLE>
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</HEAD>
+<BODY bgcolor=WHITE>
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<!-- IF "Adding" -->
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="top">
+<INPUT TYPE="hidden" NAME="add_objectClass" VALUE="ou">
+<!-- ENDIF // Adding -->
+
+
+
+<!-- --------------- Begin Header Info ------------------ -->
+<!-- single-pixel gif to enforce left alignment -->
+<img src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=pixel.gif" height="1" width="1" hspace="20" align="left" border="0">
+
+<table width="90%" border="0" cellpadding="2" cellspacing="0" align="left" bgcolor="#FFFFFF">
+ <tr valign="middle" align="left" class="bgColor4">
+ <td width="10" nowrap align="center">
+ <img src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=department.gif" height="32" width="32" border="0" align="center">
+ </td>
+ <td nowrap class="boldbig">
+<!-- DS_ATTRIBUTE "attr=ou" "syntax=cis" "options=readonly" -->
+ </td>
+ <td align="right">
+ </td>
+ </tr>
+ <tr valign="top" align="left">
+ <td>
+ &nbsp;
+ </td>
+ <td colspan="2" nowrap>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td colspan="3">
+
+<!-- ---------------- Begin Table Data ------------------ -->
+
+<table border="0" cellpadding="4" cellspacing="1" width="100%" align="center">
+
+ <tr>
+ <td colspan="2">&nbsp;</td>
+ </tr>
+
+ <tr valign="top">
+ <td align="right" nowrap width="25%" class="bold">
+ Business Category
+ </td>
+ <td align="left" bgcolor="white">
+<!-- DS_ATTRIBUTE "attr=businessCategory" -->
+ </td>
+ </tr>
+
+ <tr valign="top">
+ <td align="right" nowrap class="bold">
+ Description
+ </td>
+ <td align="left" bgcolor="white">
+<!-- DS_ATTRIBUTE "attr=description" "cols=>60" -->
+ </td>
+ </tr>
+
+ <tr valign="top">
+ <td align="right" nowrap class="bold">
+ Contact Phone
+ </td>
+ <td align="left" bgcolor="white">
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>20" "numfields=+1" -->
+ </td>
+ </tr>
+
+ <tr valign="top">
+ <td align="right" nowrap class="bold">
+ Fax
+ </td>
+ <td align="left" bgcolor="white">
+<!-- DS_ATTRIBUTE "attr=facsimiletelephonenumber" "syntax=tel" "cols=>20 -->
+ </td>
+ </tr>
+
+
+
+ <tr>
+ <td colspan="4">&nbsp;</td>
+ </tr>
+
+ <tr valign="top">
+ <td align="right" nowrap class="bold">
+ Location
+ </td>
+ <td align="left" bgcolor="white">
+<!-- DS_ATTRIBUTE "attr=l" "cols=>60" -->
+ </td>
+ </tr>
+
+ <tr valign="top">
+ <td align="right" nowrap class="bold">
+ Mailing Address
+ </td>
+ <td align="left" bgcolor="white">
+<!-- DS_ATTRIBUTE "attr=postalAddress" "syntax=mls" "cols=>60" -->
+ </td>
+ </tr>
+
+ <tr valign="top">
+ <td align="right" nowrap class="bold">
+ Mailstop
+ </td>
+ <td align="left" bgcolor="white">
+<!-- DS_ATTRIBUTE "attr=physicalDeliveryOfficeName" "cols=>10" -->
+ </td>
+ </tr>
+
+ <tr valign="top">
+ <td align="right" nowrap class="bold">
+ Postal Code
+ </td>
+ <td align="left" bgcolor="white">
+<!-- DS_ATTRIBUTE "attr=postalCode" "cols=>10" -->
+ </td>
+ </tr>
+
+ <tr valign="top">
+ <td align="right" nowrap class="bold">
+ Post Office Box
+ </td>
+ <td align="left" bgcolor="white">
+<!-- DS_ATTRIBUTE "attr=PostOfficeBox" "cols=>10" -->
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="4">&nbsp;</td>
+ </tr>
+
+
+ <tr valign="top">
+ <td align="right" nowrap class="bold">
+ See Also
+ </td>
+ <td align="left" bgcolor="white">
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "dncomponents=3" "cols=>50" -->
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">&nbsp;</td>
+ </tr>
+
+</table>
+
+<!-- ---------------------------------------------- -->
+
+ </td>
+ </tr>
+ <tr valign="middle" align="left" class="bgColor4">
+ <td colspan="2">
+ <img src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=pixel.gif" border="0" height="20" width="91">
+ <img src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=pixel.gif" border="0" height="20" width="107">
+ </td>
+ </tr>
+
+</table>
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/pbconfig/display-room.html b/ldap/clients/dsgw/pbconfig/display-room.html
new file mode 100644
index 00000000..baa4ee4f
--- /dev/null
+++ b/ldap/clients/dsgw/pbconfig/display-room.html
@@ -0,0 +1,124 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<html>
+<!-- HEAD -->
+<!-- DS_OBJECTCLASS "value=Room" -->
+
+<!-- DS_ENTRYBEGIN -->
+<title>
+<!-- IF "Adding" -->
+New
+<!-- ENDIF // Adding -->
+Room Entry
+</title>
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</head>
+<body bgcolor="white">
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<!-- IF "Adding" -->
+ <input type="hidden" name="add_objectClass" value="top">
+ <input type="hidden" name="add_objectClass" value="Room">
+<!-- PCONTEXT -->
+<!-- ENDIF // Adding -->
+
+<!-- --------------- Begin Header Info ------------------ -->
+<!-- single-pixel gif to enforce left alignment -->
+<img src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=pixel.gif" height="1" width="1" hspace="20" align="left" border="0">
+
+<table width="90%" border="0" cellpadding="2" cellspacing="0" align="left" bgcolor="#FFFFFF">
+ <tr valign="middle" align="left" class="bgColor4">
+ <td width="10" nowrap align="center">
+ <img src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=32-conference.gif" height="32" width="32" border="0" align="center">
+ </td>
+ <td nowrap class="boldbig">
+<!-- IF "Adding" -->
+ New Room
+<!-- ENDIF // Adding -->
+<!-- DS_ATTRIBUTE "attr=cn" "syntax=dn" "options=readonly" -->
+ </td>
+ <td align="right">
+ <img src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=pixel.gif" border="0" height="20" width="91">
+ <img src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=pixel.gif" border="0" height="20" width="107">
+ </td>
+ </tr>
+ <tr valign="top" align="left">
+ <td>
+ &nbsp;
+ </td>
+ <td colspan="2" nowrap>
+<!-- IF "AttributeHasValues" "roomNumber" -->
+&nbsp;Room
+<!-- DS_ATTRIBUTE "attr=roomNumber" "cols=>5"-->
+<!-- ENDIF -->
+ </td>
+ </tr>
+ <tr valign="top">
+ <td colspan="3">
+
+<!-- ---------------- Begin Table Data ------------------ -->
+
+<table border="0" cellpadding="4" cellspacing="1" width="100%" align="center">
+
+ <tr>
+ <td colspan="2">&nbsp;</td>
+ </tr>
+
+ <tr valign="top">
+ <td align="right" nowrap width="25%" class="bold">
+ Phone Number
+ </td>
+ <td align="left" bgcolor="white">
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>20" "numfields=+1" "options=readonly"-->
+ </td>
+ </tr>
+
+ <tr valign="top">
+ <td align="right" nowrap class="bold">
+ Description
+ </td>
+ <td align="left" nowrap>
+<!-- DS_ATTRIBUTE "attr=description" "type=TEXTAREA" "cols=>50" "rows=>4" -->
+ </td>
+ </tr>
+
+ <tr valign="top">
+ <td align="right" nowrap width="25%" class="bold">
+ See Also
+ </td>
+ <td align="left" bgcolor="white">
+<!-- DS_ATTRIBUTE "attr=seeAlso" "syntax=dn" "cols=>50" "numfields=+1" "options=readonly"-->
+ </td>
+ </tr>
+
+
+ <tr>
+ <td colspan="2">&nbsp;</td>
+ </tr>
+
+</table>
+
+ </td>
+ </tr>
+ <tr valign="middle" align="left" class="bgColor4">
+ <td colspan="3">
+ <img src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=pixel.gif" border="0" height="20" width="91">
+ <img src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=pixel.gif" border="0" height="20" width="107">
+ </td>
+ </tr>
+
+</table>
+
+<br clear="ALL">
+
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
+
diff --git a/ldap/clients/dsgw/pbconfig/dsgwfilter.conf b/ldap/clients/dsgw/pbconfig/dsgwfilter.conf
new file mode 100644
index 00000000..2c083f00
--- /dev/null
+++ b/ldap/clients/dsgw/pbconfig/dsgwfilter.conf
@@ -0,0 +1,89 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+################################################################################
+#
+# $Id: dsgwfilter.conf,v 1.1 2005/01/21 00:40:49 cvsadm Exp $
+#
+# AUTHOR:
+#
+# SYNOPSIS:
+# LDAP filter file.
+#
+# HISTORY:
+# 10-Oct-1997 Leif Put Phonebook under CVS control.
+#
+################################################################################
+
+
+################################################################################
+# lines like this that start with # or empty lines are ignored
+#
+# syntax:
+#
+# <tag>
+# <pattern1> <delimiters> <filter1-1> <desc1-1> [<scope>]
+# <filter1-2> <desc1-2> [<scope>]
+#
+# <pattern2> <delimiters> <filter2-1> <desc2-1> [<scope>] ...
+#
+# The "desc" should describe the filter and it should correctly complete
+# both of the following phrases:
+#
+# One <desc> match was found for...
+# Three <desc> matches were found for...
+#
+# The scope is optional, and should be one of:
+# "base"
+# "onelevel"
+# "subtree"
+# if it is included.
+#
+
+
+################################################################################
+# People searches.
+#
+"dsgw-people"
+ "^[a-zA-Z0-9]+=" " " "(%v))" "LDAP filter is"
+
+ "^[+]*[0-9][ 0-9-]*$" " " "(telephoneNumber=*%v*))" "phone number ends with"
+
+ "@" " " "(mail=%v))" "email address is"
+ "(mail=%v*))" "email address starts with"
+
+ "^.[. _].*" ". _" "(|(cn=%v1* %v2-)(&(ou=%v1* %v2-)(objectclass=organizationalUnit))))" "first initial + name is"
+
+ ".*[. _].$" ". _" "(|(cn=%v1-*)(&(ou=%v1-*)(objectclass=organizationalUnit))))" "name + last initial is"
+
+ "[. _]" ". _" "(|(sn=%v1-)(cn=%v1-)(&(ou=%v1-)(objectclass=organizationalUnit))))" "name is"
+
+ "^\*$" " " "(|(cn=*)(&(ou=*)(objectclass=organizationalUnit))))" "name or user id is"
+
+ "^.$" ". " "(|(cn=%v)(&(ou=%v)(objectclass=organizationalUnit))))" "full name is"
+
+ "^..$" ". " "(|(|(cn=%v*)(cn=*%v))(&(|(ou=%v*)(ou=*%v))(objectclass=organizationalUnit))))" "full name is"
+
+ ".*" ". " "(|(cn=*%v1*)(uid=%v1)(&(ou=*%v1*)(objectclass=organizationalUnit))))" "name or user id is"
+
+# Replace the line above with the following line if you are substring
+# indexing uid. If not, then only exact matches for uid will be found.
+#
+# ".*" ". " "(|(cn=*%v1*)(uid=*%v1*)(&(ou=*%v1*)(objectclass=organizationalUnit))))" "name or user id is"
+
+
+################################################################################
+# Authentication searches, prioritize UID first.
+#
+"dsgw-auth"
+ ".*" " " "(uid=%v))" "UID is"
+ "(cn=*%v1*))" "user name is"
+
+# Replace the line above with the following line if you are substring
+# indexing uid.
+#
+# "(|(cn=*%v1*)(uid=*%v1*)))" "user name is"
+
diff --git a/ldap/clients/dsgw/pbconfig/dsgwsearchprefs.conf b/ldap/clients/dsgw/pbconfig/dsgwsearchprefs.conf
new file mode 100644
index 00000000..528e66d7
--- /dev/null
+++ b/ldap/clients/dsgw/pbconfig/dsgwsearchprefs.conf
@@ -0,0 +1,126 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+################################################################################
+#
+# $Id: dsgwsearchprefs.conf,v 1.1 2005/01/21 00:40:49 cvsadm Exp $
+#
+# AUTHOR:
+#
+# SYNOPSIS:
+# Search preference configuration file.
+#
+# HISTORY:
+# 10-Oct-1997 Leif Put Phonebook under CVS control.
+#
+################################################################################
+
+
+################################################################################
+# dsgwsearchprefs.conf - directory server gateway search object definitions
+# the current version of this file format is 1
+#
+Version 1
+
+
+################################################################################
+#
+# Name for this search object
+People
+
+
+################################################################################
+# options (the only one supported right now is "internal" which means that
+# this search object should not be presented directly to the user)
+# use "" for none
+#
+""
+
+
+################################################################################
+# Label to place before text box user types in
+#
+"Search For:"
+
+
+################################################################################
+# Filter prefix to append to all searches
+#
+"(&(|(objectClass=Person)(objectClass=inetOrgPerson)(objectClass=organizationalUnit)(objectClass=Room))"
+
+
+################################################################################
+# Tag to use for "Fewer Choices" searches - from ldapfilter.conf file
+#
+"dsgw-people"
+
+
+################################################################################
+# If a search results in > 1 match, retrieve this attribute to help
+# user disambiguate the entries...
+#
+not-used-by-dsgw
+
+
+################################################################################
+# ...and label it with this string:
+#
+not-used-by-dsgw
+
+
+################################################################################
+# Search scope to use when searching
+#
+subtree
+
+
+################################################################################
+# Follows a list of "More Choices" search options. Format is:
+# Label, attribute, select-bitmap, extra attr display name, extra attr ldap name
+# If last two are null, "Fewer Choices" name/attributes used
+#
+"full name" cn 111111 "" ""
+"last name" sn 111111 "" ""
+"phone number" "telephoneNumber" 111011 "" ""
+"e-mail address" "mail" 111111 "" ""
+"user id" "uid" 111111 "" ""
+"title" title 111111 "" ""
+END
+# Match types
+"is" "(%a=%v))"
+"is not" "(!(%a=%v)))"
+"sounds like" "(%a~=%v))"
+"starts with" "(%a=%v*))"
+"ends with" "(%a=*%v))"
+"contains" "(%a=*%v*))"
+END
+
+
+################################################################################
+# Authentication search configuration, used when editing an entry.
+#
+Auth
+internal
+"Authenticate As:"
+"(&(objectClass=person)"
+"dsgw-auth"
+not-used-by-dsgw
+not-used-by-dsgw
+subtree
+"common name" cn 111111 "" ""
+"surname" sn 111111 "" ""
+"phone number" "telephoneNumber" 111011 "" ""
+"e-mail address" "mail" 111111 "" ""
+"user id" "uid" 111111 "" ""
+"title" title 111111 "" ""
+END
+"is" "(%a=%v))"
+"is not" "(!(%a=%v)))"
+"sounds like" "(%a~=%v))"
+"starts with" "(%a=%v*))"
+"ends with" "(%a=*%v))"
+"contains" "(%a=*%v*))"
+END
diff --git a/ldap/clients/dsgw/pbconfig/edit-passwd.html b/ldap/clients/dsgw/pbconfig/edit-passwd.html
new file mode 100644
index 00000000..b4fff245
--- /dev/null
+++ b/ldap/clients/dsgw/pbconfig/edit-passwd.html
@@ -0,0 +1,111 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<!-- HEAD -->
+<!-- change a directory entry's password -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>Change Password -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE>
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</HEAD>
+
+<body bgcolor="#FFFFFF" marginheight=0 marginwidth=0 leftmargin="0" topmargin="0" rightmargin="0"
+>
+
+<table width="100%" class="bgColor1" cellspacing="0" cellpadding="0" border="0">
+<tr width="100%" class="bgColor1">
+<TD valign="top" class="bgColor1"><IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif" width="10" height="45" border="0"></TD>
+<TD valign="middle" align="left" class="text15" width="100%">Person Entry</td>
+</tr>
+</table>
+
+<table cellspacing="0" cellpadding="0">
+<tr>
+<td><IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif" width="1" height="10" border="0"></td>
+</tr>
+</table>
+
+<img src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=pixel.gif" height="1" width="1" hspace="20" align="left" border="0">
+
+<TABLE width="90%" border="0" cellpadding="2" cellspacing="0" bgcolor="#FFFFFF">
+ <tr class="bgColor4">
+ <td width="10" nowrap >
+ <img src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=32-person.gif" height="32" width="32" border="0" >
+ </td>
+
+ <td nowrap class="boldbig">
+ Change Password for
+<!-- DS_ATTRIBUTE "attr=cn" "syntax=cis" "options=readonly" -->
+ </td>
+
+ </tr>
+</TABLE>
+
+<P>
+<!-- DS_BEGIN_ENTRYFORM -->
+
+
+<TABLE>
+
+<!-- IF "BoundAsThisEntry" -->
+<TR>
+<TD ALIGN="right" NOWRAP>
+Enter the old password:
+</TD><TD>
+<!-- DS_OLDPASSWORD -->
+</TD></TR>
+<!-- ELIF "!Bound" -->
+
+<TR>
+<TD ALIGN="right" NOWRAP>
+Enter the old password:
+</TD><TD>
+<!-- DS_OLDPASSWORD -->
+</TD></TR>
+<!-- ENDIF //BoundAsThisEntry -->
+
+<TR>
+<TD ALIGN="right" NOWRAP>
+Enter the new password:
+</TD><TD>
+<!-- DS_NEWPASSWORD -->
+</TD></TR>
+
+<TR>
+<TD ALIGN="right" NOWRAP>
+Enter the new password again to confirm:
+</TD><TD>
+<!-- DS_CONFIRM_NEWPASSWORD -->
+</TD></TR>
+</TABLE>
+
+<P>
+
+<img src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=pixel.gif" height="1" width="1" hspace="20" align="left" border="0">
+
+<TABLE width="90%" border="0" cellpadding="2" cellspacing="0" bgcolor="#FFFFFF">
+ <tr class="bgColor4">
+ <td nowrap align="right">
+<!-- IF "BoundAsThisEntry" -->
+<!-- DS_SAVEBUTTON "label=Change Password" -->
+<!-- ELSE -->
+<!-- DS_SAVEBUTTON "label=Set Password" -->
+<!-- ENDIF -->
+
+<!-- DS_HELPBUTTON "topic=MODIFYPASSWD" -->
+ </td>
+ </tr>
+</TABLE>
+
+
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/pbconfig/list-Auth.html b/ldap/clients/dsgw/pbconfig/list-Auth.html
new file mode 100644
index 00000000..d3711e0d
--- /dev/null
+++ b/ldap/clients/dsgw/pbconfig/list-Auth.html
@@ -0,0 +1,116 @@
+<html>
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- ---------------------------------------------------------------------------
+ | $Id: list-Auth.html,v 1.1 2005/01/21 00:40:49 cvsadm Exp $
+ |
+ | AUTHOR:
+ |
+ | SYNOPSIS:
+ | Display the vendor information.
+ |
+ | HISTORY:
+ |
+ |------------------------------------------------------------------------------ -->
+<!-- HEAD -->
+<TITLE>Authenticate as...</TITLE>
+
+<!--
+ The "authForm" form and the authSubmit() JavaScript function are
+ used to avoid the need for a separate form for each entry listed.
+ Each entry is tied to this single form through the magic of an
+ anchor that contains href=javascript:authSubmit().
+-->
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</head>
+<body bgcolor="#FFFFFF" marginheight=0 marginwidth=0 leftmargin="0" topmargin="0" rightmargin="0">
+<table width=100% class="bgColor1" cellspacing="0" cellpadding="0" border="0">
+<tr width=100% class="bgColor1">
+<TD valign="top" class="bgColor1"><IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif" width="10" height="45" border="0"></TD>
+<TD valign="middle" align="left" class="text15" width="100%">Authenticate as...</td>
+</tr>
+</table>
+<table cellspacing="0" cellpadding="0">
+<tr>
+<td><IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif" width="1" height="10" border="0"></td>
+</tr>
+</table>
+
+<FORM NAME="authForm" METHOD=POST ACTION="/clients/dsgw/bin/auth">
+<INPUT TYPE="hidden" NAME="escapedbinddn">
+<INPUT TYPE="hidden" NAME="authdesturl"
+<!-- DS_POSTEDVALUE "name=authdesturl" "within=VALUE=%22--value--%22" -->
+>
+<!-- PCONTEXT -->
+</FORM>
+
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+function authSubmit(encodeddn)
+{
+ document.authForm.escapedbinddn.value = encodeddn;
+ document.authForm.submit();
+}
+// End hiding -->
+</SCRIPT>
+
+<img src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=pixel.gif" height="1" width="1" hspace="20" align="left" border="0">
+
+<TABLE width="90%" border="0" cellpadding="2" cellspacing="0" bgcolor="#FFFFFF">
+ <tr class="bgColor4">
+ <td nowrap align="right" class="boldbig">
+ <img src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif" height="32" width="1" border="0" >
+ </td>
+ </tr>
+</TABLE>
+<P>
+
+<CENTER>
+<!-- DS_SEARCHDESC "VERBOSE" -->
+<P>
+<!-- IF "FoundEntries" -->
+Please click on the name of the entry you would like to use for authentication.
+</P>
+<P>
+
+<TABLE BORDER=1 CELLPADDING=4>
+<TR>
+<TD NOWRAP class="boldbig">Authenticate As</td>
+<TD NOWRAP class="boldbig">Title</td>
+
+<!-- DS_SORTENTRIES -->
+
+<!-- DS_ENTRYBEGIN -->
+<TR>
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "href=javascript:authSubmit('--value--'); onMouseOver=%22window.status='Click to authenticate'; return true;%22" -->
+<TD NOWRAP>
+<!-- DS_ATTRIBUTE "attr=title" -->
+
+<!-- DS_ENTRYEND -->
+
+</TABLE>
+<!-- ELSE "FoundEntries" -->
+Please go back and try again.
+<!-- ENDIF "FoundEntries" -->
+</CENTER>
+
+<FORM>
+<img src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=pixel.gif" height="1" width="1" hspace="20" align="left" border="0">
+
+<TABLE width="90%" border="0" cellpadding="2" cellspacing="0" bgcolor="#FFFFFF">
+ <tr class="bgColor4">
+ <td nowrap align="right" class="boldbig">
+ <INPUT TYPE="button" VALUE="Go Back" onClick="history.back();">
+<!-- DS_HELPBUTTON "topic=AUTHMULTMATCH" -->
+ </td>
+ </tr>
+</TABLE>
+
+</FORM>
+</body>
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/pbconfig/list-People.html b/ldap/clients/dsgw/pbconfig/list-People.html
new file mode 100644
index 00000000..71100da1
--- /dev/null
+++ b/ldap/clients/dsgw/pbconfig/list-People.html
@@ -0,0 +1,125 @@
+<html>
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!-- HEAD -->
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+
+function showAimIcon(aimID, aimStatusText)
+{
+if (aimStatusText == "" || aimID == "" || aimStatusText != "ONLINE") {
+ return;
+}
+
+document.write('<a href=\"aim:goim?Screenname=' + aimID.replace(/ /,"+") + '\"><IMG SRC=\"lang?<!-- GCONTEXT -->&file=aim-online.gif\" ALT=\"Click to send an AIM to this person\" BORDER=0 HSPACE=5></a>');
+}
+// End hiding -->
+</SCRIPT>
+</head>
+
+<body bgcolor=white>
+
+<!-- single-pixel gif to enforce left alignment -->
+<img src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=pixel.gif" height="1" width="1" hspace="20" align="left" border="0">
+
+<!-- IF "FoundEntries" -->
+
+<table width="85%" border="0" cellpadding="0" cellspacing="0" class="bgColor4" align="left">
+ <tr valign="top" bgcolor="#FFFFFF">
+ <td bgcolor="white">
+<!-- DS_SEARCHDESC -->
+ <br>&nbsp;
+ </td>
+ </tr>
+ <tr>
+ <td>
+
+<table border="0" cellpadding="1" cellspacing="0" width="100%" bgcolor="#FFFFFF" align="center">
+ <tr align="left" class="bgColor4">
+ <td class="boldbig">
+ Name
+ </td>
+ <td class="boldbig">
+ ID
+ </td>
+ <td class="boldbig">
+ Phone
+ </td>
+ <td class="boldbig">
+ E-mail
+ </td>
+ <td class="boldbig">
+ AIM ID
+ </td>
+ <td class="boldbig">
+ Group
+ </td>
+ </tr>
+<!-- DS_SORTENTRIES "attr=cn" -->
+
+<!-- DS_ENTRYBEGIN -->
+ <tr valign="top" bgcolor="#FFFFFF">
+ <td >
+<!-- DS_ATTRIBUTE "attr=cn" "syntax=cis" -->
+ </td>
+ <td >
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "hrefextra=onMouseOver=%22%0Awindow.status='Click here to view this entry in detail'; return true%22" -->
+ </td>
+ <td>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" -->
+ </td>
+ <td >
+<!-- DS_ATTRIBUTE "attr=mail" "syntax=mail" -->
+ </td>
+ <td>
+<!-- DS_ATTRIBUTE "attr=nsaimid" -->
+<SCRIPT LANGUAGE="JavaScript">
+<!-- Hide from non-JavaScript-capable browsers
+showAimIcon(
+<!-- DS_ATTRIBUTE "attr=nsaimid" "options=quoted" -->
+,
+""//<!-- DS_ATTRIBUTE "attr=nsaimstatustext" "options=quoted" -->
+);
+//// Uncomment the above DS_ATTRIBUTE directive and remove the double ////
+//// quotes to have aim presence in search results lists ////
+
+// End hiding -->
+</SCRIPT>
+ </td>
+ <td>
+<!-- DS_ATTRIBUTE "attr=ou" "syntax=cis"-->
+ </td>
+ </tr>
+ <tr>
+ <td colspan="5"></td>
+ </tr>
+<!-- DS_ENTRYEND -->
+
+</table>
+
+ </td>
+ </tr>
+ <tr bgcolor="#FFFFFF">
+ <td>
+ &nbsp;<br>
+ Click on an entry's ID to bring up more information about that entry.
+ </td>
+ </tr>
+</table>
+
+<!-- ELSE -->
+<p>
+ <center>
+ No entries match the requested search term. Please try a different search.
+ </center>
+</p>
+<!-- ENDIF -->
+
+<!-- ENDHTML -->
+
diff --git a/ldap/clients/dsgw/pbconfig/pb.tmpl b/ldap/clients/dsgw/pbconfig/pb.tmpl
new file mode 100644
index 00000000..57ec10d8
--- /dev/null
+++ b/ldap/clients/dsgw/pbconfig/pb.tmpl
@@ -0,0 +1,126 @@
+# The attribute the orgchart uses to search for entries.
+# This value should correspond to the value of attrib-farleft-rdn
+# in the orgchart's config.txt configuration file.
+orgchart-attrib-farleft-rdn uid
+
+# Check for Aim presence when the user's entry is displayed
+enable-aim-presence true
+
+# The htmldir directive tells the CGIs where to find the html files
+htmldir ../pbhtml
+
+# The configdir directive tells the CGIs where to find the
+# templates/configuration files
+configdir ../pbconfig
+
+# The gwnametrans directive tells the CGIs what url to output
+# for http redirection. It should be the same nameTrans set
+# in the webserver, if any is being is used.
+gwnametrans /clients/dsgw/pbhtml/
+
+# The authlifetime directive specifies how long authentication credentials
+# are valid (in seconds).
+authlifetime 7200
+
+# The libNLS data directory. This directory should contain a directory
+# named "locales", which contains the configuration files LANG.ctx and
+# LANG.txt for each supported language (locale).
+NLS ../../../lib/nls
+
+# The default character set, for communication with HTTP clients.
+# A client may override this default, using an HTTP Accept-Charset header.
+# Or, this default may be overridden for a specific language, by creating
+# a LANG/dsgwcharset.conf file which contains the charset name.
+# For compatibility with HTTP clients that can't handle an HTTP response
+# with a charset parameter in the content-type, comment out this directive;
+# responses will be sent in ISO-8859-1, with no explicit charset parameter.
+# RFC 1345 defines the syntax of charset names. There is a registry of
+# charsets, at ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets
+# charset UTF-8
+
+# ignoreAcceptCharsetFrom [ <HTTP client version string> ]
+# where each of whose values is the version string (or part of the version
+# string) sent by an HTTP client which can't / doesn't want to handle UTF-8.
+# Charset from dsgwcharset.conf or charset directive is used (in the order).
+# ignoreAcceptCharsetFrom Mozilla/4.01x-NSCP Mozilla/3
+
+# Substitute ideographic space for non-breaking space in Asian charsets:
+changeHTML "&nbsp;&nbsp;" " " Shift_JIS Big5 EUC-KR EUC-JP
+changeHTML "&nbsp;" " " Shift_JIS Big5 EUC-KR EUC-JP
+
+# Mapping between config/display-XXX.html templates and LDAP objectClasses.
+# This can be generated by using ds/templateindex. The format is:
+#
+# template TEMPLATENAME OBJECTCLASSES
+#
+# where "display-TEMPLATENAME.html" is the name of a display template
+# that is found in this config directory (e.g., "display-group.html") and
+# OBJECTCLASSES is a list of one or more objectClass values. For a given
+# template to be used, all the objectClass values listed must be present
+# in the directory entry, so the order of these template lines is
+# significant (e.g. note that the more specific "orgperson" template is
+# listed before the one for an ordinary "person").
+#
+template orgunit organizationalUnit
+template room room
+template orgperson person inetOrgPerson
+
+
+#
+# The remainder of this file contains information about the locations and
+# types for new entries.
+#
+# "location" lines define places in the directory where new entries can be added
+# The format of each line is:
+# location HANDLE FRIENDLYNAME DN
+# where HANDLE is a short name which is used in the "newtype" lines (see below)
+# and FRIENDLYNAME is a human-readable name for the location
+# and DN is the Distinguished Name for this location (if it does not end with
+# '#', the location-suffix is appended to to construct a full DN; if it
+# does end with `#', it assumed to be a full DN and the `#' is removed).
+#
+location country "United States" "c=US#"
+location org "This Organization" ""
+location groups "Groups" "ou=Groups"
+location people "People" "ou=People"
+location special "Special Users" "ou=Special Users"
+
+# "newtype" lines define the types of new entries that may be added
+# The format of each line is:
+# newtype TEMPLATENAME FRIENDLYNAME RDNATTR LOCATIONS...
+# where TEMPLATENAME corresponds to an existing display-TEMPLATENAME.html file
+# and FRIENDLYNAME is a human-readable name for this type of entry
+# and RDNATTR is the attribute that is used to name entries of this type
+# and LOCATIONS is a blank-separated list of locations where these types of
+# entries can be added (corresponding to a HANDLE on a "location"
+# config. file line).
+#
+newtype orgperson "Person" uid people special
+newtype ntperson "NT Person" uid people special
+newtype ntgroup "NT Group" cn groups
+newtype groupun "Group" cn groups
+newtype orgunit "Organizational Unit" ou people org
+newtype org "Organization" o country
+
+# Mappings between VCard properties and LDAP attribute types:
+# The format of each line is:
+# vcard-property VCARDPROP SYNTAX LDAPATTR [LDAPATTR2]
+# where VCARDPROP is the name of a VCard property
+# and SYNTAX is "cis" for simple strings and "mls" for multiline strings
+# and LDAPATTR is the LDAP attribute that corresponds to VCARDPROP
+# and LDAPATTR2 is an optional secondary LDAP attribute which is added to
+# the property value by appending a semicolon and then the attr2 value.
+vcard-property FN cis cn
+vcard-property N cis sn givenName
+vcard-property ORG cis o ou
+vcard-property ROLE cis businessCategory
+vcard-property ADR;WORK mls postalAddress
+vcard-property ADR;HOME mls homePostalAddress
+vcard-property EMAIL;INTERNET cis mail
+vcard-property TITLE cis title
+vcard-property TEL;WORK cis telephoneNumber
+vcard-property TEL;FAX cis facsimileTelephoneNumber
+vcard-property TEL;CELL cis mobile
+vcard-property TEL;HOME cis homePhone
+vcard-property NOTE cis description
+
diff --git a/ldap/clients/dsgw/pbhtml/16-conference.gif b/ldap/clients/dsgw/pbhtml/16-conference.gif
new file mode 100644
index 00000000..57b9bfdf
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/16-conference.gif
Binary files differ
diff --git a/ldap/clients/dsgw/pbhtml/16-person.gif b/ldap/clients/dsgw/pbhtml/16-person.gif
new file mode 100644
index 00000000..456e9b2a
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/16-person.gif
Binary files differ
diff --git a/ldap/clients/dsgw/pbhtml/32-alert.gif b/ldap/clients/dsgw/pbhtml/32-alert.gif
new file mode 100644
index 00000000..453d1b2b
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/32-alert.gif
Binary files differ
diff --git a/ldap/clients/dsgw/pbhtml/32-conference.gif b/ldap/clients/dsgw/pbhtml/32-conference.gif
new file mode 100644
index 00000000..2c0d72e1
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/32-conference.gif
Binary files differ
diff --git a/ldap/clients/dsgw/pbhtml/32-message.gif b/ldap/clients/dsgw/pbhtml/32-message.gif
new file mode 100644
index 00000000..e46c67a0
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/32-message.gif
Binary files differ
diff --git a/ldap/clients/dsgw/pbhtml/32-office.gif b/ldap/clients/dsgw/pbhtml/32-office.gif
new file mode 100644
index 00000000..0e3591fa
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/32-office.gif
Binary files differ
diff --git a/ldap/clients/dsgw/pbhtml/32-person.gif b/ldap/clients/dsgw/pbhtml/32-person.gif
new file mode 100644
index 00000000..93439d0c
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/32-person.gif
Binary files differ
diff --git a/ldap/clients/dsgw/pbhtml/Makefile b/ldap/clients/dsgw/pbhtml/Makefile
new file mode 100644
index 00000000..38b4807f
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/Makefile
@@ -0,0 +1,53 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+#
+# Gmakefile for Directory Server Phonebook html files.
+# 1/21/98 - RJP
+#
+
+LDAP_SRC = ../../..
+MCOM_ROOT = ../../../../..
+
+NOSTDSTRIP=true # don't let nsconfig.mak define target strip
+NOSTDCLEAN=true # don't let nsconfig.mak define target clean
+NOSTDDEPEND=true # don't let nsconfig.mak define target depend
+
+include $(MCOM_ROOT)/ldapserver/nsconfig.mk
+include $(LDAP_SRC)/nsldap.mk
+
+include ../dsgw_include.mk
+
+HTMLDEST = $(DSGW_PBHTML_RELDIR)
+
+HTML= emptyFrame.html index.html 16-conference.gif \
+ office.gif report.html 16-person.gif conference.gif \
+ pbrd.jpg department.gif person.gif clear.gif \
+ vendor.gif style.css intro.html phone.html view_vcard.gif \
+ phone.js view_vcard_sm.gif \
+ brandblock.gif get_cert.gif \
+ carded.html get_cert_sm.gif pixel.gif \
+ 32-office.gif 32-alert.gif 32-conference.gif 32-person.gif \
+ 32-message.gif nullStringError.html tiny_cert.gif \
+ tiny_vcard.gif confirm.html alert.html orgicon.gif aim-online.gif
+
+BINS=$(addprefix $(HTMLDEST)/,$(HTML))
+
+include $(MCOM_ROOT)/ldapserver/config/webint.mk
+
+all: $(HTMLDEST) $(BINS)
+
+install: $(HTMLDEST) $(BINS)
+
+clean:
+ $(RM) $(BINS)
+
+$(HTMLDEST)/%: %
+ @-$(RM) $@
+ cp $< $@
+
+strip:
+depend:
diff --git a/ldap/clients/dsgw/pbhtml/aim-online.gif b/ldap/clients/dsgw/pbhtml/aim-online.gif
new file mode 100644
index 00000000..b364017e
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/aim-online.gif
Binary files differ
diff --git a/ldap/clients/dsgw/pbhtml/alert.html b/ldap/clients/dsgw/pbhtml/alert.html
new file mode 100644
index 00000000..c5afda96
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/alert.html
@@ -0,0 +1,24 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>
+<!-- DS_POSTEDVALUE "NAME=TITLE" -->
+</title>
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</HEAD>
+
+<BODY onLoad="document.OK.btn.focus();" bgcolor="#CCCCCC">
+<TABLE cols=2 width="100%"><TR VALIGN=CENTER>
+<TD ALIGN=CENTER WIDTH=32><IMG SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=32-alert.gif" HEIGHT=32 WIDTH=32 BORDER="0" ALT="Alert"></TD>
+<TD>
+<!-- DS_POSTEDVALUE "NAME=MSG" -->
+</TD></TR></TABLE>
+<FORM NAME=OK><CENTER>
+<!-- DS_CLOSEBUTTON "NAME=btn" "LABEL= OK " -->
+</CENTER></FORM>
+</BODY></HTML>
diff --git a/ldap/clients/dsgw/pbhtml/brandblock.gif b/ldap/clients/dsgw/pbhtml/brandblock.gif
new file mode 100644
index 00000000..4cfea04f
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/brandblock.gif
Binary files differ
diff --git a/ldap/clients/dsgw/pbhtml/carded.html b/ldap/clients/dsgw/pbhtml/carded.html
new file mode 100644
index 00000000..f26f7409
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/carded.html
@@ -0,0 +1,44 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<html>
+ <head>
+ <title>vCard</title>
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+ </head>
+
+<script language=javascript>
+
+function autoCloser(){
+
+var closeHTML=
+'<body bgcolor="#CCCCCC">\n' +
+'<center>\n' +
+'<form name=adios>\n' +
+'<font face="primasans bt,verdana,arial,helvetica,sans-serif" size="-1">\n' +
+'<input type=button value="Close Window" onclick="window.parent.close()">\n' +
+'</font>\n' +
+'</form>\n' +
+'</center>\n' +
+'</body></html>';
+
+self.closer.document.write(closeHTML);
+
+}
+
+
+function init(){
+autoCloser();
+}
+
+</script>
+
+<frameset rows="200,50" border="0" onload="init();">
+ <frame name="cards" src="javascript:parent.emptyFrame" scrolling="AUTO">
+ <frame name="closer" src="javascript:parent.emptyFrame" scrolling="NO">
+</frameset>
+
+</html>
diff --git a/ldap/clients/dsgw/pbhtml/clear.gif b/ldap/clients/dsgw/pbhtml/clear.gif
new file mode 100644
index 00000000..35d42e80
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/clear.gif
Binary files differ
diff --git a/ldap/clients/dsgw/pbhtml/conference.gif b/ldap/clients/dsgw/pbhtml/conference.gif
new file mode 100644
index 00000000..ce0222d0
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/conference.gif
Binary files differ
diff --git a/ldap/clients/dsgw/pbhtml/confirm.html b/ldap/clients/dsgw/pbhtml/confirm.html
new file mode 100644
index 00000000..3d418e78
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/confirm.html
@@ -0,0 +1,30 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<TITLE>
+<!-- DS_POSTEDVALUE "NAME=TITLE" -->
+</TITLE>
+<!-- DS_CONFIRM_SCRIPT -->
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</HEAD>
+
+<BODY>
+<TABLE COLS=2 WIDTH="100%"><TR VALIGN=CENTER>
+<TD ALIGN=CENTER WIDTH=36><IMG SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=32-alert.gif" HEIGHT=32 WIDTH=32 BORDER="0" ALT="Confirm"></TD><TD>
+<!-- DS_POSTEDVALUE "NAME=MSG" -->
+</TD></TR></TABLE>
+<FORM><TABLE COLS=4 WIDTH="100%"><TR ALIGN=CENTER>
+<TD></TD>
+<TD>
+<!-- DS_CONFIRM_BUTTON_OK -->
+</TD><TD>
+<!-- DS_CONFIRM_BUTTON_CANCEL -->
+</TD>
+<TD></TD>
+</TR></TABLE></FORM>
+</BODY></HTML>
diff --git a/ldap/clients/dsgw/pbhtml/department.gif b/ldap/clients/dsgw/pbhtml/department.gif
new file mode 100644
index 00000000..2d0b1535
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/department.gif
Binary files differ
diff --git a/ldap/clients/dsgw/pbhtml/emptyFrame.html b/ldap/clients/dsgw/pbhtml/emptyFrame.html
new file mode 100644
index 00000000..627efdfb
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/emptyFrame.html
@@ -0,0 +1,7 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML><BODY BGCOLOR="white"></BODY></HTML>
diff --git a/ldap/clients/dsgw/pbhtml/get_cert.gif b/ldap/clients/dsgw/pbhtml/get_cert.gif
new file mode 100644
index 00000000..9f08a221
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/get_cert.gif
Binary files differ
diff --git a/ldap/clients/dsgw/pbhtml/get_cert_sm.gif b/ldap/clients/dsgw/pbhtml/get_cert_sm.gif
new file mode 100644
index 00000000..c0c76885
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/get_cert_sm.gif
Binary files differ
diff --git a/ldap/clients/dsgw/pbhtml/index.html b/ldap/clients/dsgw/pbhtml/index.html
new file mode 100644
index 00000000..b97706d6
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/index.html
@@ -0,0 +1,41 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<html>
+<head>
+<meta
+ name="keywords"
+ content="Netscape server product, Directory Server 6.2, LDAP Corporate Directory"
+>
+<meta name="description" content="Netscape Directory Express:
+ A Searchable Index of People and Resources for your enterprise.">
+<meta name="keywords" content="phonebook, directory, express, search, enterprise, people, users, conference rooms, spooky!">
+<title>Netscape Directory Express</title>
+
+</head>
+
+<frameset rows="50,*" frameborder="no" border="0" framespacing="0">
+ <frame
+ src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=phone.html"
+ name="buttonBarFrame"
+ marginwidth="0"
+ marginheight="0"
+ scrolling="no"
+ >
+ <frame
+ src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=intro.html"
+ name="resultframe"
+ marginwidth="10"
+ marginheight="10"
+ scrolling="auto"
+ >
+</frameset>
+<noframe>
+<body>
+
+</body>
+</noframe>
+</html>
diff --git a/ldap/clients/dsgw/pbhtml/intro.html b/ldap/clients/dsgw/pbhtml/intro.html
new file mode 100644
index 00000000..0d4ff66b
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/intro.html
@@ -0,0 +1,207 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<html>
+<head>
+<title>Netscape Directory Express</title>
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</head>
+
+<body bgcolor="#FFFFFF">
+
+<!-- single-pixel gif to enforce left alignment -->
+<img src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=pixel.gif" height="0" width="0" hspace="20" align="left" border="0">
+
+<table border="0" cellpadding="0" cellspacing="0" width="90%" align="left">
+ <tr>
+ <td colspan=5 align="left">
+ <p>
+ &nbsp;<br>
+ <span class="text31"><B>About Directory Express</B></span>
+ <br>&nbsp;
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td colspan=5 align="left">
+ Directory Express displays people, conference rooms, buildings and branch offices.
+ If multiple entries are found, the results are displayed in a table:
+ </td>
+ </tr>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ </tr>
+</table>
+
+<br clear="ALL">
+
+<!-- single-pixel gif to enforce left alignment -->
+<img src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=pixel.gif" height="0" width="0" hspace="20" align="left" border="0">
+
+
+<table width="90%" border="0" cellpadding="0" cellspacing="0" bgcolor="#CCCCCC" align="left">
+ <tr valign="top">
+ <td align="left" bgcolor="#FFFFFF">
+ Found <b>x</b> entries where the name or user ID matches '<b>your search</b>'.
+ <br>&nbsp;
+ </td>
+ </tr>
+ <tr>
+ <td>
+<!-- ------------------------------------------------------------- -->
+<table border="0" cellpadding="1" cellspacing="0" width="100%" bgcolor="white">
+ <tr align="left" class="bgColor4">
+ <td class="bgColor4">
+ &nbsp;
+ </td>
+ <td nowrap class="bgColor4">
+ <b>Name</b>
+ </td>
+ <td nowrap class="bgColor4">
+ <b>ID</b>
+ </td>
+ <td nowrap class="bgColor4">
+ <b>Phone</b>
+ </td>
+ <td nowrap class="bgColor4">
+ <b>E-mail</b>
+ </td>
+ <td nowrap class="bgColor4">
+ <b>Group</b>
+ </td>
+ </tr>
+ <tr align="left">
+ <td width="10">
+ <a href="javascript:void(0)" onMouseOver="top.status='This entry is a person.'; return true" name="Person"><img src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=16-person.gif" height="16" width="16" vspace="3" border="0"></a>
+ </td>
+ <td nowrap>
+ Jane Castle
+ </td>
+ <td nowrap>
+ <a href="javascript:void(0)" onMouseOver="top.status='Click the entry\'s ID to view the entire record.'; return true">jane</a>
+ </td>
+ <td nowrap>
+ 4444
+ </td>
+ <td nowrap>
+ <a href="javascript:void(0)" onMouseOver="top.status='Click the entry\'s Email address to send a message.'; return true">jane@example.com</a>
+ </td>
+ <td nowrap>
+ engineering
+ </td>
+ </tr>
+ <tr>
+ <td colspan="6"></td>
+ </tr>
+ <tr align="left" bgcolor="#FFFFFF">
+ <td width="10">
+ <a href="javascript:void(0)" onMouseOver="top.status='This entry is a person.'; return true" name="Person"><img src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=16-person.gif" height="16" width="16" vspace="3" border="0"></a>
+ </td>
+ <td nowrap>
+ John Castle
+ </td>
+ <td nowrap>
+ <a href="javascript:void(0)" onMouseOver="top.status='Click the entry\'s ID to view the entire record.'; return true">john</a>
+ </td>
+ <td nowrap>
+ 5555
+ </td>
+ <td nowrap>
+ <a href="javascript:void(0)" onMouseOver="top.status='Click the entry\'s Email address to send a message.'; return true">john@example.com</a>
+ </td>
+ <td nowrap>
+ marketing
+ </td>
+ </tr>
+ <tr>
+ <td colspan="6"></td>
+ </tr>
+ <tr align="left" bgcolor="#FFFFFF">
+ <td width="10">
+ <a href="javascript:void(0)" onMouseOver="top.status='This entry is a conference room.'; return true" name="Conference Room"><img src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=16-conference.gif" height="16" width="16" vspace="3" border="0"></a>
+ </td>
+ <td nowrap>
+ King's Castle
+ </td>
+ <td nowrap>
+ <a href="javascript:void(0)" onMouseOver="top.status='Click the entry\'s ID to view the entire record.'; return true">King's Castle</a>
+ </td>
+ <td nowrap>
+ 2121
+ </td>
+ <td nowrap>
+ &nbsp;
+ </td>
+ <td nowrap>
+ &nbsp;
+ </td>
+ </tr>
+ <tr>
+ <td colspan="6"></td>
+ </tr> <tr align="left" bgcolor="#FFFFFF">
+ <td width="10">
+ <a href="javascript:void(0)" onMouseOver="top.status='This entry is a person.'; return true" name="Person"><img src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=16-person.gif" height="16" width="16" vspace="3" border="0"></a>
+ </td>
+ <td nowrap>
+ Quincy Castlegate
+ </td>
+ <td nowrap>
+ <a href="javascript:void(0)" onMouseOver="top.status='Click the entry\'s ID to view the entire record.'; return true">quincy</a>
+ </td>
+ <td nowrap>
+ 7777
+ </td>
+ <td nowrap>
+ <a href="javascript:void(0)" onMouseOver="top.status='Click the entry\'s Email address to send a message.'; return true">quincy@example.com</a>
+ </td>
+ <td nowrap>
+ product development
+ </td>
+ </tr>
+ <tr>
+ <td colspan="6"></td>
+ </tr>
+</table>
+<!-- ------------------------------------------------------------- -->
+ </td>
+ </tr>
+ <tr align="left" bgcolor="#FFFFFF">
+ <td bgcolor="white" align="left">
+ &nbsp;<br>
+ Click on an entry's ID to bring up more information about that entry.
+ </td>
+ </tr>
+</table>
+
+<br clear="ALL">
+
+<!-- single-pixel gif to enforce left alignment -->
+<img src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=pixel.gif" height="0" width="0" hspace="20" align="left" border="0">
+
+<table border="0" cellpadding="0" cellspacing="0" width="90%" align="left">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ </tr>
+ <tr>
+ <td colspan=5 bgcolor="white" align="left">
+ If a single, unique entry is found, all information pertaining to that entry is
+ displayed. Users can edit portions of their personal information by displaying
+ their information as described above, and clicking the &quot;Edit Person&quot;
+ button at the bottom of the their entry.
+ </td>
+ </tr>
+</table>
+
+</body>
+</html>
+
+
+
+
diff --git a/ldap/clients/dsgw/pbhtml/modify.html b/ldap/clients/dsgw/pbhtml/modify.html
new file mode 100644
index 00000000..a44c18b5
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/modify.html
@@ -0,0 +1,292 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!--
+ | $Id: modify.html,v 1.1 2005/01/21 00:40:49 cvsadm Exp $
+ |
+ | AUTHOR:
+ |
+ | SYNOPSIS:
+ | User instructions for using Directory Express, and misc. links for
+ | Directory Express usage.
+ |
+ | HISTORY:
+ |
+ +-------------------------------------------------------------------------- -->
+
+<HTML>
+<HEAD>
+<TITLE>
+Directory Express
+</TITLE></HEAD>
+
+<BODY bgcolor=WHITE>
+
+
+<CENTER>
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=80% BGCOLOR=#F2F2F2>
+<TR>
+<TD COLSPAN=2 BGCOLOR=TEAL ALIGN=CENTER><FONT SIZE=+1 COLOR=WHITE FACE=ARIAL, HELVETICA>
+LEGEND
+</FONT>
+
+
+<TR>
+ <TD> User-editable</TD>
+ <TD> Users can edit their own information.</TD>
+</TR>
+<TR>
+ <TD> Administrator</TD>
+ <TD> Email changes to the Directory Express Administrator team.</TD>
+</TR>
+<TR>
+ <TD> Help Request</TD>
+ <TD> Fill out an online Help Request.</TD>
+</TR>
+<TR>
+ <TD> Call Helpdesk 555-1111</TD>
+ <TD> Please don't call between 10-12, and 2-4 Pacific Time</TD>
+</TR>
+<TR>
+ <TD> PeopleSoft Form- <B>Employees</B></TD>
+ <TD> Legal Name changes: Use the online Change of Employee Information form.
+<HR>
+ All others: Download the Employee Change Sheet, print it, fill it out and give it to your divisional HR representative.</TD>
+</TR>
+<TR>
+ <TD>Special Email- <B>Vendors, Services, and Other Contractors</B></TD>
+ <TD>The conditions of your contract determine who gets your Email request.</TD>
+</TR>
+</TABLE>
+<P>
+
+
+
+</CENTER>
+
+<HR>
+<TABLE><TR><TD>
+<IMG SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=person.gif" ALT="Person" HSPACE=5>
+</TD><TD><FONT SIZE="+2">
+Your Name Here</FONT></TD>
+<TD VALIGN=BOTTOM></TD>
+</TR>
+</TABLE>
+
+</CENTER>
+
+<TABLE BORDER BGCOLOR=#f2f2f2 WIDTH=575>
+<TR>
+<TD BGCOLOR=TEAL COLSPAN=4><FONT SIZE=+1 FACE=ARIAL,HELVETICA COLOR=WHITE>Contact Information</TD></TR>
+
+
+<TR>
+<TD VALIGN="TOP">Phone:</TD>
+<TD VALIGN="TOP" NOWRAP><FONT COLOR="blueviolet"><B>
+<A href="mailto:administrator@example.com?subject=Please update my phone number">Administrator</A>
+</B></FONT></TD>
+
+<TD VALIGN="TOP" NOWRAP>E-Mail Address:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<A HREF=/clients/dsgw/pbhtml/emptyFrame.html>Help Request</A>
+</TD>
+</TR>
+
+<TR>
+<TD VALIGN="TOP" NOWRAP>User ID:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+<A HREF=/clients/dsgw/pbhtml/emptyFrame.html>Help Request</A>
+</B></TD>
+
+<TD VALIGN="TOP">Mailstop:
+</TD>
+<TD VALIGN="TOP"><B>
+<A href="mailto:administrator@example.com?subject=Please update my phone number">Administrator</A>
+</B></TD>
+</TR>
+
+<TR>
+<TD VALIGN="top" NOWRAP>First Name:</TD>
+<TD VALIGN="top" NOWRAP><B>
+Call Helpdesk 555-1111
+</B></TD>
+
+<TD VALIGN="TOP" NOWRAP>Pager:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+User-editable
+</B></TD>
+</TR>
+
+<TR>
+<TD VALIGN="top" NOWRAP>Last Name:
+</TD>
+<TD VALIGN="top" NOWRAP><B>
+Call Helpdesk 555-1111
+</B></TD>
+
+
+
+<TD VALIGN="TOP" NOWRAP>Legal Name:</TD>
+<TD VALIGN="top"><B>Employees:
+<A HREF=/clients/dsgw/pbhtml/emptyFrame.html onClick="alert('Note: Please use the HR form to update your Legal Name ONLY.')"> PeopleSoft
+Form</A><BR>Vendors, Services, and Other Contractors: <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=nonemp.html">Special Email
+</A>
+</B></TD>
+</TR>
+
+
+<TR>
+<TD VALIGN="top" NOWRAP>Home Phone: <BR>(optional)
+</TD>
+<TD VALIGN="top" NOWRAP><B>
+User-editable
+</B></TD>
+
+<TD VALIGN="TOP" NOWRAP>Mobile Phone:<TD VALIGN="TOP" NOWRAP><B>
+User-editable
+</B></TD>
+</TR>
+
+<TR>
+<TD VALIGN="TOP">Fax:</TD>
+<TD VALIGN="TOP" NOWRAP><B>
+User-editable
+</B></TD>
+
+</TR>
+
+</TABLE>
+
+
+
+
+<P>
+<P>
+
+<TABLE BORDER BGCOLOR=#f2f2f2 WIDTH=575>
+<TR>
+<TD BGCOLOR=TEAL COLSPAN=4><FONT SIZE=+1 FACE=ARIAL,HELVETICA COLOR=WHITE>Location Information</FONT></TD></TR>
+<TR>
+<TD VALIGN="TOP">Mailing Address:</TD>
+<TD VALIGN="TOP" NOWRAP COLSPAN=3><B><A href="mailto:administrator@example.com?subject=Please update my mailing address">Administrator</A></B></TD></TR>
+<TR>
+<TD VALIGN="TOP" NOWRAP>Building #:</TD>
+<TD VALIGN="TOP"><B><A href="mailto:administrator@example.com?subject=Please update my building number">Administrator</A></B></TD>
+<TD VALIGN="TOP" NOWRAP>Building Level:</TD>
+<TD VALIGN="TOP"><B><A href="mailto:administrator@example.com?subject=Please update my building level">Administrator</A></B></TD>
+</TR>
+<TR>
+<TD VALIGN="TOP">Physical Location: </TD>
+<TD VALIGN="TOP" COLSPAN=3><B><A href="mailto:administrator@example.com?subject=Please update my physical location">Administrator</A></B></TD></TR>
+</TABLE>
+
+<P>
+<P>
+
+<TABLE BORDER BGCOLOR=#f2f2f2 WIDTH=575>
+<TR>
+<TD BGCOLOR=TEAL COLSPAN=4><FONT SIZE=+1 FACE=ARIAL,HELVETICA COLOR=WHITE>Business Information</FONT></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Business Category:</TD>
+<TD VALIGN="TOP"><B>Employees:<A HREF=/clients/dsgw/pbhtml/emptyFrame.html>PeopleSoft Form</A><BR>Vendors, Services, and Other Contractors: <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=nonemp.html">Special Email</A></B></TD>
+<TD VALIGN="TOP">Title:</TD>
+<TD VALIGN="TOP"><B>Employees:<A HREF=/clients/dsgw/pbhtml/emptyFrame.html>PeopleSoft Form</A><BR>Vendors, Services, and Other Contractors: <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=nonemp.html">Special Email</A></B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Organizational Unit:</TD>
+<TD VALIGN="TOP"><B>Employees:<A HREF=/clients/dsgw/pbhtml/emptyFrame.html>PeopleSoft Form</A><BR>Vendors, Services, and Other Contractors <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=nonemp.html">Special Email</A></B></TD>
+<TD VALIGN="TOP">Manager:</TD>
+<TD VALIGN="TOP"><B>Employees:<A HREF=/clients/dsgw/pbhtml/emptyFrame.html>PeopleSoft Form</A><BR><B>Vendors, Services, and Other Contractors: <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=nonemp.html">Special Email</A></B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Cube #:</TD>
+<TD VALIGN="TOP" NOWRAP"><B><A href="mailto:administrator@example.com?subject=Please update my cube number">Administrator</A></B></TD>
+</B><TD VALIGN="TOP">Admin.:</TD>
+<TD VALIGN="TOP" NOWRAP><B><A href="mailto:administrator@example.com?subject=Please update my admin">Administrator</A></B></TD></TR>
+
+
+<TR>
+<TD VALIGN="TOP">Dept#:</TD>
+<TD VALIGN="TOP"><B>Employees:<A HREF=/clients/dsgw/pbhtml/emptyFrame.html>PeopleSoft Form</A><BR>Vendors, Services, and Other Contractors: <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=nonemp.html">Special Email</A></B></TD>
+<TD VALIGN="TOP" BGCOLOR=teal><FONT COLOR=lightyellow><B>Employee Status:</B></FONT></TD>
+<TD VALIGN="TOP"><B>Employees:<A HREF=/clients/dsgw/pbhtml/emptyFrame.html>PeopleSoft Form</A><BR>Vendors, Services, and Other Contractors: <A href="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&nonemp.html">Special Email</A></B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Vehicle License#:</TD>
+<TD VALIGN="TOP"><B>User-editable</B></TD>
+
+<TD VALIGN="TOP">Current Contact Info.</TD>
+<TD VALIGN="TOP"><B>User-editable</B></TD>
+</TR>
+
+</TABLE>
+
+
+<P>
+<P>
+<TABLE BORDER BGCOLOR=#f2f2f2 WIDTH=575>
+
+<TR>
+<TD BGCOLOR=TEAL COLSPAN=2><FONT SIZE=+1 FACE=ARIAL,HELVETICA COLOR=WHITE>Additional Information</FONT></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">Description:</TD>
+<TD VALIGN="TOP" NOWRAP><B>User-editable</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">See Also:</TD>
+<TD VALIGN="TOP" NOWRAP><B>User-editable</B></TD></TR>
+
+<TR>
+<TD VALIGN="TOP">URL:</TD>
+<TD VALIGN="TOP" NOWRAP><B>User-editable</B></TD></TR>
+
+</TABLE>
+
+<P>
+<P>
+<TABLE BORDER BGCOLOR=#f2f2f2 WIDTH=575>
+<TR>
+<TD BGCOLOR=TEAL COLSPAN=4><FONT SIZE=+1 FACE=ARIAL,HELVETICA COLOR=WHITE>Mail Information</FONT></TD></TR>
+<TR>
+<TD VALIGN="TOP">Mail Server:
+</TD>
+<TD VALIGN="TOP"><B><A HREF=/clients/dsgw/pbhtml/emptyFrame.html>Help Request</A></B></TD>
+<TD VALIGN="TOP">Mail Addresses:</TD>
+<TD VALIGN="TOP"><B><A HREF=/clients/dsgw/pbhtml/emptyFrame.html>Help Request</A></B></TD>
+</TR>
+
+<TR>
+<TD VALIGN="TOP">Autoreply mode:</TD>
+<TD VALIGN="TOP" NOWRAP><B>User-editable</B></TD>
+</TR>
+
+<TR>
+<TD VALIGN="TOP">Autoreply Text:</TD>
+<TD VALIGN="TOP" COLSPAN=3><B>User-editable</B></TD>
+</TR>
+
+<TR>
+<TD VALIGN="TOP">Mail Delivery Option:
+</TD>
+<TD VALIGN="TOP"><B>User-editable</B></TD>
+
+<TD VALIGN="TOP">Forwarding Addresses:</TD>
+<TD VALIGN="TOP"><B>User-editable</B></TD>
+</TR>
+</TABLE>
+
+<P>
+<P>
+
+
+
+
+
+</FORM>
+
+</BODY></HTML>
diff --git a/ldap/clients/dsgw/pbhtml/nonemp.html b/ldap/clients/dsgw/pbhtml/nonemp.html
new file mode 100644
index 00000000..dfd156a8
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/nonemp.html
@@ -0,0 +1,69 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!--
+ | $Id: nonemp.html,v 1.1 2005/01/21 00:40:49 cvsadm Exp $
+ |
+ | AUTHOR:
+ |
+ | SYNOPSIS:
+ | User instructions for using Directory Express, and misc. links for
+ | Directory Express usage.
+ |
+ | HISTORY:
+ |
+ +-------------------------------------------------------------------------- -->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+
+<HTML>
+<HEAD>
+ <TITLE>Non-employee Directory Express Changes</TITLE>
+</HEAD>
+
+<BODY BGCOLOR="White">
+
+<CENTER>
+<H2>Non-employee Directory Express Changes</H2>
+</CENTER>
+
+<P>Send your change requests to the person that matches your affiliation.</P>
+
+
+<TABLE BORDER=1 CELLPADDING=4 WIDTH=80% BGCOLOR=#F2F2F2>
+<TR>
+<TD COLSPAN=2 BGCOLOR=TEAL ALIGN=CENTER><FONT SIZE=+1 COLOR=WHITE FACE=ARIAL, HELVETICA>
+The Amazing Non-employee Request Director
+</FONT>
+
+<TR>
+ <TH>Your Affiliation:</TH>
+ <TH>Send Requests to:</TH>
+</TR>
+
+<TR>
+ <TD>Independent Contractor</TD>
+ <TD><A HREF="mailto:administrator@example.com?subject=Please modify my Directory Express information">Christina Champagne</A></TD>
+</TR>
+
+<TR>
+ <TD>Interim Temporary</TD>
+ <TD><B>Administrative</B> Temps. or Contractors contact <A
+ HREF="mailto:administrator@example.com?subject=Please modify my Directory Express
+ information">Lisa Holcomb</A><BR>
+ <B>Technical</B> Temps. or Contractors contact <A
+ HREF="mailto:administrator@example.com?subject=Please modify my
+ Directory Express information">Lisa Livingston</A</TD>
+</TR>
+
+<TR>
+ <TD>Vendors & Services</TD>
+ <TD><A HREF="mailto:administrator@example.com?subject=Please modify my Directory Express information">Andrea Kimerer</A></TD>
+</TR>
+
+</TABLE>
+
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/pbhtml/nullStringError.html b/ldap/clients/dsgw/pbhtml/nullStringError.html
new file mode 100644
index 00000000..0aefa11f
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/nullStringError.html
@@ -0,0 +1,64 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<html>
+<head>
+<title>Error!</title>
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</head>
+<body bgcolor="white">
+
+<p>
+ &nbsp;
+</p>
+<table width="360" border="1" bgcolor="#CCCCCC" align="center">
+ <tr>
+ <td>
+
+<table border="0" cellpadding="18" cellspacing="0">
+ <tr>
+ <td>
+ <center>
+
+ <table border="0">
+ <tr>
+ <td>
+ <img src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=32-alert.gif" height="32" width="32" border="0">
+ </td>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+ No search term entered.
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ &nbsp;
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ &nbsp;
+ </td>
+ <td>
+ Directory Express searches against an entry's name, user ID, and phone extension.
+ Please enter a search term and try again.
+ </td>
+ </tr>
+ </table>
+
+ </center>
+ </td>
+ </tr>
+</table>
+
+ </td>
+ </tr>
+</table>
+
+</body>
+</html>
diff --git a/ldap/clients/dsgw/pbhtml/office.gif b/ldap/clients/dsgw/pbhtml/office.gif
new file mode 100644
index 00000000..558ba18d
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/office.gif
Binary files differ
diff --git a/ldap/clients/dsgw/pbhtml/orgicon.gif b/ldap/clients/dsgw/pbhtml/orgicon.gif
new file mode 100644
index 00000000..034f2c20
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/orgicon.gif
Binary files differ
diff --git a/ldap/clients/dsgw/pbhtml/pbrd.jpg b/ldap/clients/dsgw/pbhtml/pbrd.jpg
new file mode 100644
index 00000000..ab92e6e0
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/pbrd.jpg
Binary files differ
diff --git a/ldap/clients/dsgw/pbhtml/person.gif b/ldap/clients/dsgw/pbhtml/person.gif
new file mode 100644
index 00000000..671869cb
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/person.gif
Binary files differ
diff --git a/ldap/clients/dsgw/pbhtml/phone.html b/ldap/clients/dsgw/pbhtml/phone.html
new file mode 100644
index 00000000..a9f49612
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/phone.html
@@ -0,0 +1,87 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html;charset=utf-8">
+<title>Netscape Directory Express</title>
+
+<script language="javascript">
+//<!--
+
+function gotourl(i){
+window.location.href=i;
+}
+
+//-->
+</script>
+<script language="javascript" src="/clients/dsgw/pbhtml/phone.js">
+</script>
+<LINK REL=stylesheet TYPE="text/css" HREF="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=style.css">
+</head>
+
+<body class="Search" onLoad="fieldFocus();" marginwidth="0" marginheight="0" leftmargin="0" topmargin="0">
+
+<form method="post" name="searchform" target="resultframe" action="/clients/dsgw/bin/dosearch" onSubmit="return checkForNullString()">
+
+ <!-- hidden fields: edit these to customize your Directory Express. -->
+ <input type=hidden name="type" value="people">
+ <input type=hidden name="mode" value="smart">
+ <input type=hidden name="querytype" value="people">
+<!-- PCONTEXT -->
+
+<table BORDER="0" width="100%" cellpadding=0 cellspacing=0>
+
+<TR>
+<TD valign="top" colspan="5" width="100%"><IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif" width="1" height="5" border="0"></TD>
+</TR>
+
+<tr>
+<td>
+<IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif" width="10" height="37" border="0">
+</td>
+<TD ALIGN=LEFT VALIGN=CENTER nowrap>
+<a href="javascript:alert('Powered by Netscape Directory Server 6.2')" onMouseOver="window.status='Click for more information about Netscape Directory Express.'; return true"><img src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=brandblock.gif" border="0" align="left"></a></td>
+<TD valign="top"><IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif" width="7" height="1" border="0"></TD>
+<TD valign="top" class="appName" nowrap>Netscape Directory Express</td>
+<TD ALIGN=LEFT width="75%">
+ <TABLE BORDER=0>
+ <TR>
+ <TD valign="top"><IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif" width="15" height="1" border="0"></TD>
+ <TD nowrap VALIGN=CENTER ALIGN=CENTER>
+ <span class="apptext">Search for:</span>
+ </TD>
+ <TD nowrap VALIGN=CENTER>
+ <span class="apptext">
+ <font face=\"verdana, Arial, Helvetica, sans-serif\" style=\"font-size: 12px\">
+ <input type="text" name="searchstring" size=30>
+ <input type="submit" value="Search" name="submitbutton">
+ </font>
+ </span>
+ </TD>
+ </TR></TABLE>
+ </TD>
+</tr>
+
+<!-- TR>
+<td></td>
+<td></td>
+<td align=left class="text30">(Enter any part of a name, user ID, or phone number)
+</td></tr -->
+
+<TR>
+<TD valign="top" colspan="5" width="100%"><IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif" width="1" height="5" border="0"></TD>
+</TR>
+
+<TR>
+<TD width="100%" colspan="5" class="bgColor7"><IMG src="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&file=clear.gif" height="1" border="0"></TD>
+</TR>
+
+</table>
+</form>
+</body>
+</html>
+
diff --git a/ldap/clients/dsgw/pbhtml/phone.js b/ldap/clients/dsgw/pbhtml/phone.js
new file mode 100755
index 00000000..f51d06dc
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/phone.js
@@ -0,0 +1,43 @@
+//
+// PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+// license terms. Copyright © 2001 Sun Microsystems, Inc.
+// Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+// all rights reserved.
+//
+function goToURL(i){
+window.location.href=i;
+}
+
+function easter(){
+if (document.forms[0].searchstring.value=='worker and parasite'){
+ window.open ("worker.qt","worker","scrollbars=no,menubar=no,resizable=no,width=300,height=300");
+ }
+}
+
+function flipImg(currImg,newImg) {
+ document.images[currImg].src = newImg;
+}
+
+function phoneTeam (){
+
+ window.open ("team.html","rah_team","scrollbars=no,menubar=no,resizable=yes,width=500,height=500");
+
+}
+
+function fieldFocus(){
+setTimeout("document.forms[0].searchstring.focus()",400);
+}
+
+function checkForNullString(){
+if (document.forms[0].searchstring.value != "")
+ {
+ return true;
+ }
+else
+ {
+ parent.resultframe.location="/dsgw/bin/lang?context=pb&file=nullStringError.html";
+ return false;
+ }
+}
+
+
diff --git a/ldap/clients/dsgw/pbhtml/pixel.gif b/ldap/clients/dsgw/pbhtml/pixel.gif
new file mode 100644
index 00000000..e66849ac
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/pixel.gif
Binary files differ
diff --git a/ldap/clients/dsgw/pbhtml/report.html b/ldap/clients/dsgw/pbhtml/report.html
new file mode 100644
index 00000000..0c5a35b2
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/report.html
@@ -0,0 +1,155 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+<HEAD>
+ <TITLE>Netscape Telephone Book: Reports</TITLE>
+ <META NAME="GENERATOR" CONTENT="User-Agent: Mozilla/3.01Gold-C (Macintosh; U; PPC)">
+</HEAD>
+<BODY TEXT="#0B0547" BGCOLOR="#FFFFFF" LINK="#0000FF" VLINK="#551A8B" ALINK="#0000FF">
+
+<CENTER><P><FORM method="GET" action="/clients/dsgw/bin/report.pl" TARGET="response"></P></CENTER>
+
+<CENTER><P><IMG SRC="/clients/dsgw/bin/lang?<!-- GCONTEXT -->&pbrd.jpg" HEIGHT=46 WIDTH=491 ALIGN=ABSCENTER></P></CENTER>
+
+<CENTER><P><B><FONT SIZE=+1>Make a report that looks like this table:</FONT></B>
+</P></CENTER>
+
+<CENTER><P>
+<HR SIZE=3 WIDTH="95%"></P></CENTER>
+
+<CENTER><TABLE>
+<TR>
+<TD>
+<CENTER><P><INPUT name="num_fields" type=hidden value="7"></P></CENTER>
+</TD>
+
+<TD><SELECT name="field1" SIZE=1><OPTION SELECTED><FONT SIZE=-1>FullName
+<OPTION>LastName <OPTION>FirstName <OPTION>Initials <OPTION>Email <OPTION>Phone
+<OPTION>Fax <OPTION>Pager <OPTION>Mobile <OPTION>Dept# <OPTION>Group <OPTION>Title
+<OPTION>Admin <OPTION>Location <OPTION>Floor <OPTION>Cube# <OPTION>Mailstop
+<OPTION>EmpType <OPTION>Emp# <OPTION>MailAddr <OPTION>MailSrvr <OPTION>Car#
+</FONT></SELECT></TD>
+
+<TD><SELECT name="field2" SIZE=1><OPTION><FONT SIZE=-1>FullName <OPTION>LastName
+<OPTION>FirstName <OPTION>Initials <OPTION SELECTED>Email <OPTION>Phone
+<OPTION>Fax <OPTION>Pager <OPTION>Mobile <OPTION>Dept# <OPTION>Group <OPTION>Title
+<OPTION>Admin <OPTION>Location <OPTION>Floor <OPTION>Cube# <OPTION>Mailstop
+<OPTION>EmpType <OPTION>Emp# <OPTION>MailAddr <OPTION>MailSrvr <OPTION>BLANK
+</FONT></SELECT></TD>
+
+<TD><SELECT name="field3" SIZE=1><OPTION><FONT SIZE=-1>FullName <OPTION>LastName
+<OPTION>FirstName <OPTION>Initials <OPTION>Email <OPTION SELECTED>Phone
+<OPTION>Fax <OPTION>Pager <OPTION>Mobile <OPTION>Dept# <OPTION>Group <OPTION>Title
+<OPTION>Admin <OPTION>Location <OPTION>Floor <OPTION>Cube# <OPTION>Mailstop
+<OPTION>EmpType <OPTION>Emp# <OPTION>MailAddr <OPTION>MailSrvr <OPTION>Car#
+<OPTION>BLANK </FONT></SELECT></TD>
+
+<TD><SELECT name="field4" SIZE=1><OPTION><FONT SIZE=-1>FullName <OPTION>LastName
+<OPTION>FirstName <OPTION>Initials <OPTION>Email <OPTION>Phone <OPTION>Fax
+<OPTION>Pager <OPTION>Mobile <OPTION>Dept# <OPTION SELECTED>Group <OPTION>Title
+<OPTION>Admin <OPTION>Location <OPTION>Floor <OPTION>Cube# <OPTION>Mailstop
+<OPTION>EmpType <OPTION>Emp# <OPTION>MailAddr <OPTION>MailSrvr <OPTION>Car#
+<OPTION>BLANK </FONT></SELECT></TD>
+
+<TD><SELECT name="field5" SIZE=1><OPTION><FONT SIZE=-1>Email <OPTION>Phone
+<OPTION>Fax <OPTION>Pager <OPTION>Mobile <OPTION SELECTED>Dept# <OPTION>Group
+<OPTION>Title <OPTION>Admin <OPTION>Location <OPTION>Floor <OPTION>Cube#
+<OPTION>Mailstop <OPTION>EmpType <OPTION>Emp# <OPTION>MailAddr <OPTION>MailSrvr
+<OPTION>Car# <OPTION>BLANK </FONT></SELECT></TD>
+
+<TD><SELECT name="field6" SIZE=1><OPTION><FONT SIZE=-1>Email <OPTION>Phone
+<OPTION>Fax <OPTION>Pager <OPTION>Mobile <OPTION>Dept# <OPTION>Group <OPTION>Title
+<OPTION>Admin <OPTION SELECTED>Location <OPTION>Floor <OPTION>Cube# <OPTION>Mailstop
+<OPTION>EmpType <OPTION>Emp# <OPTION>MailAddr <OPTION>MailSrvr <OPTION>Car#
+<OPTION>BLANK </FONT></SELECT></TD>
+
+<TD><SELECT name="field7" SIZE=1><OPTION><FONT SIZE=-1>Email <OPTION>Phone
+<OPTION>Fax <OPTION>Pager <OPTION>Mobile <OPTION>Dept# <OPTION>Group <OPTION>Title
+<OPTION SELECTED>Admin <OPTION>Location <OPTION>Floor <OPTION>Cube# <OPTION>Mailstop
+<OPTION>EmpType <OPTION>Emp# <OPTION>MailAddr <OPTION>MailSrvr <OPTION>Car#
+<OPTION>BLANK </FONT></SELECT></TD>
+</TR>
+</TABLE></CENTER>
+
+<CENTER><P>
+<HR SIZE=3 WIDTH="95%"></P></CENTER>
+
+<CENTER><TABLE>
+<TR>
+<TD><B>The report has entries where</B> </TD>
+
+<TD><SELECT name="searchfor" SIZE=1><OPTION SELECTED>FullName <OPTION>LastName
+<OPTION>FirstName <OPTION>Email <OPTION>Phone <OPTION>Fax <OPTION>Dept#
+<OPTION>Group <OPTION>Title <OPTION>Admin <OPTION>Location <OPTION>Floor
+<OPTION>Cube# <OPTION>Mailstop <OPTION>EmpType <OPTION>MailAddr <OPTION>MailSrvr
+<OPTION>Car# </SELECT></TD>
+
+<TD><B>includes</B> </TD>
+
+<TD><INPUT name="contains" size=20 maxsize=128 value=""></TD>
+</TR>
+</TABLE></CENTER>
+
+<CENTER><TABLE>
+<TR>
+<TD>
+<CENTER><P><INPUT name="num_sorts" type=hidden value="3"></P></CENTER>
+</TD>
+
+<TD><B>and is sorted by</B> </TD>
+
+<TD><SELECT name="sortattr1" SIZE=1><OPTION SELECTED>FullName <OPTION>LastName
+<OPTION>FirstName <OPTION>Initials <OPTION>Email <OPTION>Phone <OPTION>Fax
+<OPTION>Pager <OPTION>Mobile <OPTION>Dept# <OPTION>Group <OPTION>Title
+<OPTION>Admin <OPTION>Location <OPTION>Floor <OPTION>Cube# <OPTION>Mailstop
+<OPTION>EmpType <OPTION>Emp# <OPTION>MailAddr <OPTION>MailSrvr <OPTION>BLANK
+</SELECT></TD>
+
+<TD><B>and then by</B> </TD>
+
+<TD><SELECT name="sortattr2" SIZE=1><OPTION>FullName <OPTION>LastName <OPTION>FirstName
+<OPTION>Initials <OPTION>Email <OPTION>Phone <OPTION>Fax <OPTION>Pager
+<OPTION>Mobile <OPTION>Dept# <OPTION SELECTED>Group <OPTION>Title <OPTION>Admin
+<OPTION>Location <OPTION>Floor <OPTION>Cube# <OPTION>EmpType <OPTION>Mailstop
+<OPTION>Emp# <OPTION>MailAddr <OPTION>MailSrvr <OPTION>BLANK </SELECT></TD>
+
+<TD><B>and then by</B> </TD>
+
+<TD><SELECT name="sortattr3" SIZE=1><OPTION>FullName <OPTION>LastName <OPTION>FirstName
+<OPTION>Initials <OPTION>Email <OPTION>Phone <OPTION>Fax <OPTION>Pager
+<OPTION>Mobile <OPTION SELECTED>Dept# <OPTION>Group <OPTION>Title <OPTION>Admin
+<OPTION>Location <OPTION>Floor <OPTION>Cube# <OPTION>Mailstop <OPTION>EmpType
+<OPTION>Emp# <OPTION>MailAddr <OPTION>MailSrvr <OPTION>BLANK </SELECT><B>.</B>
+</TD>
+</TR>
+</TABLE></CENTER>
+
+<CENTER><TABLE>
+<TR>
+<TD><B>Should the report have multiple smaller tables?&nbsp;</B> <INPUT type="radio" name="grouping" value="on" CHECKED>Yes
+<INPUT type="radio" name="grouping" value="off">No </TD>
+</TR>
+</TABLE></CENTER>
+
+<CENTER><P><BR>
+<BR>
+<BR>
+</P></CENTER>
+
+<CENTER><TABLE>
+<TR>
+<TD><INPUT type="reset" value="Reset"></TD>
+
+<TD><INPUT type="submit" value="Make Report"></TD>
+</TR>
+</TABLE></CENTER>
+
+<P></FORM></P>
+
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/pbhtml/style.css b/ldap/clients/dsgw/pbhtml/style.css
new file mode 100644
index 00000000..e4739d6f
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/style.css
@@ -0,0 +1,88 @@
+/* ======================================================= *
+ * Style sheet for the Directory Express application *
+ * ======================================================= */
+
+/* All Links */
+A:link { font-family: verdana, Arial, Helvetica, sans-serif; font-size: 11px}
+A:active { color: #FF0000;}
+
+.linknodec {text-decoration:none; color:#000000; font-family: verdana, Arial, Helvetica, sans-serif; font-size: 11px}
+
+/*All Regular Table Data--for the whole application*/
+td {
+ font-family: verdana, Arial, Helvetica, sans-serif;
+ font-size: 11px;
+ color: #000000;
+ vertical-align : middle;
+}
+
+p {
+ font-family: verdana, Arial, Helvetica, sans-serif;
+ font-size: 11px;
+ color: #000000;
+}
+
+
+td.bold {
+ font-family: verdana, Arial, Helvetica, sans-serif;
+ font-size: 11px;
+ vertical-align : middle;
+ color: #000000;
+ font-weight: bold;
+}
+
+td.boldbig {
+ font-family: verdana, Arial, Helvetica, sans-serif;
+ font-size: 12px;
+ vertical-align : middle;
+ color: #000000;
+ font-weight: bold;
+}
+
+input {
+ font-family: verdana, Arial, Helvetica, sans-serif;
+ font-size: 11px;
+ /*color: #000000;*/
+}
+
+
+A.searchlinknorm:link {color: #CCFFFF}
+A.searchlinknorm:visited {color: #CCFFFF}
+A.searchlinknorm:active {color: #CCFFFF}
+
+A.searchlinkspec:link {color: #FF0000}
+A.searchlinkspec:visited {color: #FF0000}
+A.searchlinkspec:active {color: #CCFFFF}
+
+/* *********Search frame*************/
+
+body.Search {
+ background-color: #003366;
+ font-family: Verdana, Arial, Helvetica, san-serif;
+ color: #ccffff;
+ font-size: 12px;
+}
+
+td.appName {
+ font-family: verdana, Arial, Helvetica, sans-serif;
+ font-size: 12px;
+ vertical-align : middle;
+ color: #ccffff;
+ font-weight: bold;
+}
+
+.apptext {
+ font-family: verdana, Arial, Helvetica, sans-serif;
+ font-size: 12px;
+ vertical-align: middle;
+ color: #ccffff;
+}
+
+/* Fonts */
+.text15 {color: #ffffff; font-size: 12px; font-family: Verdana, Arial, Helvetica; font-weight: bold;}
+.text30 {color: #CCFFFF; font-size: 8px; font-family: Verdana, Arial, Helvetica;}
+.text31 {color: #000000; font-size: 14px; font-family: Verdana, Arial, Helvetica; font-weight: bold;}
+
+.bgColor1 {background-color: #003366;}
+.bgColor4 {background-color: #cccccc;}
+.bgColor7 {background-color: #66ccff;}
diff --git a/ldap/clients/dsgw/pbhtml/tiny_cert.gif b/ldap/clients/dsgw/pbhtml/tiny_cert.gif
new file mode 100644
index 00000000..c8cec6ea
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/tiny_cert.gif
Binary files differ
diff --git a/ldap/clients/dsgw/pbhtml/tiny_vcard.gif b/ldap/clients/dsgw/pbhtml/tiny_vcard.gif
new file mode 100644
index 00000000..a1fcd542
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/tiny_vcard.gif
Binary files differ
diff --git a/ldap/clients/dsgw/pbhtml/vendor.gif b/ldap/clients/dsgw/pbhtml/vendor.gif
new file mode 100644
index 00000000..d2aafd12
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/vendor.gif
Binary files differ
diff --git a/ldap/clients/dsgw/pbhtml/view_vcard.gif b/ldap/clients/dsgw/pbhtml/view_vcard.gif
new file mode 100644
index 00000000..61f34205
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/view_vcard.gif
Binary files differ
diff --git a/ldap/clients/dsgw/pbhtml/view_vcard_sm.gif b/ldap/clients/dsgw/pbhtml/view_vcard_sm.gif
new file mode 100644
index 00000000..98aa322f
--- /dev/null
+++ b/ldap/clients/dsgw/pbhtml/view_vcard_sm.gif
Binary files differ
diff --git a/ldap/clients/dsgw/search.c b/ldap/clients/dsgw/search.c
new file mode 100644
index 00000000..90b40fcc
--- /dev/null
+++ b/ldap/clients/dsgw/search.c
@@ -0,0 +1,217 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+/*
+ * search.c -- CGI program to generate smart search form -- HTTP gateway
+ *
+ * Copyright (c) 1996 Netscape Communications Corp.
+ * All rights reserved.
+ */
+
+#include "dsgw.h"
+#include "dbtdsgw.h"
+static void get_request(char *docname);
+static void do_searchtype_popup( struct ldap_searchobj *sop );
+
+
+int main( argc, argv, env )
+ int argc;
+ char *argv[];
+#ifdef DSGW_DEBUG
+ char *env[];
+#endif
+{
+ auto int reqmethod;
+ char *docname = NULL;
+ char *qs = NULL;
+
+ /* Parse out the file=blah.html */
+ if (( qs = getenv( "QUERY_STRING" )) != NULL && *qs != '\0' ) {
+ /* parse the query string: */
+ auto char *p, *iter = NULL;
+ qs = dsgw_ch_strdup( qs );
+
+ for ( p = ldap_utf8strtok_r( qs, "&", &iter ); p != NULL;
+ p = ldap_utf8strtok_r( NULL, "&", &iter )) {
+
+ /*
+ * Get the conf file name. It'll be translated
+ * into /dsgw/context/CONTEXT.conf if
+ * CONTEXT is all alphanumeric (no slahes,
+ * or dots). CONTEXT is passed into the cgi.
+ * if context=CONTEXT is not there, or PATH_INFO
+ * was used, then use dsgw.conf
+ */
+ if ( !strncasecmp( p, "context=", 8 )) {
+ context = dsgw_ch_strdup( p + 8 );
+ dsgw_form_unescape( context );
+ continue;
+ }
+
+
+ /*Get the filename and check it for naughtiness -RJP*/
+ if ( !strncasecmp( p, "file=", 5 )) {
+ docname = dsgw_ch_strdup( p + 5 );
+ dsgw_form_unescape( docname );
+
+ /*
+ * Make sure the person isn't trying to get
+ * some file not in the gateway.
+ */
+ if (! dsgw_valid_docname(docname)) {
+ dsgw_error( DSGW_ERR_BADFILEPATH, docname,
+ DSGW_ERROPT_EXIT, 0, NULL );
+ }
+ continue;
+ }
+
+
+ }
+
+ free( qs ); qs = NULL;
+ }
+
+
+ reqmethod = dsgw_init( argc, argv, DSGW_METHOD_GET );
+ dsgw_send_header();
+
+#ifdef DSGW_DEBUG
+ dsgw_logstringarray( "env", env );
+{
+ char buf[ 1024 ];
+ getcwd( buf, sizeof(buf));
+ dsgw_log( "cwd: \"%s\"\n", buf );
+}
+#endif
+
+ if ( reqmethod == DSGW_METHOD_GET ) {
+ get_request(docname);
+ }
+ exit( 0 );
+}
+
+
+static void
+get_request(char *docname)
+{
+
+ auto char* filename = NULL;
+ auto struct ldap_searchobj* sop = NULL;
+
+ if (docname != NULL && *docname == '/') {
+ docname++;
+ }
+
+ if ( docname == NULL || *docname == '\0' ) {
+ filename = "search.html";
+ } else if ( !strcmp( docname, "string" )) {
+ filename = "searchString.html";
+ dsgw_init_searchprefs( &sop );
+ }
+ if (filename) {
+ auto FILE* html = dsgw_open_html_file( filename, DSGW_ERROPT_EXIT );
+ auto char line[ BIG_LINE ];
+ auto int argc;
+ auto char **argv;
+
+ while ( dsgw_next_html_line( html, line )) {
+ if ( dsgw_parse_line( line, &argc, &argv, 0, dsgw_simple_cond_is_true, NULL )) {
+ if ( dsgw_directive_is( line, "HEAD" )) {
+ dsgw_head_begin();
+ dsgw_emits ("\n");
+ } else if ( dsgw_directive_is( line, "DS_SEARCH_SCRIPT" )) {
+ dsgw_emits ("<SCRIPT LANGUAGE=\"JavaScript\">\n"
+ "<!-- Hide from non-JavaScript-capable browsers\n"
+ "\n"
+ "function validate(sform)\n"
+ "{\n"
+ " if (sform.searchstring.value == '') {\n");
+/*
+ * It would have been nice to detect when the user pressed return without
+ * typing anything into the searchstring area, but on Navigator 2.x, the
+ * form variable's value seems to get set *after* the onSubmit handler
+ * executes, which is unfortunate.
+ */
+ dsgw_emit_alert ("searchFrame", NULL, /* "%s<br>(search base %s)", */
+ XP_GetClientStr (DBT_youDidNotSupplyASearchString_),
+ gc->gc_ldapsearchbase);
+ dsgw_emits (" return false;\n"
+ " }\n"
+ " sform.searchstring.select();\n"
+ " sform.searchstring.focus();\n"
+ " return true;\n"
+ "}\n"
+ "\n"
+ "function init()\n"
+ "{}\n"
+ "// End hiding -->\n"
+ "</SCRIPT>\n");
+
+ } else if ( dsgw_directive_is( line, "DS_SEARCH_BODY" )) {
+ dsgw_emitf ("<BODY onLoad=\""
+ "document.searchForm.searchstring.select();"
+ "document.searchForm.searchstring.focus();\" %s>\n",
+ dsgw_html_body_colors );
+ dsgw_emit_alertForm();
+
+ } else if ( dsgw_directive_is( line, "DS_SEARCH_FORM" )) {
+ dsgw_form_begin ("searchForm", "action=\"%s\" %s %s",
+ dsgw_getvp( DSGW_CGINUM_DOSEARCH ),
+ "onSubmit=\"return top.validate(this)\"",
+ argc > 0 ? argv[0] : "");
+ dsgw_emitf ("\n"
+ "<INPUT TYPE=hidden NAME=\"mode\" VALUE=\"smart\">\n"
+ "<INPUT TYPE=hidden NAME=\"base\" VALUE=\"%s\">\n"
+ "<INPUT TYPE=hidden NAME=\"ldapserver\" VALUE=\"%s\">\n"
+ "<INPUT TYPE=hidden NAME=\"ldapport\" VALUE=\"%d\">\n",
+ gc->gc_ldapsearchbase, gc->gc_ldapserver, gc->gc_ldapport );
+ } else if ( dsgw_directive_is( line, "DS_SEARCH_BASE" )) {
+#ifdef NOTFORNOW
+ /* ldap_dn2ufn currently gobbles up 'dc' so don't use */
+ /* it for now */
+ auto char* ufn = ldap_dn2ufn( gc->gc_ldapsearchbase );
+ dsgw_emits( ufn );
+ free( ufn );
+#else
+ dsgw_emits( gc->gc_ldapsearchbase );
+#endif
+ } else if ( dsgw_directive_is( line, "DS_SEARCH_TYPE" )) {
+ do_searchtype_popup( sop );
+ } else if ( dsgw_directive_is( line, "DS_HELP_BUTTON" )) {
+ dsgw_emit_helpbutton (argc > 0 ? argv[0] : "");
+ } else {
+ dsgw_emits (line);
+ }
+ dsgw_argv_free( argv );
+ }
+ }
+ fclose (html);
+ }
+}
+
+
+static void
+do_searchtype_popup(
+struct ldap_searchobj *sop
+)
+{
+ int first = 1;
+ struct ldap_searchobj *so;
+
+ dsgw_emits( "<SELECT NAME=\"type\">\n" );
+ for ( so = ldap_first_searchobj( sop ); so != NULL;
+ so = ldap_next_searchobj( sop, so ), first = 0) {
+ /* Skip any marked "internal-only" */
+ if ( LDAP_IS_SEARCHOBJ_OPTION_SET( so, LDAP_SEARCHOBJ_OPT_INTERNAL )) {
+ continue;
+ }
+ dsgw_emitf( "<OPTION%s value=\"%s\">%s</OPTION>\n",
+ first ? " selected" : "",
+ so->so_objtypeprompt,
+ dsgw_get_translation( so->so_objtypeprompt ));
+ }
+ dsgw_emits( "</SELECT>\n" );
+}
diff --git a/ldap/clients/dsgw/secglue.c b/ldap/clients/dsgw/secglue.c
new file mode 100644
index 00000000..3a317185
--- /dev/null
+++ b/ldap/clients/dsgw/secglue.c
@@ -0,0 +1,174 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+/*
+ * secglue.c: Glue routines for the httpd.so shared object. These are
+ * necessary because on many system no garbage collection is performed for
+ * shared objects.
+ *
+ * Rob McCool
+ *
+ * Adapted for DSGW by Mark Smith 18 Aug 1997.
+ * Copied from revision 1.4.4.6.4.1 of ldapserver/httpd/newadmin/src/secglue.c
+ */
+
+
+#include "base/systems.h"
+
+#ifdef __cplusplus
+#define FUNC(name) extern "C" { void name (void) {} }
+#else
+#define FUNC(name) void name (void) {}
+#endif
+
+FUNC(DS_Alloc)
+FUNC(DS_Free)
+FUNC(DS_Zfree)
+FUNC(SEC_CertChainFromCert)
+FUNC(SEC_CertTimesValid)
+FUNC(SEC_CheckPassword)
+FUNC(SEC_CloseKeyDB)
+FUNC(SEC_CompareItem)
+FUNC(SEC_ConvertToPublicKey)
+FUNC(CERT_DestroyCertificate)
+FUNC(SECKEY_DestroyPrivateKey)
+FUNC(SEC_DestroyPublicKey)
+FUNC(SECITEM_DupItem)
+FUNC(SEC_ExtractPublicKey)
+FUNC(SEC_FindCertByNickname)
+FUNC(SEC_FindKeyByName)
+FUNC(SECITEM_FreeItem)
+FUNC(CERT_GetAVATag)
+FUNC(SEC_GetPassword)
+FUNC(SEC_GetSSLCACerts)
+FUNC(CERT_NameToAscii)
+FUNC(SEC_OpenCertDB)
+FUNC(CERT_RFC1485_EscapeAndQuote)
+FUNC(SEC_ResetRandom)
+FUNC(SEC_UTCTimeToAscii)
+FUNC(SECKEY_UpdateKeyDBPass1)
+FUNC(SECKEY_UpdateKeyDBPass2)
+FUNC(SSL_Accept)
+FUNC(SSL_AcceptHook)
+FUNC(SSL_AuthCertificate)
+FUNC(SSL_AuthCertificateHook)
+FUNC(SSL_BadCertHook)
+FUNC(SSL_Bind)
+FUNC(SSL_BindForSockd)
+FUNC(SSL_CheckDirectSock)
+FUNC(SSL_Close)
+FUNC(SSL_ConfigSecureServer)
+FUNC(SSL_ConfigServerSessionIDCache)
+FUNC(SSL_ConfigSockd)
+FUNC(SSL_Connect)
+FUNC(SSL_DataPending)
+FUNC(SSL_DataPendingHack)
+FUNC(SSL_Enable)
+FUNC(SSL_EnableCipher)
+FUNC(SSL_EnableDefault)
+FUNC(SSL_ForceHandshake)
+FUNC(SSL_GetClientAuthDataHook)
+FUNC(SSL_GetPeerName)
+FUNC(SSL_GetSessionID)
+FUNC(SSL_GetSockOpt)
+FUNC(SSL_HandshakeCallback)
+FUNC(SSL_Import)
+FUNC(SSL_ImportFd)
+FUNC(SSL_InvalidateSession)
+FUNC(SSL_Ioctl)
+FUNC(SSL_IsDomestic)
+FUNC(SSL_Listen)
+FUNC(SSL_PeerCertificate)
+FUNC(SSL_Read)
+FUNC(SSL_Recv)
+FUNC(SSL_RedoHandshake)
+FUNC(SSL_ResetHandshake)
+FUNC(SSL_SecurityCapabilities)
+FUNC(SSL_SecurityStatus)
+FUNC(SSL_Send)
+FUNC(SSL_SetSockOpt)
+FUNC(SSL_SetURL)
+FUNC(SSL_Shutdown)
+FUNC(SSL_Socket)
+FUNC(SSL_Write)
+/*
+ * DSGWmcs: added the functions below:
+ */
+FUNC(SEC_RNGInit)
+FUNC(SEC_CheckKeyDBPassword)
+FUNC(SEC_ZfreeItem)
+FUNC(SEC_DataToAscii)
+FUNC(SEC_AsciiToData)
+FUNC(ldapssl_init) /* called by something in ns-httpd.so */
+FUNC(SSL_DefaultBadCertHandler) /* called by something in ns-httpd.so */
+/* DSGW kristian added: */
+FUNC(CERT_GetDomainComponentName)
+FUNC(CERT_GetCertEmailAddress)
+FUNC(CERT_GetCertUid)
+FUNC(CERT_GetCommonName)
+FUNC(CERT_GetCountryName)
+FUNC(CERT_GetLocalityName)
+FUNC(CERT_GetOrgName)
+FUNC(CERT_GetStateName)
+FUNC(CERT_IsExportVersion)
+FUNC(CERT_PublicModulusLen)
+
+#ifdef FORTEZZA
+FUNC(SSL_EnableGroup)
+FUNC(SEC_OpenVolatileCertDB)
+FUNC(FortezzaConfigureServer)
+FUNC(SSL_IsEnabledGroup)
+#endif /* FORTEZZA */
+
+/* DSGW pkennedy added, for HCL integration */
+FUNC(BTOA_DataToAscii)
+FUNC(ATOB_AsciiToData)
+FUNC(SSL_ImportFD)
+FUNC(PK11_FindKeyByAnyCert)
+FUNC(PK11_GetTokenName)
+FUNC(PK11_SetPasswordFunc)
+FUNC(PK11_FindCertFromNickname)
+FUNC(PK11_FortezzaHasKEA)
+FUNC(PK11_ConfigurePKCS11)
+FUNC(SSL_SetPolicy)
+FUNC(CERT_VerifyCertNow)
+FUNC(SSL_RevealURL)
+FUNC(CERT_VerifyCertName)
+FUNC(PORT_SetError)
+
+/* DSGW richm added, for nss 2.8.x support */
+FUNC(SSL_OptionSet)
+FUNC(NSS_SetDomesticPolicy)
+
+/* DSGW powers added, for NSS 3.4.x support*/
+FUNC(NSS_NoDB_Init)
+FUNC(NSS_Initialize)
+FUNC(NSS_Init)
+FUNC(PK11_GenerateRandom)
+FUNC(PK11_GetInternalKeySlot)
+FUNC(PK11_KeyGen)
+FUNC(PK11_ImportSymKey)
+FUNC(PK11_GenerateNewParam)
+FUNC(PK11_CreateContextBySymKey)
+FUNC(PK11_CipherOp)
+FUNC(PK11_DigestFinal)
+FUNC(PK11_Finalize)
+FUNC(PK11_DestroyContext)
+FUNC(PK11_FreeSlot)
+FUNC(PK11_DigestBegin)
+FUNC(PK11_FreeSymKey)
+FUNC(PK11_DigestOp)
+FUNC(PK11_CloneContext)
+FUNC(PK11_HashBuf)
+FUNC(PK11_CreateDigestContext)
+FUNC(SECITEM_ZfreeItem)
+FUNC(SSL_CipherPrefSetDefault)
+FUNC(SSL_OptionGetDefault)
+FUNC(SSL_OptionSetDefault)
+FUNC(SSL_CipherPolicySet )
+FUNC(CERT_GetDefaultCertDB)
+FUNC(CERT_OpenCertDBFilename)
+
diff --git a/ldap/clients/dsgw/sort.c b/ldap/clients/dsgw/sort.c
new file mode 100644
index 00000000..f88a1282
--- /dev/null
+++ b/ldap/clients/dsgw/sort.c
@@ -0,0 +1,138 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+/* Copyright (c) 1998 Netscape Communications Corp. All rights reserved. */
+
+/* DON'T SHIP THIS PROGRAM. It's terribly un-secure, as it
+ enables an HTTP client to read the contents of any file.
+*/
+
+/* This is a Gateway CGI program, for testing collation.
+ It reads the text file named by $PATH_INFO and outputs its lines, sorted,
+ in a table with the script and collation key computed by dsgw_strkeygen.
+ The locale is controlled by the Accept-Language header in the HTTP request,
+ like any Gateway CGI.
+*/
+
+#include <errno.h>
+#include <stdio.h> /* fopen, fgets, perror */
+#include <stdlib.h> /* getenv, qsort */
+#include "dsgw.h"
+
+static const char*
+fgetln(FILE* f, int* error)
+{
+ auto size_t buflen = 128;
+ auto char* buf = dsgw_ch_malloc (buflen);
+ *buf = '\0';
+ while (fgets (buf, buflen, f)) {
+ auto const size_t read = strlen(buf);
+ if (buf[read-1] == '\n') {
+ buf[read-1] = '\0';
+ return buf;
+ }
+ buflen *= 2;
+ buf = dsgw_ch_realloc (buf, buflen);
+ }
+ if (feof(f) && *buf) return buf;
+ free (buf);
+ return NULL;
+}
+
+typedef struct keystring {
+ const char* ks_val;
+ struct berval* ks_key;
+} keystring_t;
+
+static int
+keystring_cmp (const void* Lv, const void* Rv)
+{
+ auto const keystring_t** L = (const keystring_t**)Lv;
+ auto const keystring_t** R = (const keystring_t**)Rv;
+ return dsgw_keycmp (NULL, (*L)->ks_key, (*R)->ks_key);
+}
+
+int
+main( int argc, char* argv[] )
+{
+ auto int error = 0;
+ auto const int reqmethod = dsgw_init (argc, argv, DSGW_METHOD_GET);
+ auto char* fname = getenv ("PATH_INFO");
+
+ dsgw_send_header();
+ dsgw_emits ("<HTML>\n");
+ dsgw_head_begin();
+ dsgw_emits ("\n</head>\n<body>\n");
+
+ if (!fname) {
+ dsgw_emits ("!PATH_INFO\n");
+ error = 1;
+ } else {
+ auto FILE* f = fopen (fname, "r");
+ if (!f) {
+ dsgw_emitf ("%s: errno %i\n", fname, errno);
+ error = 2;
+ } else {
+ auto const char* line;
+ auto keystring_t* v = NULL;
+ auto size_t vlen = 0;
+ while (line = fgetln(f, &error)) {
+ v = (keystring_t*) dsgw_ch_realloc (v, (vlen+1) * sizeof(keystring_t));
+ v[vlen].ks_val = line;
+ v[vlen].ks_key = dsgw_strkeygen (CASE_INSENSITIVE, line);
+ ++vlen;
+ }
+ fclose (f);
+ if (vlen) {
+ auto keystring_t** vp;
+ auto size_t i;
+ vp = (keystring_t**) dsgw_ch_malloc (vlen * sizeof(keystring_t*));
+ for (i = 0; i < vlen; ++i) {
+ vp[i] = v + i;
+ }
+
+ qsort (vp, vlen, sizeof(keystring_t*), keystring_cmp);
+
+ dsgw_emits ("<table align=left cols=5>\n");
+ dsgw_emits (" <tr>"
+ "<th width=20>" DSGW_UTF8_NBSP "</th>"
+ "<th align=left>line</th>"
+ "<th width=25>script</th>"
+ "<th width=20>" DSGW_UTF8_NBSP "</th>"
+ "<th align=left>Sort Key</th>"
+ "</tr>\n");
+ for (i = 0; i < vlen; ++i) {
+ auto size_t j;
+ dsgw_emits (" <tr valign=baseline>");
+ dsgw_emitf ("<th align=right>%lu:</th>", 1 + (unsigned long)(vp[i]-v));
+ dsgw_emitf ("<td>%s</td>", vp[i]->ks_val);
+ dsgw_emits ("<td align=center>");
+ if (vp[i]->ks_key->bv_len) {
+ dsgw_emitf ("%u", 0xFF & (unsigned)(vp[i]->ks_key->bv_val[0]));
+ } else {
+ dsgw_emits (DSGW_UTF8_NBSP);
+ }
+ dsgw_emits ("</td>");
+ dsgw_emitf ("<td align=right>%lu:</td>", (unsigned long)(vp[i]->ks_key->bv_len) - 2);
+ dsgw_emits ("<td><font size=\"-2\">");
+ for (j = 1; j < vp[i]->ks_key->bv_len - 1; ++j) {
+ dsgw_emitf ("%02x", 0xFF & (unsigned)(vp[i]->ks_key->bv_val[j]));
+ }
+ dsgw_emits ("</font></td>");
+ dsgw_emits ("</tr>\n");
+ }
+ dsgw_emits ("</table>\n");
+ free (vp);
+ for (i = 0; i < vlen; ++i) {
+ dsgw_keyfree (NULL, v[i].ks_key);
+ }
+ free (v);
+ }
+ }
+ }
+ dsgw_emits ("</body></HTML>\n");
+ return error;
+}
diff --git a/ldap/clients/dsgw/templateindex.c b/ldap/clients/dsgw/templateindex.c
new file mode 100644
index 00000000..103b4fa1
--- /dev/null
+++ b/ldap/clients/dsgw/templateindex.c
@@ -0,0 +1,184 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+/*
+ * templateindex.c -- CGI template indexer -- HTTP gateway
+ *
+ * Copyright (c) 1996 Netscape Communications Corp.
+ * All rights reserved.
+ */
+
+#include "dsgw.h"
+#if defined( XP_WIN32 )
+#include <io.h>
+struct dirent {
+ char d_name[1];
+};
+#else
+#include <dirent.h>
+#endif
+
+static void build_index();
+
+#if defined( XP_WIN32 )
+char **ds_get_file_list( char *dir )
+{
+ char szWildcardFileSpec[MAX_PATH];
+ char **ret = NULL;
+ long hFile;
+ struct _finddata_t fileinfo;
+ int nfiles = 0;
+
+ if( ( dir == NULL ) || (strlen( dir ) == 0) )
+ return NULL;
+
+ if( ( ret = malloc( sizeof( char * ) ) ) == NULL )
+ return NULL;
+
+ strcpy(szWildcardFileSpec, dir);
+ strcat(szWildcardFileSpec, "/*");
+
+ hFile = _findfirst( szWildcardFileSpec, &fileinfo);
+ if( hFile == -1 )
+ return NULL;
+
+ if( ( strcmp( fileinfo.name, "." ) != 0 ) &&
+ ( strcmp( fileinfo.name, ".." ) != 0 ) )
+ {
+ ret[ nfiles++ ] = strdup( fileinfo.name );
+ }
+
+ while( _findnext( hFile, &fileinfo ) == 0 )
+ {
+ if( ( strcmp( fileinfo.name, "." ) != 0 ) &&
+ ( strcmp( fileinfo.name, ".." ) != 0 ) )
+ {
+ if( ( ret = (char **) realloc( ret, sizeof( char * ) * ( nfiles + 1 ) ) ) != NULL )
+ ret[ nfiles++ ] = strdup( fileinfo.name);
+ }
+ }
+
+ _findclose( hFile );
+
+ ret[ nfiles ] = NULL;
+ return ret;
+}
+#endif ( XP_WIN32 )
+
+
+main( argc, argv, env )
+ int argc;
+ char *argv[];
+#ifdef DSGW_DEBUG
+ char *env[];
+#endif
+{
+ int reqmethod;
+
+ reqmethod = dsgw_init( argc, argv, DSGW_METHOD_GET );
+ dsgw_send_header();
+
+#ifdef DSGW_DEBUG
+ dsgw_logstringarray( "env", env );
+#endif
+
+ dsgw_html_begin( "Directory Server Gateway Template Indexer", 1 );
+
+ build_index();
+
+ dsgw_html_end();
+
+ exit( 0 );
+}
+
+
+static void
+build_index()
+{
+ FILE *htmlfp;
+#if !defined( XP_WIN32 )
+ DIR *dirp;
+#endif
+ struct dirent *dep;
+ char *path, **argv, *classes, *p, line[ BIG_LINE ];
+ char **filelist;
+ int errcount, prefixlen, count, argc, filecount = 0;
+
+
+ path = dsgw_file2path( gc->gc_tmpldir, "" );
+
+#if defined( XP_WIN32 )
+ if (( filelist = ds_get_file_list( path )) == NULL ) {
+#else
+ if (( dirp = opendir( path )) == NULL ) {
+#endif
+ dsgw_error( DSGW_ERR_OPENDIR, path, DSGW_ERROPT_EXIT, 0, NULL );
+ }
+ free( path );
+
+ prefixlen = strlen( DSGW_CONFIG_DISPLAYPREFIX );
+ errcount = count = 0;
+
+ dsgw_emitf( "Remove any lines that begin with \"template\" from \n" );
+ dsgw_emitf( "your dsgw.conf file and add these lines:<BR><PRE>\n" );
+
+#if defined( XP_WIN32 )
+ while( filelist != NULL && filelist[filecount] != NULL ) {
+ dep = (struct dirent *)filelist[filecount];
+#else
+ while (( dep = readdir( dirp )) != NULL ) {
+#endif
+ if ( strlen( dep->d_name ) > prefixlen && strncasecmp( dep->d_name,
+ DSGW_CONFIG_DISPLAYPREFIX, prefixlen ) == 0 && strcmp(
+ ".html", dep->d_name + strlen( dep->d_name ) - 5 ) == 0 ) {
+ ++count;
+ htmlfp = dsgw_open_html_file( dep->d_name, DSGW_ERROPT_EXIT );
+
+ while ( dsgw_next_html_line( htmlfp, line )) {
+ if ( dsgw_parse_line( line, &argc, &argv, 1,
+ dsgw_simple_cond_is_true, NULL )) {
+ if ( dsgw_directive_is( line, DRCT_DS_OBJECTCLASS )) {
+ if (( classes = get_arg_by_name( "value", argc, argv ))
+ == NULL ) {
+ dsgw_emitf(
+ "Missing \"value=objectclass\" on line &lt%s<BR>\n", line+1 );
+ ++errcount;
+ continue;
+ }
+ dsgw_emitf( "template %.*s",
+ strlen( dep->d_name ) - prefixlen - 5,
+ dep->d_name + prefixlen );
+ for ( ; classes != NULL && *classes != '\0';
+ classes = p ) {
+ if (( p = strchr( classes, ',' )) != NULL ) {
+ *p++ = '\0';
+ while ( ldap_utf8isspace( p )) {
+ LDAP_UTF8INC(p);
+ }
+ }
+ dsgw_emitf( " %s", classes );
+ }
+ dsgw_emits( "\n" );
+ }
+ }
+ }
+ fclose( htmlfp );
+ filecount++;
+ }
+ }
+
+#if !defined( XP_WIN32 )
+ closedir( dirp );
+#endif
+
+ dsgw_emits( "</PRE><H3>Template indexing " );
+
+ if ( errcount == 0 ) {
+ dsgw_emitf( "complete (%d files).<H3>\n", count );
+ } else {
+ dsgw_emitf( "failed (%d errors).<H3>\n", errcount );
+ }
+}
diff --git a/ldap/clients/dsgw/tutor.c b/ldap/clients/dsgw/tutor.c
new file mode 100644
index 00000000..682e0843
--- /dev/null
+++ b/ldap/clients/dsgw/tutor.c
@@ -0,0 +1,276 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+/*
+ * tutor.c - Take a qs, and spit out the appropriate tutorial
+ *
+ * All blame to Mike McCool
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "dsgw.h"
+
+#define BASE_MAN_DIRECTORY "manual/"
+#define BASE_INFO_DIRECTORY "info/"
+#define HELP_INDEX_HTML "manual/index.html"
+/*#define MANUAL_HPATH "bin/lang?file=" DSGW_MANUALSHORTCUT "/"*/
+
+/* Copied from ldapserver/lib/base/util.c */
+static int
+my_util_uri_is_evil(char *t)
+{
+ register int x;
+
+ for(x = 0; t[x]; ++x) {
+ if(t[x] == '/') {
+ if(t[x+1] == '/')
+ return 1;
+ if(t[x+1] == '.') {
+ switch(t[x+2]) {
+ case '.':
+ if((!t[x+3]) || (t[x+3] == '/'))
+ return 1;
+ case '/':
+ case '\0':
+ return 1;
+ }
+ }
+ }
+#ifdef XP_WIN32
+ /* On NT, the directory "abc...." is the same as "abc"
+ * The only cheap way to catch this globally is to disallow
+ * names with the trailing "."s. Hopefully this is not over
+ * restrictive
+ */
+ if ((t[x] == '.') && ( (t[x+1] == '/') || (t[x+1] == '\0') )) {
+ return 1;
+ }
+#endif
+ }
+ return 0;
+}
+
+
+FILE *
+_open_html_file( char *filename )
+{
+ FILE *f;
+ char *mypath;
+ char *p;
+
+ p = dsgw_file2path( DSGW_MANROOT, "slapd/gw/" );
+ mypath = (char *)dsgw_ch_malloc( strlen( p ) +
+ strlen( filename ) + 1 );
+ sprintf( mypath, "%s%s", p, filename );
+
+ if (!(f = fopen( mypath, "r" ))) {
+ dsgw_error( DSGW_ERR_OPENHTMLFILE, filename, DSGW_ERROPT_EXIT,
+ 0, NULL );
+ }
+
+ free( p );
+ free( mypath );
+
+ return f;
+}
+
+
+
+/* Had to copy and paste so wouldn't set referer. */
+void _my_return_html_file(char *filename, char *base) {
+ char line[BIG_LINE];
+ FILE *html = _open_html_file(filename);
+
+ if(base) {
+ char *tmp;
+ char *surl=getenv("SERVER_URL");
+ char *sn=dsgw_ch_strdup(getenv("SCRIPT_NAME"));
+ tmp=strchr(&(sn[1]), '/');
+ *tmp='\0';
+ dsgw_emitf("<BASE href=\"%s%s/%s\">\n", surl, sn, base);
+ }
+ while( fgets(line, BIG_LINE, html)) {
+ dsgw_emits( line );
+ }
+}
+
+
+int
+main(
+ int argc,
+ char *argv[]
+#ifdef DSGW_DEBUG
+ ,char *env[]
+#endif
+)
+{
+ char *qs = getenv("QUERY_STRING");
+ char *html=NULL;
+ char *base=NULL;
+
+#ifdef DSGW_DEBUG
+ dsgw_logstringarray( "env", env );
+#endif
+
+ if(qs == NULL || *qs == '\0') {
+ dsgw_send_header();
+ _my_return_html_file(BASE_MAN_DIRECTORY HELP_INDEX_HTML, NULL);
+ exit(0);
+ } else {
+ /* parse the query string: */
+ auto char *p, *iter = NULL;
+
+ /*get a pointer to the context. It should be the last part of the qs*/
+ p = ldap_utf8strtok_r( qs, "&", &iter );
+
+ /*
+ * Get the conf file name. It'll be translated
+ * into /dsgw/context/CONTEXT.conf if
+ * CONTEXT is all alphanumeric (no slahes,
+ * or dots). CONTEXT is passed into the cgi.
+ * if context=CONTEXT is not there, or PATH_INFO
+ * was used, then use dsgw.conf
+ */
+ if ( iter != NULL && !strncasecmp( iter, "context=", 8 )) {
+ context = dsgw_ch_strdup( iter + 8 );
+ dsgw_form_unescape( context );
+ }
+
+ }
+
+ dsgw_init( argc, argv, DSGW_METHOD_GET );
+
+ html = (char *) dsgw_ch_malloc(strlen(qs)+10+10);
+ sprintf(html, "%s.html", qs);
+ if (my_util_uri_is_evil(html)) {
+ dsgw_send_header();
+ dsgw_emits( "<CENTER><H2>Error</H2></CENTER>\n"
+ "<P>\n"
+ "URL contains dangerous characters. Cannot display\n"
+ "help text." );
+ exit( 0 );
+ }
+
+ if(qs[0]=='!') {
+ qs++;
+ if(!strncmp(qs, BASE_INFO_DIRECTORY, strlen(BASE_INFO_DIRECTORY))) {
+ sprintf(html, "%s.html", qs);
+ } else if(!strncmp(qs, BASE_MAN_DIRECTORY, strlen(BASE_MAN_DIRECTORY))) {
+ if(!strstr(qs, ".html")) {
+ sprintf(html, "%s.htm", qs);
+ } else {
+ sprintf(html, "%s", qs);
+ }
+ base=qs;
+ }
+ else {
+ char line[BIG_LINE];
+ FILE *map=NULL;
+ char *man_index=NULL;
+
+ man_index = dsgw_file2path ( DSGW_MANROOT, "slapd/gw/manual/index.map" );
+
+ html[0]='\0';
+
+ map=fopen(man_index, "r");
+ if(!map)
+ goto ohwell;
+ while(fgets(line, BIG_LINE, map)) {
+ if(line[0]==';')
+ continue;
+ else if(ldap_utf8isspace(line))
+ continue;
+ else {
+ /* parse out the line */
+ register char *head=NULL, *tail=NULL;
+ int found;
+
+ head=&(line[0]);
+ tail=head;
+ found=0;
+ while(*tail) {
+ if(ldap_utf8isspace(tail) || *tail=='=') {
+ *tail='\0';
+ found=1;
+ /* get rid of extra stuff at the end */
+ tail++;
+ while(1) {
+ if (*tail == 0) {
+ ++tail; /* This looks wrong. */
+ break;
+ }
+ LDAP_UTF8INC(tail);
+ if((!ldap_utf8isspace(tail)) && (*tail!='='))
+ break;
+ }
+ break;
+ }
+ LDAP_UTF8INC(tail);
+ }
+ if(!found) continue;
+
+ /* script name is in head */
+ if(strncasecmp(head, qs, strlen(qs))) {
+ continue;
+ }
+ /* match found. get the actual file name */
+ head=tail;
+/* Step on CRs and LFs. */
+ while(*tail) {
+ if((*tail=='\r') || (*tail=='\n') || (*tail==';')) {
+ *tail='\0';
+ break;
+ }
+ LDAP_UTF8INC(tail);
+ }
+#if 0
+/* No longer remove whitespace at end of line. Now is whitespace in link. */
+ while(*LDAP_UTF8DEC(tail)) {
+ if(ldap_utf8isspace(tail)) *tail='\0';
+ else break;
+ }
+#endif
+ /* assumedly, head should now have the proper HTML file
+ * from the manual inside. redirect the client 'cause
+ * there's no other way to get them to jump to the
+ * right place.
+ * Looks like:
+ * http://host:port/dsgw/bin/lang?context=CONTEXT&file=.MANUAL/FILE.HTM
+ * Where MANUAL is literal
+ */
+ dsgw_emitf("Location: %s%s/%s\n\n",
+ gc->gc_urlpfxmain, DSGW_MANUALSHORTCUT, head);
+
+ fclose(map);
+ exit(0);
+ }
+ }
+ fclose(map);
+ free( man_index );
+
+ohwell:
+ if(!html[0])
+ sprintf(html, "%s%s.html", BASE_MAN_DIRECTORY, qs);
+ }
+ dsgw_send_header();
+ _my_return_html_file(html, base);
+ } else {
+ dsgw_send_header();
+ dsgw_emits("<TITLE>Directory Server Gateway Help</TITLE>\n");
+ dsgw_emits("\n");
+ dsgw_emits("<frameset BORDER=0 FRAMEBORDER=NO rows=\"57,*\" "
+ "onLoad=\"top.master=top.opener.top;top.master.helpwin=self;\" "
+ "onUnload=\"if (top.master) { top.master.helpwin=0; }\">\n" );
+ dsgw_emitf("<frame src=\"%s?!info/infonav&context=%s\" scrolling=no "
+ "marginwidth=0 marginheight=0 "
+ "name=\"infobuttons\">\n", dsgw_getvp(DSGW_CGINUM_TUTOR), context);
+ dsgw_emitf("<frame src=\"%s?!%s&context=%s\" "
+ "name=\"infotopic\">\n", dsgw_getvp(DSGW_CGINUM_TUTOR), qs, context);
+ dsgw_emits("</frameset>\n");
+ }
+ return 1;
+}
diff --git a/ldap/clients/dsgw/unauth.c b/ldap/clients/dsgw/unauth.c
new file mode 100644
index 00000000..3dec0bd7
--- /dev/null
+++ b/ldap/clients/dsgw/unauth.c
@@ -0,0 +1,165 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+/*
+ * unauth.c -- CGI to discard cookies -- HTTP gateway
+ *
+ * Copyright (c) 1996 Netscape Communications Corp.
+ * All rights reserved.
+ */
+
+#include "dsgw.h"
+#include "dbtdsgw.h"
+
+char *get_auth_cookie( char *cookie );
+void generate_message( int type );
+
+#define CKEXP_SUCCESS 1
+#define CKEXP_FAILURE 2
+
+int main( int argc, char **argv )
+{
+ int reqmethod;
+ char *expck;
+ char *authck;
+ int rc;
+ char *qs = NULL;
+
+ /* Parse out the context=blah.html */
+ if (( qs = getenv( "QUERY_STRING" )) != NULL && *qs != '\0' ) {
+ /* parse the query string: */
+ auto char *p, *iter = NULL;
+ qs = dsgw_ch_strdup( qs );
+
+ for ( p = ldap_utf8strtok_r( qs, "&", &iter ); p != NULL;
+ p = ldap_utf8strtok_r( NULL, "&", &iter )) {
+
+ /*
+ * Get the conf file name. It'll be translated
+ * into /dsgw/context/CONTEXT.conf if
+ * CONTEXT is all alphanumeric (no slahes,
+ * or dots). CONTEXT is passed into the cgi.
+ * if context=CONTEXT is not there, or PATH_INFO
+ * was used, then use dsgw.conf
+ */
+ if ( !strncasecmp( p, "context=", 8 )) {
+ context = dsgw_ch_strdup( p + 8 );
+ dsgw_form_unescape( context );
+ continue;
+ }
+
+ }
+
+ free( qs ); qs = NULL;
+ }
+
+
+ reqmethod = dsgw_init( argc, argv, DSGW_METHOD_GET );
+
+ authck = dsgw_get_auth_cookie();
+ if ( authck == NULL ) {
+ /* No cookie. Generate an informational message. */
+ generate_message( CKEXP_SUCCESS );
+ free( authck );
+ exit( 0 );
+ }
+
+ /* Remove the cookie from the cookie database */
+ rc = dsgw_delcookie( authck );
+
+ /* Generate a cookie header with the cookie set to [unauthenticated] */
+ expck = dsgw_ch_malloc( strlen( DSGW_CKHDR ) + strlen( DSGW_AUTHCKNAME ) +
+ strlen( DSGW_UNAUTHSTR ) + strlen( "=; path=/" ) + 2 );
+ sprintf( expck, "%s%s=%s; path=/", DSGW_CKHDR, DSGW_AUTHCKNAME, DSGW_UNAUTHSTR );
+ dsgw_add_header( expck );
+ generate_message( CKEXP_SUCCESS );
+ free( authck );
+ free( expck );
+ exit( 0 );
+}
+
+
+
+/*
+ * It's quite likely that there will be more than one cookie in the
+ * Cookie: header. See if we've got an authentication cookie, and if
+ * so, parse it out and return a pointer to it. If no auth cookie
+ * is present, return NULL.
+ */
+char *
+get_auth_cookie( char *cookie )
+{
+ char *p, *e;
+
+ if ( cookie == NULL ) {
+ return NULL;
+ }
+
+ if (( p = strstr( cookie, DSGW_AUTHCKNAME )) == NULL ) {
+ return NULL;
+ }
+
+ if (( e = strchr( p, ';' )) != NULL ) {
+ *e = '\0';
+ }
+
+ return p;
+}
+
+
+
+void
+generate_message( int type )
+{
+ dsgw_send_header();
+ dsgw_emits( "<HTML>" );
+ dsgw_head_begin();
+ dsgw_emits( "\n<TITLE>" );
+ if ( type == CKEXP_SUCCESS ) {
+ dsgw_emits( "Success" );
+ } else if ( type == CKEXP_FAILURE ) {
+ dsgw_emits( "Error" );
+ }
+ dsgw_emits( "</TITLE>\n</HEAD>\n" );
+ dsgw_emitf( "<BODY %s>\n", dsgw_html_body_colors );
+
+ dsgw_emitf( "<CENTER>\n"
+ "<FONT SIZE=+2>\n"
+ "%s"
+ "</FONT>\n"
+ "</CENTER>\n"
+ "<P>\n"
+ "%s",
+ XP_GetClientStr( DBT_Success_ ),
+ XP_GetClientStr( DBT_YouAreNoLongerAuthenticated_ ));
+
+ if ( type != CKEXP_SUCCESS ) {
+ /*
+ * Something went wrong, so generate some JavaScript to
+ * discard the cookie.
+ */
+ dsgw_emits( "<SCRIPT LANGUAGE=\"JavaScript\">\n" );
+ dsgw_emitf( "document.cookie = '%s=%s; path=/';\n", DSGW_AUTHCKNAME,
+ DSGW_UNAUTHSTR );
+ dsgw_emits( "</SCRIPT>\n" );
+ }
+ dsgw_form_begin (NULL, NULL);
+ dsgw_emits( "\n"
+ "<TABLE BORDER=2 WIDTH=100%>\n"
+ "<TR>\n"
+ "<TD ALIGN=CENTER WIDTH=50%>\n");
+ dsgw_emitf(
+ "<INPUT TYPE=BUTTON VALUE=\"%s\"", XP_GetClientStr( DBT_GoBack_ ));
+ dsgw_emits(
+ " onClick=\"window.location.href=");
+ dsgw_quote_emitf(QUOTATION_JAVASCRIPT, "auth?context=%s", context);
+ dsgw_emits(";\"></TD>\n"
+ "<TD ALIGN=CENTER WIDTH=50%>\n" );
+ dsgw_emit_helpbutton( "UNAUTH" );
+ dsgw_emits( "</TABLE></FORM>\n"
+ "</BODY></HTML>\n" );
+}
+
diff --git a/ldap/clients/dsgw/userhtml/Makefile b/ldap/clients/dsgw/userhtml/Makefile
new file mode 100644
index 00000000..6cc32c6f
--- /dev/null
+++ b/ldap/clients/dsgw/userhtml/Makefile
@@ -0,0 +1,60 @@
+#
+# PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+# license terms. Copyright © 2001 Sun Microsystems, Inc.
+# Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+# All rights reserved.
+#
+#
+# Gmakefile for Directory Server Gateway html files.
+#
+
+LDAP_SRC = ../../..
+MCOM_ROOT = ../../../../..
+
+NOSTDSTRIP=true # don't let nsconfig.mak define target strip
+NOSTDCLEAN=true # don't let nsconfig.mak define target clean
+NOSTDDEPEND=true # don't let nsconfig.mak define target depend
+
+include $(MCOM_ROOT)/ldapserver/nsconfig.mk
+include $(LDAP_SRC)/nsldap.mk
+
+include ../dsgw_include.mk
+
+HTML= $(wildcard *.html)
+
+ifeq ($(BUILD_MODULE), HTTP_ADMIN)
+HTMLDEST = $(OBJDIR)/user-forms/html
+else
+HTMLDEST = $(DSGW_HTML_RELDIR)
+endif
+
+DEFINES += $(DEFS)
+
+CFLAGS += $(INCLUDES) $(DEFINES) $(ACFLAGS)
+
+BINS=$(addprefix $(HTMLDEST)/,$(HTML))
+
+ifeq ($(BUILD_MODULE), HTTP_ADMIN)
+all: $(HTMLDEST) $(BINS)
+
+$(HTMLDEST):
+ mkdir -p $(HTMLDEST)
+
+else
+all: $(HTMLDEST)
+endif
+
+clean: clean-manual clean-info
+ $(RM) $(BINS)
+
+$(HTMLDEST)/%.htm: %.htm
+ cp $< $(HTMLDEST)/$*.htm
+
+$(HTMLDEST)/%.html: %.html
+ cp $< $(HTMLDEST)/$*.html
+
+$(HTMLDEST)/%.gif: %.gif
+ cp $< $(HTMLDEST)/$*.gif
+
+strip:
+depend:
diff --git a/ldap/clients/dsgw/userhtml/edit-userpasswd.html b/ldap/clients/dsgw/userhtml/edit-userpasswd.html
new file mode 100644
index 00000000..e79423e5
--- /dev/null
+++ b/ldap/clients/dsgw/userhtml/edit-userpasswd.html
@@ -0,0 +1,85 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML><HEAD>
+<!-- change a user's password in the directory -->
+
+<!-- DS_ENTRYBEGIN -->
+<TITLE>Change Password -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+</TITLE>
+
+</HEAD>
+
+<!-- COLORS "TEXT=#000000 BGCOLOR=#FFFFFF LINK=#FF0000 VLINK=#8000FF ALINK=#FF0000" -->
+
+<!-- BODY "onLoad='document.forms[0].passwd.focus()'" -->
+
+<!-- DS_LAST_OP_INFO "prefix=<FONT SIZE=%22%2B1%22>" "suffix=</FONT><HR>" -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<INPUT TYPE="hidden" NAME="colors" VALUE="TEXT=#000000 BGCOLOR=#FFFFFF LINK=#FF0000 VLINK=#8000FF ALINK=#FF0000">
+
+<INPUT TYPE="hidden" NAME="completion_javascript" VALUE="document.location.href=\'edit/?userpasswd&info=\' + escape(dsmodify_info);">
+
+<TABLE BORDER=2 CELLSPACING=0 CELLPADDING=10 BGCOLOR="#F0F0F0">
+<TR BGCOLOR="#F1C40E">
+<TD>
+<H3>Password for
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "options=nolink" -->
+<FONT COLOR="#FFFFFF"> </FONT></H3>
+</TD>
+</TR>
+
+<TR>
+<TD><I><FONT SIZE=+0>Use this form to change your system password</FONT></I>.
+</TD>
+</TR>
+
+<TR>
+<TD>
+<UL>
+<TABLE CELLSPACING=0 CELLPADDING=0 >
+<TR ALIGN=LEFT VALIGN=CENTER>
+<TD><B>1.</B> Enter your <B>current </B>password:</TD>
+<TD>
+<!-- DS_OLDPASSWORD "size=12" -->
+</TD></TR>
+
+<TR VALIGN=CENTER>
+<TD><B>2.</B> Enter your <B>new </B>password: </TD>
+<TD>
+<!-- DS_NEWPASSWORD "size=12" -->
+</TD></TR>
+
+<TR ALIGN=LEFT VALIGN=CENTER>
+<TD><B>3.</B> Enter <B>new </B>password again:</TD>
+<TD>
+<!-- DS_CONFIRM_NEWPASSWORD "size=12" -->
+</TD></TR>
+</TABLE>
+</UL>
+</TD>
+</TR>
+
+<TR>
+<TD>
+<CENTER><P>
+<!-- DS_SAVEBUTTON "label= OK " -->
+</P></CENTER>
+</TD>
+</TR>
+</TABLE>
+
+
+<INPUT TYPE="hidden" NAME="completion_javascript" VALUE="document.location.href=\'edit/\' + dsmodify_dn + \'?&info=\' + escape(dsmodify_info)">
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/userhtml/edit-userpinfo.html b/ldap/clients/dsgw/userhtml/edit-userpinfo.html
new file mode 100644
index 00000000..ebd7b3dc
--- /dev/null
+++ b/ldap/clients/dsgw/userhtml/edit-userpinfo.html
@@ -0,0 +1,92 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HTML>
+<HEAD>
+<!-- DS_ENTRYBEGIN -->
+<!-- DS_EMIT_BASE_HREF -->
+</HEAD>
+
+<!-- COLORS "TEXT=#000000 BGCOLOR=#FFFFFF LINK=#FF0000 VLINK=#8000FF ALINK=#FF0000" -->
+
+<!-- BODY -->
+
+<!-- DS_LAST_OP_INFO "prefix=<FONT SIZE=%22%2B1%22>" "suffix=</FONT>" -->
+
+<!-- DS_BEGIN_ENTRYFORM -->
+
+<INPUT TYPE="hidden" NAME="quiet" VALUE="true">
+<INPUT TYPE="hidden" NAME="colors" VALUE="TEXT=#000000 BGCOLOR=#FFFFFF LINK=#FF0000 VLINK=#8000FF ALINK=#FF0000">
+<INPUT TYPE="hidden" NAME="completion_javascript" VALUE="document.location.href=\'edit/?userpinfo&info=\' + escape(dsmodify_info);">
+
+<TABLE BORDER=2 CELLSPACING=0 CELLPADDING=5 BGCOLOR="#F0F0F0" >
+<TR BGCOLOR="#F1C40E">
+<TD COLSPAN=2>
+<H3>Personal Information -
+<!-- DS_ATTRIBUTE "attr=dn" "syntax=dn" "dncomponents=2" "options=nolink" -->
+</H3>
+</TD>
+</TR>
+
+<TR>
+<TD COLSPAN=2><I><FONT SIZE=+0>Use this form to change your personal information
+</FONT></I>.
+</TD>
+</TR>
+
+<TR>
+<TD>First Name:</TD>
+<TD>
+<!-- DS_ATTRIBUTE "attr=givenName" "size=>20" -->
+</TD></TR>
+
+<TR>
+<TD>Last Name:</TD>
+<TD>
+<!-- DS_ATTRIBUTE "attr=sn" "size=>20" -->
+</TD></TR>
+
+<TR>
+<TD>Phone Number:</TD>
+<TD>
+<!-- DS_ATTRIBUTE "attr=telephoneNumber" "syntax=tel" "cols=>20" "numfields=+1" -->
+</TD></TR>
+
+<TR>
+<TD>Fax Number:</TD>
+<TD>
+<!-- DS_ATTRIBUTE "attr=facsimileTelephoneNumber" "syntax=tel" "cols=>20" -->
+</TD></TR>
+
+<TR>
+<TD>Title:</TD>
+<TD>
+<!-- DS_ATTRIBUTE "attr=title" "cols=>20" -->
+</TD></TR>
+
+<TR>
+<TD COLSPAN=2>
+<CENTER>
+<!-- DS_SAVEBUTTON "label= OK " -->
+</CENTER>
+
+<!-- IF "AttributeHasValues" "modifyTimestamp" -->
+<TR>
+<TD COLSPAN=2>
+<FONT SIZE="-1">
+Your directory entry was last modified
+<!-- DS_ATTRIBUTE "attr=modifyTimestamp" "syntax=time" "options=readonly" -->
+ by
+<!-- DS_ATTRIBUTE "attr=modifiersName" "syntax=dn" "defaultvalue=N/A" "options=readonly,nolink" -->
+</TD></TR>
+<!-- ENDIF // AttributeHasValues -->
+
+</TABLE>
+
+<!-- DS_END_ENTRYFORM -->
+<!-- DS_ENTRYEND -->
+
+<!-- ENDHTML -->
diff --git a/ldap/clients/dsgw/userhtml/index.html b/ldap/clients/dsgw/userhtml/index.html
new file mode 100644
index 00000000..06b26dae
--- /dev/null
+++ b/ldap/clients/dsgw/userhtml/index.html
@@ -0,0 +1,29 @@
+<!--
+ PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ license terms. Copyright © 2001 Sun Microsystems, Inc.
+ Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ All rights reserved.
+ -->
+<HEAD>
+<TITLE>Netscape User Environment</TITLE>
+</HEAD>
+<HTML>
+<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#FF0000" VLINK="#8000FF"
+ ALINK="#FF0000">
+<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=10 WIDTH="100%" BGCOLOR="#F1F1F1" >
+<TR>
+<TD><FONT SIZE=+2>Welcome!</FONT>
+<P><B><FONT SIZE=+1>This page enables you to change some information about
+yourself and your accounts on this system.</FONT></B></P>
+
+<P><B><FONT SIZE=+1>Your options are listed on the left.</FONT></B></P>
+</TD>
+</TR>
+</TABLE>
+
+<P><BR>
+<BR>
+</P>
+
+</BODY>
+</HTML>
diff --git a/ldap/clients/dsgw/userhtml/index.lst b/ldap/clients/dsgw/userhtml/index.lst
new file mode 100644
index 00000000..83156146
--- /dev/null
+++ b/ldap/clients/dsgw/userhtml/index.lst
@@ -0,0 +1,29 @@
+;-------------------------------------------------------------------------
+; PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+; license terms. Copyright © 2001 Sun Microsystems, Inc.
+; Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+; All rights reserved.
+;-------------------------------------------------------------------------
+; Netscape admin index page master list
+;
+; Lines beginning with a ';' are comments
+; Lines beginning with '--' are dividers:
+; '--Category:[ID,NAME]' is the title of the category of options,
+; with short identifier ID and text NAME
+; '--TabIcon:[ICON]' is the name of the icon that goes on top
+; (assumes a suffix of '_on.gif' for on icon,
+; '_off.gif' for off)
+; (ex: for "users", would have URL "users" which points
+; to "users_on.gif" and "users_off.gif")
+; '--Icon:[URL]' is the icon to associate with those options
+; '--Option:[URL,TXT]' is the URL that the option should point to,
+; and the text that should be used to describe
+; it
+;
+; NOTE: Do NOT let a line have unterminated quotes, double slash
+; characters, pound signs, or slash star sequences. This file
+; is sent through the C preprocessor and that can screw it up.
+
+--Category:general,General
+--Option:edit/?userpasswd,Password
+--Option:edit/?userpinfo,Personal Information
diff --git a/ldap/clients/dsgw/utf8compare.c b/ldap/clients/dsgw/utf8compare.c
new file mode 100644
index 00000000..59c85253
--- /dev/null
+++ b/ldap/clients/dsgw/utf8compare.c
@@ -0,0 +1,2236 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include "ldap.h"
+#include "dsgw.h"
+
+typedef struct sUpperLowerTbl {
+ char *upper, *lower;
+ int tsz; /* target size */
+} UpperLowerTbl_t;
+
+/*
+ * dsgw_has8thBit: check the input string
+ * return 1 if the string contains 8-bit character
+ * return 0 otherwise
+ */
+int
+dsgw_has8thBit(unsigned char *s)
+{
+ unsigned char *p, *tail;
+ tail = s + strlen((char *)s);
+ for (p = s; p < tail; p++) {
+ if (0x80 & *p) {
+ return 1;
+ }
+ }
+ return 0;
+}
+
+/*
+ * UpperToLower Tables: sorted by upper characters
+ */
+UpperLowerTbl_t Upper2LowerTbl20[] = {
+ /* upper, lower */
+ {"\303\200", "\303\240", 2},
+ {"\303\201", "\303\241", 2},
+ {"\303\202", "\303\242", 2},
+ {"\303\203", "\303\243", 2},
+ {"\303\204", "\303\244", 2},
+ {"\303\205", "\303\245", 2},
+ {"\303\206", "\303\246", 2},
+ {"\303\207", "\303\247", 2},
+ {"\303\210", "\303\250", 2},
+ {"\303\211", "\303\251", 2},
+ {"\303\212", "\303\252", 2},
+ {"\303\213", "\303\253", 2},
+ {"\303\214", "\303\254", 2},
+ {"\303\215", "\303\255", 2},
+ {"\303\216", "\303\256", 2},
+ {"\303\217", "\303\257", 2},
+ {"\303\220", "\303\260", 2},
+ {"\303\221", "\303\261", 2},
+ {"\303\222", "\303\262", 2},
+ {"\303\223", "\303\263", 2},
+ {"\303\224", "\303\264", 2},
+ {"\303\225", "\303\265", 2},
+ {"\303\226", "\303\266", 2},
+ {"\303\230", "\303\270", 2},
+ {"\303\231", "\303\271", 2},
+ {"\303\232", "\303\272", 2},
+ {"\303\233", "\303\273", 2},
+ {"\303\234", "\303\274", 2},
+ {"\303\235", "\303\275", 2},
+ {"\303\236", "\303\276", 2},
+ {NULL, NULL, 0}
+};
+
+UpperLowerTbl_t Upper2LowerTbl21[] = {
+ {"\304\200", "\304\201", 2},
+ {"\304\202", "\304\203", 2},
+ {"\304\204", "\304\205", 2},
+ {"\304\206", "\304\207", 2},
+ {"\304\210", "\304\211", 2},
+ {"\304\212", "\304\213", 2},
+ {"\304\214", "\304\215", 2},
+ {"\304\216", "\304\217", 2},
+ {"\304\220", "\304\221", 2},
+ {"\304\222", "\304\223", 2},
+ {"\304\224", "\304\225", 2},
+ {"\304\226", "\304\227", 2},
+ {"\304\230", "\304\231", 2},
+ {"\304\232", "\304\233", 2},
+ {"\304\234", "\304\235", 2},
+ {"\304\236", "\304\237", 2},
+ {"\304\240", "\304\241", 2},
+ {"\304\242", "\304\243", 2},
+ {"\304\244", "\304\245", 2},
+ {"\304\246", "\304\247", 2},
+ {"\304\250", "\304\251", 2},
+ {"\304\252", "\304\253", 2},
+ {"\304\254", "\304\255", 2},
+ {"\304\256", "\304\257", 2},
+ {"\304\260", "\151", 1},
+ {"\304\262", "\304\263", 2},
+ {"\304\264", "\304\265", 2},
+ {"\304\266", "\304\267", 2},
+ {"\304\271", "\304\272", 2},
+ {"\304\273", "\304\274", 2},
+ {"\304\275", "\304\276", 2},
+ {"\304\277", "\305\200", 2},
+ {NULL, NULL, 0}
+};
+
+UpperLowerTbl_t Upper2LowerTbl22[] = {
+ {"\305\201", "\305\202", 2},
+ {"\305\203", "\305\204", 2},
+ {"\305\205", "\305\206", 2},
+ {"\305\207", "\305\210", 2},
+ {"\305\212", "\305\213", 2},
+ {"\305\214", "\305\215", 2},
+ {"\305\216", "\305\217", 2},
+ {"\305\220", "\305\221", 2},
+ {"\305\222", "\305\223", 2},
+ {"\305\224", "\305\225", 2},
+ {"\305\226", "\305\227", 2},
+ {"\305\230", "\305\231", 2},
+ {"\305\232", "\305\233", 2},
+ {"\305\234", "\305\235", 2},
+ {"\305\236", "\305\237", 2},
+ {"\305\240", "\305\241", 2},
+ {"\305\242", "\305\243", 2},
+ {"\305\244", "\305\245", 2},
+ {"\305\246", "\305\247", 2},
+ {"\305\250", "\305\251", 2},
+ {"\305\252", "\305\253", 2},
+ {"\305\254", "\305\255", 2},
+ {"\305\256", "\305\257", 2},
+ {"\305\260", "\305\261", 2},
+ {"\305\262", "\305\263", 2},
+ {"\305\264", "\305\265", 2},
+ {"\305\266", "\305\267", 2},
+ {"\305\270", "\303\277", 2},
+ {"\305\271", "\305\272", 2},
+ {"\305\273", "\305\274", 2},
+ {"\305\275", "\305\276", 2},
+ {NULL, NULL, 0}
+};
+
+UpperLowerTbl_t Upper2LowerTbl23[] = {
+ {"\306\201", "\311\223", 2},
+ {"\306\202", "\306\203", 2},
+ {"\306\204", "\306\205", 2},
+ {"\306\206", "\311\224", 2},
+ {"\306\207", "\306\210", 2},
+ {"\306\211", "\311\226", 2},
+ {"\306\212", "\311\227", 2},
+ {"\306\213", "\306\214", 2},
+ {"\306\216", "\311\230", 2},
+ {"\306\217", "\311\231", 2},
+ {"\306\220", "\311\233", 2},
+ {"\306\221", "\306\222", 2},
+ {"\306\223", "\311\240", 2},
+ {"\306\224", "\311\243", 2},
+ {"\306\226", "\311\251", 2},
+ {"\306\227", "\311\250", 2},
+ {"\306\230", "\306\231", 2},
+ {"\306\234", "\311\257", 2},
+ {"\306\235", "\311\262", 2},
+ {"\306\237", "\306\237", 2},
+ {"\306\240", "\306\241", 2},
+ {"\306\242", "\306\243", 2},
+ {"\306\244", "\306\245", 2},
+ {"\306\246", "\306\246", 2},
+ {"\306\247", "\306\250", 2},
+ {"\306\251", "\312\203", 2},
+ {"\306\254", "\306\255", 2},
+ {"\306\256", "\312\210", 2},
+ {"\306\257", "\306\260", 2},
+ {"\306\261", "\312\212", 2},
+ {"\306\262", "\312\213", 2},
+ {"\306\263", "\306\264", 2},
+ {"\306\265", "\306\266", 2},
+ {"\306\267", "\312\222", 2},
+ {"\306\270", "\306\271", 2},
+ {"\306\274", "\306\275", 2},
+ {NULL, NULL, 0}
+};
+
+UpperLowerTbl_t Upper2LowerTbl24[] = {
+ {"\307\204", "\307\205", 2},
+ {"\307\205", "\307\204", 2},
+ {"\307\207", "\307\210", 2},
+ {"\307\210", "\307\207", 2},
+ {"\307\212", "\307\213", 2},
+ {"\307\213", "\307\212", 2},
+ {"\307\215", "\307\216", 2},
+ {"\307\217", "\307\220", 2},
+ {"\307\221", "\307\222", 2},
+ {"\307\223", "\307\224", 2},
+ {"\307\225", "\307\226", 2},
+ {"\307\227", "\307\230", 2},
+ {"\307\231", "\307\232", 2},
+ {"\307\233", "\307\234", 2},
+ {"\307\236", "\307\237", 2},
+ {"\307\240", "\307\241", 2},
+ {"\307\242", "\307\243", 2},
+ {"\307\244", "\307\245", 2},
+ {"\307\246", "\307\247", 2},
+ {"\307\250", "\307\251", 2},
+ {"\307\252", "\307\253", 2},
+ {"\307\254", "\307\255", 2},
+ {"\307\256", "\307\257", 2},
+ {"\307\261", "\307\262", 2},
+ {"\307\262", "\307\261", 2},
+ {"\307\264", "\307\265", 2},
+ {"\307\272", "\307\273", 2},
+ {"\307\274", "\307\275", 2},
+ {"\307\276", "\307\277", 2},
+ {NULL, NULL, 0}
+};
+
+UpperLowerTbl_t Upper2LowerTbl25[] = {
+ {"\310\200", "\310\201", 2},
+ {"\310\202", "\310\203", 2},
+ {"\310\204", "\310\205", 2},
+ {"\310\206", "\310\207", 2},
+ {"\310\210", "\310\211", 2},
+ {"\310\212", "\310\213", 2},
+ {"\310\214", "\310\215", 2},
+ {"\310\216", "\310\217", 2},
+ {"\310\220", "\310\221", 2},
+ {"\310\222", "\310\223", 2},
+ {"\310\224", "\310\225", 2},
+ {"\310\226", "\310\227", 2},
+ {NULL, NULL, 0}
+};
+
+UpperLowerTbl_t Upper2LowerTbl26[] = {
+ {"\316\206", "\316\254", 2},
+ {"\316\210", "\316\255", 2},
+ {"\316\211", "\316\256", 2},
+ {"\316\212", "\316\257", 2},
+ {"\316\214", "\317\214", 2},
+ {"\316\216", "\317\215", 2},
+ {"\316\217", "\317\216", 2},
+ {"\316\221", "\316\261", 2},
+ {"\316\222", "\316\262", 2},
+ {"\316\223", "\316\263", 2},
+ {"\316\224", "\316\264", 2},
+ {"\316\225", "\316\265", 2},
+ {"\316\226", "\316\266", 2},
+ {"\316\227", "\316\267", 2},
+ {"\316\230", "\316\270", 2},
+ {"\316\231", "\316\271", 2},
+ {"\316\232", "\316\272", 2},
+ {"\316\233", "\316\273", 2},
+ {"\316\234", "\316\274", 2},
+ {"\316\235", "\316\275", 2},
+ {"\316\236", "\316\276", 2},
+ {"\316\237", "\316\277", 2},
+ {"\316\240", "\317\200", 2},
+ {"\316\241", "\317\201", 2},
+ {"\316\243", "\317\203", 2},
+ {"\316\244", "\317\204", 2},
+ {"\316\245", "\317\205", 2},
+ {"\316\246", "\317\206", 2},
+ {"\316\247", "\317\207", 2},
+ {"\316\250", "\317\210", 2},
+ {"\316\251", "\317\211", 2},
+ {"\316\252", "\317\212", 2},
+ {"\316\253", "\317\213", 2},
+ {NULL, NULL, 0}
+};
+
+UpperLowerTbl_t Upper2LowerTbl27[] = {
+ {"\317\222", "\317\222", 2},
+ {"\317\223", "\317\223", 2},
+ {"\317\224", "\317\224", 2},
+ {"\317\232", "\317\232", 2},
+ {"\317\234", "\317\234", 2},
+ {"\317\236", "\317\236", 2},
+ {"\317\240", "\317\240", 2},
+ {"\317\242", "\317\243", 2},
+ {"\317\244", "\317\245", 2},
+ {"\317\246", "\317\247", 2},
+ {"\317\250", "\317\251", 2},
+ {"\317\252", "\317\253", 2},
+ {"\317\254", "\317\255", 2},
+ {"\317\256", "\317\257", 2},
+ {NULL, NULL, 0}
+};
+
+UpperLowerTbl_t Upper2LowerTbl28[] = {
+ {"\320\201", "\321\221", 2},
+ {"\320\202", "\321\222", 2},
+ {"\320\203", "\321\223", 2},
+ {"\320\204", "\321\224", 2},
+ {"\320\205", "\321\225", 2},
+ {"\320\206", "\321\226", 2},
+ {"\320\207", "\321\227", 2},
+ {"\320\210", "\321\230", 2},
+ {"\320\211", "\321\231", 2},
+ {"\320\212", "\321\232", 2},
+ {"\320\213", "\321\233", 2},
+ {"\320\214", "\321\234", 2},
+ {"\320\216", "\321\236", 2},
+ {"\320\217", "\321\237", 2},
+ {"\320\220", "\320\260", 2},
+ {"\320\221", "\320\261", 2},
+ {"\320\222", "\320\262", 2},
+ {"\320\223", "\320\263", 2},
+ {"\320\224", "\320\264", 2},
+ {"\320\225", "\320\265", 2},
+ {"\320\226", "\320\266", 2},
+ {"\320\227", "\320\267", 2},
+ {"\320\230", "\320\270", 2},
+ {"\320\231", "\320\271", 2},
+ {"\320\232", "\320\272", 2},
+ {"\320\233", "\320\273", 2},
+ {"\320\234", "\320\274", 2},
+ {"\320\235", "\320\275", 2},
+ {"\320\236", "\320\276", 2},
+ {"\320\237", "\320\277", 2},
+ {"\320\240", "\321\200", 2},
+ {"\320\241", "\321\201", 2},
+ {"\320\242", "\321\202", 2},
+ {"\320\243", "\321\203", 2},
+ {"\320\244", "\321\204", 2},
+ {"\320\245", "\321\205", 2},
+ {"\320\246", "\321\206", 2},
+ {"\320\247", "\321\207", 2},
+ {"\320\250", "\321\210", 2},
+ {"\320\251", "\321\211", 2},
+ {"\320\252", "\321\212", 2},
+ {"\320\253", "\321\213", 2},
+ {"\320\254", "\321\214", 2},
+ {"\320\255", "\321\215", 2},
+ {"\320\256", "\321\216", 2},
+ {"\320\257", "\321\217", 2},
+ {NULL, NULL, 0}
+};
+
+UpperLowerTbl_t Upper2LowerTbl29[] = {
+ {"\321\240", "\321\241", 2},
+ {"\321\242", "\321\243", 2},
+ {"\321\244", "\321\245", 2},
+ {"\321\246", "\321\247", 2},
+ {"\321\250", "\321\251", 2},
+ {"\321\252", "\321\253", 2},
+ {"\321\254", "\321\255", 2},
+ {"\321\256", "\321\257", 2},
+ {"\321\260", "\321\261", 2},
+ {"\321\262", "\321\263", 2},
+ {"\321\264", "\321\265", 2},
+ {"\321\266", "\321\267", 2},
+ {"\321\270", "\321\271", 2},
+ {"\321\272", "\321\273", 2},
+ {"\321\274", "\321\275", 2},
+ {"\321\276", "\321\277", 2},
+ {NULL, NULL, 0}
+};
+
+UpperLowerTbl_t Upper2LowerTbl2a[] = {
+ {"\322\200", "\322\201", 2},
+ {"\322\220", "\322\221", 2},
+ {"\322\222", "\322\223", 2},
+ {"\322\224", "\322\225", 2},
+ {"\322\226", "\322\227", 2},
+ {"\322\230", "\322\231", 2},
+ {"\322\232", "\322\233", 2},
+ {"\322\234", "\322\235", 2},
+ {"\322\236", "\322\237", 2},
+ {"\322\240", "\322\241", 2},
+ {"\322\242", "\322\243", 2},
+ {"\322\244", "\322\245", 2},
+ {"\322\246", "\322\247", 2},
+ {"\322\250", "\322\251", 2},
+ {"\322\252", "\322\253", 2},
+ {"\322\254", "\322\255", 2},
+ {"\322\256", "\322\257", 2},
+ {"\322\260", "\322\261", 2},
+ {"\322\262", "\322\263", 2},
+ {"\322\264", "\322\265", 2},
+ {"\322\266", "\322\267", 2},
+ {"\322\270", "\322\271", 2},
+ {"\322\272", "\322\273", 2},
+ {"\322\274", "\322\275", 2},
+ {"\322\276", "\322\277", 2},
+ {NULL, NULL, 0}
+};
+
+UpperLowerTbl_t Upper2LowerTbl2b[] = {
+ {"\323\201", "\323\202", 2},
+ {"\323\203", "\323\204", 2},
+ {"\323\207", "\323\210", 2},
+ {"\323\213", "\323\214", 2},
+ {"\323\220", "\323\221", 2},
+ {"\323\222", "\323\223", 2},
+ {"\323\224", "\323\225", 2},
+ {"\323\226", "\323\227", 2},
+ {"\323\230", "\323\231", 2},
+ {"\323\232", "\323\233", 2},
+ {"\323\234", "\323\235", 2},
+ {"\323\236", "\323\237", 2},
+ {"\323\240", "\323\241", 2},
+ {"\323\242", "\323\243", 2},
+ {"\323\244", "\323\245", 2},
+ {"\323\246", "\323\247", 2},
+ {"\323\250", "\323\251", 2},
+ {"\323\252", "\323\253", 2},
+ {"\323\256", "\323\257", 2},
+ {"\323\260", "\323\261", 2},
+ {"\323\262", "\323\263", 2},
+ {"\323\264", "\323\265", 2},
+ {"\323\270", "\323\271", 2},
+ {NULL, NULL, 0}
+};
+
+UpperLowerTbl_t Upper2LowerTbl2c[] = {
+ {"\324\261", "\325\241", 2},
+ {"\324\262", "\325\242", 2},
+ {"\324\263", "\325\243", 2},
+ {"\324\264", "\325\244", 2},
+ {"\324\265", "\325\245", 2},
+ {"\324\266", "\325\246", 2},
+ {"\324\267", "\325\247", 2},
+ {"\324\270", "\325\250", 2},
+ {"\324\271", "\325\251", 2},
+ {"\324\272", "\325\252", 2},
+ {"\324\273", "\325\253", 2},
+ {"\324\274", "\325\254", 2},
+ {"\324\275", "\325\255", 2},
+ {"\324\276", "\325\256", 2},
+ {"\324\277", "\325\257", 2},
+ {NULL, NULL, 0}
+};
+
+UpperLowerTbl_t Upper2LowerTbl2d[] = {
+ {"\325\200", "\325\260", 2},
+ {"\325\201", "\325\261", 2},
+ {"\325\202", "\325\262", 2},
+ {"\325\203", "\325\263", 2},
+ {"\325\204", "\325\264", 2},
+ {"\325\205", "\325\265", 2},
+ {"\325\206", "\325\266", 2},
+ {"\325\207", "\325\267", 2},
+ {"\325\210", "\325\270", 2},
+ {"\325\211", "\325\271", 2},
+ {"\325\212", "\325\272", 2},
+ {"\325\213", "\325\273", 2},
+ {"\325\214", "\325\274", 2},
+ {"\325\215", "\325\275", 2},
+ {"\325\216", "\325\276", 2},
+ {"\325\217", "\325\277", 2},
+ {"\325\220", "\326\200", 2},
+ {"\325\221", "\326\201", 2},
+ {"\325\222", "\326\202", 2},
+ {"\325\223", "\326\203", 2},
+ {"\325\224", "\326\204", 2},
+ {"\325\225", "\326\205", 2},
+ {"\325\226", "\326\206", 2},
+ {NULL, NULL, 0}
+ /* upper, lower */
+};
+
+UpperLowerTbl_t Upper2LowerTbl30[] = {
+ /* upper, lower */
+ {"\341\202\240", "\341\203\220", 3},
+ {"\341\202\241", "\341\203\221", 3},
+ {"\341\202\242", "\341\203\222", 3},
+ {"\341\202\243", "\341\203\223", 3},
+ {"\341\202\244", "\341\203\224", 3},
+ {"\341\202\245", "\341\203\225", 3},
+ {"\341\202\246", "\341\203\226", 3},
+ {"\341\202\247", "\341\203\227", 3},
+ {"\341\202\250", "\341\203\230", 3},
+ {"\341\202\251", "\341\203\231", 3},
+ {"\341\202\252", "\341\203\232", 3},
+ {"\341\202\253", "\341\203\233", 3},
+ {"\341\202\254", "\341\203\234", 3},
+ {"\341\202\255", "\341\203\235", 3},
+ {"\341\202\256", "\341\203\236", 3},
+ {"\341\202\257", "\341\203\237", 3},
+ {"\341\202\260", "\341\203\240", 3},
+ {"\341\202\261", "\341\203\241", 3},
+ {"\341\202\262", "\341\203\242", 3},
+ {"\341\202\263", "\341\203\243", 3},
+ {"\341\202\264", "\341\203\244", 3},
+ {"\341\202\265", "\341\203\245", 3},
+ {"\341\202\266", "\341\203\246", 3},
+ {"\341\202\267", "\341\203\247", 3},
+ {"\341\202\270", "\341\203\250", 3},
+ {"\341\202\271", "\341\203\251", 3},
+ {"\341\202\272", "\341\203\252", 3},
+ {"\341\202\273", "\341\203\253", 3},
+ {"\341\202\274", "\341\203\254", 3},
+ {"\341\202\275", "\341\203\255", 3},
+ {"\341\202\276", "\341\203\256", 3},
+ {"\341\202\277", "\341\203\257", 3},
+ {"\341\203\200", "\341\203\260", 3},
+ {"\341\203\201", "\341\203\261", 3},
+ {"\341\203\202", "\341\203\262", 3},
+ {"\341\203\203", "\341\203\263", 3},
+ {"\341\203\204", "\341\203\264", 3},
+ {"\341\203\205", "\341\203\265", 3},
+ {"\341\270\200", "\341\270\201", 3},
+ {"\341\270\202", "\341\270\203", 3},
+ {"\341\270\204", "\341\270\205", 3},
+ {"\341\270\206", "\341\270\207", 3},
+ {"\341\270\210", "\341\270\211", 3},
+ {"\341\270\212", "\341\270\213", 3},
+ {"\341\270\214", "\341\270\215", 3},
+ {"\341\270\216", "\341\270\217", 3},
+ {"\341\270\220", "\341\270\221", 3},
+ {"\341\270\222", "\341\270\223", 3},
+ {"\341\270\224", "\341\270\225", 3},
+ {"\341\270\226", "\341\270\227", 3},
+ {"\341\270\230", "\341\270\231", 3},
+ {"\341\270\232", "\341\270\233", 3},
+ {"\341\270\234", "\341\270\235", 3},
+ {"\341\270\236", "\341\270\237", 3},
+ {"\341\270\240", "\341\270\241", 3},
+ {"\341\270\242", "\341\270\243", 3},
+ {"\341\270\244", "\341\270\245", 3},
+ {"\341\270\246", "\341\270\247", 3},
+ {"\341\270\250", "\341\270\251", 3},
+ {"\341\270\252", "\341\270\253", 3},
+ {"\341\270\254", "\341\270\255", 3},
+ {"\341\270\256", "\341\270\257", 3},
+ {"\341\270\260", "\341\270\261", 3},
+ {"\341\270\262", "\341\270\263", 3},
+ {"\341\270\264", "\341\270\265", 3},
+ {"\341\270\266", "\341\270\267", 3},
+ {"\341\270\270", "\341\270\271", 3},
+ {"\341\270\272", "\341\270\273", 3},
+ {"\341\270\274", "\341\270\275", 3},
+ {"\341\270\276", "\341\270\277", 3},
+ {"\341\271\200", "\341\271\201", 3},
+ {"\341\271\202", "\341\271\203", 3},
+ {"\341\271\204", "\341\271\205", 3},
+ {"\341\271\206", "\341\271\207", 3},
+ {"\341\271\210", "\341\271\211", 3},
+ {"\341\271\212", "\341\271\213", 3},
+ {"\341\271\214", "\341\271\215", 3},
+ {"\341\271\216", "\341\271\217", 3},
+ {"\341\271\220", "\341\271\221", 3},
+ {"\341\271\222", "\341\271\223", 3},
+ {"\341\271\224", "\341\271\225", 3},
+ {"\341\271\226", "\341\271\227", 3},
+ {"\341\271\230", "\341\271\231", 3},
+ {"\341\271\232", "\341\271\233", 3},
+ {"\341\271\234", "\341\271\235", 3},
+ {"\341\271\236", "\341\271\237", 3},
+ {"\341\271\240", "\341\271\241", 3},
+ {"\341\271\242", "\341\271\243", 3},
+ {"\341\271\244", "\341\271\245", 3},
+ {"\341\271\246", "\341\271\247", 3},
+ {"\341\271\250", "\341\271\251", 3},
+ {"\341\271\252", "\341\271\253", 3},
+ {"\341\271\254", "\341\271\255", 3},
+ {"\341\271\256", "\341\271\257", 3},
+ {"\341\271\260", "\341\271\261", 3},
+ {"\341\271\262", "\341\271\263", 3},
+ {"\341\271\264", "\341\271\265", 3},
+ {"\341\271\266", "\341\271\267", 3},
+ {"\341\271\270", "\341\271\271", 3},
+ {"\341\271\272", "\341\271\273", 3},
+ {"\341\271\274", "\341\271\275", 3},
+ {"\341\271\276", "\341\271\277", 3},
+ {"\341\272\200", "\341\272\201", 3},
+ {"\341\272\202", "\341\272\203", 3},
+ {"\341\272\204", "\341\272\205", 3},
+ {"\341\272\206", "\341\272\207", 3},
+ {"\341\272\210", "\341\272\211", 3},
+ {"\341\272\212", "\341\272\213", 3},
+ {"\341\272\214", "\341\272\215", 3},
+ {"\341\272\216", "\341\272\217", 3},
+ {"\341\272\220", "\341\272\221", 3},
+ {"\341\272\222", "\341\272\223", 3},
+ {"\341\272\224", "\341\272\225", 3},
+ {"\341\272\240", "\341\272\241", 3},
+ {"\341\272\242", "\341\272\243", 3},
+ {"\341\272\244", "\341\272\245", 3},
+ {"\341\272\246", "\341\272\247", 3},
+ {"\341\272\250", "\341\272\251", 3},
+ {"\341\272\252", "\341\272\253", 3},
+ {"\341\272\254", "\341\272\255", 3},
+ {"\341\272\256", "\341\272\257", 3},
+ {"\341\272\260", "\341\272\261", 3},
+ {"\341\272\262", "\341\272\263", 3},
+ {"\341\272\264", "\341\272\265", 3},
+ {"\341\272\266", "\341\272\267", 3},
+ {"\341\272\270", "\341\272\271", 3},
+ {"\341\272\272", "\341\272\273", 3},
+ {"\341\272\274", "\341\272\275", 3},
+ {"\341\272\276", "\341\272\277", 3},
+ {"\341\273\200", "\341\273\201", 3},
+ {"\341\273\202", "\341\273\203", 3},
+ {"\341\273\204", "\341\273\205", 3},
+ {"\341\273\206", "\341\273\207", 3},
+ {"\341\273\210", "\341\273\211", 3},
+ {"\341\273\212", "\341\273\213", 3},
+ {"\341\273\214", "\341\273\215", 3},
+ {"\341\273\216", "\341\273\217", 3},
+ {"\341\273\220", "\341\273\221", 3},
+ {"\341\273\222", "\341\273\223", 3},
+ {"\341\273\224", "\341\273\225", 3},
+ {"\341\273\226", "\341\273\227", 3},
+ {"\341\273\230", "\341\273\231", 3},
+ {"\341\273\232", "\341\273\233", 3},
+ {"\341\273\234", "\341\273\235", 3},
+ {"\341\273\236", "\341\273\237", 3},
+ {"\341\273\240", "\341\273\241", 3},
+ {"\341\273\242", "\341\273\243", 3},
+ {"\341\273\244", "\341\273\245", 3},
+ {"\341\273\246", "\341\273\247", 3},
+ {"\341\273\250", "\341\273\251", 3},
+ {"\341\273\252", "\341\273\253", 3},
+ {"\341\273\254", "\341\273\255", 3},
+ {"\341\273\256", "\341\273\257", 3},
+ {"\341\273\260", "\341\273\261", 3},
+ {"\341\273\262", "\341\273\263", 3},
+ {"\341\273\264", "\341\273\265", 3},
+ {"\341\273\266", "\341\273\267", 3},
+ {"\341\273\270", "\341\273\271", 3},
+ {"\341\274\210", "\341\274\200", 3},
+ {"\341\274\211", "\341\274\201", 3},
+ {"\341\274\212", "\341\274\202", 3},
+ {"\341\274\213", "\341\274\203", 3},
+ {"\341\274\214", "\341\274\204", 3},
+ {"\341\274\215", "\341\274\205", 3},
+ {"\341\274\216", "\341\274\206", 3},
+ {"\341\274\217", "\341\274\207", 3},
+ {"\341\274\230", "\341\274\220", 3},
+ {"\341\274\231", "\341\274\221", 3},
+ {"\341\274\232", "\341\274\222", 3},
+ {"\341\274\233", "\341\274\223", 3},
+ {"\341\274\234", "\341\274\224", 3},
+ {"\341\274\235", "\341\274\225", 3},
+ {"\341\274\250", "\341\274\240", 3},
+ {"\341\274\251", "\341\274\241", 3},
+ {"\341\274\252", "\341\274\242", 3},
+ {"\341\274\253", "\341\274\243", 3},
+ {"\341\274\254", "\341\274\244", 3},
+ {"\341\274\255", "\341\274\245", 3},
+ {"\341\274\256", "\341\274\246", 3},
+ {"\341\274\257", "\341\274\247", 3},
+ {"\341\274\270", "\341\274\260", 3},
+ {"\341\274\271", "\341\274\261", 3},
+ {"\341\274\272", "\341\274\262", 3},
+ {"\341\274\273", "\341\274\263", 3},
+ {"\341\274\274", "\341\274\264", 3},
+ {"\341\274\275", "\341\274\265", 3},
+ {"\341\274\276", "\341\274\266", 3},
+ {"\341\274\277", "\341\274\267", 3},
+ {"\341\275\210", "\341\275\200", 3},
+ {"\341\275\211", "\341\275\201", 3},
+ {"\341\275\212", "\341\275\202", 3},
+ {"\341\275\213", "\341\275\203", 3},
+ {"\341\275\214", "\341\275\204", 3},
+ {"\341\275\215", "\341\275\205", 3},
+ {"\341\275\231", "\341\275\221", 3},
+ {"\341\275\233", "\341\275\223", 3},
+ {"\341\275\235", "\341\275\225", 3},
+ {"\341\275\237", "\341\275\227", 3},
+ {"\341\275\250", "\341\275\240", 3},
+ {"\341\275\251", "\341\275\241", 3},
+ {"\341\275\252", "\341\275\242", 3},
+ {"\341\275\253", "\341\275\243", 3},
+ {"\341\275\254", "\341\275\244", 3},
+ {"\341\275\255", "\341\275\245", 3},
+ {"\341\275\256", "\341\275\246", 3},
+ {"\341\275\257", "\341\275\247", 3},
+ {"\341\276\210", "\341\276\200", 3},
+ {"\341\276\211", "\341\276\201", 3},
+ {"\341\276\212", "\341\276\202", 3},
+ {"\341\276\213", "\341\276\203", 3},
+ {"\341\276\214", "\341\276\204", 3},
+ {"\341\276\215", "\341\276\205", 3},
+ {"\341\276\216", "\341\276\206", 3},
+ {"\341\276\217", "\341\276\207", 3},
+ {"\341\276\230", "\341\276\220", 3},
+ {"\341\276\231", "\341\276\221", 3},
+ {"\341\276\232", "\341\276\222", 3},
+ {"\341\276\233", "\341\276\223", 3},
+ {"\341\276\234", "\341\276\224", 3},
+ {"\341\276\235", "\341\276\225", 3},
+ {"\341\276\236", "\341\276\226", 3},
+ {"\341\276\237", "\341\276\227", 3},
+ {"\341\276\250", "\341\276\240", 3},
+ {"\341\276\251", "\341\276\241", 3},
+ {"\341\276\252", "\341\276\242", 3},
+ {"\341\276\253", "\341\276\243", 3},
+ {"\341\276\254", "\341\276\244", 3},
+ {"\341\276\255", "\341\276\245", 3},
+ {"\341\276\256", "\341\276\246", 3},
+ {"\341\276\257", "\341\276\247", 3},
+ {"\341\276\270", "\341\276\260", 3},
+ {"\341\276\271", "\341\276\261", 3},
+ {"\341\276\272", "\341\275\260", 3},
+ {"\341\276\273", "\341\275\261", 3},
+ {"\341\276\274", "\341\276\263", 3},
+ {"\341\276\276", "\341\276\276", 3},
+ {"\341\277\210", "\341\275\262", 3},
+ {"\341\277\211", "\341\275\263", 3},
+ {"\341\277\212", "\341\275\264", 3},
+ {"\341\277\213", "\341\275\265", 3},
+ {"\341\277\214", "\341\277\203", 3},
+ {"\341\277\230", "\341\277\220", 3},
+ {"\341\277\231", "\341\277\221", 3},
+ {"\341\277\232", "\341\275\266", 3},
+ {"\341\277\233", "\341\275\267", 3},
+ {"\341\277\250", "\341\277\240", 3},
+ {"\341\277\251", "\341\277\241", 3},
+ {"\341\277\252", "\341\275\272", 3},
+ {"\341\277\253", "\341\275\273", 3},
+ {"\341\277\254", "\341\277\245", 3},
+ {"\341\277\270", "\341\275\270", 3},
+ {"\341\277\271", "\341\275\271", 3},
+ {"\341\277\272", "\341\275\274", 3},
+ {"\341\277\273", "\341\275\275", 3},
+ {"\341\277\274", "\341\277\263", 3},
+ {NULL, NULL, 0}
+};
+
+UpperLowerTbl_t Upper2LowerTbl31[] = {
+ {"\357\274\241", "\357\275\201", 3},
+ {"\357\274\242", "\357\275\202", 3},
+ {"\357\274\243", "\357\275\203", 3},
+ {"\357\274\244", "\357\275\204", 3},
+ {"\357\274\245", "\357\275\205", 3},
+ {"\357\274\246", "\357\275\206", 3},
+ {"\357\274\247", "\357\275\207", 3},
+ {"\357\274\250", "\357\275\210", 3},
+ {"\357\274\251", "\357\275\211", 3},
+ {"\357\274\252", "\357\275\212", 3},
+ {"\357\274\253", "\357\275\213", 3},
+ {"\357\274\254", "\357\275\214", 3},
+ {"\357\274\255", "\357\275\215", 3},
+ {"\357\274\256", "\357\275\216", 3},
+ {"\357\274\257", "\357\275\217", 3},
+ {"\357\274\260", "\357\275\220", 3},
+ {"\357\274\261", "\357\275\221", 3},
+ {"\357\274\262", "\357\275\222", 3},
+ {"\357\274\263", "\357\275\223", 3},
+ {"\357\274\264", "\357\275\224", 3},
+ {"\357\274\265", "\357\275\225", 3},
+ {"\357\274\266", "\357\275\226", 3},
+ {"\357\274\267", "\357\275\227", 3},
+ {"\357\274\270", "\357\275\230", 3},
+ {"\357\274\271", "\357\275\231", 3},
+ {"\357\274\272", "\357\275\232", 3},
+ {NULL, NULL, 0}
+ /* upper, lower */
+};
+
+UpperLowerTbl_t *Upper2LowerTbl2[] = {
+ Upper2LowerTbl20, /* \303 */
+ Upper2LowerTbl21, /* \304 */
+ Upper2LowerTbl22, /* \305 */
+ Upper2LowerTbl23, /* \306 */
+ Upper2LowerTbl24, /* \307 */
+ Upper2LowerTbl25, /* \310 */
+ NULL, /* \311 */
+ NULL, /* \312 */
+ NULL, /* \313 */
+ NULL, /* \314 */
+ NULL, /* \315 */
+ Upper2LowerTbl26, /* \316 */
+ Upper2LowerTbl27, /* \317 */
+ Upper2LowerTbl28, /* \320 */
+ Upper2LowerTbl29, /* \321 */
+ Upper2LowerTbl2a, /* \322 */
+ Upper2LowerTbl2b, /* \323 */
+ Upper2LowerTbl2c, /* \324 */
+ Upper2LowerTbl2d /* \325 */
+};
+
+UpperLowerTbl_t *Upper2LowerTbl3[] = {
+ Upper2LowerTbl30, /* \341 */
+ NULL, /* \342 */
+ NULL, /* \343 */
+ NULL, /* \344 */
+ NULL, /* \345 */
+ NULL, /* \346 */
+ NULL, /* \347 */
+ NULL, /* \350 */
+ NULL, /* \351 */
+ NULL, /* \352 */
+ NULL, /* \353 */
+ NULL, /* \354 */
+ NULL, /* \355 */
+ NULL, /* \356 */
+ Upper2LowerTbl31 /* \357 */
+};
+
+#define UL2S (unsigned char)'\303'
+#define UL2E (unsigned char)'\325'
+#define UL3S (unsigned char)'\341'
+#define UL3E (unsigned char)'\357'
+
+/*
+ * dsgw_utf8StrToLower: translate upper-case string to lower-case
+ *
+ * input: a null terminated UTF-8 string
+ * output: a null terminated UTF-8 string which characters are
+ * converted to lower-case; characters which are not
+ * upper-case are copied as is. If it's not considered
+ * a UTF-8 string, NULL is returned.
+ *
+ * Notes: This function takes a string (made of multiple UTF-8 characters)
+ * for the input (not one character as in "tolower").
+ * Output string is allocated in this function, which needs to be
+ * released when it's not needed any more.
+ */
+unsigned char *
+dsgw_utf8StrToLower(unsigned char *s)
+{
+ UpperLowerTbl_t *ultp;
+ unsigned char *p, *np, *tail;
+ unsigned char *lp, *lphead;
+ int len, sz;
+
+ if (s == NULL || *s == '\0') {
+ return s;
+ }
+ len = strlen((char *)s);
+ tail = s + len;
+ lphead = lp = (unsigned char *)dsgw_ch_malloc(len + 1);
+ p = s;
+ while ((np = (unsigned char *)ldap_utf8next((char *)p)) <= tail) {
+ switch(sz = np - p) {
+ case 1:
+ sprintf((char *)lp, "%c", tolower(*p));
+ break;
+ case 2:
+ if (*p < UL2S || *p > UL2E) { /* out of range */
+ memcpy(lp, p, sz);
+ break;
+ }
+ for (ultp = Upper2LowerTbl2[*p - UL2S];
+ ultp && ultp->upper && memcmp(p, ultp->upper, sz);
+ ultp++)
+ ;
+ if (!ultp) { /* out of range */
+ memcpy(lp, p, sz);
+ } if (ultp->upper) { /* matched */
+ memcpy(lp, ultp->lower, ultp->tsz);
+ sz = ultp->tsz;
+ } else {
+ memcpy(lp, p, sz);
+ }
+ break;
+ case 3:
+ if (*p != UL3S && *p != UL3E) { /* out of range */
+ memcpy(lp, p, sz);
+ break;
+ }
+ for (ultp = Upper2LowerTbl3[*p - UL3S];
+ ultp && ultp->upper && memcmp(p, ultp->upper, sz);
+ ultp++)
+ ;
+ if (!ultp) { /* out of range */
+ memcpy(lp, p, sz);
+ } if (ultp->upper) { /* matched */
+ memcpy(lp, ultp->lower, sz);
+ } else {
+ memcpy(lp, p, sz);
+ }
+ break;
+ case 4:
+ memcpy(lp, p, sz);
+ break;
+ default: /* not UTF-8 */
+ free(lphead);
+ return NULL;
+ }
+ lp += sz;
+ p = np;
+ if (p == tail) {
+ break;
+ }
+ }
+ *lp = '\0';
+ return lphead;
+}
+
+/*
+ * dsgw_utf8ToLower: translate upper-case character to lower-case
+ *
+ * input: a UTF-8 character (s)
+ * output: a UTF-8 character which is converted to lower-case (d)
+ * length (in bytes) of input character (ssz) and
+ * output character (dsz)
+ *
+ * Notes: This function takes a UTF-8 character (could be multiple bytes)
+ * for the input. Memory for the output character is NOT allocated
+ * in this function, caller should have allocated it (d).
+ * "memmove" is used since (s) and (d) are overlapped.
+ */
+void
+dsgw_utf8ToLower(unsigned char *s, unsigned char *d, int *ssz, int *dsz)
+{
+ UpperLowerTbl_t *ultp;
+ unsigned char *tail;
+
+ if (s == NULL || *s == '\0') {
+ *ssz = *dsz = 0;
+ return;
+ }
+ if (!(*s & 0x80)) { /* ASCII */
+ *dsz = *ssz = 1;
+ *d = tolower(*s);
+ return;
+ }
+ tail = (unsigned char *)ldap_utf8next((char *)s);
+ *dsz = *ssz = tail - s;
+ switch(*ssz) {
+ case 1: /* ASCII */
+ *d = tolower(*s);
+ break;
+ case 2: /* 2 bytes */
+ if (*s < UL2S || *s > UL2E) { /* out of range */
+ memmove(d, s, *ssz);
+ break;
+ }
+ for (ultp = Upper2LowerTbl2[*s - UL2S];
+ ultp && ultp->upper && memcmp(s, ultp->upper, *ssz);
+ ultp++)
+ ;
+ if (!ultp) { /* out of range */
+ memmove(d, s, *ssz);
+ } else if (ultp->upper) { /* matched */
+ memmove(d, ultp->lower, ultp->tsz);
+ *dsz = ultp->tsz;
+ } else {
+ memmove(d, s, *ssz);
+ }
+ break;
+ case 3: /* 3 bytes */
+ if (*s != UL3S && *s != UL3E) { /* out of range */
+ memmove(d, s, *ssz);
+ break;
+ }
+ for (ultp = Upper2LowerTbl3[*s - UL3S];
+ ultp && ultp->upper && memcmp(s, ultp->upper, *ssz);
+ ultp++)
+ ;
+ if (!ultp) { /* out of range */
+ memmove(d, s, *ssz);
+ } else if (ultp->upper) { /* matched */
+ memmove(d, ultp->lower, *ssz);
+ } else {
+ memmove(d, s, *ssz);
+ }
+ break;
+ }
+ return;
+}
+
+/*
+ * dsgw_utf8isUpper: tests for a character that is a upper-case letter in
+ * UTF-8
+ *
+ * input: a UTF-8 character (could be multi-byte)
+ * output: 1 if the character is a upper-case letter
+ * 0 if the character is not a upper-case letter
+ */
+int
+dsgw_utf8isUpper(unsigned char *s)
+{
+ UpperLowerTbl_t *ultp;
+ unsigned char *next;
+ int sz;
+
+ if (s == NULL || *s == '\0') {
+ return 0;
+ }
+ if (!(*s & 0x80)) { /* ASCII */
+ return isupper(*s);
+ }
+ next = (unsigned char *)ldap_utf8next((char *)s);
+ switch(sz = next - s) {
+ case 1: /* ASCII */
+ return isupper(*s);
+ case 2:
+ if (*s < UL2S || *s > UL2E) { /* out of range */
+ return 0;
+ }
+ for (ultp = Upper2LowerTbl2[*s - UL2S];
+ ultp && ultp->upper && memcmp(s, ultp->upper, sz);
+ ultp++)
+ ;
+ if (!ultp) { /* out of range */
+ return 0;
+ } if (ultp->upper) { /* matched */
+ return 1;
+ } else {
+ return 0;
+ }
+ case 3:
+ if (*s < UL3S || *s > UL3E) { /* out of range */
+ return 0;
+ }
+ for (ultp = Upper2LowerTbl3[*s - UL3S];
+ ultp && ultp->upper && memcmp(s, ultp->upper, sz);
+ ultp++)
+ ;
+ if (!ultp) { /* out of range */
+ return 0;
+ } if (ultp->upper) { /* matched */
+ return 1;
+ } else {
+ return 0;
+ }
+ default:
+ return 0;
+ }
+}
+
+/*
+ * Lower2Upper Tables: sorted by lower characters
+ */
+UpperLowerTbl_t Lower2UpperTbl20[] = {
+ /* upper, lower */
+ {"\303\200", "\303\240", 2},
+ {"\303\201", "\303\241", 2},
+ {"\303\202", "\303\242", 2},
+ {"\303\203", "\303\243", 2},
+ {"\303\204", "\303\244", 2},
+ {"\303\205", "\303\245", 2},
+ {"\303\206", "\303\246", 2},
+ {"\303\207", "\303\247", 2},
+ {"\303\210", "\303\250", 2},
+ {"\303\211", "\303\251", 2},
+ {"\303\212", "\303\252", 2},
+ {"\303\213", "\303\253", 2},
+ {"\303\214", "\303\254", 2},
+ {"\303\215", "\303\255", 2},
+ {"\303\216", "\303\256", 2},
+ {"\303\217", "\303\257", 2},
+ {"\303\220", "\303\260", 2},
+ {"\303\221", "\303\261", 2},
+ {"\303\222", "\303\262", 2},
+ {"\303\223", "\303\263", 2},
+ {"\303\224", "\303\264", 2},
+ {"\303\225", "\303\265", 2},
+ {"\303\226", "\303\266", 2},
+ {"\303\230", "\303\270", 2},
+ {"\303\231", "\303\271", 2},
+ {"\303\232", "\303\272", 2},
+ {"\303\233", "\303\273", 2},
+ {"\303\234", "\303\274", 2},
+ {"\303\235", "\303\275", 2},
+ {"\303\236", "\303\276", 2},
+ {"\305\270", "\303\277", 2},
+ {NULL, NULL, 0}
+};
+
+UpperLowerTbl_t Lower2UpperTbl21[] = {
+ {"\304\200", "\304\201", 2},
+ {"\304\202", "\304\203", 2},
+ {"\304\204", "\304\205", 2},
+ {"\304\206", "\304\207", 2},
+ {"\304\210", "\304\211", 2},
+ {"\304\212", "\304\213", 2},
+ {"\304\214", "\304\215", 2},
+ {"\304\216", "\304\217", 2},
+ {"\304\220", "\304\221", 2},
+ {"\304\222", "\304\223", 2},
+ {"\304\224", "\304\225", 2},
+ {"\304\226", "\304\227", 2},
+ {"\304\230", "\304\231", 2},
+ {"\304\232", "\304\233", 2},
+ {"\304\234", "\304\235", 2},
+ {"\304\236", "\304\237", 2},
+ {"\304\240", "\304\241", 2},
+ {"\304\242", "\304\243", 2},
+ {"\304\244", "\304\245", 2},
+ {"\304\246", "\304\247", 2},
+ {"\304\250", "\304\251", 2},
+ {"\304\252", "\304\253", 2},
+ {"\304\254", "\304\255", 2},
+ {"\304\256", "\304\257", 2},
+ {"\111", "\304\261", 1},
+ {"\304\262", "\304\263", 2},
+ {"\304\264", "\304\265", 2},
+ {"\304\266", "\304\267", 2},
+ {"\304\271", "\304\272", 2},
+ {"\304\273", "\304\274", 2},
+ {"\304\275", "\304\276", 2},
+ {NULL, NULL}
+};
+
+UpperLowerTbl_t Lower2UpperTbl22[] = {
+ {"\304\277", "\305\200", 2},
+ {"\305\201", "\305\202", 2},
+ {"\305\203", "\305\204", 2},
+ {"\305\205", "\305\206", 2},
+ {"\305\207", "\305\210", 2},
+ {"\305\212", "\305\213", 2},
+ {"\305\214", "\305\215", 2},
+ {"\305\216", "\305\217", 2},
+ {"\305\220", "\305\221", 2},
+ {"\305\222", "\305\223", 2},
+ {"\305\224", "\305\225", 2},
+ {"\305\226", "\305\227", 2},
+ {"\305\230", "\305\231", 2},
+ {"\305\232", "\305\233", 2},
+ {"\305\234", "\305\235", 2},
+ {"\305\236", "\305\237", 2},
+ {"\305\240", "\305\241", 2},
+ {"\305\242", "\305\243", 2},
+ {"\305\244", "\305\245", 2},
+ {"\305\246", "\305\247", 2},
+ {"\305\250", "\305\251", 2},
+ {"\305\252", "\305\253", 2},
+ {"\305\254", "\305\255", 2},
+ {"\305\256", "\305\257", 2},
+ {"\305\260", "\305\261", 2},
+ {"\305\262", "\305\263", 2},
+ {"\305\264", "\305\265", 2},
+ {"\305\266", "\305\267", 2},
+ {"\305\271", "\305\272", 2},
+ {"\305\273", "\305\274", 2},
+ {"\305\275", "\305\276", 2},
+ {"\123", "\305\277", 1},
+ {NULL, NULL, 0}
+};
+
+UpperLowerTbl_t Lower2UpperTbl23[] = {
+ {"\306\202", "\306\203", 2},
+ {"\306\204", "\306\205", 2},
+ {"\306\207", "\306\210", 2},
+ {"\306\213", "\306\214", 2},
+ {"\306\221", "\306\222", 2},
+ {"\306\230", "\306\231", 2},
+ {"\306\240", "\306\241", 2},
+ {"\306\242", "\306\243", 2},
+ {"\306\244", "\306\245", 2},
+ {"\306\247", "\306\250", 2},
+ {"\306\254", "\306\255", 2},
+ {"\306\257", "\306\260", 2},
+ {"\306\263", "\306\264", 2},
+ {"\306\265", "\306\266", 2},
+ {"\306\270", "\306\271", 2},
+ {"\306\274", "\306\275", 2},
+ {NULL, NULL, 0}
+};
+
+UpperLowerTbl_t Lower2UpperTbl24[] = {
+ {"\307\204", "\307\206", 2},
+ {"\307\207", "\307\211", 2},
+ {"\307\212", "\307\214", 2},
+ {"\307\215", "\307\216", 2},
+ {"\307\217", "\307\220", 2},
+ {"\307\221", "\307\222", 2},
+ {"\307\223", "\307\224", 2},
+ {"\307\225", "\307\226", 2},
+ {"\307\227", "\307\230", 2},
+ {"\307\231", "\307\232", 2},
+ {"\307\233", "\307\234", 2},
+ {"\307\236", "\307\237", 2},
+ {"\307\240", "\307\241", 2},
+ {"\307\242", "\307\243", 2},
+ {"\307\244", "\307\245", 2},
+ {"\307\246", "\307\247", 2},
+ {"\307\250", "\307\251", 2},
+ {"\307\252", "\307\253", 2},
+ {"\307\254", "\307\255", 2},
+ {"\307\256", "\307\257", 2},
+ {"\307\261", "\307\263", 2},
+ {"\307\264", "\307\265", 2},
+ {"\307\272", "\307\273", 2},
+ {"\307\274", "\307\275", 2},
+ {"\307\276", "\307\277", 2},
+ {NULL, NULL, 0}
+};
+
+UpperLowerTbl_t Lower2UpperTbl25[] = {
+ {"\310\200", "\310\201", 2},
+ {"\310\202", "\310\203", 2},
+ {"\310\204", "\310\205", 2},
+ {"\310\206", "\310\207", 2},
+ {"\310\210", "\310\211", 2},
+ {"\310\212", "\310\213", 2},
+ {"\310\214", "\310\215", 2},
+ {"\310\216", "\310\217", 2},
+ {"\310\220", "\310\221", 2},
+ {"\310\222", "\310\223", 2},
+ {"\310\224", "\310\225", 2},
+ {"\310\226", "\310\227", 2},
+ {NULL, NULL, 0}
+};
+
+UpperLowerTbl_t Lower2UpperTbl26[] = {
+ {"\306\201", "\311\223", 2},
+ {"\306\206", "\311\224", 2},
+ {"\306\211", "\311\226", 2},
+ {"\306\212", "\311\227", 2},
+ {"\306\216", "\311\230", 2},
+ {"\306\217", "\311\231", 2},
+ {"\306\220", "\311\233", 2},
+ {"\306\223", "\311\240", 2},
+ {"\306\224", "\311\243", 2},
+ {"\306\227", "\311\250", 2},
+ {"\306\226", "\311\251", 2},
+ {"\306\234", "\311\257", 2},
+ {"\306\235", "\311\262", 2},
+ {NULL, NULL, 0}
+};
+
+UpperLowerTbl_t Lower2UpperTbl27[] = {
+ {"\306\251", "\312\203", 2},
+ {"\306\256", "\312\210", 2},
+ {"\306\261", "\312\212", 2},
+ {"\306\262", "\312\213", 2},
+ {"\306\267", "\312\222", 2},
+ {NULL, NULL, 0}
+};
+
+UpperLowerTbl_t Lower2UpperTbl28[] = {
+ {"\316\206", "\316\254", 2},
+ {"\316\210", "\316\255", 2},
+ {"\316\211", "\316\256", 2},
+ {"\316\212", "\316\257", 2},
+ {"\316\221", "\316\261", 2},
+ {"\316\222", "\316\262", 2},
+ {"\316\223", "\316\263", 2},
+ {"\316\224", "\316\264", 2},
+ {"\316\225", "\316\265", 2},
+ {"\316\226", "\316\266", 2},
+ {"\316\227", "\316\267", 2},
+ {"\316\230", "\316\270", 2},
+ {"\316\231", "\316\271", 2},
+ {"\316\232", "\316\272", 2},
+ {"\316\233", "\316\273", 2},
+ {"\316\234", "\316\274", 2},
+ {"\316\235", "\316\275", 2},
+ {"\316\236", "\316\276", 2},
+ {"\316\237", "\316\277", 2},
+ {NULL, NULL, 0}
+};
+
+UpperLowerTbl_t Lower2UpperTbl29[] = {
+ {"\316\240", "\317\200", 2},
+ {"\316\241", "\317\201", 2},
+ {"\316\243", "\317\202", 2},
+ {"\316\243", "\317\203", 2},
+ {"\316\244", "\317\204", 2},
+ {"\316\245", "\317\205", 2},
+ {"\316\246", "\317\206", 2},
+ {"\316\247", "\317\207", 2},
+ {"\316\250", "\317\210", 2},
+ {"\316\251", "\317\211", 2},
+ {"\316\252", "\317\212", 2},
+ {"\316\253", "\317\213", 2},
+ {"\316\214", "\317\214", 2},
+ {"\316\216", "\317\215", 2},
+ {"\316\217", "\317\216", 2},
+ {"\316\222", "\317\220", 2},
+ {"\316\230", "\317\221", 2},
+ {"\316\246", "\317\225", 2},
+ {"\316\240", "\317\226", 2},
+ {"\317\242", "\317\243", 2},
+ {"\317\244", "\317\245", 2},
+ {"\317\246", "\317\247", 2},
+ {"\317\250", "\317\251", 2},
+ {"\317\252", "\317\253", 2},
+ {"\317\254", "\317\255", 2},
+ {"\317\256", "\317\257", 2},
+ {"\316\232", "\317\260", 2},
+ {"\316\241", "\317\261", 2},
+ {NULL, NULL, 0}
+};
+
+UpperLowerTbl_t Lower2UpperTbl2a[] = {
+ {"\320\220", "\320\260", 2},
+ {"\320\221", "\320\261", 2},
+ {"\320\222", "\320\262", 2},
+ {"\320\223", "\320\263", 2},
+ {"\320\224", "\320\264", 2},
+ {"\320\225", "\320\265", 2},
+ {"\320\226", "\320\266", 2},
+ {"\320\227", "\320\267", 2},
+ {"\320\230", "\320\270", 2},
+ {"\320\231", "\320\271", 2},
+ {"\320\232", "\320\272", 2},
+ {"\320\233", "\320\273", 2},
+ {"\320\234", "\320\274", 2},
+ {"\320\235", "\320\275", 2},
+ {"\320\236", "\320\276", 2},
+ {"\320\237", "\320\277", 2},
+ {NULL, NULL, 0}
+};
+
+UpperLowerTbl_t Lower2UpperTbl2b[] = {
+ {"\320\240", "\321\200", 2},
+ {"\320\241", "\321\201", 2},
+ {"\320\242", "\321\202", 2},
+ {"\320\243", "\321\203", 2},
+ {"\320\244", "\321\204", 2},
+ {"\320\245", "\321\205", 2},
+ {"\320\246", "\321\206", 2},
+ {"\320\247", "\321\207", 2},
+ {"\320\250", "\321\210", 2},
+ {"\320\251", "\321\211", 2},
+ {"\320\252", "\321\212", 2},
+ {"\320\253", "\321\213", 2},
+ {"\320\254", "\321\214", 2},
+ {"\320\255", "\321\215", 2},
+ {"\320\256", "\321\216", 2},
+ {"\320\257", "\321\217", 2},
+ {"\320\201", "\321\221", 2},
+ {"\320\202", "\321\222", 2},
+ {"\320\203", "\321\223", 2},
+ {"\320\204", "\321\224", 2},
+ {"\320\205", "\321\225", 2},
+ {"\320\206", "\321\226", 2},
+ {"\320\207", "\321\227", 2},
+ {"\320\210", "\321\230", 2},
+ {"\320\211", "\321\231", 2},
+ {"\320\212", "\321\232", 2},
+ {"\320\213", "\321\233", 2},
+ {"\320\214", "\321\234", 2},
+ {"\320\216", "\321\236", 2},
+ {"\320\217", "\321\237", 2},
+ {"\321\240", "\321\241", 2},
+ {"\321\242", "\321\243", 2},
+ {"\321\244", "\321\245", 2},
+ {"\321\246", "\321\247", 2},
+ {"\321\250", "\321\251", 2},
+ {"\321\252", "\321\253", 2},
+ {"\321\254", "\321\255", 2},
+ {"\321\256", "\321\257", 2},
+ {"\321\260", "\321\261", 2},
+ {"\321\262", "\321\263", 2},
+ {"\321\264", "\321\265", 2},
+ {"\321\266", "\321\267", 2},
+ {"\321\270", "\321\271", 2},
+ {"\321\272", "\321\273", 2},
+ {"\321\274", "\321\275", 2},
+ {"\321\276", "\321\277", 2},
+ {NULL, NULL, 0}
+};
+
+UpperLowerTbl_t Lower2UpperTbl2c[] = {
+ {"\322\200", "\322\201", 2},
+ {"\322\220", "\322\221", 2},
+ {"\322\222", "\322\223", 2},
+ {"\322\224", "\322\225", 2},
+ {"\322\226", "\322\227", 2},
+ {"\322\230", "\322\231", 2},
+ {"\322\232", "\322\233", 2},
+ {"\322\234", "\322\235", 2},
+ {"\322\236", "\322\237", 2},
+ {"\322\240", "\322\241", 2},
+ {"\322\242", "\322\243", 2},
+ {"\322\244", "\322\245", 2},
+ {"\322\246", "\322\247", 2},
+ {"\322\250", "\322\251", 2},
+ {"\322\252", "\322\253", 2},
+ {"\322\254", "\322\255", 2},
+ {"\322\256", "\322\257", 2},
+ {"\322\260", "\322\261", 2},
+ {"\322\262", "\322\263", 2},
+ {"\322\264", "\322\265", 2},
+ {"\322\266", "\322\267", 2},
+ {"\322\270", "\322\271", 2},
+ {"\322\272", "\322\273", 2},
+ {"\322\274", "\322\275", 2},
+ {"\322\276", "\322\277", 2},
+ {NULL, NULL, 0}
+};
+
+UpperLowerTbl_t Lower2UpperTbl2d[] = {
+ {"\323\201", "\323\202", 2},
+ {"\323\203", "\323\204", 2},
+ {"\323\207", "\323\210", 2},
+ {"\323\213", "\323\214", 2},
+ {"\323\220", "\323\221", 2},
+ {"\323\222", "\323\223", 2},
+ {"\323\224", "\323\225", 2},
+ {"\323\226", "\323\227", 2},
+ {"\323\230", "\323\231", 2},
+ {"\323\232", "\323\233", 2},
+ {"\323\234", "\323\235", 2},
+ {"\323\236", "\323\237", 2},
+ {"\323\240", "\323\241", 2},
+ {"\323\242", "\323\243", 2},
+ {"\323\244", "\323\245", 2},
+ {"\323\246", "\323\247", 2},
+ {"\323\250", "\323\251", 2},
+ {"\323\252", "\323\253", 2},
+ {"\323\256", "\323\257", 2},
+ {"\323\260", "\323\261", 2},
+ {"\323\262", "\323\263", 2},
+ {"\323\264", "\323\265", 2},
+ {"\323\270", "\323\271", 2},
+ {NULL, NULL, 0}
+};
+
+UpperLowerTbl_t Lower2UpperTbl2e[] = {
+ {"\324\261", "\325\241", 2},
+ {"\324\262", "\325\242", 2},
+ {"\324\263", "\325\243", 2},
+ {"\324\264", "\325\244", 2},
+ {"\324\265", "\325\245", 2},
+ {"\324\266", "\325\246", 2},
+ {"\324\267", "\325\247", 2},
+ {"\324\270", "\325\250", 2},
+ {"\324\271", "\325\251", 2},
+ {"\324\272", "\325\252", 2},
+ {"\324\273", "\325\253", 2},
+ {"\324\274", "\325\254", 2},
+ {"\324\275", "\325\255", 2},
+ {"\324\276", "\325\256", 2},
+ {"\324\277", "\325\257", 2},
+ {"\325\200", "\325\260", 2},
+ {"\325\201", "\325\261", 2},
+ {"\325\202", "\325\262", 2},
+ {"\325\203", "\325\263", 2},
+ {"\325\204", "\325\264", 2},
+ {"\325\205", "\325\265", 2},
+ {"\325\206", "\325\266", 2},
+ {"\325\207", "\325\267", 2},
+ {"\325\210", "\325\270", 2},
+ {"\325\211", "\325\271", 2},
+ {"\325\212", "\325\272", 2},
+ {"\325\213", "\325\273", 2},
+ {"\325\214", "\325\274", 2},
+ {"\325\215", "\325\275", 2},
+ {"\325\216", "\325\276", 2},
+ {"\325\217", "\325\277", 2},
+ {NULL, NULL, 0}
+};
+
+UpperLowerTbl_t Lower2UpperTbl2f[] = {
+ {"\325\220", "\326\200", 2},
+ {"\325\221", "\326\201", 2},
+ {"\325\222", "\326\202", 2},
+ {"\325\223", "\326\203", 2},
+ {"\325\224", "\326\204", 2},
+ {"\325\225", "\326\205", 2},
+ {"\325\226", "\326\206", 2},
+ {NULL, NULL, 0}
+};
+
+UpperLowerTbl_t Lower2UpperTbl30[] = {
+ {"\341\202\240", "\341\203\220", 3},
+ {"\341\202\241", "\341\203\221", 3},
+ {"\341\202\242", "\341\203\222", 3},
+ {"\341\202\243", "\341\203\223", 3},
+ {"\341\202\244", "\341\203\224", 3},
+ {"\341\202\245", "\341\203\225", 3},
+ {"\341\202\246", "\341\203\226", 3},
+ {"\341\202\247", "\341\203\227", 3},
+ {"\341\202\250", "\341\203\230", 3},
+ {"\341\202\251", "\341\203\231", 3},
+ {"\341\202\252", "\341\203\232", 3},
+ {"\341\202\253", "\341\203\233", 3},
+ {"\341\202\254", "\341\203\234", 3},
+ {"\341\202\255", "\341\203\235", 3},
+ {"\341\202\256", "\341\203\236", 3},
+ {"\341\202\257", "\341\203\237", 3},
+ {"\341\202\260", "\341\203\240", 3},
+ {"\341\202\261", "\341\203\241", 3},
+ {"\341\202\262", "\341\203\242", 3},
+ {"\341\202\263", "\341\203\243", 3},
+ {"\341\202\264", "\341\203\244", 3},
+ {"\341\202\265", "\341\203\245", 3},
+ {"\341\202\266", "\341\203\246", 3},
+ {"\341\202\267", "\341\203\247", 3},
+ {"\341\202\270", "\341\203\250", 3},
+ {"\341\202\271", "\341\203\251", 3},
+ {"\341\202\272", "\341\203\252", 3},
+ {"\341\202\273", "\341\203\253", 3},
+ {"\341\202\274", "\341\203\254", 3},
+ {"\341\202\275", "\341\203\255", 3},
+ {"\341\202\276", "\341\203\256", 3},
+ {"\341\202\277", "\341\203\257", 3},
+ {"\341\203\200", "\341\203\260", 3},
+ {"\341\203\201", "\341\203\261", 3},
+ {"\341\203\202", "\341\203\262", 3},
+ {"\341\203\203", "\341\203\263", 3},
+ {"\341\203\204", "\341\203\264", 3},
+ {"\341\203\205", "\341\203\265", 3},
+ {"\341\270\200", "\341\270\201", 3},
+ {"\341\270\202", "\341\270\203", 3},
+ {"\341\270\204", "\341\270\205", 3},
+ {"\341\270\206", "\341\270\207", 3},
+ {"\341\270\210", "\341\270\211", 3},
+ {"\341\270\212", "\341\270\213", 3},
+ {"\341\270\214", "\341\270\215", 3},
+ {"\341\270\216", "\341\270\217", 3},
+ {"\341\270\220", "\341\270\221", 3},
+ {"\341\270\222", "\341\270\223", 3},
+ {"\341\270\224", "\341\270\225", 3},
+ {"\341\270\226", "\341\270\227", 3},
+ {"\341\270\230", "\341\270\231", 3},
+ {"\341\270\232", "\341\270\233", 3},
+ {"\341\270\234", "\341\270\235", 3},
+ {"\341\270\236", "\341\270\237", 3},
+ {"\341\270\240", "\341\270\241", 3},
+ {"\341\270\242", "\341\270\243", 3},
+ {"\341\270\244", "\341\270\245", 3},
+ {"\341\270\246", "\341\270\247", 3},
+ {"\341\270\250", "\341\270\251", 3},
+ {"\341\270\252", "\341\270\253", 3},
+ {"\341\270\254", "\341\270\255", 3},
+ {"\341\270\256", "\341\270\257", 3},
+ {"\341\270\260", "\341\270\261", 3},
+ {"\341\270\262", "\341\270\263", 3},
+ {"\341\270\264", "\341\270\265", 3},
+ {"\341\270\266", "\341\270\267", 3},
+ {"\341\270\270", "\341\270\271", 3},
+ {"\341\270\272", "\341\270\273", 3},
+ {"\341\270\274", "\341\270\275", 3},
+ {"\341\270\276", "\341\270\277", 3},
+ {"\341\271\200", "\341\271\201", 3},
+ {"\341\271\202", "\341\271\203", 3},
+ {"\341\271\204", "\341\271\205", 3},
+ {"\341\271\206", "\341\271\207", 3},
+ {"\341\271\210", "\341\271\211", 3},
+ {"\341\271\212", "\341\271\213", 3},
+ {"\341\271\214", "\341\271\215", 3},
+ {"\341\271\216", "\341\271\217", 3},
+ {"\341\271\220", "\341\271\221", 3},
+ {"\341\271\222", "\341\271\223", 3},
+ {"\341\271\224", "\341\271\225", 3},
+ {"\341\271\226", "\341\271\227", 3},
+ {"\341\271\230", "\341\271\231", 3},
+ {"\341\271\232", "\341\271\233", 3},
+ {"\341\271\234", "\341\271\235", 3},
+ {"\341\271\236", "\341\271\237", 3},
+ {"\341\271\240", "\341\271\241", 3},
+ {"\341\271\242", "\341\271\243", 3},
+ {"\341\271\244", "\341\271\245", 3},
+ {"\341\271\246", "\341\271\247", 3},
+ {"\341\271\250", "\341\271\251", 3},
+ {"\341\271\252", "\341\271\253", 3},
+ {"\341\271\254", "\341\271\255", 3},
+ {"\341\271\256", "\341\271\257", 3},
+ {"\341\271\260", "\341\271\261", 3},
+ {"\341\271\262", "\341\271\263", 3},
+ {"\341\271\264", "\341\271\265", 3},
+ {"\341\271\266", "\341\271\267", 3},
+ {"\341\271\270", "\341\271\271", 3},
+ {"\341\271\272", "\341\271\273", 3},
+ {"\341\271\274", "\341\271\275", 3},
+ {"\341\271\276", "\341\271\277", 3},
+ {"\341\272\200", "\341\272\201", 3},
+ {"\341\272\202", "\341\272\203", 3},
+ {"\341\272\204", "\341\272\205", 3},
+ {"\341\272\206", "\341\272\207", 3},
+ {"\341\272\210", "\341\272\211", 3},
+ {"\341\272\212", "\341\272\213", 3},
+ {"\341\272\214", "\341\272\215", 3},
+ {"\341\272\216", "\341\272\217", 3},
+ {"\341\272\220", "\341\272\221", 3},
+ {"\341\272\222", "\341\272\223", 3},
+ {"\341\272\224", "\341\272\225", 3},
+ {"\341\272\240", "\341\272\241", 3},
+ {"\341\272\242", "\341\272\243", 3},
+ {"\341\272\244", "\341\272\245", 3},
+ {"\341\272\246", "\341\272\247", 3},
+ {"\341\272\250", "\341\272\251", 3},
+ {"\341\272\252", "\341\272\253", 3},
+ {"\341\272\254", "\341\272\255", 3},
+ {"\341\272\256", "\341\272\257", 3},
+ {"\341\272\260", "\341\272\261", 3},
+ {"\341\272\262", "\341\272\263", 3},
+ {"\341\272\264", "\341\272\265", 3},
+ {"\341\272\266", "\341\272\267", 3},
+ {"\341\272\270", "\341\272\271", 3},
+ {"\341\272\272", "\341\272\273", 3},
+ {"\341\272\274", "\341\272\275", 3},
+ {"\341\272\276", "\341\272\277", 3},
+ {"\341\273\200", "\341\273\201", 3},
+ {"\341\273\202", "\341\273\203", 3},
+ {"\341\273\204", "\341\273\205", 3},
+ {"\341\273\206", "\341\273\207", 3},
+ {"\341\273\210", "\341\273\211", 3},
+ {"\341\273\212", "\341\273\213", 3},
+ {"\341\273\214", "\341\273\215", 3},
+ {"\341\273\216", "\341\273\217", 3},
+ {"\341\273\220", "\341\273\221", 3},
+ {"\341\273\222", "\341\273\223", 3},
+ {"\341\273\224", "\341\273\225", 3},
+ {"\341\273\226", "\341\273\227", 3},
+ {"\341\273\230", "\341\273\231", 3},
+ {"\341\273\232", "\341\273\233", 3},
+ {"\341\273\234", "\341\273\235", 3},
+ {"\341\273\236", "\341\273\237", 3},
+ {"\341\273\240", "\341\273\241", 3},
+ {"\341\273\242", "\341\273\243", 3},
+ {"\341\273\244", "\341\273\245", 3},
+ {"\341\273\246", "\341\273\247", 3},
+ {"\341\273\250", "\341\273\251", 3},
+ {"\341\273\252", "\341\273\253", 3},
+ {"\341\273\254", "\341\273\255", 3},
+ {"\341\273\256", "\341\273\257", 3},
+ {"\341\273\260", "\341\273\261", 3},
+ {"\341\273\262", "\341\273\263", 3},
+ {"\341\273\264", "\341\273\265", 3},
+ {"\341\273\266", "\341\273\267", 3},
+ {"\341\273\270", "\341\273\271", 3},
+ {"\341\274\210", "\341\274\200", 3},
+ {"\341\274\211", "\341\274\201", 3},
+ {"\341\274\212", "\341\274\202", 3},
+ {"\341\274\213", "\341\274\203", 3},
+ {"\341\274\214", "\341\274\204", 3},
+ {"\341\274\215", "\341\274\205", 3},
+ {"\341\274\216", "\341\274\206", 3},
+ {"\341\274\217", "\341\274\207", 3},
+ {"\341\274\230", "\341\274\220", 3},
+ {"\341\274\231", "\341\274\221", 3},
+ {"\341\274\232", "\341\274\222", 3},
+ {"\341\274\233", "\341\274\223", 3},
+ {"\341\274\234", "\341\274\224", 3},
+ {"\341\274\235", "\341\274\225", 3},
+ {"\341\274\250", "\341\274\240", 3},
+ {"\341\274\251", "\341\274\241", 3},
+ {"\341\274\252", "\341\274\242", 3},
+ {"\341\274\253", "\341\274\243", 3},
+ {"\341\274\254", "\341\274\244", 3},
+ {"\341\274\255", "\341\274\245", 3},
+ {"\341\274\256", "\341\274\246", 3},
+ {"\341\274\257", "\341\274\247", 3},
+ {"\341\274\270", "\341\274\260", 3},
+ {"\341\274\271", "\341\274\261", 3},
+ {"\341\274\272", "\341\274\262", 3},
+ {"\341\274\273", "\341\274\263", 3},
+ {"\341\274\274", "\341\274\264", 3},
+ {"\341\274\275", "\341\274\265", 3},
+ {"\341\274\276", "\341\274\266", 3},
+ {"\341\274\277", "\341\274\267", 3},
+ {"\341\275\210", "\341\275\200", 3},
+ {"\341\275\211", "\341\275\201", 3},
+ {"\341\275\212", "\341\275\202", 3},
+ {"\341\275\213", "\341\275\203", 3},
+ {"\341\275\214", "\341\275\204", 3},
+ {"\341\275\215", "\341\275\205", 3},
+ {"\341\275\231", "\341\275\221", 3},
+ {"\341\275\233", "\341\275\223", 3},
+ {"\341\275\235", "\341\275\225", 3},
+ {"\341\275\237", "\341\275\227", 3},
+ {"\341\275\250", "\341\275\240", 3},
+ {"\341\275\251", "\341\275\241", 3},
+ {"\341\275\252", "\341\275\242", 3},
+ {"\341\275\253", "\341\275\243", 3},
+ {"\341\275\254", "\341\275\244", 3},
+ {"\341\275\255", "\341\275\245", 3},
+ {"\341\275\256", "\341\275\246", 3},
+ {"\341\275\257", "\341\275\247", 3},
+ {"\341\276\272", "\341\275\260", 3},
+ {"\341\276\273", "\341\275\261", 3},
+ {"\341\277\210", "\341\275\262", 3},
+ {"\341\277\211", "\341\275\263", 3},
+ {"\341\277\212", "\341\275\264", 3},
+ {"\341\277\213", "\341\275\265", 3},
+ {"\341\277\232", "\341\275\266", 3},
+ {"\341\277\233", "\341\275\267", 3},
+ {"\341\277\270", "\341\275\270", 3},
+ {"\341\277\271", "\341\275\271", 3},
+ {"\341\277\252", "\341\275\272", 3},
+ {"\341\277\253", "\341\275\273", 3},
+ {"\341\277\272", "\341\275\274", 3},
+ {"\341\277\273", "\341\275\275", 3},
+ {"\341\276\210", "\341\276\200", 3},
+ {"\341\276\211", "\341\276\201", 3},
+ {"\341\276\212", "\341\276\202", 3},
+ {"\341\276\213", "\341\276\203", 3},
+ {"\341\276\214", "\341\276\204", 3},
+ {"\341\276\215", "\341\276\205", 3},
+ {"\341\276\216", "\341\276\206", 3},
+ {"\341\276\217", "\341\276\207", 3},
+ {"\341\276\230", "\341\276\220", 3},
+ {"\341\276\231", "\341\276\221", 3},
+ {"\341\276\232", "\341\276\222", 3},
+ {"\341\276\233", "\341\276\223", 3},
+ {"\341\276\234", "\341\276\224", 3},
+ {"\341\276\235", "\341\276\225", 3},
+ {"\341\276\236", "\341\276\226", 3},
+ {"\341\276\237", "\341\276\227", 3},
+ {"\341\276\250", "\341\276\240", 3},
+ {"\341\276\251", "\341\276\241", 3},
+ {"\341\276\252", "\341\276\242", 3},
+ {"\341\276\253", "\341\276\243", 3},
+ {"\341\276\254", "\341\276\244", 3},
+ {"\341\276\255", "\341\276\245", 3},
+ {"\341\276\256", "\341\276\246", 3},
+ {"\341\276\257", "\341\276\247", 3},
+ {"\341\276\270", "\341\276\260", 3},
+ {"\341\276\271", "\341\276\261", 3},
+ {"\341\276\274", "\341\276\263", 3},
+ {"\341\277\214", "\341\277\203", 3},
+ {"\341\277\230", "\341\277\220", 3},
+ {"\341\277\231", "\341\277\221", 3},
+ {"\341\277\250", "\341\277\240", 3},
+ {"\341\277\251", "\341\277\241", 3},
+ {"\341\277\254", "\341\277\245", 3},
+ {"\341\277\274", "\341\277\263", 3},
+ {NULL, NULL, 0}
+};
+
+UpperLowerTbl_t Lower2UpperTbl31[] = {
+ {"\357\274\241", "\357\275\201", 3},
+ {"\357\274\242", "\357\275\202", 3},
+ {"\357\274\243", "\357\275\203", 3},
+ {"\357\274\244", "\357\275\204", 3},
+ {"\357\274\245", "\357\275\205", 3},
+ {"\357\274\246", "\357\275\206", 3},
+ {"\357\274\247", "\357\275\207", 3},
+ {"\357\274\250", "\357\275\210", 3},
+ {"\357\274\251", "\357\275\211", 3},
+ {"\357\274\252", "\357\275\212", 3},
+ {"\357\274\253", "\357\275\213", 3},
+ {"\357\274\254", "\357\275\214", 3},
+ {"\357\274\255", "\357\275\215", 3},
+ {"\357\274\256", "\357\275\216", 3},
+ {"\357\274\257", "\357\275\217", 3},
+ {"\357\274\260", "\357\275\220", 3},
+ {"\357\274\261", "\357\275\221", 3},
+ {"\357\274\262", "\357\275\222", 3},
+ {"\357\274\263", "\357\275\223", 3},
+ {"\357\274\264", "\357\275\224", 3},
+ {"\357\274\265", "\357\275\225", 3},
+ {"\357\274\266", "\357\275\226", 3},
+ {"\357\274\267", "\357\275\227", 3},
+ {"\357\274\270", "\357\275\230", 3},
+ {"\357\274\271", "\357\275\231", 3},
+ {"\357\274\272", "\357\275\232", 3},
+ {NULL, NULL, 0}
+ /* upper, lower */
+};
+
+UpperLowerTbl_t *Lower2UpperTbl2[] = {
+ Lower2UpperTbl20, /* \303 */
+ Lower2UpperTbl21, /* \304 */
+ Lower2UpperTbl22, /* \305 */
+ Lower2UpperTbl23, /* \306 */
+ Lower2UpperTbl24, /* \307 */
+ Lower2UpperTbl25, /* \310 */
+ Lower2UpperTbl26, /* \311 */
+ Lower2UpperTbl27, /* \312 */
+ NULL, /* \313 */
+ NULL, /* \314 */
+ NULL, /* \315 */
+ Lower2UpperTbl28, /* \316 */
+ Lower2UpperTbl29, /* \317 */
+ Lower2UpperTbl2a, /* \320 */
+ Lower2UpperTbl2b, /* \321 */
+ Lower2UpperTbl2c, /* \322 */
+ Lower2UpperTbl2d, /* \323 */
+ NULL, /* \324 */
+ Lower2UpperTbl2e, /* \325 */
+ Lower2UpperTbl2f /* \326 */
+};
+
+UpperLowerTbl_t *Lower2UpperTbl3[] = {
+ Lower2UpperTbl30, /* \341 */
+ NULL, /* \342 */
+ NULL, /* \343 */
+ NULL, /* \344 */
+ NULL, /* \345 */
+ NULL, /* \346 */
+ NULL, /* \347 */
+ NULL, /* \350 */
+ NULL, /* \351 */
+ NULL, /* \352 */
+ NULL, /* \353 */
+ NULL, /* \354 */
+ NULL, /* \355 */
+ NULL, /* \356 */
+ Lower2UpperTbl31 /* \357 */
+};
+
+#define LU2S (unsigned char)'\303'
+#define LU2E (unsigned char)'\326'
+#define LU3S (unsigned char)'\341'
+#define LU3E (unsigned char)'\357'
+
+/*
+ * dsgw_utf8StrToUpper: translate lower-case string to upper-case
+ *
+ * input: a null terminated UTF-8 string
+ * output: a null terminated UTF-8 string which characters are
+ * converted to upper-case; characters which are not
+ * lower-case are copied as is. If it's not considered
+ * a UTF-8 string, NULL is returned.
+ *
+ * Notes: This function takes a string (made of multiple UTF-8 characters)
+ * for the input (not one character as in "toupper").
+ * Output string is allocated in this function, which needs to be
+ * released when it's not needed any more.
+ */
+unsigned char *
+dsgw_utf8StrToUpper(unsigned char *s)
+{
+ UpperLowerTbl_t *ultp;
+ unsigned char *p, *np, *tail;
+ unsigned char *up, *uphead;
+ int len, sz;
+
+ if (s == NULL || *s == '\0') {
+ return s;
+ }
+ len = strlen((char *)s);
+ tail = s + len;
+ uphead = up = (unsigned char *)dsgw_ch_malloc(len + 1);
+ p = s;
+ while ((np = (unsigned char *)ldap_utf8next((char *)p)) <= tail) {
+ switch(sz = np - p) {
+ case 1: /* ASCII */
+ sprintf((char *)up, "%c", toupper(*p));
+ break;
+ case 2: /* 2 bytes */
+ if (*p < LU2S || *p > LU2E) { /* out of range */
+ memcpy(up, p, sz);
+ break;
+ }
+ for (ultp = Lower2UpperTbl2[*p - LU2S];
+ ultp && ultp->lower && memcmp(p, ultp->lower, sz);
+ ultp++)
+ ;
+ if (!ultp) { /* out of range */
+ memcpy(up, p, sz);
+ } if (ultp->lower) { /* matched */
+ memcpy(up, ultp->upper, ultp->tsz);
+ sz = ultp->tsz;
+ } else {
+ memcpy(up, p, sz);
+ }
+ break;
+ case 3: /* 3 bytes */
+ if (*p != LU3S && *p != LU3E) { /* out of range */
+ memcpy(up, p, sz);
+ break;
+ }
+ for (ultp = Lower2UpperTbl3[*p - LU3S];
+ ultp && ultp->lower && memcmp(p, ultp->lower, sz);
+ ultp++)
+ ;
+ if (!ultp) { /* out of range */
+ memcpy(up, p, sz);
+ } if (ultp->lower) { /* matched */
+ memcpy(up, ultp->upper, sz);
+ } else {
+ memcpy(up, p, sz);
+ }
+ break;
+ case 4:
+ memcpy(up, p, sz);
+ break;
+ default: /* not UTF-8 */
+ free(uphead);
+ return NULL;
+ }
+ up += sz;
+ p = np;
+ if (p == tail) {
+ break;
+ }
+ }
+ *up = '\0';
+ return uphead;
+}
+
+/*
+ * dsgw_utf8ToUpper: translate lower-case character to upper-case
+ *
+ * input: a UTF-8 character (s)
+ * output: a UTF-8 character which is converted to upper-case (d)
+ * length (in bytes) of input character (ssz) and
+ * output character (dsz)
+ *
+ * Notes: This function takes a UTF-8 character (could be multiple bytes)
+ * for the input. Memory for the output character is NOT allocated
+ * in this function, caller should have allocated it (d).
+ * "memmove" is used since (s) and (d) are overlapped.
+ */
+void
+dsgw_utf8ToUpper(unsigned char *s, unsigned char *d, int *ssz, int *dsz)
+{
+ UpperLowerTbl_t *ultp;
+ unsigned char *tail;
+
+ if (s == NULL || *s == '\0') {
+ *ssz = *dsz = 0;
+ return;
+ }
+ if (!(*s & 0x80)) { /* ASCII */
+ *dsz = *ssz = 1;
+ *d = toupper(*s);
+ return;
+ }
+ tail = (unsigned char *)ldap_utf8next((char *)s);
+ *dsz = *ssz = tail - s;
+ switch(*ssz) {
+ case 1: /* ASCII */
+ *d = toupper(*s);
+ break;
+ case 2: /* 2 bytes */
+ if (*s < LU2S || *s > LU2E) { /* out of range */
+ memmove(d, s, *ssz);
+ break;
+ }
+ for (ultp = Lower2UpperTbl2[*s - LU2S];
+ ultp && ultp->lower && memcmp(s, ultp->lower, *ssz);
+ ultp++)
+ ;
+ if (!ultp) { /* out of range */
+ memmove(d, s, *ssz);
+ } else if (ultp->lower) { /* matched */
+ memmove(d, ultp->upper, ultp->tsz);
+ *dsz = ultp->tsz;
+ } else {
+ memmove(d, s, *ssz);
+ }
+ break;
+ case 3: /* 3 bytes */
+ if (*s != LU3S && *s != LU3E) { /* out of range */
+ memmove(d, s, *ssz);
+ break;
+ }
+ for (ultp = Lower2UpperTbl3[*s - LU3S];
+ ultp && ultp->lower && memcmp(s, ultp->lower, *ssz);
+ ultp++)
+ ;
+ if (!ultp) { /* out of range */
+ memmove(d, s, *ssz);
+ } else if (ultp->lower) { /* matched */
+ memmove(d, ultp->upper, *ssz);
+ } else {
+ memmove(d, s, *ssz);
+ }
+ break;
+ }
+ return;
+}
+
+/*
+ * dsgw_utf8isLower: tests for a character that is a lower-case letter in
+ * UTF-8
+ *
+ * input: a UTF-8 character (could be multi-byte)
+ * output: 1 if the character is a lower-case letter
+ * 0 if the character is not a lower-case letter
+ */
+int
+dsgw_utf8isLower(unsigned char *s)
+{
+ UpperLowerTbl_t *ultp;
+ unsigned char *next;
+ int sz;
+
+ if (s == NULL || *s == '\0') {
+ return 0;
+ }
+ if (!(*s & 0x80)) { /* ASCII */
+ return islower(*s);
+ }
+ next = (unsigned char *)ldap_utf8next((char *)s);
+ switch(sz = next - s) {
+ case 1: /* ASCII */
+ return islower(*s);
+ case 2:
+ if (*s < LU2S || *s > LU2E) { /* out of range */
+ return 0;
+ }
+ for (ultp = Lower2UpperTbl2[*s - LU2S];
+ ultp && ultp->lower && memcmp(s, ultp->lower, sz);
+ ultp++)
+ ;
+ if (!ultp) { /* out of range */
+ return 0;
+ } if (ultp->lower) { /* matched */
+ return 1;
+ } else {
+ return 0;
+ }
+ case 3:
+ if (*s < LU3S || *s > LU3E) { /* out of range */
+ return 0;
+ }
+ for (ultp = Lower2UpperTbl3[*s - LU3S];
+ ultp && ultp->lower && memcmp(s, ultp->lower, sz);
+ ultp++)
+ ;
+ if (!ultp) { /* out of range */
+ return 0;
+ } if (ultp->lower) { /* matched */
+ return 1;
+ } else {
+ return 0;
+ }
+ default:
+ return 0;
+ }
+}
+
+/*
+ * dsgw_utf8casecmp: case-insensitive string compare for UTF-8 strings
+ *
+ * input: two UTF-8 strings (s0, s1) to be compared
+ * output: positive number, if s0 is after s1
+ * 0, if the two strings are identical ignoring the case
+ * negative number, if s1 is after s0
+ *
+ * Rules: If both UTF-8 strings are NULL or 0-length, 0 is returned.
+ * If one of the strings is NULL or 0-length, the NULL/0-length
+ * string is smaller.
+ * If one or both of the strings are not UTF-8, system provided
+ * strcasecmp is used.
+ * If one of the two strings contains no 8-bit characters,
+ * strcasecmp is used.
+ * The strings are compared after converted to lower-case UTF-8.
+ * Each character is compared from the beginning.
+ * Evaluation goes in this order:
+ * If the length of one character is shorter then the other,
+ * the difference of the two lengths is returned.
+ * If the length of the corresponsing characters is same,
+ * each byte in the characters is compared.
+ * If there's a difference between two bytes,
+ * the diff is returned.
+ * If one string is shorter then the other, the diff is returned.
+ *
+ * Notes: Don't use this function for collation
+ * 1) there's no notion of locale in this function.
+ * 2) it's UTF-8 code order, which is different from the locale
+ * based collation.
+ */
+int
+dsgw_utf8casecmp(unsigned char *s0, unsigned char *s1)
+{
+ unsigned char *d0, *d1; /* store lower-case strings */
+ unsigned char *p0, *p1; /* current UTF-8 char */
+ unsigned char *n0, *n1; /* next UTF-8 char */
+ unsigned char *t0, *t1; /* tail of the strings */
+ unsigned char *x0, *x1; /* current byte in a char */
+ int i0, i1; /* length of characters */
+ int l0, l1; /* length of leftover */
+ int rval;
+ int has8_s0;
+ int has8_s1;
+
+ d0 = d1 = NULL;
+ if (s0 == NULL || *s0 == '\0') {
+ if (s1 == NULL || *s1 == '\0') {
+ rval = 0;
+ } else {
+ rval = -1; /* regardless s1, s0 < s1 */
+ }
+ goto end;
+ } else if (s1 == NULL || *s1 == '\0') {
+ rval = 1; /* regardless s0, s0 > s1 */
+ goto end;
+ }
+
+ has8_s0 = dsgw_has8thBit(s0);
+ has8_s1 = dsgw_has8thBit(s1);
+ if (has8_s0 == has8_s1) { /* both has-8th-bit or both do not */
+ if (has8_s0 == 0) { /* neither has-8th-bit */
+ rval = strcasecmp((char *)s0, (char *)s1);
+ goto end;
+ }
+ } else { /* one has and the other do not */
+ rval = strcasecmp((char *)s0, (char *)s1);
+ goto end;
+ }
+
+ d0 = dsgw_utf8StrToLower(s0);
+ d1 = dsgw_utf8StrToLower(s1);
+ if (d0 == NULL || d1 == NULL || /* either is not a UTF-8 string */
+ (d0 && *d0 == '\0') || (d1 && *d1 == '\0')) {
+ rval = strcasecmp((char *)s0, (char *)s1);
+ goto end;
+ }
+
+ p0 = d0;
+ p1 = d1;
+
+ t0 = d0 + strlen((char *)d0);
+ t1 = d1 + strlen((char *)d1);
+
+ rval = 0;
+ while (1) {
+ n0 = (unsigned char *)ldap_utf8next((char *)p0);
+ n1 = (unsigned char *)ldap_utf8next((char *)p1);
+ if (n0 > t0 || n1 > t1) {
+ break;
+ }
+
+ i0 = n0 - p0;
+ i1 = n1 - p1;
+ rval = i0 - i1;
+ if (rval) { /* length is different */
+ goto end;
+ }
+
+ /* i0 == i1: same length */
+ for (x0 = p0, x1 = p1; x0 < n0; x0++, x1++) {
+ rval = *x0 - *x1;
+ if (rval) {
+ goto end;
+ }
+ }
+
+ p0 = n0; p1 = n1; /* goto next */
+ }
+ /* finished scanning the shared part and check the leftover */
+ l0 = t0 - n0;
+ l1 = t1 - n1;
+ rval = l0 - l1;
+
+end:
+ if (d0)
+ free(d0);
+ if (d1)
+ free(d1);
+
+ return rval;
+}
+
+/*
+ * dsgw_utf8ncasecmp: case-insensitive string compare (n chars) for UTF-8
+ * strings
+ *
+ * input: two UTF-8 strings (s0, s1) to be compared
+ * number or characters
+ * output: positive number, if s0 is after s1
+ * 0, if the two strings are identical ignoring the case
+ * negative number, if s1 is after s0
+ *
+ * Rules: Same as dsgw_utf8casecmp except the n characters limit.
+ *
+ * Notes: Don't use this function for collation
+ * 1) there's no notion of locale in this function.
+ * 2) it's UTF-8 code order, which is different from the locale
+ * based collation.
+ * n characters, NOT n bytes
+ */
+int
+dsgw_utf8ncasecmp(unsigned char *s0, unsigned char *s1, int n)
+{
+ unsigned char *d0, *d1; /* store lower-case strings */
+ unsigned char *p0, *p1; /* current UTF-8 char */
+ unsigned char *n0, *n1; /* next UTF-8 char */
+ unsigned char *t0, *t1; /* tail of the strings */
+ unsigned char *x0, *x1; /* current byte in a char */
+ int i0, i1; /* length of characters */
+ int l0, l1; /* length of leftover */
+ int cnt;
+ int rval;
+ int has8_s0;
+ int has8_s1;
+
+ d0 = d1 = NULL;
+ if (s0 == NULL || *s0 == '\0') {
+ if (s1 == NULL || *s1 == '\0') {
+ rval = 0;
+ } else {
+ rval = -1; /* regardless s1, s0 < s1 */
+ }
+ goto end;
+ } else if (s1 == NULL || *s1 == '\0') {
+ rval = 1; /* regardless s0, s0 > s1 */
+ goto end;
+ }
+
+ has8_s0 = dsgw_has8thBit(s0);
+ has8_s1 = dsgw_has8thBit(s1);
+ if (has8_s0 == has8_s1) { /* both has-8th-bit or both do not */
+ if (has8_s0 == 0) { /* neither has-8th-bit */
+ rval = strncasecmp((char *)s0, (char *)s1, n);
+ goto end;
+ }
+ } else { /* one has and the other do not */
+ rval = strncasecmp((char *)s0, (char *)s1, n);
+ goto end;
+ }
+
+ d0 = dsgw_utf8StrToLower(s0);
+ d1 = dsgw_utf8StrToLower(s1);
+ if (d0 == NULL || d1 == NULL || /* either is not a UTF-8 string */
+ (d0 && *d0 == '\0') || (d1 && *d1 == '\0')) {
+ rval = strncasecmp((char *)s0, (char *)s1, n);
+ goto end;
+ }
+
+ p0 = d0;
+ p1 = d1;
+
+ t0 = d0 + strlen((char *)d0);
+ t1 = d1 + strlen((char *)d1);
+
+ rval = 0;
+ cnt = 0;
+ while (1) {
+ n0 = (unsigned char *)ldap_utf8next((char *)p0);
+ n1 = (unsigned char *)ldap_utf8next((char *)p1);
+ if (n0 > t0 || n1 > t1 || cnt == n) {
+ break;
+ }
+
+ i0 = n0 - p0;
+ i1 = n1 - p1;
+ rval = i0 - i1;
+ if (rval) /* length is different */
+ goto end;
+
+ /* i0 == i1: same length */
+ for (x0 = p0, x1 = p1; x0 < n0; x0++, x1++) {
+ rval = *x0 - *x1;
+ if (rval)
+ goto end;
+ }
+
+ p0 = n0; p1 = n1; /* goto next */
+ cnt++;
+ }
+ if (cnt == n)
+ rval = 0;
+ else {
+ /* finished scanning the shared part and check the leftover */
+ l0 = t0 - n0;
+ l1 = t1 - n1;
+ rval = l0 - l1;
+ }
+
+end:
+ if (d0)
+ free(d0);
+ if (d1)
+ free(d1);
+
+ return rval;
+}
+
diff --git a/ldap/clients/dsgw/vcard.c b/ldap/clients/dsgw/vcard.c
new file mode 100644
index 00000000..89a6a801
--- /dev/null
+++ b/ldap/clients/dsgw/vcard.c
@@ -0,0 +1,258 @@
+/**
+ * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to
+ * license terms. Copyright © 2001 Sun Microsystems, Inc.
+ * Some preexisting portions Copyright © 2001 Netscape Communications Corp.
+ * All rights reserved.
+ */
+/*
+ * vcard.c -- vCard utility functions -- HTTP gateway
+ *
+ * Copyright (c) 1997 Netscape Communications Corp.
+ * All rights reserved.
+ */
+
+#include "dsgw.h"
+#include "dbtdsgw.h"
+#include "ldif.h"
+
+
+static int entry2vcard( LDAP *ld, char *dn, char *mimetype,
+ dsgwvcprop *vcprops, char **lderrtxtp );
+static void write_vcard_property( char *prop, char *val, char *val2,
+ int is_mls );
+static void emit_vcard_headers( char *mimetype );
+static char **vcard_ldapattrs( dsgwvcprop *vcprops );
+static void dsgw_puts( char *s );
+
+
+#define DSGW_VCARD_MIMEHDR_TEXTDIR "text/directory;profile=vcard"
+#define DSGW_VCARD_MIMEHDR_XVCARD "text/x-vcard"
+#define DSGW_VCARD_VERSION "2.1"
+#define DSGW_VCARD_PROP_VERSION "VERSION"
+#define DSGW_VCARD_PROP_BEGIN "BEGIN"
+#define DSGW_VCARD_PROP_END "END"
+#define DSGW_VCARD_BEGINEND_VALUE "vCard"
+
+
+void
+dsgw_vcard_from_entry( LDAP *ld, char *dn, char *mimetype )
+{
+ int lderr;
+ char *lderrtxt;
+
+ if (( lderr = entry2vcard( ld, dn, mimetype, gc->gc_vcardproperties,
+ &lderrtxt )) != LDAP_SUCCESS ) {
+ dsgw_error( DSGW_ERR_LDAPGENERAL, NULL, DSGW_ERROPT_EXIT, lderr,
+ lderrtxt );
+ }
+}
+
+
+/*
+ * Retrieve the LDAP entry "dn" and write a vCard representation of it
+ * to stdout.
+ */
+static int
+entry2vcard( LDAP *ld, char *dn, char *mimetype, dsgwvcprop *vcprops,
+ char **lderrtxtp )
+{
+ int i, rc, is_mls;
+ char **ldattrs, **vals, **vals2;
+ dsgwvcprop *vcp;
+ LDAPMessage *msgp, *entry;
+
+
+ ldattrs = vcard_ldapattrs( vcprops );
+
+ /* Read the entry. */
+ if (( rc = ldap_search_s( ld, dn, LDAP_SCOPE_BASE, "objectClass=*",
+ ldattrs, 0, &msgp )) != LDAP_SUCCESS ) {
+ (void)ldap_get_lderrno( ld, NULL, lderrtxtp );
+ return( rc );
+ }
+ if (( entry = ldap_first_entry( ld, msgp )) == NULL ) {
+ ldap_msgfree( msgp );
+ return( ldap_get_lderrno( ld, NULL, lderrtxtp ));
+ }
+
+ /*
+ * Output the vCard headers plus the BEGIN marker and VERSION tag.
+ * once we do this we are committed to producing a vCard MIME object
+ * so we must return LDAP_SUCCESS.
+ */
+ emit_vcard_headers( mimetype );
+ write_vcard_property( DSGW_VCARD_PROP_BEGIN, DSGW_VCARD_BEGINEND_VALUE,
+ NULL, 0 );
+ write_vcard_property( DSGW_VCARD_PROP_VERSION, DSGW_VCARD_VERSION,
+ NULL, 0 );
+
+ /* Output the properties.
+ * Note that for the secondary LDAP attribute we only use the
+ * first value returned by the server. I am sure someone won't
+ * like this but anything else is silly since the main vCard
+ * property we use a secondary LDAP attribute for is the "N"
+ * property which looks like "sn;givenName". We really have no way
+ * of knowing which surname goes with which givenName so it looks
+ * better not to create lots of "N" properties if there are multiple
+ * givenNames.
+ */
+ for ( vcp = vcprops; vcp != NULL; vcp = vcp->dsgwvcprop_next ) {
+ vals = ldap_get_values( ld, entry, vcp->dsgwvcprop_ldaptype );
+ if ( vcp->dsgwvcprop_ldaptype2 == NULL ) {
+ vals2 = NULL;
+ } else {
+ vals2 = ldap_get_values( ld, entry, vcp->dsgwvcprop_ldaptype2 );
+ }
+
+ if ( vals == NULL && vals2 == NULL ) {
+ continue;
+ }
+
+ is_mls = ( strcmp( vcp->dsgwvcprop_syntax, "mls" ) == 0 );
+
+ if ( vals != NULL ) {
+ for ( i = 0; vals[ i ] != NULL; ++i ) {
+ write_vcard_property( vcp->dsgwvcprop_property,
+ vals[i], vals2 == NULL ? NULL : vals2[0], is_mls );
+ }
+ } else {
+ for ( i = 0; vals2[ i ] != NULL; ++i ) {
+ write_vcard_property( vcp->dsgwvcprop_property,
+ NULL, vals2[i], is_mls );
+ }
+ }
+
+ if ( vals != NULL ) {
+ ldap_value_free( vals );
+ }
+ if ( vals2 != NULL ) {
+ ldap_value_free( vals2 );
+ }
+ }
+
+
+ /* Output the vCard END marker. */
+ write_vcard_property( DSGW_VCARD_PROP_END, DSGW_VCARD_BEGINEND_VALUE,
+ NULL, 0 );
+
+ /* Cleanup after ourselves. */
+ ldap_msgfree( msgp );
+
+ return( LDAP_SUCCESS );
+}
+
+
+/*
+ * output a single vCard text property.
+ */
+static void
+write_vcard_property( char *prop, char *val, char *val2, int is_mls )
+{
+ char *s, *p, *tmpv, *mlsv;
+
+ tmpv = mlsv = NULL;
+
+ if ( val == NULL ) {
+ val = "";
+ }
+
+ if ( val2 != NULL ) {
+ tmpv = (char *)dsgw_ch_malloc( strlen( val ) + strlen( val2 ) + 2 );
+ sprintf( tmpv, "%s;%s", val, val2 );
+ val = tmpv;
+ }
+
+ if ( is_mls ) {
+ val = mlsv = dsgw_mls_convertlines( val, ";", NULL, 0, 0 );
+ }
+
+ if (( s = ldif_type_and_value( prop, val, strlen( val ))) != NULL ) {
+ /*
+ * vCard base64 rules are different than for LDIF so check and repair
+ * if necessary.
+ */
+ if (( p = strchr( s, ':' )) != NULL && *(p+1) == ':' ) {
+ *p++ = '\0'; ++p;
+ dsgw_emits( s );
+ dsgw_emits( ";BASE64:\n " );
+ dsgw_emits( p );
+ dsgw_emits( "\n" );
+ } else {
+ dsgw_emits( s );
+ }
+ free( s );
+ }
+
+ if ( tmpv != NULL ) {
+ free( tmpv );
+ }
+ if ( mlsv != NULL ) {
+ free( mlsv );
+ }
+}
+
+
+/*
+ * emit vCard Content-Type header, etc.
+ */
+static void
+emit_vcard_headers( char *mimetype )
+{
+ if ( mimetype == NULL || *mimetype == '\0' ) {
+ mimetype = DSGW_VCARD_MIMEHDR_TEXTDIR; /* default */
+ }
+
+ dsgw_puts( "Content-Type: " );
+ dsgw_puts( mimetype );
+ if ( gc->gc_charset != NULL && *gc->gc_charset != '\0' ) {
+ dsgw_puts( ";charset=" );
+ dsgw_puts( gc->gc_charset );
+ }
+ dsgw_puts( "\n\n" );
+}
+
+
+/*
+ * output a simple string without charset conversion (used for MIME headers)
+ */
+static void
+dsgw_puts( char *s )
+{
+ dsgw_fputn( stdout, s, strlen( s ));
+}
+
+
+/*
+ * return list of LDAP attributes we need to fetch
+ */
+static char **
+vcard_ldapattrs( dsgwvcprop *vcprops )
+{
+ dsgwvcprop *vcp;
+ int count;
+ static char **attrs = NULL;
+
+ if ( attrs != NULL ) {
+ return( attrs );
+ }
+
+ count = 0;
+ for ( vcp = vcprops; vcp != NULL; vcp = vcp->dsgwvcprop_next ) {
+ ++count;
+ if ( vcp->dsgwvcprop_ldaptype2 != NULL ) {
+ ++count;
+ }
+ }
+
+ attrs = (char **)dsgw_ch_malloc(( count + 1 ) * sizeof( char * ));
+ count = 0;
+ for ( vcp = vcprops; vcp != NULL; vcp = vcp->dsgwvcprop_next ) {
+ attrs[ count++ ] = vcp->dsgwvcprop_ldaptype;
+ if ( vcp->dsgwvcprop_ldaptype2 != NULL ) {
+ attrs[ count++ ] = vcp->dsgwvcprop_ldaptype2;
+ }
+ }
+ attrs[ count ] = NULL;
+
+ return( attrs );
+}