summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRich Megginson <rmeggins@redhat.com>2007-07-18 20:37:12 +0000
committerRich Megginson <rmeggins@redhat.com>2007-07-18 20:37:12 +0000
commit9dc51a21f16bc27e5d50ff072d6c94c301227efc (patch)
tree1b2f12e962ff74f39394b560f68fd0168bc6be01
parent1190f204bf5e3a18e759dbb6308e2e7e17dfba2a (diff)
downloadds-9dc51a21f16bc27e5d50ff072d6c94c301227efc.tar.gz
ds-9dc51a21f16bc27e5d50ff072d6c94c301227efc.tar.xz
ds-9dc51a21f16bc27e5d50ff072d6c94c301227efc.zip
Resolves: bug 248145
Bug Description: Replace ds_newinst binary with perl script - remove dead code Reviewed by: nhosoi (Thanks!) Fix Description: This is my favorite part - removing all of the now dead code. I also had to fix the exit code so that you could use $? to test for the success or failure of the new setup scripts. Platforms tested: RHEL4, FC6 Flag Day: no Doc impact: no
-rw-r--r--Makefile.am46
-rw-r--r--Makefile.in374
-rw-r--r--bchecker.ini3
-rw-r--r--l10n/dirserv/de/ns-slapd.txt940
-rw-r--r--l10n/dirserv/de/ns-slapd.txt.iso8859920
-rw-r--r--l10n/dirserv/en/ns-slapd.txt1027
-rw-r--r--l10n/dirserv/es/ns-slapd.txt930
-rw-r--r--l10n/dirserv/es/ns-slapd.txt.iso8859915
-rw-r--r--l10n/dirserv/fr/ns-slapd.txt939
-rw-r--r--l10n/dirserv/fr/ns-slapd.txt.iso8859924
-rw-r--r--l10n/dirserv/ja/ns-slapd.txt1059
-rw-r--r--l10n/dirserv/ja/ns-slapd.txt.eucjp1022
-rw-r--r--ldap/admin/include/dsalib.h497
-rw-r--r--ldap/admin/include/dsalib_pw.h54
-rw-r--r--ldap/admin/include/dsalib_schema.h292
-rw-r--r--ldap/admin/include/nterrors.h765
-rw-r--r--ldap/admin/lib/dsalib_conf.c251
-rw-r--r--ldap/admin/lib/dsalib_confs.c184
-rw-r--r--ldap/admin/lib/dsalib_db.c419
-rw-r--r--ldap/admin/lib/dsalib_debug.c111
-rw-r--r--ldap/admin/lib/dsalib_dn.c481
-rw-r--r--ldap/admin/lib/dsalib_filename.c133
-rw-r--r--ldap/admin/lib/dsalib_html.c233
-rw-r--r--ldap/admin/lib/dsalib_ldif.c413
-rw-r--r--ldap/admin/lib/dsalib_location.c273
-rw-r--r--ldap/admin/lib/dsalib_pw.c169
-rw-r--r--ldap/admin/lib/dsalib_tailf.c244
-rw-r--r--ldap/admin/lib/dsalib_updown.c738
-rw-r--r--ldap/admin/lib/dsalib_util.c1212
-rw-r--r--ldap/admin/src/CGI_ENV68
-rw-r--r--ldap/admin/src/Cgi.pm102
-rw-r--r--ldap/admin/src/cfg_sspt.c1407
-rw-r--r--ldap/admin/src/cfg_sspt.h147
-rw-r--r--ldap/admin/src/configure_instance.cpp2029
-rw-r--r--ldap/admin/src/configure_instance.h90
-rw-r--r--ldap/admin/src/create_instance.c4676
-rw-r--r--ldap/admin/src/create_instance.h229
-rw-r--r--ldap/admin/src/ds_newinst.c156
-rw-r--r--ldap/admin/src/ds_newinst.pl.in399
-rw-r--r--ldap/admin/src/ds_remove_uninst.cpp360
-rw-r--r--ldap/admin/src/ds_remove_uninst.h60
-rwxr-xr-xldap/admin/src/fix_secmod_db_64105
-rw-r--r--ldap/admin/src/getConfigInfo166
-rwxr-xr-xldap/admin/src/import2info90
-rw-r--r--ldap/admin/src/init_ds_env.c95
-rw-r--r--ldap/admin/src/init_ds_env.h48
-rw-r--r--ldap/admin/src/install_keywords.h148
-rw-r--r--ldap/admin/src/instindex.cpp194
-rw-r--r--ldap/admin/src/key.rc182
-rw-r--r--ldap/admin/src/latest_file.c135
-rw-r--r--ldap/admin/src/migrateInstance581
-rw-r--r--ldap/admin/src/migrateLocalDB297
-rw-r--r--ldap/admin/src/migratePwdFile122
-rw-r--r--ldap/admin/src/migrateTo11.in644
-rw-r--r--ldap/admin/src/migrateTo41618
-rwxr-xr-xldap/admin/src/migratedsgw477
-rw-r--r--ldap/admin/src/namegen.c147
-rw-r--r--ldap/admin/src/script-gen.c147
-rw-r--r--ldap/admin/src/scripts/Setup.pm.in20
-rw-r--r--ldap/admin/src/scripts/migrate-ds.pl.in5
-rw-r--r--ldap/admin/src/scripts/setup-ds.pl.in5
-rw-r--r--ldap/admin/src/scripts/template-migrate5to73091
-rw-r--r--ldap/admin/src/scripts/template-migrate6to73127
-rw-r--r--ldap/admin/src/scripts/template-migrateInstance7586
-rw-r--r--ldap/admin/src/scripts/template-migrateTo73321
-rw-r--r--ldap/admin/src/sec_tools_wrapper66
-rw-r--r--ldap/admin/src/uname.lib201
-rwxr-xr-xldap/admin/src/updatedsgw363
-rw-r--r--ldap/clients/Makefile65
-rwxr-xr-xnsarch861
-rw-r--r--nsarch.bat40
-rw-r--r--ntversion.pl66
-rw-r--r--pumpkin.pl46
-rwxr-xr-xwrappers/ds_newinst.in58
74 files changed, 46 insertions, 42362 deletions
diff --git a/Makefile.am b/Makefile.am
index 8740967a..fbe5bef7 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -90,10 +90,10 @@ defaultgroup=@defaultgroup@
#------------------------
sbin_PROGRAMS = ns-slapd
-bin_PROGRAMS = dbscan-bin ds_newinst-bin dsktune-bin infadd-bin ldap-agent-bin \
+bin_PROGRAMS = dbscan-bin dsktune-bin infadd-bin ldap-agent-bin \
ldclt-bin ldif-bin migratecred-bin mmldif-bin pwdhash-bin rsearch-bin
-server_LTLIBRARIES = libslapd.la libds_admin.la libns-dshttpd.la
+server_LTLIBRARIES = libslapd.la libns-dshttpd.la
# this is how to add optional plugins
if enable_pam_passthru
@@ -178,17 +178,14 @@ schema_DATA = $(srcdir)/ldap/schema/00core.ldif \
$(srcdir)/ldap/schema/60pam-plugin.ldif \
$(srcdir)/ldap/schema/99user.ldif
-bin_SCRIPTS = $(srcdir)/ldap/servers/slapd/tools/rsearch/scripts/dbgen.pl \
+bin_SCRIPTS = ldap/servers/slapd/tools/rsearch/scripts/dbgen.pl \
wrappers/dbscan \
- wrappers/ds_newinst \
- ldap/admin/src/ds_newinst.pl \
wrappers/dsktune \
wrappers/infadd \
wrappers/ldap-agent \
wrappers/ldclt \
wrappers/ldif \
$(srcdir)/ldap/admin/src/logconv.pl \
- ldap/admin/src/migrateTo11 \
wrappers/migratecred \
wrappers/mmldif \
wrappers/pwdhash \
@@ -241,11 +238,7 @@ task_SCRIPTS = ldap/admin/src/scripts/template-bak2db \
ldap/admin/src/scripts/template-ns-activate.pl \
ldap/admin/src/scripts/template-ns-inactivate.pl \
ldap/admin/src/scripts/template-ns-newpwpolicy.pl \
- ldap/admin/src/scripts/template-verify-db.pl \
- $(srcdir)/ldap/admin/src/scripts/template-migrate5to7 \
- $(srcdir)/ldap/admin/src/scripts/template-migrate6to7 \
- $(srcdir)/ldap/admin/src/scripts/template-migrateInstance7 \
- $(srcdir)/ldap/admin/src/scripts/template-migrateTo7
+ ldap/admin/src/scripts/template-verify-db.pl
init_SCRIPTS = wrappers/$(PACKAGE_NAME)
@@ -305,26 +298,6 @@ libldaputil_a_CPPFLAGS = $(AM_CPPFLAGS) -I$(srcdir)/lib/ldaputil @ldapsdk_inc@ @
#////////////////////////////////////////////////////////////////
#------------------------
-# libds_admin
-#------------------------
-libds_admin_la_SOURCES = ldap/admin/lib/dsalib_conf.c \
- ldap/admin/lib/dsalib_confs.c \
- ldap/admin/lib/dsalib_db.c \
- ldap/admin/lib/dsalib_debug.c \
- ldap/admin/lib/dsalib_dn.c \
- ldap/admin/lib/dsalib_filename.c \
- ldap/admin/lib/dsalib_html.c \
- ldap/admin/lib/dsalib_ldif.c \
- ldap/admin/lib/dsalib_location.c \
- ldap/admin/lib/dsalib_pw.c \
- ldap/admin/lib/dsalib_tailf.c \
- ldap/admin/lib/dsalib_updown.c \
- ldap/admin/lib/dsalib_util.c
-
-libds_admin_la_CPPFLAGS = $(AM_CPPFLAGS) -I$(srcdir)/ldap/admin/include @ldapsdk_inc@ @nss_inc@ @nspr_inc@
-libds_admin_la_LIBADD = $(LDAPSDK_LINK) $(SASL_LINK) $(NSS_LINK) $(NSPR_LINK)
-
-#------------------------
# libns-dshttpd
#------------------------
libns_dshttpd_la_SOURCES = lib/libaccess/access_plhash.cpp \
@@ -865,17 +838,6 @@ dbscan_bin_CPPFLAGS = @db_inc@ $(AM_CPPFLAGS)
dbscan_bin_LDADD = $(NSPR_LINK) $(DB_LINK)
#------------------------
-# ds_newinst
-#------------------------
-ds_newinst_bin_SOURCES = ldap/admin/src/cfg_sspt.c \
- ldap/admin/src/create_instance.c \
- ldap/admin/src/ds_newinst.c \
- ldap/admin/src/script-gen.c
-
-ds_newinst_bin_CPPFLAGS = $(AM_CPPFLAGS) -I$(srcdir)/ldap/admin/include @ldapsdk_inc@ @nss_inc@ @nspr_inc@
-ds_newinst_bin_LDADD = libds_admin.la $(NSPR_LINK) $(NSS_LINK) $(LDAPSDK_LINK) $(SASL_LINK) $(LIBNSL) $(LIBSOCKET)
-
-#------------------------
# dsktune
#------------------------
dsktune_bin_SOURCES = ldap/systools/idsktune.c \
diff --git a/Makefile.in b/Makefile.in
index 7cd50bc8..2971317c 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -41,10 +41,9 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
sbin_PROGRAMS = ns-slapd$(EXEEXT)
-bin_PROGRAMS = dbscan-bin$(EXEEXT) ds_newinst-bin$(EXEEXT) \
- dsktune-bin$(EXEEXT) infadd-bin$(EXEEXT) \
- ldap-agent-bin$(EXEEXT) ldclt-bin$(EXEEXT) ldif-bin$(EXEEXT) \
- migratecred-bin$(EXEEXT) mmldif-bin$(EXEEXT) \
+bin_PROGRAMS = dbscan-bin$(EXEEXT) dsktune-bin$(EXEEXT) \
+ infadd-bin$(EXEEXT) ldap-agent-bin$(EXEEXT) ldclt-bin$(EXEEXT) \
+ ldif-bin$(EXEEXT) migratecred-bin$(EXEEXT) mmldif-bin$(EXEEXT) \
pwdhash-bin$(EXEEXT) rsearch-bin$(EXEEXT)
noinst_PROGRAMS = makstrdb$(EXEEXT)
@SOLARIS_TRUE@am__append_1 = ldap/servers/slapd/tools/ldclt/opCheck.c
@@ -246,24 +245,6 @@ am_libdna_plugin_la_OBJECTS = \
ldap/servers/plugins/dna/libdna_plugin_la-dna.lo
libdna_plugin_la_OBJECTS = $(am_libdna_plugin_la_OBJECTS)
@enable_dna_TRUE@am_libdna_plugin_la_rpath = -rpath $(serverplugindir)
-libds_admin_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-am_libds_admin_la_OBJECTS = \
- ldap/admin/lib/libds_admin_la-dsalib_conf.lo \
- ldap/admin/lib/libds_admin_la-dsalib_confs.lo \
- ldap/admin/lib/libds_admin_la-dsalib_db.lo \
- ldap/admin/lib/libds_admin_la-dsalib_debug.lo \
- ldap/admin/lib/libds_admin_la-dsalib_dn.lo \
- ldap/admin/lib/libds_admin_la-dsalib_filename.lo \
- ldap/admin/lib/libds_admin_la-dsalib_html.lo \
- ldap/admin/lib/libds_admin_la-dsalib_ldif.lo \
- ldap/admin/lib/libds_admin_la-dsalib_location.lo \
- ldap/admin/lib/libds_admin_la-dsalib_pw.lo \
- ldap/admin/lib/libds_admin_la-dsalib_tailf.lo \
- ldap/admin/lib/libds_admin_la-dsalib_updown.lo \
- ldap/admin/lib/libds_admin_la-dsalib_util.lo
-libds_admin_la_OBJECTS = $(am_libds_admin_la_OBJECTS)
libhttp_client_plugin_la_LIBADD =
am_libhttp_client_plugin_la_OBJECTS = ldap/servers/plugins/http/libhttp_client_plugin_la-http_client.lo \
ldap/servers/plugins/http/libhttp_client_plugin_la-http_impl.lo
@@ -562,16 +543,6 @@ am_dbscan_bin_OBJECTS = \
ldap/servers/slapd/tools/dbscan_bin-dbscan.$(OBJEXT)
dbscan_bin_OBJECTS = $(am_dbscan_bin_OBJECTS)
dbscan_bin_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-am_ds_newinst_bin_OBJECTS = \
- ldap/admin/src/ds_newinst_bin-cfg_sspt.$(OBJEXT) \
- ldap/admin/src/ds_newinst_bin-create_instance.$(OBJEXT) \
- ldap/admin/src/ds_newinst_bin-ds_newinst.$(OBJEXT) \
- ldap/admin/src/ds_newinst_bin-script-gen.$(OBJEXT)
-ds_newinst_bin_OBJECTS = $(am_ds_newinst_bin_OBJECTS)
-ds_newinst_bin_DEPENDENCIES = libds_admin.la $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
am_dsktune_bin_OBJECTS = ldap/systools/idsktune.$(OBJEXT) \
ldap/systools/pio.$(OBJEXT)
dsktune_bin_OBJECTS = $(am_dsktune_bin_OBJECTS)
@@ -746,7 +717,7 @@ SOURCES = $(libavl_a_SOURCES) $(libldaputil_a_SOURCES) \
$(libchainingdb_plugin_la_SOURCES) \
$(libcollation_plugin_la_SOURCES) $(libcos_plugin_la_SOURCES) \
$(libdes_plugin_la_SOURCES) $(libdistrib_plugin_la_SOURCES) \
- $(libdna_plugin_la_SOURCES) $(libds_admin_la_SOURCES) \
+ $(libdna_plugin_la_SOURCES) \
$(libhttp_client_plugin_la_SOURCES) \
$(libns_dshttpd_la_SOURCES) \
$(libpam_passthru_plugin_la_SOURCES) \
@@ -758,10 +729,9 @@ SOURCES = $(libavl_a_SOURCES) $(libldaputil_a_SOURCES) \
$(libretrocl_plugin_la_SOURCES) $(libroles_plugin_la_SOURCES) \
$(libslapd_la_SOURCES) $(libstatechange_plugin_la_SOURCES) \
$(libsyntax_plugin_la_SOURCES) $(libviews_plugin_la_SOURCES) \
- $(dbscan_bin_SOURCES) $(ds_newinst_bin_SOURCES) \
- $(dsktune_bin_SOURCES) $(infadd_bin_SOURCES) \
- $(ldap_agent_bin_SOURCES) $(ldclt_bin_SOURCES) \
- $(ldif_bin_SOURCES) $(makstrdb_SOURCES) \
+ $(dbscan_bin_SOURCES) $(dsktune_bin_SOURCES) \
+ $(infadd_bin_SOURCES) $(ldap_agent_bin_SOURCES) \
+ $(ldclt_bin_SOURCES) $(ldif_bin_SOURCES) $(makstrdb_SOURCES) \
$(migratecred_bin_SOURCES) $(mmldif_bin_SOURCES) \
$(ns_slapd_SOURCES) $(pwdhash_bin_SOURCES) \
$(rsearch_bin_SOURCES)
@@ -772,7 +742,7 @@ DIST_SOURCES = $(libavl_a_SOURCES) $(libldaputil_a_SOURCES) \
$(libchainingdb_plugin_la_SOURCES) \
$(libcollation_plugin_la_SOURCES) $(libcos_plugin_la_SOURCES) \
$(libdes_plugin_la_SOURCES) $(libdistrib_plugin_la_SOURCES) \
- $(libdna_plugin_la_SOURCES) $(libds_admin_la_SOURCES) \
+ $(libdna_plugin_la_SOURCES) \
$(libhttp_client_plugin_la_SOURCES) \
$(libns_dshttpd_la_SOURCES) \
$(libpam_passthru_plugin_la_SOURCES) \
@@ -784,13 +754,12 @@ DIST_SOURCES = $(libavl_a_SOURCES) $(libldaputil_a_SOURCES) \
$(libretrocl_plugin_la_SOURCES) $(libroles_plugin_la_SOURCES) \
$(libslapd_la_SOURCES) $(libstatechange_plugin_la_SOURCES) \
$(libsyntax_plugin_la_SOURCES) $(libviews_plugin_la_SOURCES) \
- $(dbscan_bin_SOURCES) $(ds_newinst_bin_SOURCES) \
- $(dsktune_bin_SOURCES) $(infadd_bin_SOURCES) \
- $(ldap_agent_bin_SOURCES) $(am__ldclt_bin_SOURCES_DIST) \
- $(ldif_bin_SOURCES) $(makstrdb_SOURCES) \
- $(migratecred_bin_SOURCES) $(mmldif_bin_SOURCES) \
- $(am__ns_slapd_SOURCES_DIST) $(pwdhash_bin_SOURCES) \
- $(rsearch_bin_SOURCES)
+ $(dbscan_bin_SOURCES) $(dsktune_bin_SOURCES) \
+ $(infadd_bin_SOURCES) $(ldap_agent_bin_SOURCES) \
+ $(am__ldclt_bin_SOURCES_DIST) $(ldif_bin_SOURCES) \
+ $(makstrdb_SOURCES) $(migratecred_bin_SOURCES) \
+ $(mmldif_bin_SOURCES) $(am__ns_slapd_SOURCES_DIST) \
+ $(pwdhash_bin_SOURCES) $(rsearch_bin_SOURCES)
configDATA_INSTALL = $(INSTALL_DATA)
infDATA_INSTALL = $(INSTALL_DATA)
nodist_propertyDATA_INSTALL = $(INSTALL_DATA)
@@ -1042,7 +1011,7 @@ PAM_LINK = -lpam
BUILT_SOURCES = dirver.h dberrstrs.h
CLEANFILES = dirver.h dberrstrs.h ns-slapd.properties
taskdir = $(datadir)@scripttemplatedir@
-server_LTLIBRARIES = libslapd.la libds_admin.la libns-dshttpd.la
+server_LTLIBRARIES = libslapd.la libns-dshttpd.la
# this is how to add optional plugins
@enable_pam_passthru_TRUE@LIBPAM_PASSTHRU_PLUGIN = libpam-passthru-plugin.la
@@ -1116,17 +1085,14 @@ schema_DATA = $(srcdir)/ldap/schema/00core.ldif \
$(srcdir)/ldap/schema/60pam-plugin.ldif \
$(srcdir)/ldap/schema/99user.ldif
-bin_SCRIPTS = $(srcdir)/ldap/servers/slapd/tools/rsearch/scripts/dbgen.pl \
+bin_SCRIPTS = ldap/servers/slapd/tools/rsearch/scripts/dbgen.pl \
wrappers/dbscan \
- wrappers/ds_newinst \
- ldap/admin/src/ds_newinst.pl \
wrappers/dsktune \
wrappers/infadd \
wrappers/ldap-agent \
wrappers/ldclt \
wrappers/ldif \
$(srcdir)/ldap/admin/src/logconv.pl \
- ldap/admin/src/migrateTo11 \
wrappers/migratecred \
wrappers/mmldif \
wrappers/pwdhash \
@@ -1179,11 +1145,7 @@ task_SCRIPTS = ldap/admin/src/scripts/template-bak2db \
ldap/admin/src/scripts/template-ns-activate.pl \
ldap/admin/src/scripts/template-ns-inactivate.pl \
ldap/admin/src/scripts/template-ns-newpwpolicy.pl \
- ldap/admin/src/scripts/template-verify-db.pl \
- $(srcdir)/ldap/admin/src/scripts/template-migrate5to7 \
- $(srcdir)/ldap/admin/src/scripts/template-migrate6to7 \
- $(srcdir)/ldap/admin/src/scripts/template-migrateInstance7 \
- $(srcdir)/ldap/admin/src/scripts/template-migrateTo7
+ ldap/admin/src/scripts/template-verify-db.pl
init_SCRIPTS = wrappers/$(PACKAGE_NAME)
inf_DATA = ldap/admin/src/slapd.inf \
@@ -1234,26 +1196,6 @@ libldaputil_a_CPPFLAGS = $(AM_CPPFLAGS) -I$(srcdir)/lib/ldaputil @ldapsdk_inc@ @
#////////////////////////////////////////////////////////////////
#------------------------
-# libds_admin
-#------------------------
-libds_admin_la_SOURCES = ldap/admin/lib/dsalib_conf.c \
- ldap/admin/lib/dsalib_confs.c \
- ldap/admin/lib/dsalib_db.c \
- ldap/admin/lib/dsalib_debug.c \
- ldap/admin/lib/dsalib_dn.c \
- ldap/admin/lib/dsalib_filename.c \
- ldap/admin/lib/dsalib_html.c \
- ldap/admin/lib/dsalib_ldif.c \
- ldap/admin/lib/dsalib_location.c \
- ldap/admin/lib/dsalib_pw.c \
- ldap/admin/lib/dsalib_tailf.c \
- ldap/admin/lib/dsalib_updown.c \
- ldap/admin/lib/dsalib_util.c
-
-libds_admin_la_CPPFLAGS = $(AM_CPPFLAGS) -I$(srcdir)/ldap/admin/include @ldapsdk_inc@ @nss_inc@ @nspr_inc@
-libds_admin_la_LIBADD = $(LDAPSDK_LINK) $(SASL_LINK) $(NSS_LINK) $(NSPR_LINK)
-
-#------------------------
# libns-dshttpd
#------------------------
libns_dshttpd_la_SOURCES = lib/libaccess/access_plhash.cpp \
@@ -1784,17 +1726,6 @@ dbscan_bin_CPPFLAGS = @db_inc@ $(AM_CPPFLAGS)
dbscan_bin_LDADD = $(NSPR_LINK) $(DB_LINK)
#------------------------
-# ds_newinst
-#------------------------
-ds_newinst_bin_SOURCES = ldap/admin/src/cfg_sspt.c \
- ldap/admin/src/create_instance.c \
- ldap/admin/src/ds_newinst.c \
- ldap/admin/src/script-gen.c
-
-ds_newinst_bin_CPPFLAGS = $(AM_CPPFLAGS) -I$(srcdir)/ldap/admin/include @ldapsdk_inc@ @nss_inc@ @nspr_inc@
-ds_newinst_bin_LDADD = libds_admin.la $(NSPR_LINK) $(NSS_LINK) $(LDAPSDK_LINK) $(SASL_LINK) $(LIBNSL) $(LIBSOCKET)
-
-#------------------------
# dsktune
#------------------------
dsktune_bin_SOURCES = ldap/systools/idsktune.c \
@@ -2597,53 +2528,6 @@ ldap/servers/plugins/dna/libdna_plugin_la-dna.lo: \
ldap/servers/plugins/dna/$(DEPDIR)/$(am__dirstamp)
libdna-plugin.la: $(libdna_plugin_la_OBJECTS) $(libdna_plugin_la_DEPENDENCIES)
$(LINK) $(am_libdna_plugin_la_rpath) $(libdna_plugin_la_LDFLAGS) $(libdna_plugin_la_OBJECTS) $(libdna_plugin_la_LIBADD) $(LIBS)
-ldap/admin/lib/$(am__dirstamp):
- @$(mkdir_p) ldap/admin/lib
- @: > ldap/admin/lib/$(am__dirstamp)
-ldap/admin/lib/$(DEPDIR)/$(am__dirstamp):
- @$(mkdir_p) ldap/admin/lib/$(DEPDIR)
- @: > ldap/admin/lib/$(DEPDIR)/$(am__dirstamp)
-ldap/admin/lib/libds_admin_la-dsalib_conf.lo: \
- ldap/admin/lib/$(am__dirstamp) \
- ldap/admin/lib/$(DEPDIR)/$(am__dirstamp)
-ldap/admin/lib/libds_admin_la-dsalib_confs.lo: \
- ldap/admin/lib/$(am__dirstamp) \
- ldap/admin/lib/$(DEPDIR)/$(am__dirstamp)
-ldap/admin/lib/libds_admin_la-dsalib_db.lo: \
- ldap/admin/lib/$(am__dirstamp) \
- ldap/admin/lib/$(DEPDIR)/$(am__dirstamp)
-ldap/admin/lib/libds_admin_la-dsalib_debug.lo: \
- ldap/admin/lib/$(am__dirstamp) \
- ldap/admin/lib/$(DEPDIR)/$(am__dirstamp)
-ldap/admin/lib/libds_admin_la-dsalib_dn.lo: \
- ldap/admin/lib/$(am__dirstamp) \
- ldap/admin/lib/$(DEPDIR)/$(am__dirstamp)
-ldap/admin/lib/libds_admin_la-dsalib_filename.lo: \
- ldap/admin/lib/$(am__dirstamp) \
- ldap/admin/lib/$(DEPDIR)/$(am__dirstamp)
-ldap/admin/lib/libds_admin_la-dsalib_html.lo: \
- ldap/admin/lib/$(am__dirstamp) \
- ldap/admin/lib/$(DEPDIR)/$(am__dirstamp)
-ldap/admin/lib/libds_admin_la-dsalib_ldif.lo: \
- ldap/admin/lib/$(am__dirstamp) \
- ldap/admin/lib/$(DEPDIR)/$(am__dirstamp)
-ldap/admin/lib/libds_admin_la-dsalib_location.lo: \
- ldap/admin/lib/$(am__dirstamp) \
- ldap/admin/lib/$(DEPDIR)/$(am__dirstamp)
-ldap/admin/lib/libds_admin_la-dsalib_pw.lo: \
- ldap/admin/lib/$(am__dirstamp) \
- ldap/admin/lib/$(DEPDIR)/$(am__dirstamp)
-ldap/admin/lib/libds_admin_la-dsalib_tailf.lo: \
- ldap/admin/lib/$(am__dirstamp) \
- ldap/admin/lib/$(DEPDIR)/$(am__dirstamp)
-ldap/admin/lib/libds_admin_la-dsalib_updown.lo: \
- ldap/admin/lib/$(am__dirstamp) \
- ldap/admin/lib/$(DEPDIR)/$(am__dirstamp)
-ldap/admin/lib/libds_admin_la-dsalib_util.lo: \
- ldap/admin/lib/$(am__dirstamp) \
- ldap/admin/lib/$(DEPDIR)/$(am__dirstamp)
-libds_admin.la: $(libds_admin_la_OBJECTS) $(libds_admin_la_DEPENDENCIES)
- $(LINK) -rpath $(serverdir) $(libds_admin_la_LDFLAGS) $(libds_admin_la_OBJECTS) $(libds_admin_la_LIBADD) $(LIBS)
ldap/servers/plugins/http/$(am__dirstamp):
@$(mkdir_p) ldap/servers/plugins/http
@: > ldap/servers/plugins/http/$(am__dirstamp)
@@ -3557,27 +3441,6 @@ ldap/servers/slapd/tools/dbscan_bin-dbscan.$(OBJEXT): \
dbscan-bin$(EXEEXT): $(dbscan_bin_OBJECTS) $(dbscan_bin_DEPENDENCIES)
@rm -f dbscan-bin$(EXEEXT)
$(LINK) $(dbscan_bin_LDFLAGS) $(dbscan_bin_OBJECTS) $(dbscan_bin_LDADD) $(LIBS)
-ldap/admin/src/$(am__dirstamp):
- @$(mkdir_p) ldap/admin/src
- @: > ldap/admin/src/$(am__dirstamp)
-ldap/admin/src/$(DEPDIR)/$(am__dirstamp):
- @$(mkdir_p) ldap/admin/src/$(DEPDIR)
- @: > ldap/admin/src/$(DEPDIR)/$(am__dirstamp)
-ldap/admin/src/ds_newinst_bin-cfg_sspt.$(OBJEXT): \
- ldap/admin/src/$(am__dirstamp) \
- ldap/admin/src/$(DEPDIR)/$(am__dirstamp)
-ldap/admin/src/ds_newinst_bin-create_instance.$(OBJEXT): \
- ldap/admin/src/$(am__dirstamp) \
- ldap/admin/src/$(DEPDIR)/$(am__dirstamp)
-ldap/admin/src/ds_newinst_bin-ds_newinst.$(OBJEXT): \
- ldap/admin/src/$(am__dirstamp) \
- ldap/admin/src/$(DEPDIR)/$(am__dirstamp)
-ldap/admin/src/ds_newinst_bin-script-gen.$(OBJEXT): \
- ldap/admin/src/$(am__dirstamp) \
- ldap/admin/src/$(DEPDIR)/$(am__dirstamp)
-ds_newinst-bin$(EXEEXT): $(ds_newinst_bin_OBJECTS) $(ds_newinst_bin_DEPENDENCIES)
- @rm -f ds_newinst-bin$(EXEEXT)
- $(LINK) $(ds_newinst_bin_LDFLAGS) $(ds_newinst_bin_OBJECTS) $(ds_newinst_bin_LDADD) $(LIBS)
ldap/systools/$(am__dirstamp):
@$(mkdir_p) ldap/systools
@: > ldap/systools/$(am__dirstamp)
@@ -3904,36 +3767,6 @@ uninstall-taskSCRIPTS:
mostlyclean-compile:
-rm -f *.$(OBJEXT)
- -rm -f ldap/admin/lib/libds_admin_la-dsalib_conf.$(OBJEXT)
- -rm -f ldap/admin/lib/libds_admin_la-dsalib_conf.lo
- -rm -f ldap/admin/lib/libds_admin_la-dsalib_confs.$(OBJEXT)
- -rm -f ldap/admin/lib/libds_admin_la-dsalib_confs.lo
- -rm -f ldap/admin/lib/libds_admin_la-dsalib_db.$(OBJEXT)
- -rm -f ldap/admin/lib/libds_admin_la-dsalib_db.lo
- -rm -f ldap/admin/lib/libds_admin_la-dsalib_debug.$(OBJEXT)
- -rm -f ldap/admin/lib/libds_admin_la-dsalib_debug.lo
- -rm -f ldap/admin/lib/libds_admin_la-dsalib_dn.$(OBJEXT)
- -rm -f ldap/admin/lib/libds_admin_la-dsalib_dn.lo
- -rm -f ldap/admin/lib/libds_admin_la-dsalib_filename.$(OBJEXT)
- -rm -f ldap/admin/lib/libds_admin_la-dsalib_filename.lo
- -rm -f ldap/admin/lib/libds_admin_la-dsalib_html.$(OBJEXT)
- -rm -f ldap/admin/lib/libds_admin_la-dsalib_html.lo
- -rm -f ldap/admin/lib/libds_admin_la-dsalib_ldif.$(OBJEXT)
- -rm -f ldap/admin/lib/libds_admin_la-dsalib_ldif.lo
- -rm -f ldap/admin/lib/libds_admin_la-dsalib_location.$(OBJEXT)
- -rm -f ldap/admin/lib/libds_admin_la-dsalib_location.lo
- -rm -f ldap/admin/lib/libds_admin_la-dsalib_pw.$(OBJEXT)
- -rm -f ldap/admin/lib/libds_admin_la-dsalib_pw.lo
- -rm -f ldap/admin/lib/libds_admin_la-dsalib_tailf.$(OBJEXT)
- -rm -f ldap/admin/lib/libds_admin_la-dsalib_tailf.lo
- -rm -f ldap/admin/lib/libds_admin_la-dsalib_updown.$(OBJEXT)
- -rm -f ldap/admin/lib/libds_admin_la-dsalib_updown.lo
- -rm -f ldap/admin/lib/libds_admin_la-dsalib_util.$(OBJEXT)
- -rm -f ldap/admin/lib/libds_admin_la-dsalib_util.lo
- -rm -f ldap/admin/src/ds_newinst_bin-cfg_sspt.$(OBJEXT)
- -rm -f ldap/admin/src/ds_newinst_bin-create_instance.$(OBJEXT)
- -rm -f ldap/admin/src/ds_newinst_bin-ds_newinst.$(OBJEXT)
- -rm -f ldap/admin/src/ds_newinst_bin-script-gen.$(OBJEXT)
-rm -f ldap/libraries/libavl/avl.$(OBJEXT)
-rm -f ldap/libraries/libavl/libslapd_la-avl.$(OBJEXT)
-rm -f ldap/libraries/libavl/libslapd_la-avl.lo
@@ -4719,23 +4552,6 @@ mostlyclean-compile:
distclean-compile:
-rm -f *.tab.c
-@AMDEP_TRUE@@am__include@ @am__quote@ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_conf.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_confs.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_db.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_debug.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_dn.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_filename.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_html.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_ldif.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_location.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_pw.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_tailf.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_updown.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_util.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ldap/admin/src/$(DEPDIR)/ds_newinst_bin-cfg_sspt.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ldap/admin/src/$(DEPDIR)/ds_newinst_bin-create_instance.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ldap/admin/src/$(DEPDIR)/ds_newinst_bin-ds_newinst.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@ldap/admin/src/$(DEPDIR)/ds_newinst_bin-script-gen.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@ldap/libraries/libavl/$(DEPDIR)/avl.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@ldap/libraries/libavl/$(DEPDIR)/libslapd_la-avl.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@ldap/servers/plugins/acl/$(DEPDIR)/libacl_plugin_la-acl.Plo@am__quote@
@@ -6071,97 +5887,6 @@ ldap/servers/plugins/dna/libdna_plugin_la-dna.lo: ldap/servers/plugins/dna/dna.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdna_plugin_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ldap/servers/plugins/dna/libdna_plugin_la-dna.lo `test -f 'ldap/servers/plugins/dna/dna.c' || echo '$(srcdir)/'`ldap/servers/plugins/dna/dna.c
-ldap/admin/lib/libds_admin_la-dsalib_conf.lo: ldap/admin/lib/dsalib_conf.c
-@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libds_admin_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ldap/admin/lib/libds_admin_la-dsalib_conf.lo -MD -MP -MF "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_conf.Tpo" -c -o ldap/admin/lib/libds_admin_la-dsalib_conf.lo `test -f 'ldap/admin/lib/dsalib_conf.c' || echo '$(srcdir)/'`ldap/admin/lib/dsalib_conf.c; \
-@am__fastdepCC_TRUE@ then mv -f "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_conf.Tpo" "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_conf.Plo"; else rm -f "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_conf.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ldap/admin/lib/dsalib_conf.c' object='ldap/admin/lib/libds_admin_la-dsalib_conf.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libds_admin_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ldap/admin/lib/libds_admin_la-dsalib_conf.lo `test -f 'ldap/admin/lib/dsalib_conf.c' || echo '$(srcdir)/'`ldap/admin/lib/dsalib_conf.c
-
-ldap/admin/lib/libds_admin_la-dsalib_confs.lo: ldap/admin/lib/dsalib_confs.c
-@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libds_admin_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ldap/admin/lib/libds_admin_la-dsalib_confs.lo -MD -MP -MF "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_confs.Tpo" -c -o ldap/admin/lib/libds_admin_la-dsalib_confs.lo `test -f 'ldap/admin/lib/dsalib_confs.c' || echo '$(srcdir)/'`ldap/admin/lib/dsalib_confs.c; \
-@am__fastdepCC_TRUE@ then mv -f "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_confs.Tpo" "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_confs.Plo"; else rm -f "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_confs.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ldap/admin/lib/dsalib_confs.c' object='ldap/admin/lib/libds_admin_la-dsalib_confs.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libds_admin_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ldap/admin/lib/libds_admin_la-dsalib_confs.lo `test -f 'ldap/admin/lib/dsalib_confs.c' || echo '$(srcdir)/'`ldap/admin/lib/dsalib_confs.c
-
-ldap/admin/lib/libds_admin_la-dsalib_db.lo: ldap/admin/lib/dsalib_db.c
-@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libds_admin_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ldap/admin/lib/libds_admin_la-dsalib_db.lo -MD -MP -MF "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_db.Tpo" -c -o ldap/admin/lib/libds_admin_la-dsalib_db.lo `test -f 'ldap/admin/lib/dsalib_db.c' || echo '$(srcdir)/'`ldap/admin/lib/dsalib_db.c; \
-@am__fastdepCC_TRUE@ then mv -f "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_db.Tpo" "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_db.Plo"; else rm -f "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_db.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ldap/admin/lib/dsalib_db.c' object='ldap/admin/lib/libds_admin_la-dsalib_db.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libds_admin_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ldap/admin/lib/libds_admin_la-dsalib_db.lo `test -f 'ldap/admin/lib/dsalib_db.c' || echo '$(srcdir)/'`ldap/admin/lib/dsalib_db.c
-
-ldap/admin/lib/libds_admin_la-dsalib_debug.lo: ldap/admin/lib/dsalib_debug.c
-@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libds_admin_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ldap/admin/lib/libds_admin_la-dsalib_debug.lo -MD -MP -MF "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_debug.Tpo" -c -o ldap/admin/lib/libds_admin_la-dsalib_debug.lo `test -f 'ldap/admin/lib/dsalib_debug.c' || echo '$(srcdir)/'`ldap/admin/lib/dsalib_debug.c; \
-@am__fastdepCC_TRUE@ then mv -f "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_debug.Tpo" "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_debug.Plo"; else rm -f "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_debug.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ldap/admin/lib/dsalib_debug.c' object='ldap/admin/lib/libds_admin_la-dsalib_debug.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libds_admin_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ldap/admin/lib/libds_admin_la-dsalib_debug.lo `test -f 'ldap/admin/lib/dsalib_debug.c' || echo '$(srcdir)/'`ldap/admin/lib/dsalib_debug.c
-
-ldap/admin/lib/libds_admin_la-dsalib_dn.lo: ldap/admin/lib/dsalib_dn.c
-@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libds_admin_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ldap/admin/lib/libds_admin_la-dsalib_dn.lo -MD -MP -MF "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_dn.Tpo" -c -o ldap/admin/lib/libds_admin_la-dsalib_dn.lo `test -f 'ldap/admin/lib/dsalib_dn.c' || echo '$(srcdir)/'`ldap/admin/lib/dsalib_dn.c; \
-@am__fastdepCC_TRUE@ then mv -f "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_dn.Tpo" "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_dn.Plo"; else rm -f "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_dn.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ldap/admin/lib/dsalib_dn.c' object='ldap/admin/lib/libds_admin_la-dsalib_dn.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libds_admin_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ldap/admin/lib/libds_admin_la-dsalib_dn.lo `test -f 'ldap/admin/lib/dsalib_dn.c' || echo '$(srcdir)/'`ldap/admin/lib/dsalib_dn.c
-
-ldap/admin/lib/libds_admin_la-dsalib_filename.lo: ldap/admin/lib/dsalib_filename.c
-@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libds_admin_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ldap/admin/lib/libds_admin_la-dsalib_filename.lo -MD -MP -MF "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_filename.Tpo" -c -o ldap/admin/lib/libds_admin_la-dsalib_filename.lo `test -f 'ldap/admin/lib/dsalib_filename.c' || echo '$(srcdir)/'`ldap/admin/lib/dsalib_filename.c; \
-@am__fastdepCC_TRUE@ then mv -f "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_filename.Tpo" "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_filename.Plo"; else rm -f "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_filename.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ldap/admin/lib/dsalib_filename.c' object='ldap/admin/lib/libds_admin_la-dsalib_filename.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libds_admin_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ldap/admin/lib/libds_admin_la-dsalib_filename.lo `test -f 'ldap/admin/lib/dsalib_filename.c' || echo '$(srcdir)/'`ldap/admin/lib/dsalib_filename.c
-
-ldap/admin/lib/libds_admin_la-dsalib_html.lo: ldap/admin/lib/dsalib_html.c
-@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libds_admin_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ldap/admin/lib/libds_admin_la-dsalib_html.lo -MD -MP -MF "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_html.Tpo" -c -o ldap/admin/lib/libds_admin_la-dsalib_html.lo `test -f 'ldap/admin/lib/dsalib_html.c' || echo '$(srcdir)/'`ldap/admin/lib/dsalib_html.c; \
-@am__fastdepCC_TRUE@ then mv -f "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_html.Tpo" "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_html.Plo"; else rm -f "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_html.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ldap/admin/lib/dsalib_html.c' object='ldap/admin/lib/libds_admin_la-dsalib_html.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libds_admin_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ldap/admin/lib/libds_admin_la-dsalib_html.lo `test -f 'ldap/admin/lib/dsalib_html.c' || echo '$(srcdir)/'`ldap/admin/lib/dsalib_html.c
-
-ldap/admin/lib/libds_admin_la-dsalib_ldif.lo: ldap/admin/lib/dsalib_ldif.c
-@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libds_admin_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ldap/admin/lib/libds_admin_la-dsalib_ldif.lo -MD -MP -MF "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_ldif.Tpo" -c -o ldap/admin/lib/libds_admin_la-dsalib_ldif.lo `test -f 'ldap/admin/lib/dsalib_ldif.c' || echo '$(srcdir)/'`ldap/admin/lib/dsalib_ldif.c; \
-@am__fastdepCC_TRUE@ then mv -f "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_ldif.Tpo" "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_ldif.Plo"; else rm -f "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_ldif.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ldap/admin/lib/dsalib_ldif.c' object='ldap/admin/lib/libds_admin_la-dsalib_ldif.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libds_admin_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ldap/admin/lib/libds_admin_la-dsalib_ldif.lo `test -f 'ldap/admin/lib/dsalib_ldif.c' || echo '$(srcdir)/'`ldap/admin/lib/dsalib_ldif.c
-
-ldap/admin/lib/libds_admin_la-dsalib_location.lo: ldap/admin/lib/dsalib_location.c
-@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libds_admin_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ldap/admin/lib/libds_admin_la-dsalib_location.lo -MD -MP -MF "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_location.Tpo" -c -o ldap/admin/lib/libds_admin_la-dsalib_location.lo `test -f 'ldap/admin/lib/dsalib_location.c' || echo '$(srcdir)/'`ldap/admin/lib/dsalib_location.c; \
-@am__fastdepCC_TRUE@ then mv -f "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_location.Tpo" "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_location.Plo"; else rm -f "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_location.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ldap/admin/lib/dsalib_location.c' object='ldap/admin/lib/libds_admin_la-dsalib_location.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libds_admin_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ldap/admin/lib/libds_admin_la-dsalib_location.lo `test -f 'ldap/admin/lib/dsalib_location.c' || echo '$(srcdir)/'`ldap/admin/lib/dsalib_location.c
-
-ldap/admin/lib/libds_admin_la-dsalib_pw.lo: ldap/admin/lib/dsalib_pw.c
-@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libds_admin_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ldap/admin/lib/libds_admin_la-dsalib_pw.lo -MD -MP -MF "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_pw.Tpo" -c -o ldap/admin/lib/libds_admin_la-dsalib_pw.lo `test -f 'ldap/admin/lib/dsalib_pw.c' || echo '$(srcdir)/'`ldap/admin/lib/dsalib_pw.c; \
-@am__fastdepCC_TRUE@ then mv -f "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_pw.Tpo" "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_pw.Plo"; else rm -f "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_pw.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ldap/admin/lib/dsalib_pw.c' object='ldap/admin/lib/libds_admin_la-dsalib_pw.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libds_admin_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ldap/admin/lib/libds_admin_la-dsalib_pw.lo `test -f 'ldap/admin/lib/dsalib_pw.c' || echo '$(srcdir)/'`ldap/admin/lib/dsalib_pw.c
-
-ldap/admin/lib/libds_admin_la-dsalib_tailf.lo: ldap/admin/lib/dsalib_tailf.c
-@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libds_admin_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ldap/admin/lib/libds_admin_la-dsalib_tailf.lo -MD -MP -MF "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_tailf.Tpo" -c -o ldap/admin/lib/libds_admin_la-dsalib_tailf.lo `test -f 'ldap/admin/lib/dsalib_tailf.c' || echo '$(srcdir)/'`ldap/admin/lib/dsalib_tailf.c; \
-@am__fastdepCC_TRUE@ then mv -f "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_tailf.Tpo" "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_tailf.Plo"; else rm -f "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_tailf.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ldap/admin/lib/dsalib_tailf.c' object='ldap/admin/lib/libds_admin_la-dsalib_tailf.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libds_admin_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ldap/admin/lib/libds_admin_la-dsalib_tailf.lo `test -f 'ldap/admin/lib/dsalib_tailf.c' || echo '$(srcdir)/'`ldap/admin/lib/dsalib_tailf.c
-
-ldap/admin/lib/libds_admin_la-dsalib_updown.lo: ldap/admin/lib/dsalib_updown.c
-@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libds_admin_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ldap/admin/lib/libds_admin_la-dsalib_updown.lo -MD -MP -MF "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_updown.Tpo" -c -o ldap/admin/lib/libds_admin_la-dsalib_updown.lo `test -f 'ldap/admin/lib/dsalib_updown.c' || echo '$(srcdir)/'`ldap/admin/lib/dsalib_updown.c; \
-@am__fastdepCC_TRUE@ then mv -f "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_updown.Tpo" "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_updown.Plo"; else rm -f "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_updown.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ldap/admin/lib/dsalib_updown.c' object='ldap/admin/lib/libds_admin_la-dsalib_updown.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libds_admin_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ldap/admin/lib/libds_admin_la-dsalib_updown.lo `test -f 'ldap/admin/lib/dsalib_updown.c' || echo '$(srcdir)/'`ldap/admin/lib/dsalib_updown.c
-
-ldap/admin/lib/libds_admin_la-dsalib_util.lo: ldap/admin/lib/dsalib_util.c
-@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libds_admin_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ldap/admin/lib/libds_admin_la-dsalib_util.lo -MD -MP -MF "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_util.Tpo" -c -o ldap/admin/lib/libds_admin_la-dsalib_util.lo `test -f 'ldap/admin/lib/dsalib_util.c' || echo '$(srcdir)/'`ldap/admin/lib/dsalib_util.c; \
-@am__fastdepCC_TRUE@ then mv -f "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_util.Tpo" "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_util.Plo"; else rm -f "ldap/admin/lib/$(DEPDIR)/libds_admin_la-dsalib_util.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ldap/admin/lib/dsalib_util.c' object='ldap/admin/lib/libds_admin_la-dsalib_util.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libds_admin_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ldap/admin/lib/libds_admin_la-dsalib_util.lo `test -f 'ldap/admin/lib/dsalib_util.c' || echo '$(srcdir)/'`ldap/admin/lib/dsalib_util.c
-
ldap/servers/plugins/http/libhttp_client_plugin_la-http_client.lo: ldap/servers/plugins/http/http_client.c
@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhttp_client_plugin_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ldap/servers/plugins/http/libhttp_client_plugin_la-http_client.lo -MD -MP -MF "ldap/servers/plugins/http/$(DEPDIR)/libhttp_client_plugin_la-http_client.Tpo" -c -o ldap/servers/plugins/http/libhttp_client_plugin_la-http_client.lo `test -f 'ldap/servers/plugins/http/http_client.c' || echo '$(srcdir)/'`ldap/servers/plugins/http/http_client.c; \
@am__fastdepCC_TRUE@ then mv -f "ldap/servers/plugins/http/$(DEPDIR)/libhttp_client_plugin_la-http_client.Tpo" "ldap/servers/plugins/http/$(DEPDIR)/libhttp_client_plugin_la-http_client.Plo"; else rm -f "ldap/servers/plugins/http/$(DEPDIR)/libhttp_client_plugin_la-http_client.Tpo"; exit 1; fi
@@ -7611,62 +7336,6 @@ ldap/servers/slapd/tools/dbscan_bin-dbscan.obj: ldap/servers/slapd/tools/dbscan.
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dbscan_bin_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ldap/servers/slapd/tools/dbscan_bin-dbscan.obj `if test -f 'ldap/servers/slapd/tools/dbscan.c'; then $(CYGPATH_W) 'ldap/servers/slapd/tools/dbscan.c'; else $(CYGPATH_W) '$(srcdir)/ldap/servers/slapd/tools/dbscan.c'; fi`
-ldap/admin/src/ds_newinst_bin-cfg_sspt.o: ldap/admin/src/cfg_sspt.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ds_newinst_bin_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ldap/admin/src/ds_newinst_bin-cfg_sspt.o -MD -MP -MF "ldap/admin/src/$(DEPDIR)/ds_newinst_bin-cfg_sspt.Tpo" -c -o ldap/admin/src/ds_newinst_bin-cfg_sspt.o `test -f 'ldap/admin/src/cfg_sspt.c' || echo '$(srcdir)/'`ldap/admin/src/cfg_sspt.c; \
-@am__fastdepCC_TRUE@ then mv -f "ldap/admin/src/$(DEPDIR)/ds_newinst_bin-cfg_sspt.Tpo" "ldap/admin/src/$(DEPDIR)/ds_newinst_bin-cfg_sspt.Po"; else rm -f "ldap/admin/src/$(DEPDIR)/ds_newinst_bin-cfg_sspt.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ldap/admin/src/cfg_sspt.c' object='ldap/admin/src/ds_newinst_bin-cfg_sspt.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ds_newinst_bin_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ldap/admin/src/ds_newinst_bin-cfg_sspt.o `test -f 'ldap/admin/src/cfg_sspt.c' || echo '$(srcdir)/'`ldap/admin/src/cfg_sspt.c
-
-ldap/admin/src/ds_newinst_bin-cfg_sspt.obj: ldap/admin/src/cfg_sspt.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ds_newinst_bin_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ldap/admin/src/ds_newinst_bin-cfg_sspt.obj -MD -MP -MF "ldap/admin/src/$(DEPDIR)/ds_newinst_bin-cfg_sspt.Tpo" -c -o ldap/admin/src/ds_newinst_bin-cfg_sspt.obj `if test -f 'ldap/admin/src/cfg_sspt.c'; then $(CYGPATH_W) 'ldap/admin/src/cfg_sspt.c'; else $(CYGPATH_W) '$(srcdir)/ldap/admin/src/cfg_sspt.c'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "ldap/admin/src/$(DEPDIR)/ds_newinst_bin-cfg_sspt.Tpo" "ldap/admin/src/$(DEPDIR)/ds_newinst_bin-cfg_sspt.Po"; else rm -f "ldap/admin/src/$(DEPDIR)/ds_newinst_bin-cfg_sspt.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ldap/admin/src/cfg_sspt.c' object='ldap/admin/src/ds_newinst_bin-cfg_sspt.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ds_newinst_bin_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ldap/admin/src/ds_newinst_bin-cfg_sspt.obj `if test -f 'ldap/admin/src/cfg_sspt.c'; then $(CYGPATH_W) 'ldap/admin/src/cfg_sspt.c'; else $(CYGPATH_W) '$(srcdir)/ldap/admin/src/cfg_sspt.c'; fi`
-
-ldap/admin/src/ds_newinst_bin-create_instance.o: ldap/admin/src/create_instance.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ds_newinst_bin_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ldap/admin/src/ds_newinst_bin-create_instance.o -MD -MP -MF "ldap/admin/src/$(DEPDIR)/ds_newinst_bin-create_instance.Tpo" -c -o ldap/admin/src/ds_newinst_bin-create_instance.o `test -f 'ldap/admin/src/create_instance.c' || echo '$(srcdir)/'`ldap/admin/src/create_instance.c; \
-@am__fastdepCC_TRUE@ then mv -f "ldap/admin/src/$(DEPDIR)/ds_newinst_bin-create_instance.Tpo" "ldap/admin/src/$(DEPDIR)/ds_newinst_bin-create_instance.Po"; else rm -f "ldap/admin/src/$(DEPDIR)/ds_newinst_bin-create_instance.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ldap/admin/src/create_instance.c' object='ldap/admin/src/ds_newinst_bin-create_instance.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ds_newinst_bin_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ldap/admin/src/ds_newinst_bin-create_instance.o `test -f 'ldap/admin/src/create_instance.c' || echo '$(srcdir)/'`ldap/admin/src/create_instance.c
-
-ldap/admin/src/ds_newinst_bin-create_instance.obj: ldap/admin/src/create_instance.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ds_newinst_bin_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ldap/admin/src/ds_newinst_bin-create_instance.obj -MD -MP -MF "ldap/admin/src/$(DEPDIR)/ds_newinst_bin-create_instance.Tpo" -c -o ldap/admin/src/ds_newinst_bin-create_instance.obj `if test -f 'ldap/admin/src/create_instance.c'; then $(CYGPATH_W) 'ldap/admin/src/create_instance.c'; else $(CYGPATH_W) '$(srcdir)/ldap/admin/src/create_instance.c'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "ldap/admin/src/$(DEPDIR)/ds_newinst_bin-create_instance.Tpo" "ldap/admin/src/$(DEPDIR)/ds_newinst_bin-create_instance.Po"; else rm -f "ldap/admin/src/$(DEPDIR)/ds_newinst_bin-create_instance.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ldap/admin/src/create_instance.c' object='ldap/admin/src/ds_newinst_bin-create_instance.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ds_newinst_bin_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ldap/admin/src/ds_newinst_bin-create_instance.obj `if test -f 'ldap/admin/src/create_instance.c'; then $(CYGPATH_W) 'ldap/admin/src/create_instance.c'; else $(CYGPATH_W) '$(srcdir)/ldap/admin/src/create_instance.c'; fi`
-
-ldap/admin/src/ds_newinst_bin-ds_newinst.o: ldap/admin/src/ds_newinst.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ds_newinst_bin_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ldap/admin/src/ds_newinst_bin-ds_newinst.o -MD -MP -MF "ldap/admin/src/$(DEPDIR)/ds_newinst_bin-ds_newinst.Tpo" -c -o ldap/admin/src/ds_newinst_bin-ds_newinst.o `test -f 'ldap/admin/src/ds_newinst.c' || echo '$(srcdir)/'`ldap/admin/src/ds_newinst.c; \
-@am__fastdepCC_TRUE@ then mv -f "ldap/admin/src/$(DEPDIR)/ds_newinst_bin-ds_newinst.Tpo" "ldap/admin/src/$(DEPDIR)/ds_newinst_bin-ds_newinst.Po"; else rm -f "ldap/admin/src/$(DEPDIR)/ds_newinst_bin-ds_newinst.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ldap/admin/src/ds_newinst.c' object='ldap/admin/src/ds_newinst_bin-ds_newinst.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ds_newinst_bin_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ldap/admin/src/ds_newinst_bin-ds_newinst.o `test -f 'ldap/admin/src/ds_newinst.c' || echo '$(srcdir)/'`ldap/admin/src/ds_newinst.c
-
-ldap/admin/src/ds_newinst_bin-ds_newinst.obj: ldap/admin/src/ds_newinst.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ds_newinst_bin_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ldap/admin/src/ds_newinst_bin-ds_newinst.obj -MD -MP -MF "ldap/admin/src/$(DEPDIR)/ds_newinst_bin-ds_newinst.Tpo" -c -o ldap/admin/src/ds_newinst_bin-ds_newinst.obj `if test -f 'ldap/admin/src/ds_newinst.c'; then $(CYGPATH_W) 'ldap/admin/src/ds_newinst.c'; else $(CYGPATH_W) '$(srcdir)/ldap/admin/src/ds_newinst.c'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "ldap/admin/src/$(DEPDIR)/ds_newinst_bin-ds_newinst.Tpo" "ldap/admin/src/$(DEPDIR)/ds_newinst_bin-ds_newinst.Po"; else rm -f "ldap/admin/src/$(DEPDIR)/ds_newinst_bin-ds_newinst.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ldap/admin/src/ds_newinst.c' object='ldap/admin/src/ds_newinst_bin-ds_newinst.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ds_newinst_bin_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ldap/admin/src/ds_newinst_bin-ds_newinst.obj `if test -f 'ldap/admin/src/ds_newinst.c'; then $(CYGPATH_W) 'ldap/admin/src/ds_newinst.c'; else $(CYGPATH_W) '$(srcdir)/ldap/admin/src/ds_newinst.c'; fi`
-
-ldap/admin/src/ds_newinst_bin-script-gen.o: ldap/admin/src/script-gen.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ds_newinst_bin_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ldap/admin/src/ds_newinst_bin-script-gen.o -MD -MP -MF "ldap/admin/src/$(DEPDIR)/ds_newinst_bin-script-gen.Tpo" -c -o ldap/admin/src/ds_newinst_bin-script-gen.o `test -f 'ldap/admin/src/script-gen.c' || echo '$(srcdir)/'`ldap/admin/src/script-gen.c; \
-@am__fastdepCC_TRUE@ then mv -f "ldap/admin/src/$(DEPDIR)/ds_newinst_bin-script-gen.Tpo" "ldap/admin/src/$(DEPDIR)/ds_newinst_bin-script-gen.Po"; else rm -f "ldap/admin/src/$(DEPDIR)/ds_newinst_bin-script-gen.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ldap/admin/src/script-gen.c' object='ldap/admin/src/ds_newinst_bin-script-gen.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ds_newinst_bin_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ldap/admin/src/ds_newinst_bin-script-gen.o `test -f 'ldap/admin/src/script-gen.c' || echo '$(srcdir)/'`ldap/admin/src/script-gen.c
-
-ldap/admin/src/ds_newinst_bin-script-gen.obj: ldap/admin/src/script-gen.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ds_newinst_bin_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ldap/admin/src/ds_newinst_bin-script-gen.obj -MD -MP -MF "ldap/admin/src/$(DEPDIR)/ds_newinst_bin-script-gen.Tpo" -c -o ldap/admin/src/ds_newinst_bin-script-gen.obj `if test -f 'ldap/admin/src/script-gen.c'; then $(CYGPATH_W) 'ldap/admin/src/script-gen.c'; else $(CYGPATH_W) '$(srcdir)/ldap/admin/src/script-gen.c'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "ldap/admin/src/$(DEPDIR)/ds_newinst_bin-script-gen.Tpo" "ldap/admin/src/$(DEPDIR)/ds_newinst_bin-script-gen.Po"; else rm -f "ldap/admin/src/$(DEPDIR)/ds_newinst_bin-script-gen.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ldap/admin/src/script-gen.c' object='ldap/admin/src/ds_newinst_bin-script-gen.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ds_newinst_bin_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ldap/admin/src/ds_newinst_bin-script-gen.obj `if test -f 'ldap/admin/src/script-gen.c'; then $(CYGPATH_W) 'ldap/admin/src/script-gen.c'; else $(CYGPATH_W) '$(srcdir)/ldap/admin/src/script-gen.c'; fi`
-
ldap/servers/slapd/tools/rsearch/infadd_bin-addthread.o: ldap/servers/slapd/tools/rsearch/addthread.c
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(infadd_bin_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ldap/servers/slapd/tools/rsearch/infadd_bin-addthread.o -MD -MP -MF "ldap/servers/slapd/tools/rsearch/$(DEPDIR)/infadd_bin-addthread.Tpo" -c -o ldap/servers/slapd/tools/rsearch/infadd_bin-addthread.o `test -f 'ldap/servers/slapd/tools/rsearch/addthread.c' || echo '$(srcdir)/'`ldap/servers/slapd/tools/rsearch/addthread.c; \
@am__fastdepCC_TRUE@ then mv -f "ldap/servers/slapd/tools/rsearch/$(DEPDIR)/infadd_bin-addthread.Tpo" "ldap/servers/slapd/tools/rsearch/$(DEPDIR)/infadd_bin-addthread.Po"; else rm -f "ldap/servers/slapd/tools/rsearch/$(DEPDIR)/infadd_bin-addthread.Tpo"; exit 1; fi
@@ -8844,7 +8513,6 @@ mostlyclean-libtool:
clean-libtool:
-rm -rf .libs _libs
- -rm -rf ldap/admin/lib/.libs ldap/admin/lib/_libs
-rm -rf ldap/libraries/libavl/.libs ldap/libraries/libavl/_libs
-rm -rf ldap/servers/plugins/acl/.libs ldap/servers/plugins/acl/_libs
-rm -rf ldap/servers/plugins/bitwise/.libs ldap/servers/plugins/bitwise/_libs
@@ -9188,10 +8856,6 @@ clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -rm -f ldap/admin/lib/$(DEPDIR)/$(am__dirstamp)
- -rm -f ldap/admin/lib/$(am__dirstamp)
- -rm -f ldap/admin/src/$(DEPDIR)/$(am__dirstamp)
- -rm -f ldap/admin/src/$(am__dirstamp)
-rm -f ldap/libraries/libavl/$(DEPDIR)/$(am__dirstamp)
-rm -f ldap/libraries/libavl/$(am__dirstamp)
-rm -f ldap/servers/plugins/acl/$(DEPDIR)/$(am__dirstamp)
@@ -9276,7 +8940,7 @@ clean-am: clean-binPROGRAMS clean-generic clean-libtool \
distclean: distclean-am
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
- -rm -rf ldap/admin/lib/$(DEPDIR) ldap/admin/src/$(DEPDIR) ldap/libraries/libavl/$(DEPDIR) ldap/servers/plugins/acl/$(DEPDIR) ldap/servers/plugins/bitwise/$(DEPDIR) ldap/servers/plugins/chainingdb/$(DEPDIR) ldap/servers/plugins/collation/$(DEPDIR) ldap/servers/plugins/cos/$(DEPDIR) ldap/servers/plugins/distrib/$(DEPDIR) ldap/servers/plugins/dna/$(DEPDIR) ldap/servers/plugins/http/$(DEPDIR) ldap/servers/plugins/pam_passthru/$(DEPDIR) ldap/servers/plugins/passthru/$(DEPDIR) ldap/servers/plugins/presence/$(DEPDIR) ldap/servers/plugins/pwdstorage/$(DEPDIR) ldap/servers/plugins/referint/$(DEPDIR) ldap/servers/plugins/replication/$(DEPDIR) ldap/servers/plugins/retrocl/$(DEPDIR) ldap/servers/plugins/rever/$(DEPDIR) ldap/servers/plugins/roles/$(DEPDIR) ldap/servers/plugins/shared/$(DEPDIR) ldap/servers/plugins/statechange/$(DEPDIR) ldap/servers/plugins/syntaxes/$(DEPDIR) ldap/servers/plugins/uiduniq/$(DEPDIR) ldap/servers/plugins/views/$(DEPDIR) ldap/servers/slapd/$(DEPDIR) ldap/servers/slapd/back-ldbm/$(DEPDIR) ldap/servers/slapd/tools/$(DEPDIR) ldap/servers/slapd/tools/ldclt/$(DEPDIR) ldap/servers/slapd/tools/rsearch/$(DEPDIR) ldap/servers/snmp/$(DEPDIR) ldap/systools/$(DEPDIR) lib/base/$(DEPDIR) lib/ldaputil/$(DEPDIR) lib/libaccess/$(DEPDIR) lib/libadmin/$(DEPDIR) lib/libsi18n/$(DEPDIR)
+ -rm -rf ldap/libraries/libavl/$(DEPDIR) ldap/servers/plugins/acl/$(DEPDIR) ldap/servers/plugins/bitwise/$(DEPDIR) ldap/servers/plugins/chainingdb/$(DEPDIR) ldap/servers/plugins/collation/$(DEPDIR) ldap/servers/plugins/cos/$(DEPDIR) ldap/servers/plugins/distrib/$(DEPDIR) ldap/servers/plugins/dna/$(DEPDIR) ldap/servers/plugins/http/$(DEPDIR) ldap/servers/plugins/pam_passthru/$(DEPDIR) ldap/servers/plugins/passthru/$(DEPDIR) ldap/servers/plugins/presence/$(DEPDIR) ldap/servers/plugins/pwdstorage/$(DEPDIR) ldap/servers/plugins/referint/$(DEPDIR) ldap/servers/plugins/replication/$(DEPDIR) ldap/servers/plugins/retrocl/$(DEPDIR) ldap/servers/plugins/rever/$(DEPDIR) ldap/servers/plugins/roles/$(DEPDIR) ldap/servers/plugins/shared/$(DEPDIR) ldap/servers/plugins/statechange/$(DEPDIR) ldap/servers/plugins/syntaxes/$(DEPDIR) ldap/servers/plugins/uiduniq/$(DEPDIR) ldap/servers/plugins/views/$(DEPDIR) ldap/servers/slapd/$(DEPDIR) ldap/servers/slapd/back-ldbm/$(DEPDIR) ldap/servers/slapd/tools/$(DEPDIR) ldap/servers/slapd/tools/ldclt/$(DEPDIR) ldap/servers/slapd/tools/rsearch/$(DEPDIR) ldap/servers/snmp/$(DEPDIR) ldap/systools/$(DEPDIR) lib/base/$(DEPDIR) lib/ldaputil/$(DEPDIR) lib/libaccess/$(DEPDIR) lib/libadmin/$(DEPDIR) lib/libsi18n/$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-hdr distclean-libtool distclean-tags
@@ -9310,7 +8974,7 @@ installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf $(top_srcdir)/autom4te.cache
- -rm -rf ldap/admin/lib/$(DEPDIR) ldap/admin/src/$(DEPDIR) ldap/libraries/libavl/$(DEPDIR) ldap/servers/plugins/acl/$(DEPDIR) ldap/servers/plugins/bitwise/$(DEPDIR) ldap/servers/plugins/chainingdb/$(DEPDIR) ldap/servers/plugins/collation/$(DEPDIR) ldap/servers/plugins/cos/$(DEPDIR) ldap/servers/plugins/distrib/$(DEPDIR) ldap/servers/plugins/dna/$(DEPDIR) ldap/servers/plugins/http/$(DEPDIR) ldap/servers/plugins/pam_passthru/$(DEPDIR) ldap/servers/plugins/passthru/$(DEPDIR) ldap/servers/plugins/presence/$(DEPDIR) ldap/servers/plugins/pwdstorage/$(DEPDIR) ldap/servers/plugins/referint/$(DEPDIR) ldap/servers/plugins/replication/$(DEPDIR) ldap/servers/plugins/retrocl/$(DEPDIR) ldap/servers/plugins/rever/$(DEPDIR) ldap/servers/plugins/roles/$(DEPDIR) ldap/servers/plugins/shared/$(DEPDIR) ldap/servers/plugins/statechange/$(DEPDIR) ldap/servers/plugins/syntaxes/$(DEPDIR) ldap/servers/plugins/uiduniq/$(DEPDIR) ldap/servers/plugins/views/$(DEPDIR) ldap/servers/slapd/$(DEPDIR) ldap/servers/slapd/back-ldbm/$(DEPDIR) ldap/servers/slapd/tools/$(DEPDIR) ldap/servers/slapd/tools/ldclt/$(DEPDIR) ldap/servers/slapd/tools/rsearch/$(DEPDIR) ldap/servers/snmp/$(DEPDIR) ldap/systools/$(DEPDIR) lib/base/$(DEPDIR) lib/ldaputil/$(DEPDIR) lib/libaccess/$(DEPDIR) lib/libadmin/$(DEPDIR) lib/libsi18n/$(DEPDIR)
+ -rm -rf ldap/libraries/libavl/$(DEPDIR) ldap/servers/plugins/acl/$(DEPDIR) ldap/servers/plugins/bitwise/$(DEPDIR) ldap/servers/plugins/chainingdb/$(DEPDIR) ldap/servers/plugins/collation/$(DEPDIR) ldap/servers/plugins/cos/$(DEPDIR) ldap/servers/plugins/distrib/$(DEPDIR) ldap/servers/plugins/dna/$(DEPDIR) ldap/servers/plugins/http/$(DEPDIR) ldap/servers/plugins/pam_passthru/$(DEPDIR) ldap/servers/plugins/passthru/$(DEPDIR) ldap/servers/plugins/presence/$(DEPDIR) ldap/servers/plugins/pwdstorage/$(DEPDIR) ldap/servers/plugins/referint/$(DEPDIR) ldap/servers/plugins/replication/$(DEPDIR) ldap/servers/plugins/retrocl/$(DEPDIR) ldap/servers/plugins/rever/$(DEPDIR) ldap/servers/plugins/roles/$(DEPDIR) ldap/servers/plugins/shared/$(DEPDIR) ldap/servers/plugins/statechange/$(DEPDIR) ldap/servers/plugins/syntaxes/$(DEPDIR) ldap/servers/plugins/uiduniq/$(DEPDIR) ldap/servers/plugins/views/$(DEPDIR) ldap/servers/slapd/$(DEPDIR) ldap/servers/slapd/back-ldbm/$(DEPDIR) ldap/servers/slapd/tools/$(DEPDIR) ldap/servers/slapd/tools/ldclt/$(DEPDIR) ldap/servers/slapd/tools/rsearch/$(DEPDIR) ldap/servers/snmp/$(DEPDIR) ldap/systools/$(DEPDIR) lib/base/$(DEPDIR) lib/ldaputil/$(DEPDIR) lib/libaccess/$(DEPDIR) lib/libadmin/$(DEPDIR) lib/libsi18n/$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
diff --git a/bchecker.ini b/bchecker.ini
deleted file mode 100644
index 4ff9a1c6..00000000
--- a/bchecker.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-checking_level full
-checking_uninit_compile on
-compiler_fault_recovery on
diff --git a/l10n/dirserv/de/ns-slapd.txt b/l10n/dirserv/de/ns-slapd.txt
deleted file mode 100644
index ba789100..00000000
--- a/l10n/dirserv/de/ns-slapd.txt
+++ /dev/null
@@ -1,940 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-/* This text file was generated by program dblink */
-
-$Revision: 1.4 $
-$Log: ns-slapd.txt,v $
-Revision 1.4 2005/04/19 22:06:50 nkinder
-Fixed licensing typo
-
-Revision 1.3 2005/04/15 22:39:17 nkinder
-155068 - Added license to source files
-
-Revision 1.2 2005/02/28 23:37:39 nkinder
-149951 - Updated source code copyrights
-
-Revision 1.1.1.1 2005/01/21 00:40:48 cvsadm
-Moving NSCP Directory Server from DirectoryBranch to TRUNK, initial drop. (foxworth)
-
-Revision 1.2.10.6 2003/09/22 19:36:39 ulfw
-Update copyright years from 2001 to 2001-2003
-
-Revision 1.2.10.5 2001/11/03 01:05:12 richm
-XXX use new copyright XXX
-
-Revision 1.2.10.4 2001/10/06 20:00:37 richm
-ns/netsite/l10n/dirserv/de/ns-slapd.txt
-1.2.10.3
-20010918
-
-Remove copyright caracter from copyright
-
-
-====================================================
-
-Revision 1.2.10.3 2001/09/18 11:48:15 rmarco
-Remove copyright caracter from copyright
-
-Revision 1.2.10.2 2001/02/13 09:59:50 rmarco
-Copyrights
-
-Revision 1.2.10.1 1998/10/10 02:13:58 ggood
-Copy from Directory40RtmBranchpoint to DirectoryBranch
-
-Revision 1.2.2.3.6.1 1998/04/04 23:16:45 mcs
-merge changes made on directory31_rtm_branch into server4_directory_branch
-
-Revision 1.2.2.3.2.1 1998/02/24 05:51:51 noriko
-Synched with server3_i18npkg_branch
-
-Revision 1.1.2.6 1997/12/31 00:28:38 werudge
-UTF8 Encoded from de/ns-slapd.txt.iso8859 : 1.1.2.6
-Based on en/ns-slapd.txt : 1.1.2.3
-
-Revision 1.1.2.6 1997/12/31 00:23:36 werudge
-Remove \n from dsgw,198 to fix JavaScript problem
-
-Revision 1.1.2.5 1997/12/19 02:03:43 werudge
-Based on en/ns-slapd.txt : 1.1.2.3
-daily 971113.1 SOLARIS-export-optimize-normal-slapd
-$EndLog$
-
-$StartStringData$
-
-de,base,-1,[$DBT: base in DB file v1 $]
-de,base,1,[nicht genügend Arbeitsspeicher zum Erstellen der Hash-Tabelle]
-de,base,2,[nicht genügend Arbeitsspeicher zum Erstellen der Hash-Tabelle]
-de,base,3,[cache_destroy: Cache-Tabellen scheinen beschädigt zu sein.]
-de,base,4,[Hash-Eintrag kann nicht zugewiesen werden]
-de,base,5,[cache_insert: Cache-Eintrag kann nicht erstellt werden]
-de,base,6,[HTTP/1.0 200 OK\nContent-type: text/html\n\n]
-de,base,7,[<H2>Netscape-Cache Statusbericht</H2>\n(<H2>Netscape cache status report</H2>)\n]
-de,base,8,[Keine Caches im System (No caches on system)<P>]
-de,base,9,[<H2>%s Cache (cache)</H2>\n]
-de,base,10,[Cacheverbindungsverhältnis (Cache hit ratio): %d/%d (%f)</P>\n</P>\n]
-de,base,11,[Cachegröße (Cache size): %d/%d</P>\n</P>\n]
-de,base,12,[Hash-Tabellengröße (Hash table size): %d</P>\n</P>\n]
-de,base,13,[mru : %d</P>\nlru : %d</P>\n]
-de,base,14,[<UL><TABLE BORDER=4> <TH>Originalspeicherbereich (Bucket)</TH> <TH>Adresse (Address)</TH> <TH>Schlüssel (Key)</TH> <TH>Zugriffsanzahl (Access Count)</TH> <TH>Löschen (Delete)</TH> <TH>Nächste (Next)</TH> <TH>LRU</TH> <TH>MRU</TH> <TH>Daten (Data)</TH>\n]
-de,base,15,[munmap failed (%s)]
-de,base,16,[munmap failed (%s)]
-de,base,17,[close failed (%s)]
-de,base,18,[daemon: unable to fork new process (%s)\n]
-de,base,19,[daemon: setsid failed (%s)\n]
-de,base,20,[daemon: can't log pid to %s (%s)\n]
-de,base,21,[warning: could not set group id to %d (%s)\n]
-de,base,22,[warning: could not set user id to %d (%s)\n]
-de,base,23,[warning: daemon is running as super-user\n]
-de,base,24,[could not determine current user name\n]
-de,base,25,[error: chroot to %s failed (%s)\n]
-de,base,27,[, address %s]
-de,base,28,[warning: statistics disabled (%s)\n]
-de,base,29,[security handshake timed out for pid %d]
-de,base,30,[warning: statistics disabled (%s)\n]
-de,base,31,[secure handshake failed (code %d)\n]
-de,base,32,[accept failed (%s)]
-de,base,33,[warning: statistics disabled (%s)\n]
-de,base,34,[select thread miss]
-de,base,35,[keepalive worker awoken with no work to do]
-de,base,36,[could not create new thread: %d (%s)]
-de,base,37,[wait for sema succeeded, but nothing to dequeue]
-de,base,38,[queue-sema creation failure]
-de,base,39,[error getting processor info for processor %d]
-de,base,40,[Error binding to processor %d]
-de,base,41,[bound process %d to processor %d]
-de,base,42,[Netscape server is not explicitly binding to any processors.]
-de,base,43,[cache monitor exited]
-de,base,44,[cache batch update daemon exited]
-de,base,45,[Using single threaded accepts.]
-de,base,46,[Using multi threaded accepts.]
-de,base,47,[Using partial single threaded accepts.]
-de,base,48,[This machine has %d processors.]
-de,base,49,[Error calling thr_seconcurrency(%d)- (%s)]
-de,base,50,[Set conncurrency to %d.]
-de,base,51,[WARNING! netscape executable and library have different versions.\n]
-de,base,54,[seminit failed (%s)\n]
-de,base,55,[This beta software has expired.\n]
-de,base,56,[Cache monitor respawned]
-de,base,57,[Cache batch update daemon respawned]
-de,base,58,[can't find empty statistics slot]
-de,base,59,[can't fork new process (%s)]
-de,base,60,[assert failed! %s\n]
-de,base,61,[mr_table_init()]
-de,base,62,[malloc failed]
-de,base,63,[malloc failed!]
-de,base,64,[mr_add_io(%d, type %d, file %d)]
-de,base,65,[mr_add_io - stage 1]
-de,base,66,[mr_add_io - stage 2]
-de,base,67,[mr_add_io found invalid IO type %d]
-de,base,68,[mr_add_io - adding timeout]
-de,base,69,[Out of memory!\n]
-de,base,70,[done with mr_add_io]
-de,base,71,[mr_del_io(%d, type %d, file %d)]
-de,base,72,[mr_del_io found invalid IO type %d]
-de,base,73,[mr_lookup_io(%d)]
-de,base,74,[mr_async_io(%d, %d bytes, file %d)]
-de,base,75,[malloc failure adding async IO]
-de,base,76,[Error adding async io!]
-de,base,77,[Cannot seek for read!]
-de,base,78,[read failure! (%d, %s)]
-de,base,79,[do_read read %d bytes for file %d]
-de,base,80,[Cannot seek for write!]
-de,base,81,[writev failure! (%d, %s)]
-de,base,82,[write failure! (%d, %s)]
-de,base,83,[do_write wrote %d bytes for file %d]
-de,base,84,[do_timeout(mrp %d)]
-de,base,85,[do_timeout: found IO (timer=%d, time=%d)]
-de,base,86,[error deleting io]
-de,base,87,[timeout callback failure for %d\n]
-de,base,88,[mr_get_event(%d) - outstanding io %d]
-de,base,89,[mr_get_event: Waiting for reads on FD:]
-de,base,90,[mr_get_event: Waiting for writes on FD:]
-de,base,91,[ %d]
-de,base,92,[ %d]
-de,base,93,[mr_get_event set no timeout]
-de,base,94,[mr_get_event set timeout to: %d.%d sec]
-de,base,95,[error in select (%d, %s)]
-de,base,96,[mr_get_event() - select found %d]
-de,base,97,[error looking up IO fd %d]
-de,base,98,[read failed for fd %d]
-de,base,99,[error deleting io]
-de,base,100,[callback failure for %d\n]
-de,base,101,[error looking up IO fd %d]
-de,base,102,[writing: header len %d, writelen %d, total %d]
-de,base,103,[write failed for fd %d]
-de,base,104,[error deleting io]
-de,base,105,[callback failure for %d\n]
-de,base,106,[Error creating dns cache]
-de,base,107,[dns_cache_init: hash_size <= 0, using %d]
-de,base,108,[dns_cache_init: cache-size <= %d, using %d]
-de,base,109,[dns_cache_init: cache-size is %d is too large, using %d.]
-de,base,110,[dns_cache_init: expire_time <= 0, using %d]
-de,base,111,[dns_cache_init: expire is %d is too large, using %d seconds.]
-de,base,112,[Error creating dns cache]
-de,base,113,[dns-cache-insert: Error allocating entry]
-de,base,114,[dns-cache-insert: malloc failure]
-de,base,115,[successful server startup]
-de,base,116,[%s B%s]
-de,base,117,[Netscape executable and shared library have different versions]
-de,base,118,[ executable version is %s]
-de,base,119,[ shared library version is %s]
-de,base,120,[error reporting shutting down]
-de,base,121,[warning]
-de,base,122,[config]
-de,base,123,[security]
-de,base,124,[failure]
-de,base,125,[catastrophe]
-de,base,126,[info]
-de,base,127,[verbose]
-de,base,128,[event_handler:Failed to wait on events %s]
-de,base,129,[could not wait on resume event event (%s)]
-de,base,130,[dlopen of %s failed (%s)]
-de,base,131,[dlopen of %s failed (%s)]
-de,base,132,[The server is terminating due to an error. Check the event viewer for the error message. SERVER EXITING!]
-de,base,133,[Terminating the server %s]
-de,base,134,[kill_server:cannot open server event %s]
-de,base,135,[kill_server:cannot set server event %s]
-de,base,136,[error: could not get socket (%s)\n]
-de,base,137,[error: could not set socket option (%s)\n]
-de,base,138,[Terminating Service:error: could not bind to address %s port %d (%s)\n]
-de,base,139,[Terminating Service:error: could not bind to port %d (%s)\n]
-de,base,140,[SetHandleNonInheritable: could not duplicate socket (%s)]
-de,base,141,[SetHandleNonInheritable: closing the original socket failed (%s)]
-de,base,142,[Could not SetHandleInformation (%s)]
-de,base,143,[Terminating Service:Failure: Could not open statistics file (%s)\n]
-de,base,144,[Could not set Thread Local Storage Value for thread at slot %d]
-de,base,145,[secure handshake failed (code %d)\n]
-de,base,146,[accept failed %d (%s)]
-de,base,147,[Failed to pulse Event %d %s]
-de,base,148,[Failed to send MobGrowth Event to parent %s]
-de,base,149,[Pulsing MobRespawn Event %d]
-de,base,150,[respawn thread pool to %d (%d)]
-de,base,151,[Could not open event to signal rotate application. Could not create the MoveLog event:%s]
-de,base,152,[Failed to send MoveLog Event to rotate app %s]
-de,base,153,[growing thread pool from %d to %d]
-de,base,154,[Could not open the ServiceControlManager, Error %d]
-de,base,155,[StartNetsiteService:Could not open the service %s: Error %d]
-de,base,156,[StartNetsiteService:Could not start the service %s]
-de,base,157,[Service Startup: Could not allocate security descriptor]
-de,base,158,[Service Startup: Could not init security descriptor]
-de,base,159,[Service Startup: Could not set the security Dacl]
-de,base,160,[Terminating Service:WinSock init failed: %s]
-de,base,161,[Httpd Server Startup failed: %s]
-de,base,162,[can't find empty statistics slot]
-de,base,163,[NT daemon: could not create new thread %d]
-de,base,164,[Service Startup Failure. Terminating Service:Could not create event %d:%s]
-de,base,165,[Service Startup Error. Could not create the MoveLog event:%s]
-de,base,166,[Failed to wait on Event objects %s]
-de,base,167,[Failed to wait on Event objects %s]
-de,base,168,[pipebuf_buf2sd: pipebuf_grab IO_ERROR %d]
-de,base,169,[pool-init: memory pools disabled]
-de,base,170,[pool-init: free_size <= 0, using %d]
-de,base,171,[pool-create-block: out of memory]
-de,base,172,[pool-create: out of memory]
-de,base,173,[pool-create: out of memory]
-de,base,174,[pool-malloc: out of memory]
-de,base,175,[FREE() used where PERM_FREE() should have been used- problem corrected and supressing further warnings.]
-de,base,176,[regex error: %s (regex: '%s')]
-de,base,177,[can't create IPC pipe (%s)]
-de,base,178,[write to wakeup pipe failed (%s)]
-de,base,179,[flushing %d connections; current %d; tot %d]
-de,base,180,[accept failed (%s)]
-de,base,181,[Error creating time cache]
-de,base,182,[time-cache: cache disabled]
-de,base,183,[time_cache_init: hash_size < %d, using default, %d]
-de,base,184,[time_cache_init: hash_size > %d, using default, %d]
-de,base,185,[time_cache_init: cache_size < %d, using default, %d]
-de,base,186,[time_cache_init: cache_size > %d, using default, %d]
-de,base,187,[Error allocating memory for time_cache]
-de,base,188,[Error allocating memory for time_cache entry]
-de,base,189,[Error allocating memory for time_cache entry]
-de,base,190,[Error inserting new time_cache entry]
-de,base,191,[Error allocating memory for time_cache]
-de,base,192,[cs-terminate failure (%s)]
-de,base,193,[cs-init failure (%s)]
-de,base,194,[cs-wait failure (%s)]
-de,base,195,[cs-post failure (%s)]
-de,base,196,[Unable to create nonblocking socket (%s)]
-de,base,197,[error: could not set keepalive (%s)\n]
-de,base,198,[error: could not set recv timeout (%s)\n]
-de,base,199,[error: could not set send timeout (%s)\n]
-de,base,200,[Unable to create nonblocking socket (%s)]
-de,base,201,[sem_grab failed (%s)]
-de,base,202,[sem_release failed (%s)]
-de,base,203,[sem_release failed (%s)]
-de,base,204,[Could not remove temporary directory %s, Error %d]
-de,base,205,[Could not remove temporary directory %s, Error %d]
-de,dsgw,-1,[$DBT: dsgw in DB file v1 $]
-de,dsgw,1,[Unbekannte HTTP-Anforderungsmethode (Unknown HTTP request method)]
-de,dsgw,2,[Ungültige oder unvollständige HTML-Formulardaten (Invalid or incomplete HTML form data)]
-de,dsgw,3,[Nicht genügend Speicherplatz (Out of memory)]
-de,dsgw,4,[Erforderliche Anfrage-/Formulareingabe fehlt (Required query/form input is missing)]
-de,dsgw,5,[Ungültiges Zeichen im Dateipfad (Illegal character in file path)]
-de,dsgw,6,[Falsche oder fehlende Konfigurationsdatei (Bad or missing configuration file)]
-de,dsgw,7,[LDAP kann nicht initialisiert werden (Unable to initialize LDAP)]
-de,dsgw,8,[Fehler beim Aufrufen des LDAP-Server (An error occurred while contacting the LDAP server)]
-de,dsgw,9,[Unbekannter Suchobjekttyp (Unknown search object type)]
-de,dsgw,10,[Unbekanntes Attributetikett (Unknown attribute label)]
-de,dsgw,11,[Unbekannte Match-Aufforderung (Unknown match prompt)]
-de,dsgw,12,[Keine Suchfilter für Objekttyp (No search filters for object type)]
-de,dsgw,13,[HTML-Vorlagedatei kann nicht gefunden werden (Unable to open HTML template file)]
-de,dsgw,14,[Unbekannter Suchmodus - benutzen Sie "smart", "complex", "pattern" oder "auth" (Unknown search mode - use "smart", "complex", "pattern", or "auth")]
-de,dsgw,15,[Unverwechselbarer Name fehlt in der URL (Distinguished Name missing in URL)]
-de,dsgw,16,[Unbekannter Bereich in der URL (sollte "base", "sub" oder "one" sein) (Unknown scope in URL (should be base, sub, or one))]
-de,dsgw,17,[Unbekannte URL oder unbekannter Fehler (Unrecognized URL or unknown error)]
-de,dsgw,18,[Ungültiges URL-Format (Bad URL format)]
-de,dsgw,19,[Interner Fehler (Internal error)]
-de,dsgw,20,[Vorlageindexdatei kann nicht geschrieben werden (Unable to write template index file)]
-de,dsgw,21,[Vorlageindexdatei kann nicht geöffnet werden (Unable to open template index file)]
-de,dsgw,22,[Verzeichnis kann nicht gelesen werden (Unable to read directory)]
-de,dsgw,23,[Fehler bei der Initialisierung von LDAP SSL (Sicherheitspfad überprüfen) (LDAP SSL initialization failed (check the security path)]
-de,dsgw,24,[Damit die Benutzer- und Gruppenformulare mit dem Verwalter-Server via SSL ausgeführt werden können, müssen Sie oder der Systemverwalter über das Formular <B>Server-Eigenschaften|Verschlüsselung EIN/AUS</B> SSL für diesen Verwaltungsserver aktivieren aktivieren.\n(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.)]
-de,dsgw,25,[Beglaubigungsberechtigung wurde nicht in der Beglaubigungsdatenbank gefunden (Authentication credentials not found in authentication database)]
-de,dsgw,26,[Fehler beim Abrufen der Daten von der Beglaubigungsdatenbank (Error retrieving data from the authentication database)]
-de,dsgw,27,[Ihre Beglaubigungsberechtigung ist abgelaufen (Your authentication credentials have expired)]
-de,dsgw,28,[Zufalls-Zeichenfolge kann nicht erstellt werden\n(Unable to create a random string)]
-de,dsgw,29,[Beim Abrufen des Berechtigungsnachweises wurde kein unverwechselbarer Name angegeben (No distinguished name was provided when retrieving credentials)]
-de,dsgw,30,[Beglaubigungsdatenbank kann nicht geöffnet werden (Cannot open authentication database)]
-de,dsgw,31,[Daten konnten nicht an die Beglaubigungsdatenbank angehängt werden (Could not append data to the authentication database)]
-de,dsgw,32,[Es wurde kein Verzeichnisverwalter definiert (No Directory Manager is defined)]
-de,dsgw,33,[Es wurde keine Suchzeichenfolge angegeben. Bitte noch einmal versuchen (No search string was provided. Please try again)]
-de,dsgw,34,[Zu viele Argumente auf einer Zeile in der Konfigurationsdatei (Too many arguments on one line in the config. file)]
-de,dsgw,35,[Windows Sockets konnte nicht initialisiert werden (Failed to initialize Windows Sockets)]
-de,dsgw,36,[Beglaubigungsberechtigung konnte nicht vom Verwaltungs-Server abgerufen werden (Authentication credentials could not be obtained from the Administration Server)]
-de,dsgw,37,[Unverwechselbarer Name fehlt in der ldapdb:// URL (Distinguished Name missing in ldapdb:// URL)]
-de,dsgw,38,[Unbekannte URL oder unbekannter Fehler (Unrecognized URL or unknown error)]
-de,dsgw,39,[Ungültiges URL-Format (Bad URL format)]
-de,dsgw,40,[Fehler beim Initialisieren der lokalen LDAP-Datenbank\n(An error occurred while initializing the local LDAP database)]
-de,dsgw,41,[Unbekannter Verzeichnis-Servicetyp - benutzen Sie "local" oder "remote" (Unknown directory service type - use "local" or "remote")]
-de,dsgw,42,[Fehler beim Lesen der db-Konfigurationdatei (An error occurred while reading the db configuration file)]
-de,dsgw,43,[NSHOME/userdb-Pfad war NULL (NSHOME/userdb path was NULL)]
-de,dsgw,44,[Die Servicekonfiguration des Verzeichnisses konnte nicht aktualisiert werden. (The directory service configuration could not be updated.)]
-de,dsgw,45,[Der Eintrag konnte nicht im Verzeichnis gelesen werden. (The entry could not be read from the directory.)]
-de,dsgw,46,[Die LDAP-Databank konnte nicht gelöscht werden. (The LDAP database could not be erased.)]
-de,dsgw,47,[Sie dürfen keine Einträge außer Ihren eigenen ändern. (You may not change entries besides your own.)]
-de,dsgw,48,[Problem]
-de,dsgw,49,[Beglaubigungsproblem (Authentication Problem)]
-de,dsgw,50,[.\n<P>Sie müssen neu beglaubigen, ehe Sie fortfahren. (You must re-authenticate before continuing.)\n]
-de,dsgw,51,[.\n<P>Sie müssen neu beglaubigen, ehe Sie fortfahren. (You must re-authenticate before continuing.)\n]
-de,dsgw,52,[unbekannter Fehler (unknown error)]
-de,dsgw,53,[Der Vorgang war erfolgreich. (The operation was successful.)]
-de,dsgw,54,[Im Server ist ein interner Fehler aufgetreten. Das deutet gewöhnlich auf einen ernsthaften Fehler im Server hin und sollte Ihrem Serververwalter mitgeteilt werden. (An internal error occurred in the server. This usually indicates a serious malfunction in the server and should be brought to the attention of your server administrator.)]
-de,dsgw,55,[Der Server konnte die durch das Gateway an ihn gesandte Anforderung nicht verstehen. (The server could not understand the request which was sent to it by the gateway.)]
-de,dsgw,56,[Das Zeitlimit wurde bei der Ausführung Ihrer Anforderung überschritten. Die Suche nach Einträgen erzielt bessere Ergebnisse, wenn Sie Ihre Suche präziser definieren. (A time limit was exceeded in responding to your request. If you are searching for entries, you may achieve better results if you are more specific in your search.)]
-de,dsgw,57,[Das Größenlimit wurde bei der Ausführung Ihrer Anforderung überschritten. Ihre Suche nach Einträgen erzielt bessere Ergebnisse, wenn Sie Ihre Suche präziser definieren, da zu viele Einträge zu Ihren Suchkriterien paßten. (A size limit was exceeded in responding to your request. If you are searching for entries, you may achieve better results if you are more specific in your search, because too many entries matched your search criteria.)]
-de,dsgw,58,[Das Gateway versuchte, mit einer Methode auf dem Server\nzu beglaubigen, die der Server nicht versteht.\n(The gateway attempted to authenticate to the server using\na method the server doesn't understand.)]
-de,dsgw,59,[Das Gateway versuchte mit einer Beglaubigungsmethode auf dem Server zu beglaubigen, die der Server nicht unterstützt. (The gateway attempted to authenticate to the server using an authentication method which the server does not support. )]
-de,dsgw,60,[Ihre Anforderung konnte nicht ausgeführt werden, weil der aufgerufene Server wahrscheinlich nicht die von Ihnen gewünschten Daten enthält. Möglicherweise wurde die Anforderung auf einen anderen Server umgeleitet und wieder zurückgesandt, konnte jedoch nicht zurückverfolgt werden. Sollten Sie versucht haben, Änderungen im Verzeichnis vorzunehmen, dann ist der Server mit der Stammkopie möglicherweise nicht verfügbar. (Your request could not be fulfilled, probably because the server that was contacted does not contain the data you are looking for. It is possible that a referral to another server was returned but could not be followed. If you were trying to make changes to the directory, it may be that the server that holds the master copy of the data is not available.)]
-de,dsgw,61,[Ihre Anforderung hat ein Verwalterlimit auf dem Server überschritten. (Your request exceeded an administrative limit in the server.)]
-de,dsgw,62,[Eine vom Gateway angeforderte kritische Erweiterung ist auf diesem Server nicht verfügbar. (A critical extension that the gateway requested is not available in this server.)]
-de,dsgw,63,[Der Server konnte die Anforderung nicht ausführen, da sie\nsich auf ein Attribut bezieht, das nicht im\nEintrag existiert.\n(The server was unable to process the request, because the\nrequest referred to an attribute which does not exist in the\nentry.)]
-de,dsgw,64,[Der Server konnte Ihre Anforderung nicht ausführen, da\nsie gegen eine Beschränkung verstößt.\n(The server was unable to fulfill your request, because the\nrequest violates a constraint.)]
-de,dsgw,65,[Der Server konnte dem Eintrag keinen Wert hinzufügen, da dieser Wert bereits im Eintrag enthalten ist. (The server could not add a value to the entry, because that value is already contained in the entry.)]
-de,dsgw,66,[Der Server konnte diesen Eintrag nicht finden. Wird ein neuer\nWert hinzugefügt, vergewissern Sie sich, daß das übergeordnete Verzeichnis,\nfür den Eintrag, den Sie hinzufügen möchten, existiert. Erscheint diese\nFehlermeldung bei einem Suchvorgang, bedeutet das,\ndaß der von Ihnen gesuchte Eintrag nicht existiert. Wenn Sie versucht\nhaben, als Verzeichnisverwalter zu beglaubigen und diese Fehlermeldung erscheint,\ndann überprüfen Sie die Gateway-Konfigurationsdatei.\n(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.)]
-de,dsgw,67,[Ein unverwechselbarer Name hatte nicht das richtige Format. (A distinguished name was not in the proper format. )]
-de,dsgw,68,[Dem Eintrag, den Sie beglaubigen wollten, fehlt entweder der Kennwortsatz oder andere erforderliche Beglaubigungsberechtigungen. Mit dieser Eingabe können Sie erst beglaubigen, wenn der Verzeichnisverwalter die passenden Attribute hinzugefügt hat. (The entry you attempted to authenticate as does not have a password set, or is missing other required authentication credentials. You cannot authenticate as that entry until the appropriate attributes have been added by the directory manager.)]
-de,dsgw,69,[Das eingegebene Kennwort (oder andere Beglaubigungsberechtigungen)\nist falsch.\n(The password (or other authentication credentials) you supplied\nis incorrect.)]
-de,dsgw,70,[Sie sind nicht ausreichend berechtigt, um den Vorgang auszuführen. (You do not have sufficient privileges to perform the operation. )]
-de,dsgw,71,[Der Server ist belegt und kann Ihre Anforderung nicht ausführen. Versuchen Sie es in ein paar Miuten noch einmal. (The server is too busy to service your request. Try again in a few minutes.)]
-de,dsgw,72,[Der LDAP-Server konnte nicht aufgerufen werden. (The LDAP server could not be contacted.)]
-de,dsgw,73,[Der Server lehnt die Ausführung Ihrer Anforderung ab. Das bedeutet gewöhnlich, daß die Ausführung Ihrer Anforderung den Server zu sehr belastet. Es könnte möglicherweise auch bedeuten, daß der Server nicht konfiguriert ist, Ihre Anforderung auszuführen. Versuchen Sie, bei der Suche den Suchbereich einzuschränken. (The server was unwilling to process your request. Usually, this indicates that serving your request would put a heavy load on the server. It may also indicate that the server is not configured to process your request. If searching, you may wish to limit the scope of your search.)]
-de,dsgw,74,[Der Verzeichnis-Server konnte Ihrer Anforderung nicht nachkommen, da sie gegen die Schemabedingungen verstößt. Das bedeutet gewöhnlich, daß Sie keinen Wert für ein erforderliches Feld eingegeben haben. Es könnte auch bedeuten, daß das Schema im Verzeichnis-Server aktualisiert werden muß. (The directory server could not honor your request because it violates the schema requirements. Typically, this means that you have not provided a value for a required field. It could also mean that the schema in the directory server needs to be updated.)]
-de,dsgw,75,[Der Verzeichnis-Server läßt nicht zu, daß Sie einen Eintrag, der untergeordnet ist, löschen oder umbenennen. Um das zu tun, müssen Sie erst alle untergeordneten Einträge löschen. (The directory server will not allow you to delete or rename an entry if that entry has children. If you wish to do this, you must first delete all the child entries.)]
-de,dsgw,76,[Der Server konnte weder einen neuen Eintrag hinzufügen noch einen bestehenden umbenennen, da ein Eintrag unter diesem Namen bereits existiert. (The server was unable to add a new entry, or rename an existing entry, because an entry by that name already exists.)]
-de,dsgw,77,[Ihre Anforderung würde mehrere Verzeichnis-Server betreffen. (Your request would affect several directory servers.)]
-de,dsgw,78,[Der Verzeichnis-Server konnte nicht aufgerufen werden. Wenden\nSie sich an den Serververwalter.\n(The directory server could not be contacted. Contact your\n server administrator for assistance.)]
-de,dsgw,79,[Fehler beim Senden der Daten zum Server. (An error occured while sending data to the server.)]
-de,dsgw,80,[Fehler beim Lesen der Daten vom Server. (An error occured while reading data from the server.)]
-de,dsgw,81,[Der Server hat nicht auf Ihre Anforderung reagiert. Die Anforderung wurde unterbrochen. (The server did not respond to the request. The request timed out.)]
-de,dsgw,82,[Der Server unterstützt nicht die vom Gateway benutzte Beglaubigungsmethode. (The server does not support the authentication method used by the gateway.)]
-de,dsgw,83,[Der vom Gateway erstellte Suchfilter war falsch. (The search filter constructed by the gateway was in error.)]
-de,dsgw,84,[Der Vorgang wurde auf Ihren Wunsch abgebrochen. (The operation was cancelled at your request.)]
-de,dsgw,85,[Interner Fehler in der Bibliothek - ein Parameter war falsch. (An internal error occurred in the library - a parameter was incorrect.)]
-de,dsgw,86,[Verbindung zum Verzeichnis-Server konnte nicht hergestellt werden. Wenden\nSie sich an Ihren Server-Verwalter.\n(A connection to the directory server could not be opened. Contact your\nserver administrator for assistance.)]
-de,dsgw,87,[Unbekannter Fehler aufgetreten. (An unknown error was encountered.)]
-de,dsgw,88,[Eintrag existiert bereits (Entry Already Exists)]
-de,dsgw,89,[Dieser Namenseintrag (An entry named )]
-de,dsgw,90,[onMouseOver="window.status='Klicken Sie hier, um den Eintrag einzusehen'; return true"\n(onMouseOver="window.status='Click here to view this entry'; return true")]
-de,dsgw,91,[ existiert bereits (already exists).<P>Bitte anderen Namen und/oder Adresse wählen.\n(Please choose another name and/or location.\n<P>)\n]
-de,dsgw,92,[Ãœbergeordneter Eintrag existiert nicht\n(Parent entry does not exist)]
-de,dsgw,93,[Sie können einen Eintrag unter diesem Namen:\n(You cannot add an entry by the name:)<P><B>%s</B>,<P> nicht hinzufügen,\nda der übergeordnete Eintrags nicht existiert.\n(because the parent of that entry does not exist.)<P>\nEhe Sie diesen Eintrag hinzufügen, müssen Sie zunächst den dazugehörige\n(Before you can add this entry, you must first add)\n]
-de,dsgw,94,[übergeordneten Eintrag hinzufügen. (its parent.)\n]
-de,dsgw,95,[ein Eintrag unter diesem Namen (an entry named):<P><B>%s</B>.\n]
-de,dsgw,96,[Warnung: Keine Beglaubigung (wird fortgesetzt)...\n(Warning: no authentication (continuing)...)\n]
-de,dsgw,97,[%s Verzeichniseintrag (Directory Entry)]
-de,dsgw,98,[<PRE>Eingabe-DN (Entry DN): %s</PRE><P>\n]
-de,dsgw,99,[Änderungen zu <B>%s</B> wurden gespeichert.]
-de,dsgw,100,[<B>%s</B> has been added.]
-de,dsgw,101,[<B>%s</B> has been deleted.]
-de,dsgw,102,[Renamed <B>%s</B> to <B>%s</B>.]
-de,dsgw,103,[<P><B>Hinweis:</B> Da Sie den Eintrag, unter dem Sie beglaubigt\nsind, %s haben, mußte Ihre Beglaubigungsberechtigung\ngelöscht werden. Sie müssen neu beglaubig werden, um\nweitere Änderungen vornehmen zu können.\n(<B>Note:</B> because of your action on 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]
-de,dsgw,104,[gelöscht (deleted)]
-de,dsgw,105,[umbenannt (renamed)]
-de,dsgw,106,[Kennwort umbenannt für (changed the password of)]
-de,dsgw,107,[Attribut (Attribute) %s wurde geändert (was changed)<BR>\n]
-de,dsgw,108,[ NICHT (NOT) ASCII (%ld Bytes)\n]
-de,dsgw,109,[Es wurden keine Werte eingegeben. Bitte erneut versuchen.\n(No values were entered. Please try again.)\n]
-de,dsgw,110,[Es wurden keine Änderungen vorgenommen.\n]
-de,dsgw,111,[<P>%s wird an Verzeichnis-Server gesendet...\n]
-de,dsgw,112,[Information]
-de,dsgw,113,[Änderungen (changes)]
-de,dsgw,114,[<P>Eintrag erfolgreich hinzugefügt.\n(Successfully added entry.)\n]
-de,dsgw,115,[<P>Eintrag erfolgreich bearbeitet. Änderungen wurden gespeichert.\n(Successfully edited entry. Your changes have been saved.)\n]
-de,dsgw,116,[<P>Eintrag erfolgreich gelöscht.\n(Successfully deleted entry.)\n]
-de,dsgw,117,[<PRE>Der neue Eintrag heißt (The new name for the entry is): %s\n</PRE><HR>\n]
-de,dsgw,118,[<P>Eintrag erfolgreich umbenannt.\n(Successfully renamed entry.)\n]
-de,dsgw,119,[Sie müssen das alte Kennwort angeben.]
-de,dsgw,120,[Sie müssen ein neues Kennwort angeben. Bitte erneut versuchen]
-de,dsgw,121,[Neues und bestätigendes Kennwort stimmen nicht überein. Bitte erneut versuchen]
-de,dsgw,122,[<BR>%s <B>%s</B> ist bereits in Benutzung. Bitte ein anderes wählen.\n(The item shown is already in use. Please choose a different one.)<BR>\n]
-de,dsgw,123,[fehlendes Formulardatenelement (missing form data element) "%.100s"]
-de,dsgw,124,[Konfigurationsinformation wird initialisiert\n(Initializing config info)]
-de,dsgw,125,[Datei kann nicht geöffnet werden.\n(Cannot open file.)]
-de,dsgw,126,[ Konfigurationsdate der Datenbanki ist verstümmelt.\n(Malformed dbconf file.)]
-de,dsgw,127,[Eigenschaftsname in der Konfigurationsdatei der Datenbank fehlt.\n(Missing property name in dbconf file.)]
-de,dsgw,128,[Nicht genügend Arbeitspeicher. (Out of memory.)]
-de,dsgw,129,[Betriebsanweisung in der Konfigurationsdatei der Datenbank fehlt.\n(Missing directive in dbconf file.)]
-de,dsgw,130,[Konfigurationsdatei "%s" kann nicht geöffnet werden\n(Cannot open config file with name shown)\n]
-de,dsgw,131,[Argument für die Betriebsanweisung "authlifetime" fehlt\n(Missing argument for "authlifetime" directive)\n]
-de,dsgw,132,[Argument für Betriebsanweisung "dirmgr" fehlt\n(Missing argument for "dirmgr" directive)\n]
-de,dsgw,133,[Argument für Betriebsanweisung "baseurl" fehlt\n(Missing argument for "baseurl" directive)\n]
-de,dsgw,134,[Falsche URL für Betriebsanweisung "baseurl" angegeben - Basis-DN fehlt\n(Bad URL provided for "baseurl" directive - the base DN is missing)\n]
-de,dsgw,135,[Betriebsanweisung "baseurl" wird analysiert\n(parsing baseurl directive)]
-de,dsgw,136,[Falsche URL für Betriebsanweisung "baseurl" angegeben - keine "ldap://" URL\n(Bad URL provided for "baseurl" directive - not an "ldap://" URL)\n]
-de,dsgw,137,["ldaps://" URLs werden noch nicht unterstützt\n("ldaps://" URLs are not yet supported)\n]
-de,dsgw,138,[Argumente für Betriebsanweisung "template" fehlen\n(Missing arguments for "template" directive)\n]
-de,dsgw,139,[Argument für Betriebsanweisung "sslrequired" fehlt\n(Missing argument for "sslrequired" directive)\n]
-de,dsgw,140,[Unbekanntes Argument für Betriebsanweisung "sslrequired" (muß "never", "whenauthenticated"oder "always" sein)\n(Unknown argument to "sslrequired" directive (should be "never", "whenauthenticated", "always"))\n]
-de,dsgw,141,[Argument für Betriebsanweisung "securitypath" fehlt\n(Missing argument for "securitypath" directive)\n]
-de,dsgw,142,[Argument für Betriebsanweisung "location-suffix" fehlt\n(Missing argument for "location-suffix" directive)\n]
-de,dsgw,143,[Die Betriebsanweisung "location" erfordert drei Argumente\n(Three arguments are required for the "location" directive)\n]
-de,dsgw,144,[Die Betriebsanweisung "newtype" erfordert mindestens zwei Argumente\n(At least two arguments are required for the "newtype" directive)\n]
-de,dsgw,145,[Unbekannte Adresse in der Betriebsanweisung "newtype"\n(Unknown location in "newtype" directive)\n]
-de,dsgw,146,[Die Betriebsanweisung "tmplset" erfordert drei oder vier Argumente\n(Three or four arguments are required for the "tmplset" directive)\n]
-de,dsgw,147,[Die Betriebsanweisung "attrvset" erfordert vier Argumente\n(Four arguments are required for the "attrvset" directive)\n]
-de,dsgw,148,[Argument für Betriebsanweisung "charset" fehlt\n(Missing argument for "charset" directive)\n]
-de,dsgw,149,[Argument für Betriebsanweisung "ClientLanguage" fehlt\n(Missing argument for "ClientLanguage" directive)\n]
-de,dsgw,150,[Argument für Betriebsanweisung "AdminLanguage" fehlt\n(Missing argument for "AdminLanguage" directive)\n]
-de,dsgw,151,[Argument für Betriebsanweisung "DefaultLanguage" fehlt\n(Missing argument for "DefaultLanguage" directive)\n]
-de,dsgw,152,[Dateiname für Betriebsanweisung "include" fehlt\n(Missing filename for "include" directive)\n]
-de,dsgw,153,[Unbekannte Betriebsanweisung in der Konfigurationsdatei\n(Unknown directive in config file)\n]
-de,dsgw,154,[<= erase_db konnte lcache.conf-Datei "%s" nicht öffnen\n(<= erase_db could not open lcache.conf file with name shown)\n]
-de,dsgw,155,[<FONT SIZE="+1">\n<P>Die Datenbank wurde gelöscht. Neue Datenbank wird erstellt...\n(The database has been deleted. Creating new database...)\n</FONT>\n ]
-de,dsgw,156,[<FONT SIZE="+1">\n<P>Die Datenbank konnte nicht gelöscht werden\n(The database could not be deleted)\n</FONT>\n ]
-de,dsgw,157,[<= app_suffix konnte ldif-Datei "%s" nicht öffnen\n(<= app_suffix could not open ldif file with name shown)\n]
-de,dsgw,158,[<= app_suffix konnte tmp-Datei "%s" nicht öffnen\n(<= app_suffix could not open tmp file with name shown)\n]
-de,dsgw,159,[%s konnte nicht in %s umbenannt werden\n(Unable to rename with names as shown)]
-de,dsgw,160,[Leerzeiger wurde von dbconf_read_default_dbinfo() zurückgegeben.\n(null pointer returned by dbconf_read_default_dbinfo().)]
-de,dsgw,161,[Falsche "ldapdb"-URL - Basis-DN fehlt\n(Bad "ldapdb" URL - the base DN is missing)\n]
-de,dsgw,162,[Falsche "ldapdb"-URL (Bad "ldapdb" URL)\n]
-de,dsgw,163,[Falsche URL für Betriebsanweisung "baseurl" angegeben - Basis-DN fehlt \n(Bad URL provided for "baseurl" directive - the base DN is missing)\n]
-de,dsgw,164,[Betriebsanweisung "baseurl" wird analysiert\n(parsing baseurl directive)]
-de,dsgw,165,[Falsche URL für Betriebsanweisung "baseurl" angegeben - keine "ldap:// bzw. ldapdb://" URL\n(Bad URL provided for "baseurl" directive - not an "ldap:// or ldapdb://" URL)\n]
-de,dsgw,166,["ldaps://" URLs werden noch nicht unterstützt\n("ldaps://" URLs are not yet supported)\n]
-de,dsgw,167,[Kein Wert für binddn angegeben\n(No value given for binddn)]
-de,dsgw,168,[Kein Wert für bindpw angegeben\n(No value given for bindpw)]
-de,dsgw,169,[In der dbswitch.conf-Datei ist kein Standard-Verzeichnisservice angegeben\n(There is no default directory service defined in the dbswitch.conf file)]
-de,dsgw,170,[Konfigurationsdatei "%s" kann nicht zum Schreiben geöffnet werden\n(Cannot open config file with name shown for writing)\n]
-de,dsgw,171,[Kann %s nicht in %s umbenennen\n(Unable to rename with names as shown)]
-de,dsgw,172,[Konfigurationsdatei (config file) %s: ]
-de,dsgw,173,[Konfigurationsdatei (config file) %s: Zeile (line) %d: ]
-de,dsgw,174,[Max. (max) %d]
-de,dsgw,175,[ OK ]
-de,dsgw,176,[Fenster schließen (Close Window)]
-de,dsgw,177,[Zurück]
-de,dsgw,178,[{crypt}GESPERRT (LOCKED) [%s GMT]]
-de,dsgw,179,[Zurück zum Hauptbildschirm (Return to Main)]
-de,dsgw,181,[ Help ]
-de,dsgw,182,[Hilfe (Help)]
-de,dsgw,184,[Hilfe ist noch nicht verfügbar.\n(Help is not yet available.)]
-de,dsgw,186,[Fenster schließen (Close Window)]
-de,dsgw,187,[Fenster schließen (Close Window)]
-de,dsgw,188,[?template fehlt (missing ?template)]
-de,dsgw,189,[Beglaubigen...(Authenticate...)]
-de,dsgw,190,[Beglaubigungsberechtigung löschen (abmelden)?\n(Discard authentication credentials (log out)?)]
-de,dsgw,191,[Geben Sie eine Suchenzeichenfolge an\n(Please type a search string)]
-de,dsgw,192,[Um Ihren Zugriff zu dem Verzeichnis zu beglaubigen, müssen Sie sich zunächst zu\nerkennen geben.<br>Geben Sie Ihren Namen ein:\n(The first step in authenticating to the directory is identifying\nyourself.<br>Please type your name:)]
-de,dsgw,193,[Weiter (Continue)]
-de,dsgw,194,[Weiter (Continue)]
-de,dsgw,195,[Abbrechen (Cancel)]
-de,dsgw,196,[Als Verzeichnisverwalter beglaubigen"> &nbsp;(nur für Verzeichnis-Administratoren verfügbar)\n(Authenticate as directory manager"> &nbsp;(only available to Directory Administrators))\n]
-de,dsgw,197,[Beglaubigen...(Authenticate...)]
-de,dsgw,198,[Beglaubigungsberechtigung löschen? (Discard authentication credentials?)]
-de,dsgw,200,[Weiter (Continue)]
-de,dsgw,201,[Weiter (Continue)]
-de,dsgw,202,[Abbrechen (Cancel)]
-de,dsgw,203,[Zugriff zu dem Verzeichnis beglaubigen (anmelden)\n(Authenticate (log in) to the directory)]
-de,dsgw,204,[Ihr Zugriff zu dem Verzeichnis wird gleich beglaubigt werden unter \n(You are about to authenticate to the directory as) <B>%s</B>. Geben Sie zum Vervollständigen des Beglaubigungsvorgangs Ihr Kennwort ein. (To complete the authentication process, type your password.\n]
-de,dsgw,206,[Ehe Sie Einträge bearbeiten bzw. hinzufügen können, muß\nIhr Zugriff zu dem Verzeichnis beglaubigt (angemeldet) sein\n. Folgen Sie den Anweisungen für den Beglaubigungsprozeß\nauf diesem Fenster.\n(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]
-de,dsgw,207,[Ihr Zugriff zu dem Verzeichnis kann von diesem Bildschirm aus\nbeglaubigt bzw. angemeldet werden.\nSie müssen beglaubigt sein, ehe Sie Verzeichniseinträge\nändern können. Wenn Sie einen Eintrag, ohne beglaubigt zu sein, ändern möchten, dann werden Sie aufgefordert, sich anzumelden.\n(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]
-de,dsgw,208,[Beglaubigungsstatus(Authentication Status)]
-de,dsgw,209,[<form>\nIhr Zugriff zu dem Verzeichnis ist derzeitig beglaubigt unter \n(<form>\nYou are currently authenticated to the directory as )]
-de,dsgw,210,[.\nWenn Sie Ihre Beglaubigungsberechtigung löschen und sich vom Verzeichnis abmelden möchten, klicken Sie unten auf die Schaltfläche.\n(.\nIf you wish to discard your authentication credentials and log out of the directory, click on the button below.)]
-de,dsgw,211,[Beglaubigungsberechtigung löschen (abmelden)\n(Discard Authentication Credentials (log out))]
-de,dsgw,212,[Ihre Beglaubigungsberechtigung für \n(Your authentication credentials for )]
-de,dsgw,213,[ist abgelaufen (have expired).\n<HR>)\n]
-de,dsgw,214,[Ihr Zugriff zu dem Verzeichnis ist derzeitig nicht beglaubigt.\n(Currently, you are not authenticated to the directory.<HR>)\n]
-de,dsgw,215,["%s=" fehlt (missing)]
-de,dsgw,216,["%s=%s" unbekannt (unknown)]
-de,dsgw,217,[unbekannte Option (unknown option) %s ]
-de,dsgw,218,[unbekannte Syntax=%s (syntax shown unknown)\n]
-de,dsgw,219,[** HTML-Typ "%s" nicht unterstützt **<BR>\n(** HTML type shown is not supported **<BR>)\n]
-de,dsgw,224,[Bearbeiten (Edit)]
-de,dsgw,225,[Save Changes]
-de,dsgw,226,[modify]
-de,dsgw,227,[add]
-de,dsgw,228,[Löschen (Delete)]
-de,dsgw,229,[Diesen Eintrag löschen? (Delete this entry?)]
-de,dsgw,230,[Umbenennen (Rename)]
-de,dsgw,231,[Neuen Namen für diesen Eintrag eingeben:\n(Enter a new name for this entry:)]
-de,dsgw,232,[Bearbeiten unter (Edit As)]
-de,dsgw,233,[%s= fehlt (missing)]
-de,dsgw,234,[Fenster schließen (Close Window)]
-de,dsgw,235,[Bearbeiten... (Edit...)]
-de,dsgw,236,["%s=" fehlt (missing)\n]
-de,dsgw,237,[Unbekannter Satz "%s" (set shown is unknown)\n]
-de,dsgw,238,[unbekannte Syntax "%s" (unknown syntax "%s")\n]
-de,dsgw,239,[Neu beglaubigen (Re-Authenticate)]
-de,dsgw,240,[Fenster schließen (Close Window)]
-de,dsgw,241,[Möchten Sie wirklich (Do you really want to )]
-de,dsgw,242,[?]
-de,dsgw,243,[ OK ]
-de,dsgw,244,[ OK ]
-de,dsgw,245,[Zurücksetzen (Reset)]
-de,dsgw,246,[Beendet (Done)]
-de,dsgw,247,[Abbrechen (Cancel)]
-de,dsgw,248,[anderes IF gefunden (geschachtelte IFs sind nicht unterstützt)\n(found another IF (nested IFs are not supported))]
-de,dsgw,249,[ELSE wurde gefunden, aber kein IF\n(found ELSE but didn't see an IF)]
-de,dsgw,250,[ELSE nach ELSE gefunden (ENDIF erwartet)\n(found ELSE after ELSE (expecting ENDIF))]
-de,dsgw,251,[ELSE wurde gefunden, aber kein IF\n(found ELIF but didn't see an IF)]
-de,dsgw,252,[ELIF nach ELSE gefunden (ENDIF erwartet)\n(found ELIF after ELSE (expecting ENDIF))]
-de,dsgw,253,[ELDIF wurde gefunden, aber kein IF\n(found ENDIF but didn't see an IF)]
-de,dsgw,254,[<BR><B>Vorlagefehler (template error):</B> %s<BR>\n]
-de,dsgw,255,[ldap_init/lcache_init aufgerufen, ehe Konfigurationsdatei gelesen wurde\n(ldap_init/lcache_init attempted before config file read)]
-de,dsgw,256,[führt nicht unter dem Verwaltungs-Server aus\n(not running under the administration server)]
-de,dsgw,257,[Konnte Genehmigungen nicht initialisieren\n(Could not initialize permissions)]
-de,dsgw,258,[Konnte Benutzername nicht auf einem DN abbilden (Fehler vom Verwaltungs-Server)\n(Could not map username to a DN (error from admin server))]
-de,dsgw,259,[Konnte aktuellen Benutzernamen nicht aufrufen\n(Could not get current username)]
-de,dsgw,260,[Konnte aktuelles Benutzerkennwort nicht abrufen\n(Could not get current user password)]
-de,dsgw,261,[Fehler (Error): %s]
-de,dsgw,262,[Hinweis: Für diese Art von Eintrag gibt es keine Anzeigevorlage; die Eintragsart \nwird unten\nim Standarmodus angezeigt.\n(Note: there is no display template for this type of entry available, so it is\ndisplayed below using a default method.)]
-de,dsgw,263,[Ungültige Benutzer-ID bzw. NULL LDAP-Erkennung\n(Invalid user id or NULL LDAP handle)]
-de,dsgw,264,[keine Ãœbereinstimmung mit Benutzer-ID\n(no match for user id)]
-de,dsgw,265,[mehr als eine Ãœbereinstimmung mit Benutzer-ID\n(more than one match for user id)]
-de,dsgw,266,[the entire directory]
-de,dsgw,267,[Die Betriebsanweisung "includeset" erfordert zwei Argumente\n(Two arguments are required for the "includeset" directive)\n]
-de,dsgw,268,[Der angeforderte Attributwert wurde im Eintrag nicht gefunden (The attribute value requested was not found in the entry)]
-de,dsgw,269,[Argument fehlt in der "NLS"-Betriebsanweisung\n]
-de,dsgw,270,[Es muß ein NT-Benutzername angegeben werden]
-de,dsgw,271,[Die Kombination aus NT-Benutzernamen und NT-Domäne ist in diesem Verzeichnis nicht eindeutig\n]
-de,dsgw,272,[Es muß sowohl ein NT-Benutzername als auch eine NT-Domäne angegeben werden\n]
-de,dsgw,273,[Der NT-Benutzername darf nicht länger sein als 20 Zeichen.]
-de,dsgw,274,[Namen für den neuen Eintrag angeben.]
-de,dsgw,275,[Standort für den neuen Eintrag auswählen.]
-de,dsgw,276,[Neuer Eintrag]
-de,dsgw,277,[Für diese Funktion muß ein Verzeichnisverwalter in der Datei "dsgw.conf" definiert sein]
-de,dsgw,278,[Die Betriebsanweisung "vcard-property" erfordert drei oder vier Argumente.\n]
-de,dsgw,279,[DieVCard-Eigenschaft kann nur entweder "cis" oder "mls" lauten.\n]
-de,dsgw,280,[Kein Eintrag gefunden.\n%2$s]
-de,dsgw,281,[Kein Eintrag gefunden, in dem %2$s '%4$s' %3$s.\n]
-de,dsgw,282,[Kein Eintrag gefunden.\n%2$s]
-de,dsgw,283,[Kein Eintrag gefunden, in dem %2$s '%4$s' %3$s.\n]
-de,dsgw,284,[1 Eintrag gefunden.\n%2$s]
-de,dsgw,285,[1 Eintrag gefunden, in dem %2$s '%4$s' %3$s.\n]
-de,dsgw,286,[1 Eintrag gefunden.\n%2$s]
-de,dsgw,287,[1 Eintrag gefunden, in dem %2$s '%4$s' %3$s.\n]
-de,dsgw,288,[%1$li Einträge gefunden.\n%2$s]
-de,dsgw,289,[%1$li Einträge gefunden, in denen %2$s '%4$s' %3$s.\n]
-de,dsgw,290,[%1$li Einträge gefunden.\n%2$s]
-de,dsgw,291,[%1$li Einträge gefunden, in denen %2$s '%4$s' %3$s.\n]
-de,dsgw,292,[der LDAP-Filter ist]
-de,dsgw,293,[Der Server konnte den Eintrag, den Sie bei der Beglaubigung verwendet haben, nicht finden. Möglicherweise wurde der Eintrag umbenannt oder gelöscht. Bitte wiederholen Sie die Beglaubigung.]
-de,dsgw,294,[Die neue Kennwortsyntax ist ungültig.\n]
-de,dsgw,295,[Das neue Kennwort ist in der Kennwortchronik enthalten.\n]
-de,dsgw,296,[Sie haben den Grenzwert für die Wiederholung des Kennworts überschritten. Bitte wenden Sie sich an den Systemverwalter.\n]
-de,dsgw,297,[Sie haben den Grenzwert für die Wiederholung des Kennworts überschritten. Versuchen Sie es später erneut.\n]
-de,dsgw,298,[Das Kennwort ist abgelaufen. Wenden Sie sich an den Systemverwalter, um das Kennwort zurückzusetzen.\n]
-de,frame,-1,[$DBT: frame in DB file v1 $]
-de,frame,1,[<TITLE>Nicht gefunden (Not Found)</TITLE><H1>Nicht gefunden (Not Found)</H1> Das angeforderte Objekt existiert nicht auf diesem Server. Die von Ihnen verfolgte Verknüpfung ist entweder veraltet, ungenau oder der Server darf sie Ihnen nicht anbieten.\n(The requested object does not exist on this server. The link you followed is either outdated, inaccurate, or the server has been instructed not to let you have it.)]
-de,frame,2,[Informieren Sie bitte den Standortverwalter über die <A HREF="%s">, Bezugsseite </A>.\n(Please inform the site administrator of the referring page.)]
-de,frame,3,[Ihr Browser sandte eine Anforderung, die dieser Proxy-Server nicht verstehen kann.\n(Your browser sent a request that this proxy could not understand.)]
-de,frame,4,[Ordnungsgemäße Genehmigung ist für den Administrator dieses Proxy-Servers erforderlich.\nEntweder führt Ihr Browser keine Genehmigung aus oder Ihre Genehmigung ist falsch.\n(Proper authorization is required for the administration of this proxy.\nEither your browser does not perform authorization, or your authorization\nhas failed.)]
-de,frame,5,[Beglaubigung des Benutzernamens ist erforderlich, um diesen Proxy-Server zu benutzen.\n Entweder führt Ihr Browser keine Proxy-Genehmigung aus oder Ihre Genehmigung ist falsch.\n(Username authentication is required for using this proxy.\nEither your browser does not perform proxy authorization, or your\nauthorization has failed.)]
-de,frame,6,[Die Zugriffssteuerungskonfiguration des Proxy-Servers verweigert\nZugriff auf das durch diesen Proxy-Server angeforderte Objekt.\n(The proxy's access control configuration denies access to\nthe requested object through this proxy.)]
-de,frame,7,[Im Proxy-Server ist ein interner Fehler aufgetreten, so daß Ihre\nAnforderung nicht ausgeführt werden kann. Wahrscheinlich ist die Konfiguration falsch.\nBitten Sie den Administrator, nach entsprechenden Hinweisen im Fehlerprotokoll des Proxy-Servers zu suchen.\n(The proxy has encountered an internal error which prevents it from\nfulfilling your request. The most likely cause is a misconfiguration.\nPlease ask the administrator to look for messages in the proxy's error log.)]
-de,frame,8,[Dieser Proxy-Server setzt nicht die angeforderte Methode ein.\n(This proxy server does not implement the requested method.)]
-de,frame,9,[Ein Fehler ist auf dem Proxy-Server aufgetreten.\n(An error has occurred on the proxy server.)]
-de,frame,10,[Dieser Server konnte die gesendete Anfrage Ihres Browsers nicht verstehen.\n(Your browser sent a query this server could not understand.)]
-de,frame,11,[Ordnungsgemäße Genehmigung ist für diesen Bereich erforderlich. Entweder führt Ihr Browser keine Genehmigung aus oder Ihre Genehmigung ist falsch.\n(Proper authorization is required for this area. Either your browser does not perform authorization, or your authorization has failed.)]
-de,frame,12,[Ihr Client darf das angeforderte Objekt nicht abrufen.\n(Your client is not allowed to access the requested object.)]
-de,frame,13,[In diesem Server ist ein interner Fehler aufgetreten, so daß Ihre Anforderung nicht ausgeführt werden kann. Wahrscheinlich ist die Konfiguration falsch. Bitten Sie den Administrator, nach entsprechenden Hinweisen im Fehlerprotokoll des Proxy-Servers zu suchen.\n(This server has encountered an internal error which prevents it from fulfilling your request. The most likely cause is a misconfiguration. Please ask the administrator to look for messages in the server's error log.)]
-de,frame,14,[Dieser Server setzt nicht die angeforderte Methode ein.\n(This server does not implement the requested method.)]
-de,frame,15,[Ein Fehler ist aufgetreten.\n(An error has occurred.)]
-de,frame,16,[Dieser Server konnte die gesendete Meldung Ihres Browsers nicht verstehen.\n(Your browser sent a message this server could not understand.)]
-de,frame,17,[<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=iso-8859-1"><META HTTP-EQUIV="Content-Language" CONTENT="de"><TITLE>%s</TITLE></HEAD><BODY><H1>%s</H1>\nDieses Dokument wurde an einen neuen <a href="%s">Standort verschoben</a>. Aktualisieren Sie bitte Ihre Dokumente und Hotlisten entsprechend.(This document has moved to a new location. Please update your documents and hotlists accordingly.)</BODY></HTML>\n]
-de,frame,18,[<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=iso-8859-1"><META HTTP-EQUIV="Content-Language" CONTENT="de"><TITLE>%s</TITLE></HEAD>\n<BODY><H1>%s</H1>\n%s\n</BODY></HTML>]
-de,frame,19,[process-uri-objects]
-de,frame,20,[cannot find template %s]
-de,frame,21,[process-uri-objects]
-de,frame,22,[no partial path after object processing]
-de,frame,23,[find-service]
-de,frame,24,[invalid shexp %s]
-de,frame,25,[find-service]
-de,frame,26,[invalid shexp %s]
-de,frame,27,[handle-processed]
-de,frame,28,[no way to service request for %s]
-de,frame,29,[finish-socks-request]
-de,frame,30,[close failed (%s), csd=%d]
-de,frame,31,[This beta software has expired.\n]
-de,frame,32,[mr_accept(%d)]
-de,frame,33,[Error issuing read on accept socket]
-de,frame,34,[acb_accept_connection(%d)]
-de,frame,35,[Error getting accept socket (%d)]
-de,frame,36,[Error in accept! (%d, %s)]
-de,frame,37,[Error creating new accept request]
-de,frame,38,[accepted connection: %d (NSPR %d)]
-de,frame,39,[Error creating new session structure]
-de,frame,40,[accel_read_request()]
-de,frame,41,[Error allocating request read buffer]
-de,frame,42,[Error issuing async read request]
-de,frame,43,[acb_read_request(%d, bytes %d)]
-de,frame,44,[acb_read_req(1 session = %d)]
-de,frame,45,[Error reading request (%d, %s)]
-de,frame,46,[Client aborted connection]
-de,frame,47,[Error reading request]
-de,frame,48,[Error creating new request]
-de,frame,49,[error occurred, closing %d, io was for %d]
-de,frame,50,[accel_async_scan_headers()]
-de,frame,51,[out of memory: accel_async_scan_headers]
-de,frame,52,[out of memory: accel_async_scan_headers]
-de,frame,53,[Error during async read (%d, %s)]
-de,frame,54,[scan-headers reports: line too long]
-de,frame,55,[scan-headers reports: too many headers]
-de,frame,56,[Error reading headers]
-de,frame,57,[scan-headers reports: header missing terminator (an empty line)]
-de,frame,58,[scan-headers reports: header was empty]
-de,frame,59,[Name ohne Wert: Zeile "%s" erhalten\n(name without value: got line as shown)]
-de,frame,60,[accel_send_plain_file()]
-de,frame,61,[accel_send_plain_file() - found request %d]
-de,frame,62,[Parse headers lost the URI!]
-de,frame,63,[accel_send_plain_file() - found uri %s]
-de,frame,64,[accel_send_plain_file() - found in cache?]
-de,frame,65,[malloc died!]
-de,frame,66,[Error writing back file\n]
-de,frame,67,[acb_send_plain_file(%d)]
-de,frame,68,[Error writing in acb_send_plain_file (%d, %s)]
-de,frame,69,[acb_close_connection(%d)]
-de,frame,70,[Errored IO in acb_close_connection (%d, %s)]
-de,frame,71,[Unable to close socket %d]
-de,frame,72,[accel-cache-insert: Error allocating entry]
-de,frame,73,[cache-init: server cache disabled]
-de,frame,74,[accel_file_cache: Error initializing file cache]
-de,frame,75,[accel_file_cache: Error creating cache]
-de,frame,76,[accel_file_cache_init: CacheHashSize < %d, using %d]
-de,frame,77,[accel_file_cache_init: CacheHashSize > %d, using %d]
-de,frame,78,[accel_file_cache_init: MaxNumberOfCachedFiles < %d, using %d]
-de,frame,79,[accel_file_cache_init: MaxNumberOfCachedFiles > %d, using %d]
-de,frame,80,[accel_file_cache_init: MaxNumberOfOpenCachedFiles < %d, using %d]
-de,frame,81,[accel_file_cache_init: MaxNumberOfOpenCachedFiles > %d, using %d]
-de,frame,82,[accel_file_cache: Error initializing file cache]
-de,frame,83,[file-cache: enabled = %s ]
-de,frame,84,[on]
-de,frame,85,[off]
-de,frame,86,[file-cache: MaxNumberOfCachedFiles %d (0x%x)]
-de,frame,87,[file-cache: CacheHashSize %d (0x%x)]
-de,frame,88,[file-cache: MaxNumberOfOpenCachedFiles %d (0x%x)]
-de,frame,89,[accel-cache-insert: Error allocating entry]
-de,frame,90,[file-cache-cleanup: munmap failed (%s)]
-de,frame,91,[file-cache-cleanup: found mmapped file \non system without mmap]
-de,frame,92,[file_cache_init: MaxTotalCachedFileSize < %d, using %d]
-de,frame,93,[file_cache_init: MaxTotalCachedFileSize > %d, using %d]
-de,frame,94,[file cache using mmap flags 0x%x]
-de,frame,95,[file cache using mmap prots 0x%x]
-de,frame,96,[file-cache-init: could not create lock]
-de,frame,97,[file-cache: unable to create temporary directory %s.\n]
-de,frame,98,[file-cache: unable to create temporary directory %s.\n]
-de,frame,99,[file-cache: GetTempPath() Cannot find temp directory to store file!]
-de,frame,100,[file-cache-init: set max cached file size to %d]
-de,frame,101,[file-cache-init: could not create lock]
-de,frame,102,[file_cache_destroy()]
-de,frame,103,[file-cache: Unable to get temp file name. Error %s]
-de,frame,104,[file-cache: Unable to get temp file name. Error %s]
-de,frame,105,[file-cache-insert: Error allocating entry]
-de,frame,106,[file-cache-create: Error opening file %s (%s)]
-de,frame,107,[file-cache-create: Error stat()ing file %s (%s)]
-de,frame,108,[file-cache-create: Error mmap()ing file %s (%s)]
-de,frame,109,[file-cache-create: malloc failure]
-de,frame,110,[file-cache-create: error case failed to munmap(%d, %d) (%s)]
-de,frame,111,[file-cache-valid: cannot stat %s]
-de,frame,112,[dir change: invalidating %s (%d)]
-de,frame,113,[file-cache: asynchronous file change notification failed.]
-de,frame,114,[dir change: offset %d, action %d, len %d, name %s]
-de,frame,115,[unable to check async file status]
-de,frame,116,[ReadDirectoryChangesW failure- unable to continue watching %s. Error is %s]
-de,frame,117,[file-cache-add-watch failure- unable to open directory %s. Error %s]
-de,frame,118,[ReadDirectoryChangesW failure- unable to start watching %s. Error %s]
-de,frame,119,[func_exec]
-de,frame,120,[no handler function given for directive]
-de,frame,121,[func_exec]
-de,frame,122,[cannot find function named %s]
-de,frame,123,[handle-request]
-de,frame,124,[method without URI]
-de,frame,125,[http-parse-request]
-de,frame,126,[while scanning HTTP headers, %s]
-de,frame,127,[handle-request]
-de,frame,128,[read from %s failed, error is %s]
-de,frame,129,[handle-request]
-de,frame,130,[request too long]
-de,frame,131,[start-http-response]
-de,frame,132,[write failed (%s)]
-de,frame,133,[start-http-response]
-de,frame,134,[write failed (%s)]
-de,frame,135,[http-status]
-de,frame,136,[%d is not a valid HTTP status code]
-de,frame,137,[finish-request]
-de,frame,138,[close failed (%s)]
-de,frame,139,[Unable to close socket for writing]
-de,frame,140,[os has %d objects]
-de,frame,141,[obj %d has no hash table at %d]
-de,frame,142,[obj %d has no param]
-de,frame,143,[obj %d name %s value %s]
-de,frame,144,[.....directives %d.......]
-de,frame,145,[.....directive %d]
-de,frame,146,[.......instance %d]
-de,frame,147,[...........param name %s value %s]
-de,frame,148,[ClearConfigurationParameters:RegCreateKey %s]
-de,frame,149,[ClearConfigurationParameters:RegEnumKey %s failed]
-de,frame,150,[obj.conf line %d: error in filter file "%s" at line %d: %s]
-de,frame,151,[obj.conf line %d: error in filter file "%s" at line %d: %s]
-de,frame,152,[Unable to allocate Subject property list.\n]
-de,frame,153,[Unable to set session ptr in Subject property list - error=%d\n]
-de,frame,154,[Unable to set request ptr in Subject property list - error=%d\n]
-de,frame,155,[file-cache-valid: cannot stat %s]
-de,frame,156,[file-cache-create: Error stat()ing file %s (%s)]
-de,httpdaemon,-1,[$DBT: httpdaemon in DB file v1 $]
-de,httpdaemon,1,[Error in ConvertThreadToFiber]
-de,httpdaemon,2,[Error in ConvertThreadToFiber]
-de,httpdaemon,3,[Error in md_start_system]
-de,httpdaemon,4,[Error in CreateFiber - idlefiber]
-de,httpdaemon,5,[Error in GetQueuedCompletionStatus]
-de,httpdaemon,6,[Error creating completion port]
-de,httpdaemon,7,[Could not SetHandleNonInheritable (%s)]
-de,httpdaemon,8,[Error accept/read new conn]
-de,httpdaemon,9,[Error in Respond()]
-de,httpdaemon,10,[Error in RespondCompleted()]
-de,httpdaemon,11,[daemon: unable to fork new process (%s)\n]
-de,httpdaemon,12,[daemon: setsid failed (%s)\n]
-de,httpdaemon,13,[daemon: can't log pid to %s (%s)\n]
-de,httpdaemon,14,[warning: could not set group id to %d (%s)\n]
-de,httpdaemon,15,[warning: could not set user id to %d (%s)\n]
-de,httpdaemon,16,[warning: daemon is running as super-user\n]
-de,httpdaemon,17,[could not determine current user name\n]
-de,httpdaemon,18,[error: chroot to %s failed (%s)\n]
-de,httpdaemon,19,[WARNING! netscape executable and library have different versions.\n]
-de,httpdaemon,20,[startup: listening to %s://%s, port %d as %s\n]
-de,httpdaemon,21,[startup: listening to %s://%s, port %d as %s\n]
-de,httpdaemon,22,[seminit failed (%s)\n]
-de,httpdaemon,23,[Using single threaded accepts.]
-de,httpdaemon,24,[Using multi threaded accepts.]
-de,httpdaemon,25,[Using partial single threaded accepts.]
-de,httpdaemon,26,[This machine has %d processors.]
-de,httpdaemon,27,[Error calling thr_seconcurrency(%d)- (%s)]
-de,httpdaemon,28,[Set conncurrency to %d.]
-de,httpdaemon,29,[can't fork new process (%s)]
-de,httpdaemon,30,[This beta software has expired.\n]
-de,httpdaemon,31,[can't create IPC pipe (%s)]
-de,httpdaemon,32,[write to wakeup pipe failed (%s)]
-de,httpdaemon,33,[select thread miss]
-de,httpdaemon,34,[startup failure: could not bind to port %d (%s)\n]
-de,httpdaemon,35,[startup failure: could not bind to port %d, IP address %s (%s)\n]
-de,libaccess,-1,[$DBT: libaccess in DB file v1 $]
-de,libaccess,1,[basic-ncsa]
-de,libaccess,2,[cannot open database %s]
-de,libaccess,3,[basic-ncsa]
-de,libaccess,4,[user %s password did not match database %s]
-de,libaccess,5,[basic-ncsa]
-de,libaccess,6,[cannot open connection to LDAP server on %s:%d]
-de,libaccess,7,[basic-ncsa]
-de,libaccess,8,[user %s password did not match LDAP on %s:%d]
-de,libaccess,9,[acl-state]
-de,libaccess,10,[missing realm]
-de,libaccess,11,[Unable to allocate ACL List Hash\n]
-de,libaccess,12,[ACLEvalBuildContext unable to PERM_MALLOC cache structure\n]
-de,libaccess,13,[ACLEvalBuildContext unable to create hash table\n]
-de,libaccess,14,[ACLEvalBuildContext unable to allocate ACE Entry\n]
-de,libaccess,15,[ACLEvalBuildContext unable to allocate ACE entry\n]
-de,libaccess,16,[ACLEvalBuildContext unable to allocate Boundary Entry\n]
-de,libaccess,17,[ACLEvalBuildContext failed.\n]
-de,libaccess,18,[ACL_EvalTestRights: an interim, absolute non-allow value was encountered. right=%s, value=%d\n]
-de,libaccess,19,[LASDnsBuild unable to allocate hash table header\n]
-de,libaccess,20,[LASDnsBuild unable to add key %s\n]
-de,libaccess,21,[LASDnsBuild unable to add key %s\n]
-de,libaccess,22,[LASDnsBuild unable to add key %s\n]
-de,libaccess,23,[LASDnsBuild unable to add key %s\n]
-de,libaccess,24,[LASDnsBuild unable to add key %s\n]
-de,libaccess,25,[LAS DNS build received request for attribute %s\n]
-de,libaccess,26,[LASDnsEval - illegal comparator %s\n]
-de,libaccess,27,[LASDnsEval unable to allocate Context struct\n\n]
-de,libaccess,28,[LASDnsEval unable to get session address %d\n]
-de,libaccess,29,[LASDnsEval unable to get DNS - error=%s\n]
-de,libaccess,30,[LAS Group Eval received request for attribute %s\n]
-de,libaccess,31,[LASGroupEval - illegal comparator %s\n]
-de,libaccess,32,[LASGroupEval - ran out of memory\n]
-de,libaccess,33,[LASGroupEval unable to get session address %d\n]
-de,libaccess,34,[LASGroupEval unable to get session address %d\n]
-de,libaccess,35,[LASGroupEval - couldn't locate getter for auth-user\n]
-de,libaccess,36,[LASGroupEval - Attribute getter for auth-user failed\n]
-de,libaccess,37,[LASGroupEval - Attribute getter didn't set auth-user\n]
-de,libaccess,38,[Check group membership of user "%s" for group "%s"\n]
-de,libaccess,39,[LDAPU_SUCCESS for group "%s"\n]
-de,libaccess,40,[LDAPU_FAILED for group "%s"\n]
-de,libaccess,41,[LAS_EVAL_FALSE\n]
-de,libaccess,42,[LAS_EVAL_TRUE\n]
-de,libaccess,43,[LASIpTreeAlloc - no memory\n]
-de,libaccess,44,[IP LAS unable to allocate tree node\n]
-de,libaccess,45,[IP LAS unable to allocate tree node\n]
-de,libaccess,46,[LAS IP build received request for attribute %s\n]
-de,libaccess,47,[LASIpEval - illegal comparator %s\n]
-de,libaccess,48,[LASIpEval unable to get session address - error=%s\n]
-de,libaccess,49,[LASIpEval unable to allocate Context struct\n\n]
-de,libaccess,50,[LASIpEval - reach 32 bits without conclusion value=%s]
-de,libaccess,51,[LAS Program Eval received request for attribute %s\n]
-de,libaccess,52,[LASProgramEval - illegal comparator %s\n]
-de,libaccess,53,[LASProgram unable to get session address %d\n]
-de,libaccess,54,[bin]
-de,libaccess,55,[LASProgramEval: request not of type admin or bin, passing.\n]
-de,libaccess,56,[LASProgramEval: check if program %s matches pattern %s.\n]
-de,libaccess,57,[LASProgramEval: Invalid wildcard expression %s.\n]
-de,libaccess,58,[LAS_EVAL_FALSE\n]
-de,libaccess,59,[LAS_EVAL_TRUE\n]
-de,libaccess,60,[Unexpected attribute in dayOfWeek - %s\n]
-de,libaccess,61,[Illegal comparator for dayOfWeek - %s\n]
-de,libaccess,62,[Unexpected attribute in timeOfDay - %s\n]
-de,libaccess,63,[LAS User Eval received request for attribute %s\n]
-de,libaccess,64,[LASUserEval - illegal comparator %s\n]
-de,libaccess,65,[LASUserEval - ran out of memory\n]
-de,libaccess,66,[LASUserEval unable to get session address %d\n]
-de,libaccess,67,[LASUserEval unable to get session address %d\n]
-de,libaccess,68,[LASGroupEval - couldn't locate getter for auth-user\n]
-de,libaccess,69,[LASGroupEval - Attribute getter for auth-user failed\n]
-de,libaccess,70,[LASGroupEval - Attribute getter didn't set auth-user\n]
-de,libaccess,71,[Check if uid == user (i.e. check "%s" == "%s)"\n]
-de,libaccess,72,[SUCCESS for user "%s"\n]
-de,libaccess,73,[FAILED for user "%s"\n]
-de,libaccess,74,[LAS_EVAL_FALSE\n]
-de,libaccess,75,[LAS_EVAL_TRUE\n]
-de,libaccess,76,[]
-de,libaccess,77,[LASProgram unable to get request address - error=%s]
-de,libaccess,78,[LASProgram rejecting request for program %s from pattern %s]
-de,libaccess,79,[ACL_CacheFlush: unable to parse file "%s"\n]
-de,libaccess,80,[ACL_CacheFlush: unable to concatenate ACL list "%s"\n]
-de,libaccess,81,[ACL_CacheFlush: unable to open and process the magnus file "%s"\n]
-de,libaccess,82,[Illegal comparator for timeOfDay - %s\n]
-de,libaccess,83,[ACL_EvalBuildContext unable to create hash table\n]
-de,libaccess,84,[ACL_EvalBuildContext unable to PERM_CALLOC cache structure\n]
-de,libaccess,85,[ACL_EvalBuildContext unable to allocate ACE entry\n]
-de,libaccess,86,[ACL_EvalBuildContext unable to allocate auth pointer array\n]
-de,libaccess,87,[ACL_EvalBuildContext unable to allocate auth plist\n]
-de,libaccess,88,[ACL_EvalTestRights: an interim, absolute non-allow value was encountered. right=%s, value=%s\n]
-de,libaccess,89,[ACL_INTEvalTestRights: call to ACL_EvalBuildContext returned failure status\n]
-de,libaccess,90,[ACL_ModuleRegister: module name is missing\n]
-de,libaccess,91,[ACL_ModuleRegister: call to module init function returned a failed status\n]
-de,libaccess,92,[ACL_GetAttribute: couldn't determine method for %s\n]
-de,libaccess,93,[ACL_GetAttribute: couldn't locate getter for %s]
-de,libaccess,94,[ACL_GetAttribute: attr getter failed to get %s]
-de,libaccess,95,[ACL_GetAttribute: attr getter failed to get %s]
-de,libaccess,96,[ACL_GetAttribute: All attribute getters declined for attr %s]
-de,libaccess,97,[ACL_DatabaseRegister: dbtype for database "%s" is not defined yet!]
-de,libaccess,98,[ACL_DatabaseRegister: database name is missing]
-de,libaccess,99,[Error reading the DB Map File: %s. Reason: %s]
-de,libaccess,100,[URL is missing for database %s]
-de,libaccess,101,[Invalid property value pair for database %s]
-de,libaccess,102,["default" database must be an LDAP database]
-de,libaccess,103,[Multiple "default" databases are being registered]
-de,libaccess,104,["default" LDAP database must be registered]
-de,libaccess,105,[LASGroupEval unable to get database name - error= %s]
-de,libaccess,106,[received invalid program expression %s]
-de,libaccess,107,[parse_ldap_url: database url is missing]
-de,libaccess,108,[parse_ldap_url: database name is missing]
-de,libaccess,109,[parse_ldap_url: error in parsing ldap url. Reason: %s]
-de,libaccess,110,[ldap password check: unable to get database name - error=%s]
-de,libaccess,111,[ldap password check: unable to get parsed database %s]
-de,libaccess,112,[ldap password check: couldn't initialize connection to LDAP. Reason: %s]
-de,libaccess,113,[ldap password check: LDAP error: "%s"]
-de,libaccess,114,[get_user_ismember_ldap unable to get database name - error=%s]
-de,libaccess,115,[get_user_ismember_ldap unable to get parsed database %s]
-de,libaccess,116,[ldap password check: couldn't initialize connection to LDAP. Reason: %s]
-de,libaccess,117,[get_user_ismember_ldap: group %s does not exist]
-de,libaccess,118,[get_user_ismember_ldap: LDAP error: "%s"]
-de,libaccess,119,[ACL_LDAPDatabaseHandle: %s is not a registered database]
-de,libaccess,120,[ACL_LDAPDatabaseHandle: %s is not an LDAP database]
-de,libaccess,121,[ACL_LDAPDatabaseHandle: out of memory]
-de,libaccess,122,[ACL_LDAPDatabaseHandle: couldn't initialize connection to LDAP. Reason: %s]
-de,libaccess,123,[ACL_LDAPDatabaseHandle: couldn't bind to LDAP server. Reason: %s]
-de,libaccess,124,[insufficient dynamic memory]
-de,libaccess,125,[error opening file, %s: %s]
-de,libaccess,126,[duplicate definition of %s]
-de,libaccess,127,[file %s, line %s: duplicate definition of %s]
-de,libaccess,128,[file %s, line %s: syntax error]
-de,libaccess,129,[file %s, line %s: %s is undefined]
-de,libaccess,130,[in acl %s, %s %s is undefined]
-de,libaccess,131,[database %s: error accessing %s]
-de,libaccess,132,[%s]
-de,libaccess,133,[file %s, line %s: invalid syntax]
-de,libaccess,134,[file %s, line %s: syntax error at "%s"]
-de,libaccess,135,[realm %s is not defined]
-de,libaccess,136,[error code = %d]
-de,libaccess,137,[internal ACL error]
-de,libaccess,138,[invalid argument]
-de,libaccess,139,[ACL_DatabaseRegister: dbtype for database "%s" is not defined yet!]
-de,libaccess,140,[couldn't determine dbtype from: %s]
-de,libaccess,141,[Failed to register database %s]
-de,libaccess,142,[ACL call returned failed status]
-de,libaccess,143,[file %s: ACL IO error - %s]
-de,libaccess,144,[acl_user_exists: Nicht genug Speicher]
-de,libaccess,145,[acl_user_exists: Benutzer existiert nicht mehr]
-de,libaccess,146,[acl_user_exists: plist-Fehler]
-de,libadmin,-1,[$DBT: libadmin in DB file v1 $]
-de,libadmin,1,[ Help ]
-de,libadmin,2,[ OK ]
-de,libadmin,3,[ Reset ]
-de,libadmin,4,[ Done ]
-de,libadmin,5,[ Cancel ]
-de,libir,-1,[$DBT: libadmin in DB file v1 $]
-de,libir,1,[An I/O error occurred before all form data could be read.]
diff --git a/l10n/dirserv/de/ns-slapd.txt.iso8859 b/l10n/dirserv/de/ns-slapd.txt.iso8859
deleted file mode 100644
index a2e0f595..00000000
--- a/l10n/dirserv/de/ns-slapd.txt.iso8859
+++ /dev/null
@@ -1,920 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-/* This text file was generated by program dblink */
-
-$Revision: 1.4 $
-$Log: ns-slapd.txt.iso8859,v $
-Revision 1.4 2005/04/19 22:06:50 nkinder
-Fixed licensing typo
-
-Revision 1.3 2005/04/15 22:39:18 nkinder
-155068 - Added license to source files
-
-Revision 1.2 2005/02/28 23:37:39 nkinder
-149951 - Updated source code copyrights
-
-Revision 1.1.1.1 2005/01/21 00:40:48 cvsadm
-Moving NSCP Directory Server from DirectoryBranch to TRUNK, initial drop. (foxworth)
-
-Revision 1.3.2.3 2003/09/22 19:36:40 ulfw
-Update copyright years from 2001 to 2001-2003
-
-Revision 1.3.2.2 2001/11/03 01:05:35 richm
-XXX use new copyright XXX
-
-Revision 1.3.2.1 1998/10/10 02:13:59 ggood
-Copy from Directory40RtmBranchpoint to DirectoryBranch
-
-Revision 1.1.2.4.2.2.6.1 1998/04/04 23:16:47 mcs
-merge changes made on directory31_rtm_branch into server4_directory_branch
-
-Revision 1.1.2.4.2.2.2.1 1998/02/24 05:51:52 noriko
-Synched with server3_i18npkg_branch
-
-Revision 1.1.2.6 1997/12/31 00:23:36 werudge
-Remove \n from dsgw,198 to fix JavaScript problem
-
-Revision 1.1.2.5 1997/12/19 02:03:43 werudge
-Based on en/ns-slapd.txt : 1.1.2.3
-daily 971113.1 SOLARIS-export-optimize-normal-slapd
-$EndLog$
-
-$StartStringData$
-
-de,base,-1,[$DBT: base in DB file v1 $]
-de,base,1,[nicht genügend Arbeitsspeicher zum Erstellen der Hash-Tabelle]
-de,base,2,[nicht genügend Arbeitsspeicher zum Erstellen der Hash-Tabelle]
-de,base,3,[cache_destroy: Cache-Tabellen scheinen beschädigt zu sein.]
-de,base,4,[Hash-Eintrag kann nicht zugewiesen werden]
-de,base,5,[cache_insert: Cache-Eintrag kann nicht erstellt werden]
-de,base,6,[HTTP/1.0 200 OK\nContent-type: text/html\n\n]
-de,base,7,[<H2>Netscape-Cache Statusbericht</H2>\n(<H2>Netscape cache status report</H2>)\n]
-de,base,8,[Keine Caches im System (No caches on system)<P>]
-de,base,9,[<H2>%s Cache (cache)</H2>\n]
-de,base,10,[Cacheverbindungsverhältnis (Cache hit ratio): %d/%d (%f)</P>\n</P>\n]
-de,base,11,[Cachegröße (Cache size): %d/%d</P>\n</P>\n]
-de,base,12,[Hash-Tabellengröße (Hash table size): %d</P>\n</P>\n]
-de,base,13,[mru : %d</P>\nlru : %d</P>\n]
-de,base,14,[<UL><TABLE BORDER=4> <TH>Originalspeicherbereich (Bucket)</TH> <TH>Adresse (Address)</TH> <TH>Schlüssel (Key)</TH> <TH>Zugriffsanzahl (Access Count)</TH> <TH>Löschen (Delete)</TH> <TH>Nächste (Next)</TH> <TH>LRU</TH> <TH>MRU</TH> <TH>Daten (Data)</TH>\n]
-de,base,15,[munmap failed (%s)]
-de,base,16,[munmap failed (%s)]
-de,base,17,[close failed (%s)]
-de,base,18,[daemon: unable to fork new process (%s)\n]
-de,base,19,[daemon: setsid failed (%s)\n]
-de,base,20,[daemon: can't log pid to %s (%s)\n]
-de,base,21,[warning: could not set group id to %d (%s)\n]
-de,base,22,[warning: could not set user id to %d (%s)\n]
-de,base,23,[warning: daemon is running as super-user\n]
-de,base,24,[could not determine current user name\n]
-de,base,25,[error: chroot to %s failed (%s)\n]
-de,base,27,[, address %s]
-de,base,28,[warning: statistics disabled (%s)\n]
-de,base,29,[security handshake timed out for pid %d]
-de,base,30,[warning: statistics disabled (%s)\n]
-de,base,31,[secure handshake failed (code %d)\n]
-de,base,32,[accept failed (%s)]
-de,base,33,[warning: statistics disabled (%s)\n]
-de,base,34,[select thread miss]
-de,base,35,[keepalive worker awoken with no work to do]
-de,base,36,[could not create new thread: %d (%s)]
-de,base,37,[wait for sema succeeded, but nothing to dequeue]
-de,base,38,[queue-sema creation failure]
-de,base,39,[error getting processor info for processor %d]
-de,base,40,[Error binding to processor %d]
-de,base,41,[bound process %d to processor %d]
-de,base,42,[Netscape server is not explicitly binding to any processors.]
-de,base,43,[cache monitor exited]
-de,base,44,[cache batch update daemon exited]
-de,base,45,[Using single threaded accepts.]
-de,base,46,[Using multi threaded accepts.]
-de,base,47,[Using partial single threaded accepts.]
-de,base,48,[This machine has %d processors.]
-de,base,49,[Error calling thr_seconcurrency(%d)- (%s)]
-de,base,50,[Set conncurrency to %d.]
-de,base,51,[WARNING! netscape executable and library have different versions.\n]
-de,base,54,[seminit failed (%s)\n]
-de,base,55,[This beta software has expired.\n]
-de,base,56,[Cache monitor respawned]
-de,base,57,[Cache batch update daemon respawned]
-de,base,58,[can't find empty statistics slot]
-de,base,59,[can't fork new process (%s)]
-de,base,60,[assert failed! %s\n]
-de,base,61,[mr_table_init()]
-de,base,62,[malloc failed]
-de,base,63,[malloc failed!]
-de,base,64,[mr_add_io(%d, type %d, file %d)]
-de,base,65,[mr_add_io - stage 1]
-de,base,66,[mr_add_io - stage 2]
-de,base,67,[mr_add_io found invalid IO type %d]
-de,base,68,[mr_add_io - adding timeout]
-de,base,69,[Out of memory!\n]
-de,base,70,[done with mr_add_io]
-de,base,71,[mr_del_io(%d, type %d, file %d)]
-de,base,72,[mr_del_io found invalid IO type %d]
-de,base,73,[mr_lookup_io(%d)]
-de,base,74,[mr_async_io(%d, %d bytes, file %d)]
-de,base,75,[malloc failure adding async IO]
-de,base,76,[Error adding async io!]
-de,base,77,[Cannot seek for read!]
-de,base,78,[read failure! (%d, %s)]
-de,base,79,[do_read read %d bytes for file %d]
-de,base,80,[Cannot seek for write!]
-de,base,81,[writev failure! (%d, %s)]
-de,base,82,[write failure! (%d, %s)]
-de,base,83,[do_write wrote %d bytes for file %d]
-de,base,84,[do_timeout(mrp %d)]
-de,base,85,[do_timeout: found IO (timer=%d, time=%d)]
-de,base,86,[error deleting io]
-de,base,87,[timeout callback failure for %d\n]
-de,base,88,[mr_get_event(%d) - outstanding io %d]
-de,base,89,[mr_get_event: Waiting for reads on FD:]
-de,base,90,[mr_get_event: Waiting for writes on FD:]
-de,base,91,[ %d]
-de,base,92,[ %d]
-de,base,93,[mr_get_event set no timeout]
-de,base,94,[mr_get_event set timeout to: %d.%d sec]
-de,base,95,[error in select (%d, %s)]
-de,base,96,[mr_get_event() - select found %d]
-de,base,97,[error looking up IO fd %d]
-de,base,98,[read failed for fd %d]
-de,base,99,[error deleting io]
-de,base,100,[callback failure for %d\n]
-de,base,101,[error looking up IO fd %d]
-de,base,102,[writing: header len %d, writelen %d, total %d]
-de,base,103,[write failed for fd %d]
-de,base,104,[error deleting io]
-de,base,105,[callback failure for %d\n]
-de,base,106,[Error creating dns cache]
-de,base,107,[dns_cache_init: hash_size <= 0, using %d]
-de,base,108,[dns_cache_init: cache-size <= %d, using %d]
-de,base,109,[dns_cache_init: cache-size is %d is too large, using %d.]
-de,base,110,[dns_cache_init: expire_time <= 0, using %d]
-de,base,111,[dns_cache_init: expire is %d is too large, using %d seconds.]
-de,base,112,[Error creating dns cache]
-de,base,113,[dns-cache-insert: Error allocating entry]
-de,base,114,[dns-cache-insert: malloc failure]
-de,base,115,[successful server startup]
-de,base,116,[%s B%s]
-de,base,117,[Netscape executable and shared library have different versions]
-de,base,118,[ executable version is %s]
-de,base,119,[ shared library version is %s]
-de,base,120,[error reporting shutting down]
-de,base,121,[warning]
-de,base,122,[config]
-de,base,123,[security]
-de,base,124,[failure]
-de,base,125,[catastrophe]
-de,base,126,[info]
-de,base,127,[verbose]
-de,base,128,[event_handler:Failed to wait on events %s]
-de,base,129,[could not wait on resume event event (%s)]
-de,base,130,[dlopen of %s failed (%s)]
-de,base,131,[dlopen of %s failed (%s)]
-de,base,132,[The server is terminating due to an error. Check the event viewer for the error message. SERVER EXITING!]
-de,base,133,[Terminating the server %s]
-de,base,134,[kill_server:cannot open server event %s]
-de,base,135,[kill_server:cannot set server event %s]
-de,base,136,[error: could not get socket (%s)\n]
-de,base,137,[error: could not set socket option (%s)\n]
-de,base,138,[Terminating Service:error: could not bind to address %s port %d (%s)\n]
-de,base,139,[Terminating Service:error: could not bind to port %d (%s)\n]
-de,base,140,[SetHandleNonInheritable: could not duplicate socket (%s)]
-de,base,141,[SetHandleNonInheritable: closing the original socket failed (%s)]
-de,base,142,[Could not SetHandleInformation (%s)]
-de,base,143,[Terminating Service:Failure: Could not open statistics file (%s)\n]
-de,base,144,[Could not set Thread Local Storage Value for thread at slot %d]
-de,base,145,[secure handshake failed (code %d)\n]
-de,base,146,[accept failed %d (%s)]
-de,base,147,[Failed to pulse Event %d %s]
-de,base,148,[Failed to send MobGrowth Event to parent %s]
-de,base,149,[Pulsing MobRespawn Event %d]
-de,base,150,[respawn thread pool to %d (%d)]
-de,base,151,[Could not open event to signal rotate application. Could not create the MoveLog event:%s]
-de,base,152,[Failed to send MoveLog Event to rotate app %s]
-de,base,153,[growing thread pool from %d to %d]
-de,base,154,[Could not open the ServiceControlManager, Error %d]
-de,base,155,[StartNetsiteService:Could not open the service %s: Error %d]
-de,base,156,[StartNetsiteService:Could not start the service %s]
-de,base,157,[Service Startup: Could not allocate security descriptor]
-de,base,158,[Service Startup: Could not init security descriptor]
-de,base,159,[Service Startup: Could not set the security Dacl]
-de,base,160,[Terminating Service:WinSock init failed: %s]
-de,base,161,[Httpd Server Startup failed: %s]
-de,base,162,[can't find empty statistics slot]
-de,base,163,[NT daemon: could not create new thread %d]
-de,base,164,[Service Startup Failure. Terminating Service:Could not create event %d:%s]
-de,base,165,[Service Startup Error. Could not create the MoveLog event:%s]
-de,base,166,[Failed to wait on Event objects %s]
-de,base,167,[Failed to wait on Event objects %s]
-de,base,168,[pipebuf_buf2sd: pipebuf_grab IO_ERROR %d]
-de,base,169,[pool-init: memory pools disabled]
-de,base,170,[pool-init: free_size <= 0, using %d]
-de,base,171,[pool-create-block: out of memory]
-de,base,172,[pool-create: out of memory]
-de,base,173,[pool-create: out of memory]
-de,base,174,[pool-malloc: out of memory]
-de,base,175,[FREE() used where PERM_FREE() should have been used- problem corrected and supressing further warnings.]
-de,base,176,[regex error: %s (regex: '%s')]
-de,base,177,[can't create IPC pipe (%s)]
-de,base,178,[write to wakeup pipe failed (%s)]
-de,base,179,[flushing %d connections; current %d; tot %d]
-de,base,180,[accept failed (%s)]
-de,base,181,[Error creating time cache]
-de,base,182,[time-cache: cache disabled]
-de,base,183,[time_cache_init: hash_size < %d, using default, %d]
-de,base,184,[time_cache_init: hash_size > %d, using default, %d]
-de,base,185,[time_cache_init: cache_size < %d, using default, %d]
-de,base,186,[time_cache_init: cache_size > %d, using default, %d]
-de,base,187,[Error allocating memory for time_cache]
-de,base,188,[Error allocating memory for time_cache entry]
-de,base,189,[Error allocating memory for time_cache entry]
-de,base,190,[Error inserting new time_cache entry]
-de,base,191,[Error allocating memory for time_cache]
-de,base,192,[cs-terminate failure (%s)]
-de,base,193,[cs-init failure (%s)]
-de,base,194,[cs-wait failure (%s)]
-de,base,195,[cs-post failure (%s)]
-de,base,196,[Unable to create nonblocking socket (%s)]
-de,base,197,[error: could not set keepalive (%s)\n]
-de,base,198,[error: could not set recv timeout (%s)\n]
-de,base,199,[error: could not set send timeout (%s)\n]
-de,base,200,[Unable to create nonblocking socket (%s)]
-de,base,201,[sem_grab failed (%s)]
-de,base,202,[sem_release failed (%s)]
-de,base,203,[sem_release failed (%s)]
-de,base,204,[Could not remove temporary directory %s, Error %d]
-de,base,205,[Could not remove temporary directory %s, Error %d]
-de,dsgw,-1,[$DBT: dsgw in DB file v1 $]
-de,dsgw,1,[Unbekannte HTTP-Anforderungsmethode (Unknown HTTP request method)]
-de,dsgw,2,[Ungültige oder unvollständige HTML-Formulardaten (Invalid or incomplete HTML form data)]
-de,dsgw,3,[Nicht genügend Speicherplatz (Out of memory)]
-de,dsgw,4,[Erforderliche Anfrage-/Formulareingabe fehlt (Required query/form input is missing)]
-de,dsgw,5,[Ungültiges Zeichen im Dateipfad (Illegal character in file path)]
-de,dsgw,6,[Falsche oder fehlende Konfigurationsdatei (Bad or missing configuration file)]
-de,dsgw,7,[LDAP kann nicht initialisiert werden (Unable to initialize LDAP)]
-de,dsgw,8,[Fehler beim Aufrufen des LDAP-Server (An error occurred while contacting the LDAP server)]
-de,dsgw,9,[Unbekannter Suchobjekttyp (Unknown search object type)]
-de,dsgw,10,[Unbekanntes Attributetikett (Unknown attribute label)]
-de,dsgw,11,[Unbekannte Match-Aufforderung (Unknown match prompt)]
-de,dsgw,12,[Keine Suchfilter für Objekttyp (No search filters for object type)]
-de,dsgw,13,[HTML-Vorlagedatei kann nicht gefunden werden (Unable to open HTML template file)]
-de,dsgw,14,[Unbekannter Suchmodus - benutzen Sie "smart", "complex", "pattern" oder "auth" (Unknown search mode - use "smart", "complex", "pattern", or "auth")]
-de,dsgw,15,[Unverwechselbarer Name fehlt in der URL (Distinguished Name missing in URL)]
-de,dsgw,16,[Unbekannter Bereich in der URL (sollte "base", "sub" oder "one" sein) (Unknown scope in URL (should be base, sub, or one))]
-de,dsgw,17,[Unbekannte URL oder unbekannter Fehler (Unrecognized URL or unknown error)]
-de,dsgw,18,[Ungültiges URL-Format (Bad URL format)]
-de,dsgw,19,[Interner Fehler (Internal error)]
-de,dsgw,20,[Vorlageindexdatei kann nicht geschrieben werden (Unable to write template index file)]
-de,dsgw,21,[Vorlageindexdatei kann nicht geöffnet werden (Unable to open template index file)]
-de,dsgw,22,[Verzeichnis kann nicht gelesen werden (Unable to read directory)]
-de,dsgw,23,[Fehler bei der Initialisierung von LDAP SSL (Sicherheitspfad überprüfen) (LDAP SSL initialization failed (check the security path)]
-de,dsgw,24,[Damit die Benutzer- und Gruppenformulare mit dem Verwalter-Server via SSL ausgeführt werden können, müssen Sie oder der Systemverwalter über das Formular <B>Server-Eigenschaften|Verschlüsselung EIN/AUS</B> SSL für diesen Verwaltungsserver aktivieren aktivieren.\n(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.)]
-de,dsgw,25,[Beglaubigungsberechtigung wurde nicht in der Beglaubigungsdatenbank gefunden (Authentication credentials not found in authentication database)]
-de,dsgw,26,[Fehler beim Abrufen der Daten von der Beglaubigungsdatenbank (Error retrieving data from the authentication database)]
-de,dsgw,27,[Ihre Beglaubigungsberechtigung ist abgelaufen (Your authentication credentials have expired)]
-de,dsgw,28,[Zufalls-Zeichenfolge kann nicht erstellt werden\n(Unable to create a random string)]
-de,dsgw,29,[Beim Abrufen des Berechtigungsnachweises wurde kein unverwechselbarer Name angegeben (No distinguished name was provided when retrieving credentials)]
-de,dsgw,30,[Beglaubigungsdatenbank kann nicht geöffnet werden (Cannot open authentication database)]
-de,dsgw,31,[Daten konnten nicht an die Beglaubigungsdatenbank angehängt werden (Could not append data to the authentication database)]
-de,dsgw,32,[Es wurde kein Verzeichnisverwalter definiert (No Directory Manager is defined)]
-de,dsgw,33,[Es wurde keine Suchzeichenfolge angegeben. Bitte noch einmal versuchen (No search string was provided. Please try again)]
-de,dsgw,34,[Zu viele Argumente auf einer Zeile in der Konfigurationsdatei (Too many arguments on one line in the config. file)]
-de,dsgw,35,[Windows Sockets konnte nicht initialisiert werden (Failed to initialize Windows Sockets)]
-de,dsgw,36,[Beglaubigungsberechtigung konnte nicht vom Verwaltungs-Server abgerufen werden (Authentication credentials could not be obtained from the Administration Server)]
-de,dsgw,37,[Unverwechselbarer Name fehlt in der ldapdb:// URL (Distinguished Name missing in ldapdb:// URL)]
-de,dsgw,38,[Unbekannte URL oder unbekannter Fehler (Unrecognized URL or unknown error)]
-de,dsgw,39,[Ungültiges URL-Format (Bad URL format)]
-de,dsgw,40,[Fehler beim Initialisieren der lokalen LDAP-Datenbank\n(An error occurred while initializing the local LDAP database)]
-de,dsgw,41,[Unbekannter Verzeichnis-Servicetyp - benutzen Sie "local" oder "remote" (Unknown directory service type - use "local" or "remote")]
-de,dsgw,42,[Fehler beim Lesen der db-Konfigurationdatei (An error occurred while reading the db configuration file)]
-de,dsgw,43,[NSHOME/userdb-Pfad war NULL (NSHOME/userdb path was NULL)]
-de,dsgw,44,[Die Servicekonfiguration des Verzeichnisses konnte nicht aktualisiert werden. (The directory service configuration could not be updated.)]
-de,dsgw,45,[Der Eintrag konnte nicht im Verzeichnis gelesen werden. (The entry could not be read from the directory.)]
-de,dsgw,46,[Die LDAP-Databank konnte nicht gelöscht werden. (The LDAP database could not be erased.)]
-de,dsgw,47,[Sie dürfen keine Einträge außer Ihren eigenen ändern. (You may not change entries besides your own.)]
-de,dsgw,48,[Problem]
-de,dsgw,49,[Beglaubigungsproblem (Authentication Problem)]
-de,dsgw,50,[.\n<P>Sie müssen neu beglaubigen, ehe Sie fortfahren. (You must re-authenticate before continuing.)\n]
-de,dsgw,51,[.\n<P>Sie müssen neu beglaubigen, ehe Sie fortfahren. (You must re-authenticate before continuing.)\n]
-de,dsgw,52,[unbekannter Fehler (unknown error)]
-de,dsgw,53,[Der Vorgang war erfolgreich. (The operation was successful.)]
-de,dsgw,54,[Im Server ist ein interner Fehler aufgetreten. Das deutet gewöhnlich auf einen ernsthaften Fehler im Server hin und sollte Ihrem Serververwalter mitgeteilt werden. (An internal error occurred in the server. This usually indicates a serious malfunction in the server and should be brought to the attention of your server administrator.)]
-de,dsgw,55,[Der Server konnte die durch das Gateway an ihn gesandte Anforderung nicht verstehen. (The server could not understand the request which was sent to it by the gateway.)]
-de,dsgw,56,[Das Zeitlimit wurde bei der Ausführung Ihrer Anforderung überschritten. Die Suche nach Einträgen erzielt bessere Ergebnisse, wenn Sie Ihre Suche präziser definieren. (A time limit was exceeded in responding to your request. If you are searching for entries, you may achieve better results if you are more specific in your search.)]
-de,dsgw,57,[Das Größenlimit wurde bei der Ausführung Ihrer Anforderung überschritten. Ihre Suche nach Einträgen erzielt bessere Ergebnisse, wenn Sie Ihre Suche präziser definieren, da zu viele Einträge zu Ihren Suchkriterien paßten. (A size limit was exceeded in responding to your request. If you are searching for entries, you may achieve better results if you are more specific in your search, because too many entries matched your search criteria.)]
-de,dsgw,58,[Das Gateway versuchte, mit einer Methode auf dem Server\nzu beglaubigen, die der Server nicht versteht.\n(The gateway attempted to authenticate to the server using\na method the server doesn't understand.)]
-de,dsgw,59,[Das Gateway versuchte mit einer Beglaubigungsmethode auf dem Server zu beglaubigen, die der Server nicht unterstützt. (The gateway attempted to authenticate to the server using an authentication method which the server does not support. )]
-de,dsgw,60,[Ihre Anforderung konnte nicht ausgeführt werden, weil der aufgerufene Server wahrscheinlich nicht die von Ihnen gewünschten Daten enthält. Möglicherweise wurde die Anforderung auf einen anderen Server umgeleitet und wieder zurückgesandt, konnte jedoch nicht zurückverfolgt werden. Sollten Sie versucht haben, Änderungen im Verzeichnis vorzunehmen, dann ist der Server mit der Stammkopie möglicherweise nicht verfügbar. (Your request could not be fulfilled, probably because the server that was contacted does not contain the data you are looking for. It is possible that a referral to another server was returned but could not be followed. If you were trying to make changes to the directory, it may be that the server that holds the master copy of the data is not available.)]
-de,dsgw,61,[Ihre Anforderung hat ein Verwalterlimit auf dem Server überschritten. (Your request exceeded an administrative limit in the server.)]
-de,dsgw,62,[Eine vom Gateway angeforderte kritische Erweiterung ist auf diesem Server nicht verfügbar. (A critical extension that the gateway requested is not available in this server.)]
-de,dsgw,63,[Der Server konnte die Anforderung nicht ausführen, da sie\nsich auf ein Attribut bezieht, das nicht im\nEintrag existiert.\n(The server was unable to process the request, because the\nrequest referred to an attribute which does not exist in the\nentry.)]
-de,dsgw,64,[Der Server konnte Ihre Anforderung nicht ausführen, da\nsie gegen eine Beschränkung verstößt.\n(The server was unable to fulfill your request, because the\nrequest violates a constraint.)]
-de,dsgw,65,[Der Server konnte dem Eintrag keinen Wert hinzufügen, da dieser Wert bereits im Eintrag enthalten ist. (The server could not add a value to the entry, because that value is already contained in the entry.)]
-de,dsgw,66,[Der Server konnte diesen Eintrag nicht finden. Wird ein neuer\nWert hinzugefügt, vergewissern Sie sich, daß das übergeordnete Verzeichnis,\nfür den Eintrag, den Sie hinzufügen möchten, existiert. Erscheint diese\nFehlermeldung bei einem Suchvorgang, bedeutet das,\ndaß der von Ihnen gesuchte Eintrag nicht existiert. Wenn Sie versucht\nhaben, als Verzeichnisverwalter zu beglaubigen und diese Fehlermeldung erscheint,\ndann überprüfen Sie die Gateway-Konfigurationsdatei.\n(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.)]
-de,dsgw,67,[Ein unverwechselbarer Name hatte nicht das richtige Format. (A distinguished name was not in the proper format. )]
-de,dsgw,68,[Dem Eintrag, den Sie beglaubigen wollten, fehlt entweder der Kennwortsatz oder andere erforderliche Beglaubigungsberechtigungen. Mit dieser Eingabe können Sie erst beglaubigen, wenn der Verzeichnisverwalter die passenden Attribute hinzugefügt hat. (The entry you attempted to authenticate as does not have a password set, or is missing other required authentication credentials. You cannot authenticate as that entry until the appropriate attributes have been added by the directory manager.)]
-de,dsgw,69,[Das eingegebene Kennwort (oder andere Beglaubigungsberechtigungen)\nist falsch.\n(The password (or other authentication credentials) you supplied\nis incorrect.)]
-de,dsgw,70,[Sie sind nicht ausreichend berechtigt, um den Vorgang auszuführen. (You do not have sufficient privileges to perform the operation. )]
-de,dsgw,71,[Der Server ist belegt und kann Ihre Anforderung nicht ausführen. Versuchen Sie es in ein paar Miuten noch einmal. (The server is too busy to service your request. Try again in a few minutes.)]
-de,dsgw,72,[Der LDAP-Server konnte nicht aufgerufen werden. (The LDAP server could not be contacted.)]
-de,dsgw,73,[Der Server lehnt die Ausführung Ihrer Anforderung ab. Das bedeutet gewöhnlich, daß die Ausführung Ihrer Anforderung den Server zu sehr belastet. Es könnte möglicherweise auch bedeuten, daß der Server nicht konfiguriert ist, Ihre Anforderung auszuführen. Versuchen Sie, bei der Suche den Suchbereich einzuschränken. (The server was unwilling to process your request. Usually, this indicates that serving your request would put a heavy load on the server. It may also indicate that the server is not configured to process your request. If searching, you may wish to limit the scope of your search.)]
-de,dsgw,74,[Der Verzeichnis-Server konnte Ihrer Anforderung nicht nachkommen, da sie gegen die Schemabedingungen verstößt. Das bedeutet gewöhnlich, daß Sie keinen Wert für ein erforderliches Feld eingegeben haben. Es könnte auch bedeuten, daß das Schema im Verzeichnis-Server aktualisiert werden muß. (The directory server could not honor your request because it violates the schema requirements. Typically, this means that you have not provided a value for a required field. It could also mean that the schema in the directory server needs to be updated.)]
-de,dsgw,75,[Der Verzeichnis-Server läßt nicht zu, daß Sie einen Eintrag, der untergeordnet ist, löschen oder umbenennen. Um das zu tun, müssen Sie erst alle untergeordneten Einträge löschen. (The directory server will not allow you to delete or rename an entry if that entry has children. If you wish to do this, you must first delete all the child entries.)]
-de,dsgw,76,[Der Server konnte weder einen neuen Eintrag hinzufügen noch einen bestehenden umbenennen, da ein Eintrag unter diesem Namen bereits existiert. (The server was unable to add a new entry, or rename an existing entry, because an entry by that name already exists.)]
-de,dsgw,77,[Ihre Anforderung würde mehrere Verzeichnis-Server betreffen. (Your request would affect several directory servers.)]
-de,dsgw,78,[Der Verzeichnis-Server konnte nicht aufgerufen werden. Wenden\nSie sich an den Serververwalter.\n(The directory server could not be contacted. Contact your\n server administrator for assistance.)]
-de,dsgw,79,[Fehler beim Senden der Daten zum Server. (An error occured while sending data to the server.)]
-de,dsgw,80,[Fehler beim Lesen der Daten vom Server. (An error occured while reading data from the server.)]
-de,dsgw,81,[Der Server hat nicht auf Ihre Anforderung reagiert. Die Anforderung wurde unterbrochen. (The server did not respond to the request. The request timed out.)]
-de,dsgw,82,[Der Server unterstützt nicht die vom Gateway benutzte Beglaubigungsmethode. (The server does not support the authentication method used by the gateway.)]
-de,dsgw,83,[Der vom Gateway erstellte Suchfilter war falsch. (The search filter constructed by the gateway was in error.)]
-de,dsgw,84,[Der Vorgang wurde auf Ihren Wunsch abgebrochen. (The operation was cancelled at your request.)]
-de,dsgw,85,[Interner Fehler in der Bibliothek - ein Parameter war falsch. (An internal error occurred in the library - a parameter was incorrect.)]
-de,dsgw,86,[Verbindung zum Verzeichnis-Server konnte nicht hergestellt werden. Wenden\nSie sich an Ihren Server-Verwalter.\n(A connection to the directory server could not be opened. Contact your\nserver administrator for assistance.)]
-de,dsgw,87,[Unbekannter Fehler aufgetreten. (An unknown error was encountered.)]
-de,dsgw,88,[Eintrag existiert bereits (Entry Already Exists)]
-de,dsgw,89,[Dieser Namenseintrag (An entry named )]
-de,dsgw,90,[onMouseOver="window.status='Klicken Sie hier, um den Eintrag einzusehen'; return true"\n(onMouseOver="window.status='Click here to view this entry'; return true")]
-de,dsgw,91,[ existiert bereits (already exists).<P>Bitte anderen Namen und/oder Adresse wählen.\n(Please choose another name and/or location.\n<P>)\n]
-de,dsgw,92,[Übergeordneter Eintrag existiert nicht\n(Parent entry does not exist)]
-de,dsgw,93,[Sie können einen Eintrag unter diesem Namen:\n(You cannot add an entry by the name:)<P><B>%s</B>,<P> nicht hinzufügen,\nda der übergeordnete Eintrags nicht existiert.\n(because the parent of that entry does not exist.)<P>\nEhe Sie diesen Eintrag hinzufügen, müssen Sie zunächst den dazugehörige\n(Before you can add this entry, you must first add)\n]
-de,dsgw,94,[übergeordneten Eintrag hinzufügen. (its parent.)\n]
-de,dsgw,95,[ein Eintrag unter diesem Namen (an entry named):<P><B>%s</B>.\n]
-de,dsgw,96,[Warnung: Keine Beglaubigung (wird fortgesetzt)...\n(Warning: no authentication (continuing)...)\n]
-de,dsgw,97,[%s Verzeichniseintrag (Directory Entry)]
-de,dsgw,98,[<PRE>Eingabe-DN (Entry DN): %s</PRE><P>\n]
-de,dsgw,99,[Änderungen zu <B>%s</B> wurden gespeichert.]
-de,dsgw,100,[<B>%s</B> has been added.]
-de,dsgw,101,[<B>%s</B> has been deleted.]
-de,dsgw,102,[Renamed <B>%s</B> to <B>%s</B>.]
-de,dsgw,103,[<P><B>Hinweis:</B> Da Sie den Eintrag, unter dem Sie beglaubigt\nsind, %s haben, mußte Ihre Beglaubigungsberechtigung\ngelöscht werden. Sie müssen neu beglaubig werden, um\nweitere Änderungen vornehmen zu können.\n(<B>Note:</B> because of your action on 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]
-de,dsgw,104,[gelöscht (deleted)]
-de,dsgw,105,[umbenannt (renamed)]
-de,dsgw,106,[Kennwort umbenannt für (changed the password of)]
-de,dsgw,107,[Attribut (Attribute) %s wurde geändert (was changed)<BR>\n]
-de,dsgw,108,[ NICHT (NOT) ASCII (%ld Bytes)\n]
-de,dsgw,109,[Es wurden keine Werte eingegeben. Bitte erneut versuchen.\n(No values were entered. Please try again.)\n]
-de,dsgw,110,[Es wurden keine Änderungen vorgenommen.\n]
-de,dsgw,111,[<P>%s wird an Verzeichnis-Server gesendet...\n]
-de,dsgw,112,[Information]
-de,dsgw,113,[Änderungen (changes)]
-de,dsgw,114,[<P>Eintrag erfolgreich hinzugefügt.\n(Successfully added entry.)\n]
-de,dsgw,115,[<P>Eintrag erfolgreich bearbeitet. Änderungen wurden gespeichert.\n(Successfully edited entry. Your changes have been saved.)\n]
-de,dsgw,116,[<P>Eintrag erfolgreich gelöscht.\n(Successfully deleted entry.)\n]
-de,dsgw,117,[<PRE>Der neue Eintrag heißt (The new name for the entry is): %s\n</PRE><HR>\n]
-de,dsgw,118,[<P>Eintrag erfolgreich umbenannt.\n(Successfully renamed entry.)\n]
-de,dsgw,119,[Sie müssen das alte Kennwort angeben.]
-de,dsgw,120,[Sie müssen ein neues Kennwort angeben. Bitte erneut versuchen]
-de,dsgw,121,[Neues und bestätigendes Kennwort stimmen nicht überein. Bitte erneut versuchen]
-de,dsgw,122,[<BR>%s <B>%s</B> ist bereits in Benutzung. Bitte ein anderes wählen.\n(The item shown is already in use. Please choose a different one.)<BR>\n]
-de,dsgw,123,[fehlendes Formulardatenelement (missing form data element) "%.100s"]
-de,dsgw,124,[Konfigurationsinformation wird initialisiert\n(Initializing config info)]
-de,dsgw,125,[Datei kann nicht geöffnet werden.\n(Cannot open file.)]
-de,dsgw,126,[ Konfigurationsdate der Datenbanki ist verstümmelt.\n(Malformed dbconf file.)]
-de,dsgw,127,[Eigenschaftsname in der Konfigurationsdatei der Datenbank fehlt.\n(Missing property name in dbconf file.)]
-de,dsgw,128,[Nicht genügend Arbeitspeicher. (Out of memory.)]
-de,dsgw,129,[Betriebsanweisung in der Konfigurationsdatei der Datenbank fehlt.\n(Missing directive in dbconf file.)]
-de,dsgw,130,[Konfigurationsdatei "%s" kann nicht geöffnet werden\n(Cannot open config file with name shown)\n]
-de,dsgw,131,[Argument für die Betriebsanweisung "authlifetime" fehlt\n(Missing argument for "authlifetime" directive)\n]
-de,dsgw,132,[Argument für Betriebsanweisung "dirmgr" fehlt\n(Missing argument for "dirmgr" directive)\n]
-de,dsgw,133,[Argument für Betriebsanweisung "baseurl" fehlt\n(Missing argument for "baseurl" directive)\n]
-de,dsgw,134,[Falsche URL für Betriebsanweisung "baseurl" angegeben - Basis-DN fehlt\n(Bad URL provided for "baseurl" directive - the base DN is missing)\n]
-de,dsgw,135,[Betriebsanweisung "baseurl" wird analysiert\n(parsing baseurl directive)]
-de,dsgw,136,[Falsche URL für Betriebsanweisung "baseurl" angegeben - keine "ldap://" URL\n(Bad URL provided for "baseurl" directive - not an "ldap://" URL)\n]
-de,dsgw,137,["ldaps://" URLs werden noch nicht unterstützt\n("ldaps://" URLs are not yet supported)\n]
-de,dsgw,138,[Argumente für Betriebsanweisung "template" fehlen\n(Missing arguments for "template" directive)\n]
-de,dsgw,139,[Argument für Betriebsanweisung "sslrequired" fehlt\n(Missing argument for "sslrequired" directive)\n]
-de,dsgw,140,[Unbekanntes Argument für Betriebsanweisung "sslrequired" (muß "never", "whenauthenticated"oder "always" sein)\n(Unknown argument to "sslrequired" directive (should be "never", "whenauthenticated", "always"))\n]
-de,dsgw,141,[Argument für Betriebsanweisung "securitypath" fehlt\n(Missing argument for "securitypath" directive)\n]
-de,dsgw,142,[Argument für Betriebsanweisung "location-suffix" fehlt\n(Missing argument for "location-suffix" directive)\n]
-de,dsgw,143,[Die Betriebsanweisung "location" erfordert drei Argumente\n(Three arguments are required for the "location" directive)\n]
-de,dsgw,144,[Die Betriebsanweisung "newtype" erfordert mindestens zwei Argumente\n(At least two arguments are required for the "newtype" directive)\n]
-de,dsgw,145,[Unbekannte Adresse in der Betriebsanweisung "newtype"\n(Unknown location in "newtype" directive)\n]
-de,dsgw,146,[Die Betriebsanweisung "tmplset" erfordert drei oder vier Argumente\n(Three or four arguments are required for the "tmplset" directive)\n]
-de,dsgw,147,[Die Betriebsanweisung "attrvset" erfordert vier Argumente\n(Four arguments are required for the "attrvset" directive)\n]
-de,dsgw,148,[Argument für Betriebsanweisung "charset" fehlt\n(Missing argument for "charset" directive)\n]
-de,dsgw,149,[Argument für Betriebsanweisung "ClientLanguage" fehlt\n(Missing argument for "ClientLanguage" directive)\n]
-de,dsgw,150,[Argument für Betriebsanweisung "AdminLanguage" fehlt\n(Missing argument for "AdminLanguage" directive)\n]
-de,dsgw,151,[Argument für Betriebsanweisung "DefaultLanguage" fehlt\n(Missing argument for "DefaultLanguage" directive)\n]
-de,dsgw,152,[Dateiname für Betriebsanweisung "include" fehlt\n(Missing filename for "include" directive)\n]
-de,dsgw,153,[Unbekannte Betriebsanweisung in der Konfigurationsdatei\n(Unknown directive in config file)\n]
-de,dsgw,154,[<= erase_db konnte lcache.conf-Datei "%s" nicht öffnen\n(<= erase_db could not open lcache.conf file with name shown)\n]
-de,dsgw,155,[<FONT SIZE="+1">\n<P>Die Datenbank wurde gelöscht. Neue Datenbank wird erstellt...\n(The database has been deleted. Creating new database...)\n</FONT>\n ]
-de,dsgw,156,[<FONT SIZE="+1">\n<P>Die Datenbank konnte nicht gelöscht werden\n(The database could not be deleted)\n</FONT>\n ]
-de,dsgw,157,[<= app_suffix konnte ldif-Datei "%s" nicht öffnen\n(<= app_suffix could not open ldif file with name shown)\n]
-de,dsgw,158,[<= app_suffix konnte tmp-Datei "%s" nicht öffnen\n(<= app_suffix could not open tmp file with name shown)\n]
-de,dsgw,159,[%s konnte nicht in %s umbenannt werden\n(Unable to rename with names as shown)]
-de,dsgw,160,[Leerzeiger wurde von dbconf_read_default_dbinfo() zurückgegeben.\n(null pointer returned by dbconf_read_default_dbinfo().)]
-de,dsgw,161,[Falsche "ldapdb"-URL - Basis-DN fehlt\n(Bad "ldapdb" URL - the base DN is missing)\n]
-de,dsgw,162,[Falsche "ldapdb"-URL (Bad "ldapdb" URL)\n]
-de,dsgw,163,[Falsche URL für Betriebsanweisung "baseurl" angegeben - Basis-DN fehlt \n(Bad URL provided for "baseurl" directive - the base DN is missing)\n]
-de,dsgw,164,[Betriebsanweisung "baseurl" wird analysiert\n(parsing baseurl directive)]
-de,dsgw,165,[Falsche URL für Betriebsanweisung "baseurl" angegeben - keine "ldap:// bzw. ldapdb://" URL\n(Bad URL provided for "baseurl" directive - not an "ldap:// or ldapdb://" URL)\n]
-de,dsgw,166,["ldaps://" URLs werden noch nicht unterstützt\n("ldaps://" URLs are not yet supported)\n]
-de,dsgw,167,[Kein Wert für binddn angegeben\n(No value given for binddn)]
-de,dsgw,168,[Kein Wert für bindpw angegeben\n(No value given for bindpw)]
-de,dsgw,169,[In der dbswitch.conf-Datei ist kein Standard-Verzeichnisservice angegeben\n(There is no default directory service defined in the dbswitch.conf file)]
-de,dsgw,170,[Konfigurationsdatei "%s" kann nicht zum Schreiben geöffnet werden\n(Cannot open config file with name shown for writing)\n]
-de,dsgw,171,[Kann %s nicht in %s umbenennen\n(Unable to rename with names as shown)]
-de,dsgw,172,[Konfigurationsdatei (config file) %s: ]
-de,dsgw,173,[Konfigurationsdatei (config file) %s: Zeile (line) %d: ]
-de,dsgw,174,[Max. (max) %d]
-de,dsgw,175,[ OK ]
-de,dsgw,176,[Fenster schließen (Close Window)]
-de,dsgw,177,[Zurück]
-de,dsgw,178,[{crypt}GESPERRT (LOCKED) [%s GMT]]
-de,dsgw,179,[Zurück zum Hauptbildschirm (Return to Main)]
-de,dsgw,181,[ Help ]
-de,dsgw,182,[Hilfe (Help)]
-de,dsgw,184,[Hilfe ist noch nicht verfügbar.\n(Help is not yet available.)]
-de,dsgw,186,[Fenster schließen (Close Window)]
-de,dsgw,187,[Fenster schließen (Close Window)]
-de,dsgw,188,[?template fehlt (missing ?template)]
-de,dsgw,189,[Beglaubigen...(Authenticate...)]
-de,dsgw,190,[Beglaubigungsberechtigung löschen (abmelden)?\n(Discard authentication credentials (log out)?)]
-de,dsgw,191,[Geben Sie eine Suchenzeichenfolge an\n(Please type a search string)]
-de,dsgw,192,[Um Ihren Zugriff zu dem Verzeichnis zu beglaubigen, müssen Sie sich zunächst zu\nerkennen geben.<br>Geben Sie Ihren Namen ein:\n(The first step in authenticating to the directory is identifying\nyourself.<br>Please type your name:)]
-de,dsgw,193,[Weiter (Continue)]
-de,dsgw,194,[Weiter (Continue)]
-de,dsgw,195,[Abbrechen (Cancel)]
-de,dsgw,196,[Als Verzeichnisverwalter beglaubigen"> &nbsp;(nur für Verzeichnis-Administratoren verfügbar)\n(Authenticate as directory manager"> &nbsp;(only available to Directory Administrators))\n]
-de,dsgw,197,[Beglaubigen...(Authenticate...)]
-de,dsgw,198,[Beglaubigungsberechtigung löschen? (Discard authentication credentials?)]
-de,dsgw,200,[Weiter (Continue)]
-de,dsgw,201,[Weiter (Continue)]
-de,dsgw,202,[Abbrechen (Cancel)]
-de,dsgw,203,[Zugriff zu dem Verzeichnis beglaubigen (anmelden)\n(Authenticate (log in) to the directory)]
-de,dsgw,204,[Ihr Zugriff zu dem Verzeichnis wird gleich beglaubigt werden unter \n(You are about to authenticate to the directory as) <B>%s</B>. Geben Sie zum Vervollständigen des Beglaubigungsvorgangs Ihr Kennwort ein. (To complete the authentication process, type your password.\n]
-de,dsgw,206,[Ehe Sie Einträge bearbeiten bzw. hinzufügen können, muß\nIhr Zugriff zu dem Verzeichnis beglaubigt (angemeldet) sein\n. Folgen Sie den Anweisungen für den Beglaubigungsprozeß\nauf diesem Fenster.\n(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]
-de,dsgw,207,[Ihr Zugriff zu dem Verzeichnis kann von diesem Bildschirm aus\nbeglaubigt bzw. angemeldet werden.\nSie müssen beglaubigt sein, ehe Sie Verzeichniseinträge\nändern können. Wenn Sie einen Eintrag, ohne beglaubigt zu sein, ändern möchten, dann werden Sie aufgefordert, sich anzumelden.\n(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]
-de,dsgw,208,[Beglaubigungsstatus(Authentication Status)]
-de,dsgw,209,[<form>\nIhr Zugriff zu dem Verzeichnis ist derzeitig beglaubigt unter \n(<form>\nYou are currently authenticated to the directory as )]
-de,dsgw,210,[.\nWenn Sie Ihre Beglaubigungsberechtigung löschen und sich vom Verzeichnis abmelden möchten, klicken Sie unten auf die Schaltfläche.\n(.\nIf you wish to discard your authentication credentials and log out of the directory, click on the button below.)]
-de,dsgw,211,[Beglaubigungsberechtigung löschen (abmelden)\n(Discard Authentication Credentials (log out))]
-de,dsgw,212,[Ihre Beglaubigungsberechtigung für \n(Your authentication credentials for )]
-de,dsgw,213,[ist abgelaufen (have expired).\n<HR>)\n]
-de,dsgw,214,[Ihr Zugriff zu dem Verzeichnis ist derzeitig nicht beglaubigt.\n(Currently, you are not authenticated to the directory.<HR>)\n]
-de,dsgw,215,["%s=" fehlt (missing)]
-de,dsgw,216,["%s=%s" unbekannt (unknown)]
-de,dsgw,217,[unbekannte Option (unknown option) %s ]
-de,dsgw,218,[unbekannte Syntax=%s (syntax shown unknown)\n]
-de,dsgw,219,[** HTML-Typ "%s" nicht unterstützt **<BR>\n(** HTML type shown is not supported **<BR>)\n]
-de,dsgw,224,[Bearbeiten (Edit)]
-de,dsgw,225,[Save Changes]
-de,dsgw,226,[modify]
-de,dsgw,227,[add]
-de,dsgw,228,[Löschen (Delete)]
-de,dsgw,229,[Diesen Eintrag löschen? (Delete this entry?)]
-de,dsgw,230,[Umbenennen (Rename)]
-de,dsgw,231,[Neuen Namen für diesen Eintrag eingeben:\n(Enter a new name for this entry:)]
-de,dsgw,232,[Bearbeiten unter (Edit As)]
-de,dsgw,233,[%s= fehlt (missing)]
-de,dsgw,234,[Fenster schließen (Close Window)]
-de,dsgw,235,[Bearbeiten... (Edit...)]
-de,dsgw,236,["%s=" fehlt (missing)\n]
-de,dsgw,237,[Unbekannter Satz "%s" (set shown is unknown)\n]
-de,dsgw,238,[unbekannte Syntax "%s" (unknown syntax "%s")\n]
-de,dsgw,239,[Neu beglaubigen (Re-Authenticate)]
-de,dsgw,240,[Fenster schließen (Close Window)]
-de,dsgw,241,[Möchten Sie wirklich (Do you really want to )]
-de,dsgw,242,[?]
-de,dsgw,243,[ OK ]
-de,dsgw,244,[ OK ]
-de,dsgw,245,[Zurücksetzen (Reset)]
-de,dsgw,246,[Beendet (Done)]
-de,dsgw,247,[Abbrechen (Cancel)]
-de,dsgw,248,[anderes IF gefunden (geschachtelte IFs sind nicht unterstützt)\n(found another IF (nested IFs are not supported))]
-de,dsgw,249,[ELSE wurde gefunden, aber kein IF\n(found ELSE but didn't see an IF)]
-de,dsgw,250,[ELSE nach ELSE gefunden (ENDIF erwartet)\n(found ELSE after ELSE (expecting ENDIF))]
-de,dsgw,251,[ELSE wurde gefunden, aber kein IF\n(found ELIF but didn't see an IF)]
-de,dsgw,252,[ELIF nach ELSE gefunden (ENDIF erwartet)\n(found ELIF after ELSE (expecting ENDIF))]
-de,dsgw,253,[ELDIF wurde gefunden, aber kein IF\n(found ENDIF but didn't see an IF)]
-de,dsgw,254,[<BR><B>Vorlagefehler (template error):</B> %s<BR>\n]
-de,dsgw,255,[ldap_init/lcache_init aufgerufen, ehe Konfigurationsdatei gelesen wurde\n(ldap_init/lcache_init attempted before config file read)]
-de,dsgw,256,[führt nicht unter dem Verwaltungs-Server aus\n(not running under the administration server)]
-de,dsgw,257,[Konnte Genehmigungen nicht initialisieren\n(Could not initialize permissions)]
-de,dsgw,258,[Konnte Benutzername nicht auf einem DN abbilden (Fehler vom Verwaltungs-Server)\n(Could not map username to a DN (error from admin server))]
-de,dsgw,259,[Konnte aktuellen Benutzernamen nicht aufrufen\n(Could not get current username)]
-de,dsgw,260,[Konnte aktuelles Benutzerkennwort nicht abrufen\n(Could not get current user password)]
-de,dsgw,261,[Fehler (Error): %s]
-de,dsgw,262,[Hinweis: Für diese Art von Eintrag gibt es keine Anzeigevorlage; die Eintragsart \nwird unten\nim Standarmodus angezeigt.\n(Note: there is no display template for this type of entry available, so it is\ndisplayed below using a default method.)]
-de,dsgw,263,[Ungültige Benutzer-ID bzw. NULL LDAP-Erkennung\n(Invalid user id or NULL LDAP handle)]
-de,dsgw,264,[keine Übereinstimmung mit Benutzer-ID\n(no match for user id)]
-de,dsgw,265,[mehr als eine Übereinstimmung mit Benutzer-ID\n(more than one match for user id)]
-de,dsgw,266,[the entire directory]
-de,dsgw,267,[Die Betriebsanweisung "includeset" erfordert zwei Argumente\n(Two arguments are required for the "includeset" directive)\n]
-de,dsgw,268,[Der angeforderte Attributwert wurde im Eintrag nicht gefunden (The attribute value requested was not found in the entry)]
-de,dsgw,269,[Argument fehlt in der "NLS"-Betriebsanweisung\n]
-de,dsgw,270,[Es muß ein NT-Benutzername angegeben werden]
-de,dsgw,271,[Die Kombination aus NT-Benutzernamen und NT-Domäne ist in diesem Verzeichnis nicht eindeutig\n]
-de,dsgw,272,[Es muß sowohl ein NT-Benutzername als auch eine NT-Domäne angegeben werden\n]
-de,dsgw,273,[Der NT-Benutzername darf nicht länger sein als 20 Zeichen.]
-de,dsgw,274,[Namen für den neuen Eintrag angeben.]
-de,dsgw,275,[Standort für den neuen Eintrag auswählen.]
-de,dsgw,276,[Neuer Eintrag]
-de,dsgw,277,[Für diese Funktion muß ein Verzeichnisverwalter in der Datei "dsgw.conf" definiert sein]
-de,dsgw,278,[Die Betriebsanweisung "vcard-property" erfordert drei oder vier Argumente.\n]
-de,dsgw,279,[DieVCard-Eigenschaft kann nur entweder "cis" oder "mls" lauten.\n]
-de,dsgw,280,[Kein Eintrag gefunden.\n%2$s]
-de,dsgw,281,[Kein Eintrag gefunden, in dem %2$s '%4$s' %3$s.\n]
-de,dsgw,282,[Kein Eintrag gefunden.\n%2$s]
-de,dsgw,283,[Kein Eintrag gefunden, in dem %2$s '%4$s' %3$s.\n]
-de,dsgw,284,[1 Eintrag gefunden.\n%2$s]
-de,dsgw,285,[1 Eintrag gefunden, in dem %2$s '%4$s' %3$s.\n]
-de,dsgw,286,[1 Eintrag gefunden.\n%2$s]
-de,dsgw,287,[1 Eintrag gefunden, in dem %2$s '%4$s' %3$s.\n]
-de,dsgw,288,[%1$li Einträge gefunden.\n%2$s]
-de,dsgw,289,[%1$li Einträge gefunden, in denen %2$s '%4$s' %3$s.\n]
-de,dsgw,290,[%1$li Einträge gefunden.\n%2$s]
-de,dsgw,291,[%1$li Einträge gefunden, in denen %2$s '%4$s' %3$s.\n]
-de,dsgw,292,[der LDAP-Filter ist]
-de,dsgw,293,[Der Server konnte den Eintrag, den Sie bei der Beglaubigung verwendet haben, nicht finden. Möglicherweise wurde der Eintrag umbenannt oder gelöscht. Bitte wiederholen Sie die Beglaubigung.]
-de,dsgw,294,[Die neue Kennwortsyntax ist ungültig.\n]
-de,dsgw,295,[Das neue Kennwort ist in der Kennwortchronik enthalten.\n]
-de,dsgw,296,[Sie haben den Grenzwert für die Wiederholung des Kennworts überschritten. Bitte wenden Sie sich an den Systemverwalter.\n]
-de,dsgw,297,[Sie haben den Grenzwert für die Wiederholung des Kennworts überschritten. Versuchen Sie es später erneut.\n]
-de,dsgw,298,[Das Kennwort ist abgelaufen. Wenden Sie sich an den Systemverwalter, um das Kennwort zurückzusetzen.\n]
-de,frame,-1,[$DBT: frame in DB file v1 $]
-de,frame,1,[<TITLE>Nicht gefunden (Not Found)</TITLE><H1>Nicht gefunden (Not Found)</H1> Das angeforderte Objekt existiert nicht auf diesem Server. Die von Ihnen verfolgte Verknüpfung ist entweder veraltet, ungenau oder der Server darf sie Ihnen nicht anbieten.\n(The requested object does not exist on this server. The link you followed is either outdated, inaccurate, or the server has been instructed not to let you have it.)]
-de,frame,2,[Informieren Sie bitte den Standortverwalter über die <A HREF="%s">, Bezugsseite </A>.\n(Please inform the site administrator of the referring page.)]
-de,frame,3,[Ihr Browser sandte eine Anforderung, die dieser Proxy-Server nicht verstehen kann.\n(Your browser sent a request that this proxy could not understand.)]
-de,frame,4,[Ordnungsgemäße Genehmigung ist für den Administrator dieses Proxy-Servers erforderlich.\nEntweder führt Ihr Browser keine Genehmigung aus oder Ihre Genehmigung ist falsch.\n(Proper authorization is required for the administration of this proxy.\nEither your browser does not perform authorization, or your authorization\nhas failed.)]
-de,frame,5,[Beglaubigung des Benutzernamens ist erforderlich, um diesen Proxy-Server zu benutzen.\n Entweder führt Ihr Browser keine Proxy-Genehmigung aus oder Ihre Genehmigung ist falsch.\n(Username authentication is required for using this proxy.\nEither your browser does not perform proxy authorization, or your\nauthorization has failed.)]
-de,frame,6,[Die Zugriffssteuerungskonfiguration des Proxy-Servers verweigert\nZugriff auf das durch diesen Proxy-Server angeforderte Objekt.\n(The proxy's access control configuration denies access to\nthe requested object through this proxy.)]
-de,frame,7,[Im Proxy-Server ist ein interner Fehler aufgetreten, so daß Ihre\nAnforderung nicht ausgeführt werden kann. Wahrscheinlich ist die Konfiguration falsch.\nBitten Sie den Administrator, nach entsprechenden Hinweisen im Fehlerprotokoll des Proxy-Servers zu suchen.\n(The proxy has encountered an internal error which prevents it from\nfulfilling your request. The most likely cause is a misconfiguration.\nPlease ask the administrator to look for messages in the proxy's error log.)]
-de,frame,8,[Dieser Proxy-Server setzt nicht die angeforderte Methode ein.\n(This proxy server does not implement the requested method.)]
-de,frame,9,[Ein Fehler ist auf dem Proxy-Server aufgetreten.\n(An error has occurred on the proxy server.)]
-de,frame,10,[Dieser Server konnte die gesendete Anfrage Ihres Browsers nicht verstehen.\n(Your browser sent a query this server could not understand.)]
-de,frame,11,[Ordnungsgemäße Genehmigung ist für diesen Bereich erforderlich. Entweder führt Ihr Browser keine Genehmigung aus oder Ihre Genehmigung ist falsch.\n(Proper authorization is required for this area. Either your browser does not perform authorization, or your authorization has failed.)]
-de,frame,12,[Ihr Client darf das angeforderte Objekt nicht abrufen.\n(Your client is not allowed to access the requested object.)]
-de,frame,13,[In diesem Server ist ein interner Fehler aufgetreten, so daß Ihre Anforderung nicht ausgeführt werden kann. Wahrscheinlich ist die Konfiguration falsch. Bitten Sie den Administrator, nach entsprechenden Hinweisen im Fehlerprotokoll des Proxy-Servers zu suchen.\n(This server has encountered an internal error which prevents it from fulfilling your request. The most likely cause is a misconfiguration. Please ask the administrator to look for messages in the server's error log.)]
-de,frame,14,[Dieser Server setzt nicht die angeforderte Methode ein.\n(This server does not implement the requested method.)]
-de,frame,15,[Ein Fehler ist aufgetreten.\n(An error has occurred.)]
-de,frame,16,[Dieser Server konnte die gesendete Meldung Ihres Browsers nicht verstehen.\n(Your browser sent a message this server could not understand.)]
-de,frame,17,[<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=iso-8859-1"><META HTTP-EQUIV="Content-Language" CONTENT="de"><TITLE>%s</TITLE></HEAD><BODY><H1>%s</H1>\nDieses Dokument wurde an einen neuen <a href="%s">Standort verschoben</a>. Aktualisieren Sie bitte Ihre Dokumente und Hotlisten entsprechend.(This document has moved to a new location. Please update your documents and hotlists accordingly.)</BODY></HTML>\n]
-de,frame,18,[<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=iso-8859-1"><META HTTP-EQUIV="Content-Language" CONTENT="de"><TITLE>%s</TITLE></HEAD>\n<BODY><H1>%s</H1>\n%s\n</BODY></HTML>]
-de,frame,19,[process-uri-objects]
-de,frame,20,[cannot find template %s]
-de,frame,21,[process-uri-objects]
-de,frame,22,[no partial path after object processing]
-de,frame,23,[find-service]
-de,frame,24,[invalid shexp %s]
-de,frame,25,[find-service]
-de,frame,26,[invalid shexp %s]
-de,frame,27,[handle-processed]
-de,frame,28,[no way to service request for %s]
-de,frame,29,[finish-socks-request]
-de,frame,30,[close failed (%s), csd=%d]
-de,frame,31,[This beta software has expired.\n]
-de,frame,32,[mr_accept(%d)]
-de,frame,33,[Error issuing read on accept socket]
-de,frame,34,[acb_accept_connection(%d)]
-de,frame,35,[Error getting accept socket (%d)]
-de,frame,36,[Error in accept! (%d, %s)]
-de,frame,37,[Error creating new accept request]
-de,frame,38,[accepted connection: %d (NSPR %d)]
-de,frame,39,[Error creating new session structure]
-de,frame,40,[accel_read_request()]
-de,frame,41,[Error allocating request read buffer]
-de,frame,42,[Error issuing async read request]
-de,frame,43,[acb_read_request(%d, bytes %d)]
-de,frame,44,[acb_read_req(1 session = %d)]
-de,frame,45,[Error reading request (%d, %s)]
-de,frame,46,[Client aborted connection]
-de,frame,47,[Error reading request]
-de,frame,48,[Error creating new request]
-de,frame,49,[error occurred, closing %d, io was for %d]
-de,frame,50,[accel_async_scan_headers()]
-de,frame,51,[out of memory: accel_async_scan_headers]
-de,frame,52,[out of memory: accel_async_scan_headers]
-de,frame,53,[Error during async read (%d, %s)]
-de,frame,54,[scan-headers reports: line too long]
-de,frame,55,[scan-headers reports: too many headers]
-de,frame,56,[Error reading headers]
-de,frame,57,[scan-headers reports: header missing terminator (an empty line)]
-de,frame,58,[scan-headers reports: header was empty]
-de,frame,59,[Name ohne Wert: Zeile "%s" erhalten\n(name without value: got line as shown)]
-de,frame,60,[accel_send_plain_file()]
-de,frame,61,[accel_send_plain_file() - found request %d]
-de,frame,62,[Parse headers lost the URI!]
-de,frame,63,[accel_send_plain_file() - found uri %s]
-de,frame,64,[accel_send_plain_file() - found in cache?]
-de,frame,65,[malloc died!]
-de,frame,66,[Error writing back file\n]
-de,frame,67,[acb_send_plain_file(%d)]
-de,frame,68,[Error writing in acb_send_plain_file (%d, %s)]
-de,frame,69,[acb_close_connection(%d)]
-de,frame,70,[Errored IO in acb_close_connection (%d, %s)]
-de,frame,71,[Unable to close socket %d]
-de,frame,72,[accel-cache-insert: Error allocating entry]
-de,frame,73,[cache-init: server cache disabled]
-de,frame,74,[accel_file_cache: Error initializing file cache]
-de,frame,75,[accel_file_cache: Error creating cache]
-de,frame,76,[accel_file_cache_init: CacheHashSize < %d, using %d]
-de,frame,77,[accel_file_cache_init: CacheHashSize > %d, using %d]
-de,frame,78,[accel_file_cache_init: MaxNumberOfCachedFiles < %d, using %d]
-de,frame,79,[accel_file_cache_init: MaxNumberOfCachedFiles > %d, using %d]
-de,frame,80,[accel_file_cache_init: MaxNumberOfOpenCachedFiles < %d, using %d]
-de,frame,81,[accel_file_cache_init: MaxNumberOfOpenCachedFiles > %d, using %d]
-de,frame,82,[accel_file_cache: Error initializing file cache]
-de,frame,83,[file-cache: enabled = %s ]
-de,frame,84,[on]
-de,frame,85,[off]
-de,frame,86,[file-cache: MaxNumberOfCachedFiles %d (0x%x)]
-de,frame,87,[file-cache: CacheHashSize %d (0x%x)]
-de,frame,88,[file-cache: MaxNumberOfOpenCachedFiles %d (0x%x)]
-de,frame,89,[accel-cache-insert: Error allocating entry]
-de,frame,90,[file-cache-cleanup: munmap failed (%s)]
-de,frame,91,[file-cache-cleanup: found mmapped file \non system without mmap]
-de,frame,92,[file_cache_init: MaxTotalCachedFileSize < %d, using %d]
-de,frame,93,[file_cache_init: MaxTotalCachedFileSize > %d, using %d]
-de,frame,94,[file cache using mmap flags 0x%x]
-de,frame,95,[file cache using mmap prots 0x%x]
-de,frame,96,[file-cache-init: could not create lock]
-de,frame,97,[file-cache: unable to create temporary directory %s.\n]
-de,frame,98,[file-cache: unable to create temporary directory %s.\n]
-de,frame,99,[file-cache: GetTempPath() Cannot find temp directory to store file!]
-de,frame,100,[file-cache-init: set max cached file size to %d]
-de,frame,101,[file-cache-init: could not create lock]
-de,frame,102,[file_cache_destroy()]
-de,frame,103,[file-cache: Unable to get temp file name. Error %s]
-de,frame,104,[file-cache: Unable to get temp file name. Error %s]
-de,frame,105,[file-cache-insert: Error allocating entry]
-de,frame,106,[file-cache-create: Error opening file %s (%s)]
-de,frame,107,[file-cache-create: Error stat()ing file %s (%s)]
-de,frame,108,[file-cache-create: Error mmap()ing file %s (%s)]
-de,frame,109,[file-cache-create: malloc failure]
-de,frame,110,[file-cache-create: error case failed to munmap(%d, %d) (%s)]
-de,frame,111,[file-cache-valid: cannot stat %s]
-de,frame,112,[dir change: invalidating %s (%d)]
-de,frame,113,[file-cache: asynchronous file change notification failed.]
-de,frame,114,[dir change: offset %d, action %d, len %d, name %s]
-de,frame,115,[unable to check async file status]
-de,frame,116,[ReadDirectoryChangesW failure- unable to continue watching %s. Error is %s]
-de,frame,117,[file-cache-add-watch failure- unable to open directory %s. Error %s]
-de,frame,118,[ReadDirectoryChangesW failure- unable to start watching %s. Error %s]
-de,frame,119,[func_exec]
-de,frame,120,[no handler function given for directive]
-de,frame,121,[func_exec]
-de,frame,122,[cannot find function named %s]
-de,frame,123,[handle-request]
-de,frame,124,[method without URI]
-de,frame,125,[http-parse-request]
-de,frame,126,[while scanning HTTP headers, %s]
-de,frame,127,[handle-request]
-de,frame,128,[read from %s failed, error is %s]
-de,frame,129,[handle-request]
-de,frame,130,[request too long]
-de,frame,131,[start-http-response]
-de,frame,132,[write failed (%s)]
-de,frame,133,[start-http-response]
-de,frame,134,[write failed (%s)]
-de,frame,135,[http-status]
-de,frame,136,[%d is not a valid HTTP status code]
-de,frame,137,[finish-request]
-de,frame,138,[close failed (%s)]
-de,frame,139,[Unable to close socket for writing]
-de,frame,140,[os has %d objects]
-de,frame,141,[obj %d has no hash table at %d]
-de,frame,142,[obj %d has no param]
-de,frame,143,[obj %d name %s value %s]
-de,frame,144,[.....directives %d.......]
-de,frame,145,[.....directive %d]
-de,frame,146,[.......instance %d]
-de,frame,147,[...........param name %s value %s]
-de,frame,148,[ClearConfigurationParameters:RegCreateKey %s]
-de,frame,149,[ClearConfigurationParameters:RegEnumKey %s failed]
-de,frame,150,[obj.conf line %d: error in filter file "%s" at line %d: %s]
-de,frame,151,[obj.conf line %d: error in filter file "%s" at line %d: %s]
-de,frame,152,[Unable to allocate Subject property list.\n]
-de,frame,153,[Unable to set session ptr in Subject property list - error=%d\n]
-de,frame,154,[Unable to set request ptr in Subject property list - error=%d\n]
-de,frame,155,[file-cache-valid: cannot stat %s]
-de,frame,156,[file-cache-create: Error stat()ing file %s (%s)]
-de,httpdaemon,-1,[$DBT: httpdaemon in DB file v1 $]
-de,httpdaemon,1,[Error in ConvertThreadToFiber]
-de,httpdaemon,2,[Error in ConvertThreadToFiber]
-de,httpdaemon,3,[Error in md_start_system]
-de,httpdaemon,4,[Error in CreateFiber - idlefiber]
-de,httpdaemon,5,[Error in GetQueuedCompletionStatus]
-de,httpdaemon,6,[Error creating completion port]
-de,httpdaemon,7,[Could not SetHandleNonInheritable (%s)]
-de,httpdaemon,8,[Error accept/read new conn]
-de,httpdaemon,9,[Error in Respond()]
-de,httpdaemon,10,[Error in RespondCompleted()]
-de,httpdaemon,11,[daemon: unable to fork new process (%s)\n]
-de,httpdaemon,12,[daemon: setsid failed (%s)\n]
-de,httpdaemon,13,[daemon: can't log pid to %s (%s)\n]
-de,httpdaemon,14,[warning: could not set group id to %d (%s)\n]
-de,httpdaemon,15,[warning: could not set user id to %d (%s)\n]
-de,httpdaemon,16,[warning: daemon is running as super-user\n]
-de,httpdaemon,17,[could not determine current user name\n]
-de,httpdaemon,18,[error: chroot to %s failed (%s)\n]
-de,httpdaemon,19,[WARNING! netscape executable and library have different versions.\n]
-de,httpdaemon,20,[startup: listening to %s://%s, port %d as %s\n]
-de,httpdaemon,21,[startup: listening to %s://%s, port %d as %s\n]
-de,httpdaemon,22,[seminit failed (%s)\n]
-de,httpdaemon,23,[Using single threaded accepts.]
-de,httpdaemon,24,[Using multi threaded accepts.]
-de,httpdaemon,25,[Using partial single threaded accepts.]
-de,httpdaemon,26,[This machine has %d processors.]
-de,httpdaemon,27,[Error calling thr_seconcurrency(%d)- (%s)]
-de,httpdaemon,28,[Set conncurrency to %d.]
-de,httpdaemon,29,[can't fork new process (%s)]
-de,httpdaemon,30,[This beta software has expired.\n]
-de,httpdaemon,31,[can't create IPC pipe (%s)]
-de,httpdaemon,32,[write to wakeup pipe failed (%s)]
-de,httpdaemon,33,[select thread miss]
-de,httpdaemon,34,[startup failure: could not bind to port %d (%s)\n]
-de,httpdaemon,35,[startup failure: could not bind to port %d, IP address %s (%s)\n]
-de,libaccess,-1,[$DBT: libaccess in DB file v1 $]
-de,libaccess,1,[basic-ncsa]
-de,libaccess,2,[cannot open database %s]
-de,libaccess,3,[basic-ncsa]
-de,libaccess,4,[user %s password did not match database %s]
-de,libaccess,5,[basic-ncsa]
-de,libaccess,6,[cannot open connection to LDAP server on %s:%d]
-de,libaccess,7,[basic-ncsa]
-de,libaccess,8,[user %s password did not match LDAP on %s:%d]
-de,libaccess,9,[acl-state]
-de,libaccess,10,[missing realm]
-de,libaccess,11,[Unable to allocate ACL List Hash\n]
-de,libaccess,12,[ACLEvalBuildContext unable to PERM_MALLOC cache structure\n]
-de,libaccess,13,[ACLEvalBuildContext unable to create hash table\n]
-de,libaccess,14,[ACLEvalBuildContext unable to allocate ACE Entry\n]
-de,libaccess,15,[ACLEvalBuildContext unable to allocate ACE entry\n]
-de,libaccess,16,[ACLEvalBuildContext unable to allocate Boundary Entry\n]
-de,libaccess,17,[ACLEvalBuildContext failed.\n]
-de,libaccess,18,[ACL_EvalTestRights: an interim, absolute non-allow value was encountered. right=%s, value=%d\n]
-de,libaccess,19,[LASDnsBuild unable to allocate hash table header\n]
-de,libaccess,20,[LASDnsBuild unable to add key %s\n]
-de,libaccess,21,[LASDnsBuild unable to add key %s\n]
-de,libaccess,22,[LASDnsBuild unable to add key %s\n]
-de,libaccess,23,[LASDnsBuild unable to add key %s\n]
-de,libaccess,24,[LASDnsBuild unable to add key %s\n]
-de,libaccess,25,[LAS DNS build received request for attribute %s\n]
-de,libaccess,26,[LASDnsEval - illegal comparator %s\n]
-de,libaccess,27,[LASDnsEval unable to allocate Context struct\n\n]
-de,libaccess,28,[LASDnsEval unable to get session address %d\n]
-de,libaccess,29,[LASDnsEval unable to get DNS - error=%s\n]
-de,libaccess,30,[LAS Group Eval received request for attribute %s\n]
-de,libaccess,31,[LASGroupEval - illegal comparator %s\n]
-de,libaccess,32,[LASGroupEval - ran out of memory\n]
-de,libaccess,33,[LASGroupEval unable to get session address %d\n]
-de,libaccess,34,[LASGroupEval unable to get session address %d\n]
-de,libaccess,35,[LASGroupEval - couldn't locate getter for auth-user\n]
-de,libaccess,36,[LASGroupEval - Attribute getter for auth-user failed\n]
-de,libaccess,37,[LASGroupEval - Attribute getter didn't set auth-user\n]
-de,libaccess,38,[Check group membership of user "%s" for group "%s"\n]
-de,libaccess,39,[LDAPU_SUCCESS for group "%s"\n]
-de,libaccess,40,[LDAPU_FAILED for group "%s"\n]
-de,libaccess,41,[LAS_EVAL_FALSE\n]
-de,libaccess,42,[LAS_EVAL_TRUE\n]
-de,libaccess,43,[LASIpTreeAlloc - no memory\n]
-de,libaccess,44,[IP LAS unable to allocate tree node\n]
-de,libaccess,45,[IP LAS unable to allocate tree node\n]
-de,libaccess,46,[LAS IP build received request for attribute %s\n]
-de,libaccess,47,[LASIpEval - illegal comparator %s\n]
-de,libaccess,48,[LASIpEval unable to get session address - error=%s\n]
-de,libaccess,49,[LASIpEval unable to allocate Context struct\n\n]
-de,libaccess,50,[LASIpEval - reach 32 bits without conclusion value=%s]
-de,libaccess,51,[LAS Program Eval received request for attribute %s\n]
-de,libaccess,52,[LASProgramEval - illegal comparator %s\n]
-de,libaccess,53,[LASProgram unable to get session address %d\n]
-de,libaccess,54,[bin]
-de,libaccess,55,[LASProgramEval: request not of type admin or bin, passing.\n]
-de,libaccess,56,[LASProgramEval: check if program %s matches pattern %s.\n]
-de,libaccess,57,[LASProgramEval: Invalid wildcard expression %s.\n]
-de,libaccess,58,[LAS_EVAL_FALSE\n]
-de,libaccess,59,[LAS_EVAL_TRUE\n]
-de,libaccess,60,[Unexpected attribute in dayOfWeek - %s\n]
-de,libaccess,61,[Illegal comparator for dayOfWeek - %s\n]
-de,libaccess,62,[Unexpected attribute in timeOfDay - %s\n]
-de,libaccess,63,[LAS User Eval received request for attribute %s\n]
-de,libaccess,64,[LASUserEval - illegal comparator %s\n]
-de,libaccess,65,[LASUserEval - ran out of memory\n]
-de,libaccess,66,[LASUserEval unable to get session address %d\n]
-de,libaccess,67,[LASUserEval unable to get session address %d\n]
-de,libaccess,68,[LASGroupEval - couldn't locate getter for auth-user\n]
-de,libaccess,69,[LASGroupEval - Attribute getter for auth-user failed\n]
-de,libaccess,70,[LASGroupEval - Attribute getter didn't set auth-user\n]
-de,libaccess,71,[Check if uid == user (i.e. check "%s" == "%s)"\n]
-de,libaccess,72,[SUCCESS for user "%s"\n]
-de,libaccess,73,[FAILED for user "%s"\n]
-de,libaccess,74,[LAS_EVAL_FALSE\n]
-de,libaccess,75,[LAS_EVAL_TRUE\n]
-de,libaccess,76,[]
-de,libaccess,77,[LASProgram unable to get request address - error=%s]
-de,libaccess,78,[LASProgram rejecting request for program %s from pattern %s]
-de,libaccess,79,[ACL_CacheFlush: unable to parse file "%s"\n]
-de,libaccess,80,[ACL_CacheFlush: unable to concatenate ACL list "%s"\n]
-de,libaccess,81,[ACL_CacheFlush: unable to open and process the magnus file "%s"\n]
-de,libaccess,82,[Illegal comparator for timeOfDay - %s\n]
-de,libaccess,83,[ACL_EvalBuildContext unable to create hash table\n]
-de,libaccess,84,[ACL_EvalBuildContext unable to PERM_CALLOC cache structure\n]
-de,libaccess,85,[ACL_EvalBuildContext unable to allocate ACE entry\n]
-de,libaccess,86,[ACL_EvalBuildContext unable to allocate auth pointer array\n]
-de,libaccess,87,[ACL_EvalBuildContext unable to allocate auth plist\n]
-de,libaccess,88,[ACL_EvalTestRights: an interim, absolute non-allow value was encountered. right=%s, value=%s\n]
-de,libaccess,89,[ACL_INTEvalTestRights: call to ACL_EvalBuildContext returned failure status\n]
-de,libaccess,90,[ACL_ModuleRegister: module name is missing\n]
-de,libaccess,91,[ACL_ModuleRegister: call to module init function returned a failed status\n]
-de,libaccess,92,[ACL_GetAttribute: couldn't determine method for %s\n]
-de,libaccess,93,[ACL_GetAttribute: couldn't locate getter for %s]
-de,libaccess,94,[ACL_GetAttribute: attr getter failed to get %s]
-de,libaccess,95,[ACL_GetAttribute: attr getter failed to get %s]
-de,libaccess,96,[ACL_GetAttribute: All attribute getters declined for attr %s]
-de,libaccess,97,[ACL_DatabaseRegister: dbtype for database "%s" is not defined yet!]
-de,libaccess,98,[ACL_DatabaseRegister: database name is missing]
-de,libaccess,99,[Error reading the DB Map File: %s. Reason: %s]
-de,libaccess,100,[URL is missing for database %s]
-de,libaccess,101,[Invalid property value pair for database %s]
-de,libaccess,102,["default" database must be an LDAP database]
-de,libaccess,103,[Multiple "default" databases are being registered]
-de,libaccess,104,["default" LDAP database must be registered]
-de,libaccess,105,[LASGroupEval unable to get database name - error= %s]
-de,libaccess,106,[received invalid program expression %s]
-de,libaccess,107,[parse_ldap_url: database url is missing]
-de,libaccess,108,[parse_ldap_url: database name is missing]
-de,libaccess,109,[parse_ldap_url: error in parsing ldap url. Reason: %s]
-de,libaccess,110,[ldap password check: unable to get database name - error=%s]
-de,libaccess,111,[ldap password check: unable to get parsed database %s]
-de,libaccess,112,[ldap password check: couldn't initialize connection to LDAP. Reason: %s]
-de,libaccess,113,[ldap password check: LDAP error: "%s"]
-de,libaccess,114,[get_user_ismember_ldap unable to get database name - error=%s]
-de,libaccess,115,[get_user_ismember_ldap unable to get parsed database %s]
-de,libaccess,116,[ldap password check: couldn't initialize connection to LDAP. Reason: %s]
-de,libaccess,117,[get_user_ismember_ldap: group %s does not exist]
-de,libaccess,118,[get_user_ismember_ldap: LDAP error: "%s"]
-de,libaccess,119,[ACL_LDAPDatabaseHandle: %s is not a registered database]
-de,libaccess,120,[ACL_LDAPDatabaseHandle: %s is not an LDAP database]
-de,libaccess,121,[ACL_LDAPDatabaseHandle: out of memory]
-de,libaccess,122,[ACL_LDAPDatabaseHandle: couldn't initialize connection to LDAP. Reason: %s]
-de,libaccess,123,[ACL_LDAPDatabaseHandle: couldn't bind to LDAP server. Reason: %s]
-de,libaccess,124,[insufficient dynamic memory]
-de,libaccess,125,[error opening file, %s: %s]
-de,libaccess,126,[duplicate definition of %s]
-de,libaccess,127,[file %s, line %s: duplicate definition of %s]
-de,libaccess,128,[file %s, line %s: syntax error]
-de,libaccess,129,[file %s, line %s: %s is undefined]
-de,libaccess,130,[in acl %s, %s %s is undefined]
-de,libaccess,131,[database %s: error accessing %s]
-de,libaccess,132,[%s]
-de,libaccess,133,[file %s, line %s: invalid syntax]
-de,libaccess,134,[file %s, line %s: syntax error at "%s"]
-de,libaccess,135,[realm %s is not defined]
-de,libaccess,136,[error code = %d]
-de,libaccess,137,[internal ACL error]
-de,libaccess,138,[invalid argument]
-de,libaccess,139,[ACL_DatabaseRegister: dbtype for database "%s" is not defined yet!]
-de,libaccess,140,[couldn't determine dbtype from: %s]
-de,libaccess,141,[Failed to register database %s]
-de,libaccess,142,[ACL call returned failed status]
-de,libaccess,143,[file %s: ACL IO error - %s]
-de,libaccess,144,[acl_user_exists: Nicht genug Speicher]
-de,libaccess,145,[acl_user_exists: Benutzer existiert nicht mehr]
-de,libaccess,146,[acl_user_exists: plist-Fehler]
-de,libadmin,-1,[$DBT: libadmin in DB file v1 $]
-de,libadmin,1,[ Help ]
-de,libadmin,2,[ OK ]
-de,libadmin,3,[ Reset ]
-de,libadmin,4,[ Done ]
-de,libadmin,5,[ Cancel ]
-de,libir,-1,[$DBT: libadmin in DB file v1 $]
-de,libir,1,[An I/O error occurred before all form data could be read.]
diff --git a/l10n/dirserv/en/ns-slapd.txt b/l10n/dirserv/en/ns-slapd.txt
deleted file mode 100644
index cedca87e..00000000
--- a/l10n/dirserv/en/ns-slapd.txt
+++ /dev/null
@@ -1,1027 +0,0 @@
-#
-# BEGIN COPYRIGHT BLOCK
-# This Program is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; version 2 of the License.
-#
-# This Program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place, Suite 330, Boston, MA 02111-1307 USA.
-#
-# In addition, as a special exception, Red Hat, Inc. gives You the additional
-# right to link the code of this Program with code not covered under the GNU
-# General Public License ("Non-GPL Code") and to distribute linked combinations
-# including the two, subject to the limitations in this paragraph. Non-GPL Code
-# permitted under this exception must only link to the code of this Program
-# through those well defined interfaces identified in the file named EXCEPTION
-# found in the source code files (the "Approved Interfaces"). The files of
-# Non-GPL Code may instantiate templates or use macros or inline functions from
-# the Approved Interfaces without causing the resulting work to be covered by
-# the GNU General Public License. Only Red Hat, Inc. may make changes or
-# additions to the list of Approved Interfaces. You must obey the GNU General
-# Public License in all respects for all of the Program code and other code used
-# in conjunction with the Program except the Non-GPL Code covered by this
-# exception. If you modify this file, you may extend this exception to your
-# version of the file, but you are not obligated to do so. If you do not wish to
-# provide this exception without modification, you must delete this exception
-# statement from your version and license this file solely under the GPL without
-# exception.
-#
-#
-# Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
-# Copyright (C) 2005 Red Hat, Inc.
-# All rights reserved.
-# END COPYRIGHT BLOCK
-#
-/**************************************************************************/
-/* The copyright notice(s) in this Source Code does not indicate actual */
-/* or intended publication of this Source Code. */
-/**************************************************************************/
-
-/* This text file was generated by program dblink */
-
-$Revision: 1.4 $
-$Log: ns-slapd.txt,v $
-Revision 1.4 2005/04/19 22:06:50 nkinder
-Fixed licensing typo
-
-Revision 1.3 2005/04/15 22:39:18 nkinder
-155068 - Added license to source files
-
-Revision 1.2 2005/02/28 23:37:40 nkinder
-149951 - Updated source code copyrights
-
-Revision 1.1.1.1 2005/01/21 00:40:48 cvsadm
-Moving NSCP Directory Server from DirectoryBranch to TRUNK, initial drop. (foxworth)
-
-Revision 1.1.2.3.10.1.8.4 2003/09/22 19:36:41 ulfw
-Update copyright years from 2001 to 2001-2003
-
-Revision 1.1.2.3.10.1.8.3 2001/11/03 01:05:57 richm
-XXX use new copyright XXX
-
-Revision 1.1.2.3.10.1.8.2 2001/09/20 16:39:13 richm
-removed 8 bit copyright character
-
-Revision 1.1.2.3.10.1.8.2 2001/09/18 11:48:15 rmarco
-Remove copyright caracter from copyright
-
-Revision 1.1.2.3.10.1.8.1 2001/02/13 09:59:52 rmarco
-Copyrights
-
-Revision 1.1.2.3.10.1 1998/04/04 23:16:50 mcs
-merge changes made on directory31_rtm_branch into server4_directory_branch
-
-Revision 1.1.2.3.6.1 1998/02/24 05:51:54 noriko
-Synched with server3_i18npkg_branch
-
-Revision 1.1.2.5 1998/02/12 01:15:09 scronin
-still the same i18n changes
-
-$EndLog$
-
-$StartStringData$
-
-en,base,-1,[$DBT: base in DB file v1 $]
-en,base,1,[insufficient memory to create hash table]
-en,base,2,[insufficient memory to create hash table]
-en,base,3,[cache_destroy: cache tables appear corrupt.]
-en,base,4,[unable to allocate hash entry]
-en,base,5,[cache_insert: unable to create cache entry]
-en,base,6,[HTTP/1.0 200 OK\nContent-type: text/html\n\n]
-en,base,7,[<H2>Netscape cache status report</H2>\n]
-en,base,8,[No caches on system<P>]
-en,base,9,[<H2>%s cache</H2>\n]
-en,base,10,[Cache hit ratio: %d/%d (%f)</P>\n</P>\n]
-en,base,11,[Cache size: %d/%d</P>\n</P>\n]
-en,base,12,[Hash table size: %d</P>\n</P>\n]
-en,base,13,[mru : %d</P>\nlru : %d</P>\n]
-en,base,14,[<UL><TABLE BORDER=4> <TH>Bucket</TH> <TH>Address</TH> <TH>Key</TH> <TH>Access Count</TH> <TH>Delete</TH> <TH>Next</TH> <TH>LRU</TH> <TH>MRU</TH> <TH>Data</TH>\n]
-en,base,15,[munmap failed (%s)]
-en,base,16,[munmap failed (%s)]
-en,base,17,[close failed (%s)]
-en,base,18,[daemon: unable to fork new process (%s)\n]
-en,base,19,[daemon: setsid failed (%s)\n]
-en,base,20,[daemon: can't log pid to %s (%s)\n]
-en,base,21,[warning: could not set group id to %d (%s)\n]
-en,base,22,[warning: could not set user id to %d (%s)\n]
-en,base,23,[warning: daemon is running as super-user\n]
-en,base,24,[could not determine current user name\n]
-en,base,25,[error: chroot to %s failed (%s)\n]
-en,base,27,[, address %s]
-en,base,28,[warning: statistics disabled (%s)\n]
-en,base,29,[security handshake timed out for pid %d]
-en,base,30,[warning: statistics disabled (%s)\n]
-en,base,31,[secure handshake failed (code %d)\n]
-en,base,32,[accept failed (%s)]
-en,base,33,[warning: statistics disabled (%s)\n]
-en,base,34,[select thread miss]
-en,base,35,[keepalive worker awoken with no work to do]
-en,base,36,[could not create new thread: %d (%s)]
-en,base,37,[wait for sema succeeded, but nothing to dequeue]
-en,base,38,[queue-sema creation failure]
-en,base,39,[error getting processor info for processor %d]
-en,base,40,[Error binding to processor %d]
-en,base,41,[bound process %d to processor %d]
-en,base,42,[Netscape server is not explicitly binding to any processors.]
-en,base,43,[cache monitor exited]
-en,base,44,[cache batch update daemon exited]
-en,base,45,[Using single threaded accepts.]
-en,base,46,[Using multi threaded accepts.]
-en,base,47,[Using partial single threaded accepts.]
-en,base,48,[This machine has %d processors.]
-en,base,49,[Error calling thr_seconcurrency(%d)- (%s)]
-en,base,50,[Set conncurrency to %d.]
-en,base,51,[WARNING! netscape executable and library have different versions.\n]
-en,base,54,[seminit failed (%s)\n]
-en,base,55,[This beta software has expired.\n]
-en,base,56,[Cache monitor respawned]
-en,base,57,[Cache batch update daemon respawned]
-en,base,58,[can't find empty statistics slot]
-en,base,59,[can't fork new process (%s)]
-en,base,60,[assert failed! %s\n]
-en,base,61,[mr_table_init()]
-en,base,62,[malloc failed]
-en,base,63,[malloc failed!]
-en,base,64,[mr_add_io(%d, type %d, file %d)]
-en,base,65,[mr_add_io - stage 1]
-en,base,66,[mr_add_io - stage 2]
-en,base,67,[mr_add_io found invalid IO type %d]
-en,base,68,[mr_add_io - adding timeout]
-en,base,69,[Out of memory!\n]
-en,base,70,[done with mr_add_io]
-en,base,71,[mr_del_io(%d, type %d, file %d)]
-en,base,72,[mr_del_io found invalid IO type %d]
-en,base,73,[mr_lookup_io(%d)]
-en,base,74,[mr_async_io(%d, %d bytes, file %d)]
-en,base,75,[malloc failure adding async IO]
-en,base,76,[Error adding async io!]
-en,base,77,[Cannot seek for read!]
-en,base,78,[read failure! (%d, %s)]
-en,base,79,[do_read read %d bytes for file %d]
-en,base,80,[Cannot seek for write!]
-en,base,81,[writev failure! (%d, %s)]
-en,base,82,[write failure! (%d, %s)]
-en,base,83,[do_write wrote %d bytes for file %d]
-en,base,84,[do_timeout(mrp %d)]
-en,base,85,[do_timeout: found IO (timer=%d, time=%d)]
-en,base,86,[error deleting io]
-en,base,87,[timeout callback failure for %d\n]
-en,base,88,[mr_get_event(%d) - outstanding io %d]
-en,base,89,[mr_get_event: Waiting for reads on FD:]
-en,base,90,[mr_get_event: Waiting for writes on FD:]
-en,base,91,[ %d]
-en,base,92,[ %d]
-en,base,93,[mr_get_event set no timeout]
-en,base,94,[mr_get_event set timeout to: %d.%d sec]
-en,base,95,[error in select (%d, %s)]
-en,base,96,[mr_get_event() - select found %d]
-en,base,97,[error looking up IO fd %d]
-en,base,98,[read failed for fd %d]
-en,base,99,[error deleting io]
-en,base,100,[callback failure for %d\n]
-en,base,101,[error looking up IO fd %d]
-en,base,102,[writing: header len %d, writelen %d, total %d]
-en,base,103,[write failed for fd %d]
-en,base,104,[error deleting io]
-en,base,105,[callback failure for %d\n]
-en,base,106,[Error creating dns cache]
-en,base,107,[dns_cache_init: hash_size <= 0, using %d]
-en,base,108,[dns_cache_init: cache-size <= %d, using %d]
-en,base,109,[dns_cache_init: cache-size is %d is too large, using %d.]
-en,base,110,[dns_cache_init: expire_time <= 0, using %d]
-en,base,111,[dns_cache_init: expire is %d is too large, using %d seconds.]
-en,base,112,[Error creating dns cache]
-en,base,113,[dns-cache-insert: Error allocating entry]
-en,base,114,[dns-cache-insert: malloc failure]
-en,base,115,[successful server startup]
-en,base,116,[%s B%s]
-en,base,117,[Netscape executable and shared library have different versions]
-en,base,118,[ executable version is %s]
-en,base,119,[ shared library version is %s]
-en,base,120,[error reporting shutting down]
-en,base,121,[warning]
-en,base,122,[config]
-en,base,123,[security]
-en,base,124,[failure]
-en,base,125,[catastrophe]
-en,base,126,[info]
-en,base,127,[verbose]
-en,base,128,[event_handler:Failed to wait on events %s]
-en,base,129,[could not wait on resume event event (%s)]
-en,base,130,[dlopen of %s failed (%s)]
-en,base,131,[dlopen of %s failed (%s)]
-en,base,132,[The server is terminating due to an error. Check the event viewer for the error message. SERVER EXITING!]
-en,base,133,[Terminating the server %s]
-en,base,134,[kill_server:cannot open server event %s]
-en,base,135,[kill_server:cannot set server event %s]
-en,base,136,[error: could not get socket (%s)\n]
-en,base,137,[error: could not set socket option (%s)\n]
-en,base,138,[Terminating Service:error: could not bind to address %s port %d (%s)\n]
-en,base,139,[Terminating Service:error: could not bind to port %d (%s)\n]
-en,base,140,[SetHandleNonInheritable: could not duplicate socket (%s)]
-en,base,141,[SetHandleNonInheritable: closing the original socket failed (%s)]
-en,base,142,[Could not SetHandleInformation (%s)]
-en,base,143,[Terminating Service:Failure: Could not open statistics file (%s)\n]
-en,base,144,[Could not set Thread Local Storage Value for thread at slot %d]
-en,base,145,[secure handshake failed (code %d)\n]
-en,base,146,[accept failed %d (%s)]
-en,base,147,[Failed to pulse Event %d %s]
-en,base,148,[Failed to send MobGrowth Event to parent %s]
-en,base,149,[Pulsing MobRespawn Event %d]
-en,base,150,[respawn thread pool to %d (%d)]
-en,base,151,[Could not open event to signal rotate application. Could not create the MoveLog event:%s]
-en,base,152,[Failed to send MoveLog Event to rotate app %s]
-en,base,153,[growing thread pool from %d to %d]
-en,base,154,[Could not open the ServiceControlManager, Error %d]
-en,base,155,[StartNetsiteService:Could not open the service %s: Error %d]
-en,base,156,[StartNetsiteService:Could not start the service %s]
-en,base,157,[Service Startup: Could not allocate security descriptor]
-en,base,158,[Service Startup: Could not init security descriptor]
-en,base,159,[Service Startup: Could not set the security Dacl]
-en,base,160,[Terminating Service:WinSock init failed: %s]
-en,base,161,[Httpd Server Startup failed: %s]
-en,base,162,[can't find empty statistics slot]
-en,base,163,[NT daemon: could not create new thread %d]
-en,base,164,[Service Startup Failure. Terminating Service:Could not create event %d:%s]
-en,base,165,[Service Startup Error. Could not create the MoveLog event:%s]
-en,base,166,[Failed to wait on Event objects %s]
-en,base,167,[Failed to wait on Event objects %s]
-en,base,168,[pipebuf_buf2sd: pipebuf_grab IO_ERROR %d]
-en,base,169,[pool-init: memory pools disabled]
-en,base,170,[pool-init: free_size <= 0, using %d]
-en,base,171,[pool-create-block: out of memory]
-en,base,172,[pool-create: out of memory]
-en,base,173,[pool-create: out of memory]
-en,base,174,[pool-malloc: out of memory]
-en,base,175,[FREE() used where PERM_FREE() should have been used- problem corrected and supressing further warnings.]
-en,base,176,[regex error: %s (regex: '%s')]
-en,base,177,[can't create IPC pipe (%s)]
-en,base,178,[write to wakeup pipe failed (%s)]
-en,base,179,[flushing %d connections; current %d; tot %d]
-en,base,180,[accept failed (%s)]
-en,base,181,[Error creating time cache]
-en,base,182,[time-cache: cache disabled]
-en,base,183,[time_cache_init: hash_size < %d, using default, %d]
-en,base,184,[time_cache_init: hash_size > %d, using default, %d]
-en,base,185,[time_cache_init: cache_size < %d, using default, %d]
-en,base,186,[time_cache_init: cache_size > %d, using default, %d]
-en,base,187,[Error allocating memory for time_cache]
-en,base,188,[Error allocating memory for time_cache entry]
-en,base,189,[Error allocating memory for time_cache entry]
-en,base,190,[Error inserting new time_cache entry]
-en,base,191,[Error allocating memory for time_cache]
-en,base,192,[cs-terminate failure (%s)]
-en,base,193,[cs-init failure (%s)]
-en,base,194,[cs-wait failure (%s)]
-en,base,195,[cs-post failure (%s)]
-en,base,196,[Unable to create nonblocking socket (%s)]
-en,base,197,[error: could not set keepalive (%s)\n]
-en,base,198,[error: could not set recv timeout (%s)\n]
-en,base,199,[error: could not set send timeout (%s)\n]
-en,base,200,[Unable to create nonblocking socket (%s)]
-en,base,201,[sem_grab failed (%s)]
-en,base,202,[sem_release failed (%s)]
-en,base,203,[sem_release failed (%s)]
-en,base,204,[Could not remove temporary directory %s, Error %d]
-en,base,205,[Could not remove temporary directory %s, Error %d]
-en,dsgw,-1,[$DBT: dsgw in DB file v1 $]
-en,dsgw,1,[Unknown HTTP request method]
-en,dsgw,2,[Invalid or incomplete HTML form data]
-en,dsgw,3,[Out of memory]
-en,dsgw,4,[Required query/form input is missing]
-en,dsgw,5,[Illegal character in file path]
-en,dsgw,6,[Bad or missing configuration file]
-en,dsgw,7,[Unable to initialize LDAP]
-en,dsgw,8,[An error occurred while contacting the LDAP server]
-en,dsgw,9,[Unknown search object type]
-en,dsgw,10,[Unknown attribute label]
-en,dsgw,11,[Unknown match prompt]
-en,dsgw,12,[No search filters for object type]
-en,dsgw,13,[Unable to open HTML template file]
-en,dsgw,14,[Unknown search mode - use "smart", "complex", "pattern", or "auth"]
-en,dsgw,15,[Distinguished Name missing in URL]
-en,dsgw,16,[Unknown scope in URL (should be base, sub, or one)]
-en,dsgw,17,[Unrecognized URL or unknown error]
-en,dsgw,18,[Bad URL format]
-en,dsgw,19,[Internal error]
-en,dsgw,20,[Unable to write template index file]
-en,dsgw,21,[Unable to open template index file]
-en,dsgw,22,[Unable to read directory]
-en,dsgw,23,[LDAP SSL initialization failed (check the security path)]
-en,dsgw,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 ]
-en,dsgw,25,[Authentication credentials not found in authentication database]
-en,dsgw,26,[Error retrieving data from the authentication database]
-en,dsgw,27,[Your authentication credentials have expired]
-en,dsgw,28,[Unable to create a random string]
-en,dsgw,29,[No distinguished name was provided when retrieving credentials]
-en,dsgw,30,[Cannot open authentication database]
-en,dsgw,31,[Could not append data to the authentication database]
-en,dsgw,32,[No Directory Manager is defined]
-en,dsgw,33,[No search string was provided. Please try again]
-en,dsgw,34,[Too many arguments on one line in the config. file]
-en,dsgw,35,[Failed to initialize Windows Sockets]
-en,dsgw,36,[Authentication credentials could not be obtained from the Administration Server]
-en,dsgw,37,[Distinguished Name missing in ldapdb:// URL]
-en,dsgw,38,[Unrecognized URL or unknown error]
-en,dsgw,39,[Bad URL format]
-en,dsgw,40,[An error occurred while initializing the local ldap database]
-en,dsgw,41,[Unknown directory service type - use "local" or "remote"]
-en,dsgw,42,[An error occurred while reading the db configuration file]
-en,dsgw,43,[NSHOME/userdb path was NULL]
-en,dsgw,44,[The directory service configuration could not be updated.]
-en,dsgw,45,[The entry could not be read from the directory.]
-en,dsgw,46,[The LDAP database could not be erased.]
-en,dsgw,47,[You may not change entries besides your own.]
-en,dsgw,48,[Problem]
-en,dsgw,49,[Authentication Problem]
-en,dsgw,50,[.\n<P>You must re-authenticate before continuing.\n]
-en,dsgw,51,[.\n<P>You must re-authenticate before continuing.\n]
-en,dsgw,52,[unknown error]
-en,dsgw,53,[The operation was successful.]
-en,dsgw,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.]
-en,dsgw,55,[The server could not understand the request which was sent to\nit by the gateway.]
-en,dsgw,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.]
-en,dsgw,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.]
-en,dsgw,58,[The gateway attempted to authenticate to the server using\na method the server doesn't understand.]
-en,dsgw,59,[The gateway attempted to authenticate to the server using an\nauthentication method which the server does not support. ]
-en,dsgw,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.]
-en,dsgw,61,[Your request exceeded an administrative limit in the server.]
-en,dsgw,62,[A critical extension that the gateway requested is not available in this server.]
-en,dsgw,63,[The server was unable to process the request, becase the\nrequest referred to an attribute which does not exist in the\nentry.]
-en,dsgw,64,[The server was unable to fulfill your request, because the\nrequest violates a constraint.]
-en,dsgw,65,[The server could not add a value to the entry, because that\nvalue is already contained in the entry.]
-en,dsgw,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.]
-en,dsgw,67,[A distinguished name was not in the proper format. ]
-en,dsgw,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. ]
-en,dsgw,69,[The password (or other authentication credentials) you supplied\nis incorrect.]
-en,dsgw,70,[You do not have sufficient privileges to perform the operation. ]
-en,dsgw,71,[The server is too busy to service your request. Try again\nin a few minutes.]
-en,dsgw,72,[The LDAP server could not be contacted.]
-en,dsgw,73,[The server was unwilliing 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.]
-en,dsgw,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.]
-en,dsgw,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.]
-en,dsgw,76,[The server was unable to add a new entry, or rename an existing\nentry, because an entry by that name already exists.]
-en,dsgw,77,[Your request would affect several directory servers.]
-en,dsgw,78,[The directory server could not be contacted. Contact your\nserver administrator for assistance.]
-en,dsgw,79,[An error occured while sending data to the server.]
-en,dsgw,80,[An error occured while reading data from the server.]
-en,dsgw,81,[The server did not respond to the request. \nThe request timed out.]
-en,dsgw,82,[The server does not support the authentication method used\nby the gateway.]
-en,dsgw,83,[The search filter constructed by the gateway was in error.]
-en,dsgw,84,[The operation was cancelled at your request.]
-en,dsgw,85,[An internal error occurred in the library - a parameter was\nincorrect.]
-en,dsgw,86,[A connection to the server could not be opened. Contact your\nserver administrator for assistance.]
-en,dsgw,87,[An unknown error was encountered.]
-en,dsgw,88,[Entry Already Exists]
-en,dsgw,89,[An entry named ]
-en,dsgw,90,[onMouseOver="window.status='Click here to view this entry'; return true"]
-en,dsgw,91,[ already exists.<P>Please choose another name and/or location.\n<P>\n]
-en,dsgw,92,[Parent entry does not exist]
-en,dsgw,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]
-en,dsgw,94,[its parent.\n]
-en,dsgw,95,[an entry named:<P><B>%s</B>.\n]
-en,dsgw,96,[Warning: no authentication (continuing)...\n]
-en,dsgw,97,[%s Directory Entry]
-en,dsgw,98,[<PRE>Entry DN: %s</PRE><P>\n]
-en,dsgw,99,[Changes to <B>%s</B> have been saved.]
-en,dsgw,100,[<B>%s</B> has been added.]
-en,dsgw,101,[<B>%s</B> has been deleted.]
-en,dsgw,102,[Renamed <B>%s</B> to <B>%s</B>.]
-en,dsgw,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]
-en,dsgw,104,[deleted]
-en,dsgw,105,[renamed]
-en,dsgw,106,[changed the password of]
-en,dsgw,107,[Attribute %s was changed<BR>\n]
-en,dsgw,108,[ NOT ASCII (%ld bytes)\n]
-en,dsgw,109,[No values were entered. Please try again.\n]
-en,dsgw,110,[No changes were made.\n]
-en,dsgw,111,[<P>Sending %s to the directory server...\n]
-en,dsgw,112,[information]
-en,dsgw,113,[changes]
-en,dsgw,114,[<P>Successfully added entry.\n]
-en,dsgw,115,[<P>Successfully edited entry. Your changes have been saved.\n]
-en,dsgw,116,[<P>Successfully deleted entry.\n]
-en,dsgw,117,[<PRE>The new name for the entry is: %s\n</PRE><HR>\n]
-en,dsgw,118,[<P>Successfully renamed entry.\n]
-en,dsgw,119,[You must provide the old password.]
-en,dsgw,120,[You must provide a new password. Please try again]
-en,dsgw,121,[The new and confirming passwords do not match. Please try again]
-en,dsgw,122,[<BR>The %s <B>%s</B> is already in use. Please choose a different one.<BR>\n]
-en,dsgw,123,[missing form data element "%.100s"]
-en,dsgw,124,[Initializing config info]
-en,dsgw,125,[Cannot open file.]
-en,dsgw,126,[Malformed dbconf file.]
-en,dsgw,127,[Missing property name in dbconf file.]
-en,dsgw,128,[Out of memory.]
-en,dsgw,129,[Missing directive in dbconf file.]
-en,dsgw,130,[Cannot open config file "%s"\n]
-en,dsgw,131,[Missing argument for "authlifetime" directive\n]
-en,dsgw,132,[Missing argument for "dirmgr" directive\n]
-en,dsgw,133,[Missing argument for "baseurl" directive\n]
-en,dsgw,134,[Bad URL provided for "baseurl" directive - the base DN is missing\n]
-en,dsgw,135,[parsing baseurl directive]
-en,dsgw,136,[Bad URL provided for "baseurl" directive - not an "ldap://" URL\n]
-en,dsgw,137,["ldaps://" URLs are not yet supported\n]
-en,dsgw,138,[Missing arguments for "template" directive\n]
-en,dsgw,139,[Missing argument for "sslrequired" directive\n]
-en,dsgw,140,[Unknown argument to "sslrequired" directive (should be "never", "whenauthenticated", "always")\n]
-en,dsgw,141,[Missing argument for "securitypath" directive\n]
-en,dsgw,142,[Missing argument for "location-suffix" directive\n]
-en,dsgw,143,[Three arguments are required for the "location" directive\n]
-en,dsgw,144,[At least two arguments are required for the "newtype" directive\n]
-en,dsgw,145,[Unknown location in "newtype" directive\n]
-en,dsgw,146,[Three or four arguments are required for the "tmplset" directive\n]
-en,dsgw,147,[Four arguments are required for the "attrvset" directive\n]
-en,dsgw,148,[Missing argument for "charset" directive\n]
-en,dsgw,149,[Missing argument for "ClientLanguage" directive\n]
-en,dsgw,150,[Missing argument for "AdminLanguage" directive\n]
-en,dsgw,151,[Missing argument for "DefaultLanguage" directive\n]
-en,dsgw,152,[Missing filename for "include" directive\n]
-en,dsgw,153,[Unknown directive in config file\n]
-en,dsgw,154,[<= erase_db could not open lcache.conf file "%s"\n]
-en,dsgw,155,[<FONT SIZE="+1">\n<P>The database has been deleted. Creating new database... \n</FONT>\n ]
-en,dsgw,156,[<FONT SIZE="+1">\n<P>The database could not be deleted \n</FONT>\n ]
-en,dsgw,157,[<= app_suffix could not open ldif file "%s"\n]
-en,dsgw,158,[<= app_suffix could not open tmp file "%s"\n]
-en,dsgw,159,[Unable to rename %s to %s]
-en,dsgw,160,[null pointer returned by dbconf_read_default_dbinfo().]
-en,dsgw,161,[Bad "ldapdb" URL - the base DN is missing\n]
-en,dsgw,162,[Bad "ldapdb" URL\n]
-en,dsgw,163,[Bad URL provided for "baseurl" directive - the base DN is missing\n]
-en,dsgw,164,[parsing baseurl directive]
-en,dsgw,165,[Bad URL provided for "baseurl" directive - not an "ldap:// or ldapdb://" URL\n]
-en,dsgw,166,["ldaps://" URLs are not yet supported\n]
-en,dsgw,167,[No value given for binddn]
-en,dsgw,168,[No value given for bindpw]
-en,dsgw,169,[There is no default directory service defined in the dbswitch.conf file]
-en,dsgw,170,[Cannot open config file "%s" for writing\n]
-en,dsgw,171,[Unable to rename %s to %s]
-en,dsgw,172,[config file %s: ]
-en,dsgw,173,[config file %s: line %d: ]
-en,dsgw,174,[max %d]
-en,dsgw,175,[ OK ]
-en,dsgw,176,[Close Window]
-en,dsgw,177,[Go Back]
-en,dsgw,178,[{crypt}LOCKED [%s GMT]]
-en,dsgw,179,[Return to Main]
-en,dsgw,181,[ Help ]
-en,dsgw,182,[Help]
-en,dsgw,184,[Help is not yet available.]
-en,dsgw,186,[Close Window]
-en,dsgw,187,[Close Window]
-en,dsgw,188,[The URL did not include a template name (immediately following the '?').]
-en,dsgw,189,[Authenticate...]
-en,dsgw,190,[Discard authentication credentials (log out)?]
-en,dsgw,191,[Please type a search string]
-en,dsgw,192,[The first step in authenticating to the directory is identifying\nyourself.<br>Please type your name:]
-en,dsgw,193,[Continue]
-en,dsgw,194,[Continue]
-en,dsgw,195,[Cancel]
-en,dsgw,196,[Authenticate as directory manager">  (only available to Directory Administrators)\n]
-en,dsgw,197,[Authenticate...]
-en,dsgw,198,[Discard authentication credentials?]
-en,dsgw,200,[Continue]
-en,dsgw,201,[Continue]
-en,dsgw,202,[Cancel]
-en,dsgw,203,[Authenticate (log in) to the directory]
-en,dsgw,204,[You are about to authenticate to the directory as <B>%s</B>. To complete the authentication process, type your password.\n]
-en,dsgw,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]
-en,dsgw,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]
-en,dsgw,208,[Authentication Status]
-en,dsgw,209,[<form>\nYou are currently authenticated to the directory as ]
-en,dsgw,210,[.\nIf you wish to discard your authentication credentials and log out of the directory, click on the button below.]
-en,dsgw,211,[Discard Authentication Credentials (log out)]
-en,dsgw,212,[Your authentication credentials for ]
-en,dsgw,213,[have expired.\n<HR>\n]
-en,dsgw,214,[Currently, you are not authenticated to the directory.<HR>\n]
-en,dsgw,215,[missing "%s="]
-en,dsgw,216,[unknown "%s=%s"]
-en,dsgw,217,[unknown option %s]
-en,dsgw,218,[unknown syntax=%s\n]
-en,dsgw,219,[** HTML type "%s" not supported **<BR>\n]
-en,dsgw,224,[Edit]
-en,dsgw,225,[Save Changes]
-en,dsgw,226,[modify]
-en,dsgw,227,[add]
-en,dsgw,228,[Delete]
-en,dsgw,229,[Delete this entry?]
-en,dsgw,230,[Rename]
-en,dsgw,231,[Enter a new name for this entry:]
-en,dsgw,232,[Edit As]
-en,dsgw,233,[missing %s=]
-en,dsgw,234,[Close Window]
-en,dsgw,235,[Edit...]
-en,dsgw,236,[missing "%s="\n]
-en,dsgw,237,[unknown set "%s"\n]
-en,dsgw,238,[unknown syntax "%s"\n]
-en,dsgw,239,[Re-Authenticate]
-en,dsgw,240,[Close Window]
-en,dsgw,241,[Do you really want to %s?]
-en,dsgw,242,[width=400,height=130,resizable]
-en,dsgw,243,[ OK ]
-en,dsgw,244,[ OK ]
-en,dsgw,245,[ Reset ]
-en,dsgw,246,[ Done ]
-en,dsgw,247,[ Cancel ]
-en,dsgw,248,[found another IF (nested IFs are not supported)]
-en,dsgw,249,[found ELSE but didn't see an IF]
-en,dsgw,250,[found ELSE after ELSE (expecting ENDIF)]
-en,dsgw,251,[found ELIF but didn't see an IF]
-en,dsgw,252,[found ELIF after ELSE (expecting ENDIF)]
-en,dsgw,253,[found ENDIF but didn't see an IF]
-en,dsgw,254,[<BR><B>template error:</B> %s<BR>\n]
-en,dsgw,255,[ldap_init/lcache_init attempted before config file read]
-en,dsgw,256,[not running under the administration server]
-en,dsgw,257,[Could not initialize permissions]
-en,dsgw,258,[Could not map username to a DN (error from admin server)]
-en,dsgw,259,[Could not get current username]
-en,dsgw,260,[Could not get current user password]
-en,dsgw,261,[Error: %s (%i)]
-en,dsgw,262,[Note: there is no display template for this type of entry available, so it is\ndisplayed below using a default method.]
-en,dsgw,263,[Invalid user id or NULL LDAP handle]
-en,dsgw,264,[no match for user id]
-en,dsgw,265,[more than one match for user id]
-en,dsgw,266,[the entire directory]
-en,dsgw,267,[Two arguments are required for the "includeset" directive\n]
-en,dsgw,268,[The attribute value requested was not found in the entry]
-en,dsgw,269,[Missing argument for "NLS" directive\n]
-en,dsgw,270,[A value must be specified for NT User Id\n]
-en,dsgw,271,[The combination of NT User Id, NT Domain Id is not unique in the directory\n]
-en,dsgw,272,[Values must be specified for both NT User Id and NT Domain Id\n]
-en,dsgw,273,[The NT User Id value must not exceed 20 characters in length.\n]
-en,dsgw,274,[Please provide a name for the new entry.]
-en,dsgw,275,[Please select a location for the new entry.]
-en,dsgw,276,[New Entry]
-en,dsgw,277,[In order to use this feature, there must be a dirmgr defined in dsgw.conf]
-en,dsgw,278,[Three or four arguments are required for the "vcard-property" directive\n]
-en,dsgw,279,[VCard property syntax must be "cis" or "mls"\n]
-en,dsgw,280,[Found no entries.\n%2$s]
-en,dsgw,281,[Found no entries where the %2$s %3$s '%4$s'.\n]
-en,dsgw,282,[Searched and found no entries.\n%2$s]
-en,dsgw,283,[Searched and found no entries where the %2$s %3$s %4$s'.\n]
-en,dsgw,284,[Found 1 entry.\n%2$s]
-en,dsgw,285,[Found 1 entry where the %2$s %3$s '%4$s'.\n]
-en,dsgw,286,[Searched and found 1 entry.\n%2$s]
-en,dsgw,287,[Searched and found 1 entry where the %2$s %3$s '%4$s'.\n]
-en,dsgw,288,[Found %1$li entries.\n%2$s]
-en,dsgw,289,[Found %1$li entries where the %2$s %3$s '%4$s'.\n]
-en,dsgw,290,[Searched and found %1$li entries.\n%2$s]
-en,dsgw,291,[Searched and found %1$li entries where the %2$s %3$s '%4$s'.\n]
-en,dsgw,292,[the LDAP filter is]
-en,dsgw,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.]
-en,dsgw,294,[The new password syntax is invalid.\n]
-en,dsgw,295,[The new password occurs in the password history.\n]
-en,dsgw,296,[You've exceeded the password retry limit. Please contact your System Administrator.\n]
-en,dsgw,297,[You've exceeded the password retry limit. Please try again later.\n]
-en,dsgw,298,[The password has expired. Contact your System Administrator to reset the password.\n]
-en,dsgw,299,[Editing]
-en,dsgw,300,[Adding]
-en,dsgw,301,[Deleting]
-en,dsgw,302,[Renaming]
-en,dsgw,303,[There are <B>no</B> names in the list.]
-en,dsgw,304,[There is <B>1</B> name in the list.]
-en,dsgw,305,[There are <B>%s</B> names in the list.]
-en,dsgw,306,[Remove\\nfrom\\nlist? Name]
-en,dsgw,307,[Discard Changes?]
-en,dsgw,308,[width=300,height=130,resizable]
-en,dsgw,309,[Continue without saving changes?<br>Unsaved changes will be lost.]
-en,dsgw,310,[width=400,height=150,resizable]
-en,dsgw,311,[Alert]
-en,dsgw,312,[Confirm]
-en,dsgw,313,[Authentication Failed\n]
-en,dsgw,314,[Authentication Successful]
-en,dsgw,315,[You are now authenticated to the directory as <B>%s</B>.]
-en,dsgw,316,[Your authentication credentials will expire in %d minutes.\n]
-en,dsgw,317,[After your credentials expire, you will need to \nre-authenticate to the directory.\n]
-en,dsgw,318,[<P>The password for this entry will expire <B>%s</B>.\n]
-en,dsgw,319,[Authentication failed because]
-en,dsgw,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]
-en,dsgw,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]
-en,dsgw,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]
-en,dsgw,323,[Authentication failed because of an unexpected error: %s\n]
-en,dsgw,324,[Retry]
-en,dsgw,325,[To continue, select a task from the list above.\n]
-en,dsgw,326,[Edit Password]
-en,dsgw,327,[<H3>Password Expired for %s</H3>\n]
-en,dsgw,328,[Your Directory Server password has expired.]
-en,dsgw,329,[ You must change your password immediately.\n]
-en,dsgw,330,[you did not provide a password. Whenever you authenticate, you must provide a password so that the server can verify your identity.]
-en,dsgw,331,[the server was unable to generate authentication credentials. The authentication database could not be opened.]
-en,dsgw,332,[the server was unable to generate authentication credentials. Data could not be appended to the authentication database.]
-en,dsgw,333,[Continue]
-en,dsgw,334,[Close Window]
-en,dsgw,335,[Success]
-en,dsgw,336,[Your authentication credentials have been destroyed. You are no longer authenticated to the \ndirectory.\n]
-en,dsgw,337,[Go Back]
-en,dsgw,338,[Success]
-en,dsgw,339,[Operations error]
-en,dsgw,340,[Protocol error]
-en,dsgw,341,[Warning: a time limit was exceeded. Not all matching entries are shown.]
-en,dsgw,342,[Warning: a size limit was exceeded. Not all matching entries are shown.]
-en,dsgw,343,[Compare false]
-en,dsgw,344,[Compare true]
-en,dsgw,345,[Strong authentication not supported]
-en,dsgw,346,[Strong authentication required]
-en,dsgw,347,[Warning: some directory servers could not be contacted. Not all matching entries are shown.]
-en,dsgw,348,[Referral received]
-en,dsgw,349,[Administrative limit exceeded]
-en,dsgw,350,[Unavailable critical extension]
-en,dsgw,351,[Confidentiality required]
-en,dsgw,352,[SASL bind in progress]
-en,dsgw,353,[No such attribute]
-en,dsgw,354,[Undefined attribute type]
-en,dsgw,355,[Inappropriate matching]
-en,dsgw,356,[Constraint violation]
-en,dsgw,357,[Type or value exists]
-en,dsgw,358,[Invalid syntax]
-en,dsgw,359,[No such object]
-en,dsgw,360,[Alias problem]
-en,dsgw,361,[Invalid DN syntax]
-en,dsgw,362,[Object is a leaf]
-en,dsgw,363,[Alias dereferencing problem]
-en,dsgw,364,[Inappropriate authentication]
-en,dsgw,365,[Invalid credentials]
-en,dsgw,366,[Insufficient access]
-en,dsgw,367,[DSA is busy]
-en,dsgw,368,[DSA is unavailable]
-en,dsgw,369,[DSA is unwilling to perform]
-en,dsgw,370,[Loop detected]
-en,dsgw,371,[Naming violation]
-en,dsgw,372,[Object class violation]
-en,dsgw,373,[Operation not allowed on nonleaf]
-en,dsgw,374,[Operation not allowed on RDN]
-en,dsgw,375,[Already exists]
-en,dsgw,376,[Cannot modify object class]
-en,dsgw,377,[Results too large]
-en,dsgw,378,[Affects multiple servers]
-en,dsgw,379,[Unknown error]
-en,dsgw,380,[Can't contact LDAP server]
-en,dsgw,381,[Local error]
-en,dsgw,382,[Encoding error]
-en,dsgw,383,[Decoding error]
-en,dsgw,384,[Timed out]
-en,dsgw,385,[Unknown authentication method]
-en,dsgw,386,[Bad search filter]
-en,dsgw,387,[User cancelled operation]
-en,dsgw,388,[Bad parameter to an ldap routine]
-en,dsgw,389,[Out of memory]
-en,dsgw,390,[Can't connect to the LDAP server]
-en,dsgw,391,[Not supported by this version of the LDAP protocol]
-en,dsgw,392,[Requested LDAP control not found]
-en,dsgw,393,[No results returned]
-en,dsgw,394,[More results to return]
-en,dsgw,395,[Client detected loop]
-en,dsgw,396,[Referral hop limit exceeded]
-en,frame,-1,[$DBT: frame in DB file v1 $]
-en,frame,1,[<TITLE>Not Found</TITLE><H1>Not Found</H1> The requested object does not exist on this server. The link you followed is either outdated, inaccurate, or the server has been instructed not to let you have it. ]
-en,frame,2,[Please inform the site administrator of the <A HREF="%s">referring page</A>.]
-en,frame,3,[Your browser sent a request that this proxy could not understand.]
-en,frame,4,[Proper authorization is required for the administration of this proxy.\nEither your browser does not perform authorization, or your authorization\nhas failed.]
-en,frame,5,[Username authentication is required for using this proxy.\nEither your browser does not perform proxy authorization, or your\nauthorization has failed.]
-en,frame,6,[The proxy's access control configuration denies access to\nthe requested object through this proxy.]
-en,frame,7,[The proxy has encountered an internal error which prevents it from\nfulfilling your request. The most likely cause is a misconfiguration.\nPlease ask the administrator to look for messages in the proxy's error log.]
-en,frame,8,[This proxy server does not implement the requested method.]
-en,frame,9,[An error has occurred on the proxy server.]
-en,frame,10,[Your browser sent a query this server could not understand.]
-en,frame,11,[Proper authorization is required for this area. Either your browser does not perform authorization, or your authorization has failed.]
-en,frame,12,[Your client is not allowed to access the requested object.]
-en,frame,13,[This server has encountered an internal error which prevents it from fulfilling your request. The most likely cause is a misconfiguration. Please ask the administrator to look for messages in the server's error log.]
-en,frame,14,[This server does not implement the requested method.]
-en,frame,15,[An error has occurred.]
-en,frame,16,[Your browser sent a message this server could not understand.]
-en,frame,17,[<HTML><HEAD><TITLE>%s</TITLE></HEAD><BODY><H1>%s</H1>\nThis document has moved to a new <a href="%s">location</a>. Please update your documents and hotlists accordingly.</BODY></HTML>]
-en,frame,18,[<HTML><HEAD><TITLE>%s</TITLE></HEAD>\n<BODY><H1>%s</H1>\n%s\n</BODY></HTML>]
-en,frame,19,[process-uri-objects]
-en,frame,20,[cannot find template %s]
-en,frame,21,[process-uri-objects]
-en,frame,22,[no partial path after object processing]
-en,frame,23,[find-service]
-en,frame,24,[invalid shexp %s]
-en,frame,25,[find-service]
-en,frame,26,[invalid shexp %s]
-en,frame,27,[handle-processed]
-en,frame,28,[no way to service request for %s]
-en,frame,29,[finish-socks-request]
-en,frame,30,[close failed (%s), csd=%d]
-en,frame,31,[This beta software has expired.\n]
-en,frame,32,[mr_accept(%d)]
-en,frame,33,[Error issuing read on accept socket]
-en,frame,34,[acb_accept_connection(%d)]
-en,frame,35,[Error getting accept socket (%d)]
-en,frame,36,[Error in accept! (%d, %s)]
-en,frame,37,[Error creating new accept request]
-en,frame,38,[accepted connection: %d (NSPR %d)]
-en,frame,39,[Error creating new session structure]
-en,frame,40,[accel_read_request()]
-en,frame,41,[Error allocating request read buffer]
-en,frame,42,[Error issuing async read request]
-en,frame,43,[acb_read_request(%d, bytes %d)]
-en,frame,44,[acb_read_req(1 session = %d)]
-en,frame,45,[Error reading request (%d, %s)]
-en,frame,46,[Client aborted connection]
-en,frame,47,[Error reading request]
-en,frame,48,[Error creating new request]
-en,frame,49,[error occurred, closing %d, io was for %d]
-en,frame,50,[accel_async_scan_headers()]
-en,frame,51,[out of memory: accel_async_scan_headers]
-en,frame,52,[out of memory: accel_async_scan_headers]
-en,frame,53,[Error during async read (%d, %s)]
-en,frame,54,[scan-headers reports: line too long]
-en,frame,55,[scan-headers reports: too many headers]
-en,frame,56,[Error reading headers]
-en,frame,57,[scan-headers reports: header missing terminator (an empty line)]
-en,frame,58,[scan-headers reports: header was empty]
-en,frame,59,[name without value: got line "%s"]
-en,frame,60,[accel_send_plain_file()]
-en,frame,61,[accel_send_plain_file() - found request %d]
-en,frame,62,[Parse headers lost the URI!]
-en,frame,63,[accel_send_plain_file() - found uri %s]
-en,frame,64,[accel_send_plain_file() - found in cache?]
-en,frame,65,[malloc died!]
-en,frame,66,[Error writing back file\n]
-en,frame,67,[acb_send_plain_file(%d)]
-en,frame,68,[Error writing in acb_send_plain_file (%d, %s)]
-en,frame,69,[acb_close_connection(%d)]
-en,frame,70,[Errored IO in acb_close_connection (%d, %s)]
-en,frame,71,[Unable to close socket %d]
-en,frame,72,[accel-cache-insert: Error allocating entry]
-en,frame,73,[cache-init: server cache disabled]
-en,frame,74,[accel_file_cache: Error initializing file cache]
-en,frame,75,[accel_file_cache: Error creating cache]
-en,frame,76,[accel_file_cache_init: CacheHashSize < %d, using %d]
-en,frame,77,[accel_file_cache_init: CacheHashSize > %d, using %d]
-en,frame,78,[accel_file_cache_init: MaxNumberOfCachedFiles < %d, using %d]
-en,frame,79,[accel_file_cache_init: MaxNumberOfCachedFiles > %d, using %d]
-en,frame,80,[accel_file_cache_init: MaxNumberOfOpenCachedFiles < %d, using %d]
-en,frame,81,[accel_file_cache_init: MaxNumberOfOpenCachedFiles > %d, using %d]
-en,frame,82,[accel_file_cache: Error initializing file cache]
-en,frame,83,[file-cache: enabled = %s ]
-en,frame,84,[on]
-en,frame,85,[off]
-en,frame,86,[file-cache: MaxNumberOfCachedFiles %d (0x%x)]
-en,frame,87,[file-cache: CacheHashSize %d (0x%x)]
-en,frame,88,[file-cache: MaxNumberOfOpenCachedFiles %d (0x%x)]
-en,frame,89,[accel-cache-insert: Error allocating entry]
-en,frame,90,[file-cache-cleanup: munmap failed (%s)]
-en,frame,91,[file-cache-cleanup: found mmapped file \non system without mmap]
-en,frame,92,[file_cache_init: MaxTotalCachedFileSize < %d, using %d]
-en,frame,93,[file_cache_init: MaxTotalCachedFileSize > %d, using %d]
-en,frame,94,[file cache using mmap flags 0x%x]
-en,frame,95,[file cache using mmap prots 0x%x]
-en,frame,96,[file-cache-init: could not create lock]
-en,frame,97,[file-cache: unable to create temporary directory %s.\n]
-en,frame,98,[file-cache: unable to create temporary directory %s.\n]
-en,frame,99,[file-cache: GetTempPath() Cannot find temp directory to store file!]
-en,frame,100,[file-cache-init: set max cached file size to %d]
-en,frame,101,[file-cache-init: could not create lock]
-en,frame,102,[file_cache_destroy()]
-en,frame,103,[file-cache: Unable to get temp file name. Error %s]
-en,frame,104,[file-cache: Unable to get temp file name. Error %s]
-en,frame,105,[file-cache-insert: Error allocating entry]
-en,frame,106,[file-cache-create: Error opening file %s (%s)]
-en,frame,107,[file-cache-create: Error stat()ing file %s (%s)]
-en,frame,108,[file-cache-create: Error mmap()ing file %s (%s)]
-en,frame,109,[file-cache-create: malloc failure]
-en,frame,110,[file-cache-create: error case failed to munmap(%d, %d) (%s)]
-en,frame,111,[file-cache-valid: cannot stat %s]
-en,frame,112,[dir change: invalidating %s (%d)]
-en,frame,113,[file-cache: asynchronous file change notification failed.]
-en,frame,114,[dir change: offset %d, action %d, len %d, name %s]
-en,frame,115,[unable to check async file status]
-en,frame,116,[ReadDirectoryChangesW failure- unable to continue watching %s. Error is %s]
-en,frame,117,[file-cache-add-watch failure- unable to open directory %s. Error %s]
-en,frame,118,[ReadDirectoryChangesW failure- unable to start watching %s. Error %s]
-en,frame,119,[func_exec]
-en,frame,120,[no handler function given for directive]
-en,frame,121,[func_exec]
-en,frame,122,[cannot find function named %s]
-en,frame,123,[handle-request]
-en,frame,124,[method without URI]
-en,frame,125,[http-parse-request]
-en,frame,126,[while scanning HTTP headers, %s]
-en,frame,127,[handle-request]
-en,frame,128,[read from %s failed, error is %s]
-en,frame,129,[handle-request]
-en,frame,130,[request too long]
-en,frame,131,[start-http-response]
-en,frame,132,[write failed (%s)]
-en,frame,133,[start-http-response]
-en,frame,134,[write failed (%s)]
-en,frame,135,[http-status]
-en,frame,136,[%d is not a valid HTTP status code]
-en,frame,137,[finish-request]
-en,frame,138,[close failed (%s)]
-en,frame,139,[Unable to close socket for writing]
-en,frame,140,[os has %d objects]
-en,frame,141,[obj %d has no hash table at %d]
-en,frame,142,[obj %d has no param]
-en,frame,143,[obj %d name %s value %s]
-en,frame,144,[.....directives %d.......]
-en,frame,145,[.....directive %d]
-en,frame,146,[.......instance %d]
-en,frame,147,[...........param name %s value %s]
-en,frame,148,[ClearConfigurationParameters:RegCreateKey %s]
-en,frame,149,[ClearConfigurationParameters:RegEnumKey %s failed]
-en,frame,150,[obj.conf line %d: error in filter file "%s" at line %d: %s]
-en,frame,151,[obj.conf line %d: error in filter file "%s" at line %d: %s]
-en,frame,152,[Unable to allocate Subject property list.\n]
-en,frame,153,[Unable to set session ptr in Subject property list - error=%d\n]
-en,frame,154,[Unable to set request ptr in Subject property list - error=%d\n]
-en,frame,155,[file-cache-valid: cannot stat %s]
-en,frame,156,[file-cache-create: Error stat()ing file %s (%s)]
-en,httpdaemon,-1,[$DBT: httpdaemon in DB file v1 $]
-en,httpdaemon,1,[Error in ConvertThreadToFiber]
-en,httpdaemon,2,[Error in ConvertThreadToFiber]
-en,httpdaemon,3,[Error in md_start_system]
-en,httpdaemon,4,[Error in CreateFiber - idlefiber]
-en,httpdaemon,5,[Error in GetQueuedCompletionStatus]
-en,httpdaemon,6,[Error creating completion port]
-en,httpdaemon,7,[Could not SetHandleNonInheritable (%s)]
-en,httpdaemon,8,[Error accept/read new conn]
-en,httpdaemon,9,[Error in Respond()]
-en,httpdaemon,10,[Error in RespondCompleted()]
-en,httpdaemon,11,[daemon: unable to fork new process (%s)\n]
-en,httpdaemon,12,[daemon: setsid failed (%s)\n]
-en,httpdaemon,13,[daemon: can't log pid to %s (%s)\n]
-en,httpdaemon,14,[warning: could not set group id to %d (%s)\n]
-en,httpdaemon,15,[warning: could not set user id to %d (%s)\n]
-en,httpdaemon,16,[warning: daemon is running as super-user\n]
-en,httpdaemon,17,[could not determine current user name\n]
-en,httpdaemon,18,[error: chroot to %s failed (%s)\n]
-en,httpdaemon,19,[WARNING! netscape executable and library have different versions.\n]
-en,httpdaemon,20,[startup: listening to %s://%s, port %d as %s\n]
-en,httpdaemon,21,[startup: listening to %s://%s, port %d as %s\n]
-en,httpdaemon,22,[seminit failed (%s)\n]
-en,httpdaemon,23,[Using single threaded accepts.]
-en,httpdaemon,24,[Using multi threaded accepts.]
-en,httpdaemon,25,[Using partial single threaded accepts.]
-en,httpdaemon,26,[This machine has %d processors.]
-en,httpdaemon,27,[Error calling thr_seconcurrency(%d)- (%s)]
-en,httpdaemon,28,[Set conncurrency to %d.]
-en,httpdaemon,29,[can't fork new process (%s)]
-en,httpdaemon,30,[This beta software has expired.\n]
-en,httpdaemon,31,[can't create IPC pipe (%s)]
-en,httpdaemon,32,[write to wakeup pipe failed (%s)]
-en,httpdaemon,33,[select thread miss]
-en,httpdaemon,34,[startup failure: could not bind to port %d (%s)\n]
-en,httpdaemon,35,[startup failure: could not bind to port %d, IP address %s (%s)\n]
-en,libaccess,-1,[$DBT: libaccess in DB file v1 $]
-en,libaccess,1,[basic-ncsa]
-en,libaccess,2,[cannot open database %s]
-en,libaccess,3,[basic-ncsa]
-en,libaccess,4,[user %s password did not match database %s]
-en,libaccess,5,[basic-ncsa]
-en,libaccess,6,[cannot open connection to LDAP server on %s:%d]
-en,libaccess,7,[basic-ncsa]
-en,libaccess,8,[user %s password did not match LDAP on %s:%d]
-en,libaccess,9,[acl-state]
-en,libaccess,10,[missing realm]
-en,libaccess,11,[Unable to allocate ACL List Hash\n]
-en,libaccess,12,[ACLEvalBuildContext unable to PERM_MALLOC cache structure\n]
-en,libaccess,13,[ACLEvalBuildContext unable to create hash table\n]
-en,libaccess,14,[ACLEvalBuildContext unable to allocate ACE Entry\n]
-en,libaccess,15,[ACLEvalBuildContext unable to allocate ACE entry\n]
-en,libaccess,16,[ACLEvalBuildContext unable to allocate Boundary Entry\n]
-en,libaccess,17,[ACLEvalBuildContext failed.\n]
-en,libaccess,18,[ACL_EvalTestRights: an interim, absolute non-allow value was encountered. right=%s, value=%d\n]
-en,libaccess,19,[LASDnsBuild unable to allocate hash table header\n]
-en,libaccess,20,[LASDnsBuild unable to add key %s\n]
-en,libaccess,21,[LASDnsBuild unable to add key %s\n]
-en,libaccess,22,[LASDnsBuild unable to add key %s\n]
-en,libaccess,23,[LASDnsBuild unable to add key %s\n]
-en,libaccess,24,[LASDnsBuild unable to add key %s\n]
-en,libaccess,25,[LAS DNS build received request for attribute %s\n]
-en,libaccess,26,[LASDnsEval - illegal comparator %s\n]
-en,libaccess,27,[LASDnsEval unable to allocate Context struct\n\n]
-en,libaccess,28,[LASDnsEval unable to get session address %d\n]
-en,libaccess,29,[LASDnsEval unable to get DNS - error=%s\n]
-en,libaccess,30,[LAS Group Eval received request for attribute %s\n]
-en,libaccess,31,[LASGroupEval - illegal comparator %s\n]
-en,libaccess,32,[LASGroupEval - ran out of memory\n]
-en,libaccess,33,[LASGroupEval unable to get session address %d\n]
-en,libaccess,34,[LASGroupEval unable to get session address %d\n]
-en,libaccess,35,[LASGroupEval - couldn't locate getter for auth-user\n]
-en,libaccess,36,[LASGroupEval - Attribute getter for auth-user failed\n]
-en,libaccess,37,[LASGroupEval - Attribute getter didn't set auth-user\n]
-en,libaccess,38,[Check group membership of user "%s" for group "%s"\n]
-en,libaccess,39,[LDAPU_SUCCESS for group "%s"\n]
-en,libaccess,40,[LDAPU_FAILED for group "%s"\n]
-en,libaccess,41,[LAS_EVAL_FALSE\n]
-en,libaccess,42,[LAS_EVAL_TRUE\n]
-en,libaccess,43,[LASIpTreeAlloc - no memory\n]
-en,libaccess,44,[IP LAS unable to allocate tree node\n]
-en,libaccess,45,[IP LAS unable to allocate tree node\n]
-en,libaccess,46,[LAS IP build received request for attribute %s\n]
-en,libaccess,47,[LASIpEval - illegal comparator %s\n]
-en,libaccess,48,[LASIpEval unable to get session address - error=%s\n]
-en,libaccess,49,[LASIpEval unable to allocate Context struct\n\n]
-en,libaccess,50,[LASIpEval - reach 32 bits without conclusion value=%s]
-en,libaccess,51,[LAS Program Eval received request for attribute %s\n]
-en,libaccess,52,[LASProgramEval - illegal comparator %s\n]
-en,libaccess,53,[LASProgram unable to get session address %d\n]
-en,libaccess,54,[bin]
-en,libaccess,55,[LASProgramEval: request not of type admin or bin, passing.\n]
-en,libaccess,56,[LASProgramEval: check if program %s matches pattern %s.\n]
-en,libaccess,57,[LASProgramEval: Invalid wildcard expression %s.\n]
-en,libaccess,58,[LAS_EVAL_FALSE\n]
-en,libaccess,59,[LAS_EVAL_TRUE\n]
-en,libaccess,60,[Unexpected attribute in dayOfWeek - %s\n]
-en,libaccess,61,[Illegal comparator for dayOfWeek - %s\n]
-en,libaccess,62,[Unexpected attribute in timeOfDay - %s\n]
-en,libaccess,63,[LAS User Eval received request for attribute %s\n]
-en,libaccess,64,[LASUserEval - illegal comparator %s\n]
-en,libaccess,65,[LASUserEval - ran out of memory\n]
-en,libaccess,66,[LASUserEval unable to get session address %d\n]
-en,libaccess,67,[LASUserEval unable to get session address %d\n]
-en,libaccess,68,[LASGroupEval - couldn't locate getter for auth-user\n]
-en,libaccess,69,[LASGroupEval - Attribute getter for auth-user failed\n]
-en,libaccess,70,[LASGroupEval - Attribute getter didn't set auth-user\n]
-en,libaccess,71,[Check if uid == user (i.e. check "%s" == "%s)"\n]
-en,libaccess,72,[SUCCESS for user "%s"\n]
-en,libaccess,73,[FAILED for user "%s"\n]
-en,libaccess,74,[LAS_EVAL_FALSE\n]
-en,libaccess,75,[LAS_EVAL_TRUE\n]
-en,libaccess,76,[]
-en,libaccess,77,[LASProgram unable to get request address - error=%s]
-en,libaccess,78,[LASProgram rejecting request for program %s from pattern %s]
-en,libaccess,79,[ACL_CacheFlush: unable to parse file "%s"\n]
-en,libaccess,80,[ACL_CacheFlush: unable to concatenate ACL list "%s"\n]
-en,libaccess,81,[ACL_CacheFlush: unable to open and process the magnus file "%s"\n]
-en,libaccess,82,[Illegal comparator for timeOfDay - %s\n]
-en,libaccess,83,[ACL_EvalBuildContext unable to create hash table\n]
-en,libaccess,84,[ACL_EvalBuildContext unable to PERM_CALLOC cache structure\n]
-en,libaccess,85,[ACL_EvalBuildContext unable to allocate ACE entry\n]
-en,libaccess,86,[ACL_EvalBuildContext unable to allocate auth pointer array\n]
-en,libaccess,87,[ACL_EvalBuildContext unable to allocate auth plist\n]
-en,libaccess,88,[ACL_EvalTestRights: an interim, absolute non-allow value was encountered. right=%s, value=%s\n]
-en,libaccess,89,[ACL_INTEvalTestRights: call to ACL_EvalBuildContext returned failure status\n]
-en,libaccess,90,[ACL_ModuleRegister: module name is missing\n]
-en,libaccess,91,[ACL_ModuleRegister: call to module init function returned a failed status\n]
-en,libaccess,92,[ACL_GetAttribute: couldn't determine method for %s\n]
-en,libaccess,93,[ACL_GetAttribute: couldn't locate getter for %s]
-en,libaccess,94,[ACL_GetAttribute: attr getter failed to get %s]
-en,libaccess,95,[ACL_GetAttribute: attr getter failed to get %s]
-en,libaccess,96,[ACL_GetAttribute: All attribute getters declined for attr %s]
-en,libaccess,97,[ACL_DatabaseRegister: dbtype for database "%s" is not defined yet!]
-en,libaccess,98,[ACL_DatabaseRegister: database name is missing]
-en,libaccess,99,[Error reading the DB Map File: %s. Reason: %s]
-en,libaccess,100,[URL is missing for database %s]
-en,libaccess,101,[Invalid property value pair for database %s]
-en,libaccess,102,["default" database must be an LDAP database]
-en,libaccess,103,[Multiple "default" databases are being registered]
-en,libaccess,104,["default" LDAP database must be registered]
-en,libaccess,105,[LASGroupEval unable to get database name - error= %s]
-en,libaccess,106,[received invalid program expression %s]
-en,libaccess,107,[parse_ldap_url: database url is missing]
-en,libaccess,108,[parse_ldap_url: database name is missing]
-en,libaccess,109,[parse_ldap_url: error in parsing ldap url. Reason: %s]
-en,libaccess,110,[ldap password check: unable to get database name - error=%s]
-en,libaccess,111,[ldap password check: unable to get parsed database %s]
-en,libaccess,112,[ldap password check: couldn't initialize connection to LDAP. Reason: %s]
-en,libaccess,113,[ldap password check: LDAP error: "%s"]
-en,libaccess,114,[get_user_ismember_ldap unable to get database name - error=%s]
-en,libaccess,115,[get_user_ismember_ldap unable to get parsed database %s]
-en,libaccess,116,[ldap password check: couldn't initialize connection to LDAP. Reason: %s]
-en,libaccess,117,[get_user_ismember_ldap: group %s does not exist]
-en,libaccess,118,[get_user_ismember_ldap: LDAP error: "%s"]
-en,libaccess,119,[ACL_LDAPDatabaseHandle: %s is not a registered database]
-en,libaccess,120,[ACL_LDAPDatabaseHandle: %s is not an LDAP database]
-en,libaccess,121,[ACL_LDAPDatabaseHandle: out of memory]
-en,libaccess,122,[ACL_LDAPDatabaseHandle: couldn't initialize connection to LDAP. Reason: %s]
-en,libaccess,123,[ACL_LDAPDatabaseHandle: couldn't bind to LDAP server. Reason: %s]
-en,libaccess,124,[insufficient dynamic memory]
-en,libaccess,125,[error opening file, %s: %s]
-en,libaccess,126,[duplicate definition of %s]
-en,libaccess,127,[file %s, line %s: duplicate definition of %s]
-en,libaccess,128,[file %s, line %s: syntax error]
-en,libaccess,129,[file %s, line %s: %s is undefined]
-en,libaccess,130,[in acl %s, %s %s is undefined]
-en,libaccess,131,[database %s: error accessing %s]
-en,libaccess,132,[%s]
-en,libaccess,133,[file %s, line %s: invalid syntax]
-en,libaccess,134,[file %s, line %s: syntax error at "%s"]
-en,libaccess,135,[realm %s is not defined]
-en,libaccess,136,[error code = %d]
-en,libaccess,137,[internal ACL error]
-en,libaccess,138,[invalid argument]
-en,libaccess,139,[ACL_DatabaseRegister: dbtype for database "%s" is not defined yet!]
-en,libaccess,140,[couldn't determine dbtype from: %s]
-en,libaccess,141,[Failed to register database %s]
-en,libaccess,142,[ACL call returned failed status]
-en,libaccess,143,[file %s: ACL IO error - %s]
-en,libaccess,144,[acl_user_exists: out of memory]
-en,libaccess,145,[acl_user_exists: user doesn't exist anymore]
-en,libaccess,146,[acl_user_exists: plist error]
-en,libadmin,-1,[$DBT: libadmin in DB file v1 $]
-en,libadmin,1,[ Help ]
-en,libadmin,2,[ OK ]
-en,libadmin,3,[ Reset ]
-en,libadmin,4,[ Done ]
-en,libadmin,5,[ Cancel ]
-en,libir,-1,[$DBT: libadmin in DB file v1 $]
-en,libir,1,[An I/O error occurred before all form data could be read.]
diff --git a/l10n/dirserv/es/ns-slapd.txt b/l10n/dirserv/es/ns-slapd.txt
deleted file mode 100644
index c326b753..00000000
--- a/l10n/dirserv/es/ns-slapd.txt
+++ /dev/null
@@ -1,930 +0,0 @@
-#
-# BEGIN COPYRIGHT BLOCK
-# This Program is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; version 2 of the License.
-#
-# This Program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place, Suite 330, Boston, MA 02111-1307 USA.
-#
-# In addition, as a special exception, Red Hat, Inc. gives You the additional
-# right to link the code of this Program with code not covered under the GNU
-# General Public License ("Non-GPL Code") and to distribute linked combinations
-# including the two, subject to the limitations in this paragraph. Non-GPL Code
-# permitted under this exception must only link to the code of this Program
-# through those well defined interfaces identified in the file named EXCEPTION
-# found in the source code files (the "Approved Interfaces"). The files of
-# Non-GPL Code may instantiate templates or use macros or inline functions from
-# the Approved Interfaces without causing the resulting work to be covered by
-# the GNU General Public License. Only Red Hat, Inc. may make changes or
-# additions to the list of Approved Interfaces. You must obey the GNU General
-# Public License in all respects for all of the Program code and other code used
-# in conjunction with the Program except the Non-GPL Code covered by this
-# exception. If you modify this file, you may extend this exception to your
-# version of the file, but you are not obligated to do so. If you do not wish to
-# provide this exception without modification, you must delete this exception
-# statement from your version and license this file solely under the GPL without
-# exception.
-#
-#
-# Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
-# Copyright (C) 2005 Red Hat, Inc.
-# All rights reserved.
-# END COPYRIGHT BLOCK
-#
-/**************************************************************************/
-/* The copyright notice(s) in this Source Code does not indicate actual */
-/* or intended publication of this Source Code. */
-/**************************************************************************/
-
-/* This text file was generated by program dblink */
-
-$Revision: 1.4 $
-$Log: ns-slapd.txt,v $
-Revision 1.4 2005/04/19 22:06:51 nkinder
-Fixed licensing typo
-
-Revision 1.3 2005/04/15 22:39:18 nkinder
-155068 - Added license to source files
-
-Revision 1.2 2005/02/28 23:37:40 nkinder
-149951 - Updated source code copyrights
-
-Revision 1.1.1.1 2005/01/21 00:40:48 cvsadm
-Moving NSCP Directory Server from DirectoryBranch to TRUNK, initial drop. (foxworth)
-
-Revision 1.2.4.5 2003/09/22 19:36:41 ulfw
-Update copyright years from 2001 to 2001-2003
-
-Revision 1.2.4.4 2001/11/03 01:06:19 richm
-XXX use new copyright XXX
-
-Revision 1.2.4.3 2001/09/20 16:39:14 richm
-removed 8 bit copyright character
-
-Revision 1.2.4.3 2001/09/18 11:48:16 rmarco
-Remove copyright caracter from copyright
-
-Revision 1.2.4.2 2001/02/13 09:59:53 rmarco
-Copyrights
-
-Revision 1.2.4.1 1998/10/10 02:14:04 ggood
-Copy from Directory40RtmBranchpoint to DirectoryBranch
-
-Revision 1.1.2.1 1997/12/24 01:18:23 werudge
-UTF8 Encoded from es/ns-slapd.txt.iso8859 : 1.1.2.1
-Based on en/ns-slapd.txt : 1.1.2.3
-
-Revision 1.1.2.1 1997/12/24 01:14:39 werudge
-Based on en/ns-slapd.txt : 1.1.2.3
-daily 971113.1 SOLARIS-export-optimize-normal-slapd
-$EndLog$
-
-$StartStringData$
-
-es,base,-1,[$DBT: base in DB file v1 $]
-es,base,1,[no hay memoria suficiente para crear la tabla de totales de control]
-es,base,2,[no hay memoria suficiente para crear la tabla de totales de control]
-es,base,3,[cache_destroy: las tablas caché parecen dañadas.]
-es,base,4,[no ha sido posible asignar la entrada de total de control]
-es,base,5,[cache_insert: no ha sido posible crear la entrada caché]
-es,base,6,[HTTP/1.0 200 OK\nContent-type: text/html\n\n]
-es,base,7,[<H2>Informe de estado de caché de Netscape</H2>\n]
-es,base,8,[El sistema no tiene cachés<P>]
-es,base,9,[<H2>Caché %s</H2>\n]
-es,base,10,[Índice de aciertos de caché: %d/%d (%f)</P>\n</P>\n]
-es,base,11,[Tamaño de caché: %d/%d</P>\n</P>\n]
-es,base,12,[Tamaño de la tabla de totales de control: %d</P>\n</P>\n]
-es,base,13,[mru : %d</P>\nlru : %d</P>\n]
-es,base,14,[<UL><TABLE BORDER=4> <TH>Sector de almacenamiento</TH> <TH>Dirección</TH> <TH>Clave</TH> <TH>Recuento de accesos</TH> <TH>Eliminar</TH> <TH>Siguiente</TH> <TH>LRU</TH> <TH>MRU</TH> <TH>Datos</TH>\n]
-es,base,15,[munmap failed (%s)]
-es,base,16,[munmap failed (%s)]
-es,base,17,[close failed (%s)]
-es,base,18,[daemon: unable to fork new process (%s)\n]
-es,base,19,[daemon: setsid failed (%s)\n]
-es,base,20,[daemon: can't log pid to %s (%s)\n]
-es,base,21,[warning: could not set group id to %d (%s)\n]
-es,base,22,[warning: could not set user id to %d (%s)\n]
-es,base,23,[warning: daemon is running as super-user\n]
-es,base,24,[could not determine current user name\n]
-es,base,25,[error: chroot to %s failed (%s)\n]
-es,base,27,[, address %s]
-es,base,28,[warning: statistics disabled (%s)\n]
-es,base,29,[security handshake timed out for pid %d]
-es,base,30,[warning: statistics disabled (%s)\n]
-es,base,31,[secure handshake failed (code %d)\n]
-es,base,32,[accept failed (%s)]
-es,base,33,[warning: statistics disabled (%s)\n]
-es,base,34,[select thread miss]
-es,base,35,[keepalive worker awoken with no work to do]
-es,base,36,[could not create new thread: %d (%s)]
-es,base,37,[wait for sema succeeded, but nothing to dequeue]
-es,base,38,[queue-sema creation failure]
-es,base,39,[error getting processor info for processor %d]
-es,base,40,[Error binding to processor %d]
-es,base,41,[bound process %d to processor %d]
-es,base,42,[Netscape server is not explicitly binding to any processors.]
-es,base,43,[cache monitor exited]
-es,base,44,[cache batch update daemon exited]
-es,base,45,[Using single threaded accepts.]
-es,base,46,[Using multi threaded accepts.]
-es,base,47,[Using partial single threaded accepts.]
-es,base,48,[This machine has %d processors.]
-es,base,49,[Error calling thr_seconcurrency(%d)- (%s)]
-es,base,50,[Set conncurrency to %d.]
-es,base,51,[WARNING! netscape executable and library have different versions.\n]
-es,base,54,[seminit failed (%s)\n]
-es,base,55,[This beta software has expired.\n]
-es,base,56,[Cache monitor respawned]
-es,base,57,[Cache batch update daemon respawned]
-es,base,58,[can't find empty statistics slot]
-es,base,59,[can't fork new process (%s)]
-es,base,60,[assert failed! %s\n]
-es,base,61,[mr_table_init()]
-es,base,62,[malloc failed]
-es,base,63,[malloc failed!]
-es,base,64,[mr_add_io(%d, type %d, file %d)]
-es,base,65,[mr_add_io - stage 1]
-es,base,66,[mr_add_io - stage 2]
-es,base,67,[mr_add_io found invalid IO type %d]
-es,base,68,[mr_add_io - adding timeout]
-es,base,69,[Out of memory!\n]
-es,base,70,[done with mr_add_io]
-es,base,71,[mr_del_io(%d, type %d, file %d)]
-es,base,72,[mr_del_io found invalid IO type %d]
-es,base,73,[mr_lookup_io(%d)]
-es,base,74,[mr_async_io(%d, %d bytes, file %d)]
-es,base,75,[malloc failure adding async IO]
-es,base,76,[Error adding async io!]
-es,base,77,[Cannot seek for read!]
-es,base,78,[read failure! (%d, %s)]
-es,base,79,[do_read read %d bytes for file %d]
-es,base,80,[Cannot seek for write!]
-es,base,81,[writev failure! (%d, %s)]
-es,base,82,[write failure! (%d, %s)]
-es,base,83,[do_write wrote %d bytes for file %d]
-es,base,84,[do_timeout(mrp %d)]
-es,base,85,[do_timeout: found IO (timer=%d, time=%d)]
-es,base,86,[error deleting io]
-es,base,87,[timeout callback failure for %d\n]
-es,base,88,[mr_get_event(%d) - outstanding io %d]
-es,base,89,[mr_get_event: Waiting for reads on FD:]
-es,base,90,[mr_get_event: Waiting for writes on FD:]
-es,base,91,[ %d]
-es,base,92,[ %d]
-es,base,93,[mr_get_event set no timeout]
-es,base,94,[mr_get_event set timeout to: %d.%d sec]
-es,base,95,[error in select (%d, %s)]
-es,base,96,[mr_get_event() - select found %d]
-es,base,97,[error looking up IO fd %d]
-es,base,98,[read failed for fd %d]
-es,base,99,[error deleting io]
-es,base,100,[callback failure for %d\n]
-es,base,101,[error looking up IO fd %d]
-es,base,102,[writing: header len %d, writelen %d, total %d]
-es,base,103,[write failed for fd %d]
-es,base,104,[error deleting io]
-es,base,105,[callback failure for %d\n]
-es,base,106,[Error creating dns cache]
-es,base,107,[dns_cache_init: hash_size <= 0, using %d]
-es,base,108,[dns_cache_init: cache-size <= %d, using %d]
-es,base,109,[dns_cache_init: cache-size is %d is too large, using %d.]
-es,base,110,[dns_cache_init: expire_time <= 0, using %d]
-es,base,111,[dns_cache_init: expire is %d is too large, using %d seconds.]
-es,base,112,[Error creating dns cache]
-es,base,113,[dns-cache-insert: Error allocating entry]
-es,base,114,[dns-cache-insert: malloc failure]
-es,base,115,[successful server startup]
-es,base,116,[%s B%s]
-es,base,117,[Netscape executable and shared library have different versions]
-es,base,118,[ executable version is %s]
-es,base,119,[ shared library version is %s]
-es,base,120,[error reporting shutting down]
-es,base,121,[warning]
-es,base,122,[config]
-es,base,123,[security]
-es,base,124,[failure]
-es,base,125,[catastrophe]
-es,base,126,[info]
-es,base,127,[verbose]
-es,base,128,[event_handler:Failed to wait on events %s]
-es,base,129,[could not wait on resume event event (%s)]
-es,base,130,[dlopen of %s failed (%s)]
-es,base,131,[dlopen of %s failed (%s)]
-es,base,132,[The server is terminating due to an error. Check the event viewer for the error message. SERVER EXITING!]
-es,base,133,[Terminating the server %s]
-es,base,134,[kill_server:cannot open server event %s]
-es,base,135,[kill_server:cannot set server event %s]
-es,base,136,[error: could not get socket (%s)\n]
-es,base,137,[error: could not set socket option (%s)\n]
-es,base,138,[Terminating Service:error: could not bind to address %s port %d (%s)\n]
-es,base,139,[Terminating Service:error: could not bind to port %d (%s)\n]
-es,base,140,[SetHandleNonInheritable: could not duplicate socket (%s)]
-es,base,141,[SetHandleNonInheritable: closing the original socket failed (%s)]
-es,base,142,[Could not SetHandleInformation (%s)]
-es,base,143,[Terminating Service:Failure: Could not open statistics file (%s)\n]
-es,base,144,[Could not set Thread Local Storage Value for thread at slot %d]
-es,base,145,[secure handshake failed (code %d)\n]
-es,base,146,[accept failed %d (%s)]
-es,base,147,[Failed to pulse Event %d %s]
-es,base,148,[Failed to send MobGrowth Event to parent %s]
-es,base,149,[Pulsing MobRespawn Event %d]
-es,base,150,[respawn thread pool to %d (%d)]
-es,base,151,[Could not open event to signal rotate application. Could not create the MoveLog event:%s]
-es,base,152,[Failed to send MoveLog Event to rotate app %s]
-es,base,153,[growing thread pool from %d to %d]
-es,base,154,[Could not open the ServiceControlManager, Error %d]
-es,base,155,[StartNetsiteService:Could not open the service %s: Error %d]
-es,base,156,[StartNetsiteService:Could not start the service %s]
-es,base,157,[Service Startup: Could not allocate security descriptor]
-es,base,158,[Service Startup: Could not init security descriptor]
-es,base,159,[Service Startup: Could not set the security Dacl]
-es,base,160,[Terminating Service:WinSock init failed: %s]
-es,base,161,[Httpd Server Startup failed: %s]
-es,base,162,[can't find empty statistics slot]
-es,base,163,[NT daemon: could not create new thread %d]
-es,base,164,[Service Startup Failure. Terminating Service:Could not create event %d:%s]
-es,base,165,[Service Startup Error. Could not create the MoveLog event:%s]
-es,base,166,[Failed to wait on Event objects %s]
-es,base,167,[Failed to wait on Event objects %s]
-es,base,168,[pipebuf_buf2sd: pipebuf_grab IO_ERROR %d]
-es,base,169,[pool-init: memory pools disabled]
-es,base,170,[pool-init: free_size <= 0, using %d]
-es,base,171,[pool-create-block: out of memory]
-es,base,172,[pool-create: out of memory]
-es,base,173,[pool-create: out of memory]
-es,base,174,[pool-malloc: out of memory]
-es,base,175,[FREE() used where PERM_FREE() should have been used- problem corrected and supressing further warnings.]
-es,base,176,[regex error: %s (regex: '%s')]
-es,base,177,[can't create IPC pipe (%s)]
-es,base,178,[write to wakeup pipe failed (%s)]
-es,base,179,[flushing %d connections; current %d; tot %d]
-es,base,180,[accept failed (%s)]
-es,base,181,[Error creating time cache]
-es,base,182,[time-cache: cache disabled]
-es,base,183,[time_cache_init: hash_size < %d, using default, %d]
-es,base,184,[time_cache_init: hash_size > %d, using default, %d]
-es,base,185,[time_cache_init: cache_size < %d, using default, %d]
-es,base,186,[time_cache_init: cache_size > %d, using default, %d]
-es,base,187,[Error allocating memory for time_cache]
-es,base,188,[Error allocating memory for time_cache entry]
-es,base,189,[Error allocating memory for time_cache entry]
-es,base,190,[Error inserting new time_cache entry]
-es,base,191,[Error allocating memory for time_cache]
-es,base,192,[cs-terminate failure (%s)]
-es,base,193,[cs-init failure (%s)]
-es,base,194,[cs-wait failure (%s)]
-es,base,195,[cs-post failure (%s)]
-es,base,196,[Unable to create nonblocking socket (%s)]
-es,base,197,[error: could not set keepalive (%s)\n]
-es,base,198,[error: could not set recv timeout (%s)\n]
-es,base,199,[error: could not set send timeout (%s)\n]
-es,base,200,[Unable to create nonblocking socket (%s)]
-es,base,201,[sem_grab failed (%s)]
-es,base,202,[sem_release failed (%s)]
-es,base,203,[sem_release failed (%s)]
-es,base,204,[Could not remove temporary directory %s, Error %d]
-es,base,205,[Could not remove temporary directory %s, Error %d]
-es,dsgw,-1,[$DBT: dsgw in DB file v1 $]
-es,dsgw,1,[Se desconoce el método de solicitud HTTP]
-es,dsgw,2,[Los datos del formulario HTML no son válidos o son incompletos]
-es,dsgw,3,[Memoria agotada]
-es,dsgw,4,[Falta una entrada necesaria de solicitud/formulario]
-es,dsgw,5,[La vía de acceso contiene caracteres no válidos]
-es,dsgw,6,[Falta el archivo de configuración o está dañado]
-es,dsgw,7,[Imposible inicializar el protocolo LDAP]
-es,dsgw,8,[Se ha producido un error al establecer contacto con el servidor LDAP]
-es,dsgw,9,[Se desconoce el tipo de objeto de búsqueda]
-es,dsgw,10,[Se desconoce la etiqueta de atributo]
-es,dsgw,11,[Se desconoce el indicador de correspondencia]
-es,dsgw,12,[El tipo de objeto no tiene filtros de búsqueda]
-es,dsgw,13,[Imposible abrir el archivo de la plantilla HTML]
-es,dsgw,14,[Se desconoce el modo de búsqueda: utilice "smart", "complex", "pattern" o "auth"]
-es,dsgw,15,[Falta un nombre distinguido en el URL]
-es,dsgw,16,[Se desconoce un ámbito del URL (debe ser base, sub o one)]
-es,dsgw,17,[No se reconoce el URL o hay un error desconocido]
-es,dsgw,18,[El formato del URL no es correcto]
-es,dsgw,19,[Error interno]
-es,dsgw,20,[Imposible escribir en el archivo de índices de la plantilla]
-es,dsgw,21,[Imposible abrir el archivo de índice de plantillas]
-es,dsgw,22,[Imposible leer el directorio]
-es,dsgw,23,[Ha fallado la inicialización SSL LDAP (compruebe la vía de acceso de seguridad)]
-es,dsgw,24,[Para que los formularios Usuarios y Grupos funcionen mediante SSL, usted o el administrador del servidor tiene que activar SSL en este Administration Server. Para ello, puede utilizar la página Cifrado|activado/desactivado]
-es,dsgw,25,[No se han encontrado las credenciales de autentificación en la base de datos de autentificación]
-es,dsgw,26,[Error al recuperar datos de la base de datos de autentificación]
-es,dsgw,27,[Sus credenciales de autentificación han caducado]
-es,dsgw,28,[Imposible crear una cadena aleatoria]
-es,dsgw,29,[No se ha especificado un nombre distinguido al recuperar credenciales]
-es,dsgw,30,[No se puede abrir la base de datos de autentificación]
-es,dsgw,31,[No ha sido posible añadir los datos a la base de datos de autentificación]
-es,dsgw,32,[No se ha definido un Gestor de directorios]
-es,dsgw,33,[No se ha especificado una cadena de búsqueda. Vuelva a intentarlo]
-es,dsgw,34,[Una de las líneas del archivo config. contiene demasiados argumentos]
-es,dsgw,35,[No ha sido posible inicializar Windows Sockets]
-es,dsgw,36,[No se han recibido las credenciales de autentificación del Administration Server]
-es,dsgw,37,[Falta un nombre distinguido en el URL ldapdb://]
-es,dsgw,38,[No se reconoce el URL o hay un error desconocido]
-es,dsgw,39,[El formato del URL no es correcto]
-es,dsgw,40,[Se ha producido un error al inicializar la base de datos ldap local]
-es,dsgw,41,[Se desconoce el tipo de servicio de directorios: utilice "local" o "remote"]
-es,dsgw,42,[Se ha producido un error al leer el archivo de configuración de base de datos]
-es,dsgw,43,[La vía de acceso a NSHOME/userdb tenía el valor NULL]
-es,dsgw,44,[No ha sido posible actualizar la configuración del servicio de directorios.]
-es,dsgw,45,[No ha sido posible leer la entrada desde el directorio.]
-es,dsgw,46,[No ha sido posible borrar la base de datos LDAP.]
-es,dsgw,47,[No está autorizado a cambiar otras entradas que no sean las suyas propias.]
-es,dsgw,48,[Problema]
-es,dsgw,49,[Problema de autentificación]
-es,dsgw,50,[.\n<P>Debe repetir la autentificación para poder continuar.\n]
-es,dsgw,51,[.\n<P>Debe repetir la autentificación para poder continuar.\n]
-es,dsgw,52,[error desconocido]
-es,dsgw,53,[La operación se ha realizado con éxito.]
-es,dsgw,54,[Se ha producido un error interno en el servidor. Por lo general,\nesto indica un fallo grave del servidor.\nComuníqueselo al administrador del servidor.]
-es,dsgw,55,[El servidor no ha entendido la solicitud que le ha llegado desde\nla pasarela.]
-es,dsgw,56,[Se ha sobrepasado el límite de tiempo para responder a su solicitud.\nSi lo que busca son entradas, es posible que obtenga mejores\nresultados si realiza una búsqueda más específica.]
-es,dsgw,57,[Se ha sobrepasado el límite de tamaño para responder a su solicitud.\nSi lo que busca son entradas, es posible que obtenga mejores\nresultados si realiza una búsqueda más específica, ya que existen\ndemasiadas entradas que cumplen los criterios de búsqueda.]
-es,dsgw,58,[La pasarela ha intentado autentificarse en el servidor\nmediante un método que el servidor no entiende.]
-es,dsgw,59,[La pasarela ha intentado autentificarse ante el servidor mediante un\nmétodo de autentificación incompatible con el servidor. ]
-es,dsgw,60,[No ha sido posible atender su solicitud, probablemente porque\nel servidor con el que se ha establecido contacto no contiene los datos que\nusted busca. Es posible que se haya recibido\nuna referencia a otro servidor\nal que no es posible acceder. Si tenía la intención\n de realizar cambios en el directorio, puede que no esté disponible el servidor\nque contiene la copia maestra de los datos.]
-es,dsgw,61,[Su solicitud ha sobrepasado un límite administrativo en el servidor.]
-es,dsgw,62,[La pasarela ha solicitado una extensión crítica que no está disponible en el servidor.]
-es,dsgw,63,[El servidor no ha podido procesar la solicitud debido a que\nésta contiene una referencia a un atributo que no\nexiste en la entrada.]
-es,dsgw,64,[El servidor no ha podido atender la solicitud debido a que\nésta no cumple con una restricción de la base de datos.]
-es,dsgw,65,[El servidor no ha podido añadir un valor a la entrada debido a que\ndicho valor ya está incluido en la entrada.]
-es,dsgw,66,[El servidor no ha encontrado la entrada. Si desea añadir\nuna entrada, compruebe que exista su entrada primaria. Si este error\nse ha producido durante una búsqueda, indica que no existe\nla entrada que se está buscando.\nSi ha intentado autentificarse como gestor de directorios y se ha producido\neste error, compruebe el archivo de configuración de la pasarela.]
-es,dsgw,67,[Un nombre distinguido no tenía el formato correcto. ]
-es,dsgw,68,[Ha intentado autentificarse mediante una entrada que no tiene un\nconjunto de contraseñas o que carece de otras credenciales\nnecesarias para la autentificación. No podrá utilizar esa entrada para la autentificación\nhasta que el gestor de directorios haya añadido\nlos atributos correspondientes.]
-es,dsgw,69,[La contraseña u otras credenciales de autentificación especificadas\nno son correctas.]
-es,dsgw,70,[No dispone de suficientes derechos de acceso para realizar la operación. ]
-es,dsgw,71,[El servidor está demasiado ocupado para atender su\nsolicitud. Vuelva a intentarlo dentro de unos minutos.]
-es,dsgw,72,[No ha sido posible establecer contacto con el servidor LDAP.]
-es,dsgw,73,[El servidor se ha negado a procesar su solicitud,\nprobablemente porque se saturaría durante la operación. También puede indicar que el servidor no está\nconfigurado para procesar su solicitud. Si está realizando una búsqueda,\nquizás convenga limitar el ámbito de la misma.]
-es,dsgw,74,[El servidor de directorios no ha podido atender su solicitud porque\nno cumple con los requisitos del esquema. Normalmente, esto suele indicar\nque no se ha especificado el valor de un campo necesario, aunque también\npodría indicar que es necesario actualizar el esquema del servidor de directorios.]
-es,dsgw,75,[El servidor de directorios no permite eliminar una entrada\nni cambiarle el nombre si tiene entradas secundarias. Si desea realizar esta operación,\ndeberá eliminar en primer lugar todas las entradas secundarias.]
-es,dsgw,76,[El servidor no ha podido añadir una entrada nueva o cambiar el nombre de\nuna entrada ya existente porque ese nombre ya se utiliza.]
-es,dsgw,77,[Su solicitud afectaría a varios servidores de directorios.]
-es,dsgw,78,[No ha sido posible establecer contacto con el servidor de directorios.\nConsulte con el administrador del servidor.]
-es,dsgw,79,[Se ha producido un error al enviar datos al servidor.]
-es,dsgw,80,[Se ha producido un error al leer datos desde el servidor.]
-es,dsgw,81,[El servidor no ha respondido a la solicitud.\nHa vencido el tiempo de espera de la solicitud.]
-es,dsgw,82,[El servidor no admite el método de autentificación que\nutiliza la pasarela.]
-es,dsgw,83,[El filtro de búsqueda que ha formado la pasarela tiene un error.]
-es,dsgw,84,[La operación se ha cancelado a solicitud del usuario.]
-es,dsgw,85,[Se ha producido un error interno en la biblioteca: un parámetro\nera incorrecto.]
-es,dsgw,86,[No ha sido posible abrir una conexión con el servidor.\nConsulte con el administrador del servidor.]
-es,dsgw,87,[Se ha producido un error desconocido.]
-es,dsgw,88,[La entrada ya existe]
-es,dsgw,89,[Ya existe una entrada con el nombre ]
-es,dsgw,90,[onMouseOver="window.status='Haga clic aquí para ver esta entrada'; return true"]
-es,dsgw,91,[ .<P>Elija otro nombre u otra ubicación.\n<P>\n]
-es,dsgw,92,[No existe la entrada primaria]
-es,dsgw,93,[No puede añadir una entrada mediante este nombre:<P><B>%s</B>,<P>\nya que no existe su entrada primaria.<P>\nPara poder añadir esta entrada, deberá añadir en primer lugar\n]
-es,dsgw,94,[su entrada primaria.\n]
-es,dsgw,95,[una entrada con este nombre:<P><B>%s</B>.\n]
-es,dsgw,96,[Advertencia: sin autentificar (continuación)...\n]
-es,dsgw,97,[%s la entrada de directorio]
-es,dsgw,98,[<PRE>DN de la entrada: %s</PRE><P>\n]
-es,dsgw,99,[Han quedado guardados los cambios realizados en <B>%s</B>]
-es,dsgw,100,[<B>%s</B> has been added.]
-es,dsgw,101,[<B>%s</B> has been deleted.]
-es,dsgw,102,[Renamed <B>%s</B> to <B>%s</B>.]
-es,dsgw,103,[<P><B>Nota:</B> debido a que ha %s la entrada que utilizó como\nautentificación, ha sido necesario descartar sus credenciales de \nautentificación. Si desea realizar más cambios,\ndeberá volver a autentificarse.\n]
-es,dsgw,104,[eliminado]
-es,dsgw,105,[cambiado el nombre de]
-es,dsgw,106,[cambiado la contraseña de]
-es,dsgw,107,[Se ha cambiado el atributo %s<BR>\n]
-es,dsgw,108,[ NO ASCII (%ld bytes)\n]
-es,dsgw,109,[No se han introducido valores. Vuelva a intentarlo.\n]
-es,dsgw,110,[No se han realizado cambios.\n]
-es,dsgw,111,[<P>Enviando %s al servidor de directorios...\n]
-es,dsgw,112,[información]
-es,dsgw,113,[cambios]
-es,dsgw,114,[<P>Se ha añadido la entrada sin problemas.\n]
-es,dsgw,115,[<P>Se ha modificado la entrada sin problemas. Los cambios han quedado guardados.\n]
-es,dsgw,116,[<P>Se ha eliminado la entrada sin problemas.\n]
-es,dsgw,117,[<PRE>El nombre nuevo de la entrada es: %s\n</PRE><HR>\n]
-es,dsgw,118,[<P>Se ha cambiado el nombre de la entrada sin problemas.\n]
-es,dsgw,119,[Es necesario especificar la contraseña antigua.]
-es,dsgw,120,[Es necesario especificar una contraseña nueva. Vuelva a intentarlo]
-es,dsgw,121,[La contraseña de confirmación no coincide con la contraseña nueva. Vuelva a intentarlo]
-es,dsgw,122,[<BR>El %s <B>%s</B> ya está en uso. Elija otro.<BR>\n]
-es,dsgw,123,[falta el elemento "%.100s" de los datos del formulario]
-es,dsgw,124,[Inicializando la información de configuración]
-es,dsgw,125,[Imposible abrir el archivo.]
-es,dsgw,126,[Archivo dbconf mal construido.]
-es,dsgw,127,[Falta un nombre de propiedad en el archivo dbconf.]
-es,dsgw,128,[Memoria agotada.]
-es,dsgw,129,[Falta una directiva en el archivo dbconf.]
-es,dsgw,130,[Imposible abrir el archivo de configuración "%s"\n]
-es,dsgw,131,[Falta un argumento en la directiva "authlifetime"\n]
-es,dsgw,132,[Falta un argumento en la directiva "dirmgr"\n]
-es,dsgw,133,[Falta un argumento en la directiva "baseurl"\n]
-es,dsgw,134,[Se ha especificado un URL erróneo para la directiva "baseurl": falta el DN de base\n]
-es,dsgw,135,[analizando la directiva baseurl]
-es,dsgw,136,[Se ha especificado un URL erróneo para la directiva "baseurl": no es un URL "ldap://"\n]
-es,dsgw,137,[Todavía no son compatibles las direcciones URL "ldap://"\n]
-es,dsgw,138,[Faltan argumentos en la directiva "template"\n]
-es,dsgw,139,[Faltan un argumento en la directiva "sslrequired"\n]
-es,dsgw,140,[Se desconoce un argumento de la directiva "sslrequired" (debería ser "never", "whenauthenticated", "always")\n]
-es,dsgw,141,[Falta un argumento en la directiva "securitypath"\n]
-es,dsgw,142,[Falta un argumento en la directiva "location-suffix"\n]
-es,dsgw,143,[La directiva "location" necesita tres argumentos\n]
-es,dsgw,144,[La directiva "newtype" necesita dos argumentos como mínimo\n]
-es,dsgw,145,[Se desconoce una ubicación en la directiva "newtype"\n]
-es,dsgw,146,[La directiva "tmplset" necesita tres o cuatro argumentos\n]
-es,dsgw,147,[La directiva "attrvset" necesita cuatro argumentos\n]
-es,dsgw,148,[Falta un argumento en la directiva "charset"\n]
-es,dsgw,149,[Falta un argumento en la directiva "ClientLanguage"\n]
-es,dsgw,150,[Falta un argumento en la directiva "AdminLanguage"\n]
-es,dsgw,151,[Falta un argumento en la directiva "DefaultLanguage"\n]
-es,dsgw,152,[Falta un nombre de archivo en la directiva "include"\n]
-es,dsgw,153,[Se desconoce una directiva del archivo config\n]
-es,dsgw,154,[<= erase_db no ha podido abrir el archivo lcache.conf "%s"\n]
-es,dsgw,155,[<FONT SIZE="+1">\n<P>Se ha eliminado la base de datos. Creando una base de datos nueva... \n</FONT>\n ]
-es,dsgw,156,[<FONT SIZE="+1">\n<P>No ha sido posible eliminar la base de datos \n</FONT>\n ]
-es,dsgw,157,[<= app_suffix no ha podido abrir el archivo ldif "%s"\n]
-es,dsgw,158,[<= app_suffix no ha podido abrir el archivo temporal "%s"\n]
-es,dsgw,159,[Imposible cambiar el nombre de %s a %s]
-es,dsgw,160,[dbconf_read_default_dbinfo() ha devuelto un puntero NULL.]
-es,dsgw,161,[El URL "ldapdb" es erróneo: falta el DN de base\n]
-es,dsgw,162,[El URL "ldapdb" es erróneo\n]
-es,dsgw,163,[Se ha especificado un URL erróneo en la directiva "baseurl": falta el DN de base\n]
-es,dsgw,164,[analizando la directiva baseurl]
-es,dsgw,165,[Se ha especificado un URL erróneo en la directiva "baseurl": no es un URL "ldap:// o ldapdb://"\n]
-es,dsgw,166,[Todavía no son compatibles las direcciones URL "ldap://"\n]
-es,dsgw,167,[No se ha dado ningún valor para binddn]
-es,dsgw,168,[No se ha dado ningún valor para bindpw]
-es,dsgw,169,[No se ha definido un servicio predeterminado de directorios en el archivo dbswitch.conf]
-es,dsgw,170,[Imposible abrir el archivo de configuración "%s" para escribir en él]
-es,dsgw,171,[Imposible cambiar el nombre de %s a %s]
-es,dsgw,172,[archivo de configuración %s: ]
-es,dsgw,173,[archivo de configuración %s: línea %d: ]
-es,dsgw,174,[máx %d]
-es,dsgw,175,[ OK ]
-es,dsgw,176,[Cerrar la ventana]
-es,dsgw,177,[Retroceder]
-es,dsgw,178,[{crypt}BLOQUEADO [%s GMT]]
-es,dsgw,179,[Volver a la pantalla principal]
-es,dsgw,181,[ Help ]
-es,dsgw,182,[Ayuda]
-es,dsgw,184,[Todavía no hay ayuda disponible.]
-es,dsgw,186,[Cerrar la ventana]
-es,dsgw,187,[Cerrar la ventana]
-es,dsgw,188,[El URL no incluía un nombre de plantilla justo después de "?"]
-es,dsgw,189,[Autentificar...]
-es,dsgw,190,[¿Desea descartar las credenciales de autentificación (finalizar la sesión?]
-es,dsgw,191,[Escriba una cadena de búsqueda]
-es,dsgw,192,[Como primer paso para autentificarse ante el directorio,\n identifíquese.<br>Introduzca su nombre:]
-es,dsgw,193,[Continuar]
-es,dsgw,194,[Continuar]
-es,dsgw,195,[Cancelar]
-es,dsgw,196,[Autentificarse como gestor de directorios"> Â (solamente para los administradores de directorios)\n]
-es,dsgw,197,[Autentificar...]
-es,dsgw,198,[¿Desea descartar las credenciales de autentificación?]
-es,dsgw,200,[Continuar]
-es,dsgw,201,[Continuar]
-es,dsgw,202,[Cancelar]
-es,dsgw,203,[Autentifíquese (inicie la sesión) en el directorio]
-es,dsgw,204,[Está a punto de autentificarse en el directorio como <B>%s</B>. Para concluir el proceso de autentificación, escriba su contraseña.\n]
-es,dsgw,206,[Para poder modificar o añadir entradas, es necesario autentificarse\n(iniciar sesión) en el directorio. Esta ventana le servirá de\nguía para realizar el proceso\nde autentificación.\n]
-es,dsgw,207,[Desde esta pantalla, es posible autentificarse (iniciar sesión)\nen el directorio. Para poder modificar entradas del directorio, es necesario\realizar la autentificación en primer lugar.\nSi intenta modificar una entrada si haberse autentificado,\nel sistema le pedirá que inicie sesión.\n]
-es,dsgw,208,[Estado de la autentificación]
-es,dsgw,209,[<form>\nActualmente, se encuentra autentificado en el directorio como ]
-es,dsgw,210,[.\nSi desea descartar las credenciales de autentificación y finalizar la sesión en el directorio, haga clic en el botón que aparece a continuación.]
-es,dsgw,211,[Descartar credenciales de autentificación (finalizar sesión)]
-es,dsgw,212,[Sus credenciales de autentificación en ]
-es,dsgw,213,[han caducado.\n<HR>\n]
-es,dsgw,214,[Actualmente, no se encuentra autentificado en el directorio.<HR>\n]
-es,dsgw,215,[falta "%s=" ]
-es,dsgw,216,[se desconoce "%s=%s"]
-es,dsgw,217,[se desconoce la opción %s]
-es,dsgw,218,[se desconoce la sintaxis=%s\n]
-es,dsgw,219,[** El tipo de HTML "%s" no es compatible **<BR>\n]
-es,dsgw,224,[Modificar]
-es,dsgw,225,[Save Changes]
-es,dsgw,226,[modify]
-es,dsgw,227,[add]
-es,dsgw,228,[Eliminar]
-es,dsgw,229,[¿Desea eliminar esta entrada?]
-es,dsgw,230,[Cambiar el nombre]
-es,dsgw,231,[Escriba un nombre nuevo para esta entrada:]
-es,dsgw,232,[Modificar como]
-es,dsgw,233,[falta %s=]
-es,dsgw,234,[Cerrar la ventana]
-es,dsgw,235,[Modificar...]
-es,dsgw,236,[falta"%s="\n]
-es,dsgw,237,[se desconoce el conjunto "%s"\n]
-es,dsgw,238,[se desconoce la sintaxis "%s"\n]
-es,dsgw,239,[Repetir la autentificación]
-es,dsgw,240,[Cerrar la ventana]
-es,dsgw,241,[Confirme que desea ]
-es,dsgw,242,[?]
-es,dsgw,243,[ Aceptar ]
-es,dsgw,244,[ Aceptar ]
-es,dsgw,245,[ Restablecer ]
-es,dsgw,246,[ Terminado ]
-es,dsgw,247,[ Cancelar ]
-es,dsgw,248,[se ha encontrado otra sentencia IF (no se admiten las sentencias IF anidadas)]
-es,dsgw,249,[se ha encontrado una sentencia ELSE, pero no aparece la IF]
-es,dsgw,250,[se ha encontrado una sentencia ELSE después de ELSE (se esperaba encontrar ENDIF)]
-es,dsgw,251,[se ha encontrado una sentencia ELIF, pero no aparece la IF]
-es,dsgw,252,[se ha encontrado una sentencia ELIF después de ELSE (se esperaba encontrar ENDIF)]
-es,dsgw,253,[se ha encontrado una sentencia ENDIF, pero no aparece la IF]
-es,dsgw,254,[<BR><B>error de plantilla:</B> %s<BR>\n]
-es,dsgw,255,[se ha intentado el proceso ldap_init/lcache_init antes de leer el archivo de configuración]
-es,dsgw,256,[no se ejecuta bajo el Administration Server]
-es,dsgw,257,[No se han podido inicializar los permisos]
-es,dsgw,258,[No ha sido posible asignar el nombre de usuario a un DN (el Administration Server ha comunicado un error)]
-es,dsgw,259,[No se ha recibido el nombre de usuario actual]
-es,dsgw,260,[No se ha recibido la contraseña del usuario actual]
-es,dsgw,261,[Error: %s]
-es,dsgw,262,[Nota: no se encuentra disponible ninguna plantilla de presentación para este tipo de\nentrada; la entrada se muestra a continuación con un método predeterminado.]
-es,dsgw,263,[La identifación de usuario no es válida o el identifador LDAP tiene el valor NULL]
-es,dsgw,264,[no coincide ninguna identificación de usuario]
-es,dsgw,265,[coinciden varias identificaciones de usuario]
-es,dsgw,266,[the entire directory]
-es,dsgw,267,[La directiva "includeset" necesita dos argumentos\n]
-es,dsgw,268,[No se ha encontrado en esta entrada el valor de atributo solicitado]
-es,dsgw,269,[Falta un argumento en la directiva "NLS"\n]
-es,dsgw,270,[Es necesario especificar un valor de identificación de usuario NT\n ]
-es,dsgw,271,[La combinación de identificaciones de usuario NT y dominio NT ya se utiliza en el directorio\n]
-es,dsgw,272,[Es necesario especificar valores de identificación de usuario NT y de dominio NT\n]
-es,dsgw,273,[La identifiación de usuario NT no puede contener más de 20 caracteres.\n]
-es,dsgw,274,[Especifique el nombre de la entrada nueva.]
-es,dsgw,275,[Seleccione la ubicación de la entrada nueva.]
-es,dsgw,276,[Entrada nueva]
-es,dsgw,277,[Para poder utilizar esta función, el archivo dsgw.conf debe contener una definición de dirmgr]
-es,dsgw,278,[La directiva "vcard-property" necesita tres o cuatro argumentos\n]
-es,dsgw,279,[La sintaxis de la propiedad VCard debe ser "cis" o "mls"\n]
-es,dsgw,280,[No se han encontrado entradas.\n%2$s]
-es,dsgw,281,[No se han encontrado entradas en las que %2$s %3$s '%4$s'.\n]
-es,dsgw,282,[Se ha realizado la búsqueda, pero no se ha encontrado ninguna entrada.\n%2$s]
-es,dsgw,283,[Se ha realizado la búsqueda, pero no se ha encontrado ninguna entrada en la que %2$s %3$s %4$s'.\n]
-es,dsgw,284,[Se ha encontrado 1 entrada.\n%2$s]
-es,dsgw,285,[Se ha encontrado 1 entrada en la que %2$s %3$s '%4$s'.\n]
-es,dsgw,286,[Se ha realizado la búsqueda y se ha encontrado 1 entrada.\n%2$s]
-es,dsgw,287,[Se ha realizado la búsqueda y se ha encontrado 1 entrada en la que %2$s %3$s '%4$s'.\n]
-es,dsgw,288,[Se han encontrado %1$li entradas.\n%2$s]
-es,dsgw,289,[Se han encontrado %1$li entradas en las que %2$s %3$s '%4$s'.\n]
-es,dsgw,290,[Se ha realizado la búsqueda y se han encontrado %1$li entradas.\n%2$s]
-es,dsgw,291,[Se ha realizado la búsqueda y se han encontrado %1$li entradas en las que %2$s %3$s '%4$s'.\n]
-es,dsgw,292,[el filtro LDAP es]
-es,dsgw,293,[El servidor no ha encontrado la entrada que usted ha utilizado el autentificarse. Es posible que se haya eliminado la entrada o que alguien le haya cambiado el nombre. Intente volver a realizar la autentificación.]
-es,dsgw,294,[La sintaxis de la contraseña nueva no es válida.\n]
-es,dsgw,295,[La contraseña nueva ya existe en el historial de contraseñas.\n]
-es,dsgw,296,[Ha sobrepasado el límite de reintentos de contraseña. Consulte con el administrador del sistema.\n]
-es,dsgw,297,[Ha sobrepasado el límite de reintentos de contraseña. Vuelva a intentarlo más adelante.\n]
-es,dsgw,298,[La contraseña ha caducado. Consulte con el administrador del sistema para restablecer la contraseña.\n]
-es,frame,-1,[$DBT: frame in DB file v1 $]
-es,frame,1,[<TITLE>No se ha encontrado</TITLE><H1>No se ha encontrado</H1> El objeto solicitado no existe en este servidor. El vínculo que ha seguido no está actualizado o no es exacto, o bien el servidor ha recibido instrucciones para no permitirle el acceso.]
-es,frame,2,[Informe al administrador de la oficina acerca de la <A HREF="%s">página que contiene la referencia</A>.]
-es,frame,3,[El navegador ha enviado una solicitud que este servidor proxy no ha entendido.]
-es,frame,4,[Es necesario disponer de la autorización adecuada para la administración de\neste servidor proxy. El navegador no puede conceder la autorización,\no la autorización no se ha podido realizar.]
-es,frame,5,[Es necesaria la autentificación de nombre de usuario para utilizar\neste servidor proxy. El navegador no puede conceder la autorización,\no la autorización no se ha podido realizar.]
-es,frame,6,[La configuración de control de acceso al servidor proxy deniega\nel acceso al objeto solicitado mediante este servidor proxy.]
-es,frame,7,[El servidor proxy ha encontrado un error interno que le impide\natender su solicitud. Lo más probable es que se deba a una configuración\nerrónea. Solicite al administrador que examine el registro de errores del servidor proxy.]
-es,frame,8,[Este servidor proxy no utiliza el método solicitado.]
-es,frame,9,[Se ha producido un error en el servidor proxy.]
-es,frame,10,[El navegador ha enviado una consulta que este servidor no ha entendido.]
-es,frame,11,[Es necesario disponer de la autorización adecuada para acceder a esta zona. El navegador no puede conceder la autorización o la autorización no se ha podido realizar]
-es,frame,12,[Su cliente no está autorizado a acceder al objeto que ha solicitado.]
-es,frame,13,[El servidor ha encontrado un error interno que le impide atender su solicitud. Lo más probable es que se deba a una configuración errónea. Solicite al administrador que examine el registro de errores del servidor.]
-es,frame,14,[Este servidor no utiliza el método solicitado.]
-es,frame,15,[Se ha producido un error.]
-es,frame,16,[El navegador ha enviado un mensaje que este servidor no ha entendido.]
-es,frame,17,[<HTML><HEAD><TITLE>%s</TITLE></HEAD><BODY><H1>%s</H1>\nEste documento ha sido trasladado a otra <a href="%s">ubicación</a>. Actualice los documentos y listas de acceso con los nuevos datos.</BODY></HTML>]
-es,frame,18,[<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=iso-8859-1"><META HTTP-EQUIV="Content-Language" CONTENT="es"><TITLE>%s</TITLE></HEAD>\n<BODY><H1>%s</H1>\n%s\n</BODY></HTML>]
-es,frame,19,[process-uri-objects]
-es,frame,20,[cannot find template %s]
-es,frame,21,[process-uri-objects]
-es,frame,22,[no partial path after object processing]
-es,frame,23,[find-service]
-es,frame,24,[invalid shexp %s]
-es,frame,25,[find-service]
-es,frame,26,[invalid shexp %s]
-es,frame,27,[handle-processed]
-es,frame,28,[no way to service request for %s]
-es,frame,29,[finish-socks-request]
-es,frame,30,[close failed (%s), csd=%d]
-es,frame,31,[This beta software has expired.\n]
-es,frame,32,[mr_accept(%d)]
-es,frame,33,[Error issuing read on accept socket]
-es,frame,34,[acb_accept_connection(%d)]
-es,frame,35,[Error getting accept socket (%d)]
-es,frame,36,[Error in accept! (%d, %s)]
-es,frame,37,[Error creating new accept request]
-es,frame,38,[accepted connection: %d (NSPR %d)]
-es,frame,39,[Error creating new session structure]
-es,frame,40,[accel_read_request()]
-es,frame,41,[Error allocating request read buffer]
-es,frame,42,[Error issuing async read request]
-es,frame,43,[acb_read_request(%d, bytes %d)]
-es,frame,44,[acb_read_req(1 session = %d)]
-es,frame,45,[Error reading request (%d, %s)]
-es,frame,46,[Client aborted connection]
-es,frame,47,[Error reading request]
-es,frame,48,[Error creating new request]
-es,frame,49,[error occurred, closing %d, io was for %d]
-es,frame,50,[accel_async_scan_headers()]
-es,frame,51,[out of memory: accel_async_scan_headers]
-es,frame,52,[out of memory: accel_async_scan_headers]
-es,frame,53,[Error during async read (%d, %s)]
-es,frame,54,[scan-headers reports: line too long]
-es,frame,55,[scan-headers reports: too many headers]
-es,frame,56,[Error reading headers]
-es,frame,57,[scan-headers reports: header missing terminator (an empty line)]
-es,frame,58,[scan-headers reports: header was empty]
-es,frame,59,[nombre sin valor: se ha recibido la línea "%s"]
-es,frame,60,[accel_send_plain_file()]
-es,frame,61,[accel_send_plain_file() - found request %d]
-es,frame,62,[Parse headers lost the URI!]
-es,frame,63,[accel_send_plain_file() - found uri %s]
-es,frame,64,[accel_send_plain_file() - found in cache?]
-es,frame,65,[malloc died!]
-es,frame,66,[Error writing back file\n]
-es,frame,67,[acb_send_plain_file(%d)]
-es,frame,68,[Error writing in acb_send_plain_file (%d, %s)]
-es,frame,69,[acb_close_connection(%d)]
-es,frame,70,[Errored IO in acb_close_connection (%d, %s)]
-es,frame,71,[Unable to close socket %d]
-es,frame,72,[accel-cache-insert: Error allocating entry]
-es,frame,73,[cache-init: server cache disabled]
-es,frame,74,[accel_file_cache: Error initializing file cache]
-es,frame,75,[accel_file_cache: Error creating cache]
-es,frame,76,[accel_file_cache_init: CacheHashSize < %d, using %d]
-es,frame,77,[accel_file_cache_init: CacheHashSize > %d, using %d]
-es,frame,78,[accel_file_cache_init: MaxNumberOfCachedFiles < %d, using %d]
-es,frame,79,[accel_file_cache_init: MaxNumberOfCachedFiles > %d, using %d]
-es,frame,80,[accel_file_cache_init: MaxNumberOfOpenCachedFiles < %d, using %d]
-es,frame,81,[accel_file_cache_init: MaxNumberOfOpenCachedFiles > %d, using %d]
-es,frame,82,[accel_file_cache: Error initializing file cache]
-es,frame,83,[file-cache: enabled = %s ]
-es,frame,84,[on]
-es,frame,85,[off]
-es,frame,86,[file-cache: MaxNumberOfCachedFiles %d (0x%x)]
-es,frame,87,[file-cache: CacheHashSize %d (0x%x)]
-es,frame,88,[file-cache: MaxNumberOfOpenCachedFiles %d (0x%x)]
-es,frame,89,[accel-cache-insert: Error allocating entry]
-es,frame,90,[file-cache-cleanup: munmap failed (%s)]
-es,frame,91,[file-cache-cleanup: found mmapped file \non system without mmap]
-es,frame,92,[file_cache_init: MaxTotalCachedFileSize < %d, using %d]
-es,frame,93,[file_cache_init: MaxTotalCachedFileSize > %d, using %d]
-es,frame,94,[file cache using mmap flags 0x%x]
-es,frame,95,[file cache using mmap prots 0x%x]
-es,frame,96,[file-cache-init: could not create lock]
-es,frame,97,[file-cache: unable to create temporary directory %s.\n]
-es,frame,98,[file-cache: unable to create temporary directory %s.\n]
-es,frame,99,[file-cache: GetTempPath() Cannot find temp directory to store file!]
-es,frame,100,[file-cache-init: set max cached file size to %d]
-es,frame,101,[file-cache-init: could not create lock]
-es,frame,102,[file_cache_destroy()]
-es,frame,103,[file-cache: Unable to get temp file name. Error %s]
-es,frame,104,[file-cache: Unable to get temp file name. Error %s]
-es,frame,105,[file-cache-insert: Error allocating entry]
-es,frame,106,[file-cache-create: Error opening file %s (%s)]
-es,frame,107,[file-cache-create: Error stat()ing file %s (%s)]
-es,frame,108,[file-cache-create: Error mmap()ing file %s (%s)]
-es,frame,109,[file-cache-create: malloc failure]
-es,frame,110,[file-cache-create: error case failed to munmap(%d, %d) (%s)]
-es,frame,111,[file-cache-valid: cannot stat %s]
-es,frame,112,[dir change: invalidating %s (%d)]
-es,frame,113,[file-cache: asynchronous file change notification failed.]
-es,frame,114,[dir change: offset %d, action %d, len %d, name %s]
-es,frame,115,[unable to check async file status]
-es,frame,116,[ReadDirectoryChangesW failure- unable to continue watching %s. Error is %s]
-es,frame,117,[file-cache-add-watch failure- unable to open directory %s. Error %s]
-es,frame,118,[ReadDirectoryChangesW failure- unable to start watching %s. Error %s]
-es,frame,119,[func_exec]
-es,frame,120,[no handler function given for directive]
-es,frame,121,[func_exec]
-es,frame,122,[cannot find function named %s]
-es,frame,123,[handle-request]
-es,frame,124,[method without URI]
-es,frame,125,[http-parse-request]
-es,frame,126,[while scanning HTTP headers, %s]
-es,frame,127,[handle-request]
-es,frame,128,[read from %s failed, error is %s]
-es,frame,129,[handle-request]
-es,frame,130,[request too long]
-es,frame,131,[start-http-response]
-es,frame,132,[write failed (%s)]
-es,frame,133,[start-http-response]
-es,frame,134,[write failed (%s)]
-es,frame,135,[http-status]
-es,frame,136,[%d is not a valid HTTP status code]
-es,frame,137,[finish-request]
-es,frame,138,[close failed (%s)]
-es,frame,139,[Unable to close socket for writing]
-es,frame,140,[os has %d objects]
-es,frame,141,[obj %d has no hash table at %d]
-es,frame,142,[obj %d has no param]
-es,frame,143,[obj %d name %s value %s]
-es,frame,144,[.....directives %d.......]
-es,frame,145,[.....directive %d]
-es,frame,146,[.......instance %d]
-es,frame,147,[...........param name %s value %s]
-es,frame,148,[ClearConfigurationParameters:RegCreateKey %s]
-es,frame,149,[ClearConfigurationParameters:RegEnumKey %s failed]
-es,frame,150,[obj.conf line %d: error in filter file "%s" at line %d: %s]
-es,frame,151,[obj.conf line %d: error in filter file "%s" at line %d: %s]
-es,frame,152,[Unable to allocate Subject property list.\n]
-es,frame,153,[Unable to set session ptr in Subject property list - error=%d\n]
-es,frame,154,[Unable to set request ptr in Subject property list - error=%d\n]
-es,frame,155,[file-cache-valid: cannot stat %s]
-es,frame,156,[file-cache-create: Error stat()ing file %s (%s)]
-es,httpdaemon,-1,[$DBT: httpdaemon in DB file v1 $]
-es,httpdaemon,1,[Error in ConvertThreadToFiber]
-es,httpdaemon,2,[Error in ConvertThreadToFiber]
-es,httpdaemon,3,[Error in md_start_system]
-es,httpdaemon,4,[Error in CreateFiber - idlefiber]
-es,httpdaemon,5,[Error in GetQueuedCompletionStatus]
-es,httpdaemon,6,[Error creating completion port]
-es,httpdaemon,7,[Could not SetHandleNonInheritable (%s)]
-es,httpdaemon,8,[Error accept/read new conn]
-es,httpdaemon,9,[Error in Respond()]
-es,httpdaemon,10,[Error in RespondCompleted()]
-es,httpdaemon,11,[daemon: unable to fork new process (%s)\n]
-es,httpdaemon,12,[daemon: setsid failed (%s)\n]
-es,httpdaemon,13,[daemon: can't log pid to %s (%s)\n]
-es,httpdaemon,14,[warning: could not set group id to %d (%s)\n]
-es,httpdaemon,15,[warning: could not set user id to %d (%s)\n]
-es,httpdaemon,16,[warning: daemon is running as super-user\n]
-es,httpdaemon,17,[could not determine current user name\n]
-es,httpdaemon,18,[error: chroot to %s failed (%s)\n]
-es,httpdaemon,19,[WARNING! netscape executable and library have different versions.\n]
-es,httpdaemon,20,[startup: listening to %s://%s, port %d as %s\n]
-es,httpdaemon,21,[startup: listening to %s://%s, port %d as %s\n]
-es,httpdaemon,22,[seminit failed (%s)\n]
-es,httpdaemon,23,[Using single threaded accepts.]
-es,httpdaemon,24,[Using multi threaded accepts.]
-es,httpdaemon,25,[Using partial single threaded accepts.]
-es,httpdaemon,26,[This machine has %d processors.]
-es,httpdaemon,27,[Error calling thr_seconcurrency(%d)- (%s)]
-es,httpdaemon,28,[Set conncurrency to %d.]
-es,httpdaemon,29,[can't fork new process (%s)]
-es,httpdaemon,30,[This beta software has expired.\n]
-es,httpdaemon,31,[can't create IPC pipe (%s)]
-es,httpdaemon,32,[write to wakeup pipe failed (%s)]
-es,httpdaemon,33,[select thread miss]
-es,httpdaemon,34,[startup failure: could not bind to port %d (%s)\n]
-es,httpdaemon,35,[startup failure: could not bind to port %d, IP address %s (%s)\n]
-es,libaccess,-1,[$DBT: libaccess in DB file v1 $]
-es,libaccess,1,[basic-ncsa]
-es,libaccess,2,[cannot open database %s]
-es,libaccess,3,[basic-ncsa]
-es,libaccess,4,[user %s password did not match database %s]
-es,libaccess,5,[basic-ncsa]
-es,libaccess,6,[cannot open connection to LDAP server on %s:%d]
-es,libaccess,7,[basic-ncsa]
-es,libaccess,8,[user %s password did not match LDAP on %s:%d]
-es,libaccess,9,[acl-state]
-es,libaccess,10,[missing realm]
-es,libaccess,11,[Unable to allocate ACL List Hash\n]
-es,libaccess,12,[ACLEvalBuildContext unable to PERM_MALLOC cache structure\n]
-es,libaccess,13,[ACLEvalBuildContext unable to create hash table\n]
-es,libaccess,14,[ACLEvalBuildContext unable to allocate ACE Entry\n]
-es,libaccess,15,[ACLEvalBuildContext unable to allocate ACE entry\n]
-es,libaccess,16,[ACLEvalBuildContext unable to allocate Boundary Entry\n]
-es,libaccess,17,[ACLEvalBuildContext failed.\n]
-es,libaccess,18,[ACL_EvalTestRights: an interim, absolute non-allow value was encountered. right=%s, value=%d\n]
-es,libaccess,19,[LASDnsBuild unable to allocate hash table header\n]
-es,libaccess,20,[LASDnsBuild unable to add key %s\n]
-es,libaccess,21,[LASDnsBuild unable to add key %s\n]
-es,libaccess,22,[LASDnsBuild unable to add key %s\n]
-es,libaccess,23,[LASDnsBuild unable to add key %s\n]
-es,libaccess,24,[LASDnsBuild unable to add key %s\n]
-es,libaccess,25,[LAS DNS build received request for attribute %s\n]
-es,libaccess,26,[LASDnsEval - illegal comparator %s\n]
-es,libaccess,27,[LASDnsEval unable to allocate Context struct\n\n]
-es,libaccess,28,[LASDnsEval unable to get session address %d\n]
-es,libaccess,29,[LASDnsEval unable to get DNS - error=%s\n]
-es,libaccess,30,[LAS Group Eval received request for attribute %s\n]
-es,libaccess,31,[LASGroupEval - illegal comparator %s\n]
-es,libaccess,32,[LASGroupEval - ran out of memory\n]
-es,libaccess,33,[LASGroupEval unable to get session address %d\n]
-es,libaccess,34,[LASGroupEval unable to get session address %d\n]
-es,libaccess,35,[LASGroupEval - couldn't locate getter for auth-user\n]
-es,libaccess,36,[LASGroupEval - Attribute getter for auth-user failed\n]
-es,libaccess,37,[LASGroupEval - Attribute getter didn't set auth-user\n]
-es,libaccess,38,[Check group membership of user "%s" for group "%s"\n]
-es,libaccess,39,[LDAPU_SUCCESS for group "%s"\n]
-es,libaccess,40,[LDAPU_FAILED for group "%s"\n]
-es,libaccess,41,[LAS_EVAL_FALSE\n]
-es,libaccess,42,[LAS_EVAL_TRUE\n]
-es,libaccess,43,[LASIpTreeAlloc - no memory\n]
-es,libaccess,44,[IP LAS unable to allocate tree node\n]
-es,libaccess,45,[IP LAS unable to allocate tree node\n]
-es,libaccess,46,[LAS IP build received request for attribute %s\n]
-es,libaccess,47,[LASIpEval - illegal comparator %s\n]
-es,libaccess,48,[LASIpEval unable to get session address - error=%s\n]
-es,libaccess,49,[LASIpEval unable to allocate Context struct\n\n]
-es,libaccess,50,[LASIpEval - reach 32 bits without conclusion value=%s]
-es,libaccess,51,[LAS Program Eval received request for attribute %s\n]
-es,libaccess,52,[LASProgramEval - illegal comparator %s\n]
-es,libaccess,53,[LASProgram unable to get session address %d\n]
-es,libaccess,54,[bin]
-es,libaccess,55,[LASProgramEval: request not of type admin or bin, passing.\n]
-es,libaccess,56,[LASProgramEval: check if program %s matches pattern %s.\n]
-es,libaccess,57,[LASProgramEval: Invalid wildcard expression %s.\n]
-es,libaccess,58,[LAS_EVAL_FALSE\n]
-es,libaccess,59,[LAS_EVAL_TRUE\n]
-es,libaccess,60,[Unexpected attribute in dayOfWeek - %s\n]
-es,libaccess,61,[Illegal comparator for dayOfWeek - %s\n]
-es,libaccess,62,[Unexpected attribute in timeOfDay - %s\n]
-es,libaccess,63,[LAS User Eval received request for attribute %s\n]
-es,libaccess,64,[LASUserEval - illegal comparator %s\n]
-es,libaccess,65,[LASUserEval - ran out of memory\n]
-es,libaccess,66,[LASUserEval unable to get session address %d\n]
-es,libaccess,67,[LASUserEval unable to get session address %d\n]
-es,libaccess,68,[LASGroupEval - couldn't locate getter for auth-user\n]
-es,libaccess,69,[LASGroupEval - Attribute getter for auth-user failed\n]
-es,libaccess,70,[LASGroupEval - Attribute getter didn't set auth-user\n]
-es,libaccess,71,[Check if uid == user (i.e. check "%s" == "%s)"\n]
-es,libaccess,72,[SUCCESS for user "%s"\n]
-es,libaccess,73,[FAILED for user "%s"\n]
-es,libaccess,74,[LAS_EVAL_FALSE\n]
-es,libaccess,75,[LAS_EVAL_TRUE\n]
-es,libaccess,76,[]
-es,libaccess,77,[LASProgram unable to get request address - error=%s]
-es,libaccess,78,[LASProgram rejecting request for program %s from pattern %s]
-es,libaccess,79,[ACL_CacheFlush: unable to parse file "%s"\n]
-es,libaccess,80,[ACL_CacheFlush: unable to concatenate ACL list "%s"\n]
-es,libaccess,81,[ACL_CacheFlush: unable to open and process the magnus file "%s"\n]
-es,libaccess,82,[Illegal comparator for timeOfDay - %s\n]
-es,libaccess,83,[ACL_EvalBuildContext unable to create hash table\n]
-es,libaccess,84,[ACL_EvalBuildContext unable to PERM_CALLOC cache structure\n]
-es,libaccess,85,[ACL_EvalBuildContext unable to allocate ACE entry\n]
-es,libaccess,86,[ACL_EvalBuildContext unable to allocate auth pointer array\n]
-es,libaccess,87,[ACL_EvalBuildContext unable to allocate auth plist\n]
-es,libaccess,88,[ACL_EvalTestRights: an interim, absolute non-allow value was encountered. right=%s, value=%s\n]
-es,libaccess,89,[ACL_INTEvalTestRights: call to ACL_EvalBuildContext returned failure status\n]
-es,libaccess,90,[ACL_ModuleRegister: module name is missing\n]
-es,libaccess,91,[ACL_ModuleRegister: call to module init function returned a failed status\n]
-es,libaccess,92,[ACL_GetAttribute: couldn't determine method for %s\n]
-es,libaccess,93,[ACL_GetAttribute: couldn't locate getter for %s]
-es,libaccess,94,[ACL_GetAttribute: attr getter failed to get %s]
-es,libaccess,95,[ACL_GetAttribute: attr getter failed to get %s]
-es,libaccess,96,[ACL_GetAttribute: All attribute getters declined for attr %s]
-es,libaccess,97,[ACL_DatabaseRegister: dbtype for database "%s" is not defined yet!]
-es,libaccess,98,[ACL_DatabaseRegister: database name is missing]
-es,libaccess,99,[Error reading the DB Map File: %s. Reason: %s]
-es,libaccess,100,[URL is missing for database %s]
-es,libaccess,101,[Invalid property value pair for database %s]
-es,libaccess,102,["default" database must be an LDAP database]
-es,libaccess,103,[Multiple "default" databases are being registered]
-es,libaccess,104,["default" LDAP database must be registered]
-es,libaccess,105,[LASGroupEval unable to get database name - error= %s]
-es,libaccess,106,[received invalid program expression %s]
-es,libaccess,107,[parse_ldap_url: database url is missing]
-es,libaccess,108,[parse_ldap_url: database name is missing]
-es,libaccess,109,[parse_ldap_url: error in parsing ldap url. Reason: %s]
-es,libaccess,110,[ldap password check: unable to get database name - error=%s]
-es,libaccess,111,[ldap password check: unable to get parsed database %s]
-es,libaccess,112,[ldap password check: couldn't initialize connection to LDAP. Reason: %s]
-es,libaccess,113,[ldap password check: LDAP error: "%s"]
-es,libaccess,114,[get_user_ismember_ldap unable to get database name - error=%s]
-es,libaccess,115,[get_user_ismember_ldap unable to get parsed database %s]
-es,libaccess,116,[ldap password check: couldn't initialize connection to LDAP. Reason: %s]
-es,libaccess,117,[get_user_ismember_ldap: group %s does not exist]
-es,libaccess,118,[get_user_ismember_ldap: LDAP error: "%s"]
-es,libaccess,119,[ACL_LDAPDatabaseHandle: %s is not a registered database]
-es,libaccess,120,[ACL_LDAPDatabaseHandle: %s is not an LDAP database]
-es,libaccess,121,[ACL_LDAPDatabaseHandle: out of memory]
-es,libaccess,122,[ACL_LDAPDatabaseHandle: couldn't initialize connection to LDAP. Reason: %s]
-es,libaccess,123,[ACL_LDAPDatabaseHandle: couldn't bind to LDAP server. Reason: %s]
-es,libaccess,124,[insufficient dynamic memory]
-es,libaccess,125,[error opening file, %s: %s]
-es,libaccess,126,[duplicate definition of %s]
-es,libaccess,127,[file %s, line %s: duplicate definition of %s]
-es,libaccess,128,[file %s, line %s: syntax error]
-es,libaccess,129,[file %s, line %s: %s is undefined]
-es,libaccess,130,[in acl %s, %s %s is undefined]
-es,libaccess,131,[database %s: error accessing %s]
-es,libaccess,132,[%s]
-es,libaccess,133,[file %s, line %s: invalid syntax]
-es,libaccess,134,[file %s, line %s: syntax error at "%s"]
-es,libaccess,135,[realm %s is not defined]
-es,libaccess,136,[error code = %d]
-es,libaccess,137,[internal ACL error]
-es,libaccess,138,[invalid argument]
-es,libaccess,139,[ACL_DatabaseRegister: dbtype for database "%s" is not defined yet!]
-es,libaccess,140,[couldn't determine dbtype from: %s]
-es,libaccess,141,[Failed to register database %s]
-es,libaccess,142,[ACL call returned failed status]
-es,libaccess,143,[file %s: ACL IO error - %s]
-es,libaccess,144,[acl_user_exists: memoria agotada]
-es,libaccess,145,[acl_user_exists: ya no existe el usuario]
-es,libaccess,146,[acl_user_exists: error de plist]
-es,libadmin,-1,[$DBT: libadmin in DB file v1 $]
-es,libadmin,1,[ Help ]
-es,libadmin,2,[ OK ]
-es,libadmin,3,[ Reset ]
-es,libadmin,4,[ Done ]
-es,libadmin,5,[ Cancel ]
-es,libir,-1,[$DBT: libadmin in DB file v1 $]
-es,libir,1,[An I/O error occurred before all form data could be read.]
diff --git a/l10n/dirserv/es/ns-slapd.txt.iso8859 b/l10n/dirserv/es/ns-slapd.txt.iso8859
deleted file mode 100644
index d88d5d7b..00000000
--- a/l10n/dirserv/es/ns-slapd.txt.iso8859
+++ /dev/null
@@ -1,915 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-/**************************************************************************/
-/* The copyright notice(s) in this Source Code does not indicate actual */
-/* or intended publication of this Source Code. */
-/**************************************************************************/
-
-/* This text file was generated by program dblink */
-
-$Revision: 1.4 $
-$Log: ns-slapd.txt.iso8859,v $
-Revision 1.4 2005/04/19 22:06:51 nkinder
-Fixed licensing typo
-
-Revision 1.3 2005/04/15 22:39:18 nkinder
-155068 - Added license to source files
-
-Revision 1.2 2005/02/28 23:37:40 nkinder
-149951 - Updated source code copyrights
-
-Revision 1.1.1.1 2005/01/21 00:40:48 cvsadm
-Moving NSCP Directory Server from DirectoryBranch to TRUNK, initial drop. (foxworth)
-
-Revision 1.1.8.3 2003/09/22 19:36:42 ulfw
-Update copyright years from 2001 to 2001-2003
-
-Revision 1.1.8.2 2001/11/03 01:06:41 richm
-XXX use new copyright XXX
-
-Revision 1.1.8.1 1998/10/10 02:14:04 ggood
-Copy from Directory40RtmBranchpoint to DirectoryBranch
-
-Revision 1.1.2.1 1997/12/24 01:14:39 werudge
-Based on en/ns-slapd.txt : 1.1.2.3
-daily 971113.1 SOLARIS-export-optimize-normal-slapd
-$EndLog$
-
-$StartStringData$
-
-es,base,-1,[$DBT: base in DB file v1 $]
-es,base,1,[no hay memoria suficiente para crear la tabla de totales de control]
-es,base,2,[no hay memoria suficiente para crear la tabla de totales de control]
-es,base,3,[cache_destroy: las tablas caché parecen dañadas.]
-es,base,4,[no ha sido posible asignar la entrada de total de control]
-es,base,5,[cache_insert: no ha sido posible crear la entrada caché]
-es,base,6,[HTTP/1.0 200 OK\nContent-type: text/html\n\n]
-es,base,7,[<H2>Informe de estado de caché de Netscape</H2>\n]
-es,base,8,[El sistema no tiene cachés<P>]
-es,base,9,[<H2>Caché %s</H2>\n]
-es,base,10,[Índice de aciertos de caché: %d/%d (%f)</P>\n</P>\n]
-es,base,11,[Tamaño de caché: %d/%d</P>\n</P>\n]
-es,base,12,[Tamaño de la tabla de totales de control: %d</P>\n</P>\n]
-es,base,13,[mru : %d</P>\nlru : %d</P>\n]
-es,base,14,[<UL><TABLE BORDER=4> <TH>Sector de almacenamiento</TH> <TH>Dirección</TH> <TH>Clave</TH> <TH>Recuento de accesos</TH> <TH>Eliminar</TH> <TH>Siguiente</TH> <TH>LRU</TH> <TH>MRU</TH> <TH>Datos</TH>\n]
-es,base,15,[munmap failed (%s)]
-es,base,16,[munmap failed (%s)]
-es,base,17,[close failed (%s)]
-es,base,18,[daemon: unable to fork new process (%s)\n]
-es,base,19,[daemon: setsid failed (%s)\n]
-es,base,20,[daemon: can't log pid to %s (%s)\n]
-es,base,21,[warning: could not set group id to %d (%s)\n]
-es,base,22,[warning: could not set user id to %d (%s)\n]
-es,base,23,[warning: daemon is running as super-user\n]
-es,base,24,[could not determine current user name\n]
-es,base,25,[error: chroot to %s failed (%s)\n]
-es,base,27,[, address %s]
-es,base,28,[warning: statistics disabled (%s)\n]
-es,base,29,[security handshake timed out for pid %d]
-es,base,30,[warning: statistics disabled (%s)\n]
-es,base,31,[secure handshake failed (code %d)\n]
-es,base,32,[accept failed (%s)]
-es,base,33,[warning: statistics disabled (%s)\n]
-es,base,34,[select thread miss]
-es,base,35,[keepalive worker awoken with no work to do]
-es,base,36,[could not create new thread: %d (%s)]
-es,base,37,[wait for sema succeeded, but nothing to dequeue]
-es,base,38,[queue-sema creation failure]
-es,base,39,[error getting processor info for processor %d]
-es,base,40,[Error binding to processor %d]
-es,base,41,[bound process %d to processor %d]
-es,base,42,[Netscape server is not explicitly binding to any processors.]
-es,base,43,[cache monitor exited]
-es,base,44,[cache batch update daemon exited]
-es,base,45,[Using single threaded accepts.]
-es,base,46,[Using multi threaded accepts.]
-es,base,47,[Using partial single threaded accepts.]
-es,base,48,[This machine has %d processors.]
-es,base,49,[Error calling thr_seconcurrency(%d)- (%s)]
-es,base,50,[Set conncurrency to %d.]
-es,base,51,[WARNING! netscape executable and library have different versions.\n]
-es,base,54,[seminit failed (%s)\n]
-es,base,55,[This beta software has expired.\n]
-es,base,56,[Cache monitor respawned]
-es,base,57,[Cache batch update daemon respawned]
-es,base,58,[can't find empty statistics slot]
-es,base,59,[can't fork new process (%s)]
-es,base,60,[assert failed! %s\n]
-es,base,61,[mr_table_init()]
-es,base,62,[malloc failed]
-es,base,63,[malloc failed!]
-es,base,64,[mr_add_io(%d, type %d, file %d)]
-es,base,65,[mr_add_io - stage 1]
-es,base,66,[mr_add_io - stage 2]
-es,base,67,[mr_add_io found invalid IO type %d]
-es,base,68,[mr_add_io - adding timeout]
-es,base,69,[Out of memory!\n]
-es,base,70,[done with mr_add_io]
-es,base,71,[mr_del_io(%d, type %d, file %d)]
-es,base,72,[mr_del_io found invalid IO type %d]
-es,base,73,[mr_lookup_io(%d)]
-es,base,74,[mr_async_io(%d, %d bytes, file %d)]
-es,base,75,[malloc failure adding async IO]
-es,base,76,[Error adding async io!]
-es,base,77,[Cannot seek for read!]
-es,base,78,[read failure! (%d, %s)]
-es,base,79,[do_read read %d bytes for file %d]
-es,base,80,[Cannot seek for write!]
-es,base,81,[writev failure! (%d, %s)]
-es,base,82,[write failure! (%d, %s)]
-es,base,83,[do_write wrote %d bytes for file %d]
-es,base,84,[do_timeout(mrp %d)]
-es,base,85,[do_timeout: found IO (timer=%d, time=%d)]
-es,base,86,[error deleting io]
-es,base,87,[timeout callback failure for %d\n]
-es,base,88,[mr_get_event(%d) - outstanding io %d]
-es,base,89,[mr_get_event: Waiting for reads on FD:]
-es,base,90,[mr_get_event: Waiting for writes on FD:]
-es,base,91,[ %d]
-es,base,92,[ %d]
-es,base,93,[mr_get_event set no timeout]
-es,base,94,[mr_get_event set timeout to: %d.%d sec]
-es,base,95,[error in select (%d, %s)]
-es,base,96,[mr_get_event() - select found %d]
-es,base,97,[error looking up IO fd %d]
-es,base,98,[read failed for fd %d]
-es,base,99,[error deleting io]
-es,base,100,[callback failure for %d\n]
-es,base,101,[error looking up IO fd %d]
-es,base,102,[writing: header len %d, writelen %d, total %d]
-es,base,103,[write failed for fd %d]
-es,base,104,[error deleting io]
-es,base,105,[callback failure for %d\n]
-es,base,106,[Error creating dns cache]
-es,base,107,[dns_cache_init: hash_size <= 0, using %d]
-es,base,108,[dns_cache_init: cache-size <= %d, using %d]
-es,base,109,[dns_cache_init: cache-size is %d is too large, using %d.]
-es,base,110,[dns_cache_init: expire_time <= 0, using %d]
-es,base,111,[dns_cache_init: expire is %d is too large, using %d seconds.]
-es,base,112,[Error creating dns cache]
-es,base,113,[dns-cache-insert: Error allocating entry]
-es,base,114,[dns-cache-insert: malloc failure]
-es,base,115,[successful server startup]
-es,base,116,[%s B%s]
-es,base,117,[Netscape executable and shared library have different versions]
-es,base,118,[ executable version is %s]
-es,base,119,[ shared library version is %s]
-es,base,120,[error reporting shutting down]
-es,base,121,[warning]
-es,base,122,[config]
-es,base,123,[security]
-es,base,124,[failure]
-es,base,125,[catastrophe]
-es,base,126,[info]
-es,base,127,[verbose]
-es,base,128,[event_handler:Failed to wait on events %s]
-es,base,129,[could not wait on resume event event (%s)]
-es,base,130,[dlopen of %s failed (%s)]
-es,base,131,[dlopen of %s failed (%s)]
-es,base,132,[The server is terminating due to an error. Check the event viewer for the error message. SERVER EXITING!]
-es,base,133,[Terminating the server %s]
-es,base,134,[kill_server:cannot open server event %s]
-es,base,135,[kill_server:cannot set server event %s]
-es,base,136,[error: could not get socket (%s)\n]
-es,base,137,[error: could not set socket option (%s)\n]
-es,base,138,[Terminating Service:error: could not bind to address %s port %d (%s)\n]
-es,base,139,[Terminating Service:error: could not bind to port %d (%s)\n]
-es,base,140,[SetHandleNonInheritable: could not duplicate socket (%s)]
-es,base,141,[SetHandleNonInheritable: closing the original socket failed (%s)]
-es,base,142,[Could not SetHandleInformation (%s)]
-es,base,143,[Terminating Service:Failure: Could not open statistics file (%s)\n]
-es,base,144,[Could not set Thread Local Storage Value for thread at slot %d]
-es,base,145,[secure handshake failed (code %d)\n]
-es,base,146,[accept failed %d (%s)]
-es,base,147,[Failed to pulse Event %d %s]
-es,base,148,[Failed to send MobGrowth Event to parent %s]
-es,base,149,[Pulsing MobRespawn Event %d]
-es,base,150,[respawn thread pool to %d (%d)]
-es,base,151,[Could not open event to signal rotate application. Could not create the MoveLog event:%s]
-es,base,152,[Failed to send MoveLog Event to rotate app %s]
-es,base,153,[growing thread pool from %d to %d]
-es,base,154,[Could not open the ServiceControlManager, Error %d]
-es,base,155,[StartNetsiteService:Could not open the service %s: Error %d]
-es,base,156,[StartNetsiteService:Could not start the service %s]
-es,base,157,[Service Startup: Could not allocate security descriptor]
-es,base,158,[Service Startup: Could not init security descriptor]
-es,base,159,[Service Startup: Could not set the security Dacl]
-es,base,160,[Terminating Service:WinSock init failed: %s]
-es,base,161,[Httpd Server Startup failed: %s]
-es,base,162,[can't find empty statistics slot]
-es,base,163,[NT daemon: could not create new thread %d]
-es,base,164,[Service Startup Failure. Terminating Service:Could not create event %d:%s]
-es,base,165,[Service Startup Error. Could not create the MoveLog event:%s]
-es,base,166,[Failed to wait on Event objects %s]
-es,base,167,[Failed to wait on Event objects %s]
-es,base,168,[pipebuf_buf2sd: pipebuf_grab IO_ERROR %d]
-es,base,169,[pool-init: memory pools disabled]
-es,base,170,[pool-init: free_size <= 0, using %d]
-es,base,171,[pool-create-block: out of memory]
-es,base,172,[pool-create: out of memory]
-es,base,173,[pool-create: out of memory]
-es,base,174,[pool-malloc: out of memory]
-es,base,175,[FREE() used where PERM_FREE() should have been used- problem corrected and supressing further warnings.]
-es,base,176,[regex error: %s (regex: '%s')]
-es,base,177,[can't create IPC pipe (%s)]
-es,base,178,[write to wakeup pipe failed (%s)]
-es,base,179,[flushing %d connections; current %d; tot %d]
-es,base,180,[accept failed (%s)]
-es,base,181,[Error creating time cache]
-es,base,182,[time-cache: cache disabled]
-es,base,183,[time_cache_init: hash_size < %d, using default, %d]
-es,base,184,[time_cache_init: hash_size > %d, using default, %d]
-es,base,185,[time_cache_init: cache_size < %d, using default, %d]
-es,base,186,[time_cache_init: cache_size > %d, using default, %d]
-es,base,187,[Error allocating memory for time_cache]
-es,base,188,[Error allocating memory for time_cache entry]
-es,base,189,[Error allocating memory for time_cache entry]
-es,base,190,[Error inserting new time_cache entry]
-es,base,191,[Error allocating memory for time_cache]
-es,base,192,[cs-terminate failure (%s)]
-es,base,193,[cs-init failure (%s)]
-es,base,194,[cs-wait failure (%s)]
-es,base,195,[cs-post failure (%s)]
-es,base,196,[Unable to create nonblocking socket (%s)]
-es,base,197,[error: could not set keepalive (%s)\n]
-es,base,198,[error: could not set recv timeout (%s)\n]
-es,base,199,[error: could not set send timeout (%s)\n]
-es,base,200,[Unable to create nonblocking socket (%s)]
-es,base,201,[sem_grab failed (%s)]
-es,base,202,[sem_release failed (%s)]
-es,base,203,[sem_release failed (%s)]
-es,base,204,[Could not remove temporary directory %s, Error %d]
-es,base,205,[Could not remove temporary directory %s, Error %d]
-es,dsgw,-1,[$DBT: dsgw in DB file v1 $]
-es,dsgw,1,[Se desconoce el método de solicitud HTTP]
-es,dsgw,2,[Los datos del formulario HTML no son válidos o son incompletos]
-es,dsgw,3,[Memoria agotada]
-es,dsgw,4,[Falta una entrada necesaria de solicitud/formulario]
-es,dsgw,5,[La vía de acceso contiene caracteres no válidos]
-es,dsgw,6,[Falta el archivo de configuración o está dañado]
-es,dsgw,7,[Imposible inicializar el protocolo LDAP]
-es,dsgw,8,[Se ha producido un error al establecer contacto con el servidor LDAP]
-es,dsgw,9,[Se desconoce el tipo de objeto de búsqueda]
-es,dsgw,10,[Se desconoce la etiqueta de atributo]
-es,dsgw,11,[Se desconoce el indicador de correspondencia]
-es,dsgw,12,[El tipo de objeto no tiene filtros de búsqueda]
-es,dsgw,13,[Imposible abrir el archivo de la plantilla HTML]
-es,dsgw,14,[Se desconoce el modo de búsqueda: utilice "smart", "complex", "pattern" o "auth"]
-es,dsgw,15,[Falta un nombre distinguido en el URL]
-es,dsgw,16,[Se desconoce un ámbito del URL (debe ser base, sub o one)]
-es,dsgw,17,[No se reconoce el URL o hay un error desconocido]
-es,dsgw,18,[El formato del URL no es correcto]
-es,dsgw,19,[Error interno]
-es,dsgw,20,[Imposible escribir en el archivo de índices de la plantilla]
-es,dsgw,21,[Imposible abrir el archivo de índice de plantillas]
-es,dsgw,22,[Imposible leer el directorio]
-es,dsgw,23,[Ha fallado la inicialización SSL LDAP (compruebe la vía de acceso de seguridad)]
-es,dsgw,24,[Para que los formularios Usuarios y Grupos funcionen mediante SSL, usted o el administrador del servidor tiene que activar SSL en este Administration Server. Para ello, puede utilizar la página Cifrado|activado/desactivado]
-es,dsgw,25,[No se han encontrado las credenciales de autentificación en la base de datos de autentificación]
-es,dsgw,26,[Error al recuperar datos de la base de datos de autentificación]
-es,dsgw,27,[Sus credenciales de autentificación han caducado]
-es,dsgw,28,[Imposible crear una cadena aleatoria]
-es,dsgw,29,[No se ha especificado un nombre distinguido al recuperar credenciales]
-es,dsgw,30,[No se puede abrir la base de datos de autentificación]
-es,dsgw,31,[No ha sido posible añadir los datos a la base de datos de autentificación]
-es,dsgw,32,[No se ha definido un Gestor de directorios]
-es,dsgw,33,[No se ha especificado una cadena de búsqueda. Vuelva a intentarlo]
-es,dsgw,34,[Una de las líneas del archivo config. contiene demasiados argumentos]
-es,dsgw,35,[No ha sido posible inicializar Windows Sockets]
-es,dsgw,36,[No se han recibido las credenciales de autentificación del Administration Server]
-es,dsgw,37,[Falta un nombre distinguido en el URL ldapdb://]
-es,dsgw,38,[No se reconoce el URL o hay un error desconocido]
-es,dsgw,39,[El formato del URL no es correcto]
-es,dsgw,40,[Se ha producido un error al inicializar la base de datos ldap local]
-es,dsgw,41,[Se desconoce el tipo de servicio de directorios: utilice "local" o "remote"]
-es,dsgw,42,[Se ha producido un error al leer el archivo de configuración de base de datos]
-es,dsgw,43,[La vía de acceso a NSHOME/userdb tenía el valor NULL]
-es,dsgw,44,[No ha sido posible actualizar la configuración del servicio de directorios.]
-es,dsgw,45,[No ha sido posible leer la entrada desde el directorio.]
-es,dsgw,46,[No ha sido posible borrar la base de datos LDAP.]
-es,dsgw,47,[No está autorizado a cambiar otras entradas que no sean las suyas propias.]
-es,dsgw,48,[Problema]
-es,dsgw,49,[Problema de autentificación]
-es,dsgw,50,[.\n<P>Debe repetir la autentificación para poder continuar.\n]
-es,dsgw,51,[.\n<P>Debe repetir la autentificación para poder continuar.\n]
-es,dsgw,52,[error desconocido]
-es,dsgw,53,[La operación se ha realizado con éxito.]
-es,dsgw,54,[Se ha producido un error interno en el servidor. Por lo general,\nesto indica un fallo grave del servidor.\nComuníqueselo al administrador del servidor.]
-es,dsgw,55,[El servidor no ha entendido la solicitud que le ha llegado desde\nla pasarela.]
-es,dsgw,56,[Se ha sobrepasado el límite de tiempo para responder a su solicitud.\nSi lo que busca son entradas, es posible que obtenga mejores\nresultados si realiza una búsqueda más específica.]
-es,dsgw,57,[Se ha sobrepasado el límite de tamaño para responder a su solicitud.\nSi lo que busca son entradas, es posible que obtenga mejores\nresultados si realiza una búsqueda más específica, ya que existen\ndemasiadas entradas que cumplen los criterios de búsqueda.]
-es,dsgw,58,[La pasarela ha intentado autentificarse en el servidor\nmediante un método que el servidor no entiende.]
-es,dsgw,59,[La pasarela ha intentado autentificarse ante el servidor mediante un\nmétodo de autentificación incompatible con el servidor. ]
-es,dsgw,60,[No ha sido posible atender su solicitud, probablemente porque\nel servidor con el que se ha establecido contacto no contiene los datos que\nusted busca. Es posible que se haya recibido\nuna referencia a otro servidor\nal que no es posible acceder. Si tenía la intención\n de realizar cambios en el directorio, puede que no esté disponible el servidor\nque contiene la copia maestra de los datos.]
-es,dsgw,61,[Su solicitud ha sobrepasado un límite administrativo en el servidor.]
-es,dsgw,62,[La pasarela ha solicitado una extensión crítica que no está disponible en el servidor.]
-es,dsgw,63,[El servidor no ha podido procesar la solicitud debido a que\nésta contiene una referencia a un atributo que no\nexiste en la entrada.]
-es,dsgw,64,[El servidor no ha podido atender la solicitud debido a que\nésta no cumple con una restricción de la base de datos.]
-es,dsgw,65,[El servidor no ha podido añadir un valor a la entrada debido a que\ndicho valor ya está incluido en la entrada.]
-es,dsgw,66,[El servidor no ha encontrado la entrada. Si desea añadir\nuna entrada, compruebe que exista su entrada primaria. Si este error\nse ha producido durante una búsqueda, indica que no existe\nla entrada que se está buscando.\nSi ha intentado autentificarse como gestor de directorios y se ha producido\neste error, compruebe el archivo de configuración de la pasarela.]
-es,dsgw,67,[Un nombre distinguido no tenía el formato correcto. ]
-es,dsgw,68,[Ha intentado autentificarse mediante una entrada que no tiene un\nconjunto de contraseñas o que carece de otras credenciales\nnecesarias para la autentificación. No podrá utilizar esa entrada para la autentificación\nhasta que el gestor de directorios haya añadido\nlos atributos correspondientes.]
-es,dsgw,69,[La contraseña u otras credenciales de autentificación especificadas\nno son correctas.]
-es,dsgw,70,[No dispone de suficientes derechos de acceso para realizar la operación. ]
-es,dsgw,71,[El servidor está demasiado ocupado para atender su\nsolicitud. Vuelva a intentarlo dentro de unos minutos.]
-es,dsgw,72,[No ha sido posible establecer contacto con el servidor LDAP.]
-es,dsgw,73,[El servidor se ha negado a procesar su solicitud,\nprobablemente porque se saturaría durante la operación. También puede indicar que el servidor no está\nconfigurado para procesar su solicitud. Si está realizando una búsqueda,\nquizás convenga limitar el ámbito de la misma.]
-es,dsgw,74,[El servidor de directorios no ha podido atender su solicitud porque\nno cumple con los requisitos del esquema. Normalmente, esto suele indicar\nque no se ha especificado el valor de un campo necesario, aunque también\npodría indicar que es necesario actualizar el esquema del servidor de directorios.]
-es,dsgw,75,[El servidor de directorios no permite eliminar una entrada\nni cambiarle el nombre si tiene entradas secundarias. Si desea realizar esta operación,\ndeberá eliminar en primer lugar todas las entradas secundarias.]
-es,dsgw,76,[El servidor no ha podido añadir una entrada nueva o cambiar el nombre de\nuna entrada ya existente porque ese nombre ya se utiliza.]
-es,dsgw,77,[Su solicitud afectaría a varios servidores de directorios.]
-es,dsgw,78,[No ha sido posible establecer contacto con el servidor de directorios.\nConsulte con el administrador del servidor.]
-es,dsgw,79,[Se ha producido un error al enviar datos al servidor.]
-es,dsgw,80,[Se ha producido un error al leer datos desde el servidor.]
-es,dsgw,81,[El servidor no ha respondido a la solicitud.\nHa vencido el tiempo de espera de la solicitud.]
-es,dsgw,82,[El servidor no admite el método de autentificación que\nutiliza la pasarela.]
-es,dsgw,83,[El filtro de búsqueda que ha formado la pasarela tiene un error.]
-es,dsgw,84,[La operación se ha cancelado a solicitud del usuario.]
-es,dsgw,85,[Se ha producido un error interno en la biblioteca: un parámetro\nera incorrecto.]
-es,dsgw,86,[No ha sido posible abrir una conexión con el servidor.\nConsulte con el administrador del servidor.]
-es,dsgw,87,[Se ha producido un error desconocido.]
-es,dsgw,88,[La entrada ya existe]
-es,dsgw,89,[Ya existe una entrada con el nombre ]
-es,dsgw,90,[onMouseOver="window.status='Haga clic aquí para ver esta entrada'; return true"]
-es,dsgw,91,[ .<P>Elija otro nombre u otra ubicación.\n<P>\n]
-es,dsgw,92,[No existe la entrada primaria]
-es,dsgw,93,[No puede añadir una entrada mediante este nombre:<P><B>%s</B>,<P>\nya que no existe su entrada primaria.<P>\nPara poder añadir esta entrada, deberá añadir en primer lugar\n]
-es,dsgw,94,[su entrada primaria.\n]
-es,dsgw,95,[una entrada con este nombre:<P><B>%s</B>.\n]
-es,dsgw,96,[Advertencia: sin autentificar (continuación)...\n]
-es,dsgw,97,[%s la entrada de directorio]
-es,dsgw,98,[<PRE>DN de la entrada: %s</PRE><P>\n]
-es,dsgw,99,[Han quedado guardados los cambios realizados en <B>%s</B>]
-es,dsgw,100,[<B>%s</B> has been added.]
-es,dsgw,101,[<B>%s</B> has been deleted.]
-es,dsgw,102,[Renamed <B>%s</B> to <B>%s</B>.]
-es,dsgw,103,[<P><B>Nota:</B> debido a que ha %s la entrada que utilizó como\nautentificación, ha sido necesario descartar sus credenciales de \nautentificación. Si desea realizar más cambios,\ndeberá volver a autentificarse.\n]
-es,dsgw,104,[eliminado]
-es,dsgw,105,[cambiado el nombre de]
-es,dsgw,106,[cambiado la contraseña de]
-es,dsgw,107,[Se ha cambiado el atributo %s<BR>\n]
-es,dsgw,108,[ NO ASCII (%ld bytes)\n]
-es,dsgw,109,[No se han introducido valores. Vuelva a intentarlo.\n]
-es,dsgw,110,[No se han realizado cambios.\n]
-es,dsgw,111,[<P>Enviando %s al servidor de directorios...\n]
-es,dsgw,112,[información]
-es,dsgw,113,[cambios]
-es,dsgw,114,[<P>Se ha añadido la entrada sin problemas.\n]
-es,dsgw,115,[<P>Se ha modificado la entrada sin problemas. Los cambios han quedado guardados.\n]
-es,dsgw,116,[<P>Se ha eliminado la entrada sin problemas.\n]
-es,dsgw,117,[<PRE>El nombre nuevo de la entrada es: %s\n</PRE><HR>\n]
-es,dsgw,118,[<P>Se ha cambiado el nombre de la entrada sin problemas.\n]
-es,dsgw,119,[Es necesario especificar la contraseña antigua.]
-es,dsgw,120,[Es necesario especificar una contraseña nueva. Vuelva a intentarlo]
-es,dsgw,121,[La contraseña de confirmación no coincide con la contraseña nueva. Vuelva a intentarlo]
-es,dsgw,122,[<BR>El %s <B>%s</B> ya está en uso. Elija otro.<BR>\n]
-es,dsgw,123,[falta el elemento "%.100s" de los datos del formulario]
-es,dsgw,124,[Inicializando la información de configuración]
-es,dsgw,125,[Imposible abrir el archivo.]
-es,dsgw,126,[Archivo dbconf mal construido.]
-es,dsgw,127,[Falta un nombre de propiedad en el archivo dbconf.]
-es,dsgw,128,[Memoria agotada.]
-es,dsgw,129,[Falta una directiva en el archivo dbconf.]
-es,dsgw,130,[Imposible abrir el archivo de configuración "%s"\n]
-es,dsgw,131,[Falta un argumento en la directiva "authlifetime"\n]
-es,dsgw,132,[Falta un argumento en la directiva "dirmgr"\n]
-es,dsgw,133,[Falta un argumento en la directiva "baseurl"\n]
-es,dsgw,134,[Se ha especificado un URL erróneo para la directiva "baseurl": falta el DN de base\n]
-es,dsgw,135,[analizando la directiva baseurl]
-es,dsgw,136,[Se ha especificado un URL erróneo para la directiva "baseurl": no es un URL "ldap://"\n]
-es,dsgw,137,[Todavía no son compatibles las direcciones URL "ldap://"\n]
-es,dsgw,138,[Faltan argumentos en la directiva "template"\n]
-es,dsgw,139,[Faltan un argumento en la directiva "sslrequired"\n]
-es,dsgw,140,[Se desconoce un argumento de la directiva "sslrequired" (debería ser "never", "whenauthenticated", "always")\n]
-es,dsgw,141,[Falta un argumento en la directiva "securitypath"\n]
-es,dsgw,142,[Falta un argumento en la directiva "location-suffix"\n]
-es,dsgw,143,[La directiva "location" necesita tres argumentos\n]
-es,dsgw,144,[La directiva "newtype" necesita dos argumentos como mínimo\n]
-es,dsgw,145,[Se desconoce una ubicación en la directiva "newtype"\n]
-es,dsgw,146,[La directiva "tmplset" necesita tres o cuatro argumentos\n]
-es,dsgw,147,[La directiva "attrvset" necesita cuatro argumentos\n]
-es,dsgw,148,[Falta un argumento en la directiva "charset"\n]
-es,dsgw,149,[Falta un argumento en la directiva "ClientLanguage"\n]
-es,dsgw,150,[Falta un argumento en la directiva "AdminLanguage"\n]
-es,dsgw,151,[Falta un argumento en la directiva "DefaultLanguage"\n]
-es,dsgw,152,[Falta un nombre de archivo en la directiva "include"\n]
-es,dsgw,153,[Se desconoce una directiva del archivo config\n]
-es,dsgw,154,[<= erase_db no ha podido abrir el archivo lcache.conf "%s"\n]
-es,dsgw,155,[<FONT SIZE="+1">\n<P>Se ha eliminado la base de datos. Creando una base de datos nueva... \n</FONT>\n ]
-es,dsgw,156,[<FONT SIZE="+1">\n<P>No ha sido posible eliminar la base de datos \n</FONT>\n ]
-es,dsgw,157,[<= app_suffix no ha podido abrir el archivo ldif "%s"\n]
-es,dsgw,158,[<= app_suffix no ha podido abrir el archivo temporal "%s"\n]
-es,dsgw,159,[Imposible cambiar el nombre de %s a %s]
-es,dsgw,160,[dbconf_read_default_dbinfo() ha devuelto un puntero NULL.]
-es,dsgw,161,[El URL "ldapdb" es erróneo: falta el DN de base\n]
-es,dsgw,162,[El URL "ldapdb" es erróneo\n]
-es,dsgw,163,[Se ha especificado un URL erróneo en la directiva "baseurl": falta el DN de base\n]
-es,dsgw,164,[analizando la directiva baseurl]
-es,dsgw,165,[Se ha especificado un URL erróneo en la directiva "baseurl": no es un URL "ldap:// o ldapdb://"\n]
-es,dsgw,166,[Todavía no son compatibles las direcciones URL "ldap://"\n]
-es,dsgw,167,[No se ha dado ningún valor para binddn]
-es,dsgw,168,[No se ha dado ningún valor para bindpw]
-es,dsgw,169,[No se ha definido un servicio predeterminado de directorios en el archivo dbswitch.conf]
-es,dsgw,170,[Imposible abrir el archivo de configuración "%s" para escribir en él]
-es,dsgw,171,[Imposible cambiar el nombre de %s a %s]
-es,dsgw,172,[archivo de configuración %s: ]
-es,dsgw,173,[archivo de configuración %s: línea %d: ]
-es,dsgw,174,[máx %d]
-es,dsgw,175,[ OK ]
-es,dsgw,176,[Cerrar la ventana]
-es,dsgw,177,[Retroceder]
-es,dsgw,178,[{crypt}BLOQUEADO [%s GMT]]
-es,dsgw,179,[Volver a la pantalla principal]
-es,dsgw,181,[ Help ]
-es,dsgw,182,[Ayuda]
-es,dsgw,184,[Todavía no hay ayuda disponible.]
-es,dsgw,186,[Cerrar la ventana]
-es,dsgw,187,[Cerrar la ventana]
-es,dsgw,188,[El URL no incluía un nombre de plantilla justo después de "?"]
-es,dsgw,189,[Autentificar...]
-es,dsgw,190,[¿Desea descartar las credenciales de autentificación (finalizar la sesión?]
-es,dsgw,191,[Escriba una cadena de búsqueda]
-es,dsgw,192,[Como primer paso para autentificarse ante el directorio,\n identifíquese.<br>Introduzca su nombre:]
-es,dsgw,193,[Continuar]
-es,dsgw,194,[Continuar]
-es,dsgw,195,[Cancelar]
-es,dsgw,196,[Autentificarse como gestor de directorios"> Â (solamente para los administradores de directorios)\n]
-es,dsgw,197,[Autentificar...]
-es,dsgw,198,[¿Desea descartar las credenciales de autentificación?]
-es,dsgw,200,[Continuar]
-es,dsgw,201,[Continuar]
-es,dsgw,202,[Cancelar]
-es,dsgw,203,[Autentifíquese (inicie la sesión) en el directorio]
-es,dsgw,204,[Está a punto de autentificarse en el directorio como <B>%s</B>. Para concluir el proceso de autentificación, escriba su contraseña.\n]
-es,dsgw,206,[Para poder modificar o añadir entradas, es necesario autentificarse\n(iniciar sesión) en el directorio. Esta ventana le servirá de\nguía para realizar el proceso\nde autentificación.\n]
-es,dsgw,207,[Desde esta pantalla, es posible autentificarse (iniciar sesión)\nen el directorio. Para poder modificar entradas del directorio, es necesario\realizar la autentificación en primer lugar.\nSi intenta modificar una entrada si haberse autentificado,\nel sistema le pedirá que inicie sesión.\n]
-es,dsgw,208,[Estado de la autentificación]
-es,dsgw,209,[<form>\nActualmente, se encuentra autentificado en el directorio como ]
-es,dsgw,210,[.\nSi desea descartar las credenciales de autentificación y finalizar la sesión en el directorio, haga clic en el botón que aparece a continuación.]
-es,dsgw,211,[Descartar credenciales de autentificación (finalizar sesión)]
-es,dsgw,212,[Sus credenciales de autentificación en ]
-es,dsgw,213,[han caducado.\n<HR>\n]
-es,dsgw,214,[Actualmente, no se encuentra autentificado en el directorio.<HR>\n]
-es,dsgw,215,[falta "%s=" ]
-es,dsgw,216,[se desconoce "%s=%s"]
-es,dsgw,217,[se desconoce la opción %s]
-es,dsgw,218,[se desconoce la sintaxis=%s\n]
-es,dsgw,219,[** El tipo de HTML "%s" no es compatible **<BR>\n]
-es,dsgw,224,[Modificar]
-es,dsgw,225,[Save Changes]
-es,dsgw,226,[modify]
-es,dsgw,227,[add]
-es,dsgw,228,[Eliminar]
-es,dsgw,229,[¿Desea eliminar esta entrada?]
-es,dsgw,230,[Cambiar el nombre]
-es,dsgw,231,[Escriba un nombre nuevo para esta entrada:]
-es,dsgw,232,[Modificar como]
-es,dsgw,233,[falta %s=]
-es,dsgw,234,[Cerrar la ventana]
-es,dsgw,235,[Modificar...]
-es,dsgw,236,[falta"%s="\n]
-es,dsgw,237,[se desconoce el conjunto "%s"\n]
-es,dsgw,238,[se desconoce la sintaxis "%s"\n]
-es,dsgw,239,[Repetir la autentificación]
-es,dsgw,240,[Cerrar la ventana]
-es,dsgw,241,[Confirme que desea ]
-es,dsgw,242,[?]
-es,dsgw,243,[ Aceptar ]
-es,dsgw,244,[ Aceptar ]
-es,dsgw,245,[ Restablecer ]
-es,dsgw,246,[ Terminado ]
-es,dsgw,247,[ Cancelar ]
-es,dsgw,248,[se ha encontrado otra sentencia IF (no se admiten las sentencias IF anidadas)]
-es,dsgw,249,[se ha encontrado una sentencia ELSE, pero no aparece la IF]
-es,dsgw,250,[se ha encontrado una sentencia ELSE después de ELSE (se esperaba encontrar ENDIF)]
-es,dsgw,251,[se ha encontrado una sentencia ELIF, pero no aparece la IF]
-es,dsgw,252,[se ha encontrado una sentencia ELIF después de ELSE (se esperaba encontrar ENDIF)]
-es,dsgw,253,[se ha encontrado una sentencia ENDIF, pero no aparece la IF]
-es,dsgw,254,[<BR><B>error de plantilla:</B> %s<BR>\n]
-es,dsgw,255,[se ha intentado el proceso ldap_init/lcache_init antes de leer el archivo de configuración]
-es,dsgw,256,[no se ejecuta bajo el Administration Server]
-es,dsgw,257,[No se han podido inicializar los permisos]
-es,dsgw,258,[No ha sido posible asignar el nombre de usuario a un DN (el Administration Server ha comunicado un error)]
-es,dsgw,259,[No se ha recibido el nombre de usuario actual]
-es,dsgw,260,[No se ha recibido la contraseña del usuario actual]
-es,dsgw,261,[Error: %s]
-es,dsgw,262,[Nota: no se encuentra disponible ninguna plantilla de presentación para este tipo de\nentrada; la entrada se muestra a continuación con un método predeterminado.]
-es,dsgw,263,[La identifación de usuario no es válida o el identifador LDAP tiene el valor NULL]
-es,dsgw,264,[no coincide ninguna identificación de usuario]
-es,dsgw,265,[coinciden varias identificaciones de usuario]
-es,dsgw,266,[the entire directory]
-es,dsgw,267,[La directiva "includeset" necesita dos argumentos\n]
-es,dsgw,268,[No se ha encontrado en esta entrada el valor de atributo solicitado]
-es,dsgw,269,[Falta un argumento en la directiva "NLS"\n]
-es,dsgw,270,[Es necesario especificar un valor de identificación de usuario NT\n ]
-es,dsgw,271,[La combinación de identificaciones de usuario NT y dominio NT ya se utiliza en el directorio\n]
-es,dsgw,272,[Es necesario especificar valores de identificación de usuario NT y de dominio NT\n]
-es,dsgw,273,[La identifiación de usuario NT no puede contener más de 20 caracteres.\n]
-es,dsgw,274,[Especifique el nombre de la entrada nueva.]
-es,dsgw,275,[Seleccione la ubicación de la entrada nueva.]
-es,dsgw,276,[Entrada nueva]
-es,dsgw,277,[Para poder utilizar esta función, el archivo dsgw.conf debe contener una definición de dirmgr]
-es,dsgw,278,[La directiva "vcard-property" necesita tres o cuatro argumentos\n]
-es,dsgw,279,[La sintaxis de la propiedad VCard debe ser "cis" o "mls"\n]
-es,dsgw,280,[No se han encontrado entradas.\n%2$s]
-es,dsgw,281,[No se han encontrado entradas en las que %2$s %3$s '%4$s'.\n]
-es,dsgw,282,[Se ha realizado la búsqueda, pero no se ha encontrado ninguna entrada.\n%2$s]
-es,dsgw,283,[Se ha realizado la búsqueda, pero no se ha encontrado ninguna entrada en la que %2$s %3$s %4$s'.\n]
-es,dsgw,284,[Se ha encontrado 1 entrada.\n%2$s]
-es,dsgw,285,[Se ha encontrado 1 entrada en la que %2$s %3$s '%4$s'.\n]
-es,dsgw,286,[Se ha realizado la búsqueda y se ha encontrado 1 entrada.\n%2$s]
-es,dsgw,287,[Se ha realizado la búsqueda y se ha encontrado 1 entrada en la que %2$s %3$s '%4$s'.\n]
-es,dsgw,288,[Se han encontrado %1$li entradas.\n%2$s]
-es,dsgw,289,[Se han encontrado %1$li entradas en las que %2$s %3$s '%4$s'.\n]
-es,dsgw,290,[Se ha realizado la búsqueda y se han encontrado %1$li entradas.\n%2$s]
-es,dsgw,291,[Se ha realizado la búsqueda y se han encontrado %1$li entradas en las que %2$s %3$s '%4$s'.\n]
-es,dsgw,292,[el filtro LDAP es]
-es,dsgw,293,[El servidor no ha encontrado la entrada que usted ha utilizado el autentificarse. Es posible que se haya eliminado la entrada o que alguien le haya cambiado el nombre. Intente volver a realizar la autentificación.]
-es,dsgw,294,[La sintaxis de la contraseña nueva no es válida.\n]
-es,dsgw,295,[La contraseña nueva ya existe en el historial de contraseñas.\n]
-es,dsgw,296,[Ha sobrepasado el límite de reintentos de contraseña. Consulte con el administrador del sistema.\n]
-es,dsgw,297,[Ha sobrepasado el límite de reintentos de contraseña. Vuelva a intentarlo más adelante.\n]
-es,dsgw,298,[La contraseña ha caducado. Consulte con el administrador del sistema para restablecer la contraseña.\n]
-es,frame,-1,[$DBT: frame in DB file v1 $]
-es,frame,1,[<TITLE>No se ha encontrado</TITLE><H1>No se ha encontrado</H1> El objeto solicitado no existe en este servidor. El vínculo que ha seguido no está actualizado o no es exacto, o bien el servidor ha recibido instrucciones para no permitirle el acceso.]
-es,frame,2,[Informe al administrador de la oficina acerca de la <A HREF="%s">página que contiene la referencia</A>.]
-es,frame,3,[El navegador ha enviado una solicitud que este servidor proxy no ha entendido.]
-es,frame,4,[Es necesario disponer de la autorización adecuada para la administración de\neste servidor proxy. El navegador no puede conceder la autorización,\no la autorización no se ha podido realizar.]
-es,frame,5,[Es necesaria la autentificación de nombre de usuario para utilizar\neste servidor proxy. El navegador no puede conceder la autorización,\no la autorización no se ha podido realizar.]
-es,frame,6,[La configuración de control de acceso al servidor proxy deniega\nel acceso al objeto solicitado mediante este servidor proxy.]
-es,frame,7,[El servidor proxy ha encontrado un error interno que le impide\natender su solicitud. Lo más probable es que se deba a una configuración\nerrónea. Solicite al administrador que examine el registro de errores del servidor proxy.]
-es,frame,8,[Este servidor proxy no utiliza el método solicitado.]
-es,frame,9,[Se ha producido un error en el servidor proxy.]
-es,frame,10,[El navegador ha enviado una consulta que este servidor no ha entendido.]
-es,frame,11,[Es necesario disponer de la autorización adecuada para acceder a esta zona. El navegador no puede conceder la autorización o la autorización no se ha podido realizar]
-es,frame,12,[Su cliente no está autorizado a acceder al objeto que ha solicitado.]
-es,frame,13,[El servidor ha encontrado un error interno que le impide atender su solicitud. Lo más probable es que se deba a una configuración errónea. Solicite al administrador que examine el registro de errores del servidor.]
-es,frame,14,[Este servidor no utiliza el método solicitado.]
-es,frame,15,[Se ha producido un error.]
-es,frame,16,[El navegador ha enviado un mensaje que este servidor no ha entendido.]
-es,frame,17,[<HTML><HEAD><TITLE>%s</TITLE></HEAD><BODY><H1>%s</H1>\nEste documento ha sido trasladado a otra <a href="%s">ubicación</a>. Actualice los documentos y listas de acceso con los nuevos datos.</BODY></HTML>]
-es,frame,18,[<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=iso-8859-1"><META HTTP-EQUIV="Content-Language" CONTENT="es"><TITLE>%s</TITLE></HEAD>\n<BODY><H1>%s</H1>\n%s\n</BODY></HTML>]
-es,frame,19,[process-uri-objects]
-es,frame,20,[cannot find template %s]
-es,frame,21,[process-uri-objects]
-es,frame,22,[no partial path after object processing]
-es,frame,23,[find-service]
-es,frame,24,[invalid shexp %s]
-es,frame,25,[find-service]
-es,frame,26,[invalid shexp %s]
-es,frame,27,[handle-processed]
-es,frame,28,[no way to service request for %s]
-es,frame,29,[finish-socks-request]
-es,frame,30,[close failed (%s), csd=%d]
-es,frame,31,[This beta software has expired.\n]
-es,frame,32,[mr_accept(%d)]
-es,frame,33,[Error issuing read on accept socket]
-es,frame,34,[acb_accept_connection(%d)]
-es,frame,35,[Error getting accept socket (%d)]
-es,frame,36,[Error in accept! (%d, %s)]
-es,frame,37,[Error creating new accept request]
-es,frame,38,[accepted connection: %d (NSPR %d)]
-es,frame,39,[Error creating new session structure]
-es,frame,40,[accel_read_request()]
-es,frame,41,[Error allocating request read buffer]
-es,frame,42,[Error issuing async read request]
-es,frame,43,[acb_read_request(%d, bytes %d)]
-es,frame,44,[acb_read_req(1 session = %d)]
-es,frame,45,[Error reading request (%d, %s)]
-es,frame,46,[Client aborted connection]
-es,frame,47,[Error reading request]
-es,frame,48,[Error creating new request]
-es,frame,49,[error occurred, closing %d, io was for %d]
-es,frame,50,[accel_async_scan_headers()]
-es,frame,51,[out of memory: accel_async_scan_headers]
-es,frame,52,[out of memory: accel_async_scan_headers]
-es,frame,53,[Error during async read (%d, %s)]
-es,frame,54,[scan-headers reports: line too long]
-es,frame,55,[scan-headers reports: too many headers]
-es,frame,56,[Error reading headers]
-es,frame,57,[scan-headers reports: header missing terminator (an empty line)]
-es,frame,58,[scan-headers reports: header was empty]
-es,frame,59,[nombre sin valor: se ha recibido la línea "%s"]
-es,frame,60,[accel_send_plain_file()]
-es,frame,61,[accel_send_plain_file() - found request %d]
-es,frame,62,[Parse headers lost the URI!]
-es,frame,63,[accel_send_plain_file() - found uri %s]
-es,frame,64,[accel_send_plain_file() - found in cache?]
-es,frame,65,[malloc died!]
-es,frame,66,[Error writing back file\n]
-es,frame,67,[acb_send_plain_file(%d)]
-es,frame,68,[Error writing in acb_send_plain_file (%d, %s)]
-es,frame,69,[acb_close_connection(%d)]
-es,frame,70,[Errored IO in acb_close_connection (%d, %s)]
-es,frame,71,[Unable to close socket %d]
-es,frame,72,[accel-cache-insert: Error allocating entry]
-es,frame,73,[cache-init: server cache disabled]
-es,frame,74,[accel_file_cache: Error initializing file cache]
-es,frame,75,[accel_file_cache: Error creating cache]
-es,frame,76,[accel_file_cache_init: CacheHashSize < %d, using %d]
-es,frame,77,[accel_file_cache_init: CacheHashSize > %d, using %d]
-es,frame,78,[accel_file_cache_init: MaxNumberOfCachedFiles < %d, using %d]
-es,frame,79,[accel_file_cache_init: MaxNumberOfCachedFiles > %d, using %d]
-es,frame,80,[accel_file_cache_init: MaxNumberOfOpenCachedFiles < %d, using %d]
-es,frame,81,[accel_file_cache_init: MaxNumberOfOpenCachedFiles > %d, using %d]
-es,frame,82,[accel_file_cache: Error initializing file cache]
-es,frame,83,[file-cache: enabled = %s ]
-es,frame,84,[on]
-es,frame,85,[off]
-es,frame,86,[file-cache: MaxNumberOfCachedFiles %d (0x%x)]
-es,frame,87,[file-cache: CacheHashSize %d (0x%x)]
-es,frame,88,[file-cache: MaxNumberOfOpenCachedFiles %d (0x%x)]
-es,frame,89,[accel-cache-insert: Error allocating entry]
-es,frame,90,[file-cache-cleanup: munmap failed (%s)]
-es,frame,91,[file-cache-cleanup: found mmapped file \non system without mmap]
-es,frame,92,[file_cache_init: MaxTotalCachedFileSize < %d, using %d]
-es,frame,93,[file_cache_init: MaxTotalCachedFileSize > %d, using %d]
-es,frame,94,[file cache using mmap flags 0x%x]
-es,frame,95,[file cache using mmap prots 0x%x]
-es,frame,96,[file-cache-init: could not create lock]
-es,frame,97,[file-cache: unable to create temporary directory %s.\n]
-es,frame,98,[file-cache: unable to create temporary directory %s.\n]
-es,frame,99,[file-cache: GetTempPath() Cannot find temp directory to store file!]
-es,frame,100,[file-cache-init: set max cached file size to %d]
-es,frame,101,[file-cache-init: could not create lock]
-es,frame,102,[file_cache_destroy()]
-es,frame,103,[file-cache: Unable to get temp file name. Error %s]
-es,frame,104,[file-cache: Unable to get temp file name. Error %s]
-es,frame,105,[file-cache-insert: Error allocating entry]
-es,frame,106,[file-cache-create: Error opening file %s (%s)]
-es,frame,107,[file-cache-create: Error stat()ing file %s (%s)]
-es,frame,108,[file-cache-create: Error mmap()ing file %s (%s)]
-es,frame,109,[file-cache-create: malloc failure]
-es,frame,110,[file-cache-create: error case failed to munmap(%d, %d) (%s)]
-es,frame,111,[file-cache-valid: cannot stat %s]
-es,frame,112,[dir change: invalidating %s (%d)]
-es,frame,113,[file-cache: asynchronous file change notification failed.]
-es,frame,114,[dir change: offset %d, action %d, len %d, name %s]
-es,frame,115,[unable to check async file status]
-es,frame,116,[ReadDirectoryChangesW failure- unable to continue watching %s. Error is %s]
-es,frame,117,[file-cache-add-watch failure- unable to open directory %s. Error %s]
-es,frame,118,[ReadDirectoryChangesW failure- unable to start watching %s. Error %s]
-es,frame,119,[func_exec]
-es,frame,120,[no handler function given for directive]
-es,frame,121,[func_exec]
-es,frame,122,[cannot find function named %s]
-es,frame,123,[handle-request]
-es,frame,124,[method without URI]
-es,frame,125,[http-parse-request]
-es,frame,126,[while scanning HTTP headers, %s]
-es,frame,127,[handle-request]
-es,frame,128,[read from %s failed, error is %s]
-es,frame,129,[handle-request]
-es,frame,130,[request too long]
-es,frame,131,[start-http-response]
-es,frame,132,[write failed (%s)]
-es,frame,133,[start-http-response]
-es,frame,134,[write failed (%s)]
-es,frame,135,[http-status]
-es,frame,136,[%d is not a valid HTTP status code]
-es,frame,137,[finish-request]
-es,frame,138,[close failed (%s)]
-es,frame,139,[Unable to close socket for writing]
-es,frame,140,[os has %d objects]
-es,frame,141,[obj %d has no hash table at %d]
-es,frame,142,[obj %d has no param]
-es,frame,143,[obj %d name %s value %s]
-es,frame,144,[.....directives %d.......]
-es,frame,145,[.....directive %d]
-es,frame,146,[.......instance %d]
-es,frame,147,[...........param name %s value %s]
-es,frame,148,[ClearConfigurationParameters:RegCreateKey %s]
-es,frame,149,[ClearConfigurationParameters:RegEnumKey %s failed]
-es,frame,150,[obj.conf line %d: error in filter file "%s" at line %d: %s]
-es,frame,151,[obj.conf line %d: error in filter file "%s" at line %d: %s]
-es,frame,152,[Unable to allocate Subject property list.\n]
-es,frame,153,[Unable to set session ptr in Subject property list - error=%d\n]
-es,frame,154,[Unable to set request ptr in Subject property list - error=%d\n]
-es,frame,155,[file-cache-valid: cannot stat %s]
-es,frame,156,[file-cache-create: Error stat()ing file %s (%s)]
-es,httpdaemon,-1,[$DBT: httpdaemon in DB file v1 $]
-es,httpdaemon,1,[Error in ConvertThreadToFiber]
-es,httpdaemon,2,[Error in ConvertThreadToFiber]
-es,httpdaemon,3,[Error in md_start_system]
-es,httpdaemon,4,[Error in CreateFiber - idlefiber]
-es,httpdaemon,5,[Error in GetQueuedCompletionStatus]
-es,httpdaemon,6,[Error creating completion port]
-es,httpdaemon,7,[Could not SetHandleNonInheritable (%s)]
-es,httpdaemon,8,[Error accept/read new conn]
-es,httpdaemon,9,[Error in Respond()]
-es,httpdaemon,10,[Error in RespondCompleted()]
-es,httpdaemon,11,[daemon: unable to fork new process (%s)\n]
-es,httpdaemon,12,[daemon: setsid failed (%s)\n]
-es,httpdaemon,13,[daemon: can't log pid to %s (%s)\n]
-es,httpdaemon,14,[warning: could not set group id to %d (%s)\n]
-es,httpdaemon,15,[warning: could not set user id to %d (%s)\n]
-es,httpdaemon,16,[warning: daemon is running as super-user\n]
-es,httpdaemon,17,[could not determine current user name\n]
-es,httpdaemon,18,[error: chroot to %s failed (%s)\n]
-es,httpdaemon,19,[WARNING! netscape executable and library have different versions.\n]
-es,httpdaemon,20,[startup: listening to %s://%s, port %d as %s\n]
-es,httpdaemon,21,[startup: listening to %s://%s, port %d as %s\n]
-es,httpdaemon,22,[seminit failed (%s)\n]
-es,httpdaemon,23,[Using single threaded accepts.]
-es,httpdaemon,24,[Using multi threaded accepts.]
-es,httpdaemon,25,[Using partial single threaded accepts.]
-es,httpdaemon,26,[This machine has %d processors.]
-es,httpdaemon,27,[Error calling thr_seconcurrency(%d)- (%s)]
-es,httpdaemon,28,[Set conncurrency to %d.]
-es,httpdaemon,29,[can't fork new process (%s)]
-es,httpdaemon,30,[This beta software has expired.\n]
-es,httpdaemon,31,[can't create IPC pipe (%s)]
-es,httpdaemon,32,[write to wakeup pipe failed (%s)]
-es,httpdaemon,33,[select thread miss]
-es,httpdaemon,34,[startup failure: could not bind to port %d (%s)\n]
-es,httpdaemon,35,[startup failure: could not bind to port %d, IP address %s (%s)\n]
-es,libaccess,-1,[$DBT: libaccess in DB file v1 $]
-es,libaccess,1,[basic-ncsa]
-es,libaccess,2,[cannot open database %s]
-es,libaccess,3,[basic-ncsa]
-es,libaccess,4,[user %s password did not match database %s]
-es,libaccess,5,[basic-ncsa]
-es,libaccess,6,[cannot open connection to LDAP server on %s:%d]
-es,libaccess,7,[basic-ncsa]
-es,libaccess,8,[user %s password did not match LDAP on %s:%d]
-es,libaccess,9,[acl-state]
-es,libaccess,10,[missing realm]
-es,libaccess,11,[Unable to allocate ACL List Hash\n]
-es,libaccess,12,[ACLEvalBuildContext unable to PERM_MALLOC cache structure\n]
-es,libaccess,13,[ACLEvalBuildContext unable to create hash table\n]
-es,libaccess,14,[ACLEvalBuildContext unable to allocate ACE Entry\n]
-es,libaccess,15,[ACLEvalBuildContext unable to allocate ACE entry\n]
-es,libaccess,16,[ACLEvalBuildContext unable to allocate Boundary Entry\n]
-es,libaccess,17,[ACLEvalBuildContext failed.\n]
-es,libaccess,18,[ACL_EvalTestRights: an interim, absolute non-allow value was encountered. right=%s, value=%d\n]
-es,libaccess,19,[LASDnsBuild unable to allocate hash table header\n]
-es,libaccess,20,[LASDnsBuild unable to add key %s\n]
-es,libaccess,21,[LASDnsBuild unable to add key %s\n]
-es,libaccess,22,[LASDnsBuild unable to add key %s\n]
-es,libaccess,23,[LASDnsBuild unable to add key %s\n]
-es,libaccess,24,[LASDnsBuild unable to add key %s\n]
-es,libaccess,25,[LAS DNS build received request for attribute %s\n]
-es,libaccess,26,[LASDnsEval - illegal comparator %s\n]
-es,libaccess,27,[LASDnsEval unable to allocate Context struct\n\n]
-es,libaccess,28,[LASDnsEval unable to get session address %d\n]
-es,libaccess,29,[LASDnsEval unable to get DNS - error=%s\n]
-es,libaccess,30,[LAS Group Eval received request for attribute %s\n]
-es,libaccess,31,[LASGroupEval - illegal comparator %s\n]
-es,libaccess,32,[LASGroupEval - ran out of memory\n]
-es,libaccess,33,[LASGroupEval unable to get session address %d\n]
-es,libaccess,34,[LASGroupEval unable to get session address %d\n]
-es,libaccess,35,[LASGroupEval - couldn't locate getter for auth-user\n]
-es,libaccess,36,[LASGroupEval - Attribute getter for auth-user failed\n]
-es,libaccess,37,[LASGroupEval - Attribute getter didn't set auth-user\n]
-es,libaccess,38,[Check group membership of user "%s" for group "%s"\n]
-es,libaccess,39,[LDAPU_SUCCESS for group "%s"\n]
-es,libaccess,40,[LDAPU_FAILED for group "%s"\n]
-es,libaccess,41,[LAS_EVAL_FALSE\n]
-es,libaccess,42,[LAS_EVAL_TRUE\n]
-es,libaccess,43,[LASIpTreeAlloc - no memory\n]
-es,libaccess,44,[IP LAS unable to allocate tree node\n]
-es,libaccess,45,[IP LAS unable to allocate tree node\n]
-es,libaccess,46,[LAS IP build received request for attribute %s\n]
-es,libaccess,47,[LASIpEval - illegal comparator %s\n]
-es,libaccess,48,[LASIpEval unable to get session address - error=%s\n]
-es,libaccess,49,[LASIpEval unable to allocate Context struct\n\n]
-es,libaccess,50,[LASIpEval - reach 32 bits without conclusion value=%s]
-es,libaccess,51,[LAS Program Eval received request for attribute %s\n]
-es,libaccess,52,[LASProgramEval - illegal comparator %s\n]
-es,libaccess,53,[LASProgram unable to get session address %d\n]
-es,libaccess,54,[bin]
-es,libaccess,55,[LASProgramEval: request not of type admin or bin, passing.\n]
-es,libaccess,56,[LASProgramEval: check if program %s matches pattern %s.\n]
-es,libaccess,57,[LASProgramEval: Invalid wildcard expression %s.\n]
-es,libaccess,58,[LAS_EVAL_FALSE\n]
-es,libaccess,59,[LAS_EVAL_TRUE\n]
-es,libaccess,60,[Unexpected attribute in dayOfWeek - %s\n]
-es,libaccess,61,[Illegal comparator for dayOfWeek - %s\n]
-es,libaccess,62,[Unexpected attribute in timeOfDay - %s\n]
-es,libaccess,63,[LAS User Eval received request for attribute %s\n]
-es,libaccess,64,[LASUserEval - illegal comparator %s\n]
-es,libaccess,65,[LASUserEval - ran out of memory\n]
-es,libaccess,66,[LASUserEval unable to get session address %d\n]
-es,libaccess,67,[LASUserEval unable to get session address %d\n]
-es,libaccess,68,[LASGroupEval - couldn't locate getter for auth-user\n]
-es,libaccess,69,[LASGroupEval - Attribute getter for auth-user failed\n]
-es,libaccess,70,[LASGroupEval - Attribute getter didn't set auth-user\n]
-es,libaccess,71,[Check if uid == user (i.e. check "%s" == "%s)"\n]
-es,libaccess,72,[SUCCESS for user "%s"\n]
-es,libaccess,73,[FAILED for user "%s"\n]
-es,libaccess,74,[LAS_EVAL_FALSE\n]
-es,libaccess,75,[LAS_EVAL_TRUE\n]
-es,libaccess,76,[]
-es,libaccess,77,[LASProgram unable to get request address - error=%s]
-es,libaccess,78,[LASProgram rejecting request for program %s from pattern %s]
-es,libaccess,79,[ACL_CacheFlush: unable to parse file "%s"\n]
-es,libaccess,80,[ACL_CacheFlush: unable to concatenate ACL list "%s"\n]
-es,libaccess,81,[ACL_CacheFlush: unable to open and process the magnus file "%s"\n]
-es,libaccess,82,[Illegal comparator for timeOfDay - %s\n]
-es,libaccess,83,[ACL_EvalBuildContext unable to create hash table\n]
-es,libaccess,84,[ACL_EvalBuildContext unable to PERM_CALLOC cache structure\n]
-es,libaccess,85,[ACL_EvalBuildContext unable to allocate ACE entry\n]
-es,libaccess,86,[ACL_EvalBuildContext unable to allocate auth pointer array\n]
-es,libaccess,87,[ACL_EvalBuildContext unable to allocate auth plist\n]
-es,libaccess,88,[ACL_EvalTestRights: an interim, absolute non-allow value was encountered. right=%s, value=%s\n]
-es,libaccess,89,[ACL_INTEvalTestRights: call to ACL_EvalBuildContext returned failure status\n]
-es,libaccess,90,[ACL_ModuleRegister: module name is missing\n]
-es,libaccess,91,[ACL_ModuleRegister: call to module init function returned a failed status\n]
-es,libaccess,92,[ACL_GetAttribute: couldn't determine method for %s\n]
-es,libaccess,93,[ACL_GetAttribute: couldn't locate getter for %s]
-es,libaccess,94,[ACL_GetAttribute: attr getter failed to get %s]
-es,libaccess,95,[ACL_GetAttribute: attr getter failed to get %s]
-es,libaccess,96,[ACL_GetAttribute: All attribute getters declined for attr %s]
-es,libaccess,97,[ACL_DatabaseRegister: dbtype for database "%s" is not defined yet!]
-es,libaccess,98,[ACL_DatabaseRegister: database name is missing]
-es,libaccess,99,[Error reading the DB Map File: %s. Reason: %s]
-es,libaccess,100,[URL is missing for database %s]
-es,libaccess,101,[Invalid property value pair for database %s]
-es,libaccess,102,["default" database must be an LDAP database]
-es,libaccess,103,[Multiple "default" databases are being registered]
-es,libaccess,104,["default" LDAP database must be registered]
-es,libaccess,105,[LASGroupEval unable to get database name - error= %s]
-es,libaccess,106,[received invalid program expression %s]
-es,libaccess,107,[parse_ldap_url: database url is missing]
-es,libaccess,108,[parse_ldap_url: database name is missing]
-es,libaccess,109,[parse_ldap_url: error in parsing ldap url. Reason: %s]
-es,libaccess,110,[ldap password check: unable to get database name - error=%s]
-es,libaccess,111,[ldap password check: unable to get parsed database %s]
-es,libaccess,112,[ldap password check: couldn't initialize connection to LDAP. Reason: %s]
-es,libaccess,113,[ldap password check: LDAP error: "%s"]
-es,libaccess,114,[get_user_ismember_ldap unable to get database name - error=%s]
-es,libaccess,115,[get_user_ismember_ldap unable to get parsed database %s]
-es,libaccess,116,[ldap password check: couldn't initialize connection to LDAP. Reason: %s]
-es,libaccess,117,[get_user_ismember_ldap: group %s does not exist]
-es,libaccess,118,[get_user_ismember_ldap: LDAP error: "%s"]
-es,libaccess,119,[ACL_LDAPDatabaseHandle: %s is not a registered database]
-es,libaccess,120,[ACL_LDAPDatabaseHandle: %s is not an LDAP database]
-es,libaccess,121,[ACL_LDAPDatabaseHandle: out of memory]
-es,libaccess,122,[ACL_LDAPDatabaseHandle: couldn't initialize connection to LDAP. Reason: %s]
-es,libaccess,123,[ACL_LDAPDatabaseHandle: couldn't bind to LDAP server. Reason: %s]
-es,libaccess,124,[insufficient dynamic memory]
-es,libaccess,125,[error opening file, %s: %s]
-es,libaccess,126,[duplicate definition of %s]
-es,libaccess,127,[file %s, line %s: duplicate definition of %s]
-es,libaccess,128,[file %s, line %s: syntax error]
-es,libaccess,129,[file %s, line %s: %s is undefined]
-es,libaccess,130,[in acl %s, %s %s is undefined]
-es,libaccess,131,[database %s: error accessing %s]
-es,libaccess,132,[%s]
-es,libaccess,133,[file %s, line %s: invalid syntax]
-es,libaccess,134,[file %s, line %s: syntax error at "%s"]
-es,libaccess,135,[realm %s is not defined]
-es,libaccess,136,[error code = %d]
-es,libaccess,137,[internal ACL error]
-es,libaccess,138,[invalid argument]
-es,libaccess,139,[ACL_DatabaseRegister: dbtype for database "%s" is not defined yet!]
-es,libaccess,140,[couldn't determine dbtype from: %s]
-es,libaccess,141,[Failed to register database %s]
-es,libaccess,142,[ACL call returned failed status]
-es,libaccess,143,[file %s: ACL IO error - %s]
-es,libaccess,144,[acl_user_exists: memoria agotada]
-es,libaccess,145,[acl_user_exists: ya no existe el usuario]
-es,libaccess,146,[acl_user_exists: error de plist]
-es,libadmin,-1,[$DBT: libadmin in DB file v1 $]
-es,libadmin,1,[ Help ]
-es,libadmin,2,[ OK ]
-es,libadmin,3,[ Reset ]
-es,libadmin,4,[ Done ]
-es,libadmin,5,[ Cancel ]
-es,libir,-1,[$DBT: libadmin in DB file v1 $]
-es,libir,1,[An I/O error occurred before all form data could be read.]
diff --git a/l10n/dirserv/fr/ns-slapd.txt b/l10n/dirserv/fr/ns-slapd.txt
deleted file mode 100644
index 5485a622..00000000
--- a/l10n/dirserv/fr/ns-slapd.txt
+++ /dev/null
@@ -1,939 +0,0 @@
-#
-# BEGIN COPYRIGHT BLOCK
-# This Program is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; version 2 of the License.
-#
-# This Program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place, Suite 330, Boston, MA 02111-1307 USA.
-#
-# In addition, as a special exception, Red Hat, Inc. gives You the additional
-# right to link the code of this Program with code not covered under the GNU
-# General Public License ("Non-GPL Code") and to distribute linked combinations
-# including the two, subject to the limitations in this paragraph. Non-GPL Code
-# permitted under this exception must only link to the code of this Program
-# through those well defined interfaces identified in the file named EXCEPTION
-# found in the source code files (the "Approved Interfaces"). The files of
-# Non-GPL Code may instantiate templates or use macros or inline functions from
-# the Approved Interfaces without causing the resulting work to be covered by
-# the GNU General Public License. Only Red Hat, Inc. may make changes or
-# additions to the list of Approved Interfaces. You must obey the GNU General
-# Public License in all respects for all of the Program code and other code used
-# in conjunction with the Program except the Non-GPL Code covered by this
-# exception. If you modify this file, you may extend this exception to your
-# version of the file, but you are not obligated to do so. If you do not wish to
-# provide this exception without modification, you must delete this exception
-# statement from your version and license this file solely under the GPL without
-# exception.
-#
-#
-# Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
-# Copyright (C) 2005 Red Hat, Inc.
-# All rights reserved.
-# END COPYRIGHT BLOCK
-#
-/**************************************************************************/
-/* The copyright notice(s) in this Source Code does not indicate actual */
-/* or intended publication of this Source Code. */
-/**************************************************************************/
-
-/* This text file was generated by program dblink */
-
-$Revision: 1.4 $
-$Log: ns-slapd.txt,v $
-Revision 1.4 2005/04/19 22:06:51 nkinder
-Fixed licensing typo
-
-Revision 1.3 2005/04/15 22:39:18 nkinder
-155068 - Added license to source files
-
-Revision 1.2 2005/02/28 23:37:40 nkinder
-149951 - Updated source code copyrights
-
-Revision 1.1.1.1 2005/01/21 00:40:48 cvsadm
-Moving NSCP Directory Server from DirectoryBranch to TRUNK, initial drop. (foxworth)
-
-Revision 1.2.10.5 2003/09/22 19:36:42 ulfw
-Update copyright years from 2001 to 2001-2003
-
-Revision 1.2.10.4 2001/11/03 01:07:03 richm
-XXX use new copyright XXX
-
-Revision 1.2.10.3 2001/09/20 16:39:16 richm
-removed 8 bit copyright character
-
-Revision 1.2.10.3 2001/09/18 11:48:16 rmarco
-Remove copyright caracter from copyright
-
-Revision 1.2.10.2 2001/02/13 09:59:55 rmarco
-Copyrights
-
-Revision 1.2.10.1 1998/10/10 02:14:08 ggood
-Copy from Directory40RtmBranchpoint to DirectoryBranch
-
-Revision 1.2.2.3.6.1 1998/04/04 23:16:54 mcs
-merge changes made on directory31_rtm_branch into server4_directory_branch
-
-Revision 1.2.2.3.2.1 1998/02/24 05:51:56 noriko
-Synched with server3_i18npkg_branch
-
-Revision 1.1.2.5 1997/12/31 00:28:47 werudge
-UTF8 Encoded from fr/ns-slapd.txt.iso8859 : 1.1.2.6
-Based on en/ns-slapd.txt : 1.1.2.3
-
-Revision 1.1.2.6 1997/12/31 00:23:39 werudge
-Remove \n from dsgw,198 to fix JavaScript problem
-
-Revision 1.1.2.5 1997/12/19 02:03:54 werudge
-Based on en/ns-slapd.txt : 1.1.2.3
-daily 971113.1 SOLARIS-export-optimize-normal-slapd
-$EndLog$
-
-$StartStringData$
-
-fr,base,-1,[$DBT: base in DB file v1 $]
-fr,base,1,[mémoire insuffisante pour créer la table de hachage]
-fr,base,2,[mémoire insuffisante pour créer la table de hachage ]
-fr,base,3,[cache_destroy : les tables du cache semblent corrompues.]
-fr,base,4,[impossible d´allouer l´entrée de hachage]
-fr,base,5,[cache_insert : impossible de créer l´entrée de cache]
-fr,base,6,[HTTP/1.0 200 OK\nContent-type: text/html\n\n]
-fr,base,7,[<H2>Rapport d'état du cache Netscape\n(Netscape cache status report)</H2>\n]
-fr,base,8,[Aucun cache sur le système (No caches on system)<P>]
-fr,base,9,[<H2>cache %s</H2>\n]
-fr,base,10,[Rapport de connexions au cache: %d/%d (%f)\n(Cache hit ratio: as shown)</P>\n</P>\n]
-fr,base,11,[Taille du cache: %d/%d\n(Cache size: as shown)</P>\n</P>\n]
-fr,base,12,[Taille de la table de hachage: %d\n(Hash table size: as shown)</P>\n</P>\n]
-fr,base,13,[mru : %d</P>\nlru : %d</P>\n]
-fr,base,14,[<UL><TABLE BORDER=4> <TH>Compartiment (Bucket)</TH> <TH>Adresse (Address)</TH> <TH>Clef (Key)</TH> <TH>Nombre d'accès (Access Count)</TH> <TH>Supprimer (Delete)</TH> <TH>Suivant (Next)</TH> <TH>LRU</TH> <TH>MRU</TH> <TH>Données (Data)</TH>\n]
-fr,base,15,[munmap failed (%s)]
-fr,base,16,[munmap failed (%s)]
-fr,base,17,[close failed (%s)]
-fr,base,18,[daemon: unable to fork new process (%s)\n]
-fr,base,19,[daemon: setsid failed (%s)\n]
-fr,base,20,[daemon: can't log pid to %s (%s)\n]
-fr,base,21,[warning: could not set group id to %d (%s)\n]
-fr,base,22,[warning: could not set user id to %d (%s)\n]
-fr,base,23,[warning: daemon is running as super-user\n]
-fr,base,24,[could not determine current user name\n]
-fr,base,25,[error: chroot to %s failed (%s)\n]
-fr,base,27,[, address %s]
-fr,base,28,[warning: statistics disabled (%s)\n]
-fr,base,29,[security handshake timed out for pid %d]
-fr,base,30,[warning: statistics disabled (%s)\n]
-fr,base,31,[secure handshake failed (code %d)\n]
-fr,base,32,[accept failed (%s)]
-fr,base,33,[warning: statistics disabled (%s)\n]
-fr,base,34,[select thread miss]
-fr,base,35,[keepalive worker awoken with no work to do]
-fr,base,36,[could not create new thread: %d (%s)]
-fr,base,37,[wait for sema succeeded, but nothing to dequeue]
-fr,base,38,[queue-sema creation failure]
-fr,base,39,[error getting processor info for processor %d]
-fr,base,40,[Error binding to processor %d]
-fr,base,41,[bound process %d to processor %d]
-fr,base,42,[Netscape server is not explicitly binding to any processors.]
-fr,base,43,[cache monitor exited]
-fr,base,44,[cache batch update daemon exited]
-fr,base,45,[Using single threaded accepts.]
-fr,base,46,[Using multi threaded accepts.]
-fr,base,47,[Using partial single threaded accepts.]
-fr,base,48,[This machine has %d processors.]
-fr,base,49,[Error calling thr_seconcurrency(%d)- (%s)]
-fr,base,50,[Set conncurrency to %d.]
-fr,base,51,[WARNING! netscape executable and library have different versions.\n]
-fr,base,54,[seminit failed (%s)\n]
-fr,base,55,[This beta software has expired.\n]
-fr,base,56,[Cache monitor respawned]
-fr,base,57,[Cache batch update daemon respawned]
-fr,base,58,[can't find empty statistics slot]
-fr,base,59,[can't fork new process (%s)]
-fr,base,60,[assert failed! %s\n]
-fr,base,61,[mr_table_init()]
-fr,base,62,[malloc failed]
-fr,base,63,[malloc failed!]
-fr,base,64,[mr_add_io(%d, type %d, file %d)]
-fr,base,65,[mr_add_io - stage 1]
-fr,base,66,[mr_add_io - stage 2]
-fr,base,67,[mr_add_io found invalid IO type %d]
-fr,base,68,[mr_add_io - adding timeout]
-fr,base,69,[Out of memory!\n]
-fr,base,70,[done with mr_add_io]
-fr,base,71,[mr_del_io(%d, type %d, file %d)]
-fr,base,72,[mr_del_io found invalid IO type %d]
-fr,base,73,[mr_lookup_io(%d)]
-fr,base,74,[mr_async_io(%d, %d bytes, file %d)]
-fr,base,75,[malloc failure adding async IO]
-fr,base,76,[Error adding async io!]
-fr,base,77,[Cannot seek for read!]
-fr,base,78,[read failure! (%d, %s)]
-fr,base,79,[do_read read %d bytes for file %d]
-fr,base,80,[Cannot seek for write!]
-fr,base,81,[writev failure! (%d, %s)]
-fr,base,82,[write failure! (%d, %s)]
-fr,base,83,[do_write wrote %d bytes for file %d]
-fr,base,84,[do_timeout(mrp %d)]
-fr,base,85,[do_timeout: found IO (timer=%d, time=%d)]
-fr,base,86,[error deleting io]
-fr,base,87,[timeout callback failure for %d\n]
-fr,base,88,[mr_get_event(%d) - outstanding io %d]
-fr,base,89,[mr_get_event: Waiting for reads on FD:]
-fr,base,90,[mr_get_event: Waiting for writes on FD:]
-fr,base,91,[ %d]
-fr,base,92,[ %d]
-fr,base,93,[mr_get_event set no timeout]
-fr,base,94,[mr_get_event set timeout to: %d.%d sec]
-fr,base,95,[error in select (%d, %s)]
-fr,base,96,[mr_get_event() - select found %d]
-fr,base,97,[error looking up IO fd %d]
-fr,base,98,[read failed for fd %d]
-fr,base,99,[error deleting io]
-fr,base,100,[callback failure for %d\n]
-fr,base,101,[error looking up IO fd %d]
-fr,base,102,[writing: header len %d, writelen %d, total %d]
-fr,base,103,[write failed for fd %d]
-fr,base,104,[error deleting io]
-fr,base,105,[callback failure for %d\n]
-fr,base,106,[Error creating dns cache]
-fr,base,107,[dns_cache_init: hash_size <= 0, using %d]
-fr,base,108,[dns_cache_init: cache-size <= %d, using %d]
-fr,base,109,[dns_cache_init: cache-size is %d is too large, using %d.]
-fr,base,110,[dns_cache_init: expire_time <= 0, using %d]
-fr,base,111,[dns_cache_init: expire is %d is too large, using %d seconds.]
-fr,base,112,[Error creating dns cache]
-fr,base,113,[dns-cache-insert: Error allocating entry]
-fr,base,114,[dns-cache-insert: malloc failure]
-fr,base,115,[successful server startup]
-fr,base,116,[%s B%s]
-fr,base,117,[Netscape executable and shared library have different versions]
-fr,base,118,[ executable version is %s]
-fr,base,119,[ shared library version is %s]
-fr,base,120,[error reporting shutting down]
-fr,base,121,[warning]
-fr,base,122,[config]
-fr,base,123,[security]
-fr,base,124,[failure]
-fr,base,125,[catastrophe]
-fr,base,126,[info]
-fr,base,127,[verbose]
-fr,base,128,[event_handler:Failed to wait on events %s]
-fr,base,129,[could not wait on resume event event (%s)]
-fr,base,130,[dlopen of %s failed (%s)]
-fr,base,131,[dlopen of %s failed (%s)]
-fr,base,132,[The server is terminating due to an error. Check the event viewer for the error message. SERVER EXITING!]
-fr,base,133,[Terminating the server %s]
-fr,base,134,[kill_server:cannot open server event %s]
-fr,base,135,[kill_server:cannot set server event %s]
-fr,base,136,[error: could not get socket (%s)\n]
-fr,base,137,[error: could not set socket option (%s)\n]
-fr,base,138,[Terminating Service:error: could not bind to address %s port %d (%s)\n]
-fr,base,139,[Terminating Service:error: could not bind to port %d (%s)\n]
-fr,base,140,[SetHandleNonInheritable: could not duplicate socket (%s)]
-fr,base,141,[SetHandleNonInheritable: closing the original socket failed (%s)]
-fr,base,142,[Could not SetHandleInformation (%s)]
-fr,base,143,[Terminating Service:Failure: Could not open statistics file (%s)\n]
-fr,base,144,[Could not set Thread Local Storage Value for thread at slot %d]
-fr,base,145,[secure handshake failed (code %d)\n]
-fr,base,146,[accept failed %d (%s)]
-fr,base,147,[Failed to pulse Event %d %s]
-fr,base,148,[Failed to send MobGrowth Event to parent %s]
-fr,base,149,[Pulsing MobRespawn Event %d]
-fr,base,150,[respawn thread pool to %d (%d)]
-fr,base,151,[Could not open event to signal rotate application. Could not create the MoveLog event:%s]
-fr,base,152,[Failed to send MoveLog Event to rotate app %s]
-fr,base,153,[growing thread pool from %d to %d]
-fr,base,154,[Could not open the ServiceControlManager, Error %d]
-fr,base,155,[StartNetsiteService:Could not open the service %s: Error %d]
-fr,base,156,[StartNetsiteService:Could not start the service %s]
-fr,base,157,[Service Startup: Could not allocate security descriptor]
-fr,base,158,[Service Startup: Could not init security descriptor]
-fr,base,159,[Service Startup: Could not set the security Dacl]
-fr,base,160,[Terminating Service:WinSock init failed: %s]
-fr,base,161,[Httpd Server Startup failed: %s]
-fr,base,162,[can't find empty statistics slot]
-fr,base,163,[NT daemon: could not create new thread %d]
-fr,base,164,[Service Startup Failure. Terminating Service:Could not create event %d:%s]
-fr,base,165,[Service Startup Error. Could not create the MoveLog event:%s]
-fr,base,166,[Failed to wait on Event objects %s]
-fr,base,167,[Failed to wait on Event objects %s]
-fr,base,168,[pipebuf_buf2sd: pipebuf_grab IO_ERROR %d]
-fr,base,169,[pool-init: memory pools disabled]
-fr,base,170,[pool-init: free_size <= 0, using %d]
-fr,base,171,[pool-create-block: out of memory]
-fr,base,172,[pool-create: out of memory]
-fr,base,173,[pool-create: out of memory]
-fr,base,174,[pool-malloc: out of memory]
-fr,base,175,[FREE() used where PERM_FREE() should have been used- problem corrected and supressing further warnings.]
-fr,base,176,[regex error: %s (regex: '%s')]
-fr,base,177,[can't create IPC pipe (%s)]
-fr,base,178,[write to wakeup pipe failed (%s)]
-fr,base,179,[flushing %d connections; current %d; tot %d]
-fr,base,180,[accept failed (%s)]
-fr,base,181,[Error creating time cache]
-fr,base,182,[time-cache: cache disabled]
-fr,base,183,[time_cache_init: hash_size < %d, using default, %d]
-fr,base,184,[time_cache_init: hash_size > %d, using default, %d]
-fr,base,185,[time_cache_init: cache_size < %d, using default, %d]
-fr,base,186,[time_cache_init: cache_size > %d, using default, %d]
-fr,base,187,[Error allocating memory for time_cache]
-fr,base,188,[Error allocating memory for time_cache entry]
-fr,base,189,[Error allocating memory for time_cache entry]
-fr,base,190,[Error inserting new time_cache entry]
-fr,base,191,[Error allocating memory for time_cache]
-fr,base,192,[cs-terminate failure (%s)]
-fr,base,193,[cs-init failure (%s)]
-fr,base,194,[cs-wait failure (%s)]
-fr,base,195,[cs-post failure (%s)]
-fr,base,196,[Unable to create nonblocking socket (%s)]
-fr,base,197,[error: could not set keepalive (%s)\n]
-fr,base,198,[error: could not set recv timeout (%s)\n]
-fr,base,199,[error: could not set send timeout (%s)\n]
-fr,base,200,[Unable to create nonblocking socket (%s)]
-fr,base,201,[sem_grab failed (%s)]
-fr,base,202,[sem_release failed (%s)]
-fr,base,203,[sem_release failed (%s)]
-fr,base,204,[Could not remove temporary directory %s, Error %d]
-fr,base,205,[Could not remove temporary directory %s, Error %d]
-fr,dsgw,-1,[$DBT: dsgw in DB file v1 $]
-fr,dsgw,1,[Méthode de demande HTTP inconnue (Unknown HTTP request method)]
-fr,dsgw,2,[Données HTML de formulaire non valides ou incomplètes (Invalid or incomplete HTML form data)]
-fr,dsgw,3,[Mémoire épuisée (Out of memory)]
-fr,dsgw,4,[L´entrée de requête/formulaire exigée est manquante (Required query/form input is missing)]
-fr,dsgw,5,[Caractère non autorisé dans le chemin d´accès au fichier (Illegal character in file path)]
-fr,dsgw,6,[Fichier de configuration erroné ou manquant (Bad or missing configuration file)]
-fr,dsgw,7,[Impossible d´initialiser LDAP (Unable to initialize LDAP)]
-fr,dsgw,8,[Une erreur est survenue lors du contact du serveur LDAP (An error occurred while contacting the LDAP server)]
-fr,dsgw,9,[Type d´objet de recherche inconnu (Unknown search object type)]
-fr,dsgw,10,[Etiquette d´attribut inconnue (Unknown attribute label)]
-fr,dsgw,11,[Invite de correspondance inconnue (Unknown match prompt)]
-fr,dsgw,12,[Aucun filtre de recherche pour ce type d´objet (No search filters for object type)]
-fr,dsgw,13,[Impossible d´ouvrir le fichier de modèle HTML (Unable to open HTML template file)]
-fr,dsgw,14,[Mode de recherche inconnu; utiliser "smart", "complex", "pattern" ou "auth" (Unknown search mode - use "smart", "complex", "pattern", or "auth")]
-fr,dsgw,15,[Nom distinctif manquant dans l´URL (Distinguished Name missing in URL)]
-fr,dsgw,16,[Portée inconnue dans l´URL (doit être: base, sub ou one) (Unknown scope in URL (should be base, sub, or one))]
-fr,dsgw,17,[URL non reconnu ou erreur inconnue (Unrecognized URL or unknown error)]
-fr,dsgw,18,[Format d´URL erroné (Bad URL format)]
-fr,dsgw,19,[Erreur interne (Internal error)]
-fr,dsgw,20,[Impossible d´écrire sur le fichier d´index de modèles (Unable to write template index file)]
-fr,dsgw,21,[Impossible d´ouvrir le fichier d´index de modèles (Unable to open template index file)]
-fr,dsgw,22,[Impossible de lire le répertoire (Unable to read directory)]
-fr,dsgw,23,[Echec de l´initialisation SSL LDAP (vérifiez le chemin de sécurité) (LDAP SSL initialization failed (check the security path))]
-fr,dsgw,24,[Pour que les formulaires d'utilisateurs et de groupes puissent fonctionner sur SSL avec Administration Server, vous-même ou l'administrateur de votre système devez activer SSL. La page Encryption|On/Off peut être utilisée à cette fin.\n(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]
-fr,dsgw,25,[Références d´authentification introuvables dans la base de données d´authentification (Authentication credentials not found in authentication database)]
-fr,dsgw,26,[Erreur de récupération des données depuis la base de données d´authentification (Error retrieving data from the authentication database)]
-fr,dsgw,27,[Vos références d´authentification ont expiré (Your authentication credentials have expired)]
-fr,dsgw,28,[Impossible de créer une chaîne aléatoire]
-fr,dsgw,29,[Aucun nom distinctif n´a été fourni lors du retrait des références (No distinguished name was provided when retrieving credentials)]
-fr,dsgw,30,[Impossible d´ouvrir la base de données d´authentification (Cannot open authentication database)]
-fr,dsgw,31,[Impossible d´annexer des données à la base de données d´authentification (Could not append data to the authentication database)]
-fr,dsgw,32,[Aucun gestionnaire de répertoires n´est défini (No Directory Manager is defined)]
-fr,dsgw,33,[Aucune chaîne de recherche n´a été fournie. Veuillez essayer à nouveau (No search string was provided. Please try again)]
-fr,dsgw,34,[Le fichier de configuration comporte trop d´arguments sur une ligne (Too many arguments on one line in the config. file)]
-fr,dsgw,35,[Echec de l´initialisation des sockets Windows (Failed to initialize Windows Sockets)]
-fr,dsgw,36,[Les références d´authentification n´ont pas pu être obtenues auprès d´Administration Server (Authentication credentials could not be obtained from the Administration Server)]
-fr,dsgw,37,[Nom distinctif manquant dans l´URL ldapdb:// (Distinguished Name missing in ldapdb:// URL)]
-fr,dsgw,38,[URL non reconnu ou erreur inconnue (Unrecognized URL or unknown error)]
-fr,dsgw,39,[Format d´URL erroné (Bad URL format)]
-fr,dsgw,40,[Une erreur est survenue lors de l'initialisation de la base de données LDAP locale\n(An error occurred while initializing the local LDAP database)]
-fr,dsgw,41,[Type de service de répertoires inconnu; utiliser "local" ou "remote" (Unknown directory service type - use "local" or "remote")]
-fr,dsgw,42,[Une erreur est survenue lors de la lecture du fichier de configuration db (An error occurred while reading the db configuration file)]
-fr,dsgw,43,[Le chemin d´accès à NSHOME/userdb était NULL (NSHOME/userdb path was NULL)]
-fr,dsgw,44,[Impossible de mettre à jour la configuration du service de répertoires. (The directory service configuration could not be updated.)]
-fr,dsgw,45,[Impossible de lire l´entrée à partir du répertoire. (The entry could not be read from the directory.)]
-fr,dsgw,46,[Impossible d´effacer la base de données LDAP. (The LDAP database could not be erased.)]
-fr,dsgw,47,[Vous pouvez seulement modifier les entrées que vous avez créées. (You may not change entries besides your own.)]
-fr,dsgw,48,[Problème (Problem)]
-fr,dsgw,49,[Problème d´authentification (Authentication Problem)]
-fr,dsgw,50,[.\n<P>Vous devez ré-authentifier avant de continuer. (You must re-authenticate before continuing.)\n]
-fr,dsgw,51,[.\n<P>Vous devez ré-authentifier avant de continuer. (You must re-authenticate before continuing.)\n]
-fr,dsgw,52,[erreur inconnue (unknown error)]
-fr,dsgw,53,[L´opération a réussi. (The operation was successful.)]
-fr,dsgw,54,[Une erreur interne est survenue sur le serveur. Ceci indique généralement une sérieuse défaillance du serveur et doit être immédiatement porté à l´attention de l´administrateur de votre serveur. (An internal error occurred in the server. This usually indicates a serious malfunction in the server and should be brought to the attention of your server administrator.)]
-fr,dsgw,55,[Le serveur n´a pas compris la demande qui lui a été transmise par la passerelle. (The server could not understand the request which was sent to it by the gateway.)]
-fr,dsgw,56,[La réponse à votre demande a dépassé le temps imparti. Si vous recherchez des entrées, vous obtiendrez sans doute de meilleurs résultats en étant plus précis dans votre recherche. (A time limit was exceeded in responding to your request. If you are searching for entries, you may achieve better results if you are more specific in your search.)]
-fr,dsgw,57,[La réponse à votre demande a dépassé la taille autorisée. Si vous recherchez des entrées, vous obtiendrez sans doute de meilleurs résultats en étant plus précis car trop d´entrées répondent à vos critères de recherche. (A size limit was exceeded in responding to your request. If you are searching for entries, you may achieve better results if you are more specific in your search, because too many entries matched your search criteria.)]
-fr,dsgw,58,[La passerelle a tenté d'authentifier l'accès au serveur en utilisant\nune méthode incomprise par ce dernier.\n(The gateway attempted to authenticate to the server using\na method the server doesn't understand.)]
-fr,dsgw,59,[La passerelle a tenté d´authentifier l´accès au serveur en utilisant une méthode d´authentification non supportée par le serveur. (The gateway attempted to authenticate to the server using an authentication method which the server does not support.)]
-fr,dsgw,60,[Impossible d´honorer votre demande, sans doute parce que le serveur contacté ne contient pas les données que vous recherchez. Il est possible qu´une orientation vers un autre serveur ait été renvoyée sans avoir pu être suivie. Si vous étiez en train d´essayer de modifier le répertoire, il se peut que le serveur contenant la copie maîtresse des données ne soit pas disponible. (Your request could not be fulfilled, probably because the server that was contacted does not contain the data you are looking for. It is possible that a referral to another server was returned but could not be followed. If you were trying to make changes to the directory, it may be that the server that holds the master copy of the data is not available.)]
-fr,dsgw,61,[Votre demande a dépassé une limite administrative sur le serveur. (Your request exceeded an administrative limit in the server.)]
-fr,dsgw,62,[Une extension importante demandée par la passerelle n´est pas disponible sur ce serveur. (A critical extension that the gateway requested is not available in this server.)]
-fr,dsgw,63,[Le serveur n'a pas pu traiter la demande car celle-ci\nrenvoie à un attribut inexistant dans\nl'entrée.\n(The server was unable to process the request, because the\nrequest referred to an attribute which does not exist in the\nentry.)]
-fr,dsgw,64,[Le serveur n´a pas pu répondre à votre demande, car \ncelle-ci va à l´encontre d´une contrainte de la base de données.\n(The server was unable to fulfill your request, because the\nrequest violates a constraint.)]
-fr,dsgw,65,[Le serveur n´a pas pu ajouter une valeur à cette entrée car elle la contient déjà. (The server could not add a value to the entry, because that value is already contained in the entry.)]
-fr,dsgw,66,[Le serveur n'a pas pu localiser l'entrée. Si vous ajoutez une nouvelle entrée,\nassurez-vous qu'elle comporte une entrée principale.\nLa réception de ce message d'erreur lors d'une recherche indique que l'entrée\nrecherchée n'existe pas.\nSi vous étiez en train d'essayer d'authentifier l'accès en tant que gestionnaire de répertoires et que vous\navez vu apparaître ce message, vérifiez le fichier de configuration de la passerelle.\n(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.)]
-fr,dsgw,67,[Le format d´un nom distinctif est incorrect. (A distinguished name was not in the proper format.)]
-fr,dsgw,68,[L´entrée que vous étiez en train d´essayer d´authentifier ne comporte pas de jeu de mots de passe, ou bien il lui manque d´autres références d´authentification requises. Pour que vous puissiez authentifier cette entrée, les attributs appropriés doivent avoir été ajoutés par le gestionnaire de répertoires. (The entry you attempted to authenticate as does not have a password set, or is missing other required authentication credentials. You cannot authenticate as that entry until the appropriate attributes have been added by the directory manager. )]
-fr,dsgw,69,[Le mot de passe (ou d'autres références d'authentification) que vous avez fourni\nest incorrect. (The password (or other authentication credentials) you supplied\nis incorrect. If you just changed your password, you might try exiting your browser and connecting again.)]
-fr,dsgw,70,[Vos privilèges sont insuffisants pour effectuer cette opération. (You do not have sufficient privileges to perform the operation.)]
-fr,dsgw,71,[Le serveur est trop occupé pour honorer votre demande. Essayez à nouveau dans quelques minutes. (The server is too busy to service your request. Try again in a few minutes.)]
-fr,dsgw,72,[Impossible de contacter le serveur LDAP. (The LDAP server could not be contacted.)]
-fr,dsgw,73,[Le serveur refuse de traiter votre demande. Cette dernière risquerait sans doute de le surcharger. Il se peut également qu´il ne soit pas configuré pour traiter votre demande. Si vous tentez d´effectuer une recherche, vous avez intérêt à en limiter la portée. (The server was unwilliing to process your request. Usually, this indicates that serving your request would put a heavy load on the server. It may also indicate that the server is not configured to process your request. If searching, you may wish to limit the scope of your search.)]
-fr,dsgw,74,[Le serveur de répertoires ne peut honorer votre demande car elle viole les exigences du schéma. Vous n´avez sans doute pas fourni de valeur pour un champ requis. Il se peut également que le schéma du serveur de répertoires nécessite une mise à jour. (The directory server could not honor your request because it violates the schema requirements. Typically, this means that you have not provided a value for a required field. It could also mean that the schema in the directory server needs to be updated.)]
-fr,dsgw,75,[Le serveur de répertoires ne vous permettra pas de supprimer ou de renommer une entrée qui comporte des sous-entrées. Si vous souhaitez continuer, vous devez d´abord supprimer toutes les sous-entrées. (The directory server will not allow you to delete or rename an entry if that entry has children. If you wish to do this, you must first delete all the child entries.)]
-fr,dsgw,76,[Le serveur ne peut ajouter une nouvelle entrée ni renommer une entrée existante car il existe déjà une entrée sous ce nom. (The server was unable to add a new entry, or rename an existing entry, because an entry by that name already exists.)]
-fr,dsgw,77,[Votre demande affecterait plusieurs serveurs de répertoires. (Your request would affect several directory servers.)]
-fr,dsgw,78,[Impossible de contacter le serveur de répertoires. Contactez\nl'administrateur de votre serveur de répertoires pour obtenir de l'aide.\n(The directory server could not be contacted. Contact your\ndirectory server administrator for assistance.)]
-fr,dsgw,79,[Une erreur est survenue lors de l´envoi de données au serveur. (An error occured while sending data to the server.)]
-fr,dsgw,80,[Une erreur est survenue lors de la lecture des données en provenance du serveur. (An error occured while reading data from the server.)]
-fr,dsgw,81,[Le serveur n´a pas répondu à la demande. La demande a dépassé le temps imparti. (The server did not respond to the request. The request timed out.)]
-fr,dsgw,82,[Le serveur ne supporte pas la méthode d´authentification utilisée par la passerelle. (The server does not support the authentication method used by the gateway.)]
-fr,dsgw,83,[Le filtre de recherche créé par la passerelle est erroné. (The search filter constructed by the gateway was in error.)]
-fr,dsgw,84,[L´opération a été annulée à votre demande. (The operation was cancelled at your request.)]
-fr,dsgw,85,[Une erreur interne est survenue dans la bibliothèque; un paramètre est incorrect. (An internal error occurred in the library - a parameter was incorrect.)]
-fr,dsgw,86,[Impossible d'ouvrir une connexion au serveur de répertoires. Contactez\nl'administrateur de votre serveur de répertoires pour obtenir de l'aide.\n(A connection to the directory server could not be opened. Contact your\ndirectory server administrator for assistance.)]
-fr,dsgw,87,[Une erreur inconnue est survenue. (An unknown error was encountered.)]
-fr,dsgw,88,[Cette entrée existe déjà (Entry Already Exists)]
-fr,dsgw,89,[Une entrée nommée (An entry named) ]
-fr,dsgw,90,[onMouseOver="window.status='Cliquez ici pour afficher cette entrée'; return true"\n(onMouseOver="window.status='Click here to view this entry'; return true")]
-fr,dsgw,91,[ existe déjà (already exists).<P>Veuillez choisir un autre nom et/ou une autre adresse.\n(Please choose another name and/or location.)\n<P>\n]
-fr,dsgw,92,[L´entrée principale n´existe pas (Parent entry does not exist)]
-fr,dsgw,93,[Impossible d´ajouter une entrée par le nom:<P><B>%s</B>,<P>\ncar il n´existe pas d´entrée principale.<P>\nPour pouvoir ajouter cette entrée, vous devez d´abord ajouter\n(You cannot add an entry by the name shown\nbecause the parent of that entry does not exist.<P>\nBefore you can add this entry, you must first add)\n]
-fr,dsgw,94,[l´entrée principale (its parent).\n]
-fr,dsgw,95,[une entrée nommée (an entry named):<P><B>%s</B>.\n]
-fr,dsgw,96,[Avertissement: pas d´authentification (continuation)...\n(Warning: no authentication (continuing)...)\n]
-fr,dsgw,97,[Entrée de répertoire %s (Directory Entry)]
-fr,dsgw,98,[<PRE>DN de l´entrée (Entry DN): %s</PRE><P>\n]
-fr,dsgw,99,[Les changements apportés à <B>%s</B> ont été enregistrés.]
-fr,dsgw,100,[<B>%s</B> has been added.]
-fr,dsgw,101,[<B>%s</B> has been deleted.]
-fr,dsgw,102,[Renamed <B>%s</B> to <B>%s</B>.]
-fr,dsgw,103,[<P><B>Remarque:</B> Parce que vous avez %s l´entrée pour laquelle vous étiez\nauthentifié, il a fallu mettre vos références \nd´authentification au rebut. Vous aurez besoin d´une nouvelle \nauthentification pour pouvoir apporter des modifications supplémentaires.\n(<B>Note:</B> because of your action on 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]
-fr,dsgw,104,[supprimé (deleted)]
-fr,dsgw,105,[renommé (renamed)]
-fr,dsgw,106,[a changé le mot de passe de (changed the password of)]
-fr,dsgw,107,[L´attribut %s a été changé<BR>\n(Attribute shown was changed<BR>)\n]
-fr,dsgw,108,[ NON ASCII (%ld octets)\n(NOT ASCII (number of bytes shown))\n]
-fr,dsgw,109,[Aucune valeur n´a été entrée. Veuillez essayer à nouveau.\n(No values were entered. Please try again.)\n]
-fr,dsgw,110,[Aucun changement n´a été apporté.\n]
-fr,dsgw,111,[<P>Envoi de %s au serveur de répertoires...\n]
-fr,dsgw,112,[informations (information)]
-fr,dsgw,113,[changements (changes)]
-fr,dsgw,114,[<P>L´ajout de cette entrée a réussi.\n(Successfully added entry.)\n]
-fr,dsgw,115,[<P>La modification de cette entrée a réussi. Vos changements ont été enregistrés.\n(Successfully edited entry. Your changes have been saved.)\n]
-fr,dsgw,116,[<P>La suppression de cette entrée a réussi.\n(Successfully deleted entry.)\n]
-fr,dsgw,117,[<PRE>Le nouveau nom de cette entrée est: %s\n(The new name for the entry is as shown)\n</PRE><HR>\n]
-fr,dsgw,118,[<P>Le renommage de cette entrée a réussi.\n(Successfully renamed entry.)\n]
-fr,dsgw,119,[Vous devez fournir l´ancien mot de passe.]
-fr,dsgw,120,[Vous devez spécifier un nouveau mot de passe. Essayez à nouveau.]
-fr,dsgw,121,[Le nouveau mot de passe et sa confirmation ne correspondent pas. Veuillez essayer à nouveau]
-fr,dsgw,122,[<BR>Le %s <B>%s</B> est déjà utilisé. Veuillez en choisir un autre.\n(The item shown is already in use. Please choose a different one.)<BR>\n]
-fr,dsgw,123,[élément "%.100s" de données de formulaire manquant\n(missing form data element shown)]
-fr,dsgw,124,[Initialisation des données de configuration\n(Initializing config info)]
-fr,dsgw,125,[Impossible d´ouvrir le fichier. (Cannot open file.)]
-fr,dsgw,126,[Fichier dbconf mal formé. (Malformed dbconf file.)]
-fr,dsgw,127,[Nom du propriétaire manquant dans le fichier dbconf.\n(Missing property name in dbconf file.)]
-fr,dsgw,128,[Mémoire épuisée. (Out of memory.)]
-fr,dsgw,129,[Directive manquante dans le fichier dbconf.\n(Missing directive in dbconf file.)]
-fr,dsgw,130,[Impossible d'ouvrir le fichier de configuration "%s"\n(Cannot open config file with name shown)\n]
-fr,dsgw,131,[Argument manquant pour la directive "authlifetime"\n(Missing argument for "authlifetime" directive)\n]
-fr,dsgw,132,[Argument manquant pour la directive "dirmgr"\n(Missing argument for "dirmgr" directive)\n]
-fr,dsgw,133,[Argument manquant pour la directive "baseurl"\n(Missing argument for "baseurl" directive)\n]
-fr,dsgw,134,[URL erroné fourni pour la directive "baseurl"; le DN de base est manquant\n(Bad URL provided for "baseurl" directive - the base DN is missing)\n]
-fr,dsgw,135,[analyse de la directive baseurl\n(parsing baseurl directive)]
-fr,dsgw,136,[URL erroné fourni pour la directive "baseurl"; pas un URL "ldap://"\n(Bad URL provided for "baseurl" directive - not an "ldap://" URL)\n]
-fr,dsgw,137,[Les URL "ldaps://" ne sont pas encore supportés\n("ldaps://" URLs are not yet supported)\n]
-fr,dsgw,138,[Arguments manquants pour la directive "template"\n(Missing arguments for "template" directive)\n]
-fr,dsgw,139,[Argument manquant pour la directive "sslrequired"\n(Missing argument for "sslrequired" directive)\n]
-fr,dsgw,140,[Argument inconnu pour la directive "sslrequired" (l´argument doit être "never", "whenauthenticated", "always")\n(Unknown argument to "sslrequired" directive (should be "never", "whenauthenticated", "always"))\n]
-fr,dsgw,141,[Argument manquant pour la directive "securitypath"\n(Missing argument for "securitypath" directive)\n]
-fr,dsgw,142,[Argument manquant pour la directive "location-suffix"\n(Missing argument for "location-suffix" directive)\n]
-fr,dsgw,143,[Trois arguments sont requis pour la directive "location"\n(Three arguments are required for the "location" directive)\n]
-fr,dsgw,144,[Au moins deux arguments sont requis pour la directive "newtype"\n(At least two arguments are required for the "newtype" directive)\n]
-fr,dsgw,145,[Adresse inconnue dans la directive "newtype"\n(Unknown location in "newtype" directive)\n]
-fr,dsgw,146,[Trois ou quatre arguments sont requis pour la directive "tmplset"\n(Three or four arguments are required for the "tmplset" directive)\n]
-fr,dsgw,147,[Quatre arguments sont requis pour la directive "attrvset"\n(Four arguments are required for the "attrvset" directive)\n]
-fr,dsgw,148,[Argument manquant pour la directive "charset"\n(Missing argument for "charset" directive)\n]
-fr,dsgw,149,[Argument manquant pour la directive "ClientLanguage"\n(Missing argument for "ClientLanguage" directive)\n]
-fr,dsgw,150,[Argument manquant pour la directive "AdminLanguage"\n(Missing argument for "AdminLanguage" directive)\n]
-fr,dsgw,151,[Argument manquant pour la directive "DefaultLanguage"\n(Missing argument for "DefaultLanguage" directive)\n]
-fr,dsgw,152,[Nom de fichier manquant pour la directive "include"\n(Missing filename for "include" directive)\n]
-fr,dsgw,153,[Directive inconnue dans le fichier de configuration\n(Unknown directive in config file)\n]
-fr,dsgw,154,[<= erase_db n´a pas réussi à ouvrir le fichier lcache.conf "%s"\n(<= erase_db could not open lcache.conf file with name shown)\n]
-fr,dsgw,155,[<FONT SIZE="+1">\n<P>La base de données a été supprimée. Création d´une nouvelle base de données... \n(The database has been deleted. Creating new database...)\n</FONT>\n]
-fr,dsgw,156,[<FONT SIZE="+1">\n<P>Impossible de supprimer la base de données\n(The database could not be deleted)\n(</FONT>\n]
-fr,dsgw,157,[<= app_suffix n´a pas réussi à ouvrir le fichier ldif "%s"\n(<= app_suffix could not open ldif file with name shown)\n]
-fr,dsgw,158,[<= app_suffix n´a pas réussi à ouvrir le fichier tmp "%s"\n(<= app_suffix could not open tmp file with name shown)\n]
-fr,dsgw,159,[Impossible de renommer %s en %s (Unable to rename with names as shown)]
-fr,dsgw,160,[pointeur null renvoyé par dbconf_read_default_dbinfo().\n(null pointer returned by dbconf_read_default_dbinfo().)]
-fr,dsgw,161,[URL "ldapdb" erroné; le DN de base est manquant\n(Bad "ldapdb" URL - the base DN is missing)\n]
-fr,dsgw,162,[URL "ldapdb" erroné\n (Bad "ldapdb" URL)\n]
-fr,dsgw,163,[URL fourni pour la directive "baseurl" erroné; le DN de base est manquant\n(Bad URL provided for "baseurl" directive - the base DN is missing)\n]
-fr,dsgw,164,[analyse de la directive baseurl\n(parsing baseurl directive)]
-fr,dsgw,165,[URL fourni pour la directive "baseurl" erroné; pas un URL "ldap:// ou ldapdb://"\n(Bad URL provided for "baseurl" directive - not an "ldap:// or ldapdb://" URL)\n]
-fr,dsgw,166,[Les URL "ldaps://" ne sont pas encore supportés\n("ldaps://" URLs are not yet supported)\n]
-fr,dsgw,167,[Aucune valeur donnée pour binddn\n(No value given for binddn)]
-fr,dsgw,168,[Aucune valeur donnée pour bindpw\n(No value given for bindpw)]
-fr,dsgw,169,[Aucun service de répertoires par défaut n´est défini dans le fichier dbswitch.conf\n(There is no default directory service defined in the dbswitch.conf file)]
-fr,dsgw,170,[Impossible d'ouvrir le fichier de configuration "%s" en écriture\n(Cannot open config file with name shown for writing)\n]
-fr,dsgw,171,[Impossible de renommer %s en %s (Unable to rename with names as shown)]
-fr,dsgw,172,[fichier de configuration (config file) %s:]
-fr,dsgw,173,[fichier de configuration %s: ligne %d: \n(config file and line as shown)]
-fr,dsgw,174,[max %d]
-fr,dsgw,175,[ OK ]
-fr,dsgw,176,[Fermer la fenêtre (Close Window)]
-fr,dsgw,177,[Précédent]
-fr,dsgw,178,[{crypt}VERROUILLE (LOCKED) [%s GMT]]
-fr,dsgw,179,[Retourner à l´écran principal (Return to Main)]
-fr,dsgw,181,[ Help ]
-fr,dsgw,182,[Aide (Help)]
-fr,dsgw,184,[L´aide n´est pas encore disponible. (Help is not yet available.)]
-fr,dsgw,186,[Fermer la fenêtre (Close Window)]
-fr,dsgw,187,[Fermer la fenêtre (Close Window)]
-fr,dsgw,188,[modèle manquant? (missing ?template)]
-fr,dsgw,189,[Authentifier... (Authenticate...)]
-fr,dsgw,190,[Mettre les références d´authentification au rebut (déconnexion)?\n(Discard authentication credentials (log out)?)]
-fr,dsgw,191,[Veuillez taper une chaîne de recherche]
-fr,dsgw,192,[La première étape de l´authentification de l´accès à ce répertoire consiste en votre\npropre identification.<br>Tapez votre nom:\n(The first step in authenticating to the directory is identifying\nyourself.<br>Please type your name:)]
-fr,dsgw,193,[Continuer (Continue)]
-fr,dsgw,194,[Continuer (Continue)]
-fr,dsgw,195,[Annuler (Cancel)]
-fr,dsgw,196,[Authentifier comme gestionnaire de répertoires"> &nbsp;(uniquement disponible pour les administrateurs de répertoires)\n(Authenticate as directory manager"> &nbsp;(only available to Directory Administrators))\n]
-fr,dsgw,197,[Authentifier... (Authenticate...)]
-fr,dsgw,198,[Mettre les références d´authentification au rebut? (Discard authentication credentials?)]
-fr,dsgw,200,[Continuer (Continue)]
-fr,dsgw,201,[Continuer (Continue)]
-fr,dsgw,202,[Annuler (Cancel)]
-fr,dsgw,203,[Authentifier l´accès au répertoire (connexion)\n(Authenticate (log in) to the directory)]
-fr,dsgw,204,[Vous êtes sur le point de vous authentifier auprès de l'annuaire en tant que <B>%s</B>. Pour terminer le processus d'authentification, tapez votre mot de passe.\n]
-fr,dsgw,206,[Avant de pouvoir modifier ou ajouter des entrées, vous devez authentifier\nl´accès au répertoire (connexion). Cette fenêtre vous\nguidera tout au long du processus\nd´authentification.\n(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]
-fr,dsgw,207,[Cet écran vous permet d´authentifier l´accès au répertoire, \nou de vous y connecter. Vous devrez vous authentifier\navant de pouvoir modifier les entrées du répertoire. Si vous\ntentez de modifier une entrée sans authentification,\nil vous sera demandé de vous connecter.\n(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]
-fr,dsgw,208,[Statut de l´authentification (Authentication Status)]
-fr,dsgw,209,[<form>\nVotre accès au répertoire est actuellement authentifié sous\n(You are currently authenticated to the directory as) ]
-fr,dsgw,210,[.\nSi vous voulez mettre vos références d´authentification au rebut et vous déconnecter du répertoire, cliquez sur le bouton ci-dessous.\n(.\nIf you wish to discard your authentication credentials and log out of the directory, click on the button below.)]
-fr,dsgw,211,[Mettre les références d´authentification au rebut (déconnexion)\n(Discard Authentication Credentials (log out))]
-fr,dsgw,212,[Vos références d´authentification pour \n(Your authentication credentials for )]
-fr,dsgw,213,[ont expiré (have expired).\n<HR>)\n]
-fr,dsgw,214,[Votre accès au répertoire n´est actuellement pas authentifié.\n(Currently, you are not authenticated to the directory.)<HR>\n]
-fr,dsgw,215,["%s=" manquant (missing definition shown)]
-fr,dsgw,216,["%s=%s" inconnu (unknown assignment as shown)]
-fr,dsgw,217,[option inconnue %s (unknown option as shown)]
-fr,dsgw,218,[syntaxe inconnue=%s\n(syntax shown unknown)\n]
-fr,dsgw,219,[** Type HTML "%s" non supporté **\n(** HTML type shown not supported **<BR>)\n]
-fr,dsgw,224,[Modifier (Edit)]
-fr,dsgw,225,[Save Changes]
-fr,dsgw,226,[modify]
-fr,dsgw,227,[add]
-fr,dsgw,228,[Supprimer (Delete)]
-fr,dsgw,229,[Supprimer cette entrée? (Delete this entry?)]
-fr,dsgw,230,[Renommer (Rename)]
-fr,dsgw,231,[Entrez un nouveau nom pour cette entrée: (Enter a new name for this entry:)]
-fr,dsgw,232,[Modifier sous (Edit As)]
-fr,dsgw,233,[%s= manquant (missing definition shown)]
-fr,dsgw,234,[Fermer la fenêtre (Close Window)]
-fr,dsgw,235,[Modifier... (Edit...)]
-fr,dsgw,236,["%s=" manquant\n (missing definition shown")\n]
-fr,dsgw,237,[ensemble inconnu "%s"\n (set shown is unknown)\n]
-fr,dsgw,238,[syntaxe inconnue "%s"\n (syntax shown is unknown)\n]
-fr,dsgw,239,[Ré-authentifier (Re-Authenticate)]
-fr,dsgw,240,[Fermer la fenêtre (Close Window)]
-fr,dsgw,241,[Voulez-vous vraiment (Do you really want to) ]
-fr,dsgw,242,[?]
-fr,dsgw,243,[ OK ]
-fr,dsgw,244,[ OK ]
-fr,dsgw,245,[Remettre à zéro (Reset)]
-fr,dsgw,246,[Terminé (Done)]
-fr,dsgw,247,[Annuler (Cancel)]
-fr,dsgw,248,[a trouvé un autre IF (les IF emboîtés ne sont pas supportés)\n(found another IF (nested IFs are not supported))]
-fr,dsgw,249,[a trouvé ELSE mais n´a pas vu de IF\n(found ELSE but didn't see an IF)]
-fr,dsgw,250,[a trouvé ELSE après ELSE (ENDIF attendu)\n(found ELSE after ELSE (expecting ENDIF))]
-fr,dsgw,251,[a trouvé ELIF mais n´a pas vu de IF\n(found ELIF but didn't see an IF)]
-fr,dsgw,252,[a trouvé ELIF après ELSE (ENDIF attendu)\n(found ELIF after ELSE (expecting ENDIF))]
-fr,dsgw,253,[a trouvé ENDIF mais n´a pas vu de IF\n(found ENDIF but didn't see an IF)]
-fr,dsgw,254,[<BR><B>erreur de modèle:</B> %s\n(<B>template error as shown</B>)<BR>\n]
-fr,dsgw,255,[ldap_init/lcache_init tenté avant la lecture du fichier de configuration\n(ldap_init/lcache_init attempted before config file read)]
-fr,dsgw,256,[ne tourne pas sous Administration Server\n(not running under the administration server)]
-fr,dsgw,257,[Impossible d´initialiser les permissions\n(Could not initialize permissions)]
-fr,dsgw,258,[Impossible de faire correspondre un nom d´utilisateur avec un DN (erreur d´Administration Server)\n(Could not map username to a DN (error from admin server))]
-fr,dsgw,259,[Impossible d´obtenir le nom d´utilisateur courant\n(Could not get current username)]
-fr,dsgw,260,[Impossible d´obtenir le mot de passe utilisateur courant\n(Could not get current user password)]
-fr,dsgw,261,[Erreur (Error): %s]
-fr,dsgw,262,[Remarque: aucun modèle d´affichage n´est disponible pour ce type d´entrée; une méthode par défaut\nest donc utilisée dans l´affichage ci-dessous.\n(Note: there is no display template for this type of entry available, so it is\ndisplayed below using a default method.)]
-fr,dsgw,263,[Identification de l´utilisateur ou identificateur NULL LDAP non valide\n(Invalid user id or NULL LDAP handle)]
-fr,dsgw,264,[aucune correspondance pour l´identification de l´utilisateur\n(no match for user id)]
-fr,dsgw,265,[plusieurs correspondances pour l´identification de l´utilisateur\n(more than one match for user id)]
-fr,dsgw,266,[the entire directory]
-fr,dsgw,267,[Deux arguments sont requis pour la directive "includeset"\n(Two arguments are required for the "includeset" directive)\n]
-fr,dsgw,268,[La valeur d'attribut demandée est introuvable dans l'entrée\n(An error occurred while trying to access the database)]
-fr,dsgw,269,[Argument introuvable pour la directive "NLS"]
-fr,dsgw,270,[Une valeur doit être spécifiée pour l'id d'utilisateur NT\n]
-fr,dsgw,271,[La combinaison de l'id d'utilisateur NT et de l'id de domaine NT n'est pas unique dans le répertoire.]
-fr,dsgw,272,[Des valeurs doivent être spécifiées pour l'id d'utilisateur NT et l'id de domaine NT\n]
-fr,dsgw,273,[La valeur d'id d'utilisateur NT ne doit pas dépasser 20 caractères.\n]
-fr,dsgw,274,[Veuillez créer un nom pour la nouvelle entrée.]
-fr,dsgw,275,[Veuillez sélectionner une adresse pour la nouvelle entrée.]
-fr,dsgw,276,[Nouvelle entrée]
-fr,dsgw,277,[Afin de pouvoir utiliser cette fonction, un dirmgr doit être défini dans dsgw.conf]
-fr,dsgw,278,[Trois ou quatre arguments sont requis pour la directive "vcard-property"\n]
-fr,dsgw,279,[La syntaxe de la propriété Vcard doit être "cis" ou "mls"\n]
-fr,dsgw,280,[Aucune entrée n'a été trouvée.\n%2$s]
-fr,dsgw,281,[Aucune entrée n'a été trouvée dans les %2$s %3$s '%4$s'.\n]
-fr,dsgw,282,[Aucune entrée recherchée n'a été trouvée\n%2$s]
-fr,dsgw,283,[Aucune entrée recherchée n'a été trouvée dans les %2$s %3$s %4$s'.\n]
-fr,dsgw,284,[1 entrée a été trouvée.\n%2$s]
-fr,dsgw,285,[1 entrée a été trouvée dans les %2$s %3$s '%4$s'.\n]
-fr,dsgw,286,[1 entrée recherchée a été trouvée.\n%2$s]
-fr,dsgw,287,[1 entrée recherchée a été trouvée dans les %2$s %3$s '%4$s'.\n]
-fr,dsgw,288,[%1$li entrées ont été trouvées.\n%2$s]
-fr,dsgw,289,[%1$li entrées ont été trouvées dans les %2$s %3$s '%4$s'.\n]
-fr,dsgw,290,[%1$li entrées recherchées ont été trouvées.\n%2$s]
-fr,dsgw,291,[%1$li entrées recherchées ont été trouvées dans les %2$s %3$s '%4$s'.\n ]
-fr,dsgw,292,[le filtre LDAP est]
-fr,dsgw,293,[Le serveur n´a pas pu trouver l´entrée que vous avez utilisée lors de l´authentification. Quelqu´un a peut-être renommé ou supprimé l´entrée. Procédez à une nouvelle authentification.]
-fr,dsgw,294,[La nouvelle syntaxe du mot de passe n´est pas valide.\n]
-fr,dsgw,295,[Le nouveau mot de passe figure dans l´historique des mots de passe.\n]
-fr,dsgw,296,[Vous avez atteint la limite de nouvelle tentative de mot de passe. Contactez votre administrateur système.\n]
-fr,dsgw,297,[Vous avez atteint la limite de nouvelle tentative de mot de passe. Essayez à nouveau.\n]
-fr,dsgw,298,[Le mot de passe a expiré. Contactez votre administrateur système pour redéfinir le mot de passe.\n]
-fr,frame,-1,[$DBT: frame in DB file v1 $]
-fr,frame,1,[<TITLE>Introuvable (Not Found)</TITLE><H1>Introuvable (Not Found)</H1> L'objet demandé n'existe pas sur ce serveur. Le lien que vous avez consulté est peut-être désuet, inexact, ou bien le serveur a reçu l'ordre de ne pas vous laisser y accéder.\n(The requested object does not exist on this server. The link you followed is either outdated, inaccurate, or the server has been instructed not to let you have it. )]
-fr,frame,2,[Veuillez informer l'administrateur de site de la <A HREF="%s">page de référence</A>.\n(Please inform the site administrator of the referring page.)]
-fr,frame,3,[Votre navigateur a envoyé une demande que ce Proxy n'arrive pas à comprendre.\n(Your browser sent a request that this proxy could not understand.)]
-fr,frame,4,[Une autorisation adéquate est requise pour l'administration de ce Proxy.\nVotre navigateur n'effectue peut-être pas l'autorisation, ou bien votre autorisation\na échoué.\n(Proper authorization is required for the administration of this proxy.\nEither your browser does not perform authorization, or your authorization\nhas failed.)]
-fr,frame,5,[L'authentification du nom d'utilisateur est requise pour utiliser ce Proxy.\nVotre navigateur n'effectue peut-être par l'autorisation de Proxy, ou bien votre\nautorisation a échoué.\n(Username authentication is required for using this proxy.\nEither your browser does not perform proxy authorization, or your\nauthorization has failed.)]
-fr,frame,6,[La configuration du contrôle d'accès de ce Proxy refuse l'accès à\nl'objet demandé par le biais de ce Proxy.\n(The proxy's access control configuration denies access to\nthe requested object through this proxy.)]
-fr,frame,7,[Le Proxy a rencontré une erreur interne qui l'empêche \nd'honorer votre demande. La cause la plus probable est une mauvaise configuration.\nVeuillez demander à l'administrateur de consulter le journal d'erreurs du Proxy.\n(The proxy has encountered an internal error which prevents it from\nfulfilling your request. The most likely cause is a misconfiguration.\nPlease ask the administrator to look for messages in the proxy's error log.)]
-fr,frame,8,[Ce serveur de Proxy ne met pas en oeuvre la méthode demandée.\n(This proxy server does not implement the requested method.)]
-fr,frame,9,[Une erreur est survenue sur le serveur de Proxy.\n(An error has occurred on the proxy server.)]
-fr,frame,10,[Votre navigateur a envoyé une requête que ce serveur n'arrive pas à comprendre.\n(Your browser sent a query this server could not understand.)]
-fr,frame,11,[Une autorisation adéquate est requise pour ce domaine. Votre navigateur n'effectue peut-être pas l'autorisation, ou bien votre autorisation a échoué.\n(Proper authorization is required for this area. Either your browser does not perform authorization, or your authorization has failed.)]
-fr,frame,12,[Votre client n'est pas autorisé à accéder à l'objet demandé.\n(Your client is not allowed to access the requested object.)]
-fr,frame,13,[Ce serveur a rencontré une erreur interne qui l'empêche d'honorer votre demande. La cause la plus probable est une mauvaise configuration. Veuillez demander à l'administrateur de consulter le journal d'erreurs du serveur.\n(This server has encountered an internal error which prevents it from fulfilling your request. The most likely cause is a misconfiguration. Please ask the administrator to look for messages in the server's error log.)]
-fr,frame,14,[Ce serveur ne met pas en oeuvre la méthode demandée.\n(This server does not implement the requested method.)]
-fr,frame,15,[Une erreur est survenue. (An error has occurred.)]
-fr,frame,16,[Votre navigateur a envoyé un message que ce serveur n'arrive pas à comprendre.\n(Your browser sent a message this server could not understand.)]
-fr,frame,17,[<HTML><HEAD><TITLE>%s</TITLE><META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=iso-8859-1"><META HTTP-EQUIV="Content-Language" CONTENT="fr"></HEAD><BODY><H1>%s</H1>\nCe document a été déplacé à une nouvelle <a href="%s">adresse</a>. Veuillez mettre à jour vos documents et listes d'accès en conséquence.\n(This document has moved to a new location. Please update your documents and hotlists accordingly.</BODY></HTML>)]
-fr,frame,18,[<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=iso-8859-1"><META HTTP-EQUIV="Content-Language" CONTENT="fr"><TITLE>%s</TITLE></HEAD>\n<BODY><H1>%s</H1>\n%s\n</BODY></HTML>]
-fr,frame,19,[process-uri-objects]
-fr,frame,20,[cannot find template %s]
-fr,frame,21,[process-uri-objects]
-fr,frame,22,[no partial path after object processing]
-fr,frame,23,[find-service]
-fr,frame,24,[invalid shexp %s]
-fr,frame,25,[find-service]
-fr,frame,26,[invalid shexp %s]
-fr,frame,27,[handle-processed]
-fr,frame,28,[no way to service request for %s]
-fr,frame,29,[finish-socks-request]
-fr,frame,30,[close failed (%s), csd=%d]
-fr,frame,31,[This beta software has expired.\n]
-fr,frame,32,[mr_accept(%d)]
-fr,frame,33,[Error issuing read on accept socket]
-fr,frame,34,[acb_accept_connection(%d)]
-fr,frame,35,[Error getting accept socket (%d)]
-fr,frame,36,[Error in accept! (%d, %s)]
-fr,frame,37,[Error creating new accept request]
-fr,frame,38,[accepted connection: %d (NSPR %d)]
-fr,frame,39,[Error creating new session structure]
-fr,frame,40,[accel_read_request()]
-fr,frame,41,[Error allocating request read buffer]
-fr,frame,42,[Error issuing async read request]
-fr,frame,43,[acb_read_request(%d, bytes %d)]
-fr,frame,44,[acb_read_req(1 session = %d)]
-fr,frame,45,[Error reading request (%d, %s)]
-fr,frame,46,[Client aborted connection]
-fr,frame,47,[Error reading request]
-fr,frame,48,[Error creating new request]
-fr,frame,49,[error occurred, closing %d, io was for %d]
-fr,frame,50,[accel_async_scan_headers()]
-fr,frame,51,[out of memory: accel_async_scan_headers]
-fr,frame,52,[out of memory: accel_async_scan_headers]
-fr,frame,53,[Error during async read (%d, %s)]
-fr,frame,54,[scan-headers reports: line too long]
-fr,frame,55,[scan-headers reports: too many headers]
-fr,frame,56,[Error reading headers]
-fr,frame,57,[scan-headers reports: header missing terminator (an empty line)]
-fr,frame,58,[scan-headers reports: header was empty]
-fr,frame,59,[nom sans valeur: obtention de la ligne "%s"\n(name without value: got line as shown)]
-fr,frame,60,[accel_send_plain_file()]
-fr,frame,61,[accel_send_plain_file() - found request %d]
-fr,frame,62,[Parse headers lost the URI!]
-fr,frame,63,[accel_send_plain_file() - found uri %s]
-fr,frame,64,[accel_send_plain_file() - found in cache?]
-fr,frame,65,[malloc died!]
-fr,frame,66,[Error writing back file\n]
-fr,frame,67,[acb_send_plain_file(%d)]
-fr,frame,68,[Error writing in acb_send_plain_file (%d, %s)]
-fr,frame,69,[acb_close_connection(%d)]
-fr,frame,70,[Errored IO in acb_close_connection (%d, %s)]
-fr,frame,71,[Unable to close socket %d]
-fr,frame,72,[accel-cache-insert: Error allocating entry]
-fr,frame,73,[cache-init: server cache disabled]
-fr,frame,74,[accel_file_cache: Error initializing file cache]
-fr,frame,75,[accel_file_cache: Error creating cache]
-fr,frame,76,[accel_file_cache_init: CacheHashSize < %d, using %d]
-fr,frame,77,[accel_file_cache_init: CacheHashSize > %d, using %d]
-fr,frame,78,[accel_file_cache_init: MaxNumberOfCachedFiles < %d, using %d]
-fr,frame,79,[accel_file_cache_init: MaxNumberOfCachedFiles > %d, using %d]
-fr,frame,80,[accel_file_cache_init: MaxNumberOfOpenCachedFiles < %d, using %d]
-fr,frame,81,[accel_file_cache_init: MaxNumberOfOpenCachedFiles > %d, using %d]
-fr,frame,82,[accel_file_cache: Error initializing file cache]
-fr,frame,83,[file-cache: enabled = %s ]
-fr,frame,84,[on]
-fr,frame,85,[off]
-fr,frame,86,[file-cache: MaxNumberOfCachedFiles %d (0x%x)]
-fr,frame,87,[file-cache: CacheHashSize %d (0x%x)]
-fr,frame,88,[file-cache: MaxNumberOfOpenCachedFiles %d (0x%x)]
-fr,frame,89,[accel-cache-insert: Error allocating entry]
-fr,frame,90,[file-cache-cleanup: munmap failed (%s)]
-fr,frame,91,[file-cache-cleanup: found mmapped file \non system without mmap]
-fr,frame,92,[file_cache_init: MaxTotalCachedFileSize < %d, using %d]
-fr,frame,93,[file_cache_init: MaxTotalCachedFileSize > %d, using %d]
-fr,frame,94,[file cache using mmap flags 0x%x]
-fr,frame,95,[file cache using mmap prots 0x%x]
-fr,frame,96,[file-cache-init: could not create lock]
-fr,frame,97,[file-cache: unable to create temporary directory %s.\n]
-fr,frame,98,[file-cache: unable to create temporary directory %s.\n]
-fr,frame,99,[file-cache: GetTempPath() Cannot find temp directory to store file!]
-fr,frame,100,[file-cache-init: set max cached file size to %d]
-fr,frame,101,[file-cache-init: could not create lock]
-fr,frame,102,[file_cache_destroy()]
-fr,frame,103,[file-cache: Unable to get temp file name. Error %s]
-fr,frame,104,[file-cache: Unable to get temp file name. Error %s]
-fr,frame,105,[file-cache-insert: Error allocating entry]
-fr,frame,106,[file-cache-create: Error opening file %s (%s)]
-fr,frame,107,[file-cache-create: Error stat()ing file %s (%s)]
-fr,frame,108,[file-cache-create: Error mmap()ing file %s (%s)]
-fr,frame,109,[file-cache-create: malloc failure]
-fr,frame,110,[file-cache-create: error case failed to munmap(%d, %d) (%s)]
-fr,frame,111,[file-cache-valid: cannot stat %s]
-fr,frame,112,[dir change: invalidating %s (%d)]
-fr,frame,113,[file-cache: asynchronous file change notification failed.]
-fr,frame,114,[dir change: offset %d, action %d, len %d, name %s]
-fr,frame,115,[unable to check async file status]
-fr,frame,116,[ReadDirectoryChangesW failure- unable to continue watching %s. Error is %s]
-fr,frame,117,[file-cache-add-watch failure- unable to open directory %s. Error %s]
-fr,frame,118,[ReadDirectoryChangesW failure- unable to start watching %s. Error %s]
-fr,frame,119,[func_exec]
-fr,frame,120,[no handler function given for directive]
-fr,frame,121,[func_exec]
-fr,frame,122,[cannot find function named %s]
-fr,frame,123,[handle-request]
-fr,frame,124,[method without URI]
-fr,frame,125,[http-parse-request]
-fr,frame,126,[while scanning HTTP headers, %s]
-fr,frame,127,[handle-request]
-fr,frame,128,[read from %s failed, error is %s]
-fr,frame,129,[handle-request]
-fr,frame,130,[request too long]
-fr,frame,131,[start-http-response]
-fr,frame,132,[write failed (%s)]
-fr,frame,133,[start-http-response]
-fr,frame,134,[write failed (%s)]
-fr,frame,135,[http-status]
-fr,frame,136,[%d is not a valid HTTP status code]
-fr,frame,137,[finish-request]
-fr,frame,138,[close failed (%s)]
-fr,frame,139,[Unable to close socket for writing]
-fr,frame,140,[os has %d objects]
-fr,frame,141,[obj %d has no hash table at %d]
-fr,frame,142,[obj %d has no param]
-fr,frame,143,[obj %d name %s value %s]
-fr,frame,144,[.....directives %d.......]
-fr,frame,145,[.....directive %d]
-fr,frame,146,[.......instance %d]
-fr,frame,147,[...........param name %s value %s]
-fr,frame,148,[ClearConfigurationParameters:RegCreateKey %s]
-fr,frame,149,[ClearConfigurationParameters:RegEnumKey %s failed]
-fr,frame,150,[obj.conf line %d: error in filter file "%s" at line %d: %s]
-fr,frame,151,[obj.conf line %d: error in filter file "%s" at line %d: %s]
-fr,frame,152,[Unable to allocate Subject property list.\n]
-fr,frame,153,[Unable to set session ptr in Subject property list - error=%d\n]
-fr,frame,154,[Unable to set request ptr in Subject property list - error=%d\n]
-fr,frame,155,[file-cache-valid: cannot stat %s]
-fr,frame,156,[file-cache-create: Error stat()ing file %s (%s)]
-fr,httpdaemon,-1,[$DBT: httpdaemon in DB file v1 $]
-fr,httpdaemon,1,[Error in ConvertThreadToFiber]
-fr,httpdaemon,2,[Error in ConvertThreadToFiber]
-fr,httpdaemon,3,[Error in md_start_system]
-fr,httpdaemon,4,[Error in CreateFiber - idlefiber]
-fr,httpdaemon,5,[Error in GetQueuedCompletionStatus]
-fr,httpdaemon,6,[Error creating completion port]
-fr,httpdaemon,7,[Could not SetHandleNonInheritable (%s)]
-fr,httpdaemon,8,[Error accept/read new conn]
-fr,httpdaemon,9,[Error in Respond()]
-fr,httpdaemon,10,[Error in RespondCompleted()]
-fr,httpdaemon,11,[daemon: unable to fork new process (%s)\n]
-fr,httpdaemon,12,[daemon: setsid failed (%s)\n]
-fr,httpdaemon,13,[daemon: can't log pid to %s (%s)\n]
-fr,httpdaemon,14,[warning: could not set group id to %d (%s)\n]
-fr,httpdaemon,15,[warning: could not set user id to %d (%s)\n]
-fr,httpdaemon,16,[warning: daemon is running as super-user\n]
-fr,httpdaemon,17,[could not determine current user name\n]
-fr,httpdaemon,18,[error: chroot to %s failed (%s)\n]
-fr,httpdaemon,19,[WARNING! netscape executable and library have different versions.\n]
-fr,httpdaemon,20,[startup: listening to %s://%s, port %d as %s\n]
-fr,httpdaemon,21,[startup: listening to %s://%s, port %d as %s\n]
-fr,httpdaemon,22,[seminit failed (%s)\n]
-fr,httpdaemon,23,[Using single threaded accepts.]
-fr,httpdaemon,24,[Using multi threaded accepts.]
-fr,httpdaemon,25,[Using partial single threaded accepts.]
-fr,httpdaemon,26,[This machine has %d processors.]
-fr,httpdaemon,27,[Error calling thr_seconcurrency(%d)- (%s)]
-fr,httpdaemon,28,[Set conncurrency to %d.]
-fr,httpdaemon,29,[can't fork new process (%s)]
-fr,httpdaemon,30,[This beta software has expired.\n]
-fr,httpdaemon,31,[can't create IPC pipe (%s)]
-fr,httpdaemon,32,[write to wakeup pipe failed (%s)]
-fr,httpdaemon,33,[select thread miss]
-fr,httpdaemon,34,[startup failure: could not bind to port %d (%s)\n]
-fr,httpdaemon,35,[startup failure: could not bind to port %d, IP address %s (%s)\n]
-fr,libaccess,-1,[$DBT: libaccess in DB file v1 $]
-fr,libaccess,1,[basic-ncsa]
-fr,libaccess,2,[cannot open database %s]
-fr,libaccess,3,[basic-ncsa]
-fr,libaccess,4,[user %s password did not match database %s]
-fr,libaccess,5,[basic-ncsa]
-fr,libaccess,6,[cannot open connection to LDAP server on %s:%d]
-fr,libaccess,7,[basic-ncsa]
-fr,libaccess,8,[user %s password did not match LDAP on %s:%d]
-fr,libaccess,9,[acl-state]
-fr,libaccess,10,[missing realm]
-fr,libaccess,11,[Unable to allocate ACL List Hash\n]
-fr,libaccess,12,[ACLEvalBuildContext unable to PERM_MALLOC cache structure\n]
-fr,libaccess,13,[ACLEvalBuildContext unable to create hash table\n]
-fr,libaccess,14,[ACLEvalBuildContext unable to allocate ACE Entry\n]
-fr,libaccess,15,[ACLEvalBuildContext unable to allocate ACE entry\n]
-fr,libaccess,16,[ACLEvalBuildContext unable to allocate Boundary Entry\n]
-fr,libaccess,17,[ACLEvalBuildContext failed.\n]
-fr,libaccess,18,[ACL_EvalTestRights: an interim, absolute non-allow value was encountered. right=%s, value=%d\n]
-fr,libaccess,19,[LASDnsBuild unable to allocate hash table header\n]
-fr,libaccess,20,[LASDnsBuild unable to add key %s\n]
-fr,libaccess,21,[LASDnsBuild unable to add key %s\n]
-fr,libaccess,22,[LASDnsBuild unable to add key %s\n]
-fr,libaccess,23,[LASDnsBuild unable to add key %s\n]
-fr,libaccess,24,[LASDnsBuild unable to add key %s\n]
-fr,libaccess,25,[LAS DNS build received request for attribute %s\n]
-fr,libaccess,26,[LASDnsEval - illegal comparator %s\n]
-fr,libaccess,27,[LASDnsEval unable to allocate Context struct\n\n]
-fr,libaccess,28,[LASDnsEval unable to get session address %d\n]
-fr,libaccess,29,[LASDnsEval unable to get DNS - error=%s\n]
-fr,libaccess,30,[LAS Group Eval received request for attribute %s\n]
-fr,libaccess,31,[LASGroupEval - illegal comparator %s\n]
-fr,libaccess,32,[LASGroupEval - ran out of memory\n]
-fr,libaccess,33,[LASGroupEval unable to get session address %d\n]
-fr,libaccess,34,[LASGroupEval unable to get session address %d\n]
-fr,libaccess,35,[LASGroupEval - couldn't locate getter for auth-user\n]
-fr,libaccess,36,[LASGroupEval - Attribute getter for auth-user failed\n]
-fr,libaccess,37,[LASGroupEval - Attribute getter didn't set auth-user\n]
-fr,libaccess,38,[Check group membership of user "%s" for group "%s"\n]
-fr,libaccess,39,[LDAPU_SUCCESS for group "%s"\n]
-fr,libaccess,40,[LDAPU_FAILED for group "%s"\n]
-fr,libaccess,41,[LAS_EVAL_FALSE\n]
-fr,libaccess,42,[LAS_EVAL_TRUE\n]
-fr,libaccess,43,[LASIpTreeAlloc - no memory\n]
-fr,libaccess,44,[IP LAS unable to allocate tree node\n]
-fr,libaccess,45,[IP LAS unable to allocate tree node\n]
-fr,libaccess,46,[LAS IP build received request for attribute %s\n]
-fr,libaccess,47,[LASIpEval - illegal comparator %s\n]
-fr,libaccess,48,[LASIpEval unable to get session address - error=%s\n]
-fr,libaccess,49,[LASIpEval unable to allocate Context struct\n\n]
-fr,libaccess,50,[LASIpEval - reach 32 bits without conclusion value=%s]
-fr,libaccess,51,[LAS Program Eval received request for attribute %s\n]
-fr,libaccess,52,[LASProgramEval - illegal comparator %s\n]
-fr,libaccess,53,[LASProgram unable to get session address %d\n]
-fr,libaccess,54,[bin]
-fr,libaccess,55,[LASProgramEval: request not of type admin or bin, passing.\n]
-fr,libaccess,56,[LASProgramEval: check if program %s matches pattern %s.\n]
-fr,libaccess,57,[LASProgramEval: Invalid wildcard expression %s.\n]
-fr,libaccess,58,[LAS_EVAL_FALSE\n]
-fr,libaccess,59,[LAS_EVAL_TRUE\n]
-fr,libaccess,60,[Unexpected attribute in dayOfWeek - %s\n]
-fr,libaccess,61,[Illegal comparator for dayOfWeek - %s\n]
-fr,libaccess,62,[Unexpected attribute in timeOfDay - %s\n]
-fr,libaccess,63,[LAS User Eval received request for attribute %s\n]
-fr,libaccess,64,[LASUserEval - illegal comparator %s\n]
-fr,libaccess,65,[LASUserEval - ran out of memory\n]
-fr,libaccess,66,[LASUserEval unable to get session address %d\n]
-fr,libaccess,67,[LASUserEval unable to get session address %d\n]
-fr,libaccess,68,[LASGroupEval - couldn't locate getter for auth-user\n]
-fr,libaccess,69,[LASGroupEval - Attribute getter for auth-user failed\n]
-fr,libaccess,70,[LASGroupEval - Attribute getter didn't set auth-user\n]
-fr,libaccess,71,[Check if uid == user (i.e. check "%s" == "%s)"\n]
-fr,libaccess,72,[SUCCESS for user "%s"\n]
-fr,libaccess,73,[FAILED for user "%s"\n]
-fr,libaccess,74,[LAS_EVAL_FALSE\n]
-fr,libaccess,75,[LAS_EVAL_TRUE\n]
-fr,libaccess,76,[]
-fr,libaccess,77,[LASProgram unable to get request address - error=%s]
-fr,libaccess,78,[LASProgram rejecting request for program %s from pattern %s]
-fr,libaccess,79,[ACL_CacheFlush: unable to parse file "%s"\n]
-fr,libaccess,80,[ACL_CacheFlush: unable to concatenate ACL list "%s"\n]
-fr,libaccess,81,[ACL_CacheFlush: unable to open and process the magnus file "%s"\n]
-fr,libaccess,82,[Illegal comparator for timeOfDay - %s\n]
-fr,libaccess,83,[ACL_EvalBuildContext unable to create hash table\n]
-fr,libaccess,84,[ACL_EvalBuildContext unable to PERM_CALLOC cache structure\n]
-fr,libaccess,85,[ACL_EvalBuildContext unable to allocate ACE entry\n]
-fr,libaccess,86,[ACL_EvalBuildContext unable to allocate auth pointer array\n]
-fr,libaccess,87,[ACL_EvalBuildContext unable to allocate auth plist\n]
-fr,libaccess,88,[ACL_EvalTestRights: an interim, absolute non-allow value was encountered. right=%s, value=%s\n]
-fr,libaccess,89,[ACL_INTEvalTestRights: call to ACL_EvalBuildContext returned failure status\n]
-fr,libaccess,90,[ACL_ModuleRegister: module name is missing\n]
-fr,libaccess,91,[ACL_ModuleRegister: call to module init function returned a failed status\n]
-fr,libaccess,92,[ACL_GetAttribute: couldn't determine method for %s\n]
-fr,libaccess,93,[ACL_GetAttribute: couldn't locate getter for %s]
-fr,libaccess,94,[ACL_GetAttribute: attr getter failed to get %s]
-fr,libaccess,95,[ACL_GetAttribute: attr getter failed to get %s]
-fr,libaccess,96,[ACL_GetAttribute: All attribute getters declined for attr %s]
-fr,libaccess,97,[ACL_DatabaseRegister: dbtype for database "%s" is not defined yet!]
-fr,libaccess,98,[ACL_DatabaseRegister: database name is missing]
-fr,libaccess,99,[Error reading the DB Map File: %s. Reason: %s]
-fr,libaccess,100,[URL is missing for database %s]
-fr,libaccess,101,[Invalid property value pair for database %s]
-fr,libaccess,102,["default" database must be an LDAP database]
-fr,libaccess,103,[Multiple "default" databases are being registered]
-fr,libaccess,104,["default" LDAP database must be registered]
-fr,libaccess,105,[LASGroupEval unable to get database name - error= %s]
-fr,libaccess,106,[received invalid program expression %s]
-fr,libaccess,107,[parse_ldap_url: database url is missing]
-fr,libaccess,108,[parse_ldap_url: database name is missing]
-fr,libaccess,109,[parse_ldap_url: error in parsing ldap url. Reason: %s]
-fr,libaccess,110,[ldap password check: unable to get database name - error=%s]
-fr,libaccess,111,[ldap password check: unable to get parsed database %s]
-fr,libaccess,112,[ldap password check: couldn't initialize connection to LDAP. Reason: %s]
-fr,libaccess,113,[ldap password check: LDAP error: "%s"]
-fr,libaccess,114,[get_user_ismember_ldap unable to get database name - error=%s]
-fr,libaccess,115,[get_user_ismember_ldap unable to get parsed database %s]
-fr,libaccess,116,[ldap password check: couldn't initialize connection to LDAP. Reason: %s]
-fr,libaccess,117,[get_user_ismember_ldap: group %s does not exist]
-fr,libaccess,118,[get_user_ismember_ldap: LDAP error: "%s"]
-fr,libaccess,119,[ACL_LDAPDatabaseHandle: %s is not a registered database]
-fr,libaccess,120,[ACL_LDAPDatabaseHandle: %s is not an LDAP database]
-fr,libaccess,121,[ACL_LDAPDatabaseHandle: out of memory]
-fr,libaccess,122,[ACL_LDAPDatabaseHandle: couldn't initialize connection to LDAP. Reason: %s]
-fr,libaccess,123,[ACL_LDAPDatabaseHandle: couldn't bind to LDAP server. Reason: %s]
-fr,libaccess,124,[insufficient dynamic memory]
-fr,libaccess,125,[error opening file, %s: %s]
-fr,libaccess,126,[duplicate definition of %s]
-fr,libaccess,127,[file %s, line %s: duplicate definition of %s]
-fr,libaccess,128,[file %s, line %s: syntax error]
-fr,libaccess,129,[file %s, line %s: %s is undefined]
-fr,libaccess,130,[in acl %s, %s %s is undefined]
-fr,libaccess,131,[database %s: error accessing %s]
-fr,libaccess,132,[%s]
-fr,libaccess,133,[file %s, line %s: invalid syntax]
-fr,libaccess,134,[file %s, line %s: syntax error at "%s"]
-fr,libaccess,135,[realm %s is not defined]
-fr,libaccess,136,[error code = %d]
-fr,libaccess,137,[internal ACL error]
-fr,libaccess,138,[invalid argument]
-fr,libaccess,139,[ACL_DatabaseRegister: dbtype for database "%s" is not defined yet!]
-fr,libaccess,140,[couldn't determine dbtype from: %s]
-fr,libaccess,141,[Failed to register database %s]
-fr,libaccess,142,[ACL call returned failed status]
-fr,libaccess,143,[file %s: ACL IO error - %s]
-fr,libaccess,144,[acl_user_exists: mémoire insuffisante]
-fr,libaccess,145,[acl_user_exists: l'utilisateur n'existe plus]
-fr,libaccess,146,[acl_user_exists: erreur de plist]
-fr,libadmin,-1,[$DBT: libadmin in DB file v1 $]
-fr,libadmin,1,[ Help ]
-fr,libadmin,2,[ OK ]
-fr,libadmin,3,[ Reset ]
-fr,libadmin,4,[ Done ]
-fr,libadmin,5,[ Cancel ]
-fr,libir,-1,[$DBT: libadmin in DB file v1 $]
-fr,libir,1,[An I/O error occurred before all form data could be read.]
diff --git a/l10n/dirserv/fr/ns-slapd.txt.iso8859 b/l10n/dirserv/fr/ns-slapd.txt.iso8859
deleted file mode 100644
index b774adf5..00000000
--- a/l10n/dirserv/fr/ns-slapd.txt.iso8859
+++ /dev/null
@@ -1,924 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-/**************************************************************************/
-/* The copyright notice(s) in this Source Code does not indicate actual */
-/* or intended publication of this Source Code. */
-/**************************************************************************/
-
-/* This text file was generated by program dblink */
-
-$Revision: 1.4 $
-$Log: ns-slapd.txt.iso8859,v $
-Revision 1.4 2005/04/19 22:06:52 nkinder
-Fixed licensing typo
-
-Revision 1.3 2005/04/15 22:39:18 nkinder
-155068 - Added license to source files
-
-Revision 1.2 2005/02/28 23:37:40 nkinder
-149951 - Updated source code copyrights
-
-Revision 1.1.1.1 2005/01/21 00:40:48 cvsadm
-Moving NSCP Directory Server from DirectoryBranch to TRUNK, initial drop. (foxworth)
-
-Revision 1.1.4.3 2003/09/22 19:36:43 ulfw
-Update copyright years from 2001 to 2001-2003
-
-Revision 1.1.4.2 2001/11/03 01:07:25 richm
-XXX use new copyright XXX
-
-Revision 1.1.4.1 1998/10/10 02:14:09 ggood
-Copy from Directory40RtmBranchpoint to DirectoryBranch
-
-Revision 1.1.2.4.2.2.6.1 1998/04/04 23:16:55 mcs
-merge changes made on directory31_rtm_branch into server4_directory_branch
-
-Revision 1.1.2.4.2.2.2.1 1998/02/24 05:51:57 noriko
-Synched with server3_i18npkg_branch
-
-Revision 1.1.2.6 1997/12/31 00:23:39 werudge
-Remove \n from dsgw,198 to fix JavaScript problem
-
-Revision 1.1.2.5 1997/12/19 02:03:54 werudge
-Based on en/ns-slapd.txt : 1.1.2.3
-daily 971113.1 SOLARIS-export-optimize-normal-slapd
-$EndLog$
-
-$StartStringData$
-
-fr,base,-1,[$DBT: base in DB file v1 $]
-fr,base,1,[mémoire insuffisante pour créer la table de hachage]
-fr,base,2,[mémoire insuffisante pour créer la table de hachage ]
-fr,base,3,[cache_destroy : les tables du cache semblent corrompues.]
-fr,base,4,[impossible d´allouer l´entrée de hachage]
-fr,base,5,[cache_insert : impossible de créer l´entrée de cache]
-fr,base,6,[HTTP/1.0 200 OK\nContent-type: text/html\n\n]
-fr,base,7,[<H2>Rapport d'état du cache Netscape\n(Netscape cache status report)</H2>\n]
-fr,base,8,[Aucun cache sur le système (No caches on system)<P>]
-fr,base,9,[<H2>cache %s</H2>\n]
-fr,base,10,[Rapport de connexions au cache: %d/%d (%f)\n(Cache hit ratio: as shown)</P>\n</P>\n]
-fr,base,11,[Taille du cache: %d/%d\n(Cache size: as shown)</P>\n</P>\n]
-fr,base,12,[Taille de la table de hachage: %d\n(Hash table size: as shown)</P>\n</P>\n]
-fr,base,13,[mru : %d</P>\nlru : %d</P>\n]
-fr,base,14,[<UL><TABLE BORDER=4> <TH>Compartiment (Bucket)</TH> <TH>Adresse (Address)</TH> <TH>Clef (Key)</TH> <TH>Nombre d'accès (Access Count)</TH> <TH>Supprimer (Delete)</TH> <TH>Suivant (Next)</TH> <TH>LRU</TH> <TH>MRU</TH> <TH>Données (Data)</TH>\n]
-fr,base,15,[munmap failed (%s)]
-fr,base,16,[munmap failed (%s)]
-fr,base,17,[close failed (%s)]
-fr,base,18,[daemon: unable to fork new process (%s)\n]
-fr,base,19,[daemon: setsid failed (%s)\n]
-fr,base,20,[daemon: can't log pid to %s (%s)\n]
-fr,base,21,[warning: could not set group id to %d (%s)\n]
-fr,base,22,[warning: could not set user id to %d (%s)\n]
-fr,base,23,[warning: daemon is running as super-user\n]
-fr,base,24,[could not determine current user name\n]
-fr,base,25,[error: chroot to %s failed (%s)\n]
-fr,base,27,[, address %s]
-fr,base,28,[warning: statistics disabled (%s)\n]
-fr,base,29,[security handshake timed out for pid %d]
-fr,base,30,[warning: statistics disabled (%s)\n]
-fr,base,31,[secure handshake failed (code %d)\n]
-fr,base,32,[accept failed (%s)]
-fr,base,33,[warning: statistics disabled (%s)\n]
-fr,base,34,[select thread miss]
-fr,base,35,[keepalive worker awoken with no work to do]
-fr,base,36,[could not create new thread: %d (%s)]
-fr,base,37,[wait for sema succeeded, but nothing to dequeue]
-fr,base,38,[queue-sema creation failure]
-fr,base,39,[error getting processor info for processor %d]
-fr,base,40,[Error binding to processor %d]
-fr,base,41,[bound process %d to processor %d]
-fr,base,42,[Netscape server is not explicitly binding to any processors.]
-fr,base,43,[cache monitor exited]
-fr,base,44,[cache batch update daemon exited]
-fr,base,45,[Using single threaded accepts.]
-fr,base,46,[Using multi threaded accepts.]
-fr,base,47,[Using partial single threaded accepts.]
-fr,base,48,[This machine has %d processors.]
-fr,base,49,[Error calling thr_seconcurrency(%d)- (%s)]
-fr,base,50,[Set conncurrency to %d.]
-fr,base,51,[WARNING! netscape executable and library have different versions.\n]
-fr,base,54,[seminit failed (%s)\n]
-fr,base,55,[This beta software has expired.\n]
-fr,base,56,[Cache monitor respawned]
-fr,base,57,[Cache batch update daemon respawned]
-fr,base,58,[can't find empty statistics slot]
-fr,base,59,[can't fork new process (%s)]
-fr,base,60,[assert failed! %s\n]
-fr,base,61,[mr_table_init()]
-fr,base,62,[malloc failed]
-fr,base,63,[malloc failed!]
-fr,base,64,[mr_add_io(%d, type %d, file %d)]
-fr,base,65,[mr_add_io - stage 1]
-fr,base,66,[mr_add_io - stage 2]
-fr,base,67,[mr_add_io found invalid IO type %d]
-fr,base,68,[mr_add_io - adding timeout]
-fr,base,69,[Out of memory!\n]
-fr,base,70,[done with mr_add_io]
-fr,base,71,[mr_del_io(%d, type %d, file %d)]
-fr,base,72,[mr_del_io found invalid IO type %d]
-fr,base,73,[mr_lookup_io(%d)]
-fr,base,74,[mr_async_io(%d, %d bytes, file %d)]
-fr,base,75,[malloc failure adding async IO]
-fr,base,76,[Error adding async io!]
-fr,base,77,[Cannot seek for read!]
-fr,base,78,[read failure! (%d, %s)]
-fr,base,79,[do_read read %d bytes for file %d]
-fr,base,80,[Cannot seek for write!]
-fr,base,81,[writev failure! (%d, %s)]
-fr,base,82,[write failure! (%d, %s)]
-fr,base,83,[do_write wrote %d bytes for file %d]
-fr,base,84,[do_timeout(mrp %d)]
-fr,base,85,[do_timeout: found IO (timer=%d, time=%d)]
-fr,base,86,[error deleting io]
-fr,base,87,[timeout callback failure for %d\n]
-fr,base,88,[mr_get_event(%d) - outstanding io %d]
-fr,base,89,[mr_get_event: Waiting for reads on FD:]
-fr,base,90,[mr_get_event: Waiting for writes on FD:]
-fr,base,91,[ %d]
-fr,base,92,[ %d]
-fr,base,93,[mr_get_event set no timeout]
-fr,base,94,[mr_get_event set timeout to: %d.%d sec]
-fr,base,95,[error in select (%d, %s)]
-fr,base,96,[mr_get_event() - select found %d]
-fr,base,97,[error looking up IO fd %d]
-fr,base,98,[read failed for fd %d]
-fr,base,99,[error deleting io]
-fr,base,100,[callback failure for %d\n]
-fr,base,101,[error looking up IO fd %d]
-fr,base,102,[writing: header len %d, writelen %d, total %d]
-fr,base,103,[write failed for fd %d]
-fr,base,104,[error deleting io]
-fr,base,105,[callback failure for %d\n]
-fr,base,106,[Error creating dns cache]
-fr,base,107,[dns_cache_init: hash_size <= 0, using %d]
-fr,base,108,[dns_cache_init: cache-size <= %d, using %d]
-fr,base,109,[dns_cache_init: cache-size is %d is too large, using %d.]
-fr,base,110,[dns_cache_init: expire_time <= 0, using %d]
-fr,base,111,[dns_cache_init: expire is %d is too large, using %d seconds.]
-fr,base,112,[Error creating dns cache]
-fr,base,113,[dns-cache-insert: Error allocating entry]
-fr,base,114,[dns-cache-insert: malloc failure]
-fr,base,115,[successful server startup]
-fr,base,116,[%s B%s]
-fr,base,117,[Netscape executable and shared library have different versions]
-fr,base,118,[ executable version is %s]
-fr,base,119,[ shared library version is %s]
-fr,base,120,[error reporting shutting down]
-fr,base,121,[warning]
-fr,base,122,[config]
-fr,base,123,[security]
-fr,base,124,[failure]
-fr,base,125,[catastrophe]
-fr,base,126,[info]
-fr,base,127,[verbose]
-fr,base,128,[event_handler:Failed to wait on events %s]
-fr,base,129,[could not wait on resume event event (%s)]
-fr,base,130,[dlopen of %s failed (%s)]
-fr,base,131,[dlopen of %s failed (%s)]
-fr,base,132,[The server is terminating due to an error. Check the event viewer for the error message. SERVER EXITING!]
-fr,base,133,[Terminating the server %s]
-fr,base,134,[kill_server:cannot open server event %s]
-fr,base,135,[kill_server:cannot set server event %s]
-fr,base,136,[error: could not get socket (%s)\n]
-fr,base,137,[error: could not set socket option (%s)\n]
-fr,base,138,[Terminating Service:error: could not bind to address %s port %d (%s)\n]
-fr,base,139,[Terminating Service:error: could not bind to port %d (%s)\n]
-fr,base,140,[SetHandleNonInheritable: could not duplicate socket (%s)]
-fr,base,141,[SetHandleNonInheritable: closing the original socket failed (%s)]
-fr,base,142,[Could not SetHandleInformation (%s)]
-fr,base,143,[Terminating Service:Failure: Could not open statistics file (%s)\n]
-fr,base,144,[Could not set Thread Local Storage Value for thread at slot %d]
-fr,base,145,[secure handshake failed (code %d)\n]
-fr,base,146,[accept failed %d (%s)]
-fr,base,147,[Failed to pulse Event %d %s]
-fr,base,148,[Failed to send MobGrowth Event to parent %s]
-fr,base,149,[Pulsing MobRespawn Event %d]
-fr,base,150,[respawn thread pool to %d (%d)]
-fr,base,151,[Could not open event to signal rotate application. Could not create the MoveLog event:%s]
-fr,base,152,[Failed to send MoveLog Event to rotate app %s]
-fr,base,153,[growing thread pool from %d to %d]
-fr,base,154,[Could not open the ServiceControlManager, Error %d]
-fr,base,155,[StartNetsiteService:Could not open the service %s: Error %d]
-fr,base,156,[StartNetsiteService:Could not start the service %s]
-fr,base,157,[Service Startup: Could not allocate security descriptor]
-fr,base,158,[Service Startup: Could not init security descriptor]
-fr,base,159,[Service Startup: Could not set the security Dacl]
-fr,base,160,[Terminating Service:WinSock init failed: %s]
-fr,base,161,[Httpd Server Startup failed: %s]
-fr,base,162,[can't find empty statistics slot]
-fr,base,163,[NT daemon: could not create new thread %d]
-fr,base,164,[Service Startup Failure. Terminating Service:Could not create event %d:%s]
-fr,base,165,[Service Startup Error. Could not create the MoveLog event:%s]
-fr,base,166,[Failed to wait on Event objects %s]
-fr,base,167,[Failed to wait on Event objects %s]
-fr,base,168,[pipebuf_buf2sd: pipebuf_grab IO_ERROR %d]
-fr,base,169,[pool-init: memory pools disabled]
-fr,base,170,[pool-init: free_size <= 0, using %d]
-fr,base,171,[pool-create-block: out of memory]
-fr,base,172,[pool-create: out of memory]
-fr,base,173,[pool-create: out of memory]
-fr,base,174,[pool-malloc: out of memory]
-fr,base,175,[FREE() used where PERM_FREE() should have been used- problem corrected and supressing further warnings.]
-fr,base,176,[regex error: %s (regex: '%s')]
-fr,base,177,[can't create IPC pipe (%s)]
-fr,base,178,[write to wakeup pipe failed (%s)]
-fr,base,179,[flushing %d connections; current %d; tot %d]
-fr,base,180,[accept failed (%s)]
-fr,base,181,[Error creating time cache]
-fr,base,182,[time-cache: cache disabled]
-fr,base,183,[time_cache_init: hash_size < %d, using default, %d]
-fr,base,184,[time_cache_init: hash_size > %d, using default, %d]
-fr,base,185,[time_cache_init: cache_size < %d, using default, %d]
-fr,base,186,[time_cache_init: cache_size > %d, using default, %d]
-fr,base,187,[Error allocating memory for time_cache]
-fr,base,188,[Error allocating memory for time_cache entry]
-fr,base,189,[Error allocating memory for time_cache entry]
-fr,base,190,[Error inserting new time_cache entry]
-fr,base,191,[Error allocating memory for time_cache]
-fr,base,192,[cs-terminate failure (%s)]
-fr,base,193,[cs-init failure (%s)]
-fr,base,194,[cs-wait failure (%s)]
-fr,base,195,[cs-post failure (%s)]
-fr,base,196,[Unable to create nonblocking socket (%s)]
-fr,base,197,[error: could not set keepalive (%s)\n]
-fr,base,198,[error: could not set recv timeout (%s)\n]
-fr,base,199,[error: could not set send timeout (%s)\n]
-fr,base,200,[Unable to create nonblocking socket (%s)]
-fr,base,201,[sem_grab failed (%s)]
-fr,base,202,[sem_release failed (%s)]
-fr,base,203,[sem_release failed (%s)]
-fr,base,204,[Could not remove temporary directory %s, Error %d]
-fr,base,205,[Could not remove temporary directory %s, Error %d]
-fr,dsgw,-1,[$DBT: dsgw in DB file v1 $]
-fr,dsgw,1,[Méthode de demande HTTP inconnue (Unknown HTTP request method)]
-fr,dsgw,2,[Données HTML de formulaire non valides ou incomplètes (Invalid or incomplete HTML form data)]
-fr,dsgw,3,[Mémoire épuisée (Out of memory)]
-fr,dsgw,4,[L´entrée de requête/formulaire exigée est manquante (Required query/form input is missing)]
-fr,dsgw,5,[Caractère non autorisé dans le chemin d´accès au fichier (Illegal character in file path)]
-fr,dsgw,6,[Fichier de configuration erroné ou manquant (Bad or missing configuration file)]
-fr,dsgw,7,[Impossible d´initialiser LDAP (Unable to initialize LDAP)]
-fr,dsgw,8,[Une erreur est survenue lors du contact du serveur LDAP (An error occurred while contacting the LDAP server)]
-fr,dsgw,9,[Type d´objet de recherche inconnu (Unknown search object type)]
-fr,dsgw,10,[Etiquette d´attribut inconnue (Unknown attribute label)]
-fr,dsgw,11,[Invite de correspondance inconnue (Unknown match prompt)]
-fr,dsgw,12,[Aucun filtre de recherche pour ce type d´objet (No search filters for object type)]
-fr,dsgw,13,[Impossible d´ouvrir le fichier de modèle HTML (Unable to open HTML template file)]
-fr,dsgw,14,[Mode de recherche inconnu; utiliser "smart", "complex", "pattern" ou "auth" (Unknown search mode - use "smart", "complex", "pattern", or "auth")]
-fr,dsgw,15,[Nom distinctif manquant dans l´URL (Distinguished Name missing in URL)]
-fr,dsgw,16,[Portée inconnue dans l´URL (doit être: base, sub ou one) (Unknown scope in URL (should be base, sub, or one))]
-fr,dsgw,17,[URL non reconnu ou erreur inconnue (Unrecognized URL or unknown error)]
-fr,dsgw,18,[Format d´URL erroné (Bad URL format)]
-fr,dsgw,19,[Erreur interne (Internal error)]
-fr,dsgw,20,[Impossible d´écrire sur le fichier d´index de modèles (Unable to write template index file)]
-fr,dsgw,21,[Impossible d´ouvrir le fichier d´index de modèles (Unable to open template index file)]
-fr,dsgw,22,[Impossible de lire le répertoire (Unable to read directory)]
-fr,dsgw,23,[Echec de l´initialisation SSL LDAP (vérifiez le chemin de sécurité) (LDAP SSL initialization failed (check the security path))]
-fr,dsgw,24,[Pour que les formulaires d'utilisateurs et de groupes puissent fonctionner sur SSL avec Administration Server, vous-même ou l'administrateur de votre système devez activer SSL. La page Encryption|On/Off peut être utilisée à cette fin.\n(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]
-fr,dsgw,25,[Références d´authentification introuvables dans la base de données d´authentification (Authentication credentials not found in authentication database)]
-fr,dsgw,26,[Erreur de récupération des données depuis la base de données d´authentification (Error retrieving data from the authentication database)]
-fr,dsgw,27,[Vos références d´authentification ont expiré (Your authentication credentials have expired)]
-fr,dsgw,28,[Impossible de créer une chaîne aléatoire]
-fr,dsgw,29,[Aucun nom distinctif n´a été fourni lors du retrait des références (No distinguished name was provided when retrieving credentials)]
-fr,dsgw,30,[Impossible d´ouvrir la base de données d´authentification (Cannot open authentication database)]
-fr,dsgw,31,[Impossible d´annexer des données à la base de données d´authentification (Could not append data to the authentication database)]
-fr,dsgw,32,[Aucun gestionnaire de répertoires n´est défini (No Directory Manager is defined)]
-fr,dsgw,33,[Aucune chaîne de recherche n´a été fournie. Veuillez essayer à nouveau (No search string was provided. Please try again)]
-fr,dsgw,34,[Le fichier de configuration comporte trop d´arguments sur une ligne (Too many arguments on one line in the config. file)]
-fr,dsgw,35,[Echec de l´initialisation des sockets Windows (Failed to initialize Windows Sockets)]
-fr,dsgw,36,[Les références d´authentification n´ont pas pu être obtenues auprès d´Administration Server (Authentication credentials could not be obtained from the Administration Server)]
-fr,dsgw,37,[Nom distinctif manquant dans l´URL ldapdb:// (Distinguished Name missing in ldapdb:// URL)]
-fr,dsgw,38,[URL non reconnu ou erreur inconnue (Unrecognized URL or unknown error)]
-fr,dsgw,39,[Format d´URL erroné (Bad URL format)]
-fr,dsgw,40,[Une erreur est survenue lors de l'initialisation de la base de données LDAP locale\n(An error occurred while initializing the local LDAP database)]
-fr,dsgw,41,[Type de service de répertoires inconnu; utiliser "local" ou "remote" (Unknown directory service type - use "local" or "remote")]
-fr,dsgw,42,[Une erreur est survenue lors de la lecture du fichier de configuration db (An error occurred while reading the db configuration file)]
-fr,dsgw,43,[Le chemin d´accès à NSHOME/userdb était NULL (NSHOME/userdb path was NULL)]
-fr,dsgw,44,[Impossible de mettre à jour la configuration du service de répertoires. (The directory service configuration could not be updated.)]
-fr,dsgw,45,[Impossible de lire l´entrée à partir du répertoire. (The entry could not be read from the directory.)]
-fr,dsgw,46,[Impossible d´effacer la base de données LDAP. (The LDAP database could not be erased.)]
-fr,dsgw,47,[Vous pouvez seulement modifier les entrées que vous avez créées. (You may not change entries besides your own.)]
-fr,dsgw,48,[Problème (Problem)]
-fr,dsgw,49,[Problème d´authentification (Authentication Problem)]
-fr,dsgw,50,[.\n<P>Vous devez ré-authentifier avant de continuer. (You must re-authenticate before continuing.)\n]
-fr,dsgw,51,[.\n<P>Vous devez ré-authentifier avant de continuer. (You must re-authenticate before continuing.)\n]
-fr,dsgw,52,[erreur inconnue (unknown error)]
-fr,dsgw,53,[L´opération a réussi. (The operation was successful.)]
-fr,dsgw,54,[Une erreur interne est survenue sur le serveur. Ceci indique généralement une sérieuse défaillance du serveur et doit être immédiatement porté à l´attention de l´administrateur de votre serveur. (An internal error occurred in the server. This usually indicates a serious malfunction in the server and should be brought to the attention of your server administrator.)]
-fr,dsgw,55,[Le serveur n´a pas compris la demande qui lui a été transmise par la passerelle. (The server could not understand the request which was sent to it by the gateway.)]
-fr,dsgw,56,[La réponse à votre demande a dépassé le temps imparti. Si vous recherchez des entrées, vous obtiendrez sans doute de meilleurs résultats en étant plus précis dans votre recherche. (A time limit was exceeded in responding to your request. If you are searching for entries, you may achieve better results if you are more specific in your search.)]
-fr,dsgw,57,[La réponse à votre demande a dépassé la taille autorisée. Si vous recherchez des entrées, vous obtiendrez sans doute de meilleurs résultats en étant plus précis car trop d´entrées répondent à vos critères de recherche. (A size limit was exceeded in responding to your request. If you are searching for entries, you may achieve better results if you are more specific in your search, because too many entries matched your search criteria.)]
-fr,dsgw,58,[La passerelle a tenté d'authentifier l'accès au serveur en utilisant\nune méthode incomprise par ce dernier.\n(The gateway attempted to authenticate to the server using\na method the server doesn't understand.)]
-fr,dsgw,59,[La passerelle a tenté d´authentifier l´accès au serveur en utilisant une méthode d´authentification non supportée par le serveur. (The gateway attempted to authenticate to the server using an authentication method which the server does not support.)]
-fr,dsgw,60,[Impossible d´honorer votre demande, sans doute parce que le serveur contacté ne contient pas les données que vous recherchez. Il est possible qu´une orientation vers un autre serveur ait été renvoyée sans avoir pu être suivie. Si vous étiez en train d´essayer de modifier le répertoire, il se peut que le serveur contenant la copie maîtresse des données ne soit pas disponible. (Your request could not be fulfilled, probably because the server that was contacted does not contain the data you are looking for. It is possible that a referral to another server was returned but could not be followed. If you were trying to make changes to the directory, it may be that the server that holds the master copy of the data is not available.)]
-fr,dsgw,61,[Votre demande a dépassé une limite administrative sur le serveur. (Your request exceeded an administrative limit in the server.)]
-fr,dsgw,62,[Une extension importante demandée par la passerelle n´est pas disponible sur ce serveur. (A critical extension that the gateway requested is not available in this server.)]
-fr,dsgw,63,[Le serveur n'a pas pu traiter la demande car celle-ci\nrenvoie à un attribut inexistant dans\nl'entrée.\n(The server was unable to process the request, because the\nrequest referred to an attribute which does not exist in the\nentry.)]
-fr,dsgw,64,[Le serveur n´a pas pu répondre à votre demande, car \ncelle-ci va à l´encontre d´une contrainte de la base de données.\n(The server was unable to fulfill your request, because the\nrequest violates a constraint.)]
-fr,dsgw,65,[Le serveur n´a pas pu ajouter une valeur à cette entrée car elle la contient déjà. (The server could not add a value to the entry, because that value is already contained in the entry.)]
-fr,dsgw,66,[Le serveur n'a pas pu localiser l'entrée. Si vous ajoutez une nouvelle entrée,\nassurez-vous qu'elle comporte une entrée principale.\nLa réception de ce message d'erreur lors d'une recherche indique que l'entrée\nrecherchée n'existe pas.\nSi vous étiez en train d'essayer d'authentifier l'accès en tant que gestionnaire de répertoires et que vous\navez vu apparaître ce message, vérifiez le fichier de configuration de la passerelle.\n(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.)]
-fr,dsgw,67,[Le format d´un nom distinctif est incorrect. (A distinguished name was not in the proper format.)]
-fr,dsgw,68,[L´entrée que vous étiez en train d´essayer d´authentifier ne comporte pas de jeu de mots de passe, ou bien il lui manque d´autres références d´authentification requises. Pour que vous puissiez authentifier cette entrée, les attributs appropriés doivent avoir été ajoutés par le gestionnaire de répertoires. (The entry you attempted to authenticate as does not have a password set, or is missing other required authentication credentials. You cannot authenticate as that entry until the appropriate attributes have been added by the directory manager. )]
-fr,dsgw,69,[Le mot de passe (ou d'autres références d'authentification) que vous avez fourni\nest incorrect. (The password (or other authentication credentials) you supplied\nis incorrect. If you just changed your password, you might try exiting your browser and connecting again.)]
-fr,dsgw,70,[Vos privilèges sont insuffisants pour effectuer cette opération. (You do not have sufficient privileges to perform the operation.)]
-fr,dsgw,71,[Le serveur est trop occupé pour honorer votre demande. Essayez à nouveau dans quelques minutes. (The server is too busy to service your request. Try again in a few minutes.)]
-fr,dsgw,72,[Impossible de contacter le serveur LDAP. (The LDAP server could not be contacted.)]
-fr,dsgw,73,[Le serveur refuse de traiter votre demande. Cette dernière risquerait sans doute de le surcharger. Il se peut également qu´il ne soit pas configuré pour traiter votre demande. Si vous tentez d´effectuer une recherche, vous avez intérêt à en limiter la portée. (The server was unwilliing to process your request. Usually, this indicates that serving your request would put a heavy load on the server. It may also indicate that the server is not configured to process your request. If searching, you may wish to limit the scope of your search.)]
-fr,dsgw,74,[Le serveur de répertoires ne peut honorer votre demande car elle viole les exigences du schéma. Vous n´avez sans doute pas fourni de valeur pour un champ requis. Il se peut également que le schéma du serveur de répertoires nécessite une mise à jour. (The directory server could not honor your request because it violates the schema requirements. Typically, this means that you have not provided a value for a required field. It could also mean that the schema in the directory server needs to be updated.)]
-fr,dsgw,75,[Le serveur de répertoires ne vous permettra pas de supprimer ou de renommer une entrée qui comporte des sous-entrées. Si vous souhaitez continuer, vous devez d´abord supprimer toutes les sous-entrées. (The directory server will not allow you to delete or rename an entry if that entry has children. If you wish to do this, you must first delete all the child entries.)]
-fr,dsgw,76,[Le serveur ne peut ajouter une nouvelle entrée ni renommer une entrée existante car il existe déjà une entrée sous ce nom. (The server was unable to add a new entry, or rename an existing entry, because an entry by that name already exists.)]
-fr,dsgw,77,[Votre demande affecterait plusieurs serveurs de répertoires. (Your request would affect several directory servers.)]
-fr,dsgw,78,[Impossible de contacter le serveur de répertoires. Contactez\nl'administrateur de votre serveur de répertoires pour obtenir de l'aide.\n(The directory server could not be contacted. Contact your\ndirectory server administrator for assistance.)]
-fr,dsgw,79,[Une erreur est survenue lors de l´envoi de données au serveur. (An error occured while sending data to the server.)]
-fr,dsgw,80,[Une erreur est survenue lors de la lecture des données en provenance du serveur. (An error occured while reading data from the server.)]
-fr,dsgw,81,[Le serveur n´a pas répondu à la demande. La demande a dépassé le temps imparti. (The server did not respond to the request. The request timed out.)]
-fr,dsgw,82,[Le serveur ne supporte pas la méthode d´authentification utilisée par la passerelle. (The server does not support the authentication method used by the gateway.)]
-fr,dsgw,83,[Le filtre de recherche créé par la passerelle est erroné. (The search filter constructed by the gateway was in error.)]
-fr,dsgw,84,[L´opération a été annulée à votre demande. (The operation was cancelled at your request.)]
-fr,dsgw,85,[Une erreur interne est survenue dans la bibliothèque; un paramètre est incorrect. (An internal error occurred in the library - a parameter was incorrect.)]
-fr,dsgw,86,[Impossible d'ouvrir une connexion au serveur de répertoires. Contactez\nl'administrateur de votre serveur de répertoires pour obtenir de l'aide.\n(A connection to the directory server could not be opened. Contact your\ndirectory server administrator for assistance.)]
-fr,dsgw,87,[Une erreur inconnue est survenue. (An unknown error was encountered.)]
-fr,dsgw,88,[Cette entrée existe déjà (Entry Already Exists)]
-fr,dsgw,89,[Une entrée nommée (An entry named) ]
-fr,dsgw,90,[onMouseOver="window.status='Cliquez ici pour afficher cette entrée'; return true"\n(onMouseOver="window.status='Click here to view this entry'; return true")]
-fr,dsgw,91,[ existe déjà (already exists).<P>Veuillez choisir un autre nom et/ou une autre adresse.\n(Please choose another name and/or location.)\n<P>\n]
-fr,dsgw,92,[L´entrée principale n´existe pas (Parent entry does not exist)]
-fr,dsgw,93,[Impossible d´ajouter une entrée par le nom:<P><B>%s</B>,<P>\ncar il n´existe pas d´entrée principale.<P>\nPour pouvoir ajouter cette entrée, vous devez d´abord ajouter\n(You cannot add an entry by the name shown\nbecause the parent of that entry does not exist.<P>\nBefore you can add this entry, you must first add)\n]
-fr,dsgw,94,[l´entrée principale (its parent).\n]
-fr,dsgw,95,[une entrée nommée (an entry named):<P><B>%s</B>.\n]
-fr,dsgw,96,[Avertissement: pas d´authentification (continuation)...\n(Warning: no authentication (continuing)...)\n]
-fr,dsgw,97,[Entrée de répertoire %s (Directory Entry)]
-fr,dsgw,98,[<PRE>DN de l´entrée (Entry DN): %s</PRE><P>\n]
-fr,dsgw,99,[Les changements apportés à <B>%s</B> ont été enregistrés.]
-fr,dsgw,100,[<B>%s</B> has been added.]
-fr,dsgw,101,[<B>%s</B> has been deleted.]
-fr,dsgw,102,[Renamed <B>%s</B> to <B>%s</B>.]
-fr,dsgw,103,[<P><B>Remarque:</B> Parce que vous avez %s l´entrée pour laquelle vous étiez\nauthentifié, il a fallu mettre vos références \nd´authentification au rebut. Vous aurez besoin d´une nouvelle \nauthentification pour pouvoir apporter des modifications supplémentaires.\n(<B>Note:</B> because of your action on 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]
-fr,dsgw,104,[supprimé (deleted)]
-fr,dsgw,105,[renommé (renamed)]
-fr,dsgw,106,[a changé le mot de passe de (changed the password of)]
-fr,dsgw,107,[L´attribut %s a été changé<BR>\n(Attribute shown was changed<BR>)\n]
-fr,dsgw,108,[ NON ASCII (%ld octets)\n(NOT ASCII (number of bytes shown))\n]
-fr,dsgw,109,[Aucune valeur n´a été entrée. Veuillez essayer à nouveau.\n(No values were entered. Please try again.)\n]
-fr,dsgw,110,[Aucun changement n´a été apporté.\n]
-fr,dsgw,111,[<P>Envoi de %s au serveur de répertoires...\n]
-fr,dsgw,112,[informations (information)]
-fr,dsgw,113,[changements (changes)]
-fr,dsgw,114,[<P>L´ajout de cette entrée a réussi.\n(Successfully added entry.)\n]
-fr,dsgw,115,[<P>La modification de cette entrée a réussi. Vos changements ont été enregistrés.\n(Successfully edited entry. Your changes have been saved.)\n]
-fr,dsgw,116,[<P>La suppression de cette entrée a réussi.\n(Successfully deleted entry.)\n]
-fr,dsgw,117,[<PRE>Le nouveau nom de cette entrée est: %s\n(The new name for the entry is as shown)\n</PRE><HR>\n]
-fr,dsgw,118,[<P>Le renommage de cette entrée a réussi.\n(Successfully renamed entry.)\n]
-fr,dsgw,119,[Vous devez fournir l´ancien mot de passe.]
-fr,dsgw,120,[Vous devez spécifier un nouveau mot de passe. Essayez à nouveau.]
-fr,dsgw,121,[Le nouveau mot de passe et sa confirmation ne correspondent pas. Veuillez essayer à nouveau]
-fr,dsgw,122,[<BR>Le %s <B>%s</B> est déjà utilisé. Veuillez en choisir un autre.\n(The item shown is already in use. Please choose a different one.)<BR>\n]
-fr,dsgw,123,[élément "%.100s" de données de formulaire manquant\n(missing form data element shown)]
-fr,dsgw,124,[Initialisation des données de configuration\n(Initializing config info)]
-fr,dsgw,125,[Impossible d´ouvrir le fichier. (Cannot open file.)]
-fr,dsgw,126,[Fichier dbconf mal formé. (Malformed dbconf file.)]
-fr,dsgw,127,[Nom du propriétaire manquant dans le fichier dbconf.\n(Missing property name in dbconf file.)]
-fr,dsgw,128,[Mémoire épuisée. (Out of memory.)]
-fr,dsgw,129,[Directive manquante dans le fichier dbconf.\n(Missing directive in dbconf file.)]
-fr,dsgw,130,[Impossible d'ouvrir le fichier de configuration "%s"\n(Cannot open config file with name shown)\n]
-fr,dsgw,131,[Argument manquant pour la directive "authlifetime"\n(Missing argument for "authlifetime" directive)\n]
-fr,dsgw,132,[Argument manquant pour la directive "dirmgr"\n(Missing argument for "dirmgr" directive)\n]
-fr,dsgw,133,[Argument manquant pour la directive "baseurl"\n(Missing argument for "baseurl" directive)\n]
-fr,dsgw,134,[URL erroné fourni pour la directive "baseurl"; le DN de base est manquant\n(Bad URL provided for "baseurl" directive - the base DN is missing)\n]
-fr,dsgw,135,[analyse de la directive baseurl\n(parsing baseurl directive)]
-fr,dsgw,136,[URL erroné fourni pour la directive "baseurl"; pas un URL "ldap://"\n(Bad URL provided for "baseurl" directive - not an "ldap://" URL)\n]
-fr,dsgw,137,[Les URL "ldaps://" ne sont pas encore supportés\n("ldaps://" URLs are not yet supported)\n]
-fr,dsgw,138,[Arguments manquants pour la directive "template"\n(Missing arguments for "template" directive)\n]
-fr,dsgw,139,[Argument manquant pour la directive "sslrequired"\n(Missing argument for "sslrequired" directive)\n]
-fr,dsgw,140,[Argument inconnu pour la directive "sslrequired" (l´argument doit être "never", "whenauthenticated", "always")\n(Unknown argument to "sslrequired" directive (should be "never", "whenauthenticated", "always"))\n]
-fr,dsgw,141,[Argument manquant pour la directive "securitypath"\n(Missing argument for "securitypath" directive)\n]
-fr,dsgw,142,[Argument manquant pour la directive "location-suffix"\n(Missing argument for "location-suffix" directive)\n]
-fr,dsgw,143,[Trois arguments sont requis pour la directive "location"\n(Three arguments are required for the "location" directive)\n]
-fr,dsgw,144,[Au moins deux arguments sont requis pour la directive "newtype"\n(At least two arguments are required for the "newtype" directive)\n]
-fr,dsgw,145,[Adresse inconnue dans la directive "newtype"\n(Unknown location in "newtype" directive)\n]
-fr,dsgw,146,[Trois ou quatre arguments sont requis pour la directive "tmplset"\n(Three or four arguments are required for the "tmplset" directive)\n]
-fr,dsgw,147,[Quatre arguments sont requis pour la directive "attrvset"\n(Four arguments are required for the "attrvset" directive)\n]
-fr,dsgw,148,[Argument manquant pour la directive "charset"\n(Missing argument for "charset" directive)\n]
-fr,dsgw,149,[Argument manquant pour la directive "ClientLanguage"\n(Missing argument for "ClientLanguage" directive)\n]
-fr,dsgw,150,[Argument manquant pour la directive "AdminLanguage"\n(Missing argument for "AdminLanguage" directive)\n]
-fr,dsgw,151,[Argument manquant pour la directive "DefaultLanguage"\n(Missing argument for "DefaultLanguage" directive)\n]
-fr,dsgw,152,[Nom de fichier manquant pour la directive "include"\n(Missing filename for "include" directive)\n]
-fr,dsgw,153,[Directive inconnue dans le fichier de configuration\n(Unknown directive in config file)\n]
-fr,dsgw,154,[<= erase_db n´a pas réussi à ouvrir le fichier lcache.conf "%s"\n(<= erase_db could not open lcache.conf file with name shown)\n]
-fr,dsgw,155,[<FONT SIZE="+1">\n<P>La base de données a été supprimée. Création d´une nouvelle base de données... \n(The database has been deleted. Creating new database...)\n</FONT>\n]
-fr,dsgw,156,[<FONT SIZE="+1">\n<P>Impossible de supprimer la base de données\n(The database could not be deleted)\n(</FONT>\n]
-fr,dsgw,157,[<= app_suffix n´a pas réussi à ouvrir le fichier ldif "%s"\n(<= app_suffix could not open ldif file with name shown)\n]
-fr,dsgw,158,[<= app_suffix n´a pas réussi à ouvrir le fichier tmp "%s"\n(<= app_suffix could not open tmp file with name shown)\n]
-fr,dsgw,159,[Impossible de renommer %s en %s (Unable to rename with names as shown)]
-fr,dsgw,160,[pointeur null renvoyé par dbconf_read_default_dbinfo().\n(null pointer returned by dbconf_read_default_dbinfo().)]
-fr,dsgw,161,[URL "ldapdb" erroné; le DN de base est manquant\n(Bad "ldapdb" URL - the base DN is missing)\n]
-fr,dsgw,162,[URL "ldapdb" erroné\n (Bad "ldapdb" URL)\n]
-fr,dsgw,163,[URL fourni pour la directive "baseurl" erroné; le DN de base est manquant\n(Bad URL provided for "baseurl" directive - the base DN is missing)\n]
-fr,dsgw,164,[analyse de la directive baseurl\n(parsing baseurl directive)]
-fr,dsgw,165,[URL fourni pour la directive "baseurl" erroné; pas un URL "ldap:// ou ldapdb://"\n(Bad URL provided for "baseurl" directive - not an "ldap:// or ldapdb://" URL)\n]
-fr,dsgw,166,[Les URL "ldaps://" ne sont pas encore supportés\n("ldaps://" URLs are not yet supported)\n]
-fr,dsgw,167,[Aucune valeur donnée pour binddn\n(No value given for binddn)]
-fr,dsgw,168,[Aucune valeur donnée pour bindpw\n(No value given for bindpw)]
-fr,dsgw,169,[Aucun service de répertoires par défaut n´est défini dans le fichier dbswitch.conf\n(There is no default directory service defined in the dbswitch.conf file)]
-fr,dsgw,170,[Impossible d'ouvrir le fichier de configuration "%s" en écriture\n(Cannot open config file with name shown for writing)\n]
-fr,dsgw,171,[Impossible de renommer %s en %s (Unable to rename with names as shown)]
-fr,dsgw,172,[fichier de configuration (config file) %s:]
-fr,dsgw,173,[fichier de configuration %s: ligne %d: \n(config file and line as shown)]
-fr,dsgw,174,[max %d]
-fr,dsgw,175,[ OK ]
-fr,dsgw,176,[Fermer la fenêtre (Close Window)]
-fr,dsgw,177,[Précédent]
-fr,dsgw,178,[{crypt}VERROUILLE (LOCKED) [%s GMT]]
-fr,dsgw,179,[Retourner à l´écran principal (Return to Main)]
-fr,dsgw,181,[ Help ]
-fr,dsgw,182,[Aide (Help)]
-fr,dsgw,184,[L´aide n´est pas encore disponible. (Help is not yet available.)]
-fr,dsgw,186,[Fermer la fenêtre (Close Window)]
-fr,dsgw,187,[Fermer la fenêtre (Close Window)]
-fr,dsgw,188,[modèle manquant? (missing ?template)]
-fr,dsgw,189,[Authentifier... (Authenticate...)]
-fr,dsgw,190,[Mettre les références d´authentification au rebut (déconnexion)?\n(Discard authentication credentials (log out)?)]
-fr,dsgw,191,[Veuillez taper une chaîne de recherche]
-fr,dsgw,192,[La première étape de l´authentification de l´accès à ce répertoire consiste en votre\npropre identification.<br>Tapez votre nom:\n(The first step in authenticating to the directory is identifying\nyourself.<br>Please type your name:)]
-fr,dsgw,193,[Continuer (Continue)]
-fr,dsgw,194,[Continuer (Continue)]
-fr,dsgw,195,[Annuler (Cancel)]
-fr,dsgw,196,[Authentifier comme gestionnaire de répertoires"> &nbsp;(uniquement disponible pour les administrateurs de répertoires)\n(Authenticate as directory manager"> &nbsp;(only available to Directory Administrators))\n]
-fr,dsgw,197,[Authentifier... (Authenticate...)]
-fr,dsgw,198,[Mettre les références d´authentification au rebut? (Discard authentication credentials?)]
-fr,dsgw,200,[Continuer (Continue)]
-fr,dsgw,201,[Continuer (Continue)]
-fr,dsgw,202,[Annuler (Cancel)]
-fr,dsgw,203,[Authentifier l´accès au répertoire (connexion)\n(Authenticate (log in) to the directory)]
-fr,dsgw,204,[Vous êtes sur le point de vous authentifier auprès de l'annuaire en tant que <B>%s</B>. Pour terminer le processus d'authentification, tapez votre mot de passe.\n]
-fr,dsgw,206,[Avant de pouvoir modifier ou ajouter des entrées, vous devez authentifier\nl´accès au répertoire (connexion). Cette fenêtre vous\nguidera tout au long du processus\nd´authentification.\n(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]
-fr,dsgw,207,[Cet écran vous permet d´authentifier l´accès au répertoire, \nou de vous y connecter. Vous devrez vous authentifier\navant de pouvoir modifier les entrées du répertoire. Si vous\ntentez de modifier une entrée sans authentification,\nil vous sera demandé de vous connecter.\n(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]
-fr,dsgw,208,[Statut de l´authentification (Authentication Status)]
-fr,dsgw,209,[<form>\nVotre accès au répertoire est actuellement authentifié sous\n(You are currently authenticated to the directory as) ]
-fr,dsgw,210,[.\nSi vous voulez mettre vos références d´authentification au rebut et vous déconnecter du répertoire, cliquez sur le bouton ci-dessous.\n(.\nIf you wish to discard your authentication credentials and log out of the directory, click on the button below.)]
-fr,dsgw,211,[Mettre les références d´authentification au rebut (déconnexion)\n(Discard Authentication Credentials (log out))]
-fr,dsgw,212,[Vos références d´authentification pour \n(Your authentication credentials for )]
-fr,dsgw,213,[ont expiré (have expired).\n<HR>)\n]
-fr,dsgw,214,[Votre accès au répertoire n´est actuellement pas authentifié.\n(Currently, you are not authenticated to the directory.)<HR>\n]
-fr,dsgw,215,["%s=" manquant (missing definition shown)]
-fr,dsgw,216,["%s=%s" inconnu (unknown assignment as shown)]
-fr,dsgw,217,[option inconnue %s (unknown option as shown)]
-fr,dsgw,218,[syntaxe inconnue=%s\n(syntax shown unknown)\n]
-fr,dsgw,219,[** Type HTML "%s" non supporté **\n(** HTML type shown not supported **<BR>)\n]
-fr,dsgw,224,[Modifier (Edit)]
-fr,dsgw,225,[Save Changes]
-fr,dsgw,226,[modify]
-fr,dsgw,227,[add]
-fr,dsgw,228,[Supprimer (Delete)]
-fr,dsgw,229,[Supprimer cette entrée? (Delete this entry?)]
-fr,dsgw,230,[Renommer (Rename)]
-fr,dsgw,231,[Entrez un nouveau nom pour cette entrée: (Enter a new name for this entry:)]
-fr,dsgw,232,[Modifier sous (Edit As)]
-fr,dsgw,233,[%s= manquant (missing definition shown)]
-fr,dsgw,234,[Fermer la fenêtre (Close Window)]
-fr,dsgw,235,[Modifier... (Edit...)]
-fr,dsgw,236,["%s=" manquant\n (missing definition shown")\n]
-fr,dsgw,237,[ensemble inconnu "%s"\n (set shown is unknown)\n]
-fr,dsgw,238,[syntaxe inconnue "%s"\n (syntax shown is unknown)\n]
-fr,dsgw,239,[Ré-authentifier (Re-Authenticate)]
-fr,dsgw,240,[Fermer la fenêtre (Close Window)]
-fr,dsgw,241,[Voulez-vous vraiment (Do you really want to) ]
-fr,dsgw,242,[?]
-fr,dsgw,243,[ OK ]
-fr,dsgw,244,[ OK ]
-fr,dsgw,245,[Remettre à zéro (Reset)]
-fr,dsgw,246,[Terminé (Done)]
-fr,dsgw,247,[Annuler (Cancel)]
-fr,dsgw,248,[a trouvé un autre IF (les IF emboîtés ne sont pas supportés)\n(found another IF (nested IFs are not supported))]
-fr,dsgw,249,[a trouvé ELSE mais n´a pas vu de IF\n(found ELSE but didn't see an IF)]
-fr,dsgw,250,[a trouvé ELSE après ELSE (ENDIF attendu)\n(found ELSE after ELSE (expecting ENDIF))]
-fr,dsgw,251,[a trouvé ELIF mais n´a pas vu de IF\n(found ELIF but didn't see an IF)]
-fr,dsgw,252,[a trouvé ELIF après ELSE (ENDIF attendu)\n(found ELIF after ELSE (expecting ENDIF))]
-fr,dsgw,253,[a trouvé ENDIF mais n´a pas vu de IF\n(found ENDIF but didn't see an IF)]
-fr,dsgw,254,[<BR><B>erreur de modèle:</B> %s\n(<B>template error as shown</B>)<BR>\n]
-fr,dsgw,255,[ldap_init/lcache_init tenté avant la lecture du fichier de configuration\n(ldap_init/lcache_init attempted before config file read)]
-fr,dsgw,256,[ne tourne pas sous Administration Server\n(not running under the administration server)]
-fr,dsgw,257,[Impossible d´initialiser les permissions\n(Could not initialize permissions)]
-fr,dsgw,258,[Impossible de faire correspondre un nom d´utilisateur avec un DN (erreur d´Administration Server)\n(Could not map username to a DN (error from admin server))]
-fr,dsgw,259,[Impossible d´obtenir le nom d´utilisateur courant\n(Could not get current username)]
-fr,dsgw,260,[Impossible d´obtenir le mot de passe utilisateur courant\n(Could not get current user password)]
-fr,dsgw,261,[Erreur (Error): %s]
-fr,dsgw,262,[Remarque: aucun modèle d´affichage n´est disponible pour ce type d´entrée; une méthode par défaut\nest donc utilisée dans l´affichage ci-dessous.\n(Note: there is no display template for this type of entry available, so it is\ndisplayed below using a default method.)]
-fr,dsgw,263,[Identification de l´utilisateur ou identificateur NULL LDAP non valide\n(Invalid user id or NULL LDAP handle)]
-fr,dsgw,264,[aucune correspondance pour l´identification de l´utilisateur\n(no match for user id)]
-fr,dsgw,265,[plusieurs correspondances pour l´identification de l´utilisateur\n(more than one match for user id)]
-fr,dsgw,266,[the entire directory]
-fr,dsgw,267,[Deux arguments sont requis pour la directive "includeset"\n(Two arguments are required for the "includeset" directive)\n]
-fr,dsgw,268,[La valeur d'attribut demandée est introuvable dans l'entrée\n(An error occurred while trying to access the database)]
-fr,dsgw,269,[Argument introuvable pour la directive "NLS"]
-fr,dsgw,270,[Une valeur doit être spécifiée pour l'id d'utilisateur NT\n]
-fr,dsgw,271,[La combinaison de l'id d'utilisateur NT et de l'id de domaine NT n'est pas unique dans le répertoire.]
-fr,dsgw,272,[Des valeurs doivent être spécifiées pour l'id d'utilisateur NT et l'id de domaine NT\n]
-fr,dsgw,273,[La valeur d'id d'utilisateur NT ne doit pas dépasser 20 caractères.\n]
-fr,dsgw,274,[Veuillez créer un nom pour la nouvelle entrée.]
-fr,dsgw,275,[Veuillez sélectionner une adresse pour la nouvelle entrée.]
-fr,dsgw,276,[Nouvelle entrée]
-fr,dsgw,277,[Afin de pouvoir utiliser cette fonction, un dirmgr doit être défini dans dsgw.conf]
-fr,dsgw,278,[Trois ou quatre arguments sont requis pour la directive "vcard-property"\n]
-fr,dsgw,279,[La syntaxe de la propriété Vcard doit être "cis" ou "mls"\n]
-fr,dsgw,280,[Aucune entrée n'a été trouvée.\n%2$s]
-fr,dsgw,281,[Aucune entrée n'a été trouvée dans les %2$s %3$s '%4$s'.\n]
-fr,dsgw,282,[Aucune entrée recherchée n'a été trouvée\n%2$s]
-fr,dsgw,283,[Aucune entrée recherchée n'a été trouvée dans les %2$s %3$s %4$s'.\n]
-fr,dsgw,284,[1 entrée a été trouvée.\n%2$s]
-fr,dsgw,285,[1 entrée a été trouvée dans les %2$s %3$s '%4$s'.\n]
-fr,dsgw,286,[1 entrée recherchée a été trouvée.\n%2$s]
-fr,dsgw,287,[1 entrée recherchée a été trouvée dans les %2$s %3$s '%4$s'.\n]
-fr,dsgw,288,[%1$li entrées ont été trouvées.\n%2$s]
-fr,dsgw,289,[%1$li entrées ont été trouvées dans les %2$s %3$s '%4$s'.\n]
-fr,dsgw,290,[%1$li entrées recherchées ont été trouvées.\n%2$s]
-fr,dsgw,291,[%1$li entrées recherchées ont été trouvées dans les %2$s %3$s '%4$s'.\n ]
-fr,dsgw,292,[le filtre LDAP est]
-fr,dsgw,293,[Le serveur n´a pas pu trouver l´entrée que vous avez utilisée lors de l´authentification. Quelqu´un a peut-être renommé ou supprimé l´entrée. Procédez à une nouvelle authentification.]
-fr,dsgw,294,[La nouvelle syntaxe du mot de passe n´est pas valide.\n]
-fr,dsgw,295,[Le nouveau mot de passe figure dans l´historique des mots de passe.\n]
-fr,dsgw,296,[Vous avez atteint la limite de nouvelle tentative de mot de passe. Contactez votre administrateur système.\n]
-fr,dsgw,297,[Vous avez atteint la limite de nouvelle tentative de mot de passe. Essayez à nouveau.\n]
-fr,dsgw,298,[Le mot de passe a expiré. Contactez votre administrateur système pour redéfinir le mot de passe.\n]
-fr,frame,-1,[$DBT: frame in DB file v1 $]
-fr,frame,1,[<TITLE>Introuvable (Not Found)</TITLE><H1>Introuvable (Not Found)</H1> L'objet demandé n'existe pas sur ce serveur. Le lien que vous avez consulté est peut-être désuet, inexact, ou bien le serveur a reçu l'ordre de ne pas vous laisser y accéder.\n(The requested object does not exist on this server. The link you followed is either outdated, inaccurate, or the server has been instructed not to let you have it. )]
-fr,frame,2,[Veuillez informer l'administrateur de site de la <A HREF="%s">page de référence</A>.\n(Please inform the site administrator of the referring page.)]
-fr,frame,3,[Votre navigateur a envoyé une demande que ce Proxy n'arrive pas à comprendre.\n(Your browser sent a request that this proxy could not understand.)]
-fr,frame,4,[Une autorisation adéquate est requise pour l'administration de ce Proxy.\nVotre navigateur n'effectue peut-être pas l'autorisation, ou bien votre autorisation\na échoué.\n(Proper authorization is required for the administration of this proxy.\nEither your browser does not perform authorization, or your authorization\nhas failed.)]
-fr,frame,5,[L'authentification du nom d'utilisateur est requise pour utiliser ce Proxy.\nVotre navigateur n'effectue peut-être par l'autorisation de Proxy, ou bien votre\nautorisation a échoué.\n(Username authentication is required for using this proxy.\nEither your browser does not perform proxy authorization, or your\nauthorization has failed.)]
-fr,frame,6,[La configuration du contrôle d'accès de ce Proxy refuse l'accès à\nl'objet demandé par le biais de ce Proxy.\n(The proxy's access control configuration denies access to\nthe requested object through this proxy.)]
-fr,frame,7,[Le Proxy a rencontré une erreur interne qui l'empêche \nd'honorer votre demande. La cause la plus probable est une mauvaise configuration.\nVeuillez demander à l'administrateur de consulter le journal d'erreurs du Proxy.\n(The proxy has encountered an internal error which prevents it from\nfulfilling your request. The most likely cause is a misconfiguration.\nPlease ask the administrator to look for messages in the proxy's error log.)]
-fr,frame,8,[Ce serveur de Proxy ne met pas en oeuvre la méthode demandée.\n(This proxy server does not implement the requested method.)]
-fr,frame,9,[Une erreur est survenue sur le serveur de Proxy.\n(An error has occurred on the proxy server.)]
-fr,frame,10,[Votre navigateur a envoyé une requête que ce serveur n'arrive pas à comprendre.\n(Your browser sent a query this server could not understand.)]
-fr,frame,11,[Une autorisation adéquate est requise pour ce domaine. Votre navigateur n'effectue peut-être pas l'autorisation, ou bien votre autorisation a échoué.\n(Proper authorization is required for this area. Either your browser does not perform authorization, or your authorization has failed.)]
-fr,frame,12,[Votre client n'est pas autorisé à accéder à l'objet demandé.\n(Your client is not allowed to access the requested object.)]
-fr,frame,13,[Ce serveur a rencontré une erreur interne qui l'empêche d'honorer votre demande. La cause la plus probable est une mauvaise configuration. Veuillez demander à l'administrateur de consulter le journal d'erreurs du serveur.\n(This server has encountered an internal error which prevents it from fulfilling your request. The most likely cause is a misconfiguration. Please ask the administrator to look for messages in the server's error log.)]
-fr,frame,14,[Ce serveur ne met pas en oeuvre la méthode demandée.\n(This server does not implement the requested method.)]
-fr,frame,15,[Une erreur est survenue. (An error has occurred.)]
-fr,frame,16,[Votre navigateur a envoyé un message que ce serveur n'arrive pas à comprendre.\n(Your browser sent a message this server could not understand.)]
-fr,frame,17,[<HTML><HEAD><TITLE>%s</TITLE><META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=iso-8859-1"><META HTTP-EQUIV="Content-Language" CONTENT="fr"></HEAD><BODY><H1>%s</H1>\nCe document a été déplacé à une nouvelle <a href="%s">adresse</a>. Veuillez mettre à jour vos documents et listes d'accès en conséquence.\n(This document has moved to a new location. Please update your documents and hotlists accordingly.</BODY></HTML>)]
-fr,frame,18,[<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=iso-8859-1"><META HTTP-EQUIV="Content-Language" CONTENT="fr"><TITLE>%s</TITLE></HEAD>\n<BODY><H1>%s</H1>\n%s\n</BODY></HTML>]
-fr,frame,19,[process-uri-objects]
-fr,frame,20,[cannot find template %s]
-fr,frame,21,[process-uri-objects]
-fr,frame,22,[no partial path after object processing]
-fr,frame,23,[find-service]
-fr,frame,24,[invalid shexp %s]
-fr,frame,25,[find-service]
-fr,frame,26,[invalid shexp %s]
-fr,frame,27,[handle-processed]
-fr,frame,28,[no way to service request for %s]
-fr,frame,29,[finish-socks-request]
-fr,frame,30,[close failed (%s), csd=%d]
-fr,frame,31,[This beta software has expired.\n]
-fr,frame,32,[mr_accept(%d)]
-fr,frame,33,[Error issuing read on accept socket]
-fr,frame,34,[acb_accept_connection(%d)]
-fr,frame,35,[Error getting accept socket (%d)]
-fr,frame,36,[Error in accept! (%d, %s)]
-fr,frame,37,[Error creating new accept request]
-fr,frame,38,[accepted connection: %d (NSPR %d)]
-fr,frame,39,[Error creating new session structure]
-fr,frame,40,[accel_read_request()]
-fr,frame,41,[Error allocating request read buffer]
-fr,frame,42,[Error issuing async read request]
-fr,frame,43,[acb_read_request(%d, bytes %d)]
-fr,frame,44,[acb_read_req(1 session = %d)]
-fr,frame,45,[Error reading request (%d, %s)]
-fr,frame,46,[Client aborted connection]
-fr,frame,47,[Error reading request]
-fr,frame,48,[Error creating new request]
-fr,frame,49,[error occurred, closing %d, io was for %d]
-fr,frame,50,[accel_async_scan_headers()]
-fr,frame,51,[out of memory: accel_async_scan_headers]
-fr,frame,52,[out of memory: accel_async_scan_headers]
-fr,frame,53,[Error during async read (%d, %s)]
-fr,frame,54,[scan-headers reports: line too long]
-fr,frame,55,[scan-headers reports: too many headers]
-fr,frame,56,[Error reading headers]
-fr,frame,57,[scan-headers reports: header missing terminator (an empty line)]
-fr,frame,58,[scan-headers reports: header was empty]
-fr,frame,59,[nom sans valeur: obtention de la ligne "%s"\n(name without value: got line as shown)]
-fr,frame,60,[accel_send_plain_file()]
-fr,frame,61,[accel_send_plain_file() - found request %d]
-fr,frame,62,[Parse headers lost the URI!]
-fr,frame,63,[accel_send_plain_file() - found uri %s]
-fr,frame,64,[accel_send_plain_file() - found in cache?]
-fr,frame,65,[malloc died!]
-fr,frame,66,[Error writing back file\n]
-fr,frame,67,[acb_send_plain_file(%d)]
-fr,frame,68,[Error writing in acb_send_plain_file (%d, %s)]
-fr,frame,69,[acb_close_connection(%d)]
-fr,frame,70,[Errored IO in acb_close_connection (%d, %s)]
-fr,frame,71,[Unable to close socket %d]
-fr,frame,72,[accel-cache-insert: Error allocating entry]
-fr,frame,73,[cache-init: server cache disabled]
-fr,frame,74,[accel_file_cache: Error initializing file cache]
-fr,frame,75,[accel_file_cache: Error creating cache]
-fr,frame,76,[accel_file_cache_init: CacheHashSize < %d, using %d]
-fr,frame,77,[accel_file_cache_init: CacheHashSize > %d, using %d]
-fr,frame,78,[accel_file_cache_init: MaxNumberOfCachedFiles < %d, using %d]
-fr,frame,79,[accel_file_cache_init: MaxNumberOfCachedFiles > %d, using %d]
-fr,frame,80,[accel_file_cache_init: MaxNumberOfOpenCachedFiles < %d, using %d]
-fr,frame,81,[accel_file_cache_init: MaxNumberOfOpenCachedFiles > %d, using %d]
-fr,frame,82,[accel_file_cache: Error initializing file cache]
-fr,frame,83,[file-cache: enabled = %s ]
-fr,frame,84,[on]
-fr,frame,85,[off]
-fr,frame,86,[file-cache: MaxNumberOfCachedFiles %d (0x%x)]
-fr,frame,87,[file-cache: CacheHashSize %d (0x%x)]
-fr,frame,88,[file-cache: MaxNumberOfOpenCachedFiles %d (0x%x)]
-fr,frame,89,[accel-cache-insert: Error allocating entry]
-fr,frame,90,[file-cache-cleanup: munmap failed (%s)]
-fr,frame,91,[file-cache-cleanup: found mmapped file \non system without mmap]
-fr,frame,92,[file_cache_init: MaxTotalCachedFileSize < %d, using %d]
-fr,frame,93,[file_cache_init: MaxTotalCachedFileSize > %d, using %d]
-fr,frame,94,[file cache using mmap flags 0x%x]
-fr,frame,95,[file cache using mmap prots 0x%x]
-fr,frame,96,[file-cache-init: could not create lock]
-fr,frame,97,[file-cache: unable to create temporary directory %s.\n]
-fr,frame,98,[file-cache: unable to create temporary directory %s.\n]
-fr,frame,99,[file-cache: GetTempPath() Cannot find temp directory to store file!]
-fr,frame,100,[file-cache-init: set max cached file size to %d]
-fr,frame,101,[file-cache-init: could not create lock]
-fr,frame,102,[file_cache_destroy()]
-fr,frame,103,[file-cache: Unable to get temp file name. Error %s]
-fr,frame,104,[file-cache: Unable to get temp file name. Error %s]
-fr,frame,105,[file-cache-insert: Error allocating entry]
-fr,frame,106,[file-cache-create: Error opening file %s (%s)]
-fr,frame,107,[file-cache-create: Error stat()ing file %s (%s)]
-fr,frame,108,[file-cache-create: Error mmap()ing file %s (%s)]
-fr,frame,109,[file-cache-create: malloc failure]
-fr,frame,110,[file-cache-create: error case failed to munmap(%d, %d) (%s)]
-fr,frame,111,[file-cache-valid: cannot stat %s]
-fr,frame,112,[dir change: invalidating %s (%d)]
-fr,frame,113,[file-cache: asynchronous file change notification failed.]
-fr,frame,114,[dir change: offset %d, action %d, len %d, name %s]
-fr,frame,115,[unable to check async file status]
-fr,frame,116,[ReadDirectoryChangesW failure- unable to continue watching %s. Error is %s]
-fr,frame,117,[file-cache-add-watch failure- unable to open directory %s. Error %s]
-fr,frame,118,[ReadDirectoryChangesW failure- unable to start watching %s. Error %s]
-fr,frame,119,[func_exec]
-fr,frame,120,[no handler function given for directive]
-fr,frame,121,[func_exec]
-fr,frame,122,[cannot find function named %s]
-fr,frame,123,[handle-request]
-fr,frame,124,[method without URI]
-fr,frame,125,[http-parse-request]
-fr,frame,126,[while scanning HTTP headers, %s]
-fr,frame,127,[handle-request]
-fr,frame,128,[read from %s failed, error is %s]
-fr,frame,129,[handle-request]
-fr,frame,130,[request too long]
-fr,frame,131,[start-http-response]
-fr,frame,132,[write failed (%s)]
-fr,frame,133,[start-http-response]
-fr,frame,134,[write failed (%s)]
-fr,frame,135,[http-status]
-fr,frame,136,[%d is not a valid HTTP status code]
-fr,frame,137,[finish-request]
-fr,frame,138,[close failed (%s)]
-fr,frame,139,[Unable to close socket for writing]
-fr,frame,140,[os has %d objects]
-fr,frame,141,[obj %d has no hash table at %d]
-fr,frame,142,[obj %d has no param]
-fr,frame,143,[obj %d name %s value %s]
-fr,frame,144,[.....directives %d.......]
-fr,frame,145,[.....directive %d]
-fr,frame,146,[.......instance %d]
-fr,frame,147,[...........param name %s value %s]
-fr,frame,148,[ClearConfigurationParameters:RegCreateKey %s]
-fr,frame,149,[ClearConfigurationParameters:RegEnumKey %s failed]
-fr,frame,150,[obj.conf line %d: error in filter file "%s" at line %d: %s]
-fr,frame,151,[obj.conf line %d: error in filter file "%s" at line %d: %s]
-fr,frame,152,[Unable to allocate Subject property list.\n]
-fr,frame,153,[Unable to set session ptr in Subject property list - error=%d\n]
-fr,frame,154,[Unable to set request ptr in Subject property list - error=%d\n]
-fr,frame,155,[file-cache-valid: cannot stat %s]
-fr,frame,156,[file-cache-create: Error stat()ing file %s (%s)]
-fr,httpdaemon,-1,[$DBT: httpdaemon in DB file v1 $]
-fr,httpdaemon,1,[Error in ConvertThreadToFiber]
-fr,httpdaemon,2,[Error in ConvertThreadToFiber]
-fr,httpdaemon,3,[Error in md_start_system]
-fr,httpdaemon,4,[Error in CreateFiber - idlefiber]
-fr,httpdaemon,5,[Error in GetQueuedCompletionStatus]
-fr,httpdaemon,6,[Error creating completion port]
-fr,httpdaemon,7,[Could not SetHandleNonInheritable (%s)]
-fr,httpdaemon,8,[Error accept/read new conn]
-fr,httpdaemon,9,[Error in Respond()]
-fr,httpdaemon,10,[Error in RespondCompleted()]
-fr,httpdaemon,11,[daemon: unable to fork new process (%s)\n]
-fr,httpdaemon,12,[daemon: setsid failed (%s)\n]
-fr,httpdaemon,13,[daemon: can't log pid to %s (%s)\n]
-fr,httpdaemon,14,[warning: could not set group id to %d (%s)\n]
-fr,httpdaemon,15,[warning: could not set user id to %d (%s)\n]
-fr,httpdaemon,16,[warning: daemon is running as super-user\n]
-fr,httpdaemon,17,[could not determine current user name\n]
-fr,httpdaemon,18,[error: chroot to %s failed (%s)\n]
-fr,httpdaemon,19,[WARNING! netscape executable and library have different versions.\n]
-fr,httpdaemon,20,[startup: listening to %s://%s, port %d as %s\n]
-fr,httpdaemon,21,[startup: listening to %s://%s, port %d as %s\n]
-fr,httpdaemon,22,[seminit failed (%s)\n]
-fr,httpdaemon,23,[Using single threaded accepts.]
-fr,httpdaemon,24,[Using multi threaded accepts.]
-fr,httpdaemon,25,[Using partial single threaded accepts.]
-fr,httpdaemon,26,[This machine has %d processors.]
-fr,httpdaemon,27,[Error calling thr_seconcurrency(%d)- (%s)]
-fr,httpdaemon,28,[Set conncurrency to %d.]
-fr,httpdaemon,29,[can't fork new process (%s)]
-fr,httpdaemon,30,[This beta software has expired.\n]
-fr,httpdaemon,31,[can't create IPC pipe (%s)]
-fr,httpdaemon,32,[write to wakeup pipe failed (%s)]
-fr,httpdaemon,33,[select thread miss]
-fr,httpdaemon,34,[startup failure: could not bind to port %d (%s)\n]
-fr,httpdaemon,35,[startup failure: could not bind to port %d, IP address %s (%s)\n]
-fr,libaccess,-1,[$DBT: libaccess in DB file v1 $]
-fr,libaccess,1,[basic-ncsa]
-fr,libaccess,2,[cannot open database %s]
-fr,libaccess,3,[basic-ncsa]
-fr,libaccess,4,[user %s password did not match database %s]
-fr,libaccess,5,[basic-ncsa]
-fr,libaccess,6,[cannot open connection to LDAP server on %s:%d]
-fr,libaccess,7,[basic-ncsa]
-fr,libaccess,8,[user %s password did not match LDAP on %s:%d]
-fr,libaccess,9,[acl-state]
-fr,libaccess,10,[missing realm]
-fr,libaccess,11,[Unable to allocate ACL List Hash\n]
-fr,libaccess,12,[ACLEvalBuildContext unable to PERM_MALLOC cache structure\n]
-fr,libaccess,13,[ACLEvalBuildContext unable to create hash table\n]
-fr,libaccess,14,[ACLEvalBuildContext unable to allocate ACE Entry\n]
-fr,libaccess,15,[ACLEvalBuildContext unable to allocate ACE entry\n]
-fr,libaccess,16,[ACLEvalBuildContext unable to allocate Boundary Entry\n]
-fr,libaccess,17,[ACLEvalBuildContext failed.\n]
-fr,libaccess,18,[ACL_EvalTestRights: an interim, absolute non-allow value was encountered. right=%s, value=%d\n]
-fr,libaccess,19,[LASDnsBuild unable to allocate hash table header\n]
-fr,libaccess,20,[LASDnsBuild unable to add key %s\n]
-fr,libaccess,21,[LASDnsBuild unable to add key %s\n]
-fr,libaccess,22,[LASDnsBuild unable to add key %s\n]
-fr,libaccess,23,[LASDnsBuild unable to add key %s\n]
-fr,libaccess,24,[LASDnsBuild unable to add key %s\n]
-fr,libaccess,25,[LAS DNS build received request for attribute %s\n]
-fr,libaccess,26,[LASDnsEval - illegal comparator %s\n]
-fr,libaccess,27,[LASDnsEval unable to allocate Context struct\n\n]
-fr,libaccess,28,[LASDnsEval unable to get session address %d\n]
-fr,libaccess,29,[LASDnsEval unable to get DNS - error=%s\n]
-fr,libaccess,30,[LAS Group Eval received request for attribute %s\n]
-fr,libaccess,31,[LASGroupEval - illegal comparator %s\n]
-fr,libaccess,32,[LASGroupEval - ran out of memory\n]
-fr,libaccess,33,[LASGroupEval unable to get session address %d\n]
-fr,libaccess,34,[LASGroupEval unable to get session address %d\n]
-fr,libaccess,35,[LASGroupEval - couldn't locate getter for auth-user\n]
-fr,libaccess,36,[LASGroupEval - Attribute getter for auth-user failed\n]
-fr,libaccess,37,[LASGroupEval - Attribute getter didn't set auth-user\n]
-fr,libaccess,38,[Check group membership of user "%s" for group "%s"\n]
-fr,libaccess,39,[LDAPU_SUCCESS for group "%s"\n]
-fr,libaccess,40,[LDAPU_FAILED for group "%s"\n]
-fr,libaccess,41,[LAS_EVAL_FALSE\n]
-fr,libaccess,42,[LAS_EVAL_TRUE\n]
-fr,libaccess,43,[LASIpTreeAlloc - no memory\n]
-fr,libaccess,44,[IP LAS unable to allocate tree node\n]
-fr,libaccess,45,[IP LAS unable to allocate tree node\n]
-fr,libaccess,46,[LAS IP build received request for attribute %s\n]
-fr,libaccess,47,[LASIpEval - illegal comparator %s\n]
-fr,libaccess,48,[LASIpEval unable to get session address - error=%s\n]
-fr,libaccess,49,[LASIpEval unable to allocate Context struct\n\n]
-fr,libaccess,50,[LASIpEval - reach 32 bits without conclusion value=%s]
-fr,libaccess,51,[LAS Program Eval received request for attribute %s\n]
-fr,libaccess,52,[LASProgramEval - illegal comparator %s\n]
-fr,libaccess,53,[LASProgram unable to get session address %d\n]
-fr,libaccess,54,[bin]
-fr,libaccess,55,[LASProgramEval: request not of type admin or bin, passing.\n]
-fr,libaccess,56,[LASProgramEval: check if program %s matches pattern %s.\n]
-fr,libaccess,57,[LASProgramEval: Invalid wildcard expression %s.\n]
-fr,libaccess,58,[LAS_EVAL_FALSE\n]
-fr,libaccess,59,[LAS_EVAL_TRUE\n]
-fr,libaccess,60,[Unexpected attribute in dayOfWeek - %s\n]
-fr,libaccess,61,[Illegal comparator for dayOfWeek - %s\n]
-fr,libaccess,62,[Unexpected attribute in timeOfDay - %s\n]
-fr,libaccess,63,[LAS User Eval received request for attribute %s\n]
-fr,libaccess,64,[LASUserEval - illegal comparator %s\n]
-fr,libaccess,65,[LASUserEval - ran out of memory\n]
-fr,libaccess,66,[LASUserEval unable to get session address %d\n]
-fr,libaccess,67,[LASUserEval unable to get session address %d\n]
-fr,libaccess,68,[LASGroupEval - couldn't locate getter for auth-user\n]
-fr,libaccess,69,[LASGroupEval - Attribute getter for auth-user failed\n]
-fr,libaccess,70,[LASGroupEval - Attribute getter didn't set auth-user\n]
-fr,libaccess,71,[Check if uid == user (i.e. check "%s" == "%s)"\n]
-fr,libaccess,72,[SUCCESS for user "%s"\n]
-fr,libaccess,73,[FAILED for user "%s"\n]
-fr,libaccess,74,[LAS_EVAL_FALSE\n]
-fr,libaccess,75,[LAS_EVAL_TRUE\n]
-fr,libaccess,76,[]
-fr,libaccess,77,[LASProgram unable to get request address - error=%s]
-fr,libaccess,78,[LASProgram rejecting request for program %s from pattern %s]
-fr,libaccess,79,[ACL_CacheFlush: unable to parse file "%s"\n]
-fr,libaccess,80,[ACL_CacheFlush: unable to concatenate ACL list "%s"\n]
-fr,libaccess,81,[ACL_CacheFlush: unable to open and process the magnus file "%s"\n]
-fr,libaccess,82,[Illegal comparator for timeOfDay - %s\n]
-fr,libaccess,83,[ACL_EvalBuildContext unable to create hash table\n]
-fr,libaccess,84,[ACL_EvalBuildContext unable to PERM_CALLOC cache structure\n]
-fr,libaccess,85,[ACL_EvalBuildContext unable to allocate ACE entry\n]
-fr,libaccess,86,[ACL_EvalBuildContext unable to allocate auth pointer array\n]
-fr,libaccess,87,[ACL_EvalBuildContext unable to allocate auth plist\n]
-fr,libaccess,88,[ACL_EvalTestRights: an interim, absolute non-allow value was encountered. right=%s, value=%s\n]
-fr,libaccess,89,[ACL_INTEvalTestRights: call to ACL_EvalBuildContext returned failure status\n]
-fr,libaccess,90,[ACL_ModuleRegister: module name is missing\n]
-fr,libaccess,91,[ACL_ModuleRegister: call to module init function returned a failed status\n]
-fr,libaccess,92,[ACL_GetAttribute: couldn't determine method for %s\n]
-fr,libaccess,93,[ACL_GetAttribute: couldn't locate getter for %s]
-fr,libaccess,94,[ACL_GetAttribute: attr getter failed to get %s]
-fr,libaccess,95,[ACL_GetAttribute: attr getter failed to get %s]
-fr,libaccess,96,[ACL_GetAttribute: All attribute getters declined for attr %s]
-fr,libaccess,97,[ACL_DatabaseRegister: dbtype for database "%s" is not defined yet!]
-fr,libaccess,98,[ACL_DatabaseRegister: database name is missing]
-fr,libaccess,99,[Error reading the DB Map File: %s. Reason: %s]
-fr,libaccess,100,[URL is missing for database %s]
-fr,libaccess,101,[Invalid property value pair for database %s]
-fr,libaccess,102,["default" database must be an LDAP database]
-fr,libaccess,103,[Multiple "default" databases are being registered]
-fr,libaccess,104,["default" LDAP database must be registered]
-fr,libaccess,105,[LASGroupEval unable to get database name - error= %s]
-fr,libaccess,106,[received invalid program expression %s]
-fr,libaccess,107,[parse_ldap_url: database url is missing]
-fr,libaccess,108,[parse_ldap_url: database name is missing]
-fr,libaccess,109,[parse_ldap_url: error in parsing ldap url. Reason: %s]
-fr,libaccess,110,[ldap password check: unable to get database name - error=%s]
-fr,libaccess,111,[ldap password check: unable to get parsed database %s]
-fr,libaccess,112,[ldap password check: couldn't initialize connection to LDAP. Reason: %s]
-fr,libaccess,113,[ldap password check: LDAP error: "%s"]
-fr,libaccess,114,[get_user_ismember_ldap unable to get database name - error=%s]
-fr,libaccess,115,[get_user_ismember_ldap unable to get parsed database %s]
-fr,libaccess,116,[ldap password check: couldn't initialize connection to LDAP. Reason: %s]
-fr,libaccess,117,[get_user_ismember_ldap: group %s does not exist]
-fr,libaccess,118,[get_user_ismember_ldap: LDAP error: "%s"]
-fr,libaccess,119,[ACL_LDAPDatabaseHandle: %s is not a registered database]
-fr,libaccess,120,[ACL_LDAPDatabaseHandle: %s is not an LDAP database]
-fr,libaccess,121,[ACL_LDAPDatabaseHandle: out of memory]
-fr,libaccess,122,[ACL_LDAPDatabaseHandle: couldn't initialize connection to LDAP. Reason: %s]
-fr,libaccess,123,[ACL_LDAPDatabaseHandle: couldn't bind to LDAP server. Reason: %s]
-fr,libaccess,124,[insufficient dynamic memory]
-fr,libaccess,125,[error opening file, %s: %s]
-fr,libaccess,126,[duplicate definition of %s]
-fr,libaccess,127,[file %s, line %s: duplicate definition of %s]
-fr,libaccess,128,[file %s, line %s: syntax error]
-fr,libaccess,129,[file %s, line %s: %s is undefined]
-fr,libaccess,130,[in acl %s, %s %s is undefined]
-fr,libaccess,131,[database %s: error accessing %s]
-fr,libaccess,132,[%s]
-fr,libaccess,133,[file %s, line %s: invalid syntax]
-fr,libaccess,134,[file %s, line %s: syntax error at "%s"]
-fr,libaccess,135,[realm %s is not defined]
-fr,libaccess,136,[error code = %d]
-fr,libaccess,137,[internal ACL error]
-fr,libaccess,138,[invalid argument]
-fr,libaccess,139,[ACL_DatabaseRegister: dbtype for database "%s" is not defined yet!]
-fr,libaccess,140,[couldn't determine dbtype from: %s]
-fr,libaccess,141,[Failed to register database %s]
-fr,libaccess,142,[ACL call returned failed status]
-fr,libaccess,143,[file %s: ACL IO error - %s]
-fr,libaccess,144,[acl_user_exists: mémoire insuffisante]
-fr,libaccess,145,[acl_user_exists: l'utilisateur n'existe plus]
-fr,libaccess,146,[acl_user_exists: erreur de plist]
-fr,libadmin,-1,[$DBT: libadmin in DB file v1 $]
-fr,libadmin,1,[ Help ]
-fr,libadmin,2,[ OK ]
-fr,libadmin,3,[ Reset ]
-fr,libadmin,4,[ Done ]
-fr,libadmin,5,[ Cancel ]
-fr,libir,-1,[$DBT: libadmin in DB file v1 $]
-fr,libir,1,[An I/O error occurred before all form data could be read.]
diff --git a/l10n/dirserv/ja/ns-slapd.txt b/l10n/dirserv/ja/ns-slapd.txt
deleted file mode 100644
index ab2dd6ef..00000000
--- a/l10n/dirserv/ja/ns-slapd.txt
+++ /dev/null
@@ -1,1059 +0,0 @@
-#
-# BEGIN COPYRIGHT BLOCK
-# This Program is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; version 2 of the License.
-#
-# This Program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place, Suite 330, Boston, MA 02111-1307 USA.
-#
-# In addition, as a special exception, Red Hat, Inc. gives You the additional
-# right to link the code of this Program with code not covered under the GNU
-# General Public License ("Non-GPL Code") and to distribute linked combinations
-# including the two, subject to the limitations in this paragraph. Non-GPL Code
-# permitted under this exception must only link to the code of this Program
-# through those well defined interfaces identified in the file named EXCEPTION
-# found in the source code files (the "Approved Interfaces"). The files of
-# Non-GPL Code may instantiate templates or use macros or inline functions from
-# the Approved Interfaces without causing the resulting work to be covered by
-# the GNU General Public License. Only Red Hat, Inc. may make changes or
-# additions to the list of Approved Interfaces. You must obey the GNU General
-# Public License in all respects for all of the Program code and other code used
-# in conjunction with the Program except the Non-GPL Code covered by this
-# exception. If you modify this file, you may extend this exception to your
-# version of the file, but you are not obligated to do so. If you do not wish to
-# provide this exception without modification, you must delete this exception
-# statement from your version and license this file solely under the GPL without
-# exception.
-#
-#
-# Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
-# Copyright (C) 2005 Red Hat, Inc.
-# All rights reserved.
-# END COPYRIGHT BLOCK
-#
-/**************************************************************************/
-/* The copyright notice(s) in this Source Code does not indicate actual */
-/* or intended publication of this Source Code. */
-/**************************************************************************/
-
-/* This text file was generated by program dblink */
-
-$Revision: 1.4 $
-$Log: ns-slapd.txt,v $
-Revision 1.4 2005/04/19 22:06:52 nkinder
-Fixed licensing typo
-
-Revision 1.3 2005/04/15 22:39:18 nkinder
-155068 - Added license to source files
-
-Revision 1.2 2005/02/28 23:37:40 nkinder
-149951 - Updated source code copyrights
-
-Revision 1.1.1.1 2005/01/21 00:40:48 cvsadm
-Moving NSCP Directory Server from DirectoryBranch to TRUNK, initial drop. (foxworth)
-
-Revision 1.2.10.6 2003/09/22 19:36:43 ulfw
-Update copyright years from 2001 to 2001-2003
-
-Revision 1.2.10.5 2001/11/03 01:07:47 richm
-XXX use new copyright XXX
-
-Revision 1.2.10.4 2001/10/06 17:54:34 richm
-ns/netsite/l10n/dirserv/ja/ns-slapd.txt
-1.2.10.3
-20010918
-
-Remove copyright caracter from copyright
-
-
-====================================================
-
-Revision 1.2.10.3 2001/09/18 11:48:17 rmarco
-Remove copyright caracter from copyright
-
-Revision 1.2.10.2 2001/02/13 09:59:57 rmarco
-Copyrights
-
-Revision 1.2.10.1 1998/10/10 02:14:12 ggood
-Copy from Directory40RtmBranchpoint to DirectoryBranch
-
-Revision 1.2.2.2.6.2 1998/04/04 23:16:59 mcs
-merge changes made on directory31_rtm_branch into server4_directory_branch
-
-Revision 1.2.2.6.2.1 1998/02/24 05:39:08 noriko
-Added new updates from the translators
-
-Revision 1.1.2.7 1998/02/19 23:47:54 scronin
-Merged Noriko's edits with translated updates
-
-Revision 1.2.2.6 1998/02/17 22:01:21 noriko
-Fixed <Discard authentication credentials>
-
-Revision 1.2.2.5 1998/02/16 22:33:53 noriko
-Replaced words to display them correctly on NT Communicator 4.04 -- see also http://xiulu/ds30/l10n/translation-ja.htm
-
-Revision 1.2.2.4 1998/02/16 02:01:02 noriko
-removed the last dash from Japanese <user>
-
-Revision 1.2.2.3 1998/02/16 01:31:41 noriko
-Fixed search result message
-
-Revision 1.2.2.2 1997/12/20 03:32:16 werudge
-Copy from server3_i18npkg_branch to server3_directory_branch
-
-Revision 1.1.2.5 1997/12/19 02:19:37 werudge
-UTF8 Encoded from ja/ns-slapd.txt.eucjp : 1.1.2.5
-Based on en/ns-slapd.txt : 1.1.2.3
-
-Revision 1.1.2.5 1997/12/19 02:04:05 werudge
-Based on en/ns-slapd.txt : 1.1.2.3
-daily 971113.1 SOLARIS-export-optimize-normal-slapd
-$EndLog$
-
-$StartStringData$
-
-ja,base,-1,[$DBT: base in DB file v1 $]
-ja,base,1,[¥Ï¥Ã¥·¥å ¥Æ¡¼¥Ö¥ë¤òºîÀ®¤¹¤ë¤¿¤á¤Î¥á¥â¥ê¤¬ÉÔ­¤·¤Æ¤¤¤Þ¤¹¡£]
-ja,base,2,[¥Ï¥Ã¥·¥å ¥Æ¡¼¥Ö¥ë¤òºîÀ®¤¹¤ë¤¿¤á¤Î¥á¥â¥ê¤¬ÉÔ­¤·¤Æ¤¤¤Þ¤¹]
-ja,base,3,[cache_destroy: ¥­¥ã¥Ã¥·¥å ¥Æ¡¼¥Ö¥ë¤¬ÉÔÀµ¤Ç¤¹¡£]
-ja,base,4,[¥Ï¥Ã¥·¥å ¥¨¥ó¥È¥ê¤ò³ä¤êÅö¤Æ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£]
-ja,base,5,[cache_insert: ¥­¥ã¥Ã¥·¥å ¥¨¥ó¥È¥ê¤òºîÀ®¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£]
-ja,base,6,[HTTP/1.0 200 OK\nContent-type: text/html\n\n]
-ja,base,7,[<H2>Netscape ¥­¥ã¥Ã¥·¥å ¥¹¥Æ¡¼¥¿¥¹ ¥ì¥Ý¡¼¥È</H2>\n]
-ja,base,8,[¥·¥¹¥Æ¥à¾å¤Ë¥­¥ã¥Ã¥·¥å¤¬Â¸ºß¤·¤Þ¤»¤ó¡£<P>]
-ja,base,9,[<H2>%s ¥­¥ã¥Ã¥·¥å</H2>\n]
-ja,base,10,[¥­¥ã¥Ã¥·¥å ¥Ò¥Ã¥È ¥ì¥·¥ª¡§ %d/%d (%f)</P>\n</P>\n]
-ja,base,11,[¥­¥ã¥Ã¥·¥å ¥µ¥¤¥º¡§ %d/%d</P>\n</P>\n]
-ja,base,12,[¥Ï¥Ã¥·¥å ¥Æ¡¼¥Ö¥ë ¥µ¥¤¥º¡§ %d</P>\n</P>\n]
-ja,base,13,[mru : %d</P>\nlru : %d</P>\n]
-ja,base,14,[<UL><TABLE BORDER=4> <TH>Bucket</TH> <TH>¥¢¥É¥ì¥¹</TH> <TH>¥­¡¼</TH> <TH>¥¢¥¯¥»¥¹²ó¿ô</TH> <TH>ºï½ü</TH> <TH>¼¡¤Ø</TH> <TH>LRU</TH> <TH>MRU</TH> <TH>¥Ç¡¼¥¿</TH>\n]
-ja,base,15,[munmap failed (%s)]
-ja,base,16,[munmap failed (%s)]
-ja,base,17,[close failed (%s)]
-ja,base,18,[daemon: unable to fork new process (%s)\n]
-ja,base,19,[daemon: setsid failed (%s)\n]
-ja,base,20,[daemon: can't log pid to %s (%s)\n]
-ja,base,21,[warning: could not set group id to %d (%s)\n]
-ja,base,22,[warning: could not set user id to %d (%s)\n]
-ja,base,23,[warning: daemon is running as super-user\n]
-ja,base,24,[could not determine current user name\n]
-ja,base,25,[error: chroot to %s failed (%s)\n]
-ja,base,27,[, address %s]
-ja,base,28,[warning: statistics disabled (%s)\n]
-ja,base,29,[security handshake timed out for pid %d]
-ja,base,30,[warning: statistics disabled (%s)\n]
-ja,base,31,[secure handshake failed (code %d)\n]
-ja,base,32,[accept failed (%s)]
-ja,base,33,[warning: statistics disabled (%s)\n]
-ja,base,34,[select thread miss]
-ja,base,35,[keepalive worker awoken with no work to do]
-ja,base,36,[could not create new thread: %d (%s)]
-ja,base,37,[wait for sema succeeded, but nothing to dequeue]
-ja,base,38,[queue-sema creation failure]
-ja,base,39,[error getting processor info for processor %d]
-ja,base,40,[Error binding to processor %d]
-ja,base,41,[bound process %d to processor %d]
-ja,base,42,[Netscape server is not explicitly binding to any processors.]
-ja,base,43,[cache monitor exited]
-ja,base,44,[cache batch update daemon exited]
-ja,base,45,[Using single threaded accepts.]
-ja,base,46,[Using multi threaded accepts.]
-ja,base,47,[Using partial single threaded accepts.]
-ja,base,48,[This machine has %d processors.]
-ja,base,49,[Error calling thr_seconcurrency(%d)- (%s)]
-ja,base,50,[Set conncurrency to %d.]
-ja,base,51,[WARNING! netscape executable and library have different versions.\n]
-ja,base,54,[seminit failed (%s)\n]
-ja,base,55,[This beta software has expired.\n]
-ja,base,56,[Cache monitor respawned]
-ja,base,57,[Cache batch update daemon respawned]
-ja,base,58,[can't find empty statistics slot]
-ja,base,59,[can't fork new process (%s)]
-ja,base,60,[assert failed! %s\n]
-ja,base,61,[mr_table_init()]
-ja,base,62,[malloc failed]
-ja,base,63,[malloc failed!]
-ja,base,64,[mr_add_io(%d, type %d, file %d)]
-ja,base,65,[mr_add_io - stage 1]
-ja,base,66,[mr_add_io - stage 2]
-ja,base,67,[mr_add_io found invalid IO type %d]
-ja,base,68,[mr_add_io - adding timeout]
-ja,base,69,[Out of memory!\n]
-ja,base,70,[done with mr_add_io]
-ja,base,71,[mr_del_io(%d, type %d, file %d)]
-ja,base,72,[mr_del_io found invalid IO type %d]
-ja,base,73,[mr_lookup_io(%d)]
-ja,base,74,[mr_async_io(%d, %d bytes, file %d)]
-ja,base,75,[malloc failure adding async IO]
-ja,base,76,[Error adding async io!]
-ja,base,77,[Cannot seek for read!]
-ja,base,78,[read failure! (%d, %s)]
-ja,base,79,[do_read read %d bytes for file %d]
-ja,base,80,[Cannot seek for write!]
-ja,base,81,[writev failure! (%d, %s)]
-ja,base,82,[write failure! (%d, %s)]
-ja,base,83,[do_write wrote %d bytes for file %d]
-ja,base,84,[do_timeout(mrp %d)]
-ja,base,85,[do_timeout: found IO (timer=%d, time=%d)]
-ja,base,86,[error deleting io]
-ja,base,87,[timeout callback failure for %d\n]
-ja,base,88,[mr_get_event(%d) - outstanding io %d]
-ja,base,89,[mr_get_event: Waiting for reads on FD:]
-ja,base,90,[mr_get_event: Waiting for writes on FD:]
-ja,base,91,[ %d]
-ja,base,92,[ %d]
-ja,base,93,[mr_get_event set no timeout]
-ja,base,94,[mr_get_event set timeout to: %d.%d sec]
-ja,base,95,[error in select (%d, %s)]
-ja,base,96,[mr_get_event() - select found %d]
-ja,base,97,[error looking up IO fd %d]
-ja,base,98,[read failed for fd %d]
-ja,base,99,[error deleting io]
-ja,base,100,[callback failure for %d\n]
-ja,base,101,[error looking up IO fd %d]
-ja,base,102,[writing: header len %d, writelen %d, total %d]
-ja,base,103,[write failed for fd %d]
-ja,base,104,[error deleting io]
-ja,base,105,[callback failure for %d\n]
-ja,base,106,[Error creating dns cache]
-ja,base,107,[dns_cache_init: hash_size <= 0, using %d]
-ja,base,108,[dns_cache_init: cache-size <= %d, using %d]
-ja,base,109,[dns_cache_init: cache-size is %d is too large, using %d.]
-ja,base,110,[dns_cache_init: expire_time <= 0, using %d]
-ja,base,111,[dns_cache_init: expire is %d is too large, using %d seconds.]
-ja,base,112,[Error creating dns cache]
-ja,base,113,[dns-cache-insert: Error allocating entry]
-ja,base,114,[dns-cache-insert: malloc failure]
-ja,base,115,[successful server startup]
-ja,base,116,[%s B%s]
-ja,base,117,[Netscape executable and shared library have different versions]
-ja,base,118,[ executable version is %s]
-ja,base,119,[ shared library version is %s]
-ja,base,120,[error reporting shutting down]
-ja,base,121,[warning]
-ja,base,122,[config]
-ja,base,123,[security]
-ja,base,124,[failure]
-ja,base,125,[catastrophe]
-ja,base,126,[info]
-ja,base,127,[verbose]
-ja,base,128,[event_handler:Failed to wait on events %s]
-ja,base,129,[could not wait on resume event event (%s)]
-ja,base,130,[dlopen of %s failed (%s)]
-ja,base,131,[dlopen of %s failed (%s)]
-ja,base,132,[The server is terminating due to an error. Check the event viewer for the error message. SERVER EXITING!]
-ja,base,133,[Terminating the server %s]
-ja,base,134,[kill_server:cannot open server event %s]
-ja,base,135,[kill_server:cannot set server event %s]
-ja,base,136,[error: could not get socket (%s)\n]
-ja,base,137,[error: could not set socket option (%s)\n]
-ja,base,138,[Terminating Service:error: could not bind to address %s port %d (%s)\n]
-ja,base,139,[Terminating Service:error: could not bind to port %d (%s)\n]
-ja,base,140,[SetHandleNonInheritable: could not duplicate socket (%s)]
-ja,base,141,[SetHandleNonInheritable: closing the original socket failed (%s)]
-ja,base,142,[Could not SetHandleInformation (%s)]
-ja,base,143,[Terminating Service:Failure: Could not open statistics file (%s)\n]
-ja,base,144,[Could not set Thread Local Storage Value for thread at slot %d]
-ja,base,145,[secure handshake failed (code %d)\n]
-ja,base,146,[accept failed %d (%s)]
-ja,base,147,[Failed to pulse Event %d %s]
-ja,base,148,[Failed to send MobGrowth Event to parent %s]
-ja,base,149,[Pulsing MobRespawn Event %d]
-ja,base,150,[respawn thread pool to %d (%d)]
-ja,base,151,[Could not open event to signal rotate application. Could not create the MoveLog event:%s]
-ja,base,152,[Failed to send MoveLog Event to rotate app %s]
-ja,base,153,[growing thread pool from %d to %d]
-ja,base,154,[Could not open the ServiceControlManager, Error %d]
-ja,base,155,[StartNetsiteService:Could not open the service %s: Error %d]
-ja,base,156,[StartNetsiteService:Could not start the service %s]
-ja,base,157,[Service Startup: Could not allocate security descriptor]
-ja,base,158,[Service Startup: Could not init security descriptor]
-ja,base,159,[Service Startup: Could not set the security Dacl]
-ja,base,160,[Terminating Service:WinSock init failed: %s]
-ja,base,161,[Httpd Server Startup failed: %s]
-ja,base,162,[can't find empty statistics slot]
-ja,base,163,[NT daemon: could not create new thread %d]
-ja,base,164,[Service Startup Failure. Terminating Service:Could not create event %d:%s]
-ja,base,165,[Service Startup Error. Could not create the MoveLog event:%s]
-ja,base,166,[Failed to wait on Event objects %s]
-ja,base,167,[Failed to wait on Event objects %s]
-ja,base,168,[pipebuf_buf2sd: pipebuf_grab IO_ERROR %d]
-ja,base,169,[pool-init: memory pools disabled]
-ja,base,170,[pool-init: free_size <= 0, using %d]
-ja,base,171,[pool-create-block: out of memory]
-ja,base,172,[pool-create: out of memory]
-ja,base,173,[pool-create: out of memory]
-ja,base,174,[pool-malloc: out of memory]
-ja,base,175,[FREE() used where PERM_FREE() should have been used- problem corrected and supressing further warnings.]
-ja,base,176,[regex error: %s (regex: '%s')]
-ja,base,177,[can't create IPC pipe (%s)]
-ja,base,178,[write to wakeup pipe failed (%s)]
-ja,base,179,[flushing %d connections; current %d; tot %d]
-ja,base,180,[accept failed (%s)]
-ja,base,181,[Error creating time cache]
-ja,base,182,[time-cache: cache disabled]
-ja,base,183,[time_cache_init: hash_size < %d, using default, %d]
-ja,base,184,[time_cache_init: hash_size > %d, using default, %d]
-ja,base,185,[time_cache_init: cache_size < %d, using default, %d]
-ja,base,186,[time_cache_init: cache_size > %d, using default, %d]
-ja,base,187,[Error allocating memory for time_cache]
-ja,base,188,[Error allocating memory for time_cache entry]
-ja,base,189,[Error allocating memory for time_cache entry]
-ja,base,190,[Error inserting new time_cache entry]
-ja,base,191,[Error allocating memory for time_cache]
-ja,base,192,[cs-terminate failure (%s)]
-ja,base,193,[cs-init failure (%s)]
-ja,base,194,[cs-wait failure (%s)]
-ja,base,195,[cs-post failure (%s)]
-ja,base,196,[Unable to create nonblocking socket (%s)]
-ja,base,197,[error: could not set keepalive (%s)\n]
-ja,base,198,[error: could not set recv timeout (%s)\n]
-ja,base,199,[error: could not set send timeout (%s)\n]
-ja,base,200,[Unable to create nonblocking socket (%s)]
-ja,base,201,[sem_grab failed (%s)]
-ja,base,202,[sem_release failed (%s)]
-ja,base,203,[sem_release failed (%s)]
-ja,base,204,[Could not remove temporary directory %s, Error %d]
-ja,base,205,[Could not remove temporary directory %s, Error %d]
-ja,dsgw,-1,[$DBT: dsgw in DB file v1 $]
-ja,dsgw,1,[ç†è§£ã§ããªã„ HTTP リクエストã§ã™ã€‚]
-ja,dsgw,2,[ä¸æ­£ãªã¾ãŸã¯ã€å®Œäº†ã—ã¦ã„ãªã„ HTML フォーム データã§ã™ã€‚]
-ja,dsgw,3,[メモリä¸è¶³ã§ã™ã€‚]
-ja,dsgw,4,[query/form ã®å…¥åŠ›ãŒã•ã‚Œã¦ã„ã¾ã›ã‚“。]
-ja,dsgw,5,[ファイルã¾ãŸã¯ãƒ‘スã®æŒ‡å®šã«ä¸æ­£ãªæ–‡å­—ãŒä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™ã€‚]
-ja,dsgw,6,[設定ファイルãŒè¦‹ã¤ã‹ã‚‰ãªã„ã‹ä¸æ­£ã§ã™ã€‚]
-ja,dsgw,7,[LDAP ã‚’åˆæœŸåŒ–ã§ãã¾ã›ã‚“。]
-ja,dsgw,8,[LDAP ã¨ã®æŽ¥ç¶šæ™‚ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚]
-ja,dsgw,9,[検索ã®å¯¾è±¡ã¨ãªã‚‹ã‚ªãƒ–ジェクトをèªè­˜ã§ãã¾ã›ã‚“。]
-ja,dsgw,10,[ç†è§£ã§ããªã„属性ラベルã§ã™ã€‚]
-ja,dsgw,11,[マッムプロンプトをç†è§£ã§ãã¾ã›ã‚“。]
-ja,dsgw,12,[オブジェクト タイプã«å¯¾ã™ã‚‹æ¤œç´¢ãƒ•ã‚£ãƒ«ã‚¿ãŒã‚ã‚Šã¾ã›ã‚“。]
-ja,dsgw,13,[HTML テンプレート ファイルを開ãã“ã¨ãŒã§ãã¾ã›ã‚“。]
-ja,dsgw,14,[検索モードをç†è§£ã§ãã¾ã›ã‚“。 - "smart", "complex", "pattern", ã¾ãŸã¯ "auth" を指定ã—ã¦ãã ã•ã„。]
-ja,dsgw,15,[URL を指定ã™ã‚‹æƒ…å ±ãŒæ¬ è½ã—ã¦ã„ã¾ã™ã€‚]
-ja,dsgw,16,[URL ã®æŒ‡å®šãŒä¸æ˜Žã§ã™ã€‚]
-ja,dsgw,17,[未承èªã® URL ã‚‚ã—ãã¯æœªçŸ¥ã®ã‚¨ãƒ©ãƒ¼]
-ja,dsgw,18,[URL フォーマットãŒä¸æ­£ã§ã™ã€‚]
-ja,dsgw,19,[内部エラー]
-ja,dsgw,20,[テンプレート インデックス ファイルã®æ›¸ãè¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸã€‚]
-ja,dsgw,21,[テンプレート インデックス ファイルを開ãã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚]
-ja,dsgw,22,[Directory を読ã¿è¾¼ã‚€ã“ã¨ãŒã§ãã¾ã›ã‚“。]
-ja,dsgw,23,[LDAP SSL ã®åˆæœŸåŒ–ã«å¤±æ•—ã—ã¾ã—ãŸã€‚ (セキュリティ パスを確èªã—ã¦ãã ã•ã„。)]
-ja,dsgw,24,[SSLã§ä½œæ¥­ã™ã‚‹ãŸã‚ã®ãƒ¦ãƒ¼ã‚¶ã¨ã‚°ãƒ«ãƒ¼ãƒ— フォームã®å ´åˆã€ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚µãƒ¼ãƒç®¡ç†è€…ãŒã“ã®Administration Serverã® SSL ã‚’èµ·å‹•ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ã“れを行ã†ã®ã«[æš—å·åŒ–]ã®[オン/オフ]ページを使用ã§ãã¾ã™ã€‚]
-ja,dsgw,25,[証明書データベースã«è¨¼æ˜Žæ›¸ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚]
-ja,dsgw,26,[エラー: 証明書データベースã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’å¾—ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚]
-ja,dsgw,27,[ã‚ãªãŸã®è¨¼æ˜Žæ›¸ã®æœ‰åŠ¹æœŸé™ã¯åˆ‡ã‚Œã¦ã„ã¾ã™ã€‚]
-ja,dsgw,28,[無作為ã®æ–‡å­—列を作æˆã§ãã¾ã›ã‚“]
-ja,dsgw,29,[証明書を検索ã—ã¾ã—ãŸãŒã€è­˜åˆ¥åを見ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚]
-ja,dsgw,30,[証明書データベースを開ãã“ã¨ãŒã§ãã¾ã›ã‚“。]
-ja,dsgw,31,[証明書データベースã«è¿½åŠ ã‚’è¡Œã†ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚]
-ja,dsgw,32,[Directory Manager ãŒå®šç¾©ã•ã‚Œã¦ã„ã¾ã›ã‚“。]
-ja,dsgw,33,[検索文字列ãŒå…¥åŠ›ã•ã‚Œã¦ã„ã¾ã›ã‚“。もã†ä¸€åº¦å…¥åŠ›ã—ã¦ãã ã•ã„。]
-ja,dsgw,34,[設定ファイルã®ï¼‘行中ã«è¨­å®šé …ç›®ãŒå¤šã™ãŽã¾ã™ã€‚]
-ja,dsgw,35,[ウインドウズ ソケットã®åˆæœŸåŒ–ã«å¤±æ•—ã—ã¾ã—ãŸã€‚]
-ja,dsgw,36,[証明書をアドミニストレーション サーãƒã‹ã‚‰å¾—ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚]
-ja,dsgw,37,[識別ã•ã‚Œã‚‹åå‰ãŒ ldapdb:// ã«è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。]
-ja,dsgw,38,[未承èªã® URL ã¾ãŸã¯æœªçŸ¥ã®ã‚¨ãƒ©ãƒ¼]
-ja,dsgw,39,[URL ã®ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆã«ä¸æ­£ãŒã‚ã‚Šã¾ã™ã€‚]
-ja,dsgw,40,[ローカル LDAP データベースã®åˆæœŸåŒ–中ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ]
-ja,dsgw,41,[Directory サービスã®ã‚¿ã‚¤ãƒ—ãŒä¸æ˜Žã§ã™ã€‚ - "local" ã¾ãŸã¯ "remote" を指定ã—ã¦ãã ã•ã„。]
-ja,dsgw,42,[db 設定ファイルã®èª­ã¿è¾¼ã¿ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚]
-ja,dsgw,43,[NSHOME/userdb ã®ãƒ‘スãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“。]
-ja,dsgw,44,[Directory サービスã®è¨­å®šã‚’æ›´æ–°ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。]
-ja,dsgw,45,[エントリを Directory ã‹ã‚‰èª­ã¿è¾¼ã‚€ã“ã¨ãŒã§ãã¾ã›ã‚“。]
-ja,dsgw,46,[LDAP データベースを消去ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。]
-ja,dsgw,47,[エントリã®å¤‰æ›´ãŠã‚ˆã³è¿½åŠ ã‚’è¡Œã†ã“ã¨ã¯ã§ãã¾ã›ã‚“。]
-ja,dsgw,48,[å•é¡Œ]
-ja,dsgw,49,[証明書ã«å•é¡ŒãŒã‚ã‚Šã¾ã™ã€‚]
-ja,dsgw,50,[.\n<P>次ã«ç§»ã‚‹å‰ã«å†åº¦èªè¨¼ã‚’å—ã‘ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚\n]
-ja,dsgw,51,[.\n<P>次ã«ç§»ã‚‹å‰ã«å†åº¦èªè¨¼ã‚’å—ã‘ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚\n]
-ja,dsgw,52,[未知ã®ã‚¨ãƒ©ãƒ¼]
-ja,dsgw,53,[æ“作ã¯å®Œäº†ã—ã¾ã—ãŸã€‚]
-ja,dsgw,54,[サーãƒå†…部ã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚\n サーãƒç®¡ç†è€…ã«ç¾åœ¨ã®çŠ¶æ…‹ã‚’連絡ã—ã¦ãã ã•ã„。]
-ja,dsgw,55,[サーãƒã¯ã‚²ãƒ¼ãƒˆã‚¦ã‚¨ã‚¤ã‹ã‚‰å—ã‘å–ã£ãŸãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’ç†è§£ã§ãã¾ã›ã‚“。]
-ja,dsgw,56,[ã‚ãªãŸã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã¯å¿œç­”ãŒãªã„ã¾ã¾ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã—ã¾ã—ãŸã€‚\n å†åº¦æ¤œç´¢ã‚’è¡Œã†éš›ã«ã¯ã€æ¤œç´¢ã®çµæžœã‚’よã考慮ã—ã€åŠ¹çŽ‡ã®ã‚ˆã„方法ã§æ¤œç´¢ã‚’ãŠã“ãªã£ã¦ãã ã•ã„。]
-ja,dsgw,57,[ã‚ãªãŸã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã§å¾—ãŸçµæžœãŒå¤§ãã™ãŽã¾ã™ã€‚\n å†åº¦æ¤œç´¢ã‚’è¡Œã†éš›ã«ã¯ã€æ¤œç´¢ã®çµæžœã‚’よã考慮ã—ã€åŠ¹çŽ‡ã®ã‚ˆã„方法ã§æ¤œç´¢ã‚’ãŠã“ãªã£ã¦ãã ã•ã„。]
-ja,dsgw,58,[サーãƒãŒç†è§£ã§ããªã„方法を使用ã—ã¦ã€\nゲートウエイãŒã‚µãƒ¼ãƒã«èªè¨¼ã‚’試ã¿ã¾ã—ãŸã€‚]
-ja,dsgw,59,[ゲートウエイを経由ã—ãŸèªè¨¼ã¯ã€ã‚µãƒ¼ãƒã§è¡Œã†ã“ã¨ãŒã§ãã¾ã›ã‚“。]
-ja,dsgw,60,[リクエストã«å¿…è¦ãªæƒ…å ±ãŒæ¬ è½ã—ã¦ã„ã¾ã™ã€‚ リクエストをサーãƒãŒ \n å—ã‘付ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。ã»ã‹ã®ã‚µãƒ¼ãƒã§ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’処ç†ã™ã‚‹ã“ã¨ãŒã§ãã‚Œã°ã€ãƒ‡ãƒ¼ã‚¿ã®ãƒžã‚¹ã‚¿ã‚³ãƒ”ーをä¿æŒã™ã‚‹ã‚µãƒ¼ãƒã‚’りよã†ã—ã¦ãã ã•ã„。]
-ja,dsgw,61,[ã‚ãªãŸã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã®å®Ÿè¡Œã¯ç®¡ç†ã®ç¯„囲を超ãˆã¦ã„ã¾ã™ã€‚]
-ja,dsgw,62,[ゲートウエイãŒè¦æ±‚ã—ãŸé‡å¤§ãªæ‹¡å¼µã¯ã“ã®ã‚µãƒ¼ãƒã§åˆ©ç”¨ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。]
-ja,dsgw,63,[エントリã«å­˜åœ¨ã—ãªã„属性ãŒè¦æ±‚ã«ã‚ˆã£ã¦å‚ç…§ã•ã‚ŒãŸãŸã‚\nã€ã‚µãƒ¼ãƒã¯ã“ã®è¦æ±‚を処ç†ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚]
-ja,dsgw,64,[è¦æ±‚ãŒãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®åˆ¶ç´„ã«é•åã—ã¦ã„ã‚‹ãŸã‚ã€\nサーãƒã¯è¦æ±‚を完了ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚]
-ja,dsgw,65,[サーãƒã¯å…¥åŠ›ã•ã‚ŒãŸå€¤ã‚’追加ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚\n æ—¢ã«å…¥åŠ›ã—ãŸå€¤ãŒã‚¨ãƒ³ãƒˆãƒªã«å«ã¾ã‚Œã¦ã„ã‚‹ã“ã¨ã‚‚考ãˆã‚‰ã‚Œã¾ã™ã€‚]
-ja,dsgw,66,[サーãƒã¯ã‚¨ãƒ³ãƒˆãƒªã‚’見ã¤ã‘られã¾ã›ã‚“ã§ã—ãŸã€‚\n æ–°ã—ã„エントリを追加ã™ã‚‹å ´åˆã€è¿½åŠ ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªã®è¦ªãŒå¿…ãšå­˜åœ¨ã™ã‚‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。\n 検索中ã«ã“ã®ã‚¨ãƒ©ãƒ¼ã‚’å—ä¿¡ã—ãŸã‚‰ã€æ¤œç´¢ã—ã¦ã„ãŸã‚¨ãƒ³ãƒˆãƒªãŒå­˜åœ¨ã—ãªã„ã“ã¨ã‚’示ã—ã¦ã„ã¾ã™ã€‚\nDirectory Manager ã¨ã—ã¦èªè¨¼ã‚’試ã¿ã¦ã„ã‚‹å ´åˆã«ã“ã®ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãŸã‚‰ã€ã‚²ãƒ¼ãƒˆã‚¦ã‚¨ã‚¤ã®æ§‹æˆãƒ•ã‚¡ã‚¤ãƒ«ã‚’ãƒã‚§ãƒƒã‚¯ã—ã¦ãã ã•ã„。]
-ja,dsgw,67,[識別ã•ã‚ŒãŸåå‰ã®ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆãŒä¸æ­£ã§ã™ã€‚]
-ja,dsgw,68,[ã‚ãªãŸãŒè©¦ã¿ãŸã‚¨ãƒ³ãƒˆãƒªã¯ã€ãƒ‘スワードを使用ã—ã¦ã„ãªã„ã‹ã€èª¤ã‚ŠãŒã‚ã‚Šã¾ã™ã€‚Directory Manager ã§åŠ ãˆã‚‰ã‚ŒãŸã‚¨ãƒ³ãƒˆãƒªãŒé©åˆ‡ãªå±žæ€§ã§ã‚ã‚‹ã‹ç¢ºèªã—ã¦ãã ã•ã„。 ]
-ja,dsgw,69,[入力ã—ãŸãƒ‘スワード(ã¾ãŸã¯ãã®ä»–ã®èªè¨¼è³‡æ ¼è¨¼æ˜Žæ›¸)ã¯æ­£ã—ãã‚ã‚Šã¾ã›ã‚“。]
-ja,dsgw,70,[æ“作を実行ã™ã‚‹ãŸã‚ã®æ¨©é™ã‚’æŒã£ã¦ã„ã¾ã›ã‚“。]
-ja,dsgw,71,[サーãƒãŒæ··ã¿åˆã£ã¦ã„ã¾ã™ã€‚数分後ã«å†åº¦æŽ¥ç¶šã‚’è¡Œã£ã¦ãã ã•ã„。]
-ja,dsgw,72,[LDAP サーãƒã«æŽ¥ç¶šã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。]
-ja,dsgw,73,[サーãƒã¯ã‚ãªãŸã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’処ç†ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。\n サーãƒã«å¤§ããªè² è·ãŒã‹ã‹ã£ã¦ã„ã‚‹ã‹ã€ã‚µãƒ¼ãƒãŒã‚ãªãŸã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’ \n 処ç†ã™ã‚‹ã‚ˆã†ã«è¨­å®šã•ã‚Œã¦ã„ãªã„ã“ã¨ãŒè€ƒãˆã‚‰ã‚Œã¾ã™ã€‚]
-ja,dsgw,74,[Directory サーãƒã¯ã‚ãªãŸã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’処ç†ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。\n リクエストã®å†…容ãŒæ­£ã—ããªã„ã‹ã€ã‚µãƒ¼ãƒãŒæ›´æ–°å‡¦ç†ã‚’è¡Œã£ã¦ã„ã‚‹ \n 最中ã§ã‚ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚]
-ja,dsgw,75,[Directory サーãƒã¯æŒ‡å®šã—ãŸã‚¨ãƒ³ãƒˆãƒªã«å­ãŒã„ã‚‹å ´åˆã€\n エントリã®å‰Šé™¤ãƒ»åå‰ã®å¤‰æ›´ã‚’è¡Œã†ã“ã¨ãŒã§ãã¾ã›ã‚“。ã“ã®æ“作を行ã†ã«ã¯ã€\n æ“作ã®å‰ã«å­ã®ã‚¨ãƒ³ãƒˆãƒªã‚’å…¨ã¦å‰Šé™¤ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚]
-ja,dsgw,76,[サーãƒã«æ–°ã—ã„エントリを追加・åå‰ã®å¤‰æ›´ã‚’è¡Œã†ã“ã¨ãŒã§ãã¾ã›ã‚“。\n æ—¢ã«åŒã˜åå‰ã®ã‚¨ãƒ³ãƒˆãƒªãŒå­˜åœ¨ã—ã¦ã„ã¾ã™ã€‚]
-ja,dsgw,77,[ã‚ãªãŸã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã¯è¤‡æ•°ã® Directory サーãƒã«å映ã•ã‚Œã¾ã™ã€‚]
-ja,dsgw,78,[Directory サーãƒã«æŽ¥ç¶šã§ãã¾ã›ã‚“ã§ã—ãŸã€‚\n サーãƒç®¡ç†è€…ã«ã”相談ãã ã•ã„。]
-ja,dsgw,79,[サーãƒã«ãƒ‡ãƒ¼ã‚¿ã‚’é€ä¿¡ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚]
-ja,dsgw,80,[サーãƒã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’読ã¿è¾¼ã¿ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚]
-ja,dsgw,81,[サーãƒã‹ã‚‰ã®å¿œç­”ãŒã‚ã‚Šã¾ã›ã‚“。タイムアウトã—ã¾ã—ãŸã€‚]
-ja,dsgw,82,[サーãƒã¯ã‚²ãƒ¼ãƒˆã‚¦ã‚¨ã‚¤ãŒä½¿ç”¨ã™ã‚‹èªè¨¼æ–¹æ³•ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。]
-ja,dsgw,83,[検索フィルタを構æˆä¸­ã«ã‚²ãƒ¼ãƒˆã‚¦ã‚¨ã‚¤ã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚]
-ja,dsgw,84,[æ“作ã¯ãƒªã‚¯ã‚¨ã‚¹ãƒˆã«ã‚ˆã‚Šã‚­ãƒ£ãƒ³ã‚»ãƒ«ã•ã‚Œã¾ã—ãŸã€‚]
-ja,dsgw,85,[ライブラリã§å†…部エラーãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚パラメータã«ä¸æ­£ãŒã‚ã‚Šã¾ã™ã€‚]
-ja,dsgw,86,[サーãƒã¸ã®æŽ¥ç¶šã‚’é–‹ã‘られã¾ã›ã‚“ã§ã—ãŸã€‚サーãƒç®¡ç†è€…ã«ã”相談ãã ã•ã„。]
-ja,dsgw,87,[未知ã®ã‚¨ãƒ©ãƒ¼ã«é­é‡ã—ã¾ã—ãŸã€‚]
-ja,dsgw,88,[エントリã¯æ—¢ã«å­˜åœ¨ã—ã¾ã™ã€‚]
-ja,dsgw,89,[エントリå ]
-ja,dsgw,90,[onMouseOver="window.status='エントリをå‚ç…§ã™ã‚‹ã«ã¯ã‚¯ãƒªãƒƒã‚¯ã—ã¦ãã ã•ã„。'; return true"]
-ja,dsgw,91,[ æ—¢ã«å­˜åœ¨ã—ã¾ã™ã€‚<P>別ã®åå‰ãƒ»å ´æ‰€ã‚’é¸æŠžã—ã¦ãã ã•ã„。\n<P>\n]
-ja,dsgw,92,[親エントリã¯å­˜åœ¨ã—ã¾ã›ã‚“。]
-ja,dsgw,93,[次ã®åå‰ã®ã‚¨ãƒ³ãƒˆãƒªã®è¿½åŠ ãŒã§ãã¾ã›ã‚“: <P><B>%s</B>,<P>\n 親エントリãŒå­˜åœ¨ã—ã¾ã›ã‚“。<P>\n 親エントリを最åˆã«ç™»éŒ²ã—ã¦ãã ã•ã„。\n]
-ja,dsgw,94,[ã“ã‚Œã®è¦ª\n]
-ja,dsgw,95,[エントリå: <P><B>%s</B>.\n]
-ja,dsgw,96,[警告: èªè¨¼ã•ã‚Œã¦ã„ã¾ã›ã‚“。 (次ã¸)...\n]
-ja,dsgw,97,[%s Directory エントリ]
-ja,dsgw,98,[<PRE>エントリ DN: %s</PRE><P>\n]
-ja,dsgw,99,[<B>%s</B> ã«å¤‰æ›´ã—ä¿å­˜ã—ã¾ã—ãŸã€‚]
-ja,dsgw,100,[<B>%s</B> を追加ã—ã¾ã—ãŸã€‚]
-ja,dsgw,101,[<B>%s</B> を削除ã—ã¾ã—ãŸã€‚]
-ja,dsgw,102,[<B>%s</B> ã‹ã‚‰ <B>%s</B> ã¸åå‰ã‚’変更ã—ã¾ã—ãŸã€‚]
-ja,dsgw,103,[<P><B>ノート:</B> ã‚ãªãŸã® %s エントリã¯ç ´æ£„ã•ã‚Œã¾ã—ãŸã€‚\n ã‚ãªãŸã¯å†åº¦èªè¨¼ã‚’å—ã‘変更を追加ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚\n]
-ja,dsgw,104,[削除]
-ja,dsgw,105,[åå‰ã®å¤‰æ›´]
-ja,dsgw,106,[パスワード変更]
-ja,dsgw,107,[属性 %s を変更ã—ã¾ã—ãŸã€‚<BR>\n]
-ja,dsgw,108,[ アスキーã§ã¯ãªã„ (%ld ãƒã‚¤ãƒˆ)\n]
-ja,dsgw,109,[値ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“。 ã‚‚ã†ä¸€åº¦å…¥åŠ›ã—ã¦ãã ã•ã„。\n]
-ja,dsgw,110,[変更ã¯ã‚ã‚Šã¾ã›ã‚“。\n]
-ja,dsgw,111,[<P>%s ã‚’ Directory サーãƒã«é€ä¿¡ã—ã¾ã—ãŸã€‚\n]
-ja,dsgw,112,[情報]
-ja,dsgw,113,[変更]
-ja,dsgw,114,[<P>円å–ã‚‹ã®è¿½åŠ ã«æˆåŠŸã—ã¾ã—ãŸã€‚\n]
-ja,dsgw,115,[<P>エントリã®ä¿®æ­£ã«æˆåŠŸã—ã¾ã—ãŸã€‚変更ã¯ä¿å­˜ã•ã‚Œã¾ã—ãŸã€‚\n]
-ja,dsgw,116,[<P>エントリã®å‰Šé™¤ã¯æˆåŠŸã—ã¾ã—ãŸã€‚\n]
-ja,dsgw,117,[<PRE>æ–°ã—ã„エントリã®åå‰ã¯ã€æ¬¡ã®ã¨ãŠã‚Šã§ã™ï¼š %s\n</PRE><HR>\n]
-ja,dsgw,118,[<P>åå‰ã®å¤‰æ›´ã«æˆåŠŸã—ã¾ã—ãŸã€‚\n]
-ja,dsgw,119,[以å‰ã®ãƒ‘スワードを用æ„ã—ã¦ãã ã•ã„。]
-ja,dsgw,120,[æ–°ã—ã„パスワードã®å…¥åŠ›ãŒå¿…è¦ã§ã™ã€‚ã‚‚ã†ä¸€åº¦è¡Œã£ã¦ãã ã•ã„。]
-ja,dsgw,121,[æ–°ã—ã„パスワードã¨ã€ç¢ºèªã®ãŸã‚ã«å…¥åŠ›ã—ãŸãƒ‘スワードãŒç•°ãªã‚Šã¾ã™ã€‚ã‚‚ã†ä¸€åº¦å…¥åŠ›ã—ã¦ãã ã•ã„。]
-ja,dsgw,122,[<BR>%s <B>%s</B> ã¯ä½¿ç”¨ä¸­ã§ã™ã€‚別ã®æŒ‡å®šã‚’è¡Œã£ã¦ãã ã•ã„。<BR>\n]
-ja,dsgw,123,[データ エレメント "%.100s" ãŒä¸è¶³ã—ã¦ã„ã¾ã™ã€‚]
-ja,dsgw,124,[設定情報をåˆæœŸåŒ–ã—ã¦ã„ã¾ã™ã€‚]
-ja,dsgw,125,[ファイルを開ãã“ã¨ãŒã§ãã¾ã›ã‚“。]
-ja,dsgw,126,[dbconf ファイルã®å½¢å¼ãŒä¸æ­£ã§ã™ã€‚]
-ja,dsgw,127,[dbconf ã®ä¸­ã®å±žæ€§å称ã®æŒ‡å®šãŒä¸è¶³ã—ã¦ã„ã¾ã™ã€‚]
-ja,dsgw,128,[メモリä¸è¶³ã§ã™ã€‚]
-ja,dsgw,129,[dbconf ファイルã®ä¸­ã®æŒ‡ä»¤ã®æŒ‡å®šãŒä¸è¶³ã—ã¦ã„ã¾ã™ã€‚]
-ja,dsgw,130,[構æˆãƒ•ã‚¡ã‚¤ãƒ«"%s"ã‚’é–‹ã‘られã¾ã›ã‚“\n]
-ja,dsgw,131,["authlifetime" ã®æŒ‡å®šãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。\n]
-ja,dsgw,132,["dirmgr" ã®æŒ‡å®šãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。\n]
-ja,dsgw,133,["baseurl" ã®æŒ‡å®šãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。\n]
-ja,dsgw,134,["baseurl" ã®ä¸­ã§æŒ‡å®šã•ã‚Œã¦ã„ã‚‹ URL ãŒä¸æ­£ã§ã™ã€‚ - DN ãŒä¸è¶³ã—ã¦ã„ã¾ã™ã€‚\n]
-ja,dsgw,135,[baseurl をパースã—ã¦ã„ã¾ã™ã€‚]
-ja,dsgw,136,["baseurl" ã®ä¸­ã§æŒ‡å®šã•ã‚Œã¦ã„ã‚‹ URL ãŒä¸æ­£ã§ã™ã€‚ - "ldap://" URL ã®æŒ‡å®šã§ã¯ã‚ã‚Šã¾ã›ã‚“。\n]
-ja,dsgw,137,["ldaps://" ã® URL 指定方法ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“。\n]
-ja,dsgw,138,["template" ã®æŒ‡å®šãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。\n]
-ja,dsgw,139,["sslrequired" ã®æŒ‡å®šãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。\n]
-ja,dsgw,140,[ç†è§£ã§ããªã„値㌠"sslrequired" ã«ã‚ã‚Šã¾ã™ã€‚("never", "whenauthenticated", "always" を指定ã—ã¦ãã ã•ã„。)\n]
-ja,dsgw,141,["securitypath" ã®æŒ‡å®šãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。\n]
-ja,dsgw,142,["location-suffix" ã®æŒ‡å®šãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。\n]
-ja,dsgw,143,["location" ã®æŒ‡å®šãŒå¿…è¦ã§ã™ã€‚\n]
-ja,dsgw,144,["newtype" ã®æŒ‡å®šã«ã¯ï¼’ã¤ã®å€¤ã‚’指定ã—ã¦ãã ã•ã„。\n]
-ja,dsgw,145,["newtype" ã®å ´æ‰€ãŒä¸æ˜Žã§ã™ã€‚\n]
-ja,dsgw,146,[3ã¤ã¾ãŸã¯ï¼”ã¤ã®æŒ‡å®šãŒ "tmplset" ã«ã¯å¿…è¦ã§ã™ã€‚\n]
-ja,dsgw,147,["attrvset" ã«ã¯ï¼”ã¤ã®æŒ‡å®šãŒå¿…è¦ã§ã™ã€‚\n]
-ja,dsgw,148,["charset" ã®æŒ‡å®šã‚’見ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。\n]
-ja,dsgw,149,["ClientLanguage" ã®æŒ‡å®šã‚’見ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。\n]
-ja,dsgw,150,["AdminLanguage" ã®æŒ‡å®šã‚’見ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。\n]
-ja,dsgw,151,["DefaultLanguage"ã®æŒ‡å®šã‚’見ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。\n]
-ja,dsgw,152,["include" ã«å¯¾å¿œã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«åãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“\n]
-ja,dsgw,153,[設定ファイルã«æœªçŸ¥ã®å‘½ä»¤ãŒã‚ã‚Šã¾ã™\n]
-ja,dsgw,154,[<= erase_db lcache.conf ファイルを開ãã“ã¨ãŒã§ãã¾ã›ã‚“。"%s"\n]
-ja,dsgw,155,[<FONT SIZE="+1">\n<P>データベースã¯å‰Šé™¤ã•ã‚Œã¦ã„ã¾ã™ã€‚ æ–°ã—ã„データベースを作æˆã—ã¾ã™... \n</FONT>\n ]
-ja,dsgw,156,[<FONT SIZE="+1">\n<P>データベースを削除ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。\n</FONT>\n ]
-ja,dsgw,157,[<= app_suffix ldif ファイルを開ãã“ã¨ãŒã§ãã¾ã›ã‚“。 "%s"\n]
-ja,dsgw,158,[<= app_suffix 一時ファイルを開ãã“ã¨ãŒã§ãã¾ã›ã‚“。 "%s"\n]
-ja,dsgw,159,[%s ã‹ã‚‰ %s ã¸åå‰ã®å¤‰æ›´ã‚’è¡Œã†ã“ã¨ãŒã§ãã¾ã›ã‚“。]
-ja,dsgw,160,[ヌル ãƒã‚¤ãƒ³ã‚¿ãŒ dbconf_read_default_dbinfo() ã‹ã‚‰è¿”ã•ã‚Œã¾ã—ãŸã€‚]
-ja,dsgw,161,["ldapdb" URL ãŒä¸æ­£ã§ã™ã€‚- ベース DN ãŒæ¬ è½ã—ã¦ã„ã¾ã™ã€‚\n]
-ja,dsgw,162,["ldapdb" URL ãŒä¸æ­£ã§ã™ã€‚\n]
-ja,dsgw,163,["baseurl" ã§è¨˜è¿°ã•ã‚ŒãŸ URL ãŒä¸æ­£ã§ã™ã€‚ - ベース DN ãŒæ¬ è½ã—ã¦ã„ã¾ã™ã€‚\n]
-ja,dsgw,164,[baseurl をパースã—ã¦ã„ã¾ã™ã€‚]
-ja,dsgw,165,["baseurl" ã§è¨˜è¿°ã•ã‚ŒãŸ URL ãŒä¸æ­£ã§ã™ã€‚ - "ldap:// ã¾ãŸã¯ ldapdb://" ã® URL ã§æŒ‡å®šã—ã¦ãã ã•ã„。\n]
-ja,dsgw,166,["ldaps://" ã® URL 指定方法ã¯ã€ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“。\n]
-ja,dsgw,167,[binddn ã¯å€¤ã‚’æŒã£ã¦ã„ã¾ã›ã‚“。]
-ja,dsgw,168,[bindpw ã¯å€¤ã‚’æŒã£ã¦ã„ã¾ã›ã‚“。]
-ja,dsgw,169,[デフォルト Directory サービス㧠dbswitch.conf ファイルãŒå®šç¾©ã•ã‚Œã¦ã„ã¾ã›ã‚“。]
-ja,dsgw,170,[書込ã¿ã®ãŸã‚ã«æ§‹æˆãƒ•ã‚¡ã‚¤ãƒ«"%s" ã‚’é–‹ã‘られã¾ã›ã‚“\n]
-ja,dsgw,171,[%s ã‹ã‚‰ %s ã¸åå‰ã‚’変更ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。]
-ja,dsgw,172,[設定ファイル %s: ]
-ja,dsgw,173,[設定ファイル %s: %d 行: ]
-ja,dsgw,174,[最大 %d]
-ja,dsgw,175,[ OK ]
-ja,dsgw,176,[ウインドウを閉ã˜ã‚‹]
-ja,dsgw,177,[å‰ã¸]
-ja,dsgw,178,[{crypt}ロック中 [%s GMT]]
-ja,dsgw,179,[メインã¸]
-ja,dsgw,181,[ Help ]
-ja,dsgw,182,[Help]
-ja,dsgw,184,[Help ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“。]
-ja,dsgw,186,[ウインドウを閉ã˜ã‚‹]
-ja,dsgw,187,[ウインドウを閉ã˜ã‚‹]
-ja,dsgw,188,[テンプレートãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。]
-ja,dsgw,189,[èªè¨¼ä¸­ ...]
-ja,dsgw,190,[èªè¨¼ã‚’å–り消ã—ã¾ã™ã‹ (Log out)?]
-ja,dsgw,191,[検索文字列を入力ã—ã¦ãã ã•ã„]
-ja,dsgw,192,[èªè¨¼ã®æœ€åˆã®ã‚¹ãƒ†ãƒƒãƒ—ã¯ã€Directory ã« ID を入力ã™ã‚‹ã“ã¨ã§ã™ã€‚\n<br>åå‰ã‚’入力ã—ã¦ãã ã•ã„:]
-ja,dsgw,193,[次ã¸]
-ja,dsgw,194,[次ã¸]
-ja,dsgw,195,[キャンセル]
-ja,dsgw,196,[Directory Manager ã¨ã—ã¦èªè¨¼"> &nbsp;(Directory Administrator ã®ã¿åˆ©ç”¨å¯èƒ½)\n]
-ja,dsgw,197,[èªè¨¼ ...]
-ja,dsgw,198,[èªè¨¼ã‚’å–り消ã—ã¾ã™ã‹ï¼Ÿ]
-ja,dsgw,200,[次ã¸]
-ja,dsgw,201,[次ã¸]
-ja,dsgw,202,[キャンセル]
-ja,dsgw,203,[Directory ã§èªè¨¼ (Log in)]
-ja,dsgw,204,[<B>%s</B>ã¨ã—㦠Directory ã«èªè¨¼ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚èªè¨¼éŽç¨‹ã‚’完了ã™ã‚‹ã«ã¯ã€ãƒ‘スワードをタイプã—ã¦ãã ã•ã„。\n]
-ja,dsgw,206,[後㧠Directory ã®ã‚ãªãŸã®ã‚¨ãƒ³ãƒˆãƒªã®è¿½åŠ ãƒ»å¤‰æ›´ã‚’è¡Œã†ã«ã¯ã€\nDirectory ã«èªè¨¼(Log in)ã—ãŸå¾Œã€ã‚¬ã‚¤ãƒ‰ã‚’ウインドウ㫠\n 表示ã•ã›ã€ãれをå‚ç…§ã—ãªãŒã‚‰ä½œæ¥­ã‚’è¡Œã£ã¦ãã ã•ã„。\n]
-ja,dsgw,207,[ã“ã®ã‚¹ã‚¯ãƒªãƒ¼ãƒ³ä¸Šã§ Directory ã«èªè¨¼(Log in)ã—ã¦\nã„ã‚‹éš›ã«ã¯ã€æ—¢ã«è¿½åŠ ãƒ»å¤‰æ›´ã®ä½œæ¥­ã‚’è¡Œã†ã“ã¨ãŒå¯èƒ½ã§ã™ã€‚ã¾ã èªè¨¼\n(Log in)ã—ã¦ã„ãªã„å ´åˆã«ã¯ãれを行ã£ãŸã‚ã¨ä½œæ¥­ã‚’è¡Œã£ã¦ãã ã•ã„。\n]
-ja,dsgw,208,[èªè¨¼ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹]
-ja,dsgw,209,[<form>\nã‚ãªãŸã¯ç¾åœ¨ Directory ã«èªè¨¼ã•ã‚Œã¦ã„ã¾ã™ã€‚]
-ja,dsgw,210,[.\nã‚‚ã—ã‚ãªãŸãŒ Directory ã®èªè¨¼ã‚’å–り消ã™(Log out)ã®ã§ã‚ã‚Œã°ãƒœã‚¿ãƒ³ã‚’押ã—ã¦ãã ã•ã„。]
-ja,dsgw,211,[èªè¨¼ã®å–り消ã—(Log out)]
-ja,dsgw,212,[ã‚ãªãŸãŒç ´æ£„ã™ã‚‹èªè¨¼]
-ja,dsgw,213,[有効期é™ã¯åˆ‡ã‚Œã¾ã—ãŸã€‚\n<HR>\n]
-ja,dsgw,214,[ç¾åœ¨ã‚ãªãŸã¯ã€Directory ã«èªè¨¼ã•ã‚Œã¦ã„ã¾ã›ã‚“。<HR>\n]
-ja,dsgw,215,["%s=" ãŒä¸è¶³ã—ã¦ã„ã¾ã™ã€‚]
-ja,dsgw,216,["%s=%s" ãŒä¸æ˜Žã§ã™ã€‚]
-ja,dsgw,217,[%s オプションãŒä¸æ˜Žã§ã™ã€‚]
-ja,dsgw,218,[%s ã®æ›¸å¼ãŒä¸æ˜Žã§ã™ã€‚\n]
-ja,dsgw,219,[** HTML タイプ "%s" ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“。 **<BR>\n]
-ja,dsgw,224,[修正]
-ja,dsgw,225,[変更ä¿ç®¡]
-ja,dsgw,226,[変更]
-ja,dsgw,227,[追加]
-ja,dsgw,228,[削除]
-ja,dsgw,229,[エントリを削除ã—ã¦ã‚ˆã‚ã—ã„ã§ã™ã‹ï¼Ÿ]
-ja,dsgw,230,[åå‰ã®å¤‰æ›´]
-ja,dsgw,231,[エントリã®æ–°ã—ã„åå‰ã‚’入力ã—ã¦ãã ã•ã„:]
-ja,dsgw,232,[修正]
-ja,dsgw,233,[%s= ãŒä¸è¶³ã—ã¦ã„ã¾ã™ã€‚]
-ja,dsgw,234,[ウインドウを閉ã˜ã‚‹ã€‚]
-ja,dsgw,235,[修正 ...]
-ja,dsgw,236,["%s=" ä¸è¶³ã—ã¦ã„ã¾ã™ã€‚\n]
-ja,dsgw,237,["%s" ãŒã‚»ãƒƒãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“。\n]
-ja,dsgw,238,["%s" ã®æ›¸å¼ãŒä¸æ˜Žã§ã™ã€‚\n]
-ja,dsgw,239,[å†èªè¨¼]
-ja,dsgw,240,[ウインドウを閉ã˜ã‚‹]
-ja,dsgw,241,[よã‚ã—ã„ã§ã™ã‹ï¼Ÿ]
-ja,dsgw,242,[width=400,height=130,resizable]
-ja,dsgw,243,[ OK ]
-ja,dsgw,244,[ OK ]
-ja,dsgw,245,[ リセット ]
-ja,dsgw,246,[ 終了 ]
-ja,dsgw,247,[ キャンセル ]
-ja,dsgw,248,[別㮠IF を発見(入れå­ã® IF ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œå®šã¾ã›ã‚“)]
-ja,dsgw,249,[ELESE を見ã¤ã‘ã¾ã—ãŸãŒã€IF ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。]
-ja,dsgw,250,[ELSE を見ã¤ã‘ã¾ã—ãŸãŒã€å¾Œã® ELSE ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。(ã‚‚ã—ã㯠ENDIF)]
-ja,dsgw,251,[ELIF を見ã¤ã‘ã¾ã—ãŸãŒ IF を見ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。]
-ja,dsgw,252,[ELIF を見ã¤ã‘ã¾ã—ãŸãŒã€å¾Œã® ELSE ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。(ã‚‚ã—ã㯠ENDIF)]
-ja,dsgw,253,[ENDIF を見ã¤ã‘ã¾ã—ãŸãŒ IF ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。]
-ja,dsgw,254,[<BR><B>テンプレート エラー:</B> %s<BR>\n]
-ja,dsgw,255,[ldap_init/lcache_init ãŒè¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã‚’読ã¿è¾¼ã‚€å‰ã«å®Ÿè¡Œã•ã‚Œã¾ã—ãŸã€‚]
-ja,dsgw,256,[アドミニストレーション サーãƒã¯å®Ÿè¡Œä¸­ã§ã¯ã‚ã‚Šã¾ã›ã‚“。]
-ja,dsgw,257,[パーミッションをåˆæœŸåŒ–ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚]
-ja,dsgw,258,[DN ã«ãƒ¦ãƒ¼ã‚¶åãŒãƒžãƒƒãƒ—ã•ã‚Œã¦ã„ã¾ã›ã‚“。(アドミン サーãƒã®ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚)]
-ja,dsgw,259,[ç¾åœ¨ã®ãƒ¦ãƒ¼ã‚¶åã‚’å¾—ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。]
-ja,dsgw,260,[ç¾åœ¨ã®ãƒ¦ãƒ¼ã‚¶ãƒ‘スワードを得るã“ã¨ãŒã§ãã¾ã›ã‚“。]
-ja,dsgw,261,[エラー: %s]
-ja,dsgw,262,[ノート: ディスプレイ テンプレートã¯å­˜åœ¨ã—ã¾ã›ã‚“。デフォルト値を使用ã—ã¾ã™ã€‚]
-ja,dsgw,263,[ユーザ ID ãŒä¸æ­£ã‚‚ã—ã㯠LDAP ㌠NULL ã‚’è¿”ã—ã¾ã—ãŸã€‚]
-ja,dsgw,264,[ユーザ ID ã«ãƒžãƒƒãƒã™ã‚‹ã‚‚ã®ãŒã‚ã‚Šã¾ã›ã‚“。]
-ja,dsgw,265,[ユーザ ID ãŒï¼‘ã¤ä»¥ä¸Šè©²å½“ã—ã¾ã™ã€‚]
-ja,dsgw,266,[the entire directory]
-ja,dsgw,267,["includeset" ã«ã¯ï¼’ã¤ã®å€¤ãŒå¿…è¦ã§ã™ã€‚\n]
-ja,dsgw,268,[エントリã«ã¯è¦æ±‚ã•ã‚ŒãŸå±žæ€§å€¤ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ]
-ja,dsgw,269,["NLS" 指é‡ã®å¼•æ•°ãŒæ¬ ã‘ã¦ã„ã¾ã™\n]
-ja,dsgw,270,[NTユーザIDã®å€¤ã‚’指定ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™\n]
-ja,dsgw,271,[指é‡å†…ã®NTユーザIDã¨NTドメインIDã®çµ„åˆã‚ã›ã¯å›ºæœ‰ã®ã‚‚ã®ã§ã¯ã‚ã‚Šã¾ã›ã‚“\n]
-ja,dsgw,272,[NTユーザIDã¨NTドメインIDã®ä¸¡æ–¹ã®å€¤ã‚’指定ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™\n]
-ja,dsgw,273,[NTユーザID値ã®é•·ã•ã¯20文字を超éŽã—ã¦ã¯ãªã‚Šã¾ã›ã‚“。\n]
-ja,dsgw,274,[æ–°è¦ã‚¨ãƒ³ãƒˆãƒªã®åå‰ã‚’入力ã—ã¦ãã ã•ã„。]
-ja,dsgw,275,[æ–°è¦ã‚¨ãƒ³ãƒˆãƒªã®å ´æ‰€ã‚’é¸æŠžã—ã¦ãã ã•ã„。]
-ja,dsgw,276,[æ–°è¦ã‚¨ãƒ³ãƒˆãƒª]
-ja,dsgw,277,[ã“ã®æ©Ÿèƒ½ã‚’使用ã™ã‚‹ã«ã¯ã€dsgw.confã§å®šç¾©ã•ã‚ŒãŸdirmgrãŒãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“]
-ja,dsgw,278,["vcard-property"ã®æŒ‡é‡ã«ã¯3ã¾ãŸã¯4ã¤ã®å¼•æ•°ãŒå¿…è¦ã§ã™\n]
-ja,dsgw,279,[Vcardプロパティ構文ã¯"cis" ã¾ãŸã¯ "mls"ã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“\n]
-ja,dsgw,280,[エントリãŒæ¤œç´¢ã•ã‚Œã¾ã›ã‚“ã§ã—ãŸ\n%2$s]
-ja,dsgw,281,['%4$s'ãŒ%2$s%3$sã€ã‚¨ãƒ³ãƒˆãƒªã¯æ¤œç´¢ã•ã‚Œã¾ã›ã‚“ã§ã—ãŸ\n]
-ja,dsgw,282,[エントリã¯æ¤œç´¢ã•ã‚Œã¾ã›ã‚“ã§ã—ãŸ\n%2$s]
-ja,dsgw,283,['%4$s'ãŒ%2$s%3$sã€ã‚¨ãƒ³ãƒˆãƒªã¯æ¤œç´¢ã•ã‚Œã¾ã›ã‚“ã§ã—ãŸ\n]
-ja,dsgw,284,[1個ã®ã‚¨ãƒ³ãƒˆãƒªãŒæ¤œç´¢ã•ã‚Œã¾ã—ãŸ\n%2$s]
-ja,dsgw,285,['%4$s'ãŒ%2$s%3$sã€1個ã®ã‚¨ãƒ³ãƒˆãƒªãŒæ¤œç´¢ã•ã‚Œã¾ã—ãŸ\n]
-ja,dsgw,286,[1個ã®ã‚¨ãƒ³ãƒˆãƒªãŒæ¤œç´¢ã•ã‚Œã¾ã—ãŸ\n%2$s]
-ja,dsgw,287,[%2$sãŒ'%4$s'%3$sã€1個ã®ã‚¨ãƒ³ãƒˆãƒªãŒæ¤œç´¢ã•ã‚Œã¾ã—ãŸ\n]
-ja,dsgw,288,[%1$li個ã®ã‚¨ãƒ³ãƒˆãƒªãŒæ¤œç´¢ã•ã‚Œã¾ã—ãŸ\n%2$s]
-ja,dsgw,289,['%4$s'ãŒ%2$s%3$sã€%1$li個ã®ã‚¨ãƒ³ãƒˆãƒªãŒæ¤œç´¢ã•ã‚Œã¾ã—ãŸ\n]
-ja,dsgw,290,[%1$li個ã®ã‚¨ãƒ³ãƒˆãƒªãŒæ¤œç´¢ã•ã‚Œã¾ã—ãŸ\n%2$s]
-ja,dsgw,291,['%4$s'ãŒ%2$s%3$sã€%1$li個ã®ã‚¨ãƒ³ãƒˆãƒªãŒæ¤œç´¢ã•ã‚Œã¾ã—ãŸ\n]
-ja,dsgw,292,[LDAPフィルタ]
-ja,dsgw,293,[èªè¨¼ã«ä½¿ç”¨ã—ãŸã‚¨ãƒ³ãƒˆãƒªãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚エントリåãŒå¤‰æ›´ã•ã‚ŒãŸã‹ã€å‰Šé™¤ã•ã‚ŒãŸå¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚ã‚‚ã†ä¸€åº¦èªè¨¼ã‚’è¡Œã£ã¦ã¿ã¦ãã ã•ã„。]
-ja,dsgw,294,[æ–°ã—ã„パスワードã®æ§‹æ–‡ã¯ç„¡åŠ¹ã§ã™ã€‚\n]
-ja,dsgw,295,[æ–°ã—ã„パスワードã¯ãƒ‘スワード履歴ã®ä¸­ã«ã‚ã‚Šã¾ã™ã€‚\n]
-ja,dsgw,296,[パスワードå†å…¥åŠ›ã®åˆ¶é™å›žæ•°ã‚’越ãˆã¾ã—ãŸã€‚システム アドミニストレータã«é€£çµ¡ã—ã¦ãã ã•ã„。\n]
-ja,dsgw,297,[パスワードå†å…¥åŠ›ã®åˆ¶é™å›žæ•°ã‚’越ãˆã¾ã—ãŸã€‚ã‚ã¨ã§ã‚‚ã†ä¸€åº¦è¡Œã£ã¦ãã ã•ã„。\n]
-ja,dsgw,298,[ã“ã®ãƒ‘スワードã¯æœŸé™åˆ‡ã‚Œã§ã™ã€‚システム アドミニストレータã«é€£çµ¡ã—ã¦ã€ãƒ‘スワードをリセットã—ã¦ãã ã•ã„。\n]
-ja,dsgw,299,[修正ã—ã¦ã„ã¾ã™ã€‚]
-ja,dsgw,300,[追加ã—ã¦ã„ã¾ã™ã€‚]
-ja,dsgw,301,[削除ã—ã¦ã„ã¾ã™ã€‚]
-ja,dsgw,302,[åå‰ã‚’変更ã—ã¦ã„ã¾ã™ã€‚]
-ja,dsgw,303,[リストã«åå‰ãŒã‚ã‚Šã¾ã›ã‚“。]
-ja,dsgw,304,[リスト㫠<B>1</B> ã¤ã®åå‰ãŒã‚ã‚Šã¾ã™ã€‚]
-ja,dsgw,305,[リスト㫠<B>%s</B>個ã®åå‰ãŒã‚ã‚Šã¾ã™ã€‚]
-ja,dsgw,306,[リスト\\nã‹ã‚‰\\n削除ã—ã¾ã™ã‹ï¼Ÿ åå‰]
-ja,dsgw,307,[変更を破棄ã—ã¾ã™ã‹ï¼Ÿ]
-ja,dsgw,308,[width=300,height=130,resizable]
-ja,dsgw,309,[変更をä¿å­˜ã›ãšã«ç¶šè¡Œã—ã¾ã™ã‹ï¼Ÿ<br>ä¿å­˜ã•ã‚Œã¦ã„ãªã„変更ã¯å¤±ã‚ã‚Œã¾ã™ã€‚]
-ja,dsgw,310,[width=400,height=150,resizable]
-ja,dsgw,311,[警告]
-ja,dsgw,312,[確èª]
-ja,dsgw,313,[èªè¨¼ã«å¤±æ•—ã—ã¾ã—ãŸã€‚\n]
-ja,dsgw,314,[èªè¨¼ã«æˆåŠŸã—ã¾ã—ãŸã€‚]
-ja,dsgw,315,[ディレクトリ㫠<B>%s</B> ã¨ã—ã¦èªè¨¼ã•ã‚Œã¦ã„ã¾ã™ã€‚]
-ja,dsgw,316,[ã‚ãªãŸã®èªè¨¼è³‡æ ¼è¨¼æ˜Žæ›¸ã¯ %d 分ã§å¤±åŠ¹ã—ã¾ã™ã€‚\n]
-ja,dsgw,317,[èªè¨¼ã®å¤±åŠ¹å¾Œã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«å†åº¦èªè¨¼ã‚’å—ã‘ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚\n]
-ja,dsgw,318,[<P>ã“ã®ã‚¨ãƒ³ãƒˆãƒªã®ãƒ‘スワード㯠<B>%s</B> ã§å¤±åŠ¹ã—ã¾ã™ã€‚\n]
-ja,dsgw,319,[èªè¨¼ã«å¤±æ•—ã—ãŸç†ç”±]
-ja,dsgw,320,[ディレクトリã«å­˜åœ¨ã—ãªã„エントリã®èªè¨¼ã‚’å—ã‘よã†ã¨ã—ãŸãŸã‚ã€èªè¨¼ã«å¤±æ•—ã—ã¾ã—ãŸã€‚\nèªè¨¼ãŒå—ã‘られるã®ã¯ã€æ—¢å­˜ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª エントリã ã‘ã§ã™ã€‚\n]
-ja,dsgw,321,[パスワードãŒè¨­å®šã•ã‚Œã¦ã„ãªã„エントリã®èªè¨¼ã‚’å—ã‘よã†ã¨ã—ãŸãŸã‚ã€èªè¨¼ã«å¤±æ•—ã—ã¾ã—ãŸã€‚\nèªè¨¼ãŒå—ã‘られるã®ã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªç®¡ç†è€…ã«ã‚ˆã£ã¦ãƒ‘スワードãŒè¨­å®šã•ã‚Œã¦ã„るエントリã ã‘ã§ã™ã€‚\n]
-ja,dsgw,322,[入力ã—ãŸãƒ‘スワードãŒæ­£ã—ããªã„ãŸã‚ã€èªè¨¼ã«å¤±æ•—ã—ã¾ã—ãŸã€‚\n[ã‚‚ã†ä¸€åº¦]をクリックã—ã¦å†åº¦ãƒ‘スワードを入力ã—ã¦ãã ã•ã„。\nエントリã®ãƒ‘スワードを忘れãŸå ´åˆã¯ã€Directory Administratorã«é€£çµ¡ã—ã€ãƒ‘スワードをå†è¨­å®šã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚\n]
-ja,dsgw,323,[予期ã—ãªã„エラー: %s ãŒç™ºç”Ÿã—ãŸãŸã‚ã€èªè¨¼ã«å¤±æ•—ã—ã¾ã—ãŸã€‚\n]
-ja,dsgw,324,[å†å…¥åŠ›]
-ja,dsgw,325,[続行ã™ã‚‹ã«ã¯ã€ä¸Šè¨˜ã®ãƒªã‚¹ãƒˆã‹ã‚‰ã‚¿ã‚¹ã‚¯ã‚’é¸æŠžã—ã¦ãã ã•ã„。\n]
-ja,dsgw,326,[パスワード修正]
-ja,dsgw,327,[<H3>%s ã®ãŸã‚ã«ãƒ‘スワード失効</H3>\n]
-ja,dsgw,328,[ディレクトリ サーãƒã®ãƒ‘スワードãŒå¤±åŠ¹ã—ã¾ã—ãŸã€‚]
-ja,dsgw,329,[ ã™ãã«ãƒ‘スワードを変更ã—ã¦ãã ã•ã„。\n]
-ja,dsgw,330,[パスワードãŒå…¥åŠ›ã•ã‚Œã¦ã„ã¾ã›ã‚“。èªè¨¼ã‚’å—ã‘ã‚‹ã¨ãã¯å¿…ãšãƒ‘スワードを入力ã—ã€ã‚µãƒ¼ãƒã§æœ¬äººã§ã‚ã‚‹ã“ã¨ã‚’ç…§åˆã§ãるよã†ã«ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚]
-ja,dsgw,331,[サーãƒã¯èªè¨¼è³‡æ ¼è¨¼æ˜Žæ›¸ã‚’生æˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚èªè¨¼ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’é–‹ãã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚]
-ja,dsgw,332,[サーãƒã¯èªè¨¼è³‡æ ¼è¨¼æ˜Žæ›¸ã‚’生æˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚データをèªè¨¼ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«è¿½åŠ ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚]
-ja,dsgw,333,[次ã¸]
-ja,dsgw,334,[ウィンドウを閉ã˜ã‚‹]
-ja,dsgw,335,[æˆåŠŸ]
-ja,dsgw,336,[èªè¨¼è³‡æ ¼è¨¼æ˜Žæ›¸ãŒç„¡åŠ¹ã«ãªã‚Šã¾ã—ãŸã€‚ç¾åœ¨Directoryã«èªè¨¼ã•ã‚Œã¦ã„ã¾ã›ã‚“。\n]
-ja,dsgw,337,[å‰ã¸]
-ja,dsgw,338,[æˆåŠŸ]
-ja,dsgw,339,[オペレーション エラー]
-ja,dsgw,340,[プロトコル エラー]
-ja,dsgw,341,[警告: タイムアウトã—ã¾ã—ãŸã€‚一致ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªã®ã†ã¡ã€è¡¨ç¤ºã•ã‚Œã¦ã„ãªã„ã‚‚ã®ã‚‚ã‚ã‚Šã¾ã™ã€‚]
-ja,dsgw,342,[警告: サイズã®ä¸Šé™ã‚’超ãˆã¾ã—ãŸã€‚一致ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªã®ã†ã¡ã€è¡¨ç¤ºã•ã‚Œã¦ã„ãªã„ã‚‚ã®ã‚‚ã‚ã‚Šã¾ã™ã€‚]
-ja,dsgw,343,[false を比較]
-ja,dsgw,344,[true を比較]
-ja,dsgw,345,[厳密ãªèªè¨¼ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“。]
-ja,dsgw,346,[厳密ãªèªè¨¼ãŒå¿…è¦ã§ã™ã€‚]
-ja,dsgw,347,[警告: 一部ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª サーãƒã«æŽ¥ç¶šã§ãã¾ã›ã‚“ã§ã—ãŸã€‚一致ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªã®ã†ã¡ã€è¡¨ç¤ºã•ã‚Œã¦ã„ãªã„ã‚‚ã®ã‚‚ã‚ã‚Šã¾ã™ã€‚]
-ja,dsgw,348,[レフェラルをå—ä¿¡ã—ã¾ã—ãŸã€‚]
-ja,dsgw,349,[管ç†ã®ç¯„囲を超ãˆã¦ã„ã¾ã™ã€‚]
-ja,dsgw,350,[é‡å¤§ãªæ‹¡å¼µãŒåˆ©ç”¨ã§ãã¾ã›ã‚“。]
-ja,dsgw,351,[機密性ãŒå¿…è¦ã§ã™ã€‚]
-ja,dsgw,352,[SASL ãƒã‚¤ãƒ³ãƒ‰ä¸­ã§ã™ã€‚]
-ja,dsgw,353,[ãã®ã‚ˆã†ãªå±žæ€§ã¯ã‚ã‚Šã¾ã›ã‚“。]
-ja,dsgw,354,[属性ã®ç¨®é¡žãŒå®šç¾©ã•ã‚Œã¦ã„ã¾ã›ã‚“。]
-ja,dsgw,355,[マッãƒãƒ³ã‚°ãŒä¸é©åˆ‡ã§ã™ã€‚]
-ja,dsgw,356,[制約é•åã§ã™ã€‚]
-ja,dsgw,357,[タイプã¾ãŸã¯å€¤ãŒå­˜åœ¨ã—ã¾ã™ã€‚]
-ja,dsgw,358,[構文ã«èª¤ã‚ŠãŒã‚ã‚Šã¾ã™ã€‚]
-ja,dsgw,359,[ãã®ã‚ˆã†ãªã‚ªãƒ–ジェクトã¯ã‚ã‚Šã¾ã›ã‚“。]
-ja,dsgw,360,[エイリアスã«å•é¡ŒãŒã‚ã‚Šã¾ã™ã€‚]
-ja,dsgw,361,[DN ã®æ§‹æ–‡ã«èª¤ã‚ŠãŒã‚ã‚Šã¾ã™ã€‚]
-ja,dsgw,362,[オブジェクトã¯è‘‰ã§ã™ã€‚]
-ja,dsgw,363,[エイリアス デリファレンスã«å•é¡ŒãŒã‚ã‚Šã¾ã™ã€‚]
-ja,dsgw,364,[èªè¨¼ãŒä¸é©å½“ã§ã™ã€‚]
-ja,dsgw,365,[証明書ãŒç„¡åŠ¹ã§ã™ã€‚]
-ja,dsgw,366,[アクセスãŒä¸é©åˆ‡ã§ã™ã€‚]
-ja,dsgw,367,[DSA ãŒãƒ“ジー状態ã§ã™ã€‚]
-ja,dsgw,368,[DSA ãŒåˆ©ç”¨ã§ãã¾ã›ã‚“。]
-ja,dsgw,369,[DSA ãŒå®Ÿè¡Œã•ã‚Œã¾ã›ã‚“。]
-ja,dsgw,370,[ループãŒæ¤œå‡ºã•ã‚Œã¾ã—ãŸã€‚]
-ja,dsgw,371,[åå‰ä»˜ã‘é•å]
-ja,dsgw,372,[オブジェクト クラスé•å]
-ja,dsgw,373,[葉ノード以外ã§æ“作を行ã†ã“ã¨ã¯ã§ãã¾ã›ã‚“。]
-ja,dsgw,374,[RDN ã§æ“作を行ã†ã“ã¨ã¯ã§ãã¾ã›ã‚“。]
-ja,dsgw,375,[æ—¢ã«å­˜åœ¨ã—ã¦ã„ã¾ã™ã€‚]
-ja,dsgw,376,[オブジェクト クラスを変更ã§ãã¾ã›ã‚“。]
-ja,dsgw,377,[çµæžœãŒå¤§ãã™ãŽã¾ã™ã€‚]
-ja,dsgw,378,[複数ã®ã‚µãƒ¼ãƒã«å½±éŸ¿ã—ã¾ã™ã€‚]
-ja,dsgw,379,[原因ä¸æ˜Žã®ã‚¨ãƒ©ãƒ¼]
-ja,dsgw,380,[LDAP サーãƒã«æŽ¥ç¶šã§ãã¾ã›ã‚“。]
-ja,dsgw,381,[ローカル エラー]
-ja,dsgw,382,[エンコード エラー]
-ja,dsgw,383,[デコード エラー]
-ja,dsgw,384,[タイムアウト]
-ja,dsgw,385,[èªè¨¼æ–¹æ³•ãŒä¸æ˜Žã§ã™ã€‚]
-ja,dsgw,386,[検索フィルタãŒä¸æ­£ã§ã™ã€‚]
-ja,dsgw,387,[ユーザãŒæ“作をキャンセルã—ã¾ã—ãŸã€‚]
-ja,dsgw,388,[LDAP ルーãƒãƒ³ã«å¯¾ã™ã‚‹ãƒ‘ラメータãŒä¸æ­£ã§ã™ã€‚]
-ja,dsgw,389,[メモリä¸è¶³ã§ã™ã€‚]
-ja,dsgw,390,[LDAP サーãƒã«æŽ¥ç¶šã§ãã¾ã›ã‚“。]
-ja,dsgw,391,[ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã® LDAP プロトコルã§ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“。]
-ja,dsgw,392,[è¦æ±‚ã•ã‚ŒãŸ LDAP コントロールãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。]
-ja,dsgw,393,[çµæžœãŒè¿”ã•ã‚Œã¾ã›ã‚“。]
-ja,dsgw,394,[ã•ã‚‰ã«çµæžœãŒè¿”ã•ã‚Œã¾ã™ã€‚]
-ja,dsgw,395,[クライアントãŒãƒ«ãƒ¼ãƒ—を検出ã—ã¾ã—ãŸã€‚]
-ja,dsgw,396,[レフェラル ホップ リミットを超éŽã—ã¾ã—ãŸã€‚]
-ja,frame,-1,[$DBT: frame in DB file v1 $]
-ja,frame,1,[<TITLE>¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£</TITLE><H1>¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£</H1> ¥ê¥¯¥¨¥¹¥È¤µ¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ò¸«¤Ä¤±¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£¥ê¥ó¥¯¤¬ÀÚ¤ì¤Æ¤¤¤ë¡¢¥ê¥¯¥¨¥¹¥È¤¬ÉÔÀµ³Î¡¢¥¢¥¯¥»¥¹¸¢¤¬Í¿¤¨¤é¤ì¤Æ¤¤¤Ê¤¤Åù¤Î²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£ ]
-ja,frame,2,[<A HREF="%s">»²¾È¤·¤Æ¤¤¤ë¥Ú¡¼¥¸</A>¤Î¾ðÊó¤ò¥µ¥¤¥È´ÉÍý¼Ô¤ËÃΤ餻¤Æ¤¯¤À¤µ¤¤¡£]
-ja,frame,3,[¤¢¤Ê¤¿¤Î¥Ö¥é¥¦¥¶¤¬Á÷¤Ã¤¿¥ê¥¯¥¨¥¹¥È¤ò¥×¥í¥¯¥· ¥µ¡¼¥Ð¤¬Íý²ò¤Ç¤­¤Þ¤»¤ó¡£]
-ja,frame,4,[ŬÀÚ¤Êǧ¾Ú¤Ï¥×¥í¥¯¥·¤¬´ÉÍý¤Î¤¿¤á¤ËɬÍפǤ¹¡£\n¤¢¤Ê¤¿¤Î¥Ö¥é¥¦¥¶¤Îǧ¾Ú¤Ï¼ºÇÔ¤·¤Þ¤·¤¿¡£]
-ja,frame,5,[¥æ¡¼¥¶Ì¾¤Îǧ¾Ú¤Ë¤Ï¥×¥í¥¯¥·¤òÍøÍѤ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£\n¤¢¤Ê¤¿¤Î¥Ö¥é¥¦¥¶¤Ï¥×¥í¥¯¥·¤Ë¤è¤ëǧ¾Ú¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£]
-ja,frame,6,[¥ê¥¯¥¨¥¹¥È¤µ¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ¹¤ë¥¢¥¯¥»¥¹¤Ï\n¥×¥í¥¯¥·¤ÎÀßÄê¾åµö¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£]
-ja,frame,7,[¥×¥í¥¯¥·¤Ï¤¢¤Ê¤¿¤Î¥ê¥¯¥¨¥¹¥È¤ò¼Â¹Ô¤¹¤ëºÝ¤Ë¥¨¥é¡¼¤òȯÀ¸¤·¤Þ¤·¤¿¡£\nÀßÄ꤬¸í¤Ã¤Æ¤¤¤ë²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£\n¥×¥í¥¯¥· ¥¨¥é¡¼ ¥í¥°¤Î¥á¥Ã¥»¡¼¥¸¤ò»²¾È¤¹¤ë¤è¤¦´ÉÍý¼Ô¤Ë°ÍÍꤷ¤Æ¤¯¤À¤µ¤¤¡£]
-ja,frame,8,[¥ê¥¯¥¨¥¹¥È¤µ¤ì¤¿ÆâÍÆ¤Ï¥×¥í¥¯¥·¤Ë¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£]
-ja,frame,9,[¥×¥í¥¯¥·¾å¤Ç¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£]
-ja,frame,10,[¤¢¤Ê¤¿¤Î¥Ö¥é¥¦¥¶¤¬Á÷¿®¤·¤¿¥ê¥¯¥¨¥¹¥È¤Ï¡¢¥µ¡¼¥Ð¤ËÍý²ò¤¹¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¤¤â¤Î¤Ç¤¹¡£]
-ja,frame,11,[ŬÀÚ¤Êǧ¾Ú¤Ï¤³¤Î¥¨¥ê¥¢¤Î´ÉÍý¤Î¤¿¤á¤ËɬÍפǤ¹¡£\n¤¢¤Ê¤¿¤Î¥Ö¥é¥¦¥¶¤Îǧ¾Ú¤Ï¼ºÇÔ¤·¤Þ¤·¤¿¡£]
-ja,frame,12,[¤¢¤Ê¤¿¤Î¥¯¥é¥¤¥¢¥ó¥È¤Ï¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ¹¤ë¥¢¥¯¥»¥¹¤òµö²Ä¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£]
-ja,frame,13,[¤³¤Î¥µ¡¼¥Ð¤Ï¥ê¥¯¥¨¥¹¥È¤Î½èÍýÃæ¤Ë¥¨¥é¡¼¤ËÁø¶ø¤·¤Þ¤·¤¿¡£¸í¤Ã¤¿ÀßÄ꤬¤Ê¤µ¤ì¤Æ¤¤¤ë²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£¥µ¡¼¥Ð¤Î¥¨¥é¡¼ ¥í¥°¤ò»²¾È¤¹¤ë¤è¤¦´ÉÍý¼Ô¤ËÏ¢Íí¤·¤Æ¤¯¤À¤µ¤¤¡£]
-ja,frame,14,[¥ê¥¯¥¨¥¹¥È¤µ¤ì¤¿ÆâÍƤϥµ¡¼¥Ð¤Ë¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó]
-ja,frame,15,[¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£]
-ja,frame,16,[¤¢¤Ê¤¿¤Î¥Ö¥é¥¦¥¶¤¬¥µ¡¼¥Ð¤ËÁ÷¤Ã¤¿¥ê¥¯¥¨¥¹¥È¤Ï¥µ¡¼¥Ð¤¬Íý²ò¤Ç¤­¤Ê¤¤¥ê¥¯¥¨¥¹¥È¤Ç¤¹¡£]
-ja,frame,17,[<HTML><HEAD><TITLE>%s</TITLE></HEAD><BODY><H1>%s</H1>\n¤³¤Î¥É¥­¥å¥á¥ó¥È¤Ï¿·¤·¤¤¾ì½ê¤Ë°ÜÆ°¤·¤Þ¤·¤¿¡£ <a href="%s"></a>. ¥É¥­¥å¥á¥ó¥È¤È¥Û¥Ã¥È¥ê¥¹¥È¤Î¹¹¿·¤ò¤·¤Æ¤¯¤À¤µ¤¤¡£</BODY></HTML>]
-ja,frame,18,[<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=euc-jp"><META HTTP-EQUIV="Content-Language" CONTENT="ja"><TITLE>%s</TITLE></HEAD>\n<BODY><H1>%s</H1>\n%s\n</BODY></HTML>]
-ja,frame,19,[process-uri-objects]
-ja,frame,20,[cannot find template %s]
-ja,frame,21,[process-uri-objects]
-ja,frame,22,[no partial path after object processing]
-ja,frame,23,[find-service]
-ja,frame,24,[invalid shexp %s]
-ja,frame,25,[find-service]
-ja,frame,26,[invalid shexp %s]
-ja,frame,27,[handle-processed]
-ja,frame,28,[no way to service request for %s]
-ja,frame,29,[finish-socks-request]
-ja,frame,30,[close failed (%s), csd=%d]
-ja,frame,31,[This beta software has expired.\n]
-ja,frame,32,[mr_accept(%d)]
-ja,frame,33,[Error issuing read on accept socket]
-ja,frame,34,[acb_accept_connection(%d)]
-ja,frame,35,[Error getting accept socket (%d)]
-ja,frame,36,[Error in accept! (%d, %s)]
-ja,frame,37,[Error creating new accept request]
-ja,frame,38,[accepted connection: %d (NSPR %d)]
-ja,frame,39,[Error creating new session structure]
-ja,frame,40,[accel_read_request()]
-ja,frame,41,[Error allocating request read buffer]
-ja,frame,42,[Error issuing async read request]
-ja,frame,43,[acb_read_request(%d, bytes %d)]
-ja,frame,44,[acb_read_req(1 session = %d)]
-ja,frame,45,[Error reading request (%d, %s)]
-ja,frame,46,[Client aborted connection]
-ja,frame,47,[Error reading request]
-ja,frame,48,[Error creating new request]
-ja,frame,49,[error occurred, closing %d, io was for %d]
-ja,frame,50,[accel_async_scan_headers()]
-ja,frame,51,[out of memory: accel_async_scan_headers]
-ja,frame,52,[out of memory: accel_async_scan_headers]
-ja,frame,53,[Error during async read (%d, %s)]
-ja,frame,54,[scan-headers reports: line too long]
-ja,frame,55,[scan-headers reports: too many headers]
-ja,frame,56,[Error reading headers]
-ja,frame,57,[scan-headers reports: header missing terminator (an empty line)]
-ja,frame,58,[scan-headers reports: header was empty]
-ja,frame,59,[̾Á°¤ËÃͤ¬¤¢¤ê¤Þ¤»¤ó¡§ "%s" ¹Ô]
-ja,frame,60,[accel_send_plain_file()]
-ja,frame,61,[accel_send_plain_file() - found request %d]
-ja,frame,62,[Parse headers lost the URI!]
-ja,frame,63,[accel_send_plain_file() - found uri %s]
-ja,frame,64,[accel_send_plain_file() - found in cache?]
-ja,frame,65,[malloc died!]
-ja,frame,66,[Error writing back file\n]
-ja,frame,67,[acb_send_plain_file(%d)]
-ja,frame,68,[Error writing in acb_send_plain_file (%d, %s)]
-ja,frame,69,[acb_close_connection(%d)]
-ja,frame,70,[Errored IO in acb_close_connection (%d, %s)]
-ja,frame,71,[Unable to close socket %d]
-ja,frame,72,[accel-cache-insert: Error allocating entry]
-ja,frame,73,[cache-init: server cache disabled]
-ja,frame,74,[accel_file_cache: Error initializing file cache]
-ja,frame,75,[accel_file_cache: Error creating cache]
-ja,frame,76,[accel_file_cache_init: CacheHashSize < %d, using %d]
-ja,frame,77,[accel_file_cache_init: CacheHashSize > %d, using %d]
-ja,frame,78,[accel_file_cache_init: MaxNumberOfCachedFiles < %d, using %d]
-ja,frame,79,[accel_file_cache_init: MaxNumberOfCachedFiles > %d, using %d]
-ja,frame,80,[accel_file_cache_init: MaxNumberOfOpenCachedFiles < %d, using %d]
-ja,frame,81,[accel_file_cache_init: MaxNumberOfOpenCachedFiles > %d, using %d]
-ja,frame,82,[accel_file_cache: Error initializing file cache]
-ja,frame,83,[file-cache: enabled = %s ]
-ja,frame,84,[on]
-ja,frame,85,[off]
-ja,frame,86,[file-cache: MaxNumberOfCachedFiles %d (0x%x)]
-ja,frame,87,[file-cache: CacheHashSize %d (0x%x)]
-ja,frame,88,[file-cache: MaxNumberOfOpenCachedFiles %d (0x%x)]
-ja,frame,89,[accel-cache-insert: Error allocating entry]
-ja,frame,90,[file-cache-cleanup: munmap failed (%s)]
-ja,frame,91,[file-cache-cleanup: found mmapped file \non system without mmap]
-ja,frame,92,[file_cache_init: MaxTotalCachedFileSize < %d, using %d]
-ja,frame,93,[file_cache_init: MaxTotalCachedFileSize > %d, using %d]
-ja,frame,94,[file cache using mmap flags 0x%x]
-ja,frame,95,[file cache using mmap prots 0x%x]
-ja,frame,96,[file-cache-init: could not create lock]
-ja,frame,97,[file-cache: unable to create temporary directory %s.\n]
-ja,frame,98,[file-cache: unable to create temporary directory %s.\n]
-ja,frame,99,[file-cache: GetTempPath() Cannot find temp directory to store file!]
-ja,frame,100,[file-cache-init: set max cached file size to %d]
-ja,frame,101,[file-cache-init: could not create lock]
-ja,frame,102,[file_cache_destroy()]
-ja,frame,103,[file-cache: Unable to get temp file name. Error %s]
-ja,frame,104,[file-cache: Unable to get temp file name. Error %s]
-ja,frame,105,[file-cache-insert: Error allocating entry]
-ja,frame,106,[file-cache-create: Error opening file %s (%s)]
-ja,frame,107,[file-cache-create: Error stat()ing file %s (%s)]
-ja,frame,108,[file-cache-create: Error mmap()ing file %s (%s)]
-ja,frame,109,[file-cache-create: malloc failure]
-ja,frame,110,[file-cache-create: error case failed to munmap(%d, %d) (%s)]
-ja,frame,111,[file-cache-valid: cannot stat %s]
-ja,frame,112,[dir change: invalidating %s (%d)]
-ja,frame,113,[file-cache: asynchronous file change notification failed.]
-ja,frame,114,[dir change: offset %d, action %d, len %d, name %s]
-ja,frame,115,[unable to check async file status]
-ja,frame,116,[ReadDirectoryChangesW failure- unable to continue watching %s. Error is %s]
-ja,frame,117,[file-cache-add-watch failure- unable to open directory %s. Error %s]
-ja,frame,118,[ReadDirectoryChangesW failure- unable to start watching %s. Error %s]
-ja,frame,119,[func_exec]
-ja,frame,120,[no handler function given for directive]
-ja,frame,121,[func_exec]
-ja,frame,122,[cannot find function named %s]
-ja,frame,123,[handle-request]
-ja,frame,124,[method without URI]
-ja,frame,125,[http-parse-request]
-ja,frame,126,[while scanning HTTP headers, %s]
-ja,frame,127,[handle-request]
-ja,frame,128,[read from %s failed, error is %s]
-ja,frame,129,[handle-request]
-ja,frame,130,[request too long]
-ja,frame,131,[start-http-response]
-ja,frame,132,[write failed (%s)]
-ja,frame,133,[start-http-response]
-ja,frame,134,[write failed (%s)]
-ja,frame,135,[http-status]
-ja,frame,136,[%d is not a valid HTTP status code]
-ja,frame,137,[finish-request]
-ja,frame,138,[close failed (%s)]
-ja,frame,139,[Unable to close socket for writing]
-ja,frame,140,[os has %d objects]
-ja,frame,141,[obj %d has no hash table at %d]
-ja,frame,142,[obj %d has no param]
-ja,frame,143,[obj %d name %s value %s]
-ja,frame,144,[.....directives %d.......]
-ja,frame,145,[.....directive %d]
-ja,frame,146,[.......instance %d]
-ja,frame,147,[...........param name %s value %s]
-ja,frame,148,[ClearConfigurationParameters:RegCreateKey %s]
-ja,frame,149,[ClearConfigurationParameters:RegEnumKey %s failed]
-ja,frame,150,[obj.conf line %d: error in filter file "%s" at line %d: %s]
-ja,frame,151,[obj.conf line %d: error in filter file "%s" at line %d: %s]
-ja,frame,152,[Unable to allocate Subject property list.\n]
-ja,frame,153,[Unable to set session ptr in Subject property list - error=%d\n]
-ja,frame,154,[Unable to set request ptr in Subject property list - error=%d\n]
-ja,frame,155,[file-cache-valid: cannot stat %s]
-ja,frame,156,[file-cache-create: Error stat()ing file %s (%s)]
-ja,httpdaemon,-1,[$DBT: httpdaemon in DB file v1 $]
-ja,httpdaemon,1,[Error in ConvertThreadToFiber]
-ja,httpdaemon,2,[Error in ConvertThreadToFiber]
-ja,httpdaemon,3,[Error in md_start_system]
-ja,httpdaemon,4,[Error in CreateFiber - idlefiber]
-ja,httpdaemon,5,[Error in GetQueuedCompletionStatus]
-ja,httpdaemon,6,[Error creating completion port]
-ja,httpdaemon,7,[Could not SetHandleNonInheritable (%s)]
-ja,httpdaemon,8,[Error accept/read new conn]
-ja,httpdaemon,9,[Error in Respond()]
-ja,httpdaemon,10,[Error in RespondCompleted()]
-ja,httpdaemon,11,[daemon: unable to fork new process (%s)\n]
-ja,httpdaemon,12,[daemon: setsid failed (%s)\n]
-ja,httpdaemon,13,[daemon: can't log pid to %s (%s)\n]
-ja,httpdaemon,14,[warning: could not set group id to %d (%s)\n]
-ja,httpdaemon,15,[warning: could not set user id to %d (%s)\n]
-ja,httpdaemon,16,[warning: daemon is running as super-user\n]
-ja,httpdaemon,17,[could not determine current user name\n]
-ja,httpdaemon,18,[error: chroot to %s failed (%s)\n]
-ja,httpdaemon,19,[WARNING! netscape executable and library have different versions.\n]
-ja,httpdaemon,20,[startup: listening to %s://%s, port %d as %s\n]
-ja,httpdaemon,21,[startup: listening to %s://%s, port %d as %s\n]
-ja,httpdaemon,22,[seminit failed (%s)\n]
-ja,httpdaemon,23,[Using single threaded accepts.]
-ja,httpdaemon,24,[Using multi threaded accepts.]
-ja,httpdaemon,25,[Using partial single threaded accepts.]
-ja,httpdaemon,26,[This machine has %d processors.]
-ja,httpdaemon,27,[Error calling thr_seconcurrency(%d)- (%s)]
-ja,httpdaemon,28,[Set conncurrency to %d.]
-ja,httpdaemon,29,[can't fork new process (%s)]
-ja,httpdaemon,30,[This beta software has expired.\n]
-ja,httpdaemon,31,[can't create IPC pipe (%s)]
-ja,httpdaemon,32,[write to wakeup pipe failed (%s)]
-ja,httpdaemon,33,[select thread miss]
-ja,httpdaemon,34,[startup failure: could not bind to port %d (%s)\n]
-ja,httpdaemon,35,[startup failure: could not bind to port %d, IP address %s (%s)\n]
-ja,libaccess,-1,[$DBT: libaccess in DB file v1 $]
-ja,libaccess,1,[basic-ncsa]
-ja,libaccess,2,[cannot open database %s]
-ja,libaccess,3,[basic-ncsa]
-ja,libaccess,4,[user %s password did not match database %s]
-ja,libaccess,5,[basic-ncsa]
-ja,libaccess,6,[cannot open connection to LDAP server on %s:%d]
-ja,libaccess,7,[basic-ncsa]
-ja,libaccess,8,[user %s password did not match LDAP on %s:%d]
-ja,libaccess,9,[acl-state]
-ja,libaccess,10,[missing realm]
-ja,libaccess,11,[Unable to allocate ACL List Hash\n]
-ja,libaccess,12,[ACLEvalBuildContext unable to PERM_MALLOC cache structure\n]
-ja,libaccess,13,[ACLEvalBuildContext unable to create hash table\n]
-ja,libaccess,14,[ACLEvalBuildContext unable to allocate ACE Entry\n]
-ja,libaccess,15,[ACLEvalBuildContext unable to allocate ACE entry\n]
-ja,libaccess,16,[ACLEvalBuildContext unable to allocate Boundary Entry\n]
-ja,libaccess,17,[ACLEvalBuildContext failed.\n]
-ja,libaccess,18,[ACL_EvalTestRights: an interim, absolute non-allow value was encountered. right=%s, value=%d\n]
-ja,libaccess,19,[LASDnsBuild unable to allocate hash table header\n]
-ja,libaccess,20,[LASDnsBuild unable to add key %s\n]
-ja,libaccess,21,[LASDnsBuild unable to add key %s\n]
-ja,libaccess,22,[LASDnsBuild unable to add key %s\n]
-ja,libaccess,23,[LASDnsBuild unable to add key %s\n]
-ja,libaccess,24,[LASDnsBuild unable to add key %s\n]
-ja,libaccess,25,[LAS DNS build received request for attribute %s\n]
-ja,libaccess,26,[LASDnsEval - illegal comparator %s\n]
-ja,libaccess,27,[LASDnsEval unable to allocate Context struct\n\n]
-ja,libaccess,28,[LASDnsEval unable to get session address %d\n]
-ja,libaccess,29,[LASDnsEval unable to get DNS - error=%s\n]
-ja,libaccess,30,[LAS Group Eval received request for attribute %s\n]
-ja,libaccess,31,[LASGroupEval - illegal comparator %s\n]
-ja,libaccess,32,[LASGroupEval - ran out of memory\n]
-ja,libaccess,33,[LASGroupEval unable to get session address %d\n]
-ja,libaccess,34,[LASGroupEval unable to get session address %d\n]
-ja,libaccess,35,[LASGroupEval - couldn't locate getter for auth-user\n]
-ja,libaccess,36,[LASGroupEval - Attribute getter for auth-user failed\n]
-ja,libaccess,37,[LASGroupEval - Attribute getter didn't set auth-user\n]
-ja,libaccess,38,[Check group membership of user "%s" for group "%s"\n]
-ja,libaccess,39,[LDAPU_SUCCESS for group "%s"\n]
-ja,libaccess,40,[LDAPU_FAILED for group "%s"\n]
-ja,libaccess,41,[LAS_EVAL_FALSE\n]
-ja,libaccess,42,[LAS_EVAL_TRUE\n]
-ja,libaccess,43,[LASIpTreeAlloc - no memory\n]
-ja,libaccess,44,[IP LAS unable to allocate tree node\n]
-ja,libaccess,45,[IP LAS unable to allocate tree node\n]
-ja,libaccess,46,[LAS IP build received request for attribute %s\n]
-ja,libaccess,47,[LASIpEval - illegal comparator %s\n]
-ja,libaccess,48,[LASIpEval unable to get session address - error=%s\n]
-ja,libaccess,49,[LASIpEval unable to allocate Context struct\n\n]
-ja,libaccess,50,[LASIpEval - reach 32 bits without conclusion value=%s]
-ja,libaccess,51,[LAS Program Eval received request for attribute %s\n]
-ja,libaccess,52,[LASProgramEval - illegal comparator %s\n]
-ja,libaccess,53,[LASProgram unable to get session address %d\n]
-ja,libaccess,54,[bin]
-ja,libaccess,55,[LASProgramEval: request not of type admin or bin, passing.\n]
-ja,libaccess,56,[LASProgramEval: check if program %s matches pattern %s.\n]
-ja,libaccess,57,[LASProgramEval: Invalid wildcard expression %s.\n]
-ja,libaccess,58,[LAS_EVAL_FALSE\n]
-ja,libaccess,59,[LAS_EVAL_TRUE\n]
-ja,libaccess,60,[Unexpected attribute in dayOfWeek - %s\n]
-ja,libaccess,61,[Illegal comparator for dayOfWeek - %s\n]
-ja,libaccess,62,[Unexpected attribute in timeOfDay - %s\n]
-ja,libaccess,63,[LAS User Eval received request for attribute %s\n]
-ja,libaccess,64,[LASUserEval - illegal comparator %s\n]
-ja,libaccess,65,[LASUserEval - ran out of memory\n]
-ja,libaccess,66,[LASUserEval unable to get session address %d\n]
-ja,libaccess,67,[LASUserEval unable to get session address %d\n]
-ja,libaccess,68,[LASGroupEval - couldn't locate getter for auth-user\n]
-ja,libaccess,69,[LASGroupEval - Attribute getter for auth-user failed\n]
-ja,libaccess,70,[LASGroupEval - Attribute getter didn't set auth-user\n]
-ja,libaccess,71,[Check if uid == user (i.e. check "%s" == "%s)"\n]
-ja,libaccess,72,[SUCCESS for user "%s"\n]
-ja,libaccess,73,[FAILED for user "%s"\n]
-ja,libaccess,74,[LAS_EVAL_FALSE\n]
-ja,libaccess,75,[LAS_EVAL_TRUE\n]
-ja,libaccess,76,[]
-ja,libaccess,77,[LASProgram unable to get request address - error=%s]
-ja,libaccess,78,[LASProgram rejecting request for program %s from pattern %s]
-ja,libaccess,79,[ACL_CacheFlush: unable to parse file "%s"\n]
-ja,libaccess,80,[ACL_CacheFlush: unable to concatenate ACL list "%s"\n]
-ja,libaccess,81,[ACL_CacheFlush: unable to open and process the magnus file "%s"\n]
-ja,libaccess,82,[Illegal comparator for timeOfDay - %s\n]
-ja,libaccess,83,[ACL_EvalBuildContext unable to create hash table\n]
-ja,libaccess,84,[ACL_EvalBuildContext unable to PERM_CALLOC cache structure\n]
-ja,libaccess,85,[ACL_EvalBuildContext unable to allocate ACE entry\n]
-ja,libaccess,86,[ACL_EvalBuildContext unable to allocate auth pointer array\n]
-ja,libaccess,87,[ACL_EvalBuildContext unable to allocate auth plist\n]
-ja,libaccess,88,[ACL_EvalTestRights: an interim, absolute non-allow value was encountered. right=%s, value=%s\n]
-ja,libaccess,89,[ACL_INTEvalTestRights: call to ACL_EvalBuildContext returned failure status\n]
-ja,libaccess,90,[ACL_ModuleRegister: module name is missing\n]
-ja,libaccess,91,[ACL_ModuleRegister: call to module init function returned a failed status\n]
-ja,libaccess,92,[ACL_GetAttribute: couldn't determine method for %s\n]
-ja,libaccess,93,[ACL_GetAttribute: couldn't locate getter for %s]
-ja,libaccess,94,[ACL_GetAttribute: attr getter failed to get %s]
-ja,libaccess,95,[ACL_GetAttribute: attr getter failed to get %s]
-ja,libaccess,96,[ACL_GetAttribute: All attribute getters declined for attr %s]
-ja,libaccess,97,[ACL_DatabaseRegister: dbtype for database "%s" is not defined yet!]
-ja,libaccess,98,[ACL_DatabaseRegister: database name is missing]
-ja,libaccess,99,[Error reading the DB Map File: %s. Reason: %s]
-ja,libaccess,100,[URL is missing for database %s]
-ja,libaccess,101,[Invalid property value pair for database %s]
-ja,libaccess,102,["default" database must be an LDAP database]
-ja,libaccess,103,[Multiple "default" databases are being registered]
-ja,libaccess,104,["default" LDAP database must be registered]
-ja,libaccess,105,[LASGroupEval unable to get database name - error= %s]
-ja,libaccess,106,[received invalid program expression %s]
-ja,libaccess,107,[parse_ldap_url: database url is missing]
-ja,libaccess,108,[parse_ldap_url: database name is missing]
-ja,libaccess,109,[parse_ldap_url: error in parsing ldap url. Reason: %s]
-ja,libaccess,110,[ldap password check: unable to get database name - error=%s]
-ja,libaccess,111,[ldap password check: unable to get parsed database %s]
-ja,libaccess,112,[ldap password check: couldn't initialize connection to LDAP. Reason: %s]
-ja,libaccess,113,[ldap password check: LDAP error: "%s"]
-ja,libaccess,114,[get_user_ismember_ldap unable to get database name - error=%s]
-ja,libaccess,115,[get_user_ismember_ldap unable to get parsed database %s]
-ja,libaccess,116,[ldap password check: couldn't initialize connection to LDAP. Reason: %s]
-ja,libaccess,117,[get_user_ismember_ldap: group %s does not exist]
-ja,libaccess,118,[get_user_ismember_ldap: LDAP error: "%s"]
-ja,libaccess,119,[ACL_LDAPDatabaseHandle: %s is not a registered database]
-ja,libaccess,120,[ACL_LDAPDatabaseHandle: %s is not an LDAP database]
-ja,libaccess,121,[ACL_LDAPDatabaseHandle: out of memory]
-ja,libaccess,122,[ACL_LDAPDatabaseHandle: couldn't initialize connection to LDAP. Reason: %s]
-ja,libaccess,123,[ACL_LDAPDatabaseHandle: couldn't bind to LDAP server. Reason: %s]
-ja,libaccess,124,[insufficient dynamic memory]
-ja,libaccess,125,[error opening file, %s: %s]
-ja,libaccess,126,[duplicate definition of %s]
-ja,libaccess,127,[file %s, line %s: duplicate definition of %s]
-ja,libaccess,128,[file %s, line %s: syntax error]
-ja,libaccess,129,[file %s, line %s: %s is undefined]
-ja,libaccess,130,[in acl %s, %s %s is undefined]
-ja,libaccess,131,[database %s: error accessing %s]
-ja,libaccess,132,[%s]
-ja,libaccess,133,[file %s, line %s: invalid syntax]
-ja,libaccess,134,[file %s, line %s: syntax error at "%s"]
-ja,libaccess,135,[realm %s is not defined]
-ja,libaccess,136,[error code = %d]
-ja,libaccess,137,[internal ACL error]
-ja,libaccess,138,[invalid argument]
-ja,libaccess,139,[ACL_DatabaseRegister: dbtype for database "%s" is not defined yet!]
-ja,libaccess,140,[couldn't determine dbtype from: %s]
-ja,libaccess,141,[Failed to register database %s]
-ja,libaccess,142,[ACL call returned failed status]
-ja,libaccess,143,[file %s: ACL IO error - %s]
-ja,libaccess,144,[acl_user_exists: ¥á¥â¥êÉÔ­¤Ç¤¹]
-ja,libaccess,145,[acl_user_exists: ¥æ¡¼¥¶¤¬¤â¤¦Â¸ºß¤·¤Þ¤»¤ó]
-ja,libaccess,146,[acl_user_exists: plist ¥¨¥é¡¼]
-ja,libadmin,-1,[$DBT: libadmin in DB file v1 $]
-ja,libadmin,1,[ Help ]
-ja,libadmin,2,[ OK ]
-ja,libadmin,3,[ Reset ]
-ja,libadmin,4,[ Done ]
-ja,libadmin,5,[ Cancel ]
-ja,libir,-1,[$DBT: libadmin in DB file v1 $]
-ja,libir,1,[An I/O error occurred before all form data could be read.]
diff --git a/l10n/dirserv/ja/ns-slapd.txt.eucjp b/l10n/dirserv/ja/ns-slapd.txt.eucjp
deleted file mode 100644
index 50ae08ed..00000000
--- a/l10n/dirserv/ja/ns-slapd.txt.eucjp
+++ /dev/null
@@ -1,1022 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-/**************************************************************************/
-/* The copyright notice(s) in this Source Code does not indicate actual */
-/* or intended publication of this Source Code. */
-/**************************************************************************/
-
-/* This text file was generated by program dblink */
-
-$Revision: 1.4 $
-$Log: ns-slapd.txt.eucjp,v $
-Revision 1.4 2005/04/19 22:06:52 nkinder
-Fixed licensing typo
-
-Revision 1.3 2005/04/15 22:39:19 nkinder
-155068 - Added license to source files
-
-Revision 1.2 2005/02/28 23:37:40 nkinder
-149951 - Updated source code copyrights
-
-Revision 1.1.1.1 2005/01/21 00:40:48 cvsadm
-Moving NSCP Directory Server from DirectoryBranch to TRUNK, initial drop. (foxworth)
-
-Revision 1.1.4.3 2003/09/22 19:36:44 ulfw
-Update copyright years from 2001 to 2001-2003
-
-Revision 1.1.4.2 2001/11/03 01:08:09 richm
-XXX use new copyright XXX
-
-Revision 1.1.4.1 1998/10/10 02:14:13 ggood
-Copy from Directory40RtmBranchpoint to DirectoryBranch
-
-Revision 1.1.2.4.2.1.6.2 1998/04/04 23:17:00 mcs
-merge changes made on directory31_rtm_branch into server4_directory_branch
-
-Revision 1.1.2.4.2.5.2.2 1998/02/24 05:44:41 noriko
-Fixed backslashes
-
-Revision 1.1.2.4.2.5.2.1 1998/02/24 05:39:08 noriko
-Added new updates from the translators
-
-Revision 1.1.2.7 1998/02/12 01:55:50 scronin
-Based on en/ns-slapd.txt : 1.1.2.4
-Build by scronin on 2/8/1998 Solaris
-$EndLog$
-
-$StartStringData$
-
-ja,base,-1,[$DBT: base in DB file v1 $]
-ja,base,1,[¥Ï¥Ã¥·¥å ¥Æ¡¼¥Ö¥ë¤òºîÀ®¤¹¤ë¤¿¤á¤Î¥á¥â¥ê¤¬ÉÔ­¤·¤Æ¤¤¤Þ¤¹¡£]
-ja,base,2,[¥Ï¥Ã¥·¥å ¥Æ¡¼¥Ö¥ë¤òºîÀ®¤¹¤ë¤¿¤á¤Î¥á¥â¥ê¤¬ÉÔ­¤·¤Æ¤¤¤Þ¤¹]
-ja,base,3,[cache_destroy: ¥­¥ã¥Ã¥·¥å ¥Æ¡¼¥Ö¥ë¤¬ÉÔÀµ¤Ç¤¹¡£]
-ja,base,4,[¥Ï¥Ã¥·¥å ¥¨¥ó¥È¥ê¤ò³ä¤êÅö¤Æ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£]
-ja,base,5,[cache_insert: ¥­¥ã¥Ã¥·¥å ¥¨¥ó¥È¥ê¤òºîÀ®¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£]
-ja,base,6,[HTTP/1.0 200 OK\nContent-type: text/html\n\n]
-ja,base,7,[<H2>Netscape ¥­¥ã¥Ã¥·¥å ¥¹¥Æ¡¼¥¿¥¹ ¥ì¥Ý¡¼¥È</H2>\n]
-ja,base,8,[¥·¥¹¥Æ¥à¾å¤Ë¥­¥ã¥Ã¥·¥å¤¬Â¸ºß¤·¤Þ¤»¤ó¡£<P>]
-ja,base,9,[<H2>%s ¥­¥ã¥Ã¥·¥å</H2>\n]
-ja,base,10,[¥­¥ã¥Ã¥·¥å ¥Ò¥Ã¥È ¥ì¥·¥ª¡§ %d/%d (%f)</P>\n</P>\n]
-ja,base,11,[¥­¥ã¥Ã¥·¥å ¥µ¥¤¥º¡§ %d/%d</P>\n</P>\n]
-ja,base,12,[¥Ï¥Ã¥·¥å ¥Æ¡¼¥Ö¥ë ¥µ¥¤¥º¡§ %d</P>\n</P>\n]
-ja,base,13,[mru : %d</P>\nlru : %d</P>\n]
-ja,base,14,[<UL><TABLE BORDER=4> <TH>Bucket</TH> <TH>¥¢¥É¥ì¥¹</TH> <TH>¥­¡¼</TH> <TH>¥¢¥¯¥»¥¹²ó¿ô</TH> <TH>ºï½ü</TH> <TH>¼¡¤Ø</TH> <TH>LRU</TH> <TH>MRU</TH> <TH>¥Ç¡¼¥¿</TH>\n]
-ja,base,15,[munmap failed (%s)]
-ja,base,16,[munmap failed (%s)]
-ja,base,17,[close failed (%s)]
-ja,base,18,[daemon: unable to fork new process (%s)\n]
-ja,base,19,[daemon: setsid failed (%s)\n]
-ja,base,20,[daemon: can't log pid to %s (%s)\n]
-ja,base,21,[warning: could not set group id to %d (%s)\n]
-ja,base,22,[warning: could not set user id to %d (%s)\n]
-ja,base,23,[warning: daemon is running as super-user\n]
-ja,base,24,[could not determine current user name\n]
-ja,base,25,[error: chroot to %s failed (%s)\n]
-ja,base,27,[, address %s]
-ja,base,28,[warning: statistics disabled (%s)\n]
-ja,base,29,[security handshake timed out for pid %d]
-ja,base,30,[warning: statistics disabled (%s)\n]
-ja,base,31,[secure handshake failed (code %d)\n]
-ja,base,32,[accept failed (%s)]
-ja,base,33,[warning: statistics disabled (%s)\n]
-ja,base,34,[select thread miss]
-ja,base,35,[keepalive worker awoken with no work to do]
-ja,base,36,[could not create new thread: %d (%s)]
-ja,base,37,[wait for sema succeeded, but nothing to dequeue]
-ja,base,38,[queue-sema creation failure]
-ja,base,39,[error getting processor info for processor %d]
-ja,base,40,[Error binding to processor %d]
-ja,base,41,[bound process %d to processor %d]
-ja,base,42,[Netscape server is not explicitly binding to any processors.]
-ja,base,43,[cache monitor exited]
-ja,base,44,[cache batch update daemon exited]
-ja,base,45,[Using single threaded accepts.]
-ja,base,46,[Using multi threaded accepts.]
-ja,base,47,[Using partial single threaded accepts.]
-ja,base,48,[This machine has %d processors.]
-ja,base,49,[Error calling thr_seconcurrency(%d)- (%s)]
-ja,base,50,[Set conncurrency to %d.]
-ja,base,51,[WARNING! netscape executable and library have different versions.\n]
-ja,base,54,[seminit failed (%s)\n]
-ja,base,55,[This beta software has expired.\n]
-ja,base,56,[Cache monitor respawned]
-ja,base,57,[Cache batch update daemon respawned]
-ja,base,58,[can't find empty statistics slot]
-ja,base,59,[can't fork new process (%s)]
-ja,base,60,[assert failed! %s\n]
-ja,base,61,[mr_table_init()]
-ja,base,62,[malloc failed]
-ja,base,63,[malloc failed!]
-ja,base,64,[mr_add_io(%d, type %d, file %d)]
-ja,base,65,[mr_add_io - stage 1]
-ja,base,66,[mr_add_io - stage 2]
-ja,base,67,[mr_add_io found invalid IO type %d]
-ja,base,68,[mr_add_io - adding timeout]
-ja,base,69,[Out of memory!\n]
-ja,base,70,[done with mr_add_io]
-ja,base,71,[mr_del_io(%d, type %d, file %d)]
-ja,base,72,[mr_del_io found invalid IO type %d]
-ja,base,73,[mr_lookup_io(%d)]
-ja,base,74,[mr_async_io(%d, %d bytes, file %d)]
-ja,base,75,[malloc failure adding async IO]
-ja,base,76,[Error adding async io!]
-ja,base,77,[Cannot seek for read!]
-ja,base,78,[read failure! (%d, %s)]
-ja,base,79,[do_read read %d bytes for file %d]
-ja,base,80,[Cannot seek for write!]
-ja,base,81,[writev failure! (%d, %s)]
-ja,base,82,[write failure! (%d, %s)]
-ja,base,83,[do_write wrote %d bytes for file %d]
-ja,base,84,[do_timeout(mrp %d)]
-ja,base,85,[do_timeout: found IO (timer=%d, time=%d)]
-ja,base,86,[error deleting io]
-ja,base,87,[timeout callback failure for %d\n]
-ja,base,88,[mr_get_event(%d) - outstanding io %d]
-ja,base,89,[mr_get_event: Waiting for reads on FD:]
-ja,base,90,[mr_get_event: Waiting for writes on FD:]
-ja,base,91,[ %d]
-ja,base,92,[ %d]
-ja,base,93,[mr_get_event set no timeout]
-ja,base,94,[mr_get_event set timeout to: %d.%d sec]
-ja,base,95,[error in select (%d, %s)]
-ja,base,96,[mr_get_event() - select found %d]
-ja,base,97,[error looking up IO fd %d]
-ja,base,98,[read failed for fd %d]
-ja,base,99,[error deleting io]
-ja,base,100,[callback failure for %d\n]
-ja,base,101,[error looking up IO fd %d]
-ja,base,102,[writing: header len %d, writelen %d, total %d]
-ja,base,103,[write failed for fd %d]
-ja,base,104,[error deleting io]
-ja,base,105,[callback failure for %d\n]
-ja,base,106,[Error creating dns cache]
-ja,base,107,[dns_cache_init: hash_size <= 0, using %d]
-ja,base,108,[dns_cache_init: cache-size <= %d, using %d]
-ja,base,109,[dns_cache_init: cache-size is %d is too large, using %d.]
-ja,base,110,[dns_cache_init: expire_time <= 0, using %d]
-ja,base,111,[dns_cache_init: expire is %d is too large, using %d seconds.]
-ja,base,112,[Error creating dns cache]
-ja,base,113,[dns-cache-insert: Error allocating entry]
-ja,base,114,[dns-cache-insert: malloc failure]
-ja,base,115,[successful server startup]
-ja,base,116,[%s B%s]
-ja,base,117,[Netscape executable and shared library have different versions]
-ja,base,118,[ executable version is %s]
-ja,base,119,[ shared library version is %s]
-ja,base,120,[error reporting shutting down]
-ja,base,121,[warning]
-ja,base,122,[config]
-ja,base,123,[security]
-ja,base,124,[failure]
-ja,base,125,[catastrophe]
-ja,base,126,[info]
-ja,base,127,[verbose]
-ja,base,128,[event_handler:Failed to wait on events %s]
-ja,base,129,[could not wait on resume event event (%s)]
-ja,base,130,[dlopen of %s failed (%s)]
-ja,base,131,[dlopen of %s failed (%s)]
-ja,base,132,[The server is terminating due to an error. Check the event viewer for the error message. SERVER EXITING!]
-ja,base,133,[Terminating the server %s]
-ja,base,134,[kill_server:cannot open server event %s]
-ja,base,135,[kill_server:cannot set server event %s]
-ja,base,136,[error: could not get socket (%s)\n]
-ja,base,137,[error: could not set socket option (%s)\n]
-ja,base,138,[Terminating Service:error: could not bind to address %s port %d (%s)\n]
-ja,base,139,[Terminating Service:error: could not bind to port %d (%s)\n]
-ja,base,140,[SetHandleNonInheritable: could not duplicate socket (%s)]
-ja,base,141,[SetHandleNonInheritable: closing the original socket failed (%s)]
-ja,base,142,[Could not SetHandleInformation (%s)]
-ja,base,143,[Terminating Service:Failure: Could not open statistics file (%s)\n]
-ja,base,144,[Could not set Thread Local Storage Value for thread at slot %d]
-ja,base,145,[secure handshake failed (code %d)\n]
-ja,base,146,[accept failed %d (%s)]
-ja,base,147,[Failed to pulse Event %d %s]
-ja,base,148,[Failed to send MobGrowth Event to parent %s]
-ja,base,149,[Pulsing MobRespawn Event %d]
-ja,base,150,[respawn thread pool to %d (%d)]
-ja,base,151,[Could not open event to signal rotate application. Could not create the MoveLog event:%s]
-ja,base,152,[Failed to send MoveLog Event to rotate app %s]
-ja,base,153,[growing thread pool from %d to %d]
-ja,base,154,[Could not open the ServiceControlManager, Error %d]
-ja,base,155,[StartNetsiteService:Could not open the service %s: Error %d]
-ja,base,156,[StartNetsiteService:Could not start the service %s]
-ja,base,157,[Service Startup: Could not allocate security descriptor]
-ja,base,158,[Service Startup: Could not init security descriptor]
-ja,base,159,[Service Startup: Could not set the security Dacl]
-ja,base,160,[Terminating Service:WinSock init failed: %s]
-ja,base,161,[Httpd Server Startup failed: %s]
-ja,base,162,[can't find empty statistics slot]
-ja,base,163,[NT daemon: could not create new thread %d]
-ja,base,164,[Service Startup Failure. Terminating Service:Could not create event %d:%s]
-ja,base,165,[Service Startup Error. Could not create the MoveLog event:%s]
-ja,base,166,[Failed to wait on Event objects %s]
-ja,base,167,[Failed to wait on Event objects %s]
-ja,base,168,[pipebuf_buf2sd: pipebuf_grab IO_ERROR %d]
-ja,base,169,[pool-init: memory pools disabled]
-ja,base,170,[pool-init: free_size <= 0, using %d]
-ja,base,171,[pool-create-block: out of memory]
-ja,base,172,[pool-create: out of memory]
-ja,base,173,[pool-create: out of memory]
-ja,base,174,[pool-malloc: out of memory]
-ja,base,175,[FREE() used where PERM_FREE() should have been used- problem corrected and supressing further warnings.]
-ja,base,176,[regex error: %s (regex: '%s')]
-ja,base,177,[can't create IPC pipe (%s)]
-ja,base,178,[write to wakeup pipe failed (%s)]
-ja,base,179,[flushing %d connections; current %d; tot %d]
-ja,base,180,[accept failed (%s)]
-ja,base,181,[Error creating time cache]
-ja,base,182,[time-cache: cache disabled]
-ja,base,183,[time_cache_init: hash_size < %d, using default, %d]
-ja,base,184,[time_cache_init: hash_size > %d, using default, %d]
-ja,base,185,[time_cache_init: cache_size < %d, using default, %d]
-ja,base,186,[time_cache_init: cache_size > %d, using default, %d]
-ja,base,187,[Error allocating memory for time_cache]
-ja,base,188,[Error allocating memory for time_cache entry]
-ja,base,189,[Error allocating memory for time_cache entry]
-ja,base,190,[Error inserting new time_cache entry]
-ja,base,191,[Error allocating memory for time_cache]
-ja,base,192,[cs-terminate failure (%s)]
-ja,base,193,[cs-init failure (%s)]
-ja,base,194,[cs-wait failure (%s)]
-ja,base,195,[cs-post failure (%s)]
-ja,base,196,[Unable to create nonblocking socket (%s)]
-ja,base,197,[error: could not set keepalive (%s)\n]
-ja,base,198,[error: could not set recv timeout (%s)\n]
-ja,base,199,[error: could not set send timeout (%s)\n]
-ja,base,200,[Unable to create nonblocking socket (%s)]
-ja,base,201,[sem_grab failed (%s)]
-ja,base,202,[sem_release failed (%s)]
-ja,base,203,[sem_release failed (%s)]
-ja,base,204,[Could not remove temporary directory %s, Error %d]
-ja,base,205,[Could not remove temporary directory %s, Error %d]
-ja,dsgw,-1,[$DBT: dsgw in DB file v1 $]
-ja,dsgw,1,[Íý²ò¤Ç¤­¤Ê¤¤ HTTP ¥ê¥¯¥¨¥¹¥È¤Ç¤¹¡£]
-ja,dsgw,2,[ÉÔÀµ¤Ê¤Þ¤¿¤Ï¡¢´°Î»¤·¤Æ¤¤¤Ê¤¤ HTML ¥Õ¥©¡¼¥à ¥Ç¡¼¥¿¤Ç¤¹¡£]
-ja,dsgw,3,[¥á¥â¥êÉÔ­¤Ç¤¹¡£]
-ja,dsgw,4,[query/form ¤ÎÆþÎϤ¬¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£]
-ja,dsgw,5,[¥Õ¥¡¥¤¥ë¤Þ¤¿¤Ï¥Ñ¥¹¤Î»ØÄê¤ËÉÔÀµ¤Êʸ»ú¤¬»ÈÍѤµ¤ì¤Æ¤¤¤Þ¤¹¡£]
-ja,dsgw,6,[ÀßÄê¥Õ¥¡¥¤¥ë¤¬¸«¤Ä¤«¤é¤Ê¤¤¤«ÉÔÀµ¤Ç¤¹¡£]
-ja,dsgw,7,[LDAP ¤ò½é´ü²½¤Ç¤­¤Þ¤»¤ó¡£]
-ja,dsgw,8,[LDAP ¤È¤ÎÀܳ»þ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£]
-ja,dsgw,9,[¸¡º÷¤ÎÂоݤȤʤ륪¥Ö¥¸¥§¥¯¥È¤òǧ¼±¤Ç¤­¤Þ¤»¤ó¡£]
-ja,dsgw,10,[Íý²ò¤Ç¤­¤Ê¤¤Â°À­¥é¥Ù¥ë¤Ç¤¹¡£]
-ja,dsgw,11,[¥Þ¥Ã¥Á ¥×¥í¥ó¥×¥È¤òÍý²ò¤Ç¤­¤Þ¤»¤ó¡£]
-ja,dsgw,12,[¥ª¥Ö¥¸¥§¥¯¥È ¥¿¥¤¥×¤ËÂФ¹¤ë¸¡º÷¥Õ¥£¥ë¥¿¤¬¤¢¤ê¤Þ¤»¤ó¡£]
-ja,dsgw,13,[HTML ¥Æ¥ó¥×¥ì¡¼¥È ¥Õ¥¡¥¤¥ë¤ò³«¤¯¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£]
-ja,dsgw,14,[¸¡º÷¥â¡¼¥É¤òÍý²ò¤Ç¤­¤Þ¤»¤ó¡£ - "smart", "complex", "pattern", ¤Þ¤¿¤Ï "auth" ¤ò»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡£]
-ja,dsgw,15,[URL ¤ò»ØÄꤹ¤ë¾ðÊ󤬷çÍ¤Æ¤¤¤Þ¤¹¡£]
-ja,dsgw,16,[URL ¤Î»ØÄ꤬ÉÔÌÀ¤Ç¤¹¡£]
-ja,dsgw,17,[̤¾µÇ§¤Î URL ¤â¤·¤¯¤Ï̤ÃΤΥ¨¥é¡¼]
-ja,dsgw,18,[URL ¥Õ¥©¡¼¥Þ¥Ã¥È¤¬ÉÔÀµ¤Ç¤¹¡£]
-ja,dsgw,19,[ÆâÉô¥¨¥é¡¼]
-ja,dsgw,20,[¥Æ¥ó¥×¥ì¡¼¥È ¥¤¥ó¥Ç¥Ã¥¯¥¹ ¥Õ¥¡¥¤¥ë¤Î½ñ¤­¹þ¤ß¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£]
-ja,dsgw,21,[¥Æ¥ó¥×¥ì¡¼¥È ¥¤¥ó¥Ç¥Ã¥¯¥¹ ¥Õ¥¡¥¤¥ë¤ò³«¤¯¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿¡£]
-ja,dsgw,22,[Directory ¤òÆɤ߹þ¤à¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£]
-ja,dsgw,23,[LDAP SSL ¤Î½é´ü²½¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£ (¥»¥­¥å¥ê¥Æ¥£ ¥Ñ¥¹¤ò³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£)]
-ja,dsgw,24,[SSL¤Çºî¶È¤¹¤ë¤¿¤á¤Î¥æ¡¼¥¶¤È¥°¥ë¡¼¥× ¥Õ¥©¡¼¥à¤Î¾ì¹ç¡¢¥æ¡¼¥¶¤Þ¤¿¤Ï¥µ¡¼¥Ð´ÉÍý¼Ô¤¬¤³¤ÎAdministration Server¤Î SSL ¤òµ¯Æ°¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤ò¹Ô¤¦¤Î¤Ë[°Å¹æ²½]¤Î[¥ª¥ó/¥ª¥Õ]¥Ú¡¼¥¸¤ò»ÈÍѤǤ­¤Þ¤¹¡£]
-ja,dsgw,25,[¾ÚÌÀ½ñ¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ë¾ÚÌÀ½ñ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡£]
-ja,dsgw,26,[¥¨¥é¡¼¡§ ¾ÚÌÀ½ñ¥Ç¡¼¥¿¥Ù¡¼¥¹¤«¤é¥Ç¡¼¥¿¤òÆÀ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿¡£]
-ja,dsgw,27,[¤¢¤Ê¤¿¤Î¾ÚÌÀ½ñ¤ÎÍ­¸ú´ü¸Â¤ÏÀÚ¤ì¤Æ¤¤¤Þ¤¹¡£]
-ja,dsgw,28,[̵ºî°Ù¤Îʸ»úÎó¤òºîÀ®¤Ç¤­¤Þ¤»¤ó]
-ja,dsgw,29,[¾ÚÌÀ½ñ¤ò¸¡º÷¤·¤Þ¤·¤¿¤¬¡¢¼±ÊÌ̾¤ò¸«¤Ä¤±¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿¡£]
-ja,dsgw,30,[¾ÚÌÀ½ñ¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò³«¤¯¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£]
-ja,dsgw,31,[¾ÚÌÀ½ñ¥Ç¡¼¥¿¥Ù¡¼¥¹¤ËÄɲäò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿¡£]
-ja,dsgw,32,[Directory Manager ¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£]
-ja,dsgw,33,[¸¡º÷ʸ»úÎó¤¬ÆþÎϤµ¤ì¤Æ¤¤¤Þ¤»¤ó¡£¤â¤¦°ìÅÙÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£]
-ja,dsgw,34,[ÀßÄê¥Õ¥¡¥¤¥ë¤Î£±¹ÔÃæ¤ËÀßÄê¹àÌܤ¬Â¿¤¹¤®¤Þ¤¹¡£]
-ja,dsgw,35,[¥¦¥¤¥ó¥É¥¦¥º ¥½¥±¥Ã¥È¤Î½é´ü²½¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£]
-ja,dsgw,36,[¾ÚÌÀ½ñ¤ò¥¢¥É¥ß¥Ë¥¹¥È¥ì¡¼¥·¥ç¥ó ¥µ¡¼¥Ð¤«¤éÆÀ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿¡£]
-ja,dsgw,37,[¼±Ê̤µ¤ì¤ë̾Á°¤¬ ldapdb:// ¤Ë¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£]
-ja,dsgw,38,[̤¾µÇ§¤Î URL ¤Þ¤¿¤Ï̤ÃΤΥ¨¥é¡¼]
-ja,dsgw,39,[URL ¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤ËÉÔÀµ¤¬¤¢¤ê¤Þ¤¹¡£]
-ja,dsgw,40,[¥í¡¼¥«¥ë LDAP ¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î½é´ü²½Ãæ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿]
-ja,dsgw,41,[Directory ¥µ¡¼¥Ó¥¹¤Î¥¿¥¤¥×¤¬ÉÔÌÀ¤Ç¤¹¡£ - "local" ¤Þ¤¿¤Ï "remote" ¤ò»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡£]
-ja,dsgw,42,[db ÀßÄê¥Õ¥¡¥¤¥ë¤ÎÆɤ߹þ¤ßÃæ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£]
-ja,dsgw,43,[NSHOME/userdb ¤Î¥Ñ¥¹¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó¡£]
-ja,dsgw,44,[Directory ¥µ¡¼¥Ó¥¹¤ÎÀßÄê¤ò¹¹¿·¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£]
-ja,dsgw,45,[¥¨¥ó¥È¥ê¤ò Directory ¤«¤éÆɤ߹þ¤à¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£]
-ja,dsgw,46,[LDAP ¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò¾Ãµî¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£]
-ja,dsgw,47,[¥¨¥ó¥È¥ê¤ÎÊѹ¹¤ª¤è¤ÓÄɲäò¹Ô¤¦¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£]
-ja,dsgw,48,[ÌäÂê]
-ja,dsgw,49,[¾ÚÌÀ½ñ¤ËÌäÂ꤬¤¢¤ê¤Þ¤¹¡£]
-ja,dsgw,50,[.\n<P>¼¡¤Ë°Ü¤ëÁ°¤ËºÆÅÙǧ¾Ú¤ò¼õ¤±¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£\n]
-ja,dsgw,51,[.\n<P>¼¡¤Ë°Ü¤ëÁ°¤ËºÆÅÙǧ¾Ú¤ò¼õ¤±¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£\n]
-ja,dsgw,52,[̤ÃΤΥ¨¥é¡¼]
-ja,dsgw,53,[Áàºî¤Ï´°Î»¤·¤Þ¤·¤¿¡£]
-ja,dsgw,54,[¥µ¡¼¥ÐÆâÉô¤Ç¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£\n ¥µ¡¼¥Ð´ÉÍý¼Ô¤Ë¸½ºß¤Î¾õÂÖ¤òÏ¢Íí¤·¤Æ¤¯¤À¤µ¤¤¡£]
-ja,dsgw,55,[¥µ¡¼¥Ð¤Ï¥²¡¼¥È¥¦¥¨¥¤¤«¤é¼õ¤±¼è¤Ã¤¿¥ê¥¯¥¨¥¹¥È¤òÍý²ò¤Ç¤­¤Þ¤»¤ó¡£]
-ja,dsgw,56,[¤¢¤Ê¤¿¤Î¥ê¥¯¥¨¥¹¥È¤Ï±þÅú¤¬¤Ê¤¤¤Þ¤Þ¥¿¥¤¥à¥¢¥¦¥È¤·¤Þ¤·¤¿¡£\n ºÆÅÙ¸¡º÷¤ò¹Ô¤¦ºÝ¤Ë¤Ï¡¢¸¡º÷¤Î·ë²Ì¤ò¤è¤¯¹Íθ¤·¡¢¸úΨ¤Î¤è¤¤ÊýË¡¤Ç¸¡º÷¤ò¤ª¤³¤Ê¤Ã¤Æ¤¯¤À¤µ¤¤¡£]
-ja,dsgw,57,[¤¢¤Ê¤¿¤Î¥ê¥¯¥¨¥¹¥È¤ÇÆÀ¤¿·ë²Ì¤¬Â礭¤¹¤®¤Þ¤¹¡£\n ºÆÅÙ¸¡º÷¤ò¹Ô¤¦ºÝ¤Ë¤Ï¡¢¸¡º÷¤Î·ë²Ì¤ò¤è¤¯¹Íθ¤·¡¢¸úΨ¤Î¤è¤¤ÊýË¡¤Ç¸¡º÷¤ò¤ª¤³¤Ê¤Ã¤Æ¤¯¤À¤µ¤¤¡£]
-ja,dsgw,58,[¥µ¡¼¥Ð¤¬Íý²ò¤Ç¤­¤Ê¤¤ÊýË¡¤ò»ÈÍѤ·¤Æ¡¢\n¥²¡¼¥È¥¦¥¨¥¤¤¬¥µ¡¼¥Ð¤Ëǧ¾Ú¤ò»î¤ß¤Þ¤·¤¿¡£]
-ja,dsgw,59,[¥²¡¼¥È¥¦¥¨¥¤¤ò·Ðͳ¤·¤¿Ç§¾Ú¤Ï¡¢¥µ¡¼¥Ð¤Ç¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£]
-ja,dsgw,60,[¥ê¥¯¥¨¥¹¥È¤ËɬÍפʾðÊ󤬷çÍ¤Æ¤¤¤Þ¤¹¡£ ¥ê¥¯¥¨¥¹¥È¤ò¥µ¡¼¥Ð¤¬ \n ¼õ¤±ÉÕ¤±¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£¤Û¤«¤Î¥µ¡¼¥Ð¤Ç¥ê¥¯¥¨¥¹¥È¤ò½èÍý¤¹¤ë¤³¤È¤¬¤Ç¤­¤ì¤Ð¡¢¥Ç¡¼¥¿¤Î¥Þ¥¹¥¿¥³¥Ô¡¼¤òÊÝ»ý¤¹¤ë¥µ¡¼¥Ð¤ò¤ê¤è¤¦¤·¤Æ¤¯¤À¤µ¤¤¡£]
-ja,dsgw,61,[¤¢¤Ê¤¿¤Î¥ê¥¯¥¨¥¹¥È¤Î¼Â¹Ô¤Ï´ÉÍý¤ÎÈϰϤòĶ¤¨¤Æ¤¤¤Þ¤¹¡£]
-ja,dsgw,62,[¥²¡¼¥È¥¦¥¨¥¤¤¬Í׵ᤷ¤¿½ÅÂç¤Ê³ÈÄ¥¤Ï¤³¤Î¥µ¡¼¥Ð¤ÇÍøÍѤ¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£]
-ja,dsgw,63,[¥¨¥ó¥È¥ê¤Ë¸ºß¤·¤Ê¤¤Â°À­¤¬Í×µá¤Ë¤è¤Ã¤Æ»²¾È¤µ¤ì¤¿¤¿¤á\n¡¢¥µ¡¼¥Ð¤Ï¤³¤ÎÍ×µá¤ò½èÍý¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿¡£]
-ja,dsgw,64,[Í׵᤬¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎÀ©Ìó¤Ë°ãÈ¿¤·¤Æ¤¤¤ë¤¿¤á¡¢\n¥µ¡¼¥Ð¤ÏÍ×µá¤ò´°Î»¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿¡£]
-ja,dsgw,65,[¥µ¡¼¥Ð¤ÏÆþÎϤµ¤ì¤¿ÃͤòÄɲäǤ­¤Þ¤»¤ó¤Ç¤·¤¿¡£\n ´û¤ËÆþÎϤ·¤¿Ãͤ¬¥¨¥ó¥È¥ê¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë¤³¤È¤â¹Í¤¨¤é¤ì¤Þ¤¹¡£]
-ja,dsgw,66,[¥µ¡¼¥Ð¤Ï¥¨¥ó¥È¥ê¤ò¸«¤Ä¤±¤é¤ì¤Þ¤»¤ó¤Ç¤·¤¿¡£\n ¿·¤·¤¤¥¨¥ó¥È¥ê¤òÄɲ乤ë¾ì¹ç¡¢Äɲ乤륨¥ó¥È¥ê¤Î¿Æ¤¬É¬¤ºÂ¸ºß¤¹¤ë¤³¤È¤ò³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£\n ¸¡º÷Ãæ¤Ë¤³¤Î¥¨¥é¡¼¤ò¼õ¿®¤·¤¿¤é¡¢¸¡º÷¤·¤Æ¤¤¤¿¥¨¥ó¥È¥ê¤¬Â¸ºß¤·¤Ê¤¤¤³¤È¤ò¼¨¤·¤Æ¤¤¤Þ¤¹¡£\nDirectory Manager ¤È¤·¤Æǧ¾Ú¤ò»î¤ß¤Æ¤¤¤ë¾ì¹ç¤Ë¤³¤Î¥¨¥é¡¼¤¬È¯À¸¤·¤¿¤é¡¢¥²¡¼¥È¥¦¥¨¥¤¤Î¹½À®¥Õ¥¡¥¤¥ë¤ò¥Á¥§¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£]
-ja,dsgw,67,[¼±Ê̤µ¤ì¤¿Ì¾Á°¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤¬ÉÔÀµ¤Ç¤¹¡£]
-ja,dsgw,68,[¤¢¤Ê¤¿¤¬»î¤ß¤¿¥¨¥ó¥È¥ê¤Ï¡¢¥Ñ¥¹¥ï¡¼¥É¤ò»ÈÍѤ·¤Æ¤¤¤Ê¤¤¤«¡¢¸í¤ê¤¬¤¢¤ê¤Þ¤¹¡£Directory Manager ¤Ç²Ã¤¨¤é¤ì¤¿¥¨¥ó¥È¥ê¤¬Å¬ÀڤʰÀ­¤Ç¤¢¤ë¤«³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£ ]
-ja,dsgw,69,[ÆþÎϤ·¤¿¥Ñ¥¹¥ï¡¼¥É(¤Þ¤¿¤Ï¤½¤Î¾¤Îǧ¾Ú»ñ³Ê¾ÚÌÀ½ñ)¤ÏÀµ¤·¤¯¤¢¤ê¤Þ¤»¤ó¡£]
-ja,dsgw,70,[Áàºî¤ò¼Â¹Ô¤¹¤ë¤¿¤á¤Î¸¢¸Â¤ò»ý¤Ã¤Æ¤¤¤Þ¤»¤ó¡£]
-ja,dsgw,71,[¥µ¡¼¥Ð¤¬º®¤ß¹ç¤Ã¤Æ¤¤¤Þ¤¹¡£¿ôʬ¸å¤ËºÆÅÙÀܳ¤ò¹Ô¤Ã¤Æ¤¯¤À¤µ¤¤¡£]
-ja,dsgw,72,[LDAP ¥µ¡¼¥Ð¤ËÀܳ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£]
-ja,dsgw,73,[¥µ¡¼¥Ð¤Ï¤¢¤Ê¤¿¤Î¥ê¥¯¥¨¥¹¥È¤ò½èÍý¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£\n ¥µ¡¼¥Ð¤ËÂ礭¤ÊÉé²Ù¤¬¤«¤«¤Ã¤Æ¤¤¤ë¤«¡¢¥µ¡¼¥Ð¤¬¤¢¤Ê¤¿¤Î¥ê¥¯¥¨¥¹¥È¤ò \n ½èÍý¤¹¤ë¤è¤¦¤ËÀßÄꤵ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤¬¹Í¤¨¤é¤ì¤Þ¤¹¡£]
-ja,dsgw,74,[Directory ¥µ¡¼¥Ð¤Ï¤¢¤Ê¤¿¤Î¥ê¥¯¥¨¥¹¥È¤ò½èÍý¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£\n ¥ê¥¯¥¨¥¹¥È¤ÎÆâÍƤ¬Àµ¤·¤¯¤Ê¤¤¤«¡¢¥µ¡¼¥Ð¤¬¹¹¿·½èÍý¤ò¹Ô¤Ã¤Æ¤¤¤ë \n ºÇÃæ¤Ç¤¢¤ë²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£]
-ja,dsgw,75,[Directory ¥µ¡¼¥Ð¤Ï»ØÄꤷ¤¿¥¨¥ó¥È¥ê¤Ë»Ò¤¬¤¤¤ë¾ì¹ç¡¢\n ¥¨¥ó¥È¥ê¤Îºï½ü¡¦Ì¾Á°¤ÎÊѹ¹¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£¤³¤ÎÁàºî¤ò¹Ô¤¦¤Ë¤Ï¡¢\n Áàºî¤ÎÁ°¤Ë»Ò¤Î¥¨¥ó¥È¥ê¤òÁ´¤Æºï½ü¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£]
-ja,dsgw,76,[¥µ¡¼¥Ð¤Ë¿·¤·¤¤¥¨¥ó¥È¥ê¤òÄɲá¦Ì¾Á°¤ÎÊѹ¹¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£\n ´û¤ËƱ¤¸Ì¾Á°¤Î¥¨¥ó¥È¥ê¤¬Â¸ºß¤·¤Æ¤¤¤Þ¤¹¡£]
-ja,dsgw,77,[¤¢¤Ê¤¿¤Î¥ê¥¯¥¨¥¹¥È¤ÏÊ£¿ô¤Î Directory ¥µ¡¼¥Ð¤ËÈ¿±Ç¤µ¤ì¤Þ¤¹¡£]
-ja,dsgw,78,[Directory ¥µ¡¼¥Ð¤ËÀܳ¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿¡£\n ¥µ¡¼¥Ð´ÉÍý¼Ô¤Ë¤´ÁêÃ̤¯¤À¤µ¤¤¡£]
-ja,dsgw,79,[¥µ¡¼¥Ð¤Ë¥Ç¡¼¥¿¤òÁ÷¿®Ãæ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£]
-ja,dsgw,80,[¥µ¡¼¥Ð¤«¤é¥Ç¡¼¥¿¤òÆɤ߹þ¤ßÃæ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£]
-ja,dsgw,81,[¥µ¡¼¥Ð¤«¤é¤Î±þÅú¤¬¤¢¤ê¤Þ¤»¤ó¡£¥¿¥¤¥à¥¢¥¦¥È¤·¤Þ¤·¤¿¡£]
-ja,dsgw,82,[¥µ¡¼¥Ð¤Ï¥²¡¼¥È¥¦¥¨¥¤¤¬»ÈÍѤ¹¤ëǧ¾ÚÊýË¡¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó¡£]
-ja,dsgw,83,[¸¡º÷¥Õ¥£¥ë¥¿¤ò¹½À®Ãæ¤Ë¥²¡¼¥È¥¦¥¨¥¤¤Ç¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£]
-ja,dsgw,84,[Áàºî¤Ï¥ê¥¯¥¨¥¹¥È¤Ë¤è¤ê¥­¥ã¥ó¥»¥ë¤µ¤ì¤Þ¤·¤¿¡£]
-ja,dsgw,85,[¥é¥¤¥Ö¥é¥ê¤ÇÆâÉô¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£¥Ñ¥é¥á¡¼¥¿¤ËÉÔÀµ¤¬¤¢¤ê¤Þ¤¹¡£]
-ja,dsgw,86,[¥µ¡¼¥Ð¤Ø¤ÎÀܳ¤ò³«¤±¤é¤ì¤Þ¤»¤ó¤Ç¤·¤¿¡£¥µ¡¼¥Ð´ÉÍý¼Ô¤Ë¤´ÁêÃ̤¯¤À¤µ¤¤¡£]
-ja,dsgw,87,[̤ÃΤΥ¨¥é¡¼¤ËÁø¶ø¤·¤Þ¤·¤¿¡£]
-ja,dsgw,88,[¥¨¥ó¥È¥ê¤Ï´û¤Ë¸ºß¤·¤Þ¤¹¡£]
-ja,dsgw,89,[¥¨¥ó¥È¥ê̾ ]
-ja,dsgw,90,[onMouseOver="window.status='¥¨¥ó¥È¥ê¤ò»²¾È¤¹¤ë¤Ë¤Ï¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£'; return true"]
-ja,dsgw,91,[ ´û¤Ë¸ºß¤·¤Þ¤¹¡£<P>Ê̤Î̾Á°¡¦¾ì½ê¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£\n<P>\n]
-ja,dsgw,92,[¿Æ¥¨¥ó¥È¥ê¤Ï¸ºß¤·¤Þ¤»¤ó¡£]
-ja,dsgw,93,[¼¡¤Î̾Á°¤Î¥¨¥ó¥È¥ê¤ÎÄɲ䬤Ǥ­¤Þ¤»¤ó¡§ <P><B>%s</B>,<P>\n ¿Æ¥¨¥ó¥È¥ê¤¬Â¸ºß¤·¤Þ¤»¤ó¡£<P>\n ¿Æ¥¨¥ó¥È¥ê¤òºÇ½é¤ËÅÐÏ¿¤·¤Æ¤¯¤À¤µ¤¤¡£\n]
-ja,dsgw,94,[¤³¤ì¤Î¿Æ\n]
-ja,dsgw,95,[¥¨¥ó¥È¥ê̾¡§ <P><B>%s</B>.\n]
-ja,dsgw,96,[·Ù¹ð¡§ ǧ¾Ú¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£ (¼¡¤Ø)...\n]
-ja,dsgw,97,[%s Directory ¥¨¥ó¥È¥ê]
-ja,dsgw,98,[<PRE>¥¨¥ó¥È¥ê DN: %s</PRE><P>\n]
-ja,dsgw,99,[<B>%s</B> ¤ËÊѹ¹¤·Êݸ¤·¤Þ¤·¤¿¡£]
-ja,dsgw,100,[<B>%s</B> ¤òÄɲä·¤Þ¤·¤¿¡£]
-ja,dsgw,101,[<B>%s</B> ¤òºï½ü¤·¤Þ¤·¤¿¡£]
-ja,dsgw,102,[<B>%s</B> ¤«¤é <B>%s</B> ¤Ø̾Á°¤òÊѹ¹¤·¤Þ¤·¤¿¡£]
-ja,dsgw,103,[<P><B>¥Î¡¼¥È¡§</B> ¤¢¤Ê¤¿¤Î %s ¥¨¥ó¥È¥ê¤ÏÇË´þ¤µ¤ì¤Þ¤·¤¿¡£\n ¤¢¤Ê¤¿¤ÏºÆÅÙǧ¾Ú¤ò¼õ¤±Êѹ¹¤òÄɲ乤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£\n]
-ja,dsgw,104,[ºï½ü]
-ja,dsgw,105,[̾Á°¤ÎÊѹ¹]
-ja,dsgw,106,[¥Ñ¥¹¥ï¡¼¥ÉÊѹ¹]
-ja,dsgw,107,[°À­ %s ¤òÊѹ¹¤·¤Þ¤·¤¿¡£<BR>\n]
-ja,dsgw,108,[ ¥¢¥¹¥­¡¼¤Ç¤Ï¤Ê¤¤ (%ld ¥Ð¥¤¥È)\n]
-ja,dsgw,109,[Ãͤ¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó¡£ ¤â¤¦°ìÅÙÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£\n]
-ja,dsgw,110,[Êѹ¹¤Ï¤¢¤ê¤Þ¤»¤ó¡£\n]
-ja,dsgw,111,[<P>%s ¤ò Directory ¥µ¡¼¥Ð¤ËÁ÷¿®¤·¤Þ¤·¤¿¡£\n]
-ja,dsgw,112,[¾ðÊó]
-ja,dsgw,113,[Êѹ¹]
-ja,dsgw,114,[<P>±ß¼è¤ë¤ÎÄɲäËÀ®¸ù¤·¤Þ¤·¤¿¡£\n]
-ja,dsgw,115,[<P>¥¨¥ó¥È¥ê¤Î½¤Àµ¤ËÀ®¸ù¤·¤Þ¤·¤¿¡£Êѹ¹¤ÏÊݸ¤µ¤ì¤Þ¤·¤¿¡£\n]
-ja,dsgw,116,[<P>¥¨¥ó¥È¥ê¤Îºï½ü¤ÏÀ®¸ù¤·¤Þ¤·¤¿¡£\n]
-ja,dsgw,117,[<PRE>¿·¤·¤¤¥¨¥ó¥È¥ê¤Î̾Á°¤Ï¡¢¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡§ %s\n</PRE><HR>\n]
-ja,dsgw,118,[<P>̾Á°¤ÎÊѹ¹¤ËÀ®¸ù¤·¤Þ¤·¤¿¡£\n]
-ja,dsgw,119,[°ÊÁ°¤Î¥Ñ¥¹¥ï¡¼¥É¤òÍÑ°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£]
-ja,dsgw,120,[¿·¤·¤¤¥Ñ¥¹¥ï¡¼¥É¤ÎÆþÎϤ¬É¬ÍפǤ¹¡£¤â¤¦°ìÅٹԤäƤ¯¤À¤µ¤¤¡£]
-ja,dsgw,121,[¿·¤·¤¤¥Ñ¥¹¥ï¡¼¥É¤È¡¢³Îǧ¤Î¤¿¤á¤ËÆþÎϤ·¤¿¥Ñ¥¹¥ï¡¼¥É¤¬°Û¤Ê¤ê¤Þ¤¹¡£¤â¤¦°ìÅÙÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£]
-ja,dsgw,122,[<BR>%s <B>%s</B> ¤Ï»ÈÍÑÃæ¤Ç¤¹¡£Ê̤λØÄê¤ò¹Ô¤Ã¤Æ¤¯¤À¤µ¤¤¡£<BR>\n]
-ja,dsgw,123,[¥Ç¡¼¥¿ ¥¨¥ì¥á¥ó¥È "%.100s" ¤¬ÉÔ­¤·¤Æ¤¤¤Þ¤¹¡£]
-ja,dsgw,124,[ÀßÄê¾ðÊó¤ò½é´ü²½¤·¤Æ¤¤¤Þ¤¹¡£]
-ja,dsgw,125,[¥Õ¥¡¥¤¥ë¤ò³«¤¯¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£]
-ja,dsgw,126,[dbconf ¥Õ¥¡¥¤¥ë¤Î·Á¼°¤¬ÉÔÀµ¤Ç¤¹¡£]
-ja,dsgw,127,[dbconf ¤ÎÃæ¤Î°À­Ì¾¾Î¤Î»ØÄ꤬ÉÔ­¤·¤Æ¤¤¤Þ¤¹¡£]
-ja,dsgw,128,[¥á¥â¥êÉÔ­¤Ç¤¹¡£]
-ja,dsgw,129,[dbconf ¥Õ¥¡¥¤¥ë¤ÎÃæ¤Î»ØÎá¤Î»ØÄ꤬ÉÔ­¤·¤Æ¤¤¤Þ¤¹¡£]
-ja,dsgw,130,[¹½À®¥Õ¥¡¥¤¥ë"%s"¤ò³«¤±¤é¤ì¤Þ¤»¤ó\n]
-ja,dsgw,131,["authlifetime" ¤Î»ØÄ꤬¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£\n]
-ja,dsgw,132,["dirmgr" ¤Î»ØÄ꤬¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£\n]
-ja,dsgw,133,["baseurl" ¤Î»ØÄ꤬¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£\n]
-ja,dsgw,134,["baseurl" ¤ÎÃæ¤Ç»ØÄꤵ¤ì¤Æ¤¤¤ë URL ¤¬ÉÔÀµ¤Ç¤¹¡£ - DN ¤¬ÉÔ­¤·¤Æ¤¤¤Þ¤¹¡£\n]
-ja,dsgw,135,[baseurl ¤ò¥Ñ¡¼¥¹¤·¤Æ¤¤¤Þ¤¹¡£]
-ja,dsgw,136,["baseurl" ¤ÎÃæ¤Ç»ØÄꤵ¤ì¤Æ¤¤¤ë URL ¤¬ÉÔÀµ¤Ç¤¹¡£ - "ldap://" URL ¤Î»ØÄê¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£\n]
-ja,dsgw,137,["ldaps://" ¤Î URL »ØÄêÊýË¡¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£\n]
-ja,dsgw,138,["template" ¤Î»ØÄ꤬¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£\n]
-ja,dsgw,139,["sslrequired" ¤Î»ØÄ꤬¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£\n]
-ja,dsgw,140,[Íý²ò¤Ç¤­¤Ê¤¤Ãͤ¬ "sslrequired" ¤Ë¤¢¤ê¤Þ¤¹¡£("never", "whenauthenticated", "always" ¤ò»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡£)\n]
-ja,dsgw,141,["securitypath" ¤Î»ØÄ꤬¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£\n]
-ja,dsgw,142,["location-suffix" ¤Î»ØÄ꤬¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£\n]
-ja,dsgw,143,["location" ¤Î»ØÄ꤬ɬÍפǤ¹¡£\n]
-ja,dsgw,144,["newtype" ¤Î»ØÄê¤Ë¤Ï£²¤Ä¤ÎÃͤò»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡£\n]
-ja,dsgw,145,["newtype" ¤Î¾ì½ê¤¬ÉÔÌÀ¤Ç¤¹¡£\n]
-ja,dsgw,146,[£³¤Ä¤Þ¤¿¤Ï£´¤Ä¤Î»ØÄ꤬ "tmplset" ¤Ë¤ÏɬÍפǤ¹¡£\n]
-ja,dsgw,147,["attrvset" ¤Ë¤Ï£´¤Ä¤Î»ØÄ꤬ɬÍפǤ¹¡£\n]
-ja,dsgw,148,["charset" ¤Î»ØÄê¤ò¸«¤Ä¤±¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£\n]
-ja,dsgw,149,["ClientLanguage" ¤Î»ØÄê¤ò¸«¤Ä¤±¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£\n]
-ja,dsgw,150,["AdminLanguage" ¤Î»ØÄê¤ò¸«¤Ä¤±¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£\n]
-ja,dsgw,151,["DefaultLanguage"¤Î»ØÄê¤ò¸«¤Ä¤±¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£\n]
-ja,dsgw,152,["include" ¤ËÂбþ¤¹¤ë¥Õ¥¡¥¤¥ë̾¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó\n]
-ja,dsgw,153,[ÀßÄê¥Õ¥¡¥¤¥ë¤Ë̤ÃΤÎÌ¿Î᤬¤¢¤ê¤Þ¤¹\n]
-ja,dsgw,154,[<= erase_db lcache.conf ¥Õ¥¡¥¤¥ë¤ò³«¤¯¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£"%s"\n]
-ja,dsgw,155,[<FONT SIZE="+1">\n<P>¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ïºï½ü¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ ¿·¤·¤¤¥Ç¡¼¥¿¥Ù¡¼¥¹¤òºîÀ®¤·¤Þ¤¹... \n</FONT>\n ]
-ja,dsgw,156,[<FONT SIZE="+1">\n<P>¥Ç¡¼¥¿¥Ù¡¼¥¹¤òºï½ü¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£\n</FONT>\n ]
-ja,dsgw,157,[<= app_suffix ldif ¥Õ¥¡¥¤¥ë¤ò³«¤¯¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£ "%s"\n]
-ja,dsgw,158,[<= app_suffix °ì»þ¥Õ¥¡¥¤¥ë¤ò³«¤¯¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£ "%s"\n]
-ja,dsgw,159,[%s ¤«¤é %s ¤Ø̾Á°¤ÎÊѹ¹¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£]
-ja,dsgw,160,[¥Ì¥ë ¥Ý¥¤¥ó¥¿¤¬ dbconf_read_default_dbinfo() ¤«¤éÊÖ¤µ¤ì¤Þ¤·¤¿¡£]
-ja,dsgw,161,["ldapdb" URL ¤¬ÉÔÀµ¤Ç¤¹¡£- ¥Ù¡¼¥¹ DN ¤¬·çÍ¤Æ¤¤¤Þ¤¹¡£\n]
-ja,dsgw,162,["ldapdb" URL ¤¬ÉÔÀµ¤Ç¤¹¡£\n]
-ja,dsgw,163,["baseurl" ¤Çµ­½Ò¤µ¤ì¤¿ URL ¤¬ÉÔÀµ¤Ç¤¹¡£ - ¥Ù¡¼¥¹ DN ¤¬·çÍ¤Æ¤¤¤Þ¤¹¡£\n]
-ja,dsgw,164,[baseurl ¤ò¥Ñ¡¼¥¹¤·¤Æ¤¤¤Þ¤¹¡£]
-ja,dsgw,165,["baseurl" ¤Çµ­½Ò¤µ¤ì¤¿ URL ¤¬ÉÔÀµ¤Ç¤¹¡£ - "ldap:// ¤Þ¤¿¤Ï ldapdb://" ¤Î URL ¤Ç»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡£\n]
-ja,dsgw,166,["ldaps://" ¤Î URL »ØÄêÊýË¡¤Ï¡¢¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£\n]
-ja,dsgw,167,[binddn ¤ÏÃͤò»ý¤Ã¤Æ¤¤¤Þ¤»¤ó¡£]
-ja,dsgw,168,[bindpw ¤ÏÃͤò»ý¤Ã¤Æ¤¤¤Þ¤»¤ó¡£]
-ja,dsgw,169,[¥Ç¥Õ¥©¥ë¥È Directory ¥µ¡¼¥Ó¥¹¤Ç dbswitch.conf ¥Õ¥¡¥¤¥ë¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£]
-ja,dsgw,170,[½ñ¹þ¤ß¤Î¤¿¤á¤Ë¹½À®¥Õ¥¡¥¤¥ë"%s" ¤ò³«¤±¤é¤ì¤Þ¤»¤ó\n]
-ja,dsgw,171,[%s ¤«¤é %s ¤Ø̾Á°¤òÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£]
-ja,dsgw,172,[ÀßÄê¥Õ¥¡¥¤¥ë %s: ]
-ja,dsgw,173,[ÀßÄê¥Õ¥¡¥¤¥ë %s: %d ¹Ô¡§ ]
-ja,dsgw,174,[ºÇÂç %d]
-ja,dsgw,175,[ OK ]
-ja,dsgw,176,[¥¦¥¤¥ó¥É¥¦¤òÊĤ¸¤ë]
-ja,dsgw,177,[Á°¤Ø]
-ja,dsgw,178,[{crypt}¥í¥Ã¥¯Ãæ [%s GMT]]
-ja,dsgw,179,[¥á¥¤¥ó¤Ø]
-ja,dsgw,181,[ Help ]
-ja,dsgw,182,[Help]
-ja,dsgw,184,[Help ¤Ï»ÈÍѤǤ­¤Þ¤»¤ó¡£]
-ja,dsgw,186,[¥¦¥¤¥ó¥É¥¦¤òÊĤ¸¤ë]
-ja,dsgw,187,[¥¦¥¤¥ó¥É¥¦¤òÊĤ¸¤ë]
-ja,dsgw,188,[¥Æ¥ó¥×¥ì¡¼¥È¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£]
-ja,dsgw,189,[ǧ¾ÚÃæ ...]
-ja,dsgw,190,[ǧ¾Ú¤ò¼è¤ê¾Ã¤·¤Þ¤¹¤« (Log out)¡©]
-ja,dsgw,191,[¸¡º÷ʸ»úÎó¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤]
-ja,dsgw,192,[ǧ¾Ú¤ÎºÇ½é¤Î¥¹¥Æ¥Ã¥×¤Ï¡¢Directory ¤Ë ID ¤òÆþÎϤ¹¤ë¤³¤È¤Ç¤¹¡£\n<br>̾Á°¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡§]
-ja,dsgw,193,[¼¡¤Ø]
-ja,dsgw,194,[¼¡¤Ø]
-ja,dsgw,195,[¥­¥ã¥ó¥»¥ë]
-ja,dsgw,196,[Directory Manager ¤È¤·¤Æǧ¾Ú"> &nbsp;(Directory Administrator ¤Î¤ßÍøÍѲÄǽ)\n]
-ja,dsgw,197,[ǧ¾Ú ...]
-ja,dsgw,198,[ǧ¾Ú¤ò¼è¤ê¾Ã¤·¤Þ¤¹¤«¡©]
-ja,dsgw,200,[¼¡¤Ø]
-ja,dsgw,201,[¼¡¤Ø]
-ja,dsgw,202,[¥­¥ã¥ó¥»¥ë]
-ja,dsgw,203,[Directory ¤Çǧ¾Ú (Log in)]
-ja,dsgw,204,[<B>%s</B>¤È¤·¤Æ Directory ¤Ëǧ¾Ú¤·¤è¤¦¤È¤·¤Æ¤¤¤Þ¤¹¡£Ç§¾Ú²áÄø¤ò´°Î»¤¹¤ë¤Ë¤Ï¡¢¥Ñ¥¹¥ï¡¼¥É¤ò¥¿¥¤¥×¤·¤Æ¤¯¤À¤µ¤¤¡£\n]
-ja,dsgw,206,[¸å¤Ç Directory ¤Î¤¢¤Ê¤¿¤Î¥¨¥ó¥È¥ê¤ÎÄɲá¦Êѹ¹¤ò¹Ô¤¦¤Ë¤Ï¡¢\nDirectory ¤Ëǧ¾Ú(Log in)¤·¤¿¸å¡¢¥¬¥¤¥É¤ò¥¦¥¤¥ó¥É¥¦¤Ë \n ɽ¼¨¤µ¤»¡¢¤½¤ì¤ò»²¾È¤·¤Ê¤¬¤éºî¶È¤ò¹Ô¤Ã¤Æ¤¯¤À¤µ¤¤¡£\n]
-ja,dsgw,207,[¤³¤Î¥¹¥¯¥ê¡¼¥ó¾å¤Ç Directory ¤Ëǧ¾Ú(Log in)¤·¤Æ\n¤¤¤ëºÝ¤Ë¤Ï¡¢´û¤ËÄɲá¦Êѹ¹¤Îºî¶È¤ò¹Ô¤¦¤³¤È¤¬²Äǽ¤Ç¤¹¡£¤Þ¤Àǧ¾Ú\n(Log in)¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ë¤Ï¤½¤ì¤ò¹Ô¤Ã¤¿¤¢¤Èºî¶È¤ò¹Ô¤Ã¤Æ¤¯¤À¤µ¤¤¡£\n]
-ja,dsgw,208,[ǧ¾Ú¥¹¥Æ¡¼¥¿¥¹]
-ja,dsgw,209,[<form>\n¤¢¤Ê¤¿¤Ï¸½ºß Directory ¤Ëǧ¾Ú¤µ¤ì¤Æ¤¤¤Þ¤¹¡£]
-ja,dsgw,210,[.\n¤â¤·¤¢¤Ê¤¿¤¬ Directory ¤Îǧ¾Ú¤ò¼è¤ê¾Ã¤¹(Log out)¤Î¤Ç¤¢¤ì¤Ð¥Ü¥¿¥ó¤ò²¡¤·¤Æ¤¯¤À¤µ¤¤¡£]
-ja,dsgw,211,[ǧ¾Ú¤Î¼è¤ê¾Ã¤·(Log out)]
-ja,dsgw,212,[¤¢¤Ê¤¿¤¬ÇË´þ¤¹¤ëǧ¾Ú]
-ja,dsgw,213,[Í­¸ú´ü¸Â¤ÏÀÚ¤ì¤Þ¤·¤¿¡£\n<HR>\n]
-ja,dsgw,214,[¸½ºß¤¢¤Ê¤¿¤Ï¡¢Directory ¤Ëǧ¾Ú¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£<HR>\n]
-ja,dsgw,215,["%s=" ¤¬ÉÔ­¤·¤Æ¤¤¤Þ¤¹¡£]
-ja,dsgw,216,["%s=%s" ¤¬ÉÔÌÀ¤Ç¤¹¡£]
-ja,dsgw,217,[%s ¥ª¥×¥·¥ç¥ó¤¬ÉÔÌÀ¤Ç¤¹¡£]
-ja,dsgw,218,[%s ¤Î½ñ¼°¤¬ÉÔÌÀ¤Ç¤¹¡£\n]
-ja,dsgw,219,[** HTML ¥¿¥¤¥× "%s" ¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£ **<BR>\n]
-ja,dsgw,224,[½¤Àµ]
-ja,dsgw,225,[Êѹ¹ÊÝ´É]
-ja,dsgw,226,[Êѹ¹]
-ja,dsgw,227,[ÄɲÃ]
-ja,dsgw,228,[ºï½ü]
-ja,dsgw,229,[¥¨¥ó¥È¥ê¤òºï½ü¤·¤Æ¤è¤í¤·¤¤¤Ç¤¹¤«¡©]
-ja,dsgw,230,[̾Á°¤ÎÊѹ¹]
-ja,dsgw,231,[¥¨¥ó¥È¥ê¤Î¿·¤·¤¤Ì¾Á°¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡§]
-ja,dsgw,232,[½¤Àµ]
-ja,dsgw,233,[%s= ¤¬ÉÔ­¤·¤Æ¤¤¤Þ¤¹¡£]
-ja,dsgw,234,[¥¦¥¤¥ó¥É¥¦¤òÊĤ¸¤ë¡£]
-ja,dsgw,235,[½¤Àµ ...]
-ja,dsgw,236,["%s=" ÉÔ­¤·¤Æ¤¤¤Þ¤¹¡£\n]
-ja,dsgw,237,["%s" ¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£\n]
-ja,dsgw,238,["%s" ¤Î½ñ¼°¤¬ÉÔÌÀ¤Ç¤¹¡£\n]
-ja,dsgw,239,[ºÆǧ¾Ú]
-ja,dsgw,240,[¥¦¥¤¥ó¥É¥¦¤òÊĤ¸¤ë]
-ja,dsgw,241,[¤è¤í¤·¤¤¤Ç¤¹¤«¡©]
-ja,dsgw,242,[width=400,height=130,resizable]
-ja,dsgw,243,[ OK ]
-ja,dsgw,244,[ OK ]
-ja,dsgw,245,[ ¥ê¥»¥Ã¥È ]
-ja,dsgw,246,[ ½ªÎ» ]
-ja,dsgw,247,[ ¥­¥ã¥ó¥»¥ë ]
-ja,dsgw,248,[Ê̤ΠIF ¤òȯ¸«(Æþ¤ì»Ò¤Î IF ¤Ï¥µ¥Ý¡¼¥È¤µ¤ìÄê¤Þ¤»¤ó)]
-ja,dsgw,249,[ELESE ¤ò¸«¤Ä¤±¤Þ¤·¤¿¤¬¡¢IF ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£]
-ja,dsgw,250,[ELSE ¤ò¸«¤Ä¤±¤Þ¤·¤¿¤¬¡¢¸å¤Î ELSE ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£(¤â¤·¤¯¤Ï ENDIF)]
-ja,dsgw,251,[ELIF ¤ò¸«¤Ä¤±¤Þ¤·¤¿¤¬ IF ¤ò¸«¤Ä¤±¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£]
-ja,dsgw,252,[ELIF ¤ò¸«¤Ä¤±¤Þ¤·¤¿¤¬¡¢¸å¤Î ELSE ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£(¤â¤·¤¯¤Ï ENDIF)]
-ja,dsgw,253,[ENDIF ¤ò¸«¤Ä¤±¤Þ¤·¤¿¤¬ IF ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£]
-ja,dsgw,254,[<BR><B>¥Æ¥ó¥×¥ì¡¼¥È ¥¨¥é¡¼¡§</B> %s<BR>\n]
-ja,dsgw,255,[ldap_init/lcache_init ¤¬ÀßÄê¥Õ¥¡¥¤¥ë¤òÆɤ߹þ¤àÁ°¤Ë¼Â¹Ô¤µ¤ì¤Þ¤·¤¿¡£]
-ja,dsgw,256,[¥¢¥É¥ß¥Ë¥¹¥È¥ì¡¼¥·¥ç¥ó ¥µ¡¼¥Ð¤Ï¼Â¹ÔÃæ¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£]
-ja,dsgw,257,[¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó¤ò½é´ü²½¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿¡£]
-ja,dsgw,258,[DN ¤Ë¥æ¡¼¥¶Ì¾¤¬¥Þ¥Ã¥×¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£(¥¢¥É¥ß¥ó ¥µ¡¼¥Ð¤Î¥¨¥é¡¼¤Ç¤¹¡£)]
-ja,dsgw,259,[¸½ºß¤Î¥æ¡¼¥¶Ì¾¤òÆÀ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£]
-ja,dsgw,260,[¸½ºß¤Î¥æ¡¼¥¶¥Ñ¥¹¥ï¡¼¥É¤òÆÀ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£]
-ja,dsgw,261,[¥¨¥é¡¼¡§ %s]
-ja,dsgw,262,[¥Î¡¼¥È¡§ ¥Ç¥£¥¹¥×¥ì¥¤ ¥Æ¥ó¥×¥ì¡¼¥È¤Ï¸ºß¤·¤Þ¤»¤ó¡£¥Ç¥Õ¥©¥ë¥ÈÃͤò»ÈÍѤ·¤Þ¤¹¡£]
-ja,dsgw,263,[¥æ¡¼¥¶ ID ¤¬ÉÔÀµ¤â¤·¤¯¤Ï LDAP ¤¬ NULL ¤òÊÖ¤·¤Þ¤·¤¿¡£]
-ja,dsgw,264,[¥æ¡¼¥¶ ID ¤Ë¥Þ¥Ã¥Á¤¹¤ë¤â¤Î¤¬¤¢¤ê¤Þ¤»¤ó¡£]
-ja,dsgw,265,[¥æ¡¼¥¶ ID ¤¬£±¤Ä°Ê¾å³ºÅö¤·¤Þ¤¹¡£]
-ja,dsgw,266,[the entire directory]
-ja,dsgw,267,["includeset" ¤Ë¤Ï£²¤Ä¤ÎÃͤ¬É¬ÍפǤ¹¡£\n]
-ja,dsgw,268,[¥¨¥ó¥È¥ê¤Ë¤ÏÍ׵ᤵ¤ì¤¿Â°À­Ãͤ¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿]
-ja,dsgw,269,["NLS" »Ø¿Ë¤Î°ú¿ô¤¬·ç¤±¤Æ¤¤¤Þ¤¹\n]
-ja,dsgw,270,[NT¥æ¡¼¥¶ID¤ÎÃͤò»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹\n]
-ja,dsgw,271,[»Ø¿ËÆâ¤ÎNT¥æ¡¼¥¶ID¤ÈNT¥É¥á¥¤¥óID¤ÎÁȹç¤ï¤»¤Ï¸ÇÍ­¤Î¤â¤Î¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó\n]
-ja,dsgw,272,[NT¥æ¡¼¥¶ID¤ÈNT¥É¥á¥¤¥óID¤ÎξÊý¤ÎÃͤò»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹\n]
-ja,dsgw,273,[NT¥æ¡¼¥¶IDÃͤÎŤµ¤Ï20ʸ»ú¤òĶ²á¤·¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£\n]
-ja,dsgw,274,[¿·µ¬¥¨¥ó¥È¥ê¤Î̾Á°¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£]
-ja,dsgw,275,[¿·µ¬¥¨¥ó¥È¥ê¤Î¾ì½ê¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£]
-ja,dsgw,276,[¿·µ¬¥¨¥ó¥È¥ê]
-ja,dsgw,277,[¤³¤Îµ¡Ç½¤ò»ÈÍѤ¹¤ë¤Ë¤Ï¡¢dsgw.conf¤ÇÄêµÁ¤µ¤ì¤¿dirmgr¤¬¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó]
-ja,dsgw,278,["vcard-property"¤Î»Ø¿Ë¤Ë¤Ï3¤Þ¤¿¤Ï4¤Ä¤Î°ú¿ô¤¬É¬ÍפǤ¹\n]
-ja,dsgw,279,[Vcard¥×¥í¥Ñ¥Æ¥£¹½Ê¸¤Ï"cis" ¤Þ¤¿¤Ï "mls"¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó\n]
-ja,dsgw,280,[¥¨¥ó¥È¥ê¤¬¸¡º÷¤µ¤ì¤Þ¤»¤ó¤Ç¤·¤¿\n%2$s]
-ja,dsgw,281,['%4$s'¤¬%2$s%3$s¡¢¥¨¥ó¥È¥ê¤Ï¸¡º÷¤µ¤ì¤Þ¤»¤ó¤Ç¤·¤¿\n]
-ja,dsgw,282,[¥¨¥ó¥È¥ê¤Ï¸¡º÷¤µ¤ì¤Þ¤»¤ó¤Ç¤·¤¿\n%2$s]
-ja,dsgw,283,['%4$s'¤¬%2$s%3$s¡¢¥¨¥ó¥È¥ê¤Ï¸¡º÷¤µ¤ì¤Þ¤»¤ó¤Ç¤·¤¿\n]
-ja,dsgw,284,[1¸Ä¤Î¥¨¥ó¥È¥ê¤¬¸¡º÷¤µ¤ì¤Þ¤·¤¿\n%2$s]
-ja,dsgw,285,['%4$s'¤¬%2$s%3$s¡¢1¸Ä¤Î¥¨¥ó¥È¥ê¤¬¸¡º÷¤µ¤ì¤Þ¤·¤¿\n]
-ja,dsgw,286,[1¸Ä¤Î¥¨¥ó¥È¥ê¤¬¸¡º÷¤µ¤ì¤Þ¤·¤¿\n%2$s]
-ja,dsgw,287,[%2$s¤¬'%4$s'%3$s¡¢1¸Ä¤Î¥¨¥ó¥È¥ê¤¬¸¡º÷¤µ¤ì¤Þ¤·¤¿\n]
-ja,dsgw,288,[%1$li¸Ä¤Î¥¨¥ó¥È¥ê¤¬¸¡º÷¤µ¤ì¤Þ¤·¤¿\n%2$s]
-ja,dsgw,289,['%4$s'¤¬%2$s%3$s¡¢%1$li¸Ä¤Î¥¨¥ó¥È¥ê¤¬¸¡º÷¤µ¤ì¤Þ¤·¤¿\n]
-ja,dsgw,290,[%1$li¸Ä¤Î¥¨¥ó¥È¥ê¤¬¸¡º÷¤µ¤ì¤Þ¤·¤¿\n%2$s]
-ja,dsgw,291,['%4$s'¤¬%2$s%3$s¡¢%1$li¸Ä¤Î¥¨¥ó¥È¥ê¤¬¸¡º÷¤µ¤ì¤Þ¤·¤¿\n]
-ja,dsgw,292,[LDAP¥Õ¥£¥ë¥¿]
-ja,dsgw,293,[ǧ¾Ú¤Ë»ÈÍѤ·¤¿¥¨¥ó¥È¥ê¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡£¥¨¥ó¥È¥ê̾¤¬Êѹ¹¤µ¤ì¤¿¤«¡¢ºï½ü¤µ¤ì¤¿²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£¤â¤¦°ìÅÙǧ¾Ú¤ò¹Ô¤Ã¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£]
-ja,dsgw,294,[¿·¤·¤¤¥Ñ¥¹¥ï¡¼¥É¤Î¹½Ê¸¤Ï̵¸ú¤Ç¤¹¡£\n]
-ja,dsgw,295,[¿·¤·¤¤¥Ñ¥¹¥ï¡¼¥É¤Ï¥Ñ¥¹¥ï¡¼¥ÉÍúÎò¤ÎÃæ¤Ë¤¢¤ê¤Þ¤¹¡£\n]
-ja,dsgw,296,[¥Ñ¥¹¥ï¡¼¥ÉºÆÆþÎϤÎÀ©¸Â²ó¿ô¤ò±Û¤¨¤Þ¤·¤¿¡£¥·¥¹¥Æ¥à ¥¢¥É¥ß¥Ë¥¹¥È¥ì¡¼¥¿¤ËÏ¢Íí¤·¤Æ¤¯¤À¤µ¤¤¡£\n]
-ja,dsgw,297,[¥Ñ¥¹¥ï¡¼¥ÉºÆÆþÎϤÎÀ©¸Â²ó¿ô¤ò±Û¤¨¤Þ¤·¤¿¡£¤¢¤È¤Ç¤â¤¦°ìÅٹԤäƤ¯¤À¤µ¤¤¡£\n]
-ja,dsgw,298,[¤³¤Î¥Ñ¥¹¥ï¡¼¥É¤Ï´ü¸ÂÀÚ¤ì¤Ç¤¹¡£¥·¥¹¥Æ¥à ¥¢¥É¥ß¥Ë¥¹¥È¥ì¡¼¥¿¤ËÏ¢Íí¤·¤Æ¡¢¥Ñ¥¹¥ï¡¼¥É¤ò¥ê¥»¥Ã¥È¤·¤Æ¤¯¤À¤µ¤¤¡£\n]
-ja,dsgw,299,[½¤Àµ¤·¤Æ¤¤¤Þ¤¹¡£]
-ja,dsgw,300,[Äɲ䷤Ƥ¤¤Þ¤¹¡£]
-ja,dsgw,301,[ºï½ü¤·¤Æ¤¤¤Þ¤¹¡£]
-ja,dsgw,302,[̾Á°¤òÊѹ¹¤·¤Æ¤¤¤Þ¤¹¡£]
-ja,dsgw,303,[¥ê¥¹¥È¤Ë̾Á°¤¬¤¢¤ê¤Þ¤»¤ó¡£]
-ja,dsgw,304,[¥ê¥¹¥È¤Ë <B>1</B> ¤Ä¤Î̾Á°¤¬¤¢¤ê¤Þ¤¹¡£]
-ja,dsgw,305,[¥ê¥¹¥È¤Ë <B>%s</B>¸Ä¤Î̾Á°¤¬¤¢¤ê¤Þ¤¹¡£]
-ja,dsgw,306,[¥ê¥¹¥È\\n¤«¤é\\nºï½ü¤·¤Þ¤¹¤«¡© ̾Á°]
-ja,dsgw,307,[Êѹ¹¤òÇË´þ¤·¤Þ¤¹¤«¡©]
-ja,dsgw,308,[width=300,height=130,resizable]
-ja,dsgw,309,[Êѹ¹¤òÊݸ¤»¤º¤Ë³¹Ô¤·¤Þ¤¹¤«¡©<br>Êݸ¤µ¤ì¤Æ¤¤¤Ê¤¤Êѹ¹¤Ï¼º¤ï¤ì¤Þ¤¹¡£]
-ja,dsgw,310,[width=400,height=150,resizable]
-ja,dsgw,311,[·Ù¹ð]
-ja,dsgw,312,[³Îǧ]
-ja,dsgw,313,[ǧ¾Ú¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£\n]
-ja,dsgw,314,[ǧ¾Ú¤ËÀ®¸ù¤·¤Þ¤·¤¿¡£]
-ja,dsgw,315,[¥Ç¥£¥ì¥¯¥È¥ê¤Ë <B>%s</B> ¤È¤·¤Æǧ¾Ú¤µ¤ì¤Æ¤¤¤Þ¤¹¡£]
-ja,dsgw,316,[¤¢¤Ê¤¿¤Îǧ¾Ú»ñ³Ê¾ÚÌÀ½ñ¤Ï %d ʬ¤Ç¼º¸ú¤·¤Þ¤¹¡£\n]
-ja,dsgw,317,[ǧ¾Ú¤Î¼º¸ú¸å¡¢¥Ç¥£¥ì¥¯¥È¥ê¤ËºÆÅÙǧ¾Ú¤ò¼õ¤±¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£\n]
-ja,dsgw,318,[<P>¤³¤Î¥¨¥ó¥È¥ê¤Î¥Ñ¥¹¥ï¡¼¥É¤Ï <B>%s</B> ¤Ç¼º¸ú¤·¤Þ¤¹¡£\n]
-ja,dsgw,319,[ǧ¾Ú¤Ë¼ºÇÔ¤·¤¿Íýͳ]
-ja,dsgw,320,[¥Ç¥£¥ì¥¯¥È¥ê¤Ë¸ºß¤·¤Ê¤¤¥¨¥ó¥È¥ê¤Îǧ¾Ú¤ò¼õ¤±¤è¤¦¤È¤·¤¿¤¿¤á¡¢Ç§¾Ú¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£\nǧ¾Ú¤¬¼õ¤±¤é¤ì¤ë¤Î¤Ï¡¢´û¸¤Î¥Ç¥£¥ì¥¯¥È¥ê ¥¨¥ó¥È¥ê¤À¤±¤Ç¤¹¡£\n]
-ja,dsgw,321,[¥Ñ¥¹¥ï¡¼¥É¤¬ÀßÄꤵ¤ì¤Æ¤¤¤Ê¤¤¥¨¥ó¥È¥ê¤Îǧ¾Ú¤ò¼õ¤±¤è¤¦¤È¤·¤¿¤¿¤á¡¢Ç§¾Ú¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£\nǧ¾Ú¤¬¼õ¤±¤é¤ì¤ë¤Î¤Ï¡¢¥Ç¥£¥ì¥¯¥È¥ê´ÉÍý¼Ô¤Ë¤è¤Ã¤Æ¥Ñ¥¹¥ï¡¼¥É¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ë¥¨¥ó¥È¥ê¤À¤±¤Ç¤¹¡£\n]
-ja,dsgw,322,[ÆþÎϤ·¤¿¥Ñ¥¹¥ï¡¼¥É¤¬Àµ¤·¤¯¤Ê¤¤¤¿¤á¡¢Ç§¾Ú¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£\n[¤â¤¦°ìÅÙ]¤ò¥¯¥ê¥Ã¥¯¤·¤ÆºÆÅ٥ѥ¹¥ï¡¼¥É¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£\n¥¨¥ó¥È¥ê¤Î¥Ñ¥¹¥ï¡¼¥É¤ò˺¤ì¤¿¾ì¹ç¤Ï¡¢Directory Administrator¤ËÏ¢Íí¤·¡¢¥Ñ¥¹¥ï¡¼¥É¤òºÆÀßÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£\n]
-ja,dsgw,323,[ͽ´ü¤·¤Ê¤¤¥¨¥é¡¼: %s ¤¬È¯À¸¤·¤¿¤¿¤á¡¢Ç§¾Ú¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£\n]
-ja,dsgw,324,[ºÆÆþÎÏ]
-ja,dsgw,325,[³¹Ô¤¹¤ë¤Ë¤Ï¡¢¾åµ­¤Î¥ê¥¹¥È¤«¤é¥¿¥¹¥¯¤òÁªÂò¤·¤Æ¤¯¤À¤µ¤¤¡£\n]
-ja,dsgw,326,[¥Ñ¥¹¥ï¡¼¥É½¤Àµ]
-ja,dsgw,327,[<H3>%s ¤Î¤¿¤á¤Ë¥Ñ¥¹¥ï¡¼¥É¼º¸ú</H3>\n]
-ja,dsgw,328,[¥Ç¥£¥ì¥¯¥È¥ê ¥µ¡¼¥Ð¤Î¥Ñ¥¹¥ï¡¼¥É¤¬¼º¸ú¤·¤Þ¤·¤¿¡£]
-ja,dsgw,329,[ ¤¹¤°¤Ë¥Ñ¥¹¥ï¡¼¥É¤òÊѹ¹¤·¤Æ¤¯¤À¤µ¤¤¡£\n]
-ja,dsgw,330,[¥Ñ¥¹¥ï¡¼¥É¤¬ÆþÎϤµ¤ì¤Æ¤¤¤Þ¤»¤ó¡£Ç§¾Ú¤ò¼õ¤±¤ë¤È¤­¤Ïɬ¤º¥Ñ¥¹¥ï¡¼¥É¤òÆþÎϤ·¡¢¥µ¡¼¥Ð¤ÇËܿͤǤ¢¤ë¤³¤È¤ò¾È¹ç¤Ç¤­¤ë¤è¤¦¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£]
-ja,dsgw,331,[¥µ¡¼¥Ð¤Ïǧ¾Ú»ñ³Ê¾ÚÌÀ½ñ¤òÀ¸À®¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿¡£Ç§¾Ú¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò³«¤¯¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿¡£]
-ja,dsgw,332,[¥µ¡¼¥Ð¤Ïǧ¾Ú»ñ³Ê¾ÚÌÀ½ñ¤òÀ¸À®¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿¡£¥Ç¡¼¥¿¤òǧ¾Ú¥Ç¡¼¥¿¥Ù¡¼¥¹¤ËÄɲäǤ­¤Þ¤»¤ó¤Ç¤·¤¿¡£]
-ja,dsgw,333,[¼¡¤Ø]
-ja,dsgw,334,[¥¦¥£¥ó¥É¥¦¤òÊĤ¸¤ë]
-ja,dsgw,335,[À®¸ù]
-ja,dsgw,336,[ǧ¾Ú»ñ³Ê¾ÚÌÀ½ñ¤¬Ìµ¸ú¤Ë¤Ê¤ê¤Þ¤·¤¿¡£¸½ºßDirectory¤Ëǧ¾Ú¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£\n]
-ja,dsgw,337,[Á°¤Ø]
-ja,dsgw,338,[À®¸ù]
-ja,dsgw,339,[¥ª¥Ú¥ì¡¼¥·¥ç¥ó ¥¨¥é¡¼]
-ja,dsgw,340,[¥×¥í¥È¥³¥ë ¥¨¥é¡¼]
-ja,dsgw,341,[·Ù¹ð: ¥¿¥¤¥à¥¢¥¦¥È¤·¤Þ¤·¤¿¡£°ìÃפ¹¤ë¥¨¥ó¥È¥ê¤Î¤¦¤Á¡¢É½¼¨¤µ¤ì¤Æ¤¤¤Ê¤¤¤â¤Î¤â¤¢¤ê¤Þ¤¹¡£]
-ja,dsgw,342,[·Ù¹ð: ¥µ¥¤¥º¤Î¾å¸Â¤òĶ¤¨¤Þ¤·¤¿¡£°ìÃפ¹¤ë¥¨¥ó¥È¥ê¤Î¤¦¤Á¡¢É½¼¨¤µ¤ì¤Æ¤¤¤Ê¤¤¤â¤Î¤â¤¢¤ê¤Þ¤¹¡£]
-ja,dsgw,343,[false ¤òÈæ³Ó]
-ja,dsgw,344,[true ¤òÈæ³Ó]
-ja,dsgw,345,[¸·Ì©¤Êǧ¾Ú¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£]
-ja,dsgw,346,[¸·Ì©¤Êǧ¾Ú¤¬É¬ÍפǤ¹¡£]
-ja,dsgw,347,[·Ù¹ð: °ìÉô¤Î¥Ç¥£¥ì¥¯¥È¥ê ¥µ¡¼¥Ð¤ËÀܳ¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿¡£°ìÃפ¹¤ë¥¨¥ó¥È¥ê¤Î¤¦¤Á¡¢É½¼¨¤µ¤ì¤Æ¤¤¤Ê¤¤¤â¤Î¤â¤¢¤ê¤Þ¤¹¡£]
-ja,dsgw,348,[¥ì¥Õ¥§¥é¥ë¤ò¼õ¿®¤·¤Þ¤·¤¿¡£]
-ja,dsgw,349,[´ÉÍý¤ÎÈϰϤòĶ¤¨¤Æ¤¤¤Þ¤¹¡£]
-ja,dsgw,350,[½ÅÂç¤Ê³ÈÄ¥¤¬ÍøÍѤǤ­¤Þ¤»¤ó¡£]
-ja,dsgw,351,[µ¡Ì©À­¤¬É¬ÍפǤ¹¡£]
-ja,dsgw,352,[SASL ¥Ð¥¤¥ó¥ÉÃæ¤Ç¤¹¡£]
-ja,dsgw,353,[¤½¤Î¤è¤¦¤Ê°À­¤Ï¤¢¤ê¤Þ¤»¤ó¡£]
-ja,dsgw,354,[°À­¤Î¼ïÎबÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£]
-ja,dsgw,355,[¥Þ¥Ã¥Á¥ó¥°¤¬ÉÔŬÀڤǤ¹¡£]
-ja,dsgw,356,[À©Ìó°ãÈ¿¤Ç¤¹¡£]
-ja,dsgw,357,[¥¿¥¤¥×¤Þ¤¿¤ÏÃͤ¬Â¸ºß¤·¤Þ¤¹¡£]
-ja,dsgw,358,[¹½Ê¸¤Ë¸í¤ê¤¬¤¢¤ê¤Þ¤¹¡£]
-ja,dsgw,359,[¤½¤Î¤è¤¦¤Ê¥ª¥Ö¥¸¥§¥¯¥È¤Ï¤¢¤ê¤Þ¤»¤ó¡£]
-ja,dsgw,360,[¥¨¥¤¥ê¥¢¥¹¤ËÌäÂ꤬¤¢¤ê¤Þ¤¹¡£]
-ja,dsgw,361,[DN ¤Î¹½Ê¸¤Ë¸í¤ê¤¬¤¢¤ê¤Þ¤¹¡£]
-ja,dsgw,362,[¥ª¥Ö¥¸¥§¥¯¥È¤ÏÍդǤ¹¡£]
-ja,dsgw,363,[¥¨¥¤¥ê¥¢¥¹ ¥Ç¥ê¥Õ¥¡¥ì¥ó¥¹¤ËÌäÂ꤬¤¢¤ê¤Þ¤¹¡£]
-ja,dsgw,364,[ǧ¾Ú¤¬ÉÔŬÅö¤Ç¤¹¡£]
-ja,dsgw,365,[¾ÚÌÀ½ñ¤¬Ìµ¸ú¤Ç¤¹¡£]
-ja,dsgw,366,[¥¢¥¯¥»¥¹¤¬ÉÔŬÀڤǤ¹¡£]
-ja,dsgw,367,[DSA ¤¬¥Ó¥¸¡¼¾õÂ֤Ǥ¹¡£]
-ja,dsgw,368,[DSA ¤¬ÍøÍѤǤ­¤Þ¤»¤ó¡£]
-ja,dsgw,369,[DSA ¤¬¼Â¹Ô¤µ¤ì¤Þ¤»¤ó¡£]
-ja,dsgw,370,[¥ë¡¼¥×¤¬¸¡½Ð¤µ¤ì¤Þ¤·¤¿¡£]
-ja,dsgw,371,[̾Á°ÉÕ¤±°ãÈ¿]
-ja,dsgw,372,[¥ª¥Ö¥¸¥§¥¯¥È ¥¯¥é¥¹°ãÈ¿]
-ja,dsgw,373,[ÍեΡ¼¥É°Ê³°¤ÇÁàºî¤ò¹Ô¤¦¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£]
-ja,dsgw,374,[RDN ¤ÇÁàºî¤ò¹Ô¤¦¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£]
-ja,dsgw,375,[´û¤Ë¸ºß¤·¤Æ¤¤¤Þ¤¹¡£]
-ja,dsgw,376,[¥ª¥Ö¥¸¥§¥¯¥È ¥¯¥é¥¹¤òÊѹ¹¤Ç¤­¤Þ¤»¤ó¡£]
-ja,dsgw,377,[·ë²Ì¤¬Â礭¤¹¤®¤Þ¤¹¡£]
-ja,dsgw,378,[Ê£¿ô¤Î¥µ¡¼¥Ð¤Ë±Æ¶Á¤·¤Þ¤¹¡£]
-ja,dsgw,379,[¸¶°øÉÔÌÀ¤Î¥¨¥é¡¼]
-ja,dsgw,380,[LDAP ¥µ¡¼¥Ð¤ËÀܳ¤Ç¤­¤Þ¤»¤ó¡£]
-ja,dsgw,381,[¥í¡¼¥«¥ë ¥¨¥é¡¼]
-ja,dsgw,382,[¥¨¥ó¥³¡¼¥É ¥¨¥é¡¼]
-ja,dsgw,383,[¥Ç¥³¡¼¥É ¥¨¥é¡¼]
-ja,dsgw,384,[¥¿¥¤¥à¥¢¥¦¥È]
-ja,dsgw,385,[ǧ¾ÚÊýË¡¤¬ÉÔÌÀ¤Ç¤¹¡£]
-ja,dsgw,386,[¸¡º÷¥Õ¥£¥ë¥¿¤¬ÉÔÀµ¤Ç¤¹¡£]
-ja,dsgw,387,[¥æ¡¼¥¶¤¬Áàºî¤ò¥­¥ã¥ó¥»¥ë¤·¤Þ¤·¤¿¡£]
-ja,dsgw,388,[LDAP ¥ë¡¼¥Á¥ó¤ËÂФ¹¤ë¥Ñ¥é¥á¡¼¥¿¤¬ÉÔÀµ¤Ç¤¹¡£]
-ja,dsgw,389,[¥á¥â¥êÉÔ­¤Ç¤¹¡£]
-ja,dsgw,390,[LDAP ¥µ¡¼¥Ð¤ËÀܳ¤Ç¤­¤Þ¤»¤ó¡£]
-ja,dsgw,391,[¤³¤Î¥Ð¡¼¥¸¥ç¥ó¤Î LDAP ¥×¥í¥È¥³¥ë¤Ç¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£]
-ja,dsgw,392,[Í׵ᤵ¤ì¤¿ LDAP ¥³¥ó¥È¥í¡¼¥ë¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£]
-ja,dsgw,393,[·ë²Ì¤¬ÊÖ¤µ¤ì¤Þ¤»¤ó¡£]
-ja,dsgw,394,[¤µ¤é¤Ë·ë²Ì¤¬ÊÖ¤µ¤ì¤Þ¤¹¡£]
-ja,dsgw,395,[¥¯¥é¥¤¥¢¥ó¥È¤¬¥ë¡¼¥×¤ò¸¡½Ð¤·¤Þ¤·¤¿¡£]
-ja,dsgw,396,[¥ì¥Õ¥§¥é¥ë ¥Û¥Ã¥× ¥ê¥ß¥Ã¥È¤òĶ²á¤·¤Þ¤·¤¿¡£]
-ja,frame,-1,[$DBT: frame in DB file v1 $]
-ja,frame,1,[<TITLE>¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£</TITLE><H1>¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£</H1> ¥ê¥¯¥¨¥¹¥È¤µ¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ò¸«¤Ä¤±¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£¥ê¥ó¥¯¤¬ÀÚ¤ì¤Æ¤¤¤ë¡¢¥ê¥¯¥¨¥¹¥È¤¬ÉÔÀµ³Î¡¢¥¢¥¯¥»¥¹¸¢¤¬Í¿¤¨¤é¤ì¤Æ¤¤¤Ê¤¤Åù¤Î²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£ ]
-ja,frame,2,[<A HREF="%s">»²¾È¤·¤Æ¤¤¤ë¥Ú¡¼¥¸</A>¤Î¾ðÊó¤ò¥µ¥¤¥È´ÉÍý¼Ô¤ËÃΤ餻¤Æ¤¯¤À¤µ¤¤¡£]
-ja,frame,3,[¤¢¤Ê¤¿¤Î¥Ö¥é¥¦¥¶¤¬Á÷¤Ã¤¿¥ê¥¯¥¨¥¹¥È¤ò¥×¥í¥¯¥· ¥µ¡¼¥Ð¤¬Íý²ò¤Ç¤­¤Þ¤»¤ó¡£]
-ja,frame,4,[ŬÀÚ¤Êǧ¾Ú¤Ï¥×¥í¥¯¥·¤¬´ÉÍý¤Î¤¿¤á¤ËɬÍפǤ¹¡£\n¤¢¤Ê¤¿¤Î¥Ö¥é¥¦¥¶¤Îǧ¾Ú¤Ï¼ºÇÔ¤·¤Þ¤·¤¿¡£]
-ja,frame,5,[¥æ¡¼¥¶Ì¾¤Îǧ¾Ú¤Ë¤Ï¥×¥í¥¯¥·¤òÍøÍѤ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£\n¤¢¤Ê¤¿¤Î¥Ö¥é¥¦¥¶¤Ï¥×¥í¥¯¥·¤Ë¤è¤ëǧ¾Ú¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£]
-ja,frame,6,[¥ê¥¯¥¨¥¹¥È¤µ¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ¹¤ë¥¢¥¯¥»¥¹¤Ï\n¥×¥í¥¯¥·¤ÎÀßÄê¾åµö¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£]
-ja,frame,7,[¥×¥í¥¯¥·¤Ï¤¢¤Ê¤¿¤Î¥ê¥¯¥¨¥¹¥È¤ò¼Â¹Ô¤¹¤ëºÝ¤Ë¥¨¥é¡¼¤òȯÀ¸¤·¤Þ¤·¤¿¡£\nÀßÄ꤬¸í¤Ã¤Æ¤¤¤ë²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£\n¥×¥í¥¯¥· ¥¨¥é¡¼ ¥í¥°¤Î¥á¥Ã¥»¡¼¥¸¤ò»²¾È¤¹¤ë¤è¤¦´ÉÍý¼Ô¤Ë°ÍÍꤷ¤Æ¤¯¤À¤µ¤¤¡£]
-ja,frame,8,[¥ê¥¯¥¨¥¹¥È¤µ¤ì¤¿ÆâÍÆ¤Ï¥×¥í¥¯¥·¤Ë¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£]
-ja,frame,9,[¥×¥í¥¯¥·¾å¤Ç¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£]
-ja,frame,10,[¤¢¤Ê¤¿¤Î¥Ö¥é¥¦¥¶¤¬Á÷¿®¤·¤¿¥ê¥¯¥¨¥¹¥È¤Ï¡¢¥µ¡¼¥Ð¤ËÍý²ò¤¹¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¤¤â¤Î¤Ç¤¹¡£]
-ja,frame,11,[ŬÀÚ¤Êǧ¾Ú¤Ï¤³¤Î¥¨¥ê¥¢¤Î´ÉÍý¤Î¤¿¤á¤ËɬÍפǤ¹¡£\n¤¢¤Ê¤¿¤Î¥Ö¥é¥¦¥¶¤Îǧ¾Ú¤Ï¼ºÇÔ¤·¤Þ¤·¤¿¡£]
-ja,frame,12,[¤¢¤Ê¤¿¤Î¥¯¥é¥¤¥¢¥ó¥È¤Ï¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ¹¤ë¥¢¥¯¥»¥¹¤òµö²Ä¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£]
-ja,frame,13,[¤³¤Î¥µ¡¼¥Ð¤Ï¥ê¥¯¥¨¥¹¥È¤Î½èÍýÃæ¤Ë¥¨¥é¡¼¤ËÁø¶ø¤·¤Þ¤·¤¿¡£¸í¤Ã¤¿ÀßÄ꤬¤Ê¤µ¤ì¤Æ¤¤¤ë²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£¥µ¡¼¥Ð¤Î¥¨¥é¡¼ ¥í¥°¤ò»²¾È¤¹¤ë¤è¤¦´ÉÍý¼Ô¤ËÏ¢Íí¤·¤Æ¤¯¤À¤µ¤¤¡£]
-ja,frame,14,[¥ê¥¯¥¨¥¹¥È¤µ¤ì¤¿ÆâÍƤϥµ¡¼¥Ð¤Ë¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó]
-ja,frame,15,[¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£]
-ja,frame,16,[¤¢¤Ê¤¿¤Î¥Ö¥é¥¦¥¶¤¬¥µ¡¼¥Ð¤ËÁ÷¤Ã¤¿¥ê¥¯¥¨¥¹¥È¤Ï¥µ¡¼¥Ð¤¬Íý²ò¤Ç¤­¤Ê¤¤¥ê¥¯¥¨¥¹¥È¤Ç¤¹¡£]
-ja,frame,17,[<HTML><HEAD><TITLE>%s</TITLE></HEAD><BODY><H1>%s</H1>\n¤³¤Î¥É¥­¥å¥á¥ó¥È¤Ï¿·¤·¤¤¾ì½ê¤Ë°ÜÆ°¤·¤Þ¤·¤¿¡£ <a href="%s"></a>. ¥É¥­¥å¥á¥ó¥È¤È¥Û¥Ã¥È¥ê¥¹¥È¤Î¹¹¿·¤ò¤·¤Æ¤¯¤À¤µ¤¤¡£</BODY></HTML>]
-ja,frame,18,[<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=euc-jp"><META HTTP-EQUIV="Content-Language" CONTENT="ja"><TITLE>%s</TITLE></HEAD>\n<BODY><H1>%s</H1>\n%s\n</BODY></HTML>]
-ja,frame,19,[process-uri-objects]
-ja,frame,20,[cannot find template %s]
-ja,frame,21,[process-uri-objects]
-ja,frame,22,[no partial path after object processing]
-ja,frame,23,[find-service]
-ja,frame,24,[invalid shexp %s]
-ja,frame,25,[find-service]
-ja,frame,26,[invalid shexp %s]
-ja,frame,27,[handle-processed]
-ja,frame,28,[no way to service request for %s]
-ja,frame,29,[finish-socks-request]
-ja,frame,30,[close failed (%s), csd=%d]
-ja,frame,31,[This beta software has expired.\n]
-ja,frame,32,[mr_accept(%d)]
-ja,frame,33,[Error issuing read on accept socket]
-ja,frame,34,[acb_accept_connection(%d)]
-ja,frame,35,[Error getting accept socket (%d)]
-ja,frame,36,[Error in accept! (%d, %s)]
-ja,frame,37,[Error creating new accept request]
-ja,frame,38,[accepted connection: %d (NSPR %d)]
-ja,frame,39,[Error creating new session structure]
-ja,frame,40,[accel_read_request()]
-ja,frame,41,[Error allocating request read buffer]
-ja,frame,42,[Error issuing async read request]
-ja,frame,43,[acb_read_request(%d, bytes %d)]
-ja,frame,44,[acb_read_req(1 session = %d)]
-ja,frame,45,[Error reading request (%d, %s)]
-ja,frame,46,[Client aborted connection]
-ja,frame,47,[Error reading request]
-ja,frame,48,[Error creating new request]
-ja,frame,49,[error occurred, closing %d, io was for %d]
-ja,frame,50,[accel_async_scan_headers()]
-ja,frame,51,[out of memory: accel_async_scan_headers]
-ja,frame,52,[out of memory: accel_async_scan_headers]
-ja,frame,53,[Error during async read (%d, %s)]
-ja,frame,54,[scan-headers reports: line too long]
-ja,frame,55,[scan-headers reports: too many headers]
-ja,frame,56,[Error reading headers]
-ja,frame,57,[scan-headers reports: header missing terminator (an empty line)]
-ja,frame,58,[scan-headers reports: header was empty]
-ja,frame,59,[̾Á°¤ËÃͤ¬¤¢¤ê¤Þ¤»¤ó¡§ "%s" ¹Ô]
-ja,frame,60,[accel_send_plain_file()]
-ja,frame,61,[accel_send_plain_file() - found request %d]
-ja,frame,62,[Parse headers lost the URI!]
-ja,frame,63,[accel_send_plain_file() - found uri %s]
-ja,frame,64,[accel_send_plain_file() - found in cache?]
-ja,frame,65,[malloc died!]
-ja,frame,66,[Error writing back file\n]
-ja,frame,67,[acb_send_plain_file(%d)]
-ja,frame,68,[Error writing in acb_send_plain_file (%d, %s)]
-ja,frame,69,[acb_close_connection(%d)]
-ja,frame,70,[Errored IO in acb_close_connection (%d, %s)]
-ja,frame,71,[Unable to close socket %d]
-ja,frame,72,[accel-cache-insert: Error allocating entry]
-ja,frame,73,[cache-init: server cache disabled]
-ja,frame,74,[accel_file_cache: Error initializing file cache]
-ja,frame,75,[accel_file_cache: Error creating cache]
-ja,frame,76,[accel_file_cache_init: CacheHashSize < %d, using %d]
-ja,frame,77,[accel_file_cache_init: CacheHashSize > %d, using %d]
-ja,frame,78,[accel_file_cache_init: MaxNumberOfCachedFiles < %d, using %d]
-ja,frame,79,[accel_file_cache_init: MaxNumberOfCachedFiles > %d, using %d]
-ja,frame,80,[accel_file_cache_init: MaxNumberOfOpenCachedFiles < %d, using %d]
-ja,frame,81,[accel_file_cache_init: MaxNumberOfOpenCachedFiles > %d, using %d]
-ja,frame,82,[accel_file_cache: Error initializing file cache]
-ja,frame,83,[file-cache: enabled = %s ]
-ja,frame,84,[on]
-ja,frame,85,[off]
-ja,frame,86,[file-cache: MaxNumberOfCachedFiles %d (0x%x)]
-ja,frame,87,[file-cache: CacheHashSize %d (0x%x)]
-ja,frame,88,[file-cache: MaxNumberOfOpenCachedFiles %d (0x%x)]
-ja,frame,89,[accel-cache-insert: Error allocating entry]
-ja,frame,90,[file-cache-cleanup: munmap failed (%s)]
-ja,frame,91,[file-cache-cleanup: found mmapped file \non system without mmap]
-ja,frame,92,[file_cache_init: MaxTotalCachedFileSize < %d, using %d]
-ja,frame,93,[file_cache_init: MaxTotalCachedFileSize > %d, using %d]
-ja,frame,94,[file cache using mmap flags 0x%x]
-ja,frame,95,[file cache using mmap prots 0x%x]
-ja,frame,96,[file-cache-init: could not create lock]
-ja,frame,97,[file-cache: unable to create temporary directory %s.\n]
-ja,frame,98,[file-cache: unable to create temporary directory %s.\n]
-ja,frame,99,[file-cache: GetTempPath() Cannot find temp directory to store file!]
-ja,frame,100,[file-cache-init: set max cached file size to %d]
-ja,frame,101,[file-cache-init: could not create lock]
-ja,frame,102,[file_cache_destroy()]
-ja,frame,103,[file-cache: Unable to get temp file name. Error %s]
-ja,frame,104,[file-cache: Unable to get temp file name. Error %s]
-ja,frame,105,[file-cache-insert: Error allocating entry]
-ja,frame,106,[file-cache-create: Error opening file %s (%s)]
-ja,frame,107,[file-cache-create: Error stat()ing file %s (%s)]
-ja,frame,108,[file-cache-create: Error mmap()ing file %s (%s)]
-ja,frame,109,[file-cache-create: malloc failure]
-ja,frame,110,[file-cache-create: error case failed to munmap(%d, %d) (%s)]
-ja,frame,111,[file-cache-valid: cannot stat %s]
-ja,frame,112,[dir change: invalidating %s (%d)]
-ja,frame,113,[file-cache: asynchronous file change notification failed.]
-ja,frame,114,[dir change: offset %d, action %d, len %d, name %s]
-ja,frame,115,[unable to check async file status]
-ja,frame,116,[ReadDirectoryChangesW failure- unable to continue watching %s. Error is %s]
-ja,frame,117,[file-cache-add-watch failure- unable to open directory %s. Error %s]
-ja,frame,118,[ReadDirectoryChangesW failure- unable to start watching %s. Error %s]
-ja,frame,119,[func_exec]
-ja,frame,120,[no handler function given for directive]
-ja,frame,121,[func_exec]
-ja,frame,122,[cannot find function named %s]
-ja,frame,123,[handle-request]
-ja,frame,124,[method without URI]
-ja,frame,125,[http-parse-request]
-ja,frame,126,[while scanning HTTP headers, %s]
-ja,frame,127,[handle-request]
-ja,frame,128,[read from %s failed, error is %s]
-ja,frame,129,[handle-request]
-ja,frame,130,[request too long]
-ja,frame,131,[start-http-response]
-ja,frame,132,[write failed (%s)]
-ja,frame,133,[start-http-response]
-ja,frame,134,[write failed (%s)]
-ja,frame,135,[http-status]
-ja,frame,136,[%d is not a valid HTTP status code]
-ja,frame,137,[finish-request]
-ja,frame,138,[close failed (%s)]
-ja,frame,139,[Unable to close socket for writing]
-ja,frame,140,[os has %d objects]
-ja,frame,141,[obj %d has no hash table at %d]
-ja,frame,142,[obj %d has no param]
-ja,frame,143,[obj %d name %s value %s]
-ja,frame,144,[.....directives %d.......]
-ja,frame,145,[.....directive %d]
-ja,frame,146,[.......instance %d]
-ja,frame,147,[...........param name %s value %s]
-ja,frame,148,[ClearConfigurationParameters:RegCreateKey %s]
-ja,frame,149,[ClearConfigurationParameters:RegEnumKey %s failed]
-ja,frame,150,[obj.conf line %d: error in filter file "%s" at line %d: %s]
-ja,frame,151,[obj.conf line %d: error in filter file "%s" at line %d: %s]
-ja,frame,152,[Unable to allocate Subject property list.\n]
-ja,frame,153,[Unable to set session ptr in Subject property list - error=%d\n]
-ja,frame,154,[Unable to set request ptr in Subject property list - error=%d\n]
-ja,frame,155,[file-cache-valid: cannot stat %s]
-ja,frame,156,[file-cache-create: Error stat()ing file %s (%s)]
-ja,httpdaemon,-1,[$DBT: httpdaemon in DB file v1 $]
-ja,httpdaemon,1,[Error in ConvertThreadToFiber]
-ja,httpdaemon,2,[Error in ConvertThreadToFiber]
-ja,httpdaemon,3,[Error in md_start_system]
-ja,httpdaemon,4,[Error in CreateFiber - idlefiber]
-ja,httpdaemon,5,[Error in GetQueuedCompletionStatus]
-ja,httpdaemon,6,[Error creating completion port]
-ja,httpdaemon,7,[Could not SetHandleNonInheritable (%s)]
-ja,httpdaemon,8,[Error accept/read new conn]
-ja,httpdaemon,9,[Error in Respond()]
-ja,httpdaemon,10,[Error in RespondCompleted()]
-ja,httpdaemon,11,[daemon: unable to fork new process (%s)\n]
-ja,httpdaemon,12,[daemon: setsid failed (%s)\n]
-ja,httpdaemon,13,[daemon: can't log pid to %s (%s)\n]
-ja,httpdaemon,14,[warning: could not set group id to %d (%s)\n]
-ja,httpdaemon,15,[warning: could not set user id to %d (%s)\n]
-ja,httpdaemon,16,[warning: daemon is running as super-user\n]
-ja,httpdaemon,17,[could not determine current user name\n]
-ja,httpdaemon,18,[error: chroot to %s failed (%s)\n]
-ja,httpdaemon,19,[WARNING! netscape executable and library have different versions.\n]
-ja,httpdaemon,20,[startup: listening to %s://%s, port %d as %s\n]
-ja,httpdaemon,21,[startup: listening to %s://%s, port %d as %s\n]
-ja,httpdaemon,22,[seminit failed (%s)\n]
-ja,httpdaemon,23,[Using single threaded accepts.]
-ja,httpdaemon,24,[Using multi threaded accepts.]
-ja,httpdaemon,25,[Using partial single threaded accepts.]
-ja,httpdaemon,26,[This machine has %d processors.]
-ja,httpdaemon,27,[Error calling thr_seconcurrency(%d)- (%s)]
-ja,httpdaemon,28,[Set conncurrency to %d.]
-ja,httpdaemon,29,[can't fork new process (%s)]
-ja,httpdaemon,30,[This beta software has expired.\n]
-ja,httpdaemon,31,[can't create IPC pipe (%s)]
-ja,httpdaemon,32,[write to wakeup pipe failed (%s)]
-ja,httpdaemon,33,[select thread miss]
-ja,httpdaemon,34,[startup failure: could not bind to port %d (%s)\n]
-ja,httpdaemon,35,[startup failure: could not bind to port %d, IP address %s (%s)\n]
-ja,libaccess,-1,[$DBT: libaccess in DB file v1 $]
-ja,libaccess,1,[basic-ncsa]
-ja,libaccess,2,[cannot open database %s]
-ja,libaccess,3,[basic-ncsa]
-ja,libaccess,4,[user %s password did not match database %s]
-ja,libaccess,5,[basic-ncsa]
-ja,libaccess,6,[cannot open connection to LDAP server on %s:%d]
-ja,libaccess,7,[basic-ncsa]
-ja,libaccess,8,[user %s password did not match LDAP on %s:%d]
-ja,libaccess,9,[acl-state]
-ja,libaccess,10,[missing realm]
-ja,libaccess,11,[Unable to allocate ACL List Hash\n]
-ja,libaccess,12,[ACLEvalBuildContext unable to PERM_MALLOC cache structure\n]
-ja,libaccess,13,[ACLEvalBuildContext unable to create hash table\n]
-ja,libaccess,14,[ACLEvalBuildContext unable to allocate ACE Entry\n]
-ja,libaccess,15,[ACLEvalBuildContext unable to allocate ACE entry\n]
-ja,libaccess,16,[ACLEvalBuildContext unable to allocate Boundary Entry\n]
-ja,libaccess,17,[ACLEvalBuildContext failed.\n]
-ja,libaccess,18,[ACL_EvalTestRights: an interim, absolute non-allow value was encountered. right=%s, value=%d\n]
-ja,libaccess,19,[LASDnsBuild unable to allocate hash table header\n]
-ja,libaccess,20,[LASDnsBuild unable to add key %s\n]
-ja,libaccess,21,[LASDnsBuild unable to add key %s\n]
-ja,libaccess,22,[LASDnsBuild unable to add key %s\n]
-ja,libaccess,23,[LASDnsBuild unable to add key %s\n]
-ja,libaccess,24,[LASDnsBuild unable to add key %s\n]
-ja,libaccess,25,[LAS DNS build received request for attribute %s\n]
-ja,libaccess,26,[LASDnsEval - illegal comparator %s\n]
-ja,libaccess,27,[LASDnsEval unable to allocate Context struct\n\n]
-ja,libaccess,28,[LASDnsEval unable to get session address %d\n]
-ja,libaccess,29,[LASDnsEval unable to get DNS - error=%s\n]
-ja,libaccess,30,[LAS Group Eval received request for attribute %s\n]
-ja,libaccess,31,[LASGroupEval - illegal comparator %s\n]
-ja,libaccess,32,[LASGroupEval - ran out of memory\n]
-ja,libaccess,33,[LASGroupEval unable to get session address %d\n]
-ja,libaccess,34,[LASGroupEval unable to get session address %d\n]
-ja,libaccess,35,[LASGroupEval - couldn't locate getter for auth-user\n]
-ja,libaccess,36,[LASGroupEval - Attribute getter for auth-user failed\n]
-ja,libaccess,37,[LASGroupEval - Attribute getter didn't set auth-user\n]
-ja,libaccess,38,[Check group membership of user "%s" for group "%s"\n]
-ja,libaccess,39,[LDAPU_SUCCESS for group "%s"\n]
-ja,libaccess,40,[LDAPU_FAILED for group "%s"\n]
-ja,libaccess,41,[LAS_EVAL_FALSE\n]
-ja,libaccess,42,[LAS_EVAL_TRUE\n]
-ja,libaccess,43,[LASIpTreeAlloc - no memory\n]
-ja,libaccess,44,[IP LAS unable to allocate tree node\n]
-ja,libaccess,45,[IP LAS unable to allocate tree node\n]
-ja,libaccess,46,[LAS IP build received request for attribute %s\n]
-ja,libaccess,47,[LASIpEval - illegal comparator %s\n]
-ja,libaccess,48,[LASIpEval unable to get session address - error=%s\n]
-ja,libaccess,49,[LASIpEval unable to allocate Context struct\n\n]
-ja,libaccess,50,[LASIpEval - reach 32 bits without conclusion value=%s]
-ja,libaccess,51,[LAS Program Eval received request for attribute %s\n]
-ja,libaccess,52,[LASProgramEval - illegal comparator %s\n]
-ja,libaccess,53,[LASProgram unable to get session address %d\n]
-ja,libaccess,54,[bin]
-ja,libaccess,55,[LASProgramEval: request not of type admin or bin, passing.\n]
-ja,libaccess,56,[LASProgramEval: check if program %s matches pattern %s.\n]
-ja,libaccess,57,[LASProgramEval: Invalid wildcard expression %s.\n]
-ja,libaccess,58,[LAS_EVAL_FALSE\n]
-ja,libaccess,59,[LAS_EVAL_TRUE\n]
-ja,libaccess,60,[Unexpected attribute in dayOfWeek - %s\n]
-ja,libaccess,61,[Illegal comparator for dayOfWeek - %s\n]
-ja,libaccess,62,[Unexpected attribute in timeOfDay - %s\n]
-ja,libaccess,63,[LAS User Eval received request for attribute %s\n]
-ja,libaccess,64,[LASUserEval - illegal comparator %s\n]
-ja,libaccess,65,[LASUserEval - ran out of memory\n]
-ja,libaccess,66,[LASUserEval unable to get session address %d\n]
-ja,libaccess,67,[LASUserEval unable to get session address %d\n]
-ja,libaccess,68,[LASGroupEval - couldn't locate getter for auth-user\n]
-ja,libaccess,69,[LASGroupEval - Attribute getter for auth-user failed\n]
-ja,libaccess,70,[LASGroupEval - Attribute getter didn't set auth-user\n]
-ja,libaccess,71,[Check if uid == user (i.e. check "%s" == "%s)"\n]
-ja,libaccess,72,[SUCCESS for user "%s"\n]
-ja,libaccess,73,[FAILED for user "%s"\n]
-ja,libaccess,74,[LAS_EVAL_FALSE\n]
-ja,libaccess,75,[LAS_EVAL_TRUE\n]
-ja,libaccess,76,[]
-ja,libaccess,77,[LASProgram unable to get request address - error=%s]
-ja,libaccess,78,[LASProgram rejecting request for program %s from pattern %s]
-ja,libaccess,79,[ACL_CacheFlush: unable to parse file "%s"\n]
-ja,libaccess,80,[ACL_CacheFlush: unable to concatenate ACL list "%s"\n]
-ja,libaccess,81,[ACL_CacheFlush: unable to open and process the magnus file "%s"\n]
-ja,libaccess,82,[Illegal comparator for timeOfDay - %s\n]
-ja,libaccess,83,[ACL_EvalBuildContext unable to create hash table\n]
-ja,libaccess,84,[ACL_EvalBuildContext unable to PERM_CALLOC cache structure\n]
-ja,libaccess,85,[ACL_EvalBuildContext unable to allocate ACE entry\n]
-ja,libaccess,86,[ACL_EvalBuildContext unable to allocate auth pointer array\n]
-ja,libaccess,87,[ACL_EvalBuildContext unable to allocate auth plist\n]
-ja,libaccess,88,[ACL_EvalTestRights: an interim, absolute non-allow value was encountered. right=%s, value=%s\n]
-ja,libaccess,89,[ACL_INTEvalTestRights: call to ACL_EvalBuildContext returned failure status\n]
-ja,libaccess,90,[ACL_ModuleRegister: module name is missing\n]
-ja,libaccess,91,[ACL_ModuleRegister: call to module init function returned a failed status\n]
-ja,libaccess,92,[ACL_GetAttribute: couldn't determine method for %s\n]
-ja,libaccess,93,[ACL_GetAttribute: couldn't locate getter for %s]
-ja,libaccess,94,[ACL_GetAttribute: attr getter failed to get %s]
-ja,libaccess,95,[ACL_GetAttribute: attr getter failed to get %s]
-ja,libaccess,96,[ACL_GetAttribute: All attribute getters declined for attr %s]
-ja,libaccess,97,[ACL_DatabaseRegister: dbtype for database "%s" is not defined yet!]
-ja,libaccess,98,[ACL_DatabaseRegister: database name is missing]
-ja,libaccess,99,[Error reading the DB Map File: %s. Reason: %s]
-ja,libaccess,100,[URL is missing for database %s]
-ja,libaccess,101,[Invalid property value pair for database %s]
-ja,libaccess,102,["default" database must be an LDAP database]
-ja,libaccess,103,[Multiple "default" databases are being registered]
-ja,libaccess,104,["default" LDAP database must be registered]
-ja,libaccess,105,[LASGroupEval unable to get database name - error= %s]
-ja,libaccess,106,[received invalid program expression %s]
-ja,libaccess,107,[parse_ldap_url: database url is missing]
-ja,libaccess,108,[parse_ldap_url: database name is missing]
-ja,libaccess,109,[parse_ldap_url: error in parsing ldap url. Reason: %s]
-ja,libaccess,110,[ldap password check: unable to get database name - error=%s]
-ja,libaccess,111,[ldap password check: unable to get parsed database %s]
-ja,libaccess,112,[ldap password check: couldn't initialize connection to LDAP. Reason: %s]
-ja,libaccess,113,[ldap password check: LDAP error: "%s"]
-ja,libaccess,114,[get_user_ismember_ldap unable to get database name - error=%s]
-ja,libaccess,115,[get_user_ismember_ldap unable to get parsed database %s]
-ja,libaccess,116,[ldap password check: couldn't initialize connection to LDAP. Reason: %s]
-ja,libaccess,117,[get_user_ismember_ldap: group %s does not exist]
-ja,libaccess,118,[get_user_ismember_ldap: LDAP error: "%s"]
-ja,libaccess,119,[ACL_LDAPDatabaseHandle: %s is not a registered database]
-ja,libaccess,120,[ACL_LDAPDatabaseHandle: %s is not an LDAP database]
-ja,libaccess,121,[ACL_LDAPDatabaseHandle: out of memory]
-ja,libaccess,122,[ACL_LDAPDatabaseHandle: couldn't initialize connection to LDAP. Reason: %s]
-ja,libaccess,123,[ACL_LDAPDatabaseHandle: couldn't bind to LDAP server. Reason: %s]
-ja,libaccess,124,[insufficient dynamic memory]
-ja,libaccess,125,[error opening file, %s: %s]
-ja,libaccess,126,[duplicate definition of %s]
-ja,libaccess,127,[file %s, line %s: duplicate definition of %s]
-ja,libaccess,128,[file %s, line %s: syntax error]
-ja,libaccess,129,[file %s, line %s: %s is undefined]
-ja,libaccess,130,[in acl %s, %s %s is undefined]
-ja,libaccess,131,[database %s: error accessing %s]
-ja,libaccess,132,[%s]
-ja,libaccess,133,[file %s, line %s: invalid syntax]
-ja,libaccess,134,[file %s, line %s: syntax error at "%s"]
-ja,libaccess,135,[realm %s is not defined]
-ja,libaccess,136,[error code = %d]
-ja,libaccess,137,[internal ACL error]
-ja,libaccess,138,[invalid argument]
-ja,libaccess,139,[ACL_DatabaseRegister: dbtype for database "%s" is not defined yet!]
-ja,libaccess,140,[couldn't determine dbtype from: %s]
-ja,libaccess,141,[Failed to register database %s]
-ja,libaccess,142,[ACL call returned failed status]
-ja,libaccess,143,[file %s: ACL IO error - %s]
-ja,libaccess,144,[acl_user_exists: ¥á¥â¥êÉÔ­¤Ç¤¹]
-ja,libaccess,145,[acl_user_exists: ¥æ¡¼¥¶¤¬¤â¤¦Â¸ºß¤·¤Þ¤»¤ó]
-ja,libaccess,146,[acl_user_exists: plist ¥¨¥é¡¼]
-ja,libadmin,-1,[$DBT: libadmin in DB file v1 $]
-ja,libadmin,1,[ Help ]
-ja,libadmin,2,[ OK ]
-ja,libadmin,3,[ Reset ]
-ja,libadmin,4,[ Done ]
-ja,libadmin,5,[ Cancel ]
-ja,libir,-1,[$DBT: libadmin in DB file v1 $]
-ja,libir,1,[An I/O error occurred before all form data could be read.]
diff --git a/ldap/admin/include/dsalib.h b/ldap/admin/include/dsalib.h
deleted file mode 100644
index 7383295d..00000000
--- a/ldap/admin/include/dsalib.h
+++ /dev/null
@@ -1,497 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-
-#ifndef __dsalib_h
-#define __dsalib_h
-
-#include <stdio.h>
-#include <time.h>
-#include <stdarg.h>
-#ifdef HPUX
-#include <limits.h> /* for PATH_MAX */
-#endif
-
-/* error types */
-#define DS_FILE_ERROR 0
-#define DS_MEMORY_ERROR 1
-#define DS_SYSTEM_ERROR 2
-#define DS_INCORRECT_USAGE 3
-#define DS_ELEM_MISSING 4
-#define DS_REGISTRY_DATABASE_ERROR 5
-#define DS_NETWORK_ERROR 6
-#define DS_GENERAL_FAILURE 7
-#define DS_WARNING 8
-
-/* The upper bound on error types */
-#define DS_MAX_ERROR 9
-
-/* The default error type (in case something goes wrong */
-#define DS_DEFAULT_ERROR 3
-
-#ifndef BIG_LINE
-#define BIG_LINE 1024
-#endif
-#ifndef PATH_MAX
-#if defined( _WIN32 )
-#define PATH_MAX _MAX_PATH
-#else
-#define PATH_MAX 256
-#endif /* _WIN32 */
-#endif /* PATH_MAX */
-#ifndef HTML_ERRCOLOR
-#define HTML_ERRCOLOR "#AA0000"
-#endif
-#ifndef CONTENT_NAME
-#define CONTENT_NAME "content"
-#endif
-
-/* config file/path info */
-#define DS_CONFIG_DIR "DS_CONFIG_DIR"
-#define DS_CONFIG_FILE "dse.ldif"
-#define DS_ORIGCONFIG_FILE "dse_original.ldif"
-#define PIDFILE "PIDFILE"
-
-#define DS_CONFIG_LOCKDIR "nsslapd-lockdir:"
-#define DS_CONFIG_ERRLOG "nsslapd-errorlog:"
-
-#ifdef XP_UNIX
-
-#define FILE_PATHSEP '/'
-#define FILE_PATHSEPP "/"
-#define FILE_PARENT "../"
-#define WSACleanup()
-
-#elif defined(XP_WIN32)
-
-#define FILE_PATHSEP '/'
-#define FILE_PATHSEPP "\\\\"
-#define FILE_PARENT "..\\"
-
-#endif /* XP_WIN32 */
-
-#define PATH_SIZE 1024
-#define ERR_SIZE 8192
-
-/*
- NT doesn't strictly need these, but the libadmin API which is emulated
- below uses them.
- */
-#define NEWSCRIPT_MODE 0755
-#define NEWFILE_MODE 0644
-#define NEWDIR_MODE 0755
-
-#if defined( XP_WIN32 )
-#define DS_EXPORT_SYMBOL __declspec( dllexport )
-#else
-#define DS_EXPORT_SYMBOL
-#endif
-
-#if defined( XP_WIN32 )
-#define ENQUOTE "\""
-#else
-#define ENQUOTE ""
-#endif
-
-#ifndef FILE_SEP
-#ifdef XP_WIN32
- #define FILE_SEP '\\'
-#else
- #define FILE_SEP '/'
-#endif
-#endif
-
-#if defined( XP_WIN32 )
- #define PATH_FOR_PLATFORM(_path) ds_unixtodospath(_path)
-#else
- #define PATH_FOR_PLATFORM(_path)
-#endif
-
-#define START_SCRIPT "start-slapd"
-#define RESTART_SCRIPT "restart-slapd"
-#define STOP_SCRIPT "stop-slapd"
-
-#if defined( XP_WIN32 )
-#define SLAPD_NAME "slapd"
-#else
-#define SLAPD_NAME "ns-slapd"
-#endif
-
-#define MOCHA_NAME "JavaScript"
-
-/*
- * Return values from ds_get_updown_status()
- */
-#define DS_SERVER_UP 1
-#define DS_SERVER_DOWN 0
-#define DS_SERVER_UNKNOWN -1
-/*
- * Return values from ds_bring_up_server()
- */
-#define DS_SERVER_ALREADY_UP -2
-#define DS_SERVER_ALREADY_DOWN -3
-#define DS_SERVER_PORT_IN_USE -4
-#define DS_SERVER_MAX_SEMAPHORES -5
-#define DS_SERVER_CORRUPTED_DB -6
-#define DS_SERVER_NO_RESOURCES -7
-#define DS_SERVER_COULD_NOT_START -8
-
-/*
- * Other return values
- */
-#define DS_UNKNOWN_ERROR -1
-#define DS_NO_SERVER_ROOT -10
-#define DS_CANNOT_EXEC -11
-#define DS_CANNOT_OPEN_STAT_FILE -12
-#define DS_NULL_PARAMETER -13
-#define DS_SERVER_MUST_BE_DOWN -14
-#define DS_CANNOT_OPEN_BACKUP_FILE -15
-#define DS_NOT_A_DIRECTORY -16
-#define DS_CANNOT_CREATE_DIRECTORY -17
-#define DS_CANNOT_OPEN_LDIF_FILE -18
-#define DS_IS_A_DIRECTORY -19
-#define DS_CANNOT_CREATE_FILE -20
-#define DS_UNDEFINED_VARIABLE -21
-#define DS_NO_SUCH_FILE -22
-#define DS_CANNOT_DELETE_FILE -23
-#define DS_UNKNOWN_SNMP_COMMAND -24
-#define DS_NON_NUMERIC_VALUE -25
-#define DS_NO_LOGFILE_NAME -26
-#define DS_CANNOT_OPEN_LOG_FILE -27
-#define DS_HAS_TOBE_READONLY_MODE -28
-#define DS_INVALID_LDIF_FILE -29
-
-/*
- * Types of config files.
- */
-#define DS_REAL_CONFIG 1
-#define DS_TMP_CONFIG 2
-
-/*
- * Maximum numeric value we will accept in admin interface
- * We may at some point need per-option bounds, but for now,
- * there's just one global maximum.
- */
-#define DS_MAX_NUMERIC_VALUE 4294967295 /* 2^32 - 1 */
-
-/* Use our own macro for rpt_err, so we can put our own error code in
- NMC_STATUS */
-#undef rpt_err
-#define rpt_err(CODE, STR1, STR2, STR3) \
- fprintf( stdout, "NMC_ErrInfo: %s\n", (STR1) ); \
- fprintf( stdout, "NMC_STATUS: %d\n", CODE )
-
-/*
- * Flags for ds_display_config()
- */
-#define DS_DISP_HRB 1 /* horizontal line to begin with */
-#define DS_DISP_HRE 2 /* horizontal line to end with */
-#define DS_DISP_TB 4 /* table begin */
-#define DS_DISP_TE 8 /* table end */
-#define DS_DISP_EOL 16 /* End Of Line */
-#define DS_DISP_NOMT 32 /* display only non empty */
-#define DS_DISP_NOIN 64 /* display with no input field */
-#define DS_DISP_HELP 128 /* display with a help button */
-#define DS_DISP_PLAIN 256 /* No table, no nothin */
-#define DS_SIMPLE (DS_DISP_EOL | DS_DISP_NOIN | DS_DISP_HELP)
-
-/*
- * dci_type for ds_cfg_info
- */
-#define DS_ATTR_STRING 1
-#define DS_ATTR_NUMBER 2
-#define DS_ATTR_ONOFF 3
-#define DS_ATTR_LIMIT 4 /* a number where -1 is displayed as blank */
-
-struct ds_cfg_info {
- char *dci_varname;
- char *dci_display;
- int dci_type;
- char *dci_help;
-};
-
-extern struct ds_cfg_info ds_cfg_info[];
-
-#define LDBM_DATA_SIZE 5
-
-/*ldbm specific backend information*/
-struct ldbm_data {
- char *tv[LDBM_DATA_SIZE][2]; /*type and value*/
-};
-
-
-/*
- * varname for ds_showparam()
- * NOTE: these must be kept in synch with the ds_cfg_info array defined
- * in ../lib/dsalib_conf.c
- */
-#define DS_LOGLEVEL 0
-#define DS_REFERRAL 1
-#define DS_AUDITFILE 2
-#define DS_LOCALHOST 3
-#define DS_PORT 4
-#define DS_SECURITY 5
-#define DS_SECURE_PORT 6
-#define DS_SSL3CIPHERS 7
-#define DS_PASSWDHASH 8
-#define DS_ACCESSLOG 9
-#define DS_ERRORLOG 10
-#define DS_ROOTDN 11
-#define DS_ROOTPW 12
-#define DS_SUFFIX 13
-#define DS_LOCALUSER 14
-#define DS_CFG_MAX 15 /* MUST be one greater than the last option */
-
-/* These control how long we wait for the server to start up or shutdown */
-#define SERVER_START_TIMEOUT 600 /* seconds */
-#define SERVER_STOP_TIMEOUT SERVER_START_TIMEOUT /* same as start timeout */
-
-typedef int (*DS_RM_RF_ERR_FUNC)(const char *path, const char *op, void *arg);
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-extern DS_EXPORT_SYMBOL char *ds_get_server_root();
-extern DS_EXPORT_SYMBOL char *ds_get_install_root();
-extern DS_EXPORT_SYMBOL char *ds_get_admserv_based_root();
-extern DS_EXPORT_SYMBOL void ds_log_debug_message(char *msg);
-extern DS_EXPORT_SYMBOL void ds_log_env(char **envp);
-extern DS_EXPORT_SYMBOL int ds_get_updown_status();
-extern DS_EXPORT_SYMBOL void ds_print_startstop(int stop);
-extern DS_EXPORT_SYMBOL int ds_bring_up_server_install(int verbose,
- char *root, char *errorlog);
-extern DS_EXPORT_SYMBOL int ds_bring_up_server(int verbose);
-extern DS_EXPORT_SYMBOL char *ds_get_server_name();
-extern DS_EXPORT_SYMBOL void ds_send_error(char *errstr, int print_errno);
-extern DS_EXPORT_SYMBOL void ds_send_status(char *str);
-extern DS_EXPORT_SYMBOL char *ds_get_cgi_var(char *cgi_var_name);
-extern DS_EXPORT_SYMBOL char *ds_get_cgi_var_simple(int index);
-extern DS_EXPORT_SYMBOL char *ds_get_cgi_multiple(char *cgi_var_name);
-extern DS_EXPORT_SYMBOL char *ds_get_errors_name();
-extern DS_EXPORT_SYMBOL char *ds_get_access_name();
-extern DS_EXPORT_SYMBOL char *ds_get_audit_name();
-extern DS_EXPORT_SYMBOL char *ds_get_logfile_name(int config_type);
-
-
-extern DS_EXPORT_SYMBOL int ds_bring_down_server();
-extern DS_EXPORT_SYMBOL void ds_print_server_status(int isrunning);
-extern DS_EXPORT_SYMBOL int ds_get_file_size(char *fileName);
-extern DS_EXPORT_SYMBOL void ds_display_tail(char *fileName, int timeOut,
- int startSeek, char *doneMsg, char *lastLine);
-extern DS_EXPORT_SYMBOL int ds_ldif2db_preserve(char *file);
-extern DS_EXPORT_SYMBOL int ds_ldif2db(char *file);
-extern DS_EXPORT_SYMBOL int ds_ldif2db_backend_subtree(char *file, char *backend, char *subtree);
-extern DS_EXPORT_SYMBOL int ds_db2ldif(char *file);
-extern DS_EXPORT_SYMBOL int ds_vlvindex(char **backendList, char **attrList);
-extern DS_EXPORT_SYMBOL int ds_addindex(char **attrList, char *backendName);
-extern DS_EXPORT_SYMBOL int ds_db2ldif_subtree(char *file, char *subtree);
-extern DS_EXPORT_SYMBOL char **ds_get_bak_dirs();
-extern DS_EXPORT_SYMBOL int ds_db2bak(char *file);
-extern DS_EXPORT_SYMBOL int ds_bak2db(char *file);
-extern DS_EXPORT_SYMBOL int ds_get_monitor(int frontend, char *port);
-extern DS_EXPORT_SYMBOL int ds_get_bemonitor(char *bemdn, char *port);
-extern DS_EXPORT_SYMBOL int ds_client_access(char *port, char *dn);
-extern DS_EXPORT_SYMBOL char **ds_get_config(int type);
-extern DS_EXPORT_SYMBOL char *ds_get_config_dir();
-extern DS_EXPORT_SYMBOL void ds_set_config_dir(char *config_dir);
-extern DS_EXPORT_SYMBOL char *ds_get_run_dir();
-extern DS_EXPORT_SYMBOL void ds_set_run_dir(char *run_dir);
-extern DS_EXPORT_SYMBOL char *ds_get_bak_dir();
-extern DS_EXPORT_SYMBOL void ds_set_bak_dir(char *bak_dir);
-extern DS_EXPORT_SYMBOL char *ds_get_pwenc(char *passwd_hash, char *password);
-extern DS_EXPORT_SYMBOL int ds_check_config(int type);
-extern DS_EXPORT_SYMBOL int ds_check_pw(char *pwhash, char *pwclear);
-extern DS_EXPORT_SYMBOL int ds_set_config(char *change_file_name);
-extern DS_EXPORT_SYMBOL char **ds_get_conf_from_file(FILE *conf);
-extern DS_EXPORT_SYMBOL void ds_display_config(char **ds_config);
-extern DS_EXPORT_SYMBOL char *ds_get_var_name(int varnum);
-extern DS_EXPORT_SYMBOL int ds_showparam(char **ds_config, int varname, int phase,
- int occurance, char *dispname, int size, int maxlength, unsigned flags,
- char *url);
-extern DS_EXPORT_SYMBOL void ds_show_pwmaxage(char *value);
-extern DS_EXPORT_SYMBOL void ds_show_pwhash(char *value);
-extern DS_EXPORT_SYMBOL char *ds_get_value(char **ds_config, char *parm, int phase, int occurance);
-extern DS_EXPORT_SYMBOL void ds_apply_cfg_changes(int param_list[], int changed);
-extern DS_EXPORT_SYMBOL int ds_commit_cfg_changes();
-extern DS_EXPORT_SYMBOL int ds_config_updated();
-extern DS_EXPORT_SYMBOL void ds_display_header(char *font_size, char *header);
-extern DS_EXPORT_SYMBOL void ds_display_message(char *font_size, char *header);
-extern DS_EXPORT_SYMBOL void ds_print_file_form(char *action, char *fileptr, char *full_fileptr);
-extern DS_EXPORT_SYMBOL char *ds_get_file_meaning(char *file);
-extern DS_EXPORT_SYMBOL void ds_print_file_name(char *fileptr);
-extern DS_EXPORT_SYMBOL int ds_file_exists(char *filename);
-extern DS_EXPORT_SYMBOL int ds_cp_file(char *sfile, char *dfile, int mode);
-extern DS_EXPORT_SYMBOL time_t ds_get_mtime(char *filename);
-extern DS_EXPORT_SYMBOL char *ds_get_config_value( int option );
-extern DS_EXPORT_SYMBOL char **ds_get_file_list( char *dir );
-extern DS_EXPORT_SYMBOL char *ds_get_tmp_dir();
-extern DS_EXPORT_SYMBOL void ds_unixtodospath(char *szText);
-extern DS_EXPORT_SYMBOL void ds_timetofname(char *szText);
-extern DS_EXPORT_SYMBOL void ds_dostounixpath(char *szText);
-extern DS_EXPORT_SYMBOL int ds_saferename(char *szSrc, char *szTarget);
-extern DS_EXPORT_SYMBOL char *get_specific_help_button(char *help_link,
- char *dispname, char *helpinfo);
-
-/* Change the DN to a canonical format (in place); return DN. */
-extern DS_EXPORT_SYMBOL char* dn_normalize (char* DN);
-
-/* Change the DN to a canonical format (in place) and convert to v3; return DN. */
-extern DS_EXPORT_SYMBOL char* dn_normalize_convert (char* DN);
-
-/* if dn contains an unescaped quote return true */
-extern DS_EXPORT_SYMBOL int ds_dn_uses_LDAPv2_quoting(const char *dn);
-
-/* Return a copy of the DN, but with optional whitespace inserted. */
-extern DS_EXPORT_SYMBOL char* ds_dn_expand (char* DN);
-
-/* Return the value if it can be stored 'as is' in a config file.
- If it requires enquoting, allocate and return its enquoted form.
- The caller should free() the returned pointer iff it's != value.
- On Windows, we don't want to double up on "\" characters in filespecs,
- so we need to pass in the value type */
-extern DS_EXPORT_SYMBOL char* ds_enquote_config_value (int paramnum, char* value);
-
-/*
- * Bring up a javascript alert.
- */
-extern DS_EXPORT_SYMBOL void ds_alert_user(char *header, char *message);
-
-/* Construct and return the DN that corresponds to the give DNS name.
- The caller should free() the returned pointer. */
-extern DS_EXPORT_SYMBOL char* ds_DNS_to_DN (char* DNS);
-
-/* Construct and return the DN of the LDAP server's own entry.
- The caller must NOT free() the returned pointer. */
-extern DS_EXPORT_SYMBOL char* ds_get_config_DN (char** ds_config);
-
-/* Encode characters, as described in RFC 1738 section 2.2,
- if they're 'unsafe' (as defined in RFC 1738), or '?' or
- <special> (as defined in RFC 1779).
- The caller should free() the returned pointer. */
-extern DS_EXPORT_SYMBOL char* ds_URL_encode (const char*);
-
-/* Decode characters, as described in RFC 1738 section 2.2.
- The caller should free() the returned pointer. */
-extern DS_EXPORT_SYMBOL char* ds_URL_decode (const char*);
-
-/* Encode all characters, even if 'safe' */
-extern DS_EXPORT_SYMBOL char* ds_encode_all (const char*);
-
-/* Change the effective UID and GID of this process to
- those associated with the given localuser (if any). */
-extern DS_EXPORT_SYMBOL char* ds_become_localuser_name (char* localuser);
-
-/* Change the effective UID and GID of this process to
- those associated with ds_config's localuser (if any). */
-extern DS_EXPORT_SYMBOL char* ds_become_localuser (char** ds_config);
-
-/* Change the effective UID and GID of this process back to
- what they were before calling ds_become_localuser(). */
-extern DS_EXPORT_SYMBOL char* ds_become_original();
-
-extern DS_EXPORT_SYMBOL char* ds_makeshort(char *filepath);
-
-extern DS_EXPORT_SYMBOL int ds_search_file(char *filename, char *searchstring, char **returnstring);
-
-/* Begin parsing a POST in a CGI context */
-extern DS_EXPORT_SYMBOL int ds_post_begin(FILE *input);
-
-/* Begin parsing a GET in a CGI context */
-extern DS_EXPORT_SYMBOL void ds_get_begin(char *query_string);
-
-/* Display an error to the user and exit from a CGI */
-extern DS_EXPORT_SYMBOL void ds_report_error(int type, char *errmsg, char *details);
-
-/* Display a warning to the user */
-extern DS_EXPORT_SYMBOL void ds_report_warning(int type, char *errmsg, char *details);
-
-/* These functions are used by the program to alter the output behaviour
-if not executing in a CGI context */
-extern DS_EXPORT_SYMBOL int ds_get_formatted_output(void);
-extern DS_EXPORT_SYMBOL void ds_set_formatted_output(int val);
-
-/* return the value of a CGI variable */
-extern DS_EXPORT_SYMBOL char *ds_a_get_cgi_var(char *varname, char *elem_id, char *bongmsg);
-
-/* return a multi-valued CGI variable */
-extern DS_EXPORT_SYMBOL char **ds_a_get_cgi_multiple(char *varname, char *elem_id, char *bongmsg);
-
-/* open an html file */
-extern DS_EXPORT_SYMBOL FILE *ds_open_html_file(char *filename);
-
-/* show a message to be parsed by the non-HTML front end */
-extern DS_EXPORT_SYMBOL void ds_show_message(const char *message);
-
-/* show a key/value pair to be parsed by the non-HTML front end */
-extern DS_EXPORT_SYMBOL void ds_show_key_value(char *key, char *value);
-
-extern DS_EXPORT_SYMBOL void ds_submit(char *helptarget) ;
-extern DS_EXPORT_SYMBOL char *ds_get_helpbutton(char *topic);
-
-extern DS_EXPORT_SYMBOL void alter_startup_line(char *startup_line);
-
-extern DS_EXPORT_SYMBOL int ds_dir_exists(char *fn);
-extern DS_EXPORT_SYMBOL int ds_mkdir(char *dir, int mode);
-extern DS_EXPORT_SYMBOL char *ds_mkdir_p(char *dir, int mode);
-extern DS_EXPORT_SYMBOL char *ds_salted_sha1_pw_enc (char* pwd);
-extern DS_EXPORT_SYMBOL char * ds_escape_for_shell( char *s );
-
-extern DS_EXPORT_SYMBOL char **ds_string_to_vec(char *s);
-
-extern DS_EXPORT_SYMBOL char *ds_system_errmsg(void);
-
-extern DS_EXPORT_SYMBOL int ds_exec_and_report(char *cmd);
-
-/* remove a directory hierarchy - if the error function is given, it will be called upon
- error (e.g. directory not readable, cannot remove file, etc.) - if the callback function
- returns 0, this means to abort the removal, otherwise, continue
-*/
-extern DS_EXPORT_SYMBOL int ds_rm_rf(const char *dir, DS_RM_RF_ERR_FUNC ds_rm_rf_err_func, void *arg);
-/*
- remove a registry key and report an error message if unsuccessful
-*/
-extern DS_EXPORT_SYMBOL int ds_remove_reg_key(void *base, const char *format, ...);
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __dsalib_h */
diff --git a/ldap/admin/include/dsalib_pw.h b/ldap/admin/include/dsalib_pw.h
deleted file mode 100644
index a849826f..00000000
--- a/ldap/admin/include/dsalib_pw.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-
-#ifndef __dsalib_pw_h
-#define __dsalib_pw_h
-
-extern DS_EXPORT_SYMBOL void dsparm_help_button(char *var_name, char *dispname,
- char *helpinfo);
-extern DS_EXPORT_SYMBOL LDAP* bind_as_root (char** cfg, char* rootdn,
- char* rootpw);
-extern DS_EXPORT_SYMBOL void get_pw_policy(char*** pValue, char** cfg);
-extern DS_EXPORT_SYMBOL void ds_showpw( char** cfg);
-
-#endif /* __dsalib_pw_h */
diff --git a/ldap/admin/include/dsalib_schema.h b/ldap/admin/include/dsalib_schema.h
deleted file mode 100644
index 0ab7fe87..00000000
--- a/ldap/admin/include/dsalib_schema.h
+++ /dev/null
@@ -1,292 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-/*
- * Routines to parse schema LDIF
- *
- * -atom
- *
- */
-
-#ifndef __DSALIB_SCHEMA_H
-#define __DSALIB_SCHEMA_H__
-
-
-
-/************************************************************************
-
- BNF for attributes and objectclasses:
-
- AttributeTypeDescription = "(" whsp
- numericoid whsp ; AttributeType identifier
- [ "NAME" qdescrs ] ; name used in AttributeType
- [ "DESC" qdstring ] ; description
- [ "OBSOLETE" whsp ]
- [ "SUP" woid ] ; derived from this other
- ; AttributeType
- [ "EQUALITY" woid ; Matching Rule name
- [ "ORDERING" woid ; Matching Rule name
- [ "SUBSTR" woid ] ; Matching Rule name
- [ "SYNTAX" whsp noidlen whsp ] ; see section 4.3
- [ "SINGLE-VALUE" whsp ] ; default multi-valued
- [ "COLLECTIVE" whsp ] ; default not collective
- [ "NO-USER-MODIFICATION" whsp ]; default user modifiable
- [ "USAGE" whsp AttributeUsage ]; default user applications
- whsp ")"
-
-
-
- ObjectClassDescription = "(" whsp
- numericoid whsp ; ObjectClass identifier
- [ "NAME" qdescrs ]
- [ "DESC" qdstring ]
- [ "OBSOLETE" whsp ]
- [ "SUP" oids ] ; Superior ObjectClasses
- [ ( "ABSTRACT" / "STRUCTURAL" / "AUXILIARY" ) whsp ]
- ; default structural
- [ "MUST" oids ] ; AttributeTypes
- [ "MAY" oids ] ; AttributeTypes
- whsp ")"
-
-
-************************************************************************/
-
-
-/*
- * ds_check_valid_oid: check to see if an oid is valid.
- * Oids should only contain digits and dots.
- *
- * returns 1 if valid, 0 if not
- */
-
-DS_EXPORT_SYMBOL int ds_check_valid_oid (char *oid);
-
-
-/*
- * ds_check_valid_name: check to see if an attribute name or an objectclass
- * name is valid. A valid name contains only digits, letters, or hyphens
- *
- * returns 1 if valid, 0 if not
- *
- */
-
-DS_EXPORT_SYMBOL int ds_check_valid_name (char *name);
-
-/*
- * ds_get_oc_desc:
- *
- * Input : pointer to string containing an ObjectClassDescription
- * Returns : pointer to string containing objectclass DESC
- *
- * The caller must free the return value
- *
- */
-
-DS_EXPORT_SYMBOL char * ds_get_oc_desc (char *oc);
-
-
-/*
- * ds_get_oc_name:
- *
- * Input : pointer to string containing an ObjectClassDescription
- * Returns: pointer to string containing objectclass name.
- *
- * The caller must free the return value
- *
- */
-
-DS_EXPORT_SYMBOL char *ds_get_oc_name (char *o);
-
-
-/*
- * ds_get_attr_name:
- *
- * Input : pointer to string containing an AttributeTypeDescription
- * Returns: pointer to string containing an attribute name.
- *
- * The caller must free the return value
- *
- */
-
-DS_EXPORT_SYMBOL char *ds_get_attr_name (char *a);
-
-
-
-/*
- * ds_get_oc_superior:
- *
- * Input : pointer to string containing an ObjectClassDescription
- * Returns: pointer to string containing the objectclass's SUP (superior/parent)
- * objectclass
- *
- * The caller must free the return value
- *
- */
-
-DS_EXPORT_SYMBOL char *ds_get_oc_superior (char *o);
-
-
-/*
- * ds_get_attr_desc:
- *
- * Input : Pointer to string containing an AttributeTypeDescription
- * Returns: Pointer to string containing the attribute's description
- *
- * The caller must free the return value
- *
- */
-
-DS_EXPORT_SYMBOL char *ds_get_attr_desc (char *a);
-
-
-/*
- * ds_get_attr_syntax:
- *
- * Input: Pointer to string containing an AttributeTypeDescription
- * Returns: Pointer to string containing the attribute's syntax
- *
- * The caller must free the return value
- *
- */
-
-DS_EXPORT_SYMBOL char *ds_get_attr_syntax (char *a);
-
-
-/*
- * ds_get_attr_oid:
- *
- * Input : Pointer to string containing an AttributeTypeDescription
- * Returns: Pointer to string containing an attribute's oid
- *
- * The caller must free the return value
- *
- */
-DS_EXPORT_SYMBOL char *ds_get_attr_oid (char *a);
-
-
-/*
- * ds_get_attr_name:
- *
- * Input : Pointer to string containing an AttributeTypeDescription
- * Returns: Pointer to string containing the attribute's name
- *
- * The caller must free the return value
- *
- */
-
-DS_EXPORT_SYMBOL char *ds_get_attr_name (char *a);
-
-
-
-/*
- * syntax_oid_to_english: convert an attribute syntax oid to something more
- * human readable
- *
- * Input : string containing numeric OID for a attribute syntax
- * Returns: Human readable string
- */
-
-
-DS_EXPORT_SYMBOL char *syntax_oid_to_english (char *oid);
-
-
-/* StripSpaces: Remove all leading and trailing spaces from a string */
-
-DS_EXPORT_SYMBOL char *StripSpaces (char **s);
-
-
-/* ds_print_required_attrs:
- *
- * input: pointer to string containing an ObjectClassDescription
- *
- * prints JavaScript array containing the required attributes of an objectclass
- * The array name is oc_<objectclass name>_requires
- */
-
-DS_EXPORT_SYMBOL void ds_print_required_attrs (char *o);
-
-
-/* ds_print_allowed_attrs:
- *
- * input: pointer to string containing an ObjectClassDescription
- *
- * prints JavaScript array containing the allowed attributes of an objectclass
- * The array name is oc_<objectclass name>_allows
- */
-DS_EXPORT_SYMBOL void ds_print_allowed_attrs (char *o);
-
-
-/* ds_print_oc_oid:
- *
- * input: pointer to string containing an ObjectClassDescription
- *
- * prints JavaScript string containing an objectclass oid
- * The variable name is oc_<objectclass name>_oid
- */
-
-DS_EXPORT_SYMBOL void ds_print_oc_oid (char *o);
-
-/* ds_print_oc_superior:
- *
- * input: pointer to string containing an ObjectClassDescription
- *
- * prints JavaScript string containing an objectclass superior
- * The variable name is oc_<objectclass name>_superior
- */
-
-DS_EXPORT_SYMBOL void ds_print_oc_superior (char *o);
-
-
-/* underscore2hyphen:
- * transform underscores to hyphens in a string
- */
-
-DS_EXPORT_SYMBOL char *underscore2hyphen (char *src);
-
-/* hyphen2underscore:
- * transform hyphens to underscores in a string
- */
-
-DS_EXPORT_SYMBOL char *hyphen2underscore (char *src);
-
-
-#endif /* __DSALIB_SCHEMA_H__ */
diff --git a/ldap/admin/include/nterrors.h b/ldap/admin/include/nterrors.h
deleted file mode 100644
index 255cac13..00000000
--- a/ldap/admin/include/nterrors.h
+++ /dev/null
@@ -1,765 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-/* DO NOT EDIT THIS FILE - it is automatically generated */
-
-struct _NtError {
- int ErrorNumber;
- char *ErrorString;
- struct _NtError *next;
-} ;
-
-typedef struct _NtError NtError;
-
-NtError NtErrorStrings[] = {
-{ 0 , "ERROR_SUCCESS" },
-{ 0 , "NO_ERROR" },
-{ 1 , "ERROR_INVALID_FUNCTION" },
-{ 2 , "ERROR_FILE_NOT_FOUND" },
-{ 3 , "ERROR_PATH_NOT_FOUND" },
-{ 4 , "ERROR_TOO_MANY_OPEN_FILES" },
-{ 5 , "ERROR_ACCESS_DENIED" },
-{ 6 , "ERROR_INVALID_HANDLE" },
-{ 7 , "ERROR_ARENA_TRASHED" },
-{ 8 , "ERROR_NOT_ENOUGH_MEMORY" },
-{ 9 , "ERROR_INVALID_BLOCK" },
-{ 10 , "ERROR_BAD_ENVIRONMENT" },
-{ 11 , "ERROR_BAD_FORMAT" },
-{ 12 , "ERROR_INVALID_ACCESS" },
-{ 13 , "ERROR_INVALID_DATA" },
-{ 14 , "ERROR_OUTOFMEMORY" },
-{ 15 , "ERROR_INVALID_DRIVE" },
-{ 16 , "ERROR_CURRENT_DIRECTORY" },
-{ 17 , "ERROR_NOT_SAME_DEVICE" },
-{ 18 , "ERROR_NO_MORE_FILES" },
-{ 19 , "ERROR_WRITE_PROTECT" },
-{ 20 , "ERROR_BAD_UNIT" },
-{ 21 , "ERROR_NOT_READY" },
-{ 22 , "ERROR_BAD_COMMAND" },
-{ 23 , "ERROR_CRC" },
-{ 24 , "ERROR_BAD_LENGTH" },
-{ 25 , "ERROR_SEEK" },
-{ 26 , "ERROR_NOT_DOS_DISK" },
-{ 27 , "ERROR_SECTOR_NOT_FOUND" },
-{ 28 , "ERROR_OUT_OF_PAPER" },
-{ 29 , "ERROR_WRITE_FAULT" },
-{ 30 , "ERROR_READ_FAULT" },
-{ 31 , "ERROR_GEN_FAILURE" },
-{ 32 , "ERROR_SHARING_VIOLATION" },
-{ 33 , "ERROR_LOCK_VIOLATION" },
-{ 34 , "ERROR_WRONG_DISK" },
-{ 36 , "ERROR_SHARING_BUFFER_EXCEEDED" },
-{ 38 , "ERROR_HANDLE_EOF" },
-{ 39 , "ERROR_HANDLE_DISK_FULL" },
-{ 50 , "ERROR_NOT_SUPPORTED" },
-{ 51 , "ERROR_REM_NOT_LIST" },
-{ 52 , "ERROR_DUP_NAME" },
-{ 53 , "ERROR_BAD_NETPATH" },
-{ 54 , "ERROR_NETWORK_BUSY" },
-{ 55 , "ERROR_DEV_NOT_EXIST" },
-{ 56 , "ERROR_TOO_MANY_CMDS" },
-{ 57 , "ERROR_ADAP_HDW_ERR" },
-{ 58 , "ERROR_BAD_NET_RESP" },
-{ 59 , "ERROR_UNEXP_NET_ERR" },
-{ 60 , "ERROR_BAD_REM_ADAP" },
-{ 61 , "ERROR_PRINTQ_FULL" },
-{ 62 , "ERROR_NO_SPOOL_SPACE" },
-{ 63 , "ERROR_PRINT_CANCELLED" },
-{ 64 , "ERROR_NETNAME_DELETED" },
-{ 65 , "ERROR_NETWORK_ACCESS_DENIED" },
-{ 66 , "ERROR_BAD_DEV_TYPE" },
-{ 67 , "ERROR_BAD_NET_NAME" },
-{ 68 , "ERROR_TOO_MANY_NAMES" },
-{ 69 , "ERROR_TOO_MANY_SESS" },
-{ 70 , "ERROR_SHARING_PAUSED" },
-{ 71 , "ERROR_REQ_NOT_ACCEP" },
-{ 72 , "ERROR_REDIR_PAUSED" },
-{ 80 , "ERROR_FILE_EXISTS" },
-{ 82 , "ERROR_CANNOT_MAKE" },
-{ 83 , "ERROR_FAIL_I24" },
-{ 84 , "ERROR_OUT_OF_STRUCTURES" },
-{ 85 , "ERROR_ALREADY_ASSIGNED" },
-{ 86 , "ERROR_INVALID_PASSWORD" },
-{ 87 , "ERROR_INVALID_PARAMETER" },
-{ 88 , "ERROR_NET_WRITE_FAULT" },
-{ 89 , "ERROR_NO_PROC_SLOTS" },
-{ 100 , "ERROR_TOO_MANY_SEMAPHORES" },
-{ 101 , "ERROR_EXCL_SEM_ALREADY_OWNED" },
-{ 102 , "ERROR_SEM_IS_SET" },
-{ 103 , "ERROR_TOO_MANY_SEM_REQUESTS" },
-{ 104 , "ERROR_INVALID_AT_INTERRUPT_TIME" },
-{ 105 , "ERROR_SEM_OWNER_DIED" },
-{ 106 , "ERROR_SEM_USER_LIMIT" },
-{ 107 , "ERROR_DISK_CHANGE" },
-{ 108 , "ERROR_DRIVE_LOCKED" },
-{ 109 , "ERROR_BROKEN_PIPE" },
-{ 110 , "ERROR_OPEN_FAILED" },
-{ 111 , "ERROR_BUFFER_OVERFLOW" },
-{ 112 , "ERROR_DISK_FULL" },
-{ 113 , "ERROR_NO_MORE_SEARCH_HANDLES" },
-{ 114 , "ERROR_INVALID_TARGET_HANDLE" },
-{ 117 , "ERROR_INVALID_CATEGORY" },
-{ 118 , "ERROR_INVALID_VERIFY_SWITCH" },
-{ 119 , "ERROR_BAD_DRIVER_LEVEL" },
-{ 120 , "ERROR_CALL_NOT_IMPLEMENTED" },
-{ 121 , "ERROR_SEM_TIMEOUT" },
-{ 122 , "ERROR_INSUFFICIENT_BUFFER" },
-{ 123 , "ERROR_INVALID_NAME" },
-{ 124 , "ERROR_INVALID_LEVEL" },
-{ 125 , "ERROR_NO_VOLUME_LABEL" },
-{ 126 , "ERROR_MOD_NOT_FOUND" },
-{ 127 , "ERROR_PROC_NOT_FOUND" },
-{ 128 , "ERROR_WAIT_NO_CHILDREN" },
-{ 129 , "ERROR_CHILD_NOT_COMPLETE" },
-{ 130 , "ERROR_DIRECT_ACCESS_HANDLE" },
-{ 131 , "ERROR_NEGATIVE_SEEK" },
-{ 132 , "ERROR_SEEK_ON_DEVICE" },
-{ 133 , "ERROR_IS_JOIN_TARGET" },
-{ 134 , "ERROR_IS_JOINED" },
-{ 135 , "ERROR_IS_SUBSTED" },
-{ 136 , "ERROR_NOT_JOINED" },
-{ 137 , "ERROR_NOT_SUBSTED" },
-{ 138 , "ERROR_JOIN_TO_JOIN" },
-{ 139 , "ERROR_SUBST_TO_SUBST" },
-{ 140 , "ERROR_JOIN_TO_SUBST" },
-{ 141 , "ERROR_SUBST_TO_JOIN" },
-{ 142 , "ERROR_BUSY_DRIVE" },
-{ 143 , "ERROR_SAME_DRIVE" },
-{ 144 , "ERROR_DIR_NOT_ROOT" },
-{ 145 , "ERROR_DIR_NOT_EMPTY" },
-{ 146 , "ERROR_IS_SUBST_PATH" },
-{ 147 , "ERROR_IS_JOIN_PATH" },
-{ 148 , "ERROR_PATH_BUSY" },
-{ 149 , "ERROR_IS_SUBST_TARGET" },
-{ 150 , "ERROR_SYSTEM_TRACE" },
-{ 151 , "ERROR_INVALID_EVENT_COUNT" },
-{ 152 , "ERROR_TOO_MANY_MUXWAITERS" },
-{ 153 , "ERROR_INVALID_LIST_FORMAT" },
-{ 154 , "ERROR_LABEL_TOO_LONG" },
-{ 155 , "ERROR_TOO_MANY_TCBS" },
-{ 156 , "ERROR_SIGNAL_REFUSED" },
-{ 157 , "ERROR_DISCARDED" },
-{ 158 , "ERROR_NOT_LOCKED" },
-{ 159 , "ERROR_BAD_THREADID_ADDR" },
-{ 160 , "ERROR_BAD_ARGUMENTS" },
-{ 161 , "ERROR_BAD_PATHNAME" },
-{ 162 , "ERROR_SIGNAL_PENDING" },
-{ 164 , "ERROR_MAX_THRDS_REACHED" },
-{ 167 , "ERROR_LOCK_FAILED" },
-{ 170 , "ERROR_BUSY" },
-{ 173 , "ERROR_CANCEL_VIOLATION" },
-{ 174 , "ERROR_ATOMIC_LOCKS_NOT_SUPPORTED" },
-{ 180 , "ERROR_INVALID_SEGMENT_NUMBER" },
-{ 182 , "ERROR_INVALID_ORDINAL" },
-{ 183 , "ERROR_ALREADY_EXISTS" },
-{ 186 , "ERROR_INVALID_FLAG_NUMBER" },
-{ 187 , "ERROR_SEM_NOT_FOUND" },
-{ 188 , "ERROR_INVALID_STARTING_CODESEG" },
-{ 189 , "ERROR_INVALID_STACKSEG" },
-{ 190 , "ERROR_INVALID_MODULETYPE" },
-{ 191 , "ERROR_INVALID_EXE_SIGNATURE" },
-{ 192 , "ERROR_EXE_MARKED_INVALID" },
-{ 193 , "ERROR_BAD_EXE_FORMAT" },
-{ 194 , "ERROR_ITERATED_DATA_EXCEEDS_64k" },
-{ 195 , "ERROR_INVALID_MINALLOCSIZE" },
-{ 196 , "ERROR_DYNLINK_FROM_INVALID_RING" },
-{ 197 , "ERROR_IOPL_NOT_ENABLED" },
-{ 198 , "ERROR_INVALID_SEGDPL" },
-{ 199 , "ERROR_AUTODATASEG_EXCEEDS_64k" },
-{ 200 , "ERROR_RING2SEG_MUST_BE_MOVABLE" },
-{ 201 , "ERROR_RELOC_CHAIN_XEEDS_SEGLIM" },
-{ 202 , "ERROR_INFLOOP_IN_RELOC_CHAIN" },
-{ 203 , "ERROR_ENVVAR_NOT_FOUND" },
-{ 205 , "ERROR_NO_SIGNAL_SENT" },
-{ 206 , "ERROR_FILENAME_EXCED_RANGE" },
-{ 207 , "ERROR_RING2_STACK_IN_USE" },
-{ 208 , "ERROR_META_EXPANSION_TOO_LONG" },
-{ 209 , "ERROR_INVALID_SIGNAL_NUMBER" },
-{ 210 , "ERROR_THREAD_1_INACTIVE" },
-{ 212 , "ERROR_LOCKED" },
-{ 214 , "ERROR_TOO_MANY_MODULES" },
-{ 215 , "ERROR_NESTING_NOT_ALLOWED" },
-{ 230 , "ERROR_BAD_PIPE" },
-{ 231 , "ERROR_PIPE_BUSY" },
-{ 232 , "ERROR_NO_DATA" },
-{ 233 , "ERROR_PIPE_NOT_CONNECTED" },
-{ 234 , "ERROR_MORE_DATA" },
-{ 240 , "ERROR_VC_DISCONNECTED" },
-{ 254 , "ERROR_INVALID_EA_NAME" },
-{ 255 , "ERROR_EA_LIST_INCONSISTENT" },
-{ 259 , "ERROR_NO_MORE_ITEMS" },
-{ 266 , "ERROR_CANNOT_COPY" },
-{ 267 , "ERROR_DIRECTORY" },
-{ 275 , "ERROR_EAS_DIDNT_FIT" },
-{ 276 , "ERROR_EA_FILE_CORRUPT" },
-{ 277 , "ERROR_EA_TABLE_FULL" },
-{ 278 , "ERROR_INVALID_EA_HANDLE" },
-{ 282 , "ERROR_EAS_NOT_SUPPORTED" },
-{ 288 , "ERROR_NOT_OWNER" },
-{ 298 , "ERROR_TOO_MANY_POSTS" },
-{ 299 , "ERROR_PARTIAL_COPY" },
-{ 317 , "ERROR_MR_MID_NOT_FOUND" },
-{ 487 , "ERROR_INVALID_ADDRESS" },
-{ 534 , "ERROR_ARITHMETIC_OVERFLOW" },
-{ 535 , "ERROR_PIPE_CONNECTED" },
-{ 536 , "ERROR_PIPE_LISTENING" },
-{ 994 , "ERROR_EA_ACCESS_DENIED" },
-{ 995 , "ERROR_OPERATION_ABORTED" },
-{ 996 , "ERROR_IO_INCOMPLETE" },
-{ 997 , "ERROR_IO_PENDING" },
-{ 998 , "ERROR_NOACCESS" },
-{ 999 , "ERROR_SWAPERROR" },
-{ 1001 , "ERROR_STACK_OVERFLOW" },
-{ 1002 , "ERROR_INVALID_MESSAGE" },
-{ 1003 , "ERROR_CAN_NOT_COMPLETE" },
-{ 1004 , "ERROR_INVALID_FLAGS" },
-{ 1005 , "ERROR_UNRECOGNIZED_VOLUME" },
-{ 1006 , "ERROR_FILE_INVALID" },
-{ 1007 , "ERROR_FULLSCREEN_MODE" },
-{ 1008 , "ERROR_NO_TOKEN" },
-{ 1009 , "ERROR_BADDB" },
-{ 1010 , "ERROR_BADKEY" },
-{ 1011 , "ERROR_CANTOPEN" },
-{ 1012 , "ERROR_CANTREAD" },
-{ 1013 , "ERROR_CANTWRITE" },
-{ 1014 , "ERROR_REGISTRY_RECOVERED" },
-{ 1015 , "ERROR_REGISTRY_CORRUPT" },
-{ 1016 , "ERROR_REGISTRY_IO_FAILED" },
-{ 1017 , "ERROR_NOT_REGISTRY_FILE" },
-{ 1018 , "ERROR_KEY_DELETED" },
-{ 1019 , "ERROR_NO_LOG_SPACE" },
-{ 1020 , "ERROR_KEY_HAS_CHILDREN" },
-{ 1021 , "ERROR_CHILD_MUST_BE_VOLATILE" },
-{ 1022 , "ERROR_NOTIFY_ENUM_DIR" },
-{ 1051 , "ERROR_DEPENDENT_SERVICES_RUNNING" },
-{ 1052 , "ERROR_INVALID_SERVICE_CONTROL" },
-{ 1053 , "ERROR_SERVICE_REQUEST_TIMEOUT" },
-{ 1054 , "ERROR_SERVICE_NO_THREAD" },
-{ 1055 , "ERROR_SERVICE_DATABASE_LOCKED" },
-{ 1056 , "ERROR_SERVICE_ALREADY_RUNNING" },
-{ 1057 , "ERROR_INVALID_SERVICE_ACCOUNT" },
-{ 1058 , "ERROR_SERVICE_DISABLED" },
-{ 1059 , "ERROR_CIRCULAR_DEPENDENCY" },
-{ 1060 , "ERROR_SERVICE_DOES_NOT_EXIST" },
-{ 1061 , "ERROR_SERVICE_CANNOT_ACCEPT_CTRL" },
-{ 1062 , "ERROR_SERVICE_NOT_ACTIVE" },
-{ 1063 , "ERROR_FAILED_SERVICE_CONTROLLER_CONNECT" },
-{ 1064 , "ERROR_EXCEPTION_IN_SERVICE" },
-{ 1065 , "ERROR_DATABASE_DOES_NOT_EXIST" },
-{ 1066 , "ERROR_SERVICE_SPECIFIC_ERROR" },
-{ 1067 , "ERROR_PROCESS_ABORTED" },
-{ 1068 , "ERROR_SERVICE_DEPENDENCY_FAIL" },
-{ 1069 , "ERROR_SERVICE_LOGON_FAILED" },
-{ 1070 , "ERROR_SERVICE_START_HANG" },
-{ 1071 , "ERROR_INVALID_SERVICE_LOCK" },
-{ 1072 , "ERROR_SERVICE_MARKED_FOR_DELETE" },
-{ 1073 , "ERROR_SERVICE_EXISTS" },
-{ 1074 , "ERROR_ALREADY_RUNNING_LKG" },
-{ 1075 , "ERROR_SERVICE_DEPENDENCY_DELETED" },
-{ 1076 , "ERROR_BOOT_ALREADY_ACCEPTED" },
-{ 1077 , "ERROR_SERVICE_NEVER_STARTED" },
-{ 1078 , "ERROR_DUPLICATE_SERVICE_NAME" },
-{ 1100 , "ERROR_END_OF_MEDIA" },
-{ 1101 , "ERROR_FILEMARK_DETECTED" },
-{ 1102 , "ERROR_BEGINNING_OF_MEDIA" },
-{ 1103 , "ERROR_SETMARK_DETECTED" },
-{ 1104 , "ERROR_NO_DATA_DETECTED" },
-{ 1105 , "ERROR_PARTITION_FAILURE" },
-{ 1106 , "ERROR_INVALID_BLOCK_LENGTH" },
-{ 1107 , "ERROR_DEVICE_NOT_PARTITIONED" },
-{ 1108 , "ERROR_UNABLE_TO_LOCK_MEDIA" },
-{ 1109 , "ERROR_UNABLE_TO_UNLOAD_MEDIA" },
-{ 1110 , "ERROR_MEDIA_CHANGED" },
-{ 1111 , "ERROR_BUS_RESET" },
-{ 1112 , "ERROR_NO_MEDIA_IN_DRIVE" },
-{ 1113 , "ERROR_NO_UNICODE_TRANSLATION" },
-{ 1114 , "ERROR_DLL_INIT_FAILED" },
-{ 1115 , "ERROR_SHUTDOWN_IN_PROGRESS" },
-{ 1116 , "ERROR_NO_SHUTDOWN_IN_PROGRESS" },
-{ 1117 , "ERROR_IO_DEVICE" },
-{ 1118 , "ERROR_SERIAL_NO_DEVICE" },
-{ 1119 , "ERROR_IRQ_BUSY" },
-{ 1120 , "ERROR_MORE_WRITES" },
-{ 1121 , "ERROR_COUNTER_TIMEOUT" },
-{ 1122 , "ERROR_FLOPPY_ID_MARK_NOT_FOUND" },
-{ 1123 , "ERROR_FLOPPY_WRONG_CYLINDER" },
-{ 1124 , "ERROR_FLOPPY_UNKNOWN_ERROR" },
-{ 1125 , "ERROR_FLOPPY_BAD_REGISTERS" },
-{ 1126 , "ERROR_DISK_RECALIBRATE_FAILED" },
-{ 1127 , "ERROR_DISK_OPERATION_FAILED" },
-{ 1128 , "ERROR_DISK_RESET_FAILED" },
-{ 1129 , "ERROR_EOM_OVERFLOW" },
-{ 1130 , "ERROR_NOT_ENOUGH_SERVER_MEMORY" },
-{ 1131 , "ERROR_POSSIBLE_DEADLOCK" },
-{ 1132 , "ERROR_MAPPED_ALIGNMENT" },
-{ 1140 , "ERROR_SET_POWER_STATE_VETOED" },
-{ 1141 , "ERROR_SET_POWER_STATE_FAILED" },
-{ 1150 , "ERROR_OLD_WIN_VERSION" },
-{ 1151 , "ERROR_APP_WRONG_OS" },
-{ 1152 , "ERROR_SINGLE_INSTANCE_APP" },
-{ 1153 , "ERROR_RMODE_APP" },
-{ 1154 , "ERROR_INVALID_DLL" },
-{ 1155 , "ERROR_NO_ASSOCIATION" },
-{ 1156 , "ERROR_DDE_FAIL" },
-{ 1157 , "ERROR_DLL_NOT_FOUND" },
-{ 2202 , "ERROR_BAD_USERNAME" },
-{ 2250 , "ERROR_NOT_CONNECTED" },
-{ 2401 , "ERROR_OPEN_FILES" },
-{ 2402 , "ERROR_ACTIVE_CONNECTIONS" },
-{ 2404 , "ERROR_DEVICE_IN_USE" },
-{ 1200 , "ERROR_BAD_DEVICE" },
-{ 1201 , "ERROR_CONNECTION_UNAVAIL" },
-{ 1202 , "ERROR_DEVICE_ALREADY_REMEMBERED" },
-{ 1203 , "ERROR_NO_NET_OR_BAD_PATH" },
-{ 1204 , "ERROR_BAD_PROVIDER" },
-{ 1205 , "ERROR_CANNOT_OPEN_PROFILE" },
-{ 1206 , "ERROR_BAD_PROFILE" },
-{ 1207 , "ERROR_NOT_CONTAINER" },
-{ 1208 , "ERROR_EXTENDED_ERROR" },
-{ 1209 , "ERROR_INVALID_GROUPNAME" },
-{ 1210 , "ERROR_INVALID_COMPUTERNAME" },
-{ 1211 , "ERROR_INVALID_EVENTNAME" },
-{ 1212 , "ERROR_INVALID_DOMAINNAME" },
-{ 1213 , "ERROR_INVALID_SERVICENAME" },
-{ 1214 , "ERROR_INVALID_NETNAME" },
-{ 1215 , "ERROR_INVALID_SHARENAME" },
-{ 1216 , "ERROR_INVALID_PASSWORDNAME" },
-{ 1217 , "ERROR_INVALID_MESSAGENAME" },
-{ 1218 , "ERROR_INVALID_MESSAGEDEST" },
-{ 1219 , "ERROR_SESSION_CREDENTIAL_CONFLICT" },
-{ 1220 , "ERROR_REMOTE_SESSION_LIMIT_EXCEEDED" },
-{ 1221 , "ERROR_DUP_DOMAINNAME" },
-{ 1222 , "ERROR_NO_NETWORK" },
-{ 1223 , "ERROR_CANCELLED" },
-{ 1224 , "ERROR_USER_MAPPED_FILE" },
-{ 1225 , "ERROR_CONNECTION_REFUSED" },
-{ 1226 , "ERROR_GRACEFUL_DISCONNECT" },
-{ 1227 , "ERROR_ADDRESS_ALREADY_ASSOCIATED" },
-{ 1228 , "ERROR_ADDRESS_NOT_ASSOCIATED" },
-{ 1229 , "ERROR_CONNECTION_INVALID" },
-{ 1230 , "ERROR_CONNECTION_ACTIVE" },
-{ 1231 , "ERROR_NETWORK_UNREACHABLE" },
-{ 1232 , "ERROR_HOST_UNREACHABLE" },
-{ 1233 , "ERROR_PROTOCOL_UNREACHABLE" },
-{ 1234 , "ERROR_PORT_UNREACHABLE" },
-{ 1235 , "ERROR_REQUEST_ABORTED" },
-{ 1236 , "ERROR_CONNECTION_ABORTED" },
-{ 1237 , "ERROR_RETRY" },
-{ 1238 , "ERROR_CONNECTION_COUNT_LIMIT" },
-{ 1239 , "ERROR_LOGIN_TIME_RESTRICTION" },
-{ 1240 , "ERROR_LOGIN_WKSTA_RESTRICTION" },
-{ 1241 , "ERROR_INCORRECT_ADDRESS" },
-{ 1242 , "ERROR_ALREADY_REGISTERED" },
-{ 1243 , "ERROR_SERVICE_NOT_FOUND" },
-{ 1244 , "ERROR_NOT_AUTHENTICATED" },
-{ 1245 , "ERROR_NOT_LOGGED_ON" },
-{ 1246 , "ERROR_CONTINUE" },
-{ 1247 , "ERROR_ALREADY_INITIALIZED" },
-{ 1248 , "ERROR_NO_MORE_DEVICES" },
-{ 1300 , "ERROR_NOT_ALL_ASSIGNED" },
-{ 1301 , "ERROR_SOME_NOT_MAPPED" },
-{ 1302 , "ERROR_NO_QUOTAS_FOR_ACCOUNT" },
-{ 1303 , "ERROR_LOCAL_USER_SESSION_KEY" },
-{ 1304 , "ERROR_NULL_LM_PASSWORD" },
-{ 1305 , "ERROR_UNKNOWN_REVISION" },
-{ 1306 , "ERROR_REVISION_MISMATCH" },
-{ 1307 , "ERROR_INVALID_OWNER" },
-{ 1308 , "ERROR_INVALID_PRIMARY_GROUP" },
-{ 1309 , "ERROR_NO_IMPERSONATION_TOKEN" },
-{ 1310 , "ERROR_CANT_DISABLE_MANDATORY" },
-{ 1311 , "ERROR_NO_LOGON_SERVERS" },
-{ 1312 , "ERROR_NO_SUCH_LOGON_SESSION" },
-{ 1313 , "ERROR_NO_SUCH_PRIVILEGE" },
-{ 1314 , "ERROR_PRIVILEGE_NOT_HELD" },
-{ 1315 , "ERROR_INVALID_ACCOUNT_NAME" },
-{ 1316 , "ERROR_USER_EXISTS" },
-{ 1317 , "ERROR_NO_SUCH_USER" },
-{ 1318 , "ERROR_GROUP_EXISTS" },
-{ 1319 , "ERROR_NO_SUCH_GROUP" },
-{ 1320 , "ERROR_MEMBER_IN_GROUP" },
-{ 1321 , "ERROR_MEMBER_NOT_IN_GROUP" },
-{ 1322 , "ERROR_LAST_ADMIN" },
-{ 1323 , "ERROR_WRONG_PASSWORD" },
-{ 1324 , "ERROR_ILL_FORMED_PASSWORD" },
-{ 1325 , "ERROR_PASSWORD_RESTRICTION" },
-{ 1326 , "ERROR_LOGON_FAILURE" },
-{ 1327 , "ERROR_ACCOUNT_RESTRICTION" },
-{ 1328 , "ERROR_INVALID_LOGON_HOURS" },
-{ 1329 , "ERROR_INVALID_WORKSTATION" },
-{ 1330 , "ERROR_PASSWORD_EXPIRED" },
-{ 1331 , "ERROR_ACCOUNT_DISABLED" },
-{ 1332 , "ERROR_NONE_MAPPED" },
-{ 1333 , "ERROR_TOO_MANY_LUIDS_REQUESTED" },
-{ 1334 , "ERROR_LUIDS_EXHAUSTED" },
-{ 1335 , "ERROR_INVALID_SUB_AUTHORITY" },
-{ 1336 , "ERROR_INVALID_ACL" },
-{ 1337 , "ERROR_INVALID_SID" },
-{ 1338 , "ERROR_INVALID_SECURITY_DESCR" },
-{ 1340 , "ERROR_BAD_INHERITANCE_ACL" },
-{ 1341 , "ERROR_SERVER_DISABLED" },
-{ 1342 , "ERROR_SERVER_NOT_DISABLED" },
-{ 1343 , "ERROR_INVALID_ID_AUTHORITY" },
-{ 1344 , "ERROR_ALLOTTED_SPACE_EXCEEDED" },
-{ 1345 , "ERROR_INVALID_GROUP_ATTRIBUTES" },
-{ 1346 , "ERROR_BAD_IMPERSONATION_LEVEL" },
-{ 1347 , "ERROR_CANT_OPEN_ANONYMOUS" },
-{ 1348 , "ERROR_BAD_VALIDATION_CLASS" },
-{ 1349 , "ERROR_BAD_TOKEN_TYPE" },
-{ 1350 , "ERROR_NO_SECURITY_ON_OBJECT" },
-{ 1351 , "ERROR_CANT_ACCESS_DOMAIN_INFO" },
-{ 1352 , "ERROR_INVALID_SERVER_STATE" },
-{ 1353 , "ERROR_INVALID_DOMAIN_STATE" },
-{ 1354 , "ERROR_INVALID_DOMAIN_ROLE" },
-{ 1355 , "ERROR_NO_SUCH_DOMAIN" },
-{ 1356 , "ERROR_DOMAIN_EXISTS" },
-{ 1357 , "ERROR_DOMAIN_LIMIT_EXCEEDED" },
-{ 1358 , "ERROR_INTERNAL_DB_CORRUPTION" },
-{ 1359 , "ERROR_INTERNAL_ERROR" },
-{ 1360 , "ERROR_GENERIC_NOT_MAPPED" },
-{ 1361 , "ERROR_BAD_DESCRIPTOR_FORMAT" },
-{ 1362 , "ERROR_NOT_LOGON_PROCESS" },
-{ 1363 , "ERROR_LOGON_SESSION_EXISTS" },
-{ 1364 , "ERROR_NO_SUCH_PACKAGE" },
-{ 1365 , "ERROR_BAD_LOGON_SESSION_STATE" },
-{ 1366 , "ERROR_LOGON_SESSION_COLLISION" },
-{ 1367 , "ERROR_INVALID_LOGON_TYPE" },
-{ 1368 , "ERROR_CANNOT_IMPERSONATE" },
-{ 1369 , "ERROR_RXACT_INVALID_STATE" },
-{ 1370 , "ERROR_RXACT_COMMIT_FAILURE" },
-{ 1371 , "ERROR_SPECIAL_ACCOUNT" },
-{ 1372 , "ERROR_SPECIAL_GROUP" },
-{ 1373 , "ERROR_SPECIAL_USER" },
-{ 1374 , "ERROR_MEMBERS_PRIMARY_GROUP" },
-{ 1375 , "ERROR_TOKEN_ALREADY_IN_USE" },
-{ 1376 , "ERROR_NO_SUCH_ALIAS" },
-{ 1377 , "ERROR_MEMBER_NOT_IN_ALIAS" },
-{ 1378 , "ERROR_MEMBER_IN_ALIAS" },
-{ 1379 , "ERROR_ALIAS_EXISTS" },
-{ 1380 , "ERROR_LOGON_NOT_GRANTED" },
-{ 1381 , "ERROR_TOO_MANY_SECRETS" },
-{ 1382 , "ERROR_SECRET_TOO_LONG" },
-{ 1383 , "ERROR_INTERNAL_DB_ERROR" },
-{ 1384 , "ERROR_TOO_MANY_CONTEXT_IDS" },
-{ 1385 , "ERROR_LOGON_TYPE_NOT_GRANTED" },
-{ 1386 , "ERROR_NT_CROSS_ENCRYPTION_REQUIRED" },
-{ 1387 , "ERROR_NO_SUCH_MEMBER" },
-{ 1388 , "ERROR_INVALID_MEMBER" },
-{ 1389 , "ERROR_TOO_MANY_SIDS" },
-{ 1390 , "ERROR_LM_CROSS_ENCRYPTION_REQUIRED" },
-{ 1391 , "ERROR_NO_INHERITANCE" },
-{ 1392 , "ERROR_FILE_CORRUPT" },
-{ 1393 , "ERROR_DISK_CORRUPT" },
-{ 1394 , "ERROR_NO_USER_SESSION_KEY" },
-{ 1395 , "ERROR_LICENSE_QUOTA_EXCEEDED" },
-{ 1400 , "ERROR_INVALID_WINDOW_HANDLE" },
-{ 1401 , "ERROR_INVALID_MENU_HANDLE" },
-{ 1402 , "ERROR_INVALID_CURSOR_HANDLE" },
-{ 1403 , "ERROR_INVALID_ACCEL_HANDLE" },
-{ 1404 , "ERROR_INVALID_HOOK_HANDLE" },
-{ 1405 , "ERROR_INVALID_DWP_HANDLE" },
-{ 1406 , "ERROR_TLW_WITH_WSCHILD" },
-{ 1407 , "ERROR_CANNOT_FIND_WND_CLASS" },
-{ 1408 , "ERROR_WINDOW_OF_OTHER_THREAD" },
-{ 1409 , "ERROR_HOTKEY_ALREADY_REGISTERED" },
-{ 1410 , "ERROR_CLASS_ALREADY_EXISTS" },
-{ 1411 , "ERROR_CLASS_DOES_NOT_EXIST" },
-{ 1412 , "ERROR_CLASS_HAS_WINDOWS" },
-{ 1413 , "ERROR_INVALID_INDEX" },
-{ 1414 , "ERROR_INVALID_ICON_HANDLE" },
-{ 1415 , "ERROR_PRIVATE_DIALOG_INDEX" },
-{ 1416 , "ERROR_LISTBOX_ID_NOT_FOUND" },
-{ 1417 , "ERROR_NO_WILDCARD_CHARACTERS" },
-{ 1418 , "ERROR_CLIPBOARD_NOT_OPEN" },
-{ 1419 , "ERROR_HOTKEY_NOT_REGISTERED" },
-{ 1420 , "ERROR_WINDOW_NOT_DIALOG" },
-{ 1421 , "ERROR_CONTROL_ID_NOT_FOUND" },
-{ 1422 , "ERROR_INVALID_COMBOBOX_MESSAGE" },
-{ 1423 , "ERROR_WINDOW_NOT_COMBOBOX" },
-{ 1424 , "ERROR_INVALID_EDIT_HEIGHT" },
-{ 1425 , "ERROR_DC_NOT_FOUND" },
-{ 1426 , "ERROR_INVALID_HOOK_FILTER" },
-{ 1427 , "ERROR_INVALID_FILTER_PROC" },
-{ 1428 , "ERROR_HOOK_NEEDS_HMOD" },
-{ 1429 , "ERROR_GLOBAL_ONLY_HOOK" },
-{ 1430 , "ERROR_JOURNAL_HOOK_SET" },
-{ 1431 , "ERROR_HOOK_NOT_INSTALLED" },
-{ 1432 , "ERROR_INVALID_LB_MESSAGE" },
-{ 1433 , "ERROR_SETCOUNT_ON_BAD_LB" },
-{ 1434 , "ERROR_LB_WITHOUT_TABSTOPS" },
-{ 1435 , "ERROR_DESTROY_OBJECT_OF_OTHER_THREAD" },
-{ 1436 , "ERROR_CHILD_WINDOW_MENU" },
-{ 1437 , "ERROR_NO_SYSTEM_MENU" },
-{ 1438 , "ERROR_INVALID_MSGBOX_STYLE" },
-{ 1439 , "ERROR_INVALID_SPI_VALUE" },
-{ 1440 , "ERROR_SCREEN_ALREADY_LOCKED" },
-{ 1441 , "ERROR_HWNDS_HAVE_DIFF_PARENT" },
-{ 1442 , "ERROR_NOT_CHILD_WINDOW" },
-{ 1443 , "ERROR_INVALID_GW_COMMAND" },
-{ 1444 , "ERROR_INVALID_THREAD_ID" },
-{ 1445 , "ERROR_NON_MDICHILD_WINDOW" },
-{ 1446 , "ERROR_POPUP_ALREADY_ACTIVE" },
-{ 1447 , "ERROR_NO_SCROLLBARS" },
-{ 1448 , "ERROR_INVALID_SCROLLBAR_RANGE" },
-{ 1449 , "ERROR_INVALID_SHOWWIN_COMMAND" },
-{ 1450 , "ERROR_NO_SYSTEM_RESOURCES" },
-{ 1451 , "ERROR_NONPAGED_SYSTEM_RESOURCES" },
-{ 1452 , "ERROR_PAGED_SYSTEM_RESOURCES" },
-{ 1453 , "ERROR_WORKING_SET_QUOTA" },
-{ 1454 , "ERROR_PAGEFILE_QUOTA" },
-{ 1455 , "ERROR_COMMITMENT_LIMIT" },
-{ 1456 , "ERROR_MENU_ITEM_NOT_FOUND" },
-{ 1500 , "ERROR_EVENTLOG_FILE_CORRUPT" },
-{ 1501 , "ERROR_EVENTLOG_CANT_START" },
-{ 1502 , "ERROR_LOG_FILE_FULL" },
-{ 1503 , "ERROR_EVENTLOG_FILE_CHANGED" },
-{ 1700 , "RPC_S_INVALID_STRING_BINDING" },
-{ 1701 , "RPC_S_WRONG_KIND_OF_BINDING" },
-{ 1702 , "RPC_S_INVALID_BINDING" },
-{ 1703 , "RPC_S_PROTSEQ_NOT_SUPPORTED" },
-{ 1704 , "RPC_S_INVALID_RPC_PROTSEQ" },
-{ 1705 , "RPC_S_INVALID_STRING_UUID" },
-{ 1706 , "RPC_S_INVALID_ENDPOINT_FORMAT" },
-{ 1707 , "RPC_S_INVALID_NET_ADDR" },
-{ 1708 , "RPC_S_NO_ENDPOINT_FOUND" },
-{ 1709 , "RPC_S_INVALID_TIMEOUT" },
-{ 1710 , "RPC_S_OBJECT_NOT_FOUND" },
-{ 1711 , "RPC_S_ALREADY_REGISTERED" },
-{ 1712 , "RPC_S_TYPE_ALREADY_REGISTERED" },
-{ 1713 , "RPC_S_ALREADY_LISTENING" },
-{ 1714 , "RPC_S_NO_PROTSEQS_REGISTERED" },
-{ 1715 , "RPC_S_NOT_LISTENING" },
-{ 1716 , "RPC_S_UNKNOWN_MGR_TYPE" },
-{ 1717 , "RPC_S_UNKNOWN_IF" },
-{ 1718 , "RPC_S_NO_BINDINGS" },
-{ 1719 , "RPC_S_NO_PROTSEQS" },
-{ 1720 , "RPC_S_CANT_CREATE_ENDPOINT" },
-{ 1721 , "RPC_S_OUT_OF_RESOURCES" },
-{ 1722 , "RPC_S_SERVER_UNAVAILABLE" },
-{ 1723 , "RPC_S_SERVER_TOO_BUSY" },
-{ 1724 , "RPC_S_INVALID_NETWORK_OPTIONS" },
-{ 1725 , "RPC_S_NO_CALL_ACTIVE" },
-{ 1726 , "RPC_S_CALL_FAILED" },
-{ 1727 , "RPC_S_CALL_FAILED_DNE" },
-{ 1728 , "RPC_S_PROTOCOL_ERROR" },
-{ 1730 , "RPC_S_UNSUPPORTED_TRANS_SYN" },
-{ 1732 , "RPC_S_UNSUPPORTED_TYPE" },
-{ 1733 , "RPC_S_INVALID_TAG" },
-{ 1734 , "RPC_S_INVALID_BOUND" },
-{ 1735 , "RPC_S_NO_ENTRY_NAME" },
-{ 1736 , "RPC_S_INVALID_NAME_SYNTAX" },
-{ 1737 , "RPC_S_UNSUPPORTED_NAME_SYNTAX" },
-{ 1739 , "RPC_S_UUID_NO_ADDRESS" },
-{ 1740 , "RPC_S_DUPLICATE_ENDPOINT" },
-{ 1741 , "RPC_S_UNKNOWN_AUTHN_TYPE" },
-{ 1742 , "RPC_S_MAX_CALLS_TOO_SMALL" },
-{ 1743 , "RPC_S_STRING_TOO_LONG" },
-{ 1744 , "RPC_S_PROTSEQ_NOT_FOUND" },
-{ 1745 , "RPC_S_PROCNUM_OUT_OF_RANGE" },
-{ 1746 , "RPC_S_BINDING_HAS_NO_AUTH" },
-{ 1747 , "RPC_S_UNKNOWN_AUTHN_SERVICE" },
-{ 1748 , "RPC_S_UNKNOWN_AUTHN_LEVEL" },
-{ 1749 , "RPC_S_INVALID_AUTH_IDENTITY" },
-{ 1750 , "RPC_S_UNKNOWN_AUTHZ_SERVICE" },
-{ 1751 , "EPT_S_INVALID_ENTRY" },
-{ 1752 , "EPT_S_CANT_PERFORM_OP" },
-{ 1753 , "EPT_S_NOT_REGISTERED" },
-{ 1754 , "RPC_S_NOTHING_TO_EXPORT" },
-{ 1755 , "RPC_S_INCOMPLETE_NAME" },
-{ 1756 , "RPC_S_INVALID_VERS_OPTION" },
-{ 1757 , "RPC_S_NO_MORE_MEMBERS" },
-{ 1758 , "RPC_S_NOT_ALL_OBJS_UNEXPORTED" },
-{ 1759 , "RPC_S_INTERFACE_NOT_FOUND" },
-{ 1760 , "RPC_S_ENTRY_ALREADY_EXISTS" },
-{ 1761 , "RPC_S_ENTRY_NOT_FOUND" },
-{ 1762 , "RPC_S_NAME_SERVICE_UNAVAILABLE" },
-{ 1763 , "RPC_S_INVALID_NAF_ID" },
-{ 1764 , "RPC_S_CANNOT_SUPPORT" },
-{ 1765 , "RPC_S_NO_CONTEXT_AVAILABLE" },
-{ 1766 , "RPC_S_INTERNAL_ERROR" },
-{ 1767 , "RPC_S_ZERO_DIVIDE" },
-{ 1768 , "RPC_S_ADDRESS_ERROR" },
-{ 1769 , "RPC_S_FP_DIV_ZERO" },
-{ 1770 , "RPC_S_FP_UNDERFLOW" },
-{ 1771 , "RPC_S_FP_OVERFLOW" },
-{ 1772 , "RPC_X_NO_MORE_ENTRIES" },
-{ 1773 , "RPC_X_SS_CHAR_TRANS_OPEN_FAIL" },
-{ 1774 , "RPC_X_SS_CHAR_TRANS_SHORT_FILE" },
-{ 1775 , "RPC_X_SS_IN_NULL_CONTEXT" },
-{ 1777 , "RPC_X_SS_CONTEXT_DAMAGED" },
-{ 1778 , "RPC_X_SS_HANDLES_MISMATCH" },
-{ 1779 , "RPC_X_SS_CANNOT_GET_CALL_HANDLE" },
-{ 1780 , "RPC_X_NULL_REF_POINTER" },
-{ 1781 , "RPC_X_ENUM_VALUE_OUT_OF_RANGE" },
-{ 1782 , "RPC_X_BYTE_COUNT_TOO_SMALL" },
-{ 1783 , "RPC_X_BAD_STUB_DATA" },
-{ 1784 , "ERROR_INVALID_USER_BUFFER" },
-{ 1785 , "ERROR_UNRECOGNIZED_MEDIA" },
-{ 1786 , "ERROR_NO_TRUST_LSA_SECRET" },
-{ 1787 , "ERROR_NO_TRUST_SAM_ACCOUNT" },
-{ 1788 , "ERROR_TRUSTED_DOMAIN_FAILURE" },
-{ 1789 , "ERROR_TRUSTED_RELATIONSHIP_FAILURE" },
-{ 1790 , "ERROR_TRUST_FAILURE" },
-{ 1791 , "RPC_S_CALL_IN_PROGRESS" },
-{ 1792 , "ERROR_NETLOGON_NOT_STARTED" },
-{ 1793 , "ERROR_ACCOUNT_EXPIRED" },
-{ 1794 , "ERROR_REDIRECTOR_HAS_OPEN_HANDLES" },
-{ 1795 , "ERROR_PRINTER_DRIVER_ALREADY_INSTALLED" },
-{ 1796 , "ERROR_UNKNOWN_PORT" },
-{ 1797 , "ERROR_UNKNOWN_PRINTER_DRIVER" },
-{ 1798 , "ERROR_UNKNOWN_PRINTPROCESSOR" },
-{ 1799 , "ERROR_INVALID_SEPARATOR_FILE" },
-{ 1800 , "ERROR_INVALID_PRIORITY" },
-{ 1801 , "ERROR_INVALID_PRINTER_NAME" },
-{ 1802 , "ERROR_PRINTER_ALREADY_EXISTS" },
-{ 1803 , "ERROR_INVALID_PRINTER_COMMAND" },
-{ 1804 , "ERROR_INVALID_DATATYPE" },
-{ 1805 , "ERROR_INVALID_ENVIRONMENT" },
-{ 1806 , "RPC_S_NO_MORE_BINDINGS" },
-{ 1807 , "ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT" },
-{ 1808 , "ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT" },
-{ 1809 , "ERROR_NOLOGON_SERVER_TRUST_ACCOUNT" },
-{ 1810 , "ERROR_DOMAIN_TRUST_INCONSISTENT" },
-{ 1811 , "ERROR_SERVER_HAS_OPEN_HANDLES" },
-{ 1812 , "ERROR_RESOURCE_DATA_NOT_FOUND" },
-{ 1813 , "ERROR_RESOURCE_TYPE_NOT_FOUND" },
-{ 1814 , "ERROR_RESOURCE_NAME_NOT_FOUND" },
-{ 1815 , "ERROR_RESOURCE_LANG_NOT_FOUND" },
-{ 1816 , "ERROR_NOT_ENOUGH_QUOTA" },
-{ 1817 , "RPC_S_NO_INTERFACES" },
-{ 1818 , "RPC_S_CALL_CANCELLED" },
-{ 1819 , "RPC_S_BINDING_INCOMPLETE" },
-{ 1820 , "RPC_S_COMM_FAILURE" },
-{ 1821 , "RPC_S_UNSUPPORTED_AUTHN_LEVEL" },
-{ 1822 , "RPC_S_NO_PRINC_NAME" },
-{ 1823 , "RPC_S_NOT_RPC_ERROR" },
-{ 1824 , "RPC_S_UUID_LOCAL_ONLY" },
-{ 1825 , "RPC_S_SEC_PKG_ERROR" },
-{ 1826 , "RPC_S_NOT_CANCELLED" },
-{ 1827 , "RPC_X_INVALID_ES_ACTION" },
-{ 1828 , "RPC_X_WRONG_ES_VERSION" },
-{ 1829 , "RPC_X_WRONG_STUB_VERSION" },
-{ 1898 , "RPC_S_GROUP_MEMBER_NOT_FOUND" },
-{ 1899 , "EPT_S_CANT_CREATE" },
-{ 1900 , "RPC_S_INVALID_OBJECT" },
-{ 1901 , "ERROR_INVALID_TIME" },
-{ 1902 , "ERROR_INVALID_FORM_NAME" },
-{ 1903 , "ERROR_INVALID_FORM_SIZE" },
-{ 1904 , "ERROR_ALREADY_WAITING" },
-{ 1905 , "ERROR_PRINTER_DELETED" },
-{ 1906 , "ERROR_INVALID_PRINTER_STATE" },
-{ 1907 , "ERROR_PASSWORD_MUST_CHANGE" },
-{ 1908 , "ERROR_DOMAIN_CONTROLLER_NOT_FOUND" },
-{ 1909 , "ERROR_ACCOUNT_LOCKED_OUT" },
-{ 6118 , "ERROR_NO_BROWSER_SERVERS_FOUND" },
-{ 2000 , "ERROR_INVALID_PIXEL_FORMAT" },
-{ 2001 , "ERROR_BAD_DRIVER" },
-{ 2002 , "ERROR_INVALID_WINDOW_STYLE" },
-{ 2003 , "ERROR_METAFILE_NOT_SUPPORTED" },
-{ 2004 , "ERROR_TRANSFORM_NOT_SUPPORTED" },
-{ 2005 , "ERROR_CLIPPING_NOT_SUPPORTED" },
-{ 3000 , "ERROR_UNKNOWN_PRINT_MONITOR" },
-{ 3001 , "ERROR_PRINTER_DRIVER_IN_USE" },
-{ 3002 , "ERROR_SPOOL_FILE_NOT_FOUND" },
-{ 3003 , "ERROR_SPL_NO_STARTDOC" },
-{ 3004 , "ERROR_SPL_NO_ADDJOB" },
-{ 3005 , "ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED" },
-{ 3006 , "ERROR_PRINT_MONITOR_ALREADY_INSTALLED" },
-{ 4000 , "ERROR_WINS_INTERNAL" },
-{ 4001 , "ERROR_CAN_NOT_DEL_LOCAL_WINS" },
-{ 4002 , "ERROR_STATIC_INIT" },
-{ 4003 , "ERROR_INC_BACKUP" },
-{ 4004 , "ERROR_FULL_BACKUP" },
-{ 4005 , "ERROR_REC_NON_EXISTENT" },
-{ 4006 , "ERROR_RPL_NOT_ALLOWED" },
-{ 10004 , "WSAEINTR" },
-{ 10009 , "WSAEBADF" },
-{ 10013 , "WSAEACCES" },
-{ 10014 , "WSAEFAULT" },
-{ 10022 , "WSAEINVAL" },
-{ 10024 , "WSAEMFILE" },
-{ 10035 , "WSAEWOULDBLOCK" },
-{ 10036 , "WSAEINPROGRESS" },
-{ 10037 , "WSAEALREADY" },
-{ 10038 , "WSAENOTSOCK" },
-{ 10039 , "WSAEDESTADDRREQ" },
-{ 10040 , "WSAEMSGSIZE" },
-{ 10041 , "WSAEPROTOTYPE" },
-{ 10042 , "WSAENOPROTOOPT" },
-{ 10043 , "WSAEPROTONOSUPPORT" },
-{ 10044 , "WSAESOCKTNOSUPPORT" },
-{ 10045 , "WSAEOPNOTSUPP" },
-{ 10046 , "WSAEPFNOSUPPORT" },
-{ 10047 , "WSAEAFNOSUPPORT" },
-{ 10048 , "WSAEADDRINUSE" },
-{ 10049 , "WSAEADDRNOTAVAIL" },
-{ 10050 , "WSAENETDOWN" },
-{ 10051 , "WSAENETUNREACH" },
-{ 10052 , "WSAENETRESET" },
-{ 10053 , "WSAECONNABORTED" },
-{ 10054 , "WSAECONNRESET" },
-{ 10055 , "WSAENOBUFS" },
-{ 10056 , "WSAEISCONN" },
-{ 10057 , "WSAENOTCONN" },
-{ 10058 , "WSAESHUTDOWN" },
-{ 10059 , "WSAETOOMANYREFS" },
-{ 10060 , "WSAETIMEDOUT" },
-{ 10061 , "WSAECONNREFUSED" },
-{ 10062 , "WSAELOOP" },
-{ 10063 , "WSAENAMETOOLONG" },
-{ 10064 , "WSAEHOSTDOWN" },
-{ 10065 , "WSAEHOSTUNREACH" },
-{ 10066 , "WSAENOTEMPTY" },
-{ 10067 , "WSAEPROCLIM" },
-{ 10068 , "WSAEUSERS" },
-{ 10069 , "WSAEDQUOT" },
-{ 10070 , "WSAESTALE" },
-{ 10071 , "WSAEREMOTE" },
-{ 10101 , "WSAEDISCON" },
-{ 10091 , "WSASYSNOTREADY" },
-{ 10092 , "WSAVERNOTSUPPORTED" },
-{ 10093 , "WSANOTINITIALISED" },
-{ 11001 , "WSAHOST_NOT_FOUND" },
-{ 11002 , "WSATRY_AGAIN" },
-{ 11003 , "WSANO_RECOVERY" },
-{ 11004 , "WSANO_DATA" },
-{ 0, NULL }
-};
diff --git a/ldap/admin/lib/dsalib_conf.c b/ldap/admin/lib/dsalib_conf.c
deleted file mode 100644
index 19161c59..00000000
--- a/ldap/admin/lib/dsalib_conf.c
+++ /dev/null
@@ -1,251 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#if defined( XP_WIN32 )
-#include <windows.h>
-#include <process.h>
-#endif
-#include <sys/types.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "dsalib.h"
-#include <ldaplog.h>
-#include "portable.h"
-#include <ctype.h>
-
-#include "nspr.h"
-
-#define CONF_SUFFIX "cn=config"
-
-DS_EXPORT_SYMBOL char *
-ds_get_var_name(int varnum)
-{
- if ( (varnum >= DS_CFG_MAX) || (varnum < 0) )
- return(NULL); /* failure */
- return(ds_cfg_info[varnum].dci_varname);
-}
-
-/*
- * Get config info.
- */
-DS_EXPORT_SYMBOL char **
-ds_get_config(int type)
-{
- char conffile[PATH_MAX];
- char *configdir;
- FILE *sf = NULL;
- char **conf_list = NULL;
-
- if ( (type != DS_REAL_CONFIG) && (type != DS_TMP_CONFIG) ) {
- ds_send_error("Invalid config file type.", 0);
- return(NULL);
- }
-
- if ( (configdir = ds_get_config_dir()) == NULL ) {
- ds_send_error("Cannot find configuration directory.", 0);
- return(NULL);
- }
-
- PR_snprintf(conffile, PATH_MAX, "%s/%s", configdir, DS_CONFIG_FILE);
-
- if ( !(sf = fopen(conffile, "r")) ) {
- ds_send_error("could not read config file.", 1);
- return(NULL);
- }
-
- conf_list = ds_get_conf_from_file(sf);
-
- fclose(sf);
- if (!conf_list) {
- ds_send_error("failed to read the config file successfully.", 0);
- return(NULL);
- }
- return(conf_list);
-}
-
-/*
- * NOTE: the ordering of the following array elements must be kept in sync
- * with the ordering of the #defines in ../include/dsalib.h.
- */
-struct ds_cfg_info ds_cfg_info[] = {
-{"nsslapd-errorlog-level" },
-{"nsslapd-referral" },
-{"nsslapd-auditlog" },
-{"nsslapd-localhost" },
-{"nsslapd-port" },
-{"nsslapd-security" },
-{"nsslapd-secureport" },
-{"nsslapd-ssl3ciphers"},
-{"passwordstoragescheme"},
-{"nsslapd-accesslog"},
-{"nsslapd-errorlog"},
-{"nsslapd-rootdn"},
-{"nsslapd-rootpwstoragescheme"},
-{"nsslapd-suffix"},
-{"nsslapd-localuser"},
-{0}
-};
-
-/*
- * Open the config file and look for option "option". Return its
- * value, or NULL if the option was not found.
- */
-DS_EXPORT_SYMBOL char *
-ds_get_config_value( int option )
-{
- char **all, *value;
- int i;
- char *attr = ds_get_var_name(option);
-
- if (attr == NULL)
- return NULL;
-
- all = ds_get_config( DS_REAL_CONFIG );
- if ( all == NULL ) {
- return NULL;
- }
- for ( i = 0; all[ i ] != NULL; i++ ) {
- if (( value = strchr( all[ i ], ':' )) != NULL ) {
- *value = '\0';
- ++value;
- while (*value && isspace(*value))
- ++value;
- }
- if ( !strcasecmp( attr, all[ i ] )) {
- return strdup( value );
- }
- }
- return NULL;
-}
-
-static size_t
-count_quotes (const char* s)
-{
- size_t count = 0;
- const char* t = s;
- if (t) while ((t = strpbrk (t, "\"\\")) != NULL) {
- ++count;
- ++t;
- }
- return count;
-}
-
-DS_EXPORT_SYMBOL char*
-ds_enquote_config_value (int paramnum, char* s)
-{
- char* result;
- char* brkcharset = "\"\\ \t\r\n";
- char *encoded_quote = "22"; /* replace quote with \22 */
- int encoded_quote_len = strlen(encoded_quote);
- char *begin = s;
- if (*s && ! strpbrk (s, brkcharset) &&
- ! (paramnum == DS_AUDITFILE || paramnum == DS_ACCESSLOG ||
-#if defined( XP_WIN32 )
- paramnum == DS_SUFFIX ||
-#endif
- paramnum == DS_ERRORLOG)) {
- result = s;
- } else {
- char* t = malloc (strlen (s) + count_quotes (s) + 3);
- result = t;
- *t++ = '"';
- while (*s) {
- switch (*s) {
-
- case '"':
- /* convert escaped quotes by replacing the quote with
- escape code e.g. 22 so that \" is converted to \22 "*/
- if ((s > begin) && (*(s - 1) == '\\'))
- {
- strcpy(t, encoded_quote);
- t += encoded_quote_len;
- }
- else /* unescaped ", just replace with \22 "*/
- {
- *t++ = '\\';
- strcpy(t, encoded_quote);
- t += encoded_quote_len;
- }
- ++s;
- break;
-
- default:
- *t++ = *s++; /* just copy it */
- break;
- }
- }
- *t++ = '"';
- *t = '\0';
- }
- return result;
-}
-
-DS_EXPORT_SYMBOL char*
-ds_DNS_to_DN (char* DNS)
-{
- static const char* const RDN = "dc=";
- char* DN;
- char* dot;
- size_t components;
- if (DNS == NULL || *DNS == '\0') {
- return strdup ("");
- }
- components = 1;
- for (dot = strchr (DNS, '.'); dot != NULL; dot = strchr (dot + 1, '.')) {
- ++components;
- }
- DN = malloc (strlen (DNS) + (components * strlen(RDN)) + 1);
- strcpy (DN, RDN);
- for (dot = strchr (DNS, '.'); dot != NULL; dot = strchr (dot + 1, '.')) {
- *dot = '\0';
- strcat (DN, DNS);
- strcat (DN, ",");
- strcat (DN, RDN);
- DNS = dot + 1;
- *dot = '.';
- }
- strcat (DN, DNS);
- dn_normalize (DN);
- return DN;
-}
diff --git a/ldap/admin/lib/dsalib_confs.c b/ldap/admin/lib/dsalib_confs.c
deleted file mode 100644
index bce1594b..00000000
--- a/ldap/admin/lib/dsalib_confs.c
+++ /dev/null
@@ -1,184 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-/*
- * Some of the simple conf stuff here. Must not call any
- * libadmin functions! This is needed by ds_config.c
- */
-#if defined( XP_WIN32 )
-#include <windows.h>
-#endif
-#include "dsalib.h"
-#include <sys/types.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ldif.h>
-#include <ctype.h>
-#include "nspr.h"
-#include "plstr.h"
-
-/*
- * Read the configuration info into a null-terminated list of strings.
- */
-DS_EXPORT_SYMBOL char **
-ds_get_conf_from_file(FILE *conf)
-{
- static char config_entry[] = "dn: cn=config";
- static int cfg_ent_len = sizeof(config_entry)-1;
- int listsize = 0;
- char **conf_list = NULL;
- char *entry = 0;
- int lineno = 0;
-
- while ((entry = ldif_get_entry(conf, &lineno))) {
- char *begin = entry;
- if (!PL_strncasecmp(entry, config_entry, cfg_ent_len)) {
- char *line = entry;
- while ((line = ldif_getline(&entry))) {
- char *type, *value;
- int vlen = 0;
- int rc;
-
- if ( *line == '\n' || *line == '\0' ) {
- break;
- }
-
- /* this call modifies line */
- rc = ldif_parse_line(line, &type, &value, &vlen);
- if (rc != 0)
- {
- ds_send_error("Unknown error processing config file", 0);
- free(begin);
- return NULL;
- }
- listsize++;
- conf_list = (char **) realloc(conf_list,
- ((listsize + 1) * sizeof(char *)));
- /* this is the format expected by ds_get_config_value */
- conf_list[listsize - 1] = PR_smprintf("%s:%s", type, value);
- conf_list[listsize] = NULL; /* always null terminated */
- }
- }
- free(begin);
- }
-
- return(conf_list);
-}
-
-/*
- * Returns 1 if parm is in confline else 0
- */
-static int
-ds_parm_in_line(char *confline, char *parm)
-{
- int parm_size;
-
- if ( confline == NULL )
- return(0);
- if ( parm == NULL )
- return(0);
- parm_size = strlen(parm);
- if ( parm_size == (int)NULL )
- return(0);
- if ( PL_strncasecmp(confline, parm, parm_size) == 0 )
- if ( ((int) strlen(confline)) > parm_size )
- if ( confline[parm_size] == ':' )
- return(1);
- return(0);
-}
-
-/*
- * Gets the string that corresponds to the parameter supplied from the
- * list of config lines. Returns a malloc'd string.
- */
-DS_EXPORT_SYMBOL char *
-ds_get_value(char **ds_config, char *parm, int phase, int occurance)
-{
- char *line;
- int line_num = 0;
- int cur_phase = 0;
- int cur_occurance = 0;
-
- if ( (parm == NULL) || (ds_config == NULL) )
- return(NULL);
- if ( (phase < 0) || (occurance < 1) )
- return(NULL);
- line = ds_config[line_num];
- while ( line != NULL ) {
- if ( ds_parm_in_line(line, "database") )
- cur_phase++;
- if ( ds_parm_in_line(line, parm) ) { /* found it */
- if ( phase == cur_phase )
- if ( ++cur_occurance == occurance ) {
- /*
- * Use ldif_parse_line() so continuation markers are
- * handled correctly, etc.
- */
- char *type = NULL, *value = NULL, *tmpvalue = NULL;
- int ldif_rc, tmpvlen = 0;
- char *tmpline = strdup(line);
-
- if ( NULL == tmpline ) {
- ds_send_error(
- "ds_get_value() failed: strdup() returned NULL\n",
- 1 /* print errno */ );
- return(NULL);
- }
-
- ldif_rc = ldif_parse_line( tmpline, &type, &tmpvalue, &tmpvlen );
- if (ldif_rc < 0) {
- ds_send_error("Unknown error processing config file", 0);
- } else if (ldif_rc == 0) { /* value returned in place */
- value = strdup(tmpvalue);
- } else { /* malloc'd value */
- value = tmpvalue;
- }
- free(tmpline);
- return value;
- }
- }
- line_num++;
- line = ds_config[line_num];
- }
- return(NULL);
-}
diff --git a/ldap/admin/lib/dsalib_db.c b/ldap/admin/lib/dsalib_db.c
deleted file mode 100644
index c974b766..00000000
--- a/ldap/admin/lib/dsalib_db.c
+++ /dev/null
@@ -1,419 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#if defined( XP_WIN32 )
-#include <windows.h>
-#include <process.h>
-#include <io.h>
-#endif
-#include "dsalib.h"
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <string.h>
-#if !defined( XP_WIN32 )
-#include <dirent.h>
-#include <unistd.h>
-#else
-#define popen _popen
-#define pclose _pclose
-#endif
-#include "portable.h"
-#include "nspr.h"
-
-/*
- * Get a listing of backup directories
- * Return NULL for errors and a NULL list for an empty list.
- */
-
-DS_EXPORT_SYMBOL char **
-ds_get_bak_dirs()
-{
- char format_str[PATH_MAX];
- char *root;
- int i = 0;
- char **bak_dirs = NULL;
- char *bakdir = NULL;
-
- if ( (root = ds_get_install_root()) == NULL )
- {
- ds_send_error("Cannot find server root directory.", 0);
- return(bak_dirs);
- }
-
- if ( (bakdir = ds_get_bak_dir()) == NULL )
- {
- ds_send_error("Cannot find backup directory.", 0);
- return(bak_dirs);
- }
-
- PR_snprintf( format_str, PATH_MAX, "%s", bakdir );
- bak_dirs = ds_get_file_list( format_str );
- if( bak_dirs )
- {
- while( bak_dirs[i] != NULL )
- {
- /* Prepend the filename with the install root */
- char filename[PATH_MAX];
- PR_snprintf( filename, PATH_MAX, "%s%c%s",
- bakdir, FILE_SEP, bak_dirs[i] );
- free( bak_dirs[i] );
- bak_dirs[i] = strdup( filename );
-#if defined( XP_WIN32 )
- ds_dostounixpath( bak_dirs[i] );
-#endif
- i++;
- }
- }
-
- return(bak_dirs);
-}
-
-/*
- * Restore a database based on a backup directory name.
- * 0: success
- * anything else: failure
- */
-DS_EXPORT_SYMBOL int
-ds_bak2db(char *file)
-{
- char startup_line[BIG_LINE];
- char statfile[PATH_MAX];
- char *tmp_dir;
- char *root;
- int haderror = 0;
- int error = -1;
- int status;
- FILE *sf = NULL;
- struct stat fstats;
-
- if ( file == NULL ) {
- return DS_NULL_PARAMETER;
- }
- status = ds_get_updown_status();
- if ( status == DS_SERVER_UP ) {
- return DS_SERVER_MUST_BE_DOWN;
- }
- if ( (root = ds_get_install_root()) == NULL ) {
- return DS_NO_SERVER_ROOT;
- }
-
- if ( file[strlen(file) - 1] == '\n' ) /* strip out returns */
- file[strlen(file) - 1] = '\0';
-
- if( stat( file, &fstats ) == -1 && errno == ENOENT ) {
- return DS_CANNOT_OPEN_BACKUP_FILE;
- } else if( !(fstats.st_mode & S_IFDIR) ) {
- return DS_NOT_A_DIRECTORY;
- }
-
- tmp_dir = ds_get_tmp_dir();
- PR_snprintf(statfile, PATH_MAX, "%s%cbak2db.%d", tmp_dir, FILE_SEP, (int)getpid());
- PR_snprintf(startup_line, BIG_LINE,
- "%s%cbak2db "
- "%s%s%s > "
- "%s%s%s 2>&1",
- root, FILE_SEP,
- ENQUOTE, file, ENQUOTE,
- ENQUOTE, statfile, ENQUOTE );
- alter_startup_line(startup_line);
- fflush(0);
- error = system(startup_line);
- fflush(0);
- if ( error == -1 ) {
- return DS_CANNOT_EXEC;
- }
- fflush(0);
- if( !(sf = fopen(statfile, "r")) ) {
- return DS_CANNOT_OPEN_STAT_FILE;
- }
-
- while ( fgets(startup_line, BIG_LINE, sf) ) {
- if ((strstr(startup_line, "- Restoring file")) ||
- (strstr(startup_line, "- Checkpointing"))) {
- ds_show_message(startup_line);
- } else {
- haderror = 1;
- ds_send_error(startup_line, 0);
- }
- }
-
- fclose(sf);
- unlink(statfile);
-
- if ( haderror )
- return DS_UNKNOWN_ERROR;
- return 0;
-}
-
-/*
- * Create a backup based on a file name.
- * 0: success
- * anything else: failure
- */
-DS_EXPORT_SYMBOL int
-ds_db2bak(char *file)
-{
- char startup_line[BIG_LINE];
- char statfile[PATH_MAX];
- char *tmp_dir;
- char *root;
- int haderror = 0;
- int error = -1;
- FILE *sf = NULL;
- int lite = 0;
-#ifdef XP_WIN32
- time_t ltime;
-#endif
-
- if ( (root = ds_get_install_root()) == NULL ) {
- return DS_NO_SERVER_ROOT;
- }
-
- if ( (file == NULL) || (strlen(file) == 0) )
- file = NULL;
-
- tmp_dir = ds_get_tmp_dir();
- PR_snprintf(statfile, PATH_MAX, "%s%cdb2bak.%d", tmp_dir, FILE_SEP, (int)getpid());
-
-
-#if defined( XP_WIN32 )
- if( file == NULL )
- {
- file = malloc( BIG_LINE );
-
- time( &ltime );
- PR_snprintf( file, BIG_LINE, "%s", ctime( &ltime ) );
- ds_timetofname( file );
- }
-
- /* Check if the directory exists or can be created */
- if ( !ds_file_exists( file ) ) {
- char *errmsg = ds_mkdir_p( file, NEWDIR_MODE );
- if( errmsg != NULL ) {
-/* ds_send_error(errmsg, 10);
- */
- return DS_CANNOT_CREATE_DIRECTORY;
- }
- }
-#endif
-
-/* DBDB: note on the following line.
- * Originally this had quotes round the directory name.
- * I found that this made the script not work becuase
- * a path of the form "foo"/bar/"baz" was passed to slapd.
- * the c runtime didn't like this. Perhaps there's a simple
- * solution, but for now I've modified this line here to
- * not quote the directory name. This means that backup
- * directories can't have spaces in them.
- */
-
-
- PR_snprintf(startup_line, sizeof(startup_line),
- "%s%cdb2bak "
- "%s%s%s > "
- "%s%s%s 2>&1",
- root, FILE_SEP,
- ENQUOTE,
- (file == NULL) ? "" : file,
- ENQUOTE,
- ENQUOTE, statfile, ENQUOTE);
-
- PATH_FOR_PLATFORM( startup_line );
- alter_startup_line(startup_line);
- fflush(0);
- error = system(startup_line);
- if ( error == -1 ) {
- return DS_CANNOT_EXEC;
- }
- if( !(sf = fopen(statfile, "r")) ) {
- return DS_CANNOT_OPEN_STAT_FILE;
- }
-
- while ( fgets(startup_line, BIG_LINE, sf) ) {
- if (strstr(startup_line, " - Backing up file") ||
- strstr(startup_line, " - Checkpointing database")) {
- ds_show_message(startup_line);
- } else {
- haderror = 1;
- if (strstr ( startup_line, "restricted mode")) {
- lite = 1;
- }
- ds_send_error(startup_line, 0);
- }
- }
- fclose(sf);
- unlink(statfile);
-
- if ( lite && haderror )
- return DS_HAS_TOBE_READONLY_MODE;
-
- if ( haderror )
- return DS_UNKNOWN_ERROR;
- return 0;
-}
-
-static void
-process_and_report( char *line, int line_size, FILE *cmd )
-{
- while(fgets(line, line_size, cmd)) {
- /* Strip off line feeds */
- int ind = strlen( line ) - 1;
- while ( (ind >= 0) &&
- ((line[ind] == '\n') ||
- (line[ind] == '\r')) ) {
- line[ind] = 0;
- ind--;
- }
- if ( ind < 1 ) {
- continue;
- }
- ds_send_status(line);
- }
-}
-
-static int exec_and_report( char *startup_line )
-{
- FILE *cmd = NULL;
- char line[BIG_LINE];
- int haderror = 0;
-
- PATH_FOR_PLATFORM( startup_line );
- alter_startup_line(startup_line);
-
- /*
- fprintf( stdout, "Launching <%s>\n", startup_line );
- */
-
- fflush(0);
- cmd = popen(startup_line, "r");
- if(!cmd) {
- return DS_CANNOT_EXEC;
- }
- process_and_report( line, sizeof(line), cmd );
- pclose(cmd);
-
- /*
- ** The VLV indexing code prints OK,
- ** if the index was successfully created.
- */
- if (strcmp(line,"OK")==0) {
- haderror = 0;
- } else {
- haderror = DS_UNKNOWN_ERROR;
- }
-
- return haderror;
-}
-
-/*
- * Create a vlv index
- * 0: success
- * anything else: failure
- */
-DS_EXPORT_SYMBOL int
-ds_vlvindex(char **backendList, char **vlvList)
-{
- char startup_line[BIG_LINE];
- char *root;
- char *instroot;
- char **vlvc = NULL;
-
-
- root = ds_get_server_root();
- instroot = ds_get_install_root();
- if ( (root == NULL) || (instroot == NULL) ) {
- return DS_NO_SERVER_ROOT;
- }
-
- PR_snprintf(startup_line, sizeof(startup_line), "%s/bin/slapd/server/%s db2index "
- "-D %s%s/%s "
- "-n %s ",
- root, SLAPD_NAME,
- ENQUOTE, instroot, ENQUOTE,
- backendList[0]);
-
-
- /* Create vlv TAG */
- vlvc=vlvList;
- while( *vlvc != NULL ) {
- PR_snprintf( startup_line, sizeof(startup_line), "%s -T %s%s%s", startup_line,"\"",*vlvc,"\"" );
- vlvc++;
- }
-
- return exec_and_report( startup_line );
-}
-
-/*
- * Create one or more indexes
- * 0: success
- * anything else: failure
- */
-DS_EXPORT_SYMBOL int
-ds_addindex(char **attrList, char *backendName)
-{
- char startup_line[BIG_LINE];
- char *root;
- char *instroot;
-
- root = ds_get_server_root();
- instroot = ds_get_install_root();
-
- if ( (root == NULL) || (instroot == NULL) ) {
- return DS_NO_SERVER_ROOT;
- }
-
- PR_snprintf(startup_line, sizeof(startup_line), "%s/bin/slapd/server/%s db2index "
- "-D %s%s%s "
- "-n %s",
- root, SLAPD_NAME,
- ENQUOTE, instroot, ENQUOTE,
- backendName);
-
- while( *attrList != NULL ) {
- PR_snprintf( startup_line, sizeof(startup_line), "%s -t %s", startup_line, *attrList );
- attrList++;
- }
-
- return exec_and_report( startup_line );
-}
diff --git a/ldap/admin/lib/dsalib_debug.c b/ldap/admin/lib/dsalib_debug.c
deleted file mode 100644
index 6be074ae..00000000
--- a/ldap/admin/lib/dsalib_debug.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#if defined( XP_WIN32 )
-#include <windows.h>
-#endif
-#include "dsalib.h"
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include "nspr.h"
-#include "plstr.h"
-
-#if defined( XP_WIN32 )
-int ldap_debug = 0;
-#endif
-
-DS_EXPORT_SYMBOL void
-ds_log_env(char **envp)
-{
- FILE *file;
- char admin_logfile[PATH_MAX], *tmp_dir;
-
- tmp_dir = ds_get_tmp_dir();
- PL_strncpyz( admin_logfile, tmp_dir, sizeof(admin_logfile) );
-#if defined( XP_WIN32 )
- if( tmp_dir )
- {
- free( tmp_dir );
- tmp_dir = NULL;
- }
-#endif
- PL_strcatn( admin_logfile, sizeof(admin_logfile), "/admin.log");
-
- file = fopen(admin_logfile, "a+");
- if (file != NULL) {
- int i;
- for ( i = 0; envp[i] != (char *) 0; i++ ) {
- char envstr[200];
-
- PR_snprintf(envstr, sizeof(envstr), "%s\n", envp[i]);
- fwrite(envstr, strlen(envstr), 1, file);
- }
- fclose(file);
- }
-}
-
-DS_EXPORT_SYMBOL void
-ds_log_debug_message(char *msg)
-{
- FILE *file;
- char admin_logfile[PATH_MAX], *tmp_dir;
-
- tmp_dir = ds_get_tmp_dir();
- memset( admin_logfile, 0, sizeof( admin_logfile ) );
- PL_strncpyz( admin_logfile, tmp_dir, sizeof(admin_logfile) );
-#if defined( XP_WIN32 )
- if( tmp_dir )
- {
- free( tmp_dir );
- tmp_dir = NULL;
- }
-#endif
- PL_strcatn( admin_logfile, sizeof(admin_logfile), "/admin.log");
-
- file = fopen(admin_logfile, "a+");
- if (file != NULL) {
- fwrite(msg, strlen(msg), 1, file);
- fclose(file);
- }
-}
-
diff --git a/ldap/admin/lib/dsalib_dn.c b/ldap/admin/lib/dsalib_dn.c
deleted file mode 100644
index 8cd43235..00000000
--- a/ldap/admin/lib/dsalib_dn.c
+++ /dev/null
@@ -1,481 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-
-#if defined( XP_WIN32 )
-#include <windows.h>
-#else
-#include <sys/types.h>
-#endif
-#include <string.h>
-#include "dsalib.h"
-#include "portable.h"
-#include <stdlib.h>
-
-#define DNSEPARATOR(c) (c == ',' || c == ';')
-#define SEPARATOR(c) (c == ',' || c == ';' || c == '+')
-#define SPACE(c) (c == ' ' || c == '\n')
-#define NEEDSESCAPE(c) (c == '\\' || c == '"')
-#define B4TYPE 0
-#define INTYPE 1
-#define B4EQUAL 2
-#define B4VALUE 3
-#define INVALUE 4
-#define INQUOTEDVALUE 5
-#define B4SEPARATOR 6
-
-DS_EXPORT_SYMBOL char*
-dn_normalize( char *dn )
-{
- char *d, *s;
- int state, gotesc;
-
- /* Debug( LDAP_DEBUG_TRACE, "=> dn_normalize \"%s\"\n", dn, 0, 0 ); */
-
- gotesc = 0;
- state = B4TYPE;
- for ( d = s = dn; *s; s++ ) {
- switch ( state ) {
- case B4TYPE:
- if ( ! SPACE( *s ) ) {
- state = INTYPE;
- *d++ = *s;
- }
- break;
- case INTYPE:
- if ( *s == '=' ) {
- state = B4VALUE;
- *d++ = *s;
- } else if ( SPACE( *s ) ) {
- state = B4EQUAL;
- } else {
- *d++ = *s;
- }
- break;
- case B4EQUAL:
- if ( *s == '=' ) {
- state = B4VALUE;
- *d++ = *s;
- } else if ( ! SPACE( *s ) ) {
- /* not a valid dn - but what can we do here? */
- *d++ = *s;
- }
- break;
- case B4VALUE:
- if ( *s == '"' ) {
- state = INQUOTEDVALUE;
- *d++ = *s;
- } else if ( ! SPACE( *s ) ) {
- state = INVALUE;
- *d++ = *s;
- }
- break;
- case INVALUE:
- if ( !gotesc && SEPARATOR( *s ) ) {
- while ( SPACE( *(d - 1) ) )
- d--;
- state = B4TYPE;
- if ( *s == '+' ) {
- *d++ = *s;
- } else {
- *d++ = ',';
- }
- } else if ( gotesc && !NEEDSESCAPE( *s ) &&
- !SEPARATOR( *s ) ) {
- *--d = *s;
- d++;
- } else {
- *d++ = *s;
- }
- break;
- case INQUOTEDVALUE:
- if ( !gotesc && *s == '"' ) {
- state = B4SEPARATOR;
- *d++ = *s;
- } else if ( gotesc && !NEEDSESCAPE( *s ) ) {
- *--d = *s;
- d++;
- } else {
- *d++ = *s;
- }
- break;
- case B4SEPARATOR:
- if ( SEPARATOR( *s ) ) {
- state = B4TYPE;
- if ( *s == '+' ) {
- *d++ = *s;
- } else {
- *d++ = ',';
- }
- }
- break;
- default:
- break;
- }
- if ( *s == '\\' ) {
- gotesc = 1;
- } else {
- gotesc = 0;
- }
- }
- *d = '\0';
-
- /* Debug( LDAP_DEBUG_TRACE, "<= dn_normalize \"%s\"\n", dn, 0, 0 ); */
- return( dn );
-}
-
-DS_EXPORT_SYMBOL char*
-ds_dn_expand (char* dn)
-{
- char* edn;
- size_t i = 0;
- char* s;
- int state = B4TYPE;
- int gotesc = 0;
-
- if (dn == NULL) return NULL;
- edn = strdup (dn);
- if (edn == NULL) return NULL;
- for (s = dn; *s != '\0'; ++s, ++i) {
- switch (state) {
- case B4TYPE:
- if ( ! SPACE (*s)) {
- state = INTYPE;
- }
- break;
- case INTYPE:
- if (*s == '=') {
- state = B4VALUE;
- } else if (SPACE (*s)) {
- state = B4EQUAL;
- }
- break;
- case B4EQUAL:
- if (*s == '=') {
- state = B4VALUE;
- }
- break;
- case B4VALUE:
- if (*s == '"') {
- state = INQUOTEDVALUE;
- } else if ( ! SPACE (*s)) {
- state = INVALUE;
- }
- break;
- case INQUOTEDVALUE:
- if (gotesc) {
- if ( ! NEEDSESCAPE (*s)) {
- --i;
- memmove (edn+i, edn+i+1, strlen (edn+i));
- }
- } else {
- if (*s == '"') {
- state = B4SEPARATOR;
- }
- }
- break;
- case INVALUE:
- if (gotesc) {
- if ( ! NEEDSESCAPE (*s) && ! SEPARATOR (*s)) {
- --i;
- memmove (edn+i, edn+i+1, strlen (edn+i));
- }
- break;
- }
- case B4SEPARATOR:
- if (SEPARATOR (*s)) {
- state = B4TYPE;
- if ( ! SPACE (s[1])) {
- /* insert a space following edn[i] */
- edn = (char*) realloc (edn, strlen (edn)+2);
- ++i;
- memmove (edn+i+1, edn+i, strlen (edn+i)+1);
- edn[i] = ' ';
- }
- }
- break;
- default:
- break;
- }
- gotesc = (*s == '\\');
- }
- return edn;
-}
-
-int
-hexchar2int( char c )
-{
- if ( '0' <= c && c <= '9' ) {
- return( c - '0' );
- }
- if ( 'a' <= c && c <= 'f' ) {
- return( c - 'a' + 10 );
- }
- if ( 'A' <= c && c <= 'F' ) {
- return( c - 'A' + 10 );
- }
- return( -1 );
-}
-
-/*
- * substr_dn_normalize - map a DN to a canonical form.
- * The DN is read from *dn through *(end-1) and normalized in place.
- * The new end is returned; that is, the canonical form is in
- * *dn through *(the_return_value-1).
- */
-
-/* The goals of this function are:
- * 1. be compatible with previous implementations. Especially, enable
- * a server running this code to find database index keys that were
- * computed by Directory Server 3.0 with a prior version of this code.
- * 2. Normalize in place; that is, avoid allocating memory to contain
- * the canonical form.
- * 3. eliminate insignificant differences; that is, any two DNs are
- * not significantly different if and only if their canonical forms
- * are identical (ignoring upper/lower case).
- * 4. handle a DN in the syntax defined by RFC 2253.
- * 5. handle a DN in the syntax defined by RFC 1779.
- *
- * Goals 3 through 5 are not entirely achieved by this implementation,
- * because it can't be done without violating goal 1. Specifically,
- * DNs like cn="a,b" and cn=a\,b are not mapped to the same canonical form,
- * although they're not significantly different. Likewise for any pair
- * of DNs that differ only in their choice of quoting convention.
- * A previous version of this code changed all DNs to the most compact
- * quoting convention, but that violated goal 1, since Directory Server
- * 3.0 did not.
- *
- * Also, this implementation handles the \xx convention of RFC 2253 and
- * consequently violates RFC 1779, according to which this type of quoting
- * would be interpreted as a sequence of 2 numerals (not a single byte).
- */
-
-DS_EXPORT_SYMBOL char *
-dn_normalize_convert( char *dn )
-{
- /* \xx is changed to \c.
- \c is changed to c, unless this would change its meaning.
- All values that contain 2 or more separators are "enquoted";
- all other values are not enquoted.
- */
- char *value, *value_separator;
- char *d, *s;
- char *end;
-
- int gotesc = 0;
- int state = B4TYPE;
- if (NULL == dn)
- return dn;
-
- end = dn + strlen(dn);
- for ( d = s = dn; s != end; s++ ) {
- switch ( state ) {
- case B4TYPE:
- if ( ! SPACE( *s ) ) {
- state = INTYPE;
- *d++ = *s;
- }
- break;
- case INTYPE:
- if ( *s == '=' ) {
- state = B4VALUE;
- *d++ = *s;
- } else if ( SPACE( *s ) ) {
- state = B4EQUAL;
- } else {
- *d++ = *s;
- }
- break;
- case B4EQUAL:
- if ( *s == '=' ) {
- state = B4VALUE;
- *d++ = *s;
- } else if ( ! SPACE( *s ) ) {
- /* not a valid dn - but what can we do here? */
- *d++ = *s;
- }
- break;
- case B4VALUE:
- if ( *s == '"' || ! SPACE( *s ) ) {
- value_separator = NULL;
- value = d;
- state = ( *s == '"' ) ? INQUOTEDVALUE : INVALUE;
- *d++ = *s;
- }
- break;
- case INVALUE:
- if ( gotesc ) {
- if ( SEPARATOR( *s ) ) {
- if ( value_separator ) value_separator = dn;
- else value_separator = d;
- } else if ( ! NEEDSESCAPE( *s ) ) {
- --d; /* eliminate the \ */
- }
- } else if ( SEPARATOR( *s ) ) {
- while ( SPACE( *(d - 1) ) )
- d--;
- if ( value_separator == dn ) { /* 2 or more separators */
- /* convert to quoted value: */
- auto char *L = NULL;
- auto char *R;
- for ( R = value; (R = strchr( R, '\\' )) && (R < d); L = ++R ) {
- if ( SEPARATOR( R[1] )) {
- if ( L == NULL ) {
- auto const size_t len = R - value;
- if ( len > 0 ) memmove( value+1, value, len );
- *value = '"'; /* opening quote */
- value = R + 1;
- } else {
- auto const size_t len = R - L;
- if ( len > 0 ) {
- memmove( value, L, len );
- value += len;
- }
- --d;
- }
- }
- }
- memmove( value, L, d - L + 1 );
- *d++ = '"'; /* closing quote */
- }
- state = B4TYPE;
- *d++ = (*s == '+') ? '+' : ',';
- break;
- }
- *d++ = *s;
- break;
- case INQUOTEDVALUE:
- if ( gotesc ) {
- if ( ! NEEDSESCAPE( *s ) ) {
- --d; /* eliminate the \ */
- }
- } else if ( *s == '"' ) {
- state = B4SEPARATOR;
- if ( value_separator == dn /* 2 or more separators */
- || SPACE( value[1] ) || SPACE( d[-1] ) ) {
- *d++ = *s;
- } else {
- /* convert to non-quoted value: */
- if ( value_separator == NULL ) { /* no separators */
- memmove ( value, value+1, (d-value)-1 );
- --d;
- } else { /* 1 separator */
- memmove ( value, value+1, (value_separator-value)-1 );
- *(value_separator - 1) = '\\';
- }
- }
- break;
- }
- if ( SEPARATOR( *s )) {
- if ( value_separator ) value_separator = dn;
- else value_separator = d;
- }
- *d++ = *s;
- break;
- case B4SEPARATOR:
- if ( SEPARATOR( *s ) ) {
- state = B4TYPE;
- *d++ = (*s == '+') ? '+' : ',';
- }
- break;
- default:
-/* LDAPDebug( LDAP_DEBUG_ANY,
- "slapi_dn_normalize - unknown state %d\n", state, 0, 0 );*/
- break;
- }
- if ( *s != '\\' ) {
- gotesc = 0;
- } else {
- gotesc = 1;
- if ( s+2 < end ) {
- auto int n = hexchar2int( s[1] );
- if ( n >= 0 ) {
- auto int n2 = hexchar2int( s[2] );
- if ( n2 >= 0 ) {
- n = (n << 4) + n2;
- if (n == 0) { /* don't change \00 */
- *d++ = *++s;
- *d++ = *++s;
- gotesc = 0;
- } else { /* change \xx to a single char */
- ++s;
- *(unsigned char*)(s+1) = n;
- }
- }
- }
- }
- }
- }
-
- /* Trim trailing spaces */
- while ( d != dn && *(d - 1) == ' ' ) d--;
-
- *d = 0;
-
- return( dn );
-}
-
-/* if dn contains an unescaped quote return true */
-DS_EXPORT_SYMBOL int
-ds_dn_uses_LDAPv2_quoting(const char *dn)
-{
- const char ESC = '\\';
- const char Q = '"';
- int ret = 0;
- const char *p = 0;
-
- /* check dn for a even number (incl. 0) of ESC followed by Q */
- if (!dn)
- return ret;
-
- p = strchr(dn, Q);
- if (p)
- {
- int nESC = 0;
- for (--p; (p >= dn) && (*p == ESC); --p)
- ++nESC;
- if (!(nESC % 2))
- ret = 1;
- }
-
- return ret;
-}
diff --git a/ldap/admin/lib/dsalib_filename.c b/ldap/admin/lib/dsalib_filename.c
deleted file mode 100644
index 7395859a..00000000
--- a/ldap/admin/lib/dsalib_filename.c
+++ /dev/null
@@ -1,133 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#if defined( XP_WIN32 )
-#include <windows.h>
-#endif
-#include "dsalib.h"
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <ctype.h>
-
-#include "nspr.h"
-
-static char *
-get_month_str(int month)
-{
- static char *month_str[] = {
- "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct",
- "Nov", "Dec"};
-
- if ( (month < 1) || (month > 12) )
- return("Unknown month");
- return(month_str[month - 1]);
-}
-
-/*
- * Returns a string describing the meaning of the filename.
- * Two different formats are supported.
- */
-DS_EXPORT_SYMBOL char *
-ds_get_file_meaning(char *file)
-{
- static char meaning[BIG_LINE];
-#define FILE_EXPECTED_SIZE1 14
-#define FILE_EXPECTED_SIZE2 17
- char *name;
- char *tmp;
- int i;
- int month;
- int day;
- int hour;
- int minute;
- int sec;
- int year;
-
- /*
- * Expect a file name in format 06041996123401 (FILE_EXPECTED_SIZE1)
- * which should return "Jun 4 12:34:01 1996"
- * OR 1996_06_04_123401
- * which should return "Jun 4 12:34:01 1996"
- */
-
- if ( file == NULL )
- return(NULL);
- name = strdup(file);
- if ( name == NULL )
- return(NULL);
- if ( (tmp = strrchr(name, '.')) != NULL )
- *tmp = '\0';
- if ( strlen(name) == FILE_EXPECTED_SIZE1 ) {
- for ( i = 0; i < FILE_EXPECTED_SIZE1; i++ )
- if ( !isdigit(name[i]) )
- return(NULL);
- if ( (sscanf(name, "%2d%2d%4d%2d%2d%2d", &month, &day, &year, &hour,
- &minute, &sec)) == -1 )
- return(NULL);
- } else if ( strlen(name) == FILE_EXPECTED_SIZE2 ) {
- for ( i = 0; i < FILE_EXPECTED_SIZE2; i++ )
- if ( !isdigit(name[i]) )
- if ( name[i] != '_' )
- return(NULL);
- if ( (sscanf(name, "%4d_%2d_%2d_%2d%2d%2d", &year, &month, &day, &hour,
- &minute, &sec)) == -1 )
- return(NULL);
- } else
- return(NULL);
-
- if ( (month < 1) || (month > 12) )
- return(NULL);
- if ( (day < 1) || (day > 31) )
- return(NULL);
- if ( (year < 1000) || (year > 2100) )
- return(NULL);
- if ( (hour < 0) || (hour > 24) )
- return(NULL);
- if ( (minute < 0) || (minute > 60) )
- return(NULL);
- if ( (sec < 0) || (sec > 60) )
- return(NULL);
- PR_snprintf(meaning, sizeof(meaning), "%s % 2d %02d:%02d:%02d %4d", get_month_str(month),
- day, hour, minute, sec, year);
- return(meaning);
-}
diff --git a/ldap/admin/lib/dsalib_html.c b/ldap/admin/lib/dsalib_html.c
deleted file mode 100644
index 1c3377c8..00000000
--- a/ldap/admin/lib/dsalib_html.c
+++ /dev/null
@@ -1,233 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#if defined( XP_WIN32 )
-#include <windows.h>
-#endif
-
-#include "dsalib.h"
-#include "prprf.h"
-#include <sys/types.h>
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <errno.h>
-
-/* holds the contents of the POSTed data from stdin as an array
-of key/value pairs parsed from the key=value input */
-static char **input = 0;
-
-/* This variable is true if the program should assume stdout is connected
- to an HTML context e.g. if this is being run as a normal CGI. It is
- false to indicate that output should not contain HTML formatting,
- Javascript, etc. put plain ol' ASCII only
-*/
-static int formattedOutput = 1;
-
-DS_EXPORT_SYMBOL int
-ds_get_formatted_output(void)
-{
- return formattedOutput;
-}
-
-DS_EXPORT_SYMBOL void
-ds_set_formatted_output(int val)
-{
- formattedOutput = val;
-}
-
-DS_EXPORT_SYMBOL void
-ds_print_file_name(char *fileptr)
-{
- char *meaning;
-
- fprintf(stdout, "%s", fileptr);
- if ( (meaning = ds_get_file_meaning(fileptr)) != NULL ) {
- fprintf(stdout, " (%s)", meaning);
- }
-}
-
-/*
- * Get a CGI variable.
- */
-DS_EXPORT_SYMBOL char *
-ds_get_cgi_var(char *cgi_var_name)
-{
- char *cgi_var_value;
-
- cgi_var_value = (char *) ds_a_get_cgi_var(cgi_var_name, NULL, NULL);
- if ( cgi_var_value == NULL ) {
- /*
- * The ds_a_get_cgi_var() lies! It gives a NULL even if the
- * value is "". So assume the variable is there and
- * return an empty string.
- */
- return("");
- }
- return(cgi_var_value);
-}
-
-/* parse POST input to a CGI program */
-DS_EXPORT_SYMBOL int
-ds_post_begin(FILE *in)
-{
- char *vars = NULL, *tmp = NULL, *decoded_vars = NULL;
- int cl;
-
- if(!(tmp = getenv("CONTENT_LENGTH")))
- {
- ds_report_error(DS_INCORRECT_USAGE, "Browser Error", "Your browser"
- " sent no content length with a POST command."
- " Please be sure to use a fully compliant browser.");
- return 1;
- }
-
- cl = atoi(tmp);
-
- vars = (char *)malloc(cl+1);
-
- if( !(fread(vars, 1, cl, in)) )
- {
- ds_report_error(DS_SYSTEM_ERROR, "CGI error",
- "The POST variables could not be read from stdin.");
- return 1;
- }
-
- vars[cl] = '\0';
-
- decoded_vars = ds_URL_decode(vars);
- free(vars);
-
- input = ds_string_to_vec(decoded_vars);
- free(decoded_vars);
-/*
- for (cl = 0; input[cl]; ++cl)
- printf("ds_post_begin: read cgi var=[%s]\n", input[cl]);
-*/
- return 0;
-}
-
-/* parse GET input to a CGI program */
-DS_EXPORT_SYMBOL void
-ds_get_begin(char *query_string)
-{
- char *decoded_input = ds_URL_decode(query_string);
- input = ds_string_to_vec(decoded_input);
- free(decoded_input);
-}
-
-/*
- Borrowed from libadmin/form_post.c
-*/
-DS_EXPORT_SYMBOL char *
-ds_a_get_cgi_var(char *varname, char *elem_id, char *bongmsg)
-{
- register int x = 0;
- int len = strlen(varname);
- char *ans = NULL;
-
- while(input[x]) {
- /* We want to get rid of the =, so len, len+1 */
- if((!strncmp(input[x], varname, len)) && (*(input[x]+len) == '=')) {
- ans = strdup(input[x] + len + 1);
- if(!strcmp(ans, ""))
- ans = NULL;
- break;
- } else
- x++;
- }
- if(ans == NULL) {
- if ((bongmsg) && strlen(bongmsg))
- {
- /* prefix error with varname so output interpreters can determine */
- /* which parameter is in error */
- char *msg;
- if (!ds_get_formatted_output() && (varname != NULL))
- {
- msg = PR_smprintf("%s.error: %s %s", varname, elem_id, bongmsg);
- }
- else
- {
- msg = PR_smprintf("error: %s %s", elem_id, bongmsg);
- }
- ds_show_message(msg);
- PR_smprintf_free(msg);
- }
- else
- return NULL;
- }
- else
- return(ans);
- /* shut up gcc */
- return NULL;
-}
-
-DS_EXPORT_SYMBOL char **
-ds_string_to_vec(char *in)
-{
- char **ans;
- int vars = 0;
- register int x = 0;
- char *tmp;
-
- in = strdup(in);
-
- while(in[x])
- if(in[x++]=='=')
- vars++;
-
-
- ans = (char **)calloc(vars+1, sizeof(char *));
-
- 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++]=strdup(tmp);
-
- while((tmp = strtok(NULL, "&"))) {
- ans[x++] = strdup(tmp);
- }
-
- free(in);
-
- return(ans);
-}
diff --git a/ldap/admin/lib/dsalib_ldif.c b/ldap/admin/lib/dsalib_ldif.c
deleted file mode 100644
index 1009a4eb..00000000
--- a/ldap/admin/lib/dsalib_ldif.c
+++ /dev/null
@@ -1,413 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#if defined( XP_WIN32 )
-#include <windows.h>
-#include <process.h>
-#include <malloc.h>
-#define popen _popen
-#define pclose _pclose
-#else
-#include <unistd.h>
-#endif
-#include "dsalib.h"
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include "nspr.h"
-#include "plstr.h"
-
-#ifndef XP_WIN32
-#define SCRIPT_SUFFIX "" /* shell scripts have no suffix */
-#else
-#define SCRIPT_SUFFIX ".bat" /* batch file suffix */
-#endif
-
-
-static int
-process_and_report( char *line, int line_size, FILE *cmd )
-{
- int err = 0;
- while(fgets(line, line_size, cmd)) {
- /* Strip off line feeds */
- int ind = strlen( line ) - 1;
-#ifdef DEBUG_CGI
- fprintf(stderr, "read line=[%s] ind=%d\n", line, ind);
-#endif /* DEBUG_CGI */
- fprintf( stdout, ": %s", line );
- fflush(0);
- while ( (ind >= 0) &&
- ((line[ind] == '\n') ||
- (line[ind] == '\r')) ) {
- line[ind] = 0;
- ind--;
- }
- if ( ind < 1 ) {
- continue;
- }
- ds_send_status(line);
- if ( (strstr(line, "bad LDIF") != NULL) ) {
-#ifdef DEBUG_CGI
- fprintf(stderr, "invalid ldif file\n");
-#endif /* DEBUG_CGI */
- err = DS_INVALID_LDIF_FILE;
- } else if ( 0 == err ) {
- if ( (strstr(line, "err=") != NULL) ) {
-#ifdef DEBUG_CGI
- fprintf(stderr, "unknown error\n");
-#endif /* DEBUG_CGI */
- err = DS_UNKNOWN_ERROR;
- }
- }
- }
-#ifdef DEBUG_CGI
- fprintf(stderr, "process_and_report finished err=%d\n", err);
-#endif /* DEBUG_CGI */
- return err;
-}
-
-static int exec_and_report( char *startup_line )
-{
- FILE *cmd = NULL;
- char line[BIG_LINE];
- int haderror = 0;
-
- PATH_FOR_PLATFORM( startup_line );
- alter_startup_line(startup_line);
-
- fflush(stdout);
- cmd = popen(startup_line, "r");
- if(!cmd) {
- printf("could not open pipe [%s]: %d\n",
- startup_line, errno);
-#ifdef DEBUG_CGI
- fprintf(stderr, "could not open pipe [%s]: %d\n",
- startup_line, errno);
-#endif /* DEBUG_CGI */
- return DS_CANNOT_EXEC;
- }
- haderror = process_and_report( line, sizeof(line), cmd );
- pclose(cmd);
-
- return haderror;
-}
-
-/*
- * Execute a shell command.
- * 0: success
- * anything else: failure
- */
-DS_EXPORT_SYMBOL int
-ds_exec_and_report( char *startup_line )
-{
- return exec_and_report( startup_line );
-}
-
-/*
- * Create a database based on a file name.
- * 0: success
- * anything else: failure
- */
-static int
-importldif(char *file, int preserve, char *backend, char *subtree)
-{
- char startup_line[BIG_LINE];
- char *root;
- int haderror = 0;
- int i = 0, error = -1;
- int status;
- struct stat fstats;
- char errbuf[ BIG_LINE ];
- char **db_files = NULL, *changelogdir = NULL;
- int rc;
-
- errbuf[ 0 ] = '\0';
-
- if ( file == NULL ) {
-#ifdef DEBUG_CGI
- fprintf(stderr, "importldif: null file\n");
-#endif /* DEBUG_CGI */
- return DS_NULL_PARAMETER;
- }
- status = ds_get_updown_status();
- if ( status == DS_SERVER_UP ) {
-#ifdef DEBUG_CGI
- fprintf(stderr, "importldif: server is not down\n");
-#endif /* DEBUG_CGI */
- return DS_SERVER_MUST_BE_DOWN;
- }
- if ( (root = ds_get_install_root()) == NULL ) {
-#ifdef DEBUG_CGI
- fprintf(stderr, "importldif: could not get server root\n");
-#endif /* DEBUG_CGI */
- return DS_NO_SERVER_ROOT;
- }
-
- if ( file[strlen(file) - 1] == '\n' ) /* strip out returns */
- file[strlen(file) - 1] = '\0';
-
- /* Make sure the file exists and is not a directory: 34347 */
- if( stat( file, &fstats ) == -1 && errno == ENOENT ) {
-#ifdef DEBUG_CGI
- fprintf(stderr, "importldif: could not open %s\n", file);
-#endif /* DEBUG_CGI */
- return DS_CANNOT_OPEN_LDIF_FILE;
- } else if( fstats.st_mode & S_IFDIR ) {
-#ifdef DEBUG_CGI
- fprintf(stderr, "importldif: not a file %s\n", file);
-#endif /* DEBUG_CGI */
- return DS_IS_A_DIRECTORY;
- }
-
- if ( preserve ) {
- PR_snprintf(startup_line, BIG_LINE, "%s%cldif2db%s -i %s%s%s",
- root, FILE_SEP, SCRIPT_SUFFIX,
- ENQUOTE, file, ENQUOTE);
- } else if (backend) {
- PR_snprintf(startup_line, BIG_LINE, "%s%cldif2db%s -n %s%s%s -i %s%s%s",
- root, FILE_SEP, SCRIPT_SUFFIX,
- ENQUOTE, backend, ENQUOTE,
- ENQUOTE, file, ENQUOTE);
- } else if (subtree) {
- PR_snprintf(startup_line, BIG_LINE, "%s%cldif2db%s -s %s%s%s -i %s%s%s",
- root, FILE_SEP, SCRIPT_SUFFIX,
- ENQUOTE, subtree, ENQUOTE,
- ENQUOTE, file, ENQUOTE);
- } else {
- PR_snprintf(startup_line, BIG_LINE, "%s%cldif2db%s -i %s%s%s -noconfig",
- root, FILE_SEP, SCRIPT_SUFFIX,
- ENQUOTE, file, ENQUOTE);
- }
- alter_startup_line(startup_line);
- fflush(stdout);
-#ifdef DEBUG_CGI
- fprintf(stderr, "importldif: executing %s\n", startup_line);
-#endif /* DEBUG_CGI */
- error = exec_and_report(startup_line);
- /*error = system(startup_line);*/
- if ( error != 0 ) {
-#ifdef DEBUG_CGI
- fprintf(stderr, "importldif: error=%d\n", error);
-#endif /* DEBUG_CGI */
- return error;
- }
-
- /* Remove the changelog database, if present */
- changelogdir = ds_get_config_value(0xdeadbeef);
- if ( changelogdir != NULL ) {
- db_files = ds_get_file_list( changelogdir );
- if ( db_files != NULL ) {
- ds_send_status("Removing changelog database...");
- }
- for ( i = 0; db_files != NULL && db_files[ i ] != NULL; i++ ) {
- char sbuf[ BIG_LINE ];
- char filename[ BIG_LINE ];
- if ( strlen( db_files[ i ]) > 0 ) {
- PR_snprintf( filename, BIG_LINE, "%s%c%s", changelogdir,
- FILE_SEP, db_files[ i ]);
- PR_snprintf(sbuf, BIG_LINE, "Removing %s", filename);
- ds_send_status( sbuf );
- rc = unlink( filename);
- if ( rc != 0 ) {
- PR_snprintf( errbuf, BIG_LINE, "Warning: some files in %s could not "
- "be removed\n", changelogdir );
- haderror++;
- }
- }
- }
- }
- if ( strlen( errbuf ) > 0 ) {
- ds_send_error( errbuf, 0 );
- }
-
- return error;
-}
-
-/*
- * Create a database based on a file name.
- * 0: success
- * anything else: failure
- */
-DS_EXPORT_SYMBOL int
-ds_ldif2db(char *file)
-{
- return importldif( file, 0, NULL, NULL );
-}
-
-/*
- * Create a database based on a file name.
- * 0: success
- * anything else: failure
- */
-DS_EXPORT_SYMBOL int
-ds_ldif2db_preserve(char *file)
-{
- return importldif( file, 1, NULL, NULL );
-}
-
-/*
- * import an ldif file into a named backend or subtree
- * 0: success
- * anything else: failure
- */
-DS_EXPORT_SYMBOL int
-ds_ldif2db_backend_subtree(char *file, char *backend, char *subtree)
-{
- return importldif( file, 0, backend, subtree );
-}
-
-/*
- * Create a LDIF file based on a file name.
- * 0: success
- * anything else: failure
- */
-DS_EXPORT_SYMBOL int
-ds_db2ldif_subtree(char *file, char *subtree)
-{
- char startup_line[BIG_LINE];
- char statfile[PATH_MAX];
- char outfile[PATH_MAX];
- char scriptfile[PATH_MAX];
- char *tmp_dir;
- char *root;
- int haderror = 0;
- int error = -1;
- FILE *sf = NULL;
-
- if ( (root = ds_get_install_root()) == NULL ) {
- return DS_NO_SERVER_ROOT;
- }
-
- if ( (file == NULL) || (strlen(file) == 0) )
- file = NULL;
-
- tmp_dir = ds_get_tmp_dir();
- PR_snprintf(statfile, PATH_MAX, "%s%cdb2ldif.%d", tmp_dir, FILE_SEP, (int) getpid());
-
-#if defined( XP_WIN32 )
- if( file == NULL )
- {
- time_t ltime;
- file = malloc( BIG_LINE );
-
- time( &ltime );
- PR_snprintf( file, BIG_LINE, "%s", ctime( &ltime ) );
- ds_timetofname( file );
- }
-#endif
-
- if ( file == NULL )
- *outfile = 0;
- else
- PL_strncpyz( outfile, file, sizeof(outfile) );
-
- PR_snprintf(scriptfile, PATH_MAX, "%s%cdb2ldif", root, FILE_SEP);
-
- PATH_FOR_PLATFORM( outfile );
- PATH_FOR_PLATFORM( scriptfile );
-
- if ( subtree == NULL ) {
- PR_snprintf(startup_line, sizeof(startup_line),
- "%s "
- "%s%s%s > "
- "%s%s%s 2>&1",
- scriptfile,
- ENQUOTE, outfile, ENQUOTE,
- ENQUOTE, statfile, ENQUOTE);
- } else {
- PR_snprintf(startup_line, sizeof(startup_line),
- "%s "
- "%s%s%s "
- "-s \"%s\" > "
- "%s%s%s 2>&1",
- scriptfile,
- ENQUOTE, outfile, ENQUOTE,
- subtree,
- ENQUOTE, statfile, ENQUOTE);
- }
-
- fflush(0);
- alter_startup_line(startup_line);
- error = system(startup_line);
- if ( error == -1 ) {
- return DS_CANNOT_EXEC;
- }
- sf = fopen(statfile, "r");
- if( sf ) {
- while ( fgets(startup_line, BIG_LINE, sf) ) {
- /*
- The db2ldif process will usually print out a summary at the
- end, but that is not an error
- */
- char *ptr = strstr(startup_line, "Processed");
- if (ptr && strstr(ptr, "entries."))
- {
- ds_show_message(startup_line);
- }
- else
- {
- haderror = 1;
- ds_send_error(startup_line, 0);
- }
- }
- fclose(sf);
- unlink(statfile);
- }
-
- if ( haderror )
- return DS_UNKNOWN_ERROR;
- return 0;
-}
-
-/*
- * Create a LDIF file based on a file name.
- * 0: success
- * anything else: failure
- */
-DS_EXPORT_SYMBOL int
-ds_db2ldif(char *file)
-{
- return ds_db2ldif_subtree(file, NULL);
-}
diff --git a/ldap/admin/lib/dsalib_location.c b/ldap/admin/lib/dsalib_location.c
deleted file mode 100644
index 7b4ae627..00000000
--- a/ldap/admin/lib/dsalib_location.c
+++ /dev/null
@@ -1,273 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#if defined( XP_WIN32 )
-#include <windows.h>
-#endif
-#include "dsalib.h"
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include "nspr.h"
-#include "plstr.h"
-
-/*
- * Returns the server root. Info is
- * returned in a static area. The caller must copy it
- * for reuse if needed.
- */
-DS_EXPORT_SYMBOL char *
-ds_get_server_root()
-{
- char *root;
-
- if ( (root = getenv("NETSITE_ROOT")) == NULL )
- return(NULL);
-
- /* WIN32: Needed to take care of embedded space, */
- /* otherwise system() call fails */
- root = ds_makeshort( root );
-
- return root;
-}
-
-/*
- * Returns the install location of the server. Info is
- * returned in a static area. The caller must copy it
- * for reuse if needed.
- */
-DS_EXPORT_SYMBOL char *
-ds_get_install_root()
-{
- char *root;
- char *ds_name;
- static char install_root[PATH_MAX];
-
- if ( (root = ds_get_server_root()) == NULL )
- return(NULL);
- if ( (ds_name = ds_get_server_name()) == NULL )
- return(NULL);
-
- PR_snprintf(install_root, sizeof(install_root), "%s/%s", root, ds_name);
- return(install_root);
-}
-
-/*
- * Returns the config file location of the server. Info is
- * returned in a static area. The caller must copy it
- * for reuse if needed.
- */
-DS_EXPORT_SYMBOL char *
-ds_get_config_dir()
-{
- return getenv("DS_CONFIG_DIR");
-}
-
-/*
- * set config_dir to environment variable DS_CONFIG_DIR
- * to retrieve the value using ds_get_config_dir later.
- */
-DS_EXPORT_SYMBOL void
-ds_set_config_dir(char *config_dir)
-{
- static char env[PATH_MAX];
- PR_snprintf(env, sizeof(env), "DS_CONFIG_DIR=%s", config_dir);
- putenv(env);
-}
-
-/*
- * Returns the run dir of the server, where pid files are put.
- * Info is returned in a static area. The caller must copy it
- * for reuse if needed.
- */
-DS_EXPORT_SYMBOL char *
-ds_get_run_dir()
-{
- return getenv("DS_RUN_DIR");
-}
-
-/*
- * set run_dir to environment variable DS_RUN_DIR
- * to retrieve the value using ds_get_run_dir later.
- */
-DS_EXPORT_SYMBOL void
-ds_set_run_dir(char *run_dir)
-{
- static char env[PATH_MAX];
- PR_snprintf(env, sizeof(env), "DS_RUN_DIR=%s", run_dir);
- putenv(env);
-}
-
-/*
- * Returns the bakup dir of the server, where db backup files are put.
- * Info is returned in a static area. The caller must copy it
- * for reuse if needed.
- */
-DS_EXPORT_SYMBOL char *
-ds_get_bak_dir()
-{
- return getenv("DS_BAK_DIR");
-}
-
-/*
- * set bak_dir to environment variable DS_BAK_DIR
- * to retrieve the value using ds_get_bak_dir later.
- */
-DS_EXPORT_SYMBOL void
-ds_set_bak_dir(char *bak_dir)
-{
- static char env[PATH_MAX];
- PR_snprintf(env, sizeof(env), "DS_BAK_DIR=%s", bak_dir);
- putenv(env);
-}
-
-/*
- * Returns the tmp dir of the server, where tmp files are put.
- * Info is returned in a static area. The caller must copy it
- * for reuse if needed.
- */
-DS_EXPORT_SYMBOL char *
-ds_get_tmp_dir()
-{
- return getenv("DS_TMP_DIR");
-}
-
-/*
- * set bak_dir to environment variable DS_TMP_DIR
- * to retrieve the value using ds_get_tmp_dir later.
- */
-DS_EXPORT_SYMBOL void
-ds_set_tmp_dir(char *tmp_dir)
-{
- static char env[PATH_MAX];
- PR_snprintf(env, sizeof(env), "DS_TMP_DIR=%s", tmp_dir);
- putenv(env);
-}
-
-/*
- * Returns the install location of the server under the admserv
- * directory.
- */
-DS_EXPORT_SYMBOL char *
-ds_get_admserv_based_root()
-{
- char *root;
- char *ds_name;
- static char install_root[PATH_MAX];
-
- if ( (root = getenv("ADMSERV_ROOT")) == NULL )
- return(NULL);
- if ( (ds_name = ds_get_server_name()) == NULL )
- return(NULL);
- PR_snprintf(install_root, sizeof(install_root), "%s/%s", root, ds_name);
- return(install_root);
-}
-
-DS_EXPORT_SYMBOL char *
-ds_get_server_name()
-{
- if( getenv("SERVER_NAMES") )
- return( getenv("SERVER_NAMES") );
- else {
- static char logfile[PATH_MAX];
- char *buf;
- char *out = logfile;
- buf = getenv("SCRIPT_NAME");
- if ( buf && (*buf == '/') )
- buf++;
- while ( *buf && (*buf != '/') ) {
- *out++ = *buf++;
- }
- *out = 0;
- return logfile;
- }
-}
-
-DS_EXPORT_SYMBOL char *
-ds_get_logfile_name(int config_type)
-{
- char *filename;
- char **ds_config = NULL;
- static char logfile[PATH_MAX+1];
-
- if ( (ds_config = ds_get_config(DS_REAL_CONFIG)) == NULL ) {
- /* For DS 4.0, no error output if file doesn't exist - that's
- a normal situation */
- /* ds_send_error("ds_get_config(DS_REAL_CONFIG) == NULL", 0); */
- return(NULL);
- }
- filename = ds_get_value(ds_config, ds_get_var_name(config_type), 0, 1);
-
- if ( filename == NULL ) {
- /* For DS 4.0, no error output if file doesn't exist - that's
- a normal situation */
- /* ds_send_error("ds_get_logfile_name: filename == NULL", 0); */
- return(NULL);
- }
- if ( ((int) strlen(filename)) >= PATH_MAX ) {
- ds_send_error("ds_get_logfile_name: filename too long", 0);
- free(filename);
- return(NULL);
- }
- PL_strncpyz(logfile, filename, sizeof(logfile));
- free(filename);
- return(logfile);
-}
-
-DS_EXPORT_SYMBOL char *
-ds_get_errors_name()
-{
- return( ds_get_logfile_name(DS_ERRORLOG) );
-}
-
-DS_EXPORT_SYMBOL char *
-ds_get_access_name()
-{
- return( ds_get_logfile_name(DS_ACCESSLOG) );
-}
-
-DS_EXPORT_SYMBOL char *
-ds_get_audit_name()
-{
- return( ds_get_logfile_name(DS_AUDITFILE) );
-}
-
diff --git a/ldap/admin/lib/dsalib_pw.c b/ldap/admin/lib/dsalib_pw.c
deleted file mode 100644
index 0696f7cf..00000000
--- a/ldap/admin/lib/dsalib_pw.c
+++ /dev/null
@@ -1,169 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-/*
- * Adjust password policy management related variables.
- *
- * Valerie Chu
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <ctype.h>
-#include <sys/types.h>
-#include "ldap.h"
-#include "ldif.h"
-#include "sechash.h"
-#include "dsalib.h"
-#include "dsalib_pw.h"
-
-#include "prtime.h"
-#include "prlong.h"
-#include "prmem.h"
-
-#include <pk11func.h>
-#include <pk11pqg.h>
-
-#define SHA1_SALT_LENGTH 8 /* number of bytes of data in salt */
-#define PWD_HASH_PREFIX_START '{'
-#define PWD_HASH_PREFIX_END '}'
-
-#define SALTED_SHA1_SCHEME_NAME "SSHA"
-#define SALTED_SHA1_NAME_LEN 4
-
-/*
- WARNING: The following code is blatantly copied from the server
- pwdstorage ssha_pwd.c plugin. It would be nice to share this
- code with the server. The problem is that the server wants to
- use slapi_ch_malloc to allocate the memory for the returned
- password - this function is not available outside the server
- (as in the setup programs that also want to hash the password)
- We need to figure out a way to put this code into a library
- in such a way that the memory allocation functions to use
- can be passed in or set beforehand.
-*/
-
-static void
-ssha_rand_array(void *randx, size_t len)
-{
- PK11_RandomUpdate(randx, len);
- PK11_GenerateRandom((unsigned char *)randx, (int)len);
-}
-
-/*
- * A salted SHA1 hash
- * if salt is null, no salt is used (this is for backward compatibility)
-*/
-SECStatus
-sha1_salted_hash(unsigned char *hash_out, char *pwd, struct berval *salt)
-{
- PK11Context *ctx;
- unsigned int outLen;
- SECStatus rc;
-
- if (salt && salt->bv_len) {
- ctx = PK11_CreateDigestContext(SEC_OID_SHA1);
- if (ctx == NULL) {
- rc = SECFailure;
- }
- else {
- PK11_DigestBegin(ctx);
- PK11_DigestOp(ctx, (unsigned char*)pwd, strlen(pwd));
- PK11_DigestOp(ctx, (unsigned char*)(salt->bv_val), salt->bv_len);
- PK11_DigestFinal(ctx, hash_out, &outLen, SHA1_LENGTH);
- PK11_DestroyContext(ctx, 1);
- if (outLen == SHA1_LENGTH)
- rc = SECSuccess;
- else
- rc = SECFailure;
- }
- }
- else {
- /*backward compatibility*/
- rc = PK11_HashBuf(SEC_OID_SHA1, hash_out, (unsigned char *)pwd, strlen(pwd));
- }
-
- return rc;
-}
-
-char *
-salted_sha1_pw_enc( char *pwd )
-{
- unsigned char hash[ SHA1_LENGTH + SHA1_SALT_LENGTH ];
- unsigned char *salt = hash + SHA1_LENGTH;
- struct berval saltval;
- char *enc;
-
- saltval.bv_val = (void*)salt;
- saltval.bv_len = SHA1_SALT_LENGTH;
-
- /* generate a new random salt */
- /* Note: the uninitialized salt array provides a little extra entropy
- * to the random array generation, but it is not really needed since
- * PK11_GenerateRandom takes care of seeding. In any case, it doesn't
- * hurt. */
- ssha_rand_array( salt, SHA1_SALT_LENGTH );
-
- /* SHA1 hash the user's key */
- if ( sha1_salted_hash( hash, pwd, &saltval ) != SECSuccess ) {
- return( NULL );
- }
-
- if (( enc = PR_Malloc( 3 + SALTED_SHA1_NAME_LEN +
- LDIF_BASE64_LEN(sizeof(hash)))) == NULL ) {
- return( NULL );
- }
-
- sprintf( enc, "%c%s%c", PWD_HASH_PREFIX_START, SALTED_SHA1_SCHEME_NAME,
- PWD_HASH_PREFIX_END );
- (void)ldif_base64_encode( hash, enc + 2 + SALTED_SHA1_NAME_LEN,
- sizeof(hash), -1 );
-
- return( enc );
-}
-
-DS_EXPORT_SYMBOL char *
-ds_salted_sha1_pw_enc (char* pwd)
-{
- return( salted_sha1_pw_enc(pwd) );
-}
diff --git a/ldap/admin/lib/dsalib_tailf.c b/ldap/admin/lib/dsalib_tailf.c
deleted file mode 100644
index a9db5ce3..00000000
--- a/ldap/admin/lib/dsalib_tailf.c
+++ /dev/null
@@ -1,244 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#if defined( XP_WIN32 )
-#include <windows.h>
-#endif
-#include <ctype.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/stat.h>
-#include "dsalib.h"
-#include "prthread.h"
-#include "plstr.h"
-
-/*
- * Function: adjustFile
- * Property: Adjust the file offset to the "tail" of the file
- * Called by: DisplayTail
- * Return: -1 for error, else file size
- */
-static int
-adjustFile(FILE *fp, int curSize)
-{
- struct stat statBuf;
- int fd = fileno(fp);
-
- if ( fstat(fd, &statBuf) == -1 )
- return(-1);
- if ( statBuf.st_size < curSize ) /* file has shrunk! */
- {
- if ( fseek(fp, 0L, 0) == -1 ) /* get back to the beginning */
- return(-1);
- }
- curSize = (int) statBuf.st_size;
- if ( !curSize )
- curSize = 1;
- return(curSize);
-}
-
-/*
- * Function: wrapLines
- * Property: wrap lines at 50 characters. When a wrap point is encountered,
- * insert the string "\n", since the buffer is going to be placed
- * inside a JavaScript alert() call.
- * Called by: ds_display_tail
- * Return: pointer to wrapped buffer. Caller should free.
- */
-static char *
-wrapLines( char *buf )
-{
- char *src = buf;
- char *obuf, *dst;
- int lwidth = 0;
-
- obuf = malloc( strlen( buf ) * 2 ); /* conservative */
- if ( obuf == NULL ) {
- return NULL;
- }
- dst = obuf;
- while ( *src != '\0' ) {
- if (( ++lwidth > 50 ) && isspace( *src )) {
- *dst++ = '\\';
- *dst++ = 'n';
- lwidth = 0;
- src++;
- } else {
- *dst++ = *src++;
- }
- }
- *dst = '\0';
- return obuf;
-}
-
-DS_EXPORT_SYMBOL int
-ds_get_file_size(char *fileName)
-{
- struct stat statBuf;
-
- if ( fileName == NULL )
- return(0);
-
- if ( stat(fileName, &statBuf) == -1 )
- return(0);
-
- return(statBuf.st_size);
-}
-
-/*
- * Function: ds_display_tail
- * Property: follow the tail and display it for timeOut secs or until the line
- * read from the file contains the string doneMsg; the lastLine, if not null,
- * will be filled in with the last line read from the file; this is useful
- * for determining why the server failed to start e.g. port in use, ran out
- * of semaphores, database is corrupted, etc.
- * Calls: adjustFile
- */
-DS_EXPORT_SYMBOL void
-ds_display_tail(char *fileName, int timeOut, int startSeek, char *doneMsg,
- char *lastLine)
-{
- FILE *fp = NULL;
- int fd;
- char msgBuf[BIG_LINE];
- struct stat statBuf;
- int curSize;
- int i = timeOut;
-
- if (lastLine != NULL)
- lastLine[0] = 0;
-
- if ( fileName == NULL )
- return;
- /*
- * Open the file.
- * Try to keep reading it assuming that it may get truncated.
- */
- while (i && !fp)
- {
- fp = fopen(fileName, "r");
- if (!fp)
- {
- PR_Sleep(PR_SecondsToInterval(1));
- --i;
- /* need to print something so http connection doesn't
- timeout and also to let the user know something is
- happening . . .
- */
- if (!(i % 10))
- {
- ds_send_status("Attempting to obtain server status . . .");
- }
- }
- }
-
- if (!i || !fp)
- return;
-
- fd = fileno(fp);
- if ( fstat(fd, &statBuf) == -1 ) {
- (void) fclose(fp);
- return;
- }
- curSize = (int) statBuf.st_size;
- if ( startSeek < curSize )
- curSize = startSeek;
- if ( curSize > 0 )
- if ( fseek(fp, curSize, SEEK_SET) == -1 ) {
- (void) fclose(fp);
- return;
- }
- if ( !curSize )
- curSize = 1; /* ensure minimum */
-
- while ( i )
- {
- int newCurSize;
-
- newCurSize = curSize = adjustFile(fp, curSize);
- if ( curSize == -1 ) {
- (void) fclose(fp);
- return;
- }
- while ( fgets(msgBuf, sizeof(msgBuf), fp) )
- {
- char *tmp;
- if (lastLine != NULL)
- PL_strncpyz(lastLine, msgBuf, BIG_LINE);
- if ( (tmp = strchr(msgBuf, ((int) '\n'))) != NULL )
- *tmp = '\0'; /* strip out real newlines from here */
- ds_send_status(msgBuf);
- if ( (strstr(msgBuf, "WARNING: ") != NULL) ||
- (strstr(msgBuf, "ERROR: ") != NULL) ) {
- char *wrapBuf;
-
- wrapBuf = wrapLines( msgBuf );
- if ( wrapBuf != NULL ) {
- ds_send_error(wrapBuf, 5);
- } else {
- ds_send_error(msgBuf, 5);
- }
- }
- if ( (doneMsg != NULL) && (strstr(msgBuf, doneMsg)) ) {
- (void) fclose(fp);
- return;
- }
- newCurSize = adjustFile(fp, newCurSize);
- if ( newCurSize == -1 ) {
- (void) fclose(fp);
- return;
- }
- }
- if ( ferror(fp) ) {
- (void) fclose(fp);
- return;
- }
- clearerr(fp); /* clear eof condition */
- PR_Sleep(PR_SecondsToInterval(1));
- if ( newCurSize != curSize )
- i = timeOut; /* keep going till no more changes */
- else
- i--;
- }
- (void) fclose(fp);
-}
diff --git a/ldap/admin/lib/dsalib_updown.c b/ldap/admin/lib/dsalib_updown.c
deleted file mode 100644
index 6714f205..00000000
--- a/ldap/admin/lib/dsalib_updown.c
+++ /dev/null
@@ -1,738 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#if defined( XP_WIN32 )
-#include <windows.h>
-#include <process.h>
-#include "regparms.h"
-#else
-#include <signal.h>
-#include <sys/signal.h>
-#include <unistd.h>
-#endif
-#include <sys/types.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <errno.h>
-#include "dsalib.h"
-#include <string.h>
-#include "nspr.h"
-
-#if defined( XP_WIN32 )
-SC_HANDLE schService;
-SC_HANDLE schSCManager;
-
-int StartServer();
-int StopandRestartServer();
-int StopServer();
-
-int StopNetscapeProgram();
-int StartNetscapeProgram();
-
-int StopNetscapeService();
-int StartNetscapeService();
-void WaitForServertoStop();
-#endif
-
-/*
- * Get status for the Directory Server.
- * 0 -- down
- * 1 -- up
- * -1 -- unknown
- */
-#if !defined( XP_WIN32 )
-static pid_t server_pid;
-
-DS_EXPORT_SYMBOL int
-ds_get_updown_status()
-{
- char pid_file_name[BIG_LINE];
- char *rundir;
- FILE *pidfile;
- int ipid = -1;
- int status = 0;
-
- if ( (rundir = ds_get_run_dir()) == NULL ) {
- fprintf(stderr, "ds_get_updown_status: could not get install root\n");
- return(DS_SERVER_UNKNOWN);
- }
- PR_snprintf(pid_file_name, BIG_LINE, "%s/%s.pid", rundir, ds_get_server_name());
- pidfile = fopen(pid_file_name, "r");
- if ( pidfile == NULL ) {
-/*
- fprintf(stderr,
- "ds_get_updown_status: could not open pid file=%s errno=%d\n",
- pid_file_name, errno);
-*/
- return(DS_SERVER_DOWN);
- }
- status = fscanf(pidfile, "%d\n", &ipid);
- fclose(pidfile);
- if ( status == -1 ) {
- fprintf(stderr,
- "ds_get_updown_status: pidfile=%s server_pid=%d errno=%d\n",
- pid_file_name, ipid, errno);
- unlink(pid_file_name); /* junk in file? */
- return(DS_SERVER_DOWN);
- }
- server_pid = (pid_t) ipid;
- if ( (status = kill(server_pid, 0)) != 0 && errno != EPERM ) {
- /* we should get ESRCH if the server is down, anything else may be
- a real problem */
- if (errno != ESRCH) {
- fprintf(stderr,
- "ds_get_updown_status: pidfile=%s server_pid=%d status=%d errno=%d\n",
- pid_file_name, server_pid, status, errno);
- }
- unlink(pid_file_name); /* pid does not exist! */
- return(DS_SERVER_DOWN);
- }
- return(DS_SERVER_UP);
-}
-#else
-DS_EXPORT_SYMBOL int
-ds_get_updown_status()
-{
- char *ds_name = ds_get_server_name();
- HANDLE hServerDoneEvent = NULL;
-
- /* watchdog.c creates a global event of this same name */
- if((hServerDoneEvent = OpenEvent(EVENT_ALL_ACCESS, TRUE, ds_name)) != NULL)
- {
- CloseHandle(hServerDoneEvent);
- return(DS_SERVER_UP);
- }
- if(GetLastError() == ERROR_ACCESS_DENIED) /* it exists */
- return(DS_SERVER_UP);
-
- /* assume it's not running. */
- return(DS_SERVER_DOWN);
-}
-#endif
-
-/*
- This function does not require calling ds_get_config(), but requires
- that that information be passed in. This is very useful for starting
- the server during installation, because we already have all of the
- configuration information in memory, we don't need to read it in
-*/
-DS_EXPORT_SYMBOL int
-ds_bring_up_server_install(int verbose, char *root, char *errorlog)
-{
-#if !defined( XP_WIN32 )
- char startup_line[BIG_LINE];
- char statfile[PATH_MAX];
- char *tmp_dir;
-#endif
- int error = -1;
- int status = DS_SERVER_DOWN;
- int cur_size = 0;
- FILE *sf = NULL;
- char msgBuf[BIG_LINE] = {0};
- int secondsToWaitForServer = 600;
- char *serverStartupString = "slapd started.";
-
- status = ds_get_updown_status();
- if ( status == DS_SERVER_UP )
- return(DS_SERVER_ALREADY_UP);
- if (!root || !errorlog)
- return(DS_SERVER_UNKNOWN);
-
- if (verbose) {
- ds_send_status("starting up server ...");
- cur_size = ds_get_file_size(errorlog);
- }
-
-#if !defined( XP_WIN32 )
- tmp_dir = ds_get_tmp_dir();
- PR_snprintf(statfile, PATH_MAX, "%s%cstartup.%d", tmp_dir, FILE_SEP, (int)getpid());
-
- PR_snprintf(startup_line, BIG_LINE, "%s%c%s > %s 2>&1",
- root, FILE_SEP, START_SCRIPT, statfile);
- alter_startup_line(startup_line);
- error = system(startup_line);
- if (error == -1)
- error = DS_SERVER_DOWN; /* could not start server */
- else
- error = DS_SERVER_UP; /* started server */
-#else
- error = StartServer();
-#endif
-
- if (error != DS_SERVER_UP)
- {
-#if !defined( XP_WIN32 )
- FILE* fp = fopen(statfile, "r");
- if (fp)
- {
- while(fgets(msgBuf, BIG_LINE, fp))
- ds_send_status(msgBuf);
- fclose(fp);
- }
-#endif
- return DS_SERVER_COULD_NOT_START;
- }
-
- if (verbose)
- {
- /*
- * Stop in N secs or whenever the startup message comes up.
- * Do whichever happens first. msgBuf will contain the last
- * line read from the errorlog.
- */
- ds_display_tail(errorlog, secondsToWaitForServer, cur_size,
- serverStartupString, msgBuf);
- }
- if ( error != DS_SERVER_UP ) {
- int retval = DS_SERVER_UNKNOWN;
- if (strstr(msgBuf, "semget"))
- retval = DS_SERVER_MAX_SEMAPHORES;
- else if (strstr(msgBuf, "Back-End Initialization Failed"))
- retval = DS_SERVER_CORRUPTED_DB;
- else if (strstr(msgBuf, "not initialized... exiting"))
- retval = DS_SERVER_CORRUPTED_DB;
- else if (strstr(msgBuf, "address is in use"))
- retval = DS_SERVER_PORT_IN_USE;
-#if defined( XP_WIN32 )
- /* on NT, if we run out of resources, there will not even be an error
- log
- */
- else if (msgBuf[0] == 0) {
- retval = DS_SERVER_NO_RESOURCES;
- }
-#endif
- if (verbose)
- ds_send_error("error in starting server.", 1);
- return(retval);
- }
- if (verbose) {
-#if !defined( XP_WIN32 )
- if( !(sf = fopen(statfile, "r")) ) {
- ds_send_error("could not read status file.", 1);
- return(DS_SERVER_UNKNOWN);
- }
-
- while ( fgets(startup_line, BIG_LINE, sf) )
- ds_send_error(startup_line, 0);
- fclose(sf);
- unlink(statfile);
-#endif
- status = DS_SERVER_UNKNOWN;
- if (strstr(msgBuf, "semget"))
- status = DS_SERVER_MAX_SEMAPHORES;
- else if (strstr(msgBuf, "Back-End Initialization Failed"))
- status = DS_SERVER_CORRUPTED_DB;
- else if (strstr(msgBuf, "not initialized... exiting"))
- status = DS_SERVER_CORRUPTED_DB;
- else if (strstr(msgBuf, "address is in use"))
- status = DS_SERVER_PORT_IN_USE;
-#if defined( XP_WIN32 )
- /* on NT, if we run out of resources, there will not even be an error
- log
- */
- else if (msgBuf[0] == 0) {
- status = DS_SERVER_NO_RESOURCES;
- }
-#endif
- } else {
- int tries;
- for (tries = 0; tries < secondsToWaitForServer; tries++) {
- if (ds_get_updown_status() == DS_SERVER_UP) break;
- PR_Sleep(PR_SecondsToInterval(1));
- }
- if (verbose) {
- char str[100];
- PR_snprintf(str, sizeof(str), "Had to retry %d times", tries);
- ds_send_status(str);
- }
- }
-
- if ( (status == DS_SERVER_DOWN) || (status == DS_SERVER_UNKNOWN) )
- status = ds_get_updown_status();
-
- return(status);
-}
-
-/*
- * Start the Directory Server and return status.
- * Do not start if the server is already started.
- * 0 -- down
- * 1 -- up
- * -1 -- unknown
- * -2 -- already up
- */
-
-DS_EXPORT_SYMBOL int
-ds_bring_up_server(int verbose)
-{
- char *root;
- int status;
- char *errorlog;
- status = ds_get_updown_status();
- if ( status == DS_SERVER_UP )
- return(DS_SERVER_ALREADY_UP);
- if ( (root = ds_get_install_root()) == NULL )
- return(DS_SERVER_UNKNOWN);
-
- errorlog = ds_get_config_value(DS_ERRORLOG);
- if ( errorlog == NULL ) {
- errorlog = ds_get_errors_name(); /* fallback */
- }
- return ds_bring_up_server_install(verbose, root, errorlog);
-}
-
-DS_EXPORT_SYMBOL int
-ds_bring_down_server()
-{
- char *root;
- int status;
- int cur_size;
- char *errorlog;
-
- status = ds_get_updown_status(); /* set server_pid too! */
- if ( status != DS_SERVER_UP ) {
- ds_send_error("The server is not up.", 0);
- return(DS_SERVER_ALREADY_DOWN);
- }
- if ( (root = ds_get_install_root()) == NULL ) {
- ds_send_error("Could not get the server root directory.", 0);
- return(DS_SERVER_UNKNOWN);
- }
-
- ds_send_status("shutting down server ...");
- if (!(errorlog = ds_get_errors_name())) {
- ds_send_error("Could not get the error log filename.", 0);
- return DS_SERVER_UNKNOWN;
- }
-
- cur_size = ds_get_file_size(errorlog);
-#if !defined( XP_WIN32 )
- if ( (kill(server_pid, SIGTERM)) != 0) {
- if (errno == EPERM) {
- ds_send_error("Not permitted to kill server.", 0);
- fprintf (stdout, "[%s]: kill (%li, SIGTERM) failed with errno = EPERM.<br>\n",
- ds_get_server_name(), (long)server_pid);
- } else {
- ds_send_error("error in killing server.", 1);
- }
- return(DS_SERVER_UNKNOWN);
- }
-#else
- if( StopServer() == DS_SERVER_DOWN )
- {
- ds_send_status("shutdown: server shut down");
- }
- else
- {
- ds_send_error("error in killing server.", 1);
- return(DS_SERVER_UNKNOWN);
- }
-#endif
- /*
- * Wait up to SERVER_STOP_TIMEOUT seconds for the stopped message to
- * appear in the error log.
- */
- ds_display_tail(errorlog, SERVER_STOP_TIMEOUT, cur_size, "slapd stopped.", NULL);
- /* in some cases, the server will tell us it's down when it's really not,
- so give the OS a chance to remove it from the process table */
- PR_Sleep(PR_SecondsToInterval(1));
- return(ds_get_updown_status());
-}
-
-#if defined( XP_WIN32 )
-
-static BOOLEAN
-IsService()
-{
-#if 0
- CHAR ServerKey[512], *ValueString;
- HKEY hServerKey;
- DWORD dwType, ValueLength, Result;
-
- PR_snprintf(ServerKey,sizeof(ServerKey), "%s\\%s", COMPANY_KEY, PRODUCT_KEY);
-
- Result = RegOpenKey(HKEY_LOCAL_MACHINE, ServerKey, &hServerKey);
- if (Result != ERROR_SUCCESS) {
- return TRUE;
- }
- ValueLength = 512;
- ValueString = (PCHAR)malloc(ValueLength);
-
- Result = RegQueryValueEx(hServerKey, IS_SERVICE_KEY, NULL,
- &dwType, ValueString, &ValueLength);
- if (Result != ERROR_SUCCESS) {
- return TRUE;
- }
- if (strcmp(ValueString, "yes")) {
- return FALSE;
- }
- else {
- return TRUE;
- }
-#else
- return TRUE;
-#endif
-}
-
-#if 0
-NSAPI_PUBLIC BOOLEAN
-IsAdminService()
-{
- CHAR AdminKey[512], *ValueString;
- HKEY hAdminKey;
- DWORD dwType, ValueLength, Result;
-
- PR_snprintf(AdminKey,sizeof(AdminKey), "%s\\%s", COMPANY_KEY, ADMIN_REGISTRY_ROOT_KEY);
-
- Result = RegOpenKey(HKEY_LOCAL_MACHINE, AdminKey, &hAdminKey);
- if (Result != ERROR_SUCCESS) {
- return TRUE;
- }
- ValueLength = 512;
- ValueString = (PCHAR)malloc(ValueLength);
-
- Result = RegQueryValueEx(hAdminKey, IS_SERVICE_KEY, NULL,
- &dwType, ValueString, &ValueLength);
- if (Result != ERROR_SUCCESS) {
- return TRUE;
- }
- if (strcmp(ValueString, "yes")) {
- return FALSE;
- } else {
- return TRUE;
- }
-}
-#endif
-
-int
-StartServer()
-{
- CHAR ErrorString[512];
- BOOLEAN Service;
-
- /* Figure out if the server is a service or an exe */
- Service = IsService();
-
- if(Service) {
- if (!(schSCManager = OpenSCManager(
- NULL, // machine (NULL == local)
- NULL, // database (NULL == default)
- SC_MANAGER_ALL_ACCESS // access required
- ))) {
- PR_snprintf(ErrorString, sizeof(ErrorString),
- "Error: Could not open the ServiceControlManager:%d "
- "Please restart the server %s from the Services Program Item "
- "in the Control Panel", ds_get_server_name(), GetLastError());
- ds_send_error(ErrorString, 0);
- return(DS_SERVER_UNKNOWN);
- }
- return(StartNetscapeService());
- } else {
- return(StartNetscapeProgram());
- }
-}
-
-int
-StopandRestartServer()
-{
- CHAR ErrorString[512];
- BOOLEAN Service;
-
-
- /* First figure out if the server is a service or an exe */
- Service = IsService();
- if(Service) {
- if (!(schSCManager = OpenSCManager(
- NULL, // machine (NULL == local)
- NULL, // database (NULL == default)
- SC_MANAGER_ALL_ACCESS // access required
- ))) {
- PR_snprintf(ErrorString, sizeof(ErrorString),
- "Error: Could not restart server."
- "Please restart the server %s from the Services Program Item "
- "in the Control Panel", ds_get_server_name());
- ds_send_error(ErrorString, 0);
- return(DS_SERVER_UNKNOWN);
- }
- if (StopNetscapeService() != DS_SERVER_DOWN)
- return(DS_SERVER_UNKNOWN);
-
- return(StartNetscapeService());
- } else {
- if (StopNetscapeProgram() != DS_SERVER_DOWN)
- return(DS_SERVER_UNKNOWN);
- return(StartNetscapeProgram());
- }
-
-}
-
-int
-StopServer()
-{
- CHAR ErrorString[512];
- BOOLEAN Service;
-
- /* First figure out if the server is a service or an exe */
- Service = IsService();
-
- if(Service) {
- if (!(schSCManager = OpenSCManager(
- NULL, // machine (NULL == local)
- NULL, // database (NULL == default)
- SC_MANAGER_ALL_ACCESS // access required
- ))) {
- PR_snprintf(ErrorString, sizeof(ErrorString),
- "Error: Could not open the ServiceControlManager:%d "
- "Please restart the server %s from the Services Program Item "
- "in the Control Panel", ds_get_server_name(), GetLastError());
- ds_send_error(ErrorString, 0);
- return(DS_SERVER_UNKNOWN);
- }
- return(StopNetscapeService());
- } else {
- return(StopNetscapeProgram());
- }
-}
-
-int
-StartNetscapeProgram()
-{
- char line[BIG_LINE], cmd[BIG_LINE];
- char *tmp = ds_get_install_root();
-
- CHAR ErrorString[512];
- STARTUPINFO siStartInfo;
- PROCESS_INFORMATION piProcInfo;
- FILE *CmdFile;
-
- ZeroMemory(line, sizeof(line));
-
- PR_snprintf(line, BIG_LINE, "%s\\startsrv.bat", tmp);
-
- CmdFile = fopen(line, "r");
- if (!CmdFile)
- {
- PR_snprintf(ErrorString, sizeof(ErrorString), "Error:Tried to start server %s "
- ": Could not open the startup script %s :Error %d. Please "
- "run startsrv.bat from the server's root directory.",
- ds_get_server_name(), line, errno);
- ds_send_error(ErrorString, 0);
- return(DS_SERVER_DOWN);
- }
-
- ZeroMemory(cmd, sizeof(cmd));
- if (!fread(cmd, 1, BIG_LINE, CmdFile))
- {
- PR_snprintf(ErrorString, sizeof(ErrorString), "Error:Tried to start server %s "
- ": Could not read the startup script %s :Error %d. Please "
- "run startsrv.bat from the server's root directory.",
- ds_get_server_name(), line, errno);
- ds_send_error(ErrorString, 0);
- return(DS_SERVER_DOWN);
- }
-
- ZeroMemory(&siStartInfo, sizeof(STARTUPINFO));
- siStartInfo.cb = sizeof(STARTUPINFO);
- siStartInfo.lpReserved = siStartInfo.lpReserved2 = NULL;
- siStartInfo.cbReserved2 = 0;
- siStartInfo.lpDesktop = NULL;
-
- if (!CreateProcess(NULL, cmd, NULL, NULL, FALSE,
- 0, NULL, NULL, &siStartInfo, &piProcInfo))
- {
- PR_snprintf(ErrorString, sizeof(ErrorString), "Error:Tried to start server %s "
- ": Could not start up the startup script %s :Error %d. Please "
- "run startsrv.bat from the server's root directory.",
- ds_get_server_name(), line, GetLastError());
- ds_send_error(ErrorString, 0);
- return(DS_SERVER_DOWN);
- }
-
- CloseHandle(piProcInfo.hProcess);
- CloseHandle(piProcInfo.hThread);
- return(DS_SERVER_UP);
-}
-
-int
-StopNetscapeProgram()
-{
- HANDLE hEvent;
- CHAR ErrorString[512];
- char *servid = ds_get_server_name();
-
- hEvent = CreateEvent(NULL, TRUE, FALSE, servid);
- if(!SetEvent(hEvent))
- {
- PR_snprintf(ErrorString, sizeof(ErrorString), "Tried to stop existing server %s"
- ": Could not signal it to stop :Error %d",
- servid, GetLastError());
- ds_send_error(ErrorString, 0);
- return(DS_SERVER_UNKNOWN);
- }
-
- return(DS_SERVER_DOWN);
-}
-
-int
-StopNetscapeService()
-{
- BOOL ret;
- SERVICE_STATUS ServiceStatus;
- DWORD Error;
- CHAR ErrorString[512];
- char *serviceName = ds_get_server_name();
-
- schService = OpenService(schSCManager, serviceName, SERVICE_ALL_ACCESS);
-
- if (schService == NULL)
- {
- PR_snprintf(ErrorString, sizeof(ErrorString), "Tried to open service"
- " %s: Error %d (%s). Please"
- " stop the server from the Services Item in the Control Panel",
- serviceName, GetLastError(), ds_system_errmsg());
- ds_send_error(ErrorString, 0);
- return(DS_SERVER_UP);
- }
-
- ret = ControlService(schService, SERVICE_CONTROL_STOP, &ServiceStatus);
- Error = GetLastError();
- /* if ControlService returns with ERROR_SERVICE_CANNOT_ACCEPT_CTRL and
- the server status indicates that it is either shutdown or in the process
- of shutting down, then just wait for it to stop as usual */
- if (ret ||
- ((Error == ERROR_SERVICE_CANNOT_ACCEPT_CTRL) &&
- ((ServiceStatus.dwCurrentState == SERVICE_STOPPED) ||
- (ServiceStatus.dwCurrentState == SERVICE_STOP_PENDING))))
- {
- CloseServiceHandle(schService);
- /* We make sure that the service is stopped */
- WaitForServertoStop();
- return(DS_SERVER_DOWN);
- }
- else if (Error != ERROR_SERVICE_NOT_ACTIVE)
- {
- PR_snprintf(ErrorString, sizeof(ErrorString), "Tried to stop service"
- " %s: Error %d (%s)."
- " Please stop the server from the Services Item in the"
- " Control Panel", serviceName, Error, ds_system_errmsg());
- ds_send_error(ErrorString, 0);
- return(DS_SERVER_UNKNOWN);
- }
- return(DS_SERVER_DOWN);
-}
-
-
-int
-StartNetscapeService()
-{
- CHAR ErrorString[512];
- int retries = 0;
- char *serviceName = ds_get_server_name();
-
- schService = OpenService(
- schSCManager, // SCManager database
- serviceName, // name of service
- SERVICE_ALL_ACCESS);
- if (schService == NULL)
- {
- CloseServiceHandle(schService);
- PR_snprintf(ErrorString, sizeof(ErrorString),"Tried to start"
- " the service %s: Error %d. Please"
- " start the server from the Services Item in the Control Panel",
- serviceName, GetLastError());
- ds_send_error(ErrorString, 0);
- return(DS_SERVER_DOWN);
- }
-
- if (!StartService(schService, 0, NULL))
- {
- CloseServiceHandle(schService);
- PR_snprintf(ErrorString, sizeof(ErrorString), "StartService:Could not start "
- "the Directory service %s: Error %d. Please restart the server "
- "from the Services Item in the Control Panel",
- serviceName, GetLastError());
- ds_send_error(ErrorString, 0);
- return(DS_SERVER_DOWN);
- }
-
- CloseServiceHandle(schService);
- return(DS_SERVER_UP);
-}
-
-void
-WaitForServertoStop()
-{
- HANDLE hServDoneSemaphore;
- int result,retries = 0;
- char *serviceName = ds_get_server_name();
- char *newServiceName;
-
-RETRY:
-
- newServiceName = PR_smprintf("NS_%s", serviceName);
-
- hServDoneSemaphore = CreateSemaphore(
- NULL, // security attributes
- 0, // initial count for semaphore
- 1, // maximum count for semaphore
- newServiceName);
-
- PR_smprintf_free(newServiceName);
-
- if ( hServDoneSemaphore == NULL) {
- result = GetLastError();
- if (result == ERROR_INVALID_HANDLE) {
- if (retries < SERVER_STOP_TIMEOUT) {
- retries++;
- Sleep(1000);
- goto RETRY;
- }
- } else {
- /* We aren't too interested in why the creation failed
- * if it is not because of another instance */
- return;
- }
- } // hServDoneSemaphore == NULL
- CloseHandle(hServDoneSemaphore);
- return;
-}
-#endif
diff --git a/ldap/admin/lib/dsalib_util.c b/ldap/admin/lib/dsalib_util.c
deleted file mode 100644
index 0a0cfe0c..00000000
--- a/ldap/admin/lib/dsalib_util.c
+++ /dev/null
@@ -1,1212 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#if defined( XP_WIN32 )
-#include <windows.h>
-#include <io.h>
-#else /* XP_WIN32 */
-# if defined( AIXV4 )
-# include <fcntl.h>
-# else /* AIXV4 */
-# include <sys/fcntl.h>
-# endif /* AIXV4 */
-#include <dirent.h>
-#include <unistd.h>
-#include <fcntl.h>
-#endif /* XP_WIN3 */
-#include "dsalib.h"
-#include <sys/types.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <ctype.h>
-
-#include "nspr.h"
-#include "plstr.h"
-
-#define COPY_BUFFER_SIZE 4096
-/* This is the separator string to use when outputting key/value pairs
- to be read by the non-HTML front end (Java console)
-*/
-static const char *SEPARATOR = ":"; /* from AdmTask.java */
-
-#define LOGFILEENVVAR "DEBUG_LOGFILE" /* used for logfp */
-
-static int internal_rm_rf(const char *path, DS_RM_RF_ERR_FUNC ds_rm_rf_err_func, void *arg);
-
-/* return a FILE * opened in append mode to the log file
- caller must use fclose to close it
-*/
-static FILE *
-get_logfp(void)
-{
- FILE *logfp = NULL;
- char *logfile = getenv(LOGFILEENVVAR);
-
- if (logfile) {
- logfp = fopen(logfile, "a");
- }
- return logfp;
-}
-
-DS_EXPORT_SYMBOL int
-ds_file_exists(char *filename)
-{
- struct stat finfo;
-
- if ( filename == NULL )
- return 0;
-
- if ( stat(filename, &finfo) == 0 ) /* successful */
- return 1;
- else
- return 0;
-}
-
-DS_EXPORT_SYMBOL int
-ds_mkdir(char *dir, int mode)
-{
- if(!ds_file_exists(dir)) {
-#ifdef XP_UNIX
- if(mkdir(dir, mode) == -1)
-#else /* XP_WIN32 */
- if(!CreateDirectory(dir, NULL))
-#endif /* XP_WIN32 */
- return -1;
- }
- return 0;
-}
-
-
-DS_EXPORT_SYMBOL char *
-ds_mkdir_p(char *dir, int mode)
-{
- static char errmsg[ERR_SIZE];
- struct stat fi;
- char *t;
-
-#ifdef XP_UNIX
- t = dir + 1;
-#else /* XP_WIN32 */
- t = dir + 3;
-#endif /* XP_WIN32 */
-
- while(1) {
- t = strchr(t, FILE_PATHSEP);
-
- if(t) *t = '\0';
- if(stat(dir, &fi) == -1) {
- if(ds_mkdir(dir, mode) == -1) {
- PR_snprintf(errmsg, sizeof(errmsg), "mkdir %s failed (%s)", dir, ds_system_errmsg());
- return errmsg;
- }
- }
- if(t) *t++ = FILE_PATHSEP;
- else break;
- }
- return NULL;
-}
-
-
-/*
- * Given the name of a directory, return a NULL-terminated array of
- * the file names contained in that directory. Returns NULL if the directory
- * does not exist or an error occurs, and returns an array with a
- * single NULL string if the directory exists but is empty. The caller
- * is responsible for freeing the returned array of strings.
- * File names "." and ".." are not returned.
- */
-#if !defined( XP_WIN32 )
-DS_EXPORT_SYMBOL char **
-ds_get_file_list( char *dir )
-{
- DIR *dirp;
- struct dirent *direntp;
- char **ret = NULL;
- int nfiles = 0;
-
- if (( dirp = opendir( dir )) == NULL ) {
- return NULL;
- }
-
- if (( ret = malloc( sizeof( char * ))) == NULL ) {
- return NULL;
- };
-
- while (( direntp = readdir( dirp )) != NULL ) {
- if ( strcmp( direntp->d_name, "." ) &&
- strcmp( direntp->d_name, ".." )) {
- if (( ret = (char **) realloc( ret,
- sizeof( char * ) * ( nfiles + 2 ))) == NULL );
- ret[ nfiles ] = strdup( direntp->d_name );
- nfiles++;
- }
- }
- (void) closedir( dirp );
-
- ret[ nfiles ] = NULL;
- return ret;
-}
-#else
-DS_EXPORT_SYMBOL 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;
-
- PL_strncpyz(szWildcardFileSpec, dir, sizeof(szWildcardFileSpec));
- PL_strcatn(szWildcardFileSpec, sizeof(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 + 2 ) ) ) != NULL )
- ret[ nfiles++ ] = strdup( fileinfo.name);
- }
- }
-
- _findclose( hFile );
- ret[ nfiles ] = NULL;
- return ret;
-}
-#endif /* ( XP_WIN32 ) */
-
-
-DS_EXPORT_SYMBOL time_t
-ds_get_mtime(char *filename)
-{
- struct stat fi;
-
- if ( stat(filename, &fi) )
- return 0;
- return fi.st_mtime;
-}
-
-/*
- * Copy files: return is
- * 1: success
- * 0: failure
- * Print errors as needed.
- */
-DS_EXPORT_SYMBOL int
-ds_cp_file(char *sfile, char *dfile, int mode)
-{
-#if defined( XP_WIN32 )
- return( CopyFile( sfile, dfile, FALSE ) ); /* Copy even if dfile exists */
-#else
- int sfd, dfd, len;
- struct stat fi;
- char copy_buffer[COPY_BUFFER_SIZE];
- unsigned long read_len;
- char error[BIG_LINE];
-
-/* Make sure we're in the right umask */
- umask(022);
-
- if( (sfd = open(sfile, O_RDONLY)) == -1) {
- PR_snprintf(error, sizeof(error), "Can't open file %s for reading.", sfile);
- ds_send_error(error, 1);
- return(0);
- }
-
- fstat(sfd, &fi);
- if (!(S_ISREG(fi.st_mode))) {
- PR_snprintf(error, sizeof(error), "File %s is not a regular file.", sfile);
- ds_send_error(error, 1);
- close(sfd);
- return(0);
- }
- len = fi.st_size;
-
- if( (dfd = open(dfile, O_RDWR | O_CREAT | O_TRUNC, mode)) == -1) {
- PR_snprintf(error, sizeof(error), "can't write to file %s", dfile);
- ds_send_error(error, 1);
- close(sfd);
- return(0);
- }
- while (len) {
- read_len = len>COPY_BUFFER_SIZE?COPY_BUFFER_SIZE:len;
-
- if ( (read_len = read(sfd, copy_buffer, read_len)) == -1) {
- PR_snprintf(error, sizeof(error), "Error reading file %s for copy.", sfile);
- ds_send_error(error, 1);
- close(sfd);
- close(dfd);
- return(0);
- }
-
- if ( write(dfd, copy_buffer, read_len) != read_len) {
- PR_snprintf(error, sizeof(error), "Error writing file %s for copy.", dfile);
- ds_send_error(error, 1);
- close(sfd);
- close(dfd);
- return(0);
- }
-
- len -= read_len;
- }
- close(sfd);
- close(dfd);
- return(1);
-#endif
-}
-
-DS_EXPORT_SYMBOL void
-ds_unixtodospath(char *szText)
-{
- if(szText)
- {
- while(*szText)
- {
- if( *szText == '/' )
- *szText = '\\';
- szText++;
- }
- }
-}
-
-/* converts '\' chars to '/' */
-DS_EXPORT_SYMBOL void
-ds_dostounixpath(char *szText)
-{
- if(szText)
- {
- while(*szText)
- {
- if( *szText == '\\' )
- *szText = '/';
- szText++;
- }
- }
-}
-
-/* converts ':' chars to ' ' */
-DS_EXPORT_SYMBOL void
-ds_timetofname(char *szText)
-{
- if(szText)
- {
- /* Replace trailing newline */
- szText[ strlen( szText ) -1 ] = 0;
- while(*szText)
- {
- if( *szText == ':' ||
- *szText == ' ' )
- *szText = '_';
- szText++;
- }
- }
-}
-
-/* Effects a rename in 2 steps, needed on NT because if the
-target of a rename() already exists, the rename() will fail. */
-DS_EXPORT_SYMBOL int
-ds_saferename(char *szSrc, char *szTarget)
-{
-#ifdef XP_WIN32
- int iRetVal;
- char *szTmpFile;
- struct stat buf;
-#endif
-
- if( !szSrc || !szTarget )
- return 1;
-
-#if defined( XP_WIN32 )
-
- szTmpFile = mktemp("slrnXXXXXX" );
- if( stat( szTarget, &buf ) == 0 )
- {
- /* Target file exists */
- if( !szTmpFile )
- return 1;
-
- if( !ds_cp_file( szTarget, szTmpFile, 0644) )
- return( 1 );
-
- unlink( szTarget );
- if( (iRetVal = rename( szSrc, szTarget )) != 0 )
- {
- /* Failed to rename, copy back. */
- ds_cp_file( szTmpFile, szTarget, 0644);
- }
- /* Now remove temp file */
- unlink( szTmpFile );
- }
- else
- iRetVal = rename(szSrc, szTarget);
-
- return iRetVal;
-#else
- return rename(szSrc, szTarget);
-#endif
-
-}
-
-DS_EXPORT_SYMBOL char*
-ds_encode_all (const char* s)
-{
- char* r;
- size_t l;
- size_t i;
- if (s == NULL || *s == '\0') {
- return strdup ("");
- }
- l = strlen (s);
- r = malloc (l * 3 + 1);
- for (i = 0; *s != '\0'; ++s) {
- r[i++] = '%';
- sprintf (r + i, "%.2X", 0xFF & (unsigned int)*s);
- i += 2;
- }
- r[i] = '\0';
- return r;
-}
-
-DS_EXPORT_SYMBOL char*
-ds_URL_encode (const char* s)
-{
- char* r;
- size_t l;
- size_t i;
- if (s == NULL || *s == '\0') {
- return strdup ("");
- }
- l = strlen (s) + 1;
- r = malloc (l);
- for (i = 0; *s != '\0'; ++s) {
- if (*s >= 0x20 && *s <= 0x7E && strchr (" <>\"#%{}[]|\\^~`?,;=+\n", *s) == NULL) {
- if (l - i <= 1) r = realloc (r, l *= 2);
- r[i++] = *s;
- } else { /* encode *s */
- if (l - i <= 3) r = realloc (r, l *= 2);
- r[i++] = '%';
- sprintf (r + i, "%.2X", 0xFF & (unsigned int)*s);
- i += 2;
- }
- }
- r[i] = '\0';
- return r;
-}
-
-DS_EXPORT_SYMBOL char*
-ds_URL_decode (const char* original)
-{
- char* r = strdup (original);
- char* s;
- for (s = r; *s != '\0'; ++s) {
- if (*s == '+') {
- *s = ' ';
- }
- else if (*s == '%' && isxdigit(s[1]) && isxdigit(s[2])) {
- memmove (s, s+1, 2);
- s[2] = '\0';
- *s = (char)strtoul (s, NULL, 16);
- memmove (s+1, s+3, strlen (s+3) + 1);
- }
- }
- return r;
-}
-
-#if !defined( XP_WIN32 )
-#include <errno.h> /* errno */
-#include <pwd.h> /* getpwnam */
-
-static int saved_uid_valid = 0;
-static uid_t saved_uid;
-static int saved_gid_valid = 0;
-static gid_t saved_gid;
-
-#if defined( HPUX )
-#define SETEUID(id) setresuid((uid_t) -1, id, (uid_t) -1)
-#else
-#define SETEUID(id) seteuid(id)
-#endif
-
-#endif
-
-DS_EXPORT_SYMBOL char*
-ds_become_localuser_name (char *localuser)
-{
-#if !defined( XP_WIN32 )
- if (localuser != NULL) {
- struct passwd* pw = getpwnam (localuser);
- if (pw == NULL) {
- fprintf (stderr, "getpwnam(%s) == NULL; errno %d",
- localuser, errno);
- fprintf (stderr, "\n");
- fflush (stderr);
- } else {
- if ( ! saved_uid_valid) saved_uid = geteuid();
- if ( ! saved_gid_valid) saved_gid = getegid();
- if (setgid (pw->pw_gid) == 0) {
- saved_gid_valid = 1;
- } else {
- fprintf (stderr, "setgid(%li) != 0; errno %d",
- (long)pw->pw_gid, errno);
- fprintf (stderr, "\n");
- fflush (stderr);
- }
- if (SETEUID (pw->pw_uid) == 0) {
- saved_uid_valid = 1;
- } else {
- fprintf (stderr, "seteuid(%li) != 0; errno %d",
- (long)pw->pw_uid, errno);
- fprintf (stderr, "\n");
- fflush (stderr);
- }
- }
- }
- return NULL;
-#else
- return NULL;
-#endif
-}
-
-DS_EXPORT_SYMBOL char*
-ds_become_localuser (char **ds_config)
-{
-#if !defined( XP_WIN32 )
- char* localuser = ds_get_value (ds_config, ds_get_var_name(DS_LOCALUSER), 0, 1);
- if (localuser != NULL) {
- char *rv = ds_become_localuser_name(localuser);
-
- free(localuser);
- return rv;
- }
- return NULL;
-#else
- return NULL;
-#endif
-}
-
-DS_EXPORT_SYMBOL char*
-ds_become_original (char **ds_config)
-{
-#if !defined( XP_WIN32 )
- if (saved_uid_valid) {
- if (SETEUID (saved_uid) == 0) {
- saved_uid_valid = 0;
- } else {
- fprintf (stderr, "seteuid(%li) != 0; errno %d<br>n",
- (long)saved_uid, errno);
- fflush (stderr);
- }
- }
- if (saved_gid_valid) {
- if (setgid (saved_gid) == 0) {
- saved_gid_valid = 0;
- } else {
- fprintf (stderr, "setgid(%li) != 0; errno %d<br>\n",
- (long)saved_gid, errno);
- fflush (stderr);
- }
- }
- return NULL;
-#else
- return NULL;
-#endif
-}
-
-/*
- * When a path containing a long filename is passed to system(), the call
- * fails. Therfore, we need to use the short version of the path, when
- * constructing the path to pass to system().
- */
-DS_EXPORT_SYMBOL char*
-ds_makeshort( char * filepath )
-{
-#if defined( XP_WIN32 )
- char *shortpath = malloc( MAX_PATH );
- DWORD dwStatus;
- if( shortpath )
- {
- dwStatus = GetShortPathName( filepath, shortpath, MAX_PATH );
- return( shortpath );
- }
-#endif
- return filepath;
-}
-
-/* returns 1 if string "searchstring" found in file "filename" */
-/* if found, returnstring is allocated and filled with the line */
-/* caller should release the memory */
-DS_EXPORT_SYMBOL int
-ds_search_file(char *filename, char *searchstring, char **returnstring)
-{
- struct stat finfo;
- FILE * sf;
- char big_line[BIG_LINE];
-
- if( filename == NULL )
- return 0;
-
- if( stat(filename, &finfo) != 0 ) /* successful */
- return 0;
-
- if( !(sf = fopen(filename, "r")) )
- return 0;
-
- while ( fgets(big_line, BIG_LINE, sf) ) {
- if( strstr( big_line, searchstring ) != NULL ) {
- *returnstring = (char *)malloc(strlen(big_line) + 1);
- if (NULL != *returnstring) {
- strcpy(*returnstring, big_line);
- }
- fclose(sf);
- return 1;
- }
- }
-
- fclose(sf);
-
- return 0;
-}
-
-/*
- * on linux when running as root, doing something like
- * system("date > out.log 2>&1") will fail, because of an
- * ambigious redirect. This works for /bin/sh, but not /bin/csh or /bin/tcsh
- *
- * using this would turn
- * system("date > out.log 2>&1");
- * into
- * system("/bin/sh/ -c \"date > out.log 2>&1\"")
- *
- */
-DS_EXPORT_SYMBOL void
-alter_startup_line(char *startup_line)
-{
-#if (defined Linux && !defined LINUX2_4)
- char temp_startup_line[BIG_LINE+40];
-
- PR_snprintf(temp_startup_line, sizeof(temp_startup_line), "/bin/sh -c \"%s\"", startup_line);
- PL_strncpyz(startup_line, temp_startup_line, BIG_LINE);
-#else
- /* do nothing */
-#endif /* Linux */
-}
-
-DS_EXPORT_SYMBOL void
-ds_send_error(char *errstr, int print_errno)
-{
- FILE *logfp;
- fprintf(stdout, "error%s%s\n", SEPARATOR, errstr);
- if (print_errno && errno)
- fprintf(stdout, "system_errno%s%d\n", SEPARATOR, errno);
-
- fflush(stdout);
-
- if ((logfp = get_logfp())) {
- fprintf(logfp, "error%s%s\n", SEPARATOR, errstr);
- if (print_errno && errno)
- fprintf(logfp, "system_errno%s%d\n", SEPARATOR, errno);
- fclose(logfp);
- }
-
-}
-
-DS_EXPORT_SYMBOL void
-ds_send_status(char *str)
-{
- FILE *logfp;
- fprintf(stdout, "[%s]: %s\n", ds_get_server_name(), str);
- fflush(stdout);
-
- if ((logfp = get_logfp())) {
- fprintf(logfp, "[%s]: %s\n", ds_get_server_name(), str);
- fclose(logfp);
- }
-}
-
-/* type and doexit are unused
- I'm not sure what type is supposed to be used for
- removed the doexit code because we don't want to
- exit abruptly anymore, we must exit by returning an
- exit code from the return in main()
-*/
-static void
-report_error(int type, char *msg, char *details, int doexit)
-{
- char error[BIG_LINE*4] = {0};
-
- if (msg)
- {
- PL_strcatn(error, BIG_LINE*4, msg);
- PL_strcatn(error, BIG_LINE*4, SEPARATOR);
- }
- if (details)
- PL_strcatn(error, BIG_LINE*4, details);
- ds_send_error(error, 1);
-}
-
-DS_EXPORT_SYMBOL void
-ds_report_error(int type, char *msg, char *details)
-{
- /* richm - changed exit flag to 0 - we must not exit
- abruptly, we should instead exit by returning a code
- as the return value of main - this ensures that callers
- are properly notified of the status
- */
- report_error(type, msg, details, 0);
-}
-
-DS_EXPORT_SYMBOL void
-ds_report_warning(int type, char *msg, char *details)
-{
- report_error(type, msg, details, 0);
-}
-
-DS_EXPORT_SYMBOL void
-ds_show_message(const char *message)
-{
- FILE *logfp;
- printf("%s\n", message);
- fflush(stdout);
-
- if ((logfp = get_logfp())) {
- fprintf(logfp, "%s\n", message);
- fclose(logfp);
- }
-
- return;
-}
-
-DS_EXPORT_SYMBOL void
-ds_show_key_value(char *key, char *value)
-{
- FILE *logfp;
- printf("%s%s%s\n", key, SEPARATOR, value);
-
- if ((logfp = get_logfp())) {
- fprintf(logfp, "%s%s%s\n", key, SEPARATOR, value);
- fclose(logfp);
- }
- return;
-}
-
-/* Stolen from the Admin Server dsgw_escape_for_shell */
-DS_EXPORT_SYMBOL char *
-ds_escape_for_shell( char *s )
-{
- char *escaped;
- char tmpbuf[4];
- size_t x,l;
-
- if ( s == NULL ) {
- return( s );
- }
-
- l = 3 * strlen( s ) + 1;
- escaped = malloc( l );
- memset( escaped, 0, l );
- for ( x = 0; s[x]; x++ ) {
- if (( (unsigned char)s[x] & 0x80 ) == 0 ) {
- strncat( escaped, &s[x], 1 );
- } else {
- /* not an ASCII character - escape it */
- sprintf( tmpbuf, "\\%x", (unsigned)(((unsigned char)(s[x])) & 0xff) );
- strcat( escaped, tmpbuf );
- }
- }
- return( escaped );
-}
-
-DS_EXPORT_SYMBOL char *
-ds_system_errmsg(void)
-{
- static char static_error[BUFSIZ];
- char *lmsg = 0; /* Local message pointer */
- size_t msglen = 0;
- int sys_error = 0;
-#ifdef XP_WIN32
- LPTSTR sysmsg = 0;
-#endif
-
- /* Grab the OS error message */
-#ifdef XP_WIN32
- sys_error = GetLastError();
-#else
- sys_error = errno;
-#endif
-
-#if defined(XP_WIN32)
- msglen = FormatMessage(
- FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_ALLOCATE_BUFFER,
- NULL,
- GetLastError(),
- LOCALE_SYSTEM_DEFAULT,
- (LPTSTR)&sysmsg,
- 0,
- 0);
- if (msglen > 0)
- lmsg = sysmsg;
- SetLastError(0);
-#else
- lmsg = strerror(errno);
- errno = 0;
-#endif
-
- if (!lmsg)
- static_error[0] = 0;
- else
- {
- /* At this point lmsg points to something. */
- int min = 0;
- msglen = strlen(lmsg);
-
- min = msglen > BUFSIZ ? BUFSIZ : msglen;
- strncpy(static_error, lmsg, min-1);
- static_error[min-1] = 0;
- }
-
-#ifdef XP_WIN32
- /* NT's FormatMessage() dynamically allocated the msg; free it */
- if (sysmsg)
- LocalFree(sysmsg);
-#endif
-
- return static_error;
-}
-
-#ifndef MAXPATHLEN
-#define MAXPATHLEN 1024
-#endif
-
-enum {
- DB_DIRECTORY = 0,
- DB_LOGDIRECTORY,
- DB_CHANGELOGDIRECTORY,
- DB_HOME_DIRECTORY
-};
-
-static int
-is_fullpath(char *path)
-{
- int len;
- if (NULL == path || '\0' == *path)
- return 0;
-
- if (FILE_PATHSEP == *path) /* UNIX */
- return 1;
-
- len = strlen(path);
- if (len > 2)
- {
- if (':' == path[1] && ('/' == path[2] || '\\' == path[2])) /* Windows */
- return 1;
- }
- return 0;
-}
-
-static void
-rm_db_dirs(char *fullpath, DS_RM_RF_ERR_FUNC ds_rm_rf_err_func, void *arg)
-{
- FILE *fp = fopen(fullpath, "r");
- char buf[2][MAXPATHLEN];
- char *bufp, *nextbufp;
- char *retp;
- int readit = 0;
-
- if (fp == NULL)
- {
- ds_rm_rf_err_func(fullpath, "opening the config file", arg);
- return;
- }
-
- bufp = buf[0]; *bufp = '\0';
- nextbufp = buf[1]; *nextbufp = '\0';
-
- while (readit || (retp = fgets(bufp, MAXPATHLEN, fp)) != NULL)
- {
- int len = strlen(bufp);
- int type = -1;
- char *p, *q;
-
- if (strstr(bufp, "nsslapd-directory"))
- type = DB_DIRECTORY;
- else if (strstr(bufp, "nsslapd-db-home-directory"))
- type = DB_HOME_DIRECTORY;
- else if (strstr(bufp, "nsslapd-db-logdirectory"))
- type = DB_LOGDIRECTORY;
- else if (strstr(bufp, "nsslapd-changelogdir"))
- type = DB_CHANGELOGDIRECTORY;
- else
- {
- readit = 0;
- continue;
- }
-
- p = bufp + len;
-
- while ((retp = fgets(nextbufp, MAXPATHLEN, fp)) != NULL)
- {
- int thislen;
- if (*nextbufp == ' ')
- {
- thislen = strlen(nextbufp);
- len += thislen;
- if (len < MAXPATHLEN)
- {
- strncpy(p, nextbufp, thislen);
- p += thislen;
- }
- /* else too long as a path. ignore it */
- }
- else
- break;
- }
- if (retp == NULL) /* done */
- break;
-
- p = strchr(bufp, ':');
- if (p == NULL)
- {
- char *tmpp = bufp;
- bufp = nextbufp;
- nextbufp = tmpp;
- readit = 1;
- continue;
- }
-
- while (*(++p) == ' ') ;
-
- q = p + strlen(p) - 1;
- while (*q == ' ' || *q == '\t' || *q == '\n')
- q--;
- *(q+1) = '\0';
-
- switch (type)
- {
- case DB_DIRECTORY:
- case DB_LOGDIRECTORY:
- case DB_CHANGELOGDIRECTORY:
- if (is_fullpath(p))
- internal_rm_rf(p, ds_rm_rf_err_func, NULL);
- break;
- case DB_HOME_DIRECTORY:
- internal_rm_rf(p, ds_rm_rf_err_func, NULL);
- break;
- }
- }
-
- fclose(fp);
-}
-
-static char *
-get_dir_from_startslapd(char *loc, char *keyword)
-{
- char *returnstr = NULL;
- char *ptr = NULL;
- char *confdir = NULL;
-if (ds_search_file(loc, keyword, &returnstr) > 0 && returnstr) {
- ptr = strchr(returnstr, '=');
- if (NULL != ptr) {
- confdir = strdup(++ptr);
- }
- free(returnstr);
- }
- return confdir;
-}
-
-static char *
-get_dir_from_config(char *config_dir, char *config_attr)
-{
- char *configfile = NULL;
- char *returnstr = NULL;
- char *ptr = NULL;
- char *dir = NULL;
- configfile = PR_smprintf("%s%c%s", config_dir, FILE_PATHSEP, DS_CONFIG_FILE);
- if (configfile && ds_search_file(configfile, config_attr, &returnstr) > 0
- && returnstr) {
- ptr = strchr(returnstr, ':');
- if (NULL != ptr) {
- while (' ' == *ptr || '\t' == *ptr) ptr++;
- dir = strdup(ptr);
- }
- free(returnstr);
- PR_smprintf_free(configfile);
- }
- return dir;
-}
-
-/* this function will recursively remove a directory hierarchy from the file
- system, like "rm -rf"
- In order to handle errors, the user supplies a callback function. When an
- error occurs, the callback function is called with the file or directory name
- and the system errno. The callback function should return TRUE if it wants
- to continue or FALSE if it wants the remove aborted.
- The error callback should use PR_GetError and/or PR_GetOSError to
- determine the cause of the failure
-*/
-/* you could locate db dirs non standard location
- we should remove them, as well.
-*/
-static int
-internal_rm_rf(const char *path, DS_RM_RF_ERR_FUNC ds_rm_rf_err_func, void *arg)
-{
- struct PRFileInfo prfi;
- int retval = 0;
-
- if (PR_GetFileInfo(path, &prfi) != PR_SUCCESS) {
- if (!ds_rm_rf_err_func(path, "reading directory", arg)) {
- return 1;
- }
- }
-
- if (prfi.type == PR_FILE_DIRECTORY)
- {
- PRDir *dir;
- PRDirEntry *dirent;
-
- if (!(dir = PR_OpenDir(path))) {
- if (!ds_rm_rf_err_func(path, "opening directory", arg)) {
- return 1;
- }
- return 0;
- }
-
- while ((dirent = PR_ReadDir(dir, PR_SKIP_BOTH))) {
- char *fullpath = PR_smprintf("%s%c%s", path, FILE_PATHSEP, dirent->name);
- if (PR_GetFileInfo(fullpath, &prfi) != PR_SUCCESS) {
- if (!ds_rm_rf_err_func(fullpath, "reading file", arg)) {
- PR_smprintf_free(fullpath);
- PR_CloseDir(dir);
- return 1;
- } /* else just continue */
- } else if (prfi.type == PR_FILE_DIRECTORY) {
- retval = internal_rm_rf(fullpath, ds_rm_rf_err_func, arg);
- if (retval) { /* non zero return means stop */
- PR_smprintf_free(fullpath);
- break;
- }
- } else {
- /* FHS changes the directory structure.
- * Config dir is no longer in the instance dir.
- * The info should be found in start-slapd,
- * therefore get the path from the file here.
- */
- if (0 == strcmp(dirent->name, "start-slapd")) {
- char *config_dir = ds_get_config_dir();
- char *run_dir = ds_get_run_dir();
- if (NULL == config_dir || '\0' == *config_dir) {
- config_dir = get_dir_from_startslapd(fullpath, DS_CONFIG_DIR);
- }
- if (NULL == run_dir || '\0' == *run_dir) {
- char *ptr = NULL;
- run_dir = get_dir_from_startslapd(fullpath, PIDFILE);
- ptr = strrchr(run_dir, FILE_PATHSEP);
- if (NULL != ptr) {
- *ptr = '\0'; /* equiv to dirname */
- }
- }
- if (NULL != run_dir) {
- internal_rm_rf(run_dir, ds_rm_rf_err_func, NULL);
- free(run_dir);
- }
- if (NULL != config_dir) {
- char *lock_dir = get_dir_from_config(config_dir, DS_CONFIG_LOCKDIR);
- char *err_log = get_dir_from_config(config_dir, DS_CONFIG_ERRLOG);
-
- if (NULL != lock_dir) {
- internal_rm_rf(lock_dir, ds_rm_rf_err_func, NULL);
- free(lock_dir);
- }
- if (NULL != err_log) {
- char *ptr = strrchr(err_log, FILE_PATHSEP);
- if (NULL != ptr) {
- *ptr = '\0'; /* equiv to 'dirname' */
- internal_rm_rf(err_log, ds_rm_rf_err_func, NULL);
- }
- free(err_log);
- }
- /* removing db dirs */
- rm_db_dirs(config_dir, ds_rm_rf_err_func, arg);
-
- /* removing config dir */
- internal_rm_rf(config_dir, ds_rm_rf_err_func, NULL);
- }
- }
- /*
- * When the file is the config file,
- * check if db dir is in the instance dir or not.
- * If db dir exists in the instance dir, it's an old structure.
- * Let's clean the old db here, as well.
- */
- if (0 == strcmp(dirent->name, DS_CONFIG_FILE)) {
- rm_db_dirs(fullpath, ds_rm_rf_err_func, arg);
- }
-
- if (PR_Delete(fullpath) != PR_SUCCESS) {
- if (!ds_rm_rf_err_func(fullpath, "deleting file", arg)) {
- PR_smprintf_free(fullpath);
- PR_CloseDir(dir);
- return 1;
- }
- }
- }
- PR_smprintf_free(fullpath);
- }
- PR_CloseDir(dir);
- if (PR_RmDir(path) != PR_SUCCESS) {
- if (!ds_rm_rf_err_func(path, "removing directory", arg)) {
- retval = 1;
- }
- }
- }
-
- return retval;
-}
-
-static int
-default_err_func(const char *path, const char *op, void *arg)
-{
- PRInt32 errcode = PR_GetError();
- char *msg;
- const char *errtext;
-
- if (!errcode || (errcode == PR_UNKNOWN_ERROR)) {
- errcode = PR_GetOSError();
- errtext = ds_system_errmsg();
- } else {
- errtext = PR_ErrorToString(errcode, PR_LANGUAGE_I_DEFAULT);
- }
-
- msg = PR_smprintf("%s %s: error code %d (%s)", op, path, errcode, errtext);
- ds_send_error(msg, 0);
- PR_smprintf_free(msg);
- return 1; /* just continue */
-}
-
-/* dir: instance dir, e.g., "$NETSITE_ROOT/slapd-<id>" */
-DS_EXPORT_SYMBOL int
-ds_rm_rf(const char *dir, DS_RM_RF_ERR_FUNC ds_rm_rf_err_func, void *arg)
-{
- struct PRFileInfo prfi;
-
- if (!dir) {
- ds_send_error("Could not remove NULL directory name", 1);
- return 1;
- }
-
- if (!ds_rm_rf_err_func) {
- ds_rm_rf_err_func = default_err_func;
- }
-
- if (PR_GetFileInfo(dir, &prfi) != PR_SUCCESS) {
- if (ds_rm_rf_err_func(dir, "reading directory", arg)) {
- return 0;
- } else {
- return 1;
- }
- }
- if (prfi.type != PR_FILE_DIRECTORY) {
- char *msg = PR_smprintf("Cannot remove directory %s because it is not a directory", dir);
- ds_send_error(msg, 0);
- PR_smprintf_free(msg);
- return 1;
- }
-
- return internal_rm_rf(dir, ds_rm_rf_err_func, arg);
-}
-
-DS_EXPORT_SYMBOL int
-ds_remove_reg_key(void *base, const char *format, ...)
-{
- int rc = 0;
-#ifdef XP_WIN32
- int retries = 3;
- HKEY hkey = (HKEY)base;
- char *key;
- va_list ap;
-
- va_start(ap, format);
- key = PR_vsmprintf(format, ap);
- va_end(ap);
-
- do {
- if (ERROR_SUCCESS != RegDeleteKey(hkey, key)) {
- rc = GetLastError();
- if (rc == ERROR_BADKEY || rc == ERROR_CANTOPEN ||
- rc == ERROR_CANTREAD ||
- rc == ERROR_CANTWRITE || rc == ERROR_KEY_DELETED ||
- rc == ERROR_ALREADY_EXISTS || rc == ERROR_NO_MORE_FILES) {
- rc = 0; /* key already deleted - no error */
- } else if ((retries > 1) && (rc == ERROR_IO_PENDING)) {
- /* the key is busy - lets wait and try again */
- PR_Sleep(PR_SecondsToInterval(3));
- retries--;
- } else {
- char *errmsg = PR_smprintf("Could not remove registry key %s - error %d (%s)",
- key, rc, ds_system_errmsg());
- ds_send_error(errmsg, 0);
- PR_smprintf_free(errmsg);
- break; /* no retry, just fail */
- }
- }
- } while (rc && retries);
- PR_smprintf_free(key);
-#endif
- return rc;
-}
diff --git a/ldap/admin/src/CGI_ENV b/ldap/admin/src/CGI_ENV
deleted file mode 100644
index 7de4263b..00000000
--- a/ldap/admin/src/CGI_ENV
+++ /dev/null
@@ -1,68 +0,0 @@
-#
-# BEGIN COPYRIGHT BLOCK
-# This Program is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; version 2 of the License.
-#
-# This Program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place, Suite 330, Boston, MA 02111-1307 USA.
-#
-# In addition, as a special exception, Red Hat, Inc. gives You the additional
-# right to link the code of this Program with code not covered under the GNU
-# General Public License ("Non-GPL Code") and to distribute linked combinations
-# including the two, subject to the limitations in this paragraph. Non-GPL Code
-# permitted under this exception must only link to the code of this Program
-# through those well defined interfaces identified in the file named EXCEPTION
-# found in the source code files (the "Approved Interfaces"). The files of
-# Non-GPL Code may instantiate templates or use macros or inline functions from
-# the Approved Interfaces without causing the resulting work to be covered by
-# the GNU General Public License. Only Red Hat, Inc. may make changes or
-# additions to the list of Approved Interfaces. You must obey the GNU General
-# Public License in all respects for all of the Program code and other code used
-# in conjunction with the Program except the Non-GPL Code covered by this
-# exception. If you modify this file, you may extend this exception to your
-# version of the file, but you are not obligated to do so. If you do not wish to
-# provide this exception without modification, you must delete this exception
-# statement from your version and license this file solely under the GPL without
-# exception.
-#
-#
-# Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
-# Copyright (C) 2005 Red Hat, Inc.
-# All rights reserved.
-# END COPYRIGHT BLOCK
-#
-The following is a debug printout which is useful for reference. It
-is a dump of all the env vars for a real running CGI admin program.
-***********************************************************************
-HTTP_HOST=asterix.mcom.com:9616
-HTTP_ACCEPT=image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
-HTTP_USER_AGENT=Mozilla/2.0 (X11; U; SunOS 5.4 sun4m)
-HTTP_CONNECTION=Keep-Alive
-ADMSERV_PID=14001
-ADMSERV_ROOT=/export/free2/ns-home/admserv
-NETSITE_ROOT=/export/free2/ns-home
-SERVER_NAMES=slapd-asterix
-CONFIG_DIR=/export/free2/ns-home/admserv/%s/
-COMMIT_LOG=/export/free2/ns-home/admserv/commit
-BACKUPS=10
-PATH=/usr/sbin:/usr/bin
-TZ=US/Pacific
-SERVER_SOFTWARE=Netscape-Administrator/2.0b3
-SERVER_PORT=9616
-SERVER_NAME=asterix.mcom.com
-SERVER_URL=http://asterix.mcom.com:9616
-REMOTE_HOST=goa.mcom.com
-REMOTE_ADDR=207.1.137.54
-REMOTE_USER=admin
-AUTH_TYPE=basic
-HTTPS=OFF
-GATEWAY_INTERFACE=CGI/1.1
-SERVER_PROTOCOL=HTTP/1.0
-REQUEST_METHOD=GET
-SCRIPT_NAME=/slapd-asterix/bin/ds_pcontrol
diff --git a/ldap/admin/src/Cgi.pm b/ldap/admin/src/Cgi.pm
deleted file mode 100644
index a01d179b..00000000
--- a/ldap/admin/src/Cgi.pm
+++ /dev/null
@@ -1,102 +0,0 @@
-#
-# BEGIN COPYRIGHT BLOCK
-# This Program is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; version 2 of the License.
-#
-# This Program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place, Suite 330, Boston, MA 02111-1307 USA.
-#
-# In addition, as a special exception, Red Hat, Inc. gives You the additional
-# right to link the code of this Program with code not covered under the GNU
-# General Public License ("Non-GPL Code") and to distribute linked combinations
-# including the two, subject to the limitations in this paragraph. Non-GPL Code
-# permitted under this exception must only link to the code of this Program
-# through those well defined interfaces identified in the file named EXCEPTION
-# found in the source code files (the "Approved Interfaces"). The files of
-# Non-GPL Code may instantiate templates or use macros or inline functions from
-# the Approved Interfaces without causing the resulting work to be covered by
-# the GNU General Public License. Only Red Hat, Inc. may make changes or
-# additions to the list of Approved Interfaces. You must obey the GNU General
-# Public License in all respects for all of the Program code and other code used
-# in conjunction with the Program except the Non-GPL Code covered by this
-# exception. If you modify this file, you may extend this exception to your
-# version of the file, but you are not obligated to do so. If you do not wish to
-# provide this exception without modification, you must delete this exception
-# statement from your version and license this file solely under the GPL without
-# exception.
-#
-#
-# Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
-# Copyright (C) 2005 Red Hat, Inc.
-# All rights reserved.
-# END COPYRIGHT BLOCK
-#
-package Cgi;
-
-sub parse {
- my $line = shift;
- my $assign;
- my $var;
- my $value;
-
- # save time, don't parse empty lines
- return if (!$line);
-
- chomp( $line );
- if ( $raw ) {
- $raw .= '&' . $line;
- } else {
- $raw = $line;
- }
- # decode the line first
- $line = &decode($line);
- # this only works if there are no '&' characters in var or value . . .
- foreach $assign ( split( /&/, $line ) ) {
- # assume the var is everything before the first '=' in assign
- # and the value is everything after the first '='
- ( $var, $value ) = split( /=/, $assign, 2 );
- $main::cgiVars{$var} = $value;
- }
-}
-
-sub decode {
- my $string = shift;
-
- $string =~ s/\+/ /g;
- $string =~ s/%(\w\w)/chr(hex($1))/ge;
-
- return $string;
-}
-
-sub main::freakOut {
- my $i;
-
- for ( $i = 0 ; $i < scalar( @_ ) ; ++$i ) {
- $_[$i] =~ s/'/\\'/g;
- }
- print "<SCRIPT language=JAVASCRIPT>\n";
- print "alert('@_');\n";
- print "location='index';\n</SCRIPT>\n";
- exit 0;
-}
-
-if ($ENV{'QUERY_STRING'}) {
- &parse( $ENV{'QUERY_STRING'} );
- $Cgi::QUERY_STRING = $ENV{'QUERY_STRING'};
-}
-
-if ( $ENV{'CONTENT_LENGTH'} ) {
- read STDIN, $Cgi::CONTENT, $ENV{'CONTENT_LENGTH'};
- &parse( $Cgi::CONTENT );
-}
-
-# $Cgi::QUERY_STRING contains the query string and
-# $Cgi::CONTENT contains what was passed in through stdin
-
-1;
diff --git a/ldap/admin/src/cfg_sspt.c b/ldap/admin/src/cfg_sspt.c
deleted file mode 100644
index 2bd6ab2d..00000000
--- a/ldap/admin/src/cfg_sspt.c
+++ /dev/null
@@ -1,1407 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-
-#include <stdio.h>
-#include <stdarg.h>
-#include <stdlib.h>
-#include <assert.h>
-#include "ldap.h"
-#include "dsalib.h"
-#include "nspr.h"
-#include "plstr.h"
-#include <string.h>
-
-#define __CFG_SSPT_C
-
-#include "cfg_sspt.h"
-
-/*#define CGI_DEBUG 1*/
-
-#undef TEST_CONFIG /* for testing cn=config40 dummy entry instead of real one */
-
-char* const NULLSTR = 0;
-
-char* const class_top = "top";
-char* const class_organization = "organization";
-char* const class_organizationalUnit = "organizationalunit";
-char* const class_person = "person";
-char* const class_organizationalPerson = "organizationalperson";
-char* const class_inetOrgPerson = "inetorgperson";
-char* const class_groupOfUniqueNames = "groupofuniquenames";
-char* const class_domain = "domain";
-char* const class_extensibleObject = "extensibleObject";
-char* const class_adminDomain = "nsadmindomain";
-char* const class_country = "country";
-char* const class_locality = "locality";
-
-char* const name_objectClass = "objectclass";
-char* const name_cn = "cn";
-char* const name_sn = "sn";
-char* const name_givenname = "givenname";
-char* const name_uid = "uid";
-char* const name_userPassword = "userpassword";
-char* const name_passwordExpirationTime = "passwordExpirationTime";
-char* const name_o = "o";
-char* const name_ou = "ou";
-char* const name_dc = "dc";
-char* const name_member = "member";
-char* const name_uniqueMember = "uniquemember";
-char* const name_aci = "aci";
-char* const name_description = "description";
-char* const name_adminDomain = "nsadmindomainname";
-char* const name_c = "c";
-char* const name_st = "st";
-char* const name_l = "l";
-
-char* const name_netscaperootDN = "o=NetscapeRoot";
-
-char* const value_configAdminCN = "Configuration Administrator";
-char* const value_configAdminSN = "Administrator";
-char* const value_configAdminGN = "Configuration";
-char* const value_peopleOU = "People";
-char* const value_peopleDesc = "Standard branch for people (uid) entries";
-char* const value_groupsOU = "Groups";
-char* const value_groupsDesc = "Standard Branch for group entries";
-#ifdef TEST_CONFIG
-char* const value_config40 = "config40";
-char* const value_config40DN = "cn=config40";
-#endif /* TEST_CONFIG */
-
-char* dbg_log_file = "ds_sscfg.log";
-
-char* const name_localDAGroup = "Directory Administrators";
-char* const value_localDAGroupDesc = "Entities with administrative access to this directory server";
-
-static char* const ACI_self_allow = "(targetattr=\""
- "carLicense ||"
- "description ||"
- "displayName ||"
- "facsimileTelephoneNumber ||"
- "homePhone ||"
- "homePostalAddress ||"
- "initials ||"
- "jpegPhoto ||"
- "labeledURL ||"
- "mail ||"
- "mobile ||"
- "pager ||"
- "photo ||"
- "postOfficeBox ||"
- "postalAddress ||"
- "postalCode ||"
- "preferredDeliveryMethod ||"
- "preferredLanguage ||"
- "registeredAddress ||"
- "roomNumber ||"
- "secretary ||"
- "seeAlso ||"
- "st ||"
- "street ||"
- "telephoneNumber ||"
- "telexNumber ||"
- "title ||"
- "userCertificate ||"
- "userPassword ||"
- "userSMIMECertificate ||"
- "x500UniqueIdentifier\")"
- "(version 3.0; acl \"Enable self write for common attributes\"; allow (write) "
- "userdn=\"ldap:///self\";)";
-
-static char* const ACI_anonymous_allow = "(targetattr!=\"userPassword\")"
- "(version 3.0; "
- "acl \"Enable anonymous access\"; allow (read, search, compare)"
- "userdn=\"ldap:///anyone\";)";
-
-static char* const ACI_anonymous_allow_with_filter =
- "(targetattr=\"*\")(targetfilter=(%s))"
- "(version 3.0; acl \"Default anonymous access\"; "
- "allow (read, search) userdn=\"ldap:///anyone\";)";
-
-static char* const ACI_config_admin_group_allow_all = "(targetattr=\"*\")"
- "(version 3.0; "
- "acl \"Enable Configuration Administrator Group modification\"; "
- "allow (all) groupdn=\"ldap:///%s, %s=%s, %s, %s\";)";
-
-static char* const ACI_config_admin_group_allow = "(targetattr=\"*\")"
- "(version 3.0; "
- "acl \"Configuration Administrators Group\"; allow (%s) "
- "groupdn=\"ldap:///%s\";)";
-
-static char* const ACI_local_DA_allow = "(targetattr = \"*\")(version 3.0; "
- "acl \"Local Directory Administrators Group\"; allow (%s) "
- "groupdn=\"ldap:///%s\";)";
-
-static char* const ACI_group_expansion = "(targetattr=\"*\")"
- "(version 3.0; acl \"Enable Group Expansion\"; "
- "allow (read, search, compare) groupdnattr=\"uniquemember\";)";
-
-static char* const ACI_user_allow_1 = "(targetattr=\"*\")(version 3.0; "
- "acl \"Configuration Administrator\"; allow (%s) "
- "userdn=\"ldap:///uid=%s, %s\";)";
-
-static char* const ACI_user_allow_2 = "(targetattr=\"*\")(version 3.0; "
- "acl \"Configuration Administrator\"; allow (%s) "
- "userdn=\"ldap:///%s\";)";
-/*
- This is a list of DSE entries that the Configuration Admin Group has
- access to and the access rights for that entry
-*/
-static struct _DSEEntriesAndAccess {
- char *entryDN;
- char *access;
-} entryAndAccessList[] = {
- {"cn=config", "all"},
- {"cn=schema", "all"}
-};
-
-static int entryAndAccessListSize =
- sizeof(entryAndAccessList)/sizeof(entryAndAccessList[0]);
-
-int
-getEntryAndAccess(int index, const char **entry, const char **access)
-{
- if (!entry || !access)
- return 0;
-
- *entry = 0;
- *access = 0;
-
- if (index < 0 || index >= entryAndAccessListSize)
- return 0;
-
- *entry = entryAndAccessList[index].entryDN;
- *access = entryAndAccessList[index].access;
-
- return 1;
-}
-
-static int
-is_root_user(const char *name, QUERY_VARS* query)
-{
- if (!name || !query->rootDN) {
- return 0;
- }
- return !PL_strcasecmp(name, query->rootDN);
-}
-
-/*
-** ---------------------------------------------------------------------------
-**
-** Utility Routines - Functions for performing string and file operations.
-**
-*/
-
-#ifdef CGI_DEBUG
-#include <stdarg.h>
-static void debug_log (const char* file, const char* format, ...)
-#ifdef __GNUC__
- __attribute__ ((format (printf, 2, 3)));
-#else
- ;
-#endif
-
-static void
-debug_log (const char* file, const char* format, ...)
-{
- va_list args;
- FILE* fp = fopen(file, "a+");
- if (fp) {
- va_start(args, format);
- vfprintf(fp, format, args);
- va_end(args);
- fflush(fp);
- fclose(fp);
- }
-}
-
-static void
-debug_log_array (const char* file, char* name, char** vals)
-{
- FILE* fp = fopen(file, "a+");
-
- if (fp) {
- if (vals != NULL) {
- for (; *vals != NULL; LDAP_UTF8INC(vals)) {
- fprintf (fp, "%s: %s\n", name, *vals);
- }
- fflush(fp);
- }
- fclose(fp);
- }
-}
-
-#endif /* CGI_DEBUG */
-
-static char *
-extract_name_from_dn(const char *dn)
-{
- char **rdnList = 0;
- char *ret = 0;
- if (!dn)
- return ret;
-
- rdnList = ldap_explode_dn(dn, 1); /* leave out types */
- if (!rdnList || !rdnList[0])
- ret = strdup(dn); /* the given dn is not really a dn */
- else
- ret = strdup(rdnList[0]);
-
- if (rdnList)
- ldap_value_free(rdnList);
-
- return ret;
-}
-
-int
-entry_exists(LDAP* ld, const char* entrydn)
-{
- int exists = 0;
- int err;
-
- struct timeval sto = { 10L, 0L };
- LDAPMessage* pLdapResult;
-
- err = ldap_search_st(ld, entrydn, LDAP_SCOPE_BASE,
- "objectClass=*", NULL, 0, &sto, &pLdapResult);
-
- if (err == LDAP_SUCCESS)
- {
- LDAPMessage* pLdapEntry;
- char* dn;
-
- for (pLdapEntry = ldap_first_entry(ld, pLdapResult);
- pLdapEntry != NULL;
- pLdapEntry = ldap_next_entry(ld, pLdapEntry))
- {
- if ((dn = ldap_get_dn(ld, pLdapEntry)) != NULL)
- {
- exists = 1;
- free(dn);
- /*ldap_memfree(dn);*/
- break;
- }
- }
-
- ldap_msgfree(pLdapResult);
- }
-
- return exists;
-}
-
-int
-add_aci(LDAP* ld, char* DN, char* privilege)
-{
- int err;
- int ret = 0;
- LDAPMod mod;
- LDAPMod* mods[2];
- char* aci[2];
-
-#ifdef CGI_DEBUG
- debug_log (dbg_log_file, "add_aci('%s', '%s')\n",
- DN ? DN : "NULL",
- privilege ? privilege : "NULL");
-#endif
-
- if (ld == NULL || DN == NULL || privilege == NULL)
- {
- return -1;
- }
-
- mods[0] = &mod;
- mods[1] = NULL;
- mod.mod_op = LDAP_MOD_ADD;
- mod.mod_type = name_aci;
- mod.mod_values = aci;
- aci[0] = privilege;
- aci[1] = NULL;
- /* fprintf (stdout, "ldap_modify_s('%s')<br>\n",DN); fflush (stdout); */
- err = ldap_modify_s (ld, DN, mods);
- if (err != LDAP_SUCCESS && err != LDAP_TYPE_OR_VALUE_EXISTS) {
- char* exp = "can't add privilege. ";
- char* explanation = PR_smprintf("%s (%i) returned from ldap_modify_s(%s, %i). Privilege: %s",
- ldap_err2string (err), err, DN, LDAP_MOD_ADD, aci[0]);
- ds_report_warning (DS_INCORRECT_USAGE, exp, explanation);
- PR_smprintf_free (explanation);
- ret = 1;
- }
-
- return ret;
-}
-
-/*
- Same as add_aci, except that the 3rd parameter is a format string
- in printf style format, and the 4th - Nth parameters are a NULL terminated
- list of strings to substitute in the format; basically just constructs
- the correct aci string and passes it to add_aci
-*/
-int add_aci_v(LDAP* ld, char* DN, char* format, ...)
-#ifdef __GNUC__
- __attribute__ ((format (printf, 3, 4)));
-#else
- ;
-#endif
-int
-add_aci_v(LDAP* ld, char* DN, char* format, ...)
-{
- char* acistring = NULL;
- int len = 0;
- int status = 0;
- int fudge = 10; /* a little extra just to make sure */
- char *s = 0;
- va_list ap;
-
-#ifdef CGI_DEBUG
- debug_log (dbg_log_file, "add_aci_v('%s', '%s')\n",
- DN ? DN : "NULL",
- format ? format : "NULL");
-#endif
-
- if (ld == NULL || DN == NULL || format == NULL)
- {
- return -1;
- }
-
- /* determine the length of the string to allocate to hold
- the aci string
- */
- len += strlen(format) + fudge;
- va_start(ap, format);
- s = va_arg(ap, char*);
- while (s)
- {
- len += strlen(s) + 1;
- s = va_arg(ap, char*);
- }
- va_end(ap);
-
- va_start(ap, format);
- acistring = (char *)malloc(len);
- vsprintf(acistring, format, ap);
- va_end(ap);
- status = add_aci(ld, DN, acistring);
-
- free(acistring);
-
- return status;
-}
-
-/*
- Make a dn from lists of dn components. The format argument is in the
- standard printf format. The varargs list contains the various dn
- components. The string returned is malloc()'d and must be free()'d by
- the caller after use. example:
- make_dn("cn=%s, ou=%s, %s", "Admins", "TopologyManagement", "o=NetscapeRoot", NULL)
- returns
- "cn=Admins, ou=TopologyManagement, o=NetscapeRoot"
-*/
-char *
-make_dn(const char* format, ...)
-{
- char *s;
- int len = 0;
- int fudge = 3;
- va_list ap;
- char *dnstring;
-
-#ifdef CGI_DEBUG
- debug_log (dbg_log_file, "make_dn('%s', ...)\n",
- format ? format : "NULL");
-#endif
-
- if (format == NULL)
- {
- return NULL;
- }
-
- /* determine the length of the string to allocate to hold
- the dn string
- */
- len += strlen(format) + fudge;
- va_start(ap, format);
- s = va_arg(ap, char*);
- while (s)
- {
- len += strlen(s) + 3;
- s = va_arg(ap, char*);
- }
- va_end(ap);
-
- va_start(ap, format);
- dnstring = (char *)malloc(len);
- vsprintf(dnstring, format, ap);
- va_end(ap);
-
- return dnstring;
-}
-
-char *
-admin_user_exists(LDAP* ld, char* base, char *userID)
-{
- int exists = 0;
- int err;
- char search_str[MAX_STRING_LEN];
-
- struct timeval sto = { 10L, 0L };
- LDAPMessage* pLdapResult;
- PR_snprintf (search_str, sizeof(search_str), "uid=%s*", userID ? userID : "admin");
-
- err = ldap_search_st(ld, base, LDAP_SCOPE_SUBTREE,
- search_str, NULL, 0, &sto, &pLdapResult);
-
- if (err == LDAP_SUCCESS)
- {
- LDAPMessage* pLdapEntry;
- char* dn = NULL;
-
- for (pLdapEntry = ldap_first_entry(ld, pLdapResult);
- pLdapEntry != NULL;
- pLdapEntry = ldap_next_entry(ld, pLdapEntry))
- {
- if ((dn = ldap_get_dn(ld, pLdapEntry)) != NULL)
- {
- exists = 1;
- /*ldap_memfree(dn);*/
- break;
- }
- }
-
- ldap_msgfree(pLdapResult);
- return dn;
- }
-
- return NULL;
-}
-
-static void
-getUIDFromDN(const char *userID, char *uid)
-{
- char **rdnListTypes = 0;
- char **rdnListNoTypes = 0;
- int ii = 0;
- int uidindex = -1;
- uid[0] = 0;
-
- rdnListTypes = ldap_explode_dn(userID, 0);
- if (!rdnListTypes)
- return; /* userID is not a DN */
-
- /* find the first rdn in the given userID DN which begins with
- "uid=" */
- for (ii = 0; uidindex < 0 && rdnListTypes[ii]; ++ii)
- {
- if (!PL_strncasecmp(rdnListTypes[ii], "uid=", 4))
- uidindex = ii;
- }
- ldap_value_free(rdnListTypes);
-
- if (uidindex < 0) /* did not find an rdn beginning with "uid=" */
- return;
-
- rdnListNoTypes = ldap_explode_dn(userID, 1);
- PL_strncpyz(uid, rdnListNoTypes[uidindex], 1024);
- ldap_value_free(rdnListNoTypes);
-
- return;
-}
-
-static char *
-create_ssadmin_user(LDAP* ld, char *base, char* userID, char* password)
-{
- int err;
- char *ret = 0;
- char entrydn[1024] = {0};
- char realuid[1024] = {0};
- char *admin_dn = NULL;
-
-#ifdef CGI_DEBUG
- debug_log (dbg_log_file, "create_ssadmin_user('%s','%s','%s')\n",
- base ? base : "NULL", userID ? userID : "NULL",
- password ? password : "NULL");
-#endif
-
- if (ld == NULL || base == NULL || userID == NULL || *userID == '\0' ||
- password == NULL || *password == '\0')
- {
- return NULL;
- }
-
- getUIDFromDN(userID, realuid);
- if (realuid[0])
- {
- PL_strncpyz(entrydn, userID, sizeof(entrydn));
- if (entry_exists(ld, entrydn))
- admin_dn = entrydn;
- }
- else
- {
- PR_snprintf(entrydn, sizeof(entrydn), "%s=%s, %s", name_uid, userID, base);
- admin_dn = admin_user_exists(ld, base, userID);
- PL_strncpyz(realuid, userID, sizeof(realuid));
- }
-
- if (admin_dn)
- {
- char error[BIG_LINE];
- PR_snprintf(error, sizeof(error), "A user with uid=%s \"%s\" already exists in the directory"
- " and will not be overwritten.", realuid[0] ? realuid : "admin", admin_dn);
- ds_send_error(error, 0);
- return admin_dn;
- }
- else
- {
- LDAPMod* attrs[8];
- LDAPMod attr[7];
- char* objectClasses[5];
- char* cn[2];
- char* sn[2];
- char* givenname[2];
- char* uid[2];
- char* userPassword[2];
- char* passwordExpirationTime[2];
-
- attrs[0] = &attr[0];
- attrs[1] = &attr[1];
- attrs[2] = &attr[2];
- attrs[3] = &attr[3];
- attrs[4] = &attr[4];
- attrs[5] = &attr[5];
- attrs[6] = &attr[6];
- attrs[7] = NULL;
- attr[0].mod_op = LDAP_MOD_ADD;
- attr[0].mod_type = name_objectClass;
- attr[0].mod_values = objectClasses;
- objectClasses[0] = class_top;
- objectClasses[1] = class_person;
- objectClasses[2] = class_organizationalPerson;
- objectClasses[3] = class_inetOrgPerson;
- objectClasses[4] = NULL;
- attr[1].mod_op = LDAP_MOD_ADD;
- attr[1].mod_type = name_cn;
- attr[1].mod_values = cn;
- cn[0] = value_configAdminCN;
- cn[1] = NULL;
- attr[2].mod_op = LDAP_MOD_ADD;
- attr[2].mod_type = name_sn;
- attr[2].mod_values = sn;
- sn[0] = value_configAdminSN;
- sn[1] = NULL;
- attr[3].mod_op = LDAP_MOD_ADD;
- attr[3].mod_type = name_givenname;
- attr[3].mod_values = givenname;
- givenname[0] = value_configAdminGN;
- givenname[1] = NULL;
- attr[4].mod_op = LDAP_MOD_ADD;
- attr[4].mod_type = name_uid;
- attr[4].mod_values = uid;
- uid[0] = realuid;
- uid[1] = NULL;
- attr[5].mod_op = LDAP_MOD_ADD;
- attr[5].mod_type = name_userPassword;
- attr[5].mod_values = userPassword;
- userPassword[0] = password;
- userPassword[1] = NULL;
- attr[6].mod_op = LDAP_MOD_ADD;
- attr[6].mod_type = name_passwordExpirationTime;
- attr[6].mod_values = passwordExpirationTime;
- passwordExpirationTime[0] = "20380119031407Z";
- passwordExpirationTime[1] = NULL;
-
- /* fprintf (stdout, "ldap_add_s(%s)<br>\n", entrydn); fflush (stdout); */
-
- err = ldap_add_s (ld, entrydn, attrs);
-
- if (err != LDAP_SUCCESS)
- {
- char *explanation = PR_smprintf("Unable to create administrative user."
- " (%s (%i) returned from ldap_add_s(%s))",
- ldap_err2string (err), err, entrydn);
- ds_report_warning (DS_NETWORK_ERROR, " can't create user", explanation);
- PR_smprintf_free (explanation);
- ret = NULL;
- }
- }
-
- return NULL;
-}
-
-static int
-create_base_entry(
- LDAP* ld,
- char* basedn,
- char *naming_attr_type,
- char *naming_attr_value,
- char *objectclassname
-)
-{
- int err;
- int ret = 0;
-
-#ifdef CGI_DEBUG
- debug_log (dbg_log_file, "create_base_entry('%s','%s')\n",
- basedn ? basedn : "NULL", naming_attr_value: "NULL");
-#endif
-
- if (ld == NULL || basedn == NULL || *basedn == '\0')
- {
- return -1;
- }
-
- if (!entry_exists(ld, basedn))
- {
- LDAPMod* attrs[3];
- LDAPMod attr[2];
- char* objectClasses[3];
- char* names[2];
-
- attrs[0] = &attr[0];
- attrs[2] = NULL;
- attr[0].mod_op = LDAP_MOD_ADD;
- attr[0].mod_type = name_objectClass;
- attr[0].mod_values = objectClasses;
- objectClasses[0] = class_top;
- objectClasses[1] = objectclassname;
- objectClasses[2] = NULL;
- attrs[1] = &attr[1];
- attr[1].mod_op = LDAP_MOD_ADD;
- attr[1].mod_type = naming_attr_type;
- attr[1].mod_values = names;
- names[0] = naming_attr_value;
- names[1] = NULL;
-
- /* fprintf (stdout, "ldap_add_s(%s)<br>\n", basedn); fflush (stdout); */
-
- err = ldap_add_s (ld, basedn, attrs);
-
- if (err != LDAP_SUCCESS)
- {
- char* explanation = PR_smprintf("Unable to create base entry."
- " (%s (%i) returned from ldap_add_s(%s))",
- ldap_err2string (err), err, basedn);
- ds_report_warning (DS_NETWORK_ERROR, " can't create base entry",
- explanation);
- PR_smprintf_free (explanation);
- ret = 1;
- }
- }
-
- return ret;
-}
-
-static int
-create_organization(LDAP* ld, char* base, char* org)
-{
- return create_base_entry(ld, base, name_o, org, class_organization);
-}
-
-static int
-create_organizational_unit(LDAP* ld, char* base, char* unit, char *description,
- char *extra_objectclassName,
- char *extra_attrName,
- char *extra_attrValue)
-{
- int err;
- int ret = 0;
- char *entrydn = NULL;
-
-#ifdef CGI_DEBUG
- debug_log (dbg_log_file, "create_organizational_unit('%s','%s')\n",
- base ? base : "NULL", unit ? unit : "NULL");
-#endif
-
- if (ld == NULL || unit == NULL || *unit == '\0')
- {
- return -1;
- }
-
- /*
- if base is null, assume the unit is the full DN of the entry
- to create; this assumes the caller knows what he/she is doing
- and has already created the parent entry(ies)
- */
- if (!base)
- entrydn = strdup(unit);
- else
- entrydn = make_dn("%s=%s, %s", name_ou, unit, base, NULLSTR);
-
- if (!entry_exists(ld, entrydn))
- {
- LDAPMod* attrs[5];
- LDAPMod attr[4];
- char* objectClasses[4];
- char* names[2];
- char* desc[2];
- char* extra[2];
- char *baseName = unit;
- int attrnum = 0;
- if (base)
- {
- baseName = strdup(unit);
- }
- else
- {
- /* since the unit is in DN form, we need to extract something to
- use for the ou: attribute */
- baseName = extract_name_from_dn(unit);
- }
- attrs[0] = &attr[0];
- attrs[1] = &attr[1];
- attrs[2] = NULL;
- attr[0].mod_op = LDAP_MOD_ADD;
- attr[0].mod_type = name_objectClass;
- attr[0].mod_values = objectClasses;
- objectClasses[0] = class_top;
- objectClasses[1] = class_organizationalUnit;
- objectClasses[2] = extra_objectclassName; /* may be null */
- objectClasses[3] = NULL;
- attr[1].mod_op = LDAP_MOD_ADD;
- attr[1].mod_type = name_ou;
- attr[1].mod_values = names;
- names[0] = baseName;
- names[1] = NULL;
- attrnum = 2;
- if (description && *description)
- {
- attr[attrnum].mod_op = LDAP_MOD_ADD;
- attr[attrnum].mod_type = name_description;
- attr[attrnum].mod_values = desc;
- desc[0] = description;
- desc[1] = NULL;
- attrs[attrnum] = &attr[attrnum];
- attrs[++attrnum] = NULL;
- }
- if (extra_attrName && extra_attrValue &&
- *extra_attrName && *extra_attrValue)
- {
- attr[attrnum].mod_op = LDAP_MOD_ADD;
- attr[attrnum].mod_type = extra_attrName;
- attr[attrnum].mod_values = extra;
- extra[0] = extra_attrValue;
- extra[1] = NULL;
- attrs[attrnum] = &attr[attrnum];
- attrs[++attrnum] = NULL;
- }
-
- /* fprintf (stdout, "ldap_add_s(%s)<br>\n", DN); fflush (stdout); */
-
- err = ldap_add_s (ld, entrydn, attrs);
- if (baseName)
- free(baseName);
-
- if (err != LDAP_SUCCESS)
- {
- char* explanation = PR_smprintf("Unable to create organizational unit."
- " (%s (%i) returned from ldap_add_s(%s))",
- ldap_err2string (err), err, entrydn);
- ds_report_warning (DS_NETWORK_ERROR, " can't create organizational unit",
- explanation);
- PR_smprintf_free (explanation);
- ret = 1;
- }
- }
-
- if (entrydn)
- free(entrydn);
-
- return ret;
-}
-
-static int
-create_domain_component(LDAP* ld, char* base, char* domcomp)
-{
- return create_base_entry(ld, base, name_dc, domcomp, class_domain);
-}
-
-static int
-create_country(LDAP* ld, char* base, char* country)
-{
- return create_base_entry(ld, base, name_c, country, class_country);
-}
-
-static int
-create_state(LDAP* ld, char* base, char* state)
-{
- return create_base_entry(ld, base, name_st, state, class_locality);
-}
-
-static int
-create_locality(LDAP* ld, char* base, char* locality)
-{
- return create_base_entry(ld, base, name_l, locality, class_locality);
-}
-
-static int
-create_base(LDAP* ld, char* base)
-{
- int ret = 0;
- char* attr;
- char **rdnList = 0;
- char **rdnListNoTypes = 0;
- enum BASETYPE { unknown, org, orgunit, domcomp, country, state, locality } base_type = unknown;
-
-#ifdef CGI_DEBUG
- debug_log (dbg_log_file, "create_base('%s')\n", base ? base : "NULL");
-#endif
-
- if (ld == NULL || base == NULL || *base == '\0')
- {
- return -1;
- }
-
- rdnList = ldap_explode_dn(base, 0);
- if (!rdnList)
- {
- char error[BIG_LINE];
- PR_snprintf(error, sizeof(error), "The given base suffix [%s] is not a valid DN", base);
- ds_send_error(error, 0);
- return -1;
- }
-
- if (PL_strncasecmp(rdnList[0], "o=", 2) == 0)
- {
- base_type = org;
- }
- else if (PL_strncasecmp(rdnList[0], "ou=", 3) == 0)
- {
- base_type = orgunit;
- }
- else if (PL_strncasecmp(rdnList[0], "dc=", 3) == 0)
- {
- base_type = domcomp;
- }
- else if (PL_strncasecmp(rdnList[0], "c=", 2) == 0)
- {
- base_type = country;
- }
- else if (PL_strncasecmp(rdnList[0], "st=", 3) == 0)
- {
- base_type = state;
- }
- else if (PL_strncasecmp(rdnList[0], "l=", 2) == 0)
- {
- base_type = locality;
- }
- else
- {
- ds_report_warning (DS_INCORRECT_USAGE, " Unable to create the root suffix.",
- "In order to create the root suffix in the directory, you must "
- "specify a distinguished name beginning with o=, ou=, dc=, c=, st=, or l=. "
- "If you wish to use something else for your root suffix, you "
- "should first create the directory with one of these suffixes, then you can "
- "create additional suffixes in any form you choose."
- );
- return -1;
- }
-
- ldap_value_free(rdnList);
- /*
- We need to extract from the base the value to use for the attribute
- name_attr e.g. ou: foo or o: org.
- */
- rdnListNoTypes = ldap_explode_dn(base, 1);
- attr = rdnListNoTypes[0];
-
- if (!entry_exists(ld, base))
- {
- if (base_type == org)
- {
- ret = create_organization(ld, base, attr);
- }
- else if (base_type == orgunit)
- {
- /* this function is smart enough to extract the name from the DN */
- ret = create_organizational_unit(ld, 0, base, 0, 0, 0, 0);
- }
- else if (base_type == domcomp)
- {
- ret = create_domain_component(ld, base, attr);
- }
- else if (base_type == country)
- {
- ret = create_country(ld, base, attr);
- }
- else if (base_type == state)
- {
- ret = create_state(ld, base, attr);
- }
- else if (base_type == locality)
- {
- ret = create_locality(ld, base, attr);
- }
- }
-
- ldap_value_free(rdnListNoTypes);
-
- /* now add the anon search and self mod acis */
- if (!ret)
- {
- ret = add_aci(ld, base, ACI_anonymous_allow);
- if (!ret)
- ret = add_aci(ld, base, ACI_self_allow);
- }
-
- return ret;
-}
-
-
-#ifdef TEST_CONFIG
-static int
-create_configEntry(LDAP* ld)
-{
-/*
- dn: cn=config40
- objectclass: top
- objectclass: extensibleObject
- cn: config40
- */
- char *entrydn = NULL;
- int err;
- int ret = 0;
-
-#ifdef CGI_DEBUG
- debug_log (dbg_log_file, "create_configEntry()\n");
-#endif
-
- if (ld == NULL)
- {
- return -1;
- }
-
- entrydn = make_dn("%s=%s", name_cn, value_config40, NULLSTR);
- if (!entry_exists(ld, entrydn))
- {
- LDAPMod* attrs[3];
- LDAPMod attr[2];
- char* objectClasses[3];
- char* names[2];
-
- attrs[0] = &attr[0];
- attrs[2] = NULL;
- attr[0].mod_op = LDAP_MOD_ADD;
- attr[0].mod_type = name_objectClass;
- attr[0].mod_values = objectClasses;
- objectClasses[0] = class_top;
- objectClasses[1] = class_extensibleObject;
- objectClasses[2] = NULL;
- attrs[1] = &attr[1];
- attr[1].mod_op = LDAP_MOD_ADD;
- attr[1].mod_type = name_cn;
- attr[1].mod_values = names;
- names[0] = value_config40;
- names[1] = NULL;
-
- /* fprintf (stdout, "ldap_add_s(%s)<br>\n", DN); fflush (stdout); */
-
- err = ldap_add_s (ld, entrydn, attrs);
-
- if (err != LDAP_SUCCESS)
- {
- char* explanation = PR_smprintf("Unable to create %s."
- " (%s (%i) returned from ldap_add_s(%s))",
- value_config40, ldap_err2string (err), err, entrydn);
- ds_report_warning (DS_NETWORK_ERROR, " can't create config40",
- explanation);
- PR_smprintf_free (explanation);
- ret = 1;
- }
-
- }
-
- if (entrydn)
- free(entrydn);
-
- return ret;
-}
-#endif
-
-int
-create_group(LDAP* ld, char* base, char* group)
-{
- int err;
- int ret = 0;
- LDAPMod* attrs[3];
- LDAPMod attr[2];
- char* objectClasses[3];
- char* names[2];
- char *entrydn = 0;
-
-#ifdef CGI_DEBUG
- debug_log (dbg_log_file, "create_group('%s','%s')\n",
- base ? base : "NULL", group ? group : "NULL");
-#endif
-
- if (ld == NULL || base == NULL || *base == '\0' ||
- group == NULL || *group == '\0')
- {
- return -1;
- }
-
- entrydn = make_dn("%s=%s, %s", name_cn, group, base, NULLSTR);
-
- if (!entry_exists(ld, entrydn))
- {
- attrs[0] = &attr[0];
- attrs[1] = &attr[1];
- attrs[2] = NULL;
- attr[0].mod_op = LDAP_MOD_ADD;
- attr[0].mod_type = name_objectClass;
- attr[0].mod_values = objectClasses;
- objectClasses[0] = class_top;
- objectClasses[1] = class_groupOfUniqueNames;
- objectClasses[2] = NULL;
- attr[1].mod_op = LDAP_MOD_ADD;
- attr[1].mod_type = name_cn;
- attr[1].mod_values = names;
- names[0] = group;
- names[1] = NULL;
- /* fprintf (stdout, "ldap_add_s(%s)<br>\n", entrydn); fflush (stdout); */
-
- err = ldap_add_s (ld, entrydn, attrs);
-
- if (err != LDAP_SUCCESS)
- {
- char* explanation = PR_smprintf("Unable to create group."
- " (%s (%i) returned from ldap_add_s(%s))",
- ldap_err2string (err), err, entrydn);
- ds_report_warning (DS_NETWORK_ERROR, " can't create group", explanation);
- PR_smprintf_free (explanation);
- ret = 1;
- }
- }
-
- if (entrydn)
- free(entrydn);
-
- return ret;
-}
-
-int
-create_consumer_dn(LDAP* ld, char* dn, char* hashedpw)
-{
- int err;
- int ret = 0;
- LDAPMod* attrs[7];
- LDAPMod attr[6];
- char* objectClasses[3];
- char* names[2];
- char* snames[2];
- char* desc[2];
- char* pwd[2];
- char* passwordExpirationTime[2];
-
-#ifdef CGI_DEBUG
- debug_log (dbg_log_file, "create_consumer_dn('%s','%s')\n",
- dn ? dn : "NULL", hashedpw ? hashedpw : "NULL");
-#endif
-
- if (ld == NULL || dn == NULL || hashedpw == NULL)
- {
- return -1;
- }
-
- if (!entry_exists(ld, dn))
- {
- attrs[0] = &attr[0];
- attrs[1] = &attr[1];
- attrs[2] = &attr[2];
- attrs[3] = &attr[3];
- attrs[4] = &attr[4];
- attrs[5] = &attr[5];
- attrs[6] = NULL;
-
- attr[0].mod_op = LDAP_MOD_ADD;
- attr[0].mod_type = name_objectClass;
- attr[0].mod_values = objectClasses;
- objectClasses[0] = class_top;
- objectClasses[1] = class_person;
- objectClasses[2] = NULL;
-
- attr[1].mod_op = LDAP_MOD_ADD;
- attr[1].mod_type = name_cn;
- attr[1].mod_values = names;
- names[0] = "Replication Consumer";
- names[1] = NULL;
-
- attr[2].mod_op = LDAP_MOD_ADD;
- attr[2].mod_type = name_sn;
- attr[2].mod_values = snames;
- snames[0] = "Consumer";
- snames[1] = NULL;
-
- attr[3].mod_op = LDAP_MOD_ADD;
- attr[3].mod_type = name_description;
- attr[3].mod_values = desc;
- desc[0] = "Replication Consumer bind entity";
- desc[1] = NULL;
-
- attr[4].mod_op = LDAP_MOD_ADD;
- attr[4].mod_type = name_userPassword;
- attr[4].mod_values = pwd;
- pwd[0] = hashedpw;
- pwd[1] = NULL;
-
- attr[5].mod_op = LDAP_MOD_ADD;
- attr[5].mod_type = name_passwordExpirationTime;
- attr[5].mod_values = passwordExpirationTime;
- passwordExpirationTime[0] = "20380119031407Z";
- passwordExpirationTime[1] = NULL;
-
- /* fprintf (stdout, "ldap_add_s(%s)<br>\n", DN); fflush (stdout); */
-
- err = ldap_add_s (ld, dn, attrs);
-
- if (err != LDAP_SUCCESS)
- {
- char* explanation = PR_smprintf("Unable to create consumer dn."
- " (%s (%i) returned from ldap_add_s(%s))",
- ldap_err2string (err), err, dn);
- ds_report_warning (DS_NETWORK_ERROR, " can't create consumer dn", explanation);
- PR_smprintf_free (explanation);
- ret = 1;
- }
- }
-
- return ret;
-}
-
-static int
-add_group_member(LDAP* ld, char* DN, char* attr, char* member)
-{
- int err;
- int ret = 0;
- LDAPMod mod;
- LDAPMod* mods[2];
- char* members[2];
-
-#ifdef CGI_DEBUG
- debug_log (dbg_log_file, "add_group_member('%s', '%s', '%s')\n",
- DN ? DN : "NULL",
- attr ? attr : "NULL",
- member ? member : "NULL");
-#endif
-
- if (ld == NULL || DN == NULL || attr == NULL || member == NULL)
- {
- return -1;
- }
-
- mods[0] = &mod;
- mods[1] = NULL;
- mod.mod_op = LDAP_MOD_ADD;
- mod.mod_type = attr;
- mod.mod_values = members;
- members[0] = member;
- members[1] = NULL;
- /* fprintf (stdout, "ldap_modify_s('%s')<br>\n",DN); fflush (stdout); */
- err = ldap_modify_s (ld, DN, mods);
- if (err != LDAP_SUCCESS && err != LDAP_TYPE_OR_VALUE_EXISTS) {
- char* exp = "can't add member. ";
- char* explanation = PR_smprintf("%s (%i) returned from ldap_modify_s(%s, %i).",
- ldap_err2string (err), err, DN, LDAP_MOD_ADD);
- ds_report_warning (DS_INCORRECT_USAGE, exp, explanation);
- PR_smprintf_free (explanation);
- ret = 1;
- }
-
- return ret;
-}
-
-static LDAP*
-do_bind(SLAPD_CONFIG* slapd, char* rootdn, char* rootpw)
-{
- LDAP* connection = NULL;
- int retrymax = 1800; /* wait up to 30 min; init dbcache could be slow. */
- int err = LDAP_SUCCESS;
-
- /* added error retry to work around the slow start introduced
- by blackflag 624053 */
- while ( retrymax-- )
- {
- if (connection == NULL) {
- connection = ldap_open ("127.0.0.1", slapd->port);
- }
-
- if (connection) {
- err = ldap_simple_bind_s (connection, rootdn, rootpw ? rootpw : "");
- if (LDAP_SUCCESS == err)
- break;
- }
-
- PR_Sleep(PR_SecondsToInterval(1));
- }
-
- if (connection == NULL) {
- char* format = " Cannot connect to server.";
- ds_report_warning (DS_NETWORK_ERROR, format, "");
- } else if (err != LDAP_SUCCESS) {
- char* explanation = PR_smprintf("Unable to bind to server."
- " (%s (%i) returned from ldap_simple_bind_s(%s))",
- ldap_err2string (err), err, rootdn);
- ds_report_warning (DS_NETWORK_ERROR, " can't bind to server",
- explanation);
- PR_smprintf_free (explanation);
- ldap_unbind (connection);
- connection = NULL;
- }
- fflush (stdout);
- return connection;
-}
-
-#ifdef TEST_CONFIG
-int
-config_configEntry(LDAP* connection, QUERY_VARS* query)
-{
- /* initial ACIs for o=NetscapeRoot */
-
- int ret = add_aci_v (connection, value_config40DN, ACI_self_allow, NULLSTR);
- return ret;
-}
-#endif
-
-int
-config_suitespot(SLAPD_CONFIG* slapd, QUERY_VARS* query)
-{
- LDAP* connection;
- const char* DN_formatUID = "uid=%s,%s";
- char* usageShortMsg = " Required field missing.";
- char* usageErrorMsg = NULL;
- int status = 0;
- char *admin_domainDN = 0;
- int ii = 0;
- char *configAdminDN = 0;
- char *adminGroupDN = 0;
- char *parentDN = 0;
- char *localDAGroupDN = 0;
- char realuid[1024] = {0};
-
- if (!query->rootDN || *query->rootDN == '\0') {
- usageErrorMsg = "You must enter the distinguished name of a user with "
- "unrestricted access to the directory.";
- } else if (!query->rootPW || *query->rootPW == '\0') {
- usageErrorMsg = "You must enter the password of the user with "
- "unrestricted access to the directory.";
- }
-
- if (usageErrorMsg) {
- ds_report_warning (DS_INCORRECT_USAGE, usageShortMsg, usageErrorMsg);
- return -1;
- }
-
- if (!(connection = do_bind (slapd, query->rootDN, query->rootPW)))
- return 1;
-
- if (query->suffix)
- {
- status = create_base(connection, query->suffix);
- if (!status)
- {
- if (configAdminDN && !is_root_user(configAdminDN, query)) {
- add_aci_v(connection, query->suffix, ACI_user_allow_2,
- "all", configAdminDN, NULLSTR);
- }
-
- status = create_group(connection, query->suffix, name_localDAGroup);
- }
- }
-
- if (!status && query->consumerDN && query->consumerPW &&
- PL_strcasecmp(query->consumerDN, query->rootDN))
- status = create_consumer_dn(connection,
- query->consumerDN, query->consumerPW);
-
- if (!status)
- {
- if (query->suffix)
- {
- localDAGroupDN = make_dn("cn=%s, %s", name_localDAGroup,
- query->suffix, NULLSTR);
- }
- else
- {
- localDAGroupDN = NULL;
- }
- for (ii = 0; ii < entryAndAccessListSize; ++ii)
- {
- if (query->cfg_sspt && adminGroupDN) {
- add_aci_v(connection, entryAndAccessList[ii].entryDN,
- ACI_config_admin_group_allow,
- entryAndAccessList[ii].access,
- adminGroupDN, NULLSTR);
- }
- if (configAdminDN && !is_root_user(configAdminDN, query)) {
- add_aci_v(connection, entryAndAccessList[ii].entryDN,
- ACI_user_allow_2,
- entryAndAccessList[ii].access,
- configAdminDN, NULLSTR);
- }
- if (localDAGroupDN)
- {
- add_aci_v(connection, entryAndAccessList[ii].entryDN,
- ACI_local_DA_allow,
- entryAndAccessList[ii].access,
- localDAGroupDN, NULLSTR);
- }
- }
- }
-
-#ifdef TEST_CONFIG
- if (!status && query->testconfig)
- status = create_configEntry(connection);
-
- if (!status && query->testconfig)
- status = config_configEntry(connection, query);
-#endif
-
- if (connection)
- ldap_unbind (connection);
- if (adminGroupDN)
- free(adminGroupDN);
- if (configAdminDN)
- free(configAdminDN);
- if (parentDN)
- free(parentDN);
- if (localDAGroupDN)
- free(localDAGroupDN);
-
- return status;
-}
diff --git a/ldap/admin/src/cfg_sspt.h b/ldap/admin/src/cfg_sspt.h
deleted file mode 100644
index 15ad7237..00000000
--- a/ldap/admin/src/cfg_sspt.h
+++ /dev/null
@@ -1,147 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#ifndef __cfg_sspt_h
-#define __cfg_sspt_h
-
-#ifdef __cplusplus
-extern "C" { /* Assume C declarations for C++ */
-#endif /* __cplusplus */
-
-#include "ldap.h"
-#include "dsalib.h"
-
-#define MAX_STRING_LEN 512
-
-typedef struct _SLAPD_CONFIG {
- char slapd_server_root[MAX_STRING_LEN + 1];
- int port;
- char host[MAX_STRING_LEN];
- char root_dn[MAX_STRING_LEN];
-#define MAX_SUFFIXES 1024
- char* suffixes[MAX_SUFFIXES];
- int num_suffixes;
-} SLAPD_CONFIG;
-
-typedef struct _query_vars {
- char* suffix;
- char* ssAdmID;
- char* ssAdmPW1;
- char* ssAdmPW2;
- char* rootDN;
- char* rootPW;
- char* consumerDN;
- char* consumerPW;
- char* netscaperoot;
- char* testconfig;
- char* admin_domain;
- int cfg_sspt;
- char* config_admin_uid;
-} QUERY_VARS;
-
-extern int
-entry_exists(LDAP* ld, const char* entrydn);
-
-extern int
-config_suitespot(SLAPD_CONFIG* slapd, QUERY_VARS* query);
-
-extern int
-create_group(LDAP* ld, char* base, char* group);
-
-#ifndef __CFG_SSPT_C
-
-extern char* const class_top;
-extern char* const class_organization;
-extern char* const class_organizationalUnit;
-extern char* const class_person;
-extern char* const class_organizationalPerson;
-extern char* const class_inetOrgPerson;
-extern char* const class_groupOfUniqueNames;
-
-extern char* const name_objectClass;
-extern char* const name_cn;
-extern char* const name_sn;
-extern char* const name_givenname;
-extern char* const name_uid;
-extern char* const name_userPassword;
-extern char* const name_o;
-extern char* const name_ou;
-extern char* const name_member;
-extern char* const name_uniqueMember;
-extern char* const name_subtreeaci;
-extern char* const name_netscaperoot;
-extern char* const name_netscaperootDN;
-
-extern char* const value_suiteSpotAdminCN;
-extern char* const value_suiteSpotAdminSN;
-extern char* const value_suiteSpotAdminGN;
-extern char* const value_adminGroupCN;
-extern char* const value_netscapeServersOU;
-
-extern char* const field_suffix;
-extern char* const field_ssAdmID;
-extern char* const field_ssAdmPW1;
-extern char* const field_ssAdmPW2;
-extern char* const field_rootDN;
-extern char* const field_rootPW;
-extern char* const format_DN;
-extern char* const format_simpleSearch;
-
-extern char* const insize_text;
-
-extern char* html_file;
-extern char* dbg_log_file;
-
-#endif /* __CFG_SSPT_C */
-
-/*
- * iterate over the root DSEs we need to setup special ACIs for
- * return true if entry and access are valid, false when the list
- * is empty and entry and access are null
- */
-int getEntryAndAccess(int index, const char **entry, const char **access);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __cfg_sspt_h */
diff --git a/ldap/admin/src/configure_instance.cpp b/ldap/admin/src/configure_instance.cpp
deleted file mode 100644
index c70cc7ea..00000000
--- a/ldap/admin/src/configure_instance.cpp
+++ /dev/null
@@ -1,2029 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-/*********************************************************************
-**
-**
-** NAME:
-** configure_instance.cpp
-**
-** DESCRIPTION:
-** Fedora Directory Server Configuration Program
-**
-** NOTES:
-** Derived from the original ux-config.cc
-**
-**
-*********************************************************************/
-
-#include <iostream.h>
-#include <fstream.h>
-#include <stdio.h> /* printf, file I/O */
-#include <string.h> /* strlen */
-#include <ctype.h>
-#include <sys/stat.h>
-#ifdef XP_UNIX
-#include <strings.h>
-#include <pwd.h>
-#include <grp.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#else
-#include <io.h>
-#endif
-#include <stdlib.h> /* memset, rand stuff */
-#include <sys/types.h>
-#include <errno.h>
-#include <stdarg.h>
-#include <time.h>
-
-extern "C" {
-#include "ldap.h"
-#include "dsalib.h"
-}
-
-#include "nspr.h"
-#include "plstr.h"
-
-#include "setupapi.h"
-#ifdef XP_UNIX
-#include "ux-util.h"
-#endif
-#include "ldapu.h"
-#include "install_keywords.h"
-#include "create_instance.h"
-#include "cfg_sspt.h"
-#include "configure_instance.h"
-#include "dirver.h"
-
-#undef FILE_PATHSEP
-#ifdef XP_WIN32
-#define FILE_PATHSEP "\\"
-#else
-#define FILE_PATHSEP "/"
-#endif
-
-#ifdef XP_WIN32
-#define DEFAULT_TASKCONF "bin\\slapd\\install\\ldif\\tasks.ldif"
-#define ROLEDIT_EXTENSION "bin\\slapd\\install\\ldif\\roledit.ldif"
-#define COMMON_TASKS "bin\\slapd\\install\\ldif\\commonTasks.ldif"
-#define SAMPLE_LDIF "bin\\slapd\\install\\ldif\\Example.ldif"
-#define TEMPLATE_LDIF "bin\\slapd\\install\\ldif\\template.ldif"
-#else
-#define DEFAULT_TASKCONF "bin/slapd/install/ldif/tasks.ldif"
-#define ROLEDIT_EXTENSION "bin/slapd/install/ldif/roledit.ldif"
-#define COMMON_TASKS "bin/slapd/install/ldif/commonTasks.ldif"
-#define SAMPLE_LDIF "bin/slapd/install/ldif/Example.ldif"
-#define TEMPLATE_LDIF "bin/slapd/install/ldif/template.ldif"
-#endif
-
-#ifndef PATH_MAX
-#define PATH_MAX 256
-#endif
-
-// location of java runtime relative to server root
-#ifdef XP_WIN32
-#define JAVA_RUNTIME "bin\\base\\jre\\bin\\jre"
-#else
-#define JAVA_RUNTIME "bin/base/jre/bin/jre"
-#endif
-
-// location of class files for java
-#define JAVA_DIR "java"
-// location of jar files relative to java dir
-#define JARS_DIR "jars"
-// full name of class with main() for running admin console
-#define CONSOLE_CLASS_NAME "com.netscape.management.client.console.Console"
-// name of script file to generate relative to slapd instance directory
-#define SCRIPT_FILE_NAME "start-console"
-
-#define DS_JAR_FILE_NAME "fedora-ds-1.0.jar"
-#define DS_CONSOLE_CLASS_NAME "com.netscape.admin.dirserv.DSAdmin"
-
-#ifdef XP_WIN32
-#define strtok_r(x,y,z) strtok(x,y)
-#include "proto-ntutil.h"
-#endif
-
-#define SERVER_MIGRATION_CLASS "com.netscape.admin.dirserv.task.MigrateCreate"
-#define SERVER_CREATION_CLASS "com.netscape.admin.dirserv.task.MigrateCreate"
-
-static InstallMode installMode = Interactive;
-static InstallInfo *installInfo = NULL;
-static InstallInfo *slapdInfo = NULL;
-static InstallInfo *slapdINFFileInfo = NULL;
-static InstallInfo *adminInfo = NULL;
-static const char *infoFile = NULL;
-static const char *logFile = NULL;
-
-static InstallLog *installLog = NULL;
-static int reconfig = 0; // set to 1 if we are reconfiguring
-/*
- * iDSISolaris is set to 1 for Solaris 9+ specific installation.
- * This can be done by passing -S as the command line argument.
- */
-int iDSISolaris = 0;
-
-/*
- * There is currently a bug in LdapEntry->printEntry - it will crash if given a NULL argument
- * This is a workaround
- */
-static void
-my_printEntry(LdapEntry *ent, const char *filename, int which)
-{
- ostream *os = NULL;
- if (filename && ent)
- {
- // just use LdapEntry, which should work given a good filename
- ent->printEntry(filename);
- return;
- }
- else if (which)
- {
- os = &cerr;
- }
- else
- {
- os = &cout;
- }
-
- if (!ent || !ent->entryDN() || ent->isEmpty())
- {
- *os << "Error: entry to print is empty" << endl;
- }
- else
- {
- *os << "dn: " << ent->entryDN() << endl;
- char **attrs = ent->getAttributeNames();
- for (int ii = 0; attrs && attrs[ii]; ++ii)
- {
- char **values = ent->getAttributes(attrs[ii]);
- for (int jj = 0; values && values[jj]; jj++)
- {
- *os << attrs[ii] << ": " << values[jj] << endl;
- }
-
- if (values)
- {
- ent->freeAttributes(values);
- }
- }
- if (attrs)
- {
- ent->freeAttributeNames(attrs);
- }
- }
-}
-
-// changes empty strings ("") to NULLs (0)
-static char *
-my_strdup(const char *s)
-{
- char *n = 0;
- if (s && *s)
- {
- n = new char[strlen(s) + 1];
- strcpy(n, s);
- }
-
- return n;
-}
-
-// changes empty strings ("") to NULLs (0)
-static char *
-my_c_strdup(const char *s)
-{
- char *n = 0;
- if (s && *s)
- {
- n = (char *)malloc(strlen(s) + 1);
- strcpy(n, s);
- }
-
- return n;
-}
-
-static int
-isAValidDN(const char *dn_to_test)
-{
- int ret = 1;
-
- if (!dn_to_test || !*dn_to_test)
- {
- ret = 0;
- }
- else
- {
- char **rdnList = ldap_explode_dn(dn_to_test, 0);
- char **rdnNoTypes = ldap_explode_dn(dn_to_test, 1);
- if (!rdnList || !rdnList[0] || !rdnNoTypes || !rdnNoTypes[0] ||
- !strcasecmp(rdnList[0], rdnNoTypes[0]))
- {
- ret = 0;
- }
- if (rdnList)
- ldap_value_free(rdnList);
- if (rdnNoTypes)
- ldap_value_free(rdnNoTypes);
- }
-
- return ret;
-}
-
-static void
-initMessageLog(const char *filename)
-{
- if (filename && !installLog)
- {
- logFile = my_c_strdup(filename);
-#ifdef XP_UNIX
- if (!logFile && installMode != Silent)
- {
- logFile = "/dev/tty";
- }
-#endif
- installLog = new InstallLog(logFile);
- }
-}
-
-static void
-dsLogMessage(const char *level, const char *which,
- const char *format, ...)
-{
- char bigbuf[BIG_BUF*4];
- va_list ap;
- va_start(ap, format);
- PR_vsnprintf(bigbuf, BIG_BUF*4, format, ap);
- va_end(ap);
-#ifdef _WIN32 // always output to stdout (for CGIs), and always log
- // if a log is available
- fprintf(stdout, "%s %s %s\n", level, which, bigbuf);
- fflush(stdout);
- if (installLog)
- installLog->logMessage(level, which, bigbuf);
-#else // not Windows
- if (installMode == Interactive)
- {
- fprintf(stdout, "%s %s %s\n", level, which, bigbuf);
- fflush(stdout);
- }
- else
- {
- if (installLog)
- installLog->logMessage(level, which, bigbuf);
- else
- fprintf(stdout, "%s %s %s\n", level, which, bigbuf);
- fflush(stdout);
- }
-#endif
-
- return;
-}
-
-static char *
-getGMT()
-{
- static char buf[20];
- time_t curtime;
- struct tm ltm;
-
- curtime = time( (time_t *)0 );
-#ifdef _WIN32
- ltm = *gmtime( &curtime );
-#else
- gmtime_r( &curtime, &ltm );
-#endif
- strftime( buf, sizeof(buf), "%Y%m%d%H%M%SZ", &ltm );
- return buf;
-}
-
-static void
-normalizeDNs()
-{
- static const char *DN_VALUED_ATTRS[] = {
- SLAPD_KEY_SUFFIX,
- SLAPD_KEY_ROOTDN,
- SLAPD_KEY_REPLICATIONDN,
- SLAPD_KEY_CONSUMERDN,
- SLAPD_KEY_SIR_SUFFIX,
- SLAPD_KEY_SIR_BINDDN
- };
- static const int N = sizeof(DN_VALUED_ATTRS)/sizeof(DN_VALUED_ATTRS[0]);
- static const char *URL_ATTRS[] = {
- SLAPD_KEY_K_LDAP_URL,
- SLAPD_KEY_USER_GROUP_LDAP_URL
- };
- static const int NURLS = sizeof(URL_ATTRS)/sizeof(URL_ATTRS[0]);
-
- int ii;
- for (ii = 0; slapdInfo && (ii < N); ++ii)
- {
- const char *attr = DN_VALUED_ATTRS[ii];
- char *dn = my_strdup(slapdInfo->get(attr));
- if (dn)
- {
- slapdInfo->set(attr, dn_normalize_convert(dn));
- delete [] dn;
- }
- }
-
- for (ii = 0; installInfo && (ii < NURLS); ++ii)
- {
- const char *attr = URL_ATTRS[ii];
- const char *url = installInfo->get(attr);
- LDAPURLDesc *desc = 0;
- if (url && !ldap_url_parse((char *)url, &desc) && desc)
- {
- char *dn = dn_normalize_convert(my_strdup(desc->lud_dn));
- int isSSL = !strncmp(url, "ldaps:", strlen("ldaps:"));
- if (dn)
- {
- char port[6];
- PR_snprintf(port, sizeof(port), "%d", desc->lud_port);
- NSString newurl = NSString("ldap") +
- (isSSL ? "s" : "") +
- "://" + desc->lud_host +
- ":" + port + "/" + dn;
- installInfo->set(attr, newurl);
- delete [] dn;
- }
- }
- if (desc)
- ldap_free_urldesc(desc);
- }
-}
-
-
-static int
-featureIsEnabled(const char *s)
-{
- if (!s || !*s || !strncasecmp(s, "no", strlen(s)))
- return 0; // feature is disabled
-
- return 1; // feature is enabled
-}
-
-static LdapErrorCode
-add_sample_entries(const char *sroot, LdapEntry *ldapEntry)
-{
- char tmp[MED_BUF];
-
- if (sroot)
- PR_snprintf(tmp, MED_BUF, "%s%s%s", sroot, FILE_PATHSEP, SAMPLE_LDIF);
- else
- strcpy(tmp, "test.ldif");
-
- return insertLdifEntries(ldapEntry->ldap(), NULL, tmp, NULL);
-
-}
-
-
-// in the given string s, replace all occurrances of token with replace
-// the string return is allocated with new char []
-static char *
-replace_token(const char *s, const char *token, int tokenlen,
- const char *replace, int replacelen)
-{
- char *ptr = (char*)strstr(s, token);
- char *n = 0;
- if (!ptr)
- {
- n = my_strdup(s);
- return n;
- }
-
- // count the number of occurances of the token
- int ntokens = 1;
- while (ptr && *ptr)
- {
- ptr = (char*)strstr(ptr+1, token);
- ++ntokens;
- }
-
- n = new char [strlen(s) + (ntokens * replacelen)];
- char *d = n;
- const char *begin = s;
- for (ptr = (char*)strstr(s, token); ptr && *ptr;)
- {
- int len = int(ptr - begin);
- strncpy(d, begin, len);
- d += len;
- begin = ptr + tokenlen;
- len = replacelen;
- strncpy(d, replace, len);
- d += len;
- ptr = strstr(ptr+1, token);
- }
- // no more occurances of token in string; copy the rest
- for (ptr = (char *)begin; ptr && *ptr; LDAP_UTF8INC(ptr))
- {
- *d = *ptr;
- LDAP_UTF8INC(d);
- }
- *d = 0;
-
- return n;
-}
-
-static void
-add_org_entries(const char *sroot, LdapEntry *ldapEntry,
- const char *initialLdifFile, const char *org_size,
- NSString sieDN)
-{
- org_size = org_size;
-
- char tmp[MED_BUF];
- char *dn;
-
- LdapError ldapError;
- char **vals;
- static const char *TOKEN[] = {
- "%%%SUFFIX%%%",
- "%%%ORG%%%",
- "%%%CONFIG_ADMIN_DN%%%"
- };
- static const int TOKENLEN[] = { 12, 9, 21 };
- static const int NTOKENS = 3;
- static const char *REPLACE[] = { 0, 0, 0 };
- static int REPLACELEN[] = { 0, 0, 0 };
-
- REPLACE[0] = slapdInfo->get(SLAPD_KEY_SUFFIX);
- const char *org = strchr(REPLACE[0], '=');
- if (org)
- REPLACE[1] = org+1;
-
- REPLACE[2] = slapdInfo->get(SLAPD_KEY_CONFIG_ADMIN_DN);
- for (int ii = 0; ii < NTOKENS; ++ii)
- {
- if (REPLACE[ii])
- REPLACELEN[ii] = strlen(REPLACE[ii]);
- }
-
- if (sroot)
- {
- if (!initialLdifFile || !*initialLdifFile ||
- !strncasecmp(initialLdifFile, "suggest", strlen(initialLdifFile)))
- PR_snprintf(tmp, sizeof(tmp), "%s%s%s", sroot, FILE_PATHSEP, TEMPLATE_LDIF);
- else
- PL_strncpyz(tmp, initialLdifFile, sizeof(tmp));
- }
- else
- PL_strncpyz(tmp, "test.ldif", sizeof(tmp));
-
- LdifEntry ldif(tmp);
-
- if (!ldif.isValid() || ldif.nextEntry() == -1)
- {
- dsLogMessage(SETUP_LOG_WARN, "Slapd", "File %s\ndoes not"
- " appear to be a valid LDIF file.", tmp);
- return;
- }
-
- int entry_num = 0;
-
- do
- {
- entry_num++;
- if (ldapEntry)
- ldapEntry->clear();
-
- for (int i = 0; i < ldif.numList(); i++)
- {
- const char *name = ldif.list(i);
- if (!name || !*name)
- continue;
-
- vals = ldif.getListItems(name);
- if (!vals || !*vals)
- continue;
-
- int n = ldif.numListItems(name);
- if (!n)
- continue;
-
- char **newvals = new char* [n+1];
- newvals[n] = 0; // null terminated
- // go through the values replacing the token string with the value
- for (int iii = 0; iii < n; ++iii)
- {
- newvals[iii] = my_strdup(vals[iii]);
- for (int jj = 0; jj < NTOKENS; ++jj)
- {
- char *oldnewvals = newvals[iii];
- newvals[iii] = replace_token(newvals[iii], TOKEN[jj], TOKENLEN[jj],
- REPLACE[jj], REPLACELEN[jj]);
- delete [] oldnewvals;
- }
- }
-
- if (!strcasecmp(name, "dn"))
- {
- dn = my_strdup(newvals[0]);
- }
- else if (ldapEntry)
- {
- ldapEntry->addAttributes(name, (const char **) newvals);
- }
- else /* this is for debugging only */
- {
- cerr << "name = " << name << " dn = " << dn << endl;
- for (int jj = 0; jj < n; ++jj)
- {
- cerr << "old entry[" << jj << "] = " << vals[jj] << endl;
- cerr << "new entry[" << jj << "] = " << newvals[jj] << endl;
- }
- cerr << "####" << endl;
- }
- ldif.freeListItems(vals);
- for (int jj = 0; jj < n; ++jj)
- delete [] newvals[jj];
- delete [] newvals;
- }
-
- if (!ldapEntry)
- continue;
-
- if (!dn || !*dn)
- {
- dsLogMessage(SETUP_LOG_WARN, "Slapd", "Entry number %d in file %s\ndoes not"
- " contain a valid dn: attribute.\nThe file may be"
- " corrupted or not in valid LDIF format.",
- entry_num, tmp);
- continue;
- }
-
- if (entry_num == 1)
- {
- NSString aci = NSString(
- "(targetattr = \"*\")(version 3.0; "
- "acl \"SIE Group\"; allow (all)"
- "groupdn = \"ldap:///") + sieDN + "\";)";
- // add the aci for the SIE group
- ldapEntry->addAttribute("aci", aci);
- }
-
- if (ldapEntry->exists(dn) == False)
- {
- ldapError = ldapEntry->insert(dn);
- }
- else
- {
- ldapError = ldapEntry->update(dn);
- }
-
- if (ldapError != OKAY)
- {
- PR_snprintf(tmp, sizeof(tmp), "%d", ldapError.errorCode());
- dsLogMessage(SETUP_LOG_WARN, "Slapd", "Could not write entry %s (%s:%s)", dn, tmp, ldapError.msg());
- }
- delete [] dn;
- } while (ldif.nextEntry() != -1);
-}
-
-// dsSIEDN will be something like:
-// cn=slapd-foo, cn=NDS, cn=SS4.0, cn=FQDN, ou=admindomain, o=netscaperoot
-static void
-getAdminSIEDN(const char *dsSIEDN, const char *hostname, NSString& adminSIEDN)
-{
- char *editablehostname = my_strdup(hostname);
- char *eptr = strchr(editablehostname, '.');
- if (eptr)
- *eptr = 0;
-
- char **rdnList = ldap_explode_dn(dsSIEDN, 0);
- char *baseDN = 0;
- if (rdnList && rdnList[0] && rdnList[1] && rdnList[2]) // dsSIEDN is a valid DN
- {
- int len = 0;
- int ii;
- for (ii = 2; rdnList[ii]; ++ii)
- len += strlen(rdnList[ii]) + 3;
-
- baseDN = (char *)malloc(len+1);
- baseDN[0] = 0;
- for (ii = 2; rdnList[ii]; ++ii)
- {
- if (ii > 2)
- strcat(baseDN, ", ");
- strcat(baseDN, rdnList[ii]);
- }
- }
- else
- {
- baseDN = my_c_strdup(dsSIEDN);
- }
-
- if (rdnList)
- ldap_value_free(rdnList);
-
- adminSIEDN = NSString("cn=admin-serv-") + editablehostname +
- ", cn=Fedora Administration Server, " + baseDN;
-
- delete [] editablehostname;
- free(baseDN);
-
- return;
-}
-
-static void
-setAppEntryInformation(LdapEntry *appEntry)
-{
- // required attributes
- if (!appEntry->getAttribute("objectclass"))
- appEntry->addAttribute("objectclass", "nsApplication");
- appEntry->setAttribute("cn", slapdINFFileInfo->get("Name"));
- appEntry->setAttribute("nsProductname", slapdINFFileInfo->get("Name"));
- appEntry->setAttribute("nsProductversion", PRODUCTTEXT);
- // optional attributes
-/*
- NSString temp = slapdINFFileInfo->get("Description");
- if ((NSString)NULL != temp)
- appEntry->setAttribute("description", temp);
-*/
- NSString temp = slapdINFFileInfo->get("NickName");
- if ((NSString)NULL == temp)
- temp = "slapd";
- appEntry->setAttribute("nsNickName", temp);
- temp = slapdINFFileInfo->get("BuildNumber");
- if ((NSString)NULL != temp)
- appEntry->setAttribute("nsBuildNumber", temp);
- temp = slapdINFFileInfo->get("Revision");
- if ((NSString)NULL != temp)
- appEntry->setAttribute("nsRevisionNumber", temp);
- temp = slapdINFFileInfo->get("SerialNumber");
- if ((NSString)NULL != temp)
- appEntry->setAttribute("nsSerialNumber", temp);
- temp = slapdINFFileInfo->get("Vendor");
- if ((NSString)NULL != temp)
- appEntry->setAttribute("nsVendor", temp);
-
- if (!appEntry->getAttribute("nsInstalledLocation"))
- appEntry->addAttribute("nsInstalledLocation",
- installInfo->get(SLAPD_KEY_SERVER_ROOT));
- appEntry->setAttribute("installationTimeStamp", getGMT());
- temp = slapdINFFileInfo->get("Expires");
- if ((NSString)NULL != temp)
- appEntry->setAttribute("nsExpirationDate", temp);
- temp = slapdINFFileInfo->get("Security");
- if ((NSString)NULL != temp)
- appEntry->setAttribute("nsBuildSecurity", temp);
-
- return;
-}
-
-static LdapError
-create_sie_and_isie(LdapEntry *sieEntry, LdapEntry *appEntry, NSString& sieDN)
-{
- LdapError ldapError; // return value
- const char *adminBrand = "Fedora";
-
- // Prepare sieEntry
- sieEntry->clear();
-
- sieEntry->addAttribute("objectclass", "netscapeServer");
- sieEntry->addAttribute("objectclass", "nsDirectoryServer");
- sieEntry->addAttribute("objectclass", "nsResourceRef");
- sieEntry->addAttribute("objectclass", "nsConfig");
- sieEntry->addAttribute("nsServerSecurity", "off");
- NSString serverID = NSString("slapd-") + slapdInfo->get(SLAPD_KEY_SERVER_IDENTIFIER);
- sieEntry->addAttribute("nsServerID", serverID);
- sieEntry->addAttribute("nsBindDN", slapdInfo->get(SLAPD_KEY_ROOTDN));
- sieEntry->addAttribute("nsBaseDN", slapdInfo->get(SLAPD_KEY_SUFFIX));
- char *hashedPwd = (char *)ds_salted_sha1_pw_enc (
- (char *)slapdInfo->get(SLAPD_KEY_ROOTDNPWD));
- if (hashedPwd)
- sieEntry->addAttribute("userPassword", hashedPwd);
-// sieEntry->addAttribute("AuthenticationPassword", slapdInfo->get(SLAPD_KEY_ROOTDNPWD));
- sieEntry->addAttribute("serverHostName", installInfo->get(SLAPD_KEY_FULL_MACHINE_NAME));
- sieEntry->addAttribute("serverRoot", installInfo->get(SLAPD_KEY_SERVER_ROOT));
- sieEntry->addAttribute("nsServerPort", slapdInfo->get(SLAPD_KEY_SERVER_PORT));
- sieEntry->addAttribute("nsSecureServerPort", "636");
-/*
- NSString temp = slapdINFFileInfo->get("Description");
- if ((NSString)NULL != temp)
- sieEntry->addAttribute("description", temp);
-*/
- NSString name = NSString(slapdINFFileInfo->get("InstanceNamePrefix")) + " (" +
- slapdInfo->get(SLAPD_KEY_SERVER_IDENTIFIER) + ")";
- sieEntry->addAttribute("serverProductName", name);
- sieEntry->addAttribute("serverVersionNumber", slapdINFFileInfo->get("Version"));
- sieEntry->addAttribute("installationTimeStamp", getGMT());
- NSString temp = installInfo->get(SLAPD_KEY_SUITESPOT_USERID);
- if ((NSString)NULL != temp) // may not be present on NT . . .
- sieEntry->addAttribute("nsSuiteSpotUser", temp);
-
- // Prepare appEntry
- appEntry->clear();
- setAppEntryInformation(appEntry);
-
- NSString ssDN = installInfo->get(SLAPD_KEY_ADMIN_DOMAIN);
-
- // to make a disposable copy
- char *fqdn = my_strdup(installInfo->get(SLAPD_KEY_FULL_MACHINE_NAME));
-
- LdapErrorCode code = createSIE(sieEntry, appEntry, fqdn,
- installInfo->get(SLAPD_KEY_SERVER_ROOT),
- ssDN, adminBrand);
- delete [] fqdn;
-
- if (code != OKAY)
- {
- dsLogMessage(SETUP_LOG_FATAL, "Slapd",
- "createSIE returned error code %d for ssDN=%s machinename=%s "
- "server root=%s", (int)code, (const char *)ssDN,
- installInfo->get(SLAPD_KEY_FULL_MACHINE_NAME),
- installInfo->get(SLAPD_KEY_SERVER_ROOT));
-#ifdef XP_UNIX
- cerr << "Here is the sieEntry:" << endl;
- my_printEntry(sieEntry, 0, 1); // output to cerr
-#else
- dsLogMessage(SETUP_LOG_FATAL, "Slapd", "SIE entry printed to c:/temp/SIE.out");
- sieEntry->printEntry("c:/temp/SIE.out");
-#endif
-#ifdef XP_UNIX
- cerr << "Here is the appEntry:" << endl;
- my_printEntry(appEntry, 0, 1); // output to cerr
-#else
- dsLogMessage(SETUP_LOG_FATAL, "Slapd", "APP entry printed to c:/temp/APP.out");
- appEntry->printEntry("c:/temp/APP.out");
-#endif
- return code;
- }
-
-// dsLogMessage("Info", "Slapd", "Created configuration entry for server %s",
-// (const char *)serverID);
-
- sieDN = sieEntry->entryDN();
-
- NSString configDN, configTaskDN, opTaskDN, adminSIEDN;
- getAdminSIEDN(sieDN, installInfo->get(SLAPD_KEY_FULL_MACHINE_NAME),
- adminSIEDN);
-
- // append the adminSIE to the create and migrate class names
- appEntry->clear();
- NSString classname = NSString(SERVER_MIGRATION_CLASS"@"DS_JAR_FILE_NAME"@") +
- adminSIEDN;
- appEntry->addAttribute("nsServerMigrationClassname", classname);
- classname = NSString(SERVER_CREATION_CLASS"@"DS_JAR_FILE_NAME"@") +
- adminSIEDN;
- appEntry->addAttribute("nsServerCreationClassname", classname);
- if ((ldapError = appEntry->update(appEntry->entryDN())) != OKAY)
- {
- dsLogMessage(SETUP_LOG_FATAL, "Slapd", "Error: Could not modify nsServerMigrationClassname "
- "and/or nsServerCreationClassname in entry %s: error code %d\n",
- appEntry->entryDN(), (int)ldapError);
- return (int)ldapError;
- }
-
- // Write configuration parameters (see ns-admin.conf)
- sieEntry->clear();
-
- sieEntry->addAttribute("objectclass", "nsResourceRef");
- sieEntry->addAttribute("objectclass", "nsAdminObject");
- sieEntry->addAttribute("objectclass", "nsDirectoryInfo");
-
- /*
- * Mandatory fields here
- */
- NSString description = NSString("Configuration information for directory server ") +
- serverID;
- sieEntry->addAttribute ("cn", "configuration");
- NSString nsclassname = NSString(DS_CONSOLE_CLASS_NAME) + "@" +
- DS_JAR_FILE_NAME + "@" + adminSIEDN;
- sieEntry->addAttribute ("nsclassname", nsclassname);
- sieEntry->addAttribute ("nsjarfilename",
- DS_JAR_FILE_NAME);
- char** rdnList = ldap_explode_dn(appEntry->entryDN(), 0);
- if (rdnList)
- {
- int ii = 0;
- int len = 0;
- for (ii = 1; rdnList[ii]; ++ii) // skip first rdn
- len += (strlen(rdnList[ii]) + 3);
- char *adminGroupDN = (char *)calloc(1, len);
- for (ii = 1; rdnList[ii]; ++ii) {
- if (ii > 1)
- strcat(adminGroupDN, ", ");
- strcat(adminGroupDN, rdnList[ii]);
- }
- ldap_value_free(rdnList);
- sieEntry->addAttribute("nsDirectoryInfoRef", adminGroupDN);
- free(adminGroupDN);
- }
-
- configDN = NSString("cn=configuration") + "," + sieDN;
-
- // allow modification by kingpin topology
- createACIForConfigEntry(sieEntry, sieDN);
-
- if (sieEntry->exists(configDN) == False)
- {
- ldapError = sieEntry->insert(configDN);
- }
- else
- {
- ldapError = sieEntry->update(configDN);
- }
-
- if (ldapError != OKAY)
- {
- dsLogMessage(SETUP_LOG_FATAL, "Slapd",
- "Could not update the configuration entry %s: error code %d",
- (const char *)configDN, ldapError.errorCode());
- return (int)ldapError;
- } else {
-// dsLogMessage("Info", "Slapd", "Updated configuration entry for server %s",
-// (const char *)serverID);
- }
-
- // Write Tasks nodes
- installInfo->toLocal(SLAPD_KEY_SERVER_ROOT); // path needs local encoding
- NSString filename = NSString(installInfo->get(SLAPD_KEY_SERVER_ROOT)) +
- FILE_PATHSEP + DEFAULT_TASKCONF;
- ldapError = insertLdifEntries(sieEntry->ldap(), sieDN, filename,
- adminSIEDN);
- installInfo->toUTF8(SLAPD_KEY_SERVER_ROOT); // back to utf8
-
- if (ldapError != OKAY)
- {
- dsLogMessage(SETUP_LOG_FATAL, "Slapd",
- "Could not update the instance specific tasks entry %s: error code %d",
- (const char *)sieDN, ldapError.errorCode());
- return ldapError;
- } else {
-// dsLogMessage("Info", "Slapd", "Added task information for server %s",
-// (const char *)serverID);
- }
-
- installInfo->toLocal(SLAPD_KEY_SERVER_ROOT); // path needs local encoding
- filename = NSString(installInfo->get(SLAPD_KEY_SERVER_ROOT)) +
- FILE_PATHSEP + COMMON_TASKS;
- ldapError = insertLdifEntries(sieEntry->ldap(), appEntry->entryDN(),
- filename, adminSIEDN);
- installInfo->toUTF8(SLAPD_KEY_SERVER_ROOT); // back to utf8
-
- if (ldapError != OKAY)
- {
- dsLogMessage(SETUP_LOG_FATAL, "Slapd",
- "Could not update the general tasks entry %s: error code %d",
- (const char *)appEntry->entryDN(), ldapError.errorCode());
- } else {
-// dsLogMessage("Info", "Slapd", "Updated common task information for server %s",
-// (const char *)serverID);
- }
-
- return ldapError;
-}
-
-
-static LdapErrorCode
-create_roledit_extension(Ldap* ldap)
-{
- //
- // If needed, we create "ou=Global Preferences,ou=<domain>,o=NetscapeRoot".
- // The following code has been duplicated from setupGlobalPreferences() in
- // setupldap.cpp
- //
- LdapEntry ldapEntry(ldap);
- LdapError err;
- NSString globalPref = DEFAULT_GLOBAL_PREFS_RDN;
- NSString adminDomain = installInfo->get(SLAPD_KEY_ADMIN_DOMAIN);
- char * domain = setupFormAdminDomainDN(adminDomain);
-
- globalPref = globalPref + LDAP_PATHSEP + domain;
-
-// dsLogMessage("Info", "Slapd", "Beginning update console role editor extensions");
- if (ldapEntry.retrieve(globalPref) != OKAY)
- {
- ldapEntry.setAttribute("objectclass", DEFAULT_GLOBAL_PREFS_OBJECT);
- ldapEntry.setAttribute("ou", DEFAULT_GLOBAL_PREFS);
- ldapEntry.setAttribute("aci", DEFAULT_GLOBAL_PREFS_ACI);
- ldapEntry.setAttribute("description", "Default branch for Fedora Server Products Global Preferences");
-// dsLogMessage("Info", "Slapd", "Updating global preferences for console role editor extensions");
- err = ldapEntry.insert(globalPref);
- }
- else
- {
- ldapEntry.setAttribute("aci", DEFAULT_GLOBAL_PREFS_ACI);
- ldapEntry.setAttribute("description", "Default branch for Fedora Server Products Global Preferences");
-// dsLogMessage("Info", "Slapd", "Updating global preferences for console role editor extensions");
- err = ldapEntry.replace(globalPref);
- }
-
- if (err == OKAY) {
-// dsLogMessage("Info", "Slapd", "Updated global console preferences for role editor extensions");
- }
-
- //
- // Now let try to add the AdminResourceExtension entries.
- // They are defined in the LDIF file named ROLEDIT_EXTENSION.
- //
- if (err == OKAY)
- {
-// dsLogMessage("Info", "Slapd", "Updating console role editor extensions");
-
- installInfo->toLocal(SLAPD_KEY_SERVER_ROOT); // path needs local encoding
- NSString filename = NSString(installInfo->get(SLAPD_KEY_SERVER_ROOT)) +
- FILE_PATHSEP + ROLEDIT_EXTENSION;
- err = insertLdifEntries(ldap, domain, filename, NULL);
- installInfo->toUTF8(SLAPD_KEY_SERVER_ROOT); // back to utf8
- }
-
- if(domain) free(domain);
-
- if (err.errorCode() == OKAY) {
-// dsLogMessage("Info", "Slapd", "Updated console role editor extensions");
- }
-
- return err.errorCode();
-}
-
-
-static int
-create_ss_dir_tree(const char *hostname, NSString &sieDN)
-{
- int status = 0;
-
- LdapError ldapError = OKAY;
- NSString adminID = installInfo->get(SLAPD_KEY_SERVER_ADMIN_ID);
- NSString adminPwd = installInfo->get(SLAPD_KEY_SERVER_ADMIN_PWD);
- Ldap ldap (ldapError, installInfo->get(SLAPD_KEY_K_LDAP_URL),
- adminID, adminPwd, 0, 0);
-
- if (ldapError != OKAY)
- {
- dsLogMessage(SETUP_LOG_FATAL, "Slapd",
- "ERROR: Ldap authentication failed for url %s user id %s (%d:%s)" ,
- installInfo->get(SLAPD_KEY_K_LDAP_URL), adminID.data(),
- ldapError.errorCode(), ldapError.msg());
- return ldapError.errorCode();
- }
-
- LdapEntry *sieEntry = new LdapEntry(&ldap);
- LdapEntry *appEntry = new LdapEntry(&ldap);
-
- LdapErrorCode code = create_sie_and_isie(sieEntry, appEntry, sieDN);
-
- if (code != OKAY)
- {
- dsLogMessage(SETUP_LOG_FATAL, "Slapd",
- "ERROR: failed to register Directory server as a Fedora server (%d)",
- code);
- return code;
- }
-
- code = create_roledit_extension(&ldap);
-
- if (code != OKAY)
- {
- dsLogMessage(SETUP_LOG_WARN, "Slapd",
- "WARNING: failed to add extensions for role edition (%d)",
- code);
- code = OKAY; // We can continue anyway
- }
-
- const char *user_ldap_url = installInfo->get(SLAPD_KEY_USER_GROUP_LDAP_URL);
- if (!user_ldap_url)
- user_ldap_url = installInfo->get(SLAPD_KEY_K_LDAP_URL);
-
- code = addGlobalUserDirectory(&ldap,
- installInfo->get(SLAPD_KEY_ADMIN_DOMAIN),
- user_ldap_url, 0, 0);
-
- if (code != OKAY)
- {
- dsLogMessage(SETUP_LOG_FATAL, "Slapd",
- "ERROR: failed to add Global User Directory (%d)",
- code);
- return code;
- }
-
- // we need to add some ACIs which will allow the SIE group to have
- // admin access to the newly created directory
- Ldap *new_ldap = 0;
- int port = atoi(slapdInfo->get(SLAPD_KEY_SERVER_PORT));
- if (strcasecmp(ldap.host(), hostname) || ldap.port() != port)
- {
- const char *suffix = 0;
- if (featureIsEnabled(slapdInfo->get(SLAPD_KEY_USE_EXISTING_UG)))
- suffix = DEFAULT_ROOT_DN;
- else
- suffix = slapdInfo->get(SLAPD_KEY_SUFFIX);
- NSString new_url = NSString("ldap://") +
- hostname + ":" + slapdInfo->get(SLAPD_KEY_SERVER_PORT) +
- "/" + suffix;
- const char *userDN;
- const char *userPwd;
- if (!(userDN = slapdInfo->get(SLAPD_KEY_ROOTDN)))
- userDN = ldap.userDN();
- if (!(userPwd = slapdInfo->get(SLAPD_KEY_ROOTDNPWD)))
- userPwd = ldap.userPassword();
- new_ldap = new Ldap(ldapError, new_url, userDN, userPwd,
- userDN, userPwd);
- if (ldapError != OKAY)
- {
- dsLogMessage(SETUP_LOG_WARN, "Slapd",
- "Could not open the new directory server [%s:%s] to add an aci [%d].",
- (const char *)new_url, userDN, ldapError.errorCode());
- delete new_ldap;
- new_ldap = 0;
- }
- }
- else
- new_ldap = &ldap;
-
- if (new_ldap)
- {
- const char *entry = 0;
- const char *access = 0;
- LdapEntry ent(new_ldap);
- int ii = 0;
- while (getEntryAndAccess(ii, &entry, &access))
- {
- ++ii;
- NSString aci = NSString(
- "(targetattr = \"*\")(version 3.0; "
- "acl \"SIE Group\"; allow (") + access + ")"
- "groupdn = \"ldap:///" + sieDN + "\";)";
- ent.clear();
- ent.addAttribute("aci", aci);
- ldapError = ent.update(entry);
- if (ldapError != OKAY)
- dsLogMessage(SETUP_LOG_WARN, "Slapd",
- "Could not add aci %s to entry %s [%d].",
- (const char *)aci, entry, ldapError.errorCode());
- }
- }
-
- if (new_ldap && new_ldap != &ldap)
- delete new_ldap;
-
- destroyLdapEntry(sieEntry);
- destroyLdapEntry(appEntry);
-
- if (status == OKAY) {
-// dsLogMessage("Info", "Slapd", "Updated console administration access controls");
- }
-
- return status;
-}
-
-static void
-create_console_script()
-{
-#if 0 // does not work right now
-#ifdef XP_UNIX
- const char *sroot = installInfo->get(SLAPD_KEY_SERVER_ROOT);
- const char *sid = slapdInfo->get(SLAPD_KEY_SERVER_IDENTIFIER);
- const char *hn = installInfo->get(SLAPD_KEY_FULL_MACHINE_NAME);
- const char *port = slapdInfo->get(SLAPD_KEY_SERVER_PORT);
- const char *suf = slapdInfo->get(SLAPD_KEY_SUFFIX);
- const char *classpathSeparator = ":";
-
- NSString scriptFilename = NSString(sroot) + FILE_PATHSEP + "slapd-" +
- sid + FILE_PATHSEP + SCRIPT_FILE_NAME;
- ofstream ofs(scriptFilename);
- if (!ofs)
- return;
-
- ofs << "#!/bin/sh" << endl;
- ofs << "#" << endl;
- ofs << "# This script will invoke the Fedora Management Console" << endl;
- ofs << "#" << endl;
- // see if there are any other .jar or .zip files in the java directory
- // and add them to our class path too
- ofs << "for file in " << sroot << FILE_PATHSEP << JAVA_DIR << FILE_PATHSEP
- << JARS_DIR << FILE_PATHSEP << "*.jar ; do" << endl;
- ofs << "\tCLASSPATH=${CLASSPATH}" << classpathSeparator << "$file" << endl;
- ofs << "done" << endl;
-
- ofs << "for file in " << sroot << FILE_PATHSEP << JAVA_DIR << FILE_PATHSEP
- << "*.jar ; do" << endl;
- ofs << "\tCLASSPATH=${CLASSPATH}" << classpathSeparator << "$file" << endl;
- ofs << "done" << endl;
-
- ofs << "for file in " << sroot << FILE_PATHSEP << JAVA_DIR << FILE_PATHSEP
- << "*.zip ; do" << endl;
- ofs << "\tCLASSPATH=${CLASSPATH}" << classpathSeparator << "$file" << endl;
- ofs << "done" << endl;
-
- ofs << "export CLASSPATH" << endl;
-
- // go to the java dir
- ofs << "cd " << sroot << FILE_PATHSEP << JAVA_DIR << endl;
- // now, invoke the java runtime environment
- ofs << sroot << FILE_PATHSEP << JAVA_RUNTIME
- << " -classpath \"$CLASSPATH\" "
- << CONSOLE_CLASS_NAME << " -d " << hn << " -p " << port << " -b "
- << "\"" << suf << "\"" << endl;
-
- ofs.flush();
- ofs.close();
-
- chmod(scriptFilename, 0755);
-#endif
-#endif // if 0
-
- return;
-}
-
-// check the install info read in to see if we have valid data
-static int
-info_is_valid()
-{
- static const char *requiredFields[] = {
- SLAPD_KEY_FULL_MACHINE_NAME,
- SLAPD_KEY_SERVER_ROOT,
- SLAPD_KEY_SERVER_IDENTIFIER,
- SLAPD_KEY_SERVER_PORT,
- SLAPD_KEY_ROOTDN,
- SLAPD_KEY_ROOTDNPWD,
- SLAPD_KEY_K_LDAP_URL,
- SLAPD_KEY_SUFFIX,
- SLAPD_KEY_SERVER_ADMIN_ID,
- SLAPD_KEY_SERVER_ADMIN_PWD,
- SLAPD_KEY_ADMIN_DOMAIN
- };
- static int numRequiredFields = sizeof(requiredFields) / sizeof(requiredFields[0]);
-
- if (!installInfo || !slapdInfo)
- return 0;
-
- for (int ii = 0; ii < numRequiredFields; ++ii)
- {
- const char *val = installInfo->get(requiredFields[ii]);
- if (val && *val)
- continue;
- val = slapdInfo->get(requiredFields[ii]);
- if (val && *val)
- continue;
-
- // if we got here, the value was not found in either the install info or
- // the slapd info
- dsLogMessage(SETUP_LOG_FATAL, "Slapd",
- "The required field %s is not present in the install info file.",
- requiredFields[ii]);
- return 0;
- }
-
- return 1;
-}
-
-static int
-parse_commandline(int argc, char *argv[])
-{
- int opt;
-
- while ((opt = getopt(argc, argv, "rsSl:f:")) != EOF)
- {
- switch (opt)
- {
- case 'r':
- reconfig = 1;
- break;
- case 's':
- installMode = Silent;
- break;
- case 'S':
- /*
- * Solaris 9+ specific installation
- */
- iDSISolaris = 1;
- break;
- case 'l':
- initMessageLog(optarg); /* Log file to use */
- break;
- case 'f':
- infoFile = strdup(optarg); /* Install script */
- installInfo = new InstallInfo(infoFile);
- installInfo->toUTF8();
- break;
- default:
- break;
- }
- }
-
- return 0;
-}
-
-static const char *
-changeYesNo2_0_1(const char *old)
-{
- if (old && !strncasecmp(old, "yes", strlen(old)))
- return "1";
-
- return "0";
-}
-
-static void
-init_from_config(server_config_s *cf)
-{
- if (!cf)
- return;
-
- if (!installInfo)
- installInfo = new InstallInfo;
-
- if (!slapdInfo)
- slapdInfo = new InstallInfo;
-
-#ifdef XP_WIN32
- ds_unixtodospath( cf->sroot);
-#endif
-
- installInfo->set(SLAPD_KEY_SERVER_ROOT, cf->sroot);
- installInfo->set(SLAPD_KEY_FULL_MACHINE_NAME, cf->servname);
-
- slapdInfo->set(SLAPD_KEY_SERVER_PORT, cf->servport);
- installInfo->set(SLAPD_KEY_SERVER_ADMIN_ID, cf->cfg_sspt_uid);
- installInfo->set(SLAPD_KEY_SERVER_ADMIN_PWD, cf->cfg_sspt_uidpw);
- slapdInfo->set(SLAPD_KEY_SERVER_IDENTIFIER, cf->servid);
-
-#ifdef XP_UNIX
- installInfo->set(SLAPD_KEY_SUITESPOT_USERID, cf->servuser);
-#endif
-
- slapdInfo->set(SLAPD_KEY_SUFFIX, cf->suffix);
- slapdInfo->set(SLAPD_KEY_ROOTDN, cf->rootdn);
- slapdInfo->set(SLAPD_KEY_ROOTDNPWD, cf->rootpw);
-
- installInfo->set(SLAPD_KEY_ADMIN_DOMAIN, cf->admin_domain);
- LDAPURLDesc *desc = 0;
- if (cf->config_ldap_url &&
- !ldap_url_parse(cf->config_ldap_url, &desc) && desc)
- {
- const char *suffix = DEFAULT_ROOT_DN;
- int isSSL = !strncmp(cf->config_ldap_url, "ldaps:", strlen("ldaps:"));
- char port[6];
- PR_snprintf(port, sizeof(port), "%d", desc->lud_port);
- NSString url = NSString("ldap") +
- (isSSL ? "s" : "") +
- "://" + desc->lud_host +
- ":" + port + "/" + suffix;
- installInfo->set(SLAPD_KEY_K_LDAP_URL, url);
- ldap_free_urldesc(desc);
- }
-
- if (cf->suitespot3x_uid)
- slapdInfo->set(SLAPD_KEY_CONFIG_ADMIN_DN, cf->suitespot3x_uid);
- else
- slapdInfo->set(SLAPD_KEY_CONFIG_ADMIN_DN, cf->cfg_sspt_uid);
-
- /*
- If we are here, that means we have been called as a CGI, which
- means that there must already be an MC host, which means that
- we are not creating an MC host, which means we must be creating
- a UG host
- */
- NSString UGLDAPURL = NSString("ldap://") + cf->servname +
- ":" + cf->servport + "/" + cf->suffix;
- installInfo->set(SLAPD_KEY_USER_GROUP_LDAP_URL, UGLDAPURL);
- installInfo->set(SLAPD_KEY_USER_GROUP_ADMIN_ID, cf->rootdn);
- installInfo->set(SLAPD_KEY_USER_GROUP_ADMIN_PWD, cf->rootpw);
-
- installInfo->addSection("slapd", slapdInfo);
-
- return;
-}
-
-/* ----------------------- main ------------------------ */
-
-/*
- Initialize the cf structure based on data in the inf file, and also initialize
- our static objects. Return 0 if everything was OK, and non-zero if there
- were errors, like parsing a bogus inf file
-*/
-extern "C" int create_config_from_inf(
- server_config_s *cf,
- int argc,
- char *argv[]
-)
-{
- InstallInfo *admInfo;
- if (parse_commandline(argc, argv))
- return 1;
-
- admInfo = installInfo->getSection("admin");
- slapdInfo = installInfo->getSection("slapd");
- if (!slapdInfo->get(SLAPD_KEY_SUFFIX))
- slapdInfo->set(SLAPD_KEY_SUFFIX, DEFAULT_ROOT_DN);
-
- if (installInfo->get(SLAPD_KEY_SERVER_ADMIN_ID))
- slapdInfo->set(SLAPD_KEY_CONFIG_ADMIN_DN,
- installInfo->get(SLAPD_KEY_SERVER_ADMIN_ID));
-
- if (!info_is_valid())
- return 1;
-
- normalizeDNs();
-
- installInfo->toLocal(SLAPD_KEY_SERVER_ROOT);
- cf->sroot = my_c_strdup(installInfo->get(SLAPD_KEY_SERVER_ROOT));
- installInfo->toUTF8(SLAPD_KEY_SERVER_ROOT);
- cf->servname = my_c_strdup(installInfo->get(SLAPD_KEY_FULL_MACHINE_NAME));
-
- cf->servport = my_c_strdup(slapdInfo->get(SLAPD_KEY_SERVER_PORT));
-
- if (admInfo && admInfo->get(SLAPD_KEY_ADMIN_SERVER_PORT)) {
- cf->adminport = my_c_strdup(admInfo->get(SLAPD_KEY_ADMIN_SERVER_PORT));
- } else {
- cf->adminport = my_c_strdup("80");
- }
-
- cf->cfg_sspt = my_c_strdup(
- changeYesNo2_0_1(slapdInfo->get(SLAPD_KEY_SLAPD_CONFIG_FOR_MC)));
- cf->suitespot3x_uid = my_c_strdup(installInfo->get(SLAPD_KEY_SERVER_ADMIN_ID));
- cf->cfg_sspt_uid = my_c_strdup(installInfo->get(SLAPD_KEY_SERVER_ADMIN_ID));
- cf->cfg_sspt_uidpw = my_c_strdup(installInfo->get(SLAPD_KEY_SERVER_ADMIN_PWD));
- cf->servid = my_c_strdup(slapdInfo->get(SLAPD_KEY_SERVER_IDENTIFIER));
-
-#ifdef XP_UNIX
- cf->servuser = my_c_strdup(installInfo->get(SLAPD_KEY_SUITESPOT_USERID));
-#endif
-
- cf->suffix = my_c_strdup(slapdInfo->get(SLAPD_KEY_SUFFIX));
- cf->rootdn = my_c_strdup(slapdInfo->get(SLAPD_KEY_ROOTDN));
- /* Encode the password in SSHA by default */
- cf->rootpw = my_c_strdup(slapdInfo->get(SLAPD_KEY_ROOTDNPWD));
- cf->roothashedpw = (char *)ds_salted_sha1_pw_enc (cf->rootpw);
-
- const char *test = slapdInfo->get(SLAPD_KEY_REPLICATIONDN);
- const char *testpw = slapdInfo->get(SLAPD_KEY_REPLICATIONPWD);
- if (test && *test && testpw && *testpw)
- {
- cf->replicationdn = my_c_strdup(slapdInfo->get(SLAPD_KEY_REPLICATIONDN));
- cf->replicationpw = my_c_strdup(slapdInfo->get(SLAPD_KEY_REPLICATIONPWD));
- cf->replicationhashedpw = (char *)ds_salted_sha1_pw_enc (cf->replicationpw);
- }
-
- test = slapdInfo->get(SLAPD_KEY_CONSUMERDN);
- testpw = slapdInfo->get(SLAPD_KEY_CONSUMERPWD);
- if (test && *test && testpw && *testpw)
- {
- cf->consumerdn = my_c_strdup(test);
- cf->consumerpw = my_c_strdup(testpw);
- cf->consumerhashedpw = (char *)ds_salted_sha1_pw_enc (cf->consumerpw);
- }
-
- cf->changelogdir = my_c_strdup(slapdInfo->get(SLAPD_KEY_CHANGELOGDIR));
- cf->changelogsuffix = my_c_strdup(slapdInfo->get(SLAPD_KEY_CHANGELOGSUFFIX));
- cf->admin_domain = my_c_strdup(installInfo->get(SLAPD_KEY_ADMIN_DOMAIN));
- cf->disable_schema_checking =
- my_c_strdup(
- changeYesNo2_0_1(slapdInfo->get(SLAPD_KEY_DISABLE_SCHEMA_CHECKING)));
-
- /*
- Don't create dc=example,dc=com if the user did not select to add the
- sample entries
- */
- if (!featureIsEnabled(slapdInfo->get(SLAPD_KEY_ADD_SAMPLE_ENTRIES)))
- {
- cf->samplesuffix = NULL;
- }
-
- cf->config_ldap_url = (char *)installInfo->get(SLAPD_KEY_K_LDAP_URL);
- LDAPURLDesc *desc = 0;
- if (cf->config_ldap_url &&
- !ldap_url_parse(cf->config_ldap_url, &desc) && desc)
- {
- const char *suffix = DEFAULT_ROOT_DN;
- int isSSL = !strncmp(cf->config_ldap_url, "ldaps:", strlen("ldaps:"));
- char port[6];
- PR_snprintf(port, sizeof(port), "%d", desc->lud_port);
- NSString url = NSString("ldap") +
- (isSSL ? "s" : "") +
- "://" + desc->lud_host +
- ":" + port + "/" + suffix;
- installInfo->set(SLAPD_KEY_K_LDAP_URL, url);
- cf->config_ldap_url = my_c_strdup(url);
- ldap_free_urldesc(desc);
- }
-
- if ((test = installInfo->get(SLAPD_KEY_USER_GROUP_LDAP_URL)))
- cf->user_ldap_url = my_c_strdup(test);
- else
- cf->user_ldap_url = my_c_strdup(cf->config_ldap_url);
-
- cf->use_existing_config_ds =
- featureIsEnabled(slapdInfo->get(SLAPD_KEY_USE_EXISTING_MC));
-
- cf->use_existing_user_ds =
- featureIsEnabled(slapdInfo->get(SLAPD_KEY_USE_EXISTING_UG));
-
- if ((test = slapdInfo->get(SLAPD_KEY_INSTALL_LDIF_FILE)) &&
- !access(test, 0))
- {
- cf->install_ldif_file = my_c_strdup(test);
- // remove the fields from the slapdInfo so we don't try
- // to handle this case later
- slapdInfo->remove(SLAPD_KEY_ADD_ORG_ENTRIES);
- slapdInfo->remove(SLAPD_KEY_INSTALL_LDIF_FILE);
- }
-
- /* we also have to setup the environment to mimic a CGI */
- static char netsiteRoot[PATH_MAX+32];
- PR_snprintf(netsiteRoot, sizeof(netsiteRoot), "NETSITE_ROOT=%s", cf->sroot);
- putenv(netsiteRoot);
-
- /* set the admin SERVER_NAMES = slapd-slapdIdentifier */
- static char serverNames[PATH_MAX+32];
- PR_snprintf(serverNames, sizeof(serverNames), "SERVER_NAMES=slapd-%s", cf->servid);
- putenv(serverNames);
-
- /* get and set the log file */
- /* use the one given on the command line by default, otherwise, use
- the one from the inf file */
- if (logFile || (test = slapdInfo->get(SLAPD_INSTALL_LOG_FILE_NAME)))
- {
- static char s_logfile[PATH_MAX+32];
- if (logFile)
- {
- PR_snprintf(s_logfile, sizeof(s_logfile), "DEBUG_LOGFILE=%s", logFile);
- }
- else
- {
- PR_snprintf(s_logfile, sizeof(s_logfile), "DEBUG_LOGFILE=%s", test);
- /* also init the C++ api message log */
- initMessageLog(test);
- }
- putenv(s_logfile);
- }
-
- return 0;
-}
-
-extern "C" int
-configure_instance_with_config(
- server_config_s *cf,
- int verbose, // if false, silent; if true, verbose
- const char *lfile
-)
-{
- if (!cf)
- return 1;
-
- infoFile = 0;
- initMessageLog(lfile);
-
- if (!verbose)
- installMode = Silent;
-
- init_from_config(cf);
-
- return configure_instance();
-}
-
-extern "C" int
-configure_instance()
-{
- char hn[BUFSIZ];
- int status = 0;
-
- dsLogMessage(SETUP_LOG_START, "Slapd", "Starting Slapd server configuration.");
-
- if (!info_is_valid())
- {
- dsLogMessage(SETUP_LOG_FATAL, "Slapd", "Missing Configuration Parameters.");
- return 1;
- }
-
- if (installInfo == NULL || slapdInfo == NULL)
- {
- dsLogMessage(SETUP_LOG_FATAL, "Slapd", "Answer cache not found or invalid");
- return 1;
- }
-
- adminInfo = installInfo->getSection("admin");
-
- // next, find the slapd.inf file; it is in the dir <server root>/setup/slapd
- installInfo->toLocal(SLAPD_KEY_SERVER_ROOT); // path needs local encoding
- NSString slapdinffile = NSString(installInfo->get(SLAPD_KEY_SERVER_ROOT))
- + FILE_PATHSEP + "setup" + FILE_PATHSEP + "slapd" + FILE_PATHSEP +
- "slapd.inf";
- InstallInfo temp(slapdinffile);
- if (!(slapdINFFileInfo = temp.getSection("slapd")) ||
- slapdINFFileInfo->isEmpty())
- {
- dsLogMessage(SETUP_LOG_FATAL, "Slapd", "Missing configuration file %s",
- (const char *)slapdinffile);
- return 1;
- }
- installInfo->toUTF8(SLAPD_KEY_SERVER_ROOT); // back to utf8
-
- hn[0] = '\0';
-
- /*
- * Get the full hostname.
- */
-
- if (!installInfo->get(SLAPD_KEY_FULL_MACHINE_NAME))
- {
- NSString h;
- /* Force automatic detection of host name */
-#ifdef XP_UNIX
- h = InstUtil::guessHostname();
-#else
- /* stevross: figure out NT equivalent */
-#endif
- PL_strncpyz(hn, h, BUFSIZ);
- installInfo->set(SLAPD_KEY_FULL_MACHINE_NAME, hn);
- }
- else
- {
- PL_strncpyz(hn,installInfo->get(SLAPD_KEY_FULL_MACHINE_NAME), BUFSIZ);
- }
-
- NSString sieDN;
- if ((status = create_ss_dir_tree(hn, sieDN)))
- {
- dsLogMessage(SETUP_LOG_FATAL, "Slapd",
- "Did not add Directory Server information to Configuration Server.");
- return status;
- }
- else
- dsLogMessage(SETUP_LOG_SUCCESS, "Slapd",
- "Added Directory Server information to Configuration Server.");
-
- // at this point we should be finished talking to the Mission Control LDAP
- // server; we may need to establish a connection to the new instance
- // we just created in order to write some of this optional stuff to it
-
- Ldap *ldap = 0;
- LdapEntry *entry = 0;
- LdapError ldapError = 0;
- NSString newURL = NSString("ldap://") + hn + ":" +
- slapdInfo->get(SLAPD_KEY_SERVER_PORT) + "/" +
- slapdInfo->get(SLAPD_KEY_SUFFIX);
- const char *bindDN = slapdInfo->get(SLAPD_KEY_ROOTDN);
- const char *bindPwd = slapdInfo->get(SLAPD_KEY_ROOTDNPWD);
- // install a sample tree
- if (featureIsEnabled(slapdInfo->get(SLAPD_KEY_ADD_SAMPLE_ENTRIES)))
- {
- if (!ldap)
- {
- ldapError = 0;
- ldap = new Ldap (ldapError, newURL, bindDN, bindPwd, 0, 0);
- if (ldapError.errorCode())
- {
- delete ldap;
- ldap = 0;
- dsLogMessage(SETUP_LOG_WARN, "Slapd",
- "Could not add sample entries, ldap error code %d",
- ldapError.errorCode());
- }
- else
- {
- entry = new LdapEntry(ldap);
- }
- }
-
- if (entry)
- {
- installInfo->toLocal(SLAPD_KEY_SERVER_ROOT); // path needs local
- ldapError = add_sample_entries(installInfo->get(SLAPD_KEY_SERVER_ROOT),
- entry);
- installInfo->toUTF8(SLAPD_KEY_SERVER_ROOT); // back to utf8
- if (ldapError.errorCode())
- {
- delete ldap;
- ldap = 0;
- dsLogMessage(SETUP_LOG_WARN, "Slapd",
- "Could not add sample entries, ldap error code %d",
- ldapError.errorCode());
- destroyLdapEntry(entry);
- entry = 0;
- }
- }
- }
-
- // create some default organizational entries based on org size, but only
- // if we're creating the User Directory
- if (!featureIsEnabled(slapdInfo->get(SLAPD_KEY_USE_EXISTING_UG)) &&
- featureIsEnabled(slapdInfo->get(SLAPD_KEY_ADD_ORG_ENTRIES)))
- {
- if (!ldap)
- {
- ldapError = 0;
- ldap = new Ldap (ldapError, newURL, bindDN, bindPwd, 0, 0);
- if (ldapError.errorCode())
- {
- delete ldap;
- ldap = 0;
- dsLogMessage(SETUP_LOG_WARN, "Slapd",
- "Could not populate with ldif file %s error code %d",
- slapdInfo->get(SLAPD_KEY_ADD_ORG_ENTRIES),
- ldapError.errorCode());
- }
- else
- {
- entry = new LdapEntry(ldap);
- }
- }
-
- if (!isAValidDN(slapdInfo->get(SLAPD_KEY_CONFIG_ADMIN_DN)))
- {
- // its a uid
- NSString adminDN = NSString("uid=") +
- slapdInfo->get(SLAPD_KEY_CONFIG_ADMIN_DN) +
- ", ou=Administrators, ou=TopologyManagement, " +
- DEFAULT_ROOT_DN;
- slapdInfo->set(SLAPD_KEY_CONFIG_ADMIN_DN, adminDN);
- }
-
- if (entry)
- {
- installInfo->toLocal(SLAPD_KEY_SERVER_ROOT); // path needs local
- add_org_entries(installInfo->get(SLAPD_KEY_SERVER_ROOT), entry,
- slapdInfo->get(SLAPD_KEY_INSTALL_LDIF_FILE),
- slapdInfo->get(SLAPD_KEY_ORG_SIZE), sieDN);
- installInfo->toUTF8(SLAPD_KEY_SERVER_ROOT); // back to utf8
- }
- }
-
- if (ldap)
- delete ldap;
- if (entry)
- destroyLdapEntry(entry);
-
- // create executable shell script to run the console
- create_console_script();
-
- return status;
-}
-
-extern "C" int
-reconfigure_instance(int argc, char *argv[])
-{
- char hn[BUFSIZ];
-
- dsLogMessage(SETUP_LOG_START, "Slapd", "Starting Slapd server reconfiguration.");
-
- if (parse_commandline(argc, argv))
- return 1;
-
- if (installInfo == NULL)
- {
- dsLogMessage(SETUP_LOG_FATAL, "Slapd", "Answer cache not found or invalid");
- return 1;
- }
-
- // next, find the slapd.inf file; it is in the dir <server root>/setup/slapd
- installInfo->toLocal(SLAPD_KEY_SERVER_ROOT); // path needs local
- NSString slapdinffile = NSString(installInfo->get(SLAPD_KEY_SERVER_ROOT))
- + FILE_PATHSEP + "setup" + FILE_PATHSEP + "slapd" + FILE_PATHSEP +
- "slapd.inf";
- InstallInfo temp(slapdinffile);
- if (!(slapdINFFileInfo = temp.getSection("slapd")) ||
- slapdINFFileInfo->isEmpty())
- {
- dsLogMessage(SETUP_LOG_FATAL, "Slapd", "Missing configuration file %s",
- (const char *)slapdinffile);
- return 1;
- }
- installInfo->toUTF8(SLAPD_KEY_SERVER_ROOT); // path needs local
-
- hn[0] = '\0';
-
- /*
- * Get the full hostname.
- */
-
- if (!installInfo->get(SLAPD_KEY_FULL_MACHINE_NAME))
- {
- NSString h;
- /* Force automatic detection of host name */
-#ifdef XP_UNIX
- h = InstUtil::guessHostname();
-#else
- /* stevross: figure out NT equivalent */
-#endif
- PL_strncpyz(hn, h, BUFSIZ);
- installInfo->set(SLAPD_KEY_FULL_MACHINE_NAME, hn);
- }
- else
- {
- PL_strncpyz(hn,installInfo->get(SLAPD_KEY_FULL_MACHINE_NAME), BUFSIZ);
- }
-
- // search for the app entry for the DS installation we just replaced
- // open an LDAP connection to the Config Directory
- LdapError le;
- Ldap ldap(le,
- installInfo->get(SLAPD_KEY_K_LDAP_URL),
- installInfo->get(SLAPD_KEY_SERVER_ADMIN_ID),
- installInfo->get(SLAPD_KEY_SERVER_ADMIN_PWD));
- if (le != OKAY)
- {
- dsLogMessage(SETUP_LOG_FATAL, "Slapd",
- "ERROR: Ldap authentication failed for url %s user id %s (%d:%s)",
- installInfo->get(SLAPD_KEY_K_LDAP_URL),
- installInfo->get(SLAPD_KEY_SERVER_ADMIN_ID),
- le.errorCode(), le.msg());
- return le.errorCode();
- }
-
- // construct the base of the search
- NSString baseDN = NSString("cn=") + hn + ", ou=" +
- installInfo->get(SLAPD_KEY_ADMIN_DOMAIN) + ", " +
- DEFAULT_ROOT_DN;
-
- // find the nsApplication entry corresponding to the slapd installation
- // in the given server root
-#ifdef XP_WIN32
-
- char *pszServerRoot = my_strdup(installInfo->get(SLAPD_KEY_SERVER_ROOT));
- char *pszEscapedServerRoot = (char *)malloc(2*strlen(installInfo->get(SLAPD_KEY_SERVER_ROOT)) );
- char *p,*q;
-
- for(p=pszServerRoot,q=pszEscapedServerRoot; p && *p; p++)
- {
- *q = *p;
- if(*p == '\\')
- {
- q++;
- *q='\\';
- }
- q++;
- }
- /* null terminate it */
- *q= *p;
-
-
- NSString filter =
- NSString("(&(objectclass=nsApplication)") +
- "(nsnickname=slapd)(nsinstalledlocation=" +
- pszEscapedServerRoot + "))";
-
- if(pszServerRoot)
- {
- free(pszServerRoot);
- }
-
- if(pszEscapedServerRoot)
- {
- free(pszEscapedServerRoot);
- }
-#else
- NSString filter =
- NSString("(&(objectclass=nsApplication)") +
- "(nsnickname=slapd)(nsinstalledlocation=" +
- installInfo->get(SLAPD_KEY_SERVER_ROOT) + "))";
-#endif
-
- int scope = LDAP_SCOPE_SUBTREE;
-
- LdapEntry ldapent(&ldap);
- le = ldapent.retrieve(filter, scope, baseDN);
- if (le != OKAY)
- {
- dsLogMessage(SETUP_LOG_FATAL, "Slapd",
- "ERROR: Could not find Directory Server Configuration\n"
- "URL %s user id %s DN %s (%d:%s)" ,
- installInfo->get(SLAPD_KEY_K_LDAP_URL),
- installInfo->get(SLAPD_KEY_SERVER_ADMIN_ID),
- (const char *)baseDN,
- le.errorCode(), le.msg());
- return le.errorCode();
- }
-
- setAppEntryInformation(&ldapent);
-
- le = ldapent.replace(ldapent.entryDN());
- if (le != OKAY)
- {
- dsLogMessage(SETUP_LOG_FATAL, "Slapd",
- "ERROR: Could not update Directory Server Configuration\n"
- "URL %s user id %s DN %s (%d:%s)" ,
- installInfo->get(SLAPD_KEY_K_LDAP_URL),
- installInfo->get(SLAPD_KEY_SERVER_ADMIN_ID),
- (const char *)baseDN,
- le.errorCode(), le.msg());
- return le.errorCode();
- }
-
- // now update the values in the SIEs under the ISIE
- filter = NSString("(objectclass=nsDirectoryServer)");
- scope = LDAP_SCOPE_ONELEVEL;
- baseDN = NSString(ldapent.entryDN());
-
- ldapent.clear();
- le = ldapent.retrieve(filter, scope, baseDN);
- if (le != OKAY)
- {
- dsLogMessage(SETUP_LOG_FATAL, "Slapd",
- "ERROR: Could not find Directory Server Instances\n"
- "URL %s user id %s DN %s (%d:%s)",
- installInfo->get(SLAPD_KEY_K_LDAP_URL),
- installInfo->get(SLAPD_KEY_SERVER_ADMIN_ID),
- (const char *)baseDN,
- le.errorCode(), le.msg());
- return le.errorCode();
- }
-
- // ldapent holds the search results, but ldapent.replace will wipe out that
- // information; so, create a new entry to actually do the replace operation
- // while we use the original ldapent to iterate the search results
-
- do
- {
- LdapEntry repEntry(ldapent.ldap());
- repEntry.retrieve(ldapent.entryDN());
- repEntry.setAttribute("serverVersionNumber", slapdINFFileInfo->get("Version"));
- repEntry.setAttribute("installationTimeStamp", getGMT());
-
- le = repEntry.replace(repEntry.entryDN());
- if (le != OKAY)
- {
- dsLogMessage(SETUP_LOG_FATAL, "Slapd",
- "ERROR: Could not update Directory Server Instance\n"
- "URL %s user id %s DN %s (%d:%s)" ,
- installInfo->get(SLAPD_KEY_K_LDAP_URL),
- installInfo->get(SLAPD_KEY_SERVER_ADMIN_ID),
- (const char *)repEntry.entryDN(),
- le.errorCode(), le.msg());
- return le.errorCode();
- }
- }
- while (ldapent.next() == OKAY);
-
- // we have a new jar file dsXX.jar so we need to update all
- // references to the old jar file name
- filter = NSString("(|(nsclassname=*)(nsjarfilename=*)"
- "(nsservermigrationclassname=*)"
- "(nsservercreationclassname=*))");
- scope = LDAP_SCOPE_SUBTREE;
-
- ldapent.clear();
- le = ldapent.retrieve(filter, scope, baseDN);
- if (le != OKAY)
- {
- dsLogMessage(SETUP_LOG_FATAL, "Slapd",
- "ERROR: Could not find Directory Server Instances\n"
- "URL %s user id %s DN %s (%d:%s)",
- installInfo->get(SLAPD_KEY_K_LDAP_URL),
- installInfo->get(SLAPD_KEY_SERVER_ADMIN_ID),
- (const char *)baseDN,
- le.errorCode(), le.msg());
- return le.errorCode();
- }
-
- do
- {
- LdapEntry repEntry(ldapent.ldap());
- repEntry.retrieve(ldapent.entryDN());
-
- const char *replace[] = {
- "nsclassname",
- "nsservermigrationclassname",
- "nsservercreationclassname"
- };
- const int replaceSize = sizeof(replace)/sizeof(replace[0]);
-
- if (repEntry.getAttribute("nsjarfilename"))
- {
- repEntry.setAttribute("nsjarfilename", DS_JAR_FILE_NAME);
- }
-
- for (int ii = 0; ii < replaceSize; ++ii)
- {
- char *val = repEntry.getAttribute(replace[ii]);
- // the class name is of the form
- // full class path and name[@jar file[@admin SIE]]
- // so here's what we'll do:
- // search for the first @ in the string; if there's not one, just
- // skip it
- // save the full class path and name to a temp var
- // create the new classname by appending @new jar file to the full class
- // name
- // if there is a second @ in the original string, grab the rest of the
- // original string after the second @ and append @string to the new
- // classname
-
- const char *ptr = 0;
- if (val && *val && (ptr = strstr(val, "@")))
- {
- int len = int(ptr - val);
- NSString newClass = NSString(val, len) + "@" +
- DS_JAR_FILE_NAME;
- ++ptr;
- if (*ptr && (ptr = strstr(ptr, "@"))) {
- newClass = NSString(val, len) + "@" +
- DS_JAR_FILE_NAME + ptr;
- }
- repEntry.setAttribute(replace[ii], newClass);
- }
- }
-
- le = repEntry.replace(repEntry.entryDN());
- if (le != OKAY)
- {
- dsLogMessage(SETUP_LOG_FATAL, "Slapd",
- "ERROR: Could not update Directory Server Instance\n"
- "URL %s user id %s DN %s (%d:%s)" ,
- installInfo->get(SLAPD_KEY_K_LDAP_URL),
- installInfo->get(SLAPD_KEY_SERVER_ADMIN_ID),
- (const char *)repEntry.entryDN(),
- le.errorCode(), le.msg());
- return le.errorCode();
- }
- }
- while (ldapent.next() == OKAY);
-
- // we no longer use nsperl - any CGIs which we used to invoke via perl?perlscript
- // are now invoked directly by making the perl script executable - we need to
- // search for all nsexecref: perl?perlscript and replace them with
- // nsexecref: perlscript
- filter = NSString("(nsexecref=perl*)");
- scope = LDAP_SCOPE_SUBTREE;
- baseDN = name_netscaperootDN;
-
- ldapent.clear();
- le = ldapent.retrieve(filter, scope, baseDN);
- if (le != OKAY)
- {
- if (le == NOT_FOUND) {
- dsLogMessage(SETUP_LOG_INFO, "Slapd",
- "No old nsperl references found");
- } else {
- dsLogMessage(SETUP_LOG_FATAL, "Slapd",
- "ERROR: Could not find old nsperl references\n"
- "URL %s user id %s DN %s (%d:%s)",
- installInfo->get(SLAPD_KEY_K_LDAP_URL),
- installInfo->get(SLAPD_KEY_SERVER_ADMIN_ID),
- (const char *)baseDN,
- le.errorCode(), le.msg());
- return le.errorCode();
- }
- } else {
- do
- {
- LdapEntry repEntry(ldapent.ldap());
- repEntry.retrieve(ldapent.entryDN());
- char *val = repEntry.getAttribute("nsexecref");
- const char *ptr = 0;
- if (val && *val && (ptr = strstr(val, "perl?"))) {
- ptr = strchr(ptr, '?');
- ptr++;
- NSString newscript = NSString(ptr);
- repEntry.setAttribute("nsexecref", newscript);
- }
-
- le = repEntry.replace(repEntry.entryDN());
- if (le != OKAY)
- {
- dsLogMessage(SETUP_LOG_FATAL, "Slapd",
- "ERROR: Could not fix old nsperl reference\n"
- "URL %s user id %s DN %s (%d:%s)" ,
- installInfo->get(SLAPD_KEY_K_LDAP_URL),
- installInfo->get(SLAPD_KEY_SERVER_ADMIN_ID),
- (const char *)repEntry.entryDN(),
- le.errorCode(), le.msg());
- return le.errorCode();
- }
- }
- while (ldapent.next() == OKAY);
- }
-
- return 0;
-}
diff --git a/ldap/admin/src/configure_instance.h b/ldap/admin/src/configure_instance.h
deleted file mode 100644
index aedde9e1..00000000
--- a/ldap/admin/src/configure_instance.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-/***********************************************************************
-**
-**
-** NAME
-** configure_instance.h
-**
-** DESCRIPTION
-**
-**
-** AUTHOR
-** Rich Megginson <richm@netscape.com>
-**
-***********************************************************************/
-
-#ifndef _CONFIGURE_INSTANCE_H_
-#define _CONFIGURE_INSTANCE_H_
-
-#include "create_instance.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-int
-create_config_from_inf(
- server_config_s *cf,
- int argc,
- char *argv[]
-);
-
-int
-configure_instance_with_config(
- server_config_s *cf,
- int verbose, /* if false, silent; if true, verbose */
- const char *lfile /* log file */
-);
-
-int
-configure_instance();
-
-int
-reconfigure_instance(int argc, char *argv[]);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _CONFIGURE_INSTANCE_H_ */
diff --git a/ldap/admin/src/create_instance.c b/ldap/admin/src/create_instance.c
deleted file mode 100644
index 7623e2e0..00000000
--- a/ldap/admin/src/create_instance.c
+++ /dev/null
@@ -1,4676 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-/*
- * create_instance.c: Routines for creating an instance of a Directory Server
- *
- * These routines are not thread safe.
- *
- * Rob McCool
- */
-
-#define GW_CONF 1
-#define PB_CONF 2
-
-#include "create_instance.h"
-#include "cfg_sspt.h"
-
-#include <stdio.h>
-#include <stdarg.h>
-#include <string.h>
-
-#include <sys/stat.h>
-#include <ctype.h>
-
-#define PATH_SIZE 1024
-#define ERR_SIZE 8192
-
-/* delay time in seconds between referential integrity updates
- 0 means continues */
-#define REFERINT_DELAY 0
-
-/* 1=log changes for replaction, 0=don't replicate changes */
-#define REFERINT_LOG_CHANGES 0
-
-#include "dsalib.h"
-#include "dirver.h"
-
-#include "nspr.h"
-#include "plstr.h"
-
-#ifdef XP_WIN32
-#define NOT_ABSOLUTE_PATH(str) \
- ((str[0] != '/') && (str[0] != '\\') && (str[2] != '/') && (str[2] != '\\'))
-#define EADDRINUSE WSAEADDRINUSE
-#define EACCES WSAEACCES
-#include <winsock.h>
-#include <io.h>
-#include <regparms.h>
-#include <nt/ntos.h>
-#define SHLIB_EXT "dll"
-
-#else /* !XP_WIN32 */
-
-#define NOT_ABSOLUTE_PATH(str) (str[0] != '/')
-#include <errno.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include <pwd.h>
-
-#if !defined(HPUX)
-#include <sys/select.h> /* FD_SETSIZE */
-#else
-#include <sys/types.h> /* FD_SETSIZE is in types.h on HPUX */
-#endif
-
-#if !defined(AIX)
-#include <sys/resource.h> /* get/setrlimit stuff */
-#endif
-
-#include <sys/socket.h> /* socket flags */
-#include <netinet/in.h> /* sockaddr_in */
-#include <arpa/inet.h> /* inet_addr */
-#ifdef HPUX
-#ifdef __ia64
-#define SHLIB_EXT "so"
-#else
-#define SHLIB_EXT "sl"
-#endif
-#else
-#define SHLIB_EXT "so"
-#endif
-
-#endif /* !XP_WIN32 */
-
-/*
- NT doesn't strictly need these, but the libadmin API which is emulated
- below uses them.
- */
-#define NEWSCRIPT_MODE 0755
-#define NEWFILE_MODE 0644
-#define NEWDIR_MODE 0755
-#define NEWSECDIR_MODE 0700
-
-#include <stdarg.h>
-
-#ifdef XP_WIN32
-OS_TYPE NS_WINAPI INFO_GetOperatingSystem ();
-DWORD NS_WINAPI SERVICE_ReinstallNTService( LPCTSTR szServiceName,
- LPCTSTR szServiceDisplayName,
- LPCTSTR szServiceExe );
-#endif
-
-static void ds_gen_index(FILE* f, char* belowdn);
-static char *ds_gen_orgchart_conf(char *sroot, char *cs_path, server_config_s *cf);
-static char *ds_gen_gw_conf(char *sroot, char *cs_path, server_config_s *cf, int conf_type);
-static char *install_ds(char *sroot, server_config_s *cf, char *param_name);
-
-#if defined (BUILD_PRESENCE)
-static char *gen_presence_init_script(char *sroot, server_config_s *cf,
- char *cs_path);
-static int init_presence(char *sroot, server_config_s *cf, char *cs_path);
-#endif
-
-static char *make_error(char *fmt, ...)
-#ifdef __GNUC__
- __attribute__ ((format (printf, 1, 2)));
-#else
- ;
-#endif
-
-static char *make_error(char *fmt, ...)
-{
- static char errbuf[ERR_SIZE];
- va_list args;
-
- va_start(args, fmt);
- PR_vsnprintf(errbuf, sizeof(errbuf), fmt, args);
- va_end(args);
- return errbuf;
-}
-
-
-/* This is to determine if we can skip the port number checks. During
-migration or server cloning, we may want to copy over an old configuration,
-including the old port number, which may not currently have permission to
-use; if we don't need to start the server right away, we can skip
-certain checks
-*/
-static int needToStartServer(server_config_s *cf)
-{
- if (cf && (
- (cf->cfg_sspt && !strcmp(cf->cfg_sspt, "1")) ||
- (cf->start_server && !strcmp(cf->start_server, "1"))
- ))
- {
- return 1;
- }
-
- return 0;
-}
-
-static int getSuiteSpotUserGroup(server_config_s* cf)
-{
-#ifdef XP_UNIX
- static const char *ssUsersFile = "ssusers.conf";
- char realFile[PATH_SIZE];
- char buf[1024];
- FILE *fp = NULL;
- int status = 1;
-
- if (cf->servuser)
- return 0;
-
- PR_snprintf(realFile, sizeof(realFile), "%s/%s", cf->config_dir, ssUsersFile);
- if (!(fp = fopen(realFile, "r")))
- return 1;
-
- while (fgets(buf, sizeof(buf), fp))
- {
- char *p = NULL;
-
- if (buf[0] == '#' || buf[0] == '\n')
- continue;
-
- buf[strlen(buf) - 1] = 0;
- if (NULL != (p = strstr(buf, "SuiteSpotUser")))
- {
- p += strlen("SuiteSpotUser");
- while (ldap_utf8isspace(p))
- LDAP_UTF8INC(p);
- cf->servuser = strdup(p);
- status = 0;
- break;
- }
- }
-
- if (fp)
- fclose(fp);
-
- return status;
-#else
- return 0;
-#endif
-}
-
-/* ----------------------- Create default settings ------------------------ */
-
-
-void set_defaults(char *sroot, char *hn, server_config_s *conf)
-{
- char *id = 0, *t = 0;
-
- conf->sroot = sroot;
-
- if (hn)
- {
- if( (t = strchr(hn, '.')) )
- *t = '\0';
- id = PR_smprintf("%s", hn);
- if(t)
- *t = '.';
- }
-
- conf->servname = hn;
- conf->bindaddr = "";
- conf->cfg_sspt = NULL;
- conf->suitespot3x_uid = NULL;
- conf->cfg_sspt_uid = NULL;
- conf->cfg_sspt_uidpw = NULL;
- conf->servport = "389";
- conf->secserv = "off";
- conf->secservport = "636";
- conf->rootpw = "";
- conf->roothashedpw = "";
- conf->loglevel = NULL;
- if (getenv("DEBUG_DS_LOG_LEVEL"))
- conf->loglevel = getenv("DEBUG_DS_LOG_LEVEL");
- conf->suffix = "dc=example, dc=com";
-#ifndef DONT_ALWAYS_CREATE_NETSCAPEROOT
- conf->netscaperoot = name_netscaperootDN;
-#endif /* DONT_ALWAYS_CREATE_NETSCAPEROOT */
-#define CREATE_SAMPLE_SUFFIX
-#ifdef CREATE_SAMPLE_SUFFIX
- conf->samplesuffix = "dc=example, dc=com";
-#endif /* CREATE_SAMPLE_SUFFIX */
-#ifdef TEST_CONFIG
- conf->netscaperoot = "cn=config40";
-#endif /* TEST_CONFIG */
-
-#define ROOT_RDN "cn=Directory Manager"
- conf->rootdn = ROOT_RDN;
-/* conf->rootdn = malloc(strlen(ROOT_RDN) + 2 + strlen(conf->suffix) + 1);
- sprintf(conf->rootdn, "%s, %s", ROOT_RDN, conf->suffix);*/
- conf->servid = id;
-
-#ifdef XP_UNIX
- conf->servuser = NULL;
-#ifdef THREAD_NSPR_KERNEL
- conf->numprocs = "1";
- conf->maxthreads = "128";
-#else
- conf->numprocs = "4";
- conf->maxthreads = "32";
-#endif
-#else /* XP_WIN32 */
- conf->maxthreads = "32";
-#endif
- conf->minthreads = "4";
-
- conf->upgradingServer = 0;
-
- conf->start_server = "1";
- conf->install_full_schema = 1;
- conf->admin_domain = NULL;
- conf->user_ldap_url = NULL;
- conf->use_existing_user_ds = 0;
- conf->consumerdn = NULL;
- conf->disable_schema_checking = NULL;
- conf->install_ldif_file = NULL;
-
- conf->bak_dir = NULL;
- conf->config_dir = NULL;
- conf->sbindir = NULL;
- conf->datadir = NULL;
- conf->db_dir = NULL;
- conf->docdir = NULL;
- conf->inst_dir = NULL;
- conf->ldif_dir = NULL;
- conf->lock_dir = NULL;
- conf->log_dir = NULL;
- conf->plugin_dir = NULL;
- conf->run_dir = NULL;
- conf->sasl_path = NULL;
- conf->schema_dir = NULL;
- conf->sysconfdir = NULL;
- conf->tmp_dir = NULL;
-}
-
-/* ----------------- Sanity check a server configuration ------------------ */
-
-char *create_instance_checkport(char *, char *);
-char *create_instance_checkports(server_config_s *cf);
-char *create_instance_checkuser(char *);
-int create_instance_numbers(char *);
-int create_instance_exists(char *fn, int type);
-char *create_instance_copy(char *, char *, int, int);
-char *create_instance_concatenate(char *, char *, int);
-int create_instance_mkdir(char *, int);
-char *create_instance_mkdir_p(char *, char *, int, struct passwd *);
-static char *create_instance_strdup(const char *);
-
-#if defined( SOLARIS )
-/*
- * Solaris 9+ specific installation
- */
-int create_instance_symlink(char *, char *);
-#endif /* SOLARIS */
-
-
-/*
- returns NULL if the given dn is a valid dn, or an error string
-*/
-static char *
-isAValidDN(const char *dn_to_test)
-{
- char *t = 0;
-
- if (!dn_to_test || !*dn_to_test)
- {
- t = "No value specified for the parameter.";
- }
- else
- {
- char **rdnList = ldap_explode_dn(dn_to_test, 0);
- char **rdnNoTypes = ldap_explode_dn(dn_to_test, 1);
- if (!rdnList || !rdnList[0] || !rdnNoTypes || !rdnNoTypes[0] ||
- !*rdnNoTypes[0] || !PL_strcasecmp(rdnList[0], rdnNoTypes[0]))
- {
- t = make_error("The given value [%s] is not a valid DN.",
- dn_to_test);
- }
- if (rdnList)
- ldap_value_free(rdnList);
- if (rdnNoTypes)
- ldap_value_free(rdnNoTypes);
- }
-
- if (t)
- return t;
-
- return NULL;
-}
-
-/*
- prints a message if the given dn uses LDAPv2 style quoting
-*/
-void
-checkForLDAPv2Quoting(const char *dn_to_test)
-{
- if (ds_dn_uses_LDAPv2_quoting(dn_to_test))
- {
- char *newdn = strdup(dn_to_test);
- char *t;
- dn_normalize_convert(newdn);
- t = make_error(
- "The given value [%s] is quoted in the deprecated LDAPv2 style\n"
- "quoting format. It will be automatically converted to use the\n"
- "LDAPv3 style escaped format [%s].", dn_to_test, newdn);
- free(newdn);
- ds_show_message(t);
- }
-
- return;
-}
-
-/*
- returns NULL if the given string contains no 8 bit chars, otherwise an
- error message
-*/
-static char *
-contains8BitChars(const char *s)
-{
- char *t = 0;
-
- if (s && *s)
- {
- for (; !t && *s; ++s)
- {
- if (*s & 0x80)
- {
- t = make_error("The given value [%s] contains invalid 8 bit characters.",
- s);
- }
- }
- }
-
- return t;
-}
-
-static char *sanity_check(server_config_s *cf, char *param_name)
-{
- char *t;
- register int x;
-
- if (!param_name)
- return "Parameter param_name is null";
-
- /* if we don't need to start the server right away, we can skip the
- port number checks
- */
- if (needToStartServer(cf))
- {
- if( (t = create_instance_checkports(cf)))
- {
- PL_strncpyz(param_name, "servport", BIG_LINE);
- return t;
- }
-
- if ( cf->secserv && (strcmp(cf->secserv, "on") == 0) && (cf->secservport != NULL) &&
- (*(cf->secservport) != '\0') ) {
- if ( (t = create_instance_checkport(cf->bindaddr, cf->secservport)) ) {
- PL_strncpyz(param_name, "secservport", BIG_LINE);
- return t;
- }
- }
- }
-
- /* is the server identifier good? */
- for(x=0; cf->servid[x]; x++) {
- if(strchr("/ &;`'\"|*!?~<>^()[]{}$\\", cf->servid[x])) {
- PL_strncpyz(param_name, "servid", BIG_LINE);
- return make_error("You used a shell-specific character in "
- "your server id (the character was %c).",
- cf->servid[x]);
- }
- }
-
-#ifdef XP_UNIX
- if( (t = create_instance_checkuser(cf->servuser)) )
- {
- PL_strncpyz(param_name, "servuser", BIG_LINE);
- return t;
- }
-#endif
-
- /* make sure some drooling imbecile doesn't put in bogus numbers */
-#ifdef XP_UNIX
- if((!create_instance_numbers(cf->numprocs)) || (atoi(cf->numprocs) <= 0))
- {
- PL_strncpyz(param_name, "numprocs", BIG_LINE);
- return ("The number of processes must be not be zero or "
- "negative.");
- }
-#endif
- if((!create_instance_numbers(cf->maxthreads)) || (atoi(cf->maxthreads) <= 0))
- {
- PL_strncpyz(param_name, "maxthreads", BIG_LINE);
- return ("The maximum threads must be not be zero or negative.");
- }
- if((!create_instance_numbers(cf->minthreads)) || (atoi(cf->minthreads) <= 0))
- {
- PL_strncpyz(param_name, "minthreads", BIG_LINE);
- return ("The minumum threads must be not be zero or negative.");
- }
-
- if((atoi(cf->minthreads)) > (atoi(cf->maxthreads)))
- {
- PL_strncpyz(param_name, "minthreads", BIG_LINE);
- return ("Minimum threads must be less than maximum threads.");
- }
-
- /* see if the DN parameters are valid DNs */
- if (!cf->use_existing_user_ds && (t = isAValidDN(cf->suffix)))
- {
- PL_strncpyz(param_name, "suffix", BIG_LINE);
- return t;
- }
- checkForLDAPv2Quoting(cf->suffix);
-
- if (NULL != (t = isAValidDN(cf->rootdn)))
- {
- PL_strncpyz(param_name, "rootdn", BIG_LINE);
- return t;
- }
- checkForLDAPv2Quoting(cf->rootdn);
-
- if (cf->replicationdn && *cf->replicationdn && (t = isAValidDN(cf->replicationdn)))
- {
- PL_strncpyz(param_name, "replicationdn", BIG_LINE);
- return t;
- }
- checkForLDAPv2Quoting(cf->replicationdn);
-
- if (cf->consumerdn && *cf->consumerdn && (t = isAValidDN(cf->consumerdn)))
- {
- PL_strncpyz(param_name, "consumerdn", BIG_LINE);
- return t;
- }
- checkForLDAPv2Quoting(cf->consumerdn);
-
- if (cf->changelogsuffix && *cf->changelogsuffix &&
- (t = isAValidDN(cf->changelogsuffix)))
- {
- PL_strncpyz(param_name, "changelogsuffix", BIG_LINE);
- return t;
- }
- checkForLDAPv2Quoting(cf->changelogsuffix);
-
- if (cf->netscaperoot && *cf->netscaperoot &&
- (t = isAValidDN(cf->netscaperoot)))
- {
- PL_strncpyz(param_name, "netscaperoot", BIG_LINE);
- return t;
- }
- checkForLDAPv2Quoting(cf->netscaperoot);
-
- if (cf->samplesuffix && *cf->samplesuffix &&
- (t = isAValidDN(cf->samplesuffix)))
- {
- PL_strncpyz(param_name, "samplesuffix", BIG_LINE);
- return t;
- }
- checkForLDAPv2Quoting(cf->samplesuffix);
-
- if (NULL != (t = contains8BitChars(cf->rootpw)))
- {
- PL_strncpyz(param_name, "rootpw", BIG_LINE);
- return t;
- }
-
- if (NULL != (t = contains8BitChars(cf->cfg_sspt_uidpw)))
- {
- PL_strncpyz(param_name, "cfg_sspt_uidpw", BIG_LINE);
- return t;
- }
-
- if (NULL != (t = contains8BitChars(cf->replicationpw)))
- {
- PL_strncpyz(param_name, "replicationpw", BIG_LINE);
- return t;
- }
-
- if (NULL != (t = contains8BitChars(cf->consumerpw)))
- {
- PL_strncpyz(param_name, "consumerpw", BIG_LINE);
- return t;
- }
-
- if (cf->cfg_sspt_uid && *cf->cfg_sspt_uid)
- {
- /*
- If it is a valid DN, ok. Otherwise, it should be a uid, and should
- be checked for 8 bit chars
- */
- if (NULL != (t = isAValidDN(cf->cfg_sspt_uid)))
- {
- if (NULL != (t = contains8BitChars(cf->cfg_sspt_uid)))
- {
- PL_strncpyz(param_name, "cfg_sspt_uid", BIG_LINE);
- return t;
- }
- }
- else
- checkForLDAPv2Quoting(cf->cfg_sspt_uid);
- }
-
- return NULL;
-}
-
-/* ----- From a configuration, set up a new server in the server root ----- */
-
-/* ------------------ UNIX utilities for server creation ------------------ */
-
-#ifdef XP_UNIX
-
-static char*
-chownfile (struct passwd* pw, char* fn)
-{
- if (pw != NULL && chown (fn, pw->pw_uid, pw->pw_gid) == -1) {
- if (pw->pw_name != NULL) {
- return make_error ("Could not change owner of %s to %s.",
- fn, pw->pw_name);
- } else {
- return make_error ("Could not change owner of %s to (UID %li, GID %li).",
- fn, (long)(pw->pw_uid), (long)(pw->pw_gid));
- }
- }
- return NULL;
-}
-
-static char *
-chowndir(char *dir, char *user)
-{
- struct passwd *pw;
- if (dir && *dir && user && *user && !geteuid()) {
- if(!(pw = getpwnam(user)))
- return make_error("Could not find UID and GID of user '%s'.", user);
- return chownfile (pw, dir);
- }
- return NULL;
-}
-
-#else
-
-#define chownfile(a, b)
-#define chowndir(a, b)
-#define chownsearch(a, b)
-
-#endif
-char *gen_script(char *s_root, char *name, char *fmt, ...)
-#ifdef __GNUC__
- __attribute__ ((format (printf, 3, 4)));
-#else
- ;
-#endif
-
-char *gen_script(char *s_root, char *name, char *fmt, ...)
-{
- char fn[PATH_SIZE];
- FILE *f;
- char *shell = "/bin/sh";
- va_list args;
-
- PR_snprintf(fn, sizeof(fn), "%s%c%s", s_root, FILE_PATHSEP, name);
- if(!(f = fopen(fn, "w")))
- return make_error("Could not write to %s (%s).", fn, ds_system_errmsg());
- va_start(args, fmt);
-#if !defined( XP_WIN32 )
-#if defined( OSF1 )
- /*
- The standard /bin/sh has some rather strange behavior with "$@",
- so use the posix version wherever possible. OSF1 4.0D should
- always have this one available.
- */
- if (!access("/usr/bin/posix/sh", 0))
- shell = "/usr/bin/posix/sh";
-#endif /* OSF1 */
- fprintf(f, "#!%s\n\n", shell);
- /*
- Neutralize shared library access.
-
- On HP-UX, SHLIB_PATH is the historical variable.
- However on HP-UX 64 bit, LD_LIBRARY_PATH is also used.
- We unset both too.
- */
-#if defined( SOLARIS ) || defined( OSF1 ) || defined( LINUX2_0 )
- fprintf(f, "unset LD_LIBRARY_PATH\n");
-#endif
-#if defined( HPUX )
- fprintf(f, "unset SHLIB_PATH\n");
- fprintf(f, "unset LD_LIBRARY_PATH\n");
-#endif
-#if defined( AIX )
- fprintf(f, "unset LIBPATH\n");
-#endif
-#endif
- vfprintf(f, fmt, args);
-
-#if defined( XP_UNIX )
- fchmod(fileno(f), NEWSCRIPT_MODE);
-#endif
- fclose(f);
-#if defined( XP_WIN32 )
- chmod( fn, NEWSCRIPT_MODE);
-#endif
- return NULL;
-}
-
-char *gen_script_auto(char *s_root, char *cs_path,
- char *name, server_config_s *cf)
-{
- char myperl[PATH_SIZE];
- char fn[PATH_SIZE], ofn[PATH_SIZE];
- const char *table[18][2];
-
- if (PR_FAILURE == PR_Access(cs_path, PR_ACCESS_EXISTS)) {
- printf("Notice: %s does not exist, skipping %s . . .\n", cs_path, name);
- return NULL;
- }
-
-#if defined (IS_FHS_OPT)
- PR_snprintf(ofn, sizeof(ofn), "%s%cscript-templates%ctemplate-%s",
- cf->datadir, FILE_PATHSEP, FILE_PATHSEP, name);
-#else
- PR_snprintf(ofn, sizeof(ofn), "%s%c%s%cscript-templates%ctemplate-%s",
- cf->datadir, FILE_PATHSEP, cf->package_name,
- FILE_PATHSEP, FILE_PATHSEP, name);
-#endif
- PR_snprintf(fn, sizeof(fn), "%s%c%s", cs_path, FILE_PATHSEP, name);
- create_instance_mkdir(cs_path, NEWDIR_MODE);
-#ifdef USE_NSPERL
- PR_snprintf(myperl, sizeof(myperl), "!%s%cbin%cslapd%cadmin%cbin%cperl",
- cf->prefix, FILE_PATHSEP, FILE_PATHSEP,
- FILE_PATHSEP, FILE_PATHSEP, FILE_PATHSEP);
-#else
- strcpy(myperl, "!/usr/bin/env perl");
-#endif
-
- table[0][0] = "DS-ROOT";
- table[0][1] = cf->prefix;
- table[1][0] = "DS-BRAND";
- table[1][1] = cf->package_name;
- table[2][0] = "SEP";
- table[2][1] = FILE_PATHSEPP;
- table[3][0] = "SERVER-NAME";
- table[3][1] = cf->servname;
- table[4][0] = "SERVER-PORT";
- table[4][1] = cf->servport;
- table[5][0] = "PERL-EXEC";
- table[6][0] = "DEV-NULL";
-#if !defined( XP_WIN32 )
- table[5][1] = myperl;
- table[6][1] = " /dev/null ";
-#else
- table[5][1] = " perl script";
- table[6][1] = " NUL ";
-#endif
- table[7][0] = "ROOT-DN";
- table[7][1] = cf->rootdn;
- table[8][0] = "LDIF-DIR";
- table[8][1] = cf->ldif_dir;
- table[9][0] = "SERV-ID";
- table[9][1] = cf->servid;
-
- table[10][0] = "BAK-DIR";
- table[10][1] = cf->bak_dir;
- table[11][0] = "SERVER-DIR";
- table[11][1] = cf->sroot;
- table[12][0] = "CONFIG-DIR";
- table[12][1] = cf->config_dir;
- table[13][0] = "RUN-DIR";
- table[13][1] = cf->run_dir;
- table[14][0] = "PRODUCT-NAME";
- table[14][1] = PRODUCT_NAME;
- table[15][0] = "SERVERBIN-DIR";
- table[15][1] = cf->sbindir;
- table[16][0] = "DB-DIR";
- table[16][1] = cf->db_dir;
- table[17][0] = table[17][1] = NULL;
-
- if (generate_script(ofn, fn, NEWSCRIPT_MODE, table) != 0) {
- return make_error("Could not write %s to %s (%s).", ofn, fn,
- ds_system_errmsg());
- }
-
- return NULL;
-}
-
-
-/* ------------------ NT utilities for server creation ------------------ */
-
-#ifdef XP_WIN32
-
-char *
-service_exists(char *servid)
-{
- DWORD status, lasterror = 0;
- char szServiceName[MAX_PATH] = {0};
- PR_snprintf(szServiceName, sizeof(szServiceName),"%s-%s", SVR_ID_SERVICE, servid);
- /* if the service already exists, error */
- status = SERVICE_GetNTServiceStatus(szServiceName, &lasterror );
- if ( (lasterror == ERROR_SERVICE_DOES_NOT_EXIST) ||
- (status == SERVRET_ERROR) || (status == SERVRET_REMOVED) ) {
- return 0;
- } else { return
- make_error("Server %s already exists: cannot create another. "
- "Please choose a different name or delete the "
- "existing server.",
- szServiceName);
- }
-
- return 0;
-}
-
-void setup_nteventlogging(char *szServiceId, char *szMessageFile)
-{
- HKEY hKey;
- char szKey[MAX_PATH];
- DWORD dwData;
-
- PR_snprintf(szKey, sizeof(szKey), "SYSTEM\\CurrentControlSet\\Services\\EventLog\\Application\\%s", szServiceId);
-
- if(RegCreateKey(HKEY_LOCAL_MACHINE, szKey, &hKey) == ERROR_SUCCESS)
- {
- if(RegSetValueEx(hKey, "EventMessageFile", 0, REG_SZ, (LPBYTE)szMessageFile, strlen(szMessageFile) + 1) == ERROR_SUCCESS)
- {
- dwData = EVENTLOG_ERROR_TYPE | EVENTLOG_WARNING_TYPE | EVENTLOG_INFORMATION_TYPE;
- RegSetValueEx(hKey, "TypesSupported", 0, REG_DWORD, (LPBYTE) &dwData, sizeof(DWORD));
- }
- RegCloseKey(hKey);
- }
-}
-
-
-char *add_ntservice(server_config_s *cf)
-{
- char szMessageFile[MAX_PATH];
- char szServiceExe[MAX_PATH], szServiceDisplayName[MAX_PATH], szServiceName[MAX_PATH];
- DWORD dwLastError;
-
- PR_snprintf(szServiceExe, sizeof(szServiceExe), "%s/bin/%s/server/%s",
- cf->prefix, SVR_DIR_ROOT, SVR_EXE);
- PR_snprintf(szServiceName, sizeof(szServiceName),"%s-%s", SVR_ID_SERVICE, cf->servid);
- PR_snprintf(szServiceDisplayName, sizeof(szServiceDisplayName), "%s (%s)", SVR_NAME_FULL_VERSION,
- cf->servid);
-
- /* install new service - if already installed, try and remove and
- then reinstall */
- dwLastError = SERVICE_ReinstallNTService( szServiceName,
- szServiceDisplayName, szServiceExe );
- if ( dwLastError != NO_ERROR ) {
- return make_error ( "While installing %s Service, the "
- "NT Service Manager reported error %d (%s)",
- szServiceDisplayName, dwLastError, ds_system_errmsg() );
- }
-
- // setup event logging registry keys, do this after service creation
- PR_snprintf(szMessageFile, sizeof(szMessageFile), "%s\\bin\\%s\\server\\%s",
- cf->prefix, SVR_DIR_ROOT, "slapdmessages30.dll");
- setup_nteventlogging(szServiceName, szMessageFile);
-
- // TODO: add perfmon setup code -ahakim 11/22/96
- return NULL;
-}
-
-char *setup_ntserver(server_config_s *cf)
-{
- char line[MAX_PATH], *sroot = cf->prefix;
- char subdir[MAX_PATH];
- char NumValuesBuf[3];
- DWORD Result;
- HKEY hServerKey;
- DWORD NumValues;
- DWORD iterator;
- int value_already_exists = 0;
- DWORD type_buffer;
- char value_data_buffer[MAX_PATH];
- DWORD sizeof_value_data_buffer;
-
- /* MLM - Adding ACL directories authdb and authdb/default */
- PR_snprintf(subdir, sizeof(subdir), "%s%cauthdb", sroot, FILE_PATHSEP);
- if( (create_instance_mkdir(subdir, NEWDIR_MODE)) )
- return make_error("mkdir %s failed (%s)", subdir, ds_system_errmsg());
-
- PR_snprintf(subdir, sizeof(subdir), "%s%cauthdb%cdefault", sroot, FILE_PATHSEP, FILE_PATHSEP);
- if( (create_instance_mkdir(subdir, NEWDIR_MODE)) )
- return make_error("mkdir %s failed (%s)", subdir, ds_system_errmsg());
-
- /* Create DS-nickname (corresponding to ServiceID) key in registry */
- PR_snprintf(line, sizeof(line), "%s\\%s\\%s-%s", KEY_SOFTWARE_NETSCAPE, SVR_KEY_ROOT,
- SVR_ID_SERVICE, cf->servid);
-
- Result = RegCreateKey(HKEY_LOCAL_MACHINE, line, &hServerKey);
- if (Result != ERROR_SUCCESS) {
- return make_error("Could not create registry server key %s - error %d (%s)",
- line, GetLastError(), ds_system_errmsg());
- }
-
- // note that SVR_ID_PRODUCT is being used here, which is of the form dsX
- // as opposed to SVR_ID_SERVICE, which is of the form dsX30
- PR_snprintf(line, sizeof(line), "%s\\%s-%s\\config", sroot, SVR_ID_PRODUCT, cf->servid);
- Result = RegSetValueEx(hServerKey, VALUE_CONFIG_PATH, 0, REG_SZ,
- line, strlen(line) + 1);
-
- RegCloseKey(hServerKey);
-
- /* Create SNMP key in registry */
- PR_snprintf(line, sizeof(line), "%s\\%s\\%s", KEY_SOFTWARE_NETSCAPE, SVR_KEY_ROOT,
- KEY_SNMP_CURRENTVERSION);
-
- Result = RegCreateKey(HKEY_LOCAL_MACHINE, line, &hServerKey);
- if (Result != ERROR_SUCCESS) {
- return make_error("Could not create registry server key %s - error %d (%s)",
- line, GetLastError(), ds_system_errmsg());
- }
-
-
- /* Create the SNMP Pathname value */
- PR_snprintf(line, sizeof(line), "%s\\%s", sroot, SNMP_PATH);
- Result = RegSetValueEx(hServerKey, VALUE_APP_PATH, 0, REG_SZ,
- line, strlen(line) + 1);
- RegCloseKey(hServerKey);
-
- /* write SNMP extension agent value to Microsoft SNMP Part of Registry) */
- PR_snprintf(line, sizeof(line), "%s\\%s", KEY_SERVICES, KEY_SNMP_SERVICE);
- Result = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
- line,
- 0,
- KEY_ALL_ACCESS,
- &hServerKey);
- /* if its there set the value, otherwise go on to the next thing */
- if (Result == ERROR_SUCCESS)
- {
- /* extension agents should have linearly increasing value,
- make sure it doesn't already exist, find last one and increment
- value for new key */
-
- PR_snprintf(line, sizeof(line), "%s\\%s\\%s", KEY_SOFTWARE_NETSCAPE, SVR_KEY_ROOT, KEY_SNMP_CURRENTVERSION);
-
- Result = RegQueryInfoKey(hServerKey, NULL, NULL, NULL, NULL, NULL,
- NULL, &NumValues, NULL, NULL, NULL, NULL);
-
- if (Result == ERROR_SUCCESS){
- for(iterator = 0; iterator <= NumValues; iterator++)
- {
- /* initialize to max size to avoid
- ERROR_MORE_DATA because size gets set
- to actual size of key after call
- to RegQueryValueEx, previously there
- was a bug if last key was smaller
- than this one it would return ERROR_MORE_DATA
- and it would not find the key if it was already there
- */
- sizeof_value_data_buffer=MAX_PATH;
- PR_snprintf(NumValuesBuf, sizeof(NumValuesBuf), "%d", iterator);
- Result = RegQueryValueEx(hServerKey,
- NumValuesBuf,
- NULL,
- &type_buffer,
- value_data_buffer,
- &sizeof_value_data_buffer
- );
-
- if(!strcmp(value_data_buffer, line))
- {
- value_already_exists = 1;
- }
- }
- }
-
- if(!value_already_exists)
- {
- PR_snprintf(NumValuesBuf, sizeof(NumValuesBuf), "%d", NumValues + 1);
- Result = RegSetValueEx(hServerKey, NumValuesBuf, 0, REG_SZ,
- line, strlen(line) + 1);
-
- /* couldn't set this value, so there is a real problem */
- if (Result != ERROR_SUCCESS)
- {
- return make_error("Could not set value %s (%d)",
- line, Result);
- }
- }
-
- }
- RegCloseKey(hServerKey);
-
- return NULL;
-}
-#endif
-
-static char *
-create_scripts(server_config_s *cf, char *param_name)
-{
- char *t = NULL, *sroot = cf->sroot;
- char subdir[PATH_SIZE];
-
- /* Create slapd-nickname directory */
- PR_snprintf(subdir, sizeof(subdir), "%s%c"PRODUCT_NAME"-%s",
- sroot, FILE_PATHSEP, cf->servid);
-#ifdef XP_UNIX
- t = gen_script(cf->inst_dir, RESTART_SCRIPT,
- "\n"
- "# Script that restarts the ns-slapd server.\n"
- "# Exit status can be:\n"
- "# 0: Server restarted successfully\n"
- "# 1: Server could not be started\n"
- "# 2: Server started successfully (was not running)\n"
- "# 3: Server could not be stopped\n"
- "\n"
- "server_already_stopped=0\n"
- "%s/stop-slapd\n"
- "status=$?\n"
- "if [ $status -eq 1 ] ; then\n"
- " exit 3;\n"
- "else\n"
- " if [ $status -eq 2 ] ; then\n"
- " server_already_stopped=1\n"
- " fi\n"
- "fi\n"
- "%s/start-slapd\n"
- "status=$?\n"
- "if [ $server_already_stopped -eq 1 ] && [ $status -eq 0 ] ; then\n"
- " exit 2;\n"
- "fi\n"
- "exit $status\n",
- cf->inst_dir, cf->inst_dir );
- if(t) return t;
-
-#else /* XP_WIN32 */
- /* Windows platforms have some extra setup */
- if( (t = setup_ntserver(cf)) )
- return t;
-
- /* generate start script */
- t = gen_script(subdir, START_SCRIPT".bat", "net start slapd-%s\n", cf->servid);
- if(t) return t;
-
- /* generate stop script */
- t = gen_script(subdir, STOP_SCRIPT".bat", "net stop slapd-%s\n", cf->servid);
- if(t) return t;
-
- /* generate restart script */
- t = gen_script(subdir, RESTART_SCRIPT".bat", "net stop slapd-%s\n"
- "net start slapd-%s\n", cf->servid, cf->servid);
- if(t) return t;
-#endif /* XP_WIN32 */
-
- return t; /* should be NULL */
-}
-
-/* ---------------------- Update server script files ---------------------- */
-int update_server(server_config_s *cf)
-{
- char *t;
- char error_param[BIG_LINE] = {0};
-
-#if defined( SOLARIS )
- /*
- * Solaris 9+ specific installation
- */
- char otherline[PATH_SIZE];
- char subdirvar[PATH_SIZE];
- char subdiretc[PATH_SIZE];
- char *sub;
-#endif /* SOLARIS */
-
- error_param[0] = 0; /* init to empty string */
-
-#ifdef XP_UNIX
- if (!cf->servuser)
- getSuiteSpotUserGroup(cf);
-#else
- /* Abort if the service exists on NT */
- if (t = service_exists(cf->servid)) {
- PL_strncpyz(error_param, "servid", BIG_LINE);
- goto out;
- }
-#endif
-
- if( (t = sanity_check(cf, error_param)) )
- goto out;
-
- t = create_scripts(cf, error_param);
- if(t) goto out;
-
-out:
- if(t)
- {
- char *msg;
- if (error_param[0])
- {
- msg = PR_smprintf("%s.error:could not update server %s - %s",
- error_param, cf->servid, t);
- }
- else
- {
- msg = PR_smprintf("error:could not update server %s - %s",
- cf->servid, t);
- }
- ds_show_message(msg);
- PR_smprintf_free(msg);
- return 1;
- }
- else
- return 0;
-}
-
-/* ---------------------- Create configuration files ---------------------- */
-char *create_server(server_config_s *cf, char *param_name)
-{
-#if defined (BUILD_PRESENCE)
- char line[PATH_SIZE]
-#endif
- char *t, *sroot = cf->sroot;
- struct passwd *pw = getpwnam(cf->servuser);
-
-#if defined( SOLARIS )
- /*
- * Solaris 9+ specific installation
- */
- char otherline[PATH_SIZE];
- char subdirvar[PATH_SIZE];
- char subdiretc[PATH_SIZE];
- char *sub;
-#endif /* SOLARIS */
-
- if (param_name)
- param_name[0] = 0; /* init to empty string */
-
-#ifdef XP_UNIX
- if (!cf->servuser)
- getSuiteSpotUserGroup(cf);
-#else
- /* Abort if the service exists on NT */
- if (t = service_exists(cf->servid)) {
- PL_strncpyz(param_name, "servid", BIG_LINE);
- return t;
- }
-#endif
-
- if( (t = sanity_check(cf, param_name)) )
- return t;
-
- /* Create slapd-nickname directory (instance directory) */
- if( (create_instance_mkdir_p("inst dir", cf->inst_dir, NEWDIR_MODE, pw)) )
- return make_error("make inst dir %s failed (%s)",
- cf->inst_dir, ds_system_errmsg());
-
- /* Create config directory */
- if( (create_instance_mkdir_p("config dir", cf->config_dir, NEWDIR_MODE, pw)) )
- return make_error("make config dir %s failed (%s)",
- cf->config_dir, ds_system_errmsg());
-
- /* Create config_dir/schema directory */
- if( (create_instance_mkdir_p("schema dir", cf->schema_dir, NEWDIR_MODE, pw)) )
- return make_error("make schema dir %s failed (%s)",
- cf->schema_dir, ds_system_errmsg());
-
-#if defined (BUILD_PRESENCE)
- /* Create config_dir/presence directory */
- PR_snprintf(line, sizeof(line), "%s%cpresence",
- cf->config_dir, FILE_PATHSEP);
- if( (create_instance_mkdir(line, NEWDIR_MODE)) )
- return make_error("mkdir %s failed (%s)", line, ds_system_errmsg());
-#endif
-
- /* Create log directory */
- if( (create_instance_mkdir_p("log dir", cf->log_dir, NEWSECDIR_MODE, pw)) )
- return make_error("make log dir %s failed (%s)",
- cf->log_dir, ds_system_errmsg());
-
- /* Create lock directory */
- if( (create_instance_mkdir_p("lock dir", cf->lock_dir, NEWSECDIR_MODE, pw)) )
- return make_error("make lock dir %s failed (%s)",
- cf->lock_dir, ds_system_errmsg());
-
- /* Create run directory */
- if( (create_instance_mkdir_p("run dir", cf->run_dir, NEWSECDIR_MODE, pw)) )
- return make_error("make run dir %s failed (%s)",
- cf->run_dir, ds_system_errmsg());
-
- /* Create tmp directory */
- if( (create_instance_mkdir_p("tmp dir", cf->tmp_dir, NEWSECDIR_MODE, pw)) )
- return make_error("make tmp dir %s failed (%s)",
- cf->tmp_dir, ds_system_errmsg());
-
- /* Create cert directory */
- if( (create_instance_mkdir_p("cert dir", cf->cert_dir, NEWSECDIR_MODE, pw)) )
- return make_error("make cert dir %s failed (%s)",
- cf->cert_dir, ds_system_errmsg());
- t = create_scripts(cf, param_name);
- if(t) return t;
-
-#ifdef XP_WIN32
- if ( INFO_GetOperatingSystem () == OS_WINNT ) {
-
- if( (t = add_ntservice(cf)) )
- return t;
- }
-#endif
-
- /* Create subdirectories and config files for directory server */
- if( (t = install_ds(sroot, cf, param_name)) )
- return t;
-
- /* XXXrobm using link to start script instead of automatically doing it */
- return NULL;
-}
-
-/* ------------------------- Copied from libadmin ------------------------- */
-
-/*
- These replace the versions in libadmin to allow error returns.
-
- XXXrobm because libadmin calls itself a lot, I'm replacing ALL the
- functions this file requires
- */
-
-
-/*
- * input:
- * fn: file/dir name
- * type:
- * if you don't care of the file type, 0
- * if file, PR_FILE_FILE
- * if directory, PR_FILE_DIRECTORY
- * else, PR_FILE_OTHER
- *
- * return value:
- * 0: does not exist
- * 1: exists
- * -1: exists, but unexpected type
- */
-int
-create_instance_exists(char *fn, int type)
-{
- PRFileInfo finfo;
-
- if(PR_GetFileInfo(fn, &finfo) == PR_FAILURE)
- return 0; /* does not exist */
- else {
- if (type > 0) {
- if (type == finfo.type) {
- return 1;
- } else {
- return -1;
- }
- } else {
- return 1;
- }
- }
-}
-
-
-int
-create_instance_mkdir(char *dir, int mode)
-{
- int rv = 0;
- if (NULL == dir)
- return -1;
- rv = create_instance_exists(dir, PR_FILE_DIRECTORY);
- if (rv < 0) { /* not a directory */
- PR_Delete(dir);
- rv = 0;
- }
- if(0 == rv) { /* dir does not exist */
-#ifdef XP_UNIX
- if(mkdir(dir, mode) == -1)
-#else /* XP_WIN32 */
- if(!CreateDirectory(dir, NULL))
-#endif /* XP_WIN32 */
- return -1;
- }
- return 0;
-}
-
-
-char *create_instance_mkdir_p(char *str, char *dir, int mode, struct passwd *pw)
-{
- static char errmsg[ERR_SIZE];
- struct stat fi;
- char *t;
-
- if (NULL == dir) {
- PR_snprintf(errmsg, sizeof(errmsg), "NULL is passed to make \"%s\"",
- str?str:"unknown");
- return errmsg;
- }
-
-#ifdef XP_UNIX
- t = dir + 1;
-#else /* XP_WIN32 */
- t = dir + 3;
-#endif /* XP_WIN32 */
-
- while(1) {
- t = strchr(t, FILE_PATHSEP);
-
- if(t) *t = '\0';
- if(stat(dir, &fi) == -1) {
- if(create_instance_mkdir(dir, mode) == -1) {
- PR_snprintf(errmsg, sizeof(errmsg), "mkdir %s for \"%s\" failed (%s)", dir, str, ds_system_errmsg());
- return errmsg;
- }
- if (pw)
- chownfile(pw, dir);
- }
- if(t)
- {
- *t = FILE_PATHSEP;
- LDAP_UTF8INC(t);
- }
- else break;
- }
- return NULL;
-}
-
-
-int create_instance_numbers(char *target)
-{
- char *p;
- for(p=target; *p; LDAP_UTF8INC(p) )
- {
- if(!ldap_utf8isdigit(p))
- return 0;
- }
- return 1;
-}
-
-static char *create_instance_strdup(const char *s)
-{
- char *result = NULL;
- if (s) {
- result = PL_strdup(s);
- }
-
- return result;
-}
-
-#if defined( SOLARIS )
-/*
- * Solaris 9+ specific installation
- */
-int create_instance_symlink(char *actualpath, char *sympath)
-{
- if(symlink(actualpath, sympath) == -1)
- return -1;
- return 0;
-}
-#endif /* SOLARIS */
-
-
-/* --------------------------------- try* --------------------------------- */
-
-
-/* robm This doesn't use net_ abstractions because they drag in SSL */
-int trybind(char *addr, int port)
-{
- int sd;
- struct sockaddr_in sa_server;
- int ret;
-
-#ifdef XP_WIN32
- WSADATA wsd;
-
- if(WSAStartup(MAKEWORD(1, 1), &wsd) != 0)
- return -1;
-#endif
-
- if ((sd = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP)) == -1)
- goto you_lose;
-
- if (addr == NULL)
- addr = "127.0.0.1"; /* use the local loopback address */
-
- memset((char *) &sa_server, 0, sizeof(sa_server));
- sa_server.sin_family=AF_INET;
- sa_server.sin_addr.s_addr = inet_addr(addr);
- sa_server.sin_port=htons((short)port);
- ret = connect(sd, (struct sockaddr *) &sa_server,sizeof(sa_server));
- if (ret == -1)
- ret = 0; /* could not connect, so port is not in use; that's good */
- else
- {
- ret = -1; /* connection succeeded, port in use, bad */
- errno = EADDRINUSE;
- }
-#ifdef XP_UNIX
- close(sd);
-#else
- closesocket(sd);
- WSACleanup();
-#endif
- return ret;
-
-you_lose:
-#ifdef XP_WIN32
- WSACleanup();
-#endif
- return -1;
-}
-
-
-#ifdef XP_UNIX
-#include <pwd.h>
-#include <fcntl.h>
-
-int tryuser(char *user)
-{
- struct passwd *pw;
- char fn[128];
- int fd, ret;
-
- setpwent();
- if(!(pw = getpwnam(user)))
- return -1;
-
- endpwent();
-
- if(geteuid())
- return 0;
-
- PR_snprintf(fn, sizeof(fn), "/tmp/trychown.%ld", (long)getpid());
- if( (fd = creat(fn, 0777)) == -1)
- return 0; /* Hmm. */
- ret = chown(fn, pw->pw_uid, pw->pw_gid);
- close(fd);
- unlink(fn);
- return (ret == -1 ? -2 : 0);
-}
-#endif /* XP_UNIX */
-
-
-/* --------------------------- create_instance_check* ---------------------------- */
-
-char *create_instance_checkports(server_config_s *cf)
-{
- /* allow port 0 if ldapifilepath is specified */
-#if defined(ENABLE_LDAPI)
- if (!cf->ldapifilepath || strcmp(cf->servport, "0")) {
-#endif
- return create_instance_checkport(cf->bindaddr, cf->servport);
-#if defined(ENABLE_LDAPI)
- }
-#endif
-
- return NULL;
-}
-
-
-char *create_instance_checkport(char *addr, char *sport)
-{
- int port;
-
- port = atoi(sport);
- if((port < 1) || (port > 65535)) {
- return ("Valid port numbers are between 1 and 65535");
- }
- if(trybind(addr, port) == -1) {
- if(errno == EADDRINUSE) {
- return make_error("Port %d is already in use", port);
- }
- /* XXXrobm if admin server not running as root, you lose. */
- else if(errno == EACCES) {
- return ("Ports below 1024 require super user access. "
- "You must run the installation as root to install "
- "on that port.");
- } else {
- ds_report_warning(DS_WARNING, "port", "That port is not available");
- }
- }
- return NULL;
-}
-
-#ifdef XP_UNIX
-char *create_instance_checkuser(char *user)
-{
- if (user && *user) switch(tryuser(user)) {
- case -1:
- return make_error ("Can't find a user named '%s'."
- "\nPlease select or create another user.",
- user);
- case -2:
- return make_error ("Can't change a file to be owned by %s."
- "\nPlease select or create another user.",
- user);
- }
- return NULL;
-}
-#endif
-
-
-/* --------------------------------- copy --------------------------------- */
-
-#define COPY_BUFFER_SIZE 4096
-
-#ifdef XP_UNIX
-
-
-char *create_instance_copy(char *sfile, char *dfile, int mode, int needbakup)
-{
- int sfd, dfd, len;
- struct stat fi;
-
- char copy_buffer[COPY_BUFFER_SIZE];
- unsigned long read_len;
-
-/* Make sure we're in the right umask */
- umask(022);
-
- if( (sfd = open(sfile, O_RDONLY)) == -1) {
- return make_error("Cannot open %s for reading (%s)", sfile,
- ds_system_errmsg());
- }
- if (stat(sfile, &fi) < 0) {
- return make_error("Cannot stat %s (%s)", sfile, ds_system_errmsg());
- }
- if(!(S_ISREG(fi.st_mode))) {
- close(sfd);
- return make_error("%s is not a regular file", sfile);
- }
- len = fi.st_size;
-
- if (needbakup) {
- if (0 == stat(dfile, &fi)) { /* file exists */
- if (S_ISREG(fi.st_mode) || S_ISDIR(fi.st_mode)) {
- char *bak_dfile = PR_smprintf("%s.bak", dfile);
- if (NULL != bak_dfile) {
- rename(dfile, bak_dfile); /* make a back up;
- ignore any errors */
- PR_smprintf_free(bak_dfile);
- }
- }
- }
- }
-
- if( (dfd = open(dfile, O_RDWR | O_CREAT | O_TRUNC, mode)) == -1)
- return make_error("Cannot open file %s for writing (%s)", dfile,
- ds_system_errmsg());
-
- while(len) {
- read_len = len>COPY_BUFFER_SIZE?COPY_BUFFER_SIZE:len;
-
- if ( (read_len = read(sfd, copy_buffer, read_len) ) == -1 ) {
- close(sfd); close(dfd);
- return make_error("Cannot read from file %s (%s)",
- sfile, ds_system_errmsg());
- }
-
- if ( write(dfd, copy_buffer, read_len) != read_len ) {
- close(sfd); close(dfd);
- return make_error("Error writing to file %s from copy of %s (%s)",
- dfile, sfile, ds_system_errmsg());
- }
-
- len -= read_len;
- }
- close(sfd);
- close(dfd);
- /* BERT! */
- return NULL;
-}
-
-#else /* XP_WIN32 */
-char *create_instance_copy(char *sfile, char *dfile, int mode, int bakup)
-{
- HANDLE sfd, dfd, MapHandle;
- PCHAR fp;
- PCHAR fpBase;
- DWORD BytesWritten = 0;
- DWORD len;
-
- if( (sfd = CreateFile(sfile, GENERIC_READ,
- FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
- OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL))
- == INVALID_HANDLE_VALUE) {
- return make_error("Cannot open file %s for reading (%s)", sfile,
- ds_system_errmsg());
- }
- len = GetFileSize(sfd, NULL);
- if( (MapHandle = CreateFileMapping(sfd, NULL, PAGE_READONLY,
- 0, 0, NULL)) == NULL) {
- return make_error("Cannot create file mapping of %s (%s)", sfile,
- ds_system_errmsg());
- }
- if (!(fpBase = fp = MapViewOfFile(MapHandle, FILE_MAP_READ, 0, 0, 0))) {
- return make_error("Cannot map file %s (%s)", sfile, ds_system_errmsg());
- }
- if( (dfd = CreateFile(dfile, GENERIC_READ | GENERIC_WRITE,
- FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,OPEN_ALWAYS,
- FILE_ATTRIBUTE_NORMAL, NULL)) == INVALID_HANDLE_VALUE) {
- return make_error("Cannot open destination file %s for writing (%s)",
- dfile, ds_system_errmsg());
- }
- while ( len) {
- if(!WriteFile(dfd, fp, len, &BytesWritten, NULL)) {
- return ("Cannot write new file %s (%s)", dfile, ds_system_errmsg());
- }
- len -= BytesWritten;
- fp += BytesWritten;
- }
- CloseHandle(sfd);
- UnmapViewOfFile(fpBase);
- CloseHandle(MapHandle);
- FlushFileBuffers(dfd);
- CloseHandle(dfd);
- /* BERT! */
- return NULL;
-}
-#endif
-
-static int
-file_is_type_x(const char *dirname, const char *filename, PRFileType x)
-{
- struct PRFileInfo inf;
- int status = 0;
- char *fullpath = PR_smprintf("%s/%s", dirname, filename);
- if (PR_SUCCESS == PR_GetFileInfo(fullpath, &inf) &&
- inf.type == x)
- status = 1;
-
- PR_smprintf_free(fullpath);
-
- return status;
-}
-
-/* return true if the given path and file corresponds to a directory */
-static int
-is_a_dir(const char *dirname, const char *filename)
-{
- return file_is_type_x(dirname, filename, PR_FILE_DIRECTORY);
-}
-
-static char *
-ds_copy_group_files_using_mode_owner(char *src_dir, char *dest_dir,
- char *filter, int use_mode, struct passwd *pw)
-{
- char *t = 0;
- PRDir *ds = 0;
- PRDirEntry *d = 0;
- char src_file[PATH_SIZE], dest_file[PATH_SIZE], fullname[PATH_SIZE];
-
- if(!(ds = PR_OpenDir(src_dir))) {
- return make_error("Can't read directory %s (%s)", src_dir, ds_system_errmsg());
- }
- while( (d = PR_ReadDir(ds, 0)) ) {
- if(d->name[0] != '.') {
- if(!filter || strstr(d->name, filter)) {
- PR_snprintf(fullname, sizeof(fullname), "%s/%s", src_dir, d->name);
- if(PR_SUCCESS != PR_Access(fullname, PR_ACCESS_EXISTS))
- continue;
- PR_snprintf(src_file, sizeof(src_file), "%s%c%s", src_dir, FILE_PATHSEP, d->name);
- PR_snprintf(dest_file, sizeof(dest_file), "%s%c%s", dest_dir, FILE_PATHSEP, d->name);
- if(is_a_dir(src_dir, d->name)) {
- char *sub_src_dir = strdup(src_file);
- char *sub_dest_dir = strdup(dest_file);
- if( (t = create_instance_mkdir_p(sub_dest_dir, sub_dest_dir, NEWDIR_MODE, pw)) )
- return(t);
- if( (t = ds_copy_group_files_using_mode_owner(sub_src_dir, sub_dest_dir, filter, use_mode, pw)) )
- return t;
- free(sub_src_dir);
- free(sub_dest_dir);
- }
- else {
- if( (t = create_instance_copy(src_file, dest_file, use_mode, 0 )) )
- return t;
- if (pw)
- chownfile(pw, dest_file);
- }
- }
- }
- }
- PR_CloseDir(ds);
- return(NULL);
-}
-
-static char *
-ds_copy_group_files_using_mode(char *src_dir, char *dest_dir,
- char *filter, int use_mode)
-{
- return ds_copy_group_files_using_mode_owner(src_dir, dest_dir, filter, use_mode, NULL);
-}
-
-static char *
-ds_copy_group_files(char *src_dir, char *dest_dir, char *filter)
-{
- return ds_copy_group_files_using_mode(src_dir, dest_dir, filter,
- NEWFILE_MODE);
-}
-
-/* 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 based on libldap/tmplout.c:strcat_escaped */
-void fputs_escaped(char *s, FILE *fp)
-{
- char *hexdig = "0123456789ABCDEF";
- register unsigned char c;
- for ( ; (c = *(unsigned char*)s); ++s ) {
- if ( HREF_CHAR_ACCEPTABLE( c )) {
- putc( c, fp );
- } else {
- fprintf( fp, "%%%c%c", hexdig[ (c >> 4) & 0x0F ], hexdig[ c & 0x0F ] );
- }
- }
-}
-
-/* ------------- Create config files for Directory Server -------------- */
-
-static char *
-ds_cre_subdirs(server_config_s *cf, struct passwd* pw)
-{
- char subdir[PATH_SIZE], *t = NULL;
-
- /* create db dir */
- if( (t = create_instance_mkdir_p("db dir", cf->db_dir, NEWDIR_MODE, pw)) )
- return(t);
-
- /* create ldif dir */
- if( (t = create_instance_mkdir_p("ldif dir", cf->ldif_dir, NEWDIR_MODE, pw)) )
- return(t);
-
-#ifdef DSML
- /* create subdir <a_server>/dsml */
- PR_snprintf(subdir, sizeof(subdir), "%s%cdsml", cs_path, FILE_PATHSEP);
- if( (t = create_instance_mkdir_p("dsml dir", subdir, NEWDIR_MODE, pw)) )
- return(t);
-#endif
- /* create bak dir */
- if( (t = create_instance_mkdir_p("backup dir", cf->bak_dir, NEWDIR_MODE, pw)) )
- return(t);
-
- /* Create slapd-nickname/confbak directory */
- PR_snprintf(subdir, sizeof(subdir), "%s%cconfbak", cf->config_dir, FILE_PATHSEP);
- if( (t=create_instance_mkdir_p("config bak dir", subdir, NEWDIR_MODE, pw)) )
- return(t);
-
-#ifdef DSGW
- /* create subdir <server_root>/dsgw/context */
- PR_snprintf(subdir, sizeof(subdir), "%s%cclients", sroot, FILE_PATHSEP);
- if (is_a_dir(subdir, "dsgw")) { /* only create dsgw stuff if we are installing it */
- PR_snprintf(subdir, sizeof(subdir), "%s%cclients%cdsgw%ccontext", sroot, FILE_PATHSEP,FILE_PATHSEP,FILE_PATHSEP);
- if( (t = create_instance_mkdir_p("dsgw context dir", subdir, NEWDIR_MODE, pw)) )
- return(t);
- }
-
- /* create subdir <prefix>/bin/slapd/authck */
- /* dsgw cookie dir */
- PR_snprintf(subdir, sizeof(subdir), "%s%cbin%cslapd%cauthck",
- cf->prefix, FILE_PATHSEP, FILE_PATHSEP, FILE_PATHSEP);
- if( (t = create_instance_mkdir_p("authck dir", subdir, NEWDIR_MODE, pw)) )
- return(t);
-#endif
-
- return (t);
-}
-
-#define CREATE_LDIF2DB() \
- gen_script_auto(mysroot, mycs_path, "ldif2db.pl", cf)
-
-#define CREATE_DB2INDEX() \
- gen_script_auto(mysroot, mycs_path, "db2index.pl", cf)
-
-#define CREATE_DB2LDIF() \
- gen_script_auto(mysroot, mycs_path, "db2ldif.pl", cf)
-
-#define CREATE_DB2BAK() \
- gen_script_auto(mysroot, mycs_path, "db2bak.pl", cf)
-
-#define CREATE_BAK2DB() \
- gen_script_auto(mysroot, mycs_path, "bak2db.pl", cf)
-
-#define CREATE_VERIFYDB() \
- gen_script_auto(mysroot, mycs_path, "verify-db.pl", cf)
-
-/* tentatively moved to mycs_path */
-#ifdef MOVE_TO_ADMIN_SERVER
-#define CREATE_REPL_MONITOR_CGI() \
- gen_script_auto(mysroot, mycs_path, "repl-monitor-cgi.pl", cf)
-#endif
-
-#define CREATE_ACCOUNT_INACT(_commandName) \
- gen_script_auto(mysroot, cs_path, _commandName, cf)
-
-#define CREATE_MIGRATE5TO7() \
- gen_script_auto(mysroot, mycs_path, "migrate5to7", cf)
-
-#define CREATE_MIGRATE6TO7() \
- gen_script_auto(mysroot, mycs_path, "migrate6to7", cf)
-
-#define CREATE_MIGRATEINSTANCE7() \
- gen_script_auto(mysroot, mycs_path, "migrateInstance7", cf)
-
-#define CREATE_MIGRATETO7() \
- gen_script_auto(mysroot, mycs_path, "migrateTo7", cf)
-
-#define CREATE_NEWPWPOLICY() \
- gen_script_auto(mysroot, mycs_path, "ns-newpwpolicy.pl", cf)
-
-#define CREATE_BAK2DB_SH() \
- gen_script_auto(mysroot, mycs_path, "bak2db", cf)
-
-#define CREATE_DB2BAK_SH() \
- gen_script_auto(mysroot, mycs_path, "db2bak", cf)
-
-#define CREATE_DB2INDEX_SH() \
- gen_script_auto(mysroot, mycs_path, "db2index", cf)
-
-#define CREATE_DB2LDIF_SH() \
- gen_script_auto(mysroot, mycs_path, "db2ldif", cf)
-
-#define CREATE_LDIF2DB_SH() \
- gen_script_auto(mysroot, mycs_path, "ldif2db", cf)
-
-#define CREATE_LDIF2LDAP_SH() \
- gen_script_auto(mysroot, mycs_path, "ldif2ldap", cf)
-
-#define CREATE_MONITOR_SH() \
- gen_script_auto(mysroot, mycs_path, "monitor", cf)
-
-#define CREATE_RESTORECONFIG_SH() \
- gen_script_auto(mysroot, mycs_path, "restoreconfig", cf)
-
-#define CREATE_SAVECONFIG_SH() \
- gen_script_auto(mysroot, mycs_path, "saveconfig", cf)
-
-#define CREATE_START_SLAPD_SH() \
- gen_script_auto(mysroot, mycs_path, "start-slapd", cf)
-
-#define CREATE_STOP_SLAPD_SH() \
- gen_script_auto(mysroot, mycs_path, "stop-slapd", cf)
-
-#define CREATE_SUFFIX2INSTANCE_SH() \
- gen_script_auto(mysroot, mycs_path, "suffix2instance", cf)
-
-#define CREATE_VLVINDEX_SH() \
- gen_script_auto(mysroot, mycs_path, "vlvindex", cf)
-
-#ifdef XP_UNIX
-char *ds_gen_scripts(char *sroot, server_config_s *cf, char *cs_path)
-{
- char *t = NULL;
- char *server = sroot;
- char *admin = sroot;
- char *tools = cf->bindir;
- char *cl_scripts[7] = {"dsstop", "dsstart", "dsrestart", "dsrestore", "dsbackup", "dsimport", "dsexport"};
- char *cl_javafiles[7] = {"DSStop", "DSStart", "DSRestart", "DSRestore", "DSBackup", "DSImport", "DSExport"};
- int cls = 0; /*Index into commandline script names and java names - RJP*/
- char *mysroot, *mycs_path;
-
-#if defined( SOLARIS )
- /*
- * Solaris 9+ specific installation
- */
- char fn[PATH_SIZE];
-#endif /* SOLARIS */
-
- mysroot = sroot;
- mycs_path = cs_path;
-
- t = CREATE_LDIF2DB();
- if(t) return t;
-
- t = CREATE_DB2INDEX();
- if(t) return t;
-
- t = CREATE_MIGRATE5TO7();
- if(t) return t;
-
- t = CREATE_MIGRATE6TO7();
- if(t) return t;
-
- t = CREATE_MIGRATEINSTANCE7();
- if(t) return t;
-
- t = CREATE_MIGRATETO7();
- if(t) return t;
-
- t = CREATE_BAK2DB_SH();
- if(t) return t;
-
- t = CREATE_DB2BAK_SH();
- if(t) return t;
-
- t = CREATE_DB2INDEX_SH();
- if(t) return t;
-
- t = CREATE_DB2LDIF_SH();
- if(t) return t;
-
- t = CREATE_LDIF2DB_SH();
- if(t) return t;
-
- t = CREATE_LDIF2LDAP_SH();
- if(t) return t;
-
- t = CREATE_MONITOR_SH();
- if(t) return t;
-
- t = CREATE_RESTORECONFIG_SH();
- if(t) return t;
-
- t = CREATE_SAVECONFIG_SH();
- if(t) return t;
-
- t = CREATE_START_SLAPD_SH();
- if(t) return t;
-
- t = CREATE_STOP_SLAPD_SH();
- if(t) return t;
-
- t = CREATE_SUFFIX2INSTANCE_SH();
- if(t) return t;
-
- t = CREATE_VLVINDEX_SH();
- if(t) return t;
-
- t = gen_script(cs_path, "getpwenc",
- "cd %s\n"
- "PATH=%s:$PATH;export PATH\n"
- "if [ $# -lt 2 ]\n"
- "then\n"
- "\techo \"Usage: getpwenc scheme passwd\"\n"
- "\texit 1\n"
- "fi\n\n"
- "pwdhash -D %s -H -s \"$@\"\n",
- server, cf->config_dir, cs_path);
- if(t) return t;
-
- t = CREATE_DB2LDIF();
- if(t) return t;
-
- t = CREATE_DB2BAK();
- if(t) return t;
-
- t = CREATE_BAK2DB();
- if(t) return t;
-
- t = CREATE_VERIFYDB();
- if(t) return t;
-
-#ifdef MOVE_TO_ADMIN_SERVER
- t = CREATE_REPL_MONITOR_CGI();
- if(t) return t;
-#endif
-
- t = CREATE_ACCOUNT_INACT("ns-inactivate.pl");
- if(t) return t;
-
- t = CREATE_ACCOUNT_INACT("ns-activate.pl");
- if(t) return t;
-
- t = CREATE_ACCOUNT_INACT("ns-accountstatus.pl");
- if(t) return t;
-
- t = CREATE_NEWPWPOLICY();
- if(t) return t;
-
- return (t);
-}
-#else
-/* Windows; haven't updated */
-char *ds_gen_scripts(char *sroot, server_config_s *cf, char *cs_path)
-{
- char *t = NULL;
- char server[PATH_SIZE], admin[PATH_SIZE], tools[PATH_SIZE];
- char cgics_path[PATH_SIZE];
- char *cl_scripts[7] = {"dsstop.bat", "dsstart.bat", "dsrestart.bat", "dsrestore.bat", "dsbackup.bat", "dsimport.bat", "dsexport.bat"};
- char *cl_javafiles[7] = {"DSStop", "DSStart", "DSRestart", "DSRestore", "DSBackup", "DSImport", "DSExport"};
- int cls = 0; /*Index into commandline script names and java names - RJP*/
- char *mysroot, *mycs_path;
-
- {
- char *p, *q;
- int n;
-
- for (n = 0, p = sroot; p = strchr(p, '/'); n++, p++) ;
- for (p = sroot; p = strchr(p, '\\'); n++, p++) ;
- mysroot = (char *)malloc(strlen(sroot) + n + 1);
- for (p = sroot, q = mysroot; *p; p++, q++) {
- if ('/' == *p || '\\' == *p) {
- *q++ = '\\';
- *q = '\\';
- } else
- *q = *p;
- }
- *q = '\0';
-
- for (n = 0, p = cs_path; p = strchr(p, '/'); n++, p++) ;
- for (p = cs_path; p = strchr(p, '\\'); n++, p++) ;
- mycs_path = (char *)malloc(strlen(cs_path) + n + 1);
- for (p = cs_path, q = mycs_path; *p; p++, q++) {
- if ('/' == *p || '\\' == *p) {
- *q++ = '\\';
- *q = '\\';
- } else
- *q = *p;
- }
- *q = '\0';
- }
-
- PR_snprintf(server, sizeof(server), "%s/bin/"PRODUCT_NAME"/server", cf->prefix);
- PR_snprintf(admin, sizeof(admin), "%s/bin/"PRODUCT_NAME"/admin/bin", cf->prefix);
- PR_snprintf(tools, sizeof(tools), "%s/shared/bin", sroot);
- PR_snprintf(cgics_path, sizeof(cgics_path), "%s/bin/admin/admin/bin", cf->prefix);
-
- ds_unixtodospath( cs_path );
- ds_unixtodospath( server );
- ds_unixtodospath( admin );
- ds_unixtodospath( sroot );
- ds_unixtodospath( tools );
- ds_unixtodospath( cgics_path );
-
- t = gen_script(cs_path, "monitor.bat",
- "@echo off\n"
- "setlocal\n"
- "set rc=0\n"
- "if %%1.==. goto noparam\n"
- "\"%s\\ldapsearch\" -p %s -b %%1 "
- "-s base \"objectClass=*\"\n"
- "set rc=%%errorlevel%%\n"
- "goto proceed\n"
- ":noparam\n"
- "\"%s\\ldapsearch\" -p %s -b \"cn=monitor\" "
- "-s base \"objectClass=*\"\n"
- "set rc=%%errorlevel%%\n"
- ":proceed\n"
- "if defined MKSARGS exit %%rc%%\n"
- "exit /b %%rc%%\n",
- tools, cf->servport, tools, cf->servport);
- if(t) return t;
-
- t = gen_script(cs_path, "saveconfig.bat",
- "@echo off\n"
- "setlocal\n"
- "set rc=0\n"
- "PATH=\"%s\";%%PATH%%\n"
- "namegen\n"
- "call bstart\n"
- "set config_ldif=%s\\confbak\\%%DATESTR%%.ldif\n"
- "call bend\n"
- "del bend.bat\n"
- "slapd db2ldif -s \"%s\" -a \"%%config_ldif%%\" -N"
- " -D \"%s\" -n NetscapeRoot 2>&1\n"
- "set rc=%%errorlevel%%\n"
- "if %%rc%%==0 goto done\n"
- "echo Error occurred while saving configuration\n"
- ":done\n"
- "if defined MKSARGS exit %%rc%%\n"
- "exit /b %%rc%%\n",
- server, cs_path, cf->netscaperoot, cs_path);
- if(t) return t;
-
- t = gen_script(cs_path, "restoreconfig.bat",
- "@echo off\n"
- "setlocal\n"
- "set rc=0\n"
- "PATH=\"%s\";%%PATH%%\n"
- "set latestscript=%s\\latest_config.bat\n"
- "if EXIST \"%%latestscript%%\" del \"%%latestscript%%\"\n"
- "latest_file \"%s\\confbak\\*.ldif\" \"%%latestscript%%\"\n"
- "if not EXIST \"%%latestscript%%\" goto noconfig\n"
- "call \"%%latestscript%%\"\n"
- "del \"%%latestscript%%\"\n"
- "slapd ldif2db -D \"%s\" -i \"%%LATEST_FILE%%\""
- " -n NetscapeRoot 2>&1\n"
- "set rc=%%errorlevel%%\n"
- "if %%rc%%==0 goto done\n"
- "echo Error occurred while saving configuration\n"
- "goto done\n"
- ":noconfig\n"
- "set rc=0\n" /* no error */
- "echo No configuration to restore in %s\\confbak\n"
- ":done\n"
- "if defined MKSARGS exit %%rc%%\n"
- "exit /b %%rc%%\n",
- server, cs_path, cs_path, cs_path, cs_path);
- if(t) return t;
-
- t = gen_script(cs_path, "ldif2db.bat",
- "@if not \"%%echo%%\" == \"on\" echo off\n"
- "setlocal\n"
- "set rc=0\n"
- "PATH=\"%s\";%%PATH%%\n\n"
- "set noconfig=0\n"
- "if [%%2] == [] goto incorrect\n"
- "if [%%3] == [] goto incorrect\n"
- "if [%%4] == [] goto incorrect\n\n"
- "set args=\n"
- ":getargs\n"
- "if [%%1] == [] goto import\n"
- "set args=%%args%% %%1\n"
- "shift\n"
- "goto getargs\n\n"
- ":incorrect\n"
- ":usage\n"
- "echo \"Usage: ldif2db -n backend_instance | {-s \"includesuffix\"}* "
- "{-i ldif-file}* [-O] [{-x \"excludesuffix\"}*]\"\n"
- "set rc=1\n"
- "goto done\n\n"
- ":import\n"
- "echo importing data ...\n"
- "slapd ldif2db -D \"%s\" %%args%% 2>&1\n\n"
- "set rc=%%errorlevel%%\n"
- ":done\n"
- "if defined MKSARGS exit %%rc%%\n"
- "exit /b %%rc%%\n",
- server, cs_path);
- if(t) return t;
-
- /* new code for dsml import */
- t = gen_script(cs_path, "dsml2db.bat",
- "@if not \"%%echo%%\" == \"on\" echo off\n"
- "setlocal\n"
- "set rc=0\n"
- "PATH=\"%s\";%%PATH%%\n\n"
- "set noconfig=0\n"
- "if [%%2] == [] goto incorrect\n"
- "if [%%3] == [] goto incorrect\n"
- "if [%%4] == [] goto incorrect\n\n"
- "set args=\n"
- "goto getargs\n"
- ":setdsml\n"
- "set dsmlfile=\n"
- "set dsmlfile=%%2\n"
- "shift\n"
- "shift\n"
- "goto getargs\n"
- ":getargs\n"
- "if [%%1] == [] goto import\n"
- "if [%%1] == [-i] goto setdsml\n"
- "set args=%%args%% %%1\n"
- "shift\n"
- "goto getargs\n\n"
- ":incorrect\n"
- ":usage\n"
- "echo \"Usage: dsml2db -n backend_instance | {-s \"includesuffix\"}* "
- "{-i dsml-file} [{-x \"excludesuffix\"}*]\"\n"
- "set rc=1\n"
- "goto done\n\n"
- ":import\n"
- "%s\\bin\\base\\jre\\bin\\java -Dverify=true -classpath \".;%s\\java\\ldapjdk.jar;%s\\java\\jars\\crimson.jar;%s\\java\\jars\\xmltools.jar\" com.netscape.xmltools.DSML2LDIF %%dsmlfile%%\n"
- "set rc=%%errorlevel%%\n"
- "if %%rc%%==0 goto realimport else goto done\n"
- ":realimport\n"
- "echo importing data ...\n"
- "%s\\bin\\base\\jre\\bin\\java -classpath \".;%s\\java\\ldapjdk.jar;%s\\java\\jars\\crimson.jar;%s\\java\\jars\\xmltools.jar\" com.netscape.xmltools.DSML2LDIF %%dsmlfile%% | slapd ldif2db -D \"%s\" -i - %%args%% 2>&1\n\n"
- "set rc=%%errorlevel%%\n"
- ":done\n"
- "if defined MKSARGS exit %%rc%%\n"
- "exit /b %%rc%%\n",
- server, sroot, sroot, sroot, sroot, sroot, sroot, sroot, sroot, cs_path);
- if(t) return t;
-
- t = gen_script(cs_path, "ldif2ldap.bat",
- "@echo off\n"
- "\"%s\\ldapmodify\" -a -p %s -D %%1 -w %%2 -f %%3\n",
- tools, cf->servport);
- if(t) return t;
-
- t = CREATE_LDIF2DB();
- if(t) return t;
-
- t = CREATE_DB2INDEX();
- if(t) return t;
-
- t = CREATE_MIGRATE5TO7();
- if(t) return t;
-
- t = CREATE_MIGRATE6TO7();
- if(t) return t;
-
- t = CREATE_MIGRATEINSTANCE7();
- if(t) return t;
-
- t = CREATE_MIGRATETO7();
- if(t) return t;
-
- t = gen_script(cs_path, "getpwenc.bat",
- "@echo off\n"
- "\"%s\\pwdhash\" -D \"%s\" -H -s %%1 %%2\n",
- server, cs_path);
- if(t) return t;
-
- t = gen_script(cs_path, "db2ldif.bat",
- "@if not \"%%echo%%\" == \"on\" echo off\n\n"
- "setlocal\n"
- "set rc=0\n"
- "PATH=\"%s\";%%PATH%%\n\n"
- "if [%%2] == [] goto err\n\n"
- "set arg=\n"
- "set ldif_file=\n\n"
- ":again\n"
- "if \"%%1\" == \"\" goto next\n"
- "if \"%%1\" == \"-n\" goto doubletag\n"
- "if \"%%1\" == \"-s\" goto doubletag\n"
- "if \"%%1\" == \"-x\" goto doubletag\n"
- "if \"%%1\" == \"-a\" goto setldif\n"
- "if \"%%1\" == \"-N\" goto singletag\n"
- "if \"%%1\" == \"-r\" goto singletag\n"
- "if \"%%1\" == \"-C\" goto singletag\n"
- "if \"%%1\" == \"-u\" goto singletag\n"
- "if \"%%1\" == \"-m\" goto singletag\n"
- "if \"%%1\" == \"-o\" goto singletag\n"
- "if \"%%1\" == \"-U\" goto singletag\n"
- "if \"%%1\" == \"-M\" goto singletag\n"
- "if \"%%1\" == \"-E\" goto singletag\n"
- "goto next\n\n"
- ":doubletag\n"
- "set arg=%%1 %%2 %%arg%%\n"
- "shift\n"
- "shift\n"
- "goto again\n\n"
- ":singletag\n"
- "set arg=%%1 %%arg%%\n"
- "shift\n"
- "goto again\n\n"
- ":setldif\n"
- "set ldif_file=%%2\n"
- "shift\n"
- "shift\n"
- "goto again\n\n"
- ":next\n"
- "if not \"%%ldif_file%%\" == \"\" goto givenldif\n\n"
- "namegen\n"
- "call bstart\n"
- "set ldif_file=\"%s\\ldif\\%%DATESTR%%.ldif\"\n"
- "call bend\n"
- "del bend.bat\n\n"
- ":givenldif\n"
- "\"%s\\slapd\" db2ldif -D \"%s\" -a %%ldif_file%% %%arg%%\n"
- "set rc=%%errorlevel%%\n"
- "goto done\n\n"
- ":err\n"
- "echo \"Usage: db2ldif -n backend_instance | "
- "{-s \"includesuffix\"}* [{-x \"excludesuffix\"}*] [-N] [-r] [-C] "
- "[-u] [-U] [-m] [-M] [-1] [-a outputfile]\"\n\n"
- "set rc=1\n"
- ":done\n"
- "if defined MKSARGS exit %%rc%%\n"
- "exit /b %%rc%%\n",
- server, cs_path, server, cs_path);
- if(t) return t;
-
- t = CREATE_DB2LDIF();
- if(t) return t;
-
- /* new code for dsml export */
- t = gen_script(cs_path, "db2dsml.bat",
- "@if not \"%%echo%%\" == \"on\" echo off\n\n"
- "setlocal\n"
- "set rc=0\n"
- "PATH=\"%s\";%%PATH%%\n\n"
- "if [%%2] == [] goto err\n\n"
- "set arg=\n"
- "set dsml_file=\n\n"
- ":again\n"
- "if \"%%1\" == \"\" goto next\n"
- "if \"%%1\" == \"-n\" goto doubletag\n"
- "if \"%%1\" == \"-s\" goto doubletag\n"
- "if \"%%1\" == \"-x\" goto doubletag\n"
- "if \"%%1\" == \"-a\" goto setdsml\n"
- "if \"%%1\" == \"-N\" goto singletag\n"
- "if \"%%1\" == \"-r\" goto singletag\n"
- "if \"%%1\" == \"-C\" goto singletag\n"
- "if \"%%1\" == \"-u\" goto singletag\n"
- "if \"%%1\" == \"-m\" goto singletag\n"
- "if \"%%1\" == \"-o\" goto singletag\n"
- "if \"%%1\" == \"-U\" goto singletag\n"
- "if \"%%1\" == \"-M\" goto singletag\n"
- "goto next\n\n"
- ":doubletag\n"
- "set arg=%%1 %%2 %%arg%%\n"
- "shift\n"
- "shift\n"
- "goto again\n\n"
- ":singletag\n"
- "set arg=%%1 %%arg%%\n"
- "shift\n"
- "goto again\n\n"
- ":setdsml\n"
- "set dsml_file=%%2\n"
- "shift\n"
- "shift\n"
- "goto again\n\n"
- ":next\n"
- "if not \"%%dsml_file%%\" == \"\" goto givendsml\n\n"
- "namegen\n"
- "call bstart\n"
- "set dsml_file=\"%s\\dsml\\%%DATESTR%%.dsml\"\n"
- "echo dsmlfile: %%dsml_file%%\n"
- "call bend\n"
- "del bend.bat\n\n"
- ":givendsml\n"
- "%s\\bin\\base\\jre\\bin\\java -Dverify=true -classpath \".;%s\\java\\ldapjdk.jar;%s\\java\\jars\\xmltools.jar\" com.netscape.xmltools.LDIF2DSML -s -o %%dsml_file%%\n"
- "set rc=%%errorlevel%%\n"
- "if %%rc%%==0 goto realimport else goto done\n\n"
- ":realimport\n"
- "\"%s\\slapd\" db2ldif -D \"%s\" -a - -1 %%arg%% | %s\\bin\\base\\jre\\bin\\java -classpath \".;%s\\java\\ldapjdk.jar;%s\\java\\jars\\xmltools.jar\" com.netscape.xmltools.LDIF2DSML -s -o %%dsml_file%%\n"
- "set rc=%%errorlevel%%\n"
- "goto done\n\n"
- ":err\n"
- "echo \"Usage: db2dsml -n backend_instance | "
- "{-s \"includesuffix\"}* [{-x \"excludesuffix\"}*]"
- "[-u] [-a outputfile]\"\n\n"
- "set rc=1\n"
- ":done\n"
- "if defined MKSARGS exit %%rc%%\n"
- "exit /b %%rc%%\n",
- server, cs_path, sroot, sroot, sroot, server, cs_path, sroot, sroot, sroot);
- if(t) return t;
-
- t = gen_script(cs_path, "db2bak.bat",
- "@echo off\n"
- "setlocal\n"
- "set rc=0\n"
- "PATH=\"%s\";%%PATH%%\n"
- "if %%1.==. goto nobak\n"
- "set bakdir=%%1\n"
- "goto backup\n"
- ":nobak\n"
- "namegen\n"
- "call bstart\n"
- "set bakdir=\"%s\\bak\\%%DATESTR%%\"\n"
- "call bend\n"
- "del bend.bat\n"
- ":backup\n"
- "\"%s\\slapd\" db2archive -D \"%s\" -a %%bakdir%% "
- "%%2 %%3 %%4 %%5 %%6 %%7 %%8\n"
- "set rc=%%errorlevel%%\n"
- ":done\n"
- "if defined MKSARGS exit %%rc%%\n"
- "exit /b %%rc%%\n",
- server, cs_path, server, cs_path);
- if(t) return t;
-
- t = CREATE_DB2BAK();
- if(t) return t;
-
- t = gen_script(cs_path, "db2index.bat",
- "@echo off\n"
- "setlocal\n"
- "set rc=0\n"
- "PATH=\"%s\";%%PATH%%\n"
- "if %%1.==. goto indexall\n\n"
- "if %%2.==. goto err\n"
- "if %%3.==. goto err\n\n"
- "set bakdir=%%1\n"
- "goto backup\n\n"
- ":indexall\n"
- "namegen\n"
- "call bstart\n"
- "set bakdir=\"%s\\bak\\%%DATESTR%%\"\n"
- "call bend\n"
- "del bend.bat\n"
- "\"%s\\slapd\" upgradedb -D \"%s\" -f -a %%bakdir%%\n"
- "set rc=%%errorlevel%%\n"
- "goto done\n\n"
- ":backup\n"
- "\"%s\\slapd\" db2index -D \"%s\" "
- "%%1 %%2 %%3 %%4 %%5 %%6 %%7 %%8\n"
- "set rc=%%errorlevel%%\n"
- "goto done\n\n"
- ":err\n"
- "echo \"Usage: db2index [-n backend_instance | {-s instancesuffix}* -t attribute[:indextypes[:matchingrules]] -T vlvattribute]\"\n\n"
- "set rc=1\n"
- ":done\n"
- "if defined MKSARGS exit %%rc%%\n"
- "exit /b %%rc%%\n",
- server, cs_path, server, cs_path, server, cs_path);
- if(t) return t;
-
- t = gen_script(cs_path, "vlvindex.bat",
- "@echo off\n"
- "setlocal\n"
- "set rc=0\n"
- "if [%%2] == [] goto usage\n"
- "if [%%3] == [] goto usage\n"
- "if [%%4] == [] goto usage\n\n"
- "\"%s\\slapd\" db2index -D \"%s\" \"%%@\"\n"
- "set rc=%%errorlevel%%\n"
- "goto done\n\n"
- ":usage\n"
- "echo \"Usage: vlvindex -n backend_instance | {-s includesuffix}* {-T attribute}\"\n\n"
- "set rc=1\n"
- ":done\n"
- "if defined MKSARGS exit %%rc%%\n"
- "exit /b %%rc%%\n",
- server, cs_path);
- if(t) return t;
-
- t = gen_script(cs_path, "bak2db.bat",
- "@echo off\n"
- "pushd & setlocal\n\n"
- "if [%%1] == [] (goto :usage)\n"
- "if not [%%4] == [] (goto :usage)\n\n"
- "set archivedir=%%1\n"
- "set rc=0\n\n"
- ":getopts\n"
- "shift\n"
- "if [%%1]==[] (goto :main)\n"
- "if [%%1]==[-n] (if not [%%2]==[] (set bename=%%2) else (goto :usage)) else (goto :getopts)\n\n"
- ":main\n"
- "call :relative %%archivedir%%\n"
- "if defined bename (\n"
- "\"%s\\slapd\" archive2db -D \"%s\" -a %%archivedir%% -n %%bename%%\n"
- ") else (\n"
- "\"%s\\slapd\" archive2db -D \"%s\" -a %%archivedir%%\n"
- ")\n"
- "set rc=%%ERRORLEVEL%%\n"
- "popd\n"
- "goto :done\n\n"
- "goto :EOF\n"
- ":usage\n"
- "echo %%0 archivedir [-n backendname]\n"
- "goto :done\n\n"
- "goto :EOF\n"
- ":relative\n"
- "set archivedir=%%~f1\n\n"
- "goto :EOF\n"
- ":done\n"
- "if defined MKSARGS exit %%rc%%\n"
- "exit /b %%rc%%\n",
- server, cs_path, server, cs_path);
- if(t) return t;
-
- t = gen_script(cs_path, "upgradedb.bat",
- "@echo off\n"
- "setlocal\n"
- "set rc=0\n"
- "PATH=\"%s\";%%PATH%%\n"
- "if %%1.==. goto nobak\n"
- "set bakdir=%%1\n"
- "goto backup\n"
- ":nobak\n"
- "namegen\n"
- "call bstart\n"
- "set bakdir=\"%s\\bak\\upgradedb_%%DATESTR%%\"\n"
- "call bend\n"
- "del bend.bat\n"
- ":backup\n"
- "\"%s\\slapd\" upgradedb -D \"%s\" -a %%bakdir%% "
- "%%2 %%3 %%4 %%5 %%6 %%7 %%8\n"
- "set rc=%%errorlevel%%\n"
- ":done\n"
- "if defined MKSARGS exit %%rc%%\n"
- "exit /b %%rc%%\n",
- server, cs_path, server, cs_path);
- if(t) return t;
-
- t = CREATE_BAK2DB();
- if(t) return t;
-
- t = CREATE_VERIFYDB();
- if(t) return t;
-
-#ifdef MOVE_TO_ADMIN_SERVER
- t = CREATE_REPL_MONITOR_CGI();
- if(t) return t;
-#endif
-
- t = gen_script(cs_path, "suffix2instance.bat",
- "@if not \"%%echo%%\" == \"on\" echo off\n\n"
- "setlocal\n"
- "set rc=0\n"
- "PATH=\"%s\";%%PATH%%\n\n"
- "if [%%2] == [] goto err\n\n"
- "set arg=\n\n"
- ":again\n"
- "if \"%%1\" == \"\" goto next\n"
- "if \"%%1\" == \"-s\" goto doubletag\n"
- "shift\n"
- "goto again\n\n"
- ":doubletag\n"
- "set arg=%%1 %%2 %%arg%%\n"
- "shift\n"
- "shift\n"
- "goto again\n\n"
- ":next\n"
- "\"%s\\slapd\" suffix2instance -D \"%s\" %%arg%%\n"
- "set rc=%%errorlevel%%\n"
- "goto done\n\n"
- ":err\n"
- "echo Usage: suffix2instance {-s \"suffix\"}*\n\n"
- "set rc=1\n"
- ":done\n"
- "if defined MKSARGS exit %%rc%%\n"
- "exit /b %%rc%%\n",
- server, server, cs_path);
- if(t) return t;
-
- t = CREATE_ACCOUNT_INACT("ns-inactivate.pl");
- if(t) return t;
-
- t = CREATE_ACCOUNT_INACT("ns-activate.pl");
- if(t) return t;
-
- t = CREATE_ACCOUNT_INACT("ns-accountstatus.pl");
- if(t) return t;
-
- t = gen_script(cs_path, "dsml-activate.bat",
- "@echo off\n"
- "setlocal\n"
- "PATH=%s\\bin\\slapd\\admin\\bin;%%PATH%%\n"
- "perl \"%s\\dsml-activate.pl\" %%*\n"
- "set rc=%%errorlevel%%\n"
- "if defined MKSARGS exit %%rc%%\n"
- "exit /b %%rc%%\n",
- cf->prefix, cs_path);
- if(t) return t;
-
-
-
- t = CREATE_NEWPWPOLICY();
- if(t) return t;
-
- t = gen_script(cs_path, "ns-newpwpolicy.cmd",
- "@echo off\n"
- "setlocal\n"
- "PATH=%s\\bin\\slapd\\admin\\bin;%%PATH%%\n"
- "perl \"%s\\ns-newpwpolicy.pl\" %%*\n"
- "set rc=%%errorlevel%%\n"
- "if defined MKSARGS exit %%rc%%\n"
- "exit /b %%rc%%\n",
- cf->prefix, cs_path);
- if(t) return t;
-
- free(mysroot);
- free(mycs_path);
-
- /*Generate the java commandline tools in bin/slapd/server*/
- for (cls = 0; cls < 7; cls++) {
- t = gen_script(server, cl_scripts[cls],
- "@echo off\npushd \"%s\"\n\n"
- "setlocal\n"
- "set LANG=en\n"
- "set arg=\n"
- "set rc=0\n"
- ":getarg\n"
- "if %%1.==. goto start\n"
- "if %%1==-l goto getlang\n"
- "set arg=%%arg%% %%1\n"
- "shift\n"
- "goto getarg\n"
- ":getlang\n"
- "shift\n"
- "set LANG=%%1\n"
- "shift\n"
- "goto getarg\n"
- ":start\n"
- ".\\bin\\base\\jre\\bin\\jre -classpath "
- ".;.\\java;.\\bin\\base\\jre\\lib;"
- ".\\bin\\base\\jre\\lib\\rt.jar;.\\bin\\base\\jre\\lib\\i18n.jar;"
- ".\\java\\base.jar;.\\java\\jars\\ds40.jar;.\\java\\jars\\ds40_%%LANG%%.jar;"
- ".\\java\\swingall.jar;.\\java\\ssl.zip;"
- ".\\java\\ldapjdk.jar;.\\java\\mcc40.jar;.\\java\\mcc40_%%LANG%%.jar;"
- ".\\java\\nmclf40.jar;.\\java\\nmclf40_%%LANG%%.jar "
- "com.netscape.admin.dirserv.cmdln.%s %%arg%%\n"
- "set rc=%%errorlevel%%\n"
- "popd\n"
- "if defined MKSARGS exit %%rc%%\n"
- "exit /b %%rc%%\n",
- sroot, cl_javafiles[cls]);
- if(t) return t;
- }
-
-
-
- return (t);
-}
-#endif
-
-
-void
-suffix_gen_conf(FILE* f, char * suffix, char *be_name)
-{
- char* belowdn;
-
- fprintf(f, "dn: cn=%s,cn=ldbm database,cn=plugins,cn=config\n", be_name);
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "objectclass: nsBackendInstance\n");
- fprintf(f, "nsslapd-cachesize: -1\n");
- fprintf(f, "nsslapd-cachememsize: 10485760\n");
- fprintf(f, "nsslapd-suffix: %s\n", suffix);
- fprintf(f, "cn: %s\n", be_name);
- fprintf(f, "\n");
-
- fprintf(f, "dn: cn=monitor,cn=%s,cn=ldbm database,cn=plugins,cn=config\n", be_name);
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: monitor\n");
- fprintf(f, "\n");
-
- fprintf(f, "dn: cn=\"%s\",cn=mapping tree,cn=config\n", suffix);
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "objectclass: nsMappingTree\n");
- fprintf(f, "cn: \"%s\"\n", suffix);
- fprintf(f, "nsslapd-state: backend\n");
- fprintf(f, "nsslapd-backend: %s\n", be_name);
- fprintf(f, "\n");
-
- /* Parent entry for attribute encryption config entries */
-
- fprintf(f, "dn: cn=encrypted attributes,cn=%s,cn=ldbm database,cn=plugins,cn=config\n", be_name);
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: encrypted attributes\n");
- fprintf(f, "\n");
-
- /* Parent entry for attribute encryption keys */
-
- fprintf(f, "dn: cn=encrypted attribute keys,cn=%s,cn=ldbm database,cn=plugins,cn=config\n", be_name);
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: encrypted attributes keys\n");
- fprintf(f, "\n");
-
- /* Indexes for the ldbm instance */
-
- fprintf(f, "dn: cn=index,cn=%s,cn=ldbm database,cn=plugins,cn=config\n", be_name);
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: index\n");
- fprintf(f, "\n");
-
- belowdn = PR_smprintf("cn=index,cn=%s,cn=ldbm database,cn=plugins,cn=config", be_name);
- ds_gen_index(f, belowdn);
- PR_smprintf_free(belowdn);
-
- /* done with ldbm entries */
-}
-
-#define MKSYNTAX(_name,_fn) do { \
- fprintf(f, "dn: cn=%s,cn=plugins,cn=config\n", (_name)); \
- fprintf(f, "objectclass: top\n"); \
- fprintf(f, "objectclass: nsSlapdPlugin\n"); \
- fprintf(f, "objectclass: extensibleObject\n"); \
- fprintf(f, "cn: %s\n",(_name)); \
- fprintf(f, "nsslapd-pluginpath: %s/libsyntax-plugin%s\n", cf->plugin_dir, shared_lib); \
- fprintf(f, "nsslapd-plugininitfunc: %s\n", (_fn)); \
- fprintf(f, "nsslapd-plugintype: syntax\n"); \
- fprintf(f, "nsslapd-pluginenabled: on\n"); \
- fprintf(f, "\n"); \
- } while (0)
-
-char *ds_gen_confs(char *sroot, server_config_s *cf, char *cs_path)
-{
- char* t = NULL;
- char src[PATH_SIZE], dest[PATH_SIZE];
- char fn[PATH_SIZE], line[1024];
- FILE *f = 0, *srcf = 0;
- int rootdse = 0;
- char *shared_lib;
- struct passwd *pw = getpwnam(cf->servuser);
- char *prefix = cf->prefix;
-
- PR_snprintf(fn, sizeof(fn), "%s%c%s",
- cf->config_dir, FILE_PATHSEP, DS_CONFIG_FILE);
- if(!(f = fopen(fn, "w")))
- return make_error("Can't write to %s (%s)",
- cf->config_dir, ds_system_errmsg());
-
-#if defined( XP_WIN32 )
- shared_lib = ".dll";
-#else
-#ifdef HPUX
-#ifdef __ia64
- shared_lib = ".so";
-#else
- shared_lib = ".sl";
-#endif
-#else
-#ifdef AIX
-#if OSVERSION >= 4200
- shared_lib = ".so";
-#else
- shared_lib = "_shr.a";
-#endif
-#else
- shared_lib = ".so";
-#endif
-#endif
-#endif
-
- fprintf(f, "dn: cn=config\n");
- fprintf(f, "cn: config\n");
- fprintf(f, "objectclass:top\n");
- fprintf(f, "objectclass:extensibleObject\n");
- fprintf(f, "objectclass:nsslapdConfig\n");
- fprintf(f, "nsslapd-schemadir: %s\n", cf->schema_dir);
- fprintf(f, "nsslapd-lockdir: %s\n", cf->lock_dir);
- fprintf(f, "nsslapd-tmpdir: %s\n", cf->tmp_dir);
- fprintf(f, "nsslapd-certdir: %s\n", cf->cert_dir);
- fprintf(f, "nsslapd-ldifdir: %s\n", cf->ldif_dir);
- fprintf(f, "nsslapd-instancedir: %s\n", cf->inst_dir);
- fprintf(f, "nsslapd-bakdir: %s\n", cf->bak_dir);
-/* We use the system SASL by default on Linux, so we don't need to set sasl path */
- if (NULL != cf->sasl_path) {
- fprintf(f, "nsslapd-saslpath: %s\n", cf->sasl_path);
- }
- fprintf(f, "nsslapd-accesslog-logging-enabled: on\n");
- fprintf(f, "nsslapd-accesslog-maxlogsperdir: 10\n");
- fprintf(f, "nsslapd-accesslog-mode: 600\n");
- fprintf(f, "nsslapd-accesslog-maxlogsize: 100\n");
- fprintf(f, "nsslapd-accesslog-logrotationtime: 1\n");
- fprintf(f, "nsslapd-accesslog-logrotationtimeunit: day\n");
- fprintf(f, "nsslapd-accesslog-logrotationsync-enabled: off\n");
- fprintf(f, "nsslapd-accesslog-logrotationsynchour: 0\n");
- fprintf(f, "nsslapd-accesslog-logrotationsyncmin: 0\n");
- fprintf(f, "nsslapd-accesslog: %s/access\n", cf->log_dir);
- fprintf(f, "nsslapd-enquote-sup-oc: off\n");
- fprintf(f, "nsslapd-localhost: %s\n", cf->servname);
- fprintf(f, "nsslapd-schemacheck: %s\n",
- (cf->disable_schema_checking && !strcmp(cf->disable_schema_checking, "1")) ? "off" : "on");
- fprintf(f, "nsslapd-rewrite-rfc1274: off\n");
- fprintf(f, "nsslapd-return-exact-case: on\n");
- fprintf(f, "nsslapd-ssl-check-hostname: on\n");
- fprintf(f, "nsslapd-port: %s\n", cf->servport);
-#if defined(ENABLE_LDAPI)
- if (cf->ldapifilepath) {
- fprintf(f, "nsslapd-ldapifilepath: %s\n", cf->ldapifilepath);
- fprintf(f, "nsslapd-ldapilisten: on\n");
- } else {
- fprintf(f, "nsslapd-ldapifilepath: %s/%s-%s.socket\n", cf->run_dir, PRODUCT_NAME, cf->servid);
- fprintf(f, "nsslapd-ldapilisten: off\n");
- }
-#if defined(ENABLE_AUTOBIND)
- fprintf(f, "nsslapd-ldapiautobind: on\n");
-#endif /* ENABLE_AUTOBIND */
- fprintf(f, "nsslapd-ldapimaprootdn: cn=Directory Manager\n");
- fprintf(f, "nsslapd-ldapimaptoentries: off\n");
- fprintf(f, "nsslapd-ldapiuidnumbertype: uidNumber\n");
- fprintf(f, "nsslapd-ldapigidnumbertype: gidNumber\n");
- fprintf(f, "nsslapd-ldapientrysearchbase: dc=example, dc=com\n");
- fprintf(f, "nsslapd-ldapiautodnsuffix: cn=peercred,cn=external,cn=auth\n");
-#endif /* ENABLE_LDAPI */
-
-#if !defined( XP_WIN32 )
- if (cf->servuser && *(cf->servuser)) {
- fprintf(f, "nsslapd-localuser: %s\n", cf->servuser);
- }
-#endif
- fprintf(f, "nsslapd-errorlog-logging-enabled: on\n");
- fprintf(f, "nsslapd-errorlog-mode: 600\n");
- fprintf(f, "nsslapd-errorlog-maxlogsperdir: 2\n");
- fprintf(f, "nsslapd-errorlog-maxlogsize: 100\n");
- fprintf(f, "nsslapd-errorlog-logrotationtime: 1\n");
- fprintf(f, "nsslapd-errorlog-logrotationtimeunit: week\n");
- fprintf(f, "nsslapd-errorlog-logrotationsync-enabled: off\n");
- fprintf(f, "nsslapd-errorlog-logrotationsynchour: 0\n");
- fprintf(f, "nsslapd-errorlog-logrotationsyncmin: 0\n");
- fprintf(f, "nsslapd-errorlog: %s/errors\n", cf->log_dir);
- if (cf->loglevel)
- fprintf(f, "nsslapd-errorlog-level: %s\n", cf->loglevel);
- fprintf(f, "nsslapd-auditlog: %s/audit\n", cf->log_dir);
- fprintf(f, "nsslapd-auditlog-mode: 600\n");
- fprintf(f, "nsslapd-auditlog-maxlogsize: 100\n");
- fprintf(f, "nsslapd-auditlog-logrotationtime: 1\n");
- fprintf(f, "nsslapd-auditlog-logrotationtimeunit: day\n");
- fprintf(f, "nsslapd-rootdn: %s\n", cf->rootdn);
-#if !defined(_WIN32) && !defined(AIX)
- {
- unsigned int maxdescriptors = FD_SETSIZE;
- struct rlimit rl;
- if (getrlimit(RLIMIT_NOFILE, &rl) == 0)
- maxdescriptors = (unsigned int)rl.rlim_max;
- fprintf(f, "nsslapd-maxdescriptors: %d\n", maxdescriptors);
- }
-#endif
- fprintf(f, "nsslapd-max-filter-nest-level: 40\n" );
- fprintf(f, "nsslapd-rootpw: %s\n", cf->roothashedpw);
- if (getenv("DEBUG_SINGLE_THREADED"))
- fprintf(f, "nsslapd-threadnumber: 1\n");
- fprintf(f, "\n");
-
- fprintf(f, "dn: cn=plugins, cn=config\nobjectclass: top\nobjectclass: nsContainer\ncn: plugins\n");
- fprintf(f, "\n");
-
- fprintf(f, "dn: cn=Password Storage Schemes,cn=plugins, cn=config\n");
- fprintf(f, "objectclass: top\nobjectclass: nsContainer\ncn: Password Storage Schemes\n");
- fprintf(f, "\n");
-
- fprintf(f, "dn: cn=SSHA,cn=Password Storage Schemes,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: nsSlapdPlugin\n");
- fprintf(f, "cn: SSHA\n");
- fprintf(f, "nsslapd-pluginpath: %s/libpwdstorage-plugin%s\n", cf->plugin_dir, shared_lib);
- fprintf(f, "nsslapd-plugininitfunc: ssha_pwd_storage_scheme_init\n");
- fprintf(f, "nsslapd-plugintype: pwdstoragescheme\n");
- fprintf(f, "nsslapd-pluginenabled: on\n");
- fprintf(f, "\n");
-
- fprintf(f, "dn: cn=SSHA256,cn=Password Storage Schemes,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: nsSlapdPlugin\n");
- fprintf(f, "cn: SSHA256\n");
- fprintf(f, "nsslapd-pluginpath: %s/libpwdstorage-plugin%s\n", cf->plugin_dir, shared_lib);
- fprintf(f, "nsslapd-plugininitfunc: ssha256_pwd_storage_scheme_init\n");
- fprintf(f, "nsslapd-plugintype: pwdstoragescheme\n");
- fprintf(f, "nsslapd-pluginenabled: on\n");
- fprintf(f, "\n");
-
- fprintf(f, "dn: cn=SSHA384,cn=Password Storage Schemes,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: nsSlapdPlugin\n");
- fprintf(f, "cn: SSHA384\n");
- fprintf(f, "nsslapd-pluginpath: %s/libpwdstorage-plugin%s\n", cf->plugin_dir, shared_lib);
- fprintf(f, "nsslapd-plugininitfunc: ssha384_pwd_storage_scheme_init\n");
- fprintf(f, "nsslapd-plugintype: pwdstoragescheme\n");
- fprintf(f, "nsslapd-pluginenabled: on\n");
- fprintf(f, "\n");
-
- fprintf(f, "dn: cn=SSHA512,cn=Password Storage Schemes,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: nsSlapdPlugin\n");
- fprintf(f, "cn: SSHA512\n");
- fprintf(f, "nsslapd-pluginpath: %s/libpwdstorage-plugin%s\n", cf->plugin_dir, shared_lib);
- fprintf(f, "nsslapd-plugininitfunc: ssha512_pwd_storage_scheme_init\n");
- fprintf(f, "nsslapd-plugintype: pwdstoragescheme\n");
- fprintf(f, "nsslapd-pluginenabled: on\n");
- fprintf(f, "\n");
-
- fprintf(f, "dn: cn=SHA,cn=Password Storage Schemes,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: nsSlapdPlugin\n");
- fprintf(f, "cn: SHA\n");
- fprintf(f, "nsslapd-pluginpath: %s/libpwdstorage-plugin%s\n", cf->plugin_dir, shared_lib);
- fprintf(f, "nsslapd-plugininitfunc: sha_pwd_storage_scheme_init\n");
- fprintf(f, "nsslapd-plugintype: pwdstoragescheme\n");
- fprintf(f, "nsslapd-pluginenabled: on\n");
- fprintf(f, "\n");
-
- fprintf(f, "dn: cn=SHA256,cn=Password Storage Schemes,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: nsSlapdPlugin\n");
- fprintf(f, "cn: SHA256\n");
- fprintf(f, "nsslapd-pluginpath: %s/libpwdstorage-plugin%s\n", cf->plugin_dir, shared_lib);
- fprintf(f, "nsslapd-plugininitfunc: sha256_pwd_storage_scheme_init\n");
- fprintf(f, "nsslapd-plugintype: pwdstoragescheme\n");
- fprintf(f, "nsslapd-pluginenabled: on\n");
- fprintf(f, "\n");
-
- fprintf(f, "dn: cn=SHA384,cn=Password Storage Schemes,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: nsSlapdPlugin\n");
- fprintf(f, "cn: SHA384\n");
- fprintf(f, "nsslapd-pluginpath: %s/libpwdstorage-plugin%s\n", cf->plugin_dir, shared_lib);
- fprintf(f, "nsslapd-plugininitfunc: sha384_pwd_storage_scheme_init\n");
- fprintf(f, "nsslapd-plugintype: pwdstoragescheme\n");
- fprintf(f, "nsslapd-pluginenabled: on\n");
- fprintf(f, "\n");
-
- fprintf(f, "dn: cn=SHA512,cn=Password Storage Schemes,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: nsSlapdPlugin\n");
- fprintf(f, "cn: SHA512\n");
- fprintf(f, "nsslapd-pluginpath: %s/libpwdstorage-plugin%s\n", cf->plugin_dir, shared_lib);
- fprintf(f, "nsslapd-plugininitfunc: sha512_pwd_storage_scheme_init\n");
- fprintf(f, "nsslapd-plugintype: pwdstoragescheme\n");
- fprintf(f, "nsslapd-pluginenabled: on\n");
- fprintf(f, "\n");
-
-#if !defined(_WIN32)
- fprintf(f, "dn: cn=CRYPT,cn=Password Storage Schemes,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: nsSlapdPlugin\n");
- fprintf(f, "cn: CRYPT\n");
- fprintf(f, "nsslapd-pluginpath: %s/libpwdstorage-plugin%s\n", cf->plugin_dir, shared_lib);
- fprintf(f, "nsslapd-plugininitfunc: crypt_pwd_storage_scheme_init\n");
- fprintf(f, "nsslapd-plugintype: pwdstoragescheme\n");
- fprintf(f, "nsslapd-pluginenabled: on\n");
- fprintf(f, "\n");
-#endif
-
- fprintf(f, "dn: cn=MD5,cn=Password Storage Schemes,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: nsSlapdPlugin\n");
- fprintf(f, "cn: MD5\n");
- fprintf(f, "nsslapd-pluginpath: %s/libpwdstorage-plugin%s\n", cf->plugin_dir, shared_lib);
- fprintf(f, "nsslapd-plugininitfunc: md5_pwd_storage_scheme_init\n");
- fprintf(f, "nsslapd-plugintype: pwdstoragescheme\n");
- fprintf(f, "nsslapd-pluginenabled: on\n");
- fprintf(f, "\n");
-
- fprintf(f, "dn: cn=CLEAR,cn=Password Storage Schemes,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: nsSlapdPlugin\n");
- fprintf(f, "cn: CLEAR\n");
- fprintf(f, "nsslapd-pluginpath: %s/libpwdstorage-plugin%s\n", cf->plugin_dir, shared_lib);
- fprintf(f, "nsslapd-plugininitfunc: clear_pwd_storage_scheme_init\n");
- fprintf(f, "nsslapd-plugintype: pwdstoragescheme\n");
- fprintf(f, "nsslapd-pluginenabled: on\n");
- fprintf(f, "\n");
-
- fprintf(f, "dn: cn=NS-MTA-MD5,cn=Password Storage Schemes,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: nsSlapdPlugin\n");
- fprintf(f, "cn: NS-MTA-MD5\n");
- fprintf(f, "nsslapd-pluginpath: %s/libpwdstorage-plugin%s\n", cf->plugin_dir, shared_lib);
- fprintf(f, "nsslapd-plugininitfunc: ns_mta_md5_pwd_storage_scheme_init\n");
- fprintf(f, "nsslapd-plugintype: pwdstoragescheme\n");
- fprintf(f, "nsslapd-pluginenabled: on\n");
- fprintf(f, "\n");
-
- fprintf(f, "dn: cn=DES,cn=Password Storage Schemes,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: nsSlapdPlugin\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: DES\n");
- fprintf(f, "nsslapd-pluginpath: %s/libdes-plugin%s\n", cf->plugin_dir, shared_lib);
- fprintf(f, "nsslapd-plugininitfunc: des_init\n");
- fprintf(f, "nsslapd-plugintype: reverpwdstoragescheme\n");
- fprintf(f, "nsslapd-pluginenabled: on\n");
- fprintf(f, "nsslapd-pluginarg0: nsmultiplexorcredentials\n");
- fprintf(f, "nsslapd-pluginarg1: nsds5ReplicaCredentials\n");
- fprintf(f, "nsslapd-pluginid: des-storage-scheme\n");
- fprintf(f, "\n");
-
- MKSYNTAX("Case Ignore String Syntax","cis_init");
- MKSYNTAX("Case Exact String Syntax","ces_init");
- MKSYNTAX("Space Insensitive String Syntax","sicis_init");
- MKSYNTAX("Binary Syntax","bin_init");
- MKSYNTAX("Octet String Syntax","octetstring_init");
- MKSYNTAX("Boolean Syntax","boolean_init");
- MKSYNTAX("Generalized Time Syntax","time_init");
- MKSYNTAX("Telephone Syntax","tel_init");
- MKSYNTAX("Integer Syntax","int_init");
- MKSYNTAX("Distinguished Name Syntax","dn_init");
- MKSYNTAX("OID Syntax","oid_init");
- MKSYNTAX("URI Syntax","uri_init");
- MKSYNTAX("JPEG Syntax","jpeg_init");
- MKSYNTAX("Country String Syntax","country_init");
- MKSYNTAX("Postal Address Syntax","postal_init");
-
- fprintf(f, "dn: cn=State Change Plugin,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: nsSlapdPlugin\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: State Change Plugin\n");
- fprintf(f, "nsslapd-pluginpath: %s/libstatechange-plugin%s\n", cf->plugin_dir, shared_lib);
- fprintf(f, "nsslapd-plugininitfunc: statechange_init\n");
- fprintf(f, "nsslapd-plugintype: postoperation\n");
- fprintf(f, "nsslapd-pluginenabled: on\n");
- fprintf(f, "\n");
-
- fprintf(f, "dn: cn=Roles Plugin,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: nsSlapdPlugin\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: Roles Plugin\n");
- fprintf(f, "nsslapd-pluginpath: %s/libroles-plugin%s\n", cf->plugin_dir, shared_lib);
- fprintf(f, "nsslapd-plugininitfunc: roles_init\n");
- fprintf(f, "nsslapd-plugintype: object\n");
- fprintf(f, "nsslapd-pluginenabled: on\n");
- fprintf(f, "nsslapd-plugin-depends-on-type: database\n");
- fprintf(f, "nsslapd-plugin-depends-on-named: State Change Plugin\n");
- fprintf(f, "nsslapd-plugin-depends-on-named: Views\n");
- fprintf(f, "\n");
-
- fprintf(f, "dn: cn=ACL Plugin,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: nsSlapdPlugin\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: ACL Plugin\n");
- fprintf(f, "nsslapd-pluginpath: %s/libacl-plugin%s\n", cf->plugin_dir, shared_lib);
- fprintf(f, "nsslapd-plugininitfunc: acl_init\n");
- fprintf(f, "nsslapd-plugintype: accesscontrol\n");
- fprintf(f, "nsslapd-pluginenabled: on\n");
- fprintf(f, "nsslapd-plugin-depends-on-type: database\n");
- fprintf(f, "\n");
-
- fprintf(f, "dn: cn=ACL preoperation,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: nsSlapdPlugin\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: ACL preoperation\n");
- fprintf(f, "nsslapd-pluginpath: %s/libacl-plugin%s\n", cf->plugin_dir, shared_lib);
- fprintf(f, "nsslapd-plugininitfunc: acl_preopInit\n");
- fprintf(f, "nsslapd-plugintype: preoperation\n");
- fprintf(f, "nsslapd-pluginenabled: on\n");
- fprintf(f, "nsslapd-plugin-depends-on-type: database\n");
- fprintf(f, "\n");
-
- fprintf(f, "dn: cn=Legacy Replication Plugin,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: nsSlapdPlugin\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: Legacy Replication Plugin\n");
- fprintf(f, "nsslapd-pluginpath: %s/libreplication-plugin%s\n", cf->plugin_dir, shared_lib);
- fprintf(f, "nsslapd-plugininitfunc: replication_legacy_plugin_init\n");
- fprintf(f, "nsslapd-plugintype: object\n");
- fprintf(f, "nsslapd-pluginenabled: on\n");
- fprintf(f, "nsslapd-plugin-depends-on-type: database\n");
- fprintf(f, "nsslapd-plugin-depends-on-named: Multimaster Replication Plugin\n");
- fprintf(f, "nsslapd-plugin-depends-on-named: Class of Service\n");
- fprintf(f, "\n");
-
- fprintf(f, "dn: cn=Multimaster Replication Plugin,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: nsSlapdPlugin\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: Multimaster Replication Plugin\n");
- fprintf(f, "nsslapd-pluginpath: %s/libreplication-plugin%s\n", cf->plugin_dir, shared_lib);
- fprintf(f, "nsslapd-plugininitfunc: replication_multimaster_plugin_init\n");
- fprintf(f, "nsslapd-plugintype: object\n");
- fprintf(f, "nsslapd-pluginenabled: on\n");
- fprintf(f, "nsslapd-plugin-depends-on-named: ldbm database\n");
- fprintf(f, "nsslapd-plugin-depends-on-named: DES\n");
- fprintf(f, "nsslapd-plugin-depends-on-named: Class of Service\n");
- fprintf(f, "\n");
-
- fprintf(f, "dn: cn=Retro Changelog Plugin,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: nsSlapdPlugin\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: Retro Changelog Plugin\n");
- fprintf(f, "nsslapd-pluginpath: %s/libretrocl-plugin%s\n", cf->plugin_dir, shared_lib);
- fprintf(f, "nsslapd-plugininitfunc: retrocl_plugin_init\n");
- fprintf(f, "nsslapd-plugintype: object\n");
- fprintf(f, "nsslapd-pluginenabled: off\n");
- fprintf(f, "nsslapd-plugin-depends-on-type: database\n");
- fprintf(f, "nsslapd-plugin-depends-on-named: Class of Service\n");
- fprintf(f, "\n");
-
-
- /* cos needs to be placed before other same type'ed plugins (postoperation) */
- fprintf(f, "dn: cn=Class of Service,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: nsSlapdPlugin\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: Class of Service\n");
- fprintf(f, "nsslapd-pluginpath: %s/libcos-plugin%s\n", cf->plugin_dir, shared_lib);
- fprintf(f, "nsslapd-plugininitfunc: cos_init\n");
- fprintf(f, "nsslapd-plugintype: object\n");
- fprintf(f, "nsslapd-pluginenabled: on\n");
- fprintf(f, "nsslapd-plugin-depends-on-type: database\n");
- fprintf(f, "nsslapd-plugin-depends-on-named: State Change Plugin\n");
- fprintf(f, "nsslapd-plugin-depends-on-named: Views\n");
- fprintf(f, "\n");
-
- fprintf(f, "dn: cn=Views,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: nsSlapdPlugin\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: Views\n");
- fprintf(f, "nsslapd-pluginpath: %s/libviews-plugin%s\n", cf->plugin_dir, shared_lib);
- fprintf(f, "nsslapd-plugininitfunc: views_init\n");
- fprintf(f, "nsslapd-plugintype: object\n");
- fprintf(f, "nsslapd-pluginenabled: on\n");
- fprintf(f, "nsslapd-plugin-depends-on-type: database\n");
- fprintf(f, "nsslapd-plugin-depends-on-named: State Change Plugin\n");
- fprintf(f, "\n");
-
- /*
- * LP: Turn referential integrity plugin OFF by default
- * defect 518862
- */
- fprintf(f, "dn: cn=referential integrity postoperation,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: nsSlapdPlugin\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: referential integrity postoperation\n");
- fprintf(f, "nsslapd-pluginpath: %s/libreferint-plugin%s\n", cf->plugin_dir, shared_lib);
- fprintf(f, "nsslapd-plugininitfunc: referint_postop_init\n");
- fprintf(f, "nsslapd-plugintype: postoperation\n");
- fprintf(f, "nsslapd-pluginenabled: off\n");
- fprintf(f, "nsslapd-pluginArg0: %d\n", REFERINT_DELAY);
- fprintf(f, "nsslapd-pluginArg1: %s/logs/referint\n", cs_path);
- fprintf(f, "nsslapd-pluginArg2: %d\n", REFERINT_LOG_CHANGES);
- fprintf(f, "nsslapd-pluginArg3: member\n");
- fprintf(f, "nsslapd-pluginArg4: uniquemember\n");
- fprintf(f, "nsslapd-pluginArg5: owner\n");
- fprintf(f, "nsslapd-pluginArg6: seeAlso\n");
- fprintf(f, "nsslapd-plugin-depends-on-type: database\n");
- fprintf(f, "\n");
- if (!cf->use_existing_user_ds) {
- t = cf->suffix;
- } else {
- t = cf->netscaperoot;
- }
-
- /*
- * LP: Turn attribute uniqueness plugin OFF by default
- * defect 518862
- */
- fprintf(f, "dn: cn=attribute uniqueness,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: nsSlapdPlugin\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: attribute uniqueness\n");
- fprintf(f, "nsslapd-pluginpath: %s/libattr-unique-plugin%s\n", cf->plugin_dir, shared_lib);
- fprintf(f, "nsslapd-plugininitfunc: NSUniqueAttr_Init\n");
- fprintf(f, "nsslapd-plugintype: preoperation\n");
- fprintf(f, "nsslapd-pluginenabled: off\n");
- fprintf(f, "nsslapd-pluginarg0: uid\n");
- fprintf(f, "nsslapd-pluginarg1: %s\n", t);
- fprintf(f, "nsslapd-plugin-depends-on-type: database\n");
- fprintf(f, "\n");
-
- fprintf(f, "dn: cn=7-bit check,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: nsSlapdPlugin\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: 7-bit check\n");
- fprintf(f, "nsslapd-pluginpath: %s/libattr-unique-plugin%s\n", cf->plugin_dir, shared_lib);
- fprintf(f, "nsslapd-plugininitfunc: NS7bitAttr_Init\n");
- fprintf(f, "nsslapd-plugintype: preoperation\n");
- fprintf(f, "nsslapd-pluginenabled: on\n");
- fprintf(f, "nsslapd-pluginarg0: uid\n");
- fprintf(f, "nsslapd-pluginarg1: mail\n");
- fprintf(f, "nsslapd-pluginarg2: userpassword\n");
- fprintf(f, "nsslapd-pluginarg3: ,\n");
- fprintf(f, "nsslapd-pluginarg4: %s\n", t);
- fprintf(f, "nsslapd-plugin-depends-on-type: database\n");
- fprintf(f, "\n");
-
- t = 0;
-
- fprintf(f, "dn: cn=Internationalization Plugin,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: nsSlapdPlugin\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: Internationalization Plugin\n");
- fprintf(f, "nsslapd-pluginpath: %s/libcollation-plugin%s\n", cf->plugin_dir, shared_lib);
- fprintf(f, "nsslapd-plugininitfunc: orderingRule_init\n");
- fprintf(f, "nsslapd-plugintype: matchingRule\n");
- fprintf(f, "nsslapd-pluginenabled: on\n");
- fprintf(f, "nsslapd-pluginarg0: %s/slapd-collations.conf\n", cf->config_dir);
- fprintf(f, "\n");
-
-#ifdef ENABLE_BITWISE
- fprintf(f, "dn: cn=Bitwise Plugin,cn=plugins,cn=config\n");
- fprintf(f, "objectClass: top\n");
- fprintf(f, "objectClass: nsSlapdPlugin\n");
- fprintf(f, "objectClass: extensibleObject\n");
- fprintf(f, "cn: Bitwise Plugin\n");
- fprintf(f, "nsslapd-pluginPath: %s/libbitwise-plugin%s\n", cf->plugin_dir, shared_lib);
- fprintf(f, "nsslapd-pluginInitfunc: bitwise_init\n");
- fprintf(f, "nsslapd-pluginType: matchingRule\n");
- fprintf(f, "nsslapd-pluginEnabled: on\n");
- fprintf(f, "\n");
-#endif
-
- /* The HTTP client plugin */
- fprintf(f, "dn: cn=HTTP Client,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: nsSlapdPlugin\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: HTTP Client\n");
- fprintf(f, "nsslapd-pluginpath: %s/libhttp-client-plugin%s\n", cf->plugin_dir, shared_lib);
- fprintf(f, "nsslapd-plugininitfunc: http_client_init\n");
- fprintf(f, "nsslapd-plugintype: preoperation\n");
- fprintf(f, "nsslapd-pluginenabled: on\n");
- fprintf(f, "nsslapd-plugin-depends-on-type: database\n");
- fprintf(f, "\n");
-
-#if defined (BUILD_PRESENCE)
- /* The IM presence plugin root */
- fprintf(f, "dn: cn=Presence,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: nsSlapdPlugin\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: Presence\n");
- fprintf(f, "nsslapd-pluginpath: %s/libpresence-plugin%s\n", cf->plugin_dir, shared_lib);
- fprintf(f, "nsslapd-plugininitfunc: presence_init\n");
- fprintf(f, "nsslapd-plugintype: preoperation\n");
- fprintf(f, "nsslapd-pluginenabled: on\n");
- fprintf(f, "nsslapd-plugin-depends-on-type: database\n");
- fprintf(f, "nsslapd-plugin-depends-on-named: HTTP Client\n");
- fprintf(f, "\n");
-
- /* The AIM presence plugin */
- fprintf(f, "dn: cn=AIM Presence,cn=Presence,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: AIM Presence\n");
- fprintf(f, "nsim-id: nsAIMid\n");
- fprintf(f, "nsim-urltext: http://big.oscar.aol.com/$nsaimid?on_url=http://online&off_url=http://offline\n");
- fprintf(f, "nsim-urlgraphic: http://big.oscar.aol.com/$nsaimid?on_url=http://online&off_url=http://offline\n");
- fprintf(f, "nsim-onvaluemaptext: http://online\n");
- fprintf(f, "nsim-offvaluemaptext: http://offline\n");
- fprintf(f, "nsim-urltextreturntype: TEXT\n");
- fprintf(f, "nsim-urlgraphicreturntype: TEXT\n");
- fprintf(f, "nsim-requestmethod: REDIRECT\n");
- fprintf(f, "nsim-statustext: nsAIMStatusText\n");
- fprintf(f, "nsim-statusgraphic: nsAIMStatusGraphic\n");
- fprintf(f, "\n");
-
- /* The ICQ presence plugin */
- fprintf(f, "dn: cn=ICQ Presence,cn=Presence,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: ICQ Presence\n");
- fprintf(f, "nsim-id: nsICQid\n");
- fprintf(f, "nsim-urltext: http://online.mirabilis.com/scripts/online.dll?icq=$nsicqid&img=5\n");
- fprintf(f, "nsim-urlgraphic: http://online.mirabilis.com/scripts/online.dll?icq=$nsicqid&img=5\n");
- fprintf(f, "nsim-onvaluemaptext: /lib/image/0,,4367,00.gif\n");
- fprintf(f, "nsim-offvaluemaptext: /lib/image/0,,4349,00.gif\n");
- fprintf(f, "nsim-urltextreturntype: TEXT\n");
- fprintf(f, "nsim-urlgraphicreturntype: TEXT\n");
- fprintf(f, "nsim-requestmethod: REDIRECT\n");
- fprintf(f, "nsim-statustext: nsICQStatusText\n");
- fprintf(f, "nsim-statusgraphic: nsICQStatusGraphic\n");
- fprintf(f, "\n");
-
- /* The Yahoo presence plugin */
- fprintf(f, "dn: cn=Yahoo Presence,cn=Presence,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: Yahoo Presence\n");
- fprintf(f, "nsim-id: nsYIMid\n");
- fprintf(f, "nsim-urltext: http://opi.yahoo.com/online?u=$nsyimid&m=t\n");
- fprintf(f, "nsim-urlgraphic: http://opi.yahoo.com/online?u=$nsyimid&m=g&t=0\n");
- fprintf(f, "nsim-onvaluemaptext: $nsyimid is ONLINE\n");
- fprintf(f, "nsim-offvaluemaptext: $nsyimid is NOT ONLINE\n");
- fprintf(f, "nsim-urltextreturntype: TEXT\n");
- fprintf(f, "nsim-urlgraphicreturntype: BINARY\n");
- fprintf(f, "nsim-requestmethod: GET\n");
- fprintf(f, "nsim-statustext: nsYIMStatusText\n");
- fprintf(f, "nsim-statusgraphic: nsYIMStatusGraphic\n");
- fprintf(f, "\n");
-#endif
-
- fprintf(f, "dn: cn=Pass Through Authentication,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: nsSlapdPlugin\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: Pass Through Authentication\n");
- fprintf(f, "nsslapd-pluginpath: %s/libpassthru-plugin%s\n", cf->plugin_dir, shared_lib);
- fprintf(f, "nsslapd-plugininitfunc: passthruauth_init\n");
- fprintf(f, "nsslapd-plugintype: preoperation\n");
- fprintf(f, "nsslapd-pluginenabled: off\n");
- fprintf(f, "nsslapd-plugin-depends-on-type: database\n");
- fprintf(f, "\n");
-
-#ifdef ENABLE_PAM_PASSTHRU
-#if !defined( XP_WIN32 )
- /* PAM Pass Through Auth plugin - off by default */
- fprintf(f, "dn: cn=PAM Pass Through Auth,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: nsSlapdPlugin\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "objectclass: pamConfig\n");
- fprintf(f, "cn: PAM Pass Through Auth\n");
- fprintf(f, "nsslapd-pluginpath: %s/libpam-passthru-plugin%s\n", cf->plugin_dir, shared_lib);
- fprintf(f, "nsslapd-plugininitfunc: pam_passthruauth_init\n");
- fprintf(f, "nsslapd-plugintype: preoperation\n");
- fprintf(f, "nsslapd-pluginenabled: off\n");
- fprintf(f, "nsslapd-pluginLoadGlobal: true\n");
- fprintf(f, "nsslapd-plugin-depends-on-type: database\n");
- fprintf(f, "pamMissingSuffix: ALLOW\n");
- if (cf->netscaperoot) {
- fprintf(f, "pamExcludeSuffix: %s\n", cf->netscaperoot);
- }
- fprintf(f, "pamExcludeSuffix: cn=config\n");
- fprintf(f, "pamIDMapMethod: RDN\n");
- fprintf(f, "pamIDAttr: notUsedWithRDNMethod\n");
- fprintf(f, "pamFallback: FALSE\n");
- fprintf(f, "pamSecure: TRUE\n");
- fprintf(f, "pamService: ldapserver\n");
- fprintf(f, "\n");
-#endif /* NO PAM FOR WINDOWS */
-#endif /* ENABLE_PAM_PASSTHRU */
-
-#ifdef ENABLE_DNA
- fprintf(f, "dn: cn=Distributed Numeric Assignment Plugin,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: nsSlapdPlugin\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "objectclass: nsContainer\n");
- fprintf(f, "cn: Distributed Numeric Assignment Plugin\n");
- fprintf(f, "nsslapd-plugininitfunc: dna_init\n");
- fprintf(f, "nsslapd-plugintype: preoperation\n");
- fprintf(f, "nsslapd-pluginenabled: off\n");
- fprintf(f, "nsslapd-pluginPath: %s/libdna-plugin%s\n", cf->plugin_dir, shared_lib);
- fprintf(f, "\n");
-#endif /* ENABLE_DNA */
-
- fprintf(f, "dn: cn=ldbm database,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: nsSlapdPlugin\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: ldbm database\n");
- fprintf(f, "nsslapd-pluginpath: %s/libback-ldbm%s\n", cf->plugin_dir, shared_lib);
- fprintf(f, "nsslapd-plugininitfunc: ldbm_back_init\n");
- fprintf(f, "nsslapd-plugintype: database\n");
- fprintf(f, "nsslapd-pluginenabled: on\n");
- fprintf(f, "nsslapd-plugin-depends-on-type: Syntax\n");
- fprintf(f, "nsslapd-plugin-depends-on-type: matchingRule\n");
- fprintf(f, "\n");
-
- if (strlen(cf->suffix) == 0){
- rootdse = 1;
- }
-
- /* Entries for the ldbm plugin */
- fprintf(f, "dn: cn=config,cn=ldbm database,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: config\n");
- fprintf(f, "nsslapd-lookthroughlimit: 5000\n");
- fprintf(f, "nsslapd-mode: 600\n");
- fprintf(f, "nsslapd-directory: %s\n", cf->db_dir);
- fprintf(f, "nsslapd-dbcachesize: 10485760\n");
- /* will be default from 6.2 or 6.11... */
- if (getenv("USE_OLD_IDL_SWITCH")) {
- fprintf(f, "nsslapd-idl-switch: old\n");
- }
- fprintf(f, "\n");
-
- /* Placeholder for the default user-defined ldbm indexes */
- fprintf(f, "dn: cn=default indexes, cn=config,cn=ldbm database,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: default indexes\n");
- fprintf(f, "\n");
-
- /* default user-defined ldbm indexes */
- ds_gen_index(f, "cn=default indexes, cn=config,cn=ldbm database,cn=plugins,cn=config");
-
- fprintf(f, "dn: cn=monitor, cn=ldbm database, cn=plugins, cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: monitor\n");
- fprintf(f, "\n");
-
- fprintf(f, "dn: cn=database, cn=monitor, cn=ldbm database, cn=plugins, cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: database\n");
- fprintf(f, "\n");
-
- /* Entries for the chaining backend plugin */
- fprintf(f, "dn: cn=chaining database,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: nsSlapdPlugin\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: chaining database\n");
- fprintf(f, "nsslapd-pluginpath: %s/libchainingdb-plugin%s\n", cf->plugin_dir, shared_lib);
- fprintf(f, "nsslapd-plugininitfunc: chaining_back_init\n");
- fprintf(f, "nsslapd-plugintype: database\n");
- fprintf(f, "nsslapd-pluginenabled: on\n");
- fprintf(f, "\n");
-
- fprintf(f, "dn: cn=config,cn=chaining database,cn=plugins,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: config\n");
- fprintf(f, "nsTransmittedControls: 2.16.840.1.113730.3.4.2\n");
- fprintf(f, "nsTransmittedControls: 2.16.840.1.113730.3.4.9\n");
- fprintf(f, "nsTransmittedControls: 1.2.840.113556.1.4.473\n");
- fprintf(f, "nsTransmittedControls: 1.3.6.1.4.1.1466.29539.12\n");
- fprintf(f, "nsPossibleChainingComponents: cn=resource limits,cn=components,cn=config\n");
- fprintf(f, "nsPossibleChainingComponents: cn=certificate-based authentication,cn=components,cn=config\n");
- fprintf(f, "nsPossibleChainingComponents: cn=ACL Plugin,cn=plugins,cn=config\n");
- fprintf(f, "nsPossibleChainingComponents: cn=old plugin,cn=plugins,cn=config\n");
- fprintf(f, "nsPossibleChainingComponents: cn=referential integrity postoperation,cn=plugins,cn=config\n");
- fprintf(f, "nsPossibleChainingComponents: cn=attribute uniqueness,cn=plugins,cn=config\n");
- fprintf(f, "\n");
-
- free(t);
- t = NULL;
-
- /* suffix for the mapping tree */
- fprintf(f, "dn: cn=mapping tree,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: mapping tree\n");
- fprintf(f, "\n");
-
- fprintf(f, "dn: cn=tasks,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: tasks\n");
- fprintf(f, "\n");
-
- if (!cf->use_existing_user_ds)
- {
- suffix_gen_conf(f, cf->suffix, "userRoot");
- }
-
- if ( cf->samplesuffix && cf->suffix && PL_strcasecmp(cf->samplesuffix, cf->suffix))
- {
- suffix_gen_conf(f, cf->samplesuffix, "sampleRoot");
- }
-
- if ( cf->testconfig && cf->suffix && PL_strcasecmp(cf->testconfig, cf->suffix))
- {
- suffix_gen_conf(f, cf->testconfig, "testRoot");
- }
-
-
- /* tasks */
- fprintf(f, "dn: cn=import,cn=tasks,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: import\n");
- fprintf(f, "\n");
-
- fprintf(f, "dn: cn=export,cn=tasks,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: export\n");
- fprintf(f, "\n");
-
- fprintf(f, "dn: cn=backup,cn=tasks,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: backup\n");
- fprintf(f, "\n");
-
- fprintf(f, "dn: cn=restore,cn=tasks,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: restore\n");
- fprintf(f, "\n");
-
- fprintf(f, "dn: cn=upgradedb,cn=tasks,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: upgradedb\n");
- fprintf(f, "\n");
- /* END of tasks */
-
-
- fprintf(f, "dn: cn=replication,cn=config\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: extensibleObject\n");
- fprintf(f, "cn: replication\n");
- fprintf(f, "\n");
-
- if( cf->replicationdn && *(cf->replicationdn) )
- {
- fprintf(f, "dn: cn=replication4,cn=replication,cn=config\n");
- fprintf(f, "cn: replication4\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: nsConsumer4Config\n");
- fprintf(f, "nsslapd-updatedn: %s\n", cf->replicationdn);
- fprintf(f, "nsslapd-updatepw: %s\n", cf->replicationhashedpw);
- fprintf(f, "\n");
- }
-
- if(cf->changelogdir && *(cf->changelogdir) )
- {
- fprintf(f, "dn: cn=changelog4,cn=config\n");
- fprintf(f, "cn: changelog4\n");
- fprintf(f, "objectclass: top\n");
- fprintf(f, "objectclass: nsChangelog4Config\n");
- fprintf(f, "nsslapd-changelogdir: %s\n", cf->changelogdir);
- fprintf(f, "nsslapd-changelogsuffix: %s\n", cf->changelogsuffix);
- fprintf(f, "nsslapd-changelogmaxage: 2d\n");
- fprintf(f, "\n");
-
- /* create the changelog directory */
- if( (t = create_instance_mkdir_p("changelog dir", cf->changelogdir, NEWDIR_MODE, pw)) )
- return(t);
- }
-
- fclose (f);
-
- PR_snprintf(src, sizeof(src), "%s%c%s",
- cf->config_dir, FILE_PATHSEP, DS_CONFIG_FILE);
- PR_snprintf(dest, sizeof(dest), "%s%c%s",
- cf->config_dir, FILE_PATHSEP, DS_ORIGCONFIG_FILE);
- create_instance_copy(src, dest, 0600, 0 );
-
- /* install certmap.conf at <configdir> */
- PR_snprintf(src, sizeof(src), "%s%c%s%c/config/certmap.conf",
- cf->sysconfdir, FILE_PATHSEP, cf->package_name, FILE_PATHSEP);
- PR_snprintf(dest, sizeof(dest), "%s/certmap.conf", cf->config_dir);
- create_instance_copy(src, dest, 0600, 0 );
-
- /* generate <confdir>/slapd-collations.conf */
- PR_snprintf(src, sizeof(src), "%s%c%s%c/config/%s-collations.conf",
- cf->sysconfdir, FILE_PATHSEP, cf->package_name,
- FILE_PATHSEP, PRODUCT_NAME);
- PR_snprintf(dest, sizeof(dest), "%s%c%s-collations.conf",
- cf->config_dir, FILE_PATHSEP, PRODUCT_NAME);
- if (!(srcf = fopen(src, "r"))) {
- return make_error("Can't read from %s (%s)", src, ds_system_errmsg());
- }
- if (!(f = fopen(dest, "w"))) {
- return make_error("Can't write to %s (%s)", dest, ds_system_errmsg());
- }
- while (fgets(line, sizeof(line), srcf)) {
- if ((line[0] != '\0') && (fputs(line, f) == EOF)) {
- make_error("Error writing to file %s from copy of %s (%s)",
- dest, src, ds_system_errmsg());
- }
- }
- if (!feof(srcf)) {
- make_error("Error reading from file %s (%s)", src, ds_system_errmsg());
- }
- fclose(srcf);
- fclose(f);
-
- if (cf->install_full_schema) {
- /*
- * <sysconfdir>/PACKAGE_NAME/schema to schema_dir
- */
- PR_snprintf(src, sizeof(src), "%s%c%s%cschema",
- cf->sysconfdir, FILE_PATHSEP, cf->package_name, FILE_PATHSEP);
- if (NULL != (t = ds_copy_group_files_using_mode_owner(src, cf->schema_dir, 0, NEWFILE_MODE, pw)))
- return t;
- } else {
- PR_snprintf(src, sizeof(src), "%s%c%s%cschema%c00core.ldif",
- cf->sysconfdir, FILE_PATHSEP, cf->package_name, FILE_PATHSEP, FILE_PATHSEP);
- PR_snprintf(dest, sizeof(dest), "%s%c00core.ldif",
- cf->schema_dir, FILE_PATHSEP);
- if( (t = create_instance_copy(src, dest, NEWFILE_MODE, 0 )) ) {
- return t;
- } else {
- if (pw) {
- chownfile(pw, dest);
- }
- }
- }
-#if defined (BUILD_PRESENCE)
- PR_snprintf(src, sizeof(src), "%s%c%s%c/config/presence",
- cf->sysconfdir, FILE_PATHSEP, cf->package_name, FILE_PATHSEP);
- PR_snprintf(dest, sizeof(dest), "%s/presence", cf->config_dir);
- if (t = ds_copy_group_files(src, dest, 0))
- return t;
-#endif
-
-#if defined (ORGCHART)
- /* Generate the orgchart configuration */
- PR_snprintf(src, sizeof(src), "%s/clients", sroot);
- if (is_a_dir(src, "orgchart")) {
- if (NULL != (t = ds_gen_orgchart_conf(sroot, cs_path, cf))) {
- return t;
- }
- }
-#endif
-
-#if defined (DSGW)
- /* Generate dsgw.conf */
- PR_snprintf(src, sizeof(src), "%s/clients", sroot);
- if (is_a_dir(src, "dsgw")) {
- if (NULL != (t = ds_gen_gw_conf(sroot, cs_path, cf, GW_CONF))) {
- return t;
- }
-
- /* Generate pb.conf */
- if (NULL != (t = ds_gen_gw_conf(sroot, cs_path, cf, PB_CONF))) {
- return t;
- }
- }
-#endif
-
- return NULL; /* Everything worked fine */
-}
-
-/*
- * Function: ds_gen_gw_conf
- *
- * Returns: pointer to error message, or NULL if all went well
- *
- * Description: This generates the gateway configuration files
- * for the regular gateway stuff and for the phonebook.
- *
- * Author: RJP
- *
- */
-static char *
-ds_gen_gw_conf(char *sroot, char *cs_path, server_config_s *cf, int conf_type)
-{
- char dest[PATH_SIZE];
- char src[PATH_SIZE];
- char line[1024];
- FILE *f = NULL;
- FILE *srcf = NULL;
- char *t = NULL;
- const char *ctxt;
-
- if (conf_type == GW_CONF) {
- ctxt = "dsgw";
- } else {
- ctxt = "pb";
- }
- /*
- * generate .../dsgw/context/[dsgw|pb].conf by creating the file, placing
- * install-specific config. file lines at the start of file, and then
- * copying the rest from NS-HOME/dsgw/config/dsgw.tmpl
- */
-
- PR_snprintf(dest, sizeof(dest), "%s%cclients%cdsgw%ccontext%c%s.conf", sroot, FILE_PATHSEP,FILE_PATHSEP,
- FILE_PATHSEP, FILE_PATHSEP, ctxt);
-
- /* If the config file already exists, just return success */
- if (create_instance_exists(dest, PR_FILE_FILE)) {
- return(NULL);
- }
-
- /* Attempt to open that bad boy */
- if(!(f = fopen(dest, "w"))) {
- return make_error("Can't write to %s (%s)", dest, ds_system_errmsg());
- }
-
- /* Write out the appropriate values */
- fprintf(f, "# Used by Directory Server Gateway\n");
- fprintf(f, "baseurl\t\"ldap://%s:%s/", cf->servname, cf->servport);
- fputs_escaped(cf->suffix, f);
- fputs("\"\n\n",f);
- if (cf->rootdn && *(cf->rootdn)) {
- t = ds_enquote_config_value(DS_ROOTDN, cf->rootdn);
- fprintf(f, "dirmgr\t%s\n\n", t );
- if (t != cf->rootdn) free(t);
- }
-
- t = ds_enquote_config_value(DS_SUFFIX, cf->suffix);
- fprintf(f, "location-suffix\t%s\n\n", t);
- if (t != cf->suffix) free(t);
-
-
- fprintf(f, "securitypath\t\"%s%calias%c%s-cert.db\"\n\n", cf->cert_dir, FILE_PATHSEP, FILE_PATHSEP, ctxt );
-
- fprintf(f, "# The url base to the orgchart application.\n#No link from the DSGW to the orgchart will appear in the UI if this configuration line is commented out.\n");
- fprintf(f, "url-orgchart-base\thttp://%s:%s/clients/orgchart/bin/org?context=%s&data=\n\n", cf->servname, cf->adminport ? cf->adminport : "80", ctxt);
-
- /* copy in template */
- if (conf_type == GW_CONF) {
- PR_snprintf(src, sizeof(src), "%s%cclients%cdsgw%cconfig%cdsgw.tmpl",
- sroot, FILE_PATHSEP, FILE_PATHSEP, FILE_PATHSEP, FILE_PATHSEP);
- } else if (conf_type == PB_CONF) {
- PR_snprintf(src, sizeof(src), "%s%cclients%cdsgw%cpbconfig%cpb.tmpl",
- sroot, FILE_PATHSEP,FILE_PATHSEP, FILE_PATHSEP, FILE_PATHSEP);
- } else {
- /*This should never, ever happen if this function is called correctly*/
- fclose(f);
- return make_error("Unknown gateway config file requested");
- }
-
-
- /* Try to open the dsgw.conf template file (dsgw.tmpl) */
- if(!(srcf = fopen(src, "r"))) {
- fclose(f);
- return make_error("Can't read %s (%s)", src, ds_system_errmsg());
- }
-
- while(fgets(line, sizeof(line), srcf)) {
- fputs(line, f);
- }
-
- fclose(srcf);
- fclose(f);
-
- /* Generate default.conf */
- if (conf_type == GW_CONF) {
- struct passwd* pw = NULL;
- char defaultconf[PATH_SIZE];
-
-#if !defined( XP_WIN32 )
- /* find the server's UID and GID */
- if (cf->servuser && *(cf->servuser)) {
- if ((pw = getpwnam (cf->servuser)) == NULL) {
- return make_error("Could not find UID and GID of user '%s'.", cf->servuser);
- } else if (pw->pw_name == NULL) {
- pw->pw_name = cf->servuser;
- }
- }
-#endif
-
- PR_snprintf(defaultconf, sizeof(defaultconf), "%s%cclients%cdsgw%ccontext%cdefault.conf", sroot,
- FILE_PATHSEP,FILE_PATHSEP, FILE_PATHSEP, FILE_PATHSEP);
-
- create_instance_copy(dest, defaultconf, NEWFILE_MODE, 0 );
- chownfile (pw, defaultconf);
- }
- unlink(src);
-
- return NULL;
-}
-
-
-/*
- * Function: ds_gen_orgchart_conf
- *
- * Returns: pointer to error message, or NULL if all went well
- *
- * Description: This generates the orgchart configuration file
- *
- * Author: RJP
- *
- */
-static char *
-ds_gen_orgchart_conf(char *sroot, char *cs_path, server_config_s *cf)
-{
- char dest[PATH_SIZE];
- char src[PATH_SIZE];
- char line[1024];
- FILE *f = NULL;
- FILE *srcf = NULL;
-
- /*
- * generate .../clients/orgchart/config.txt by creating the file, placing
- * install-specific config. file lines at the start of file, and then
- * copying the rest from NS-HOME/clients/orgchart/config.tmpl
- */
- PR_snprintf(dest, sizeof(dest), "%s%cclients%corgchart%cconfig.txt", sroot, FILE_PATHSEP,
- FILE_PATHSEP, FILE_PATHSEP );
- PR_snprintf(src, sizeof(src), "%s%cclients%corgchart%cconfig.tmpl", sroot, FILE_PATHSEP,
- FILE_PATHSEP, FILE_PATHSEP);
-
- /* If the config file already exists, just return success */
- if (create_instance_exists(dest, PR_FILE_FILE)) {
- return(NULL);
- }
-
- /* Attempt to open that bad boy */
- if(!(f = fopen(dest, "w"))) {
- return make_error("Cannot write to %s (%s)", dest, ds_system_errmsg());
- }
-
- /* Write out the appropriate values */
- fprintf(f, "#############\n#\n#\n");
- fprintf(f, "# Configuration file for Directory Server Org Chart\n");
- fprintf(f, "# ----------------------------------------------------------\n#\n#\n");
- fprintf(f, "#############\n\n\n#\n");
- fprintf(f, "# Blank lines in this file, as well as lines that\n");
- fprintf(f, "# start with at least one \"#\" character, are both ignored.\n");
- fprintf(f, "#\n#\n");
- fprintf(f, "# Name/Value pairs below are (and need to be) separated with\n");
- fprintf(f, "# one or more tabs (or spaces)\n");
- fprintf(f, "#\n");
-
- fprintf(f, "ldap-host\t%s\n", cf->servname);
- fprintf(f, "ldap-port\t%s\n", cf->servport);
- fprintf(f, "ldap-search-base\t%s\n\n", cf->suffix);
-
- fprintf(f, "#\n# If you would like to have the phonebook icon visible, you must\n");
- fprintf(f, "# supply the partial phonebook URL below, which will have each\n");
- fprintf(f, "# given user's DN attribute value concatenated to the end.\n");
- fprintf(f, "#\n# For example, you could specify below something close to:\n");
- fprintf(f, "#\n# url-phonebook-base http://hostname.domain.com/dsgw/bin/dosearch?context=default&hp=localhost&dn=\n#\n\n");
- fprintf(f, "url-phonebook-base\thttp://%s:%s/clients/dsgw/bin/dosearch?context=pb&hp=%s:%s&dn=\n\n",cf->servname, cf->adminport ? cf->adminport : "80", cf->servname, cf->servport);
-
- /* Try to open the config.txt template file (config.tmpl) */
- if(!(srcf = fopen(src, "r"))) {
- fclose(f);
- return make_error("Can't read %s (%s)", src, ds_system_errmsg());
- }
-
- while(fgets(line, sizeof(line), srcf)) {
- fputs(line, f);
- }
-
- fclose(srcf);
- fclose(f);
-
- unlink(src);
- return NULL;
-}
-
-#if defined (BUILD_PRESENCE)
-/*
- * Function: gen_presence_init
- *
- * Description: Creates a script to initialize images for use in the IM
- * Presence plugin.
- */
-#define PRESENCE_LDIF "init_presence_images.ldif"
-static char *gen_presence_init_script(char *sroot, server_config_s *cf,
- char *cs_path)
-{
- char fn[PATH_SIZE];
- char dir[PATH_SIZE];
- FILE *f;
-
- PR_snprintf(dir, sizeof(dir), "%s%cconfig%cpresence",
- cs_path, FILE_PATHSEP, FILE_PATHSEP);
- PR_snprintf(fn, sizeof(fn), "%s%c%s",
- dir, FILE_PATHSEP, PRESENCE_LDIF);
-
- if(!(f = fopen(fn, "w")))
- return make_error("Could not write to %s (%s).", fn, ds_system_errmsg());
-
- fprintf( f,
- "dn:cn=ICQ Presence,cn=Presence,cn=plugins,cn=config\n"
- "changeType:modify\n"
- "replace:nsim-onvaluemapgraphic\n"
- "nsim-onvaluemapgraphic: %s%cicq-online.gif\n"
- "\n"
- "dn:cn=ICQ Presence,cn=Presence,cn=plugins,cn=config\n"
- "changeType:modify\n"
- "replace:nsim-offvaluemapgraphic\n"
- "nsim-offvaluemapgraphic: %s%cicq-offline.gif\n"
- "\n"
- "dn:cn=ICQ Presence,cn=Presence,cn=plugins,cn=config\n"
- "changeType:modify\n"
- "replace:nsim-disabledvaluemapgraphic\n"
- "nsim-disabledvaluemapgraphic: %s%cicq-disabled.gif\n"
- "\n"
- "dn:cn=AIM Presence,cn=Presence,cn=plugins,cn=config\n"
- "changeType:modify\n"
- "replace:nsim-onvaluemapgraphic\n"
- "nsim-onvaluemapgraphic: %s%caim-online.gif\n"
- "\n"
- "dn:cn=AIM Presence,cn=Presence,cn=plugins,cn=config\n"
- "changeType:modify\n"
- "replace:nsim-offvaluemapgraphic\n"
- "nsim-offvaluemapgraphic: %s%caim-offline.gif\n"
- "\n"
- "dn:cn=AIM Presence,cn=Presence,cn=plugins,cn=config\n"
- "changeType:modify\n"
- "replace:nsim-disabledvaluemapgraphic\n"
- "nsim-disabledvaluemapgraphic: %s%caim-offline.gif\n"
- "\n"
- "dn:cn=Yahoo Presence,cn=Presence,cn=plugins,cn=config\n"
- "changeType:modify\n"
- "replace:nsim-offvaluemapgraphic\n"
- "nsim-offvaluemapgraphic: %s%cyahoo-offline.gif\n"
- "\n"
- "dn:cn=Yahoo Presence,cn=Presence,cn=plugins,cn=config\n"
- "changeType:modify\n"
- "replace:nsim-onvaluemapgraphic\n"
- "nsim-onvaluemapgraphic: %s%cyahoo-online.gif\n"
- "\n"
- "dn:cn=Yahoo Presence,cn=Presence,cn=plugins,cn=config\n"
- "changeType:modify\n"
- "replace:nsim-disabledvaluemapgraphic\n"
- "nsim-disabledvaluemapgraphic: %s%cyahoo-offline.gif\n",
- dir, FILE_PATHSEP,
- dir, FILE_PATHSEP,
- dir, FILE_PATHSEP,
- dir, FILE_PATHSEP,
- dir, FILE_PATHSEP,
- dir, FILE_PATHSEP,
- dir, FILE_PATHSEP,
- dir, FILE_PATHSEP,
- dir, FILE_PATHSEP
- );
- fclose(f);
- return NULL;
-}
-
-/*
- * Function init_presence
- *
- * Description: Runs ldapmodify to initialize the images used by the
- * IM presence plugin
- */
-static int init_presence(char *sroot, server_config_s *cf, char *cs_path)
-{
- char cmd[PATH_SIZE];
- char tools[PATH_SIZE];
- char precmd[PATH_SIZE];
-
- precmd[0] = 0;
- PR_snprintf(tools, sizeof(tools), "%s%cshared%cbin",
- cf->prefix, FILE_PATHSEP, FILE_PATHSEP);
-
-#ifdef XP_UNIX
- PR_snprintf(precmd, sizeof(precmd), "cd %s;", tools);
-#endif
-
- PR_snprintf(cmd, sizeof(cmd), "%s%s%cldapmodify -q -p %d -b -D \"%s\" -w \"%s\" "
- "-f %s%s%cconfig%cpresence%c%s%s",
- precmd,
- tools, FILE_PATHSEP,
- atoi(cf->servport),
- cf->rootdn,
- cf->rootpw,
- ENQUOTE, cs_path, FILE_PATHSEP, FILE_PATHSEP, FILE_PATHSEP,
- PRESENCE_LDIF, ENQUOTE);
- return ds_exec_and_report( cmd );
-}
-#endif
-
-/*
- * Function: ds_gen_index
- *
- * Description: This generates the default index list.
- * This function is passed the parent entry below which the nsIndex
- * entries must be created. This allows to use it when creating:
- * - the default index list (ie belowdn = cn=default indexes,cn=config...)
- * - the userRoot backend (ie belowdn = cn=index,cn=userRoot...)
- *
- */
-static void
-ds_gen_index(FILE* f, char* belowdn)
-{
-#define MKINDEX(_name, _inst, _sys, _type1, _type2, _type3) do { \
- char *_type2str = (_type2), *_type3str = (_type3); \
- fprintf(f, "dn: cn=%s,%s\n", (_name), (_inst)); \
- fprintf(f, "objectclass: top\n"); \
- fprintf(f, "objectclass: nsIndex\n"); \
- fprintf(f, "cn: %s\n", (_name)); \
- fprintf(f, "nssystemindex: %s\n", (_sys) ? "true" : "false"); \
- if (_type1) \
- fprintf(f, "nsindextype: %s\n", (_type1)); \
- if (_type2str) \
- fprintf(f, "nsindextype: %s\n", _type2str); \
- if (_type3str) \
- fprintf(f, "nsindextype: %s\n", _type3str); \
- fprintf(f, "\n"); \
-} while (0)
-
- MKINDEX("aci", belowdn, 1, "pres", NULL, NULL);
- MKINDEX("cn", belowdn, 0, "pres", "eq", "sub");
- MKINDEX("entrydn", belowdn, 1, "eq", NULL, NULL);
- MKINDEX("givenName", belowdn, 0, "pres", "eq", "sub");
- MKINDEX("mail", belowdn, 0, "pres", "eq", "sub");
- MKINDEX("mailAlternateAddress", belowdn, 0, "eq", NULL, NULL);
- MKINDEX("mailHost", belowdn, 0, "eq", NULL, NULL);
- MKINDEX("member", belowdn, 0, "eq", NULL, NULL);
- MKINDEX("nsCalXItemId", belowdn, 0, "pres", "eq", "sub");
- MKINDEX("nsLIProfileName", belowdn, 0, "eq", NULL, NULL);
- MKINDEX("nsUniqueId", belowdn, 1, "eq", NULL, NULL);
- MKINDEX("nswcalCALID", belowdn, 0, "eq", NULL, NULL);
- MKINDEX("numsubordinates", belowdn, 1, "pres", NULL, NULL);
- MKINDEX("objectclass", belowdn, 1, "eq", NULL, NULL);
- MKINDEX("owner", belowdn, 0, "eq", NULL, NULL);
- MKINDEX("parentid", belowdn, 1, "eq", NULL, NULL);
- MKINDEX("pipstatus", belowdn, 0, "eq", NULL, NULL);
- MKINDEX("pipuid", belowdn, 0, "pres", NULL, NULL);
- MKINDEX("seeAlso", belowdn, 0, "eq", NULL, NULL);
- MKINDEX("sn", belowdn, 0, "pres", "eq", "sub");
- MKINDEX("telephoneNumber", belowdn, 0, "pres", "eq", "sub");
- MKINDEX("uid", belowdn, 0, "eq", NULL, NULL);
- MKINDEX("ntUniqueId", belowdn, 0, "eq", NULL, NULL);
- MKINDEX("ntUserDomainId", belowdn, 0, "eq", NULL, NULL);
- MKINDEX("uniquemember", belowdn, 0, "eq", NULL, NULL);
-}
-
-
-
-static char *install_ds(char *sroot, server_config_s *cf, char *param_name)
-{
- SLAPD_CONFIG slapd_conf;
- QUERY_VARS query_vars;
- char *t, src[PATH_SIZE], dest[PATH_SIZE], big_line[PATH_SIZE];
- struct passwd* pw = NULL;
- int isrunning;
- int status = 0;
-#ifdef XP_WIN32
- WSADATA wsadata;
-#endif
-
-#if !defined( XP_WIN32 )
- /* find the server's UID and GID */
- if (cf->servuser && *(cf->servuser)) {
- if ((pw = getpwnam (cf->servuser)) == NULL) {
- PL_strncpyz(param_name, "servuser", BIG_LINE);
- return make_error("Could not find UID and GID of user '%s'.",
- cf->servuser);
- } else if (pw->pw_name == NULL) {
- pw->pw_name = cf->servuser;
- }
- }
-#endif
-
- /* create all <a_server>/<subdirs> */
- if ( (t = ds_cre_subdirs(cf, pw)) )
- return(t);
-
- /* Generate all scripts */
- if ( (t = ds_gen_scripts(sroot, cf, cf->inst_dir)) )
- return(t);
-
-#if defined( XP_WIN32 )
- ds_dostounixpath( sroot );
- ds_dostounixpath( cf->inst_dir );
-#endif
-
- /* Generate all conf files */
- if ( (t = ds_gen_confs(sroot, cf, cf->inst_dir)) )
- return(t);
-
-#ifdef DSML
- /* new code for dsml sample files */
- PR_snprintf(src, sizeof(src),
- "%s%cbin%c"PRODUCT_NAME"%cinstall%cdsml%cExample.dsml",
- cf->prefix, FILE_PATHSEP, FILE_PATHSEP, FILE_PATHSEP,
- FILE_PATHSEP, FILE_PATHSEP);
- PR_snprintf(dest, sizeof(dest), "%s%cdsml%cExample.dsml",
- bogus, FILE_PATHSEP, FILE_PATHSEP);
- create_instance_copy(src, dest, NEWFILE_MODE, 1);
- chownfile (pw, dest);
-
- PR_snprintf(src, sizeof(src),
- "%s%cbin%c"PRODUCT_NAME"%cinstall%cdsml%cExample-roles.dsml",
- cf->prefix, FILE_PATHSEP, FILE_PATHSEP, FILE_PATHSEP,
- FILE_PATHSEP, FILE_PATHSEP);
- PR_snprintf(dest, sizeof(dest), "%s%cdsml%cExample-roles.dsml",
- bogus, FILE_PATHSEP, FILE_PATHSEP);
- create_instance_copy(src, dest, NEWFILE_MODE, 1);
- chownfile (pw, dest);
-
- PR_snprintf(src, sizeof(src),
- "%s%cbin%c"PRODUCT_NAME"%cinstall%cdsml%cEuropean.dsml",
- sroot, FILE_PATHSEP, FILE_PATHSEP, FILE_PATHSEP,
- FILE_PATHSEP, FILE_PATHSEP);
- PR_snprintf(dest, sizeof(dest), "%s%cdsml%cEuropean.dsml",
- bogus, FILE_PATHSEP, FILE_PATHSEP);
- create_instance_copy(src, dest, NEWFILE_MODE, 1);
- chownfile (pw, dest);
-#endif
-
- /*
- If the user has specified an LDIF file to use to initialize the database,
- load it now
- */
- if (cf->install_ldif_file && !access(cf->install_ldif_file, 0))
- {
- char msg[2*PATH_SIZE] = {0};
- int status = ds_ldif2db_backend_subtree(cf->install_ldif_file, NULL, cf->suffix);
- if (status)
- PR_snprintf(msg, sizeof(msg), "The file %s could not be loaded",
- cf->install_ldif_file);
- else
- PR_snprintf(msg, sizeof(msg), "The file %s was successfully loaded",
- cf->install_ldif_file);
- ds_show_message(msg);
- free(cf->install_ldif_file);
- cf->install_ldif_file = NULL;
- }
-
- /*
- All of the config files have been written, and the server should
- be ready to go. Start the server if the user specified to start
- it or if we are configuring the server to serve as the repository
- for SuiteSpot (Mission Control) information
- Only attempt to start the server if the port is not in use
- In order to start the server, there must either be an ldapifilepath
- specified or a valid port. If the port is not "0" it must be valid.
- */
- if(needToStartServer(cf) && !(t = create_instance_checkports(cf)))
- {
- PR_snprintf(big_line, sizeof(big_line),"SERVER_NAMES=slapd-%s",cf->servid);
- putenv(big_line);
-
- isrunning = ds_get_updown_status();
-
- if (isrunning != DS_SERVER_UP)
- {
- int start_status = 0;
- int verbose = 1;
- char errorlog[PATH_SIZE];
-
- if (getenv("USE_DEBUGGER"))
- verbose = 0;
- /* error log file */
- PR_snprintf(errorlog, sizeof(errorlog), "%s%cerrors", cf->log_dir, FILE_PATHSEP);
- start_status = ds_bring_up_server_install(verbose, cf->inst_dir, errorlog);
-
- if (start_status != DS_SERVER_UP)
- {
- /*
- If we were going to configure the server for SuiteSpot (Mission
- Control), the server must be running. Therefore, it is a very
- bad thing, and we want to exit with a non zero exit code so the
- caller will know something went wrong.
- Otherwise, if the user just wanted to start the server for some
- reason, just exit with a zero and the messages printed will
- let the user know the server wasn't started.
- */
- char *msg;
- if (start_status == DS_SERVER_PORT_IN_USE)
- msg = "The server could not be started because the port is in use.";
- else if (start_status == DS_SERVER_MAX_SEMAPHORES)
- msg = "No more servers may be installed on this system.\nPlease refer to documentation for information about how to\nincrease the number of installed servers per system.";
- else if (start_status == DS_SERVER_CORRUPTED_DB)
- msg = "The server could not be started because the database is corrupted.";
- else if (start_status == DS_SERVER_NO_RESOURCES)
- msg = "The server could not be started because the operating system is out of resources (e.g. CPU memory).";
- else if (start_status == DS_SERVER_COULD_NOT_START)
- msg = "The server could not be started due to invalid command syntax or operating system resource limits.";
- else
- msg = "The server could not be started.";
-
- if( cf->cfg_sspt && !strcmp(cf->cfg_sspt, "1") )
- {
- ds_report_error(DS_SYSTEM_ERROR, "server", msg);
- return msg;
- }
- else
- {
- ds_show_message(msg);
- return 0;
- }
- }
- else
- {
- ds_show_message("Your new directory server has been started.");
- }
- }
-
-#ifdef XP_UNIX
- ds_become_localuser_name (cf->servuser);
-#endif
-#ifdef XP_WIN32
- if( errno = WSAStartup(0x0101, &wsadata ) != 0 )
- {
- char szTmp[512];
- /*replaced errno > -1 && errno < sys_nerr ? sys_errlist[errno] :
- "unknown" with strerror(errno)*/
- PR_snprintf(szTmp, sizeof(szTmp), "Error: Windows Sockets initialization failed errno %d (%s)<br>\n", errno,
- strerror(errno), 0 );
-
- fprintf (stdout, szTmp);
- return 0;
- }
-#endif /* XP_WIN32 */
-
- /* if an already hashed password is given, we cannot do the configure_suitespot()
- stuff below, because that requires the clear text password in order to
- bind to the server. This also means that default entries and default
- acis will not be added to the server.
- */
- if (cf->rootpw == cf->roothashedpw) {
- if (status)
- return make_error ("Could not configure server (%d).", status);
- return NULL;
- }
-
- memset( &query_vars, 0, sizeof(query_vars) );
- if (!cf->use_existing_user_ds)
- query_vars.suffix = create_instance_strdup( cf->suffix );
- query_vars.ssAdmID = create_instance_strdup( cf->cfg_sspt_uid );
- query_vars.ssAdmPW1 = create_instance_strdup( cf->cfg_sspt_uidpw );
- query_vars.ssAdmPW2 = create_instance_strdup( cf->cfg_sspt_uidpw );
- query_vars.rootDN = create_instance_strdup( cf->rootdn );
- query_vars.rootPW = create_instance_strdup( cf->rootpw );
- query_vars.admin_domain = create_instance_strdup( cf->admin_domain );
- query_vars.netscaperoot = create_instance_strdup( cf->netscaperoot );
- query_vars.testconfig = create_instance_strdup( cf->testconfig );
- query_vars.consumerDN = create_instance_strdup(cf->consumerdn);
- query_vars.consumerPW = create_instance_strdup(cf->consumerhashedpw);
- if (cf->cfg_sspt && !strcmp(cf->cfg_sspt, "1"))
- query_vars.cfg_sspt = 1;
- else
- query_vars.cfg_sspt = 0;
-
- query_vars.config_admin_uid = create_instance_strdup(cf->cfg_sspt_uid);
-
- memset(&slapd_conf, 0, sizeof(SLAPD_CONFIG));
- if (sroot)
- PL_strncpyz(slapd_conf.slapd_server_root, sroot, sizeof(slapd_conf.slapd_server_root));
- if (cf->servport)
- slapd_conf.port = atoi(cf->servport);
- if (cf->servname)
- PL_strncpyz(slapd_conf.host, cf->servname, sizeof(slapd_conf.host));
-
- status = config_suitespot(&slapd_conf, &query_vars);
- if (status == -1) /* invalid or null arguments or configuration */
- return "Invalid arguments for server configuration.";
- }
- else if (t) /* just notify the user about the port conflict */
- {
- ds_show_message(t);
- }
-
-#if defined (BUILD_PRESENCE)
- /* Create script for initializing IM Presence images */
- if ((NULL == t) && (0 == status))
- {
- if ( (t = gen_presence_init_script(sroot, cf, cf->inst_dir)) )
- return(t);
- /* Initialize IM Presence images */
- status = init_presence(sroot, cf, cf->inst_dir);
- if (status)
- return make_error ("ds_exec_and_report() failed (%d).", status);
- }
-#endif
-
- if (status)
- return make_error ("Could not configure server (%d).", status);
-
- return(NULL);
-}
-
-/* ----------- Create a new server from configuration variables ----------- */
-
-
-int create_config(server_config_s *cf)
-{
- char *t = NULL;
- char error_param[BIG_LINE] = {0};
-
- t = create_server(cf, error_param);
- if(t)
- {
- char *msg;
- if (error_param[0])
- {
- msg = PR_smprintf("%s.error:could not create server %s - %s",
- error_param, cf->servid, t);
- }
- else
- {
- msg = PR_smprintf("error:could not create server %s - %s",
- cf->servid, t);
- }
- ds_show_message(msg);
- PR_smprintf_free(msg);
- }
- else
- {
- ds_show_message("Created new Directory Server");
- return 0;
- }
-
- return 1;
-}
-
-
-/* ------ check passwords are same and satisfy minimum length policy------- */
-static int check_passwords(char *pw1, char *pw2)
-{
- if (strcmp (pw1, pw2) != 0) {
- ds_report_error (DS_INCORRECT_USAGE, " different passwords",
- "Enter the password again."
- " The two passwords you entered are different.");
- return 1;
- }
-
- if ( ((int) strlen(pw1)) < 8 ) {
- ds_report_error (DS_INCORRECT_USAGE, " password too short",
- "The password must be at least 8 characters long.");
- return 1;
- }
-
- return 0;
-}
-
-static char *
-set_path_attribute(char *attr, char *defaultval, char *prefix)
-{
- char *temp = ds_a_get_cgi_var(attr, NULL, NULL);
- char *rstr = NULL;
- if (prefix && strlen(prefix) > 0) {
- if (NULL == temp || '\0' == *temp) {
- if (NULL == defaultval) {
- rstr = PR_smprintf("%s", prefix);
- } else if (FILE_PATHSEP == *defaultval) {
- rstr = PR_smprintf("%s%s", prefix, defaultval);
- } else {
- rstr = PR_smprintf("%s%c%s", prefix, FILE_PATHSEP, defaultval);
- }
- } else {
- if (NULL == temp) {
- rstr = PR_smprintf("%s", prefix);
- } else if (FILE_PATHSEP == *temp) {
- rstr = PR_smprintf("%s%s", prefix, temp);
- } else {
- rstr = PR_smprintf("%s%c%s", prefix, FILE_PATHSEP, temp);
- }
- }
- } else {
- if (NULL == temp || '\0' == *temp) {
- rstr = defaultval;
- } else {
- rstr = PL_strdup(temp);
- }
- }
- return rstr;
-}
-
-/* ------ Parse the results of a form and create a server from them ------- */
-/*
- * FHS description
- * cf->prefix: %{_prefix}
- * cf->sroot: %{_libdir}/PACKAGE_NAME
- * cf->localstatedir: %{_localstatedir}
- * cf->sysconfdir: %{_sysconfdir}
- * cf->bindir: %{_bindir}
- * cf->sbindir: %{_sbindir}
- * cf->datadir: %{_datadir}
- * cf->docdir: %{_docdir}
- * cf->inst_dir: <sroot>/slapd-<servid>
- * cf->config_dir: <localstatedir>/lib/PACKAGE_NAME/slapd-<servid>
- * cf->schema_dir: <localstatedir>/lib/PACKAGE_NAME/slapd-<servid>/schema
- * cf->lock_dir: <localstatedir>/lock/PACKAGE_NAME/slapd-<servid>
- * cf->log_dir: <localstatedir>/log/PACKAGE_NAME/slapd-<servid>
- * cf->run_dir: <localstatedir>/run/PACKAGE_NAME (slapd-instance.pid slapd-instance.startpid files)
- * cf->db_dir: <localstatedir>/lib/PACKAGE_NAME/slapd-<servid>/db
- * cf->bak_dir: <localstatedir>/lib/PACKAGE_NAME/slapd-<servid>/bak
- * cf->tmp_dir: <localstatedir>/tmp/PACKAGE_NAME/slapd-<servid>
- * cf->ldif_dir: <datadir>/<brand-ds>/ldif
- * cf->cert_dir: <sysconfdir>/PACKAGE_NAME/slapd-<servid>
- * cf->sasl_path: %{_libdir}/sasl2
- * cf->plugin_dir: <sroot>/plugins
- *
- * NOTES:
- * If prefix is given, all the other paths start from prefix.
- * NETSITE_ROOT is treated as a secondary prefix. (If prefix is also set,
- * it's ignored. If prefix is not set, NETSITE_ROOT becomes prefix.
- * If both are not set, the paths start from '/'.)
- * Therefore, NETSITE_ROOT is not mandatory any more.
- */
-
-int parse_form(server_config_s *cf)
-{
- char *rm = getenv("REQUEST_METHOD");
- char *qs = getenv("QUERY_STRING");
- char *cfg_sspt_uid_pw1 = NULL;
- char *cfg_sspt_uid_pw2 = NULL;
- char *temp = NULL;
- char *prefix = NULL;
- int prefixlen = 0;
- LDAPURLDesc *desc = 0;
-
- cf->package_name = PACKAGE_NAME;
- if (rm && qs && !strcmp(rm, "GET"))
- {
- ds_get_begin(qs);
- }
- else if (ds_post_begin(stdin))
- {
- return 1;
- }
-
- if (rm)
- {
- printf("Content-type: text/plain\n\n");
- }
- /* else we are being called from server installation; no output */
-
- prefix = getenv("NETSITE_ROOT");
- temp = ds_a_get_cgi_var("prefix", NULL, NULL);
- if (NULL != temp) {
- prefix = cf->prefix = PL_strdup(temp);
- } else if (NULL != prefix) {
- cf->prefix = PL_strdup(prefix); /* value of NETSITE_ROOT */
- } else {
- prefix = cf->prefix = PL_strdup("/");
- }
-
-#if defined (IS_FHS_OPT)
- cf->sroot = PR_smprintf("%sopt%c%s", prefix, FILE_PATHSEP, cf->package_name);
-#else
- cf->sroot = PR_smprintf("%s%s%c%s",
- prefix, LIBDIR, FILE_PATHSEP, cf->package_name);
-#endif
-
- temp = ds_a_get_cgi_var("sasl_path", NULL, NULL);
- if (NULL != temp) {
- /* if sasl_path is given, we set it in the conf file regardless of
- * the platform. */
- cf->sasl_path = PL_strdup(temp);
- }
-#if !defined( LINUX )
- /* if not linux, we package sasl2 with DS,
- and always set it in the conf file. */
- else
- {
- cf->sasl_path = PR_smprintf("%s%s%csasl2", prefix, LIBDIR, FILE_PATHSEP);
- }
-#endif
-
-#if defined (IS_FHS_OPT)
- cf->plugin_dir = PR_smprintf("%s%s%cplugins", prefix, LIBDIR, FILE_PATHSEP);
-#else
- cf->plugin_dir = PR_smprintf("%s%cplugins", cf->sroot, FILE_PATHSEP);
-#endif
-
- if (!(cf->servname = ds_a_get_cgi_var("servname", "Server Name",
- "Please give a hostname for your server.")))
- {
- return 1;
- }
-
- cf->bindaddr = ds_a_get_cgi_var("bindaddr", NULL, NULL);
-#if defined(ENABLE_LDAPI)
- temp = ds_a_get_cgi_var("ldapifilepath", NULL, NULL);
- if (NULL != temp) {
- cf->ldapifilepath = PL_strdup(temp);
- }
-#endif
-
- temp = ds_a_get_cgi_var("servport", NULL, NULL);
- if (!temp
-#if defined(ENABLE_LDAPI)
- && !cf->ldapifilepath
-#endif
- ) {
-#if defined(ENABLE_LDAPI)
- ds_show_message("error: either servport or ldapifilepath must be specified.");
-#else
- ds_show_message("error: servport must be specified.");
-#endif
- return 1;
- }
-
- if (NULL != temp) {
- cf->servport = PL_strdup(temp);
- } else {
- cf->servport = PL_strdup("0");
- }
-
- cf->cfg_sspt = ds_a_get_cgi_var("cfg_sspt", NULL, NULL);
- cf->cfg_sspt_uid = ds_a_get_cgi_var("cfg_sspt_uid", NULL, NULL);
- if (cf->cfg_sspt_uid && *(cf->cfg_sspt_uid) &&
- !(cf->cfg_sspt_uidpw = ds_a_get_cgi_var("cfg_sspt_uid_pw", NULL, NULL)))
- {
-
- if (!(cfg_sspt_uid_pw1 = ds_a_get_cgi_var("cfg_sspt_uid_pw1", "Password",
- "Enter the password for the Mission Control Administrator's account.")))
- {
- return 1;
- }
-
- if (!(cfg_sspt_uid_pw2 = ds_a_get_cgi_var("cfg_sspt_uid_pw2", "Password",
- "Enter the password for the Mission Control Administrator account, "
- "twice.")))
- {
- return 1;
- }
-
- if (strcmp (cfg_sspt_uid_pw1, cfg_sspt_uid_pw2) != 0)
- {
- ds_report_error (DS_INCORRECT_USAGE, " different passwords",
- "Enter the Mission Control Administrator account password again."
- " The two Mission Control Administrator account passwords "
- "you entered are different.");
- return 1;
- }
- if ( ((int) strlen(cfg_sspt_uid_pw1)) < 1 ) {
- ds_report_error (DS_INCORRECT_USAGE, " password too short",
- "The password must be at least 1 character long.");
- return 1;
- }
- cf->cfg_sspt_uidpw = cfg_sspt_uid_pw1;
- }
-
- if (cf->cfg_sspt && *cf->cfg_sspt && !strcmp(cf->cfg_sspt, "1") &&
- !cf->cfg_sspt_uid)
- {
- ds_report_error (DS_INCORRECT_USAGE,
- " Userid not specified",
- "A Userid for Mission Control Administrator must be specified.");
- return 1;
- }
- cf->start_server = ds_a_get_cgi_var("start_server", NULL, NULL);
- if (temp = ds_a_get_cgi_var("install_full_schema", NULL, NULL)) {
- cf->install_full_schema = atoi(temp);
- }
- cf->secserv = ds_a_get_cgi_var("secserv", NULL, NULL);
- if (cf->secserv && strcmp(cf->secserv, "off"))
- cf->secservport = ds_a_get_cgi_var("secservport", NULL, NULL);
- if (!(cf->servid = ds_a_get_cgi_var("servid", "Server Identifier",
- "Please give your server a short identifier.")))
- {
- return 1;
- }
-
-#ifdef XP_UNIX
- cf->servuser = ds_a_get_cgi_var("servuser", NULL, NULL);
-#endif
-
- cf->suffix = dn_normalize_convert(ds_a_get_cgi_var("suffix", NULL, NULL));
-
- if (cf->suffix == NULL) {
- cf->suffix = "";
- }
-
- cf->rootdn = dn_normalize_convert(ds_a_get_cgi_var("rootdn", NULL, NULL));
- if (cf->rootdn && *(cf->rootdn)) {
- if (!(cf->rootpw = ds_a_get_cgi_var("rootpw", NULL, NULL)))
- {
- char* pw1 = ds_a_get_cgi_var("rootpw1", "Password",
- "Enter the password for the unrestricted user.");
- char* pw2 = ds_a_get_cgi_var("rootpw2", "Password",
- "Enter the password for the unrestricted user, twice.");
-
- if (!pw1 || !pw2 || check_passwords(pw1, pw2))
- {
- return 1;
- }
-
- cf->rootpw = pw1;
- }
- if (strchr(cf->rootpw, '}') &&
- (!PL_strncasecmp(cf->rootpw, "{SHA", 4) ||
- !PL_strncasecmp(cf->rootpw, "{SSHA", 5) ||
- !PL_strncasecmp(cf->rootpw, "{CRYPT}", 7) ||
- !PL_strncasecmp(cf->rootpw, "{MD5}", 5))) {
- /* assume the password is already hashed */
- cf->roothashedpw = cf->rootpw;
- } else { /* assume cleartext password */
- /* Encode the password in SSHA by default */
- cf->roothashedpw = (char *)ds_salted_sha1_pw_enc (cf->rootpw);
- }
- }
-
- cf->admin_domain = ds_a_get_cgi_var("admin_domain", NULL, NULL);
-
- if ((temp = ds_a_get_cgi_var("use_existing_user_ds", NULL, NULL))) {
- cf->use_existing_user_ds = atoi(temp);
- } else {
- cf->use_existing_user_ds = 0; /* we are creating it */
- }
-
- /* if being called as a CGI, the user_ldap_url will be the directory
- we're creating */
- /* this is the directory we're creating, and we cannot create an ssl
- directory, so we don't have to worry about ldap vs ldaps here */
- if ((temp = ds_a_get_cgi_var("user_ldap_url", NULL, NULL))) {
- cf->user_ldap_url = strdup(temp);
- } else {
- cf->user_ldap_url = PR_smprintf("ldap://%s:%s/%s", cf->servname,
- cf->servport, cf->suffix);
- }
-
- cf->samplesuffix = NULL;
-
- cf->disable_schema_checking = ds_a_get_cgi_var("disable_schema_checking",
- NULL, NULL);
-
- cf->adminport = ds_a_get_cgi_var("adminport", NULL, NULL);
-
- cf->install_ldif_file = ds_a_get_cgi_var("install_ldif_file", NULL, NULL);
-
- cf->localstatedir = set_path_attribute("localstatedir", LOCALSTATEDIR, prefix);
- cf->sysconfdir = set_path_attribute("sysconfdir", SYSCONFDIR, prefix);
- cf->bindir = set_path_attribute("bindir", BINDIR, prefix);
- cf->sbindir = set_path_attribute("sbindir", SBINDIR, prefix);
- cf->datadir = set_path_attribute("datadir", DATADIR, prefix);
- cf->docdir = set_path_attribute("docdir", DOCDIR, prefix);
-
- temp = ds_a_get_cgi_var("inst_dir", NULL, NULL);
- if (NULL == temp) {
- cf->inst_dir = PR_smprintf("%s%c%s-%s",
- cf->sroot, FILE_PATHSEP, PRODUCT_NAME, cf->servid);
- } else {
- cf->inst_dir = PL_strdup(temp);
- }
-
- temp = ds_a_get_cgi_var("config_dir", NULL, NULL);
- if (NULL == temp) {
- cf->config_dir = PR_smprintf("%s%c%s%c%s-%s",
- cf->sysconfdir, FILE_PATHSEP,
- cf->package_name, FILE_PATHSEP,
- PRODUCT_NAME, cf->servid);
- } else {
- cf->config_dir = PL_strdup(temp);
- }
- /* set config dir to the environment variable DS_CONFIG_DIR */
- ds_set_config_dir(cf->config_dir);
-
- cf->schema_dir = ds_a_get_cgi_var("schema_dir", NULL, NULL);
- temp = ds_a_get_cgi_var("schema_dir", NULL, NULL);
- if (NULL == temp) {
- cf->schema_dir = PR_smprintf("%s%c%s%c%s-%s%cschema",
- cf->sysconfdir, FILE_PATHSEP,
- cf->package_name, FILE_PATHSEP,
- PRODUCT_NAME, cf->servid, FILE_PATHSEP);
- } else {
- cf->schema_dir = PL_strdup(temp);
- }
-
- temp = ds_a_get_cgi_var("lock_dir", NULL, NULL);
- if (NULL == temp) {
-#if defined (IS_FHS_OPT)
- cf->lock_dir = PR_smprintf("%s%c%s%c%s-%s%clock",
- cf->localstatedir, FILE_PATHSEP,
- cf->package_name, FILE_PATHSEP,
- PRODUCT_NAME, cf->servid, FILE_PATHSEP);
-#else
- cf->lock_dir = PR_smprintf("%s%clock%c%s%c%s-%s",
- cf->localstatedir, FILE_PATHSEP, FILE_PATHSEP,
- cf->package_name, FILE_PATHSEP,
- PRODUCT_NAME, cf->servid);
-#endif
- } else {
- cf->lock_dir = PL_strdup(temp);
- }
-
- temp = ds_a_get_cgi_var("log_dir", NULL, NULL);
- if (NULL == temp) {
-#if defined (IS_FHS_OPT)
- cf->log_dir = PR_smprintf("%s%c%s%c%s-%s%clog",
- cf->localstatedir, FILE_PATHSEP,
- cf->package_name, FILE_PATHSEP,
- PRODUCT_NAME, cf->servid, FILE_PATHSEP);
-#else
- cf->log_dir = PR_smprintf("%s%clog%c%s%c%s-%s",
- cf->localstatedir, FILE_PATHSEP, FILE_PATHSEP,
- cf->package_name, FILE_PATHSEP,
- PRODUCT_NAME, cf->servid);
-#endif
- } else {
- cf->log_dir = PL_strdup(temp);
- }
-
- temp = ds_a_get_cgi_var("run_dir", NULL, NULL);
- if (NULL == temp) {
-#if defined (IS_FHS_OPT)
- cf->run_dir = PR_smprintf("%s%c%s%c%s-%s%crun",
- cf->localstatedir, FILE_PATHSEP,
- cf->package_name, FILE_PATHSEP,
- PRODUCT_NAME, cf->servid, FILE_PATHSEP);
-#else
- cf->run_dir = PR_smprintf("%s%crun%c%s",
- cf->localstatedir, FILE_PATHSEP, FILE_PATHSEP,
- cf->package_name);
-#endif
- } else {
- cf->run_dir = PL_strdup(temp);
- }
- /* set run dir to the environment variable DS_RUN_DIR */
- ds_set_run_dir(cf->run_dir);
-
- temp = ds_a_get_cgi_var("db_dir", NULL, NULL);
- if (NULL == temp) {
-#if defined (IS_FHS_OPT)
- cf->db_dir = PR_smprintf("%s%c%s%c%s-%s%cdb",
- cf->localstatedir, FILE_PATHSEP,
- cf->package_name, FILE_PATHSEP,
- PRODUCT_NAME, cf->servid, FILE_PATHSEP);
-#else
- cf->db_dir = PR_smprintf("%s%clib%c%s%c%s-%s%cdb",
- cf->localstatedir, FILE_PATHSEP, FILE_PATHSEP,
- cf->package_name, FILE_PATHSEP,
- PRODUCT_NAME, cf->servid, FILE_PATHSEP);
-#endif
- } else {
- cf->db_dir = PL_strdup(temp);
- }
-
- temp = ds_a_get_cgi_var("bak_dir", NULL, NULL);
- if (NULL == temp) {
-#if defined (IS_FHS_OPT)
- cf->bak_dir = PR_smprintf("%s%c%s%c%s-%s%cbak",
- cf->localstatedir, FILE_PATHSEP,
- cf->package_name, FILE_PATHSEP,
- PRODUCT_NAME, cf->servid, FILE_PATHSEP);
-#else
- cf->bak_dir = PR_smprintf("%s%clib%c%s%c%s-%s%cbak",
- cf->localstatedir, FILE_PATHSEP, FILE_PATHSEP,
- cf->package_name, FILE_PATHSEP,
- PRODUCT_NAME, cf->servid, FILE_PATHSEP);
-#endif
- } else {
- cf->bak_dir = PL_strdup(temp);
- }
- /* set bak dir to the environment variable DS_BAK_DIR */
- ds_set_bak_dir(cf->bak_dir);
-
- temp = ds_a_get_cgi_var("ldif_dir", NULL, NULL);
- if (NULL == temp) {
-#if defined (IS_FHS_OPT)
- cf->ldif_dir = PR_smprintf("%s%cldif",
- cf->datadir, FILE_PATHSEP);
-#else
- cf->ldif_dir = PR_smprintf("%s%c%s%cldif",
- cf->datadir, FILE_PATHSEP, cf->package_name, FILE_PATHSEP);
-#endif
- } else {
- cf->ldif_dir = PL_strdup(temp);
- }
-
- temp = ds_a_get_cgi_var("tmp_dir", NULL, NULL);
- if (NULL == temp) {
-#if defined (IS_FHS_OPT)
- cf->tmp_dir = PR_smprintf("%s%c%s%c%s-%s%ctmp",
- cf->localstatedir, FILE_PATHSEP,
- cf->package_name, FILE_PATHSEP,
- PRODUCT_NAME, cf->servid, FILE_PATHSEP);
-#else
- cf->tmp_dir = PR_smprintf("%s%ctmp%c%s%c%s-%s",
- cf->localstatedir, FILE_PATHSEP, FILE_PATHSEP,
- cf->package_name, FILE_PATHSEP,
- PRODUCT_NAME, cf->servid);
-#endif
- } else {
- cf->tmp_dir = PL_strdup(temp);
- }
- /* set tmp dir to the environment variable DS_TMP_DIR */
- ds_set_tmp_dir(cf->tmp_dir);
-
- temp = ds_a_get_cgi_var("cert_dir", NULL, NULL);
- if (NULL == temp) {
- cf->cert_dir = PL_strdup(cf->config_dir);
- } else {
- cf->cert_dir = PL_strdup(temp);
- }
-
- return 0;
-}
diff --git a/ldap/admin/src/create_instance.h b/ldap/admin/src/create_instance.h
deleted file mode 100644
index 1e8d2665..00000000
--- a/ldap/admin/src/create_instance.h
+++ /dev/null
@@ -1,229 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-/*
- * create_instance.h: create an instance of a directory server
- *
- * Rob McCool
- */
-
-
-#ifndef _create_instance_h
-#define _create_instance_h
-
-#ifdef __cplusplus
-extern "C" { /* Assume C declarations for C++ */
-#endif /* __cplusplus */
-
-#ifndef PACKAGE_NAME
-#define PACKAGE_NAME "fedora-ds"
-#endif
-
-#ifdef XP_UNIX
-#define PRODUCT_NAME "slapd"
-#define PRODUCT_BIN "ns-slapd"
-#ifndef LOCALSTATEDIR
-#define LOCALSTATEDIR "/var"
-#endif
-#ifndef SYSCONFDIR
-#define SYSCONFDIR "/etc"
-#endif
-#if defined (IS_FHS)
-#ifndef LIBDIR
-#define LIBDIR "/usr/lib"
-#endif
-#ifndef BINDIR
-#define BINDIR "/usr/bin"
-#endif
-#ifndef SBINDIR
-#define SBINDIR "/usr/sbin"
-#endif
-#ifndef DATADIR
-#define DATADIR "/usr/share"
-#endif
-#ifndef DOCDIR
-#define DOCDIR "/usr/doc"
-#endif
-#else /* RPM */
-#ifndef LIBDIR
-#define LIBDIR "/lib"
-#endif
-#ifndef BINDIR
-#define BINDIR "/bin"
-#endif
-#ifndef SBINDIR
-#define SBINDIR "/sbin"
-#endif
-#ifndef DATADIR
-#define DATADIR "/share"
-#endif
-#ifndef DOCDIR
-#define DOCDIR "/doc"
-#endif
-#endif /* IS_FHS */
-#else /* Windows */
-#define PRODUCT_NAME "slapd"
-#define PRODUCT_BIN "slapd"
-#define LOCALSTATEDIR "\\var"
-#define SYSCONFDIR "\\etc"
-#define LIBDIR "\\usr\\lib"
-#define BINDIR "\\usr\\bin"
-#define SBINDIR "\\usr\\sbin"
-#define DATADIR "\\usr\\share"
-#define DOCDIR "\\usr\\doc"
-#endif
-
-typedef struct {
- char *sroot; /* _libdir */
- char *localstatedir;
- char *sysconfdir;
- char *bindir;
- char *sbindir;
- char *datadir;
- char *docdir;
-
- char *package_name;
- char *lang;
-
- char *servname;
- char *bindaddr;
- char *servport;
- char *suitespot3x_uid;
- char *cfg_sspt;
- char *cfg_sspt_uid;
- char *cfg_sspt_uidpw;
- char *secserv;
- char *secservport;
- char *rootdn;
- char *rootpw;
- char *roothashedpw;
- char *replicationdn;
- char *replicationpw;
- char *replicationhashedpw;
- char *consumerdn;
- char *consumerpw;
- char *consumerhashedpw;
- char *changelogdir;
- char *changelogsuffix;
- char *suffix;
- char *loglevel;
- char *netscaperoot;
- char *samplesuffix;
- char *testconfig;
- char *servid;
-#ifdef XP_UNIX
- char *servuser;
- char *numprocs;
-#endif
- char *minthreads;
- char *maxthreads;
- int upgradingServer;
-
- char * start_server;
-
- char * admin_domain;
- char * user_ldap_url;
- int use_existing_user_ds;
- char * disable_schema_checking;
- char * install_ldif_file;
- char *adminport;
- char *inst_dir;
- char *config_dir;
- char *schema_dir;
- char *lock_dir;
- char *log_dir;
- char *run_dir;
- char *db_dir;
- char *bak_dir;
- char *ldif_dir;
- char *plugin_dir;
- char *tmp_dir;
- char *cert_dir;
- char *sasl_path;
- char *prefix;
-#if defined(ENABLE_LDAPI)
- char *ldapifilepath;
-#endif
- int install_full_schema;
-} server_config_s;
-
-
-#ifdef NS_UNSECURE
-#define DEFAULT_ID "unsecure"
-#else
-#define DEFAULT_ID "secure"
-#endif
-
-/*
- Initialize a server config structure with default values, using sroot
- as the server root, and hn as the machine's full host name.
- */
-void set_defaults(char *sroot, char *hn, server_config_s *conf);
-
-/*
- Create a server using the given configuration structure. This affects
- files and directories in the structure's server root. space for param_name
- should be allocated by the caller e.g. char param_name[ENOUGH_ROOM].
- If there was a problem with one of the parameters passed in for instance
- creation e.g. servport is out of range, the param_name parameter will be
- filled in with "servport" and the error message returned will contain
- additional detail
- */
-char *create_server(server_config_s *cf, char *param_name);
-/*
- Update script files in the instance directory
-*/
-int update_server(server_config_s *cf);
-
-/* from script-gen.c */
-int generate_script(const char *inpath, const char *outpath, int mode,
- const char *table[][2]);
-
-/* richm - moved from instindex.cpp */
-int create_config(server_config_s *cf);
-int parse_form(server_config_s *cf);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif
diff --git a/ldap/admin/src/ds_newinst.c b/ldap/admin/src/ds_newinst.c
deleted file mode 100644
index 5de0c4d7..00000000
--- a/ldap/admin/src/ds_newinst.c
+++ /dev/null
@@ -1,156 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-/*
- * ds_newinst.c - creates a new instance of directory server, scripts,
- * configuration, etc. Does not create any Admin Server stuff or
- * deal with any setuputil stuff, but may be optionally used to create
- * and configure the config suffix (o=NetscapeRoot)
- */
-
-#include <nss.h>
-#include <nspr.h>
-
-#include "create_instance.h"
-
-#include "dsalib.h"
-#include "ldap.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-/* --------------------------------- main --------------------------------- */
-
-static void
-printInfo(int argc, char *argv[], char *envp[], FILE* fp)
-{
- int ii = 0;
- if (!fp)
- fp = stdout;
-
- fprintf(fp, "Program name = %s\n", argv[0]);
- for (ii = 1; ii < argc; ++ii)
- {
- fprintf(fp, "argv[%d] = %s\n", ii, argv[ii]);
- }
-
- for (ii = 0; envp[ii]; ++ii)
- {
- fprintf(fp, "%s\n", envp[ii]);
- }
-
- fprintf(fp, "#####################################\n");
-}
-
-int main(int argc, char *argv[], char *envp[])
-{
- char *rm = getenv("REQUEST_METHOD");
- int status = 0;
- server_config_s cf;
- char *infFileName = 0;
- int reconfig = 0;
- int ii = 0;
- int cgi = 0;
-
- /* Initialize NSS to make ds_salted_sha1_pw_enc() happy */
- if (NSS_NoDB_Init(NULL) != SECSuccess) {
- ds_report_error(DS_GENERAL_FAILURE, " initialization failure",
- "Unable to initialize the NSS subcomponent.");
- exit(1);
- }
-
- /* make stdout unbuffered */
- setbuf(stdout, 0);
-
-#ifdef XP_WIN32
- if ( getenv("DEBUG_DSINST") )
- DebugBreak();
-#endif
-
- memset(&cf, 0, sizeof(cf));
- set_defaults(0, 0, &cf);
-
- /* scan cmd line arguments */
- for (ii = 0; ii < argc; ++ii)
- {
- if (!strcmp(argv[ii], "-f") && (ii + 1) < argc &&
- argv[ii+1])
- infFileName = argv[ii+1];
- else if (!strcmp(argv[ii], "-r"))
- reconfig = 1;
- }
-
- /* being called as a CGI */
- if (rm)
- {
- cgi = 1;
- status = parse_form(&cf);
- if (!status)
- status = create_config(&cf);
- }
- /* case 3: punt */
- else
- {
- ds_report_error (
- DS_INCORRECT_USAGE,
- "No request method specified",
- "A REQUEST_METHOD must be specified (POST, GET) to run this CGI program.");
- status = 1;
- }
-
- if (cgi)
- {
- /* The line below is used by the console to detect
- the end of the operation. See replyHandler() in
- MigrateCreate.java */
- fprintf(stdout, "NMC_Status: %d\n", status);
- /* In the past, we used to call rpt_success() or rpt_err()
- according to status. However these functions are not designed
- for our case: they print an HTTP header line "Content-type: text/html" */
- }
-
-#if defined( hpux )
- _exit(status);
-#else
- exit(status);
-#endif
-}
diff --git a/ldap/admin/src/ds_newinst.pl.in b/ldap/admin/src/ds_newinst.pl.in
deleted file mode 100644
index 739f7a2a..00000000
--- a/ldap/admin/src/ds_newinst.pl.in
+++ /dev/null
@@ -1,399 +0,0 @@
-#!/usr/bin/env perl
-# BEGIN COPYRIGHT BLOCK
-# This Program is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; version 2 of the License.
-#
-# This Program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place, Suite 330, Boston, MA 02111-1307 USA.
-#
-# In addition, as a special exception, Red Hat, Inc. gives You the additional
-# right to link the code of this Program with code not covered under the GNU
-# General Public License ("Non-GPL Code") and to distribute linked combinations
-# including the two, subject to the limitations in this paragraph. Non-GPL Code
-# permitted under this exception must only link to the code of this Program
-# through those well defined interfaces identified in the file named EXCEPTION
-# found in the source code files (the "Approved Interfaces"). The files of
-# Non-GPL Code may instantiate templates or use macros or inline functions from
-# the Approved Interfaces without causing the resulting work to be covered by
-# the GNU General Public License. Only Red Hat, Inc. may make changes or
-# additions to the list of Approved Interfaces. You must obey the GNU General
-# Public License in all respects for all of the Program code and other code used
-# in conjunction with the Program except the Non-GPL Code covered by this
-# exception. If you modify this file, you may extend this exception to your
-# version of the file, but you are not obligated to do so. If you do not wish to
-# provide this exception without modification, you must delete this exception
-# statement from your version and license this file solely under the GPL without
-# exception.
-#
-#
-# Copyright (C) 2005 Red Hat, Inc.
-# All rights reserved.
-# END COPYRIGHT BLOCK
-use Net::Domain qw(hostfqdn);
-use IPC::Open2;
-use Symbol;
-use CGI::Util qw(escape);
-use Cwd;
-use File::Basename;
-
-sub usage {
- my $msg = shift;
- print <<EOF;
-Error: $msg
-Usage: $0 [-|filename.inf] [args]
-The filename, if any, should be specified first. After the filename, other args
-can be provided to override settings in the provided file in this format:
- section.param=value
-e.g.
- General.FullMachineName=foo.example.com
-or
- "slapd.Suffix=dc=example, dc=com"
-
-So, for example, if you use
- $0 filename.inf General.FullMachineName=bar.example.com
-And your filename.inf file has
- [General]
- FullMachineName= foo.example.com
-$0 will use bar.example.com for FullMachineName since that was the one passed on the command line
-
-$0 will attempt to generate reasonable default values for some of the parameters, but there are a couple that must be specified:
- slapd.ServerPort slapd.RootDNPwd
-Also General.SuiteSpotUserID must be specified if running as root. If not running as root, the uid of the user will be used.
-EOF
- exit 1
-}
-
-sub getCgiContentAndLength {
- my $args = shift;
- my $content = "";
- my $firsttime = 1;
- while (my ($kk, $vv) = each %{$args}) {
- next if (!defined($kk) || !defined($vv));
- if ($firsttime) {
- $firsttime = 0;
- } else {
- $content = $content . "&";
- }
- $content = $content . $kk . "=" . escape($vv);
- }
- my $length = length($content);
-
- return ($content, $length);
-}
-
-# fakes out the ds_newinst program into thinking it is getting cgi input
-sub cgiFake {
- my ($verbose, $prog, $args) = @_;
- # construct content string
- my ($content, $length) = &getCgiContentAndLength($args);
-
- # setup CGI environment
- $ENV{REQUEST_METHOD} = "POST";
- $ENV{CONTENT_LENGTH} = $length;
- $ENV{SERVER_NAMES} = 'slapd-' . $args->{servid};
-
-# print "content = $content\n";
-
- # open the program
- my $curdir = getcwd();
- my $dir = dirname($prog);
- my $exe = basename($prog);
- chdir $dir;
- my $input = gensym();
- my $output = gensym();
- # make sure the child exit code is reset before starting the fake
- # cgi program
- $? = 0;
- my $pid = open2($input, $output, "./$exe");
- sleep(1); # allow prog to init stdin read buffers
- print $output $content;
- close $output;
-
- if ($?) {
- print "Warning: $prog returned code $? and $!\n";
- }
-
- my $exitCode = 1;
- my @lines;
- while (<$input>) {
- print $_ if ($verbose);
- push @lines, $_;
- if (/^NMC_Status:\s*(\d+)/) {
- $exitCode = $1;
- last;
- }
- }
- close $input;
- chdir $curdir;
-
- if ($exitCode) {
- print "CGI $prog failed with $exitCode: here is the output:\n";
- map { print $_ } @lines;
- }
-
- if ($exitCode != 0) {
- print "Error: could not run $prog: $exitCode\n";
- return $exitCode;
- }
-
- return 0;
-}
-
-sub addAndCheck {
- my $dest = shift;
- my $dkey = shift;
- my $source = shift;
- my $ssec = shift;
- my $skey = shift;
-
- if (! $source->{$ssec}->{$skey}) {
- usage("Missing required parameter $ssec - $skey\n");
- }
-
- $dest->{$dkey} = $source->{$ssec}->{$skey};
-}
-
-sub readInfFile {
- my $filename = shift;
- my $fh;
- if ($filename eq "-") {
- $fh = \*STDIN;
- } else {
- open(IN, $filename) or usage("could not open file $filename: $!");
- $fh = \*IN;
- }
- while (<$fh>) {
- # e.g. [General]
- if (/^\[(.*?)\]/) {
- $curSection = $1;
- } elsif (/^\s*$/) {
- next; # skip blank lines
- } elsif (/^\s*\#/) {
- next; # skip comment lines
- } elsif (/^\s*(.*?)\s*=\s*(.*?)\s*$/) {
- $table{$curSection}->{$1} = $2;
- }
- }
- if ($filename ne "-") {
- close IN;
- }
-}
-
-usage("No arguments given") if (!@ARGV);
-
-# process command line arguments
-for (@ARGV) {
- if (/^([\w_-]+)\.([\w_-]+)=(.*)$/) { # e.g. section.param=value
- $table{$1}->{$2} = $3;
- } else { # file?
- readInfFile($_);
- }
-}
-
-#printhash (\%table);
-
-# set default values
-if (!$table{General}->{FullMachineName}) {
- $table{General}->{FullMachineName} = hostfqdn;
-}
-
-if (!$table{General}->{SuiteSpotUserID}) {
- if ($> != 0) { # if not root, use the user's uid
- $table{General}->{SuiteSpotUserID} = getlogin;
- }
- # otherwise, the uid must be specified
-}
-
-if (!$table{slapd}->{RootDN}) {
- $table{slapd}->{RootDN} = "cn=Directory Manager";
-}
-
-if (!$table{slapd}->{Suffix}) {
- my $suffix = $table{General}->{FullMachineName};
- # convert fqdn to dc= domain components
- $suffix =~ s/^[^\.]*\.//; # just the domain part
- $suffix = "dc=$suffix";
- $suffix =~ s/\./, dc=/g;
- $table{slapd}->{Suffix} = $suffix;
-}
-
-if (!$table{slapd}->{ServerIdentifier}) {
- my $servid = $table{General}->{FullMachineName};
- # strip out the leftmost domain component
- $servid =~ s/\..*$//;
- $table{slapd}->{ServerIdentifier} = $servid;
-}
-
-# next, construct a hash table with our arguments
-
-my %cgiargs = ();
-my $package_name = "@package_name@";
-# the following items are always required
-addAndCheck(\%cgiargs, "servname", \%table, "General", "FullMachineName");
-addAndCheck(\%cgiargs, "servuser", \%table, "General", "SuiteSpotUserID");
-addAndCheck(\%cgiargs, "rootdn", \%table, "slapd", "RootDN");
-addAndCheck(\%cgiargs, "rootpw", \%table, "slapd", "RootDNPwd");
-addAndCheck(\%cgiargs, "servid", \%table, "slapd", "ServerIdentifier");
-addAndCheck(\%cgiargs, "suffix", \%table, "slapd", "Suffix");
-
-if (defined($table{"General"}->{"ServerRoot"})) {
- $cgiargs{"sroot"} = $table{"General"}->{"ServerRoot"};
-} else {
- $cgiargs{"sroot"} = '@serverdir@';
-}
-
-# either servport or ldapifilepath must be specified - the server must
-# listen to something . . .
-my $canlisten = 0;
-if (defined($table{"slapd"}->{"ServerPort"}) &&
- $table{"slapd"}->{"ServerPort"} > 0) {
- $canlisten = 1;
- $cgiargs{"servport"} = $table{"slapd"}->{"ServerPort"};
-} else {
- $cgiargs{"servport"} = "0"; # 0 means do not listen
-}
-if (defined($table{"slapd"}->{"ldapifilepath"})) {
- $canlisten = 1;
- $cgiargs{"ldapifilepath"} = $table{"slapd"}->{"ldapifilepath"};
-}
-if (! $canlisten) {
- usage("Either ServerPort or ldapifilepath must be specified in the slapd section");
-}
-
-# the following items are optional
-
-$cgiargs{"lock_dir"} = $table{"slapd"}->{"lock_dir"};
-$cgiargs{"log_dir"} = $table{"slapd"}->{"log_dir"};
-$cgiargs{"run_dir"} = $table{"slapd"}->{"run_dir"};
-$cgiargs{"db_dir"} = $table{"slapd"}->{"db_dir"};
-$cgiargs{"bak_dir"} = $table{"slapd"}->{"bak_dir"};
-$cgiargs{"ldif_dir"} = $table{"slapd"}->{"ldif_dir"};
-$cgiargs{"tmp_dir"} = $table{"slapd"}->{"tmp_dir"};
-$cgiargs{"cert_dir"} = $table{"slapd"}->{"cert_dir"};
-$cgiargs{"localstatedir"} = $table{"slapd"}->{"localstatedir"};
-$cgiargs{"sysconfdir"} = $table{"slapd"}->{"sysconfdir"};
-$cgiargs{"bindir"} = $table{"slapd"}->{"bindir"};
-$cgiargs{"sbindir"} = $table{"slapd"}->{"sbindir"};
-$cgiargs{"datadir"} = $table{"slapd"}->{"datadir"};
-$cgiargs{"docdir"} = $table{"slapd"}->{"docdir"};
-$cgiargs{"inst_dir"} = $table{"slapd"}->{"inst_dir"};
-$cgiargs{"schema_dir"} = $table{"slapd"}->{"schema_dir"};
-$cgiargs{"sasl_path"} = $table{"slapd"}->{"sasl_path"};
-if ($table{"slapd"}->{"config_dir"}) {
- $cgiargs{"config_dir"} = $table{"slapd"}->{"config_dir"};
-} else {
- $cgiargs{"config_dir"} = "@instconfigdir@/slapd-" . $table{"slapd"}->{"ServerIdentifier"};
-}
-
-# check to see if this instance already exists
-if (-d $cgiargs{"config_dir"}) {
- print STDERR "Error: the server already exists at ", $cgiargs{"config_dir"}, "\n";
- print STDERR "Please remove it first if you really want to recreate it,\n";
- print STDERR "or use a different ServerIdentifier to create another instance.\n";
- exit 1;
-}
-
-# port number for Admin Server - used to configure some web apps
-$cgiargs{adminport} = $table{admin}->{Port};
-
-# If this is set, the new DS instance will be set up for use as
-# a Configuration DS (e.g. o=NetscapeRoot)
-if ($table{slapd}->{SlapdConfigForMC} =~ /yes/i) {
- $cgiargs{cfg_sspt} = "1";
-}
-# set this to 1 to register this DS with an existing Configuration DS
-# or 0 to create this DS as a new Configuration DS
-$cgiargs{use_existing_config_ds} = $table{slapd}->{UseExistingMC};
-# set this to 1 when creating a new Configuration DS if you do not
-# want to configure the new DS to also serve user data
-$cgiargs{use_existing_user_ds} = $table{slapd}->{UseExistingUG};
-
-# the following items are required to register this new instance with a config DS
-# or to make the new instance a Configuration DS
-if ($cgiargs{cfg_sspt} ||
- $table{General}->{ConfigDirectoryAdminID} ||
- $table{General}->{ConfigDirectoryAdminPwd} ||
- $table{General}->{ConfigDirectoryLdapURL} ||
- $table{General}->{AdminDomain}) {
- addAndCheck(\%cgiargs, "cfg_sspt_uid", \%table, "General", "ConfigDirectoryAdminID");
- addAndCheck(\%cgiargs, "cfg_sspt_uid_pw", \%table, "General", "ConfigDirectoryAdminPwd");
- addAndCheck(\%cgiargs, "ldap_url", \%table, "General", "ConfigDirectoryLdapURL");
- addAndCheck(\%cgiargs, "admin_domain", \%table, "General", "AdminDomain");
-}
-
-#
-if ($table{General}->{UserDirectoryLdapURL}) {
- $cgiargs{user_ldap_url} = $table{General}->{UserDirectoryLdapURL};
-} else {
- $cgiargs{user_ldap_url} = $cgiargs{ldap_url};
-}
-
-if ($table{General}->{prefix}) {
- $prefix = $table{General}->{prefix};
-}
-$cgiargs{prefix} = $prefix;
-
-if ($table{General}->{PackageName}) {
- $package_name = $table{General}->{PackageName};
-}
-
-# populate the DS with this file - the suffix in this file must
-# be the suffix specified in the suffix argument above
-# the filename should use the full absolute path
-$cgiargs{install_ldif_file} = $table{slapd}->{InstallLdifFile};
-
-# if for some reason you do not want the server started after instance creation
-# then you can set
-# [slapd]
-# start_server = 0
-# NOTE that if you are creating the
-# Configuration DS, it will be started anyway
-
-if (defined($table{"slapd"}->{"start_server"})) {
- $cgiargs{start_server} = $table{"slapd"}->{"start_server"};
-} else { # default is on
- $cgiargs{start_server} = 1;
-}
-
-# if for some reason you do not want the full schema to be installed,
-# (such as needing to replace much of it with an AD-like schema), then set
-# [slapd]
-# install_full_schema = 0
-
-if (defined($table{"slapd"}->{"install_full_schema"})) {
- $cgiargs{install_full_schema} = $table{"slapd"}->{"install_full_schema"};
-} else {
- # server-side default is on
-}
-
-my $prog = "@bindir@/ds_newinst";
-if (! -x $prog) {
- $prog = "@libdir@/$package_name/ds_newinst";
-}
-
-my $rc = &cgiFake($verbose, $prog, \%cgiargs);
-
-if (!$rc) {
- print "Success! Your new directory server instance was created\n";
-} else {
- print "Error: Could not create new directory server instance\n";
-}
-
-exit $rc;
-
-sub printhash {
- my $table = shift;
-
- while (my ($key,$val) = each %{$table}) {
- print "[$key]\n";
- while (my ($k2,$v2) = each %{$val}) {
- print "$k2 = $v2\n";
- }
- }
-}
diff --git a/ldap/admin/src/ds_remove_uninst.cpp b/ldap/admin/src/ds_remove_uninst.cpp
deleted file mode 100644
index b7699176..00000000
--- a/ldap/admin/src/ds_remove_uninst.cpp
+++ /dev/null
@@ -1,360 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-// ds_remove_uninst.cpp
-//
-// ds_remove routines that use c++ calls in adminutil
-//
-#include <iostream.h>
-#include <fstream.h>
-#include <stdio.h> /* printf, file I/O */
-#include <string.h> /* strlen */
-#include <ctype.h>
-#ifdef XP_UNIX
-#include <strings.h>
-#include <pwd.h>
-#include <grp.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#endif
-#include <stdlib.h> /* memset, rand stuff */
-#include <sys/types.h>
-#include <errno.h>
-#include <stdarg.h>
-#include <time.h>
-
-#include "ds_remove_uninst.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-#include "dsalib.h"
-#ifdef __cplusplus
-}
-
-#include "prprf.h"
-
-#endif
-#ifdef XP_UNIX
-#include "ux-util.h"
-#endif
-#include "ldapu.h"
-#include "install_keywords.h"
-#include "global.h"
-#include "setupapi.h"
-
-#define MAX_STR_SIZE 512
-static void dsLogMessage(const char *level, const char *which,
- const char *format, ...)
-#ifdef __GNUC__
- __attribute__ ((format (printf, 3, 4)));
-#else
- ;
-#endif
-
-static InstallLog *installLog = NULL;
-
-static void
-dsLogMessage(const char *level, const char *which,
- const char *format, ...)
-{
- char bigbuf[BIG_BUF*4];
- va_list ap;
- va_start(ap, format);
- PR_vsnprintf(bigbuf, sizeof(bigbuf), format, ap);
- va_end(ap);
-#ifdef _WIN32 // always output to stdout (for CGIs), and always log
- // if a log is available
- fprintf(stdout, "%s %s %s\n", level, which, bigbuf);
- fflush(stdout);
- if (installLog)
- installLog->logMessage(level, which, bigbuf);
-#else // not Windows
- if (installLog)
- installLog->logMessage(level, which, bigbuf);
- else
- fprintf(stdout, "%s %s %s\n", level, which, bigbuf);
- fflush(stdout);
-#endif
-
- return;
-}
-
-// replace \ in path with \\ for LDAP search filters
-static char *
-escapePath(const char *path)
-{
- char *s = 0;
- if (path) {
- s = new char [(strlen(path)+1)*2]; // worst case
- char *p = s;
- const char *pp = path;
- for (; *pp; ++pp, ++p) {
- if (*pp == '\\') {
- *p++ = *pp;
- }
- *p = *pp;
- }
- *p = 0;
- }
-
- return s;
-}
-
-static LdapErrorCode
-localRemoveISIE(LdapEntry &isieEntry)
-{
- /* stevross: for now explicitly delete ISIE because it's not getting
- removed by removeSIE for some reason */
- LdapError err = isieEntry.dropAll(isieEntry.entryDN());
- if (err.errorCode())
- {
- dsLogMessage(SETUP_LOG_FATAL, "Slapd",
- "Error: could not remove ISIE entry %s: error = %d",
- (const char *)isieEntry.entryDN(), (int)err.errorCode());
- }
-
- // OK to remove, recursively go up the tree and remove all
- char *dn = new char [strlen(isieEntry.entryDN()) + 10];
- char **explodedDN = ldap_explode_dn(isieEntry.entryDN(), 0);
- int i = 0;
-
- while (1)
- {
- dn[0] = 0;
- char **s = &explodedDN[i];
- while (*s != NULL)
- {
- strcat(dn, *s);
- strcat(dn, LDAP_PATHSEP);
- s++;
- }
-
- if (*s == NULL)
- {
- dn[strlen(dn)-strlen(LDAP_PATHSEP)] = 0;
- }
-
- if (strcasecmp(dn, DEFAULT_ROOT_DN) == 0)
- {
- break;
- }
-
- err = isieEntry.retrieve(OBJECT_CLASS_FILTER, LDAP_SCOPE_ONELEVEL, dn);
-
- if (err == NOT_FOUND)
- {
- isieEntry.drop(dn);
- ++i;
- }
- else
- {
- break;
- }
- }
-
- delete [] dn;
- ldap_value_free(explodedDN);
-
- return OKAY;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// removeInstanceLDAPEntries
-//
-//
-// remove sie, isie of this instance
-//
-//
-//
-//
-
-int removeInstanceLDAPEntries(const char *pszLdapHost,
- const char *pszPort,
- const char *pszLdapSuffix,
- const char *pszUser,
- const char *pszPw,
- const char *pszInstanceName,
- const char *pszInstanceHost,
- const char *pszServerRoot)
-{
- char szSearchBase[] = "o=NetscapeRoot";
-
- /* open LDAP connection */
- LdapError ldapError = 0;
- NSString newURL = NSString("ldap://") + pszLdapHost + ":" +
- pszPort + "/" + pszLdapSuffix;
- Ldap ldap(ldapError, newURL, pszUser, pszPw, 0, 0);
- if (ldapError.errorCode())
- {
- return 1;
- }
-
- /* get SIE entry */
- char *sroot = escapePath(pszServerRoot);
- LdapEntry sieEntry(&ldap);
- NSString sieFilter = NSString("(&(serverhostname=") + pszInstanceHost +
- ")(cn=" + pszInstanceName + ")(serverroot=" +
- sroot + "))";
- ldapError = sieEntry.retrieve(sieFilter, LDAP_SCOPE_SUBTREE, szSearchBase);
- if (ldapError.errorCode())
- {
- dsLogMessage(SETUP_LOG_FATAL, "Slapd",
- "Error: could not find the SIE entry using filter %s: error = %d",
- (const char *)sieFilter, (int)ldapError.errorCode());
- delete [] sroot;
- return 1;
- }
-
- /* get ISIE entry */
- LdapEntry isieEntry(&ldap);
- NSString isieFilter =
- NSString("(&(objectclass=nsApplication)(uniquemember=") +
- sieEntry.entryDN() + ")(nsinstalledlocation=" +
- sroot + "))";
- ldapError = isieEntry.retrieve(isieFilter, LDAP_SCOPE_SUBTREE, szSearchBase);
- if (ldapError.errorCode())
- {
- dsLogMessage(SETUP_LOG_FATAL, "Slapd",
- "Error: could not find the ISIE entry using filter %s: error = %d",
- (const char *)isieFilter, (int)ldapError.errorCode());
- delete [] sroot;
- return 1;
- }
-
- /* delete the SIE and ISIE entry */
- LdapErrorCode code = removeSIE(&ldap, sieEntry.entryDN(), False);
- if (code)
- {
- dsLogMessage(SETUP_LOG_FATAL, "Slapd",
- "Error: could not remove SIE entry %s: error = %d",
- (const char *)sieEntry.entryDN(), (int)code);
- return code;
- }
-
- code = localRemoveISIE(isieEntry);
-
- delete [] sroot;
- return code;
-}
-
-
-int ds_uninst_set_cgi_env(char *pszInfoFileName)
-{
- InstallInfo *uninstallInfo = NULL;
- InstallInfo *instanceInfo = NULL;
- static char szQueryString[512] = {0};
- static char szScriptName[512] = {0};
- static char szNetsiteRoot[512] = {0};
- const char *serverID = 0;
- const char *tmp;
-
- uninstallInfo = new InstallInfo(pszInfoFileName);
-
- if (!uninstallInfo)
- return 1;
-
- instanceInfo = uninstallInfo->getSection("uninstall");
- if (!instanceInfo)
- instanceInfo = uninstallInfo;
-
- putenv("REQUEST_METHOD=GET");
- if (instanceInfo->get(SLAPD_KEY_SERVER_IDENTIFIER))
- serverID = instanceInfo->get(SLAPD_KEY_SERVER_IDENTIFIER);
- else if (ds_get_server_name())
- serverID = ds_get_server_name();
-
- if (serverID)
- PR_snprintf(szQueryString, sizeof(szQueryString), "QUERY_STRING=InstanceName=%s",
- serverID);
-
- putenv(szQueryString);
-
- if (instanceInfo->get(SLAPD_KEY_SERVER_ROOT))
- PR_snprintf(szNetsiteRoot, sizeof(szNetsiteRoot), "NETSITE_ROOT=%s",
- instanceInfo->get(SLAPD_KEY_SERVER_ROOT));
- putenv(szNetsiteRoot);
-
- if (serverID)
- PR_snprintf(szScriptName, sizeof(szScriptName), "SCRIPT_NAME=/%s/Tasks/Operation/Remove",
- serverID);
- putenv(szScriptName);
-
- // remove SIE entry
- const char *host = instanceInfo->get(SLAPD_KEY_K_LDAP_HOST);
- char port[20] = {0};
- if (instanceInfo->get(SLAPD_KEY_K_LDAP_PORT))
- strncpy(port, instanceInfo->get(SLAPD_KEY_K_LDAP_PORT), sizeof(port)-1);
- const char *suffix = instanceInfo->get(SLAPD_KEY_SUFFIX);
- const char *ldapurl = instanceInfo->get(SLAPD_KEY_K_LDAP_URL);
- LDAPURLDesc *desc = 0;
- if (ldapurl && !ldap_url_parse((char *)ldapurl, &desc) && desc) {
- if (!host)
- host = desc->lud_host;
- if (port[0] == 0)
- PR_snprintf(port, sizeof(port), "%d", desc->lud_port);
- if (!suffix)
- suffix = desc->lud_dn;
- }
-
- // get and set the log file
- if ((tmp = instanceInfo->get(SLAPD_INSTALL_LOG_FILE_NAME)))
- {
- static char s_logfile[PATH_MAX+32];
- PR_snprintf(s_logfile, sizeof(s_logfile), "DEBUG_LOGFILE=%s", tmp);
- putenv(s_logfile);
- installLog = new InstallLog(tmp);
- }
-
- removeInstanceLDAPEntries(host, port, suffix,
- instanceInfo->get(SLAPD_KEY_SERVER_ADMIN_ID),
- instanceInfo->get(SLAPD_KEY_SERVER_ADMIN_PWD),
- serverID,
- instanceInfo->get(SLAPD_KEY_FULL_MACHINE_NAME),
- instanceInfo->get(SLAPD_KEY_SERVER_ROOT));
-
- if (desc)
- ldap_free_urldesc(desc);
- return 0;
-}
diff --git a/ldap/admin/src/ds_remove_uninst.h b/ldap/admin/src/ds_remove_uninst.h
deleted file mode 100644
index 6ce2b6b1..00000000
--- a/ldap/admin/src/ds_remove_uninst.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-/* ds_remove_uninst.h */
-
-
-#ifndef _DS_REMOVE_UNINST_H_
-#define _DS_REMOVE_UNINST_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-int ds_uninst_set_cgi_env(char *pszInfoFileName);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/ldap/admin/src/fix_secmod_db_64 b/ldap/admin/src/fix_secmod_db_64
deleted file mode 100755
index 3588a35f..00000000
--- a/ldap/admin/src/fix_secmod_db_64
+++ /dev/null
@@ -1,105 +0,0 @@
-#!/bin/sh
-#
-# BEGIN COPYRIGHT BLOCK
-# This Program is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; version 2 of the License.
-#
-# This Program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place, Suite 330, Boston, MA 02111-1307 USA.
-#
-# In addition, as a special exception, Red Hat, Inc. gives You the additional
-# right to link the code of this Program with code not covered under the GNU
-# General Public License ("Non-GPL Code") and to distribute linked combinations
-# including the two, subject to the limitations in this paragraph. Non-GPL Code
-# permitted under this exception must only link to the code of this Program
-# through those well defined interfaces identified in the file named EXCEPTION
-# found in the source code files (the "Approved Interfaces"). The files of
-# Non-GPL Code may instantiate templates or use macros or inline functions from
-# the Approved Interfaces without causing the resulting work to be covered by
-# the GNU General Public License. Only Red Hat, Inc. may make changes or
-# additions to the list of Approved Interfaces. You must obey the GNU General
-# Public License in all respects for all of the Program code and other code used
-# in conjunction with the Program except the Non-GPL Code covered by this
-# exception. If you modify this file, you may extend this exception to your
-# version of the file, but you are not obligated to do so. If you do not wish to
-# provide this exception without modification, you must delete this exception
-# statement from your version and license this file solely under the GPL without
-# exception.
-#
-#
-# Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
-# Copyright (C) 2005 Red Hat, Inc.
-# All rights reserved.
-# END COPYRIGHT BLOCK
-#
-
-# We still have 32 bit applications shipped with the 64 bit DS
-# that need to access secmod.db and the root certs file
-# nssckbi shared library. However, 32 bit apps cannot load
-# the 64 bit version of this shared library. This script
-# changes secmod.db to have both the 32 bit and 64 bit versions
-# of nssckbi.
-
-# The first argument is the name of the directory where secmod.db
-# and the nssckbi shared libraries (64 bit and 32 bit) are. If
-# secmod.db does not exist an error will occur.
-
-# The second argument is the path of the modutil
-# command. If the path is omitted then PATH will be used.
-
-usage()
-{
- echo Error: $1
- echo The first argument is the name of the directory where secmod.db
- echo and the nssckbi shared libraries '(64 bit and 32 bit)' are. If
- echo secmod.db does not exist an error will occur.
- echo The second argument is the path where the modutil command
- echo is found.
-}
-
-dir="$1"
-shift
-modutildir="$1"
-modutil=$modutildir/modutil
-LD_LIBRARY_PATH=$modutildir/../lib:$LD_LIBRARY_PATH
-SHLIB_PATH=$modutildir/../lib:$SHLIB_PATH
-export LD_LIBRARY_PATH SHLIB_PATH
-
-# see if correct argument was given
-if test \! \( "$dir" -a -d "$dir" \) ; then
- usage "Invalid directory $dir"
- exit 1
-fi
-
-# see if the files are there
-
-lib64=$dir/*nssckbi.*
-lib32=$dir/*nssckbi32.*
-
-if test \! \( -f $lib64 -a -f $lib32 \) ; then
- usage "Files $lib64 and/or $lib32 do not exist in dir $dir"
- exit 2
-fi
-
-if test \! -f $dir/secmod.db ; then
- usage "$dir/secmod.db does not exist"
- exit 3
-fi
-
-modname="Root Certs 32 bit"
-
-# see if the module already exists
-exists=0
-$modutil -force -nocertdb -dbdir $dir -list | grep "$modname" > /dev/null 2>&1 && exists=1
-
-if test $exists -ne 1 ; then
- $modutil -force -nocertdb -dbdir $dir -add "$modname" -libfile $lib32 || usage "Could not add $modname to $dir/secmod.db: $?"
-else
- echo "Module $modname already added to secmod.db"
-fi
diff --git a/ldap/admin/src/getConfigInfo b/ldap/admin/src/getConfigInfo
deleted file mode 100644
index 981bcec9..00000000
--- a/ldap/admin/src/getConfigInfo
+++ /dev/null
@@ -1,166 +0,0 @@
-#!/usr/bin/env perl
-#
-# BEGIN COPYRIGHT BLOCK
-# This Program is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; version 2 of the License.
-#
-# This Program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place, Suite 330, Boston, MA 02111-1307 USA.
-#
-# In addition, as a special exception, Red Hat, Inc. gives You the additional
-# right to link the code of this Program with code not covered under the GNU
-# General Public License ("Non-GPL Code") and to distribute linked combinations
-# including the two, subject to the limitations in this paragraph. Non-GPL Code
-# permitted under this exception must only link to the code of this Program
-# through those well defined interfaces identified in the file named EXCEPTION
-# found in the source code files (the "Approved Interfaces"). The files of
-# Non-GPL Code may instantiate templates or use macros or inline functions from
-# the Approved Interfaces without causing the resulting work to be covered by
-# the GNU General Public License. Only Red Hat, Inc. may make changes or
-# additions to the list of Approved Interfaces. You must obey the GNU General
-# Public License in all respects for all of the Program code and other code used
-# in conjunction with the Program except the Non-GPL Code covered by this
-# exception. If you modify this file, you may extend this exception to your
-# version of the file, but you are not obligated to do so. If you do not wish to
-# provide this exception without modification, you must delete this exception
-# statement from your version and license this file solely under the GPL without
-# exception.
-#
-#
-# Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
-# Copyright (C) 2005 Red Hat, Inc.
-# All rights reserved.
-# END COPYRIGHT BLOCK
-#
-
-# Get some configuration information from an instance
-
-BEGIN {
- $| = 1;
- # print CGI header
- print "Content-type: text/plain\n\n";
-
- $isNT = -d '\\';
- $PATHSEP = $isNT ? "\\" : "/";
- # get the server root directory
- $sroot = $ENV{'NETSITE_ROOT'};
- @INC = ( '.', '../../../admin/admin/bin' );
- grep { s@/@\\@g } @INC if $isNT;
-}
-
-sub sigDieHandler {
- print @_, "\n";
- print "NMC_STATUS: ", $!+0, "\n";
- exit $!;
-}
-
-$SIG{__DIE__} = 'sigDieHandler';
-
-# process the CGI input
-use Cgi;
-
-$oldSlapdConf = $cgiVars{'oldServerRoot'} . $PATHSEP . 'slapd-' .
- $cgiVars{'oldServerName'} . $PATHSEP . 'config' . $PATHSEP .
- 'slapd.conf';
-
-$foundLocalUser = 0;
-
-open(OLDSLAPDCONF, $oldSlapdConf) or
- die "Error: could not open old config file $oldSlapdConf: $!";
-while ($line = <OLDSLAPDCONF>) {
- chop $line;
- foreach $key (keys %cgiVars) {
- $param = $cgiVars{$key};
- if ($line =~ /^$param\s+/i) {
- ($value = $') =~ s/^[\"]//;
- # remove leading "
- $value =~ s/[\"]$//;
- # remove trailing "
- print $key, ':', $value, "\n";
- if (lc($param) eq 'localuser') {
- $foundLocalUser = 1;
- }
- }
- }
- if ($line =~ /^directory\s+/i) { $dbdir = $';}
- # the user may have given us a network mounted old home directory, but in the
- # old instance's config files, the root directory referred to is usually
- # a local directory. For example, suppose there is an automounter map for
- # hosts which maps onto /h e.g. /h/oldhost would contain all directories
- # exported via NFS. Similarly, for NT, you could do \\oldhost\c to look
- # at the C: drive on the old host. Or the user may have network mounted
- # the old server root some other way. Anyway, we need to determine what
- # the old server root was local to the original host because that is what
- # will be referred to it the old config files. So, we look at the errorlog
- # directive in slapd.conf and use whatever comes before the slapd-oldname
- elsif ($line =~ /\werrorlog\s+(.*)slapd-$cgiVars{'oldServerName'}/i) {
- $realOldDir = $1;
- }
- elsif ($line =~ /^security\s+/i) {
- if (lc($') eq 'on') {
- $security = 1;
- }
- }
- elsif ($line =~ /^encryption-alias\s+/i) {
- $encryptionalias = $';
- }
-}
-close(OLDSLAPDCONF);
-
-if (! $realOldDir) {
- $realOldDir = $cgiVars{'oldServerRoot'};
-}
-
-# if security is enabled, see if there is a cert and key db
-if ($security && $encryptionalias) {
- $secDir = $cgiVars{'oldServerRoot'} . $PATHSEP . 'alias';
- opendir(SECDIR, $secDir) or
- die "Error: could not open alias dir $secDir : $!";
- foreach (readdir(SECDIR)) {
- if (! /[.][.]?/) {
- if (/^$encryptionalias/i) {
- print 'needSecPwd:true', "\n";
- last;
- }
- }
- }
- closedir(SECDIR);
-}
-
-# the dbdir is stored as a local dir, but we may need a network dir
-($networkDbDir = $dbdir) =~ s/^$realOldDir/$cgiVars{'oldServerRoot'}/ig;
-
-if (! $isNT && $cgiVars{'oldlocaluser'} && ! $foundLocalUser) {
- # get the local user by doing a stat of the db directory
- $olduid = (stat($networkDbDir))[4];
- # convert the numeric uid to string name
- setpwent;
- while (@ent = getpwent) {
- if ($ent[2] == $olduid) {
- print 'oldlocaluser:', $ent[0], "\n";
- last;
- }
- }
- endpwent;
-}
-
-if (! $isNT && $cgiVars{'newlocaluser'}) {
- open(SSUSERS, "$sroot${PATHSEP}shared${PATHSEP}config${PATHSEP}ssusers.conf") or
- die "Error: could not open $sroot${PATHSEP}shared${PATHSEP}config${PATHSEP}ssusers.conf: $!";
- while (<SSUSERS>) {
- chop;
- if (/^SuiteSpotUser\s+/i) {
- print 'newlocaluser:', $', "\n";
- }
- }
- close(SSUSERS);
-}
-
-print "NMC_STATUS: 0\n";
-exit 0;
diff --git a/ldap/admin/src/import2info b/ldap/admin/src/import2info
deleted file mode 100755
index ad225e68..00000000
--- a/ldap/admin/src/import2info
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/usr/bin/env perl
-#
-# BEGIN COPYRIGHT BLOCK
-# This Program is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; version 2 of the License.
-#
-# This Program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place, Suite 330, Boston, MA 02111-1307 USA.
-#
-# In addition, as a special exception, Red Hat, Inc. gives You the additional
-# right to link the code of this Program with code not covered under the GNU
-# General Public License ("Non-GPL Code") and to distribute linked combinations
-# including the two, subject to the limitations in this paragraph. Non-GPL Code
-# permitted under this exception must only link to the code of this Program
-# through those well defined interfaces identified in the file named EXCEPTION
-# found in the source code files (the "Approved Interfaces"). The files of
-# Non-GPL Code may instantiate templates or use macros or inline functions from
-# the Approved Interfaces without causing the resulting work to be covered by
-# the GNU General Public License. Only Red Hat, Inc. may make changes or
-# additions to the list of Approved Interfaces. You must obey the GNU General
-# Public License in all respects for all of the Program code and other code used
-# in conjunction with the Program except the Non-GPL Code covered by this
-# exception. If you modify this file, you may extend this exception to your
-# version of the file, but you are not obligated to do so. If you do not wish to
-# provide this exception without modification, you must delete this exception
-# statement from your version and license this file solely under the GPL without
-# exception.
-#
-#
-# Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
-# Copyright (C) 2005 Red Hat, Inc.
-# All rights reserved.
-# END COPYRIGHT BLOCK
-#
-
-# Get information to import a 1.x Directory server's info
-
-BEGIN { @INC = ( '../../../admin/admin/bin' , '.' ); }
-
-$| = 1;
-use Cgi;
-
-$isNT = -d '\\';
-$cgiVars{'server'} =~ /-/;
-$root = $ENV{'NETSITE_ROOT'};
-$oldDir = $cgiVars{'dir'};
-$oldDir =~ s/\\/\//g;
-$oldHome = "$oldDir/$cgiVars{'server'}";
-$snmpfile = "$oldHome/config/snmp.conf";
-
-$ds30 = 0;
-if ( -e $snmpfile) {
- open ( SRC, $snmpfile) | "Can't open $snmpfile: $!\n";
- while ( <SRC> ) {
- if ($_=~/^Version/ ) {
- $where = index ($_, "3.0");
- if ($where > -1 ) {
- $ds30 =1;
- }
- }
- }
-}
-
-# QUERY_STRING still set from invocation
-
-print "Content-type: text/html\n\n";
-if ($ds30) {
- print "<HTML><HEAD><TITLE>Import 3.0 Directory Server Info</TITLE></HEAD>\n";
- print "<BODY>\n";
- print "<H1><center>The server you are attempting to migrate is a 3.0 directory server. There is no need to migrate a 3.0 server to 3.1 server.</center></H1>\n";
- print "</BODY></HTML>\n";
-} else {
- print "<HTML><HEAD><TITLE>Import 1.x Directory Server Info</TITLE></HEAD>\n";
- print "<BODY>\n";
- print "<H1>Import 1.x Directory Server Info</H1>\n";
- print '<FORM action="import" method="GET">', "\n";
- print "<INPUT type=hidden name=\"dir\" value=\"$cgiVars{'dir'}\">\n";
- print "<INPUT type=hidden name=\"server\" value=\"$cgiVars{'server'}\">\n";
- $cgiVars{'server'} =~ /-/;
- print "Name: $`-<INPUT type=text name=\"name\" value=\"$'\"><P>\n";
- print "<P><INPUT type=submit value=\"Import\">\n";
- print "</FORM>\n</BODY></HTML>\n";
-}
-
diff --git a/ldap/admin/src/init_ds_env.c b/ldap/admin/src/init_ds_env.c
deleted file mode 100644
index f6ca8a03..00000000
--- a/ldap/admin/src/init_ds_env.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-/*
- * Set up environment for CGIs.
- *
- * Rob Weltman
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include "libadminutil/admutil.h"
-#include "libadminutil/distadm.h"
-#include "init_ds_env.h"
-#include "dsalib.h"
-#include "prprf.h"
-
-int init_ds_env()
-{
- char *m = getenv("REQUEST_METHOD");
- char *qs = NULL;
- int proceed = 0;
-
- (void)ADMUTIL_Init();
- if ( m != NULL ) {
- if( !strcmp(m, "GET") ) {
- qs = GET_QUERY_STRING();
- if ( qs && *qs ) {
- ds_get_begin(qs);
- }
- proceed = 1;
- } else if(!strcmp(m, "POST")) {
- if (ds_post_begin(stdin)) {
- proceed = 0;
- } else {
- proceed = 1;
- }
- }
- }
-
- if(!proceed) {
- char msg[2000];
- PR_snprintf(msg, sizeof(msg), "ErrorString: REQUEST_METHOD=%s,"
- "QUERY_STRING=%s\n",
- (m == NULL) ? "<undefined>" : m,
- (qs == NULL) ? "<undefined>" : qs);
- rpt_err( GENERAL_FAILURE,
- msg,
- "",
- "" );
- return 1;
- }
-
- return 0;
-}
diff --git a/ldap/admin/src/init_ds_env.h b/ldap/admin/src/init_ds_env.h
deleted file mode 100644
index 7e6b7275..00000000
--- a/ldap/admin/src/init_ds_env.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-/*
- * Set up environment for CGIs.
- *
- * Rob Weltman
- */
-extern int init_ds_env();
diff --git a/ldap/admin/src/install_keywords.h b/ldap/admin/src/install_keywords.h
deleted file mode 100644
index 9106a1cf..00000000
--- a/ldap/admin/src/install_keywords.h
+++ /dev/null
@@ -1,148 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-/*********************************************************************
-**
-**
-** NAME:
-** install_keywords.h
-**
-** DESCRIPTION:
-** Miscellaneous stuffs used by ux-update or ux-config
-**
-** NOTES:
-**
-**
-*/
-
-#ifndef _INSTALL_KEYWORDS_H_
-#define _INSTALL_KEYWORDS_H_
-
-#include "global.h"
-
-
-#ifdef XP_UNIX
-#define SLAPD_KEY_FULL_MACHINE_NAME MACHINE_NAME
-#else
-#define SLAPD_KEY_FULL_MACHINE_NAME "FullMachineName"
-#endif
-#define SLAPD_KEY_SERVER_ROOT "ServerRoot"
-#define SLAPD_KEY_SERVER_PORT "ServerPort"
-#define SLAPD_KEY_SECURITY_ON "SecurityOn"
-#define SLAPD_KEY_SECURE_SERVER_PORT "SecureServerPort"
-#define SLAPD_KEY_SLAPD_CONFIG_FOR_MC "SlapdConfigForMC"
-
-#ifdef XP_UNIX
-#define SLAPD_KEY_SERVER_ADMIN_ID MC_ADMIN_ID
-#define SLAPD_KEY_SERVER_ADMIN_PWD MC_ADMIN_PWD
-#else
-#define SLAPD_KEY_SERVER_ADMIN_ID "ConfigDirectoryAdminID"
-#define SLAPD_KEY_SERVER_ADMIN_PWD "ConfigDirectoryAdminPwd"
-#endif
-
-#define SLAPD_KEY_SERVER_IDENTIFIER "ServerIdentifier"
-#define SLAPD_KEY_SUITESPOT_USERID SS_USER_ID
-#define SLAPD_KEY_SUFFIX "Suffix"
-#define SLAPD_KEY_ROOTDN "RootDN"
-#define SLAPD_KEY_ROOTDNPWD "RootDNPwd"
-#define SLAPD_KEY_ADMIN_SERVER_PORT "Port"
-#define SLAPD_KEY_OLD_SERVER_ROOT "OldServerRoot"
-
-#ifdef XP_UNIX
-#define SLAPD_KEY_K_LDAP_URL CONFIG_LDAP_URL
-#else
-#define SLAPD_KEY_K_LDAP_URL "ConfigDirectoryLdapURL"
-#endif
-
-#define SLAPD_KEY_K_LDAP_HOST CONFIG_DS_HOST
-#define SLAPD_KEY_K_LDAP_PORT CONFIG_DS_PORT
-#define SLAPD_KEY_BASE_SUFFIX CONFIG_DS_SUFFIX
-#define SLAPD_KEY_ADMIN_SERVER_ID "ServerAdminID"
-#define SLAPD_KEY_ADMIN_SERVER_PWD "ServerAdminPwd"
-#define SLAPD_KEY_ADD_SAMPLE_ENTRIES "AddSampleEntries"
-#define SLAPD_KEY_ADD_ORG_ENTRIES "AddOrgEntries"
-#define SLAPD_KEY_INSTALL_LDIF_FILE "InstallLdifFile"
-#define SLAPD_KEY_ORG_SIZE "OrgSize"
-#define SLAPD_KEY_SETUP_CONSUMER "SetupConsumer"
-#define SLAPD_KEY_CIR_HOST "CIRHost"
-#define SLAPD_KEY_CIR_PORT "CIRPort"
-#define SLAPD_KEY_CIR_SUFFIX "CIRSuffix"
-#define SLAPD_KEY_CIR_BINDDN "CIRBindDN"
-#define SLAPD_KEY_CIR_BINDDNPWD "CIRBindDNPwd"
-#define SLAPD_KEY_CIR_SECURITY_ON "CIRSecurityOn"
-#define SLAPD_KEY_CIR_INTERVAL "CIRInterval"
-#define SLAPD_KEY_CIR_DAYS "CIRDays"
-#define SLAPD_KEY_CIR_TIMES "CIRTimes"
-#define SLAPD_KEY_SETUP_SUPPLIER "SetupSupplier"
-#define SLAPD_KEY_REPLICATIONDN "ReplicationDN"
-#define SLAPD_KEY_REPLICATIONPWD "ReplicationPwd"
-#define SLAPD_KEY_CHANGELOGDIR "ChangeLogDir"
-#define SLAPD_KEY_CHANGELOGSUFFIX "ChangeLogSuffix"
-#define SLAPD_KEY_USE_REPLICATION "UseReplication"
-#define SLAPD_KEY_CONSUMERDN "ConsumerDN"
-#define SLAPD_KEY_CONSUMERPWD "ConsumerPwd"
-#define SLAPD_KEY_SIR_HOST "SIRHost"
-#define SLAPD_KEY_SIR_PORT "SIRPort"
-#define SLAPD_KEY_SIR_SUFFIX "SIRSuffix"
-#define SLAPD_KEY_SIR_BINDDN "SIRBindDN"
-#define SLAPD_KEY_SIR_BINDDNPWD "SIRBindDNPwd"
-#define SLAPD_KEY_SIR_SECURITY_ON "SIRSecurityOn"
-#define SLAPD_KEY_SIR_DAYS "SIRDays"
-#define SLAPD_KEY_SIR_TIMES "SIRTimes"
-#define SLAPD_KEY_USE_EXISTING_MC "UseExistingMC"
-#define SLAPD_KEY_ADMIN_DOMAIN "AdminDomain"
-#define SLAPD_KEY_DISABLE_SCHEMA_CHECKING "DisableSchemaChecking"
-#define SLAPD_KEY_USE_EXISTING_UG "UseExistingUG"
-#define SLAPD_KEY_USER_GROUP_LDAP_URL "UserDirectoryLdapURL"
-#define SLAPD_KEY_UG_HOST "UGHost"
-#define SLAPD_KEY_UG_PORT "UGPort"
-#define SLAPD_KEY_UG_SUFFIX "UGSuffix"
-#define SLAPD_KEY_USER_GROUP_ADMIN_ID "UserDirectoryAdminID"
-#define SLAPD_KEY_USER_GROUP_ADMIN_PWD "UserDirectoryAdminPwd"
-#define SLAPD_KEY_CONFIG_ADMIN_DN "ConfigAdminDN"
-/* This is used to pass the name of the log file used in the main setup
- program to the ds_create or ds_remove (for uninstall) so that
- they can all use the same log file
-*/
-#define SLAPD_INSTALL_LOG_FILE_NAME "LogFileName"
-
-#endif // _INSTALL_KEYWORDS_H_
diff --git a/ldap/admin/src/instindex.cpp b/ldap/admin/src/instindex.cpp
deleted file mode 100644
index 05c3fbee..00000000
--- a/ldap/admin/src/instindex.cpp
+++ /dev/null
@@ -1,194 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-/*
- * index.c: Shows the first page you see on install
- *
- * Rob McCool
- */
-
-#include <nss.h>
-#include <libadminutil/distadm.h>
-
-#include "create_instance.h"
-#include "configure_instance.h"
-
-#include "dsalib.h"
-#include "ldap.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-/* --------------------------------- main --------------------------------- */
-#if NEEDED_FOR_DEBUGGING
-static void
-printInfo(int argc, char *argv[], char *envp[], FILE* fp)
-{
- int ii = 0;
- if (!fp)
- fp = stdout;
-
- fprintf(fp, "Program name = %s\n", argv[0]);
- for (ii = 1; ii < argc; ++ii)
- {
- fprintf(fp, "argv[%d] = %s\n", ii, argv[ii]);
- }
-
- for (ii = 0; envp[ii]; ++ii)
- {
- fprintf(fp, "%s\n", envp[ii]);
- }
-
- fprintf(fp, "#####################################\n");
-}
-#endif
-
-#if defined (__hpux) && defined (__ia64)
-int main(int argc, char *argv[], char *envp[])
-#else
-int main(int argc, char *argv[], char * /*envp*/ [])
-#endif
-{
- char *rm = getenv("REQUEST_METHOD");
- int status = 0;
- server_config_s cf;
- char *infFileName = 0;
- int reconfig = 0;
- int ii = 0;
- int cgi = 0;
-
- (void)ADMUTIL_Init();
-
- /* Initialize NSS to make ds_salted_sha1_pw_enc() happy */
- if (NSS_NoDB_Init(NULL) != SECSuccess) {
- ds_report_error(DS_GENERAL_FAILURE, " initialization failure",
- "Unable to initialize the NSS subcomponent.");
- exit(1);
- }
-
- /* make stdout unbuffered */
- setbuf(stdout, 0);
-
-#ifdef XP_WIN32
- if ( getenv("DEBUG_DSINST") )
- DebugBreak();
-#endif
-
- memset(&cf, 0, sizeof(cf));
- set_defaults(0, 0, &cf);
-
- /* scan cmd line arguments */
- for (ii = 0; ii < argc; ++ii)
- {
- if (!strcmp(argv[ii], "-f") && (ii + 1) < argc &&
- argv[ii+1])
- infFileName = argv[ii+1];
- else if (!strcmp(argv[ii], "-r"))
- reconfig = 1;
- }
-
- /* case 1: being called as program -f inffile */
- if (infFileName)
- {
- FILE *infFile = fopen(infFileName, "r");
- if (!infFile)
- {
- ds_report_error(DS_INCORRECT_USAGE, infFileName,
- "This file could not be opened. A valid file must be given.");
- status = 1;
- }
- else
- fclose(infFile);
-
- if (!status)
- status = create_config_from_inf(&cf, argc, argv);
- if (reconfig)
- {
- status = update_server(&cf);
- if (!status)
- status = reconfigure_instance(argc, argv);
- }
- else
- {
- if (!status)
- status = create_config(&cf);
- if (!status)
- status = configure_instance();
- }
- }
- /* case 2: being called as a CGI */
- else if (rm)
- {
- cgi = 1;
- status = parse_form(&cf);
- if (!status)
- status = create_config(&cf);
- if (!status)
- status = configure_instance_with_config(&cf, 1, 0);
- }
- /* case 3: punt */
- else
- {
- ds_report_error (
- DS_INCORRECT_USAGE,
- "No request method specified",
- "A REQUEST_METHOD must be specified (POST, GET) to run this CGI program.");
- status = 1;
- }
-
- if (cgi)
- {
- /* The line below is used by the console to detect
- the end of the operation. See replyHandler() in
- MigrateCreate.java */
- fprintf(stdout, "NMC_Status: %d\n", status);
- /* In the past, we used to call rpt_success() or rpt_err()
- according to status. However these functions are not designed
- for our case: they print an HTTP header line "Content-type: text/html" */
- }
-
-#if defined( hpux )
- _exit(status);
-#endif
- return status;
-}
diff --git a/ldap/admin/src/key.rc b/ldap/admin/src/key.rc
deleted file mode 100644
index d4e2473a..00000000
--- a/ldap/admin/src/key.rc
+++ /dev/null
@@ -1,182 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-//Microsoft Visual C++ generated resource script.
-//
-#include "resource.h"
-
-#define APSTUDIO_READONLY_SYMBOLS
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 2 resource.
-//
-#include "afxres.h"
-
-/////////////////////////////////////////////////////////////////////////////
-#undef APSTUDIO_READONLY_SYMBOLS
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Dialog
-//
-
-IDD_GETPATH DIALOG DISCARDABLE 0, 0, 293, 155
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
-CAPTION "NETSCAPE KEY PAIR FILE GENERATION"
-FONT 8, "MS Sans Serif"
-BEGIN
- EDITTEXT IDE_PATH,93,110,159,13,ES_AUTOHSCROLL
- DEFPUSHBUTTON "OK",IDOK,39,130,50,14
- PUSHBUTTON "Cancel",IDCANCEL,193,129,50,14
- LTEXT "Welcome to the key pair file generator. With this program you can generate the public and private keys that your server uses for secure communications.Make sure that you enter the full pathname of the key file.",
- IDC_STATIC,17,17,253,28
- LTEXT "First the server needs to know where to put the new key. You should NOT overwrite an existing key pair file ! Place the new key in a separate location. Make a note of the new key's location ! You will need it later when you request a certificate.",
- IDC_STATIC,17,50,251,33
- LTEXT "Key File Location:",IDC_STATIC,17,113,63,8
- LTEXT "If you installed the server into the root c:\\Navgold, you can store the key file in c:\\Navgold\\Server\\<serverid>\\ssl\\key.db",
- IDC_STATIC,17,87,251,16
-END
-
-IDD_GETPASSWORD DIALOG DISCARDABLE 0, 0, 293, 144
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
-CAPTION "NETSCAPE KEY PAIR FILE PASSWORD"
-FONT 8, "MS Sans Serif"
-BEGIN
- EDITTEXT IDE_GETPASSWORD,98,104,159,13,ES_PASSWORD |
- ES_AUTOHSCROLL
- DEFPUSHBUTTON "OK",IDOK,45,125,50,14
- PUSHBUTTON "Cancel",IDCANCEL,190,123,50,14
- LTEXT "Finally, enter a password which will be used to encrypt the key pair file. You will use this password when starting up and shutting down your server.",
- IDC_STATIC,18,24,253,20
- LTEXT "Note: Be sure to keep this password safe ! If you must write down the password, the physical safety of the recording is your responsibility.",
- IDC_STATIC,18,50,251,19
- LTEXT "Password",IDC_STATIC,18,105,63,8
- LTEXT "The password must be at least 8 characters long, and must contain at least one non-alphabetic character in it. It should not be a word in any dictionary.",
- IDC_STATIC,18,77,255,24
- LTEXT "A random seed has been successfully generated !!",
- IDC_STATIC,18,4,246,15
-END
-
-IDD_GETPASSWORD2 DIALOG DISCARDABLE 0, 0, 265, 116
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
-CAPTION "NETSCAPE KEY PAIR FILE PASSWORD"
-FONT 8, "MS Sans Serif"
-BEGIN
- EDITTEXT IDE_GETPASSWORD2,67,50,159,13,ES_PASSWORD |
- ES_AUTOHSCROLL
- DEFPUSHBUTTON "OK",IDOK,67,78,50,14
- PUSHBUTTON "Cancel",IDCANCEL,176,78,50,14
- LTEXT "Password",-1,10,54,50,8
- LTEXT "Reenter the password for verification:",-1,10,18,255,24
-END
-
-IDD_GETCERT DIALOG DISCARDABLE 0, 0, 293, 115
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
-CAPTION "NETSCAPE KEY CERTIFICATE GENERATION"
-FONT 8, "MS Sans Serif"
-BEGIN
- DEFPUSHBUTTON "OK",IDOK,125,90,50,14
- LTEXT "Congratulations ! Your new key is in the file:",
- IDC_STATIC,19,17,253,14
- LTEXT "The next step is to generate a certificate. Select the hyperlink ""Request or renew a certificate from the server manager.",
- IDC_STATIC,19,60,251,22
- LTEXT "Static",IDC_KEYFILE,19,38,223,8
-END
-
-IDD_GETSEED DIALOG DISCARDABLE 0, 0, 301, 156
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
-CAPTION "NETSCAPE RANDOM NUMBER SEED GENERATION"
-FONT 8, "MS Sans Serif"
-BEGIN
- LTEXT "Next a random seed must be generated to complete the creation of your key pair file. You have to provide mouse input for this to happen. Move your mouse continuously and randomly on the desktop to provide this input.",
- IDC_STATIC,15,12,250,29
- LTEXT "On NT3.51 systems a progress bar will appear to inform you how much more random mouse input the program needs to generate its random seed. When enough input has been obtained from you, another dialog box will notify you.",
- IDC_STATIC,15,48,259,25
- LTEXT "As you move the mouse, the location of the cursor is sampled at random intervals and this is added to a sample of a high frequency counter to generate the random seed. Click OK to begin.",
- IDC_STATIC,15,83,256,33
- PUSHBUTTON "OK",IDOK,125,137,50,14
- LTEXT "This process could take from 30 seconds to a minute of continuous mouse input.",
- IDC_STATIC,15,119,281,8
-END
-
-IDD_UPDATE DIALOG DISCARDABLE 0, 0, 185, 74
-STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
-CAPTION "Collecting Random User Input ....."
-FONT 8, "MS Sans Serif"
-BEGIN
- LTEXT "Static",IDC_UPDATE,13,8,150,59
-END
-
-
-#ifdef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// TEXTINCLUDE
-//
-
-1 TEXTINCLUDE DISCARDABLE
-BEGIN
- "resource.h\0"
-END
-
-2 TEXTINCLUDE DISCARDABLE
-BEGIN
- "#include ""afxres.h""\r\n"
- "\0"
-END
-
-3 TEXTINCLUDE DISCARDABLE
-BEGIN
- "\r\n"
- "\0"
-END
-
-/////////////////////////////////////////////////////////////////////////////
-#endif // APSTUDIO_INVOKED
-
-
-#ifndef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 3 resource.
-//
-
-
-/////////////////////////////////////////////////////////////////////////////
-#endif // not APSTUDIO_INVOKED
-
diff --git a/ldap/admin/src/latest_file.c b/ldap/admin/src/latest_file.c
deleted file mode 100644
index 7e38b368..00000000
--- a/ldap/admin/src/latest_file.c
+++ /dev/null
@@ -1,135 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-/***********************************************************************
-**
-** NAME
-** latest_file.c
-**
-** DESCRIPTION
-** Creates a batch file which assigns the latest file matching a given
-** pattern to the environment variable LATEST_FILE. For use in NT batch
-** files.
-**
-** AUTHOR
-** <rweltman@netscape.com>
-**
-***********************************************************************/
-
-/***********************************************************************
-** Includes
-***********************************************************************/
-
-
-/*
- * Given a pattern to match, creates a batch file with the latest full
- * file name to set to LATEST_FILE. No file is created if there are no
- * matching files.
- */
-#if defined( _WIN32 )
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <io.h>
-
-
-int main (int argc, char **argv)
-{
- char *szWildcardFileSpec;
- char *szOutput;
- char dir[1024];
- char latest[1024];
- char *dirEnd;
- time_t latest_time = 0;
- long hFile;
- struct _finddata_t fileinfo;
- FILE *fBatch;
-
- if ( argc < 3 ) {
- fprintf( stderr, "Usage: %s PATTERN OUTPUTFILE\n", argv[0] );
- return 1;
- }
-
- szWildcardFileSpec = argv[1];
- szOutput = argv[2];
-
- /* Get directory part of path */
- strncpy( dir, szWildcardFileSpec, sizeof(dir)-1 );
- dir[sizeof(dir)-1] = (char)0;
- dirEnd = strrchr( dir, '\\' );
- if ( dirEnd != NULL ) {
- *dirEnd = 0;
- }
-
- /* Expand file specification */
- hFile = _findfirst( szWildcardFileSpec, &fileinfo);
- if( hFile == -1 ) {
- perror( "No matching files!" );
- return -1;
- }
-
- _snprintf( latest, sizeof(latest), "%s\\%s", dir, fileinfo.name );
- latest[sizeof(latest)-1] = (char)0;
- latest_time = fileinfo.time_create;
-
- while( _findnext( hFile, &fileinfo ) == 0 ) {
- if ( fileinfo.time_create > latest_time ) {
- _snprintf( latest, sizeof(latest), "%s\\%s", dir, fileinfo.name );
- latest[sizeof(latest)-1] = (char)0;
- latest_time = fileinfo.time_create;
- }
- }
-
- _findclose( hFile );
-
- /* create batch file */
- fBatch = fopen (szOutput, "w");
- if ( fBatch == NULL ) {
- perror ("Unable to create batch file!");
- return 1;
- }
- fprintf( fBatch, "set LATEST_FILE=%s\n", latest );
- fclose (fBatch);
-
- return 0;
-}
-#endif /* ( XP_WIN32 ) */
diff --git a/ldap/admin/src/migrateInstance b/ldap/admin/src/migrateInstance
deleted file mode 100644
index 95cab4b1..00000000
--- a/ldap/admin/src/migrateInstance
+++ /dev/null
@@ -1,581 +0,0 @@
-#!/usr/bin/env perl
-#
-# BEGIN COPYRIGHT BLOCK
-# This Program is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; version 2 of the License.
-#
-# This Program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place, Suite 330, Boston, MA 02111-1307 USA.
-#
-# In addition, as a special exception, Red Hat, Inc. gives You the additional
-# right to link the code of this Program with code not covered under the GNU
-# General Public License ("Non-GPL Code") and to distribute linked combinations
-# including the two, subject to the limitations in this paragraph. Non-GPL Code
-# permitted under this exception must only link to the code of this Program
-# through those well defined interfaces identified in the file named EXCEPTION
-# found in the source code files (the "Approved Interfaces"). The files of
-# Non-GPL Code may instantiate templates or use macros or inline functions from
-# the Approved Interfaces without causing the resulting work to be covered by
-# the GNU General Public License. Only Red Hat, Inc. may make changes or
-# additions to the list of Approved Interfaces. You must obey the GNU General
-# Public License in all respects for all of the Program code and other code used
-# in conjunction with the Program except the Non-GPL Code covered by this
-# exception. If you modify this file, you may extend this exception to your
-# version of the file, but you are not obligated to do so. If you do not wish to
-# provide this exception without modification, you must delete this exception
-# statement from your version and license this file solely under the GPL without
-# exception.
-#
-#
-# Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
-# Copyright (C) 2005 Red Hat, Inc.
-# All rights reserved.
-# END COPYRIGHT BLOCK
-#
-
-# migrate an old server instance to a new server instance
-
-BEGIN {
- $| = 1;
- # print CGI header
- print "Content-type: text/plain\n\n";
- require 'uname.lib';
-
- $isNT = -d '\\';
- $PATHSEP = $isNT ? "\\" : "/";
- # get the server root directory
- $sroot = $ENV{'NETSITE_ROOT'};
- $exitCode = 0;
- @INC = ( '.', '../../../admin/admin/bin' );
- grep { s@/@\\@g } @INC if $isNT;
- $script_suffix = $isNT ? ".bat" : "";
- $exe_suffix = $isNT ? ".exe" : "";
- $slapdExecName = $isNT ? 'slapd.exe' : 'ns-slapd';
- $nullFile = $isNT ? 'nul' : '/dev/null';
- # NT needs quotes around some things unix doesn't
- $quote = $isNT ? "\"" : "";
- if ($isNT) {
- # we have to pass batch files directly to the NT command interpreter
- $com_spec = $ENV{ComSpec};
- if (!$com_spec) {
- $com_spec = $ENV{COMSPEC};
- }
- if (!$com_spec || ! -f $com_spec) {
- # find the first available command interpreter
- foreach $drive (c..z) {
- $com_spec = "$drive:\\winnt\\system32\\cmd.exe";
- last if (-f $com_spec);
- $com_spec = undef;
- }
- if (! $com_spec) {
- # punt and pray
- $com_spec = 'c:\winnt\system32\cmd.exe';
- }
- }
- $os = "WINNT";
- } else {
- $os = &uname("-s");
- }
-
- if ( ($os eq "AIX") || ($os eq "HP-UX") ) {
- $sigChildHandler = 'sigChildHandler';
- }
-}
-
-sub mySystem {
- my $cmd = $_[0];
- # the system {$cmd} avoids some NT shell quoting problems if the $cmd
- # needs to be quoted e.g. contains spaces; the map puts double quotes
- # around the arguments on NT which are stripped by the command
- # interpreter cmd.exe; but don't quote things which are already quoted
- my @fixargs = map { /^[\"].*[\"]$/ ? $_ : $quote . $_ . $quote } @_;
- my $rc = 0;
- if ($cmd =~ /[.](bat|cmd)$/) {
- # we have to pass batch files directly to the NT command interpreter
- $cmd = $com_spec;
-# print "system $cmd /c \"@fixargs\"\n";
- $rc = system {$cmd} '/c', "\"@fixargs\"";
- } else {
-# print "system $cmd \"@fixargs\"\n";
- $rc = system {$cmd} @fixargs;
- }
-
- return $rc;
-}
-
-sub getNextEntry {
- my $fh = shift;
- my @entry = (); # an array of strings, each string is 1 attr/value pair
- my $line = "";
- while (($line = <$fh>) && !($line =~ /^$/)) { # entry is terminated by EOF or empty line34
- chop $line;
- if ($line =~ /^\s/) { # line begins with a single space char
- $entry[@entry-1] .= $'; # add continuation to line
- } else {
- push @entry, $line;
- }
- }
- return @entry;
-}
-
-sub runAndIgnoreOutput {
- my $cmd = shift;
- print "\n.";
- open(RUNCMD, "${quote}$cmd${quote} 2>&1 |") or die "Error: could not run $cmd: $!";
- print "\n." ;
- sleep(1); # allow pipe to fill with data
- print "\n." ;
- while (<RUNCMD>) {
-# print;
- }
- my $code = close(RUNCMD);
-# print "runAndIgnore: code=$code status=$?\n";
- return $?;
-}
-
-sub printEntry {
- my $fh = shift;
- foreach (@_) {
- print $fh $_, "\n";
- }
- print $fh "\n";
-}
-
-sub reportAndExit {
- my $now_time = gmtime;
- print "END migration at ", $now_time, " GMT\n";
- print "Exit status is ", $exitCode, "\n";
- if ($? == 0 && $exitCode == 0) {
- print "NMC_STATUS: 0\n";
- } else {
- # not necessary to show this
- print '$?=', $?+0, ' $!=', $!+0, ' $exitCode=', $exitCode, "\n";
- print shift, "\n";
- print "NMC_STATUS: $exitCode\n";
- }
-
- print "###MIGRATION FINISHED###\n";
-
- exit($exitCode);
-}
-
-# put stderr on stdout
-open(STDERR, ">&STDOUT" );
-# use unbuffered output
-select(STDERR);
-$| = 1;
-select(STDOUT);
-$| = 1;
-$TRACELEVEL = 0 ;
-
-sub sigChildHandler {
-# print "in sig child handler\n";
-# print "args = @_\n";
-}
-
-$SIG{__DIE__} = 'exit';
-$SIG{'QUIT'} = 'exit';
-$SIG{'INT'} = 'exit';
-$SIG{'TERM'} = 'exit';
-# AIX needs a SIGCHILD handler for pipes
-if (defined($sigChildHandler)) {
- $SIG{'CHLD'} = $sigChildHandler;
- $SIG{'CLD'} = $sigChildHandler;
-}
-
-# the atexit handler
-END {
- $! = 0;
- $? = $exitCode;
- if ($exitCode == 0) {
- # just give a report if the operation was successfull
- &reportAndExit; }
-}
-
-# process the CGI input
-use Cgi;
-
-if (($sroot =~ m#/$#) || ($sroot =~ m#\\$#)) {
- chop $sroot;
-}
-
-if (($cgiVars{'oldServerRoot'} =~ m#/$#) || ($cgiVars{'oldServerRoot'} =~ m#\\$#)) {
- chop $cgiVars{'oldServerRoot'};
-}
-
-$instanceDir = $sroot . $PATHSEP . 'slapd-' . $cgiVars{'servid'};
-
-#########################################################################################
-# get the Directory Server version
-# For the moment the migration works only from 4.x version to 5.0 version
-# As for as previous versions are concerned we don't migrate neither 1.x nor 3.x
-#########################################################################################
-
-($oldVersion, $oldMinor) = &getVersion($cgiVars{'oldServerRoot'});
-print "\n\noldVersion: $oldVersion, oldMinor: $oldMinor" ;
-
-
-if ($oldVersion < 4) {
- # migration of version under 4 is not supported
- # abort the use of the migration script up to 5.1
- $exitCode = 1 ;
- die "\n\n\n\n\n\n\nThe migration of a $oldVersion.x directory instance is not available." .
- "\n\nINFORMATION" .
- "\nYou can also migrate a 4.x directory server." .
- "\nIt must be executed manually through a command line." .
- "\nPlease refer to the product documentation to get usage and prerequisites\n";
-}
-else {
- # print begin message
- $now_time = gmtime;
- print "BEGIN migration at: ", $now_time, " GMT\n";
- $oldSlapdConf = $cgiVars{'oldServerRoot'} . $PATHSEP . 'slapd-' .
- $cgiVars{'oldServerName'} . $PATHSEP . 'config' . $PATHSEP .
- 'slapd.conf';
-
- open(OLDSLAPDCONF, $oldSlapdConf) or
- die "Error: could not open old config file $oldSlapdConf: $!";
- while(<OLDSLAPDCONF>) {
- chop;
- if (/^port\s+/i) {
- if (! $cgiVars{'servport'}) {
- $cgiVars{'servport'} = $';
- $old_port = $' ;
- $Cgi::CONTENT .= '&servport=' . $';
- if ($ENV{'QUERY_STRING'}) {
- $ENV{'QUERY_STRING'} .= '&servport=' . $';
- }
- }
- } elsif (/^rootdn\s+/i) {
- if (! $cgiVars{'rootdn'}) {
- ($value = $') =~ s/^[\"]//;
- # remove leading "
- $value =~ s/[\"]$//;
- # remove trailing "
- $cgiVars{'rootdn'} = $value;
- $Cgi::CONTENT .= '&rootdn=' . $value;
- if ($ENV{'QUERY_STRING'}) {
- $ENV{'QUERY_STRING'} .= '&rootdn=' . $value;
- }
- }
- }
- }
- close(OLDSLAPDCONF);
-
- $testDir = $instanceDir . $PATHSEP . 'config';
-
- # check if it's necessary or not to stop the old server
- if (-d $testDir) {
- printTrace("\ninstance already exists \n",3) ;
- # the instance already exists
- $DSEldif = $instanceDir. $PATHSEP . 'config' . $PATHSEP . 'dse.ldif';
- open(DSELDIF, $DSEldif) or
- die "Error: could not open old config file $DSEldif: $!";
- while(<DSELDIF>) {
- chop;
- if (/^nsslapd-port:\s+/i) {
- $cgiVars{'servport'} = $';
- $Cgi::CONTENT .= '&servport=' . $';
- if ($ENV{'QUERY_STRING'}) {
- $ENV{'QUERY_STRING'} .= '&servport=' . $';
- }
- } elsif (/^nsslapd-rootdn:\s+/i) {
- ($value = $') =~ s/^[\"]//;
- # remove leading "
- $value =~ s/[\"]$//;
- # remove trailing "
- $cgiVars{'rootdn'} = $value;
- $Cgi::CONTENT .= '&rootdn=' . $value;
- if ($ENV{'QUERY_STRING'}) {
- $ENV{'QUERY_STRING'} .= '&rootdn=' . $value;
- }
- }
- }
- close(DSELDIF);
- if ($old_port eq $cgiVars{'servport'}) {
- # need to stop the old instance
- if ($cgiVars{'shutdown_old_server'}) {
- &stopServer($cgiVars{'oldServerRoot'}, 'slapd-' . $cgiVars{'oldServerName'});
- }
- }
- &startServer();
- }
- else {
- # need to stop the old instance
- if ($cgiVars{'shutdown_old_server'}) {
- &stopServer($cgiVars{'oldServerRoot'}, 'slapd-' . $cgiVars{'oldServerName'});
- }
- }
-
- @cgi = keys(%cgiVars);
- printTrace("\ncgi: @cgi",3);
- printTrace("\npwd: $cgiVars{'rootpw'}, rootdn: $cgiVars{'rootdn'}, port: $cgiVars{'servport'},
- old_instance -o: $cgiVars{'oldServerRoot'}$PATHSEPslapd-$cgiVars{'oldServerName'},
- new_instance -n: $sroot$PATHSEPslapd-$cgiVars{'servid'}",3) ;
-
- # if the instance does not exist, create it
- if (! -d $testDir) {
- print "Creating the new instance . . .\n";
- printTrace("\nbefore instance creation\n",3) ;
- # call the instance creation program; we should already be in the same
- # directory; if we are being called as a CGI, index will parse the CGI
- # parameters, otherwise, it will use the command line parameters
- if ($isNT) {
- $myprog = "ds_create.exe";
- } else {
- $myprog = "./ds_create";
- }
- printTrace("\nafter instance creation\n",3) ;
-
- # since we already parsed stdin, we need to pass it to the instance creation
- # CGI somehow; fortunately, we saved the old contents of stdin in the
- # $Cgi::CONTENT, so just pipe that into our CGI
- # print "executing $myprog @ARGV\n";
- open(INDEX, "|$myprog @ARGV") or die "Error: system($myprog, @ARGV): $!";
- sleep(1); # allow prog to init stdin read buffers
- print INDEX $Cgi::CONTENT, "\n";
- close INDEX;
-
- $exitCode = $?;
- if ($exitCode != 0) {
- die "Error: could not create new instance: $!";
- }
-
-
- } else {
- }
-
-
- printTrace("\nBefore instance created test\n",3) ;
-
- chdir("$sroot${PATHSEP}bin${PATHSEP}slapd${PATHSEP}admin${PATHSEP}bin");
-
- # Now that the new instance is created, merge in the old configuration data
- # $cgiVars{'oldServerRoot'} will contain the full path of the old server
- # root directory
- # $cgiVars{'oldServerName'} will contain the old instance name
- $myscript = "migrateInstance5";
- # print "executing $myscript $sroot $cgiVars{'oldServerRoot'} $cgiVars{'servid'} $cgiVars{'oldServerName'} $savedLdif\n";
-
- @args = ($, $myscript, '-p', $cgiVars{'servport'}, '-D', $cgiVars{'rootdn'}, '-w', $cgiVars{'rootpw'}, '-o',
- $cgiVars{'oldServerRoot'} . $PATHSEP . 'slapd-' . $cgiVars{'oldServerName'}, '-n',
- $sroot . $PATHSEP . 'slapd-' . $cgiVars{'servid'}, '-noinput');
- $exitCode = &mySystem(@args);
- die "Error: @args: $!" if ($exitCode != 0);
- }
-
-
-sub startServer {
- my $errLog = $instanceDir . $PATHSEP . 'logs' . $PATHSEP . 'errors';
- # emulate tail -f
- # if the last line we see does not contain "slapd started", try again
- my $done = 0;
- my $started = 0;
- my $code = 0;
- my $lastLine = "";
- my $timeout = time + 60; # 1 minute
- my $startCmd = $instanceDir . $PATHSEP . 'start' . $script_suffix;
- if (! -f $startCmd) {
- $startCmd = $instanceDir . $PATHSEP . 'start-slapd' . $script_suffix;
- }
- $code = &mySystem($startCmd);
- open(IN, $errLog) or die "Could not open error log $errLog: $!";
- my $pos = tell(IN);
- while (($done == 0) && (time < $timeout)) {
- for (; ($done == 0) && ($_ = <IN>); $pos = tell(IN)) {
- $lastLine = $_;
-# print;
- # the server has already been started and shutdown once . . .
- if (/slapd started\./) {
- $started++;
- if ($started == 2) {
- $done = 1;
- }
- # sometimes the server will fail to come up; in that case, restart it
- } elsif (/Initialization Failed/) {
-# print "Server failed to start: $_";
- $code = &mySystem($startCmd);
- # sometimes the server will fail to come up; in that case, restart it
- } elsif (/exiting\./) {
-# print "Server failed to start: $_";
- $code = &mySystem($startCmd);
- }
- }
- if ($lastLine =~ /PR_Bind/) {
- # server port conflicts with another one, just report and punt
- print $lastLine;
- print "This server cannot be started until the other server on this\n";
- print "port is shutdown.\n";
- $done = 1;
- }
- if ($done == 0) {
- # rest a bit, then . . .
- sleep(2);
- # . . . reset the EOF status of the file desc
- seek(IN, $pos, 0);
- }
- }
- close(IN);
-
- if ($started < 2) {
- $! = $code;
-# $now = time;
-# if ($now > $timeout) {
-# print "Possible timeout: timeout=$timeout now=$now\n";
-# }
- die "Error: could not start server: $!";
- }
-
- return 0;
-}
-
-sub stopServer {
- my $root = shift;
- my $name = shift;
- $maxStopIterations = 60;
- print "Shutting down server $name . . .\n";
- $stopCmd = $quote . $root . $PATHSEP . $name . $PATHSEP . 'stop' . $script_suffix . $quote;
- if (! -f $stopCmd) {
- $stopCmd = $quote . $root . $PATHSEP . $name . $PATHSEP . 'stop-slapd' . $script_suffix . $quote;
- }
-
- if (! -f $stopCmd) {
- # no stop command, probably a 1.X system; for NT, we'll try net stop
- # for unix, we'll get the pid and kill it
- if ($isNT) {
- $stopCmd = 'net stop ' . $name;
- } else {
- # see if there is a pid file
- $pidfile = $root . $PATHSEP . $name . $PATHSEP . 'logs' .
- $PATHSEP . 'pid';
- if (open(PIDFILE, $pidfile)) {
- chomp($pid = <PIDFILE>);
- close(PIDFILE);
- while ($maxStopIterations-- && !$exitCode) {
- $exitCode = kill(15, $pid);
- }
- $stopCmd = undef;
- }
- }
- }
-
- # keep looping until the stop cmd returns an error code, which usually
- # means that what ever we want to stop is stopped, or some other error
- # occurred e.g. permission, or no such service
- $exitCode = &runAndIgnoreOutput($stopCmd);
-# print "stopServer: exitCode=$exitCode\n";
- while ($stopCmd && $maxStopIterations-- && !$exitCode) {
- $exitCode = &runAndIgnoreOutput($stopCmd);
-# print "stopServer: exitCode=$exitCode\n";
- }
-
- if (!$maxStopIterations) {
- print "Warning: could not shutdown the old server: $!\n";
- }
-
- sleep(10) if ($isNT);
-
- $exitCode = 0;
-}
-
-#############################################################################
-# print message error to the user standard output.
-
-sub printTrace {
-
- my $Msg = shift ;
- my $level = shift ;
- if ($level <= $TRACELEVEL) {
- print($Msg);
- }
-
-}
-
-#############################################################################
-
-sub getVersion {
- my $rootDir = shift;
- my $version = 0;
- my $minor = 0;
- my $progDir = "${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server${PATHSEP}";
- my $progDir2 = "${PATHSEP}bin${PATHSEP}slapd${PATHSEP}";
- # get the current directory so we can go back to it
- my $curdir = &getCwd;
-
- # find the slapd executable
- $prog = $rootDir . $progDir . $slapdExecName;
- if (! -f $prog) {
- $prog = $rootDir . $progDir2 . $slapdExecName;
- if (-f $prog && $isNT) {
- # if slapd is in bin/slapd and we're on NT, just assume version 1;
- # apparently, slapd.exe doesn't like the -v argument . . .
- return ( '1', $minor );
- }
- }
-
- # read the old version from the old slapd program
- chdir($rootDir . $progDir) or
- die "Could not chdir to $rootDir${progDir}: $!: ";
- open(F, "${quote}${quote}$prog${quote} -v${quote} 2>&1 |") or
- die "Could not run slapd program $prog: $!";
- sleep(1); # allow some data to accumulate in the pipe
-# print "Output from $prog -v:\n";
- while (<F>) {
- print;
- if (/^Netscape-Directory\/(\d+)\.(\d+)/) {
- $version = $1;
- $minor = $2;
- last;
- }
- elsif (/^Netscape-Directory\(restriced-mode\)\/(\d+)\.(\d+)/) {
- $version = $1;
- $minor = $2;
- last;
- }
- }
- $code = close(F);
-# print "$prog returned code=$code status=$?\n";
-
- # done determining versions; go back to orig directory
- chdir($curdir) or die "Could not chdir to $curdir: $!: ";
-
- $version == 0 and
- die "Could not determine version of the directory server in $rootDir: ";
-
- return ( $version, $minor );
-}
-
-
-#############################################################################
-
-sub getCwd {
- my $command = $isNT ? "cd" : "/bin/pwd";
- open(PWDCMD, "$command 2>&1 |") or
- die "Error: could not execute $command: $!";
- # without the following sleep, reading from the pipe will
- # return nothing; I guess it gives the pwd command time
- # to get some data to read . . .
- sleep(1);
- my $curdir;
- while (<PWDCMD>) {
- if (!$curdir) {
- chomp($curdir = $_);
- }
- }
- my $code = close(PWDCMD);
-# if ($code || $?) {
-# print "$command returned code=$code status=$? dir=$curdir\n";
-# }
-# print "getCwd curdir=\[$curdir\]\n";
- return $curdir;
-}
-
-#############################################################################
-#############################################################################
-#############################################################################
diff --git a/ldap/admin/src/migrateLocalDB b/ldap/admin/src/migrateLocalDB
deleted file mode 100644
index 90e9a97f..00000000
--- a/ldap/admin/src/migrateLocalDB
+++ /dev/null
@@ -1,297 +0,0 @@
-#!/usr/bin/env perl
-#
-# BEGIN COPYRIGHT BLOCK
-# This Program is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; version 2 of the License.
-#
-# This Program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place, Suite 330, Boston, MA 02111-1307 USA.
-#
-# In addition, as a special exception, Red Hat, Inc. gives You the additional
-# right to link the code of this Program with code not covered under the GNU
-# General Public License ("Non-GPL Code") and to distribute linked combinations
-# including the two, subject to the limitations in this paragraph. Non-GPL Code
-# permitted under this exception must only link to the code of this Program
-# through those well defined interfaces identified in the file named EXCEPTION
-# found in the source code files (the "Approved Interfaces"). The files of
-# Non-GPL Code may instantiate templates or use macros or inline functions from
-# the Approved Interfaces without causing the resulting work to be covered by
-# the GNU General Public License. Only Red Hat, Inc. may make changes or
-# additions to the list of Approved Interfaces. You must obey the GNU General
-# Public License in all respects for all of the Program code and other code used
-# in conjunction with the Program except the Non-GPL Code covered by this
-# exception. If you modify this file, you may extend this exception to your
-# version of the file, but you are not obligated to do so. If you do not wish to
-# provide this exception without modification, you must delete this exception
-# statement from your version and license this file solely under the GPL without
-# exception.
-#
-#
-# Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
-# Copyright (C) 2005 Red Hat, Inc.
-# All rights reserved.
-# END COPYRIGHT BLOCK
-#
-
-# Migrate a SuiteSpot 2.X or 3.X localdb to a 4.0 directory server
-
-BEGIN {
- $isNT = -d '\\';
- $PATHSEP = $isNT ? "\\" : "/";
- @INC = ( '.', '../../../admin/admin/bin' );
- grep { s@/@\\@g } @INC if $isNT;
- $script_suffix = $isNT ? ".bat" : "";
- $exe_suffix = $isNT ? ".exe" : "";
- # NT needs quotes around some things unix doesn't
- $quote = $isNT ? "\"" : "";
-}
-
-sub getNextEntry {
- my $fh = shift;
- my @entry = (); # an array of strings, each string is 1 attr/value pair
- my $line = "";
- while (($line = <$fh>) && !($line =~ /^$/)) { # entry is terminated by EOF or empty line34
- chop $line;
- if ($line =~ /^\s/) { # line begins with a single space char
- $entry[@entry-1] .= $'; # add continuation to line
- } else {
- push @entry, $line;
- }
- }
- return @entry;
-}
-
-# given a string of the form string:value, return everything to the left of the :
-sub getAttrName {
- my $s = shift;
- $s =~ s/[:].*$//;
- return $s;
-}
-
-sub printEntry {
- my $fh = shift;
- foreach (@_) {
- print $fh $_, "\n";
- }
- print $fh "\n";
-}
-
-sub usage {
- print 'Usage: perl migrateLocalDb <userdb> <new suffix> [<new instance>]', "\n";
- print "\t", '<userdb> - full path to the userdb directory to migrate', "\n";
- print "\t", ' e.g. /usr/netscape/suitespot3/userdb', "\n";
- print "\t", '<new suffix> - new suffix e.g. dc=example,dc=com; may be empty', "\n";
- print "\t", '<new instance> - full path to the destination instance', "\n";
- print "\t", ' e.g. /usr/netscape/server4/slapd-foo', "\n";
- print "The new instance is optional. If not given, the local db will\n";
- print "be converted to the LDIF file userdb/localdb.ldif, but\n";
- print "it will not be added to the database of the new instance.\n";
-}
-
-sub sigDieHandler {
- print @_, "\n";
- print "\n";
- &usage();
- print "\n";
- print "NMC_STATUS: ", 0+$!, "\n";
- exit $!;
-}
-
-$SIG{__DIE__} = 'sigDieHandler';
-
-# check for command line arguments
-if (@ARGV > 0) {
- $localDBPath = $ARGV[0];
- $newSuffix = $ARGV[1];
- $instanceDir = $ARGV[2];
- $bindDN = $ARGV[3];
- $bindPwd = $ARGV[4];
- # the perl executable should be in server root/install/
- $relPath = '/install/';
- $relPath =~ s#/#\\#g if ($isNT);
- ($sroot = $) =~ s#$relPath.*$##;
-} elsif ($ENV{'REQUEST_METHOD'}) {
- $| = 1;
- # print CGI header
- print "Content-type: text/plain\n\n";
-
- # process the CGI input
- use Cgi;
-
- # get the server root directory
- $sroot = $ENV{'NETSITE_ROOT'};
-
- $localDBPath = $cgiVars{'localDBPath'};
- $newSuffix = $cgiVars{'newSuffix'};
- $instanceDir = $cgiVars{'instanceDir'};
- $bindDN = $cgiVars{'bindDN'};
- $bindPwd = $cgiVars{'bindPwd'};
-} else {
- die "";
-}
-
-# this is a table of attributes which have DN syntax
-%dnAttrs = (
- 'aliasedobjectname', "\n",
- 'member', "\n",
- 'owner', "\n",
- 'roleoccupant', "\n",
- 'seealso', "\n",
- 'dn', "\n",
- 'uniquemember', "\n",
- 'creatorsname', "\n",
- 'modifiersname', "\n",
- 'manager', "\n",
- 'documentauthor', "\n",
- 'secretary', "\n",
- 'associatedname', "\n",
- 'ditredirect', "\n",
- 'targetdn', "\n",
- 'newrdn', "\n",
- 'newsuperior', "\n",
- 'lastmodifiedby', "\n",
- 'replicaroot', "\n",
- 'replicabinddn', "\n",
- 'cirreplicaroot', "\n",
- 'cirbinddn', "\n",
- 'vlvbase', "\n",
- 'netscapemdsuffix', "\n",
- 'changelog', "\n",
- 'obsoletedbydocument', "\n",
- 'obsoletesdocument', "\n",
- 'reciprocalnaminglink', "\n",
- 'updatedbydocument', "\n",
- 'updatesdocument', "\n"
-);
-
-print "Begin local db migration\n";
-
-# see if the parameters are valid
-# check localdb path
-die "Error: could not find the local db $localDBPath" if (! -d $localDBPath);
-# check suffix?
-
-# get the old server root directory
-# step 1: convert the local db to an ldif file
-# lookup the old suffix from the lcache.conf
-$lcache = $localDBPath . $PATHSEP . 'ldap' . $PATHSEP . 'config' . $PATHSEP .
- 'lcache.conf';
-open(LCACHE, "$lcache") or die "Error: could not open config file $lcache";
-while (<LCACHE>) {
- chop;
- if (/^suffix\s+/i) {
- $oldSuffix = $';
- $oldSuffix =~ s/^[\"]//;
- # trim leading "
- $oldSuffix =~ s/[\"]$//;
- # trim trailing "
- print "The old suffix is $oldSuffix\n";
- }
-}
-close(LCACHE);
-
-print "Converting the local db to LDIF . . .\n";
-# run the ldapsearch -C command
-$cmddir = $localDBPath . $PATHSEP . 'ldap' . $PATHSEP . 'tools';
-@cmd = ($quote . $cmddir . $PATHSEP . 'ldapsearch' . $quote, '-C',
- "${quote}$lcache${quote}",
- '-s', 'sub', '-b', "\"$oldSuffix\"", '"objectclass=*"');
-chdir($cmddir) or die "Error: could not change to directory $cmddir";
-open(READCMD, "${quote}@cmd${quote}|") or die "Error: could not execute @cmd";
-if ($instanceDir) {
- $outputFile = $instanceDir . $PATHSEP . 'ldif' . $PATHSEP . 'localdb.ldif';
-} else {
- $outputFile = $localDBPath . $PATHSEP . 'localdb.ldif';
-}
-
-open(OUT, ">$outputFile") or die "Error: could not write file $outputFile";
-while (@entry = getNextEntry(\*READCMD)) {
- # for each entry, replace the old suffix with the new one; if there
- # was no old suffix, just append the new one to the DN value attrs
- if ($newSuffix && $newSuffix ne '""') {
- if ($oldSuffix && $oldSuffix ne '""') {
- grep { s/$oldSuffix/$newSuffix/ig } @entry;
- } else {
- for ($ii = 0; $ii < @entry; ++$ii) {
- $name = &getAttrName($entry[$ii]);
- if ($dnAttrs{lc($name)}) {
- $entry[$ii] .= ", $newSuffix";
- }
- }
- }
- }
-
- printEntry(\*OUT, @entry);
-}
-close(READCMD);
-close(OUT);
-
-if ($? != 0) {
- die "Error: could not read local db from $localDBPath";
-} elsif (! -s $outputFile) {
- die "Error: converted local db is empty";
-}
-
-# check instance dir
-
-if ($instanceDir) {
- if (! -d $instanceDir) {
- # use may have given relative path
- $instanceDir = $sroot . $PATHSEP . $instanceDir;
- die "Error: could not find the instance dir $instanceDir in server root $sroot"
- if (! -d $instanceDir);
- }
-
-# step 2: load the converted LDIF file into the target directory server
-# if the bindDN and password were given, attempt to use ldif2ldap, otherwise,
-# shutdown the server and use ldif2db
-
- if ($bindDN && $bindPwd) {
- } else {
- print "Shutting down the server . . .\n";
- # shutdown the server
- $stopCmd = $quote . $instanceDir . $PATHSEP . 'stop-slapd' . $script_suffix . $quote;
- system($stopCmd);
- print "Warning: could not shutdown the server in $instanceDir.\nThe server may already be down." if ($? != 0);
- sleep(10); # give the server time to shutdown
-
- # add the new suffix to the slapd.ldbm.conf
- if ($newSuffix && $newSuffix ne '""') {
- print "Adding suffix $newSuffix . . .\n";
- $slc = $instanceDir . $PATHSEP . 'config' . $PATHSEP . 'slapd.ldbm.conf';
- open(SLC, ">>$slc") or
- print "Warning: could not add the suffix $newSuffix: import may fail.\n";
- print SLC "suffix\t\"$newSuffix\"\n";
- close(SLC);
- }
-
- print "Importing the local db LDIF file . . .\n";
- # import the LDIF file
- @impCmd = ($quote . $instanceDir . $PATHSEP . 'ldif2db' . $quote,
- '-C', '-i', "${quote}$outputFile${quote}");
- system(@impCmd);
- die "Error: could not import LDIF file $outputFile" if ($? != 0);
-
- print "Restarting the server . . .\n";
- # start the server
- $startCmd = $quote . $instanceDir . $PATHSEP . 'start-slapd' . $script_suffix . $quote;
- system($startCmd);
- print "Warning: could not restart the server in $instanceDir" if ($? != 0);
- }
-
- print "Finished. The local db has been imported to $instanceDir.\n";
-} else {
- print "Finished. The local db has been written to $outputFile.\n";
-}
-
-if (%cgiVars) {
- print "NMC_STATUS: 0\n";
-}
-
-exit 0;
diff --git a/ldap/admin/src/migratePwdFile b/ldap/admin/src/migratePwdFile
deleted file mode 100644
index 5b76381a..00000000
--- a/ldap/admin/src/migratePwdFile
+++ /dev/null
@@ -1,122 +0,0 @@
-#!/usr/bin/env perl
-#
-# BEGIN COPYRIGHT BLOCK
-# This Program is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; version 2 of the License.
-#
-# This Program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place, Suite 330, Boston, MA 02111-1307 USA.
-#
-# In addition, as a special exception, Red Hat, Inc. gives You the additional
-# right to link the code of this Program with code not covered under the GNU
-# General Public License ("Non-GPL Code") and to distribute linked combinations
-# including the two, subject to the limitations in this paragraph. Non-GPL Code
-# permitted under this exception must only link to the code of this Program
-# through those well defined interfaces identified in the file named EXCEPTION
-# found in the source code files (the "Approved Interfaces"). The files of
-# Non-GPL Code may instantiate templates or use macros or inline functions from
-# the Approved Interfaces without causing the resulting work to be covered by
-# the GNU General Public License. Only Red Hat, Inc. may make changes or
-# additions to the list of Approved Interfaces. You must obey the GNU General
-# Public License in all respects for all of the Program code and other code used
-# in conjunction with the Program except the Non-GPL Code covered by this
-# exception. If you modify this file, you may extend this exception to your
-# version of the file, but you are not obligated to do so. If you do not wish to
-# provide this exception without modification, you must delete this exception
-# statement from your version and license this file solely under the GPL without
-# exception.
-#
-#
-# Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
-# Copyright (C) 2005 Red Hat, Inc.
-# All rights reserved.
-# END COPYRIGHT BLOCK
-#
-#
-# Convert an old password.txt file into the new pin.txt format
-# This script requires a single argument which is the directory and
-# server instance prefix of the two files (e.g. /servers/alias/slapd-foo)
-#
-# ISSUES:
-# This code sets the mode of the created file to 660 (allows suitespot
-# group access. Should it also set the user and group values? Where
-# should they come from?
-#
-BEGIN {
- $isNT = -d "\\";
- $PS = $isNT ? "\\" : "/";
-}
-
-$sroot = $ARGV[0];
-$prefix = $ARGV[1];
-
-#
-# create the names for the old (password) and new (pin) files
-#
-$pwdfile = "${prefix}-password.txt";
-$pinfile = "${prefix}-pin.txt";
-
-if (-f $pwdfile && ! -f $pinfile) {
- open(PWDFILE, $pwdfile) || die "Cannot open password file: $pwdfile\n";
-
- my $count = 0;
- my $pin;
- while(<PWDFILE>) {
- chomp; # trim new line
-
- if ($count == 0) {
- $pin = $_;
- }
-
- $count = $count+1;
- }
- close PWDFILE;
-
- if ($count == 0) {
- die "No password found in password file\n";
- } elsif ($count != 1) {
- print "Extra lines found in password file\n";
- }
-
- open(PINFILE, ">$pinfile") || die "Cannot create pin file: $pinfile\n";
- print PINFILE "Software (Internal) Token:$pin\n";
- close PINFILE;
- chmod 0660, $pinfile;
-
- # set the ownership of the file; should be the same as the slapd user id
- if (! $isNT) {
- $confFile = "$sroot${PS}$prefix${PS}config${PS}slapd.conf";
- open(CONF, $confFile) or die "Error: cannot open $confFile: $!";
- while (<CONF>) {
- if (/^localuser\s+/i) {
- chomp($newuser = $');
- last;
- }
- }
- close(CONF);
- if (!$newuser) {
- $confFile = "$sroot${PS}shared${PS}config${PS}ssusers.conf";
- open(SSUSERS, $confFile) or
- die "Error: could not open $confFile: $!";
- while (<SSUSERS>) {
- chop;
- if (/^SuiteSpotUser\s+/i) {
- $newuser = $';
- last;
- }
- }
- close(SSUSERS);
- }
- if ($newuser) {
- chown $newuser, $pinfile;
- }
- }
-}
-
-exit 0;
diff --git a/ldap/admin/src/migrateTo11.in b/ldap/admin/src/migrateTo11.in
deleted file mode 100644
index 01ba572c..00000000
--- a/ldap/admin/src/migrateTo11.in
+++ /dev/null
@@ -1,644 +0,0 @@
-#!/usr/bin/env perl
-#
-# BEGIN COPYRIGHT BLOCK
-# This Program is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; version 2 of the License.
-#
-# This Program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place, Suite 330, Boston, MA 02111-1307 USA.
-#
-# In addition, as a special exception, Red Hat, Inc. gives You the additional
-# right to link the code of this Program with code not covered under the GNU
-# General Public License ("Non-GPL Code") and to distribute linked combinations
-# including the two, subject to the limitations in this paragraph. Non-GPL Code
-# permitted under this exception must only link to the code of this Program
-# through those well defined interfaces identified in the file named EXCEPTION
-# found in the source code files (the "Approved Interfaces"). The files of
-# Non-GPL Code may instantiate templates or use macros or inline functions from
-# the Approved Interfaces without causing the resulting work to be covered by
-# the GNU General Public License. Only Red Hat, Inc. may make changes or
-# additions to the list of Approved Interfaces. You must obey the GNU General
-# Public License in all respects for all of the Program code and other code used
-# in conjunction with the Program except the Non-GPL Code covered by this
-# exception. If you modify this file, you may extend this exception to your
-# version of the file, but you are not obligated to do so. If you do not wish to
-# provide this exception without modification, you must delete this exception
-# statement from your version and license this file solely under the GPL without
-# exception.
-#
-# Copyright (C) 2007 Red Hat, Inc.
-# All rights reserved.
-# END COPYRIGHT BLOCK
-#
-
-# cmd line parsing
-use Getopt::Long;
-# tempfiles
-use File::Temp qw(tempfile tempdir);
-
-# load perldap
-use Mozilla::LDAP::Conn;
-use Mozilla::LDAP::Utils qw(normalizeDN);
-use Mozilla::LDAP::API qw(ldap_explode_dn);
-use Mozilla::LDAP::LDIF;
-
-# these are the attributes for which we will always use
-# the new value, or which do not apply anymore
-my %ignoreOld =
-(
- 'nsslapd-errorlog' => 'nsslapd-errorlog',
- 'nsslapd-accesslog' => 'nsslapd-accesslog',
- 'nsslapd-auditlog' => 'nsslapd-auditlog',
- 'nskeyfile' => 'nsKeyfile',
- 'nscertfile' => 'nsCertfile',
- 'nsslapd-pluginpath' => 'nsslapd-pluginPath',
- 'nsslapd-plugintype' => 'nsslapd-pluginType',
- 'nsslapd-pluginversion' => 'nsslapd-pluginVersion',
- 'nsslapd-plugin-depends-on-named' => 'nsslapd-plugin-depends-on-named',
-# these are new attrs that we should just pass through
- 'nsslapd-schemadir' => 'nsslapd-schemadir',
- 'nsslapd-lockdir' => 'nsslapd-lockdir',
- 'nsslapd-tmpdir' => 'nsslapd-tmpdir',
- 'nsslapd-certdir' => 'nsslapd-certdir',
- 'nsslapd-ldapifilepath' => 'nsslapd-ldapifilepath',
- 'nsslapd-ldapilisten' => 'nsslapd-ldapilisten',
- 'nsslapd-ldapiautobind' => 'nsslapd-ldapiautobind',
- 'nsslapd-ldapimaprootdn' => 'nsslapd-ldapimaprootdn',
- 'nsslapd-ldapimaptoentries' => 'nsslapd-ldapimaptoentries',
- 'nsslapd-ldapiuidnumbertype' => 'nsslapd-ldapiuidnumbertype',
- 'nsslapd-ldapigidnumbertype' => 'nsslapd-ldapigidnumbertype',
- 'nsslapd-ldapientrysearchbase' => 'nsslapd-ldapientrysearchbase',
- 'nsslapd-ldapiautodnsuffix' => 'nsslapd-ldapiautodnsuffix'
-);
-
-# these are the attributes for which we will always use
-# the old value
-my %alwaysUseOld =
-(
- 'aci' => 'aci'
-);
-
-# global vars used throughout script + subs
-my $pkgname = "@package_name@";
-# this is the new pkgname which may be something like
-# fedora-ds-base - we have to strip off the -suffix
-if ($pkgname =~ /-(core|base)$/) {
- $pkgname =~ s/-(core|base)$//;
-}
-my $oldpkgname = $pkgname;
-my $oldsroot = "/opt/$oldpkgname";
-
-# figure out the current bdb version
-my $db_version=`db_verify -V`;
-my ($db_major_version, $db_minor_version);
-if ($db_version =~ /Berkeley DB (\d+)\.(\d+)/) {
- $db_major_version = $1;
- $db_minor_version = $2;
-}
-my $db_verstr = "bdb/${db_major_version}.${db_minor_version}/libback-ldbm";
-
-my $debuglevel = 0;
-# use like this:
-# debug(3, "message");
-# this will only print "message" if $debuglevel is 3 or higher (-vvv on the command line)
-sub debug {
- my ($level, @rest) = @_;
- if ($level <= $debuglevel) {
- print STDERR "+" x $level, @rest;
- }
-}
-
-sub getNewDbDir {
- my ($ent, $attr, $inst) = @_;
- my %objclasses = map { lc($_) => $_ } $ent->getValues('objectclass');
- my $cn = $ent->getValues('cn');
- my $newval;
- if ($objclasses{nsbackendinstance}) {
- $newval = "@localstatedir@/lib/$pkgname/$inst/db/$cn";
- } elsif (lc $cn eq 'config') {
- $newval = "@localstatedir@/lib/$pkgname/$inst/db";
- } elsif (lc $cn eq 'changelog5') {
- $newval = "@localstatedir@/lib/$pkgname/$inst/cldb";
- }
- debug(2, "New value [$newval] for attr $attr in entry ", $ent->getDN(), "\n");
- return $newval;
-}
-
-sub migrateCredentials {
- my ($ent, $attr, $inst) = @_;
- my $oldval = $ent->getValues($attr);
- debug(3, "Executing migratecred -o $oldsroot/$inst -n @instconfigdir@/$inst -c $oldval . . .\n");
- my $newval = `migratecred -o $oldsroot/$inst -n @instconfigdir@/$inst -c $oldval`;
- debug(3, "Converted old value [$oldval] to new value [$newval] for attr $attr in entry ", $ent->getDN(), "\n");
- return $newval;
-}
-
-# these are attributes that we have to transform from
-# the old value to the new value (e.g. a pathname)
-# The key of this hash is the attribute name. The value
-# is an anonymous sub which takes two arguments - the entry
-# and the old value. The return value of the sub is
-# the new value
-my %transformAttr =
-(
- 'nsslapd-directory' => \&getNewDbDir,
- 'nsslapd-db-logdirectory' => \&getNewDbDir,
- 'nsslapd-changelogdir' => \&getNewDbDir,
- 'nsds5replicacredentials' => \&migrateCredentials,
- 'nsmultiplexorcredentials' => \&migrateCredentials
-);
-
-#nsslapd-directory - if same as old path, convert to new, otherwise, leave it
-#nsslapd-logdirectory - if same as old path, convert to new, otherwise, leave it
-
-#nsslapd-accesslog
-#nsslapd-errorlog
-#nsslapd-auditlog
-
-#nskeyfile
-#nscertfile
-
-#dn: cn=Internationalization Plugin
-#nsslapd-pluginArg0: $inst/config/slapd-collations.conf
-
-#dn: cn=referential integrity postoperation
-#nsslapd-pluginarg1: $inst/logs/referint
-
-# don't forget changelogdb and certmap.conf
-# [General]
-# FullMachineName= localhost.localdomain
-# SuiteSpotUserID= nobody
-# ServerRoot= /usr/lib64/fedora-ds
-# [slapd]
-# ServerPort= 1100
-# ServerIdentifier= localhost
-# Suffix= dc=example,dc=com
-# RootDN= cn=Directory Manager
-# RootDNPwd= Secret123
-
-sub createInfFileFromDseLdif {
- my $oldroot = shift;
- my $inst = shift;
- my $fname = "$oldroot/$inst/config/dse.ldif";
- my $id;
- ($id = $inst) =~ s/^slapd-//;
- open( DSELDIF, "$fname" ) || die "Can't open $fname: $!";
- my ($outfh, $inffile) = tempfile(SUFFIX => '.inf');
- my $in = new Mozilla::LDAP::LDIF(*DSELDIF) ;
- while ($ent = readOneEntry $in) {
- my $dn = $ent->getDN();
- if ($dn =~ /cn=config/) {
- print $outfh "[General]\n";
- print $outfh "FullMachineName = ", $ent->getValues('nsslapd-localhost'), "\n";
- print $outfh "SuiteSpotUserID = ", $ent->getValues('nsslapd-localuser'), "\n";
- print $outfh "ServerRoot = @serverdir@\n";
- print $outfh "[slapd]\n";
- print $outfh "RootDN = ", $ent->getValues('nsslapd-rootdn'), "\n";
- print $outfh "RootDNPwd = ", $ent->getValues('nsslapd-rootpw'), "\n";
- print $outfh "ServerPort = ", $ent->getValues('nsslapd-port'), "\n";
- print $outfh "ServerIdentifier = $id\n";
- print $outfh "Suffix = o=deleteAfterMigration\n";
- print $outfh "start_server= 0\n";
- last;
- }
- }
- close $outfh;
- close DSELDIF;
-
- return $inffile;
-}
-
-sub makeNewInst {
- my ($ds_newinst, $inffile) = @_;
- system ($ds_newinst, $inffile) == 0 or
- die "Could not create new instance using $ds_newinst with inffile $inffile: $?";
-}
-
-sub copyDatabaseDirs {
- my $srcdir = shift;
- my $destdir = shift;
- if (-d $srcdir && ! -d $destdir) {
- debug(0, "Copying database directory $srcdir to $destdir\n");
- system ("cp -p -r $srcdir $destdir") == 0 or
- die "Could not copy database directory $srcdir to $destdir: $?";
- } elsif (! -d $srcdir) {
- die "Error: database directory $srcdir does not exist";
- } else {
- debug(0, "The destination directory $destdir already exists, copying files/dirs individually\n");
- foreach my $file (glob("$srcdir/*")) {
- debug(3, "Copying $file to $destdir\n");
- if (-f $file) {
- system ("cp -p $file $destdir") == 0 or
- die "Error: could not copy $file to $destdir: $!";
- } elsif (-d $file) {
- system ("cp -p -r $file $destdir") == 0 or
- die "Error: could not copy $file to $destdir: $!";
- }
- }
- }
-}
-
-sub copyDatabases {
- my $oldroot = shift;
- my $inst = shift;
- my $newdbdir = shift;
-
- # global config and instance specific config are children of this entry
- my $basedbdn = normalizeDN("cn=ldbm database,cn=plugins,cn=config");
- # get the list of databases, their index and transaction log locations
- my $fname = "$oldroot/$inst/config/dse.ldif";
- open( DSELDIF, "$fname" ) || die "Can't open $fname: $!";
- my $in = new Mozilla::LDAP::LDIF(*DSELDIF);
- my $targetdn = normalizeDN("cn=config,cn=ldbm database,cn=plugins,cn=config");
- while ($ent = readOneEntry $in) {
- next if (!$ent->getDN()); # just skip root dse
- # look for the one level children of $basedbdn
- my @rdns = ldap_explode_dn($ent->getDN(), 0);
- my $parentdn = normalizeDN(join(',', @rdns[1..$#rdns]));
- if ($parentdn eq $basedbdn) {
- my $cn = $ent->getValues('cn');
- my %objclasses = map { lc($_) => $_ } $ent->getValues('objectclass');
- if ($cn eq 'config') { # global config
- debug(1, "Found ldbm database plugin config entry ", $ent->getDN(), "\n");
- my $dir = $ent->getValues('nsslapd-directory');
- my $homedir = $ent->getValues('nsslapd-db-home-directory');
- my $logdir = $ent->getValues('nsslapd-db-logdirectory');
- debug(1, "old db dir = $dir homedir = $homedir logdir = $logdir\n");
- my $srcdir = $homedir || $dir || "$oldroot/$inst/db";
- copyDatabaseDirs($srcdir, $newdbdir);
- copyDatabaseDirs($logdir, $newdbdir) if ($logdir && $logdir ne $srcdir);
- } elsif ($objclasses{nsbackendinstance}) {
- debug(1, "Found ldbm database instance entry ", $ent->getDN(), "\n");
- my $dir = $ent->getValues('nsslapd-directory');
- # the default db instance directory is
- # $oldroot/$inst/$cn
- debug(1, "old instance $cn dbdir $dir\n");
- my $srcdir = $dir || "$oldroot/$inst/db/$cn";
- copyDatabaseDirs($srcdir, "$newdbdir/$cn");
- } # else just ignore for now
- }
- }
- close DSELDIF;
-
- # server automagically upgrades database if needed
-# upgradeDatabase($newdbdir);
- # fix the DBVERSION files
-# updateDBVERSION($newdbdir);
- # fix guardian files
-# updateDBguardian($newdbdir);
-}
-
-sub copyChangelogDB {
- my $oldroot = shift;
- my $inst = shift;
- my $newdbdir = shift;
- # changelog config entry
- my $cldn = normalizeDN("cn=changelog5, cn=config");
- my $fname = "$oldroot/$inst/config/dse.ldif";
- open( DSELDIF, "$fname" ) || die "Can't open $fname: $!";
- my $in = new Mozilla::LDAP::LDIF(*DSELDIF);
- while ($ent = readOneEntry $in) {
- my $targetdn = normalizeDN($ent->getDN());
- if ($targetdn eq $cldn) {
- my $oldcldir = $ent->getValues('nsslapd-changelogdir');
- debug(1, "old cldb dir = $oldcldir\n");
- my $srcdir = $oldcldir || "$oldroot/$inst/cldb";
- copyDatabaseDirs($srcdir, $newdbdir);
-
- # server automagically upgrades database if needed
-# upgradeDatabase($newdbdir);
-
- last;
- }
- }
- close DSELDIF;
-}
-
-sub fixAttrsInEntry {
- my ($ent, $inst) = @_;
- for my $attr (keys %{$ent}) {
- my $lcattr = lc $attr;
- if ($transformAttr{$lcattr}) {
- $ent->setValues($attr, &{$transformAttr{$lcattr}}($ent, $attr, $inst));
- }
- }
-}
-
-sub mergeEntries {
- my ($old, $new, $inst) = @_;
- my %inoldonly; # attrs in old entry but not new one
- my %innewonly; # attrs in new entry but not old one
- my @attrs; # attrs common to old and new
- # if the attribute exists in the old entry but not the new one
- # we should probably add it (checking for special cases first)
- # if the attribute exists in the new entry but not the old one
- # we might have to delete it from the new entry
- # first, get a list of all attributes
- foreach my $attr (keys %{$old}) {
- if (! $new->exists($attr)) {
- $inoldonly{$attr} = $attr;
- } else {
- push @attrs, $attr;
- }
- }
- foreach my $attr (keys %{$new}) {
- if (! $old->exists($attr)) {
- $innewonly{$attr} = $attr;
- }
- }
-
- # iterate through the attr lists
- my $cn = lc $new->getValues("cn");
- foreach my $attr (keys %inoldonly, keys %innewonly, @attrs) {
- my $lcattr = lc $attr;
- if ($ignoreOld{$lcattr}) {
- next; # use new value or just omit if attr is obsolete
- } elsif ($transformAttr{$lcattr}) {
- # only transform if the value is in the old entry
- if (!$innewonly{$attr}) {
- $new->setValues($attr, &{$transformAttr{$lcattr}}($old, $attr, $inst));
- }
- } elsif ($cn eq "internationalization plugin" and $lcattr eq "nsslapd-pluginarg0") {
- next; # use the new value of this path name
- } elsif ($cn eq "referential integrity postoperation" and $lcattr eq "nsslapd-pluginarg1") {
- next; # use the new value of this path name
- } elsif ($innewonly{$attr}) {
- $new->remove($attr); # in new but not old - just remove it
- } else {
- $new->setValues($attr, $old->getValues($attr)); # use old value
- }
- }
-}
-
-sub mergeDseLdif {
- my $oldroot = shift;
- my $inst = shift;
- my $ent;
-
- # first, read in old file
- my %olddse; # map of normalized DN to Entry
- my @olddns; # the DNs in their original order
- my $fname = "$oldroot/$inst/config/dse.ldif";
- open( OLDDSELDIF, $fname ) || die "Can't open $fname: $!";
- my $in = new Mozilla::LDAP::LDIF(*OLDDSELDIF);
- while ($ent = readOneEntry $in) {
- my $dn = normalizeDN($ent->getDN());
- push @olddns, $dn;
- $olddse{$dn} = $ent;
- }
- close OLDDSELDIF;
-
- # next, read in new file
- my %newdse; # map of normalized DN to Entry
- my @newdns; # the DNs in their original order that are not in olddns
- $fname = "@instconfigdir@/$inst/dse.ldif";
- open( NEWDSELDIF, $fname ) || die "Can't open $fname: $!";
- $in = new Mozilla::LDAP::LDIF(*NEWDSELDIF);
- while ($ent = readOneEntry $in) {
- my $dn = normalizeDN($ent->getDN());
- $newdse{$dn} = $ent;
- if (! exists $olddse{$dn}) {
- push @newdns, $dn;
- }
- }
- close NEWDSELDIF;
-
- # temp file for new, merged dse.ldif
- my ($dsefh, $tmpdse) = tempfile(SUFFIX => '.ldif');
- # now, compare entries
- # if the entry exists in the old tree but not the new, add it
- # if the entry exists in the new tree but not the old, delete it
- # otherwise, merge the entries
- # @olddns contains the dns in the old dse.ldif, including ones that
- # may also be in the new dse.ldif
- # @newdns contains dns that are only in the new dse.ldif
- for my $dn (@olddns, @newdns) {
- my $oldent = $olddse{$dn};
- my $newent = $newdse{$dn};
- my $outputent;
- if ($oldent && !$newent) {
- # may have to fix up some values in the old entry
- fixAttrsInEntry($oldent, $inst);
- # output $oldent
- $outputent = $oldent;
- } elsif (!$oldent && $newent) {
- next if ($dn =~ /o=deleteAfterMigration/i);
- # output $newent
- $outputent = $newent;
- } else { #merge
- # $newent will contain the merged entry
- mergeEntries($oldent, $newent, $inst);
- $outputent = $newent;
- }
- # special fix for rootDSE - perldap doesn't like "" for a dn
- if (! $outputent->getDN()) {
- my $ary = $outputent->getLDIFrecords();
- shift @$ary; # remove "dn"
- shift @$ary; # remove the empty dn value
- print $dsefh "dn:\n";
- print $dsefh (Mozilla::LDAP::LDIF::pack_LDIF (78, $ary), "\n");
- } else {
- Mozilla::LDAP::LDIF::put_LDIF($dsefh, 78, $outputent);
- }
- }
- close $dsefh;
-
- return $tmpdse;
-}
-
-sub usage {
- print STDERR <<EOF;
-Usage: $0 [-h] [-v....v] [-o /path/to/oldserverroot] [-i slapd-instance ... -i slapd-instanceN]
-
-INTRODUCTION
-
-This script will copy instances (data and configuration) from the old
-server root directory to their new FHS locations. This script does a
-copy only - the data in the old instances will be left untouched. The
-old instances must be shutdown first to ensure that the databases are
-copied safely. The new instances will not be started by migration,
-but can be started after running migration by doing
-
- service $pkgname start
-
-WARNINGS
-
-You will not be able to use the console or Admin Express to manage
-instances that have been migrated. You will be able to use the web
-applications such as the Directory Server Gateway, Directory Express,
-and Org Chart.
-
-If you have configured your main database or replication changelog
-database to use separate partitions for log files and index files,
-this configuration will not be migrated. All of your data
-will be copied to the standard FHS location
-@localstatedir@/lib/$pkgname/slapd-INSTANCE/db (or cldb).
-
-OPTIONS
-
--v Increase the verbosity - you can specify this more than once
- (e.g. -vvvv) for more output
--o The old server root directory (default $oldsroot)
--i Instance to migrate - by default, all instances in $oldsroot
- will be migrated, but you can specify one or more if you do
- not want all of them (e.g. -i slapd-inst1 -i slapd-inst2)
--h This message
-
-EOF
-
- exit 1;
-}
-
-#################################################################
-# Main script begins here
-#################################################################
-
-my @instances; # the instances to migrate
-
-# process command line options
-Getopt::Long::Configure(qw(bundling)); # bundling allows -vvvvvv
-GetOptions('verbose|v+' => \$debuglevel,
- 'instance|i=s' => \@instances,
- 'oldsroot|o=s' => \$oldsroot,
- 'help|h' => sub { &usage });
-
-
-# get list of instances to migrate
-if (! @instances) {
- # an instance must be a directory called $oldsroot/slapd-something and the file
- # $oldsroot/slapd-something/config/dse.ldif must exist
- @instances = grep { -d && -f "$_/config/dse.ldif" && ($_ =~ s,$oldsroot/,,) } glob("$oldsroot/slapd-*");
-}
-
-die "No instances found to migrate" unless (@instances);
-
-# find ds_newinst.pl - in same directory as this script or in PATH
-my $ds_newinst;
-($ds_newinst = $0) =~ s|/[^/]+$|/ds_newinst.pl|;
-if (! -x $ds_newinst) {
- $ds_newinst = "ds_newinst.pl"; # just get from path
-}
-
-# for each instance
-foreach my $inst (@instances) {
-# set instance specific defaults
- my $newdbdir = "@localstatedir@/lib/$pkgname/$inst/db";
- my $newcertdir = "@instconfigdir@/$inst";
- my $newcldbdir = "@localstatedir@/lib/$pkgname/$inst/cldb";
-
-# extract the information needed for ds_newinst.pl
- my $inffile = createInfFileFromDseLdif($oldsroot, $inst);
- debug(2, "Using inffile $inffile created from $oldsroot/$inst\n");
-
-# create the new instance
- makeNewInst($ds_newinst, $inffile);
- unlink($inffile);
-
-# copy over the files/directories
-# copy the databases
- copyDatabases($oldsroot, $inst, $newdbdir);
-
-# copy the security related files
- copySecurityFiles($oldsroot, $inst, $newcertdir);
-
-# copy the repl changelog database
- copyChangelogDB($oldsroot, $inst, $newcldbdir);
-
-# merge the old info into the new dse.ldif
- my $tmpdse = mergeDseLdif($oldsroot, $inst);
-
-# get user/group of new dse
- my ($dev, $ino, $mode, $uid, $gid, @rest) = stat "@instconfigdir@/$inst/dse.ldif";
-# save the original new dse.ldif
- system("cp -p @instconfigdir@/$inst/dse.ldif @instconfigdir@/$inst/dse.ldif.premigrate");
-# copy the new one
- system("cp $tmpdse @instconfigdir@/$inst/dse.ldif");
-# change owner/group
- chmod $mode, "@instconfigdir@/$inst/dse.ldif";
- chown $uid, $gid, "@instconfigdir@/$inst/dse.ldif";
-
-# remove the temp one
- unlink($tmpdse);
-}
-
-debug(0, "\n\nDone! Migration is complete.\n");
-debug(0, "You can start your new servers with: service fedora-ds start\n");
-
-# the server automagically upgrades the databases, so these are not needed for now
-# sub upgradeDatabase {
-# my $newdbdir = shift;
-# # now, recover the database to flush the data from the log file(s)
-# # into the .db4 (index) files
-# debug(0, "Recovering and flushing log files in $newdbdir . . .\n");
-# my $vflag = "";
-# if ($debuglevel > 2) {
-# $vflag = "-v";
-# }
-# system("db42_recover $vflag -h $newdbdir") == 0 or
-# die "Error: could not recover the db files in $newdbdir: $!";
-# # then, remove the log file(s) (log.xxxxx) and the old memory region files (__db.XXX files)
-# debug(0, "Removing old log and memory region files in $newdbdir . . .\n");
-# system("rm -f $newdbdir/log.* $newdbdir/__db.*") == 0 or
-# die "Error: could not remove log and mem region files in $newdbdir: $!";
-# # finally, upgrade the index files
-# debug(0, "Upgrading all database files in $newdbdir . . .\n");
-# for my $dbfile (<$newdbdir/*/*.db4>) {
-# debug(2, "Upgrading database file $dbfile . . .\n");
-# system("db_upgrade -h $newdbdir $dbfile") == 0 or
-# die "Error: could not upgrade database file $dbfile: $!";
-# }
-# for my $dbfile (<$newdbdir/*.db4>) {
-# debug(2, "Upgrading database file $dbfile . . .\n");
-# system("db_upgrade -h $newdbdir $dbfile") == 0 or
-# die "Error: could not upgrade database file $dbfile: $!";
-# }
-# }
-
-# sub updateDBVERSION {
-# my $newdbdir = shift;
-# my $fname = "$newdbdir/DBVERSION";
-# my @flist = ($fname);
-# push @flist, glob("$newdbdir/*/DBVERSION");
-# for $fname (@flist) {
-# if (-f $fname) {
-# debug(2, "Updating $fname to $db_verstr\n");
-# open(FNAME, ">$fname") or die "Can't write $fname: $!";
-# print FNAME $db_verstr, "\n";
-# close FNAME;
-# } else {
-# debug(0, "No $fname - skipping\n");
-# }
-# }
-# }
-
-# sub updateDBguardian {
-# my $newdbdir = shift;
-# my $fname = "$newdbdir/guardian";
-# my @flist = ($fname);
-# push @flist, glob("$newdbdir/*/guardian");
-# for $fname (@flist) {
-# if (-f $fname) {
-# debug(2, "Updating $fname to $db_verstr\n");
-# open(FNAME, "$fname") or die "Can't read $fname: $!";
-# my @lines = <FNAME>;
-# close FNAME;
-# open(FNAME, ">$fname") or die "Can't write $fname: $!";
-# for (@lines) {
-# if (/^version:/) {
-# print FNAME "version:$db_verstr\n";
-# } else {
-# print FNAME;
-# }
-# }
-# close FNAME;
-# } else {
-# debug(0, "No $fname - skipping\n");
-# }
-# }
-# }
diff --git a/ldap/admin/src/migrateTo4 b/ldap/admin/src/migrateTo4
deleted file mode 100644
index ca8e3d14..00000000
--- a/ldap/admin/src/migrateTo4
+++ /dev/null
@@ -1,1618 +0,0 @@
-#!/usr/bin/env perl
-#
-# BEGIN COPYRIGHT BLOCK
-# This Program is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; version 2 of the License.
-#
-# This Program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place, Suite 330, Boston, MA 02111-1307 USA.
-#
-# In addition, as a special exception, Red Hat, Inc. gives You the additional
-# right to link the code of this Program with code not covered under the GNU
-# General Public License ("Non-GPL Code") and to distribute linked combinations
-# including the two, subject to the limitations in this paragraph. Non-GPL Code
-# permitted under this exception must only link to the code of this Program
-# through those well defined interfaces identified in the file named EXCEPTION
-# found in the source code files (the "Approved Interfaces"). The files of
-# Non-GPL Code may instantiate templates or use macros or inline functions from
-# the Approved Interfaces without causing the resulting work to be covered by
-# the GNU General Public License. Only Red Hat, Inc. may make changes or
-# additions to the list of Approved Interfaces. You must obey the GNU General
-# Public License in all respects for all of the Program code and other code used
-# in conjunction with the Program except the Non-GPL Code covered by this
-# exception. If you modify this file, you may extend this exception to your
-# version of the file, but you are not obligated to do so. If you do not wish to
-# provide this exception without modification, you must delete this exception
-# statement from your version and license this file solely under the GPL without
-# exception.
-#
-#
-# Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
-# Copyright (C) 2005 Red Hat, Inc.
-# All rights reserved.
-# END COPYRIGHT BLOCK
-#
-
-BEGIN {
- require 'uname.lib';
- $isNT = -d '\\';
- @INC = ( '.', '../../../admin/admin/bin' );
- grep { s@/@\\@g } @INC if $isNT;
- $PATHSEP = $isNT ? '\\' : '/';
- # NT needs quotes around some things unix doesn't
- $quote = $isNT ? "\"" : "";
-
- # If this variable is set, all file/directory creation will make sure the mode
- # and ownership of the destination is the same as the source
- $PRESERVE = 1 if (!$isNT);
- $script_suffix = $isNT ? ".bat" : "";
- $exe_suffix = $isNT ? ".exe" : "";
- if ($isNT) {
- $os = "WINNT";
- } else {
- $os = &uname("-s");
- }
-
- if ($isNT) {
- # we have to pass batch files directly to the NT command interpreter
- $com_spec = $ENV{ComSpec};
- if (!$com_spec) {
- $com_spec = $ENV{COMSPEC};
- }
- if (!$com_spec || ! -f $com_spec) {
- # find the first available command interpreter
- foreach $drive (c..z) {
- $com_spec = "$drive:\\winnt\\system32\\cmd.exe";
- last if (-f $com_spec);
- $com_spec = undef;
- }
- if (! $com_spec) {
- # punt and pray
- $com_spec = 'c:\winnt\system32\cmd.exe';
- }
- }
- }
-
- # dll suffix for shared libraries in old instance; note that the dll suffix
- # may have changed for the new instance e.g. AIX now uses .so
- if ( $os eq "AIX" ) {
- $dll_suffix = "_shr.a";
- }
- elsif ( $os eq "HP-UX" ) {
- $arch = &uname("-p");
- if ( $arch eq "ia64" ) {
- $dll_suffix = ".so";
- } else {
- $dll_suffix = ".sl";
- }
- }
- elsif ( $os eq "WINNT" ) {
- $dll_suffix = ".dll";
- }
- else {
- $dll_suffix = ".so";
- }
- $slapdExecName = $isNT ? 'slapd.exe' : 'ns-slapd';
- # if this flag is set, we will migrate the 3.0 and 3.1 databases
- # by doing a db2ldif -> ldif2db; if this is not set, we will just
- # copy the directories; right now, we cannot copy the directories,
- # because the database format has changed for 4.0, and the new
- # code does not recognize the old db format. It is hoped that it
- # will by RTM . . .
- $convertToLDIF = 1;
- select STDERR;
- $| = 1;
- select STDOUT;
- $| = 1;
-
- # if the old value for dbcachesize is less than this, make it this
- $MIN_DBCACHESIZE = '500000';
-}
-
-sub getCwd {
- my $command = $isNT ? "cd" : "/bin/pwd";
- open(PWDCMD, "$command 2>&1 |") or
- die "Error: could not execute $command: $!";
- # without the following sleep, reading from the pipe will
- # return nothing; I guess it gives the pwd command time
- # to get some data to read . . .
- sleep(1);
- my $curdir;
- while (<PWDCMD>) {
- if (!$curdir) {
- chomp($curdir = $_);
- }
- }
- my $code = close(PWDCMD);
-# if ($code || $?) {
-# print "$command returned code=$code status=$? dir=$curdir\n";
-# }
-# print "getCwd curdir=\[$curdir\]\n";
- return $curdir;
-}
-
-sub fixBinaryAttr {
- my $foo = shift;
- $foo =~ s/;binary//ig;
- return $foo;
-}
-
-$type = "slapd";
-$root = $ARGV[0];
-$oldDir = $ARGV[1];
-$newname = $ARGV[2];
-$oldname = $ARGV[3];
-$savedMDLdif = $ARGV[4];
-$savedLdif = $ARGV[5];
-$sieName = $ARGV[6];
-$secPwd = $ARGV[7];
-
-if (($root =~ m#/$#) || ($root =~ m#\\$#)) {
- chop $root;
-}
-
-if (($oldDir =~ m#/$#) || ($oldDir =~ m#\\$#)) {
- chop $oldDir;
-}
-
-sub basename {
- my @list = split(/[\\\/]/, $_[0]);
- return $list[@list - 1];
-}
-
-# this is used to strip html formatting from output to user
-sub localprint {
- # arg 1 is string to print
- # arg 2 is beginning html directive
- # arg 3 is closing html directive
- my ($str, $begin, $end) = @_;
- print $str;
-}
-
-# this is used to run the system() call, capture exit and signal codes,
-# and die() upon badness; the first argument is a directory to change
-# dir to, if any, and the rest are passed to system()
-sub mySystem {
- my $rc = &mySystemNoDie(@_);
- my ($dir, @args) = @_;
- if ($rc == 0) {
-# success
- } elsif ($rc == 0xff00) {
- die "Error executing @args: error code $rc: $!";
- } elsif ($rc > 0x80) {
- $rc >>= 8;
- die "Error executing @args: error code $rc: $!";
- } else {
- if ($rc & 0x80) {
- $rc &= ~0x80;
- }
- die "Error executing @args: received signal $rc: $!";
- }
-
- # usually won't get return value
- return $rc;
-}
-
-# This version does not die but just returns the error code
-sub mySystemNoDie {
- my ($dir, @args) = @_;
- if ($dir && ($dir ne "")) {
- chdir($dir) or die "Could not change directory to $dir: $!";
- }
- my $cmd = $args[0];
- # the system {$cmd} avoids some NT shell quoting problems if the $cmd
- # needs to be quoted e.g. contains spaces; the map puts double quotes
- # around the arguments on NT which are stripped by the command
- # interpreter cmd.exe; but don't quote things which are already quoted
- my @fixargs = map { /^[\"].*[\"]$/ ? $_ : $quote . $_ . $quote } @args;
- my $rc = 0;
- if ($cmd =~ /[.](bat|cmd)$/) {
- # we have to pass batch files directly to the NT command interpreter
- $cmd = $com_spec;
-# print "system $cmd /c \"@fixargs\"\n";
- $rc = 0xffff & system {$cmd} '/c', "\"@fixargs\"";
- } else {
-# print "system $cmd @fixargs\n";
- $rc = 0xffff & system {$cmd} @fixargs;
- }
- return $rc;
-}
-
-$serverHome = "$root${PATHSEP}$type-$newname";
-
-$oldHome = "$oldDir${PATHSEP}slapd-$oldname";
-
-# these are the default values used by the 4.0 installer
-$DEFAULT_CHANGELOG_DIR = $serverHome . $PATHSEP . 'logs' . $PATHSEP . 'changelogdb';
-$DEFAULT_CHANGELOG_SUFFIX = "cn=changelog";
-
-# get some information from the new slapd.conf file
-open(INPUT, "$serverHome${PATHSEP}config${PATHSEP}slapd.conf") or
- die "Could not open file $serverHome${PATHSEP}config${PATHSEP}slapd.conf";
-while (<INPUT>) {
- if (/^port\s+/i) { chomp($newport = $'); }
- elsif (/^localhost\s+/i) { chomp($newlocalhost = $'); }
- elsif (/^localuser\s+/i) { chomp($newuser = $'); }
-}
-close INPUT;
-
-# get some information from the new slapd.ldbm.conf file
-open(INPUT, "$serverHome${PATHSEP}config${PATHSEP}slapd.ldbm.conf") or
- die "Could not open file $serverHome${PATHSEP}config${PATHSEP}slapd.ldbm.conf";
-while (<INPUT>) {
- if (/^directory\s+[\"]?(.*?)[\"]?\s*$/i) {
- # "
- $newDbDir = $1;
- # paths are stored in unix format in the config files . . .
- $newDbDir =~ s#/#\\#g if ($isNT);
- }
-}
-close INPUT;
-
-# get some information from the old slapd.conf file
-open(INPUT, "$oldHome${PATHSEP}config${PATHSEP}slapd.conf") or
- die "Could not open file $oldHome${PATHSEP}config${PATHSEP}slapd.conf";
-while (<INPUT>) {
- if (/^changelogdir\s+[\"]?(.*?)[\"]?\s*$/i) {
- # "
- $oldChangeLogDir = $1;
- # paths are stored in unix format in the config files . . .
- $oldChangeLogDir =~ s#/#\\#g if ($isNT);
- }
- elsif (/^changelogsuffix\s+[\"]?(.*?)[\"]?\s*$/i) {
- # "
- $oldChangeLogSuffix = $1;
- }
- elsif (/^directory\s+[\"]?(.*?)[\"]?\s*$/i) {
- # "
- $oldDbDir = $1;
- # paths are stored in unix format in the config files . . .
- $oldDbDir =~ s#/#\\#g if ($isNT);
- }
- elsif (/^localuser\s+/i) { chomp($olduser = $'); }
- elsif (/^encryption-alias\s+/i) { chomp($encryption_alias = $'); }
- # the user may have given us a network mounted old home directory, but in the
- # old instance's config files, the root directory referred to is usually
- # a local directory. For example, suppose there is an automounter map for
- # hosts which maps onto /h e.g. /h/oldhost would contain all directories
- # exported via NFS. Similarly, for NT, you could do \\oldhost\c to look
- # at the C: drive on the old host. Or the user may have network mounted
- # the old server root some other way. Anyway, we need to determine what
- # the old server root was local to the original host because that is what
- # will be referred to it the old config files. So, we look at the errorlog
- # directive in slapd.conf and use whatever comes before the slapd-oldname
- elsif (/^errorlog\s+[\"]?(.*)$type-$oldname/i) {
- # there may be leading "
- chop($realOldDir = $1);
- }
-}
-close INPUT;
-
-if (! $realOldDir) {
- $realOldDir = $oldDir;
-}
-
-$realOldHome = $realOldDir . $PATHSEP . $type . '-' . $oldname;
-
-# the oldDbDir is stored as a local dir, but we may need a network dir
-($networkDbDir = $oldDbDir) =~ s/^$realOldDir/$oldDir/ig;
-
-# list of standard plugins configured out of the box in version 3
-# all of these paths are in unix format . . .
-$oldLibDir = lc("$realOldDir/lib/");
-$oldConfDir = lc("$realOldHome/config/");
-$oldLogsDir = lc("$realOldHome/logs/");
-$oldLibDir =~ s#\\#/#g if ($isNT);
-$oldConfDir =~ s#\\#/#g if ($isNT);
-$oldLogsDir =~ s#\\#/#g if ($isNT);
-
-# note that all of these should be lower case, since NT does not distinguish case
-# and we don't really care about case for plugin directives anyway . . .
-%stdPlugins = (
- "plugin syntax \"${oldLibDir}syntax-plugin${dll_suffix}\" cis_init", "\n",
- "plugin syntax \"${oldLibDir}syntax-plugin${dll_suffix}\" ces_init", "\n",
- "plugin syntax \"${oldLibDir}syntax-plugin${dll_suffix}\" bin_init", "\n",
- "plugin syntax \"${oldLibDir}syntax-plugin${dll_suffix}\" tel_init", "\n",
- "plugin syntax \"${oldLibDir}syntax-plugin${dll_suffix}\" int_init", "\n",
- "plugin syntax \"${oldLibDir}syntax-plugin${dll_suffix}\" dn_init", "\n",
- "plugin matchingrule \"${oldLibDir}liblcoll${dll_suffix}\" orderingrule_init ${quote}${oldConfDir}slapd-collations.conf$quote", "\n",
- "plugin database \"${oldLibDir}libback-ldbm${dll_suffix}\" ldbm_back_init", "\n",
- "plugin postoperation ${quote}${oldLibDir}referint-plugin${dll_suffix}${quote} referint_postop_init 0 ${quote}${oldLogsDir}referint${quote} member uniquemember owner seealso", "\n",
- "plugin postoperation ${quote}${oldLibDir}referint-plugin${dll_suffix}${quote} referint_postop_init 0 ${quote}${oldLogsDir}referint${quote} 0 member uniquemember owner seealso", "\n",
- "plugin preoperation ${quote}${oldLibDir}libntsynch${dll_suffix}${quote} libntsynch_plugin_preop_init", "\n",
- "plugin postoperation ${quote}${oldLibDir}libntsynch${dll_suffix}${quote} libntsynch_plugin_postop_init", "\n"
-);
-
-# list of standard indexes configured out of the box in version 3
-%stdIndex = (
- 'index aci pres', "\n",
- 'index cn pres,eq,sub', "\n",
- 'index sn pres,eq,sub', "\n",
- 'index givenName pres,eq,sub', "\n",
- 'index mail pres,eq,sub', "\n",
- 'index telephoneNumber pres,eq,sub', "\n",
- 'index ntUserDomainId pres,eq,sub', "\n",
- 'index uid eq', "\n",
- 'index changenumber eq', "\n",
- 'index uniquemember eq', "\n",
- 'index member eq', "\n",
- 'index owner eq', "\n",
- 'index seeAlso eq', "\n"
-);
-
-# These are files included into slapd.conf, slapd.dynamic-ldbm.conf and
-# slapd.ldbm.conf by default in earlier releases. We use this hash to
-# determine if there are user defined files which have been included
-# into the slapd.conf e.g. for user defined attributes, object classes,
-# indexes, etc.
-%stdIncludes = (
- "${oldConfDir}slapd.at.conf", "\n",
- "${oldConfDir}slapd.oc.conf", "\n",
- "${oldConfDir}ns-schema.conf", "\n",
- "${oldConfDir}ns-globopt.conf", "\n",
-);
-
-
-# list of parameters that we don't care about; these are usually just parameters
-# which hold paths relative to this instance and server root, which change anyway
-%oldParametersToSkip = (
- 'userat', "\n", # use the new one
- 'useroc', "\n", # use the new one
- 'instancedir', "\n", # must be the new one
- 'dynamicconf', "\n", # use the new one
- 'directory', "\n", # use the new one
- 'access', "\n", # obsolete
- 'defaultaccess', "\n", # obsolete
- 'security-path', "\n", # obsolete
- 'localuser', "\n", # use the newly configured suitespot user
- 'port', "\n", # the new port must already be set either as determined from
- # the old config or because we are migrating into the MC
- # instance and cannot change the port number
- 'rootdn', "\n", # the new rootdn must already be set either as determined from
- # the old config or because we are migrating into the MC
- # instance and cannot change it
- 'rootpw', "\n", # the new rootpw must already be set either as determined from
- # the old config or because we are migrating into the MC
- # instance and cannot change it
-);
-
-# list of old ldbm specific parameters. These parameters may be present in the
-# old slapd.conf, but have been moved to the new slapd.ldbm.conf
-%oldLdbmParameters = (
- 'database', "\n",
- 'lookthroughlimit', "\n",
- 'mode', "\n",
- 'cachesize', "\n",
- 'dbcachesize', "\n",
- 'allidsthreshold', "\n",
- 'parentcheck', "\n",
-);
-
-# list of old slapd.conf parameters which have been moved to the new dse.ldif
-%oldDSEParameters = (
- 'encryption-alias', "\n",
- 'sslclientauth', "\n"
-);
-
-($oldversion,$oldminor) = &getVersion($oldDir);
-($newversion,$newminor) = &getVersion($root);
-
-# if there was no old user specified
-if (! $isNT && ! $olduser) {
- # get the olduid and oldgid from doing a stat of the db directory
- ($olduid, $oldgid) = (stat($networkDbDir))[4..5];
-}
-# convert the user names to numeric uids
-if ($PRESERVE) {
- if (! $olduid && $olduser) {
- ($login,$pass,$olduid,$oldgid) = getpwnam($olduser);
- }
- ($login,$pass,$newuid,$newgid) = getpwnam($newuser);
-}
-
-# copy the old config files
-&copyDir("$oldHome${PATHSEP}config", "$serverHome${PATHSEP}migrate_config");
-
-print "Migrating log files . . .\n";
-# copy the log files
-$srcdir = "$oldHome${PATHSEP}logs";
-opendir(LOGDIR, $srcdir) or
- die "Error: could not open log file dir $srcdir : $!";
-foreach (readdir(LOGDIR)) {
- if (! /[.][.]?/ && -f "$srcdir${PATHSEP}$_") {
- &copyBinFile("$srcdir${PATHSEP}$_",
- "$serverHome${PATHSEP}logs${PATHSEP}${_}.migrate");
- }
-}
-closedir(LOGDIR);
-
-# copy the ssl directory
-&copyDir("$oldHome${PATHSEP}ssl", "$serverHome${PATHSEP}ssl");
-
-# copy the cert db and key files
-if ( -d "$oldDir${PATHSEP}alias" && $encryption_alias ) {
- $aliasDir = "$root${PATHSEP}alias";
- if (! -d $aliasDir) {
- mkdir($aliasDir, 0750);
- }
- $adminDir = $root . $PATHSEP . 'bin' . $PATHSEP . 'admin' . $PATHSEP .
- 'admin' . $PATHSEP . 'bin';
- print "Migrating the key and certificate databases . . .\n";
- mySystem($adminDir, $adminDir . $PATHSEP . 'sec-migrate',
- $oldDir, $encryption_alias, $root, $sieName, $secPwd);
- # copy the old password file
- if (-f "$oldDir${PATHSEP}alias${PATHSEP}$encryption_alias-password.txt") {
- &copyBinFile(
- "$oldDir${PATHSEP}alias${PATHSEP}$encryption_alias-password.txt",
- "$aliasDir${PATHSEP}$type-$newname-password.txt"
- );
- if ($newversion >= 4 && $newminor >= 1) {
- # need to convert the old format to new pin format
- print "Converting password file to new pin format . . .\n";
- $script = "$root${PATHSEP}bin${PATHSEP}slapd${PATHSEP}admin${PATHSEP}bin${PATHSEP}migratePwdFile";
- mySystem($aliasDir, $, $script, $root, "$type-$newname");
- }
- }
-
- # get the new key/cert db filenames
- opendir(CERTDIR, $aliasDir) or
- die "Error: could not open cert dir $aliasDir: $!";
- foreach (readdir(CERTDIR)) {
- if (/^$sieName/i) {
- if (/[-]cert/) {
- $newcertdb = $_;
- } elsif (/[-]key/) {
- $newkeydb = $_;
- }
- }
- }
- closedir(CERTDIR);
-}
-
-$needAclUpg = 0;
-if ($oldversion == 1) {
- $needAclUpg = 1;
- $convertToLDIF = 1; # always need this for conversion from 1.X db
-}
-
-# Copy/Convert ldif files in ldif/
-print "Migrating old LDIF files . . .\n";
-&copyLdif;
-
-if ($convertToLDIF) {
- # Converting database
- print "Migrating database to LDIF . . .\n";
- $oldLdif = "$oldHome${PATHSEP}ldif${PATHSEP}old.ldif";
- &db2ldif($networkDbDir, $oldLdif);
- if ($needAclUpg) {
- print "Converting ACLs in old data . . .\n";
- &mySystem("$root${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server",
- "$root${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server${PATHSEP}" .
- "aclupg$exe_suffix", '-d', '-i',
- $oldLdif, '-o',
- "$oldHome${PATHSEP}ldif${PATHSEP}aclupg.ldif");
- unlink($oldLdif);
- rename("$oldHome${PATHSEP}ldif${PATHSEP}aclupg.ldif", $oldLdif);
- }
- chown $newuid, $newgid, $oldLdif if (!$isNT);
-# copy the changelogdb directory
-# how to handle a 1.0 change log?
-# &copyDir($changelogdir, "$serverHome${PATHSEP}changelogdb") if ($changelogdir);
-}
-
-# Compare each configuration file against its default version. If it has changed,
-# notify the user that the file has changed and will need to be checked by the
-# user. This should be safe to do because there should be no path information
-# stored in these conf files, which are just schema stuff.
-print "Migrating configuration files . . .\n";
-$origFilePath = "$root${PATHSEP}bin${PATHSEP}slapd${PATHSEP}install${PATHSEP}version${oldversion}";
-$srcdir = "$serverHome${PATHSEP}migrate_config";
-opendir(CONFDIR, $srcdir) or
- die "Error: could not open migrated config dir $srcdir: $!";
-foreach $file (readdir(CONFDIR)) {
- $origFile = $origFilePath . $file;
- if (-f $origFile) {
- $diffs = &diff("$srcdir${PATHSEP}$file", $origFile);
- if ($diffs) {
- print "File $srcdir${PATHSEP}$file could not be migrated\n";
- print "because it is different than\n";
- print "the standard installed version. You will need to check this\n";
- print "file and make sure its changes are compatible with the new\n";
- print "directory server. Here are the differences:\n";
- print $diffs, "\n";
- } else {
-# print "No changes to old config file $srcdir${PATHSEP}$file\n";
- }
- }
-}
-closedir(CONFDIR);
-
-# make a backup of the current user_at and user_oc files, and copy the old ones
-# into the config directory
-
-&copyBinFile("$serverHome${PATHSEP}config${PATHSEP}slapd.user_at.conf",
- "$serverHome${PATHSEP}config${PATHSEP}slapd.user_at.conf.bak");
-&copyBinFile("$serverHome${PATHSEP}config${PATHSEP}slapd.user_oc.conf",
- "$serverHome${PATHSEP}config${PATHSEP}slapd.user_oc.conf.bak");
-
-if (-f "$serverHome${PATHSEP}migrate_config${PATHSEP}slapd.user_at.conf") {
- &copyAndEditTextFile(
- "$serverHome${PATHSEP}migrate_config${PATHSEP}slapd.user_at.conf",
- "$serverHome${PATHSEP}config${PATHSEP}slapd.user_at.conf",
- \&fixBinaryAttr);
-}
-
-if (-f "$serverHome${PATHSEP}migrate_config${PATHSEP}slapd.user_oc.conf") {
- &copyAndEditTextFile(
- "$serverHome${PATHSEP}migrate_config${PATHSEP}slapd.user_oc.conf",
- "$serverHome${PATHSEP}config${PATHSEP}slapd.user_oc.conf",
- \&fixBinaryAttr);
-}
-
-# parse the parameters from the old configuration files and put them into
-# the new configuration files
-&fixConf("$serverHome${PATHSEP}migrate_config${PATHSEP}slapd.conf",
- "$serverHome${PATHSEP}migrate_config${PATHSEP}slapd.dynamic_ldbm.conf",
- "$serverHome${PATHSEP}migrate_config${PATHSEP}dse.ldif",
- "$serverHome${PATHSEP}config${PATHSEP}slapd.conf",
- "$serverHome${PATHSEP}config${PATHSEP}slapd.ldbm.conf",
- "$serverHome${PATHSEP}config${PATHSEP}dse.ldif");
-
-# copy in old data and any data we wanted to save
-if ($convertToLDIF) {
- print "Migrating old database to new database . . .\n";
- &manyLdif2db($savedMDLdif, $oldLdif, $savedLdif);
- unlink $savedMDLdif, $savedLdif;
-}
-
-if ($oldChangeLogDir && -e $oldChangeLogDir) {
- print "Migrating changelog database . . .\n";
- my $realDir = $oldChangeLogDir;
- $realDir =~ s/^$realOldDir/$oldDir/ig;
- if ($convertToLDIF) {
- $srcDir = $realDir;
- $destDir = $DEFAULT_CHANGELOG_DIR;
- $srcLDIF = "$oldHome${PATHSEP}ldif${PATHSEP}changelog.ldif";
- $destLDIF = "$serverHome${PATHSEP}ldif${PATHSEP}changelog.ldif";
- mkdir( $destDir , 0755 ) if !( -e $destDir);
- # Converting database
- if ( !$isNT && $newuser ) {
- chown($newuid, $newgid, $destDir);
- }
- &other_db2ldif($srcDir, $srcLDIF);
- if ($needAclUpg) {
- &mySystem("$root${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server",
- "$root${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server" .
- "${PATHSEP}aclupg$exe_suffix", '-d', '-i',
- $srcLDIF, '-o', $destLDIF);
- } else {
- &copyBinFile($srcLDIF, $destLDIF);
- }
- &other_ldif2db($destLDIF, $destDir, 'slapd.ldbm.conf',
- "suffix \"$oldChangeLogSuffix\"");
- } else {
- # the dir is stored as a local dir, but we may need a network dir here
- &copyDir($realDir, $DEFAULT_CHANGELOG_DIR, '\.share$');
- }
-}
-
-if ($convertToLDIF) {
- # Convert the db backup, bak/
- print "Migrating database backups . . .\n";
- &copyBak;
-} else {
- # just copy the directories over
- &copyDir($networkDbDir, "$serverHome${PATHSEP}db", '\.share$');
- &copyDir("$oldHome${PATHSEP}bak", "$serverHome${PATHSEP}bak", '\.share$');
-}
-
-if (-f $oldLdif) {
- unlink($oldLdif);
-}
-
-exit(0);
-
-############# END OF PROCESSING; SUBROUTINES FOLLOW
-
-# This subroutine merges the old and new source files into the new destination file
-sub fixConf {
- my $oldsrc = shift;
- my $oldldbmsrc = shift;
- my $olddseldif = shift;
- my $newsrc = shift;
- my $newldbmsrc = shift;
- my $newdseldif = shift;
-
- # read the old conf file into a hash table
- open( OLDSRC, $oldsrc ) ||
- die "Can't open $oldsrc: $!: ";
- LINE: while ( <OLDSRC> ) {
- if (/^\s*#/) { # skip comments
- next LINE;
- }
- if (/^\s*$/) { # skip blank lines
- next LINE;
- } elsif (/^plugin/i) {
- chomp($_);
- if (! &isAStandardPlugin($_)) {
- push @badPlugins, $_;
- }
- } elsif (/^index/i) {
- chomp($_);
- if (! &isAStandardIndex($_)) {
- push @newIndex, $_;
- }
- } elsif (/^include\s+[\"]?(.*?)[\"]?\s*$/i) {
- # strip leading and trailing "
- if (! &isAStandardInclude($1)) {
- push @newInclude, $1;
- }
- } elsif (/^dbcachesize\s+[\"]?(.*?)[\"]?\s*$/i) {
- # strip leading and trailing "
- $param = 'dbcachesize';
- $value = $1;
- if ($value < $MIN_DBCACHESIZE) {
- $value = $MIN_DBCACHESIZE;
- }
-
- if ($oldLdbmParameters{lc($param)}) {
- $oldldbmhash{lc($param)} = $value;
- } else {
- $oldhash{lc($param)} = $value;
-
- }
- } elsif (/^errorlog/i) {
- $oldhash{'errorlog-logging-enabled'} = "on";
- } elsif (/^accesslog/i) {
- $oldhash{'accesslog-logging-enabled'} = "on";
- } elsif (/^auditlog/i) {
- $oldhash{'auditlog-logging-enabled'} = "on";
- } elsif (/^replogfile/i) {
- # replogfile was only used in 1.X, and it had no suffix
- $oldhash{'changelogdir'} = $DEFAULT_CHANGELOG_DIR;
- $oldhash{'changelogsuffix'} = $DEFAULT_CHANGELOG_SUFFIX;
- } elsif (/^changelogdir/i) {
- # force use of default
- $oldhash{'changelogdir'} = $DEFAULT_CHANGELOG_DIR;
- } elsif (/^\s*(\S+)\s+[\"]?(.*?)[\"]?\s*$/i) {
- # strip leading and trailing "
- $param = $1;
- $value = $2;
- if ($oldParametersToSkip{lc($param)}) {
- next LINE;
- } elsif (lc($param) eq 'suffix') {
- if (lc($value) cmp 'cn=schema') {
- $oldsuffix{lc($value)} = $value;
- }
- } else {
- if ($oldLdbmParameters{lc($param)}) {
- $oldldbmhash{lc($param)} = $value;
- } elsif ($oldDSEParameters{lc($param)}) {
- if (lc($param) eq 'encryption-alias') {
- if ($newcertdb) {
- $olddsehash{'nscertfile'} = "alias/$newcertdb";
- } else {
- $olddsehash{'nscertfile'} = "alias/$type-$newname-cert.db";
- }
- if ($newkeydb) {
- $olddsehash{'nskeyfile'} = "alias/$newkeydb";
- } else {
- $olddsehash{'nskeyfile'} = "alias/$type-$newname-key.db";
- }
- } elsif (lc($param) eq 'sslclientauth') {
- $olddsehash{'nssslclientauth'} = $value;
- } else {
- $olddsehash{lc($param)} = $value;
- }
- } elsif (($param eq 'passwdhash') &&
- ((! $value) || ($value eq ""))) {
- # 3.X used "" as an alias for "clear"
- $oldhash{lc($param)} = 'clear';
- } else {
- $oldhash{lc($param)} = $value;
- }
- }
- }
- }
- close(OLDSRC);
-
- $oldhash{'errorlog-logging-enabled'} = "off"
- if (! $oldhash{'errorlog-logging-enabled'});
- $oldhash{'accesslog-logging-enabled'} = "off"
- if (! $oldhash{'accesslog-logging-enabled'});
- $oldhash{'auditlog-logging-enabled'} = "off"
- if (! $oldhash{'auditlog-logging-enabled'});
-
- # read the old ldbm conf file into a hash table; note that there may not be
- # one, so don't complain
- open( OLDSRC, $oldldbmsrc );
- LINE2: while ( <OLDSRC> ) {
- if (/^\s*#/) { # skip comments
- next LINE2;
- }
- if (/^\s*$/) { # skip blank lines
- next LINE2;
- }
- if (/^index/i) {
- chomp($_);
- if (! &isAStandardIndex($_)) {
- push @newIndex, $_;
- }
- next LINE2;
- }
- if (/^plugin/i) {
- chomp($_);
- if (! &isAStandardPlugin($_)) {
- push @badLdbmPlugins, $_;
- }
- next LINE2;
- }
- if (/^include\s+/i) {
- chomp($inc = $');
- $inc =~ s/\"//g;
- # strip " characters
- if (! &isAStandardInclude($inc)) {
- push @newLdbmInclude, $inc;
- }
- next LINE2;
- }
- if (/^dbcachesize\s+[\"]?(.*?)[\"]?\s*$/i) {
- # strip leading and trailing "
- $param = 'dbcachesize';
- $value = $1;
- if ($value < $MIN_DBCACHESIZE) {
- $value = $MIN_DBCACHESIZE;
- }
-
- $oldldbmhash{lc($param)} = $value;
- next LINE2;
- }
-
- if (/^\s*(\S+)\s+[\"]?(.*?)[\"]?\s*$/) {
- # strip leading and trailing "
- $param = $1;
- $value = $2;
- if ($oldParametersToSkip{lc($param)}) {
- next LINE2;
- } elsif (lc($param) eq 'suffix') {
- if (lc($value) cmp 'cn=schema') {
- $oldsuffix{lc($value)} = $value;
- }
- } else {
- $oldldbmhash{lc($param)} = $value;
- }
- }
- }
- close(OLDSRC);
-
- # read the old dse.ldif file into a hash table; note that there may not be
- # one, so don't complain
- open(OLDSRC, $olddseldif);
- while ( <OLDSRC> ) {
- chomp($_);
- if ( /^passwordchange:\s*/i ) {
- if ($' eq "must") {
- $oldhash{'pw_change'} = "on";
- $oldhash{'pw_must_change'} = "on";
- } elsif ($' eq "may") {
- $oldhash{'pw_change'} = "on";
- $oldhash{'pw_must_change'} = "off";
- } else {
- $oldhash{'pw_change'} = "off";
- $oldhash{'pw_must_change'} = "off";
- }
- } elsif ( /^passwordchecksyntax:\s*/i ) {
- if ($' > 0) {
- $oldhash{'pw_syntax'} = "on";
- } else {
- $oldhash{'pw_syntax'} = "off";
- }
- } elsif ( /^passwordminlength:\s*/i ) {
- $oldhash{'pw_minlength'} = $';
- } elsif ( /^passwordexp:\s*/i ) {
- if ($' > 0) {
- $oldhash{'pw_exp'} = "on";
- } else {
- $oldhash{'pw_exp'} = "off";
- }
- } elsif ( /^passwordmaxage:\s*/i ) {
- $oldhash{'pw_maxage'} = $';
- } elsif ( /^passwordwarning:\s*/i ) {
- $oldhash{'pw_warning'} = $';
- } elsif ( /^passwordkeephistory:\s*/i ) {
- if ($' > 0) {
- $oldhash{'pw_history'} = "on";
- } else {
- $oldhash{'pw_history'} = "off";
- }
- } elsif ( /^passwordinhistory:\s*/i ) {
- $oldhash{'pw_inhistory'} = $';
- } elsif ( /^passwordlockoutduration:\s*/i ) {
- $oldhash{'pw_lockduration'} = $';
- } elsif ( /^passwordlockout:\s*/i ) {
- if ($' > 0) {
- $oldhash{'pw_lockout'} = "on";
- } else {
- $oldhash{'pw_lockout'} = "off";
- }
- } elsif ( /^passwordmaxfailure:\s*/i ) {
- $oldhash{'pw_maxfailure'} = $';
- } elsif ( /^passwordunlock:\s*/i ) {
- if ($' > 0) {
- $oldhash{'pw_unlock'} = "on";
- } else {
- $oldhash{'pw_unlock'} = "off";
- }
- } elsif ( /^passwordresetduration:\s*/i ) {
- $oldhash{'pw_resetfailurecount'} = $';
- }
- }
- close(OLDSRC);
-
- open(NEWSRC, $newsrc ) || die "Can't open $newsrc: $!: ";
- open(NEWDEST, ">$newsrc.tmp" ) || die "Can't create $newsrc.tmp: $!: ";
- while ( <NEWSRC> ) {
- # make sure the dynamicconf parameter is the last one in the file
- if (/^dynamicconf/i) {
- # print the parameters which exist in the old file but do not
- # exist in the new file; these are the parameters we have not
- # deleted from oldhash
- print NEWDEST "#These additional parameters have been migrated\n";
- foreach $param (sort keys %oldhash) {
- if (lc($param) eq 'passwdhash') {
- $pwhash = $oldhash{lc($param)};
- # if the old value was not set, don't set the new value either
- # just have the server use the default value
- if ($pwhash && $pwhash ne "" && $pwhash ne '""') {
- print NEWDEST 'pw_storagescheme', "\t", $pwhash, "\n";
- }
- } elsif (lc($param) eq 'ntsynchusessl') {
- print NEWDEST 'NTSynchUseSSL', "\t", $oldhash{lc($param)}, "\n";
- } else {
- print NEWDEST $param, "\t", "\"$oldhash{lc($param)}\"",
- "\n";
- }
- }
- print NEWDEST "#End of additional migrated parameters\n\n";
- # use the temp one for now until we have the real one in place, then
- # we will change this back
- print NEWDEST "dynamicconf\t\"$newldbmsrc.tmp\"\n";
- } elsif (/^\s*#/) {
- print NEWDEST $_;
- } elsif (/^include/ && @newInclude) {
- my $newConfDir = $serverHome . '/' . 'config' . '/';
- $newConfDir =~ s#\\#/#g if ($isNT);
- print NEWDEST "# These non standard includes were migrated:\n";
- print "These non standard includes were migrated:\n";
- while (@newInclude) {
- my $oldPath = shift @newInclude;
- # oldPath is a local path; we need a network path here because
- # we will be copying the file
- $oldPath =~ s/^$realOldDir/$oldDir/ig;
- my $base = &basename($oldPath);
- my $newone = $newConfDir . $base;
- # convert to new path
- print NEWDEST "include ", $quote, $newone, $quote, "\n";
- print $newone, "\n";
- # now, change path separators back to the correct ones for
- # the os
- $oldPath =~ s#/#\\#g if ($isNT);
- $newone =~ s#/#\\#g if ($isNT);
- &copyAndEditTextFile($oldPath, $newone, \&fixBinaryAttr);
- }
- print NEWDEST "# end of migrated includes\n";
- print "Be sure to check the new slapd.conf file to make sure the order\n";
- print "is correct and there are no conflicts with new config files,\n";
- print "object classes, attributes, etc.\n";
- print NEWDEST $_;
- } elsif (/^\s*(\S+)\s+[\"]?(.*?)[\"]?\s*$/) {
- $param = $1;
- $value = $2;
- # see if the parameter is set in the old config file
- if ($oldhash{lc($param)}) {
- # only set the parameter if the old value is different than
- # the new value
- if ($value cmp $oldhash{lc($param)}) {
- print NEWDEST "#This parameter was migrated: the original value was $value\n";
- print NEWDEST $param, "\t", "\"$oldhash{lc($param)}\"", "\n";
- } else {
- print NEWDEST $_;
- }
- delete $oldhash{lc($param)};
- } else {
- # just print the parameter
- print NEWDEST $_;
- }
- } else {
- print NEWDEST $_;
- }
- }
- close (NEWSRC);
-
- # print the bad plugins, commented out, at the end of the file
- if (@badPlugins) {
- print NEWDEST "#The following non standard plugins were detected:\n";
- print "The following non standard plugins were detected:\n";
- foreach (@badPlugins) {
- print NEWDEST "#", $_, "\n";
- print $_, "\n";
- }
- print NEWDEST "#These plugins will probably need to be recompiled for this release\n";
- print "These plugins will probably need to be recompiled for this release\n";
- print NEWDEST "#of directory server, or at the very least, reconfigured.\n";
- print "of directory server, or at the very least, reconfigured.\n";
- }
-
- close( NEWDEST );
-
- open(NEWSRC, $newldbmsrc ) || die "Can't open $newldbmsrc: $!: ";
- open(NEWDEST, ">$newldbmsrc.tmp" ) || die "Can't create $newldbmsrc.tmp: $!: ";
- while ( <NEWSRC> ) {
- if (/^\s*#/) {
- print NEWDEST $_;
- } elsif (/^include/ && @newLdbmInclude) {
- my $newConfDir = $serverHome . '/' . 'config' . '/';
- $newConfDir =~ s#\\#/#g if ($isNT);
- print NEWDEST "# These non standard ldbm includes were migrated:\n";
- print "These non standard includes were migrated:\n";
- while (@newLdbmInclude) {
- my $oldPath = shift @newInclude;
- # oldPath is a local path; we need a network path here because
- # we will be copying the file
- $oldPath =~ s/^$realOldDir/$oldDir/ig;
- my $base = &basename($oldPath);
- my $newone = $newConfDir . $base;
- # convert to new path
- print NEWDEST "include ", $quote, $newone, $quote, "\n";
- print $newone, "\n";
- # now, change path separators back to the correct ones for
- # the os
- $oldPath =~ s#/#\\#g if ($isNT);
- $newone =~ s#/#\\#g if ($isNT);
- &copyBinFile($oldPath, $newone);
- }
- print NEWDEST "# end of migrated includes\n";
- print "Be sure to check the new slapd.ldbm.conf file to make sure the order\n";
- print "is correct and there are no conflicts with new config files,\n";
- print "object classes, attributes, etc.\n";
- print NEWDEST $_;
- } elsif (/^\s*(\S+)\s+[\"]?(.*?)[\"]?\s*$/) {
- # strip " characters
- $param = $1;
- $value = $2;
- if (lc($param) eq 'suffix') {
- if ($oldsuffix{lc($value)}) {
- delete $oldsuffix{lc($value)};
- }
- print NEWDEST $_;
- } elsif ($oldhash{lc($param)}) {
- # only set the parameter if the old value is different than
- # the new value
- if ($value cmp $oldhash{lc($param)}) {
- print NEWDEST "#This parameter was migrated: the original value was $value\n";
- print NEWDEST $param, "\t", "\"$oldhash{lc($param)}\"", "\n";
- } else {
- print NEWDEST $_;
- }
- delete $oldhash{lc($param)};
- } elsif ($oldldbmhash{lc($param)}) {
- # only set the parameter if the old value is different than
- # the new value
- if ($value cmp $oldldbmhash{lc($param)}) {
- print NEWDEST "#This parameter was migrated: the original value was $value\n";
- print NEWDEST $param, "\t", "\"$oldldbmhash{lc($param)}\"", "\n";
- } else {
- print NEWDEST $_;
- }
- delete $oldldbmhash{lc($param)};
- } else {
- # just print the parameter
- print NEWDEST $_;
- }
- } else {
- print NEWDEST $_;
- }
- }
- close (NEWSRC);
-
- # add the suffixes we didn't already have
- if (%oldsuffix) {
- print NEWDEST "#These suffixes were migrated\n";
- foreach (values %oldsuffix) {
- print NEWDEST 'suffix', "\t", "\"$_\"", "\n";
- }
- }
-
- # add the user defined indexes
- if (@newIndex) {
- print NEWDEST "#These indexes were migrated\n";
- while (@newIndex) {
- print NEWDEST shift(@newIndex), "\n";
- }
- }
-
- # print the bad plugins, commented out, at the end of the file
- if (@badLdbmPlugins) {
- print NEWDEST "#The following non standard plugins were detected:\n";
- print "The following non standard ldbm plugins were detected:\n";
- foreach (@badLdbmPlugins) {
- print NEWDEST "#", $_, "\n";
- print $_, "\n";
- }
- print NEWDEST "#These plugins will probably need to be recompiled for this release\n";
- print "These plugins will probably need to be recompiled for this release\n";
- print NEWDEST "#of directory server, or at the very least, reconfigured.\n";
- print "of directory server, or at the very least, reconfigured.\n";
- }
-
- close( NEWDEST );
-
- open(NEWSRC, $newdseldif ) || die "Can't open $newdseldif: $!: ";
- open(NEWDEST, ">$newdseldif.tmp" ) || die "Can't create $newdseldif.tmp: $!: ";
- $inEncryptionConfig = 0;
- while ( <NEWSRC> ) {
- if (/^\s*#/) {
- print NEWDEST $_;
- } elsif (/^\s*$/) {
- if ($inEncryptionConfig) { # end of entry
- $inEncryptionConfig = 0;
- # if attributes were present in the old config but not
- # in the new one, add them to the end of the entry
- foreach $key (keys %olddsehash) {
- print NEWDEST $key, ': ', $olddsehash{$key}, "\n";
- }
- }
- print NEWDEST $_;
- } elsif (/cn=encryption\s*,\s*cn=config/) {
- $inEncryptionConfig = 1;
- print NEWDEST $_;
- } elsif (/^\s*(\S+):\s*(.*)$/) {
- $param = $1;
- $value = $2;
- if ($olddsehash{lc($param)}) {
- # only set the parameter if the old value is different than
- # the new value
- if ($value cmp $olddsehash{lc($param)}) {
- print NEWDEST $param, "\t", $olddsehash{lc($param)}, "\n";
- } else {
- print NEWDEST $_;
- }
- delete $olddsehash{lc($param)};
- } else {
- # just print the parameter
- print NEWDEST $_;
- }
- } else {
- print NEWDEST $_;
- }
- }
- close (NEWSRC);
- close( NEWDEST );
-
- # final step: use the slapd_config program to check the new config file
- my $rc = &mySystemNoDie("$root${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server",
- "$root${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server" .
- "${PATHSEP}slapd_config${exe_suffix}",
- '-c', '-f', "$newsrc.tmp");
-
- # if the check failed, run slapd_config again in verbose mode to provide
- # more information to the user; this will die and abort processing
- if ($rc) {
- print "The following problems were found with the new configuration:\n";
- &mySystem("$root${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server",
- "$root${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server" .
- "${PATHSEP}slapd_config${exe_suffix}",
- '-f', "$newsrc.tmp");
- }
-
- # if we got here, the files were good
- # save a copy of the old config files
- &copyBinFile("$newsrc", "$newsrc.save");
- &copyBinFile("$newldbmsrc", "$newldbmsrc.save");
-
- # replace the temporary dynamicconf directive with the real one
- open(NEWSRC, "$newsrc.tmp") or die "Could not open file $newsrc.tmp: $!";
- open(NEWDEST, ">$newsrc") or die "Could not write file $newsrc: $!";
- while(<NEWSRC>) {
- if (/^dynamicconf/i) {
- print NEWDEST "dynamicconf\t\"$newldbmsrc\"\n";
- } else {
- print NEWDEST;
- }
- }
- close NEWSRC;
- close NEWDEST;
-
- &copyBinFile("$newldbmsrc.tmp", "$newldbmsrc");
- &copyBinFile("$newdseldif.tmp", "$newdseldif");
-}
-
-sub copyDir {
- my $src = shift;
- my $dest = shift;
- my $exclude = shift;
-
- opendir( SRC, $src ) or die "Can't open directory $src: $!: ";
- my $mode;
- my $uid;
- my $gid;
- mkdir ( $dest , 0755 ) if !( -e $dest );
- if ($PRESERVE) {
- $mode = (stat($src))[2];
- ($uid, $gid) = (stat(_))[4..5];
- # Make sure files owned by the old user are owned by the
- # new user
- if ($uid == $olduid) {
- $uid = $newuid;
- $gid = $newgid;
- }
- chown $uid, $gid, $dest;
- chmod $mode, $dest;
- }
- local ( @files ) = readdir ( SRC );
- closedir( SRC );
- for ( @files ) {
- if ( $_ eq "." || $_ eq ".." ) {
- next;
- } elsif ( $exclude && /$exclude/ ) {
- next;
- } elsif( -d "$src${PATHSEP}$_") {
- &copyDir ( "$src${PATHSEP}$_", "$dest${PATHSEP}$_" );
- } else {
- &copyBinFile ( "$src${PATHSEP}$_", "$dest${PATHSEP}$_");
- }
- }
-}
-
-sub copyBinFile {
- my $src = shift;
- my $dest = shift;
- my $buf = "";
- my $bufsize = 8192;
-
- open( SRC, $src ) || die "Can't open $src: $!\n";
- # if we are given a directory destination instead of a file, extract the
- # filename portion of the source to use as the destination filename
- if (-d $dest) {
- $dest = $dest . $PATHSEP . &basename($src);
- }
- open( DEST, ">$dest" ) || die "Can't create $dest: $!\n";
- binmode SRC;
- binmode DEST;
- if ($PRESERVE) {
- $mode = (stat($src))[2];
- ($uid, $gid) = (stat(_))[4..5];
- # Make sure files owned by the old user are owned by the
- # new user
- if ($uid == $olduid) {
- $uid = $newuid;
- $gid = $newgid;
- }
- chown $uid, $gid, $dest;
- chmod $mode, $dest;
- }
- while (read(SRC, $buf, $bufsize)) {
- print DEST $buf;
- }
- close( SRC );
- close( DEST );
-}
-
-sub isAStandardPlugin {
- my $line = shift;
-
- chomp($line);
- return $stdPlugins{lc($line)};
-}
-
-sub isAStandardIndex {
- my $line = shift;
-
- chomp($line);
- return $stdIndex{$line};
-}
-
-sub isAStandardInclude {
- my $line = shift;
-
- chomp($line);
- return $stdIncludes{lc($line)};
-}
-
-# Do a file copy, but convert path names as the file gets copied
-# Don't convert paths that don't point anywere, except for log files
-# push non-converted paths to the results list
-# If you are xlating paths that contain one another, the long paths must come
-# first
-sub xlatePath {
- my $src = shift;
- my $dest = shift;
-
- open( SRC, $src ) || die "Can't open $src: $!: ";
- open( DEST, ">$dest" ) || die "Can't create $dest: $!: ";
- if ($PRESERVE) {
- $mode = (stat($src))[2];
- ($uid, $gid) = (stat(_))[4..5];
- # Make sure files owned by the old user are owned by the
- # new user
- if ($uid == $olduid) {
- $uid = $newuid;
- $gid = $newgid;
- }
- chown $uid, $gid, $dest;
- chmod $mode, $dest;
- }
- while ( <SRC> ) {
- print DEST &xlatePaths( $_, @_ );
- }
- close( SRC );
- close( DEST );
-}
-
-# translate paths in the string
-sub xlatePaths {
- my $line = shift;
- my @otherParams = @_;
- my $numXs = shift;
- my @srcPaths = splice( @_, 0, $numXs );
- my @destPaths = splice( @_, 0, $numXs );
- my @allowedEmpty = @_;
- my @pathLengths = map { length( $_ ) } @srcPaths;
- my $i;
- my $pre;
- my $post;
- my $allowed;
- my $path;
- my $destPath;
-
- # replace the src paths with the dest paths
- # NOTE: this algorithm will only work if the longest paths
- # are replaced first e.g. strlen(srcPath[N]) > strlen(srcPath[N+1])
- # and none of the destpaths match any of the srcpaths
- for ( $i = 0 ; $i < $numXs ; ++$i ) {
- if ($srcPaths[$i] ne $destPaths[$i]) {
- $line =~ s/$srcPaths[$i]/$destPaths[$i]/g;
- }
- }
-
- return $line;
-}
-
-sub copyBak {
- opendir( OLDBAK, "$oldHome${PATHSEP}bak" ) ||
- die "Can't open directory $oldHome${PATHSEP}bak: $!: ";
- local ( @dirs ) = readdir( OLDBAK );
- closedir ( OLDBAK );
- for ( @dirs ) {
- if ( $_ eq "." || $_ eq ".." ) {
- next;
- } elsif ( -d "$oldHome${PATHSEP}bak${PATHSEP}$_" ) {
- $srcDir = "$oldHome${PATHSEP}bak${PATHSEP}$_";
- $destDir = "$serverHome${PATHSEP}bak${PATHSEP}$_";
- $srcLDIF = "$oldHome${PATHSEP}ldif${PATHSEP}bak.ldif";
- $destLDIF = "$serverHome${PATHSEP}ldif${PATHSEP}bak.ldif";
- mkdir( $destDir , 0755 ) if !( -e $destDir);
- # Converting database
- if ( !$isNT && $newuser ) {
- chown($newuid, $newgid,
- "$serverHome${PATHSEP}bak", $destDir);
- }
- &other_db2ldif($srcDir, $srcLDIF);
- if ($needAclUpg) {
- &mySystem("$root${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server",
- "$root${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server" .
- "${PATHSEP}aclupg$exe_suffix", '-d', '-i',
- $srcLDIF, '-o', $destLDIF);
- } else {
- &copyBinFile($srcLDIF, $destLDIF);
- }
- &other_ldif2db($destLDIF, $destDir);
- }
- }
-}
-
-sub other_db2ldif {
- my $srcDbDir = shift;
- my $ldif = shift;
-
- if ($oldversion == 1) {
- &db2ldif($srcDbDir, $ldif);
- } else {
- # make a dummy version of the current slapd.conf and tell it that
- # the db directory is really the back up directory so that we can
- # trick ns-slapd db2ldif to do the right thing; Oh how I wish there
- # were a simple ldbmcat utility for 3.X and 4.0 . . .
- &xlatePath("$oldHome${PATHSEP}config${PATHSEP}slapd.conf",
- "$oldHome${PATHSEP}config${PATHSEP}slapd.conf.bak",
- 3,
- "$realOldHome",
- "$oldDbDir",
- "slapd.dynamic_ldbm.conf",
- "$oldHome",
- "$srcDbDir",
- "slapd.dynamic_ldbm.conf.bak",
- '/logs/');
- &xlatePath("$oldHome${PATHSEP}config${PATHSEP}slapd.dynamic_ldbm.conf",
- "$oldHome${PATHSEP}config${PATHSEP}slapd.dynamic_ldbm.conf.bak",
- 2,
- "$realOldHome",
- "$oldDbDir",
- "$oldHome",
- "$srcDbDir",
- '/logs/');
- # now do the ldif2db with our munged conf files . . .
- &db2ldif($srcDbDir, $ldif,
- "$oldHome${PATHSEP}config${PATHSEP}slapd.conf.bak");
- unlink("$oldHome${PATHSEP}config${PATHSEP}slapd.conf.bak");
- unlink("$oldHome${PATHSEP}config${PATHSEP}slapd.dynamic_ldbm.conf.bak");
- }
-}
-
-sub other_ldif2db {
- my $ldif = shift;
- my $destDbDir = shift;
- my $confFile = shift;
- my $directiveToAdd = shift;
-
- # make a dummy version of the current slapd.conf and slapd.ldbm.conf
- # to point to the database directory we want to populate instead of
- # the standard
- &xlatePath("$serverHome${PATHSEP}config${PATHSEP}slapd.conf",
- "$serverHome${PATHSEP}config${PATHSEP}slapd.conf.bak",
- 3,
- "$newDbDir",
- "slapd.ldbm.conf",
- "slapd.dynamic_ldbm.conf",
- "$destDbDir",
- "slapd.ldbm.conf.bak",
- "slapd.ldbm.conf.bak",
- '/logs/');
- &xlatePath("$serverHome${PATHSEP}config${PATHSEP}slapd.ldbm.conf",
- "$serverHome${PATHSEP}config${PATHSEP}slapd.ldbm.conf.bak",
- 1,
- "$newDbDir",
- "$destDbDir",
- '/logs/');
-
- # we may need to add something to a config file e.g. when migrating the change
- # log, we need to add suffix $changeLogSuffix to slapd.ldbm.conf in order to
- # ldif2db it without error
- if ($confFile && $directiveToAdd) {
- open(CONFADD, ">>$serverHome${PATHSEP}config${PATHSEP}${confFile}.bak") or
- die "Could not append to $serverHome${PATHSEP}config${PATHSEP}${confFile}.bak: $!";
- print CONFADD $directiveToAdd, "\n";
- close(CONFADD);
- }
-
- &mySystem("$root${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server",
- "$root${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server" .
- "${PATHSEP}$slapdExecName",
- "ldif2db", '-C', '-f',
- "$serverHome${PATHSEP}config${PATHSEP}slapd.conf.bak", '-i',
- "$ldif");
- unlink("$serverHome${PATHSEP}config${PATHSEP}slapd.conf.bak");
- unlink("$serverHome${PATHSEP}config${PATHSEP}slapd.ldbm.conf.bak");
- unlink($ldif);
-}
-
-sub manyLdif2db {
- my @args = ();
- while (@_) {
- push @args, '-i', shift(@_);
- }
- &mySystem("$root${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server",
- "$root${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server" .
- "${PATHSEP}$slapdExecName", "ldif2db", '-C', '-f',
- "$serverHome${PATHSEP}config${PATHSEP}slapd.conf", @args);
-}
-
-sub copyLdif {
- opendir (LDIFDIR, "$oldHome${PATHSEP}ldif" );
- local ( @files ) = readdir ( LDIFDIR );
- closedir(LDIFDIR);
- for ( @files ) {
- if ( $_ eq "." || $_ eq ".." || $_ eq "demo.ldif" ) {
- next;
- }
-
- if ($needAclUpg) {
- &mySystem("$root${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server",
- "$root${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server${PATHSEP}" .
- "aclupg$exe_suffix", '-d', '-i',
- "$oldHome${PATHSEP}ldif${PATHSEP}$_", '-o',
- "$serverHome${PATHSEP}ldif${PATHSEP}$_");
- } else {
- &copyBinFile("$oldHome${PATHSEP}ldif${PATHSEP}$_",
- "$serverHome${PATHSEP}ldif${PATHSEP}$_");
- }
- }
-}
-
-sub genAcl {
- my $filename = "$root${PATHSEP}httpacl${PATHSEP}generated.$type-$newname.acl";
-
- open( S, ">$filename" ) || die "Can't create file $filename: $!: ";
- print S "version $newversion.0;\n";
- print S "acl agents;\n";
- print S "authenticate (user, group) {\n";
- print S " prompt = \"Agent Service\";\n";
- print S "};\n";
- print S "deny absolute (all) (user != all);\n";
- print S "allow absolute (all) (user = all);\n";
- print S "\n";
- print S "acl \"default\";\n";
- print S "allow (read, list, execute,info) user = \"anyone\";\n";
- print S "allow (write, delete) user = \"all\";\n";
- close( S );
-}
-
-sub getVersion {
- my $rootDir = shift;
- my $version = 0;
- my $minor = 0;
- my $progDir = "${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server${PATHSEP}";
- my $progDir2 = "${PATHSEP}bin${PATHSEP}slapd${PATHSEP}";
- # get the current directory so we can go back to it
- my $curdir = &getCwd;
-
- # find the slapd executable
- $prog = $rootDir . $progDir . $slapdExecName;
- if (! -f $prog) {
- $prog = $rootDir . $progDir2 . $slapdExecName;
- if (-f $prog && $isNT) {
- # if slapd is in bin/slapd and we're on NT, just assume version 1;
- # apparently, slapd.exe doesn't like the -v argument . . .
- return ( '1', $minor );
- }
- }
-
- # read the old version from the old slapd program
- chdir($rootDir . $progDir) or
- die "Could not chdir to $rootDir${progDir}: $!: ";
- open(F, "${quote}${quote}$prog${quote} -v${quote} 2>&1 |") or
- die "Could not run slapd program $prog: $!";
- sleep(1); # allow some data to accumulate in the pipe
-# print "Output from $prog -v:\n";
- while (<F>) {
-# print;
- if (/^Netscape-Directory\/(\d+)\.(\d+)/) {
- $version = $1;
- $minor = $2;
- last;
- }
- }
- $code = close(F);
-# print "$prog returned code=$code status=$?\n";
-
- # done determining versions; go back to orig directory
- chdir($curdir) or die "Could not chdir to $curdir: $!: ";
-
- $version == 0 and
- die "Could not determine version of the directory server in $rootDir: ";
-
- return ( $version, $minor );
-}
-
-# this subroutine implements a very stupid version of diff
-sub diff {
- my $f1 = shift;
- my $f2 = shift;
- my $retval = "";
-
- open(F1, "$f1") or die "Could not open file $f1";
- open(F2, "$f2") or close(F1), die "Could not open file $f2";
-
- while (defined($l1 = <F1>) && defined($l2 = <F2>)) {
- if (!($l1 eq $l2)) {
- # ignore comments
- if (($l1 =~ /^#/) && ($l2 =~ /^#/)) {
- next;
- }
- # ignore whitespace
- $l1 =~ s/\s//g;
- $l2 =~ s/\s//g;
-
- if (!($l1 eq $l2)) {
- $retval .= "< ${l1}> $l2";
- }
- }
- }
-
- close(F1);
- close(F2);
-
- if ($retval eq "") {
- return undef;
- }
-
- return $retval;
-}
-
-# unfortunately, we can't use the shell script/batch file because it may
-# not have been updated if the user changed the database directory
-sub db2ldif {
- my ($srcDbDir, $ldif, $conf) = @_;
-
- if ($oldversion == 1) {
- my $dir = "$oldDir${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server";
- chdir($dir) or die "Error: could not change directory to $dir: $!";
- my @cmd = ("${quote}$dir${PATHSEP}ldbmcat${exe_suffix}${quote}", '-n',
- "${quote}$srcDbDir${PATHSEP}id2entry.dbb${quote}");
- open(LDBMCAT, "${quote}@cmd${quote}|") or
- die "Error: could not execute @cmd: $!";
- open(OUTLDIF, "> $ldif") or
- die "Error: could not write to $ldif: $!";
- sleep(1); # allow pipe to fill with data
- $ii = 0; # counter
- while (<LDBMCAT>) {
- print OUTLDIF;
- ++$ii;
- if (($ii % 250) == 0) {
- print " Processed ", $ii, " lines\n";
- }
- }
- close(LDBMCAT);
- close(OUTLDIF);
- } else {
- if (!$conf) {
- $conf = "$oldHome${PATHSEP}config${PATHSEP}slapd.conf";
- }
- my $baseldif = &basename($ldif);
- if ($baseldif eq $ldif) {
- $ldif = "$oldHome${PATHSEP}ldif${PATHSEP}$ldif";
- }
- my $dir = "$oldDir${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server";
- chdir($dir) or
- die "Error: could not change directory to $dir: $!";
-
- my @cmd =
- ( "${quote}$oldDir${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server" .
- "${PATHSEP}$slapdExecName${quote}", "db2ldif", '-n', '-f',
- "${quote}$conf${quote}", '-a', "${quote}$ldif${quote}",
- '-d', '1' );
- open(DB2LDIF, "${quote}@cmd${quote} 2>&1|") or
- die "Error: could not execute @cmd: $!";
- sleep(1); # allow pipe to fill with data
- $ii = 0; # counter
- while (<DB2LDIF>) {
- ++$ii;
- if (($ii % 250) == 0) {
- print " Processing...\n";
- }
- }
- close(DB2LDIF);
- }
- print " Done.\n";
-}
-
-# this subroutine works like sed in that it will create another version
-# of the input file with some editing done
-# the file should be a text file
-sub copyAndEditTextFile {
- my $srcFile = shift;
- my $destFile = shift;
- my $sub = shift;
-
- open(SRCFILE, "$srcFile") or die "Error: could not open file $srcFile: $!";
- open(DESTFILE, ">$destFile") or die "Error: could not write file $destFile:
-$!";
-
- while (<SRCFILE>) {
- my $newline = &$sub($_);
- if ($newline cmp $_) {
- print "The line: $_";
- print "Was converted to: $newline";
- print "File: $srcFile\n";
- }
- print DESTFILE $newline;
- }
-
- close(SRCFILE);
- close(DESTFILE);
-}
diff --git a/ldap/admin/src/migratedsgw b/ldap/admin/src/migratedsgw
deleted file mode 100755
index 9801788c..00000000
--- a/ldap/admin/src/migratedsgw
+++ /dev/null
@@ -1,477 +0,0 @@
-#!/usr/bin/env perl
-#
-# BEGIN COPYRIGHT BLOCK
-# This Program is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; version 2 of the License.
-#
-# This Program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place, Suite 330, Boston, MA 02111-1307 USA.
-#
-# In addition, as a special exception, Red Hat, Inc. gives You the additional
-# right to link the code of this Program with code not covered under the GNU
-# General Public License ("Non-GPL Code") and to distribute linked combinations
-# including the two, subject to the limitations in this paragraph. Non-GPL Code
-# permitted under this exception must only link to the code of this Program
-# through those well defined interfaces identified in the file named EXCEPTION
-# found in the source code files (the "Approved Interfaces"). The files of
-# Non-GPL Code may instantiate templates or use macros or inline functions from
-# the Approved Interfaces without causing the resulting work to be covered by
-# the GNU General Public License. Only Red Hat, Inc. may make changes or
-# additions to the list of Approved Interfaces. You must obey the GNU General
-# Public License in all respects for all of the Program code and other code used
-# in conjunction with the Program except the Non-GPL Code covered by this
-# exception. If you modify this file, you may extend this exception to your
-# version of the file, but you are not obligated to do so. If you do not wish to
-# provide this exception without modification, you must delete this exception
-# statement from your version and license this file solely under the GPL without
-# exception.
-#
-#
-# Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
-# Copyright (C) 2005 Red Hat, Inc.
-# All rights reserved.
-# END COPYRIGHT BLOCK
-#
-
-# print begin message
-$now_time = gmtime;
-print "BEGIN DSGW migration at ", $now_time, " GMT\n";
-
-# get the commandline options
-if (!getopts('s:d:h:') || !$opt_s || !$opt_d || !$opt_h ) {
- print "usage: dsgwmig options\n";
- print "\noptions:\n";
- print " -s directory\tdirectory containing the 3.0 Gateway\n";
- print " -d directory\tdirectory containing the 4.1 Gateway\n";
- print " -h host[:port]\tthe host and port of the directory server\n";
- print " \t\t\tto which the migrated gateway will query\n";
- print "\nexample:\n dsgwmig -s /usr/tmp/ds30/slapd-host/dsgw -d /usr/tmp/ds40/dsgw -h gargoyle:1974\n";
-
- exit;
-}
-
-sub reportAndExit {
- my $now_time = gmtime;
- print "END DSGW migration at ", $now_time, " GMT\n";
- print "DSGW Exit status is ", $exitCode, "\n";
- if ($? == 0 && $exitCode == 0) {
- print "NMC_STATUS: 0\n";
- } else {
- print '$?=', $?+0, ' $!=', $!+0, ' $exitCode=', $exitCode, "\n";
- print shift, "\n";
- print "NMC_STATUS: $exitCode\n";
- }
-
- print "###DSGW MIGRATION FINISHED###\n";
-
- exit($exitCode);
-}
-
-$SIG{__DIE__} = 'exit';
-$SIG{'QUIT'} = 'exit';
-$SIG{'INT'} = 'exit';
-$SIG{'TERM'} = 'exit';
-
-# the atexit handler
-END {
- $! = 0;
- $? = $exitCode;
- &reportAndExit;
-}
-
-# setup the path separator
-$isNT = -d '\\';
-$PS = $isNT ? "\\" : "/";
-
-#make sure that the target directory exists
-if (! -e $opt_d) {
- print "$opt_d does not exist\n";
- exit;
-}
-
-print "Migrating the config directory...\n";
-# First migrate the config directory
-migrate_html("config");
-
-print "Migrating the html directory...\n";
-# Then migrate the html directory
-migrate_html("html");
-
-print "Migrating the dsgw.conf...\n";
-# Then migrate dsgw.conf
-migrate_config();
-
-# Then copy over certain files like alert.html, confirm.html and emptyFrame from
-# the regular *4.1* DSGW to the newly migrated *4.1* gateway.
-if (! -e "$opt_d"."$PS"."html-30"."$PS"."alert.html") {
- print "copy ", "$opt_d"."$PS"."html"."$PS"."alert.html", " $opt_d"."$PS"."html-30"."$PS"."alert.html", "\n";
- copyFile("$opt_d"."$PS"."html"."$PS"."alert.html", "$opt_d"."$PS"."html-30"."$PS"."alert.html");
-}
-
-if (! -e "$opt_d"."$PS"."html-30"."$PS"."confirm.html") {
- print "copy ", "$opt_d"."$PS"."html"."$PS"."confirm.html", " $opt_d"."$PS"."html-30"."$PS"."confirm.html", "\n";
- copyFile("$opt_d"."$PS"."html"."$PS"."confirm.html", "$opt_d"."$PS"."html-30"."$PS"."confirm.html");
-}
-
-if (! -e "$opt_d"."$PS"."html-30"."$PS"."confirm.gif") {
- copyFile("$opt_d"."$PS"."html"."$PS"."confirm.gif", "$opt_d"."$PS"."html-30"."$PS"."confirm.gif");
-}
-
-if (! -e "$opt_d"."$PS"."html-30"."$PS"."alert.gif") {
- copyFile("$opt_d"."$PS"."html"."$PS"."alert.gif", "$opt_d"."$PS"."html-30"."$PS"."alert.gif");
-}
-
-if (! -e "$opt_d"."$PS"."html-30"."$PS"."emptyFrame.html") {
- copyFile("$opt_d"."$PS"."html"."$PS"."emptyFrame.html", "$opt_d"."$PS"."html-30"."$PS"."emptyFrame.html");
-}
-
-print "end of migratedsgw\n";
-$exitCode = 0;
-exit $exitCode;
-
-sub migrate_html
-{
- my $target_dir = shift(@_);
- my $orig_target = "$target_dir";
- my $full_target_dir;
- my @subdirlist;
- my @dsgwfiles;
-
-# cd into the source directory
- chdir "$opt_s"."$PS"."$target_dir" or die "Unable to cd to $opt_s$PS$target_dir: $!\n";
-
-# read the files
- opendir DSGW_OLD, "." or die "$!";
- @dsgwfiles = grep !/^\.\.?$/, readdir DSGW_OLD;
- closedir DSGW_OLD;
-
-# Before we go on, we need to make the directory
-# in the 4.1 space. If we're working on the config
-# or html directory, then we have to rename them.
- $target_dir =~ s/^(config|html)/$1\-30/;
- $full_target_dir = "$opt_d". "$PS". "$target_dir";
- if (! -d $full_target_dir) {
- mkdir $full_target_dir, 0755 or
- die "can't create $opt_d$PS$target_dir. $!\n";
- }
-
-# foreach file in the current directory,
-# either skip it (if it's a subdir)
-# copy it to the new directory
-# copy and modify it to the new directory
- foreach $file (@dsgwfiles){ #
- #Skip directories
- if (-d $file) {
-# print "Skipping Directory $file\n";
- push @subdirlist, $file;
- next;
- }
-
- if ($file =~ m/.*?\.html/) {
-# open the old file
- open(OLDFILE, "$file") or die "Cannot read $file. $!\n";
-
-# open the new file
- open(NEWFILE, ">"."$full_target_dir"."$PS"."$file") or die "Cannot write $full_target_dir$PS$file. $!\n";
-
- for ($line=<OLDFILE>; $line ; $line=<OLDFILE>) {
-
-# replace all ACTION=/ds/cgi with ACTION=/dsgw/bin/cgi
- $line =~ s:(?i)(action\s*=\s*("){0,1}\s*(http(s){0,1}\://.*?){0,1})/ds/(\w*):$1/dsgw/bin/$5:g; #"))
-
-# Langify the gifs, but not those that are already langified. Look for ="blah.gif"
- $line =~ s:(?i)=\s*("){0,1}\s*([\w|\-|_]*)\.(gif|jpg|jpeg):=$1/dsgw/bin/lang?\<!-- GCONTEXT --\>\&file=$2\.$3:g; #")
-
-# And html files. Look for SRC|HREF="blah.html"
- $line =~ s:(?i)(HREF|SRC)(\s*=\s*("){0,1}\s*)([\w|\-|_]*)\.(html):$1$2/dsgw/bin/lang?\<!-- GCONTEXT --\>\&file=$4\.$5:g; #")
-
-# Any javascript files should become /dsgw/html-30/blah.js
- $line =~ s:(?i)=\s*("){0,1}\s*([\w|\-|_]*)\.(js):=$1/dsgw/html-30/$2\.$3:g; #")
-
-# Look for /dshtml/ to langify the .gifs and .html. This rule can't
-# precede the first langify rule. That would be bad because it looks for ="blah.gif"
- $line =~ s:(?i)/dshtml/([\w|\-|_]*)\.(gif|jpg|jpeg|html):/dsgw/bin/lang?\<!-- GCONTEXT --\>\&file=$1\.$2:g; #")
-
-# GETs on the CGIs ....
-# auth - dn is passed either as QUERY_STRING or PATH_INFO, but not both.
- $line =~ s:(?i)(((FRAME\s*SRC|HREF)(\s*=\s*("){0,1}\s*)(/ds/){0,1})|(/ds/))auth(/|\?dn=)([\w|%]*):$3$4/dsgw/bin/auth?dn=$9\&\<!-- GCONTEXT --\>:g;
-
-# auth - by itself
- $line =~ s:(?i)(((FRAME\s*SRC|HREF)(\s*=\s*("){0,1}\s*)(/ds/){0,1})|(/ds/))auth:$3$4/dsgw/bin/auth\?\<!-- GCONTEXT --\>:g;
-
-
-# lang - The argument is always PATH_INFO and it is either a filename
-# or a file name and "info=blah". No QUERY_STRING.
- $line =~ s:(?i)(((FRAME\s*SRC|HREF)(\s*=\s*("){0,1}\s*)(/ds/){0,1})|(/ds/))lang/([=|\w|\&|\.|\-|_]*):$3$4/dsgw/bin/lang?\<!-- GCONTEXT --\>\&file=$8:g;
-
-# lang could be called without an argument, although it's silly to do so.
- $line =~ s:(?i)(((FRAME\s*SRC|HREF)(\s*=\s*("){0,1}\s*)(/ds/){0,1})|(/ds/))lang:$3$4/dsgw/bin/lang\?\<!-- GCONTEXT --\>:g;
-
-# search - take one word arguments with PATH_INFO only. No QUERY_STRING
- $line =~ s:(?i)(((FRAME\s*SRC|HREF)(\s*=\s*("){0,1}\s*)(/ds/){0,1})|(/ds/))search/(\w*):$3$4/dsgw/bin/search?\<!-- GCONTEXT --\>\&file=$8:g;
-
-
-# search could exist without an argument on a GET
- $line =~ s:(?i)(((FRAME\s*SRC|HREF)(\s*=\s*("){0,1}\s*)(/ds/){0,1})|(/ds/))search:$3$4/dsgw/bin/search?\<!-- GCONTEXT --\>:g;
-
-
-# csearch - take one word arguments with PATH_INFO only. No QUERY_STRING
- $line =~ s:(?i)(((FRAME\s*SRC|HREF)(\s*=\s*("){0,1}\s*)(/ds/){0,1})|(/ds/))csearch/(\w*):$3$4/dsgw/bin/csearch?\<!-- GCONTEXT --\>\&file=$8:g;
-
-
-# csearch could exist without an argument on a GET
- $line =~ s:(?i)(((FRAME\s*SRC|HREF)(\s*=\s*("){0,1}\s*)(/ds/){0,1})|(/ds/))csearch:$3$4/dsgw/bin/csearch?\<!-- GCONTEXT --\>:g;
-
-
-# unauth - doesn't take any arguments
- $line =~ s:(?i)(((FRAME\s*SRC|HREF)(\s*=\s*("){0,1}\s*)(/ds/){0,1})|(/ds/))unauth:$3$4/dsgw/bin/unauth?\<!-- GCONTEXT --\>:g;
-
-# dnedit and edit - must always have a dn specified, so /ds/dnedit will
-# never exist by itself on a GET. If it's PATH_INFO, then it's just the dn.
-# If it's QUERY_STRING it's a bunch of stuff. Could be both. dnedit must
-# have a QUERY_STRING.
-
-# PATH_INFO and QUERY_STRING
- $line =~ s:(?i)(((FRAME\s*SRC|HREF)(\s*=\s*("){0,1}\s*)(/ds/){0,1})|(/ds/))(dn){0,1}edit/([\w|%]*)\?([\&|=|\w|\-|_|\.]*):$3$4/dsgw/bin/$8edit?\<!-- GCONTEXT --\>\&dn=$9\&$10:g;
-
-# PATH_INFO only
- $line =~ s:(?i)(((FRAME\s*SRC|HREF)(\s*=\s*("){0,1}\s*)(/ds/){0,1})|(/ds/))(dn){0,1}edit/([\w|%]*):$3$4/dsgw/bin/$8edit?\<!-- GCONTEXT --\>\&dn=$9:g;
-
-
-# QUERY_STRING only
- $line =~ s:(?i)(((FRAME\s*SRC|HREF)(\s*=\s*("){0,1}\s*)(/ds/){0,1})|(/ds/))(dn){0,1}edit\?:$3$4/dsgw/bin/$8edit\?\<!-- GCONTEXT --\>\&:g;
-
-
-# doauth and domodify - No GET, only POST
- $line =~ s:(?i)(((FRAME\s*SRC|HREF)(\s*=\s*("){0,1}\s*)(/ds/){0,1})|(/ds/))do(auth|modify):$3$4/dsgw/bin/do$8\?\<!-- GCONTEXT --\>:g;
-
-
-# newentry - takes PATH_INFO only or nothing. If there is a PATH_INFO,
-# then it's 1 word: type or name
- $line =~ s:(?i)(((FRAME\s*SRC|HREF)(\s*=\s*("){0,1}\s*)(/ds/){0,1})|(/ds/))newentry/(type|name):$3$4/dsgw/bin/newentry?\<!-- GCONTEXT --\>\&file=$8:g;
-
-
-# newentry - could exist on its own
- $line =~ s:(?i)(((FRAME\s*SRC|HREF)(\s*=\s*("){0,1}\s*)(/ds/){0,1})|(/ds/))newentry:$3$4/dsgw/bin/newentry?\<!-- GCONTEXT --\>:g;
-
-# tutor - hasn't changed.
-
-# dosearch - From .../dosearch[/host[:port]][?[dn=baseDN&][LDAPquery]] Or
-# ../dosearch/host[:port]/[baseDN][?LDAPquery]
-
-# To: dosearch?context=BLAH[&hp=host[:port]][&dn=baseDN][&ldq=LDAPquery]]
-
-# dosearch - Everything there, except maybe the port. Rule 1
- $line =~ s:(?i)(((FRAME\s*SRC|HREF)(\s*=\s*("){0,1}\s*)(/ds/){0,1})|(/ds/))dosearch(/){0,1}(\w+)(\:\d+){0,1}(/|\?)((dn=){0,1}([\w|%]+))(\?|\&)(.*?)(\s|"):$3$4/dsgw/bin/dosearch?\<!-- GCONTEXT --\>&hp=$9$10&dn=$14&ldq=$16$17:g; #")
-
-
-# dosearch - no ldapquery
-# current version rule 2
- $line =~ s:(?i)(((FRAME\s*SRC|HREF)(\s*=\s*("){0,1}\s*)(/ds/){0,1})|(/ds/))dosearch/(\w+)(\:\d+){0,1}\?((dn=)([\w|%]+)):$3$4/dsgw/bin/dosearch?\<!-- GCONTEXT --\>&hp=$8$9&dn=$12:g;
-
-# older version (always needs host specified) rule 3
- $line =~ s:(?i)(((FRAME\s*SRC|HREF)(\s*=\s*("){0,1}\s*)(/ds/){0,1})|(/ds/))dosearch/(\w+)(\:\d+){0,1}/([\w|%]+):$3$4/dsgw/bin/dosearch?\<!-- GCONTEXT --\>&hp=$8$9&dn=$10:g;
-
-
-# dosearch - no basedn
-# current version rule 4
- $line =~ s:(?i)(((FRAME\s*SRC|HREF)(\s*=\s*("){0,1}\s*)(/ds/){0,1})|(/ds/))dosearch/(\w+)(\:\d+){0,1}\?(.*?)(\s|"):$3$4/dsgw/bin/dosearch?\<!-- GCONTEXT --\>&hp=$8$9&ldq=$10$11:g; #")
-
-
-# older version (always needs host specified) rule 5
- $line =~ s:(?i)(((FRAME\s*SRC|HREF)(\s*=\s*("){0,1}\s*)(/ds/){0,1})|(/ds/))dosearch/(\w+)(\:\d+){0,1}/\?(.*?)(\s|"):$3$4/dsgw/bin/dosearch?\<!-- GCONTEXT --\>&hp=$8$9&ldq=$10$11:g; #")
-
-
-# dosearch - no host/port and ldapquery and dn rule 7
- $line =~ s:(?i)(((FRAME\s*SRC|HREF)(\s*=\s*("){0,1}\s*)(/ds/){0,1})|(/ds/))dosearch\?(dn=[\w|%]+\&)(.*?)(\s|"):$3$4/dsgw/bin/dosearch?\<!-- GCONTEXT --\>&$8ldq=$9$10:g; #")
- #
-
-# dosearch - no host/port and no ldapquery rule 6
- $line =~ s:(?i)(((FRAME\s*SRC|HREF)(\s*=\s*("){0,1}\s*)(/ds/){0,1})|(/ds/))dosearch\?(dn=[\w|%]+):$3$4/dsgw/bin/dosearch?\<!-- GCONTEXT --\>&$8:g;
-
-# dosearch - host/port nothing else rule 9
- $line =~ s:(?i)(((FRAME\s*SRC|HREF)(\s*=\s*("){0,1}\s*)(/ds/){0,1})|(/ds/))dosearch/(\w+)(\:\d+){0,1}(/){0,1}:$3$4/dsgw/bin/dosearch?\<!-- GCONTEXT --\>&hp=$8$9:g;
-
-
-# dosearch - no host/port and no DN (current version only) rule 8
- $line =~ s:(?i)(((FRAME\s*SRC|HREF)(\s*=\s*("){0,1}\s*)(/ds/){0,1})|(/ds/))dosearch\?(.*?)(\s|"):$3$4/dsgw/bin/dosearch?\<!-- GCONTEXT --\>&ldq=$8$9:g; #")
-
-# dosearch - Just by itself rule 10
- $line =~ s:(?i)(((FRAME\s*SRC|HREF)(\s*=\s*("){0,1}\s*)(/ds/){0,1})|(/ds/))dosearch:$3$4/dsgw/bin/dosearch?\<!-- GCONTEXT --\>:g;
-
-# For 3.0 (not 3.1), we need to update the advanced search page
-# to use the csearch CGI instead of javascript.
- $line =~ s:SRC\s*=\s*"\s*javascript\:parent.emptyFrame\s*"\s*NAME\s*=\s*"\s*searchTypeFrame":SRC="/dsgw/bin/csearch\?\<!-- GCONTEXT --\>\&file=type" NAME="searchTypeFrame":g;
-
- $line =~ s:SRC\s*=\s*"\s*javascript\:parent.emptyFrame\s*"\s*NAME\s*=\s*"\s*searchAttrFrame":SRC="/dsgw/bin/csearch\?\<!-- GCONTEXT --\>\&file=attr" NAME="searchAttrFrame":g;
-
- $line =~ s:SRC\s*=\s*"\s*javascript\:parent.emptyFrame\s*"\s*NAME\s*=\s*"\s*searchMatchFrame":SRC="/dsgw/bin/csearch\?\<!-- GCONTEXT --\>\&file=match" NAME="searchMatchFrame":g;
-
- $line =~ s:SRC\s*=\s*"\s*javascript\:parent.emptyFrame\s*"\s*NAME\s*=\s*"\s*searchBaseFrame":SRC="/dsgw/bin/csearch\?\<!-- GCONTEXT --\>\&file=base" NAME="searchBaseFrame":g;
-
-
-# Now for the POSTS
-# Replace all FORM directives (except the form ending ones) with
-# that same directive plus the pcontext directive on a newline
- $line =~ s:(?i)(^\<\!\-\- DS_(AUTH|CSEARCH|BEGIN|NEWENTRY|SEARCH)[\w|_]*FORM .*?\-\-\>):$1\n\<!-- PCONTEXT --\>\n:g;
-
-# Some people might put a form-writing javascript function in their HTML.
-# This rule will keep that from getting crippled because otherwise
-# the next rule would insert a newline in the middle of a javascript string.
- $line =~ s:(?i)\'(.*?)(\<FORM\s*.*?\>)(.*?)\':'$1$2\\n\<!-- PCONTEXT --\>\\n$3':g;
-
-# Now replace all the explicit <FORM> tags with that same tag
-# and the pcontext directive. But don't do it if it already
-# has been done by the previous rule
- $line =~ s:(?i)(\<FORM\s*.*?\>)(?!\\n):$1\n\<!-- PCONTEXT --\>\n:g;#")
-
-
- print NEWFILE $line;
-
- }
-
- close(OLDFILE);
- close(NEWFILE);
-
-
-# } elsif ( ($file =~ m/.*?\.js/) && !( -e "$opt_d"."$PS"."bin"."$PS"."$file")) {
-# copyFile ("$file", "$opt_d"."$PS"."bin". "$PS". "$file");
- } else {
-# print "copy this file $file\n";
- copyFile ("$file","$full_target_dir"."$PS"."$file");
- }
-
- }
-
-
-
- # After we've copied over all the files in this
- # directory, then it's time to recurse on all the
- # directories below.
-
- foreach $subdir (@subdirlist) {
-# print "recursing on $orig_target $subdir\n";
- migrate_html("$orig_target"."$PS"."$subdir");
- }
-
-}
-
-
-sub copyFile
-{
- my $src = shift;
- my $dest = shift;
- my $buf = "";
- my $bufsize = 8192;
-
- open( SRC, $src ) || die "Can't open $src: $!\n";
- # if we are given a directory destination instead of a file, extract the
- # filename portion of the source to use as the destination filename
- if (-d $dest ) {
- $dest = $dest . $PS . &basename($src);
- }
- open( DEST, ">$dest" ) || die "Can't create $dest: $!\n";
- binmode SRC;
- binmode DEST;
- if ($PRESERVE) {
- $mode = (stat($src))[2];
- ($uid, $gid) = (stat(_))[4..5];
- chown $uid, $gid, $dest;
- chmod $mode, $dest;
- }
- while (read(SRC, $buf, $bufsize)) {
- print DEST $buf;
- }
- close( SRC );
- close( DEST );
-}
-
-
-sub migrate_config
-{
- #open a new dsgw-30.conf in the NS-HOME/dsgw/context directory
- open (NEWCONF, ">"."$opt_d"."$PS"."context". "$PS". "dsgw-30.conf") or die "Can't open $opt_d${PS}context${PS}dsgw-30.conf. $!\n";
- print NEWCONF "# Used by Netscape Directory Server Gateway\n\n";
- print NEWCONF "# The htmldir directive tells the CGIs where to find the html files\n";
- print NEWCONF "htmldir\t../html-30\n\n";
- print NEWCONF "# The configdir directive tells the CGIs where to find the\n";
- print NEWCONF "# templates/configuration files\n";
- print NEWCONF "configdir\t../config-30\n\n";
- print NEWCONF "# The gwnametrans directive tells the CGIs what url to output\n";
- print NEWCONF "# for http redirection. It should be the same nameTrans set\n";
- print NEWCONF "# in the webserver, if any is being is used.\n";
- print NEWCONF "gwnametrans\t/dsgw/html-30/\n\n";
-
- # now open the old dsgw.conf and start copying it over, line by line
- # to the new config file, replacing the NLS directive and the securityPath
- # directive with the correct values. Also replace the old host:port with the
- # new host:port
- open (OLDCONF, "$opt_d"."$PS"."config-30"."$PS"."dsgw.conf") or die "Can't open $opt_d${PS}config-30${PS}dsgw.conf. $!\n";;
-
- for ($line=<OLDCONF>; $line ; $line=<OLDCONF>) {
- $line =~ s:^NLS\s*../../../nls:NLS\t../../lib/nls:g;
- $line =~ s:^securitypath\s*(.*?)/slapd\-.*?/dsgw/ssl:securitypath\t$1/alias/dsgw-cert.db:g;
- $line =~ s:^baseurl\s*("){0,1}\s*ldap(s){0,1}\://.*?/:baseurl\t$1ldap$2\://$opt_h/:og;
-
- print NEWCONF "$line";
-
- }
-
-
- close (NEWCONF);
- close (OLDCONF);
-}
-
-sub basename {
- my @list = split(/[\\\/]/, $_[0]);
- return $list[@list - 1];
-}
-
-sub getopts {
- local($argumentative) = @_;
- local(@args,$_,$first,$rest);
- local($errs) = 0;
- local($[) = 0;
-
- @args = split( / */, $argumentative );
- while(@ARGV && ($_ = $ARGV[0]) =~ /^-(.)(.*)/) {
- ($first,$rest) = ($1,$2);
- $pos = index($argumentative,$first);
- if($pos >= $[) {
- if($args[$pos+1] eq ':') {
- shift(@ARGV);
- if($rest eq '') {
- ++$errs unless @ARGV;
- $rest = shift(@ARGV);
- }
- eval "\$opt_$first = \$rest;";
- }
- else {
- eval "\$opt_$first = 1";
- if($rest eq '') {
- shift(@ARGV);
- }
- else {
- $ARGV[0] = "-$rest";
- }
- }
- }
- else {
- print STDERR "Unknown option: $first\n";
- ++$errs;
- if($rest ne '') {
- $ARGV[0] = "-$rest";
- }
- else {
- shift(@ARGV);
- }
- }
- }
- $errs == 0;
-}
diff --git a/ldap/admin/src/namegen.c b/ldap/admin/src/namegen.c
deleted file mode 100644
index c35c3eda..00000000
--- a/ldap/admin/src/namegen.c
+++ /dev/null
@@ -1,147 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-/* namegen.c - utility program to generate name *
- * of backup files in the format YYYY_MM_DD_HMS *
- * and set it up as an environment variable to *
- * be used by batch files on NT *
- * *
- * to use it do the following in your batch file*
- * namegen *
- * call bstart *
- * ....... *
- * call bend *
- * rm end.bat *
- * *
- * start and end are batch files generated by *
- * name gen. *
- * Example: ldif2db.bat */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <time.h>
-#include <string.h>
-
-#define STARTFILE "bstart.bat"
-#define ENDFILE "bend.bat"
-#define CMD "set DATESTR=%0\n"
-
-
-int main (int argc, char **argv)
-{
- char szDate [64];
- char szDateFile [64];
- char szCmd [256];
- struct tm *sCurTime;
- long lCurTime;
- int rt;
- FILE *fBatch;
-
- time( &lCurTime );
-
- sCurTime = localtime( &lCurTime );
-
- strftime(szDate, sizeof (szDateFile), "%Y_%m_%d_%H%M%S",
- sCurTime);
-
- _snprintf (szDateFile, sizeof(szDateFile), "%s.bat", szDate);
- szDateFile[sizeof(szDateFile)-1] = (char)0;
-
- /* create date batch file */
- fBatch = fopen (szDateFile, "w");
- if (fBatch == NULL)
- {
- perror ("Unable to create date file!");
- exit (1);
- }
-
- rt = fwrite (CMD, strlen (CMD), 1, fBatch);
- if (rt != 1)
- {
- perror ("Unable to write date file\n");
- exit (1);
- }
-
- fclose (fBatch);
-
- /* create bstart.bat that executest date batch file */
- fBatch = fopen (STARTFILE, "w");
- if (fBatch == NULL)
- {
- perror ("Unable to bstart file!");
- exit (1);
- }
-
- _snprintf (szCmd, sizeof(szCmd), "call %s", szDate);
- szCmd[sizeof(szCmd)-1] = (char)0;
-
- rt = fwrite (szCmd, strlen (szCmd), 1, fBatch);
- if (rt != 1)
- {
- perror ("Unable to write bstart file\n");
- exit (1);
- }
-
- fclose (fBatch);
-
- /* create bstart.bat that executest date batch file */
- fBatch = fopen (ENDFILE, "w");
- if (fBatch == NULL)
- {
- perror ("Unable to bend file!");
- exit (1);
- }
-
- _snprintf (szCmd, sizeof(szCmd), "del %s\ndel bstart.bat\nset DATESTR=", szDateFile);
- szCmd[sizeof(szCmd)-1] = (char)0;
-
- rt = fwrite (szCmd, strlen(szCmd), 1, fBatch);
- if (rt != 1)
- {
- perror ("Unable to write bend file\n");
- exit (1);
- }
-
- fclose (fBatch);
-
- return 0;
-}
diff --git a/ldap/admin/src/script-gen.c b/ldap/admin/src/script-gen.c
deleted file mode 100644
index 0b17eb03..00000000
--- a/ldap/admin/src/script-gen.c
+++ /dev/null
@@ -1,147 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-/*
- * this is used for generating the (large) scripts during create_instance.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include "portable.h"
-#if defined( XP_WIN32 )
-#include <io.h>
-#endif
-
-/* reads the file on inpath, and rewrites it on outpath.
- * 'table' is a list of string-pairs (terminated by a pair of NULLs) that
- * indicate substitution pairs. for example, the pair:
- * "SERVER-ROOT", "/export/home/slapd-bastille"
- * means to substitute any occurance of "{{SERVER-ROOT}}" in the file with
- * "/export/home/slapd-bastille".
- *
- * returns 0 on success, -1 if it had trouble opening or reading/writing
- * the two files.
- */
-#define GS_BUFLEN 256
-int generate_script(const char *inpath, const char *outpath, int mode,
- const char *table[][2])
-{
- FILE *fin, *fout;
- char buffer[GS_BUFLEN], save_buffer[GS_BUFLEN];
- char *p, *q;
- int i;
-
- fin = fopen(inpath, "r");
- if (fin == NULL) {
- return -1;
- }
- fout = fopen(outpath, "w");
- if (fout == NULL) {
- fclose(fin);
- return -1;
- }
-
- while (!feof(fin)) {
- fgets(buffer, GS_BUFLEN, fin);
- if (feof(fin)) {
- break;
- }
- buffer[GS_BUFLEN-1] = 0;
- if (buffer[strlen(buffer)-1] == '\n') {
- buffer[strlen(buffer)-1] = 0;
- }
- if (buffer[strlen(buffer)-1] == '\r') {
- buffer[strlen(buffer)-1] = 0;
- }
-
- p = buffer;
- while ((p = strstr(p, "{{")) != NULL) {
- q = strstr(p+2, "}}");
- if (q == NULL) {
- /* skip this one then */
- p += 2;
- continue;
- }
-
- /* key between {{ }} is now in [p+2, q-1] */
- for (i = 0; table[i][0] != NULL; i++) {
- if ((strlen(table[i][0]) == (q-(p+2))) &&
- (strncasecmp(table[i][0], p+2, q-(p+2)) == 0)) {
- /* match! ...but is there room for the subtitution? */
- int extra = strlen(table[i][1]) - (q+2-p);
-
- if (strlen(buffer) + extra > GS_BUFLEN-1) {
- /* not enough room, scratch it */
- continue;
- }
- strncpy(save_buffer, q+2, sizeof(save_buffer)-1);
- save_buffer[sizeof(save_buffer)-1] = (char)0;
- strcpy(p, table[i][1]);
- strcat(p, save_buffer);
- q = p;
- break; /* out of the for loop */
- }
- }
-
- /* move on... */
- p = q;
- }
-
- fprintf(fout, "%s\n", buffer);
- }
-
-#if defined( XP_UNIX )
- fchmod(fileno(fout), mode);
-#endif
-
- fclose(fin);
- fclose(fout);
-
-#if defined( XP_WIN32 )
- chmod(outpath, mode);
-#endif
-
- return 0;
-}
diff --git a/ldap/admin/src/scripts/Setup.pm.in b/ldap/admin/src/scripts/Setup.pm.in
index 93d53291..512b5aa9 100644
--- a/ldap/admin/src/scripts/Setup.pm.in
+++ b/ldap/admin/src/scripts/Setup.pm.in
@@ -215,8 +215,17 @@ sub msg {
sub doExit {
my $self = shift;
- $self->msg($FATAL, 'setup_exiting', $self->{log}->{filename});
- exit 1;
+ my $code = shift;
+ if (!defined($code)) {
+ $code = 1;
+ }
+
+ if ($code) {
+ $self->msg($FATAL, 'setup_exiting', $self->{log}->{filename});
+ } else {
+ $self->msg($SUCCESS, 'setup_exiting', $self->{log}->{filename});
+ }
+ exit $code;
}
# get a list of the directory servers in configdir
@@ -238,3 +247,10 @@ sub getDirServers {
# Mandatory TRUE return value.
#
1;
+
+# emacs settings
+# Local Variables:
+# mode:perl
+# indent-tabs-mode: nil
+# tab-width: 4
+# End:
diff --git a/ldap/admin/src/scripts/migrate-ds.pl.in b/ldap/admin/src/scripts/migrate-ds.pl.in
index 7c5ea83d..bd718d58 100644
--- a/ldap/admin/src/scripts/migrate-ds.pl.in
+++ b/ldap/admin/src/scripts/migrate-ds.pl.in
@@ -62,16 +62,15 @@ my $mig = new Migration($res);
$mig->msg('begin_ds_migration', $mig->{oldsroot});
if (!migrateDS($mig)) {
- exit 1;
+ $mig->doExit(1);
}
$mig->msg('end_ds_migration');
+$mig->doExit(0);
END {
if ($mig) {
if (!$mig->{keep}) {
unlink $mig->{inffile};
}
-
- $mig->doExit();
}
}
diff --git a/ldap/admin/src/scripts/setup-ds.pl.in b/ldap/admin/src/scripts/setup-ds.pl.in
index 99969a22..32cb0c34 100644
--- a/ldap/admin/src/scripts/setup-ds.pl.in
+++ b/ldap/admin/src/scripts/setup-ds.pl.in
@@ -76,17 +76,18 @@ if (@errs) {
$setup->msg(@errs);
$setup->msg($FATAL, 'error_creating_dsinstance',
$setup->{inf}->{slapd}->{ServerIdentifier});
+ $setup->doExit(1);
} else {
$setup->msg('created_dsinstance',
$setup->{inf}->{slapd}->{ServerIdentifier});
}
+$setup->doExit(0);
+
END {
if ($setup) {
if (!$setup->{keep}) {
unlink $setup->{inffile};
}
-
- $setup->doExit();
}
}
diff --git a/ldap/admin/src/scripts/template-migrate5to7 b/ldap/admin/src/scripts/template-migrate5to7
deleted file mode 100644
index f2e10e2a..00000000
--- a/ldap/admin/src/scripts/template-migrate5to7
+++ /dev/null
@@ -1,3091 +0,0 @@
-#{{PERL-EXEC}}
-#
-# BEGIN COPYRIGHT BLOCK
-# This Program is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; version 2 of the License.
-#
-# This Program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place, Suite 330, Boston, MA 02111-1307 USA.
-#
-# In addition, as a special exception, Red Hat, Inc. gives You the additional
-# right to link the code of this Program with code not covered under the GNU
-# General Public License ("Non-GPL Code") and to distribute linked combinations
-# including the two, subject to the limitations in this paragraph. Non-GPL Code
-# permitted under this exception must only link to the code of this Program
-# through those well defined interfaces identified in the file named EXCEPTION
-# found in the source code files (the "Approved Interfaces"). The files of
-# Non-GPL Code may instantiate templates or use macros or inline functions from
-# the Approved Interfaces without causing the resulting work to be covered by
-# the GNU General Public License. Only Red Hat, Inc. may make changes or
-# additions to the list of Approved Interfaces. You must obey the GNU General
-# Public License in all respects for all of the Program code and other code used
-# in conjunction with the Program except the Non-GPL Code covered by this
-# exception. If you modify this file, you may extend this exception to your
-# version of the file, but you are not obligated to do so. If you do not wish to
-# provide this exception without modification, you must delete this exception
-# statement from your version and license this file solely under the GPL without
-# exception.
-#
-#
-# Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
-# Copyright (C) 2005 Red Hat, Inc.
-# All rights reserved.
-# END COPYRIGHT BLOCK
-#
-
-# enable the use of our bundled perldap with our bundled ldapsdk libraries
-# all of this nonsense can be omitted if the mozldapsdk and perldap are
-# installed in the operating system locations (e.g. /usr/lib /usr/lib/perl5)
-BEGIN {
- my $sroot = "{{DS-ROOT}}";
- push @INC, "$sroot/lib/perl/arch", "$sroot/lib/perl";
- if ($ENV{LD_LIBRARY_PATH}) {
- $ENV{LD_LIBRARY_PATH} .= ":";
- }
- $ENV{LD_LIBRARY_PATH} .= "$sroot/shared/lib";
- # this is only needed for HP/ux PA-RISC, but it doesn't hurt other platforms
- if ($ENV{SHLIB_PATH}) {
- $ENV{SHLIB_PATH} .= ":";
- }
- $ENV{SHLIB_PATH} .= "$sroot/shared/lib";
-}
-# Migrate a 5.x directory server to a 7.0 directory server
-
-#######################################################################################################
-# enable the use of Perldap functions
-require DynaLoader;
-
-use Getopt::Std;
-use Mozilla::LDAP::Conn;
-use Mozilla::LDAP::Entry;
-use Mozilla::LDAP::LDIF;
-use Mozilla::LDAP::Utils qw(:all);
-use Mozilla::LDAP::API qw(:api :ssl :apiv3 :constant); # Direct access to C API
-use Time::localtime;
-use File::Basename;
-use Class::Struct ;
-
-#######################################################################################################
-
-sub usage {
- print(STDERR "\nUsage: $0 -D rootdn { -w password | -w - | -j filename } -p port \n");
- print(STDERR " -o oldInstancePath -n newInstancePath [-t tracelevel] [-L logfile]\n");
- print(STDERR "************** parameters in brackets are optionals, others are required **************\n");
- print(STDERR " Opts: -D rootdn - new 7.0 Directory Manager\n");
- print(STDERR " : -w password - new 7.0 Directory Manager's password\n");
- print(STDERR " : -w - - Prompt for new 7.0 Directory Manager's password\n");
- print(STDERR " : -j filename - Read new 7.0 Directory Manager's password from file\n");
- print(STDERR " : -p port - new 7.0 Directory Server port\n");
- print(STDERR " : -o oldInstancePath - Path of the old instance to migrate \n");
- print(STDERR " : -n newInstancePath - Path of the new 7.0 instance\n");
- print(STDERR " : [-d dataPath] - Path to directory containing data files to import into new instance\n");
- print(STDERR " : [-v oldVersion] - Version of old instance (obtained by running $slapdExecName -v\n");
- print(STDERR " : [-t tracelevel] - (optional) specify the level of trace (0..3)\n");
- print(STDERR " : [-L logfile] - (optional) specify the file to log the migration report \n");
- }
-########################################################################################################
-
-BEGIN {
-
- require 'uname.lib' ;
- $isNT = -d '\\';
- $PATHSEP = $isNT ? "\\" : "/";
- ${SEP} = $isNT ? ";" : ":" ;
- @INC = ( '.', '../../../admin/admin/bin');
- grep { s@/@\\@g } @INC if $isNT;
- $script_suffix = $isNT ? ".bat" : "";
- $exe_suffix = $isNT ? ".exe" : "";
- # NT needs quotes around some things unix doesn't
- $quote = $isNT ? "\"" : "";
-
- # If this variable is set, all file/directory creation will make sure the mode
- # and ownership of the destination is the same as the source
- $PRESERVE = 1 if (!$isNT);
- $script_suffix = $isNT ? ".bat" : "";
- $exe_suffix = $isNT ? ".exe" : "";
- if ($isNT) {
- $os = "WINNT";
- } else {
- $os = &uname("-s");
- }
- if ($isNT) {
- # we have to pass batch files directly to the NT command interpreter
- $com_spec = $ENV{ComSpec};
- if (!$com_spec) {
- $com_spec = $ENV{COMSPEC};
- }
- if (!$com_spec || ! -f $com_spec) {
- # find the first available command interpreter
- foreach $drive (c..z) {
- $com_spec = "$drive:\\winnt\\system32\\cmd.exe";
- last if (-f $com_spec);
- $com_spec = undef;
- }
- if (! $com_spec) {
- # punt and pray
- $com_spec = 'c:\winnt\system32\cmd.exe';
- }
- }
- }
- if ( $os eq "AIX" ) {
- $dll_suffix = "_shr.a";
- }
- elsif ( $os eq "HP-UX" ) {
- $dll_suffix = ".sl";
- }
- elsif ( $os eq "WINNT" ) {
- $dll_suffix = ".dll";
- }
- else {
- $dll_suffix = ".so";
- }
- $slapdExecName = $isNT ? 'slapd.exe' : './ns-slapd';
- select STDERR;
- $| = 1;
- select STDOUT;
- $| = 1;
-}
-
-SWITCH: {
- if ($os eq "AIX") {
- $LIB_PATH = "LIBPATH" ;
- last SWITCH ;
- }
- if ($os eq "HP-UX") {
- $LIB_PATH = "SHLIB_PATH" ;
- last SWITCH ;
- }
- if ($isNT) {
- $LIB_PATH = "PATH" ;
- last SWITCH ;
- }
- else {
- $LIB_PATH = "LD_LIBRARY_PATH" ;
- last SWITCH ;
- }
- }
-
- # old parameters
- ${oldDir} = "" ;
- ${oldname} = "" ;
- ${oldHome} = "" ;
- ${oldConfDir} = "" ;
- ${oldlocaluser} ;
- ${olduid} ;
- ${oldgid} ;
-
- # new parameters
- ${root} = "{{DS-ROOT}}" ;
- ${type} = "" ;
- ${newname} = "" ;
- ${newport} = "" ;
- ${rootDN} = "" ;
- ${rootpwd} = "" ;
- ${localhost} = "" ;
- ${LogFileReport} = "" ;
- ${newuid} ;
- ${localuser} ;
- ${newgid} ;
- $NO_INPUT_USER = 0 ; # by default user can give inputs during the migration process
- ${curdir} = getCwd();
- ${slapdExecDir} = "${root}${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server${PATHSEP}";
- # in 7.0 the replica Id is setup to a static value
- $replicaIdvalue = 65535;
-
- # specify the level of trace
- $TRACELEVEL=1;
-
- $LDAP_SERVER_UNREACHABLE = 81;
-
- # get input users
- &getParameters() ;
- ${oldDir} = &normalizeDir("${oldDir}");
- ${oldHome} = "${oldDir}${PATHSEP}$type-$oldname" ;
- ${oldConfDir} = "${oldHome}${PATHSEP}config${PATHSEP}" ;
- ${oldSchemaDir} = "${oldConfDir}schema${PATHSEP}";
- ${oldDSEldif} = "${oldConfDir}dse.ldif";
- ${serverHome} = "${root}${PATHSEP}$type-$newname" ;
- ${schemaDir} = "$serverHome${PATHSEP}config${PATHSEP}schema${PATHSEP}";
- ${DSEldif} = "$serverHome${PATHSEP}config${PATHSEP}dse.ldif";
- ${ldif_rep} = "${oldConfDir}ldif${PATHSEP}" ;
- ${oldSlapdExecDir} = "${oldDir}${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server${PATHSEP}";
-
- open(LOGFILE, ">> $LogFileReport");
-
- printTrace("\noldDir: $oldDir, oldHome: $oldHome, \noldConfDir: $oldConfDir, \nldif_rep: $ldif_rep, \nrootDN: $rootDN, \nPort: $newport, \nNewname: $newname\n",3);
- printTrace("\nLIB_PATH: $LIB_PATH",4);
-
- if (!(-d $serverHome)) {
- printMsg("\n$serverHome doesn't exist\n");
- exit(1);
- }
- if (!(-d $oldHome)) {
- printMsg("\n$oldHome doesn't exist\n");
- exit(1);
- }
-
- if ($olddatadir && !(-d $olddatadir)) {
- print("\n$olddatadir doesn't exist\n");
- exit(1);
- }
-
-
-%HashParametersName = ();
-
-# The following hash displays only general server parameters to migrate under cn=config
-%GeneralSrvParamToMigrate = (
- 'nsslapd-accesscontrol'=> '\n',
- 'nsslapd-errorlog-logging-enabled'=> '\n',
- 'nsslapd-accesslog-logging-enabled'=> '\n',
- 'nsslapd-auditlog-logging-enabled'=> '\n',
- 'nsslapd-accesslog-level'=> '\n',
- 'nsslapd-accesslog-logbuffering'=> '\n',
- 'nsslapd-accesslog-logexpirationtime'=> '\n',
- 'nsslapd-accesslog-logexpirationtimeunit'=> '\n',
- 'nsslapd-accesslog-logmaxdiskspace'=> '\n',
- 'nsslapd-accesslog-logminfreediskspace'=> '\n',
- 'nsslapd-accesslog-logrotationtime'=> '\n',
- 'nsslapd-accesslog-logrotationtimeunit'=> '\n',
- 'nsslapd-accesslog-maxlogsize'=> '\n',
- 'nsslapd-accesslog-maxLogsPerDir'=> '\n',
- 'nsslapd-attribute-name-exceptions'=> '\n',
- 'nsslapd-auditlog-logexpirationtime'=> '\n',
- 'nsslapd-auditlog-logexpirationtimeunit'=> '\n',
- 'nsslapd-auditlog-logmaxdiskspace'=> '\n',
- 'nsslapd-auditlog-logminfreediskspace'=> '\n',
- 'nsslapd-auditlog-logrotationtime'=> '\n',
- 'nsslapd-auditlog-logrotationtimeunit'=> '\n',
- 'nsslapd-auditlog-maxlogsize'=> '\n',
- 'nsslapd-auditlog-maxLogsPerDir'=> '\n',
- 'nsslapd-certmap-basedn'=> '\n',
- 'nsslapd-ds4-compatible-schema'=> '\n',
- 'nsslapd-enquote-sup-oc'=> '\n',
- 'nsslapd-errorlog-level'=> '\n',
- 'nsslapd-errorlog-logexpirationtime'=> '\n',
- 'nsslapd-errorlog-logexpirationtimeunit'=> '\n',
- 'nsslapd-errorlog-logmaxdiskspace'=> '\n',
- 'nsslapd-errorlog-logminfreediskspace'=> '\n',
- 'nsslapd-errorlog-logrotationtime'=> '\n',
- 'nsslapd-errorlog-logrotationtimeunit'=> '\n',
- 'nsslapd-errorlog-maxlogsize'=> '\n',
- 'nsslapd-errorlog-maxlogsperdir'=> '\n',
- 'nsslapd-groupevalnestlevel'=> '\n',
- 'nsslapd-idletimeout'=> '\n',
- 'nsslapd-ioblocktimeout'=> '\n',
- 'nsslapd-lastmod'=> '\n',
- 'nsslapd-listenhost'=> '\n',
- 'nsslapd-maxdescriptors'=> '\n',
- 'nsslapd-nagle'=> '\n',
- 'nsslapd-readonly'=> '\n',
- 'nsslapd-referralmode'=> '\n',
- 'nsslapd-plugin-depends-on-name'=> '\n',
- 'nsslapd-plugin-depends-on-type'=> '\n',
- 'nsslapd-referral'=> '\n',
- 'nsslapd-reservedescriptors'=> '\n',
- 'nsslapd-rootpwstoragescheme'=> '\n',
- 'nsslapd-schemacheck'=> '\n',
- 'nsslapd-secureport'=> '\n',
- 'nsslapd-security'=> '\n',
- 'nsslapd-sizelimit'=> '\n',
- 'nsslapd-ssl3ciphers'=> '\n',
- 'nsslapd-timelimit'=> '\n',
- 'passwordchange'=> '\n',
- 'passwordchecksyntax'=> '\n',
- 'passwordexp'=> '\n',
- 'passwordhistory'=> '\n',
- 'passwordinhistory'=> '\n',
- 'passwordlockout'=> '\n',
- 'passwordlockoutduration'=> '\n',
- 'passwordmaxage'=> '\n',
- 'passwordmaxfailure'=> '\n',
- 'passwordminage'=> '\n',
- 'passwordminlength'=> '\n',
- 'passwordmustchange'=> '\n',
- 'passwordresetfailurecount' => '\n',
- 'passwordstoragescheme' => '\n',
- 'passwordunlock' => '\n',
- 'passwordwarning' => '\n'
-);
-
-# the following hash displays global parameters related to database stored under cn=config,cn=ldbm database,cn=plugins,cn=config
-%GlobalConfigLDBMparamToMigrate = (
- 'nsslapd-allidsthreshold' => '\n',
- 'nsslapd-lookthroughlimit' => '\n',
- 'nsslapd-mode' => '\n',
- 'nsslapd-dbcachesize' => '\n',
- 'nsslapd-cache-autosize' => '\n',
- 'nsslapd-cache-autosize-split' => '\n',
- 'nsslapd-db-transaction-logging' => '\n',
- 'nsslapd-import-cachesize' => '\n'
-);
-
-# the following hash displays specific parameters to each backends and stored under cn=DBname,cn=ldbm database,cn=plugins,cn=config
-%LDBMparamToMigrate = (
- 'nsslapd-cachesize' => '\n',
- 'nsslapd-cachememsize' => '\n',
- 'nsslapd-readonly' => '\n',
- 'nsslapd-require-index' => '\n'
-);
-
-
-%ChainingConfigParams = (
- 'nsactivechainingcomponents' => '\n',
- 'nstransmittedcontrols' => '\n'
- );
-
-%ChainingDefaultInstanceConfigParams = (
- 'nsabandonedsearchcheckinterval' => '\n',
- 'nsbindconnectionslimit' => '\n',
- 'nsbindtimeout' => '\n',
- 'nsbindretrylimit' => '\n',
- 'nshoplimit' => '\n',
- 'nsmaxresponsedelay' => '\n',
- 'nsmaxtestresponsedelay' => '\n',
- 'nschecklocalaci' => '\n',
- 'nsconcurrentbindlimit' => '\n',
- 'nsconcurrentoperationslimit' => '\n',
- 'nsconnectionlife' => '\n',
- 'nsoperationconnectionslimit' => '\n',
- 'nsproxiedauthorization' => '\n',
- 'nsreferralonscopedsearch' => '\n',
- 'nsslapd-sizelimit' => '\n',
- 'nsslapd-timelimit' => '\n'
-);
-
-%changelog5params = (
- 'nsslapd-changelogmaxage' => '\n',
- 'nsslapd-changelogmaxentries' => '\n'
- );
-
-@SNMPparams = (
- 'nssnmpenabled',
- 'nssnmporganization',
- 'nssnmplocation',
- 'nssnmpcontact',
- 'nssnmpdescription',
- 'nssnmpmasterhost',
- 'nssnmpmasterport',
- 'nssnmpenabled',
- 'aci'
- );
-
-%stdIncludes = (
- "." => "\n",
- ".." => "\n",
- "30ns-common.ldif " => "\n",
- "50ns-mail.ldif " => "\n",
- "50ns-news.ldif" => "\n",
- "50iplanet-servicemgt.ldif"=> "\n",
- "50netscape-servicemgt.ldif"=> "\n",
- "50ns-mcd-browser.ldif" => "\n",
- "50ns-proxy.ldif" => "\n",
- "00core.ldif" => "\n",
- "50ns-admin.ldif" => "\n",
- "50ns-mcd-config.ldif " => "\n",
- "50ns-value.ldif" => "\n",
- "05rfc2247.ldif" => "\n",
- "50ns-calendar.ldif" => "\n",
- "50ns-mcd-li.ldif" => "\n",
- "50ns-wcal.ldif" => "\n",
- "05rfc2927.ldif" => "\n",
- "50ns-certificate.ldif" => "\n",
- "50ns-mcd-mail.ldif" => "\n",
- "50ns-web.ldif" => "\n",
- "10rfc2307.ldif" => "\n",
- "50ns-compass.ldif" => "\n",
- "50ns-media.ldif" => "\n",
- "20subscriber.ldif" => "\n",
- "50ns-delegated-admin.ldif"=> "\n",
- "50ns-mlm.ldif" => "\n",
- "25java-object.ldif" => "\n",
- "50ns-directory.ldif" => "\n",
- "50ns-msg.ldif" => "\n",
- "28pilot.ldif" => "\n",
- "50ns-legacy.ldif" => "\n",
- "50ns-netshare.ldif" => "\n"
-);
-
-
-# Backends migrated (Backend CN attribute value)
-@BACKENDS = () ;
-# All pairs of suffix-backend are registered in this hashtable
-%oldBackends = () ;
-
-#store the backend instances to migrate
-@LDBM_backend_instances = ();
-
-#store the mapping tree
-@Mapping_tree_entries = ();
-
-#store the suffix and the associated chaining backend
-%oldChainingBackends = ();
-
-#store the multiplexor bind entries to migrate
-%MultiplexorBindDNEntriesToMigrate = ();
-
-#store the Replica bind DN entries to migrate
-%ReplicaBindDNEntriesToMigrate = ();
-
-# list of standard plugins
-%stdPlugins = (
- "7-bit check" => "\n",
- "acl plugin" => "\n",
- "acl preoperation" => "\n",
- "binary syntax" => "\n",
- "case exact string syntax" => "\n",
- "case ignore string syntax" => "\n",
- "chaining database" => "\n",
- "class of service" => "\n",
- "country string syntax" => "\n",
- "distinguished name syntax" => "\n",
- "generalized time syntax" => "\n",
- "integer syntax" => "\n",
- "internationalization plugin" => "\n",
- "ldbm database" => "\n",
- "legacy replication plugin" => "\n",
- "multimaster replication plugin" => "\n",
- "octet string syntax" => "\n",
- "clear" => "\n",
- "crypt" => "\n",
- "ns-mta-md5" => "\n",
- "sha" => "\n",
- "ssha" => "\n",
- "postal address syntax" => "\n",
- "referential integrity postoperation" => "\n",
- "retro changelog plugin" => "\n",
- "roles plugin" => "\n",
- "telephone syntax" => "\n",
- "uid uniqueness" => "\n",
- "uri syntax" => "\n"
- );
-
-# list of indexes that have disappeared from the new schema compared to 5.0
-%deniedIndexes = (
- 'dncomp' => "\n"
-);
-
-@default_indexes = ();
-@indexes = ();
-
-# list of user added Plugin's. In 7.0, they 'll need to be recompiled
-@badPlugins = () ;
-
-@pluginAttrs = (
- "objectclass",
- "cn",
- "nsslapd-pluginpath",
- "nsslapd-plugininitfunc",
- "nsslapd-plugintype",
- "nsslapd-pluginenabled",
- "nsslapd-plugin-depends-on-type",
- "nsslapd-pluginid",
- "nsslapd-pluginversion",
- "nsslapd-pluginvendor"
- );
-
-@nsds5replicaAttrs = (
- 'objectclass',
- 'nsDS5ReplicaRoot',
- 'nsDS5ReplicaType',
- 'nsDS5ReplicaLegacyConsumer',
- 'nsDS5flags',
- 'nsDS5ReplicaId',
- 'nsDS5ReplicaPurgeDelay',
- 'nsDS5ReplicaBinddn',
- 'cn',
- 'nsDS5ReplicaReferral'
- );
-
-# array of replicas to migrate
-@new6replicas = ();
-
-# array of replication agreements to migrate
-@replicationAgreements = ();
-
-# compare LDIF standard config files with standard ones
-CompareStdConfigFiles() ;
-die "\n\n The version of product you want to migrate is not a 5.x Directory Server\n" unless ($oldVersion == 5) ;
-
-# Shutdown the legacy Directory instance
-printTrace("\nShutdown the legacy Directory Server instance: ${oldHome}",0);
-&stopServer($oldDir, 'slapd-'.$oldname);
-
-# get the hostname of the new LDAP server
-my $LDAPservername = &getLDAPservername();
-
-# get the uid and gid of the 7.0 slapd user
-($localuser, $newuid, $newgid) = getuid_gid();
-# get the uid and gid of the 5.x slapd user
-($oldlocaluser, $olduid, $oldgid) = getolduid_gid();
-printTrace("\n7.0 localuser: $localuser, uid: $newuid, gid: $newgid",2);
-printTrace("\n5.x localuser: $oldlocaluser, uid: $olduid, gid: $oldgid",2);
-
-# backup 7.0 configuration files in <6server_root>/slapd-instancename/config
-printTrace("\nBackup $serverHome${PATHSEP}config on $serverHome${PATHSEP}config_backup ...",0);
-&backupConfigFiles();
-
-# migrate the schema (need to stop and start the 7.0 server)
-printTrace("\nMigrate the schema...",0);
-MigrateSchema();
-
-# start the server unless it is already started
-&startServer() unless (isDirectoryAlive());
-
-############### Connect to the 7.0 LDAP Directory Server ######################
-$ENV{"$LIB_PATH"} = $new_libpath;
-
-die "\n Migration aborted. Make sure your old and new Directory Server are installed on the same machine \n" if ( $LDAPservername == -1 );
-$conn = new Mozilla::LDAP::Conn($LDAPservername,$newport,$rootDN,$rootpwd) or die "\n Unable to contact the $Version.$Minor LDAP server: $LDAPservername\n";
-
-# Cconnection to 7.0 LDAP server is successful !
-printTrace("\nConnected to $Version.$Minor LDAP server",0) ;
-
-# Parse the main configuration file: dse.ldif
-printTrace("\n\nParse the old DSE ldif file: $oldDSEldif *****",0, 1);
-printTrace("\nThis may take a while ...\n",0);
-&MigrateDSEldif();
-
-#migrate LDBM backend instances
-printTrace("\n\nMigrate LDBM backend instances...",0,1);
-&migrateLDBM_backend_instances();
-
-#migrate mapping tree entries
-printTrace("\n\nMigrate mapping tree...",0,1);
-&migrateMappingTree();
-
-#migrate default indexes
-printTrace("\n\nMigrate default indexes...",0,1);
-migrateDefaultIndexes();
-
-#migrate indexes
-printTrace("\n\nMigrate indexes...",0,1);
-migrateIndexes();
-
-#migrate replicas
-printTrace("\n\nMigrate replicas...",0,1);
-&MigrateNSDS5_replica();
-
-#migrate replication agreements
-printTrace("\n\nMigrate replication agreements...",0,1);
-&MigrateNSDS_replication_agreement();
-
-#migrate key/cert databases
-printTrace("\n\nMigrate key/cert databases...",0,1);
-&MigrateSSL();
-
-# migrate certmap.conf
-printTrace("\n\nMigrate Certmap.conf...",0,1);
-&MigrateCertmap() ;
-
-################## Close the connection to 7.0 LDAP Server #####################
-printTrace("\n\n***** Close the LDAP connection to the new Directory Server instance ***** ",0);
-$conn->close;
-
-
-################## stop the new instance and Export/Import the data, restart the server ##################
-if (@BACKENDS) {
- &stopServer($root,'slapd-'.$newname);
- if ($olddatadir) {
- printTrace("\nData already contained in $olddatadir...\n",0,1) ;
- $ldif_rep = "$olddatadir${PATHSEP}";
- } else {
- printTrace("\nData processing...\n",0,1) ;
- # migrate data for each backend: 5.x -> LDIF files
- &manydb2Ldif($ldif_rep);
- }
-
- # migrate LDIF data to the new database: LDIF -> New
- &manyLdif2db($ldif_rep);
- &migrateChangelog();
- printTrace("\n***** Migrate ReplicaBindDN entries...\n",0,1);
- &importReplicaBindDNEntries();
- printTrace("\n***** Migrate MultiplexorBindDN entries...\n",0,1);
- &importMultiplexorBindDNEntries();
- &startServer() unless (isDirectoryAlive());
-}
-else {
- printTrace("\nINFORMATION - There are no non-standard or non-already existing suffixes to migrate\n",0);
- &migrateChangelog();
- printTrace("\n***** Migrate ReplicaBindDN entries...\n",0,1);
- &importReplicaBindDNEntries();
- printTrace("\n***** Migrate MultiplexorBindDN entries...\n",0,1);
- &importMultiplexorBindDNEntries();
-}
-
-printMsg("\n\n ****** End of migration ******\n\n");
-
-close(LOGFILE);
-
-
-###########################################################################################
-# get input users
-sub getParameters {
- my $exit = 0 ;
- my $i = 0;
- my $pwdfile= "";
-
- while ($i <= $#ARGV) {
- if ( "$ARGV[$i]" eq "-D" ) { # directory manager
- if (! $rootDN) {
- $rootDN = $ARGV[++$i] ;
- }
- else {
- &usage() ;
- exit(1);
- }
- } elsif ("$ARGV[$i]" eq "-w") { # password
- if (! $rootpwd) {
- $rootpwd = $ARGV[++$i] ;
- }
- else {
- &usage() ;
- exit(1);
- }
- } elsif ("$ARGV[$i]" eq "-j") { # password file
- if (! $pwdfile) {
- $pwdfile = $ARGV[++$i] ;
- }
- else {
- &usage() ;
- exit(1);
- }
- } elsif ("$ARGV[$i]" eq "-o") { # old instance path
- if (! $oldHome ) {
- $oldHome = $ARGV[++$i] ;
- grep { s@\\@/@g } $oldHome if $isNT ;
- if ($oldHome =~ /[\"]?(.*)?[\"]?/) { $oldHome = $1 ; }
- if ($oldHome =~ m@^(.*)/([^-/]*)-([^/]*)[/]?$@) {
- $oldDir = $1 ;
- $type = $2 ;
- $oldname = $3 ;
- if ($isNT) {
- $oldDir = lc($oldDir) ;
- $type = lc($type) ;
- $oldname = lc($oldname) ;
- $oldHome = lc($oldHome) ;
- grep { s@/@\\@g } $oldDir ;
- grep { s@/@\\@g } $oldHome ;
- }
- }
- else {
- print("\nThe old instance path is not correct. It must be like slapd-instancename");
- &usage();
- exit(1);
- }
- }
- else {
- &usage() ;
- exit(1);
- }
- } elsif ("$ARGV[$i]" eq "-n") { # new instance path
- if (! $serverHome ) {
- $serverHome = $ARGV[++$i] ;
- grep { s@\\@/@g } $root if $isNT ;
- grep { s@\\@/@g } $serverHome if $isNT ;
- if ($serverHome =~ /[\"]?(.*)?[\"]?/) { $serverHome = $1 ; }
- if ($serverHome =~ m@^(.*?)/?([^/-]*)-([^/]*)[/]?$@) {
- $root = $1 if ($1);
- $type = $2 ;
- $newname = $3 ;
- if ($isNT) {
- $root = lc($root) ;
- $type = lc($type) ;
- $newname = lc($newname) ;
- $serverHome = lc($serverHome) ;
- grep { s@/@\\@g } $root ;
- grep { s@/@\\@g } $serverHome ;
- }
- }
- else {
- print("\nThe new instance path is not correct. It must be like slapd-instancename");
- &usage();
- exit(1);
- }
- }
- else {
- &usage() ;
- exit(1);
- }
- } elsif ("$ARGV[$i]" eq "-p") { # new DS port
- if (! $newport ) {
- $newport = $ARGV[++$i] ;
- }
- else {
- &usage() ;
- exit(1);
- }
- } elsif ("$ARGV[$i]" eq "-d") { # old instance LDIF data dir
- if (! $olddatadir ) {
- $olddatadir = $ARGV[++$i] ;
- }
- else {
- &usage() ;
- exit(1);
- }
- } elsif ("$ARGV[$i]" eq "-v") { # old version
- if (! $oldversionstr ) {
- $oldversionstr = $ARGV[++$i] ;
- }
- else {
- &usage() ;
- exit(1);
- }
- } elsif ("$ARGV[$i]" eq "-t") { # TRACELEVEL
- my $value = $ARGV[++$i] ;
- if ($value =~ /[0-3]/) {
- $TRACELEVEL = $value ;
- }
- else {
- print("\nThe tracelevel must belong to 0..3 interval");
- &usage();
- exit();
- }
- } elsif ("$ARGV[$i]" eq "-noinput") { # no user interventions during processing
- $NO_INPUT_USER = 1 ;
- } elsif ("$ARGV[$i]" eq "-L") { # migration logfile
- $LogFileReport = $ARGV[++$i] ;
- }
- else {
- print("\nThe option $ARGV[$i] is not recognized");
- &usage() ;
- exit(1);
- }
- $i++;
- }
- if (! $rootDN) {
- print("\nThe rootDN is missing");
- $exit = 1;
- }
- if ($pwdfile ne "") {
- # Open file and get the password
- unless (open (RPASS, $pwfile)) {
- die "Error, cannot open password file $passwdfile\n";
- }
- $rootpwd = <RPASS>;
- chomp($rootpwd);
- close(RPASS);
- } elsif ($rootpwd eq "-"){
- # Read the password from terminal
- die "The '-w -' option requires an extension library (Term::ReadKey) which is not\n",
- "part of the standard perl distribution. If you want to use it, you must\n",
- "download and install the module. You can find it at\n",
- "http://www.perl.com/CPAN/CPAN.html\n";
- # Remove the previous line and uncomment the following 6 lines once you have installed Term::ReadKey module.
-# use Term::ReadKey;
-# print "Bind Password: ";
-# ReadMode('noecho');
-# $rootpwd = ReadLine(0);
-# chomp($rootpwd);
-# ReadMode('normal');
- }
- if (! $rootpwd) {
- print("\nThe rootpwd is missing");
- $exit = 1 ;
- }
- if (! $newport) {
- print("\nThe port is missing");
- $exit = 1;
- }
- if (! $serverHome) {
- print("\nThe new instance path is missing");
- $exit = 1;
- }
- if (! $oldHome) {
- print("\nThe old instance path is missing");
- $exit = 1;
- }
- if ((! $LogFileReport) && $serverHome) {
- ($sec, $min, $hour, $dd, $mm, $yy) = &GetTime();
- $LogFileReport = "${serverHome}${PATHSEP}logs${PATHSEP}Migration_${dd}${mm}${yy}_${hour}${min}${sec}.log";
- }
- if ($exit) {
- &usage() ;
- exit(1);
- }
-
-}
-
-###################################################################################################
-
-sub MigrateSchema{
- my $FilesChanged = "";
- my $AllDiffs = "";
- my $NoChanges = "" ;
- my $lineToBegin = 0 ;
- opendir(SCHEMADIR, $oldSchemaDir) or
- die "Error: could not open migrated config dir $oldSchemaDir: $!";
-
- foreach $file (readdir(SCHEMADIR)) {
- if (! exists($stdIncludes{lc($file)})) {
- my $newSchemaFile = $schemaDir . $file;
- if (-f $newSchemaFile ) {
- # The ldif file already exists. Make a diff and warn the user if different.
- if (diff($newSchemaFile, $oldSchemaDir.$file)) {
- &stopServer($root,'slapd-'.$newname) if (isDirectoryAlive());
- $AllDiffs .= "\n$file";
- copyBinFile("$oldSchemaDir$file", $newSchemaFile);
- }
- }
- else {
- &stopServer($root,'slapd-'.$newname) if (isDirectoryAlive());
- $AllDiffs .= "\n$file";
- copyBinFile("$oldSchemaDir$file", $newSchemaFile);
- }
- }
- }
- closedir(SCHEMADIR);
- if ($AllDiffs) {
- printMsg("\n\n***********************************************************************");
- printMsg("\nThe following LDIF files have been migrated:");
- printMsg("$AllDiffs");
- printMsg("\n*************************************************************************\n\n");
- }
- &startServer() if (! isDirectoryAlive());
-}
-
-
-###################################################################################################
-# This subroutine is used to parse the dse.ldif file and call specific routines to act with entries
-sub MigrateDSEldif {
- printTrace("\nMigrate DSE entries...",1);
- my $tempoAlreadyDone = 0;
- open( DSELDIF, "< $oldDSEldif" ) || die "Can't open $oldDSEldif: $!: ";
- my $in = new Mozilla::LDAP::LDIF(*DSELDIF) ;
- while ($entry = readOneEntry $in) {
- $typeOfEntry = getTypeOfEntry($entry);
- SWITCH: {
- if ($typeOfEntry eq "LDBM_BACKEND_INSTANCE"){
- parseLDBM_backend_instance($entry);
- last SWITCH;
- }
- if ($typeOfEntry eq "MAPPING_TREE"){
- parseMapping_tree($entry);
- last SWITCH;
- }
- if ($typeOfEntry eq "DEFAULT_INDEX"){
- parseDefaultIndex($entry);
- last SWITCH;
- }
- if ($typeOfEntry eq "INDEX"){
- parseIndex($entry);
- last SWITCH;
- }
- if ($typeOfEntry eq "STANDARD_PLUGIN"){
- migrateStdPlugin($entry);
- last SWITCH;
- }
- if ($typeOfEntry eq "CONFIG_NODE"){
- migrateConfig_Node($entry);
- last SWITCH;
- }
- if ($typeOfEntry eq "CONFIG_LDBM_DATABASE"){
- migrateConfig_LDBM_database($entry);
- last SWITCH;
- }
- if ($typeOfEntry eq "CHAINING_BACKEND_CONFIG"){
- migrateChainingBE_config($entry);
- last SWITCH;
- }
- if ($typeOfEntry eq "CHAINING_BACKEND_INSTANCE"){
- migrateChainingBE_instance($entry);
- last SWITCH;
- }
- if ($typeOfEntry eq "NSDS5_REPLICA"){
- parseNSDS5_replica($entry);
- last SWITCH;
- }
- if ($typeOfEntry eq "NSDS_REPLICATION_AGREEMENT"){
- parseNSDS_replication_agreement($entry);
- last SWITCH;
- }
- if ($typeOfEntry eq "CHANGELOG5"){
- migrateChangelog5($entry);
- last SWITCH;
- }
- if ($typeOfEntry eq "REPLICATION"){
- migrateReplication($entry);
- last SWITCH;
- }
- if ($typeOfEntry eq "SECURITY"){
- migrateSecurity($entry);
- last SWITCH;
- }
- if ($typeOfEntry eq "SNMP"){
- migrateSNMP($entry);
- last SWITCH;
- }
- }
-
- }
- close(DSELDIF);
-}
-
-#############################################################################
-# returns the "type of an entry". If the entry is not to be migrated its type is "NOT_MIGRATED_TYPE"
-
-sub getTypeOfEntry{
- my $entry = shift;
- my $DN = $entry->getDN(1) ; # 1 is to normalize the returned DN
- if (($DN =~ /cn=ldbm database,cn=plugins,cn=config$/i) && (isObjectclass($entry,"nsBackendInstance"))) {
- return "LDBM_BACKEND_INSTANCE";
- }
- if (($DN =~ /cn=mapping tree,cn=config$/i) && (isObjectclass($entry,"nsMappingTree"))) {
- return "MAPPING_TREE";
- }
- if (($DN =~ /cn=default indexes,cn=config,cn=ldbm database,cn=plugins,cn=config$/i) && (isObjectclass($entry,"nsIndex"))) {
- return "DEFAULT_INDEX";
- }
- if (isObjectclass($entry,"nsIndex")) {
- return "INDEX";
- }
- if ((isObjectclass($entry,"nsSlapdPlugin")) && (isStdPlugin($entry))) {
- return "STANDARD_PLUGIN";
- }
- if ($DN =~ /^cn=config$/i) {
- return "CONFIG_NODE";
- }
- if ($DN =~ /^cn=config,cn=ldbm database,cn=plugins,cn=config$/i) {
- return "CONFIG_LDBM_DATABASE";
- }
- if (($DN =~ /^cn=config,cn=chaining database,cn=plugins,cn=config$/i) || ($DN =~ /^cn=default instance config,cn=chaining database,cn=plugins,cn=config$/i)){
- return "CHAINING_BACKEND_CONFIG";
- }
- if (($DN =~ /cn=chaining database,cn=plugins,cn=config$/i) && (isObjectclass($entry,"nsBackendInstance"))) {
- return "CHAINING_BACKEND_INSTANCE";
- }
- if (isObjectclass($entry,"nsDS5Replica")) {
- return "NSDS5_REPLICA";
- }
- if (isObjectclass($entry,"nsDS5ReplicationAgreement")) {
- return "NSDS_REPLICATION_AGREEMENT";
- }
- if ($DN =~ /^cn=changelog5,cn=config$/i) {
- return "CHANGELOG5";
- }
- if (($DN =~ /cn=replication,cn=config$/i) && ($DN !~ /^cn=replication,cn=config$/i)) {
- return "REPLICATION";
- }
- if ($DN =~ /cn=encryption,cn=config$/i) {
- return "SECURITY";
- }
- if ($DN =~ /^cn=SNMP,cn=config$/i) {
- return "SNMP";
- }
- return "NOT_MIGRATED_TYPE";
-}
-
-#############################################################################
-
-
-
-#############################################################################
-# returns 1 if the objectclass given in parameter is present in the objectclasses values of the entry
-# given in parameter, 0 else
-
-sub isObjectclass {
- my $entry = shift;
- my $objectclass = shift;
- return ($entry->hasValue("objectclass",$objectclass,1));
-}
-
-#############################################################################
-
-sub isStdPlugin {
- my $entry = shift;
- my $CN = $entry->{cn}[0];
- if (isObjectclass($entry,"nsSlapdPlugin")) {
- return 1 if ($stdPlugins{lc($CN)});
- }
- return 0;
-}
-
-
-#############################################################################
-
-sub alreadyExistsInNew{
- my $entry = shift;
- my $mustExist = shift;
- my $DN = $entry->getDN(1); # 1 to normalize the DN
- # We have a name change of "uid uniqueness" plugin in DS6.x
- # to "attribute uniqueness"
- $DN =~ s/uid\ uniqueness/attribute\ uniqueness/ if ($DN =~ /uid\ uniqueness/);
- return searchEntry($DN, $mustExist);
-}
-
-#############################################################################
-sub searchEntry {
- my $DN = shift;
- my $mustExist = shift;
- my $res = $conn->search($DN, "base", "objectclass=*");
- my $cpt = 5;
- if ($res) {
- return $res;
- }
- else {
- my $errorCode = $conn->getErrorCode();
- while (($errorCode eq $LDAP_SERVER_UNREACHABLE) && cpt && (! $res)) {
- printMsg("\ntry to reconnect to search $DN");
- $conn = new Mozilla::LDAP::Conn($LDAPservername,$newport,$rootDN,$rootpwd) or die "\n Unable to contact the $Version.$Minor LDAP server: $LDAPservername\n";
- $res = $conn->search($DN, "base", "objectclass=*");
- $errorCode = $conn->getErrorCode();
- $cpt--;
- }
- if ($res){
- return $res ;
- }
- elsif (($errorCode eq $LDAP_SERVER_UNREACHABLE) || ($mustExist)) {
- my $msg = $conn->getErrorString();
- printMsg("\n\n*** Failed to search: $DN");
- printMsg("\n*** Error Msg: $msg, Error code: $errorCode");
- }
- return 0;
- }
-}
-
-
-#############################################################################
-
-sub addEntryToNew{
- my $entry = shift;
- my $typeOfEntry = shift;
- my $trace = shift;
- my $res = $conn->add($entry);
- my $DN = $entry->getDN(1);
- my $cpt = 5;
- if ($res) {
- printTrace("\n$typeOfEntry - Add successfull: $DN",$trace);
- return 1;
- }
- else {
- my $errorCode = $conn->getErrorCode();
- while (($errorCode eq $LDAP_SERVER_UNREACHABLE) && cpt && (! $res)) {
- printMsg("\ntry to reconnect to add $DN");
- $conn = new Mozilla::LDAP::Conn($LDAPservername,$newport,$rootDN,$rootpwd) or die "\n Unable to contact the $Version.$Minor LDAP server: $LDAPservername\n";
- $res = $conn->add($entry);
- $errorCode = $conn->getErrorCode();
- $cpt--;
- }
- if ($res){
- printTrace("\n$typeOfEntry - Add successfull: $DN",$trace);
- return 1;
- }
- else {
- my $msg = $conn->getErrorString();
- printMsg("\n\n*** $typeOfEntry: Add Failed: $DN");
- printMsg("\n*** Error Msg: $msg, Error code: $errorCode");
- return 0;
- }
- }
-}
-
-#############################################################################
-
-sub updateEntry{
- my $entry = shift;
- my $typeOfEntry = shift;
- my $CHECK = shift;
- my $trace = shift;
- my $cpt = 5;
- if ($CHECK) {
- if (! hasChanged($entry, $typeOfEntry)) {
- return 1;
- }
- }
- my $res = $conn->update($entry);
- my $DN = $entry->getDN(1);
- if ($res) {
- printTrace("\n$typeOfEntry - Update successfull: $DN",$trace);
- return 1 ;
- }
- else {
- my $errorCode = $conn->getErrorCode();
- while (($errorCode eq $LDAP_SERVER_UNREACHABLE) && cpt && (! $res)) {
- printMsg("\ntry to reconnect to update $DN");
- $conn = new Mozilla::LDAP::Conn($LDAPservername,$newport,$rootDN,$rootpwd) or die "\n Unable to contact the $Version.$Minor LDAP server: $LDAPservername\n";
- $res = $conn->update($entry);
- $errorCode = $conn->getErrorCode();
- $cpt--;
- }
- if ($res){
- printTrace("\n$typeOfEntry - Update successfull: $DN",$trace);
- return 1;
- }
- else {
- my $msg = $conn->getErrorString();
- printMsg("\n\n*** $typeOfEntry - Update Failed: $DN");
- printMsg("\n*** Error Msg: $msg, Error code: $errorCode");
- return 0;
- }
- }
-}
-
-
-#############################################################################
-# returns 1 if the entry to migrate and the current entry are different one another
-
-sub hasChanged {
- my $entry = shift;
- my $typeOfEntry = shift;
- my $DN = $entry->getDN(1);
- my $newEntry = searchEntry($DN,1);
- return 1 if (! $newEntry); # we shoudn't be in that case ...
- # do the stuff to check wether the entry has changed or not given its type
- if (($typeOfEntry eq "DEFAULT_INDEX") || ($typeOfEntry eq "INDEX")){
- my @indexTypes = $entry->getValues("nsIndexType");
- my @newIndexTypes = $newEntry->getValues("nsIndexType");
- my @nsmatchingrules = $entry->getValues("nsmatchingrule");
- my @newMatchingRules = $newEntry->getValues("nsmatchingrule");
- return 1 if (Diffs(\@indexTypes, \@newIndexTypes));
- return 1 if (Diffs(\@nsmatchingrules,\@newMatchingRules));
- return 0;
- }
- if ($typeOfEntry eq "CHANGELOG5"){
- printTrace("\nCheck wether changelog has changed or not",3);
- my @params = keys(%changelog5params);
- foreach $param (@params){
- my @values = $entry->getValues($param);
- my @newValues = $newEntry->getValues($param);
- return 1 if (Diffs(\@values,\@newValues));
- }
- return 0;
- }
- if ($typeOfEntry eq "SNMP"){
- foreach $param (@SNMPparams){
- my @values = $entry->getValues($param);
- my @newValues = $newEntry->getValues($param);
- return 1 if (Diffs(\@values,\@newValues));
- }
- return 0;
- }
- # we don't know how to compare such type of entry => just return 1
- return 1 ;
-}
-
-sub isAsystemIndex {
- my $index = shift;
- return ($index->hasValue("nsSystemIndex","true",1));
-}
-
-
-sub updatePathInPluginArgs {
- my $plugin = shift;
- my $argNum = 0;
- my $argPrefix = "nsslapd-pluginarg";
- my $cont = 1;
- my $Unix_oldDir = ${oldDir} ;
- my $Unix_root = ${root} ;
- grep { s@\\@/@g } $Unix_oldDir if $isNT;
- grep { s@\\@/@g } $Unix_root if $isNT;
- while ($cont) {
- my $arg = $argPrefix . $argNum ;
- if ($plugin->exists($arg)) {
- $_ = $plugin->{$arg}[0] ;
- s@$Unix_oldDir@$Unix_root@ig ;
- s/$type-$oldname/$type-$newname/ig ;
- $plugin->setValues($arg, $_) ;
- }
- else {
- $cont = 0 ;
- }
- $argNum++;
- }
- return $plugin;
-}
-
-
-sub Diffs {
- my $valuesToMigrate = shift;
- my $currentValues = shift;
- return 1 if (getDiff(\@{$valuesToMigrate},\@{$currentValues}));
- return 1 if (getDiff(\@{$currentValues},\@{$valuesToMigrate}));
- return 0 ;
-}
-
-sub getDiff {
- # we get references to arrays
- my $elements = shift ;
- my $existing_elements = shift ;
- my %count = () ;
- my %countEE = () ;
- @diff = () ;
- foreach $e (@{$elements}, @{$existing_elements}) { $count{$e}++ ;}
- foreach $e (@{existing_elements}) { $countEE{$e}++ ;}
- foreach $e (@{$elements}) {
- # if $e is only present in @$elements, we push it to the diff array
- if (($count{$e} == 1) && ($countEE{$e} == 0)) {
- push @diff, $e ;
- }
- }
- return @diff ;
-}
-
-sub registerSuffix_Backend {
- my $ldbmDatabase = shift;
- my $CN = $ldbmDatabase->{cn}[0];
- my $suffixArg = "nsslapd-suffix";
- my $suffix = $ldbmDatabase->{$suffixArg}[0];
- $oldBackends{$suffix} = $CN;
-}
-
-
-#############################################################################
-# #
-# #
-# #
-#############################################################################
-sub migrateLDBM_backend_instances {
- foreach $entry (@LDBM_backend_instances) {
- my $DN = $entry->getDN(1); # 1 is to normalize the DN
- my $CN = $entry->{cn}[0];
- my $expLdif;
- my $confirm = "No";
- my $dest = "$serverHome${PATHSEP}db_backup" ;
- my $newSlapdExecDir = "$root${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server";
-
- if ($DN =~/cn=netscaperoot,cn=ldbm database/i){
- printTrace("\n\n*** INFORMATION - NetscapeRoot is NOT migrated",0);
- }
- else {
- if(alreadyExistsInNew($entry)){
- printMsg("\n\n*** LDBM_BACKEND_INSTANCE - $DN already exists");
- printMsg("\n*** Migration will overwrite existing database");
- printMsg("\nDo you want to continue Yes/No [No] ?") ;
- my $answer = <STDIN> ;
- if ($answer =~ /y|yes/i) {
- printMsg("Do you want to export the existing data Yes/No [Yes] ?");
- my $answer = <STDIN> ;
- if (!($answer =~ /n|no/i)) {
- mkdir $dest, 0700 unless (-d $dest);
- $expLdif = "$dest${PATHSEP}$CN.ldif";
- while (!($confirm =~ /y|yes/i)) {
- printMsg("\nEnter the full pathname of the file [$expLdif]:") ;
- $answer = <STDIN> ;
- chomp($expLdif = $answer) unless ($answer eq "\n");
- printMsg("\nExisting data will be exported under $expLdif");
- printMsg("\nContinue Yes/No [No] ?");
- $confirm = <STDIN>;
- }
- $ENV{"$LIB_PATH"}=$new_libpath;
- chdir($newSlapdExecDir) or die "\nCould not change directory to $newSlapdExecDir: $!\n";
- printTrace("\nNow backing up database $CN in $expLdif\n",0);
- &stopServer($root,'slapd-'.$newname);
- &db2Ldif($expLdif, $CN, $serverHome);
- &startServer() unless (isDirectoryAlive());
- }
- push @BACKENDS, $CN;
- } else {
- printMsg("\n*** Migration will not update it");
- break;
- }
- } else {
- printTrace("\nWe should add the backend instance $DN",3);
- my $suffixarg = "nsslapd-suffix" ;
- my $suffixname= $entry->{$suffixarg}[0] ;
- my $newEntry = $conn->newEntry() ;
- $newEntry->setDN($DN);
- $newEntry->setValues("objectclass", "top", "extensibleObject", "nsBackendInstance" );
- $newEntry->setValues("cn", $CN );
- $newEntry->setValues($suffixarg, $suffixname);
- my @params = keys(%LDBMparamToMigrate);
- foreach $param (@params) {
- my @values = $entry->getValues($param);
- $newEntry->setValues($param, @values) if (@values);
- }
- if (addEntryToNew($newEntry, "LDBM_BACKEND_INSTANCE",1)) {
- push @BACKENDS, $CN;
- }
- }
- }
- }
-}
-
-sub parseLDBM_backend_instance {
- my $entry = shift;
- &registerSuffix_Backend($entry);
- push @LDBM_backend_instances, $entry;
-}
-
-#############################################################################
-sub migrateMappingTree {
- foreach $entry (@Mapping_tree_entries) {
- my $DN = $entry->getDN(1); # 1 si to normalize the DN
- if ($DN =~/cn=\"o=netscaperoot\",cn=mapping tree,cn=config/i){
- # DO NOTHING
- }
- else {
- if(alreadyExistsInNew($entry)){
- printMsg("\n\n*** MAPPING_TREE - $DN already exists");
- printMsg("\n*** Migration will not add the suffix");
- }
- else {
- addEntryToNew($entry, "MAPPING_TREE",1);
- }
- }
- }
-}
-
-
-sub parseMapping_tree{
- my $entry = shift;
- push @Mapping_tree_entries, $entry;
-}
-
-#############################################################################
-sub migrateDefaultIndexes {
- foreach $index (@default_indexes) {
- my $CN = $index->{cn}[0];
- my $newIndex ;
- if ((! isAsystemIndex($index)) && (! $deniedIndexes{lc($CN)})) {
- if ($newIndex = alreadyExistsInNew($index)) {
- if (! isAsystemIndex($newIndex)) {
- updateEntry($index, "DEFAULT_INDEX", 1, 2);
- }
- }
- else {
- addEntryToNew($index, "DEFAULT_INDEX", 2);
- }
- }
- }
-}
-
-
-sub parseDefaultIndex{
- my $index = shift;
- push @default_indexes, $index;
-}
-
-#############################################################################
-
-sub migrateIndexes {
- foreach $index (@indexes) {
- my $CN = $index->{cn}[0];
- my $newIndex;
- if ((! isAsystemIndex($index)) && (! $deniedIndexes{lc($CN)}) && (DN !~ /cn=netscaperoot,cn=index/i)){
- if ($newIndex = alreadyExistsInNew($index)) {
- if (! isAsystemIndex($newIndex)) {
- updateEntry($index, "INDEX", 1, 2);
- }
- }
- else {
- addEntryToNew($index, "INDEX", 2);
- }
- }
- }
-}
-
-sub parseIndex{
- my $index = shift;
- push @indexes, $index;
-}
-
-#############################################################################
-
-sub newLDIFplugin {
- my $currentPlugin = shift;
- my $DN = $currentPlugin->getDN(1);
- my $newPlugin = $conn->newEntry() ;
- $newPlugin->setDN($DN);
- foreach $Attr (@pluginAttrs) {
- my @values = $currentPlugin->getValues($Attr);
- $newPlugin->setValues($Attr, @values) if (@values);
- }
- return $newPlugin;
-}
-
-sub migrateStdPlugin{
- my $plugin = shift;
- my $DN = $plugin->getDN(1);
- my $pluginEnable = "nsslapd-pluginEnabled";
- my $argNum = 0;
- my $argPrefix = "nsslapd-pluginarg";
- my $currentPlugin ;
- if ($currentPlugin = alreadyExistsInNew($plugin, 1)) {
- $plugin = updatePathInPluginArgs($plugin);
- my $pluginEnableValue = $plugin->{$pluginEnable}[0];
- my $cont = 1;
- my $pluginHasChanged = 0;
- my $newPlugin = &newLDIFplugin($currentPlugin);
- if (! $currentPlugin->hasValue($pluginEnable,$pluginEnableValue,1)){
- $newPlugin->setValues($pluginEnable, $pluginEnableValue);
- $pluginHasChanged = 1 unless ($pluginHasChanged);
- }
- while($cont){
- my $arg = $argPrefix . $argNum ;
- if ($plugin->exists($arg)) {
- my @values = $plugin->getValues($arg);
- my $value = $values[0] ;
- $newPlugin->setValues($arg, $value) if (@values);
- if ($currentPlugin->exists($arg)) {
- if (! $currentPlugin->hasValue($arg,$value,1)) {
- $pluginHasChanged = 1 unless ($pluginHasChanged);
- }
- }
- else {
- $pluginHasChanged = 1 unless ($pluginHasChanged);
- }
- }
- else {
- if ($currentPlugin->exists($arg)) {
- # Just Warn the user. Do nothing.
- printTrace("\nCompared to the old instance, the current new plugin $DN belongs this attribute: $arg",2);
- }
- else {
- $cont = 0 ;
- }
- }
- $argNum++;
- }
- updateEntry($newPlugin, "STANDARD_PLUGIN", 0, 1) if ($pluginHasChanged);
- }
-}
-
-#############################################################################
-
-sub migrateConfig_Node{
- my $config_node = shift;
- my @params = keys(%GeneralSrvParamToMigrate);
- my $hasChanged = 0;
- my $newConfigNode;
- if ($newConfigNode = alreadyExistsInNew($config_node, 1)){
- foreach $param (@params) {
- if ($config_node->exists($param)){
- my @valuesToMigrate = $config_node->getValues($param);
- if (@valuesToMigrate){
- if ($newConfigNode->exists($param)){
- my @currentValues = $newConfigNode->getValues($param);
- if (Diffs(\@valuesToMigrate, \@currentValues)) {
- $newConfigNode->setValues($param, @valuesToMigrate);
- $hasChanged = 1 unless ($hasChanged);
- printTrace("\nParam to update: $param with value @valuesToMigrate",3);
- }
- }
- else {
- $newConfigNode->setValues($param, @valuesToMigrate);
- $hasChanged = 1 unless ($hasChanged);
- printTrace("\nParam to update: $param with value @valuesToMigrate",3);
- }
- }
- }
- }
- updateEntry($newConfigNode, "CONFIG_NODE", 0, 1) if ($hasChanged);
- }
-}
-
-#############################################################################
-
-sub migrateConfig_LDBM_database{
- my $config_ldbm = shift;
- my @params = keys(%GlobalConfigLDBMparamToMigrate);
- my $hasChanged = 0;
- my $newConfigLdbm ;
- if ($newConfigLdbm = alreadyExistsInNew($config_ldbm, 1)) {
- foreach $param (@params) {
- if ($config_ldbm->exists($param)){
- my @valuesToMigrate = $config_ldbm->getValues($param);
- if (@valuesToMigrate){
- if ($newConfigLdbm->exists($param)){
- my @currentValues = $newConfigLdbm->getValues($param);
- if (Diffs(\@valuesToMigrate, \@currentValues)) {
- $newConfigLdbm->setValues($param, @valuesToMigrate);
- $hasChanged = 1 unless ($hasChanged);
- }
- }
- else {
- $newConfigLdbm->setValues($param, @valuesToMigrate);
- $hasChanged = 1 unless ($hasChanged);
- }
- }
- }
- }
- updateEntry($newConfigLdbm, "CONFIG_LDBM_DATABASE", 0, 1) if ($hasChanged);
- }
-}
-
-#############################################################################
-
-sub migrateChainingBE_config{
- my $chaining_config = shift;
- my $DN = $chaining_config->getDN(1);
- my @params = ();
- my $hasChanged = 0;
- my $newChainingConfig;
- if ($DN =~ /^cn=config,cn=chaining database,cn=plugins,cn=config$/i){
- $newChainingConfig = searchEntry("cn=config,cn=chaining database,cn=plugins,cn=config");
- @params = keys(%ChainingConfigParams);
- }
- if ($DN =~ /^cn=default instance config,cn=chaining database,cn=plugins,cn=config$/i){
- $newChainingConfig = searchEntry("cn=default instance config,cn=chaining database,cn=plugins,cn=config");
- @params = keys(%ChainingDefaultInstanceConfigParams);
- }
- foreach $param (@params) {
- if ($chaining_config->exists($param)){
- my @valuesToMigrate = $chaining_config->getValues($param);
- if (@valuesToMigrate){
- printTrace("\nParam: $param values To migrate: @valuesToMigrate",3);
- if ($newChainingConfig->exists($param)){
- my @currentValues = $newChainingConfig->getValues($param);
- printTrace("\nParam: $param new current values: @currentValues",3);
- if (Diffs(\@valuesToMigrate, \@currentValues)) {
- $newChainingConfig->setValues($param, @valuesToMigrate);
- $hasChanged = 1 unless ($hasChanged);
- }
- }
- else {
- $newChainingConfig->setValues($param, @valuesToMigrate);
- $hasChanged = 1 unless ($hasChanged);
- }
- }
- }
- }
- updateEntry($newChainingConfig, "CHAINING_BACKEND_CONFIG", 0, 1) if ($hasChanged);
-}
-
-#############################################################################
-
-sub registerSuffix_ChainingBE {
- my $ldbmDatabase = shift;
- my $CN = $ldbmDatabase->{cn}[0];
- my $suffixArg = "nsslapd-suffix";
- my $suffix = $ldbmDatabase->{$suffixArg}[0];
- $oldChainingBackends{$suffix} = $CN;
-}
-
-sub storeMultiplexorBindDN {
- my $chaining_instance = shift;
- my $DN = $chaining_instance->getDN(1);
- if ($chaining_instance->exists("nsMultiplexorBindDN")){
- my $bindDN = $chaining_instance->{nsMultiplexorBindDN}[0];
- my $newBindDN = searchEntry($bindDN);
- if (! $newBindDN){
- # the bindDN entry doesn't yet exist in new => it will have to be migrated
- $MultiplexorBindDNEntriesToMigrate{$bindDN}="\n" ;
- printTrace("\nThe bindDN: $bindDN need to be migrated",3);
- }
- else {
- # do nothing as the entry already exists in new
- }
- }
-
-}
-
-sub importMultiplexorBindDNEntries {
- # import all entries present in @MultiplexorBindDNEntriesToMigrate in new
- my @MultiplexorBindDNs = keys (%MultiplexorBindDNEntriesToMigrate);
- my $ldif_dir = $ldif_rep;
- foreach $bindDN (@MultiplexorBindDNs) {
- printTrace("\nimportMultiplexorBindDNEntries: bindDN to migrate: $bindDN",3);
- # get the backend in which is stored the bind DN entry
- my $backendtoExportFrom = getBackendtoExportFrom($bindDN);
- printTrace("\nbackendtoExportFrom is: $backendtoExportFrom",3);
- # check wether the backend has been imported in new or not
- if (! alreadyMigrated($backendtoExportFrom)) {
- if ($backendtoExportFrom ne $NULL) {
- # if not imported => we need to import the binf DN entry
- &startServer() unless (isDirectoryAlive());
- $conn = new Mozilla::LDAP::Conn($LDAPservername,$newport,$rootDN,$rootpwd) or die "\n Unable to contact the $Version.$Minor LDAP server: $LDAPservername\n";
- &ExportAndAddEntry($bindDN, $backendtoExportFrom, $ldif_dir);
- }
- else {
- # do nothing
- }
- }
- }
- # remove the empty ldif directory
- rmdir($ldif_dir) if (-d $ldif_dir);
- # close the LDAP connection to new
- $conn->close if ($conn);
-}
-
-sub migrateChainingBE_instance{
- my $chaining_instance = shift;
- my $DN = $chaining_instance->getDN(1);
- &registerSuffix_ChainingBE($chaining_instance);
- if (alreadyExistsInNew($chaining_instance)) {
- # already exists
- printMsg("\n\n*** CHAINING_BACKEND_INSTANCE - $DN already exists");
- printMsg("\n*** Migration will not update it");
- }
- else {
- &migrate_credential($chaining_instance, "nsmultiplexorcredentials");
- addEntryToNew($chaining_instance, "CHAINING_BACKEND_INSTANCE", 1);
- storeMultiplexorBindDN($chaining_instance);
- }
-}
-
-#############################################################################
-
-# create a new LDIF representation of a new replica consumer
-sub newLDIFreplica {
- my $replica = shift;
- my $DN = $replica->getDN(1);
- my $newReplica = $conn->newEntry() ;
- my $MASTER_OR_MULTIMASTER = "3" ;
- $newReplica->setDN($DN);
- foreach $Attr (@nsds5replicaAttrs) {
- my @values = $replica->getValues($Attr);
- $newReplica->setValues($Attr, @values) if (@values);
- }
- my $replicaType = $replica->{nsDS5ReplicaType}[0];
- if ($replicaType eq $MASTER_OR_MULTIMASTER) {
- my @nsState = $replica->getValues("nsState");
- $newReplica->setValues("nsState", @nsState);
- }
- else {
- $newReplica->setValues("nsDS5ReplicaId", $replicaIdvalue);
- }
- return $newReplica;
-}
-
-sub MigrateNSDS5_replica{
- foreach $replica (@new6replicas) {
- my $DN = $replica->getDN(1);
- my $newReplica;
- my @removeAttrs = qw(nsstate nsds5replicaname nsds5replicachangecount);
- for (@removeAttrs) {
- $replica->remove($_);
- }
- if (alreadyExistsInNew($replica)) {
- # replica already exists
- printMsg("\n\n*** NSDS5_REPLICA - $DN already exists");
- printMsg("\n*** Migration will not update it");
- }
- else {
- $newReplica = &newLDIFreplica($replica);
- addEntryToNew($newReplica, "NSDS5_REPLICA", 1);
- }
- storeReplicaBindDN($replica);
- }
-}
-
-sub parseNSDS5_replica{
- my $replica = shift;
- push @new6replicas, $replica;
-}
-
-sub storeReplicaBindDN {
- my $replica = shift;
- my $DN = $replica->getDN(1);
- if ($replica->exists("nsDS5ReplicaBindDN")){
- my $bindDN = $replica->{nsDS5ReplicaBindDN}[0];
- my $newBindDN = searchEntry($bindDN);
- if (! $newBindDN){
- # the bindDN entry doesn't yet exist in new => it will have to be migrated
- $ReplicaBindDNEntriesToMigrate{$bindDN}="\n" ;
- printTrace("\nThe bindDN: $bindDN need to be migrated",3);
- }
- else {
- # do nothing as the entry already exists in new
- }
- }
-}
-
-
-sub importReplicaBindDNEntries {
- # import all entries present in @ReplicaBindDNEntriesToMigrate in new
- my @ReplicaBindDNs = keys (%ReplicaBindDNEntriesToMigrate);
- my $ldif_dir = $ldif_rep;
- my $replBind_entry = "";
- my @bindDN_elements = "";
- my $bindDN_parent = "";
- my $parentBind_entry = "";
- foreach $bindDN (@ReplicaBindDNs) {
- printTrace("\nimportReplicaBindDNEntries: bindDN to migrate: $bindDN",3);
- # get the backend in which is stored the bind DN entry
- my $backendtoExportFrom = getBackendtoExportFrom($bindDN);
- printTrace("\nbackendtoExportFrom is: $backendtoExportFrom",3);
- # If backend is from config, read the entry from dse.ldif and add to new - NGK
- if ($backendtoExportFrom eq "cn=config") {
- my $norm_bindDN = normalizeDN($bindDN);
- @bindDN_elements = ldap_explode_dn($norm_bindDN, 0);
-# @bindDN_elements = split(/,/,$norm_bindDN);
- my $junk = shift(@bindDN_elements);
- if ($#bindDN_elements >= 1) {
- $bindDN_parent = normalizeDN(join(",", @bindDN_elements));
- }
- printTrace("\nOpening DSE.ldif",3);
- open( DSELDIF, "< $oldDSEldif" ) || die "Can't open $oldDSEldif: $!: ";
- my $in = new Mozilla::LDAP::LDIF(*DSELDIF);
- while ($entry = readOneEntry $in) {
- my $DN = $entry->getDN(1);
- if ($DN eq $norm_bindDN) {
- $replBind_entry = $entry;
- }
- if ($bindDN_parent ne "") {
- if ($DN eq $bindDN_parent) {
- $parentBind_entry = $entry;
- }
- }
- }
- close(DSELDIF);
- &startServer() unless (isDirectoryAlive());
- $conn = new Mozilla::LDAP::Conn($LDAPservername,$newport,$rootDN,$rootpwd) or die "\n Unable to contact the $Version.$Minor LDAP server: $LDAPservername\n";
- if ($bindDN_parent ne "") {
- addEntryToNew($parentBind_entry, BINDDN_PARENT, 0);
- }
- printTrace("\nAdding BindDN with addEntryToNew",3);
- addEntryToNew($replBind_entry, BINDDN, 0);
- } else {
- # check wether the backend has been imported in new or not
- if (! alreadyMigrated($backendtoExportFrom)) {
- if ($backendtoExportFrom ne $NULL) {
- # if not imported => we need to import the bind DN entry
- &startServer() unless (isDirectoryAlive());
- $conn = new Mozilla::LDAP::Conn($LDAPservername,$newport,$rootDN,$rootpwd) or die "\n Unable to contact the $Version.$Minor LDAP server: $LDAPservername\n";
- &ExportAndAddEntry($bindDN, $backendtoExportFrom, $ldif_dir);
- }
- else {
- # do nothing
- }
- }
- }
- }
- # remove the empty ldif directory
- rmdir($ldif_dir) if (-d $ldif_dir);
- # close the LDAP connection to new
- $conn->close if ($conn);
-}
-
-sub alreadyMigrated {
- my $backendToCheck = shift;
- foreach $backend (@BACKENDS) {
- return 1 if ($backend eq $backendToCheck);
- }
- return 0 ;
-}
-
-sub belongsSuffix {
- my $suffix = shift;
- my $bindDN = shift;
- return ($bindDN =~ /$suffix\s*$/i);
-}
-
-sub length {
- my $suffix = shift;
- my $count = 0;
- while ($suffix =~ /./g) {
- $count++;
- }
- return $count ;
-}
-
-sub getBackendtoExportFrom {
- my $bindDN = shift ;
- my $sizeOfSuffix = 0 ;
- my $NULL = "";
- my @oldSuffixes = keys(%oldBackends);
- my @oldChainingSuffixes = keys(%oldChainingBackends);
- my $bindDN_backend = $NULL;
- my $config = "cn=config";
-
- my $norm_bindDN = normalizeDN($bindDN);
- # Check if bindDN exists in cn=config - NGK
- if (belongsSuffix($config,$norm_bindDN)) {
- $bindDN_backend = $config;
- printTrace("\ngetBackendtoExportFrom: bindDN_backend: $bindDN_backend",3);
- } else {
- foreach $suffix (@oldSuffixes){
- printTrace("\ngetBackendtoExportFrom: suffix to compare with is: $suffix",3);
- if ((belongsSuffix($suffix,$norm_bindDN)) && (length($suffix) > $sizeOfSuffix)) {
- $sizeOfSuffix = length($suffix);
- $bindDN_backend = $oldBackends{$suffix};
- printTrace("\ngetBackendtoExportFrom: bindDN_backend: $bindDN_backend, sizeOfSuffix: $sizeOfSuffix",3);
- }
- }
- foreach $suffix (@oldChainingSuffixes){
- printTrace("\ngetBackendtoExportFrom: suffix to compare with is a chained suffix: $suffix",3);
- if ((belongsSuffix($suffix,$norm_bindDN)) && (length($suffix) > $sizeOfSuffix)) {
- printMsg("\n\n*** Entry stored on a remote backend - $norm_bindDN");
- printMsg("\n*** We don't migrate it");
- return $NULL;
- }
- }
- }
- return $bindDN_backend;
-}
-
-
-sub getBackendtoImportTo {
- my $bindDN = shift;
- my $sizeOfSuffix = 0;
- my $NULL = "";
- my $suffixArg = "nsslapd-suffix";
- my $bindDN_backend = $NULL;
- open( DSELDIF, "< $DSEldif" ) || die "Can't open $DSEldif: $!: ";
- my $in = new Mozilla::LDAP::LDIF(*DSELDIF) ;
- while ($entry = readOneEntry $in) {
- $typeOfEntry = getTypeOfEntry($entry);
- if ($typeOfEntry eq "LDBM_BACKEND_INSTANCE"){
- my $suffix = $entry->{$suffixArg}[0];
- if ((belongsSuffix($suffix,$bindDN)) && (length($suffix) > $sizeOfSuffix)) {
- $sizeOfSuffix = length($suffix);
- $bindDN_backend = $entry->{cn}[0];
- }
- }
- }
- close(DSELDIF);
- return $bindDN_backend ;
-}
-
-
-sub ExportAndAddEntry {
- my $DN = shift;
- my $backendtoExportFrom = shift;
- my $ldif_dir = shift;
- my $ldif = "$ldif_dir${PATHSEP}$backendtoExportFrom.ldif" ;
- # first: export entry pointed out by the $DN to $ldif file
- $ENV{"$LIB_PATH"}=$old_libpath;
- if (! $ldif_dir) { $ldif_dir = $ldif_rep ;}
- if (!(-d $ldif_dir)) {
- mkdir($ldif_dir,0777) or die "\ncan't create $ldif_dir to store temporary ldif files\n";
- }
- chdir($oldSlapdExecDir) or die "\nCould not change directory to $oldSlapdExecDir: $!\n";
- &db2Ldif($ldif, $backendtoExportFrom, $oldHome, $DN);
- chdir($curdir) or die "\nCould not change directory to $curdir: $!\n";
-
- # then: Add it to new
- if (! $conn) {
- $conn = new Mozilla::LDAP::Conn($LDAPservername,$newport,$rootDN,$rootpwd) or die "\n Unable to contact the $Version.$Minor LDAP server: $LDAPservername\n";
- }
- open( BINDDNLDIF, "< $ldif" ) || die "\nCan't open $ldif: $!: \n";
- my $in = new Mozilla::LDAP::LDIF(*BINDDNLDIF) ;
- while ($entry = readOneEntry $in) {
- my $entryDN = $entry->getDN(1);
- if ($DN eq $entryDN) {
- addEntryToNew($entry, "nsds5ReplicaBindDN", 0);
- }
- }
- close(BINDDNLDIF);
- # remove the ldif file after the import
- unlink($ldif) ;
-}
-
-#############################################################################
-sub MigrateNSDS_replication_agreement {
- foreach $replicationAgreement (@replicationAgreements) {
- my $DN = $replicationAgreement->getDN(1);
- if (alreadyExistsInNew($replicationAgreement)){
- # replication agreement already exists
- printMsg("\n\n*** NSDS_REPLICATION_AGREEMENT - $DN already exists");
- printMsg("\n*** Migration will not update it");
- }
- else {
- &migrate_credential($replicationAgreement, "nsDS5ReplicaCredentials");
- addEntryToNew($replicationAgreement, "NSDS_REPLICATION_AGREEMENT", 1);
- }
- }
-}
-
-
-sub parseNSDS_replication_agreement{
- my $replicationAgreement = shift;
- push @replicationAgreements, $replicationAgreement ;
-}
-
-#############################################################################
-
-sub migrateChangelog5{
- my $changelog = shift;
- my $DN = $changelog->getDN(1);
- my $changelogdir = "nsslapd-changelogdir";
- if (alreadyExistsInNew($changelog)){
- # cn=changelog5,cn=config already exists in new
- my $newChangelog = searchEntry($DN);
- my @newChangelogdir = $newChangelog->getValues($changelogdir);
- $changelog->setValues($changelogdir, @newChangelogdir);
- updateEntry($changelog, "CHANGELOG5", 0, 1);
- }
- else {
- # cn=changelog5,cn=config need to be created in new.
- # the changelogdir value must be setup to <new_root_server>/slapd-instance/changelogdb
- $changelog->setValues($changelogdir,"${serverHome}${PATHSEP}changelogdb");
- addEntryToNew($changelog, "CHANGELOG5", 1);
- }
-}
-
-
-sub migrateChangelog {
- my $oldchangelogdir = "";
- my $newchangelogdir = "";
- my $changelogdir = "nsslapd-changelogdir";
- my $CL5DN = "cn=changelog5,cn=config";
- printTrace("\n\n***** Migrate Changelog...",0,1);
- open( DSELDIF, "< $oldDSEldif" ) || die "Can't open $oldDSEldif: $!: ";
- my $in = new Mozilla::LDAP::LDIF(*DSELDIF);
- while ($entry = readOneEntry $in) {
- $typeOfEntry = getTypeOfEntry($entry);
- if ($typeOfEntry eq "CHANGELOG5"){
- $oldchangelogdir = ($entry->getValues($changelogdir))[0];
- }
- }
- close(DSELDIF);
- if ($oldchangelogdir) {
- # If using olddatadir to migrate from, the path of the changelogdb
- # from the dse.ldif may not match the path where the old server
- # root was archived. We may need to modify oldchangelogdir so the
- # copy of the changelog files succeeds.
- unless(-e $oldchangelogdir) {
- if($olddatadir) {
- my @cldbpath = split(/\//,$oldchangelogdir);
- until($cldbpath[0] =~/^slapd-/) {
- shift(@cldbpath);
- }
- my $tmpcldbpath = join(${PATHSEP}, @cldbpath);
- $oldchangelogdir = "$oldDir${PATHSEP}$tmpcldbpath";
- }
- # If oldchangelogdir still looks to be wrong, prompt for the
- # location instead of just failing on the copydir operation
- # and bombing out of the migration.
- unless(-e $oldchangelogdir) {
- print("\n\nThe old changelog directory \"$oldchangelogdir\" doesn't exist. Please enter the correct path: ");
- $oldchangelogdir = <STDIN>;
- }
- }
- &startServer() unless (isDirectoryAlive());
- $conn = new Mozilla::LDAP::Conn($LDAPservername,$newport,$rootDN,$rootpwd) or die "\n Unable to contact the $Version.$Minor LDAP server: $LDAPservername\n";
- my $newChangelog = searchEntry($CL5DN);
- $newchangelogdir = ($newChangelog->getValues($changelogdir))[0];
- stopServer($root,'slapd-'.$newname);
- printTrace("\ncopying $oldchangelogdir${PATHSEP}* to $newchangelogdir",3);
- copyDir("$oldchangelogdir","$newchangelogdir");
-
- # We need to modify the DBVERSION file for a new verision of the db
- open(DBVERSION,">$newchangelogdir${PATHSEP}DBVERSION") || die "Can't overwrite $newchangelogdir${PATHSEP}DBVERSION: $! ";
- print DBVERSION "Changelog5/NSMMReplicationPlugin/3.0";
- close(DBVERSION);
-
- &startServer() unless (isDirectoryAlive());
- }
-}
-
-#############################################################################
-
-sub migrateReplication{
- my $replication = shift;
- my $DN = $replication->getDN(1);
- if (alreadyExistsInNew($replication)){
- # replication agreement already exists
- printMsg("\n\n*** $DN already exists");
- printMsg("\n*** Migration will not update it");
- }
- else {
- addEntryToNew($replication, "REPLICATION", 1);
- }
-}
-
-#############################################################################
-
-sub migrateSecurity{
- my $security = shift;
- if ($entry->hasValue("objectClass", "nsEncryptionConfig")) {
- my $certfile = "alias/slapd-" . $newname . "-cert8.db";
- my $keyfile = "alias/slapd-" . $newname. "-key3.db";
- $entry->setValues("nsCertfile",$certfile) if ! $entry->hasValue("nsCertfile",$certfile);
- $entry->setValues("nsKeyfile",$keyfile) if ! $entry->hasValue("nsKeyfile",$keyfile);
- }
- if (alreadyExistsInNew($security)){
- # already exists in new
- updateEntry($security, "SECURITY", 0, 1);
- }
- else {
- addEntryToNew($security, "SECURITY", 1);
- }
-}
-
-#############################################################################
-
-sub migrateSNMP{
- my $snmp = shift;
- if (alreadyExistsInNew($snmp)){
- # already exists in new
- updateEntry($snmp, "SNMP", 0, 1);
- }
- else {
- addEntryToNew($snmp, "SNMP", 1);
- }
-}
-
-#############################################################################
-# printMsg print message to the user standard output.
-
-sub printMsg {
-
- my $TypeMsg = shift ;
- my $Msg = shift ;
- my $LineNb = shift ;
- if ($LineNb) {
- printTrace("Line: $LineNb, $TypeMsg, $Msg");
- }
- else {
- printTrace("$TypeMsg $Msg");
- }
-}
-
-#############################################################################
-# print message error to the user standard output.
-
-sub printTrace {
-
- my $Msg = shift ;
- my $level = shift ;
- my $sep = shift ;
-
- if ($sep) {
- print "\n-------------------------------------------------------------------------";
- print LOGFILE "\n-------------------------------------------------------------------------";
- }
-
- if ($level <= $TRACELEVEL) {
- print($Msg);
- print LOGFILE $Msg ;
- }
-}
-
-#############################################################################
-# this subroutine implements a very stupid version of diff
-
-sub diff {
- my $f1 = shift;
- my $f2 = shift;
- my $lineToBeginWith = shift;
- my $NULL = "" ;
- my $diff_f1 = $NULL ;
- my $diff_f2 = $NULL ;
- my $retval = $NULL ;
- my $ret;
- open(F1, "$f1") or die "Could not open file $f1";
- open(F2, "$f2") or close(F1), die "Could not open file $f2";
-
- while (defined($l1 = <F1>)) {
- if ($lineToBeginWith){
- $lineToBeginWith -- ;
- next ;
- }
- next if ($l1 =~ /^\#/);
- $ret = defined($l2 = <F2>);
- if ($ret) {
- $ret = defined($l2 = <F2>) while ($ret && ($l2 =~ /^\#/)) ;
- if ($ret) {
- if (!($l1 eq $l2)) {
-
- # ignore whitespace
- $l1_clean = $l1 ;
- $l2_clean = $l2 ;
- $l1_clean =~ s/\s//g;
- $l2_clean =~ s/\s//g;
-
- if (!($l1_clean eq $l2_clean)) {
- $diff_f1 .= "${l1}" unless ($l1_clean eq $NULL);
- $diff_f2 .= "${l2}" unless ($l2_clean eq $NULL);
- }
- }
- }
- else {
- next if ($l1 =~ /^\s*$/) ;
- $diff_f1 .= "${l1}";
- }
- }
- else {
- next if ($l1 =~ /^\s*$/) ;
- $diff_f1 .= "${l1}";
- }
- }
-
- while (defined($l2 = <F2>)) {
- if (($l2 =~ /^\#/) || ($l2 =~ /^\s*$/)) {
- next ;
- }
- else {
- $diff_f2 .= "${l2}" ;
- }
- }
-
- close(F1);
- close(F2);
-
- $retval .= "- differences present in your config file but not in standard file:\n\n". "$diff_f1\n" if ($diff_f1) ;
- $retval .= "- differences present in standard file but not in your config file:\n\n" . "$diff_f2" if ($diff_f2) ;
- return $retval ;
-}
-
-sub CompareStdConfigFiles {
- # Compare each configuration file against its default version. If it has changed,
- # notify the user that the file has changed and will need to be checked by the
- # user. This should be safe to do because there should be no path information
- # stored in these conf files, which are just schema stuff.
- # printTrace("\nCheck if standard configuration files have changed",3);
-
- # get the version of the DS to migrate
- ($oldVersion, $oldMinor) = &getVersion($oldDir, $oldversionstr);
- # get the version of the new DS
- ($Version, $Minor) = &getVersion($root);
-
- # get old LIB_PATH
- $old_libpath = &getLibPath($oldDir, $oldVersion, $oldMinor);
- # get new LIB_PATH
- $new_libpath = &getLibPath($root, $Version, $Minor);
-
- my $origFilePath = "$oldDir${PATHSEP}bin${PATHSEP}slapd${PATHSEP}install${PATHSEP}schema${PATHSEP}" ;
- my $FilesChanged = "";
- my $AllDiffs = "***********************************************************************";
- my $NoChanges = "" ;
- my $lineToBegin = 0 ;
- opendir(CONFDIR, $oldSchemaDir) or
- die "Error: could not open migrated config dir $oldConfDir: $!";
-
- foreach $file (readdir(CONFDIR)) {
- $origFile = $origFilePath . $file ;
- $configFile = $oldSchemaDir . $file ;
- if (( exists($stdIncludes{lc($file)})) && (-f $origFile)) {
- $diffs = &diff($configFile, $origFile, $lineToBegin);
- $lineToBegin = 0 if $lineToBegin ;
- if ($diffs) {
- $FilesChanged .= "\n$configFile";
- $AllDiffs .= "\n$configFile is different than the standard configuration file" ;
- $AllDiffs .= "\nYou will need to check this file and make sure its changes are compatible ";
- $AllDiffs .= "with the new directory server\nHere are the differences:\n";
- $AllDiffs .= "$diffs \n\n";
- $AllDiffs .= "***********************************************************************";
- }
- else {
- $NoChanges .= "\n$configFile";
- }
- }
- }
- closedir(CONFDIR);
-
-if ($FilesChanged) {
- printTrace("\nNo changes to old configuration files:$NoChanges",3) ;
- printTrace("\n***********************************************************************",3) ;
- printMsg("\nThe following standard files have been modified: $FilesChanged");
- if ($NO_INPUT_USER) {
- # do nothing
- }
- else {
- printMsg("\nDo you want to see the differences Yes/No [No] ?") ;
- my $answer = <STDIN> ;
- if ($answer =~ /y|yes/i) {
- printMsg("$AllDiffs");
- }
- printMsg("\nDo you want to continue the migration Yes/No [No] ?");
- $answer = <STDIN> ;
- if (! ($answer =~ /y|yes/i)) {
- exit(1);
- }
- }
- }
-}
-
-
-
-#############################################################################
-
-# this is used to run the system() call, capture exit and signal codes,
-# and die() upon badness; the first argument is a directory to change
-# dir to, if any, and the rest are passed to system()
-sub mySystem {
- my $rc = &mySystemNoDie(@_);
- my ($dir, @args) = @_;
- if ($rc == 0) {
-# success
- } elsif ($rc == 0xff00) {
- die "Error executing @args: error code $rc: $!";
- } elsif ($rc > 0x80) {
- $rc >>= 8;
- die "Error executing @args: error code $rc: $!";
- } else {
- if ($rc & 0x80) {
- $rc &= ~0x80;
- }
- die "Error executing @args: received signal $rc: $!";
- }
-
- # usually won't get return value
- return $rc;
-}
-
-# This version does not die but just returns the error code
-sub mySystemNoDie {
- my ($dir, @args) = @_;
- if ($dir && ($dir ne "")) {
- chdir($dir) or die "Could not change directory to $dir: $!";
- }
- my $cmd = $args[0];
- # the system {$cmd} avoids some NT shell quoting problems if the $cmd
- # needs to be quoted e.g. contains spaces; the map puts double quotes
- # around the arguments on NT which are stripped by the command
- # interpreter cmd.exe; but don't quote things which are already quoted
- my @fixargs = map { /^[\"].*[\"]$/ ? $_ : $quote . $_ . $quote } @args;
- my $rc = 0;
- if ($cmd =~ /[.](bat|cmd)$/) {
- # we have to pass batch files directly to the NT command interpreter
- $cmd = $com_spec;
-# print "system $cmd /c \"@fixargs\"\n";
- $rc = 0xffff & system {$cmd} '/c', "\"@fixargs\"";
- } else {
-# print "system $cmd @fixargs\n";
- $rc = 0xffff & system {$cmd} @fixargs;
- }
- chdir(${curdir}) or die "Could not change directory to $curdir: $!";
- return $rc;
-}
-
-###########################################################################################
-# #
-# Export/Import of the backends in @BACKENDS #
-# #
-###########################################################################################
-
-sub manydb2Ldif {
- my $ldif_dir = shift;
- $ENV{"$LIB_PATH"}=$old_libpath;
- if (! $ldif_dir) { $ldif_dir = $ldif_rep ;}
- if (!(-d $ldif_dir)) {
- mkdir($ldif_dir,0777) or die "can't create $ldif_dir to store temporary ldif files";
- }
- chdir($oldSlapdExecDir) or die "Could not change directory to $oldSlapdExecDir: $!";
- foreach $backend (@BACKENDS) {
- my $ldif = "${ldif_dir}$backend.ldif" ;
- &db2Ldif($ldif, $backend, $oldHome);
- }
- print " Done.\n";
- chdir($curdir) or die "Could not change directory to $curdir: $!";
-}
-
-sub db2Ldif {
- my $ldif = shift ;
- my $backend = shift ;
- my $home = shift ;
- my $include_suffix = shift ;
- my $db2ldif_param ;
- if ($include_suffix) {
- $db2ldif_param = "db2ldif -r -D $home -n $backend -a $ldif -s \"$include_suffix\"";
- }
- else {
- $db2ldif_param = "db2ldif -r -D $home -n $backend -a $ldif";
- }
- open(DB2LDIF, "${quote}${quote}$slapdExecName${quote} $db2ldif_param${quote} 2>&1 |") or die "Could not run ns-slapd program $ldif2db_exe\n";
- sleep(1); # allow some data to accumulate in the pipe
- my $ii = 0;
- while (<DB2LDIF>) {
- ++$ii;
- if (($ii % 250) == 0) {
- printMsg(" Processing...\n");
- }
- printMsg($_);
- }
- close(DB2LDIF);
- # set the ownership of the ldif file; should be the same as the 5.x slapd user id
- if ((! $isNt) && ($oldlocaluser ne $localuser)) {
- if (-f $ldif) {
- chown( $newuid, $newgid, $ldif) or printMsg("\nUnable to change the ownership of $ldif to $localuser") ;
- }
- }
-}
-
-sub manyLdif2db {
- my $ldif_dir = shift;
- $ENV{"$LIB_PATH"}=$new_libpath;
- chdir($slapdExecDir) or die "Could not change directory to $slapdExecDir: $!";
- foreach $backend (@BACKENDS) {
- my $ldif = "${ldif_dir}$backend.ldif" ;
- &Ldif2db($ldif, $backend);
- }
- # remove the empty ldif directory
- # but not if using the data dir
- if (!$olddatadir) {
- rmdir($ldif_dir);
- }
- chdir($curdir) or die "Could not change directory to $curdir: $!";
-}
-
-
-sub Ldif2db {
- my $ldif = shift ;
- my $backend = shift ;
- my $ldif2db_param = "ldif2db -D $serverHome -n $backend -i $ldif";
- open(LDIF2DB, "${quote}${quote}$slapdExecName${quote} $ldif2db_param${quote} 2>&1 |") or die "Could not run ns-slapd program $ldif2db_exe\n";
- sleep(1); # allow some data to accumulate in the pipe
- while (<LDIF2DB>) {
- printMsg($_);
- }
- close(LDIF2DB);
- # remove the ldif file after the import
- # but not if using the data dir
- if (!$olddatadir) {
- unlink($ldif) ;
- }
-}
-
-
-###########################################################################################
-# #
-# Running/Stopping the Server #
-# #
-###########################################################################################
-
-
-
-sub isDirectoryAlive {
- die "\n Migration aborted. Make sure your old and new Directory Servers are installed on the same machine \n" if ( $LDAPservername == -1 );
- my $test_conn = new Mozilla::LDAP::Conn($LDAPservername,$newport,$rootDN,$rootpwd);
- if ($test_conn) {
- $test_conn->close();
- return 1;
- }
- else {
- return 0 ;
- }
-}
-
-
-sub startServer {
- my $instanceDir = ${serverHome} ;
- my $errLog = $instanceDir . $PATHSEP . 'logs' . $PATHSEP . 'errors';
- # emulate tail -f
- # if the last line we see does not contain "slapd started", try again
- my $done = 0;
- my $started = 0;
- my $code = 0;
- my $lastLine = "";
- my $timeout = time + 240; # 4 minutes
- $ENV{"$LIB_PATH"}=$new_libpath;
-
- my $startCmd = $instanceDir . $PATHSEP . 'start' . $script_suffix;
- if (! -f $startCmd) {
- $startCmd = $instanceDir . $PATHSEP . 'start-slapd' . $script_suffix;
- }
- $code = &mySystem($instanceDir,$startCmd);
- open(IN, $errLog) or die "Could not open error log $errLog: $!";
- my $pos = tell(IN);
- while (($done == 0) && (time < $timeout)) {
- for (; ($done == 0) && ($_ = <IN>); $pos = tell(IN)) {
- $lastLine = $_;
- # print;
- # the server has already been started and shutdown once . . .
- if (/slapd started\./) {
- $started++;
- if ($started == 2) {
- $done = 1;
- }
- # sometimes the server will fail to come up; in that case, restart it
- } elsif (/Initialization Failed/) {
- # print "Server failed to start: $_";
- $code = &mySystem($instanceDir, $startCmd);
- # sometimes the server will fail to come up; in that case, restart it
- } elsif (/exiting\./) {
- # print "Server failed to start: $_";
- #$code = &mySystem($startCmd);
- $code = &mySystem($instanceDir, $startCmd);
- }
- }
- if ($lastLine =~ /PR_Bind/) {
- # server port conflicts with another one, just report and punt
- print $lastLine;
- print "This server cannot be started until the other server on this\n";
- print "port is shutdown.\n";
- $done = 1;
- }
- if ($done == 0) {
- # rest a bit, then . . .
- sleep(2);
- # . . . reset the EOF status of the file desc
- seek(IN, $pos, 0);
- }
- }
- close(IN);
-
- sleep(5);
- die "\nUnable to start the $Version.$Minor Directory Server\n" unless (isDirectoryAlive());
-
- return 0;
-}
-
-sub stopServer {
- my $root = shift;
- my $name = shift;
- $maxStopIterations = 5;
- print "\nShutting down server $name . . .\n";
- $ENV{"$LIB_PATH"}=$new_libpath;
- $stopCmd = $quote . $root . $PATHSEP . $name . $PATHSEP . 'stop' . $script_suffix . $quote;
- if (! -f $stopCmd) {
- $stopCmd = $quote . $root . $PATHSEP . $name . $PATHSEP . 'stop-slapd' . $script_suffix . $quote;
- }
-
- if (! -f $stopCmd) {
- # no stop command, probably a 1.X system; for NT, we'll try net stop
- # for unix, we'll get the pid and kill it
- if ($isNT) {
- $stopCmd = 'net stop ' . $name;
- } else {
- # see if there is a pid file
- $pidfile = $root . $PATHSEP . $name . $PATHSEP . 'logs' .
- $PATHSEP . 'pid';
- if (open(PIDFILE, $pidfile)) {
- chomp($pid = <PIDFILE>);
- close(PIDFILE);
- while ($maxStopIterations-- && !$exitCode) {
- $exitCode = kill(15, $pid);
- }
- $stopCmd = undef;
- }
- }
- }
-
- # keep looping until the stop cmd returns an error code, which usually
- # means that what ever we want to stop is stopped, or some other error
- # occurred e.g. permission, or no such service
- $exitCode = &runAndIgnoreOutput($stopCmd);
-# print "stopServer: exitCode=$exitCode\n";
- while ($stopCmd && $maxStopIterations-- && $exitCode) {
- $exitCode = &runAndIgnoreOutput($stopCmd);
-# print "stopServer: exitCode=$exitCode\n";
- }
-
- if (!$maxStopIterations) {
- print "Warning: could not shutdown the server: $!\n";
- }
- sleep(10) ;
- $exitCode = 0;
-}
-
-
-sub runAndIgnoreOutput {
- my $cmd = shift;
- printMsg(".");
- open(RUNCMD, "${quote}$cmd${quote} 2>&1 |") or die "Error: could not run $cmd: $!";
- printMsg(".");
- sleep(1); # allow pipe to fill with data
- printMsg(".");
- while (<RUNCMD>) {
-# print;
- }
- my $code = close(RUNCMD);
-# print "runAndIgnore: code=$code status=$?\n";
- return $?;
-}
-
-#############################################################################
-# migrate SSL info
-
-sub MigrateSSL {
- my $secPwd = 'bidon' ;
- # copy the SSL directory
- &copyDir("$oldHome${PATHSEP}ssl","$serverHome${PATHSEP}ssl") if (-d "$oldHome${PATHSEP}ssl");
- # copy the cert db and key files
- if ( -d "$oldDir${PATHSEP}alias") {
- $aliasDir = "$root${PATHSEP}alias";
- if (! -d $aliasDir) {
- mkdir($aliasDir, 0750);
- }
- &stopServer($root,'slapd-'.$newname);
- my $keydb = "$aliasDir${PATHSEP}slapd-$newname-key3.db" ;
- my $certdb = "$aliasDir${PATHSEP}slapd-$newname-cert8.db" ;
- my $certdb7 = "$aliasDir${PATHSEP}slapd-$newname-cert7.db" ;
- my $old_keydb = "$oldDir${PATHSEP}alias${PATHSEP}slapd-$oldname-key3.db" ;
- my $old_certdb = "$oldDir${PATHSEP}alias${PATHSEP}slapd-$oldname-cert7.db";
- my $keydb_backup = "$aliasDir${PATHSEP}slapd-$newname-key3.db_backup" ;
- my $certdb_backup = "$aliasDir${PATHSEP}slapd-$newname-cert7.db_backup" ;
- if (-f $old_keydb) {
- if (-f $keydb) {
- if ($NO_INPUT_USER) {
- printMsg("\n$keydb already exists. backup in $keydb_backup ...");
- &copyBinFile($keydb,$keydb_backup);
- &copyBinFile($old_keydb,$keydb);
- }
- else {
- print("\n\n$keydb already exists. Do you want to overwrite it ? [no]: ");
- my $answer = <STDIN> ;
- if ($answer =~ /^y|yes$/i) {
- &copyBinFile($old_keydb,$keydb);
- }
- }
- }
- else {
- &copyBinFile($old_keydb,$keydb);
- }
- }
- if (-f $old_certdb) {
- $mode = (stat($old_certdb))[2] if $PRESERVE;
- if (-f $certdb) {
- if ($NO_INPUT_USER) {
- printMsg("\n$certdb already exists. backup in $certdb_backup ...");
- &copyBinFile($certdb,$certdb_backup);
- unlink($certdb) || print "Couldn't delete $certdb : $!\n";
- &copyBinFile($old_certdb,$certdb7);
- }
- else {
- print("\n\n$certdb already exists. Do you want to overwrite it ? [no]: ");
- my $answer = <STDIN> ;
- if ($answer =~ /^y|yes$/i) {
- unlink($certdb) || print "Couldn't delete $certdb : $!\n";
- &copyBinFile($old_certdb,$certdb7);
- }
- }
- }
- else {
- &copyBinFile($old_certdb,$certdb7);
- }
- }
- # copy the old password file
- if (-f "$oldDir${PATHSEP}alias${PATHSEP}$type-$oldname-pin.txt") {
- &copyBinFile(
- "$oldDir${PATHSEP}alias${PATHSEP}$type-$oldname-pin.txt",
- "$aliasDir${PATHSEP}$type-$newname-pin.txt"
- );
- }
- &startServer();
- if ($PRESERVE) {
- chown($newuid,$newgid,$certdb) || print "Failed to set uid $newuid gid $newgid on $certdb : $!\n";
- chmod($mode,$certdb) || print "Failed to set mode $mode on $certdb : $!\n";
- }
- }
-
-}
-
-sub DisableSSL {
- my $entry = $conn->search("cn=config","base","objectclass=*");
- my $LDAPparam = "nsslapd-security" ;
- my $Value = "off" ;
- if ($entry->{$LDAPparam}[0] ne $Value) {
- printTrace("\nDisable SSL...",1);
- $entry->setValues($LDAPparam, $Value);
- }
- my $res = $conn->update($entry);
- if ($res) {
- printTrace("\nSSL disabled",2);
- }
- else {
- printMsg("\nCan't disabled SSL. The server may have problems to start");
- }
-}
-
-# enable the migration of client authentication informations
-sub MigrateCertmap {
- # backup the old certmap.conf and replace it with the new one
- my $oldCertmap = "$oldDir${PATHSEP}shared${PATHSEP}config${PATHSEP}certmap.conf";
- my $newCertmap = "$root${PATHSEP}shared${PATHSEP}config${PATHSEP}certmap.conf" ;
- my $backupCertmap = "$root${PATHSEP}shared${PATHSEP}config${PATHSEP}certmap.conf_backup" ;
- if (-f $oldCertmap) {
- if ($NO_INPUT_USER) {
- printMsg("\n$newCertmap has been backup in $backupCertmap");
- &copyBinFile($newCertmap,$backupCertmap);
- &copyBinFile($oldCertmap,$newCertmap);
- }
- else {
- my $Ask = 1 ;
- while ($Ask) {
- printMsg("\n\nWhere do you want to back up the file $newCertmap [$backupCertmap] ?") ;
- my $Answer = <STDIN> ;
- $backupCertmap = $Answer if ($Answer ne "\n");
- chomp($backupCertmap);
- printTrace("\nDest: .$backupCertmap.",4);
- if (-e $backupCertmap) {
- printMsg("\n\n$backupCertmap already exists. Do you want to overwrite it Yes/No [No] ?") ;
- if (<STDIN> =~ /yes|y/i) {
- $Ask = 0 ;
- }
- else {
- $backupCertmap = "$root${PATHSEP}shared${PATHSEP}config${PATHSEP}certmap.conf_backup" ;
- }
- }
- else {
- $Ask = 0 ;
- }
- }
- printTrace("\nBackup file: $newCertmap in $backupCertmap",4);
- &copyBinFile($newCertmap,$backupCertmap);
- &copyBinFile($oldCertmap,$newCertmap);
- }
- }
- else {
- }
-}
-
-sub hasChangedoldCertmap {
- my $certmapfile = shift ;
- my @reference = ("certmap default default",
- "default:DNComps",
- "default:FilterComps e") ;
- my $cpt = 0 ;
- printTrace("\nhasChangedoldCertmap",3);
- open(CERTMAP,"< $certmapfile");
- while (<CERTMAP>) {
- if ((! /^\s*#/) && (! /^\s*$/)) {
- my $ref = $reference[$cpt] ;
- printTrace("\nValue: $_, ref: $ref",4);
- if (! /^\s*$ref\s*$/) {
- return 1 ;
- }
- else {
- $cpt++ ;
- }
- }
- }
- close (CERTMAP);
- printTrace("\ncpt: $cpt",4);
- if ($cpt < $#reference) {
- return 1 ;
- }
- else {
- return 0 ;
- }
-}
-
-
-###########################################################################################
-# #
-# Copy directory and files functions #
-# #
-###########################################################################################
-
-
-sub copyDir {
- my $src = shift;
- my $dest = shift;
- my $exclude = shift;
-
- opendir( SRC, $src ) or die "Can't open directory $src: $!: ";
- my $mode;
- my $uid;
- my $gid;
- mkdir ( $dest , 0755 ) or die "\nCan't create directory $dest. \nPlease check you have enough rights to create it and/or check that your parent directory exists.\n" if !( -e $dest );
- if ($PRESERVE) {
- $mode = (stat($src))[2];
- ($uid, $gid) = (stat(_))[4..5];
- # Make sure files owned by the old user are owned by the
- # new user
- if ($uid == $olduid) {
- $uid = $newuid;
- $gid = $newgid;
- }
- chown $uid, $gid, $dest;
- chmod $mode, $dest;
- }
- local ( @files ) = readdir ( SRC );
- closedir( SRC );
- for ( @files ) {
- if ( $_ eq "." || $_ eq ".." ) {
- next;
- } elsif ( $exclude && /$exclude/ ) {
- next;
- } elsif( -d "$src${PATHSEP}$_") {
- &copyDir ( "$src${PATHSEP}$_", "$dest${PATHSEP}$_" );
- } else {
- &copyBinFile ( "$src${PATHSEP}$_", "$dest${PATHSEP}$_");
- }
- }
-}
-
-sub copyBinFile {
- my $src = shift;
- my $dest = shift;
- my $buf = "";
- my $bufsize = 8192;
-
- open( SRC, $src ) || die "Can't open $src: $!\n";
- # if we are given a directory destination instead of a file, extract the
- # filename portion of the source to use as the destination filename
- if (-d $dest) {
- $dest = $dest . $PATHSEP . &basename($src);
- }
- open( DEST, ">$dest" ) || die "Can't create $dest: $!\n";
- binmode SRC;
- binmode DEST;
- if ($PRESERVE) {
- $mode = (stat($src))[2];
- ($uid, $gid) = (stat(_))[4..5];
- # Make sure files owned by the old user are owned by the
- # new user
- if ($uid == $olduid) {
- $uid = $newuid;
- $gid = $newgid;
- }
- chown $uid, $gid, $dest;
- chmod $mode, $dest;
- }
- while (read(SRC, $buf, $bufsize)) {
- print DEST $buf;
- }
- close( SRC );
- close( DEST );
-}
-
-#############################################################################################################
-# backup 5.x configuration files #
-# backup the directory <root_server5>/slapd-instance/config dans <root_server5>/slapd-instance/BackupConfig # #
-# #
-#############################################################################################################
-
-
-sub backupConfigFiles {
- # backup the 5.x config files
- my $src = "$serverHome${PATHSEP}config" ;
- my $dest = "$serverHome${PATHSEP}config_backup" ;
- if ($NO_INPUT_USER) {
- printMsg("\n$src has been backup in $dest");
- &copyDir($src,$dest);
- }
- else {
- my $Ask = 1 ;
- while ($Ask) {
- printMsg("\n\nWhere do you want to back up your configuration directory [$dest] ?") ;
- my $Answer = <STDIN> ;
- $dest = $Answer if ($Answer ne "\n");
- chomp($dest);
- printTrace("\nDest: .$dest.",4);
- if (-e $dest) {
- printMsg("\n\n$dest already exists. Do you want to overwrite it Yes/No [No] ?") ;
- if (<STDIN> =~ /yes|y/i) {
- $Ask = 0 ;
- }
- else {
- $dest = "$serverHome${PATHSEP}config_backup" ;
- }
- }
- else {
- $Ask = 0 ;
- }
- }
- printTrace("\nBackup Directory: $src in $dest",4);
- &copyDir($src,$dest);
- }
-}
-#############################################################################
-
-sub getLDAPservername {
- my $oldLDAPservername;
- my $LDAPservername;
- my $localhost = "nsslapd-localhost";
- open(OLDDSELDIF, "< $oldDSEldif") or die "\nError: could not open old config file $oldDSEldif \n";
- my $in = new Mozilla::LDAP::LDIF(*OLDDSELDIF) ;
- while ($entry = readOneEntry $in) {
- my $DN = $entry->getDN(1) ;
- if ($DN =~ /^cn=config$/i) {
- my @values = $entry->getValues($localhost);
- if ($entry->size($localhost)) {
- $oldLDAPservername = $values[0];
- printTrace("\nName of the old LDAP server: $oldLDAPservername",3);
- }
- break;
- }
- }
- close(OLDSELDIF);
-
- open( DSELDIF, "< $DSEldif" ) || die "\nCan't open $DSEldif \n";
- my $in = new Mozilla::LDAP::LDIF(*DSELDIF) ;
- while ($entry = readOneEntry $in) {
- my $DN = $entry->getDN(1) ;
- if ($DN =~ /^cn=config$/i) {
- my @values = $entry->getValues($localhost);
- if ($entry->size($localhost)) {
- $LDAPservername = $values[0];
- printTrace("\nName of the new LDAP server: $LDAPservername",3);
- }
- break;
- }
- }
- close(DSELDIF);
- # check ol and new Directory Instance are installed on the same physical machine.
- if (lc($oldLDAPservername) ne lc($LDAPservername)) {
- # warn the user he tries to migrate a 4.x server installed on a different machine from the 5.x one
- printMsg("\n\nYour old instance is on $oldLDAPservername, whereas your new instance is on $LDAPservername. Migration on different machines is not supported. Do you want to continue ? Yes/No [No]:") ;
- if (! (<STDIN> =~ /yes|y/i)) {
- return -1;
- }
- }
- return $LDAPservername ;
-}
-
-#############################################################################
-
-sub getLibPath {
- my $myDir = shift;
- my $myVersion = shift;
- my $myMinor = shift;
-
- if ($isNT) {
- return $ENV{"$LIB_PATH"};
- }
- if (($myVersion >= 6) && ($myMinor >= 2)) {
- return
- "$myDir${PATHSEP}bin${PATHSEP}slapd${PATHSEP}lib${SEP}".
- "$myDir${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server${SEP}".
- $ENV{"$LIB_PATH"};
- } else {
- return "$myDir${PATHSEP}lib${SEP}".$ENV{"$LIB_PATH"};
- }
-}
-
-#############################################################################
-
-sub getVersion {
- my $dir = shift;
- my $versionstr = shift;
- my $version = 0;
- my $minor = 0;
- my $buildNumber = 0;
- my $progDir = "${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server${PATHSEP}";
- my $progDir2 = "${PATHSEP}bin${PATHSEP}slapd${PATHSEP}";
-
- # find the slapd executable
- if (!$versionstr) { # version not specified on cmd line - find it
- $prog = $dir . $progDir . $slapdExecName;
- if (! -f $prog) {
- $prog = $dir . $progDir2 . $slapdExecName;
- if (-f $prog && $isNT) {
- # if slapd is in bin/slapd and we're on NT, just assume version 1;
- # apparently, slapd.exe doesn't like the -v argument . . .
- return ( '1', $minor );
- }
- else{
- die "Could not run slapd program $prog: $!";
- }
- }
- else {
- chdir($dir . $progDir);
- }
- $cur_libpath=$ENV{"$LIB_PATH"};
- $ENV{"$LIB_PATH"}=
- "$dir${PATHSEP}lib${SEP}".
- "$dir${PATHSEP}bin${PATHSEP}slapd${PATHSEP}lib${SEP}".
- "$dir${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server${SEP}".
- $ENV{"$LIB_PATH"};
- # read the old version from the old slapd program
-
- open(F, "${quote}${quote}$prog${quote} -v${quote} 2>&1 |") or
- die "Could not run slapd program $prog: $!";
- sleep(1); # allow some data to accumulate in the pipe
-# print "Output from $prog -v:\n";
- while (<F>) {
- if (/^Netscape-Directory/ || /^iPlanet-Directory/i) {
- $versionstr = $_;
- last;
- }
- }
- $code = close(F);
- # print "$prog returned code=$code status=$?\n";
- $ENV{"$LIB_PATH"}=$cur_libpath;
- }
-
- if ($versionstr =~ /^Netscape-Directory\/(\d+)\.(\d+)(?:b\d)*\s+(\S+)/) {
- $version = $1;
- $minor = $2;
- $buildNumber = $3;
- }
- elsif ($versionstr =~ /^Netscape-Directory\(restrict?ed-mode\)\/(\d+)\.(\d+)\s+(\S+)/) { # we can have restricted-mode or restriced-mode ...
- $version = $1;
- $minor = $2;
- $buildNumber = $3;
- }
- elsif ($versionstr =~ /^iPlanet-Directory\/(\d+)\.(\d+)\s+(\S+)/i) {
- $version = $1;
- $minor = $2;
- $buildNumber = $3;
- } elsif ($versionstr =~ /(\d+)\.(\d+)/) {
- $version = $1;
- $minor = $2;
- }
-
- if ($version == 0) {
- die "\nCould not determine version of the directory server in $dir: \n";
- }
-
- # distinguish the 4.1 and the 4.11 thanks to the buildNumber
- if (($version == 4) && ($minor == 1)){
- if (! ($buildNumber =~ /^B99\.16/)) {
- # it's not a 4.1 Netscape Directory Server => it's a 4.11
- $minor = 11 ;
- }
- }
- chdir($curdir) or die "Could not change directory to $curdir: $!" ;
- return ( $version, $minor );
-}
-
-###############################################################################################
-sub normalizeDir {
- my $dir = shift ;
- my $dir_prec = "" ;
- while ($dir_prec ne $dir) {
- $dir_prec = $dir ;
- if ($isNT) {
- grep { s@\\\\@\\@g } $dir ;
- }
- else {
- grep { s@//@/@g } $dir ;
- }
- }
- return $dir ;
-}
-
-
-###############################################################################################
-
-sub GetTime {
- my $tm = localtime;
- (my $sec, my $min, my $hour, my $dd, my $mm, my $yy) = ($tm->sec, $tm->min, $tm->hour, $tm->mday, ($tm->mon)+1, ($tm->year)+1900);
- $sec = "0$sec" unless $sec > 9 ;
- $min = "0$min" unless $min > 9 ;
- $hour = "0$hour" unless $hour > 9 ;
- $dd = "0$dd" unless $dd > 9 ;
- $mm = "0$mm" unless $mm > 9 ;
- return ($sec, $min, $hour, $dd, $mm, $yy);
-}
-
-###############################################################################################
-# get uid and group id of the 5.x slapd server.
-# The uid is done through the nsslapd-localuser attribute
-
-sub getuid_gid {
- my $newuid ;
- my $newgid ;
- my $localuser ;
- my $localuser_attr = "nsslapd-localuser" ;
- if (! $isNT) {
- &startServer() unless (isDirectoryAlive());
- my $conn = new Mozilla::LDAP::Conn($LDAPservername,$newport,$rootDN,$rootpwd) or die "\n Can't contact the $Version.$Minor LDAP server: $LDAPservername\n";
- my $entry = $conn->search("cn=config ", "base","objectclass=*", 0, ($localuser_attr)) ;
- # Tests wether we succeed to get the entry cn=config
- die "\nCan't get the entry cn=config \n" unless ($entry);
- my @values = $entry->getValues($localuser_attr);
- $conn->close();
- if ($#values == -1 || ($values[0] eq "") ) { # tests wether the nsslapd-localuser attribute has a value
- printMsg("\nNo localuser has been found in the configuration of the directory. ");
- if ($NO_INPUT_USER) {
- printMsg("\nWe considered nobody as the localuser");
- $localuser = "nobody" ;
- }
- else {
- my $Ask = 1 ;
- while ($Ask) {
- printMsg("\nUnder what user does your $Version.$Minor directory server run [nobody] ? ") ;
- $localuser = <STDIN> ;
- chomp($localuser);
- $localuser = "nobody" if ($localuser eq "");
- ($newuid, $newgid) = (getpwnam("$localuser"))[2..3] ;
- if ($newuid) {
- $Ask = 0 ;
- }
- else {
- printMsg("\nError: $localuser is unknown from the system ");
- }
- }
- }
- }
- else {
- $localuser = $values[0]; # returns the first value (we should only have one localuser)
- my $size = $#values ;
- }
- ($newuid, $newgid) = (getpwnam("$localuser"))[2..3] ;
- return ($localuser, $newuid, $newgid) ;
- }
- else {
- return () ;
- }
-}
-
-sub getolduid_gid {
- my $oldlocaluser ;
- my $localuserAttr = "nsslapd-localuser";
- my $entry ;
- if (! $isNT) {
- open( DSELDIF, "< $oldDSEldif" ) || die "Can't open $oldDSEldif: $!: ";
- my $in = new Mozilla::LDAP::LDIF(*DSELDIF) ;
- while ($entry = readOneEntry $in) {
- $typeOfEntry = getTypeOfEntry($entry);
- if ($typeOfEntry eq "CONFIG_NODE") {
- $oldlocaluser = $entry->{$localuserAttr}[0] if ($entry->exists($localuserAttr));
- break ;
- }
- }
- close(DSE);
- ($olduid, $oldgid) = (getpwnam("$oldlocaluser"))[2..3] ;
- return ($oldlocaluser, $olduid, $oldgid) ;
- }
- else {
- return ();
- }
-}
-###############################################################################################
-# get current directory
-
-sub getCwd {
- my $command = $isNT ? "cd" : "/bin/pwd";
- open(PWDCMD, "$command 2>&1 |") or
- die "Error: could not execute $command: $!";
- # without the following sleep, reading from the pipe will
- # return nothing; I guess it gives the pwd command time
- # to get some data to read . . .
- sleep(1);
- my $currentdir;
- while (<PWDCMD>) {
- if (!$currentdir) {
- chomp($currentdir = $_);
- }
- }
- my $code = close(PWDCMD);
-# if ($code || $?) {
-# print "$command returned code=$code status=$? dir=$curdir\n";
-# }
-# print "getCwd curdir=\[$curdir\]\n";
- return $currentdir;
-}
-
-################################
-# Need to migrate the credential.
-# If the credential can not be migrated, leave it at it is
-################################
-sub migrate_credential{
- my $entry_to_modify = shift;
- my $credentials_attr = shift;
- my @old_value = $entry_to_modify->getValues($credentials_attr);
- my $migratecredExecName = 'migratecred';
- my $credOldHome = $oldHome;
- my $credServerHome = $serverHome;
-
- if ($isNT) {
- # oldHome may be pointing to the archived copy of the
- # instance dir which may be different than the path that
- # the instance was originally installed as on Windows. If
- # this path is not the original install path, then the
- # credential will not be migrated correctly. We should
- # prompt the user on Windows for the correct path.
-
- print "\n\nThe old instance path must be the same as where it was";
- print "\ninitially installed, not where it was archived in order";
- print "\nfor this step to succeed. Please verify that the path";
- print "\nis correct. Note that case sensitivity is important here.";
- print "\n\nOld Instance Directory: $credOldHome";
- print "\nIs this correct? (y/n): ";
- chomp(my $answer = <STDIN>);
- if (!($answer =~ /y|yes/i)) {
- print "\nPlease enter the correct path for the old instance directory: ";
- chomp($credOldHome = <STDIN>);
- }
-
- print "\n\nThe new instance path must also be correct for this step";
- print "\nto succeed. Please verify that the path is correct. Note";
- print "\nthat case sensitivity is important here.";
- print "\n\nNew Instance Directory: $credServerHome";
- print "\nIs this correct? (y/n): ";
- chomp(my $answer = <STDIN>);
- if (!($answer =~ /y|yes/i)) {
- print "\nPlease enter the correct path for the new instance directory: ";
- chomp($credServerHome = <STDIN>);
- }
- }
-# print "\nMigratecred command is: ${quote}$root${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server${PATHSEP}$migratecredExecName${quote} -o $credOldHome -n $credServerHome -c @old_value\n";
-
- my @new_cred = `${quote}$root${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server${PATHSEP}$migratecredExecName${quote} -o $credOldHome -n $credServerHome -c @old_value`;
-
- if ( $? == 0 )
- {
- $entry_to_modify->setValues($credentials_attr, @new_cred);
- }
-}
-
diff --git a/ldap/admin/src/scripts/template-migrate6to7 b/ldap/admin/src/scripts/template-migrate6to7
deleted file mode 100644
index 284fac9e..00000000
--- a/ldap/admin/src/scripts/template-migrate6to7
+++ /dev/null
@@ -1,3127 +0,0 @@
-#{{PERL-EXEC}}
-#
-# BEGIN COPYRIGHT BLOCK
-# This Program is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; version 2 of the License.
-#
-# This Program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place, Suite 330, Boston, MA 02111-1307 USA.
-#
-# In addition, as a special exception, Red Hat, Inc. gives You the additional
-# right to link the code of this Program with code not covered under the GNU
-# General Public License ("Non-GPL Code") and to distribute linked combinations
-# including the two, subject to the limitations in this paragraph. Non-GPL Code
-# permitted under this exception must only link to the code of this Program
-# through those well defined interfaces identified in the file named EXCEPTION
-# found in the source code files (the "Approved Interfaces"). The files of
-# Non-GPL Code may instantiate templates or use macros or inline functions from
-# the Approved Interfaces without causing the resulting work to be covered by
-# the GNU General Public License. Only Red Hat, Inc. may make changes or
-# additions to the list of Approved Interfaces. You must obey the GNU General
-# Public License in all respects for all of the Program code and other code used
-# in conjunction with the Program except the Non-GPL Code covered by this
-# exception. If you modify this file, you may extend this exception to your
-# version of the file, but you are not obligated to do so. If you do not wish to
-# provide this exception without modification, you must delete this exception
-# statement from your version and license this file solely under the GPL without
-# exception.
-#
-#
-# Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
-# Copyright (C) 2005 Red Hat, Inc.
-# All rights reserved.
-# END COPYRIGHT BLOCK
-#
-
-# enable the use of our bundled perldap with our bundled ldapsdk libraries
-# all of this nonsense can be omitted if the mozldapsdk and perldap are
-# installed in the operating system locations (e.g. /usr/lib /usr/lib/perl5)
-BEGIN {
- my $sroot = "{{DS-ROOT}}";
- push @INC, "$sroot/lib/perl/arch", "$sroot/lib/perl";
- if ($ENV{LD_LIBRARY_PATH}) {
- $ENV{LD_LIBRARY_PATH} .= ":";
- }
- $ENV{LD_LIBRARY_PATH} .= "$sroot/shared/lib";
- # this is only needed for HP/ux PA-RISC, but it doesn't hurt other platforms
- if ($ENV{SHLIB_PATH}) {
- $ENV{SHLIB_PATH} .= ":";
- }
- $ENV{SHLIB_PATH} .= "$sroot/shared/lib";
-}
-# Migrate a 6.x directory server to a 7.0 directory server
-
-#######################################################################################################
-# enable the use of Perldap functions
-require DynaLoader;
-
-use Getopt::Std;
-use Mozilla::LDAP::Conn;
-use Mozilla::LDAP::Entry;
-use Mozilla::LDAP::LDIF;
-use Mozilla::LDAP::Utils qw(:all);
-use Mozilla::LDAP::API qw(:api :ssl :apiv3 :constant); # Direct access to C API
-use Time::localtime;
-use File::Basename;
-use Class::Struct ;
-
-#######################################################################################################
-
-sub usage {
- print(STDERR "\nUsage: $0 -D rootdn { -w password | -w - | -j filename } -p port \n");
- print(STDERR " -o oldInstancePath -n newInstancePath [-t tracelevel] [-L logfile]\n");
- print(STDERR "************** parameters in brackets are optionals, others are required **************\n");
- print(STDERR " Opts: -D rootdn - new 7.0 Directory Manager\n");
- print(STDERR " : -w password - new 7.0 Directory Manager's password\n");
- print(STDERR " : -w - - Prompt for new 7.0 Directory Manager's password\n");
- print(STDERR " : -j filename - Read new 7.0 Directory Manager's password from file\n");
- print(STDERR " : -p port - new 7.0 Directory Server port\n");
- print(STDERR " : -o oldInstancePath - Path of the old instance to migrate \n");
- print(STDERR " : -n newInstancePath - Path of the new 7.0 instance\n");
- print(STDERR " : [-d dataPath] - Path to directory containing data files to import into new instance\n");
- print(STDERR " : [-v oldVersion] - Version of old instance (obtained by running $slapdExecName -v\n");
- print(STDERR " : [-t tracelevel] - (optional) specify the level of trace (0..3)\n");
- print(STDERR " : [-L logfile] - (optional) specify the file to log the migration report \n");
- }
-########################################################################################################
-
-BEGIN {
-
- require 'uname.lib' ;
- $isNT = -d '\\';
- $PATHSEP = $isNT ? "\\" : "/";
- ${SEP} = $isNT ? ";" : ":" ;
- @INC = ( '.', '../../../admin/admin/bin');
- grep { s@/@\\@g } @INC if $isNT;
- $script_suffix = $isNT ? ".bat" : "";
- $exe_suffix = $isNT ? ".exe" : "";
- # NT needs quotes around some things unix doesn't
- $quote = $isNT ? "\"" : "";
-
- # If this variable is set, all file/directory creation will make sure the mode
- # and ownership of the destination is the same as the source
- $PRESERVE = 1 if (!$isNT);
- $script_suffix = $isNT ? ".bat" : "";
- $exe_suffix = $isNT ? ".exe" : "";
- if ($isNT) {
- $os = "WINNT";
- } else {
- $os = &uname("-s");
- }
- if ($isNT) {
- # we have to pass batch files directly to the NT command interpreter
- $com_spec = $ENV{ComSpec};
- if (!$com_spec) {
- $com_spec = $ENV{COMSPEC};
- }
- if (!$com_spec || ! -f $com_spec) {
- # find the first available command interpreter
- foreach $drive (c..z) {
- $com_spec = "$drive:\\winnt\\system32\\cmd.exe";
- last if (-f $com_spec);
- $com_spec = undef;
- }
- if (! $com_spec) {
- # punt and pray
- $com_spec = 'c:\winnt\system32\cmd.exe';
- }
- }
- }
- if ( $os eq "AIX" ) {
- $dll_suffix = "_shr.a";
- }
- elsif ( $os eq "HP-UX" ) {
- $dll_suffix = ".sl";
- }
- elsif ( $os eq "WINNT" ) {
- $dll_suffix = ".dll";
- }
- else {
- $dll_suffix = ".so";
- }
- $slapdExecName = $isNT ? 'slapd.exe' : './ns-slapd';
- select STDERR;
- $| = 1;
- select STDOUT;
- $| = 1;
-}
-
-SWITCH: {
- if ($os eq "AIX") {
- $LIB_PATH = "LIBPATH" ;
- last SWITCH ;
- }
- if ($os eq "HP-UX") {
- $LIB_PATH = "SHLIB_PATH" ;
- last SWITCH ;
- }
- if ($isNT) {
- $LIB_PATH = "PATH" ;
- last SWITCH ;
- }
- else {
- $LIB_PATH = "LD_LIBRARY_PATH" ;
- last SWITCH ;
- }
- }
-
- # old parameters
- ${oldDir} = "" ;
- ${oldname} = "" ;
- ${oldHome} = "" ;
- ${oldConfDir} = "" ;
- ${oldlocaluser} ;
- ${olduid} ;
- ${oldgid} ;
-
- # new parameters
- ${root} = "{{DS-ROOT}}" ;
- ${type} = "" ;
- ${newname} = "" ;
- ${newport} = "" ;
- ${rootDN} = "" ;
- ${rootpwd} = "" ;
- ${localhost} = "" ;
- ${LogFileReport} = "" ;
- ${newuid} ;
- ${localuser} ;
- ${newgid} ;
- $NO_INPUT_USER = 0 ; # by default user can give inputs during the migration process
- ${curdir} = getCwd();
- ${slapdExecDir} = "${root}${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server${PATHSEP}";
- # in 7.0 the replica Id is setup to a static value
- $replicaIdvalue = 65535;
-
- # specify the level of trace
- $TRACELEVEL=1;
-
- $LDAP_SERVER_UNREACHABLE = 81;
-
- # get input users
- &getParameters() ;
- ${oldDir} = &normalizeDir("${oldDir}");
- ${oldHome} = "${oldDir}${PATHSEP}$type-$oldname" ;
- ${oldConfDir} = "${oldHome}${PATHSEP}config${PATHSEP}" ;
- ${oldSchemaDir} = "${oldConfDir}schema${PATHSEP}";
- ${oldDSEldif} = "${oldConfDir}dse.ldif";
- ${serverHome} = "${root}${PATHSEP}$type-$newname" ;
- ${schemaDir} = "$serverHome${PATHSEP}config${PATHSEP}schema${PATHSEP}";
- ${DSEldif} = "$serverHome${PATHSEP}config${PATHSEP}dse.ldif";
- ${ldif_rep} = "${oldConfDir}ldif${PATHSEP}" ;
- ${oldSlapdExecDir} = "${oldDir}${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server${PATHSEP}";
-
- open(LOGFILE, ">> $LogFileReport");
-
- printTrace("\noldDir: $oldDir, oldHome: $oldHome, \noldConfDir: $oldConfDir, \nldif_rep: $ldif_rep, \nrootDN: $rootDN, \nPort: $newport, \nNewname: $newname\n",3);
- printTrace("\nLIB_PATH: $LIB_PATH",4);
-
- if (!(-d $serverHome)) {
- printMsg("\n$serverHome doesn't exist\n");
- exit(1);
- }
- if (!(-d $oldHome)) {
- printMsg("\n$oldHome doesn't exist\n");
- exit(1);
- }
-
- if ($olddatadir && !(-d $olddatadir)) {
- print("\n$olddatadir doesn't exist\n");
- exit(1);
- }
-
-
-%HashParametersName = ();
-
-# The following hash displays only general server parameters to migrate under cn=config
-%GeneralSrvParamToMigrate = (
- 'nsslapd-accesscontrol'=> '\n',
- 'nsslapd-errorlog-logging-enabled'=> '\n',
- 'nsslapd-accesslog-logging-enabled'=> '\n',
- 'nsslapd-auditlog-logging-enabled'=> '\n',
- 'nsslapd-accesslog-level'=> '\n',
- 'nsslapd-accesslog-logbuffering'=> '\n',
- 'nsslapd-accesslog-logexpirationtime'=> '\n',
- 'nsslapd-accesslog-logexpirationtimeunit'=> '\n',
- 'nsslapd-accesslog-logmaxdiskspace'=> '\n',
- 'nsslapd-accesslog-logminfreediskspace'=> '\n',
- 'nsslapd-accesslog-logrotationtime'=> '\n',
- 'nsslapd-accesslog-logrotationtimeunit'=> '\n',
- 'nsslapd-accesslog-maxlogsize'=> '\n',
- 'nsslapd-accesslog-maxLogsPerDir'=> '\n',
- 'nsslapd-attribute-name-exceptions'=> '\n',
- 'nsslapd-auditlog-logexpirationtime'=> '\n',
- 'nsslapd-auditlog-logexpirationtimeunit'=> '\n',
- 'nsslapd-auditlog-logmaxdiskspace'=> '\n',
- 'nsslapd-auditlog-logminfreediskspace'=> '\n',
- 'nsslapd-auditlog-logrotationtime'=> '\n',
- 'nsslapd-auditlog-logrotationtimeunit'=> '\n',
- 'nsslapd-auditlog-maxlogsize'=> '\n',
- 'nsslapd-auditlog-maxLogsPerDir'=> '\n',
- 'nsslapd-certmap-basedn'=> '\n',
- 'nsslapd-ds4-compatible-schema'=> '\n',
- 'nsslapd-enquote-sup-oc'=> '\n',
- 'nsslapd-errorlog-level'=> '\n',
- 'nsslapd-errorlog-logexpirationtime'=> '\n',
- 'nsslapd-errorlog-logexpirationtimeunit'=> '\n',
- 'nsslapd-errorlog-logmaxdiskspace'=> '\n',
- 'nsslapd-errorlog-logminfreediskspace'=> '\n',
- 'nsslapd-errorlog-logrotationtime'=> '\n',
- 'nsslapd-errorlog-logrotationtimeunit'=> '\n',
- 'nsslapd-errorlog-maxlogsize'=> '\n',
- 'nsslapd-errorlog-maxlogsperdir'=> '\n',
- 'nsslapd-groupevalnestlevel'=> '\n',
- 'nsslapd-idletimeout'=> '\n',
- 'nsslapd-ioblocktimeout'=> '\n',
- 'nsslapd-lastmod'=> '\n',
- 'nsslapd-listenhost'=> '\n',
- 'nsslapd-maxdescriptors'=> '\n',
- 'nsslapd-nagle'=> '\n',
- 'nsslapd-readonly'=> '\n',
- 'nsslapd-referralmode'=> '\n',
- 'nsslapd-plugin-depends-on-name'=> '\n',
- 'nsslapd-plugin-depends-on-type'=> '\n',
- 'nsslapd-referral'=> '\n',
- 'nsslapd-reservedescriptors'=> '\n',
- 'nsslapd-rootpwstoragescheme'=> '\n',
- 'nsslapd-schemacheck'=> '\n',
- 'nsslapd-secureport'=> '\n',
- 'nsslapd-security'=> '\n',
- 'nsslapd-sizelimit'=> '\n',
- 'nsslapd-ssl3ciphers'=> '\n',
- 'nsslapd-timelimit'=> '\n',
- 'passwordchange'=> '\n',
- 'passwordchecksyntax'=> '\n',
- 'passwordexp'=> '\n',
- 'passwordhistory'=> '\n',
- 'passwordinhistory'=> '\n',
- 'passwordlockout'=> '\n',
- 'passwordlockoutduration'=> '\n',
- 'passwordmaxage'=> '\n',
- 'passwordmaxfailure'=> '\n',
- 'passwordminage'=> '\n',
- 'passwordminlength'=> '\n',
- 'passwordmustchange'=> '\n',
- 'passwordresetfailurecount' => '\n',
- 'passwordstoragescheme' => '\n',
- 'passwordunlock' => '\n',
- 'passwordwarning' => '\n'
-);
-
-# the following hash displays global parameters related to database stored under cn=config,cn=ldbm database,cn=plugins,cn=config
-%GlobalConfigLDBMparamToMigrate = (
- 'nsslapd-allidsthreshold' => '\n',
- 'nsslapd-lookthroughlimit' => '\n',
- 'nsslapd-mode' => '\n',
- 'nsslapd-dbcachesize' => '\n',
- 'nsslapd-cache-autosize' => '\n',
- 'nsslapd-cache-autosize-split' => '\n',
- 'nsslapd-db-transaction-logging' => '\n',
- 'nsslapd-import-cachesize' => '\n'
-);
-
-# the following hash displays specific parameters to each backends and stored under cn=DBname,cn=ldbm database,cn=plugins,cn=config
-%LDBMparamToMigrate = (
- 'nsslapd-cachesize' => '\n',
- 'nsslapd-cachememsize' => '\n',
- 'nsslapd-readonly' => '\n',
- 'nsslapd-require-index' => '\n'
-);
-
-
-%ChainingConfigParams = (
- 'nsactivechainingcomponents' => '\n',
- 'nstransmittedcontrols' => '\n'
- );
-
-%ChainingDefaultInstanceConfigParams = (
- 'nsabandonedsearchcheckinterval' => '\n',
- 'nsbindconnectionslimit' => '\n',
- 'nsbindtimeout' => '\n',
- 'nsbindretrylimit' => '\n',
- 'nshoplimit' => '\n',
- 'nsmaxresponsedelay' => '\n',
- 'nsmaxtestresponsedelay' => '\n',
- 'nschecklocalaci' => '\n',
- 'nsconcurrentbindlimit' => '\n',
- 'nsconcurrentoperationslimit' => '\n',
- 'nsconnectionlife' => '\n',
- 'nsoperationconnectionslimit' => '\n',
- 'nsproxiedauthorization' => '\n',
- 'nsreferralonscopedsearch' => '\n',
- 'nsslapd-sizelimit' => '\n',
- 'nsslapd-timelimit' => '\n'
-);
-
-%changelog5params = (
- 'nsslapd-changelogmaxage' => '\n',
- 'nsslapd-changelogmaxentries' => '\n'
- );
-
-@SNMPparams = (
- 'nssnmpenabled',
- 'nssnmporganization',
- 'nssnmplocation',
- 'nssnmpcontact',
- 'nssnmpdescription',
- 'nssnmpmasterhost',
- 'nssnmpmasterport',
- 'nssnmpenabled',
- 'aci'
- );
-
-%stdIncludes = (
- "." => "\n",
- ".." => "\n",
- "30ns-common.ldif " => "\n",
- "50ns-mail.ldif " => "\n",
- "50ns-news.ldif" => "\n",
- "50iplanet-servicemgt.ldif"=> "\n",
- "50netscape-servicemgt.ldif"=> "\n",
- "50ns-mcd-browser.ldif" => "\n",
- "50ns-proxy.ldif" => "\n",
- "00core.ldif" => "\n",
- "50ns-admin.ldif" => "\n",
- "50ns-mcd-config.ldif " => "\n",
- "50ns-value.ldif" => "\n",
- "05rfc2247.ldif" => "\n",
- "50ns-calendar.ldif" => "\n",
- "50ns-mcd-li.ldif" => "\n",
- "50ns-wcal.ldif" => "\n",
- "05rfc2927.ldif" => "\n",
- "50ns-certificate.ldif" => "\n",
- "50ns-mcd-mail.ldif" => "\n",
- "50ns-web.ldif" => "\n",
- "10rfc2307.ldif" => "\n",
- "50ns-compass.ldif" => "\n",
- "50ns-media.ldif" => "\n",
- "20subscriber.ldif" => "\n",
- "50ns-delegated-admin.ldif"=> "\n",
- "50ns-mlm.ldif" => "\n",
- "25java-object.ldif" => "\n",
- "50ns-directory.ldif" => "\n",
- "50ns-msg.ldif" => "\n",
- "28pilot.ldif" => "\n",
- "50ns-legacy.ldif" => "\n",
- "50ns-netshare.ldif" => "\n"
-);
-
-
-# Backends migrated (Backend CN attribute value)
-@BACKENDS = () ;
-# All pairs of suffix-backend are registered in this hashtable
-%oldBackends = () ;
-
-#store the backend instances to migrate
-@LDBM_backend_instances = ();
-
-#store the mapping tree
-@Mapping_tree_entries = ();
-
-#store the suffix and the associated chaining backend
-%oldChainingBackends = ();
-
-#store the multiplexor bind entries to migrate
-%MultiplexorBindDNEntriesToMigrate = ();
-
-#store the Replica bind DN entries to migrate
-%ReplicaBindDNEntriesToMigrate = ();
-
-# list of standard plugins
-%stdPlugins = (
- "7-bit check" => "\n",
- "acl plugin" => "\n",
- "acl preoperation" => "\n",
- "binary syntax" => "\n",
- "case exact string syntax" => "\n",
- "case ignore string syntax" => "\n",
- "chaining database" => "\n",
- "class of service" => "\n",
- "country string syntax" => "\n",
- "distinguished name syntax" => "\n",
- "generalized time syntax" => "\n",
- "integer syntax" => "\n",
- "internationalization plugin" => "\n",
- "ldbm database" => "\n",
- "legacy replication plugin" => "\n",
- "multimaster replication plugin" => "\n",
- "octet string syntax" => "\n",
- "clear" => "\n",
- "crypt" => "\n",
- "ns-mta-md5" => "\n",
- "sha" => "\n",
- "ssha" => "\n",
- "postal address syntax" => "\n",
- "referential integrity postoperation" => "\n",
- "retro changelog plugin" => "\n",
- "roles plugin" => "\n",
- "telephone syntax" => "\n",
- "uid uniqueness" => "\n",
- "uri syntax" => "\n"
- );
-
-# list of indexes that have disappeared from the new schema compared to 6.x
-%deniedIndexes = (
- 'dncomp' => "\n"
-);
-
-@default_indexes = ();
-@indexes = ();
-
-# list of user added Plugin's. In 7.0, they 'll need to be recompiled
-@badPlugins = () ;
-
-@pluginAttrs = (
- "objectclass",
- "cn",
- "nsslapd-pluginpath",
- "nsslapd-plugininitfunc",
- "nsslapd-plugintype",
- "nsslapd-pluginenabled",
- "nsslapd-plugin-depends-on-type",
- "nsslapd-pluginid",
- "nsslapd-pluginversion",
- "nsslapd-pluginvendor"
- );
-
-@nsds5replicaAttrs = (
- 'objectclass',
- 'nsDS5ReplicaName',
- 'nsDS5ReplicaRoot',
- 'nsDS5ReplicaType',
- 'nsDS5ReplicaLegacyConsumer',
- 'nsDS5flags',
- 'nsDS5ReplicaId',
- 'nsDS5ReplicaPurgeDelay',
- 'nsDS5ReplicaBinddn',
- 'cn',
- 'nsDS5ReplicaReferral'
- );
-
-# array of replicas to migrate
-@new6replicas = ();
-
-# array of replication agreements to migrate
-@replicationAgreements = ();
-
-# compare LDIF standard config files with standard ones
-CompareStdConfigFiles() ;
-die "\n\n The version of product you want to migrate is not a 6.x Directory Server\n" unless ($oldVersion == 6) ;
-
-# Shutdown the legacy Directory instance
-printTrace("\nShutdown the legacy Directory Server instance: ${oldHome}",0);
-&stopServer($oldDir, 'slapd-'.$oldname);
-
-# get the hostname of the new LDAP server
-my $LDAPservername = &getLDAPservername();
-
-# get the uid and gid of the 7.0 slapd user
-($localuser, $newuid, $newgid) = getuid_gid();
-# get the uid and gid of the 6.x slapd user
-($oldlocaluser, $olduid, $oldgid) = getolduid_gid();
-printTrace("\n7.0 localuser: $localuser, uid: $newuid, gid: $newgid",2);
-printTrace("\n6.x localuser: $oldlocaluser, uid: $olduid, gid: $oldgid",2);
-
-# backup 7.0 configuration files in <6server_root>/slapd-instancename/config
-printTrace("\nBackup $serverHome${PATHSEP}config on $serverHome${PATHSEP}config_backup ...",0);
-&backupConfigFiles();
-
-# migrate the schema (need to stop and start the 7.0 server)
-printTrace("\nMigrate the schema...",0);
-MigrateSchema();
-
-#migrate key/cert databases
-# We will migrate the key/cert databases before the dse file because the
-# dse migration may cause SSL to be enabled.
-printTrace("\n\nMigrate key/cert databases...",0,1);
-&MigrateSSL();
-
-# start the server unless it is already started
-&startServer() unless (isDirectoryAlive());
-
-############### Connect to the 7.0 LDAP Directory Server ######################
-$ENV{"$LIB_PATH"} = $new_libpath;
-
-die "\n Migration aborted. Make sure your old and new Directory Server are installed on the same machine \n" if ( $LDAPservername == -1 );
-$conn = new Mozilla::LDAP::Conn($LDAPservername,$newport,$rootDN,$rootpwd) or die "\n Unable to contact the $Version.$Minor LDAP server: $LDAPservername\n";
-
-# Cconnection to 7.0 LDAP server is successful !
-printTrace("\nConnected to $Version.$Minor LDAP server",0) ;
-
-# Parse the main configuration file: dse.ldif
-printTrace("\n\nParse the old DSE ldif file: $oldDSEldif *****",0, 1);
-printTrace("\nThis may take a while ...\n",0);
-&MigrateDSEldif();
-
-#migrate LDBM backend instances
-printTrace("\n\nMigrate LDBM backend instances...",0,1);
-&migrateLDBM_backend_instances();
-
-#migrate mapping tree entries
-printTrace("\n\nMigrate mapping tree...",0,1);
-&migrateMappingTree();
-
-#migrate default indexes
-printTrace("\n\nMigrate default indexes...",0,1);
-migrateDefaultIndexes();
-
-#migrate indexes
-printTrace("\n\nMigrate indexes...",0,1);
-migrateIndexes();
-
-#migrate replicas
-printTrace("\n\nMigrate replicas...",0,1);
-&MigrateNSDS5_replica();
-
-#migrate replication agreements
-printTrace("\n\nMigrate replication agreements...",0,1);
-&MigrateNSDS_replication_agreement();
-
-# migrate certmap.conf
-printTrace("\n\nMigrate Certmap.conf...",0,1);
-&MigrateCertmap() ;
-
-################## Close the connection to 7.0 LDAP Server #####################
-printTrace("\n\n***** Close the LDAP connection to the new Directory Server instance ***** ",0);
-$conn->close;
-
-
-################## stop the new instance and Export/Import the data, restart the server ##################
-if (@BACKENDS) {
- &stopServer($root,'slapd-'.$newname);
- if ($olddatadir) {
- printTrace("\nData already contained in $olddatadir...\n",0,1) ;
- $ldif_rep = "$olddatadir${PATHSEP}";
- } else {
- printTrace("\nData processing...\n",0,1) ;
- # migrate data for each backend: 6.x -> LDIF files
- &manydb2Ldif($ldif_rep);
- }
-
- # migrate LDIF data to the new database: LDIF -> New
- &manyLdif2db($ldif_rep);
- &migrateChangelog();
- printTrace("\n***** Migrate ReplicaBindDN entries...\n",0,1);
- &importReplicaBindDNEntries();
- printTrace("\n***** Migrate MultiplexorBindDN entries...\n",0,1);
- &importMultiplexorBindDNEntries();
- &startServer() unless (isDirectoryAlive());
-}
-else {
- printTrace("\nINFORMATION - There are no non-standard or non-already existing suffixes to migrate\n",0);
- &migrateChangelog();
- printTrace("\n***** Migrate ReplicaBindDN entries...\n",0,1);
- &importReplicaBindDNEntries();
- printTrace("\n***** Migrate MultiplexorBindDN entries...\n",0,1);
- &importMultiplexorBindDNEntries();
-}
-
-printMsg("\n\n ****** End of migration ******\n\n");
-
-close(LOGFILE);
-
-
-###########################################################################################
-# get input users
-sub getParameters {
- my $exit = 0 ;
- my $i = 0;
- my $pwdfile= "";
-
- while ($i <= $#ARGV) {
- if ( "$ARGV[$i]" eq "-D" ) { # directory manager
- if (! $rootDN) {
- $rootDN = $ARGV[++$i] ;
- }
- else {
- &usage() ;
- exit(1);
- }
- } elsif ("$ARGV[$i]" eq "-w") { # password
- if (! $rootpwd) {
- $rootpwd = $ARGV[++$i] ;
- }
- else {
- &usage() ;
- exit(1);
- }
- } elsif ("$ARGV[$i]" eq "-j") { # password file
- if (! $pwdfile) {
- $pwdfile = $ARGV[++$i] ;
- }
- else {
- &usage() ;
- exit(1);
- }
- } elsif ("$ARGV[$i]" eq "-o") { # old instance path
- if (! $oldHome ) {
- $oldHome = $ARGV[++$i] ;
- grep { s@\\@/@g } $oldHome if $isNT ;
- if ($oldHome =~ /[\"]?(.*)?[\"]?/) { $oldHome = $1 ; }
- if ($oldHome =~ m@^(.*)/([^-/]*)-([^/]*)[/]?$@) {
- $oldDir = $1 ;
- $type = $2 ;
- $oldname = $3 ;
- if ($isNT) {
- $oldDir = lc($oldDir) ;
- $type = lc($type) ;
- $oldname = lc($oldname) ;
- $oldHome = lc($oldHome) ;
- grep { s@/@\\@g } $oldDir ;
- grep { s@/@\\@g } $oldHome ;
- }
- }
- else {
- print("\nThe old instance path is not correct. It must be like slapd-instancename");
- &usage();
- exit(1);
- }
- }
- else {
- &usage() ;
- exit(1);
- }
- } elsif ("$ARGV[$i]" eq "-n") { # new instance path
- if (! $serverHome ) {
- $serverHome = $ARGV[++$i] ;
- grep { s@\\@/@g } $root if $isNT ;
- grep { s@\\@/@g } $serverHome if $isNT ;
- if ($serverHome =~ /[\"]?(.*)?[\"]?/) { $serverHome = $1 ; }
- if ($serverHome =~ m@^(.*?)/?([^/-]*)-([^/]*)[/]?$@) {
- $root = $1 if ($1);
- $type = $2 ;
- $newname = $3 ;
- if ($isNT) {
- $root = lc($root) ;
- $type = lc($type) ;
- $newname = lc($newname) ;
- $serverHome = lc($serverHome) ;
- grep { s@/@\\@g } $root ;
- grep { s@/@\\@g } $serverHome ;
- }
- }
- else {
- print("\nThe new instance path is not correct. It must be like slapd-instancename");
- &usage();
- exit(1);
- }
- }
- else {
- &usage() ;
- exit(1);
- }
- } elsif ("$ARGV[$i]" eq "-p") { # new DS port
- if (! $newport ) {
- $newport = $ARGV[++$i] ;
- }
- else {
- &usage() ;
- exit(1);
- }
- } elsif ("$ARGV[$i]" eq "-d") { # old instance LDIF data dir
- if (! $olddatadir ) {
- $olddatadir = $ARGV[++$i] ;
- }
- else {
- &usage() ;
- exit(1);
- }
- } elsif ("$ARGV[$i]" eq "-v") { # old version
- if (! $oldversionstr ) {
- $oldversionstr = $ARGV[++$i] ;
- }
- else {
- &usage() ;
- exit(1);
- }
- } elsif ("$ARGV[$i]" eq "-t") { # TRACELEVEL
- my $value = $ARGV[++$i] ;
- if ($value =~ /[0-3]/) {
- $TRACELEVEL = $value ;
- }
- else {
- print("\nThe tracelevel must belong to 0..3 interval");
- &usage();
- exit();
- }
- } elsif ("$ARGV[$i]" eq "-noinput") { # no user interventions during processing
- $NO_INPUT_USER = 1 ;
- } elsif ("$ARGV[$i]" eq "-L") { # migration logfile
- $LogFileReport = $ARGV[++$i] ;
- }
- else {
- print("\nThe option $ARGV[$i] is not recognized");
- &usage() ;
- exit(1);
- }
- $i++;
- }
- if (! $rootDN) {
- print("\nThe rootDN is missing");
- $exit = 1;
- }
- if ($pwdfile ne "") {
- # Open file and get the password
- unless (open (RPASS, $pwfile)) {
- die "Error, cannot open password file $passwdfile\n";
- }
- $rootpwd = <RPASS>;
- chomp($rootpwd);
- close(RPASS);
- } elsif ($rootpwd eq "-"){
- # Read the password from terminal
- die "The '-w -' option requires an extension library (Term::ReadKey) which is not\n",
- "part of the standard perl distribution. If you want to use it, you must\n",
- "download and install the module. You can find it at\n",
- "http://www.perl.com/CPAN/CPAN.html\n";
- # Remove the previous line and uncomment the following 6 lines once you have installed Term::ReadKey module.
-# use Term::ReadKey;
-# print "Bind Password: ";
-# ReadMode('noecho');
-# $rootpwd = ReadLine(0);
-# chomp($rootpwd);
-# ReadMode('normal');
- }
- if (! $rootpwd) {
- print("\nThe rootpwd is missing");
- $exit = 1 ;
- }
- if (! $newport) {
- print("\nThe port is missing");
- $exit = 1;
- }
- if (! $serverHome) {
- print("\nThe new instance path is missing");
- $exit = 1;
- }
- if (! $oldHome) {
- print("\nThe old instance path is missing");
- $exit = 1;
- }
- if ((! $LogFileReport) && $serverHome) {
- ($sec, $min, $hour, $dd, $mm, $yy) = &GetTime();
- $LogFileReport = "${serverHome}${PATHSEP}logs${PATHSEP}Migration_${dd}${mm}${yy}_${hour}${min}${sec}.log";
- }
- if ($exit) {
- &usage() ;
- exit(1);
- }
-
-}
-
-###################################################################################################
-
-sub MigrateSchema{
- my $FilesChanged = "";
- my $AllDiffs = "";
- my $NoChanges = "" ;
- my $lineToBegin = 0 ;
- opendir(SCHEMADIR, $oldSchemaDir) or
- die "Error: could not open migrated config dir $oldSchemaDir: $!";
-
- foreach $file (readdir(SCHEMADIR)) {
- if (! exists($stdIncludes{lc($file)})) {
- my $newSchemaFile = $schemaDir . $file;
- if (-f $newSchemaFile ) {
- # The ldif file already exists. Make a diff and warn the user if different.
- if (diff($newSchemaFile, $oldSchemaDir.$file)) {
- &stopServer($root,'slapd-'.$newname) if (isDirectoryAlive());
- $AllDiffs .= "\n$file";
- copyBinFile("$oldSchemaDir$file", $newSchemaFile);
- }
- }
- else {
- &stopServer($root,'slapd-'.$newname) if (isDirectoryAlive());
- $AllDiffs .= "\n$file";
- copyBinFile("$oldSchemaDir$file", $newSchemaFile);
- }
- }
- }
- closedir(SCHEMADIR);
- if ($AllDiffs) {
- printMsg("\n\n***********************************************************************");
- printMsg("\nThe following LDIF files have been migrated:");
- printMsg("$AllDiffs");
- printMsg("\n*************************************************************************\n\n");
- }
- &startServer() if (! isDirectoryAlive());
-}
-
-
-###################################################################################################
-# This subroutine is used to parse the dse.ldif file and call specific routines to act with entries
-sub MigrateDSEldif {
- printTrace("\nMigrate DSE entries...",1);
- my $tempoAlreadyDone = 0;
- open( DSELDIF, "< $oldDSEldif" ) || die "Can't open $oldDSEldif: $!: ";
- my $in = new Mozilla::LDAP::LDIF(*DSELDIF) ;
- while ($entry = readOneEntry $in) {
- $typeOfEntry = getTypeOfEntry($entry);
- SWITCH: {
- if ($typeOfEntry eq "LDBM_BACKEND_INSTANCE"){
- parseLDBM_backend_instance($entry);
- last SWITCH;
- }
- if ($typeOfEntry eq "MAPPING_TREE"){
- parseMapping_tree($entry);
- last SWITCH;
- }
- if ($typeOfEntry eq "DEFAULT_INDEX"){
- parseDefaultIndex($entry);
- last SWITCH;
- }
- if ($typeOfEntry eq "INDEX"){
- parseIndex($entry);
- last SWITCH;
- }
- if ($typeOfEntry eq "STANDARD_PLUGIN"){
- migrateStdPlugin($entry);
- last SWITCH;
- }
- if ($typeOfEntry eq "CONFIG_NODE"){
- migrateConfig_Node($entry);
- last SWITCH;
- }
- if ($typeOfEntry eq "CONFIG_LDBM_DATABASE"){
- migrateConfig_LDBM_database($entry);
- last SWITCH;
- }
- if ($typeOfEntry eq "CHAINING_BACKEND_CONFIG"){
- migrateChainingBE_config($entry);
- last SWITCH;
- }
- if ($typeOfEntry eq "CHAINING_BACKEND_INSTANCE"){
- migrateChainingBE_instance($entry);
- last SWITCH;
- }
- if ($typeOfEntry eq "NSDS5_REPLICA"){
- parseNSDS5_replica($entry);
- last SWITCH;
- }
- if ($typeOfEntry eq "NSDS_REPLICATION_AGREEMENT"){
- parseNSDS_replication_agreement($entry);
- last SWITCH;
- }
- if ($typeOfEntry eq "CHANGELOG5"){
- migrateChangelog5($entry);
- last SWITCH;
- }
- if ($typeOfEntry eq "REPLICATION"){
- migrateReplication($entry);
- last SWITCH;
- }
- if ($typeOfEntry eq "SECURITY"){
- migrateSecurity($entry);
- last SWITCH;
- }
- if ($typeOfEntry eq "SNMP"){
- migrateSNMP($entry);
- last SWITCH;
- }
- }
-
- }
- close(DSELDIF);
-}
-
-#############################################################################
-# returns the "type of an entry". If the entry is not to be migrated its type is "NOT_MIGRATED_TYPE"
-
-sub getTypeOfEntry{
- my $entry = shift;
- my $DN = $entry->getDN(1) ; # 1 is to normalize the returned DN
- if (($DN =~ /cn=ldbm database,cn=plugins,cn=config$/i) && (isObjectclass($entry,"nsBackendInstance"))) {
- return "LDBM_BACKEND_INSTANCE";
- }
- if (($DN =~ /cn=mapping tree,cn=config$/i) && (isObjectclass($entry,"nsMappingTree"))) {
- return "MAPPING_TREE";
- }
- if (($DN =~ /cn=default indexes,cn=config,cn=ldbm database,cn=plugins,cn=config$/i) && (isObjectclass($entry,"nsIndex"))) {
- return "DEFAULT_INDEX";
- }
- if (isObjectclass($entry,"nsIndex")) {
- return "INDEX";
- }
- if ((isObjectclass($entry,"nsSlapdPlugin")) && (isStdPlugin($entry))) {
- return "STANDARD_PLUGIN";
- }
- if ($DN =~ /^cn=config$/i) {
- return "CONFIG_NODE";
- }
- if ($DN =~ /^cn=config,cn=ldbm database,cn=plugins,cn=config$/i) {
- return "CONFIG_LDBM_DATABASE";
- }
- if (($DN =~ /^cn=config,cn=chaining database,cn=plugins,cn=config$/i) || ($DN =~ /^cn=default instance config,cn=chaining database,cn=plugins,cn=config$/i)){
- return "CHAINING_BACKEND_CONFIG";
- }
- if (($DN =~ /cn=chaining database,cn=plugins,cn=config$/i) && (isObjectclass($entry,"nsBackendInstance"))) {
- return "CHAINING_BACKEND_INSTANCE";
- }
- if (isObjectclass($entry,"nsDS5Replica")) {
- return "NSDS5_REPLICA";
- }
- if (isObjectclass($entry,"nsDS5ReplicationAgreement")) {
- return "NSDS_REPLICATION_AGREEMENT";
- }
- if ($DN =~ /^cn=changelog5,cn=config$/i) {
- return "CHANGELOG5";
- }
- if (($DN =~ /cn=replication,cn=config$/i) && ($DN !~ /^cn=replication,cn=config$/i)) {
- return "REPLICATION";
- }
- if ($DN =~ /cn=encryption,cn=config$/i) {
- return "SECURITY";
- }
- if ($DN =~ /^cn=SNMP,cn=config$/i) {
- return "SNMP";
- }
- return "NOT_MIGRATED_TYPE";
-}
-
-#############################################################################
-
-
-
-#############################################################################
-# returns 1 if the objectclass given in parameter is present in the objectclasses values of the entry
-# given in parameter, 0 else
-
-sub isObjectclass {
- my $entry = shift;
- my $objectclass = shift;
- return ($entry->hasValue("objectclass",$objectclass,1));
-}
-
-#############################################################################
-
-sub isStdPlugin {
- my $entry = shift;
- my $CN = $entry->{cn}[0];
- if (isObjectclass($entry,"nsSlapdPlugin")) {
- return 1 if ($stdPlugins{lc($CN)});
- }
- return 0;
-}
-
-
-#############################################################################
-
-sub alreadyExistsInNew{
- my $entry = shift;
- my $mustExist = shift;
- my $DN = $entry->getDN(1); # 1 to normalize the DN
- # We have a name change of "uid uniqueness" plugin in DS6.x
- # to "attribute uniqueness"
- $DN =~ s/uid\ uniqueness/attribute\ uniqueness/ if ($DN =~ /uid\ uniqueness/);
- return searchEntry($DN, $mustExist);
-}
-
-#############################################################################
-sub searchEntry {
- my $DN = shift;
- my $mustExist = shift;
- my $res = $conn->search($DN, "base", "objectclass=*");
- my $cpt = 5;
- if ($res) {
- return $res;
- }
- else {
- my $errorCode = $conn->getErrorCode();
- while (($errorCode eq $LDAP_SERVER_UNREACHABLE) && cpt && (! $res)) {
- printMsg("\ntry to reconnect to search $DN");
- $conn = new Mozilla::LDAP::Conn($LDAPservername,$newport,$rootDN,$rootpwd) or die "\n Unable to contact the $Version.$Minor LDAP server: $LDAPservername\n";
- $res = $conn->search($DN, "base", "objectclass=*");
- $errorCode = $conn->getErrorCode();
- $cpt--;
- }
- if ($res){
- return $res ;
- }
- elsif (($errorCode eq $LDAP_SERVER_UNREACHABLE) || ($mustExist)) {
- my $msg = $conn->getErrorString();
- printMsg("\n\n*** Failed to search: $DN");
- printMsg("\n*** Error Msg: $msg, Error code: $errorCode");
- }
- return 0;
- }
-}
-
-
-#############################################################################
-
-sub addEntryToNew{
- my $entry = shift;
- my $typeOfEntry = shift;
- my $trace = shift;
- my $res = $conn->add($entry);
- my $DN = $entry->getDN(1);
- my $cpt = 5;
- if ($res) {
- printTrace("\n$typeOfEntry - Add successfull: $DN",$trace);
- return 1;
- }
- else {
- my $errorCode = $conn->getErrorCode();
- while (($errorCode eq $LDAP_SERVER_UNREACHABLE) && cpt && (! $res)) {
- printMsg("\ntry to reconnect to add $DN");
- $conn = new Mozilla::LDAP::Conn($LDAPservername,$newport,$rootDN,$rootpwd) or die "\n Unable to contact the $Version.$Minor LDAP server: $LDAPservername\n";
- $res = $conn->add($entry);
- $errorCode = $conn->getErrorCode();
- $cpt--;
- }
- if ($res){
- printTrace("\n$typeOfEntry - Add successfull: $DN",$trace);
- return 1;
- }
- else {
- my $msg = $conn->getErrorString();
- printMsg("\n\n*** $typeOfEntry: Add Failed: $DN");
- printMsg("\n*** Error Msg: $msg, Error code: $errorCode");
- return 0;
- }
- }
-}
-
-#############################################################################
-
-sub updateEntry{
- my $entry = shift;
- my $typeOfEntry = shift;
- my $CHECK = shift;
- my $trace = shift;
- my $cpt = 5;
- if ($CHECK) {
- if (! hasChanged($entry, $typeOfEntry)) {
- return 1;
- }
- }
- my $res = $conn->update($entry);
- my $DN = $entry->getDN(1);
- if ($res) {
- printTrace("\n$typeOfEntry - Update successfull: $DN",$trace);
- return 1 ;
- }
- else {
- my $errorCode = $conn->getErrorCode();
- while (($errorCode eq $LDAP_SERVER_UNREACHABLE) && cpt && (! $res)) {
- printMsg("\ntry to reconnect to update $DN");
- $conn = new Mozilla::LDAP::Conn($LDAPservername,$newport,$rootDN,$rootpwd) or die "\n Unable to contact the $Version.$Minor LDAP server: $LDAPservername\n";
- $res = $conn->update($entry);
- $errorCode = $conn->getErrorCode();
- $cpt--;
- }
- if ($res){
- printTrace("\n$typeOfEntry - Update successfull: $DN",$trace);
- return 1;
- }
- else {
- my $msg = $conn->getErrorString();
- printMsg("\n\n*** $typeOfEntry - Update Failed: $DN");
- printMsg("\n*** Error Msg: $msg, Error code: $errorCode");
- return 0;
- }
- }
-}
-
-
-#############################################################################
-# returns 1 if the entry to migrate and the current entry are different one another
-
-sub hasChanged {
- my $entry = shift;
- my $typeOfEntry = shift;
- my $DN = $entry->getDN(1);
- my $newEntry = searchEntry($DN,1);
- return 1 if (! $newEntry); # we shoudn't be in that case ...
- # do the stuff to check wether the entry has changed or not given its type
- if (($typeOfEntry eq "DEFAULT_INDEX") || ($typeOfEntry eq "INDEX")){
- my @indexTypes = $entry->getValues("nsIndexType");
- my @newIndexTypes = $newEntry->getValues("nsIndexType");
- my @nsmatchingrules = $entry->getValues("nsmatchingrule");
- my @newMatchingRules = $newEntry->getValues("nsmatchingrule");
- return 1 if (Diffs(\@indexTypes, \@newIndexTypes));
- return 1 if (Diffs(\@nsmatchingrules,\@newMatchingRules));
- return 0;
- }
- if ($typeOfEntry eq "CHANGELOG5"){
- printTrace("\nCheck wether changelog has changed or not",3);
- my @params = keys(%changelog5params);
- foreach $param (@params){
- my @values = $entry->getValues($param);
- my @newValues = $newEntry->getValues($param);
- return 1 if (Diffs(\@values,\@newValues));
- }
- return 0;
- }
- if ($typeOfEntry eq "SNMP"){
- foreach $param (@SNMPparams){
- my @values = $entry->getValues($param);
- my @newValues = $newEntry->getValues($param);
- return 1 if (Diffs(\@values,\@newValues));
- }
- return 0;
- }
- # we don't know how to compare such type of entry => just return 1
- return 1 ;
-}
-
-sub isAsystemIndex {
- my $index = shift;
- return ($index->hasValue("nsSystemIndex","true",1));
-}
-
-
-sub updatePathInPluginArgs {
- my $plugin = shift;
- my $argNum = 0;
- my $argPrefix = "nsslapd-pluginarg";
- my $cont = 1;
- my $Unix_oldDir = ${oldDir} ;
- my $Unix_root = ${root} ;
- grep { s@\\@/@g } $Unix_oldDir if $isNT;
- grep { s@\\@/@g } $Unix_root if $isNT;
- while ($cont) {
- my $arg = $argPrefix . $argNum ;
- if ($plugin->exists($arg)) {
- $_ = $plugin->{$arg}[0] ;
- s@$Unix_oldDir@$Unix_root@ig ;
- s/$type-$oldname/$type-$newname/ig ;
- $plugin->setValues($arg, $_) ;
- }
- else {
- $cont = 0 ;
- }
- $argNum++;
- }
- return $plugin;
-}
-
-
-sub Diffs {
- my $valuesToMigrate = shift;
- my $currentValues = shift;
- return 1 if (getDiff(\@{$valuesToMigrate},\@{$currentValues}));
- return 1 if (getDiff(\@{$currentValues},\@{$valuesToMigrate}));
- return 0 ;
-}
-
-sub getDiff {
- # we get references to arrays
- my $elements = shift ;
- my $existing_elements = shift ;
- my %count = () ;
- my %countEE = () ;
- @diff = () ;
- foreach $e (@{$elements}, @{$existing_elements}) { $count{$e}++ ;}
- foreach $e (@{existing_elements}) { $countEE{$e}++ ;}
- foreach $e (@{$elements}) {
- # if $e is only present in @$elements, we push it to the diff array
- if (($count{$e} == 1) && ($countEE{$e} == 0)) {
- push @diff, $e ;
- }
- }
- return @diff ;
-}
-
-sub registerSuffix_Backend {
- my $ldbmDatabase = shift;
- my $CN = $ldbmDatabase->{cn}[0];
- my $suffixArg = "nsslapd-suffix";
- my $suffix = $ldbmDatabase->{$suffixArg}[0];
- $oldBackends{$suffix} = $CN;
-}
-
-
-#############################################################################
-# #
-# #
-# #
-#############################################################################
-sub migrateLDBM_backend_instances {
- foreach $entry (@LDBM_backend_instances) {
- my $DN = $entry->getDN(1); # 1 is to normalize the DN
- my $CN = $entry->{cn}[0];
- my $expLdif;
- my $confirm = "No";
- my $dest = "$serverHome${PATHSEP}db_backup" ;
- my $newSlapdExecDir = "$root${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server";
-
- if ($DN =~/cn=netscaperoot,cn=ldbm database/i){
- printTrace("\n\n*** INFORMATION - NetscapeRoot is NOT migrated",0);
- }
- else {
- if(alreadyExistsInNew($entry)){
- printMsg("\n\n*** LDBM_BACKEND_INSTANCE - $DN already exists");
- printMsg("\n*** Migration will overwrite existing database");
- printMsg("\nDo you want to continue Yes/No [No] ?") ;
- my $answer = <STDIN> ;
- if ($answer =~ /y|yes/i) {
- printMsg("Do you want to export the existing data Yes/No [Yes] ?");
- my $answer = <STDIN> ;
- if (!($answer =~ /n|no/i)) {
- mkdir $dest, 0700 unless (-d $dest);
- $expLdif = "$dest${PATHSEP}$CN.ldif";
- while (!($confirm =~ /y|yes/i)) {
- printMsg("\nEnter the full pathname of the file [$expLdif]:") ;
- $answer = <STDIN> ;
- chomp($expLdif = $answer) unless ($answer eq "\n");
- printMsg("\nExisting data will be exported under $expLdif");
- printMsg("\nContinue Yes/No [No] ?");
- $confirm = <STDIN>;
- }
- $ENV{"$LIB_PATH"}=$new_libpath;
- chdir($newSlapdExecDir) or die "\nCould not change directory to $newSlapdExecDir: $!\n";
- printTrace("\nNow backing up database $CN in $expLdif\n",0);
- &stopServer($root,'slapd-'.$newname);
- &db2Ldif($expLdif, $CN, $serverHome);
- &startServer() unless (isDirectoryAlive());
- }
- push @BACKENDS, $CN;
- } else {
- printMsg("\n*** Migration will not update it");
- break;
- }
- } else {
- printTrace("\nWe should add the backend instance $DN",3);
- my $suffixarg = "nsslapd-suffix" ;
- my $suffixname= $entry->{$suffixarg}[0] ;
- my $newEntry = $conn->newEntry() ;
- $newEntry->setDN($DN);
- $newEntry->setValues("objectclass", "top", "extensibleObject", "nsBackendInstance" );
- $newEntry->setValues("cn", $CN );
- $newEntry->setValues($suffixarg, $suffixname);
- my @params = keys(%LDBMparamToMigrate);
- foreach $param (@params) {
- my @values = $entry->getValues($param);
- $newEntry->setValues($param, @values) if (@values);
- }
- if (addEntryToNew($newEntry, "LDBM_BACKEND_INSTANCE",1)) {
- push @BACKENDS, $CN;
- }
- }
- }
- }
-}
-
-sub parseLDBM_backend_instance {
- my $entry = shift;
- &registerSuffix_Backend($entry);
- push @LDBM_backend_instances, $entry;
-}
-
-#############################################################################
-sub migrateMappingTree {
- foreach $entry (@Mapping_tree_entries) {
- my $DN = $entry->getDN(1); # 1 si to normalize the DN
- if ($DN =~/cn=\"o=netscaperoot\",cn=mapping tree,cn=config/i){
- # DO NOTHING
- }
- else {
- if(alreadyExistsInNew($entry)){
- printMsg("\n\n*** MAPPING_TREE - $DN already exists");
- printMsg("\n*** Migration will not add the suffix");
- }
- else {
- addEntryToNew($entry, "MAPPING_TREE",1);
- }
- }
- }
-}
-
-
-sub parseMapping_tree{
- my $entry = shift;
- push @Mapping_tree_entries, $entry;
-}
-
-#############################################################################
-sub migrateDefaultIndexes {
- foreach $index (@default_indexes) {
- my $CN = $index->{cn}[0];
- my $newIndex ;
- if ((! isAsystemIndex($index)) && (! $deniedIndexes{lc($CN)})) {
- if ($newIndex = alreadyExistsInNew($index)) {
- if (! isAsystemIndex($newIndex)) {
- updateEntry($index, "DEFAULT_INDEX", 1, 2);
- }
- }
- else {
- addEntryToNew($index, "DEFAULT_INDEX", 2);
- }
- }
- }
-}
-
-
-sub parseDefaultIndex{
- my $index = shift;
- push @default_indexes, $index;
-}
-
-#############################################################################
-
-sub migrateIndexes {
- foreach $index (@indexes) {
- my $CN = $index->{cn}[0];
- my $newIndex;
- if ((! isAsystemIndex($index)) && (! $deniedIndexes{lc($CN)}) && (DN !~ /cn=netscaperoot,cn=index/i)){
- if ($newIndex = alreadyExistsInNew($index)) {
- if (! isAsystemIndex($newIndex)) {
- updateEntry($index, "INDEX", 1, 2);
- }
- }
- else {
- addEntryToNew($index, "INDEX", 2);
- }
- }
- }
-}
-
-sub parseIndex{
- my $index = shift;
- push @indexes, $index;
-}
-
-#############################################################################
-
-sub newLDIFplugin {
- my $currentPlugin = shift;
- my $DN = $currentPlugin->getDN(1);
- my $newPlugin = $conn->newEntry() ;
- $newPlugin->setDN($DN);
- foreach $Attr (@pluginAttrs) {
- my @values = $currentPlugin->getValues($Attr);
- $newPlugin->setValues($Attr, @values) if (@values);
- }
- return $newPlugin;
-}
-
-sub migrateStdPlugin{
- my $plugin = shift;
- my $DN = $plugin->getDN(1);
- my $pluginEnable = "nsslapd-pluginEnabled";
- my $argNum = 0;
- my $argPrefix = "nsslapd-pluginarg";
- my $currentPlugin ;
- if ($currentPlugin = alreadyExistsInNew($plugin, 1)) {
- $plugin = updatePathInPluginArgs($plugin);
- my $pluginEnableValue = $plugin->{$pluginEnable}[0];
- my $cont = 1;
- my $pluginHasChanged = 0;
- my $newPlugin = &newLDIFplugin($currentPlugin);
- if (! $currentPlugin->hasValue($pluginEnable,$pluginEnableValue,1)){
- $newPlugin->setValues($pluginEnable, $pluginEnableValue);
- $pluginHasChanged = 1 unless ($pluginHasChanged);
- }
- while($cont){
- my $arg = $argPrefix . $argNum ;
- if ($plugin->exists($arg)) {
- my @values = $plugin->getValues($arg);
- my $value = $values[0] ;
- $newPlugin->setValues($arg, $value) if (@values);
- if ($currentPlugin->exists($arg)) {
- if (! $currentPlugin->hasValue($arg,$value,1)) {
- $pluginHasChanged = 1 unless ($pluginHasChanged);
- }
- }
- else {
- $pluginHasChanged = 1 unless ($pluginHasChanged);
- }
- }
- else {
- if ($currentPlugin->exists($arg)) {
- # Just Warn the user. Do nothing.
- printTrace("\nCompared to the old instance, the current new plugin $DN belongs this attribute: $arg",2);
- }
- else {
- $cont = 0 ;
- }
- }
- $argNum++;
- }
- updateEntry($newPlugin, "STANDARD_PLUGIN", 0, 1) if ($pluginHasChanged);
- }
-}
-
-#############################################################################
-
-sub migrateConfig_Node{
- my $config_node = shift;
- my @params = keys(%GeneralSrvParamToMigrate);
- my $hasChanged = 0;
- my $newConfigNode;
- if ($newConfigNode = alreadyExistsInNew($config_node, 1)){
- foreach $param (@params) {
- if ($config_node->exists($param)){
- my @valuesToMigrate = $config_node->getValues($param);
- if (@valuesToMigrate){
- if ($newConfigNode->exists($param)){
- my @currentValues = $newConfigNode->getValues($param);
- if (Diffs(\@valuesToMigrate, \@currentValues)) {
- $newConfigNode->setValues($param, @valuesToMigrate);
- $hasChanged = 1 unless ($hasChanged);
- printTrace("\nParam to update: $param with value @valuesToMigrate",3);
- }
- }
- else {
- $newConfigNode->setValues($param, @valuesToMigrate);
- $hasChanged = 1 unless ($hasChanged);
- printTrace("\nParam to update: $param with value @valuesToMigrate",3);
- }
- }
- }
- }
- updateEntry($newConfigNode, "CONFIG_NODE", 0, 1) if ($hasChanged);
- }
-}
-
-#############################################################################
-
-sub migrateConfig_LDBM_database{
- my $config_ldbm = shift;
- my @params = keys(%GlobalConfigLDBMparamToMigrate);
- my $hasChanged = 0;
- my $newConfigLdbm ;
- if ($newConfigLdbm = alreadyExistsInNew($config_ldbm, 1)) {
- foreach $param (@params) {
- if ($config_ldbm->exists($param)){
- my @valuesToMigrate = $config_ldbm->getValues($param);
- if (@valuesToMigrate){
- if ($newConfigLdbm->exists($param)){
- my @currentValues = $newConfigLdbm->getValues($param);
- if (Diffs(\@valuesToMigrate, \@currentValues)) {
- $newConfigLdbm->setValues($param, @valuesToMigrate);
- $hasChanged = 1 unless ($hasChanged);
- }
- }
- else {
- $newConfigLdbm->setValues($param, @valuesToMigrate);
- $hasChanged = 1 unless ($hasChanged);
- }
- }
- }
- }
- updateEntry($newConfigLdbm, "CONFIG_LDBM_DATABASE", 0, 1) if ($hasChanged);
- }
-}
-
-#############################################################################
-
-sub migrateChainingBE_config{
- my $chaining_config = shift;
- my $DN = $chaining_config->getDN(1);
- my @params = ();
- my $hasChanged = 0;
- my $newChainingConfig;
- if ($DN =~ /^cn=config,cn=chaining database,cn=plugins,cn=config$/i){
- $newChainingConfig = searchEntry("cn=config,cn=chaining database,cn=plugins,cn=config");
- @params = keys(%ChainingConfigParams);
- }
- if ($DN =~ /^cn=default instance config,cn=chaining database,cn=plugins,cn=config$/i){
- $newChainingConfig = searchEntry("cn=default instance config,cn=chaining database,cn=plugins,cn=config");
- @params = keys(%ChainingDefaultInstanceConfigParams);
- }
- foreach $param (@params) {
- if ($chaining_config->exists($param)){
- my @valuesToMigrate = $chaining_config->getValues($param);
- if (@valuesToMigrate){
- printTrace("\nParam: $param values To migrate: @valuesToMigrate",3);
- if ($newChainingConfig->exists($param)){
- my @currentValues = $newChainingConfig->getValues($param);
- printTrace("\nParam: $param new current values: @currentValues",3);
- if (Diffs(\@valuesToMigrate, \@currentValues)) {
- $newChainingConfig->setValues($param, @valuesToMigrate);
- $hasChanged = 1 unless ($hasChanged);
- }
- }
- else {
- $newChainingConfig->setValues($param, @valuesToMigrate);
- $hasChanged = 1 unless ($hasChanged);
- }
- }
- }
- }
- updateEntry($newChainingConfig, "CHAINING_BACKEND_CONFIG", 0, 1) if ($hasChanged);
-}
-
-#############################################################################
-
-sub registerSuffix_ChainingBE {
- my $ldbmDatabase = shift;
- my $CN = $ldbmDatabase->{cn}[0];
- my $suffixArg = "nsslapd-suffix";
- my $suffix = $ldbmDatabase->{$suffixArg}[0];
- $oldChainingBackends{$suffix} = $CN;
-}
-
-sub storeMultiplexorBindDN {
- my $chaining_instance = shift;
- my $DN = $chaining_instance->getDN(1);
- if ($chaining_instance->exists("nsMultiplexorBindDN")){
- my $bindDN = $chaining_instance->{nsMultiplexorBindDN}[0];
- my $newBindDN = searchEntry($bindDN);
- if (! $newBindDN){
- # the bindDN entry doesn't yet exist in new => it will have to be migrated
- $MultiplexorBindDNEntriesToMigrate{$bindDN}="\n" ;
- printTrace("\nThe bindDN: $bindDN need to be migrated",3);
- }
- else {
- # do nothing as the entry already exists in new
- }
- }
-
-}
-
-sub importMultiplexorBindDNEntries {
- # import all entries present in @MultiplexorBindDNEntriesToMigrate in new
- my @MultiplexorBindDNs = keys (%MultiplexorBindDNEntriesToMigrate);
- my $ldif_dir = $ldif_rep;
- foreach $bindDN (@MultiplexorBindDNs) {
- printTrace("\nimportMultiplexorBindDNEntries: bindDN to migrate: $bindDN",3);
- # get the backend in which is stored the bind DN entry
- my $backendtoExportFrom = getBackendtoExportFrom($bindDN);
- printTrace("\nbackendtoExportFrom is: $backendtoExportFrom",3);
- # check wether the backend has been imported in new or not
- if (! alreadyMigrated($backendtoExportFrom)) {
- if ($backendtoExportFrom ne $NULL) {
- # if not imported => we need to import the binf DN entry
- &startServer() unless (isDirectoryAlive());
- $conn = new Mozilla::LDAP::Conn($LDAPservername,$newport,$rootDN,$rootpwd) or die "\n Unable to contact the $Version.$Minor LDAP server: $LDAPservername\n";
- &ExportAndAddEntry($bindDN, $backendtoExportFrom, $ldif_dir);
- }
- else {
- # do nothing
- }
- }
- }
- # remove the empty ldif directory
- rmdir($ldif_dir) if (-d $ldif_dir);
- # close the LDAP connection to new
- $conn->close if ($conn);
-}
-
-sub migrateChainingBE_instance{
- my $chaining_instance = shift;
- my $DN = $chaining_instance->getDN(1);
- &registerSuffix_ChainingBE($chaining_instance);
- if (alreadyExistsInNew($chaining_instance)) {
- # already exists
- printMsg("\n\n*** CHAINING_BACKEND_INSTANCE - $DN already exists");
- printMsg("\n*** Migration will not update it");
- }
- else {
- &migrate_credential($chaining_instance, "nsmultiplexorcredentials");
- addEntryToNew($chaining_instance, "CHAINING_BACKEND_INSTANCE", 1);
- storeMultiplexorBindDN($chaining_instance);
- }
-}
-
-#############################################################################
-
-# create a new LDIF representation of a new replica consumer
-sub newLDIFreplica {
- my $replica = shift;
- my $DN = $replica->getDN(1);
- my $newReplica = $conn->newEntry() ;
- my $MASTER_OR_MULTIMASTER = "3" ;
- $newReplica->setDN($DN);
- foreach $Attr (@nsds5replicaAttrs) {
- my @values = $replica->getValues($Attr);
- $newReplica->setValues($Attr, @values) if (@values);
- }
- my $replicaType = $replica->{nsDS5ReplicaType}[0];
- if ($replicaType eq $MASTER_OR_MULTIMASTER) {
- my @nsState = $replica->getValues("nsState");
- # nsState omitted because it is incomatible between 32 and 64 bit
- # servers. Bug 624441
- # $newReplica->setValues("nsState", @nsState);
- }
- else {
- $newReplica->setValues("nsDS5ReplicaId", $replicaIdvalue);
- }
- return $newReplica;
-}
-
-sub MigrateNSDS5_replica{
- foreach $replica (@new6replicas) {
- my $DN = $replica->getDN(1);
- my $newReplica;
- my @removeAttrs = qw(nsstate nsds5replicachangecount);
- for (@removeAttrs) {
- $replica->remove($_);
- }
- if (alreadyExistsInNew($replica)) {
- # replica already exists
- printMsg("\n\n*** NSDS5_REPLICA - $DN already exists");
- printMsg("\n*** Migration will not update it");
- }
- else {
- $newReplica = &newLDIFreplica($replica);
- addEntryToNew($newReplica, "NSDS5_REPLICA", 1);
- }
- storeReplicaBindDN($replica);
- }
-}
-
-sub parseNSDS5_replica{
- my $replica = shift;
- push @new6replicas, $replica;
-}
-
-sub storeReplicaBindDN {
- my $replica = shift;
- my $DN = $replica->getDN(1);
- if ($replica->exists("nsDS5ReplicaBindDN")){
- my $bindDN = $replica->{nsDS5ReplicaBindDN}[0];
- my $newBindDN = searchEntry($bindDN);
- if (! $newBindDN){
- # the bindDN entry doesn't yet exist in new => it will have to be migrated
- $ReplicaBindDNEntriesToMigrate{$bindDN}="\n" ;
- printTrace("\nThe bindDN: $bindDN need to be migrated",3);
- }
- else {
- # do nothing as the entry already exists in new
- }
- }
-}
-
-
-sub importReplicaBindDNEntries {
- # import all entries present in @ReplicaBindDNEntriesToMigrate in new
- my @ReplicaBindDNs = keys (%ReplicaBindDNEntriesToMigrate);
- my $ldif_dir = $ldif_rep;
- my $replBind_entry = "";
- my @bindDN_elements = "";
- my $bindDN_parent = "";
- my $parentBind_entry = "";
- foreach $bindDN (@ReplicaBindDNs) {
- printTrace("\nimportReplicaBindDNEntries: bindDN to migrate: $bindDN",3);
- # get the backend in which is stored the bind DN entry
- my $backendtoExportFrom = getBackendtoExportFrom($bindDN);
- printTrace("\nbackendtoExportFrom is: $backendtoExportFrom",3);
- # If backend is from config, read the entry from dse.ldif and add to new - NGK
- if ($backendtoExportFrom eq "cn=config") {
- my $norm_bindDN = normalizeDN($bindDN);
- @bindDN_elements = ldap_explode_dn($norm_bindDN, 0);
-# @bindDN_elements = split(/,/,$norm_bindDN);
- my $junk = shift(@bindDN_elements);
- if ($#bindDN_elements >= 1) {
- $bindDN_parent = normalizeDN(join(",", @bindDN_elements));
- }
- printTrace("\nOpening DSE.ldif",3);
- open( DSELDIF, "< $oldDSEldif" ) || die "Can't open $oldDSEldif: $!: ";
- my $in = new Mozilla::LDAP::LDIF(*DSELDIF);
- while ($entry = readOneEntry $in) {
- my $DN = $entry->getDN(1);
- if ($DN eq $norm_bindDN) {
- $replBind_entry = $entry;
- }
- if ($bindDN_parent ne "") {
- if ($DN eq $bindDN_parent) {
- $parentBind_entry = $entry;
- }
- }
- }
- close(DSELDIF);
- &startServer() unless (isDirectoryAlive());
- $conn = new Mozilla::LDAP::Conn($LDAPservername,$newport,$rootDN,$rootpwd) or die "\n Unable to contact the $Version.$Minor LDAP server: $LDAPservername\n";
- if ($bindDN_parent ne "") {
- addEntryToNew($parentBind_entry, BINDDN_PARENT, 0);
- }
- printTrace("\nAdding BindDN with addEntryToNew",3);
- addEntryToNew($replBind_entry, BINDDN, 0);
- } else {
- # check wether the backend has been imported in new or not
- if (! alreadyMigrated($backendtoExportFrom)) {
- if ($backendtoExportFrom ne $NULL) {
- # if not imported => we need to import the bind DN entry
- &startServer() unless (isDirectoryAlive());
- $conn = new Mozilla::LDAP::Conn($LDAPservername,$newport,$rootDN,$rootpwd) or die "\n Unable to contact the $Version.$Minor LDAP server: $LDAPservername\n";
- &ExportAndAddEntry($bindDN, $backendtoExportFrom, $ldif_dir);
- }
- else {
- # do nothing
- }
- }
- }
- }
- # remove the empty ldif directory
- rmdir($ldif_dir) if (-d $ldif_dir);
- # close the LDAP connection to new
- $conn->close if ($conn);
-}
-
-sub alreadyMigrated {
- my $backendToCheck = shift;
- foreach $backend (@BACKENDS) {
- return 1 if ($backend eq $backendToCheck);
- }
- return 0 ;
-}
-
-sub belongsSuffix {
- my $suffix = shift;
- my $bindDN = shift;
- return ($bindDN =~ /$suffix\s*$/i);
-}
-
-sub length {
- my $suffix = shift;
- my $count = 0;
- while ($suffix =~ /./g) {
- $count++;
- }
- return $count ;
-}
-
-sub getBackendtoExportFrom {
- my $bindDN = shift ;
- my $sizeOfSuffix = 0 ;
- my $NULL = "";
- my @oldSuffixes = keys(%oldBackends);
- my @oldChainingSuffixes = keys(%oldChainingBackends);
- my $bindDN_backend = $NULL;
- my $config = "cn=config";
-
- my $norm_bindDN = normalizeDN($bindDN);
- # Check if bindDN exists in cn=config - NGK
- if (belongsSuffix($config,$norm_bindDN)) {
- $bindDN_backend = $config;
- printTrace("\ngetBackendtoExportFrom: bindDN_backend: $bindDN_backend",3);
- } else {
- foreach $suffix (@oldSuffixes){
- printTrace("\ngetBackendtoExportFrom: suffix to compare with is: $suffix",3);
- if ((belongsSuffix($suffix,$norm_bindDN)) && (length($suffix) > $sizeOfSuffix)) {
- $sizeOfSuffix = length($suffix);
- $bindDN_backend = $oldBackends{$suffix};
- printTrace("\ngetBackendtoExportFrom: bindDN_backend: $bindDN_backend, sizeOfSuffix: $sizeOfSuffix",3);
- }
- }
- foreach $suffix (@oldChainingSuffixes){
- printTrace("\ngetBackendtoExportFrom: suffix to compare with is a chained suffix: $suffix",3);
- if ((belongsSuffix($suffix,$norm_bindDN)) && (length($suffix) > $sizeOfSuffix)) {
- printMsg("\n\n*** Entry stored on a remote backend - $norm_bindDN");
- printMsg("\n*** We don't migrate it");
- return $NULL;
- }
- }
- }
- return $bindDN_backend;
-}
-
-
-sub getBackendtoImportTo {
- my $bindDN = shift;
- my $sizeOfSuffix = 0;
- my $NULL = "";
- my $suffixArg = "nsslapd-suffix";
- my $bindDN_backend = $NULL;
- open( DSELDIF, "< $DSEldif" ) || die "Can't open $DSEldif: $!: ";
- my $in = new Mozilla::LDAP::LDIF(*DSELDIF) ;
- while ($entry = readOneEntry $in) {
- $typeOfEntry = getTypeOfEntry($entry);
- if ($typeOfEntry eq "LDBM_BACKEND_INSTANCE"){
- my $suffix = $entry->{$suffixArg}[0];
- if ((belongsSuffix($suffix,$bindDN)) && (length($suffix) > $sizeOfSuffix)) {
- $sizeOfSuffix = length($suffix);
- $bindDN_backend = $entry->{cn}[0];
- }
- }
- }
- close(DSELDIF);
- return $bindDN_backend ;
-}
-
-
-sub ExportAndAddEntry {
- my $DN = shift;
- my $backendtoExportFrom = shift;
- my $ldif_dir = shift;
- my $ldif = "$ldif_dir${PATHSEP}$backendtoExportFrom.ldif" ;
- # first: export entry pointed out by the $DN to $ldif file
- $ENV{"$LIB_PATH"}=$old_libpath;
- if (! $ldif_dir) { $ldif_dir = $ldif_rep ;}
- if (!(-d $ldif_dir)) {
- mkdir($ldif_dir,0777) or die "\ncan't create $ldif_dir to store temporary ldif files\n";
- }
- chdir($oldSlapdExecDir) or die "\nCould not change directory to $oldSlapdExecDir: $!\n";
- &db2Ldif($ldif, $backendtoExportFrom, $oldHome, $DN);
- chdir($curdir) or die "\nCould not change directory to $curdir: $!\n";
-
- # then: Add it to new
- if (! $conn) {
- $conn = new Mozilla::LDAP::Conn($LDAPservername,$newport,$rootDN,$rootpwd) or die "\n Unable to contact the $Version.$Minor LDAP server: $LDAPservername\n";
- }
- open( BINDDNLDIF, "< $ldif" ) || die "\nCan't open $ldif: $!: \n";
- my $in = new Mozilla::LDAP::LDIF(*BINDDNLDIF) ;
- while ($entry = readOneEntry $in) {
- my $entryDN = $entry->getDN(1);
- if ($DN eq $entryDN) {
- addEntryToNew($entry, "nsds5ReplicaBindDN", 0);
- }
- }
- close(BINDDNLDIF);
- # remove the ldif file after the import
- unlink($ldif) ;
-}
-
-#############################################################################
-sub MigrateNSDS_replication_agreement {
- foreach $replicationAgreement (@replicationAgreements) {
- my $DN = $replicationAgreement->getDN(1);
- if (alreadyExistsInNew($replicationAgreement)){
- # replication agreement already exists
- printMsg("\n\n*** NSDS_REPLICATION_AGREEMENT - $DN already exists");
- printMsg("\n*** Migration will not update it");
- }
- else {
- &migrate_credential($replicationAgreement, "nsDS5ReplicaCredentials");
- addEntryToNew($replicationAgreement, "NSDS_REPLICATION_AGREEMENT", 1);
- }
- }
-}
-
-
-sub parseNSDS_replication_agreement{
- my $replicationAgreement = shift;
- push @replicationAgreements, $replicationAgreement ;
-}
-
-#############################################################################
-
-sub migrateChangelog5{
- my $changelog = shift;
- my $DN = $changelog->getDN(1);
- my $changelogdir = "nsslapd-changelogdir";
- if (alreadyExistsInNew($changelog)){
- # cn=changelog5,cn=config already exists in new
- my $newChangelog = searchEntry($DN);
- my @newChangelogdir = $newChangelog->getValues($changelogdir);
- $changelog->setValues($changelogdir, @newChangelogdir);
- updateEntry($changelog, "CHANGELOG5", 0, 1);
- }
- else {
- # cn=changelog5,cn=config need to be created in new.
- # the changelogdir value must be setup to <new_root_server>/slapd-instance/changelogdb
- $changelog->setValues($changelogdir,"${serverHome}${PATHSEP}changelogdb");
- addEntryToNew($changelog, "CHANGELOG5", 1);
- }
-}
-
-
-sub migrateChangelog {
- my $oldchangelogdir = "";
- my $newchangelogdir = "";
- my $changelogdir = "nsslapd-changelogdir";
- my $CL5DN = "cn=changelog5,cn=config";
- printTrace("\n\n***** Migrate Changelog...",0,1);
- open( DSELDIF, "< $oldDSEldif" ) || die "Can't open $oldDSEldif: $!: ";
- my $in = new Mozilla::LDAP::LDIF(*DSELDIF);
- while ($entry = readOneEntry $in) {
- $typeOfEntry = getTypeOfEntry($entry);
- if ($typeOfEntry eq "CHANGELOG5"){
- $oldchangelogdir = ($entry->getValues($changelogdir))[0];
- }
- }
- close(DSELDIF);
- if ($oldchangelogdir) {
- # If using olddatadir to migrate from, the path of the changelogdb
- # from the dse.ldif may not match the path where the old server
- # root was archived. We may need to modify oldchangelogdir so the
- # copy of the changelog files succeeds.
- unless(-e $oldchangelogdir) {
- if($olddatadir) {
- my @cldbpath = split(/\//,$oldchangelogdir);
- until($cldbpath[0] =~/^slapd-/) {
- shift(@cldbpath);
- }
- my $tmpcldbpath = join(${PATHSEP}, @cldbpath);
- $oldchangelogdir = "$oldDir${PATHSEP}$tmpcldbpath";
- }
- # If oldchangelogdir still looks to be wrong, prompt for the
- # location instead of just failing on the copydir operation
- # and bombing out of the migration.
- unless(-e $oldchangelogdir) {
- print("\n\nThe old changelog directory \"$oldchangelogdir\" doesn't exist. Please enter the correct path: ");
- $oldchangelogdir = <STDIN>;
- }
- }
- &startServer() unless (isDirectoryAlive());
- $conn = new Mozilla::LDAP::Conn($LDAPservername,$newport,$rootDN,$rootpwd) or die "\n Unable to contact the $Version.$Minor LDAP server: $LDAPservername\n";
- my $newChangelog = searchEntry($CL5DN);
- $newchangelogdir = ($newChangelog->getValues($changelogdir))[0];
- stopServer($root,'slapd-'.$newname);
- printTrace("\ncopying $oldchangelogdir${PATHSEP}* to $newchangelogdir",3);
-
- # Clean destination changelog directory
- opendir(NEWCLDIR, "$newchangelogdir");
- while($delfile = readdir(NEWCLDIR)) {
- if ( -f "$newchangelogdir/$delfile" ) {
- unlink "$newchangelogdir/$delfile" or die "Can't delete $newchangelogdir/$delfile: $!\n";
- }
- }
-
- copyDir("$oldchangelogdir","$newchangelogdir");
-
- # We need to modify the DBVERSION file for a new verision of the db
- # For 6.21 to 7.0, leave it as 4.0. For 6.11 to 7.0 we want the server
- # to perform the migration at startup, so set it to 3.0.
- if(substr($oldMinor,0,1) < 2) {
- open(DBVERSION,">$newchangelogdir${PATHSEP}DBVERSION") || die "Can't overwrite $newchangelogdir${PATHSEP}DBVERSION: $! ";
- print DBVERSION "Changelog5/NSMMReplicationPlugin/3.0";
- close(DBVERSION);
- }
- &startServer() unless (isDirectoryAlive());
- }
-}
-
-#############################################################################
-
-sub migrateReplication{
- my $replication = shift;
- my $DN = $replication->getDN(1);
- if (alreadyExistsInNew($replication)){
- # replication agreement already exists
- printMsg("\n\n*** $DN already exists");
- printMsg("\n*** Migration will not update it");
- }
- else {
- addEntryToNew($replication, "REPLICATION", 1);
- }
-}
-
-#############################################################################
-
-sub migrateSecurity{
- my $security = shift;
- if ($entry->hasValue("objectClass", "nsEncryptionConfig")) {
- my $certfile = "alias/slapd-" . $newname . "-cert8.db";
- my $keyfile = "alias/slapd-" . $newname. "-key3.db";
- $entry->setValues("nsCertfile",$certfile) if ! $entry->hasValue("nsCertfile",$certfile);
- $entry->setValues("nsKeyfile",$keyfile) if ! $entry->hasValue("nsKeyfile",$keyfile);
- }
- if (alreadyExistsInNew($security)){
- # already exists in new
- updateEntry($security, "SECURITY", 0, 1);
- }
- else {
- addEntryToNew($security, "SECURITY", 1);
- }
-}
-
-#############################################################################
-
-sub migrateSNMP{
- my $snmp = shift;
- if (alreadyExistsInNew($snmp)){
- # already exists in new
- updateEntry($snmp, "SNMP", 0, 1);
- }
- else {
- addEntryToNew($snmp, "SNMP", 1);
- }
-}
-
-#############################################################################
-# printMsg print message to the user standard output.
-
-sub printMsg {
-
- my $TypeMsg = shift ;
- my $Msg = shift ;
- my $LineNb = shift ;
- if ($LineNb) {
- printTrace("Line: $LineNb, $TypeMsg, $Msg");
- }
- else {
- printTrace("$TypeMsg $Msg");
- }
-}
-
-#############################################################################
-# print message error to the user standard output.
-
-sub printTrace {
-
- my $Msg = shift ;
- my $level = shift ;
- my $sep = shift ;
-
- if ($sep) {
- print "\n-------------------------------------------------------------------------";
- print LOGFILE "\n-------------------------------------------------------------------------";
- }
-
- if ($level <= $TRACELEVEL) {
- print($Msg);
- print LOGFILE $Msg ;
- }
-}
-
-#############################################################################
-# this subroutine implements a very stupid version of diff
-
-sub diff {
- my $f1 = shift;
- my $f2 = shift;
- my $lineToBeginWith = shift;
- my $NULL = "" ;
- my $diff_f1 = $NULL ;
- my $diff_f2 = $NULL ;
- my $retval = $NULL ;
- my $ret;
- open(F1, "$f1") or die "Could not open file $f1";
- open(F2, "$f2") or close(F1), die "Could not open file $f2";
-
- while (defined($l1 = <F1>)) {
- if ($lineToBeginWith){
- $lineToBeginWith -- ;
- next ;
- }
- next if ($l1 =~ /^\#/);
- $ret = defined($l2 = <F2>);
- if ($ret) {
- $ret = defined($l2 = <F2>) while ($ret && ($l2 =~ /^\#/)) ;
- if ($ret) {
- if (!($l1 eq $l2)) {
-
- # ignore whitespace
- $l1_clean = $l1 ;
- $l2_clean = $l2 ;
- $l1_clean =~ s/\s//g;
- $l2_clean =~ s/\s//g;
-
- if (!($l1_clean eq $l2_clean)) {
- $diff_f1 .= "${l1}" unless ($l1_clean eq $NULL);
- $diff_f2 .= "${l2}" unless ($l2_clean eq $NULL);
- }
- }
- }
- else {
- next if ($l1 =~ /^\s*$/) ;
- $diff_f1 .= "${l1}";
- }
- }
- else {
- next if ($l1 =~ /^\s*$/) ;
- $diff_f1 .= "${l1}";
- }
- }
-
- while (defined($l2 = <F2>)) {
- if (($l2 =~ /^\#/) || ($l2 =~ /^\s*$/)) {
- next ;
- }
- else {
- $diff_f2 .= "${l2}" ;
- }
- }
-
- close(F1);
- close(F2);
-
- $retval .= "- differences present in your config file but not in standard file:\n\n". "$diff_f1\n" if ($diff_f1) ;
- $retval .= "- differences present in standard file but not in your config file:\n\n" . "$diff_f2" if ($diff_f2) ;
- return $retval ;
-}
-
-sub CompareStdConfigFiles {
- # Compare each configuration file against its default version. If it has changed,
- # notify the user that the file has changed and will need to be checked by the
- # user. This should be safe to do because there should be no path information
- # stored in these conf files, which are just schema stuff.
- # printTrace("\nCheck if standard configuration files have changed",3);
-
- # get the version of the DS to migrate
- ($oldVersion, $oldMinor) = &getVersion($oldDir, $oldversionstr);
- # get the version of the new DS
- ($Version, $Minor) = &getVersion($root);
-
- # get old LIB_PATH
- $old_libpath = &getLibPath($oldDir, $oldVersion, $oldMinor);
- # get new LIB_PATH
- $new_libpath = &getLibPath($root, $Version, $Minor);
-
- my $origFilePath = "$oldDir${PATHSEP}bin${PATHSEP}slapd${PATHSEP}install${PATHSEP}schema${PATHSEP}" ;
- my $FilesChanged = "";
- my $AllDiffs = "***********************************************************************";
- my $NoChanges = "" ;
- my $lineToBegin = 0 ;
- opendir(CONFDIR, $oldSchemaDir) or
- die "Error: could not open migrated config dir $oldConfDir: $!";
-
- foreach $file (readdir(CONFDIR)) {
- $origFile = $origFilePath . $file ;
- $configFile = $oldSchemaDir . $file ;
- if (( exists($stdIncludes{lc($file)})) && (-f $origFile)) {
- $diffs = &diff($configFile, $origFile, $lineToBegin);
- $lineToBegin = 0 if $lineToBegin ;
- if ($diffs) {
- $FilesChanged .= "\n$configFile";
- $AllDiffs .= "\n$configFile is different than the standard configuration file" ;
- $AllDiffs .= "\nYou will need to check this file and make sure its changes are compatible ";
- $AllDiffs .= "with the new directory server\nHere are the differences:\n";
- $AllDiffs .= "$diffs \n\n";
- $AllDiffs .= "***********************************************************************";
- }
- else {
- $NoChanges .= "\n$configFile";
- }
- }
- }
- closedir(CONFDIR);
-
-if ($FilesChanged) {
- printTrace("\nNo changes to old configuration files:$NoChanges",3) ;
- printTrace("\n***********************************************************************",3) ;
- printMsg("\nThe following standard files have been modified: $FilesChanged");
- if ($NO_INPUT_USER) {
- # do nothing
- }
- else {
- printMsg("\nDo you want to see the differences Yes/No [No] ?") ;
- my $answer = <STDIN> ;
- if ($answer =~ /y|yes/i) {
- printMsg("$AllDiffs");
- }
- printMsg("\nDo you want to continue the migration Yes/No [No] ?");
- $answer = <STDIN> ;
- if (! ($answer =~ /y|yes/i)) {
- exit(1);
- }
- }
- }
-}
-
-
-
-#############################################################################
-
-# this is used to run the system() call, capture exit and signal codes,
-# and die() upon badness; the first argument is a directory to change
-# dir to, if any, and the rest are passed to system()
-sub mySystem {
- my $rc = &mySystemNoDie(@_);
- my ($dir, @args) = @_;
- if ($rc == 0) {
-# success
- } elsif ($rc == 0xff00) {
- die "Error executing @args: error code $rc: $!";
- } elsif ($rc > 0x80) {
- $rc >>= 8;
- die "Error executing @args: error code $rc: $!";
- } else {
- if ($rc & 0x80) {
- $rc &= ~0x80;
- }
- die "Error executing @args: received signal $rc: $!";
- }
-
- # usually won't get return value
- return $rc;
-}
-
-# This version does not die but just returns the error code
-sub mySystemNoDie {
- my ($dir, @args) = @_;
- if ($dir && ($dir ne "")) {
- chdir($dir) or die "Could not change directory to $dir: $!";
- }
- my $cmd = $args[0];
- # the system {$cmd} avoids some NT shell quoting problems if the $cmd
- # needs to be quoted e.g. contains spaces; the map puts double quotes
- # around the arguments on NT which are stripped by the command
- # interpreter cmd.exe; but don't quote things which are already quoted
- my @fixargs = map { /^[\"].*[\"]$/ ? $_ : $quote . $_ . $quote } @args;
- my $rc = 0;
- if ($cmd =~ /[.](bat|cmd)$/) {
- # we have to pass batch files directly to the NT command interpreter
- $cmd = $com_spec;
-# print "system $cmd /c \"@fixargs\"\n";
- $rc = 0xffff & system {$cmd} '/c', "\"@fixargs\"";
- } else {
-# print "system $cmd @fixargs\n";
- $rc = 0xffff & system {$cmd} @fixargs;
- }
- chdir(${curdir}) or die "Could not change directory to $curdir: $!";
- return $rc;
-}
-
-###########################################################################################
-# #
-# Export/Import of the backends in @BACKENDS #
-# #
-###########################################################################################
-
-sub manydb2Ldif {
- my $ldif_dir = shift;
- $ENV{"$LIB_PATH"}=$old_libpath;
- if (! $ldif_dir) { $ldif_dir = $ldif_rep ;}
- if (!(-d $ldif_dir)) {
- mkdir($ldif_dir,0777) or die "can't create $ldif_dir to store temporary ldif files";
- }
- chdir($oldSlapdExecDir) or die "Could not change directory to $oldSlapdExecDir: $!";
- foreach $backend (@BACKENDS) {
- my $ldif = "${ldif_dir}$backend.ldif" ;
- &db2Ldif($ldif, $backend, $oldHome);
- }
- print " Done.\n";
- chdir($curdir) or die "Could not change directory to $curdir: $!";
-}
-
-sub db2Ldif {
- my $ldif = shift ;
- my $backend = shift ;
- my $home = shift ;
- my $include_suffix = shift ;
- my $db2ldif_param ;
- if ($include_suffix) {
- $db2ldif_param = "db2ldif -r -D $home -n $backend -a $ldif -s \"$include_suffix\"";
- }
- else {
- $db2ldif_param = "db2ldif -r -D $home -n $backend -a $ldif";
- }
- open(DB2LDIF, "${quote}${quote}$slapdExecName${quote} $db2ldif_param${quote} 2>&1 |") or die "Could not run ns-slapd program $ldif2db_exe\n";
- sleep(1); # allow some data to accumulate in the pipe
- my $ii = 0;
- while (<DB2LDIF>) {
- ++$ii;
- if (($ii % 250) == 0) {
- printMsg(" Processing...\n");
- }
- printMsg($_);
- }
- close(DB2LDIF);
- # set the ownership of the ldif file; should be the same as the 6.x slapd user id
- if ((! $isNt) && ($oldlocaluser ne $localuser)) {
- if (-f $ldif) {
- chown( $newuid, $newgid, $ldif) or printMsg("\nUnable to change the ownership of $ldif to $localuser") ;
- }
- }
-}
-
-sub manyLdif2db {
- my $ldif_dir = shift;
- $ENV{"$LIB_PATH"}=$new_libpath;
- chdir($slapdExecDir) or die "Could not change directory to $slapdExecDir: $!";
- foreach $backend (@BACKENDS) {
- my $ldif = "${ldif_dir}$backend.ldif" ;
- &Ldif2db($ldif, $backend);
- }
- # remove the empty ldif directory
- # but not if using the data dir
- if (!$olddatadir) {
- rmdir($ldif_dir);
- }
- chdir($curdir) or die "Could not change directory to $curdir: $!";
-}
-
-
-sub Ldif2db {
- my $ldif = shift ;
- my $backend = shift ;
- my $ldif2db_param = "ldif2db -D $serverHome -n $backend -i $ldif";
- open(LDIF2DB, "${quote}${quote}$slapdExecName${quote} $ldif2db_param${quote} 2>&1 |") or die "Could not run ns-slapd program $ldif2db_exe\n";
- sleep(1); # allow some data to accumulate in the pipe
- while (<LDIF2DB>) {
- printMsg($_);
- }
- close(LDIF2DB);
- # remove the ldif file after the import
- # but not if using the data dir
- if (!$olddatadir) {
- unlink($ldif) ;
- }
-}
-
-
-###########################################################################################
-# #
-# Running/Stopping the Server #
-# #
-###########################################################################################
-
-
-
-sub isDirectoryAlive {
- die "\n Migration aborted. Make sure your old and new Directory Servers are installed on the same machine \n" if ( $LDAPservername == -1 );
- my $test_conn = new Mozilla::LDAP::Conn($LDAPservername,$newport,$rootDN,$rootpwd);
- if ($test_conn) {
- $test_conn->close();
- return 1;
- }
- else {
- return 0 ;
- }
-}
-
-
-sub startServer {
- my $instanceDir = ${serverHome} ;
- my $errLog = $instanceDir . $PATHSEP . 'logs' . $PATHSEP . 'errors';
- # emulate tail -f
- # if the last line we see does not contain "slapd started", try again
- my $done = 0;
- my $started = 0;
- my $code = 0;
- my $lastLine = "";
- my $timeout = time + 240; # 4 minutes
- $ENV{"$LIB_PATH"}=$new_libpath;
-
- my $startCmd = $instanceDir . $PATHSEP . 'start' . $script_suffix;
- if (! -f $startCmd) {
- $startCmd = $instanceDir . $PATHSEP . 'start-slapd' . $script_suffix;
- }
- $code = &mySystem($instanceDir,$startCmd);
- open(IN, $errLog) or die "Could not open error log $errLog: $!";
- my $pos = tell(IN);
- while (($done == 0) && (time < $timeout)) {
- for (; ($done == 0) && ($_ = <IN>); $pos = tell(IN)) {
- $lastLine = $_;
- # print;
- # the server has already been started and shutdown once . . .
- if (/slapd started\./) {
- $started++;
- if ($started == 2) {
- $done = 1;
- }
- # sometimes the server will fail to come up; in that case, restart it
- } elsif (/Initialization Failed/) {
- # print "Server failed to start: $_";
- $code = &mySystem($instanceDir, $startCmd);
- # sometimes the server will fail to come up; in that case, restart it
- } elsif (/exiting\./) {
- # print "Server failed to start: $_";
- #$code = &mySystem($startCmd);
- $code = &mySystem($instanceDir, $startCmd);
- }
- }
- if ($lastLine =~ /PR_Bind/) {
- # server port conflicts with another one, just report and punt
- print $lastLine;
- print "This server cannot be started until the other server on this\n";
- print "port is shutdown.\n";
- $done = 1;
- }
- if ($done == 0) {
- # rest a bit, then . . .
- sleep(2);
- # . . . reset the EOF status of the file desc
- seek(IN, $pos, 0);
- }
- }
- close(IN);
-
- sleep(5);
- die "\nUnable to start the $Version.$Minor Directory Server\n" unless (isDirectoryAlive());
-
- return 0;
-}
-
-sub stopServer {
- my $root = shift;
- my $name = shift;
- $maxStopIterations = 5;
- print "\nShutting down server $name . . .\n";
- $ENV{"$LIB_PATH"}=$new_libpath;
- $stopCmd = $quote . $root . $PATHSEP . $name . $PATHSEP . 'stop' . $script_suffix . $quote;
- if (! -f $stopCmd) {
- $stopCmd = $quote . $root . $PATHSEP . $name . $PATHSEP . 'stop-slapd' . $script_suffix . $quote;
- }
-
- if (! -f $stopCmd) {
- # no stop command, probably a 1.X system; for NT, we'll try net stop
- # for unix, we'll get the pid and kill it
- if ($isNT) {
- $stopCmd = 'net stop ' . $name;
- } else {
- # see if there is a pid file
- $pidfile = $root . $PATHSEP . $name . $PATHSEP . 'logs' .
- $PATHSEP . 'pid';
- if (open(PIDFILE, $pidfile)) {
- chomp($pid = <PIDFILE>);
- close(PIDFILE);
- while ($maxStopIterations-- && !$exitCode) {
- $exitCode = kill(15, $pid);
- }
- $stopCmd = undef;
- }
- }
- }
-
- # keep looping until the stop cmd returns an error code, which usually
- # means that what ever we want to stop is stopped, or some other error
- # occurred e.g. permission, or no such service
- $exitCode = &runAndIgnoreOutput($stopCmd);
-# print "stopServer: exitCode=$exitCode\n";
- while ($stopCmd && $maxStopIterations-- && $exitCode) {
- $exitCode = &runAndIgnoreOutput($stopCmd);
-# print "stopServer: exitCode=$exitCode\n";
- }
-
- if (!$maxStopIterations) {
- print "Warning: could not shutdown the server: $!\n";
- }
- sleep(10) ;
- $exitCode = 0;
-}
-
-
-sub runAndIgnoreOutput {
- my $cmd = shift;
- printMsg(".");
- open(RUNCMD, "${quote}$cmd${quote} 2>&1 |") or die "Error: could not run $cmd: $!";
- printMsg(".");
- sleep(1); # allow pipe to fill with data
- printMsg(".");
- while (<RUNCMD>) {
-# print;
- }
- my $code = close(RUNCMD);
-# print "runAndIgnore: code=$code status=$?\n";
- return $?;
-}
-
-#############################################################################
-# migrate SSL info
-
-sub MigrateSSL {
- my $secPwd = 'bidon' ;
- # copy the SSL directory
- &copyDir("$oldHome${PATHSEP}ssl","$serverHome${PATHSEP}ssl") if (-d "$oldHome${PATHSEP}ssl");
- # copy the cert db and key files
- if ( -d "$oldDir${PATHSEP}alias") {
- $aliasDir = "$root${PATHSEP}alias";
- if (! -d $aliasDir) {
- mkdir($aliasDir, 0750);
- }
- &stopServer($root,'slapd-'.$newname) if (isDirectoryAlive());
-
- my $old_certdb_ver = (substr($oldMinor,0,1) >= 2) ? "8" : "7";
- my $keydb = "$aliasDir${PATHSEP}slapd-$newname-key3.db" ;
- my $certdb = "$aliasDir${PATHSEP}slapd-$newname-cert8.db" ;
- my $certdb_target = "$aliasDir${PATHSEP}slapd-$newname-cert${old_certdb_ver}.db" ;
- my $old_keydb = "$oldDir${PATHSEP}alias${PATHSEP}slapd-$oldname-key3.db" ;
- my $old_certdb = "$oldDir${PATHSEP}alias${PATHSEP}slapd-$oldname-cert${old_certdb_ver}.db";
-
- my $keydb_backup = "$aliasDir${PATHSEP}slapd-$newname-key3.db_backup" ;
- my $certdb_backup = "$aliasDir${PATHSEP}slapd-$newname-cert7.db_backup" ;
- if (-f $old_keydb) {
- if (-f $keydb) {
- if ($NO_INPUT_USER) {
- printMsg("\n$keydb already exists. backup in $keydb_backup ...");
- &copyBinFile($keydb,$keydb_backup);
- &copyBinFile($old_keydb,$keydb);
- }
- else {
- print("\n\n$keydb already exists. Do you want to overwrite it ? [no]: ");
- my $answer = <STDIN> ;
- if ($answer =~ /^y|yes$/i) {
- &copyBinFile($old_keydb,$keydb);
- }
- }
- }
- else {
- &copyBinFile($old_keydb,$keydb);
- }
- }
- if (-f $old_certdb) {
- $mode = (stat($old_certdb))[2] if $PRESERVE;
- if (-f $certdb) {
- if ($NO_INPUT_USER) {
- printMsg("\n$certdb already exists. backup in $certdb_backup ...");
- &copyBinFile($certdb,$certdb_backup);
- unlink($certdb) || print "Couldn't delete $certdb : $!\n";
- &copyBinFile($old_certdb,$certdb_target);
- }
- else {
- print("\n\n$certdb already exists. Do you want to overwrite it ? [no]: ");
- my $answer = <STDIN> ;
- if ($answer =~ /^y|yes$/i) {
- unlink($certdb) || print "Couldn't delete $certdb : $!\n";
- &copyBinFile($old_certdb,$certdb_target);
- }
- }
- }
- else {
- &copyBinFile($old_certdb,$certdb_target);
- }
- }
- # copy the old password file
- if (-f "$oldDir${PATHSEP}alias${PATHSEP}$type-$oldname-pin.txt") {
- &copyBinFile(
- "$oldDir${PATHSEP}alias${PATHSEP}$type-$oldname-pin.txt",
- "$aliasDir${PATHSEP}$type-$newname-pin.txt"
- );
- }
- &startServer();
- if ($PRESERVE && $old_certdb_ver == 7) {
- chown($newuid,$newgid,$certdb) || print "Failed to set uid $newuid gid $newgid on $certdb : $!\n";
- chmod($mode,$certdb) || print "Failed to set mode $mode on $certdb : $!\n";
- }
- }
-
-}
-
-sub DisableSSL {
- my $entry = $conn->search("cn=config","base","objectclass=*");
- my $LDAPparam = "nsslapd-security" ;
- my $Value = "off" ;
- if ($entry->{$LDAPparam}[0] ne $Value) {
- printTrace("\nDisable SSL...",1);
- $entry->setValues($LDAPparam, $Value);
- }
- my $res = $conn->update($entry);
- if ($res) {
- printTrace("\nSSL disabled",2);
- }
- else {
- printMsg("\nCan't disabled SSL. The server may have problems to start");
- }
-}
-
-# enable the migration of client authentication informations
-sub MigrateCertmap {
- # backup the old certmap.conf and replace it with the new one
- my $oldCertmap = "$oldDir${PATHSEP}shared${PATHSEP}config${PATHSEP}certmap.conf";
- my $newCertmap = "$root${PATHSEP}shared${PATHSEP}config${PATHSEP}certmap.conf" ;
- my $backupCertmap = "$root${PATHSEP}shared${PATHSEP}config${PATHSEP}certmap.conf_backup" ;
- if (-f $oldCertmap) {
- if ($NO_INPUT_USER) {
- printMsg("\n$newCertmap has been backup in $backupCertmap");
- &copyBinFile($newCertmap,$backupCertmap);
- &copyBinFile($oldCertmap,$newCertmap);
- }
- else {
- my $Ask = 1 ;
- while ($Ask) {
- printMsg("\n\nWhere do you want to back up the file $newCertmap [$backupCertmap] ?") ;
- my $Answer = <STDIN> ;
- $backupCertmap = $Answer if ($Answer ne "\n");
- chomp($backupCertmap);
- printTrace("\nDest: .$backupCertmap.",4);
- if (-e $backupCertmap) {
- printMsg("\n\n$backupCertmap already exists. Do you want to overwrite it Yes/No [No] ?") ;
- if (<STDIN> =~ /yes|y/i) {
- $Ask = 0 ;
- }
- else {
- $backupCertmap = "$root${PATHSEP}shared${PATHSEP}config${PATHSEP}certmap.conf_backup" ;
- }
- }
- else {
- $Ask = 0 ;
- }
- }
- printTrace("\nBackup file: $newCertmap in $backupCertmap",4);
- &copyBinFile($newCertmap,$backupCertmap);
- &copyBinFile($oldCertmap,$newCertmap);
- }
- }
- else {
- }
-}
-
-sub hasChangedoldCertmap {
- my $certmapfile = shift ;
- my @reference = ("certmap default default",
- "default:DNComps",
- "default:FilterComps e") ;
- my $cpt = 0 ;
- printTrace("\nhasChangedoldCertmap",3);
- open(CERTMAP,"< $certmapfile");
- while (<CERTMAP>) {
- if ((! /^\s*#/) && (! /^\s*$/)) {
- my $ref = $reference[$cpt] ;
- printTrace("\nValue: $_, ref: $ref",4);
- if (! /^\s*$ref\s*$/) {
- return 1 ;
- }
- else {
- $cpt++ ;
- }
- }
- }
- close (CERTMAP);
- printTrace("\ncpt: $cpt",4);
- if ($cpt < $#reference) {
- return 1 ;
- }
- else {
- return 0 ;
- }
-}
-
-
-###########################################################################################
-# #
-# Copy directory and files functions #
-# #
-###########################################################################################
-
-
-sub copyDir {
- my $src = shift;
- my $dest = shift;
- my $exclude = shift;
-
- opendir( SRC, $src ) or die "Can't open directory $src: $!: ";
- my $mode;
- my $uid;
- my $gid;
- mkdir ( $dest , 0755 ) or die "\nCan't create directory $dest. \nPlease check you have enough rights to create it and/or check that your parent directory exists.\n" if !( -e $dest );
- if ($PRESERVE) {
- $mode = (stat($src))[2];
- ($uid, $gid) = (stat(_))[4..5];
- # Make sure files owned by the old user are owned by the
- # new user
- if ($uid == $olduid) {
- $uid = $newuid;
- $gid = $newgid;
- }
- chown $uid, $gid, $dest;
- chmod $mode, $dest;
- }
- local ( @files ) = readdir ( SRC );
- closedir( SRC );
- for ( @files ) {
- if ( $_ eq "." || $_ eq ".." ) {
- next;
- } elsif ( $exclude && /$exclude/ ) {
- next;
- } elsif ( $_ =~ /^__/ ) {
- # region files are incompatible between 32
- # and 64 bit servers
- next;
- } elsif( -d "$src${PATHSEP}$_") {
- &copyDir ( "$src${PATHSEP}$_", "$dest${PATHSEP}$_" );
- } else {
- &copyBinFile ( "$src${PATHSEP}$_", "$dest${PATHSEP}$_");
- }
- }
-}
-
-sub copyBinFile {
- my $src = shift;
- my $dest = shift;
- my $buf = "";
- my $bufsize = 8192;
-
- open( SRC, $src ) || die "Can't open $src: $!\n";
- # if we are given a directory destination instead of a file, extract the
- # filename portion of the source to use as the destination filename
- if (-d $dest) {
- $dest = $dest . $PATHSEP . &basename($src);
- }
- open( DEST, ">$dest" ) || die "Can't create $dest: $!\n";
- binmode SRC;
- binmode DEST;
- if ($PRESERVE) {
- $mode = (stat($src))[2];
- ($uid, $gid) = (stat(_))[4..5];
- # Make sure files owned by the old user are owned by the
- # new user
- if ($uid == $olduid) {
- $uid = $newuid;
- $gid = $newgid;
- }
- chown $uid, $gid, $dest;
- chmod $mode, $dest;
- }
- while (read(SRC, $buf, $bufsize)) {
- print DEST $buf;
- }
- close( SRC );
- close( DEST );
-}
-
-#############################################################################################################
-# backup 6.x configuration files #
-# backup the directory <root_server5>/slapd-instance/config dans <root_server5>/slapd-instance/BackupConfig # #
-# #
-#############################################################################################################
-
-
-sub backupConfigFiles {
- # backup the 6.x config files
- my $src = "$serverHome${PATHSEP}config" ;
- my $dest = "$serverHome${PATHSEP}config_backup" ;
- if ($NO_INPUT_USER) {
- printMsg("\n$src has been backup in $dest");
- &copyDir($src,$dest);
- }
- else {
- my $Ask = 1 ;
- while ($Ask) {
- printMsg("\n\nWhere do you want to back up your configuration directory [$dest] ?") ;
- my $Answer = <STDIN> ;
- $dest = $Answer if ($Answer ne "\n");
- chomp($dest);
- printTrace("\nDest: .$dest.",4);
- if (-e $dest) {
- printMsg("\n\n$dest already exists. Do you want to overwrite it Yes/No [No] ?") ;
- if (<STDIN> =~ /yes|y/i) {
- $Ask = 0 ;
- }
- else {
- $dest = "$serverHome${PATHSEP}config_backup" ;
- }
- }
- else {
- $Ask = 0 ;
- }
- }
- printTrace("\nBackup Directory: $src in $dest",4);
- &copyDir($src,$dest);
- }
-}
-#############################################################################
-
-sub getLDAPservername {
- my $oldLDAPservername;
- my $LDAPservername;
- my $localhost = "nsslapd-localhost";
- open(OLDDSELDIF, "< $oldDSEldif") or die "\nError: could not open old config file $oldDSEldif \n";
- my $in = new Mozilla::LDAP::LDIF(*OLDDSELDIF) ;
- while ($entry = readOneEntry $in) {
- my $DN = $entry->getDN(1) ;
- if ($DN =~ /^cn=config$/i) {
- my @values = $entry->getValues($localhost);
- if ($entry->size($localhost)) {
- $oldLDAPservername = $values[0];
- printTrace("\nName of the old LDAP server: $oldLDAPservername",3);
- }
- break;
- }
- }
- close(OLDSELDIF);
-
- open( DSELDIF, "< $DSEldif" ) || die "\nCan't open $DSEldif \n";
- my $in = new Mozilla::LDAP::LDIF(*DSELDIF) ;
- while ($entry = readOneEntry $in) {
- my $DN = $entry->getDN(1) ;
- if ($DN =~ /^cn=config$/i) {
- my @values = $entry->getValues($localhost);
- if ($entry->size($localhost)) {
- $LDAPservername = $values[0];
- printTrace("\nName of the new LDAP server: $LDAPservername",3);
- }
- break;
- }
- }
- close(DSELDIF);
- # check ol and new Directory Instance are installed on the same physical machine.
- if (lc($oldLDAPservername) ne lc($LDAPservername)) {
- # warn the user he tries to migrate a 4.x server installed on a different machine from the 6.x one
- printMsg("\n\nYour old instance is on $oldLDAPservername, whereas your new instance is on $LDAPservername. Migration on different machines is not supported. Do you want to continue ? Yes/No [No]:") ;
- if (! (<STDIN> =~ /yes|y/i)) {
- return -1;
- }
- }
- return $LDAPservername ;
-}
-
-#############################################################################
-
-sub getLibPath {
- my $myDir = shift;
- my $myVersion = shift;
- my $myMinor = shift;
-
- if ($isNT) {
- return $ENV{"$LIB_PATH"};
- }
- if (($myVersion >= 6) && ($myMinor >= 2)) {
- return
- "$myDir${PATHSEP}bin${PATHSEP}slapd${PATHSEP}lib${SEP}".
- "$myDir${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server${SEP}".
- $ENV{"$LIB_PATH"};
- } else {
- return "$myDir${PATHSEP}lib${SEP}".$ENV{"$LIB_PATH"};
- }
-}
-
-#############################################################################
-
-sub getVersion {
- my $dir = shift;
- my $versionstr = shift;
- my $version = 0;
- my $minor = 0;
- my $buildNumber = 0;
- my $progDir = "${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server${PATHSEP}";
- my $progDir2 = "${PATHSEP}bin${PATHSEP}slapd${PATHSEP}";
-
- # find the slapd executable
- if (!$versionstr) { # version not specified on cmd line - find it
- $prog = $dir . $progDir . $slapdExecName;
- if (! -f $prog) {
- $prog = $dir . $progDir2 . $slapdExecName;
- if (-f $prog && $isNT) {
- # if slapd is in bin/slapd and we're on NT, just assume version 1;
- # apparently, slapd.exe doesn't like the -v argument . . .
- return ( '1', $minor );
- }
- else{
- die "Could not run slapd program $prog: $!";
- }
- }
- else {
- chdir($dir . $progDir);
- }
- $cur_libpath=$ENV{"$LIB_PATH"};
- $ENV{"$LIB_PATH"}=
- "$dir${PATHSEP}lib${SEP}".
- "$dir${PATHSEP}bin${PATHSEP}slapd${PATHSEP}lib${SEP}".
- "$dir${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server${SEP}".
- $ENV{"$LIB_PATH"};
- # read the old version from the old slapd program
-
- open(F, "${quote}${quote}$prog${quote} -v${quote} 2>&1 |") or
- die "Could not run slapd program $prog: $!";
- sleep(1); # allow some data to accumulate in the pipe
-# print "Output from $prog -v:\n";
- while (<F>) {
- if (/^Red Hat-Directory/ || /^Netscape-Directory/ || /^iPlanet-Directory/i) {
- $versionstr = $_;
- last;
- }
- }
- $code = close(F);
- # print "$prog returned code=$code status=$?\n";
- $ENV{"$LIB_PATH"}=$cur_libpath;
- }
-
- if ($versionstr =~ /^Red Hat-Directory\/(\d+)\.(\d+)(?:b\d)*\s+(\S+)/) {
- $version = $1;
- $minor = $2;
- $buildNumber = $3;
- }
- elsif ($versionstr =~ /^Netscape-Directory\/(\d+)\.(\d+)(?:b\d)*\s+(\S+)/) {
- $version = $1;
- $minor = $2;
- $buildNumber = $3;
- }
- elsif ($versionstr =~ /^Netscape-Directory\(restrict?ed-mode\)\/(\d+)\.(\d+)\s+(\S+)/) { # we can have restricted-mode or restriced-mode ...
- $version = $1;
- $minor = $2;
- $buildNumber = $3;
- }
- elsif ($versionstr =~ /^iPlanet-Directory\/(\d+)\.(\d+)\s+(\S+)/i) {
- $version = $1;
- $minor = $2;
- $buildNumber = $3;
- } elsif ($versionstr =~ /(\d+)\.(\d+)/) {
- $version = $1;
- $minor = $2;
- }
-
- if ($version == 0) {
- die "\nCould not determine version of the directory server in $dir: \n";
- }
-
- # distinguish the 4.1 and the 4.11 thanks to the buildNumber
- if (($version == 4) && ($minor == 1)){
- if (! ($buildNumber =~ /^B99\.16/)) {
- # it's not a 4.1 Netscape Directory Server => it's a 4.11
- $minor = 11 ;
- }
- }
- chdir($curdir) or die "Could not change directory to $curdir: $!" ;
- return ( $version, $minor );
-}
-
-###############################################################################################
-sub normalizeDir {
- my $dir = shift ;
- my $dir_prec = "" ;
- while ($dir_prec ne $dir) {
- $dir_prec = $dir ;
- if ($isNT) {
- grep { s@\\\\@\\@g } $dir ;
- }
- else {
- grep { s@//@/@g } $dir ;
- }
- }
- return $dir ;
-}
-
-
-###############################################################################################
-
-sub GetTime {
- my $tm = localtime;
- (my $sec, my $min, my $hour, my $dd, my $mm, my $yy) = ($tm->sec, $tm->min, $tm->hour, $tm->mday, ($tm->mon)+1, ($tm->year)+1900);
- $sec = "0$sec" unless $sec > 9 ;
- $min = "0$min" unless $min > 9 ;
- $hour = "0$hour" unless $hour > 9 ;
- $dd = "0$dd" unless $dd > 9 ;
- $mm = "0$mm" unless $mm > 9 ;
- return ($sec, $min, $hour, $dd, $mm, $yy);
-}
-
-###############################################################################################
-# get uid and group id of the 6.x slapd server.
-# The uid is done through the nsslapd-localuser attribute
-
-sub getuid_gid {
- my $newuid ;
- my $newgid ;
- my $localuser ;
- my $localuser_attr = "nsslapd-localuser" ;
- if (! $isNT) {
- &startServer() unless (isDirectoryAlive());
- my $conn = new Mozilla::LDAP::Conn($LDAPservername,$newport,$rootDN,$rootpwd) or die "\n Can't contact the $Version.$Minor LDAP server: $LDAPservername\n";
- my $entry = $conn->search("cn=config ", "base","objectclass=*", 0, ($localuser_attr)) ;
- # Tests wether we succeed to get the entry cn=config
- die "\nCan't get the entry cn=config \n" unless ($entry);
- my @values = $entry->getValues($localuser_attr);
- $conn->close();
- if ($#values == -1 || ($values[0] eq "") ) { # tests wether the nsslapd-localuser attribute has a value
- printMsg("\nNo localuser has been found in the configuration of the directory. ");
- if ($NO_INPUT_USER) {
- printMsg("\nWe considered nobody as the localuser");
- $localuser = "nobody" ;
- }
- else {
- my $Ask = 1 ;
- while ($Ask) {
- printMsg("\nUnder what user does your $Version.$Minor directory server run [nobody] ? ") ;
- $localuser = <STDIN> ;
- chomp($localuser);
- $localuser = "nobody" if ($localuser eq "");
- ($newuid, $newgid) = (getpwnam("$localuser"))[2..3] ;
- if ($newuid) {
- $Ask = 0 ;
- }
- else {
- printMsg("\nError: $localuser is unknown from the system ");
- }
- }
- }
- }
- else {
- $localuser = $values[0]; # returns the first value (we should only have one localuser)
- my $size = $#values ;
- }
- ($newuid, $newgid) = (getpwnam("$localuser"))[2..3] ;
- return ($localuser, $newuid, $newgid) ;
- }
- else {
- return () ;
- }
-}
-
-sub getolduid_gid {
- my $oldlocaluser ;
- my $localuserAttr = "nsslapd-localuser";
- my $entry ;
- if (! $isNT) {
- open( DSELDIF, "< $oldDSEldif" ) || die "Can't open $oldDSEldif: $!: ";
- my $in = new Mozilla::LDAP::LDIF(*DSELDIF) ;
- while ($entry = readOneEntry $in) {
- $typeOfEntry = getTypeOfEntry($entry);
- if ($typeOfEntry eq "CONFIG_NODE") {
- $oldlocaluser = $entry->{$localuserAttr}[0] if ($entry->exists($localuserAttr));
- break ;
- }
- }
- close(DSE);
- ($olduid, $oldgid) = (getpwnam("$oldlocaluser"))[2..3] ;
- return ($oldlocaluser, $olduid, $oldgid) ;
- }
- else {
- return ();
- }
-}
-###############################################################################################
-# get current directory
-
-sub getCwd {
- my $command = $isNT ? "cd" : "/bin/pwd";
- open(PWDCMD, "$command 2>&1 |") or
- die "Error: could not execute $command: $!";
- # without the following sleep, reading from the pipe will
- # return nothing; I guess it gives the pwd command time
- # to get some data to read . . .
- sleep(1);
- my $currentdir;
- while (<PWDCMD>) {
- if (!$currentdir) {
- chomp($currentdir = $_);
- }
- }
- my $code = close(PWDCMD);
-# if ($code || $?) {
-# print "$command returned code=$code status=$? dir=$curdir\n";
-# }
-# print "getCwd curdir=\[$curdir\]\n";
- return $currentdir;
-}
-
-################################
-# Need to migrate the credential.
-# If the credential can not be migrated, leave it at it is
-################################
-sub migrate_credential{
- my $entry_to_modify = shift;
- my $credentials_attr = shift;
- my @old_value = $entry_to_modify->getValues($credentials_attr);
- my $migratecredExecName = 'migratecred';
- my $credOldHome = $oldHome;
- my $credServerHome = $serverHome;
-
- if ($isNT) {
- # oldHome may be pointing to the archived copy of the
- # instance dir which may be different than the path that
- # the instance was originally installed as on Windows. If
- # this path is not the original install path, then the
- # credential will not be migrated correctly. We should
- # prompt the user on Windows for the correct path.
-
- print "\n\nThe old instance path must be the same as where it was";
- print "\ninitially installed, not where it was archived in order";
- print "\nfor this step to succeed. Please verify that the path";
- print "\nis correct. Note that case sensitivity is important here.";
- print "\n\nOld Instance Directory: $credOldHome";
- print "\nIs this correct? (y/n): ";
- chomp(my $answer = <STDIN>);
- if (!($answer =~ /y|yes/i)) {
- print "\nPlease enter the correct path for the old instance directory: ";
- chomp($credOldHome = <STDIN>);
- }
-
- print "\n\nThe new instance path must also be correct for this step";
- print "\nto succeed. Please verify that the path is correct. Note";
- print "\nthat case sensitivity is important here.";
- print "\n\nNew Instance Directory: $credServerHome";
- print "\nIs this correct? (y/n): ";
- chomp(my $answer = <STDIN>);
- if (!($answer =~ /y|yes/i)) {
- print "\nPlease enter the correct path for the new instance directory: ";
- chomp($credServerHome = <STDIN>);
- }
- }
-
- my $cur_dir = getCwd();
- my $migratecreddir = "${quote}$root${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server";
- chdir(${migratecreddir}) or die "Could not change directory to $migratecreddir: $!";
-
-# print "\nMigratecred command is: ${quote}$root${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server${PATHSEP}$migratecredExecName${quote} -o $credOldHome -n $credServerHome -c @old_value\n";
-
- my @new_cred = `${quote}$root${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server${PATHSEP}$migratecredExecName${quote} -o $credOldHome -n $credServerHome -c @old_value`;
-
- chdir(${cur_dir}) or die "Could not change directory back to $cur_dir: $!";
-
- if ( $? == 0 )
- {
- $entry_to_modify->setValues($credentials_attr, @new_cred);
- }
-}
-
diff --git a/ldap/admin/src/scripts/template-migrateInstance7 b/ldap/admin/src/scripts/template-migrateInstance7
deleted file mode 100644
index acc0e987..00000000
--- a/ldap/admin/src/scripts/template-migrateInstance7
+++ /dev/null
@@ -1,586 +0,0 @@
-#{{PERL-EXEC}}
-#
-# BEGIN COPYRIGHT BLOCK
-# This Program is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; version 2 of the License.
-#
-# This Program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place, Suite 330, Boston, MA 02111-1307 USA.
-#
-# In addition, as a special exception, Red Hat, Inc. gives You the additional
-# right to link the code of this Program with code not covered under the GNU
-# General Public License ("Non-GPL Code") and to distribute linked combinations
-# including the two, subject to the limitations in this paragraph. Non-GPL Code
-# permitted under this exception must only link to the code of this Program
-# through those well defined interfaces identified in the file named EXCEPTION
-# found in the source code files (the "Approved Interfaces"). The files of
-# Non-GPL Code may instantiate templates or use macros or inline functions from
-# the Approved Interfaces without causing the resulting work to be covered by
-# the GNU General Public License. Only Red Hat, Inc. may make changes or
-# additions to the list of Approved Interfaces. You must obey the GNU General
-# Public License in all respects for all of the Program code and other code used
-# in conjunction with the Program except the Non-GPL Code covered by this
-# exception. If you modify this file, you may extend this exception to your
-# version of the file, but you are not obligated to do so. If you do not wish to
-# provide this exception without modification, you must delete this exception
-# statement from your version and license this file solely under the GPL without
-# exception.
-#
-#
-# Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
-# Copyright (C) 2005 Red Hat, Inc.
-# All rights reserved.
-# END COPYRIGHT BLOCK
-#
-use Time::localtime;
-
-BEGIN {
- require 'uname.lib';
- $| = 1;
- $isNT = -d '\\';
- $PATHSEP = $isNT ? "\\" : "/";
- $SEP = $isNT ? ";" : ":" ;
- $exitCode = 0;
- @INC = ( '.', '../../../admin/admin/bin');
- grep { s@/@\\@g } @INC if $isNT;
- $script_suffix = $isNT ? ".bat" : "";
- $exe_suffix = $isNT ? ".exe" : "";
- # NT needs quotes around some things unix doesn't
- $quote = $isNT ? "\"" : "";
- if ($isNT) {
- # we have to pass batch files directly to the NT command interpreter
- $com_spec = $ENV{ComSpec};
- if (!$com_spec) {
- $com_spec = $ENV{COMSPEC};
- }
- if (!$com_spec || ! -f $com_spec) {
- # find the first available command interpreter
- foreach $drive (c..z) {
- $com_spec = "$drive:\\winnt\\system32\\cmd.exe";
- last if (-f $com_spec);
- $com_spec = undef;
- }
- if (! $com_spec) {
- # punt and pray
- $com_spec = 'c:\winnt\system32\cmd.exe';
- }
- }
- $os = "WINNT";
- } else {
- $os = &uname("-s");
- if ($os eq "SunOS") {
- $isSolaris9 = ( &uname("-r") eq "5.9" );
- }
- }
-
- if ( ($os eq "AIX") || ($os eq "HP-UX") ) {
- $sigChildHandler = 'sigChildHandler';
- }
- SWITCH: {
- if ($os eq "AIX") {
- $LIB_PATH = "LIBPATH" ;
- last SWITCH ;
- }
- if ($os eq "HP-UX") {
- $LIB_PATH = "SHLIB_PATH" ;
- last SWITCH ;
- }
- if ($isNT) {
- $LIB_PATH = "PATH" ;
- last SWITCH ;
- }
- else {
- $LIB_PATH = "LD_LIBRARY_PATH" ;
- last SWITCH ;
- }
- }
- $slapdExecName = $isNT ? 'slapd.exe' : 'ns-slapd';
- select STDERR;
- $| = 1;
- select STDOUT;
- $| = 1;
-}
-
-
-
-$TRACELEVEL = 0;
-${root} = "{{DS-ROOT}}" ;
-${type} = "" ;
-${newname} = "" ;
-${newport} = "" ;
-${rootDN} = "" ;
-${rootpwd} = "" ;
-${localhost} = "" ;
-${LogFileReport} = "" ;
-
-# get input users
-&getParameters() ;
-
-
-${oldHome} = "${oldDir}${PATHSEP}$type-$oldname" ;
-${oldConfDir} = "${oldHome}${PATHSEP}config${PATHSEP}" ;
-${oldSlapdConf} = "${oldConfDir}slapd.conf" ;
-${serverHome} = "${root}${PATHSEP}$type-$newname" ;
-${ldif_rep} = "${oldConfDir}ldif${PATHSEP}" ;
-${curdir} = getCwd();
-
-
-if (!(-d $serverHome)) {
- print("\n$serverHome doesn't exist\n");
- exit(1);
- }
- if (!(-d $oldHome)) {
- print("\n$oldHome doesn't exist\n");
- exit(1);
- }
-if ($olddatadir && !(-d $olddatadir)) {
- print("\n$olddatadir doesn't exist\n");
- exit(1);
- }
-$ENV{"$LIB_PATH"} = "$root${PATHSEP}lib${SEP}".$ENV{"$LIB_PATH"} ;
-
-# get the version of the DS to migrate
-($oldVersion, $oldMinor) = &getVersion($oldDir, $oldversionstr);
-# get the version of the new DS
-($Version, $Minor) = &getVersion($root);
-
-if ($Version >= 7) {
- if ($oldVersion == 4) {
- $myscript = "migrateTo7" ;
- printMsg("\n******* Migration from $oldVersion.$oldMinor to $Version.$Minor Directory Server *********\n");
- }
- elsif ($oldVersion == 5 ) {
- printMsg("\nWarning. You may experience some problems if the version of directory server you want to migrate is not a 5.0 or 5.1") if ($oldMinor > 1);
- $myscript = "migrate5to7" ;
- printMsg("\n******* Migration from $oldVersion.$oldMinor to $Version.$Minor Directory Server *********\n");
- }
- elsif ($oldVersion == 6 ) {
- $myscript = "migrate6to7" ;
- printMsg("\n******* Migration from $oldVersion.$oldMinor to $Version.$Minor Directory Server *********\n");
- }
- else {
-
- die "We don't support the version of directory server you want to migrate";
- }
-}
-else {
- die "\n\nThe version of directory you want to upgrade is not a 7.x product\nMigration aborted\n";
-}
-
-my $start_time = gmtime ;
-@args = ($^X, $myscript, @ARGV, '-L', $LogFileReport);
-$exitCode = &mySystem(@args);
-#die "Error: @args: $!" if ($exitCode != 0);
-
-open(LOGFILE,">> $LogFileReport") or die "\nCan't write to $LogFileReport\n$!\n";
-if (! $exitCode) {
- my $end_time = gmtime ;
- printMsg("-> Migration started at $start_time\n");
- printMsg("-> Migration ended at $end_time\n\n");
-}
-printMsg("***********************************************\n\n");
-print("-> The migration report file is available at: $LogFileReport\n\n");
-
-close(LOGFILE);
-
-#######################################################################################################################
-sub usage {
- print(STDERR "\nUsage: $0 -D rootdn { -w password | -w - | -j filename } -p port \n");
- print(STDERR " -o oldInstancePath -n newInstancePath [-t tracelevel] \n");
- print(STDERR " [-L logfile] [-noinput]\n");
- print(STDERR "************** parameters in brackets are optionals, others are required **************\n");
- print(STDERR " Opts: -D rootdn - new Directory Manager\n");
- print(STDERR " : -w password - new Directory Manager's password\n");
- print(STDERR " : -w - - Prompt for new Directory Manager's password\n");
- print(STDERR " : -j filename - Read new Directory Manager's password from file\n");
- print(STDERR " : -p port - new Directory Server port\n");
- print(STDERR " : -o oldInstancePath - Path of the old instance to migrate \n");
- print(STDERR " : -n newInstancePath - Path of the new instance\n");
- print(STDERR " : [-d dataPath] - Path to directory containing data files to import into new instance\n");
- print(STDERR " : [-v oldVersion] - Version of old instance (obtained by running $slapdExecName -v\n");
- print(STDERR " : [-t tracelevel] - specify the level of trace (0..3) by default setup to 1\n");
- print(STDERR " : [-L logfile] - specify the file to log the migration report \n");
- print(STDERR " : [-noinput] - no user interventions during migration processing to solve conflicts\n");
-
- }
-
-
-#######################################################################################################################
-# get input users
-
-sub getParameters {
- my $exit = 0 ;
- my $i = 0;
- my $pwdfile= "";
-
- while ($i <= $#ARGV) {
- if ( "$ARGV[$i]" eq "-D" ) { # directory manager
- if (! $rootDN) {
- $rootDN = $ARGV[++$i] ;
- }
- else {
- &usage() ;
- exit(1);
- }
- } elsif ("$ARGV[$i]" eq "-w") { # password
- if (! $rootpwd) {
- $rootpwd = $ARGV[++$i] ;
- }
- else {
- &usage() ;
- exit(1);
- }
- } elsif ("$ARGV[$i]" eq "-j") { # password file
- if (! $pwdfile) {
- $pwdfile = $ARGV[++$i] ;
- }
- else {
- &usage() ;
- exit(1);
- }
- } elsif ("$ARGV[$i]" eq "-o") { # old instance path
- if (! $oldHome ) {
- $oldHome = $ARGV[++$i] ;
- grep { s@\\@/@g } $oldHome if $isNT ;
- if ($oldHome =~ /[\"]?(.*)?[\"]?/) { $oldHome = $1 ; }
- if ($oldHome =~ m@^(.*)/([^-/]*)-([^/]*)[/]?$@) {
- $oldDir = $1 ;
- $type = $2 ;
- $oldname = $3 ;
- if ($isNT) {
- $oldDir = lc($oldDir) ;
- $type = lc($type) ;
- $oldname = lc($oldname) ;
- $oldHome = lc($oldHome) ;
- grep { s@/@\\@g } $oldDir ;
- grep { s@/@\\@g } $oldHome ;
- }
- }
- else {
- print("\nThe old instance path is not correct. It must be like slapd-instancename");
- &usage();
- exit(1);
- }
- }
- else {
- &usage() ;
- exit(1);
- }
- } elsif ("$ARGV[$i]" eq "-n") { # 5.x instance path
- if (! $serverHome ) {
- $serverHome = $ARGV[++$i] ;
- grep { s@\\@/@g } $root if $isNT ;
- grep { s@\\@/@g } $serverHome if $isNT ;
- if ($serverHome =~ /[\"]?(.*)?[\"]?/) { $serverHome = $1 ; }
- if ($serverHome =~ m@^(.*?)/?([^/-]*)-([^/]*)[/]?$@) {
- $root = $1 if ($1);
- $type = $2 ;
- $newname = $3 ;
- if ($isNT) {
- $root = lc($root) ;
- $type = lc($type) ;
- $newname = lc($newname) ;
- $serverHome = lc($serverHome) ;
- grep { s@/@\\@g } $root ;
- grep { s@/@\\@g } $serverHome ;
- }
- }
- else {
- print("\nThe new instance path is not correct. It must be like slapd-instancename");
- &usage();
- exit(1);
- }
- }
- else {
- &usage() ;
- exit(1);
- }
- } elsif ("$ARGV[$i]" eq "-p") { # 5.x DS port
- if (! $newport ) {
- $newport = $ARGV[++$i] ;
- }
- else {
- &usage() ;
- exit(1);
- }
- } elsif ("$ARGV[$i]" eq "-d") { # old instance LDIF data dir
- if (! $olddatadir ) {
- $olddatadir = $ARGV[++$i] ;
- }
- else {
- &usage() ;
- exit(1);
- }
- } elsif ("$ARGV[$i]" eq "-v") { # old version
- if (! $oldversionstr ) {
- $oldversionstr = $ARGV[++$i] ;
- }
- else {
- &usage() ;
- exit(1);
- }
- } elsif ("$ARGV[$i]" eq "-t") { # TRACELEVEL
- my $value = $ARGV[++$i] ;
- if ($value =~ /[0-3]/) {
- $TRACELEVEL = $value ;
- }
- else {
- print("\nThe tracelevel must belong to 0..3 interval");
- &usage();
- exit();
- }
- } elsif ("$ARGV[$i]" eq "-noinput") { # no user interventions during processing
- } elsif ("$ARGV[$i]" eq "-L") { # user defined logfile for the migration
- $LogFileReport = $ARGV[++$i];
- }
- else {
- &usage() ;
- exit(1);
- }
- $i++;
- }
-
- if (! $rootDN) {
- print("\nThe rootDN is missing");
- $exit = 1;
- }
- if ($pwdfile ne "") {
- # Open file and get the password
- unless (open (RPASS, $pwfile)) {
- die "Error, cannot open password file $passwdfile\n";
- }
- $rootpwd = <RPASS>;
- chomp($rootpwd);
- close(RPASS);
- } elsif ($rootpwd eq "-"){
- # Read the password from terminal
- die "The '-w -' option requires an extension library (Term::ReadKey) which is not\n",
- "part of the standard perl distribution. If you want to use it, you must\n",
- "download and install the module. You can find it at\n",
- "http://www.perl.com/CPAN/CPAN.html\n";
- # Remove the previous line and uncomment the following 6 lines once you have installed Term::ReadKey module.
-# use Term::ReadKey;
-# print "Bind Password: ";
-# ReadMode('noecho');
-# $rootpwd = ReadLine(0);
-# chomp($rootpwd);
-# ReadMode('normal');
- }
- if (! $rootpwd) {
- print("\nThe rootpwd is missing");
- $exit = 1 ;
- }
- if (! $newport) {
- print("\nThe port is missing");
- $exit = 1;
- }
- if (! $serverHome) {
- print("\nThe new instance path is missing");
- $exit = 1;
- }
- if (! $oldHome) {
- print("\nThe old instance path is missing");
- $exit = 1;
- }
- if ((! $LogFileReport) && $serverHome) {
- ($sec, $min, $hour, $dd, $mm, $yy) = &GetTime();
- $LogFileReport = "${serverHome}${PATHSEP}logs${PATHSEP}Migration_${dd}${mm}${yy}_${hour}${min}${sec}.log";
- }
- if ($exit) {
- &usage() ;
- exit(1);
- }
-
-}
-
-#############################################################################
-# printMsg print message to the user standard output.
-
-sub printMsg {
-
- my $TypeMsg = shift ;
- my $Msg = shift ;
- my $LineNb = shift ;
- if ($LineNb) {
- printTrace("Line: $LineNb, $TypeMsg, $Msg");
- }
- else {
- printTrace("$TypeMsg $Msg");
- }
-}
-
-#############################################################################
-# print message error to the user standard output.
-
-sub printTrace {
-
- my $Msg = shift ;
- my $level = shift ;
- if ($level <= $TRACELEVEL) {
- print($Msg);
- print LOGFILE $Msg;
- }
-
-}
-
-#############################################################################
-sub mySystem {
- my $cmd = $_[0];
- # the system {$cmd} avoids some NT shell quoting problems if the $cmd
- # needs to be quoted e.g. contains spaces; the map puts double quotes
- # around the arguments on NT which are stripped by the command
- # interpreter cmd.exe; but don't quote things which are already quoted
- my @fixargs = map { /^[\"].*[\"]$/ ? $_ : $quote . $_ . $quote } @_;
- my $rc = 0;
- if ($cmd =~ /[.](bat|cmd)$/) {
- # we have to pass batch files directly to the NT command interpreter
- $cmd = $com_spec;
-# print "system $cmd /c \"@fixargs\"\n";
- $rc = system {$cmd} '/c', "\"@fixargs\"";
- } else {
-# print "system $cmd \"@fixargs\"\n";
- if($isNT) {
- $rc = system "\"@fixargs\"";
- } else {
- $rc = system @fixargs;
- }
- }
-
- return $rc;
-}
-
-#############################################################################
-
-sub GetTime {
- my $tm = localtime;
- (my $sec, my $min, my $hour, my $dd, my $mm, my $yy) = ($tm->sec, $tm->min, $tm->hour, $tm->mday, ($tm->mon)+1, ($tm->year)+1900);
- $sec = "0$sec" unless $sec > 9 ;
- $min = "0$min" unless $min > 9 ;
- $hour = "0$hour" unless $hour > 9 ;
- $dd = "0$dd" unless $dd > 9 ;
- $mm = "0$mm" unless $mm > 9 ;
- return ($sec, $min, $hour, $dd, $mm, $yy);
-}
-
-#############################################################################
-
-sub getVersion {
- my $dir = shift;
- my $versionstr = shift;
- my $version = 0;
- my $minor = 0;
- my $buildNumber = 0;
- my $progDir = "${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server${PATHSEP}";
- my $progDir2 = "${PATHSEP}bin${PATHSEP}slapd${PATHSEP}";
-
- # find the slapd executable
- if (!$versionstr) { # version not specified on cmd line - find it
- $prog = $dir . $progDir . $slapdExecName;
- if (! -f $prog) {
- $prog = $dir . $progDir2 . $slapdExecName;
- if (-f $prog && $isNT) {
- # if slapd is in bin/slapd and we're on NT, just assume version 1;
- # apparently, slapd.exe doesn't like the -v argument . . .
- return ( '1', $minor );
- }
- else{
- die "Could not run slapd program $prog: $!";
- }
- }
- else {
- chdir($dir . $progDir);
- }
- $preserve_lib_path = $ENV{"$LIB_PATH"};
- $ENV{"$LIB_PATH"}=
- "$dir${PATHSEP}lib${SEP}".
- "$dir${PATHSEP}bin${PATHSEP}slapd${PATHSEP}lib${SEP}".
- "$dir${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server${SEP}".
- $ENV{"$LIB_PATH"};
- # read the old version from the old slapd program
-
- open(F, "${quote}${quote}$prog${quote} -v${quote} 2>&1 |") or
- die "Could not run slapd program $prog: $!";
- sleep(1); # allow some data to accumulate in the pipe
-# print "Output from $prog -v:\n";
- while (<F>) {
- if (/^Red Hat-Directory/ || /^Netscape-Directory/ || /^iPlanet-Directory/i) {
- $versionstr = $_;
- last;
- }
- }
- $code = close(F);
- # print "$prog returned code=$code status=$?\n";
- $ENV{"$LIB_PATH"}="$root${PATHSEP}lib${SEP}".$ENV{"$LIB_PATH"};
- }
-
- if ($versionstr =~ /^Red Hat-Directory\/(\d+)\.(\d+)(?:b\d)*\s+(\S+)/) {
- $version = $1;
- $minor = $2;
- $buildNumber = $3;
- }
- elsif ($versionstr =~ /^Netscape-Directory\/(\d+)\.(\d+)(?:b\d)*\s+(\S+)/) {
- $version = $1;
- $minor = $2;
- $buildNumber = $3;
- }
- elsif ($versionstr =~ /^Netscape-Directory\(restrict?ed-mode\)\/(\d+)\.(\d+)\s+(\S+)/) { # we can have restricted-mode or restriced-mode ...
- $version = $1;
- $minor = $2;
- $buildNumber = $3;
- }
- elsif ($versionstr =~ /^iPlanet-Directory\/(\d+)\.(\d+)\s+(\S+)/i) {
- $version = $1;
- $minor = $2;
- $buildNumber = $3;
- } elsif ($versionstr =~ /(\d+)\.(\d+)/) {
- $version = $1;
- $minor = $2;
- }
-
- if ($version == 0) {
- die "\nCould not determine version of the directory server in $dir: \n";
- }
-
- # distinguish the 4.1 and the 4.11 thanks to the buildNumber
- if (($version == 4) && ($minor == 1)){
- if (! ($buildNumber =~ /^B99\.16/)) {
- # it's not a 4.1 Netscape Directory Server => it's a 4.11
- $minor = 11 ;
- }
- }
- # Restore the original library path
- $ENV{"$LIB_PATH"} = $preserve_lib_path;
- chdir($curdir) or die "Could not change directory to $curdir: $!" ;
- return ( $version, $minor );
-}
-
-###############################################################################################
-# get current directory
-
-sub getCwd {
- my $command = $isNT ? "cd" : "/bin/pwd";
- open(PWDCMD, "$command 2>&1 |") or
- die "Error: could not execute $command: $!";
- # without the following sleep, reading from the pipe will
- # return nothing; I guess it gives the pwd command time
- # to get some data to read . . .
- sleep(1);
- my $currentdir;
- while (<PWDCMD>) {
- if (!$currentdir) {
- chomp($currentdir = $_);
- }
- }
- my $code = close(PWDCMD);
-# if ($code || $?) {
-# print "$command returned code=$code status=$? dir=$curdir\n";
-# }
-# print "getCwd curdir=\[$curdir\]\n";
- return $currentdir;
-}
diff --git a/ldap/admin/src/scripts/template-migrateTo7 b/ldap/admin/src/scripts/template-migrateTo7
deleted file mode 100644
index 4a7b2c37..00000000
--- a/ldap/admin/src/scripts/template-migrateTo7
+++ /dev/null
@@ -1,3321 +0,0 @@
-#{{PERL-EXEC}}
-#
-# BEGIN COPYRIGHT BLOCK
-# This Program is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; version 2 of the License.
-#
-# This Program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place, Suite 330, Boston, MA 02111-1307 USA.
-#
-# In addition, as a special exception, Red Hat, Inc. gives You the additional
-# right to link the code of this Program with code not covered under the GNU
-# General Public License ("Non-GPL Code") and to distribute linked combinations
-# including the two, subject to the limitations in this paragraph. Non-GPL Code
-# permitted under this exception must only link to the code of this Program
-# through those well defined interfaces identified in the file named EXCEPTION
-# found in the source code files (the "Approved Interfaces"). The files of
-# Non-GPL Code may instantiate templates or use macros or inline functions from
-# the Approved Interfaces without causing the resulting work to be covered by
-# the GNU General Public License. Only Red Hat, Inc. may make changes or
-# additions to the list of Approved Interfaces. You must obey the GNU General
-# Public License in all respects for all of the Program code and other code used
-# in conjunction with the Program except the Non-GPL Code covered by this
-# exception. If you modify this file, you may extend this exception to your
-# version of the file, but you are not obligated to do so. If you do not wish to
-# provide this exception without modification, you must delete this exception
-# statement from your version and license this file solely under the GPL without
-# exception.
-#
-#
-# Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
-# Copyright (C) 2005 Red Hat, Inc.
-# All rights reserved.
-# END COPYRIGHT BLOCK
-#
-
-# enable the use of our bundled perldap with our bundled ldapsdk libraries
-# all of this nonsense can be omitted if the mozldapsdk and perldap are
-# installed in the operating system locations (e.g. /usr/lib /usr/lib/perl5)
-BEGIN {
- my $sroot = "{{DS-ROOT}}";
- push @INC, "$sroot/lib/perl/arch", "$sroot/lib/perl";
- if ($ENV{LD_LIBRARY_PATH}) {
- $ENV{LD_LIBRARY_PATH} .= ":";
- }
- $ENV{LD_LIBRARY_PATH} .= "$sroot/shared/lib";
- # this is only needed for HP/ux PA-RISC, but it doesn't hurt other platforms
- if ($ENV{SHLIB_PATH}) {
- $ENV{SHLIB_PATH} .= ":";
- }
- $ENV{SHLIB_PATH} .= "$sroot/shared/lib";
-}
-# Migrate a old directory server to a 7.0 directory server
-
-########################################################################################################
-# enable the use of Perldap functions
-require DynaLoader;
-
-use Getopt::Std;
-use Mozilla::LDAP::Conn;
-use Mozilla::LDAP::Entry;
-use Mozilla::LDAP::LDIF;
-use Mozilla::LDAP::Utils qw(:all);
-use Mozilla::LDAP::API qw(:api :ssl :apiv3 :constant); # Direct access to C API
-use Time::localtime;
-
-########################################################################################################
-use Class::Struct ; # load struct-building module
-
-struct S_index => {
- names => '@' ,
- types => '@' ,
- oids => '@' ,
- specific => '$'
- };
-
-
-struct S_plugin => {
- name => '$' ,
- type => '$' ,
- enable => '$' ,
- args => '@'
- };
-#####################################################################################################
-
-sub usage {
- print(STDERR "\nUsage: $0 -D rootdn { -w password | -w - | -j filename } -p port \n");
- print(STDERR " -o OldInstancePath -n NewInstancePath [-t tracelevel] [-L logfile]\n");
- print(STDERR "************** parameters in brackets are optionals, others are required **************\n");
- print(STDERR " Opts: -D rootdn - New Directory Manager\n");
- print(STDERR " : -w password - New Directory Manager's password\n");
- print(STDERR " : -w - - Prompt for New Directory Manager's password\n");
- print(STDERR " : -j filename - Read New Directory Manager's password from file\n");
- print(STDERR " : -p port - New Directory Server port\n");
- print(STDERR " : -o OldInstancePath - Path of the Old instance to migrate \n");
- print(STDERR " : -n NewInstancePath - Path of the new instance\n");
- print(STDERR " : [-d dataPath] - Path to directory containing data files to import into new instance\n");
- print(STDERR " : [-v oldVersion] - Old version (obtained by running $slapdExecName -v\n");
- print(STDERR " : [-t tracelevel] - specify the level of trace (0..3)\n");
- print(STDERR " : [-L logfile] - specify the file to log the migration report \n");
-
-
- }
-
-
-
-#############
-BEGIN {
-
- require 'uname.lib' ;
- $isNT = -d '\\';
- $PATHSEP = $isNT ? "\\" : "/";
- ${SEP} = $isNT ? ";" : ":" ;
- @INC = ( '.', '../../../admin/admin/bin');
- grep { s@/@\\@g } @INC if $isNT;
- $script_suffix = $isNT ? ".bat" : "";
- $exe_suffix = $isNT ? ".exe" : "";
- # NT needs quotes around some things unix doesn't
- $quote = $isNT ? "\"" : "";
-
- # If this variable is set, all file/directory creation will make sure the mode
- # and ownership of the destination is the same as the source
- $PRESERVE = 1 if (!$isNT);
- $script_suffix = $isNT ? ".bat" : "";
- $exe_suffix = $isNT ? ".exe" : "";
- if ($isNT) {
- $os = "WINNT";
- } else {
- $os = &uname("-s");
- }
- if ($isNT) {
- # we have to pass batch files directly to the NT command interpreter
- $com_spec = $ENV{ComSpec};
- if (!$com_spec) {
- $com_spec = $ENV{COMSPEC};
- }
- if (!$com_spec || ! -f $com_spec) {
- # find the first available command interpreter
- foreach $drive (c..z) {
- $com_spec = "$drive:\\winnt\\system32\\cmd.exe";
- last if (-f $com_spec);
- $com_spec = undef;
- }
- if (! $com_spec) {
- # punt and pray
- $com_spec = 'c:\winnt\system32\cmd.exe';
- }
- }
- }
- if ( $os eq "AIX" ) {
- $dll_suffix = "_shr.a";
- }
- elsif ( $os eq "HP-UX" ) {
- $dll_suffix = ".sl";
- }
- elsif ( $os eq "WINNT" ) {
- $dll_suffix = ".dll";
- }
- else {
- $dll_suffix = ".so";
- }
- $slapdExecName = $isNT ? 'slapd.exe' : './ns-slapd';
- # if this flag is set, we will migrate the old database
- # by doing a db2ldif -> ldif2db;
- $convertToLDIF = 1;
- select STDERR;
- $| = 1;
- select STDOUT;
- $| = 1;
- # if the old value for dbcachesize is less than this, make it this
- $MIN_DBCACHESIZE = '500000';
-}
-
-SWITCH: {
- if ($os eq "AIX") {
- $LIB_PATH = "LIBPATH" ;
- last SWITCH ;
- }
- if ($os eq "HP-UX") {
- $LIB_PATH = "SHLIB_PATH" ;
- last SWITCH ;
- }
- if ($isNT) {
- $LIB_PATH = "PATH" ;
- last SWITCH ;
- }
- else {
- $LIB_PATH = "LD_LIBRARY_PATH" ;
- last SWITCH ;
- }
- }
-
- # Old parameters
- ${oldDir} = "" ;
- ${oldname} = "" ;
- ${oldHome} = "" ;
- ${oldConfDir} = "" ;
- ${oldlocaluser} ;
- ${olduid} ;
- ${oldgid} ;
-
- # New parameters
- ${root} = "{{DS-ROOT}}" ;
- ${type} = "" ;
- ${newname} = "" ;
- ${newport} = "" ;
- ${rootDN} = "" ;
- ${rootpwd} = "" ;
- ${localhost} = "" ;
- ${LogFileReport} = "" ;
- ${newuid} ;
- ${localuser} ;
- ${newgid} ;
- $NO_INPUT_USER = 0 ; # by default user can give inputs during the migration process
- ${curdir} = getCwd();
- ${slapdExecDir} = "${root}${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server${PATHSEP}";
-
- # specify the level of trace
- $TRACELEVEL=1;
-
- $LDAP_SERVER_UNREACHABLE = 81;
-
- # get input users
- &getParameters() ;
- ${oldDir} = &normalizeDir("${oldDir}");
- ${oldHome} = "${oldDir}${PATHSEP}$type-$oldname" ;
- ${oldConfDir} = "${oldHome}${PATHSEP}config${PATHSEP}" ;
- ${oldSlapdConf} = "${oldConfDir}slapd.conf" ;
- ${oldDSEldif} = "${oldConfDir}dse.ldif" ;
- ${serverHome} = "${root}${PATHSEP}$type-$newname" ;
- ${DSEldif} = "$serverHome${PATHSEP}config${PATHSEP}dse.ldif";
- ${ldif_rep} = "${oldConfDir}${PATHSEP}ldif${PATHSEP}" ;
- ${oldSlapdExecDir} = "${oldDir}${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server${PATHSEP}";
-
-
-
-
- open(LOGFILE, ">> $LogFileReport");
-
- printTrace("\noldDir: $oldDir, oldHome: $oldHome, \noldConfDir: $oldConfDir, \noldSlapdConf: $oldSlapdConf, \nldif_rep: $ldif_rep, \nrootDN: $rootDN, \nPwd: ******, \nPort: $newport, \nNewname: $newname\n",3);
- printTrace("\nLIB_PATH: $LIB_PATH",4);
-
- if (!(-d $serverHome)) {
- printMsg("\n$serverHome doesn't exist\n");
- exit(1);
- }
- if (!(-d $oldHome)) {
- printMsg("\n$oldHome doesn't exist\n");
- exit(1);
- }
-
- if ($olddatadir && !(-d $olddatadir)) {
- print("\n$olddatadir doesn't exist\n");
- exit(1);
- }
-
-#define CONFIG_DATABASE_DIRECTIVE "database"
-#define CONFIG_DATABASE_ATTRIBUTE "nsslapd-database"
-#define CONFIG_PLUGIN_DIRECTIVE "plugin"
-#define CONFIG_PLUGIN_ATTRIBUTE "nsslapd-plugin"
-#define CONFIG_SIZELIMIT_DIRECTIVE "sizelimit"
-#define CONFIG_SIZELIMIT_ATTRIBUTE "nsslapd-sizelimit"
-#define CONFIG_ORCAUTO_DIRECTIVE "orcauto"
-#define CONFIG_ORCAUTO_ATTRIBUTE "nsslapd-orcauto"
-#define CONFIG_TIMELIMIT_DIRECTIVE "timelimit"
-#define CONFIG_TIMELIMIT_ATTRIBUTE "nsslapd-timelimit"
-#define CONFIG_SUFFIX_DIRECTIVE "suffix"
-#define CONFIG_SUFFIX_ATTRIBUTE "nsslapd-suffix"
-#define CONFIG_READONLY_DIRECTIVE "readonly"
-#define CONFIG_READONLY_ATTRIBUTE "nsslapd-readonly"
-#define CONFIG_REFERRAL_DIRECTIVE "referral"
-#define CONFIG_REFERRAL_ATTRIBUTE "nsslapd-referral"
-#define CONFIG_OBJECTCLASS_DIRECTIVE "objectclass"
-#define CONFIG_OBJECTCLASS_ATTRIBUTE "nsslapd-objectclass"
-#define CONFIG_ATTRIBUTE_DIRECTIVE "attribute"
-#define CONFIG_ATTRIBUTE_ATTRIBUTE "nsslapd-attribute"
-#define CONFIG_SCHEMACHECK_DIRECTIVE "schemacheck"
-#define CONFIG_SCHEMACHECK_ATTRIBUTE "nsslapd-schemacheck"
-#define CONFIG_LOGLEVEL_DIRECTIVE "loglevel"
-#define CONFIG_LOGLEVEL_ATTRIBUTE "nsslapd-errorlog-level"
-#define CONFIG_ACCESSLOGLEVEL_DIRECTIVE "accessloglevel"
-#define CONFIG_ACCESSLOGLEVEL_ATTRIBUTE "nsslapd-accesslog-level"
-#define CONFIG_ACCESSLOG_MAXNUMOFLOGSPERDIR_DIRECTIVE "accesslog-maxNumOfLogsPerDir"
-#define CONFIG_ACCESSLOG_MAXNUMOFLOGSPERDIR_ATTRIBUTE "nsslapd-accesslog-maxlogsperdir"
-#define CONFIG_ERRORLOG_MAXNUMOFLOGSPERDIR_DIRECTIVE "errorlog-maxNumOfLogsPerDir"
-#define CONFIG_ERRORLOG_MAXNUMOFLOGSPERDIR_ATTRIBUTE "nsslapd-errorlog-maxlogsperdir"
-#define CONFIG_AUDITLOG_MAXNUMOFLOGSPERDIR_DIRECTIVE "auditlog-maxNumOfLogsPerDir"
-#define CONFIG_AUDITLOG_MAXNUMOFLOGSPERDIR_ATTRIBUTE "nsslapd-auditlog-maxlogsperdir"
-#define CONFIG_ACCESSLOG_MAXLOGSIZE_DIRECTIVE "accesslog-maxlogsize"
-#define CONFIG_ACCESSLOG_MAXLOGSIZE_ATTRIBUTE "nsslapd-accesslog-maxlogsize"
-#define CONFIG_ERRORLOG_MAXLOGSIZE_DIRECTIVE "errorlog-maxlogsize"
-#define CONFIG_ERRORLOG_MAXLOGSIZE_ATTRIBUTE "nsslapd-errorlog-maxlogsize"
-#define CONFIG_AUDITLOG_MAXLOGSIZE_DIRECTIVE "auditlog-maxlogsize"
-#define CONFIG_AUDITLOG_MAXLOGSIZE_ATTRIBUTE "nsslapd-auditlog-maxlogsize"
-#define CONFIG_ACCESSLOG_LOGROTATIONTIME_DIRECTIVE "accesslog-logrotationtime"
-#define CONFIG_ACCESSLOG_LOGROTATIONTIME_ATTRIBUTE "nsslapd-accesslog-logrotationtime"
-#define CONFIG_ERRORLOG_LOGROTATIONTIME_DIRECTIVE "errorlog-logrotationtime"
-#define CONFIG_ERRORLOG_LOGROTATIONTIME_ATTRIBUTE "nsslapd-errorlog-logrotationtime"
-#define CONFIG_AUDITLOG_LOGROTATIONTIME_DIRECTIVE "auditlog-logrotationtime"
-#define CONFIG_AUDITLOG_LOGROTATIONTIME_ATTRIBUTE "nsslapd-auditlog-logrotationtime"
-#define CONFIG_ACCESSLOG_LOGROTATIONTIMEUNIT_DIRECTIVE "accesslog-logrotationtimeunit"
-#define CONFIG_ACCESSLOG_LOGROTATIONTIMEUNIT_ATTRIBUTE "nsslapd-accesslog-logrotationtimeunit"
-#define CONFIG_ERRORLOG_LOGROTATIONTIMEUNIT_DIRECTIVE "errorlog-logrotationtimeunit"
-#define CONFIG_ERRORLOG_LOGROTATIONTIMEUNIT_ATTRIBUTE "nsslapd-errorlog-logrotationtimeunit"
-#define CONFIG_AUDITLOG_LOGROTATIONTIMEUNIT_DIRECTIVE "auditlog-logrotationtimeunit"
-#define CONFIG_AUDITLOG_LOGROTATIONTIMEUNIT_ATTRIBUTE "nsslapd-auditlog-logrotationtimeunit"
-#define CONFIG_ACCESSLOG_MAXLOGDISKSPACE_DIRECTIVE "accesslog-maxlogdiskspace"
-#define CONFIG_ACCESSLOG_MAXLOGDISKSPACE_ATTRIBUTE "nsslapd-accesslog-logmaxdiskspace"
-#define CONFIG_ERRORLOG_MAXLOGDISKSPACE_DIRECTIVE "errorlog-maxlogdiskspace"
-#define CONFIG_ERRORLOG_MAXLOGDISKSPACE_ATTRIBUTE "nsslapd-errorlog-logmaxdiskspace"
-#define CONFIG_AUDITLOG_MAXLOGDISKSPACE_DIRECTIVE "auditlog-maxlogdiskspace"
-#define CONFIG_AUDITLOG_MAXLOGDISKSPACE_ATTRIBUTE "nsslapd-auditlog-logmaxdiskspace"
-#define CONFIG_ACCESSLOG_MINFREEDISKSPACE_DIRECTIVE "accesslog-minfreediskspace"
-#define CONFIG_ACCESSLOG_MINFREEDISKSPACE_ATTRIBUTE "nsslapd-accesslog-logminfreediskspace"
-#define CONFIG_ERRORLOG_MINFREEDISKSPACE_DIRECTIVE "errorlog-minfreediskspace"
-#define CONFIG_ERRORLOG_MINFREEDISKSPACE_ATTRIBUTE "nsslapd-errorlog-logminfreediskspace"
-#define CONFIG_AUDITLOG_MINFREEDISKSPACE_DIRECTIVE "auditlog-minfreediskspace"
-#define CONFIG_AUDITLOG_MINFREEDISKSPACE_ATTRIBUTE "nsslapd-auditlog-logminfreediskspace"
-#define CONFIG_ACCESSLOG_LOGEXPIRATIONTIME_DIRECTIVE "accesslog-logexpirationtime"
-#define CONFIG_ACCESSLOG_LOGEXPIRATIONTIME_ATTRIBUTE "nsslapd-accesslog-logexpirationtime"
-#define CONFIG_ERRORLOG_LOGEXPIRATIONTIME_DIRECTIVE "errorlog-logexpirationtime"
-#define CONFIG_ERRORLOG_LOGEXPIRATIONTIME_ATTRIBUTE "nsslapd-errorlog-logexpirationtime"
-#define CONFIG_AUDITLOG_LOGEXPIRATIONTIME_DIRECTIVE "auditlog-logexpirationtime"
-#define CONFIG_AUDITLOG_LOGEXPIRATIONTIME_ATTRIBUTE "nsslapd-auditlog-logexpirationtime"
-#define CONFIG_ACCESSLOG_LOGEXPIRATIONTIMEUNIT_DIRECTIVE "accesslog-logexpirationtimeunit"
-#define CONFIG_ACCESSLOG_LOGEXPIRATIONTIMEUNIT_ATTRIBUTE "nsslapd-accesslog-logexpirationtimeunit"
-#define CONFIG_ERRORLOG_LOGEXPIRATIONTIMEUNIT_DIRECTIVE "errorlog-logexpirationtimeunit"
-#define CONFIG_ERRORLOG_LOGEXPIRATIONTIMEUNIT_ATTRIBUTE "nsslapd-errorlog-logexpirationtimeunit"
-#define CONFIG_AUDITLOG_LOGEXPIRATIONTIMEUNIT_DIRECTIVE "auditlog-logexpirationtimeunit"
-#define CONFIG_AUDITLOG_LOGEXPIRATIONTIMEUNIT_ATTRIBUTE "nsslapd-auditlog-logexpirationtimeunit"
-#define CONFIG_ACCESSLOG_LOGGING_ENABLED_DIRECTIVE "accesslog-logging-enabled"
-#define CONFIG_ACCESSLOG_LOGGING_ENABLED_ATTRIBUTE "nsslapd-accesslog-logging-enabled"
-#define CONFIG_ERRORLOG_LOGGING_ENABLED_DIRECTIVE "errorlog-logging-enabled"
-#define CONFIG_ERRORLOG_LOGGING_ENABLED_ATTRIBUTE "nsslapd-errorlog-logging-enabled"
-#define CONFIG_AUDITLOG_LOGGING_ENABLED_DIRECTIVE "auditlog-logging-enabled"
-#define CONFIG_AUDITLOG_LOGGING_ENABLED_ATTRIBUTE "nsslapd-auditlog-logging-enabled"
-#define CONFIG_ROOTDN_DIRECTIVE "rootdn"
-#define CONFIG_ROOTDN_ATTRIBUTE "nsslapd-rootdn"
-#define CONFIG_ROOTPW_DIRECTIVE "rootpw"
-#define CONFIG_ROOTPW_ATTRIBUTE "nsslapd-rootpw"
-#define CONFIG_ROOTPWSTORAGESCHEME_DIRECTIVE "rootpwstoragescheme"
-#define CONFIG_ROOTPWSTORAGESCHEME_ATTRIBUTE "nsslapd-rootpwstoragescheme"
-#define CONFIG_UPDATEDN_DIRECTIVE "updatedn"
-#define CONFIG_UPDATEDN_ATTRIBUTE "nsslapd-updatedn"
-#define CONFIG_UPDATEPW_DIRECTIVE "updatepw"
-#define CONFIG_UPDATEPW_ATTRIBUTE "nsslapd-updatepw"
-#define CONFIG_UPDATESSLCLIENT_DIRECTIVE "updateSSLclient"
-#define CONFIG_UPDATESSLCLIENT_ATTRIBUTE "nsslapd-updateSSLclient"
-#define CONFIG_AUDITFILE_DIRECTIVE "auditfile"
-#define CONFIG_AUDITFILE_ATTRIBUTE "nsslapd-auditlog"
-#define CONFIG_LASTMOD_DIRECTIVE "lastmod"
-#define CONFIG_LASTMOD_ATTRIBUTE "nsslapd-lastmod"
-#define CONFIG_INCLUDE_DIRECTIVE "include"
-#define CONFIG_INCLUDE_ATTRIBUTE "nsslapd-include"
-#define CONFIG_DYNAMICCONF_DIRECTIVE "dynamicconf"
-#define CONFIG_DYNAMICCONF_ATTRIBUTE "nsslapd-dynamicconf"
-#define CONFIG_USEROC_DIRECTIVE "useroc"
-#define CONFIG_USEROC_ATTRIBUTE "nsslapd-useroc"
-#define CONFIG_USERAT_DIRECTIVE "userat"
-#define CONFIG_USERAT_ATTRIBUTE "nsslapd-userat"
-#define CONFIG_SVRTAB_DIRECTIVE "svrtab"
-#define CONFIG_SVRTAB_ATTRIBUTE "nsslapd-svrtab"
-#ifndef _WIN32
-#define CONFIG_LOCALUSER_DIRECTIVE "localuser"
-#define CONFIG_LOCALUSER_ATTRIBUTE "nsslapd-localuser"
-#endif /* !_WIN32 */
-#define CONFIG_LOCALHOST_DIRECTIVE "localhost"
-#define CONFIG_LOCALHOST_ATTRIBUTE "nsslapd-localhost"
-#define CONFIG_PORT_DIRECTIVE "port"
-#define CONFIG_PORT_ATTRIBUTE "nsslapd-port"
-#define CONFIG_LISTENHOST_DIRECTIVE "listenhost"
-#define CONFIG_LISTENHOST_ATTRIBUTE "nsslapd-listenhost"
-#define CONFIG_SECURITY_DIRECTIVE "security"
-#define CONFIG_SECURITY_ATTRIBUTE "nsslapd-security"
-#define CONFIG_SSL3CIPHERS_DIRECTIVE "SSL3ciphers"
-#define CONFIG_SSL3CIPHERS_ATTRIBUTE "nsslapd-SSL3ciphers"
-#define CONFIG_ACCESSLOG_DIRECTIVE "accesslog"
-#define CONFIG_ACCESSLOG_ATTRIBUTE "nsslapd-accesslog"
-#define CONFIG_ERRORLOG_DIRECTIVE "errorlog"
-#define CONFIG_ERRORLOG_ATTRIBUTE "nsslapd-errorlog"
-#define CONFIG_INSTANCEDIR_DIRECTIVE "instancedir"
-#define CONFIG_INSTANCEDIR_ATTRIBUTE "nsslapd-instancedir"
-#define CONFIG_SECUREPORT_DIRECTIVE "secure-port"
-#define CONFIG_SECUREPORT_ATTRIBUTE "nsslapd-securePort"
-#define CONFIG_SECURELISTENHOST_DIRECTIVE "secure-listenhost"
-#define CONFIG_SECURELISTENHOST_ATTRIBUTE "nsslapd-securelistenhost"
-#define CONFIG_THREADNUMBER_DIRECTIVE "threadnumber"
-#define CONFIG_THREADNUMBER_ATTRIBUTE "nsslapd-threadnumber"
-#define CONFIG_MAXTHREADSPERCONN_DIRECTIVE "maxthreadsperconn"
-#define CONFIG_MAXTHREADSPERCONN_ATTRIBUTE "nsslapd-maxthreadsperconn"
-#if !defined(_WIN32) && !defined(AIX)
-#define CONFIG_MAXDESCRIPTORS_DIRECTIVE "maxdescriptors"
-#define CONFIG_MAXDESCRIPTORS_ATTRIBUTE "nsslapd-maxdescriptors"
-#endif /* !_WIN32 && ! AIX */
-#define CONFIG_RESERVEDESCRIPTORS_DIRECTIVE "reservedescriptors"
-#define CONFIG_RESERVEDESCRIPTORS_ATTRIBUTE "nsslapd-reservedescriptors"
-#define CONFIG_IDLETIMEOUT_DIRECTIVE "idletimeout"
-#define CONFIG_IDLETIMEOUT_ATTRIBUTE "nsslapd-idletimeout"
-#define CONFIG_IOBLOCKTIMEOUT_DIRECTIVE "ioblocktimeout"
-#define CONFIG_IOBLOCKTIMEOUT_ATTRIBUTE "nsslapd-ioblocktimeout"
-#define CONFIG_NTSYNCH_DIRECTIVE "ntsynch"
-#define CONFIG_NTSYNCH_ATTRIBUTE "nsslapd-NTSynch"
-#define CONFIG_NTSYNCHUSESSL_DIRECTIVE "ntsynchusessl"
-#define CONFIG_NTSYNCHUSESSL_ATTRIBUTE "nsslapd-NTSynch-SSL"
-#define CONFIG_NTSYNCHPORT_DIRECTIVE "ntsynch-port"
-#define CONFIG_NTSYNCHPORT_ATTRIBUTE "nsslapd-NTSynch-port"
-#define CONFIG_ACCESSCONTROL_DIRECTIVE "accesscontrol"
-#define CONFIG_ACCESSCONTROL_ATTRIBUTE "nsslapd-accesscontrol"
-#define CONFIG_GROUPEVALNESTLEVEL_DIRECTIVE "groupevalnestlevel"
-#define CONFIG_GROUPEVALNESTLEVEL_ATTRIBUTE "nsslapd-groupevalnestlevel"
-#define CONFIG_NAGLE_DIRECTIVE "nagle"
-#define CONFIG_NAGLE_ATTRIBUTE "nsslapd-nagle"
-#define CONFIG_PW_CHANGE_DIRECTIVE "pw_change"
-#define CONFIG_PW_CHANGE_ATTRIBUTE "passwordChange"
-#define CONFIG_PW_MUSTCHANGE_DIRECTIVE "pw_must_change"
-#define CONFIG_PW_MUSTCHANGE_ATTRIBUTE "passwordMustChange"
-#define CONFIG_PW_SYNTAX_DIRECTIVE "pw_syntax"
-#define CONFIG_PW_SYNTAX_ATTRIBUTE "passwordCheckSyntax"
-#define CONFIG_PW_MINLENGTH_DIRECTIVE "pw_minlength"
-#define CONFIG_PW_MINLENGTH_ATTRIBUTE "passwordMinLength"
-#define CONFIG_PW_EXP_DIRECTIVE "pw_exp"
-#define CONFIG_PW_EXP_ATTRIBUTE "passwordExp"
-#define CONFIG_PW_MAXAGE_DIRECTIVE "pw_maxage"
-#define CONFIG_PW_MAXAGE_ATTRIBUTE "passwordMaxAge"
-#define CONFIG_PW_MINAGE_DIRECTIVE "pw_minage"
-#define CONFIG_PW_MINAGE_ATTRIBUTE "passwordMinAge"
-#define CONFIG_PW_WARNING_DIRECTIVE "pw_warning"
-#define CONFIG_PW_WARNING_ATTRIBUTE "passwordWarning"
-#define CONFIG_PW_HISTORY_DIRECTIVE "pw_history"
-#define CONFIG_PW_HISTORY_ATTRIBUTE "passwordHistory"
-#define CONFIG_PW_INHISTORY_DIRECTIVE "pw_inhistory"
-#define CONFIG_PW_INHISTORY_ATTRIBUTE "passwordInHistory"
-#define CONFIG_PW_LOCKOUT_DIRECTIVE "pw_lockout"
-#define CONFIG_PW_LOCKOUT_ATTRIBUTE "passwordLockout"
-#define CONFIG_PW_STORAGESCHEME_DIRECTIVE "pw_storagescheme"
-#define CONFIG_PW_STORAGESCHEME_ATTRIBUTE "passwordStorageScheme"
-#define CONFIG_PW_MAXFAILURE_DIRECTIVE "pw_maxfailure"
-#define CONFIG_PW_MAXFAILURE_ATTRIBUTE "passwordMaxFailure"
-#define CONFIG_PW_UNLOCK_DIRECTIVE "pw_unlock"
-#define CONFIG_PW_UNLOCK_ATTRIBUTE "passwordUnlock"
-#define CONFIG_PW_LOCKDURATION_DIRECTIVE "pw_lockduration"
-#define CONFIG_PW_LOCKDURATION_ATTRIBUTE "passwordLockoutDuration"
-#define CONFIG_PW_RESETFAILURECOUNT_DIRECTIVE "pw_resetfailurecount"
-#define CONFIG_PW_RESETFAILURECOUNT_ATTRIBUTE "passwordResetFailureCount"
-#define CONFIG_ACCESSLOG_BUFFERING_DIRECTIVE "logbuffering"
-#define CONFIG_ACCESSLOG_BUFFERING_ATTRIBUTE "nsslapd-accesslog-logbuffering"
-#define CONFIG_CHANGELOG_DIR_DIRECTIVE "changelogdir"
-#define CONFIG_CHANGELOG_DIR_ATTRIBUTE "nsslapd-changelogdir"
-#define CONFIG_CHANGELOG_SUFFIX_DIRECTIVE "changelogsuffix"
-#define CONFIG_CHANGELOG_SUFFIX_ATTRIBUTE "nsslapd-changelogsuffix"
-#define CONFIG_CHANGELOG_MAXENTRIES_DIRECTIVE "changelogmaxextries"
-#define CONFIG_CHANGELOG_MAXENTRIES_ATTRIBUTE "nsslapd-changelogmaxentries"
-#define CONFIG_CHANGELOG_MAXAGE_DIRECTIVE "changelogmaxage"
-#define CONFIG_CHANGELOG_MAXAGE_ATTRIBUTE "nsslapd-changelogmaxage"
-#define CONFIG_RETURN_EXACT_CASE_DIRECTIVE "return_exact_case"
-#define CONFIG_RESULT_TWEAK_DIRECTIVE "result_tweak"
-#define CONFIG_REFERRAL_MODE_DIRECTIVE "referralmode"
-#define CONFIG_ATTRIBUTE_NAME_EXCEPTION_DIRECTIVE "attribute_name_exceptions"
-#define CONFIG_MAXBERSIZE_DIRECTIVE "maxbersize"
-#define CONFIG_VERSIONSTRING_DIRECTIVE "versionstring"
-#define CONFIG_ENQUOTE_SUP_OC_DIRECTIVE "enquote_sup_oc"
-#define CONFIG_ENQUOTE_SUP_OC_ATTRIBUTE "nsslapd-enquote_sup_oc"
-#define CONFIG_BASEDN_DIRECTIVE "certmap-basedn"
-#define CONFIG_BASEDN_ATTRIBUTE "nsslapd-certmap-basedn"
-
-%HashParametersName = ();
-
-# The following hash displays only general server parameters to migrate under cn=config
-%GeneralSrvParamToMigrate = (
- 'accesscontrol' => 'nsslapd-accesscontrol',
- 'errorlog-logging-enabled' => 'nsslapd-errorlog-logging-enabled',
- 'accesslog-logging-enabled' => 'nsslapd-accesslog-logging-enabled',
- 'auditlog-logging-enabled' => 'nsslapd-auditlog-logging-enabled',
- 'logbuffering' => 'nsslapd-accesslog-logbuffering',
- 'accesslog-logexpirationtime' => 'nsslapd-accesslog-logexpirationtime',
- 'accesslog-logexpirationtimeunit' => 'nsslapd-accesslog-logexpirationtimeunit',
- 'accesslog-maxlogdiskspace' => 'nsslapd-accesslog-logmaxdiskspace',
- 'accesslog-minfreediskspace' => 'nsslapd-accesslog-logminfreediskspace',
- 'accesslog-logrotationtime' => 'nsslapd-accesslog-logrotationtime',
- 'accesslog-logrotationtimeunit' => 'nsslapd-accesslog-logrotationtimeunit',
- 'accesslog-maxlogsize' => 'nsslapd-accesslog-maxlogsize',
- 'accesslog-maxnumoflogsperdir' => 'nsslapd-accesslog-maxLogsPerDir',
- 'auditlog-logexpirationtime' => 'nsslapd-auditlog-logexpirationtime',
- 'auditlog-logexpirationtimeunit' => 'nsslapd-auditlog-logexpirationtimeunit',
- 'auditlog-maxlogdiskspace' => 'nsslapd-auditlog-logmaxdiskspace',
- 'auditlog-minfreediskspace' => 'nsslapd-auditlog-logminfreediskspace',
- 'auditlog-logrotationtime' => 'nsslapd-auditlog-logrotationtime',
- 'auditlog-logrotationtimeunit' => 'nsslapd-auditlog-logrotationtimeunit',
- 'auditlog-maxlogsize' => 'nsslapd-auditlog-maxlogsize',
- 'auditlog-maxnumoflogsperdir' => 'nsslapd-auditlog-maxLogsPerDir',
- 'certmap-basedn' => 'nsslapd-certmap-basedn',
- 'enquote_sup_oc' => 'nsslapd-enquote-sup-oc',
- 'loglevel' => 'nsslapd-errorlog-level',
- 'errorlog-logexpirationtime' => 'nsslapd-errorlog-logexpirationtime',
- 'errorlog-logexpirationtimeunit' => 'nsslapd-errorlog-logexpirationtimeunit',
- 'errorlog-maxlogdiskspace' => 'nsslapd-errorlog-logmaxdiskspace',
- 'errorlog-minfreediskspace' => 'nsslapd-errorlog-logminfreediskspace',
- 'errorlog-logrotationtime' => 'nsslapd-errorlog-logrotationtime',
- 'errorlog-logrotationtimeunit' => 'nsslapd-errorlog-logrotationtimeunit',
- 'errorlog-maxlogsize' => 'nsslapd-errorlog-maxlogsize',
- 'errorlog-maxnumoflogsperdir' => 'nsslapd-errorlog-maxlogsperdir',
- 'idletimeout' => 'nsslapd-idletimeout',
- 'ioblocktimeout' => 'nsslapd-ioblocktimeout',
- 'lastmod' => 'nsslapd-lastmod',
- 'listenhost' => 'nsslapd-listenhost',
- 'maxdescriptors' => 'nsslapd-maxdescriptors',
- 'referral' => 'nsslapd-referral',
- 'reservedescriptors' => 'nsslapd-reservedescriptors',
- 'rootpwstoragescheme' => 'nsslapd-rootpwstoragescheme',
- 'schemacheck' => 'nsslapd-schemacheck',
- 'secure-port' => 'nsslapd-securePort',
- 'security' => 'nsslapd-security',
- 'sizelimit' => 'nsslapd-sizelimit',
- 'SSL3ciphers' => 'nsslapd-SSL3ciphers',
- 'timelimit' => 'nsslapd-timelimit',
- 'pw_change' => 'passwordChange',
- 'pw_syntax' => 'passwordCheckSyntax',
- 'pw_exp' => 'passwordExp',
- 'pw_history' => 'passwordHistory',
- 'pw_inhistory' => 'passwordInHistory',
- 'pw_lockout' => 'passwordLockout',
- 'pw_lockduration' => 'passwordLockoutDuration',
- 'pw_maxage' => 'passwordMaxAge',
- 'pw_maxfailure' => 'passwordMaxFailure',
- 'pw_minage' => 'passwordMinAge',
- 'pw_minlength' => 'passwordMinLength',
- 'pw_must_change' => 'passwordMustChange',
- 'pw_resetfailurecount' => 'passwordResetFailureCount',
- 'pw_storagescheme' => 'passwordStorageScheme',
- 'pw_unlock' => 'passwordUnlock',
- 'pw_warning' => 'passwordWarning'
-);
-
-# the following hash displays global parameters related to database stored under cn=config,cn=ldbm database,cn=plugins,cn=config
-%GlobalConfigLDBMparamToMigrate = (
- 'allidsthreshold' => 'nsslapd-allidsthreshold',
- 'lookthroughlimit' => 'nsslapd-lookthroughlimit',
- 'mode' => 'nsslapd-mode',
- 'dbcachesize' => 'nsslapd-dbcachesize'
-);
-
-# the following hash displays specific parameters to each backends and stored under cn=DBname,cn=ldbm database,cn=plugins,cn=config
-%LDBMparamToMigrate = (
- 'cachesize' => 'nsslapd-cachesize',
- 'readonly' => 'nsslapd-readonly'
-);
-
-%stdIncludes = (
- "${oldConfDir}slapd.at.conf", "\n",
- "${oldConfDir}slapd.oc.conf", "\n",
- "${oldConfDir}java-object-schema.conf", "\n",
- "${oldConfDir}ns-admin-schema.conf", "\n",
- "${oldConfDir}ns-calendar-schema.conf", "\n",
- "${oldConfDir}ns-certificate-schema.conf", "\n",
- "${oldConfDir}ns-common-schema.conf", "\n",
- "${oldConfDir}ns-compass-schema.conf", "\n",
- "${oldConfDir}ns-delegated-admin-schema.conf", "\n",
- "${oldConfDir}ns-directory-schema.conf", "\n",
- "${oldConfDir}ns-legacy-schema.conf", "\n",
- "${oldConfDir}ns-mail-schema.conf", "\n",
- "${oldConfDir}ns-mcd-browser-schema.conf", "\n",
- "${oldConfDir}ns-mcd-config-schema.conf", "\n",
- "${oldConfDir}ns-mcd-li-schema.conf", "\n",
- "${oldConfDir}ns-mcd-mail-schema.conf", "\n",
- "${oldConfDir}ns-media-schema.conf", "\n",
- "${oldConfDir}ns-mlm-schema.conf", "\n",
- "${oldConfDir}ns-msg-schema.conf", "\n",
- "${oldConfDir}ns-netshare-schema.conf", "\n",
- "${oldConfDir}ns-news-schema.conf", "\n",
- "${oldConfDir}ns-proxy-schema.conf", "\n",
- "${oldConfDir}ns-value-schema.conf", "\n",
- "${oldConfDir}ns-wcal-schema.conf", "\n",
- "${oldConfDir}ns-cos-schema.conf", "\n",
- "${oldConfDir}ns-web-schema.conf", "\n"
-);
-
-%userDefinedConfigFiles = (
- "slapd.conf", "\n",
- "slapd.ldbm.conf", "\n",
- "slapd.user_at.conf", "\n",
- "slapd.user_oc.conf", "\n",
- "ns-schema.conf", "\n"
- );
-
-$CIS_SYNTAX_OID = "1.3.6.1.4.1.1466.115.121.1.15" ;
-$TELEPHONE_SYNTAX_OID = "1.3.6.1.4.1.1466.115.121.1.50" ;
-$DN_SYNTAX_OID = "1.3.6.1.4.1.1466.115.121.1.12" ;
-$CES_SYNTAX_OID = "1.3.6.1.4.1.1466.115.121.1.26" ;
-$INT_SYNTAX_OID = "1.3.6.1.4.1.1466.115.121.1.27" ;
-$BIN_SYNTAX_OID = "1.3.6.1.4.1.1466.115.121.1.5" ;
-
-%allowedPlugins = (
- "cis", $CIS_SYNTAX_OID,
- "tel", $TELEPHONE_SYNTAX_OID,
- "dn", $DN_SYNTAX_OID,
- "ces", $CES_SYNTAX_OID,
- "int", $INT_SYNTAX_OID,
- "bin", $BIN_SYNTAX_OID
- );
-
-%allowedModifiers = (
- "single", "SINGLE-VALUE"
- );
-# "override" is not supported anymore and "operational" cannot be used in user defined attribute.
-
-@oldSuffixes = () ; # array of old suffixes (with "o=netscaperoot" if presents)
-
-# link beetwen the name of the suffix and its associated DBname
-%DBNAMES = () ;
-%DBDirectory = () ;
-
-%oldhash = () ;
-
-# list of standard plugin's in version 4
-%stdPlugins = (
- "7-bit check" => "\n",
- "binary syntax" => "\n",
- "case exact string syntax" => "\n",
- "case ignore string syntax" => "\n",
- "distinguished name syntax" => "\n",
- "integer syntax" => "\n",
- "internationalization plugin" => "\n",
- "referential integrity postoperation" => "\n",
- "telephone syntax" => "\n",
- "uid uniqueness" => "\n"
-
- );
-
-# list of standard indexes configured out of the box in version 4
-%stdIndex = (
- 'aci', "\n",
- 'changenumber', "\n",
- 'copiedfrom', "\n",
- 'dncomp', "\n",
- 'entrydn', "\n",
- 'numsubordinates', "\n",
- 'objectclass', "\n",
- 'parentid', "\n"
-);
-
-# list of user added Plugin's. In the new version, they 'll need to be recompiled
-@badPlugins = () ;
-
-%newIndex = () ;
-
-%User_oc = () ;
-# push objectnames as they are encountered in config files.
-@User_oc_names = () ;
-
-%User_at = () ;
-
-
-
-#Usage parameters
-$USER_OC_FILE_MODIFIED = 0 ; # 0 if user don't want to modify LDIF objectclasses before processing, 1 else
-$USER_AT_FILE_MODIFIED = 0 ;
-$INDEX_FILE_MODIFIED = 0 ;
-
-# get the version of the DS to migrate
-($oldVersion, $oldMinor) = &getVersion($oldDir, $oldversionstr);
-# get the version of the new DS
-($Version, $Minor) = &getVersion($root);
-
-# get old LIB_PATH
-$old_libpath = &getLibPath($oldDir, $oldVersion, $oldMinor);
-# get new LIB_PATH
-$new_libpath = &getLibPath($root, $Version, $Minor);
-
-# Shutdown the legacy Directory instance
-printTrace("\nShutdown the legacy Directory Server instance: ${oldHome}",0);
-&stopServer($oldDir, 'slapd-'.$oldname);
-
-# compare configuration files with the standard ones
-CompareStdConfigFiles() ;
-die "\n\n The version of the product you want to migrate is not a 4.x Netscape Directory Server\n" unless ($oldVersion == 4) ;
-
-FillHashParametersName() ;
-
-############### Connect to the New LDAP Directory Server ######################
-$ENV{"$LIB_PATH"} = $new_libpath;
-my $LDAPservername = &getLDAPservername();
-die "\n Migration aborted. Make sure your Old and New Directory Servers are installed on the same machine \n" if ( $LDAPservername == -1 );
-$conn = new Mozilla::LDAP::Conn($LDAPservername,$newport,$rootDN,$rootpwd) or die "\n Can't contact the $Version.$Minor LDAP server: $LDAPservername\n";
-
-# continue if the connection to new LDAP server is successful !
-printTrace("\nConnected to $Version.$Minor LDAP server\n",0) ;
-
-# get the uid and gid of the new slapd user
-($localuser, $newuid, $newgid) = getuid_gid();
-# get the uid and gid of the old slapd user
-($oldlocaluser, $olduid, $oldgid) = getolduid_gid();
-
-# backup new configuration files in <new_root_server>/slapd-instancename/config
-printTrace("\nBackup $serverHome${PATHSEP}config on $serverHome${PATHSEP}config_backup ...",0);
-&backupConfigFiles();
-
-# Parse the main configuration file: slapd.conf
-printTrace("\nParse the configuration file: $oldSlapdConf...",0);
-ParseSlapdConf("< ${oldSlapdConf}");
-
-#migrate key/cert databases
-printTrace("\nMigrate key/cert databases...",0);
-&MigrateSSL();
-
-# Update parameters : general server parameters, global LDBM parameter, specific backend parameters
-printTrace("\nUpdate general server parameters...",0);
-$conn = new Mozilla::LDAP::Conn($LDAPservername,$newport,$rootDN,$rootpwd) or die "\n Can't contact the $Version.$Minor LDAP server: $LDAPservername\n";
-AddGeneralParameters();
-printTrace("\nUpdate global LDBM parameters...",0);
-AddGeneralLDBMParameters();
-printTrace("\nUpdate specific backend parameters...",0);
-AddSpecificLDBMParameters();
-
-##### FOR TESTING PURPOSE ONLY ########
-#
-#testIndexUpdating();
-#
-#######################################
-
-# Migrate some entries contained in the old dse.ldif, and migrate certmap.conf
-&MigrateDSE() ;
-&MigrateCertmap() ;
-
-# update new attribute definitions
-LDAPmodify_User_at();
-
-# update new object classes definitions
-LDAPmodify_User_oc();
-
-# add new indexes to each backends
-LDAPmodify_Indexes();
-
-# migrate Plug'ins parameters (enable attribute, and arguments)
-LDAPmodify_stdPlugin();
-
-################## Close the connection to new LDAP Server #####################
-$conn->close;
-
-
-################## stop the new instance and Export/Import the data, restart the server ##################
-if (%DBNAMES) {
- &stopServer($root,'slapd-'.$newname);
- if ($olddatadir) {
- printTrace("\nold data directory $olddatadir...",0) ;
- $ldif_rep = "$olddatadir${PATHSEP}";
- } else {
- printTrace("\ndata processing...",0) ;
- # migrate data for each suffix: old -> LDIF files
- &db2ldif($oldSlapdConf);
- }
-
- # migrate LDIF data to the new database: LDIF -> new
- &manyLdif2db();
- &startServer();
-}
-else {
- printTrace("\nThere no old non-standard suffixes to migrate",0);
-}
-
-printMsg("\n\n ****** End of migration ******\n\n");
-
-close(LOGFILE);
-
-
-###########################################################################################
-# get input users
-sub getParameters {
- my $exit = 0 ;
- my $i = 0;
- my $pwdfile= "";
- while ($i <= $#ARGV) {
- if ( "$ARGV[$i]" eq "-D" ) { # directory manager
- if (! $rootDN) {
- $rootDN = $ARGV[++$i] ;
- }
- else {
- &usage() ;
- exit(1);
- }
- } elsif ("$ARGV[$i]" eq "-w") { # password
- if (! $rootpwd) {
- $rootpwd = $ARGV[++$i] ;
- }
- else {
- &usage() ;
- exit(1);
- }
- } elsif ("$ARGV[$i]" eq "-j") { # password file
- if (! $pwdfile) {
- $pwdfile = $ARGV[++$i] ;
- }
- else {
- &usage() ;
- exit(1);
- }
- } elsif ("$ARGV[$i]" eq "-o") { # old instance path
- if (! $oldHome ) {
- $oldHome = $ARGV[++$i] ;
- grep { s@\\@/@g } $oldHome if $isNT ;
- if ($oldHome =~ /[\"]?(.*)?[\"]?/) { $oldHome = $1 ; }
- if ($oldHome =~ m@^(.*)/([^-/]*)-([^/]*)[/]?$@) {
- $oldDir = $1 ;
- $type = $2 ;
- $oldname = $3 ;
- if ($isNT) {
- $oldDir = lc($oldDir) ;
- $type = lc($type) ;
- $oldname = lc($oldname) ;
- $oldHome = lc($oldHome) ;
- grep { s@/@\\@g } $oldDir ;
- grep { s@/@\\@g } $oldHome ;
- }
- }
- else {
- print("\nThe old instance path is not correct. It must be like slapd-instancename");
- &usage();
- exit(1);
- }
- }
- else {
- &usage() ;
- exit(1);
- }
- } elsif ("$ARGV[$i]" eq "-n") { # new instance path
- if (! $serverHome ) {
- $serverHome = $ARGV[++$i] ;
- grep { s@\\@/@g } $root if $isNT ;
- grep { s@\\@/@g } $serverHome if $isNT ;
- if ($serverHome =~ /[\"]?(.*)?[\"]?/) { $serverHome = $1 ; }
- if ($serverHome =~ m@^(.*?)/?([^/-]*)-([^/]*)[/]?$@) {
- $root = $1 if ($1);
- $type = $2 ;
- $newname = $3 ;
- if ($isNT) {
- $root = lc($root) ;
- $type = lc($type) ;
- $newname = lc($newname) ;
- $serverHome = lc($serverHome) ;
- grep { s@/@\\@g } $root ;
- grep { s@/@\\@g } $serverHome ;
- }
- }
- else {
- print("\nThe new instance path is not correct. It must be like slapd-instancename");
- &usage();
- exit(1);
- }
- }
- else {
- &usage() ;
- exit(1);
- }
- } elsif ("$ARGV[$i]" eq "-p") { # new DS port
- if (! $newport ) {
- $newport = $ARGV[++$i] ;
- }
- else {
- &usage() ;
- exit(1);
- }
- } elsif ("$ARGV[$i]" eq "-d") { # old instance LDIF data dir
- if (! $olddatadir ) {
- $olddatadir = $ARGV[++$i] ;
- }
- else {
- &usage() ;
- exit(1);
- }
- } elsif ("$ARGV[$i]" eq "-v") { # old version
- if (! $oldversionstr ) {
- $oldversionstr = $ARGV[++$i] ;
- }
- else {
- &usage() ;
- exit(1);
- }
- } elsif ("$ARGV[$i]" eq "-t") { # TRACELEVEL
- my $value = $ARGV[++$i] ;
- if ($value =~ /[0-3]/) {
- $TRACELEVEL = $value ;
- }
- else {
- print("\nThe tracelevel must belong to 0..3 interval");
- &usage();
- exit();
- }
- } elsif ("$ARGV[$i]" eq "-noinput") { # no user interventions during processing
- $NO_INPUT_USER = 1 ;
- } elsif ("$ARGV[$i]" eq "-L") { # migration logfile
- $LogFileReport = $ARGV[++$i] ;
- }
- else {
- print("\nThe option $ARGV[$i] is not recognized");
- &usage() ;
- exit(1);
- }
- $i++;
- }
- if (! $rootDN) {
- print("\nThe rootDN is missing");
- $exit = 1;
- }
- if ($pwdfile ne "") {
- # Open file and get the password
- unless (open (RPASS, $pwfile)) {
- die "Error, cannot open password file $passwdfile\n";
- }
- $rootpwd = <RPASS>;
- chomp($rootpwd);
- close(RPASS);
- } elsif ($rootpwd eq "-"){
- # Read the password from terminal
- die "The '-w -' option requires an extension library (Term::ReadKey) which is not\n",
- "part of the standard perl distribution. If you want to use it, you must\n",
- "download and install the module. You can find it at\n",
- "http://www.perl.com/CPAN/CPAN.html\n";
- # Remove the previous line and uncomment the following 6 lines once you have installed Term::ReadKey module.
-# use Term::ReadKey;
-# print "Bind Password: ";
-# ReadMode('noecho');
-# $rootpwd = ReadLine(0);
-# chomp($rootpwd);
-# ReadMode('normal');
- }
- if (! $rootpwd) {
- print("\nThe rootpwd is missing");
- $exit = 1 ;
- }
- if (! $newport) {
- print("\nThe port is missing");
- $exit = 1;
- }
- if (! $serverHome) {
- print("\nThe new instance path is missing");
- $exit = 1;
- }
- if (! $oldHome) {
- print("\nThe old instance path is missing");
- $exit = 1;
- }
- if ((! $LogFileReport) && $serverHome) {
- ($sec, $min, $hour, $dd, $mm, $yy) = &GetTime();
- $LogFileReport = "${serverHome}${PATHSEP}logs${PATHSEP}Migration_${dd}${mm}${yy}_${hour}${min}${sec}.log";
- }
-
- if ($exit) {
- &usage() ;
- exit(1);
- }
-
-}
-
-
-###############################################################################
-# This subroutine is used to parse the slapd.conf configuration file and migrate specific parameters contained in it
-
-
-sub ParseSlapdConf {
- my $oldsrc = shift;
- my $NumLine = 0 ;
- # read the old conf file into a hash table
- open( OLDSRC, $oldsrc ) || die "Can't open $oldsrc: $!: ";
- LINE: while ( <OLDSRC> ) {
- $NumLine++ ;
- printTrace("\nLine: $_",4) ;
- if (/^\s*\#/) { # skip comments
- printTrace("\n# ",4) ;
- next LINE;
- }
- if (/^\s*$/) { # skip blank lines
- printTrace("\nBLANK LINE",4);
- next LINE;
- } elsif (/^suffix\s+/i) {
- chomp($_) ;
- CheckSuffix($_);
- } elsif (/^plugin/i) {
- printTrace("\nPLUGIN",4);
- chomp($_);
- if (! &isAStandardPlugin($_)) {
- push @badPlugins, $_;
- }
- else {
- my $Plugin = $_ ;
- if (! &ParsePlugin($_,$NumLine)) {
- printMsg("\nLine $NumLine, syntax error of the plugin:\n$Plugin");
- }
- }
- } elsif (/^include\s+[\"]?(.*?)[\"]?\s*$/i) {
- # strip leading and trailing "
- my $include_file = $1 ;
- grep { s@/@\\@g } $include_file if $isNT;
- if (! &isAStandardInclude($include_file)) {
- printTrace("\nFILE: $1 NOT STANDARD",4) ;
- &ParseConfigurationFile($include_file);
- printTrace("\nEXIT ParseConfigurationFile: $include_file",4) ;
- }
- } elsif (/^userat\s+[\"]?(.*?)[\"]?\s*$/i) {
- printTrace("\nuserat: $1",4);
- my $at_file = $1 ;
- grep { s@/@\\@g } $at_file if $isNT;
- # Parse user defined attributes
- &ParseAttributesFile($at_file);
- } elsif (/^useroc\s+[\"]?(.*?)[\"]?\s*$/i) {
- printTrace("\nuseroc: $1",4);
- my $oc_file = $1 ;
- grep { s@/@\\@g } $oc_file if $isNT;
- # Parse user defined object classes
- &ParseObjectClassesFile($oc_file);
- } elsif (/^dynamicconf\s+[\"]?(.*?)[\"]?\s*$/i){
- printTrace("\ndynamicconf: $1",4);
- my $dynamiconf_file = $1 ;
- grep { s@/@\\@g } $dynamiconf_file if $isNT;
- # Parse dynamic configuration file (e-g slapd.ldbm.conf)
- &ParseConfigurationFile($dynamiconf_file);
- } elsif (/^\s*(\S+)\s+[\"]?(.*?)[\"]?\s*$/) {
- printTrace("\nParseParameters: $1",4);
- # Parse parameters and record the associated value in %oldhash
- &ParseParameters($1,$2,$NumLine);
- } else {
- printTrace("\nUnknown format of configuration data: $_",0); }
- }
- close(OLDSRC);
-
- }
-
-
-
-#############################################################################
-# return 1 if the suffix already exists, 0 else
-sub existSuffix {
- my $suffixname = shift ;
- my $nsuffix = normalizeDN($suffixname);
- my $entry = $conn->search("cn=mapping tree,cn=config", "one", "(|(cn=\"$suffixname\")(cn=\"$nsuffix\"))");
- return 1 if ($entry) ;
- my $cpt = 5;
- my $errorCode = $conn->getErrorCode();
- while (($errorCode eq $LDAP_SERVER_UNREACHABLE) && $cpt && (! $entry)) {
- printTrace("\ntry to reconnect to search cn=\"$suffixname\",cn=mapping tree,cn=config", 1);
- $conn = new Mozilla::LDAP::Conn($LDAPservername,$newport,$rootDN,$rootpwd) or die "\n Unable to contact the $Version.$Minor LDAP server: $LDAPservername\n";
- $entry = $conn->search("cn=mapping tree,cn=config", "one", "(|(cn=\"$suffixname\")(cn=\"$nsuffix\"))");
- $errorCode = $conn->getErrorCode();
- $cpt--;
- }
- return 1 if ($entry) ;
- return 0 ;
-}
-
-# return the name of the backend if it has been successfully created, 0 else
-sub createBackend {
- my $suffixname = shift ;
- my $backend = "MigratedDB_0" ;
- my $NbRetry = 1 ;
- my $entry = $conn->search("cn=$backend,cn=ldbm database,cn=plugins,cn=config ", "base","objectclass=*") ;
- while ($entry) {
- # try to find another name for the backend
- $backend = "MigratedDB_$NbRetry" ;
- $entry = $conn->search("cn=$backend,cn=ldbm database,cn=plugins,cn=config ", "base","objectclass=*") ;
- $NbRetry++;
- }
- # normally I should have a unique name for the backend
- my $suffixarg = "nsslapd-suffix" ;
- $entry = $conn->newEntry() ;
- $entry->setDN("cn=$backend,cn=ldbm database,cn=plugins,cn=config");
- $entry->setValues("objectclass", "top", "extensibleObject", "nsBackendInstance" );
- $entry->setValues("cn", $backend );
- $entry->setValues($suffixarg, $suffixname );
- my $res = $conn->add($entry) ;
- if ($res) {
- return $backend ;
- }
- else {
- return 0 ;
- }
-}
-
-# return 1, if add the new entry in the mapping tree, else 0
-sub AddEntryInMappingTree {
- my $backend = shift ;
- my $entry = $conn->search("cn=$backend,cn=ldbm database,cn=plugins,cn=config ", "base","objectclass=*") ;
- if ($entry) {
- printTrace("\nAddEntry in progress ...",4) ;
- my $suffixarg = "nsslapd-suffix" ;
- my $statearg = "nsslapd-state" ;
- my $backendarg= "nsslapd-backend";
- my $suffixname = $entry->{$suffixarg}[0];
- $entry = $conn->newEntry() ;
- $entry->setDN("cn=\"$suffixname\",cn=mapping tree,cn=config") ;
- $entry->setValues("objectclass", "top", "extensibleObject", "nsMappingTree" );
- $entry->setValues("cn", "\"$suffixname\"");
- $entry->setValues($statearg, "backend");
- $entry->setValues($backendarg, $backend);
- return $conn->add($entry);
- }
- else {
- printTrace("\nNo AddEntry processed for $backend",4);
- return 0 ;
- }
-}
-
-
-# Treat the case where the suffix is "o=NetscapeRoot"
-sub CheckSuffix {
- my $suffix = shift ;
- my $suffixname ;
- my $expLdif;
- my $confirm = "No";
- my $dest = "$serverHome${PATHSEP}db_backup" ;
- my $newSlapdExecDir = "$root${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server";
-
- if (!(/^suffix\s+\"?(.*?)\"?\s*$/i)) {
- printMsg("Syntax error of the suffix: $suffix");
- return 0 ;
- }
- else {
- $suffixname = $1 ;
- }
- if (/^suffix\s+\"?\s*o=netscaperoot\s*\"?\s*$/i) {
- printTrace("\nFor the suffix o=NetscapeRoot, we do nothing",1);
- # treat the case where the suffix is "o=NetscapeRoot"
- }
- else {
- push @oldSuffixes, $_;
- # check if the suffix already exists in the new DS target
- if (! existSuffix($suffixname)) {
- printTrace("\n\nSuffix $suffixname doesn't exist",1) ;
- # create a new backend with the name of the suffix preceded by MigratedDB_
- my $backend = createBackend($suffixname) ;
- if ($backend) {
- printTrace("\nBackend: $backend has been created !!!",1);
- # if the creation of the backend is ok, we add a new entry in the mapping tree
- if (AddEntryInMappingTree($backend)) {
- # We add the association dbname->suffix in the hash %DBNAMES
- $DBNAMES{$suffixname} = $backend ;
- # get the db filename
- $entry = $conn->search("cn=$backend,cn=ldbm database,cn=plugins,cn=config ", "base","objectclass=*") ;
- my $dirarg = "nsslapd-directory";
- $DBDirectory{$backend} = $entry->{$dirarg}[0];
- printTrace("\nThe relation $backend->$suffixname has been added to the mapping tree",2);
- }
- else {
- printMsg("\nCOULD NOT ADD ENTRY: $backend->$suffixname IN MAPPINGTREE");
- }
- }
- else {
- printMsg("\nCOULD NOT CREATE BACKEND: $backend");
- }
- }
- else {
- printMsg("\n\nSuffix: $suffixname already exists");
- # the suffix already exists in the new DS
- printMsg("\nMigration will overwrite existing database");
- printMsg("\nDo you want to continue Yes/No [No] ?") ;
- my $answer = <STDIN> ;
- if ($answer =~ /y|yes/i) {
- my $nsuffix = normalizeDN($suffixname);
- my $my_entry = $conn->search("cn=mapping tree,cn=config", "one", "(|(cn=\"$suffixname\")(cn=\"$nsuffix\"))");
- my $backend = $my_entry->{"nsslapd-backend"}[0];
- my $backend_entry = $conn->search("cn=$backend,cn=ldbm database,cn=plugins,cn=config ", "base","objectclass=*") ;
- printMsg("Do you want to export the existing data Yes/No [Yes] ?");
- my $answer = <STDIN> ;
- if (!($answer =~ /n|no/i)) {
- mkdir $dest, 0700 unless (-d $dest);
- $expLdif = "$dest${PATHSEP}$backend.ldif";
- while (!($confirm =~ /y|yes/i)) {
- printMsg("\nEnter the full pathname of the file [$expLdif]:") ;
- $answer = <STDIN> ;
- chomp($expLdif = $answer) unless ($answer eq "\n");
- printMsg("\nExisting data will be exported under $expLdif");
- printMsg("\nContinue Yes/No [No] ?");
- $confirm = <STDIN>;
- }
- $ENV{"$LIB_PATH"}=$new_libpath;
- chdir($newSlapdExecDir) or die "\nCould not change directory to $newSlapdExecDir: $!\n";
- printTrace("\nNow backing up database $CN in $expLdif\n",0);
- &stopServer($root,'slapd-'.$newname);
- &newinst_db2ldif($expLdif, $suffixname, $serverHome);
- &startServer();
- }
- # We add the association dbname->suffix in the hash %DBNAMES
- $DBNAMES{$suffixname} = $backend ;
- my $dirarg = "nsslapd-directory";
- $DBDirectory{$backend} = $backend_entry->{$dirarg}[0];
- printTrace("\nThe relation $backend->$suffixname has been added to the mapping tree",2);
- }
- }
- return 1 ;
-}
-}
-
-#############################################################################
-# Usefull to know the standard configuration
-sub isAStandardPlugin {
- my $line = shift;
- chomp($line);
- printTrace("\nStdPlugin?: $line",4);
- if ($line =~ /^plugin\s+(database|extendop|preoperation|postoperation|matchingrule|syntax)\s+(on|off)\s+\"(.*?)\"\s+\"(.*?)\"\s+(\S+)(.*)$/i) {
- # $1 = <type>, $2 = <on|off>, $3 = <name>, $4 = <pathname>, $5 = <init_function>, $6 = [<arg>]*
- printTrace("\nName: $3, pathname: $4, init_function: $5",4);
-
- my $LC_line = lc($3);
- my $Value = $stdPlugins{$LC_line} ;
- if ($Value) {
- printTrace("\nIS A STANDARD PLUGIN",4);
- }
- else {
- printTrace("\nNOT A STANDARD PLUGIN",4);
- }
- return $stdPlugins{$LC_line} ;
- }
- else {
- printTrace("\nSYNTAX ERROR PLUGIN",4);
- return 0 ;
- }
-}
-
-sub isAStandardIndex {
- my $line = shift ;
- chomp($line);
- if ($line =~ /^index\s+(\S+).*/i) {
- my $LC_line = lc($1);
- my $Value = $stdIndex{$LC_line} ;
- printTrace("\nInclude: $LC_line \nValue: $Value", 4);
- return $stdIndex{$LC_line};
- }
- else {
- return 0 ;
- }
-}
-
-
-sub isAStandardInclude {
- my $line = shift;
-
- chomp($line);
- if ($isNT){
- return $stdIncludes{lc($line)};
- }
- else {
- return $stdIncludes{$line} ;
- }
-}
-
-#############################################################################
-#
-# Execute a Perldap command to update plugins definition in the new schema
-
-sub LDAPmodify_stdPlugin {
- my $Filename = shift ;
- my @pluginames = keys(%stdPlugins);
- if (! $STDPLUGINS_FILE_MODIFIED) {
- printTrace("\nLDAPmodify_plugin",4);
- printTrace("\nMigrate plugin's...",1);
- foreach $pluginame ( @pluginames ) {
- my $update_plugin = 0 ;
- my $ref_plugin = $stdPlugins{$pluginame};
- if ($ref_plugin ne "\n") {
- my $name = $ref_plugin->name ;
- # We have a name change of "uid uniqueness plugin" in DS7.0
- # to "attribute uniqueness"
- $name = "attribute uniqueness" if ($name eq "uid uniqueness");
- my $entry = $conn->search("cn=$name,cn=plugins,cn=config", "base","objectclass=nsSlapdPlugin") ;
- if ($entry) {
- my $pluginenabled="nsslapd-pluginenabled" ;
- if (($entry->{$pluginenabled}[0]) ne $ref_plugin->enable) {
- $update_plugin = 1 ;
- my $enable = $ref_plugin->enable ;
- printTrace("\n$pluginame, plugin-enable: $enable",3) ;
- $entry->setValues($pluginenabled, $enable );
- }
- my $ArgNum = 0 ;
- foreach $ArgValue (@{$ref_plugin->args}) {
- my $Arg="nsslapd-pluginarg$ArgNum";
- printTrace("\n$Arg: $ArgValue",3) ;
- if ($entry->{$Arg}[0] ne $ArgValue) {
- printTrace("\n$pluginame, $Arg: $ArgValue",3) ;
- $update_plugin = 1 ;
- $entry->setValues($Arg, $ArgValue) ;
- }
- $ArgNum++ ;
- }
- if ($update_plugin) {
- printTrace("\n$pluginame is being updated...",2);
- my $res = $conn->update($entry) ;
- if ($res) {
- printTrace("\nupdated !",2);
- }
- else {
- printMsg("\nError during update of plugin: $pluginame") ;
- $MigrationErrors .= "\nError during update of plugin: $pluginame";
- }
- }
- else {
- printTrace("\n$pluginame has not changed",4);
- }
- }
- else {
- printMsg("\ncan't access the plugin: cn=$name,cn=plugins,cn=config");
- }
- }
- else {
- printTrace("\nPLUGIN NOT RECORDED: $pluginame",4) ;
- }
- }
- }
- else {
- # treat the case where the user wants to look at these plugins before processing
- }
-}
-
-#############################################################################
-# Execute Perldap command to add new indexes to the migrated instances
-
-sub LDAPmodify_Indexes {
- my $Filename = shift ;
- my @indexnames = keys(%newIndex);
- my @suffixnames = keys(%DBNAMES);
- if ((! $INDEX_FILE_MODIFIED) && (%DBNAMES)) {
- # we update indexes only if there is at least one backend to migrate
- printTrace("\nLDAPmodify_indexes",4);
- printTrace("\nMigrate indexes...",1);
- foreach $indexname ( @indexnames ) {
- printTrace("\nIndexName: $indexname",4);
- printTrace("\nIndexTypes: .@{$newIndex{$indexname}->types}.", 4) ;
- printTrace("\nIndexOIDS: .@{$newIndex{$indexname}->oids}.", 4) ;
- foreach $suffixname ( @suffixnames ) {
- # check if the index already exists !
- printTrace("\nsearch for cn=$indexname,cn=index,cn=$DBNAMES{$suffixname},cn=ldbm database,cn=plugins,cn=config...", 3);
- my $entry = $conn->search("cn=$indexname,cn=index,cn=$DBNAMES{$suffixname},cn=ldbm database,cn=plugins,cn=config","base","objectclass=nsIndex");
- if (! $entry) {
- # create a new index
- printTrace("index $indexname is being created under cn=index,cn=$DBNAMES{$suffixname},cn=ldbm database,cn=plugins,cn=config...",2);
- my $entry = $conn->newEntry();
- $entry->setDN("cn=$indexname,cn=index,cn=$DBNAMES{$suffixname},cn=ldbm database,cn=plugins,cn=config");
- $entry->setValues("objectclass", "top", "nsIndex" ) ;
- $entry->setValues("cn", $indexname) ;
- $entry->setValues("nssystemindex", "false") ;
- my @types = @{$newIndex{$indexname}->types} ;
- my @oids = @{$newIndex{$indexname}->oids} ;
- $entry->setValues("nsindextype", @types) if (@types) ;
- $entry->setValues("nsmatchingrule", @oids ) if (@oids);
- my $res = $conn->add($entry) ;
- if ($res) {
- printTrace("\nAdd index successfully: $indexname for backend: $DBNAMES{$suffixname}",2);
- }
- else {
- printMsg("\n Failed to add the index: $indexname to backend: $DBNAMES{$suffixname}");
- $MigrationErrors .= "\n Failed to add the index: $indexname to backend: $DBNAMES{$suffixname}" ;
- }
- }
- elsif ($entry->{nssystemindex}[0] eq "false") {
- # if the index is not a system index, we update it
- printTrace("\nindex $indexname is being processed under cn=index,cn=$DBNAMES{$suffixname},cn=ldbm database,cn=plugins,cn=config...",2);
- my @types = @{$newIndex{$indexname}->types} ; printTrace("\ntypes: .@types.",2) ;
- my @oids = @{$newIndex{$indexname}->oids} ; printTrace("\noids: .@oids.",2) ;
- my @existing_types = $entry->getValues("nsindextype");
- my @existing_oids = $entry->getValues("nsmatchingrule");
- # get the elements present in @types and not present in @existing_types
- my @typesToAdd = &getDiff(\@types, \@existing_types);
- # same for matchingrules
- my @oidsToAdd = &getDiff(\@oids, \@existing_oids);
- foreach $newtype (@typesToAdd) {
- $entry->addValue("nsindextype", $newtype); printTrace("\nnewtype: $newtype",2);
- }
- foreach $newoid (@oidsToAdd) {
- $entry->addValue("nsmatchingrule", $newoid);
- }
- if (@typesToAdd || @oidsToAdd) {
- my $res = $conn->update($entry) ;
- if ($res) {
- printTrace("\nUpdate index successfully: $indexname for backend: $DBNAMES{$suffixname}",2);
- }
- else {
- printMsg("\n Failed to update the index: $indexname to backend: $DBNAMES{$suffixname}");
- $MigrationErrors .= "\n Failed to update the index: $indexname to backend: $DBNAMES{$suffixname}" ;
- }
- }
- else {
- printTrace("\nNothing to update",2);
- }
- }
- else {
- printTrace("\nThe index: $indexname is a system index. It can't be updated",2);
- }
- }
- }
-
- }
- else {
- # treat the case where the user wants to look at these indexes before processing
- }
-
-}
-
-#############################################################################
-#
-# Execute a Perldap command to add all user defined object classes in the new schema
-
-sub LDAPmodify_User_oc {
- my $Filename = shift ;
- if (! $USER_OC_FILE_MODIFIED) {
- printTrace("\nLDAPmodify_User_oc",4);
- printTrace("\nMigrate objectclasses...",1);
- foreach $objectname ( @User_oc_names ) {
- my $entry = $conn->search("cn=schema", "base","objectclass=*") ;
- die "\ncan't connect to object: cn=schema\n" unless ($entry);
- printTrace("\nObjectName: $objectname\nValue: $User_oc{$objectname}",3);
- next if ($entry->hasValue("objectclasses",$User_oc{$objectname},1)) ;
- $entry->addValue("objectclasses",$User_oc{$objectname},"1") ;
- my $res = $conn->update($entry) ;
- my $err = $conn->getErrorCode();
- if ($res) {
- printTrace("\nobjectclass: $User_oc{$objectname} added",2);
- } elsif ($err == 20) { # already exists
- printTrace("\nobjectclass: $User_oc{$objectname} already exists",1);
- } else {
- printMsg("\nCan\'t add objectclass to the schema: $User_oc{$objectname}");
- my $msg = $conn->getErrorString();
- printMsg("\nMsg: $msg");
- $MigrationErrors .= "\nCan\'t add objectclass to the schema: $User_oc{$objectname}" ;
- }
- }
- }
- else {
- # treat the case where the user wants to look at these objectclasses before processing
- }
-}
-
-#############################################################################
-#
-# Execute a Perldap command to add all user defined attributes in the new schema
-
-sub LDAPmodify_User_at {
- my $Filename = shift ;
- my @attributenames = keys(%User_at);
- if (! $USER_AT_FILE_MODIFIED) {
-
- printTrace("\nLDAPmodify_User_at",4);
- printTrace("\nMigrate attributes...",1);
- foreach $attributename ( @attributenames ) {
- my $entry = $conn->search("cn=schema", "base","objectclass=*") ;
- printTrace("\nAtributeName: $attributename, Value: $User_at{$attributename}",3);
- die "\nentry not found cn=schema\n" unless $entry ;
- next if ($entry->hasValue("attributetypes",$User_at{$attributename},1) ) ;
- my $res = $entry->addValue("attributetypes",$User_at{$attributename},"1") ;
- if (! $res) {
- printMsg("\nCan\'t add attribute to the schema: $User_at{$attributename}");
- $MigrationErrors .= "\nCan\'t add attribute to the schema: $User_at{$attributename}" ;
- }
- my $res = $conn->update($entry) ;
- my $err = $conn->getErrorCode();
- if ($res) {
- printTrace("\nattribute: $attributename added",2);
- } elsif ($err == 20) { # already exists
- printTrace("\nattribute: $attributename already exists",1);
- }
- else {
- printMsg("\nCan\'t add attribute to the schema: $User_at{$attributename}");
- my $msg = $conn->getErrorString();
- printMsg("\nMsg: $msg");
- $MigrationErrors .= "\nCan\'t add attribute to the schema: $User_at{$attributename}" ;
- }
- }
- }
- else {
- # treat the case where the user wants to look at these attributes before processing
- }
-}
-
-#############################################################################
-# Add an object class to the user_oc hash and reset the object !!!
-sub AddObjectClass {
- my $ObjectClass = shift ;
- my $ObjectName = $ObjectClass->{'ObjectName'} ;
- my $Object_oid = $ObjectClass->{'Object_oid'} ;
- my $Object_superior = $ObjectClass->{'Object_superior'} ;
- my $Object_requires = $ObjectClass->{'Object_requires'} ;
- my $Object_allows = $ObjectClass->{'Object_allows'} ;
- my $ObjectClassDef = "( $Object_oid NAME \'$ObjectName\' DESC \'\' SUP $Object_superior STRUCTURAL MUST ($Object_requires) MAY ($Object_allows) X-ORIGIN \'user defined\' )";
- if ( (!($ObjectName =~ /^top$/i)) && ( ! $User_oc{$ObjectName} )) {
- $User_oc{$ObjectName} = $ObjectClassDef ;
- push @User_oc_names, $ObjectName ;
- printTrace("ObjectName: $ObjectName \nObject_oid: $Object_oid \nObject_superior:$Object_superior \nObject_requires: $Object_requires \nObject_allows: $Object_allows \nObjectClassDefinition: $User_oc{$ObjectName}\n",4);
- }
- elsif ( ($User_oc{$ObjectName}) && ($User_oc{$ObjectName} ne $ObjectClassDef) ) {
- printMsg("\nAttempt to redifine the objectclass: $ObjectName previously defined in your configuration file. Operation not allowed ");
- }
- else {
- printMsg("\nAttempt to redifine the objectclass: top. Operation not allowed");
- }
- resetObjectClass($ObjectClass);
-}
-
-#############################################################################
-# Build an LDIF attribute and add it to the user_at hash
-sub AddAttribute {
- my $Attr = shift ;
- my $AttributeName = $Attr->{'AttributeName'};
- my $Attribute_oid = $Attr->{'Attribute_oid'};
- my $Attribute_aliases = $Attr->{'Attribute_aliases'};
- my $Attribute_syntax = $Attr->{'Attribute_syntax'};
- my $Attribute_single = $Attr->{'Attribute_single'};
- my $AttributeDef = "( $Attribute_oid NAME ( \'$AttributeName\' $Attribute_aliases) DESC \'User Defined Attribute\' SYNTAX $Attribute_syntax $Attribute_single X-ORIGIN 'user defined' )" ;
- printTrace("\nAttributeDef: $AttributeDef",4);
- $User_at{$AttributeName} = $AttributeDef ;
-}
-#############################################################################
-# add the index structure to the newIndex hash
-sub AddIndex {
- my $ref_index = shift ;
- my $state = shift ;
- printTrace("\nAddIndex, last state: $state",4) ;
- if ($state == 1) {
- $ref_index->specific("ALL") ;
- return 1 ;
- }
- elsif ($state == 6) {
- $ref_index->specific("NONE") ;
- return 1 ;
- }
- if (($state == 1) || ($state == 3) || ($state == 5) || ($state == 6)) {
- foreach $name (@{$ref_index->names}) {
- $newIndex{$name} = $ref_index ; # record the ref to the index struct in the newIndex hash
- }
- return 1 ;
- }
- else {
- return 0 ;
- }
-}
-
-#############################################################################
-# add the plugin structure to the stdPlugin hash
-
-sub AddPlugin {
- my $ref_plugin = shift ;
- printTrace("\nAddPlugin",4) ;
- $stdPlugins{lc($ref_plugin->name)} = $ref_plugin ;
- my $name = $ref_plugin->name ;
- my $type = $ref_plugin->type ;
- my $enable = $ref_plugin->enable ;
-
- printTrace("\nPluginName: $name",4);
- printTrace("\nPluginType: $type",4);
- printTrace("\nPluginEnable: $enable",4);
- printTrace("\nPluginArgs: @{$ref_plugin->args}",4);
- return 1 ;
-}
-
-
-#############################################################################
-# parse a plugin definition and call the addindex
-
-sub ParsePlugin {
- my $Plugin = shift ;
- my $NumLine = shift ;
- my $state = 0 ;
- my $ErrorMsg = "Syntax error of a plugin definition. \n line parsed:";
- my $ref_plugin = S_plugin->new();
- printTrace("\nParsePlugin: $_",4);
- if (/^plugin\s+(database|extendop|preoperation|postoperation|matchingrule|syntax)\s+(on|off)\s+\"(.*?)\"\s+\"(.*?)\"\s+(\S+)(.*)$/i) {
- # $1 = <type>, $2 = <on|off>, $3 = <name>, $4 = <pathname>, $5 = <init_function>, $6 = [<arg>]*
- $ref_plugin->name($3);
- $ref_plugin->type($1);
- $ref_plugin->enable($2);
- $_ = $6 ;
- my $ArgNb = 0 ;
- my $prec ;
- my $arg ;
- my $Unix_oldDir = $oldDir ;
- my $Unix_root = $root ;
- grep { s@\\@/@g } $Unix_oldDir if $isNT;
- grep { s@\\@/@g } $Unix_root if $isNT;
- while (!(/^\s*$/)) {
- if (/^\s*\".*?\"/) {
- s/^\s*\"(.*?)\"(.*)/$2/i ;
- $arg = $1 ;
- }
- elsif (/^\s*[^\"\s]+/) {
- s/^\s*([^\"\s]+)(.*)/$2/i ;
- $arg = $1 ;
- }
- $prec = $_ ;
- $_ = $arg ;
-
- s@$Unix_oldDir@$Unix_root@ig ;
- s/$type-$oldname/$type-$newname/ig ;
- @{$ref_plugin->args}[$ArgNb++] = $_ ;
- $_ = $prec ;
- }
- if (/^\s*$/) {
- return AddPlugin($ref_plugin);
- }
- else {
- return 0 ;
- }
- }
- return 0 ;
-}
-
-#############################################################################
-# parse an index definition and call the addindex
-
-sub ParseIndex {
- my $index = shift ;
- my $NumLine = shift ;
- my $ref_index = S_index->new() ;
- my $Value ;
- my $state = 0 ;
- my $ErrorMsg = "Syntax error of an index definition.\nline parsed:";
- printTrace("\nParseIndex: $_",4) ;
- s/,/, /g ;
- s/\s+,/,/g ;
- s/^index\s+//i ; # substitute the token index
- while (!(/^\s*$/)) {
- s/^\s*(\S+)(.*)$/$2/ ;
- $Value = $1 ;
- printTrace("\nValue: $Value",4);
- printTrace("\nState: $state",4) ;
- SWITCH: {
- if ($state == 0) {
- if ($Value =~ /[^\.]/) {
- if ($Value =~ /(\S+),$/) {
- push @{$ref_index->names}, $1 ;
- }
- else {
- $state = 1 ;
- push @{$ref_index->names}, $Value ;
- }
- }
- else {
- return 0 ;
- }
- last SWITCH ;
- }
- if ($state == 1) {
- if ($Value =~ /^none$/i) {
- $state = 6 ; # end of the index definition
- }
- elsif ($Value =~ /^\"\"$/) {
- $state = 4 ; # we expect to have at least one OID
- }
- elsif ($Value =~ /(\S+),$/) {
- $state = 2 ;
- push @{$ref_index->types}, $1 ;
- }
- else {
- $state = 3 ;
- push @{$ref_index->types}, $Value ;
- }
- last SWITCH ;
- }
- if ($state == 2) {
- if ($Value =~ /(\S+),$/) {
- push @{$ref_index->types}, $1 ;
- }
- else {
- $state = 3 ;
- push @{$ref_index->types}, $Value ;
- }
- last SWITCH ;
- }
- if ($state == 3) {
- if ($Value =~ /(\S+),$/) {
- $state = 4 ;
- push @{$ref_index->oids}, $1 ;
- }
- else {
- $state = 5 ;
- push @{$ref_index->oids}, $Value ;
- }
- last SWITCH ;
- }
- if ($state == 4) {
- if ($Value =~ /(\S+),$/) {
- push @{$ref_index->oids}, $1 ;
- }
- else {
- $state = 5 ;
- push @{$ref_index->oids}, $Value ;
- }
- last SWITCH ;
- }
- }
- }
-return AddIndex($ref_index,$state) ;
-
-}
-
-#############################################################################
-
-sub ParseAttribute {
-
-
- my $Attr = shift ;
- my $NumLine = shift ;
- my $state = 1 ;
- my $ErrorMsg = "Syntax error of an attribute definition.\nline parsed:";
- my %Attribute = (
- 'AttributeName' => "",
- 'Attribute_oid' => "",
- 'Attribute_aliases' => "",
- 'Attribute_syntax' => "",
- 'Attribute_single' => ""
- );
- my $AttributeName = " ";
- printTrace("\nParseAttribute",4);
- while (!(/^\s*$/)) {
- s/^(.*?)(\S+)\s*$/$1/ ;
- printTrace("\nValue: $2",4);
- printTrace("\nState: $state",4) ;
- my $Value = $2 ;
- SWITCH: {
- if ($state == 1) {
- if (isAllowedModifier($Value)) {
- $state = 1 ;
- $modifier = lc($Value);
- $AttrVar = 'Attribute_' . $modifier ;
- $Attribute{$AttrVar} = &getModifierValue($Value) ;
- }
- elsif (&isAllowedPlugin($Value)) {
- $state = 2 ;
- $Attribute{'Attribute_syntax'} = &getSyntaxOid($Value) ;
- }
- else {
- return 0 ;
- }
- last SWITCH ;
- }
- if ($state == 2) {
- if ($Value =~ /[\.]|-oid$/) {
- $Attribute{'Attribute_oid'} = "$Value" ;
- printTrace("\nAttribute-oid: $Attribute{'Attribute_oid'}",3);
- $state = 3 ;
- }
- elsif ($Value =~ /[^\.]/) {
- $AttributeName = $Attribute{'AttributeName'} ;
- if ($AttributeName) { $Attribute{'Attribute_aliases'} .= "\'$AttributeName\' " ;}
- $Attribute{'AttributeName'} = $Value ;
- $state = 4 ;
- }
- else {
- return 0 ;
- }
- last SWITCH ;
- }
- if ($state == 3) {
- if ($Value =~ /[^\.]/) {
- $AttributeName = $Attribute{'AttributeName'} ;
- if ($AttributeName) { $Attribute{'Attribute_aliases'} .= "\'$AttributeName\' " ;}
- $Attribute{'AttributeName'} = $Value ;
- $state = 4 ; }
- else {
- return 0 ;
- }
- last SWITCH ;
- }
- if ($state == 4) {
- if ($Value =~/^attribute$/i){
- $state = 5;
- }
- elsif ($Value =~/[^\.]/i) {
- $AttributeName = $Attribute{'AttributeName'} ;
- if ($AttributeName) { $Attribute{'Attribute_aliases'} .= "\'$AttributeName\' " ;}
- $Attribute{'AttributeName'} = $Value ;
- }
- else {
- return 0 ;
- }
- last SWITCH ;
- }
- if ($state == 5) {
- return 0 ;
- last SWITCH ;
- }
- }
- }
- $Attribute{'Attribute_oid'} = $Attribute{'AttributeName'} . '-oid' unless ($Attribute{'Attribute_oid'}) ;
- return AddAttribute(\%Attribute) ;
-}
-
-
-#############################################################################
-# fill in the hash HashParametersName
-
-sub FillHashParametersName {
- my @paramnames = ( keys(%GeneralSrvParamToMigrate), keys(%GlobalConfigLDBMparamToMigrate), keys(%LDBMparamToMigrate));
- foreach $param (@paramnames) {
- $HashParametersName{$param} = '\n';
- }
-}
-
-
-# Parse parameters
-sub ParseParameters {
- my $param = shift ;
- my $value = shift ;
- my $NumLine = shift ;
- my $ErrorMsg = "parameter unknown, or not to be migrated: ";
- if ($HashParametersName{lc($param)} && ($value !~ /^\s*$/)) {
- $HashParametersName{lc($param)} = $value ;
- printTrace("\nParam: $param is present",4);
- }
- else {
- printTrace("\n$NumLine, $ErrorMsg,$param",4);
- }
-
-}
-
-# add general server parameters
-sub AddGeneralParameters {
- my @paramnames = keys(%GeneralSrvParamToMigrate);
- my $entry = $conn->search("cn=config","base","objectclass=*");
- die "\ncan't access to object: cn=config. \nMigration stopped\n" unless ($entry);
- printTrace("\nAddGeneralParameters",4);
- foreach $param (@paramnames) {
- my $LDAPparam = $GeneralSrvParamToMigrate{$param} ;
- my $Value = $HashParametersName{$param} ;
- if (($Value ne '\n') && ($entry->{$LDAPparam}[0] ne $Value)) {
- printTrace("\nLDAPparam: $LDAPparam, Value: $Value",4);
- $entry->setValues($LDAPparam, $Value);
- my $res = $conn->update($entry);
- if ($res) {
- printTrace("\nUpdate successfully $LDAPparam ",0);
- }
- else {
- printMsg("\nCan't update parameter: $LDAPparam");
- }
- }
- }
-}
-
-
-# add general LDBM parameters
-sub AddGeneralLDBMParameters {
- my @paramnames = keys(%GlobalConfigLDBMparamToMigrate);
- my $entry = $conn->search("cn=config,cn=ldbm database,cn=plugins,cn=config","base","objectclass=*");
- die "\ncan't access to object: cn=config,cn=ldbm database,cn=plugins,cn=config. \nMigration stopped\n" unless ($entry);
- printTrace("\nAddGeneralLDBMParameters",4);
- foreach $param (@paramnames) {
- my $LDAPparam = $GlobalConfigLDBMparamToMigrate{$param} ;
- my $Value = $HashParametersName{$param} ;
- if (($Value ne '\n') && ($entry->{$LDAPparam}[0] ne $Value)) {
- printTrace("\nLDAPparam: $LDAPparam, Value: $Value",4);
- $entry->setValues($LDAPparam, $Value);
- my $res = $conn->update($entry);
- if ($res) {
- printTrace("\nUpdate successfully $LDAPparam ",0);
- }
- else {
- printMsg("\nCan't update parameter: $LDAPparam");
- }
- }
- }
-}
-
-# add specific LDBM parameters
-sub AddSpecificLDBMParameters {
- my @paramnames = keys(%LDBMparamToMigrate);
- my %REV_DBNAMES = reverse %DBNAMES ;
- my @dbnames = keys(%REV_DBNAMES);
- printTrace("\nAddSpecificLDBMParameters",4);
- foreach $dbname (@dbnames) {
- my $entry = $conn->search("cn=$dbname,cn=ldbm database,cn=plugins,cn=config","base","objectclass=*");
- die "\ncan't access to object: cn=$dbname,cn=ldbm database,cn=plugins,cn=config. \nMigration stopped\n" unless ($entry);
- foreach $param (@paramnames) {
- my $LDAPparam = $LDBMparamToMigrate{$param} ;
- my $Value = $HashParametersName{$param} ;
- if (($Value ne '\n') && ($entry->{$LDAPparam}[0] ne $Value)) {
- printTrace("\nLDAPparam: $LDAPparam, Value: $Value",4);
- $entry->setValues($LDAPparam, $Value);
- my $res = $conn->update($entry);
- if ($res) {
- printTrace("\nUpdate successfully $LDAPparam",2);
- }
- else {
- printMsg("\nCan't update parameter: $LDAPparam");
- }
- }
- }
- }
-}
-
-#############################################################################
-# Parse a configuration file potentialy tuned by the user (different from slapd.user_oc.conf and slapd.user_at.conf)
-
-sub ParseConfigurationFile {
-
- my $FileToParse = shift;
- my $NumLine = 0;
- my $PARSE_OBJECTCLASSES = 0 ; # 1 if there are objectclass definitions in the file
- printTrace("\nParseConfigurationFile: $FileToParse",4) ;
- printTrace("\nParse $FileToParse",2);
- # read each line of the configuration file
- my $CONFIGFILE = "CONFIGFILE.$FileToParse" ;
- open( $CONFIGFILE, $FileToParse ) || die "Can't open $FileToParsec: $!: ";
- LINE: while ( <$CONFIGFILE> ) {
- $NumLine++ ;
- if (/^\s*\#/) { # skip comments
- next LINE;
- }
- if (/^\s*$/) { # skip blank lines
- next LINE;
- } elsif (/^suffix\s+/i) {
- chomp($_) ;
- CheckSuffix($_) ;
- } elsif (/^plugin/i) {
- chomp($_);
- if (! &isAStandardPlugin($_)) {
- push @badPlugins, $_;
- }
- else {
- my $Plugin = $_ ;
- if (! &ParsePlugin($_,$NumLine)) {
- printMsg("\nLine $NumLine, syntax error of the plugin:\n$Plugin");
- }
- }
- } elsif (/^index/i) {
- chomp($_);
- if (! &isAStandardIndex($_)) {
- my $Index = $_ ;
- if (! &ParseIndex($_,$NumLine)) {
- printMsg("\nLine $NumLine, syntax error of index:\n$Index");
- }
- }
- } elsif (/^include\s+[\"]?(.*?)[\"]?\s*$/i) {
- # strip leading and trailing "
- my $include_file = $1 ;
- grep { s@/@\\@g } $include_file if $isNT;
- if (! &isAStandardInclude($include_file)) {
- &ParseConfigurationFile($include_file);
- }
- } elsif (/^attribute\s+\S+/i) {
- chomp($_);
- my $Attrib = $_ ;
- if (! &ParseAttribute($_,$NumLine)) {
- printMsg("\nLine $NumLine, syntax error of attribute:\n$Attrib");
- }
- } elsif (/^objectclass\s+(\S+)\s*$/i) {
- # At least one objectclass is present in the file
- $PARSE_OBJECTCLASSES = 1;
- } elsif (/^\s*(\S+)\s+[\"]?(.*?)[\"]?\s*$/) {
- # Parse parameters and record the associated value in %Oldhash
- &ParseParameters($1,$2,$NumLine);
- }
- }
- close($CONFIGFILE);
- ParseObjectClassesFile($FileToParse) if ($PARSE_OBJECTCLASSES); # parse objectclass definition
-
-}
-
-#############################################################################
-# Parse the file specified in the userat attribute
-
-sub ParseAttributesFile {
- my $userat_file=shift ;
- my $NumLine = 0;
- printTrace("\nParseAttributesFile: $userat_file",4);
- printTrace("\nParse user defined attributes file: $userat_file",2);
- # read each line of the configuration file
- open( ATTRFILE, $userat_file ) || die "Can't open $FileToParsec: $!: ";
- LINE: while ( <ATTRFILE> ) {
- $NumLine++ ;
- if (/^\s*\#/) { # skip comments
- next LINE;
- }
- if (/^\s*$/) { # skip blank lines
- next LINE;
- } elsif (/^attribute\s+\S+/i) {
- chomp($_);
- my $Attrib = $_ ;
- if (! &ParseAttribute($_, $NumLine)) {
- printMsg("\nLine $NumLine, syntax error of attribute:\n$Attrib");
- }
- }
- }
- close(ATTRFILE);
-}
-
-#############################################################################
-# Parse the file specified in the useroc token
-
-sub ParseObjectClassesFile {
- my $useroc_file = shift ;
- my %ObjectClass = (
- 'ObjectName' => " ",
- 'Object_oid' => " ",
- 'Object_superior' => "top",
- 'Object_requires' => " ",
- 'Object_allows' => " "
- );
-
- my $state = 0;
- my $ErrorMsg = "Syntax error of an object class definition.\nline parsed:";
- my $LineNb = 0 ; # Number of the current line parsed in the file
- printTrace("ParseObjectClassesFile: $useroc_file\n",4) ;
- # read each line of the configuration file
- open( OBJCLASSFILE, $useroc_file ) || die "Can't open $FileToParsec: $!: ";
- printTrace("Begin the parsing of the file: $useroc_file",4);
- LINE: while ( <OBJCLASSFILE> ) {
- printTrace("Current Line: $_",4);
- $LineNb++ ;
- if (/^\s*\#/) { # skip comments
- next LINE;
- }
- if (/^\s*$/) { # skip blank lines
- next LINE;
- }
- SWITCH: {
- if ($state == 0) { resetObjectClass(\%ObjectClass);
- if (/^objectclass\s+(\S+)\s*$/i) {
- $ObjectClass{'ObjectName'} = $1;
- $state = 1 ;}
- else {} # printMsg($ErrorMsg,$_,$LineNb);}
- last SWITCH;}
- if ($state == 1) {if (/^\s+oid\s+(\S+)\s*$/i) {
- $ObjectClass{'Object_oid'} = $1;
- $state = 2 ;}
- elsif (/^\s+superior\s+(\S+)\s*$/i) {
- $ObjectClass{'Object_superior'} = $1;
- $state = 3 ;
- }
- elsif (/^\s+requires\s*$/i) {
- $state = 4;
- }
- elsif (/^\s+allows\s*$/i) {
- $state = 5;
- }
- else {$state=0; printMsg($ErrorMsg,$_,$LineNb);}
- last SWITCH;}
- if ($state == 2) {if (/^\s+superior\s+(\S+)\s*$/i) {
- $ObjectClass{'Object_superior'} = $1;
- $state = 3 ;}
- elsif (/^\s+requires\s*$/i) {
- $state = 4;
- }
- elsif (/^\s+allows\s*$/i) {
- $state = 5;
- }
- else { $state=0; printMsg($ErrorMsg,$_,$LineNb);}
- last SWITCH;}
- if ($state == 3) {if (/^\s+requires\s*$/i)
- { $state = 4; }
- elsif (/^objectclass\s+(\S+)\s*$/i) {
- # run an ldap add before to continue
- &AddObjectClass(\%ObjectClass);
- $ObjectClass{'ObjectName'} = $1;
- $state = 1 ;}
- elsif (/^\s+allows\s*$/i)
- { $state = 5; }
- else {$state = 0; printMsg($ErrorMsg,$_,$LineNb);}
- last SWITCH;}
- if ($state == 4) {if (/^\s+([^,\s]+),\s*$/i) {
- $ObjectClass{'Object_requires'}.=$1." \$ "; }
- elsif (/^\s+([^,\s]+)\s*$/i) {
- $ObjectClass{'Object_requires'}.=$1." ";
- $state = 6; }
- else {$state = 0;printMsg($ErrorMsg,$_,$LineNb);}
- last SWITCH;}
- if ($state == 5) {if (/^\s+([^,\s]+),\s*$/i) {
- $ObjectClass{'Object_allows'}.=$1." \$ "; }
- elsif (/^\s+([^,\s]+)\s*$/i) {
- $ObjectClass{'Object_allows'}.=$1." ";
- # run an ldap add before to continue
- &AddObjectClass(\%ObjectClass);
- $state = 0; }
- else {$state = 0; printMsg($ErrorMsg,$_,$LineNb);}
- last SWITCH;}
- if ($state == 6) {if (/^objectclass\s+(\S+)\s*$/i) {
- # run an ldap add before to continue
- &AddObjectClass(\%ObjectClass);
- $ObjectClass{'ObjectName'} = $1;
- $state = 1 ;}
- elsif (/^\s+allows\s*$/i) {
- $state = 5;}
- else {$state = 0; printMsg($ErrorMsg,$_,$LineNb);}
- last SWITCH;}
- }
- }
- close(OBJCLASSFILE);
- if (($state == 3) || ($state == 4) || ($state == 5) || ($state == 6)) {
- &AddObjectClass(\%ObjectClass);
- }
- printTrace("state: $state",4);
-}
-
-#############################################################################
-# printMsg print message to the user standard output.
-
-sub printMsg {
-
- my $TypeMsg = shift ;
- my $Msg = shift ;
- my $LineNb = shift ;
- if ($LineNb) {
- printTrace("Line: $LineNb, $TypeMsg, $Msg");
- }
- else {
- printTrace("$TypeMsg $Msg");
- }
-}
-
-#############################################################################
-# print message error to the user standard output.
-
-sub printTrace {
-
- my $Msg = shift ;
- my $level = shift ;
- if ($level <= $TRACELEVEL) {
- print($Msg);
- print LOGFILE $Msg ;
- }
-}
-
-#############################################################################
-# reset an objectclass structure
-
-sub resetObjectClass {
- my $ObjectClass = shift;
- $ObjectClass->{'ObjectName'} = " " ;
- $ObjectClass->{'Object_oid'} = " " ;
- $ObjectClass->{'Object_superior'} = "top" ;
- $ObjectClass->{'Object_requires'} = " " ;
- $ObjectClass->{'Object_allows'} = " " ;
-}
-
-#############################################################################
-# this subroutine implements a very stupid version of diff
-
-sub diff {
- my $f1 = shift;
- my $f2 = shift;
- my $lineToBeginWith = shift;
- my $NULL = "" ;
- my $diff_f1 = $NULL ;
- my $diff_f2 = $NULL ;
- my $retval = $NULL ;
- my $ret;
- open(F1, "$f1") or die "Could not open file $f1";
- open(F2, "$f2") or close(F1), die "Could not open file $f2";
-
- while (defined($l1 = <F1>)) {
- if ($lineToBeginWith){
- $lineToBeginWith -- ;
- next ;
- }
- next if ($l1 =~ /^\#/);
- $ret = defined($l2 = <F2>);
- if ($ret) {
- $ret = defined($l2 = <F2>) while ($ret && ($l2 =~ /^\#/)) ;
- if ($ret) {
- if (!($l1 eq $l2)) {
-
- # ignore whitespace
- $l1_clean = $l1 ;
- $l2_clean = $l2 ;
- $l1_clean =~ s/\s//g;
- $l2_clean =~ s/\s//g;
-
- if (!($l1_clean eq $l2_clean)) {
- $diff_f1 .= "${l1}" unless ($l1_clean eq $NULL);
- $diff_f2 .= "${l2}" unless ($l2_clean eq $NULL);
- }
- }
- }
- else {
- next if ($l1 =~ /^\s*$/) ;
- $diff_f1 .= "${l1}";
- }
- }
- else {
- next if ($l1 =~ /^\s*$/) ;
- $diff_f1 .= "${l1}";
- }
- }
-
- while (defined($l2 = <F2>)) {
- if (($l2 =~ /^\#/) || ($l2 =~ /^\s*$/)) {
- next ;
- }
- else {
- $diff_f2 .= "${l2}" ;
- }
- }
-
- close(F1);
- close(F2);
-
- $retval .= "- differences present in your config file but not in standard file:\n\n". "$diff_f1\n" if ($diff_f1) ;
- $retval .= "- differences present in standard file but not in your config file:\n\n" . "$diff_f2" if ($diff_f2) ;
- return $retval ;
-}
-
-sub CompareStdConfigFiles {
- # Compare each configuration file against its default version. If it has changed,
- # notify the user that the file has changed and will need to be checked by the
- # user. This should be safe to do because there should be no path information
- # stored in these conf files, which are just schema stuff.
- # printTrace("\nCheck if standard configuration files have changed",3);
-
- my $origFilePath = "$oldDir${PATHSEP}bin${PATHSEP}slapd${PATHSEP}install${PATHSEP}config${PATHSEP}" ;
- my $FilesChanged = "";
- my $AllDiffs = "***********************************************************************";
- my $NoChanges = "" ;
- my $lineToBegin = 0 ;
- printTrace("\nVersion of the old directory server: $oldVersion.$oldMinor",0);
- opendir(CONFDIR, $oldConfDir) or
- die "Error: could not open migrated config dir $oldConfDir: $!";
-
- foreach $file (readdir(CONFDIR)) {
- $origFile = $origFilePath . $file ;
- $configFile = $oldConfDir . $file ;
- if ((! exists($userDefinedConfigFiles{lc($file)})) && (-f $origFile)) {
- my $lineToBegin = 1 if (lc($file) eq "slapd-collations.conf"); # we ignore the first line of slapd-collations
- $diffs = &diff($configFile, $origFile, $lineToBegin);
- $lineToBegin = 0 if $lineToBegin ;
- if ($diffs) {
- $FilesChanged .= "\n$configFile";
- $AllDiffs .= "\n$configFile is different than the standard configuration file" ;
- $AllDiffs .= "\nYou will need to check this file and make sure its changes are compatible ";
- $AllDiffs .= "with the new directory server\nHere are the differences:\n";
- $AllDiffs .= "$diffs \n\n";
- $AllDiffs .= "***********************************************************************";
- }
- else {
- $NoChanges .= "\n$configFile";
- }
- }
- }
- closedir(CONFDIR);
-
-if ($FilesChanged) {
- printTrace("\nNo changes to old configuration files:$NoChanges",3) ;
- printTrace("\n***********************************************************************",3) ;
- printMsg("\nThe following standard files have been modified: $FilesChanged");
- if ($NO_INPUT_USER) {
- # do nothing
- }
- else {
- printMsg("\nDo you want to see the differences Yes/No [No] ?") ;
- my $answer = <STDIN> ;
- if ($answer =~ /y|yes/i) {
- printMsg("$AllDiffs");
- }
- printMsg("\nDo you want to continue the migration Yes/No [No] ?");
- $answer = <STDIN> ;
- if (! ($answer =~ /y|yes/i)) {
- exit(1);
- }
- }
- }
-}
-
-
-#############################################################################
-
-sub db2ldif {
- my ($conf, $ldif_dir) = @_;
- $ENV{"$LIB_PATH"}=$old_libpath;
- if (!$conf) {
- $conf = "$oldHome${PATHSEP}config${PATHSEP}slapd.conf";
- }
- if (! $ldif_dir) { $ldif_dir = $ldif_rep ;}
- if (!(-d $ldif_dir)) {
- mkdir($ldif_dir,0777) or die "can't create $ldif_rep to store temporary ldif files";
- }
- my $dir = "$oldDir${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server";
- chdir($dir) or
- die "Error: could not change directory to $dir: $!";
- my @suffixnames = keys(%DBNAMES) ;
- foreach $suffixname (@suffixnames) {
- my $ldif_file = $ldif_dir.$DBNAMES{$suffixname}.".ldif" ;
- # If we are on NT, ${quote} is setup to "\"", else it's setup to ""
- # As the suffix can contain some space characters, I write the suffix parameter: "\"$suffixname\"" rather than "${quote}$suffixname${quote}"
- my @cmd =
- ( "${quote}$oldDir${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server" .
- "${PATHSEP}$slapdExecName${quote}", "db2ldif", '-n', '-f',
- "${quote}$conf${quote}", '-a', "${quote}$ldif_file${quote}",
- '-d', '1','-s',"\"$suffixname\"" );
- open(DB2LDIF, "${quote}@cmd${quote} 2>&1|") or
- die "Error: could not execute @cmd: $!";
- sleep(1); # allow pipe to fill with data
- $ii = 0; # counter
- while (<DB2LDIF>) {
- ++$ii;
- if (($ii % 250) == 0) {
- printMsg(" Processing...\n");
- }
- }
- close(DB2LDIF);
- # set the ownership of the ldif file; should be the same as the new slapd user id
- if ((! $isNt) && ($oldlocaluser ne $localuser)) {
- if (-f $ldif_file) {
- chown( $newuid, $newgid, $ldif_file) or printMsg("\nUnable to change the ownership of $ldif_file to $localuser") ;
- }
- }
- }
- print " Done.\n";
- chdir($curdir) or die "Could not change directory to $curdir: $!";
-}
-
-#############################################################################
-# This db2ldif is used to export database of the new instance
-
-sub newinst_db2ldif {
- my $ldif = shift ;
- my $include_suffix = shift ;
- my $home = shift ;
- my $db2ldif_param = "db2ldif -r -D $home -a $ldif -s \"$include_suffix\"";
-
- open(DB2LDIF, "${quote}${quote}$slapdExecName${quote} $db2ldif_param${quote} 2>&1 |") or die "Could not run ns-slapd program $ldif2db_exe\n";
- sleep(1); # allow some data to accumulate in the pipe
- my $ii = 0;
- while (<DB2LDIF>) {
- ++$ii;
- if (($ii % 250) == 0) {
- printMsg(" Processing...\n");
- }
- printMsg($_);
- }
- close(DB2LDIF);
- # set the ownership of the ldif file; should be the same as the 5.x slapd user id
- if ((! $isNt) && ($oldlocaluser ne $localuser)) {
- if (-f $ldif) {
- chown( $newuid, $newgid, $ldif) or printMsg("\nUnable to change the ownership of $ldif to $localuser") ;
- }
- }
-}
-
-#############################################################################
-
-# this is used to run the system() call, capture exit and signal codes,
-# and die() upon badness; the first argument is a directory to change
-# dir to, if any, and the rest are passed to system()
-sub mySystem {
- my $rc = &mySystemNoDie(@_);
- my ($dir, @args) = @_;
- if ($rc == 0) {
-# success
- } elsif ($rc == 0xff00) {
- die "Error executing @args: error code $rc: $!";
- } elsif ($rc > 0x80) {
- $rc >>= 8;
- die "Error executing @args: error code $rc: $!";
- } else {
- if ($rc & 0x80) {
- $rc &= ~0x80;
- }
- die "Error executing @args: received signal $rc: $!";
- }
-
- # usually won't get return value
- return $rc;
-}
-
-# This version does not die but just returns the error code
-sub mySystemNoDie {
- my ($dir, @args) = @_;
- if ($dir && ($dir ne "")) {
- chdir($dir) or die "Could not change directory to $dir: $!";
- }
- my $cmd = $args[0];
- # the system {$cmd} avoids some NT shell quoting problems if the $cmd
- # needs to be quoted e.g. contains spaces; the map puts double quotes
- # around the arguments on NT which are stripped by the command
- # interpreter cmd.exe; but don't quote things which are already quoted
- my @fixargs = map { /^[\"].*[\"]$/ ? $_ : $quote . $_ . $quote } @args;
- my $rc = 0;
- if ($cmd =~ /[.](bat|cmd)$/) {
- # we have to pass batch files directly to the NT command interpreter
- $cmd = $com_spec;
-# print "system $cmd /c \"@fixargs\"\n";
- $rc = 0xffff & system {$cmd} '/c', "\"@fixargs\"";
- } else {
-# print "system $cmd @fixargs\n";
- $rc = 0xffff & system {$cmd} @fixargs;
- }
- chdir(${curdir}) or die "Could not change directory to $curdir: $!";
- return $rc;
-}
-
-#############################################################################
-sub manyLdif2db {
- my %rev_dbnames = reverse(%DBNAMES);
- @backends = keys(%rev_dbnames);
- $ENV{"$LIB_PATH"}=$new_libpath;
- chdir($slapdExecDir) or die "Could not change directory to $slapdExecDir: $!";
- foreach $backend (@backends) {
- my $ldif = "${ldif_rep}$backend.ldif" ;
- if (! -f $ldif) {
- $ldif = ${ldif_rep}."data.ldif";
- }
- &Ldif2db($ldif, $backend);
- }
- # remove the empty ldif directory
- # but not if using the data dir
- if (!$olddatadir) {
- rmdir($ldif_rep);
- }
- chdir($curdir) or die "Could not change directory to $curdir: $!";
-}
-
-
-sub Ldif2db {
- my $ldif = shift ;
- my $backend = shift ;
- my $ldif2db_param = "ldif2db -D $serverHome -n $backend -i $ldif";
- open(LDIF2DB, "${quote}${quote}$slapdExecName${quote} $ldif2db_param${quote} 2>&1 |") or die "Could not run ns-slapd program $ldif2db_exe\n";
- sleep(1); # allow some data to accumulate in the pipe
- while (<LDIF2DB>) {
- printMsg($_);
- }
- close(LDIF2DB);
- # remove the ldif file after the import
- # but not if using the data dir
- if (!$olddatadir) {
- unlink($ldif) ;
- }
-}
-
-#############################################################################
-
-#sub copyBak {
-# opendir( OLDBAK, "$oldHome${PATHSEP}bak" ) ||
-# die "Can't open directory $oldHome${PATHSEP}bak: $!: ";
-# local ( @dirs ) = readdir( OLDBAK );
-# closedir ( OLDBAK );
-# for ( @dirs ) {
-# if ( $_ eq "." || $_ eq ".." ) {
-# next;
-# } elsif ( -d "$oldHome${PATHSEP}bak${PATHSEP}$_" ) {
-# $srcDir = "$oldHome${PATHSEP}bak${PATHSEP}$_";
-# $destDir = "$serverHome${PATHSEP}bak${PATHSEP}$_";
-# $srcLDIF = "$oldHome${PATHSEP}ldif${PATHSEP}bak.ldif";
-# $destLDIF = "$serverHome${PATHSEP}ldif${PATHSEP}bak.ldif";
-# mkdir( $destDir , 0755 ) if !( -e $destDir);
-# # Converting database
-# if ( !$isNT && $newuser ) {
-# chown($newuid, $newgid,
-# "$serverHome${PATHSEP}bak", $destDir);
-# }
-# &other_db2ldif($srcDir, $srcLDIF);
-# if ($needAclUpg) {
-# &mySystem("$root${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server",
-# "$root${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server" .
-# "${PATHSEP}aclupg$exe_suffix", '-d', '-i',
-# $srcLDIF, '-o', $destLDIF);
-# } else {
-# &copyBinFile($srcLDIF, $destLDIF);
-# }
-# &other_ldif2db($destLDIF, $destDir);
-# }
-# }
-#}
-#############################################################################
-
-sub startServer {
- my $instanceDir = ${serverHome} ;
- my $errLog = $instanceDir . $PATHSEP . 'logs' . $PATHSEP . 'errors';
- # emulate tail -f
- # if the last line we see does not contain "slapd started", try again
- my $done = 0;
- my $started = 0;
- my $code = 0;
- my $lastLine = "";
- my $timeout = time + 240; # 4 minutes
- $ENV{"$LIB_PATH"}=$new_libpath;
-
- my $startCmd = $instanceDir . $PATHSEP . 'start' . $script_suffix;
- if (! -f $startCmd) {
- $startCmd = $instanceDir . $PATHSEP . 'start-slapd' . $script_suffix;
- }
- printTrace("\nInstanceDir: $instanceDir\n",4);
- $code = &mySystem($instanceDir,$startCmd);
- open(IN, $errLog) or die "Could not open error log $errLog: $!";
- my $pos = tell(IN);
- while (($done == 0) && (time < $timeout)) {
- for (; ($done == 0) && ($_ = <IN>); $pos = tell(IN)) {
- $lastLine = $_;
- # print;
- # the server has already been started and shutdown once . . .
- if (/slapd started\./) {
- $started++;
- if ($started == 2) {
- $done = 1;
- }
- # sometimes the server will fail to come up; in that case, restart it
- } elsif (/Initialization Failed/) {
- # print "Server failed to start: $_";
- $code = &mySystem($instanceDir, $startCmd);
- # sometimes the server will fail to come up; in that case, restart it
- } elsif (/exiting\./) {
- # print "Server failed to start: $_";
- #$code = &mySystem($startCmd);
-
- $code = &mySystem($instanceDir, $startCmd);
- }
- }
- if ($lastLine =~ /PR_Bind/) {
- # server port conflicts with another one, just report and punt
- print $lastLine;
- print "This server cannot be started until the other server on this\n";
- print "port is shutdown.\n";
- $done = 1;
- }
- if ($done == 0) {
- # rest a bit, then . . .
- sleep(2);
- # . . . reset the EOF status of the file desc
- seek(IN, $pos, 0);
- }
- }
- close(IN);
-
- if ($started < 2) {
- $! = $code;
- # $now = time;
- # if ($now > $timeout) {
- # print "Possible timeout: timeout=$timeout now=$now\n";
- # }
- die "Error: could not start server: $!";
- }
-
- return 0;
-}
-
-sub stopServer {
- my $root = shift;
- my $name = shift;
- $maxStopIterations = 5;
- print "\nShutting down server $name . . .\n";
-
- $ENV{"$LIB_PATH"}=$new_libpath;
- $stopCmd = $quote . $root . $PATHSEP . $name . $PATHSEP . 'stop' . $script_suffix . $quote;
- if (! -f $stopCmd) {
- $stopCmd = $quote . $root . $PATHSEP . $name . $PATHSEP . 'stop-slapd' . $script_suffix . $quote;
- }
-
- if (! -f $stopCmd) {
- # no stop command, probably a 1.X system; for NT, we'll try net stop
- # for unix, we'll get the pid and kill it
- if ($isNT) {
- $stopCmd = 'net stop ' . $name;
- } else {
- # see if there is a pid file
- $pidfile = $root . $PATHSEP . $name . $PATHSEP . 'logs' .
- $PATHSEP . 'pid';
- if (open(PIDFILE, $pidfile)) {
- chomp($pid = <PIDFILE>);
- close(PIDFILE);
- while ($maxStopIterations-- && !$exitCode) {
- $exitCode = kill(15, $pid);
- }
- $stopCmd = undef;
- }
- }
- }
-
- # keep looping until the stop cmd returns an error code, which usually
- # means that what ever we want to stop is stopped, or some other error
- # occurred e.g. permission, or no such service
- $exitCode = &runAndIgnoreOutput($stopCmd);
-# print "stopServer: exitCode=$exitCode\n";
- while ($stopCmd && $maxStopIterations-- && $exitCode) {
- $exitCode = &runAndIgnoreOutput($stopCmd);
-# print "stopServer: exitCode=$exitCode\n";
- }
-
- if (!$maxStopIterations) {
- print "Warning: could not shutdown the server: $!\n";
- }
-
- sleep(10) ;
-
- $exitCode = 0;
-
-}
-
-
-sub runAndIgnoreOutput {
- my $cmd = shift;
- printMsg(".");
- open(RUNCMD, "${quote}$cmd${quote} 2>&1 |") or die "Error: could not run $cmd: $!";
- printMsg(".");
- sleep(1); # allow pipe to fill with data
- printMsg(".");
- while (<RUNCMD>) {
-# print;
- }
- my $code = close(RUNCMD);
-# print "runAndIgnore: code=$code status=$?\n";
- return $?;
-}
-#############################################################################
-# migrate some of entries present in the old DSE.ldif like
-# cn=snmp,cn=config
-# cn=encryption,cn=config
-# all the aci's
-
-sub MigrateDSE {
- printTrace("\nMigrate DSE entries...",1);
- open( DSELDIF, "< $oldDSEldif" ) || die "Can't open $oldDSEldif: $!: ";
- my $in = new Mozilla::LDAP::LDIF(*DSELDIF) ;
- while ($old_entry = readOneEntry $in) {
- my $DN = $old_entry->getDN() ;
- SWITCH: {
- # migrate the entrie: cn=snmp,cn=config
- if ($DN =~ /^cn=SNMP,cn=config$/i) {
- my $entry = $conn->search("$DN","base","objectclass=nsSNMP");
- if ($entry) {
- my $res = $conn->update($old_entry);
- if ($res) {
- printTrace("\n$DN updated !",2);
- }
- else {
- printMsg("\nFailed to update $DN");
- }
- }
- else {
- printMsg("\nUnable to get info under $DN");
- }
- last SWITCH;
- }
- # migrate the entrie: cn=encryption,cn=config
- if ($DN =~ /cn=encryption,cn=config$/i) {
- if ($conn->search("$DN","base","objectclass=*")) {
- if ($old_entry->hasValue("objectClass", "nsEncryptionConfig")) {
- my $certfile = "alias/slapd-" . $newname . "-cert8.db";
- my $keyfile = "alias/slapd-" . $newname. "-key3.db";
- $old_entry->setValues("nsCertfile",$certfile) if ! $old_entry->hasValue("nsCertfile",$certfile);
- $old_entry->setValues("nsKeyfile",$keyfile) if ! $old_entry->hasValue("nsKeyfile",$keyfile);
- }
- my $res = $conn->update($old_entry);
- if ($res) {
- printTrace("\n$DN updated !",2);
- }
- else {
- printMsg("\nFailed to update $DN");
- }
- }
- else {
- my $res = $conn->add($old_entry);
- if ($res) {
- printTrace("\n$DN added !",2);
- }
- else {
- printMsg("\nFailed to add $DN");
- }
- }
- last SWITCH;
- }
- if (@{$old_entry->{aci}} && (! ($DN =~ /^cn=monitor$/i)) && (! ($DN =~ /^cn=schema$/i))) {
- # migrate aci's
- my $entry = $conn->search("$DN","base","objectclass=*");
- if ($entry) {
- my $res = $conn->update($old_entry);
- if ($res) {
- printTrace("\n$DN updated !",2);
- }
- else {
- printMsg("\nFailed to update $DN");
- }
- }
- else {
- my $res = $conn->add($old_entry);
- if ($res) {
- printTrace("\n$DN added !",2);
- }
- else {
- printMsg("\nFailed to add $DN");
- }
- }
- last SWITCH;
- }
- }
- }
- close(DSELDIF);
-}
-#############################################################################
-# migrate SSL info
-
-sub MigrateSSL {
- my $secPwd = 'bidon' ;
- # copy the SSL directory
- &copyDir("$oldHome${PATHSEP}ssl","$serverHome${PATHSEP}ssl");
- # copy the cert db and key files
- if ( -d "$oldDir${PATHSEP}alias") {
- $aliasDir = "$root${PATHSEP}alias";
- if (! -d $aliasDir) {
- mkdir($aliasDir, 0750);
- }
- &stopServer($root,'slapd-'.$newname);
- my $keydb = "$aliasDir${PATHSEP}slapd-$newname-key3.db" ;
- my $certdb = "$aliasDir${PATHSEP}slapd-$newname-cert8.db" ;
- my $certdb7 = "$aliasDir${PATHSEP}slapd-$newname-cert7.db" ;
- my $old_keydb = "$oldDir${PATHSEP}alias${PATHSEP}slapd-$oldname-key3.db" ;
- my $old_certdb = "$oldDir${PATHSEP}alias${PATHSEP}slapd-$oldname-cert7.db";
- my $keydb_backup = "$aliasDir${PATHSEP}slapd-$newname-key3.db_backup" ;
- my $certdb_backup = "$aliasDir${PATHSEP}slapd-$newname-cert7.db_backup" ;
- if (-f $old_keydb) {
- if (-f $keydb) {
- if ($NO_INPUT_USER) {
- printMsg("\n$keydb already exists. backup in $keydb_backup ...");
- &copyBinFile($keydb,$keydb_backup);
- &copyBinFile($old_keydb,$keydb);
- }
- else {
- print("\n\n$keydb already exists. Do you want to overwrite it ? [no]: ");
- my $answer = <STDIN> ;
- if ($answer =~ /^y|yes$/i) {
- &copyBinFile($old_keydb,$keydb);
- }
- }
- }
- else {
- &copyBinFile($old_keydb,$keydb);
- }
- }
- if (-f $old_certdb) {
- $mode = (stat($old_certdb))[2] if $PRESERVE;
- if (-f $certdb) {
- if ($NO_INPUT_USER) {
- printMsg("\n$certdb already exists. backup in $certdb_backup ...");
- &copyBinFile($certdb,$certdb_backup);
- unlink($certdb) || print "Couldn't delete $certdb : $!\n";
- &copyBinFile($old_certdb,$certdb7);
- }
- else {
- print("\n\n$certdb already exists. Do you want to overwrite it ? [no]: ");
- my $answer = <STDIN> ;
- if ($answer =~ /^y|yes$/i) {
- unlink($certdb) || print "Couldn't delete $certdb : $!\n";
- &copyBinFile($old_certdb,$certdb7);
- }
- }
- }
- else {
- &copyBinFile($old_certdb,$certdb7);
- }
- }
- # copy the old password file
- if (-f "$oldDir${PATHSEP}alias${PATHSEP}$type-$oldname-pin.txt") {
- &copyBinFile(
- "$oldDir${PATHSEP}alias${PATHSEP}$type-$oldname-pin.txt",
- "$aliasDir${PATHSEP}$type-$newname-pin.txt"
- );
- }
- &startServer();
- if ($PRESERVE) {
- chown($newuid,$newgid,$certdb) || print "Failed to set uid $newuid gid $newgid on $certdb : $!\n";
- chmod($mode,$certdb) || print "Failed to set mode $mode on $certdb : $!\n";
- }
- }
-
-}
-
-sub DisableSSL {
- my $entry = $conn->search("cn=config","base","objectclass=*");
- my $LDAPparam = "nsslapd-security" ;
- my $Value = "off" ;
- if ($entry->{$LDAPparam}[0] ne $Value) {
- printTrace("\nDisable SSL...",1);
- $entry->setValues($LDAPparam, $Value);
- }
- my $res = $conn->update($entry);
- if ($res) {
- printTrace("\nSSL disabled",2);
- }
- else {
- printMsg("\nCan't disable SSL, the server may have problems starting");
- }
-}
-
-# enable the migration of client authentication informations
-sub MigrateCertmap {
- # backup the old new certmap.conf and replace it with the old certmap.conf file
- my $oldCertmap = "$oldDir${PATHSEP}shared${PATHSEP}config${PATHSEP}certmap.conf";
- my $newCertmap = "$root${PATHSEP}shared${PATHSEP}config${PATHSEP}certmap.conf" ;
- my $backupCertmap = "$root${PATHSEP}shared${PATHSEP}config${PATHSEP}certmap.conf_backup" ;
- if (&hasChangedoldCertmap($oldCertmap)) {
- if ($NO_INPUT_USER) {
- printMsg("\n$newCertmap has been backup in $backupCertmap");
- &copyBinFile($newCertmap,$backupCertmap);
- &copyBinFile($oldCertmap,$newCertmap);
- }
- else {
- my $Ask = 1 ;
- while ($Ask) {
- printMsg("\n\nWhere do you want to back up the file $newCertmap [$backupCertmap] ?") ;
- my $Answer = <STDIN> ;
- $backupCertmap = $Answer if ($Answer ne "\n");
- chomp($backupCertmap);
- printTrace("\nDest: .$backupCertmap.",4);
- if (-e $backupCertmap) {
- printMsg("\n\n$backupCertmap already exists. Do you want to overwrite it Yes/No [No] ?") ;
- if (<STDIN> =~ /yes|y/i) {
- $Ask = 0 ;
- }
- else {
- $backupCertmap = "$root${PATHSEP}shared${PATHSEP}config${PATHSEP}certmap.conf_backup" ;
- }
- }
- else {
- $Ask = 0 ;
- }
- }
- printTrace("\nBackup file: $newCertmap in $backupCertmap",4);
- &copyBinFile($newCertmap,$backupCertmap);
- &copyBinFile($oldCertmap,$newCertmap);
- }
- }
- else {
- }
-}
-
-sub hasChangedoldCertmap {
- my $certmapfile = shift ;
- my @reference = ("certmap default default",
- "default:DNComps",
- "default:FilterComps e") ;
- my $cpt = 0 ;
- printTrace("\nhasChangedoldCertmap",3);
- open(CERTMAP,"< $certmapfile");
- while (<CERTMAP>) {
- if ((! /^\s*#/) && (! /^\s*$/)) {
- my $ref = $reference[$cpt] ;
- printTrace("\nValue: $_, ref: $ref",4);
- if (! /^\s*$ref\s*$/) {
- return 1 ;
- }
- else {
- $cpt++ ;
- }
- }
- }
- close (CERTMAP);
- printTrace("\ncpt: $cpt",4);
- if ($cpt < $#reference) {
- return 1 ;
- }
- else {
- return 0 ;
- }
-}
-#############################################################################
-# copy a directory to another
-
-sub copyDir {
- my $src = shift;
- my $dest = shift;
- my $exclude = shift;
-
- opendir( SRC, $src ) or die "Can't open directory $src: $!: ";
- my $mode;
- my $uid;
- my $gid;
- mkdir ( $dest , 0755 ) or die "\nCan't create directory $dest. \nPlease check you have enough rights to create it and/or check that your parent directory exists.\n" if !( -e $dest );
- if ($PRESERVE) {
- $mode = (stat($src))[2];
- ($uid, $gid) = (stat(_))[4..5];
- # Make sure files owned by the old user are owned by the
- # new user
- if ($uid == $olduid) {
- $uid = $newuid;
- $gid = $newgid;
- }
- chown $uid, $gid, $dest;
- chmod $mode, $dest;
- }
- local ( @files ) = readdir ( SRC );
- closedir( SRC );
- for ( @files ) {
- if ( $_ eq "." || $_ eq ".." ) {
- next;
- } elsif ( $exclude && /$exclude/ ) {
- next;
- } elsif( -d "$src${PATHSEP}$_") {
- &copyDir ( "$src${PATHSEP}$_", "$dest${PATHSEP}$_" );
- } else {
- &copyBinFile ( "$src${PATHSEP}$_", "$dest${PATHSEP}$_");
- }
- }
-}
-
-sub copyBinFile {
- my $src = shift;
- my $dest = shift;
- my $buf = "";
- my $bufsize = 8192;
-
- open( SRC, $src ) || die "Can't open $src: $!\n";
- # if we are given a directory destination instead of a file, extract the
- # filename portion of the source to use as the destination filename
- if (-d $dest) {
- $dest = $dest . $PATHSEP . &basename($src);
- }
- open( DEST, ">$dest" ) || die "Can't create $dest: $!\n";
- binmode SRC;
- binmode DEST;
- if ($PRESERVE) {
- $mode = (stat($src))[2];
- ($uid, $gid) = (stat(_))[4..5];
- # Make sure files owned by the old user are owned by the
- # new user
- if ($uid == $olduid) {
- $uid = $newuid;
- $gid = $newgid;
- }
- chown $uid, $gid, $dest;
- chmod $mode, $dest;
- }
- while (read(SRC, $buf, $bufsize)) {
- print DEST $buf;
- }
- close( SRC );
- close( DEST );
-}
-#############################################################################
-# backup new configuration files
-# backup the directory <new_root_server>/slapd-instance/config in <new_root_server>/slapd-instance/BackupConfig
-
-sub backupConfigFiles {
- # backup the new config files
- my $src = "$serverHome${PATHSEP}config" ;
- my $dest = "$serverHome${PATHSEP}config_backup" ;
- if ($NO_INPUT_USER) {
- printMsg("\n$src has been backup in $dest");
- &copyDir($src,$dest);
- }
- else {
- my $Ask = 1 ;
- while ($Ask) {
- printMsg("\n\nWhere do you want to back up your configuration directory [$dest] ?") ;
- my $Answer = <STDIN> ;
- $dest = $Answer if ($Answer ne "\n");
- chomp($dest);
- printTrace("\nDest: .$dest.",4);
- if (-e $dest) {
- printMsg("\n\n$dest already exists. Do you want to overwrite it Yes/No [No] ?") ;
- if (<STDIN> =~ /yes|y/i) {
- $Ask = 0 ;
- }
- else {
- $dest = "$serverHome${PATHSEP}config_backup" ;
- }
- }
- else {
- $Ask = 0 ;
- }
- }
- printTrace("\nBackup Directory: $src in $dest",4);
- &copyDir($src,$dest);
- }
-}
-#############################################################################
-
-sub getLDAPservername {
- my $oldLDAPservername;
- my $LDAPservername;
- open(OLDSLAPDCONF, $oldSlapdConf) or
- die "\nError: could not open old config file $oldSlapdConf \n";
- while(<OLDSLAPDCONF>) {
- chop;
- if (/^localhost\s+/i) {
- ($oldLDAPservername = $') =~ s/^[\"]//;;
- $oldLDAPservername =~ s/[\"]$//;
- printTrace("\nName of the old LDAP server: $oldLDAPservername",3);
- }
- }
- close(OLDSLAPDCONF);
-
- open( DSELDIF, "< $DSEldif" ) || die "\nCan't open $DSEldif \n";
- my $in = new Mozilla::LDAP::LDIF(*DSELDIF) ;
- while ($entry = readOneEntry $in) {
- my $DN = $entry->getDN() ;
- if ($DN =~ /^cn=config$/i) {
- my $localhost = "nsslapd-localhost";
- my @values = $entry->getValues($localhost);
- if ($#values != -1) {
- $LDAPservername = $values[0];
- }
- break;
- }
- }
- close(DSELDIF);
- # check old and new are installed on the same physical machine.
- if (lc($oldLDAPservername) ne lc($LDAPservername)) {
- # warn the user he tries to migrate a old server installed on a different machine from the new one
- printMsg("\n\nYour old server is on $oldLDAPservername, and your new server is on $LDAPservername. We don't support migration on different machines. Do you want to continue ? Yes/No [No]:") ;
- if (! (<STDIN> =~ /yes|y/i)) {
- return -1;
- }
- }
- return $LDAPservername ;
-}
-
-#############################################################################
-
-sub getLibPath {
- my $myDir = shift;
- my $myVersion = shift;
- my $myMinor = shift;
-
- if ($isNT) {
- return $ENV{"$LIB_PATH"};
- }
- if (($myVersion >= 6) && ($myMinor >= 2)) {
- return
- "$myDir${PATHSEP}bin${PATHSEP}slapd${PATHSEP}lib${SEP}".
- "$myDir${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server${SEP}".
- $ENV{"$LIB_PATH"};
- } else {
- return "$myDir${PATHSEP}lib${SEP}".$ENV{"$LIB_PATH"};
- }
-}
-
-#############################################################################
-
-sub getVersion {
- my $dir = shift;
- my $versionstr = shift;
- my $version = 0;
- my $minor = 0;
- my $buildNumber = 0;
- my $progDir = "${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server${PATHSEP}";
- my $progDir2 = "${PATHSEP}bin${PATHSEP}slapd${PATHSEP}";
-
- # find the slapd executable
- if (!$versionstr) { # version not specified on cmd line - find it
- $prog = $dir . $progDir . $slapdExecName;
- if (! -f $prog) {
- $prog = $dir . $progDir2 . $slapdExecName;
- if (-f $prog && $isNT) {
- # if slapd is in bin/slapd and we're on NT, just assume version 1;
- # apparently, slapd.exe doesn't like the -v argument . . .
- return ( '1', $minor );
- }
- else{
- die "Could not run slapd program $prog: $!";
- }
- }
- else {
- chdir($dir . $progDir);
- }
- $cur_libpath=$ENV{"$LIB_PATH"};
- $ENV{"$LIB_PATH"}=
- "$dir${PATHSEP}lib${SEP}".
- "$dir${PATHSEP}bin${PATHSEP}slapd${PATHSEP}lib${SEP}".
- "$dir${PATHSEP}bin${PATHSEP}slapd${PATHSEP}server${SEP}".
- $ENV{"$LIB_PATH"};
- # read the old version from the old slapd program
-
- open(F, "${quote}${quote}$prog${quote} -v${quote} 2>&1 |") or
- die "Could not run slapd program $prog: $!";
- sleep(1); # allow some data to accumulate in the pipe
-# print "Output from $prog -v:\n";
- while (<F>) {
- if (/^Red Hat-Directory/ || /^Netscape-Directory/ || /^iPlanet-Directory/i) {
- $versionstr = $_;
- last;
- }
- }
- $code = close(F);
- # print "$prog returned code=$code status=$?\n";
- $ENV{"$LIB_PATH"}=$cur_libpath;
- }
-
- if ($versionstr =~ /^Red Hat-Directory\/(\d+)\.(\d+)(?:b\d)*\s+(\S+)/) {
- $version = $1;
- $minor = $2;
- $buildNumber = $3;
- }
- elsif ($versionstr =~ /^Netscape-Directory\/(\d+)\.(\d+)(?:b\d)*\s+(\S+)/) {
- $version = $1;
- $minor = $2;
- $buildNumber = $3;
- }
- elsif ($versionstr =~ /^Netscape-Directory\(restrict?ed-mode\)\/(\d+)\.(\d+)\s+(\S+)/) { # we can have restricted-mode or restriced-mode ...
- $version = $1;
- $minor = $2;
- $buildNumber = $3;
- }
- elsif ($versionstr =~ /^iPlanet-Directory\/(\d+)\.(\d+)\s+(\S+)/i) {
- $version = $1;
- $minor = $2;
- $buildNumber = $3;
- } elsif ($versionstr =~ /(\d+)\.(\d+)/) {
- $version = $1;
- $minor = $2;
- }
-
- if ($version == 0) {
- die "\nCould not determine version of the directory server in $dir: \n";
- }
-
- # distinguish the 4.1 and the 4.11 thanks to the buildNumber
- if (($version == 4) && ($minor == 1)){
- if (! ($buildNumber =~ /^B99\.16/)) {
- # it's not a 4.1 Netscape Directory Server => it's a 4.11
- $minor = 11 ;
- }
- }
- chdir($curdir) or die "Could not change directory to $curdir: $!" ;
- return ( $version, $minor );
-}
-
-#############################################################################
-
-sub getDiff {
- # we get references to arrays
- my $elements = shift ;
- my $existing_elements = shift ;
- my %count = () ;
- my %countEE = () ;
- @diff = () ;
- foreach $e (@{$elements}, @{$existing_elements}) { $count{$e}++ ;}
- foreach $e (@{existing_elements}) { $countEE{$e}++ ;}
- foreach $e (@{$elements}) {
- # if $e is only present in @$elements, we push it to the diff array
- if (($count{$e} == 1) && ($countEE{$e} == 0)) {
- push @diff, $e ;
- }
- }
- return @diff ;
-}
-
-###############################################################################################
-sub testIndexUpdating {
- #my $entry = $conn->newEntry();
- #$entry->setDN("cn=djeattribute,cn=index,cn=MigratedDB_5,cn=ldbm database,cn=plugins,cn=config");
- my $entry = $conn->search("cn=mail,cn=index,cn=MigratedDB_2,cn=ldbm database,cn=plugins,cn=config","base","objectclass=nsIndex");
- my @types = ("pres", "sub", "eq") ;
- my @existing_types = $entry->getValues("nsindextype");
- my @typesToAdd = &getDiff(\@types, \@existing_types);
- foreach $newtype (@typesToAdd) {
- $entry->addValue("nsindextype", $newtype); printTrace("\nnewtype: $newtype",2);
- }
- my $res = $conn->update($entry) ;
- if ($res) {print("\nUpdate index mail\n");}
- else { print("\ncan't update index mail");}
-
- $entry = $conn->search("cn=givenName,cn=index,cn=MigratedDB_2,cn=ldbm database,cn=plugins,cn=config","base","objectclass=nsIndex");
- @types = ("pres", "sub", "eq") ;
- @existing_types = $entry->getValues("nsindextype"); print("\ngivenName, existing_types: @existing_types");
- @typesToAdd = &getDiff(\@types, \@existing_types); print("\nTypesToAdd: @typesToAdd");
- foreach $newtype (@typesToAdd) {
- $entry->addValue("nsindextype", $newtype); printTrace("\nnewtype: $newtype",2);
- }
- my $res = $conn->update($entry) ;
- if ($res) {print("\nUpdate index givenName\n");}
- else { print("\ncan't update index givenName");}
- }
-
-
-###############################################################################################
-sub normalizeDir {
- my $dir = shift ;
- my $dir_prec = "" ;
- while ($dir_prec ne $dir) {
- $dir_prec = $dir ;
- if ($isNT) {
- grep { s@\\\\@\\@g } $dir ;
- }
- else {
- grep { s@//@/@g } $dir ;
- }
- }
- return $dir ;
-}
-
-
-###############################################################################################
-# return 1 if the value parameters is
-sub isAllowedPlugin {
- my $Value = lc(shift) ;
- if ($allowedPlugins{$Value}) {
- return 1 ;
- }
- else {
- return 0 ;
- }
-
-}
-
-
-sub getSyntaxOid {
- my $Value = lc(shift) ;
- return $allowedPlugins{$Value} ;
-}
-
-###############################################################################################
-# return 1 if the value given in parameters is an allowed modifier
-sub isAllowedModifier {
- my $Value = lc(shift) ;
- if ($allowedModifiers{$Value}) {
- return 1 ;
- }
- else {
- return 0 ;
- }
-}
-
-sub getModifierValue {
- my $Value = lc(shift) ;
- return $allowedModifiers{$Value} ;
-}
-
-###############################################################################################
-
-sub GetTime {
- my $tm = localtime;
- (my $sec, my $min, my $hour, my $dd, my $mm, my $yy) = ($tm->sec, $tm->min, $tm->hour, $tm->mday, ($tm->mon)+1, ($tm->year)+1900);
- $sec = "0$sec" unless $sec > 9 ;
- $min = "0$min" unless $min > 9 ;
- $hour = "0$hour" unless $hour > 9 ;
- $dd = "0$dd" unless $dd > 9 ;
- $mm = "0$mm" unless $mm > 9 ;
- return ($sec, $min, $hour, $dd, $mm, $yy);
-}
-
-###############################################################################################
-# get uid and group id of the new slapd server.
-# The uid is done through the nsslapd-localuser attribute
-
-sub getuid_gid {
- my $newuid ;
- my $newgid ;
- my $localuser ;
- my $localuser_attr = "nsslapd-localuser" ;
- if (! $isNT) {
- my $entry = $conn->search("cn=config ", "base","objectclass=*", 0, ($localuser_attr)) ;
- # Tests wether we succeed to get the entry cn=config
- die "\nCan't get the entry cn=config \n" unless ($entry);
- my @values = $entry->getValues($localuser_attr);
- if ($#values == -1 || ($values[0] eq "") ) { # tests wether the nsslapd-localuser attribute has a value
- printMsg("\nNo localuser has been found in the configuration of the directory. ");
- if ($NO_INPUT_USER) {
- printMsg("\nWe considered nobody as the localuser");
- $localuser = "nobody" ;
- }
- else {
- my $Ask = 1 ;
- while ($Ask) {
- printMsg("\nUnder what user does your $Version.$Minor directory server run [nobody] ? ") ;
- $localuser = <STDIN> ;
- chomp($localuser);
- $localuser = "nobody" if ($localuser eq "");
- ($newuid, $newgid) = (getpwnam("$localuser"))[2..3] ;
- if ($newuid) {
- $Ask = 0 ;
- }
- else {
- printMsg("\nError: $localuser is unknown from the system ");
- }
- }
- }
- }
- else {
- $localuser = $values[0]; # returns the first value (we should only have one localuser)
- my $size = $#values ;
- }
- ($newuid, $newgid) = (getpwnam("$localuser"))[2..3] ;
- return ($localuser, $newuid, $newgid) ;
- }
- else {
- return () ;
- }
-}
-
-
-###############################################################################################
-# get uid and group id of the old slapd server.
-
-sub getolduid_gid {
- my $oldlocaluser ;
- if (! $isNT) {
- open(CONF, $oldSlapdConf) or die "\nError: cannot open $oldSlapdConf: $!\n";
- while (<CONF>) {
- if (/^localuser\s+/i) {
- chomp($oldlocaluser = $');
- last;
- }
- }
- close(CONF);
- ($olduid, $oldgid) = (getpwnam("$oldlocaluser"))[2..3] ;
- return ($oldlocaluser, $olduid, $oldgid) ;
- }
- else {
- return ();
- }
-}
-
-###############################################################################################
-# get current directory
-
-sub getCwd {
- my $command = $isNT ? "cd" : "/bin/pwd";
- open(PWDCMD, "$command 2>&1 |") or
- die "Error: could not execute $command: $!";
- # without the following sleep, reading from the pipe will
- # return nothing; I guess it gives the pwd command time
- # to get some data to read . . .
- sleep(1);
- my $currentdir;
- while (<PWDCMD>) {
- if (!$currentdir) {
- chomp($currentdir = $_);
- }
- }
- my $code = close(PWDCMD);
-# if ($code || $?) {
-# print "$command returned code=$code status=$? dir=$curdir\n";
-# }
-# print "getCwd curdir=\[$curdir\]\n";
- return $currentdir;
-}
diff --git a/ldap/admin/src/sec_tools_wrapper b/ldap/admin/src/sec_tools_wrapper
deleted file mode 100644
index 338a1569..00000000
--- a/ldap/admin/src/sec_tools_wrapper
+++ /dev/null
@@ -1,66 +0,0 @@
-#!/bin/sh
-#
-# BEGIN COPYRIGHT BLOCK
-# This Program is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; version 2 of the License.
-#
-# This Program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place, Suite 330, Boston, MA 02111-1307 USA.
-#
-# In addition, as a special exception, Red Hat, Inc. gives You the additional
-# right to link the code of this Program with code not covered under the GNU
-# General Public License ("Non-GPL Code") and to distribute linked combinations
-# including the two, subject to the limitations in this paragraph. Non-GPL Code
-# permitted under this exception must only link to the code of this Program
-# through those well defined interfaces identified in the file named EXCEPTION
-# found in the source code files (the "Approved Interfaces"). The files of
-# Non-GPL Code may instantiate templates or use macros or inline functions from
-# the Approved Interfaces without causing the resulting work to be covered by
-# the GNU General Public License. Only Red Hat, Inc. may make changes or
-# additions to the list of Approved Interfaces. You must obey the GNU General
-# Public License in all respects for all of the Program code and other code used
-# in conjunction with the Program except the Non-GPL Code covered by this
-# exception. If you modify this file, you may extend this exception to your
-# version of the file, but you are not obligated to do so. If you do not wish to
-# provide this exception without modification, you must delete this exception
-# statement from your version and license this file solely under the GPL without
-# exception.
-#
-# Copyright (C) 2006 Red Hat, Inc.
-# All rights reserved.
-# END COPYRIGHT BLOCK
-#
-# This file is the wrapper around the security tools. It just sets the
-# runtime library lookup path and invokes the actual binary with the given
-# arguments. This file is copied to the actual name of the command e.g.
-# we get the binary certutil program from the NSS package. When we package
-# it, we rename it to certutil-bin e.g. cp $(NSS)/certutil shared/bin/certutil-bin
-# This file is copied to certutil e.g. cp sec_tools_wrapper shared/bin/certutil
-
-# figure out where the libdir is based on the location of this shell script
-savedir=`pwd`
-bindir=`dirname $0`
-if test -n "$bindir" ; then
- cd $bindir/../lib
-else
-# could be running as e.g. ./certutil or certutil if current dir is in PATH
- cd ../lib
-fi
-# assume the libdir is ../lib from the bindir e.g. sroot/shared/bin and sroot/shared/lib
-libdir=`pwd`
-cd $savedir
-
-# cover our bases on ld libpaths
-SHLIB_PATH=$libdir
-LIBPATH=$libdir
-LD_LIBRARY_PATH=$libdir
-DYLD_PATH=$libdir
-export SHLIB_PATH LIBPATH LD_LIBRARY_PATH DYLD_PATH
-
-$0-bin ${1+"$@"}
diff --git a/ldap/admin/src/uname.lib b/ldap/admin/src/uname.lib
deleted file mode 100644
index c8124389..00000000
--- a/ldap/admin/src/uname.lib
+++ /dev/null
@@ -1,201 +0,0 @@
-#!perl
-#
-# BEGIN COPYRIGHT BLOCK
-# This Program is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; version 2 of the License.
-#
-# This Program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place, Suite 330, Boston, MA 02111-1307 USA.
-#
-# In addition, as a special exception, Red Hat, Inc. gives You the additional
-# right to link the code of this Program with code not covered under the GNU
-# General Public License ("Non-GPL Code") and to distribute linked combinations
-# including the two, subject to the limitations in this paragraph. Non-GPL Code
-# permitted under this exception must only link to the code of this Program
-# through those well defined interfaces identified in the file named EXCEPTION
-# found in the source code files (the "Approved Interfaces"). The files of
-# Non-GPL Code may instantiate templates or use macros or inline functions from
-# the Approved Interfaces without causing the resulting work to be covered by
-# the GNU General Public License. Only Red Hat, Inc. may make changes or
-# additions to the list of Approved Interfaces. You must obey the GNU General
-# Public License in all respects for all of the Program code and other code used
-# in conjunction with the Program except the Non-GPL Code covered by this
-# exception. If you modify this file, you may extend this exception to your
-# version of the file, but you are not obligated to do so. If you do not wish to
-# provide this exception without modification, you must delete this exception
-# statement from your version and license this file solely under the GPL without
-# exception.
-#
-#
-# Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
-# Copyright (C) 2005 Red Hat, Inc.
-# All rights reserved.
-# END COPYRIGHT BLOCK
-#
-
-sub uname
-{
- local (@CommandLine) = @_;
-
- local($getall) = 0;
- local($getproc) = 0;
- local($getosrel) = 0;
- local($getosname) = 0;
- local($getosver) = 0;
-
- while ($_ = @CommandLine[0]) {
- PARSE_SWITCH: {
- if (/^-a\b/i) {# show all information
- $getall=1;
- shift(@CommandLine);
- last PARSE_SWITCH
- }
- if (/^-n\b/i) {# show node name
- $getnodename=1;
- shift(@CommandLine);
- last PARSE_SWITCH
- }
- if (/^-p\b/i) {# show processor
- $getproc=1;
- shift(@CommandLine);
- last PARSE_SWITCH
- }
- if (/^-r\b/i) {# show os release
- $getosrel=1;
- shift(@CommandLine);
- last PARSE_SWITCH
- }
- if (/^-s\b/i) {# show os name
- $getosname=1;
- shift(@CommandLine);
- last PARSE_SWITCH
- }
- if (/^-v\b/i) {# show os version
- $getosver=1;
- shift(@CommandLine);
- last PARSE_SWITCH
- }
- print " ERROR: Unknown parameter: $_\n";
- shift(@CommandLine);
- }
- }
-
-chomp(local($os) = `uname -s`);
-local($nodename) = "";
-local($proc) = "";
-local($osrel) = "";
-local($osname) = "";
-local($osver) = "";
-local($osrel1) = "";
-local($osrel2) = "";
-local($nodename1) = "";
-local($retval) = "";
-local($ret) = "";
-
-if ($os eq "Windows_NT")
-{
- chomp($nodename = `uname -n`);
- chomp($proc = `uname -m`); lc($proc);
- if ($proc =~ /^[0-9]86.*/)
- {
- $proc = "i386";
- }
- else
- {
- $proc = "?";
- }
- chomp($osrel1 = `uname -r`);
- chomp($osrel2 = `uname -v`);
- $osrel = $osrel1.".".$osrel2;
- $osname = "WINNT";
- $osver = "???";
-}
-if ($os eq "WINNT")
-{
- chomp($nodename = `uname -n`);
- chomp($proc = `uname -p`); lc($proc);
- chomp($osrel = `uname -r`);
- $osname = "WINNT";
- chomp($osver = `uname -v`);
-}
-
-if ($os eq "SunOS")
-{
- chomp($nodename = `uname -n`);
- chomp($proc = `uname -p`);
- chomp($osrel = `uname -r`);
- $osname = $os;
- chomp($osver = `uname -v`);
-}
-if ($os eq "IRIX" || $os eq "IRIX64")
-{
- chomp($nodename = `uname -n`);
- chomp($proc = `uname -p`);
- chomp($osrel = `uname -r`);
- $osname = "IRIX";
- chomp($osver = `uname -v`);
-}
-
-if ($os eq "HP-UX")
-{
- chomp($nodename = `uname -n`);
-# $proc = "hppa1.1";
- chomp($proc = `uname -m`);
- chomp($osrel = `uname -r`);
- $osname = $os;
- chomp($osver = `uname -v`);
-}
-
-if ($os eq "OSF1")
-{
- chomp($nodename1 = `uname -n`);
- ($nodename) = ($nodename1 =~ /(\w+)\..*/);
- chomp($proc = `uname -m`);
- chomp($osrel = `uname -r`);
- $osname = $os;
- chomp($osver = `uname -v`);
-}
-
-if ($os eq "AIX")
-{
- chomp($nodename = `uname -n`);
- $proc = "rs6000";
- chomp($osrel1 = `uname -v`);
- chomp($osrel2 = `uname -r`);
- $osrel = $osrel1.".".$osrel2;
- $osname = $os;
- $osver = "???";
-}
-
-if ($getall)
-{
- $getosname = 1;
- $getnodename = 1;
- $getosrel = 1;
- $getosver = 1;
- $getproc = 1;
-}
-
-$retval = "";
-$retval = $retval.($getosname ? $osname : "");
-$retval = $retval.($getnodename ? " ".$nodename : "");
-$retval = $retval.($getosrel ? " ".$osrel : "");
-$retval = $retval.($getosver ? " ".$osver : "");
-$retval = $retval.($getproc ? " ".$proc : "");
-
-if ($retval eq "")
-{
- $retval = $nodename;
-}
-
-($ret) = ($retval =~ /\s*(.*)/);
-
-return "$ret";
-}
-1
diff --git a/ldap/admin/src/updatedsgw b/ldap/admin/src/updatedsgw
deleted file mode 100755
index 03efd21f..00000000
--- a/ldap/admin/src/updatedsgw
+++ /dev/null
@@ -1,363 +0,0 @@
-#!/usr/bin/env perl
-#
-# BEGIN COPYRIGHT BLOCK
-# This Program is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; version 2 of the License.
-#
-# This Program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place, Suite 330, Boston, MA 02111-1307 USA.
-#
-# In addition, as a special exception, Red Hat, Inc. gives You the additional
-# right to link the code of this Program with code not covered under the GNU
-# General Public License ("Non-GPL Code") and to distribute linked combinations
-# including the two, subject to the limitations in this paragraph. Non-GPL Code
-# permitted under this exception must only link to the code of this Program
-# through those well defined interfaces identified in the file named EXCEPTION
-# found in the source code files (the "Approved Interfaces"). The files of
-# Non-GPL Code may instantiate templates or use macros or inline functions from
-# the Approved Interfaces without causing the resulting work to be covered by
-# the GNU General Public License. Only Red Hat, Inc. may make changes or
-# additions to the list of Approved Interfaces. You must obey the GNU General
-# Public License in all respects for all of the Program code and other code used
-# in conjunction with the Program except the Non-GPL Code covered by this
-# exception. If you modify this file, you may extend this exception to your
-# version of the file, but you are not obligated to do so. If you do not wish to
-# provide this exception without modification, you must delete this exception
-# statement from your version and license this file solely under the GPL without
-# exception.
-#
-#
-# Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
-# Copyright (C) 2005 Red Hat, Inc.
-# All rights reserved.
-# END COPYRIGHT BLOCK
-#
-
-$nshome = $ENV{'NETSITE_ROOT'};
-
-# If there is no nshome, then assume that we're running
-# as a commandline script.
-if (!$nshome ) {
- $script_mode = 1;
-
-# get the commandline options
- if (!getopts('h:i:d:e:s:t:n:') || !$opt_n || !$opt_h ) {
- print "usage: " . $0 . " -n nshome -h current_slapd_host:current_slapd_port [options]\n";
- print "\nrequired:\n";
- print " -n directory\tthe directory where 1.0 is installed (NS-HOME)\n";
- print " -h host[:port]\tthe current host and port of the directory server\n";
- print " \tto which the gateway connects.\n";
- print "\noptions:\n";
- print " -i host[:port]\tthe new host and port of the directory server\n";
- print " -s suffix\t\tthe old suffix of the directory server\n";
- print " -t suffix\t\tthe new ESCAPED suffix of the directory server\n";
- print " -d dirmgrdn\t\tthe old manager dn of the directory server\n";
- print " -e dirmgrdn\t\tthe new manager dn of the directory server\n";
- print "\nexample:\n " . $0 . " -n /home/servers/ds10/ -h gargoyle:1974 -i brooklyn -s \"dc=example,dc=com\" -t \"o%3Ddirectory.fedora.redhat.com\" -d \"cn=directory manager\" -e \"cn=directory guru\"\n";
-
- exit;
- }
-
- # Parse the commandline options
- handle_script_input();
-
-} else {
-# output cgi header
- print "Content-type: text/plain\n\n";
-
-# print "Done\n";
-# parse the input
- while ( <> ) {
- &parse_input( $_ );
- }
-
- if ( !$vars{'old_host'}) {
- rpt_err( -13, "host");
-# -13 = null parameter.
-# print "Invalid input for DSGW changer CGI\n\n";
- exit;
- }
-
-# print "$nshome $vars{'old_host'} $vars{'old_port'}\n";
-}
-
-# setup the path separator
-$isNT = -d '\\';
-$PS = $isNT ? "\\" : "/";
-
-$contextdir = "$nshome"."$PS"."dsgw"."$PS"."context";
-
-#make sure that the target directory exists
-if (! -e "$contextdir") {
- rpt_err( -16 ,"$contextdir");
-# -16 = not a directory
-# print "$contextdir does not exist\n";
- exit;
-}
-
-
-# cd into NS-HOME/dsgw/context directory
-chdir "$contextdir" or die "Unable to cd to $contextdir: $!\n";
-
-# read the files
- opendir DSGW_CONTEXT, "." or die "$!";
- @dsgwconfs = grep !/^\.\.?$/, readdir DSGW_CONTEXT;
- closedir DSGW_CONTEXT;
-
-
-# unescape the new and old suffixes
-if ($vars{'old_suffix'} && $vars{'new_suffix'}) {
- $escaped_suffix = $vars{'new_suffix'};
- $vars{'new_suffix'} =~ s/%(\w\w)/chr(hex($1))/eg;
- $unescaped_suffix = $vars{'new_suffix'};
-# print "Normal new suffix: $unescaped_suffix\n";
-# print "Escaped new suffix: $escaped_suffix\n";
- $unescaped_oldsuffix = $vars{'old_suffix'};
- $unescaped_oldsuffix =~ s/%(\w\w)/chr(hex($1))/eg;
-}
-
-#unescape the digmrs
-if ($vars{'new_dirmgr'}){
- $vars{'new_dirmgr'} =~ s/%(\w\w)/chr(hex($1))/eg;
-}
-
-if ($vars{'old_dirmgr'}){
- $vars{'old_dirmgr'} =~ s/%(\w\w)/chr(hex($1))/eg;
-}
-
-
- #
- $changed = "";
- foreach $file (@dsgwconfs){
-
-# print "working on $file\n";
-
- # If it's not a .conf file, skip it.
- if ( $file !~ m/.*?\.conf$/ ) {
-# print "skipping $file\n\n\n\n";
- next;
- }
-
- $relevant_conf = 0;
- $relevant_suffix = 0;
-
- # open the old file
- open(OLDFILE, "$file") or die "Cannot read $file. $!\n"; #
-
- # Need to test to see if this conf file has a baseurl that
- # matches the old host and port
- for ($line=<OLDFILE>; $line ; $line=<OLDFILE>) { #
-
- # If we find the matching baseurl, then set a flag and break out of the loop.
- if ($line =~ m:^baseurl\s*("){0,1}\s*ldap(s){0,1}\://$vars{'old_host'}(\:$vars{'old_port'}){0,1}/:) { #")
- # Also check for a matching suffix.
- if ($vars{'old_suffix'} && $vars{'new_suffix'}) {
- @baseurl = split("/", $line);
- $curr_suff = $baseurl[3];
-
- # Get rid of any double quotes.
- @baseurl = split("\"", $curr_suff);
- $curr_suff = $baseurl[0];
-
- $unescaped_currsuffix = $curr_suff;
- $unescaped_currsuffix =~ s/%(\w\w)/chr(hex($1))/eg;
-
-# print "curr Suffix: $curr_suff\n";
-# print "old Suffix: $vars{'old_suffix'}\n";
-# print "unescaped curr Suffix: $unescaped_currsuffix\n";
-# print "unescaped old Suffix: $unescaped_oldsuffix\n";
-
- if ($unescaped_currsuffix eq $unescaped_oldsuffix) {
- $relevant_suffix = 1;
-# print "suffix match for $file\n";
- }
-
- }
- # set a flag
- $relevant_conf = 1;
-# print "host:port match for $file\n";
- last;
- }
-
-
- }
-
- # If there was no match, then go on to the next file.
- if (! $relevant_conf) {
- close(OLDFILE);
-# print "no match for $file\n";
- next;
- }
-
- # Else, there is a match start over at the beginning of the file
- seek OLDFILE, 0, 0;
- if ($changed eq "") {
- $changed = $file;
- }
-
- # open the new file
- open(NEWFILE, ">"."tmpcp_"."$file"."1") or die "Cannot write $contextdir$PStmpcp_$file1. $!\n";
-
- # Go through each line, replacing the relevant information
- for ($line=<OLDFILE>; $line ; $line=<OLDFILE>) { #
-
- # If there is a new host
- if ($vars{'new_host'}) {
- $line =~ s:^baseurl\s*("){0,1}\s*ldap(s){0,1}\://.*?(\:\d*){0,1}/:baseurl\t$1ldap$2\://$vars{'new_host'}$3/:og; #")
-# print "new host for $file\n";
-
- }
-
- # a new port
- if ($vars{'new_port'}) {
- $line =~ s:^baseurl\s*("){0,1}\s*ldap(s){0,1}\://(.*?)(\:\d*){0,1}/:baseurl\t$1ldap$2\://$3\:$vars{'new_port'}/:og; #")
-# print "new port for $file\n";
- }
-
- # new dirmgr
- if ($vars{'new_dirmgr'} && $vars{'old_dirmgr'}) {
- $line =~ s:(?i)^dirmgr\s*("){0,1}$vars{'old_dirmgr'}("){0,1}:dirmgr\t"$vars{'new_dirmgr'}":g;
-# print "new dirmgr for $file\n";
- }
-
- # new suffix
- if ($relevant_suffix) {
- $line =~ s:(^baseurl\s*("){0,1}\s*ldap(s){0,1}\://.*?(\:\d*){0,1}/)((.*?("))|(.*?)):$1$escaped_suffix$7:og; #
- $line =~ s:^location-suffix.*:location-suffix\t"$unescaped_suffix":og;
-# print "new suffix for $file\n";
- }
-
-
- print NEWFILE $line;
-
- }
- #
- close(OLDFILE);
- close(NEWFILE);
-
- rename "tmpcp_" . "$file"."1", "$file";
-
- }
-rpt_err(0, $changed);
-
-
-sub parse_input
-{
- local( $line ) = @_;
- local($var, $value, $assign );
-
-
- foreach $assign ( split( /&/, $line ) ) {
- ( $var, $value ) = split( /=/, $assign );
- $value =~ s/\+/ /g;
- $value =~ s/ /%20/g;
-# $value =~ s/%(\w\w)/chr(hex($1))/eg;
- $var =~ s/\+/ /g;
-# $var =~ s/%(\w\w)/chr(hex($1))/eg;
-
-
- $vars{$var} = $value;
- }
-}
-
-
-sub handle_script_input
-{
-
- if ($opt_h) {
- @temp_array = split(":", $opt_h);
-
- $vars{'old_host'} = $temp_array[0];
- $vars{'old_port'} = $temp_array[1];
-
-# print "host: $vars{'old_port'}\n";
-# print "port: $vars{'old_host'}\n";
- }
-
- if ($opt_i) {
- @temp_array = split(":", $opt_i);
-
- $vars{'new_host'} = $temp_array[0];
- $vars{'new_port'} = $temp_array[1];
-
-# print " $vars{'new_port'}\n";
-# print " $vars{'new_host'}\n";
- }
- if ($opt_d) {
- $vars{'old_dirmgr'} = $opt_d;
- }
- if ($opt_e) {
- $vars{'new_dirmgr'} = $opt_e;
- }
- if ($opt_s) {
- $vars{'old_suffix'} = $opt_s;
- }
- if ($opt_t) {
- $vars{'new_suffix'} = $opt_t;
- }
- if ($opt_n) {
- $nshome = $opt_n;
- }
-
-}
-
-
-sub rpt_err
-{
- my $code = shift;
- my $err_string = shift;
-
- print "NMC_ErrInfo: " . "$err_string" . "\n";
- print "NMC_STATUS: " . "$code"."\n";
-
-}
-
-sub getopts {
- local($argumentative) = @_;
- local(@args,$_,$first,$rest);
- local($errs) = 0;
- local($[) = 0;
-
- @args = split( / */, $argumentative );
- while(@ARGV && ($_ = $ARGV[0]) =~ /^-(.)(.*)/) {
- ($first,$rest) = ($1,$2);
- $pos = index($argumentative,$first);
- if($pos >= $[) {
- if($args[$pos+1] eq ':') {
- shift(@ARGV);
- if($rest eq '') {
- ++$errs unless @ARGV;
- $rest = shift(@ARGV);
- }
- eval "\$opt_$first = \$rest;";
- }
- else {
- eval "\$opt_$first = 1";
- if($rest eq '') {
- shift(@ARGV);
- }
- else {
- $ARGV[0] = "-$rest";
- }
- }
- }
- else {
- print STDERR "Unknown option: $first\n";
- ++$errs;
- if($rest ne '') {
- $ARGV[0] = "-$rest";
- }
- else {
- shift(@ARGV);
- }
- }
- }
- $errs == 0;
-}
-
diff --git a/ldap/clients/Makefile b/ldap/clients/Makefile
deleted file mode 100644
index 142aba08..00000000
--- a/ldap/clients/Makefile
+++ /dev/null
@@ -1,65 +0,0 @@
-# Build Directory client apps
-#
-# BEGIN COPYRIGHT BLOCK
-# This Program is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; version 2 of the License.
-#
-# This Program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place, Suite 330, Boston, MA 02111-1307 USA.
-#
-# In addition, as a special exception, Red Hat, Inc. gives You the additional
-# right to link the code of this Program with code not covered under the GNU
-# General Public License ("Non-GPL Code") and to distribute linked combinations
-# including the two, subject to the limitations in this paragraph. Non-GPL Code
-# permitted under this exception must only link to the code of this Program
-# through those well defined interfaces identified in the file named EXCEPTION
-# found in the source code files (the "Approved Interfaces"). The files of
-# Non-GPL Code may instantiate templates or use macros or inline functions from
-# the Approved Interfaces without causing the resulting work to be covered by
-# the GNU General Public License. Only Red Hat, Inc. may make changes or
-# additions to the list of Approved Interfaces. You must obey the GNU General
-# Public License in all respects for all of the Program code and other code used
-# in conjunction with the Program except the Non-GPL Code covered by this
-# exception. If you modify this file, you may extend this exception to your
-# version of the file, but you are not obligated to do so. If you do not wish to
-# provide this exception without modification, you must delete this exception
-# statement from your version and license this file solely under the GPL without
-# exception.
-#
-#
-# Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
-# Copyright (C) 2005 Red Hat, Inc.
-# All rights reserved.
-# END COPYRIGHT BLOCK
-#
-# Name:
-# Platform: gmake
-# --------------------------------------------------------------------------
-override BUILD_MODULE=HTTP_ADMIN
-
-NOSTDCLEAN=true
-NO_BUILD_NUM=true
-
-BUILD_ROOT=../..
-
-include $(BUILD_ROOT)/nsconfig.mk
-include $(BUILD_ROOT)/ldap/javarules.mk
-
-all: _dsgw _dsmlgw
-
-_dsgw:
- cd dsgw; $(MAKE)
-
-_dsmlgw:
- cd dsmlgw; $(MAKE)
-
-clean:
- cd dsgw; $(MAKE) $(MFLAGS) clean
- cd dsmlgw; $(MAKE) clean
-
diff --git a/nsarch b/nsarch
deleted file mode 100755
index c9e5c935..00000000
--- a/nsarch
+++ /dev/null
@@ -1,861 +0,0 @@
-#! /bin/sh
-#
-# BEGIN COPYRIGHT BLOCK
-# This Program is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; version 2 of the License.
-#
-# This Program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place, Suite 330, Boston, MA 02111-1307 USA.
-#
-# In addition, as a special exception, Red Hat, Inc. gives You the additional
-# right to link the code of this Program with code not covered under the GNU
-# General Public License ("Non-GPL Code") and to distribute linked combinations
-# including the two, subject to the limitations in this paragraph. Non-GPL Code
-# permitted under this exception must only link to the code of this Program
-# through those well defined interfaces identified in the file named EXCEPTION
-# found in the source code files (the "Approved Interfaces"). The files of
-# Non-GPL Code may instantiate templates or use macros or inline functions from
-# the Approved Interfaces without causing the resulting work to be covered by
-# the GNU General Public License. Only Red Hat, Inc. may make changes or
-# additions to the list of Approved Interfaces. You must obey the GNU General
-# Public License in all respects for all of the Program code and other code used
-# in conjunction with the Program except the Non-GPL Code covered by this
-# exception. If you modify this file, you may extend this exception to your
-# version of the file, but you are not obligated to do so. If you do not wish to
-# provide this exception without modification, you must delete this exception
-# statement from your version and license this file solely under the GPL without
-# exception.
-#
-#
-# Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
-# Copyright (C) 2005 Red Hat, Inc.
-# All rights reserved.
-# END COPYRIGHT BLOCK
-#
-#
-# Name: nsarch
-#
-# Description: this file determines the system name and outputs the
-# platform information in a format used by build
-# scripts and utilities; this file is based on the GNU
-# "config.guess" utility; the GNU copyleft is provided
-# somewhere below...
-#
-# We need to provide the following definitions:
-#
-# Variable Description
-# -------- -----------
-# NS_NAME: one word, all upper case system name usually from uname -s that
-# can be used for Makefiles and #defines
-#
-# NS_RELEASE: release number of the OS; if there's a trademark name (like UnixWare),
-# then this is typically the release number of the marketing name
-# (like UnixWare 2.1) rather than the version of generic Unix it is
-# based on (like System V r4.2)
-# this number comes generally from uname -r, but on some systems
-# we need to use uname -v
-#
-# NS_PRETTY_NAME: one word, mixed case system name similar to NS_NAME, but useful
-# for scripts that output something for users to see
-#--------------------------------------------------------------------------
-# GNU's copyleft for "configure.guess"
-#
-# Attempt to guess a canonical system name.
-# Copyright (C) 1992, 93, 94, 95, 1996 Free Software Foundation, Inc.
-#
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Written by Per Bothner <bothner@cygnus.com>.
-# The master version of this file is at the FSF in /home/gd/gnu/lib.
-#
-# This script attempts to guess a canonical system name similar to
-# config.sub. If it succeeds, it prints the system name on stdout, and
-# exits with 0. Otherwise, it exits with 1.
-#
-# The plan is that this can be called by configure scripts if you
-# don't specify an explicit system type (host/target name).
-#
-# Only a few systems have been added to this list; please add others
-# (but try to keep the structure clean).
-#
-
-#--------------------------------------------------------------------------
-# shell functions
-output_format='standard'
-divider=''
-pretty=0
-
-usage(){
- echo "Usage: $0 [ [-full {-under | -dash | -none} {-pretty} ] | -gnu ]"
- echo
- echo " <no args> Default to output OS name only; suitable for use"
- echo " in makefiles and compiler defines"
- echo " -f, -full, --full) Full output includes OS name and release number"
- echo " -d, -dash, --dash) use with -f to specify a dash separator"
- echo " -u, -under, --under) use with -f to specify a underscore separator"
- echo " -n, -none, --none) use with -f to specify no separator"
- echo " -p, -pretty, --pretty) Print prettier mixed case version of OS name"
- echo " -g, -gnu, --gnu) GNU-style: <chip_arch>-<vendor>-<os_release>"
- echo " -h, -help, --help) Print this usage message"
- echo; echo
-}
-
-get_opt(){
- ARGS=$*
- cntr=0
- while [ $cntr -lt $# ]
- do
- case $1 in
- -h|-help|--help) usage
- exit 0;;
- -f|-full|--full) output_format="full";;
- -d|-dash|--dash) divider="dash";;
- -u|-under|--under) divider="underscore";;
- -n|-none|--none) divider="none";;
- -p|-pretty|--pretty) pretty=1;;
- -g|-gnu|--gnu) output_format="gnu";;
- *) echo "Error: unknown argument: $1"; echo
- usage
- exit 1;;
- esac
- shift
- done
-}
-
-ns_printf(){
- # handle the case where we didn't set NS_NAME
- if [ -z "${NS_NAME}" ]; then
- NS_NAME="${UNAME_SYSTEM}"
- fi
-
- # handle the case where we don't have a pretty name
- if [ -z "${NS_PRETTY_NAME}" ]; then
- NS_PRETTY_NAME="${NS_NAME}"
- fi
-
- # determine which output format to use
- case ${output_format} in
- 'standard')
- if [ $pretty -eq 1 ]; then
- echo ${NS_PRETTY_NAME}
- else
- echo ${NS_NAME}
- fi;;
- 'full')
- if [ $pretty -eq 1 ]; then
- case "$divider" in
- 'dash') echo ${NS_PRETTY_NAME} ${NS_RELEASE} | sed -e 's/ /-/';;
- 'underscore') echo ${NS_PRETTY_NAME} ${NS_RELEASE} | sed -e 's/ /_/';;
- 'none') echo ${NS_PRETTY_NAME} ${NS_RELEASE} | sed -e 's/ //';;
- *) echo ${NS_PRETTY_NAME} ${NS_RELEASE};;
- esac
- else
- # since we're outputing full, we don't need the redundant "4"
- # in the ${NS_NAME}
- if [ ${NS_NAME} = "SUNOS4" ]; then
- NS_NAME="SUNOS"
- fi
- case "$divider" in
- 'dash') echo ${NS_NAME} ${NS_RELEASE} | sed -e 's/ /-/';;
- 'underscore') echo ${NS_NAME} ${NS_RELEASE} | sed -e 's/ /_/';;
- 'none') echo ${NS_NAME} ${NS_RELEASE} | sed -e 's/ //';;
- *) echo ${NS_NAME} ${NS_RELEASE};;
- esac
- fi;;
- 'gnu') echo ${GNU_NAME};;
- esac
-}
-
-
-#--------------------------------------------------------------------------
-# main - get the arguments and start running
-get_opt $*
-
-#--------------------------------------------------------------------------
-# everything that follows is GNU's config.guess slightly modified locally
-
-# NT doesn't have /dev/null
-#UNAME_MACHINE=`(uname -m) 2> /dev/null` || UNAME_MACHINE=unknown
-#UNAME_RELEASE=`(uname -r) 2> /dev/null` || UNAME_RELEASE=unknown
-#UNAME_SYSTEM=`(uname -s) 2> /dev/null` || UNAME_SYSTEM=unknown
-#UNAME_VERSION=`(uname -v) 2> /dev/null` || UNAME_VERSION=unknown
-
-UNAME_MACHINE=`(uname -m)` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r)` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s)` || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v)` || UNAME_VERSION=unknown
-
-trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
- alpha:OSF1:*:*)
- # A Vn.n version is a released version.
- # A Tn.n version is a released field test version.
- # A Xn.n version is an unreleased experimental baselevel.
- # 1.2 uses "1.2" for uname -r.
- #echo alpha-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//'`
- GNU_NAME="alpha-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//'`"
- NS_NAME="${UNAME_SYSTEM}"
- NS_RELEASE="`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//'`"
- ns_printf
- exit 0 ;;
- 21064:Windows_NT:50:3)
- #echo alpha-dec-winnt3.5
- GNU_NAME="alpha-dec-winnt3.5"
- NS_NAME="WINNT"
- NS_RELEASE="${UNAME_RELEASE}"
- ns_printf
- exit 0 ;;
- Amiga*:UNIX_System_V:4.0:*)
- echo m68k-cbm-sysv4
- exit 0;;
- amiga:NetBSD:*:*)
- echo m68k-cbm-netbsd${UNAME_RELEASE}
- exit 0 ;;
- amiga:OpenBSD:*:*)
- echo m68k-cbm-openbsd${UNAME_RELEASE}
- exit 0 ;;
- arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
- echo arm-acorn-riscix${UNAME_RELEASE}
- exit 0;;
- Pyramid*:OSx*:*:*)
- if test "`(/bin/universe) 2>/dev/null`" = att ; then
- #echo pyramid-pyramid-sysv3
- GNU_NAME="pyramid-pyramid-sysv3"
- else
- #echo pyramid-pyramid-bsd
- GNU_NAME="pyramid-pyramid-bsd"
- fi
- ns_printf
- exit 0 ;;
- sun4*:SunOS:5.*:*)
- #echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- GNU_NAME="sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`"
- NS_NAME="SOLARIS"
- NS_PRETTY_NAME="Solaris"
- NS_RELEASE="`echo ${UNAME_RELEASE}|sed -e 's/[^.]*/2/'`"
- ns_printf
- exit 0 ;;
- i86pc:SunOS:5.*:*)
- #echo i386-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- GNU_NAME="i386-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`"
- NS_NAME="SOLARISx86"
- NS_PRETTY_NAME="Solaris-x86"
- NS_RELEASE="`echo ${UNAME_RELEASE}|sed -e 's/[^.]*/2/'`"
- ns_printf
- exit 0 ;;
- sun4*:SunOS:6*:*)
- # According to config.sub, this is the proper way to canonicalize
- # SunOS6. Hard to guess exactly what SunOS6 will be like, but
- # it's likely to be more like Solaris than SunOS4.
- #echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- GNU_NAME="sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`"
- ns_printf
- exit 0 ;;
- sun4*:SunOS:*:*)
- case "`/usr/bin/arch -k`" in
- Series*|S4*)
- UNAME_RELEASE=`uname -v`
- ;;
- esac
- # Japanese Language versions have a version number like `4.1.3-JL'.
- #echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
- GNU_NAME="sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`"
- NS_NAME="SUNOS4"
- NS_PRETTY_NAME="SunOS"
- NS_RELEASE="${UNAME_RELEASE}"
- ns_printf
- exit 0 ;;
- sun3*:SunOS:*:*)
- echo m68k-sun-sunos${UNAME_RELEASE}
- exit 0 ;;
- atari*:NetBSD:*:*)
- echo m68k-atari-netbsd${UNAME_RELEASE}
- exit 0 ;;
- atari*:OpenBSD:*:*)
- echo m68k-atari-openbsd${UNAME_RELEASE}
- exit 0 ;;
- sun3*:NetBSD:*:*)
- echo m68k-sun-netbsd${UNAME_RELEASE}
- exit 0 ;;
- sun3*:OpenBSD:*:*)
- echo m68k-sun-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mac68k:NetBSD:*:*)
- echo m68k-apple-netbsd${UNAME_RELEASE}
- exit 0 ;;
- mac68k:OpenBSD:*:*)
- echo m68k-apple-openbsd${UNAME_RELEASE}
- exit 0 ;;
- RISC*:ULTRIX:*:*)
- #echo mips-dec-ultrix${UNAME_RELEASE}
- GNU_NAME="mips-dec-ultrix${UNAME_RELEASE}"
- ns_printf
- exit 0 ;;
- VAX*:ULTRIX*:*:*)
- #echo vax-dec-ultrix${UNAME_RELEASE}
- GNU_NAME="vax-dec-ultrix${UNAME_RELEASE}"
- ns_printf
- exit 0 ;;
- mips:*:4*:UMIPS)
- echo mips-mips-riscos4sysv
- exit 0 ;;
- mips:*:5*:RISCos)
- echo mips-mips-riscos${UNAME_RELEASE}
- exit 0 ;;
- Night_Hawk:Power_UNIX:*:*)
- echo powerpc-harris-powerunix
- exit 0 ;;
- m88k:CX/UX:7*:*)
- echo m88k-harris-cxux7
- exit 0 ;;
- m88k:*:4*:R4*)
- echo m88k-motorola-sysv4
- exit 0 ;;
- m88k:*:3*:R3*)
- echo m88k-motorola-sysv3
- exit 0 ;;
- AViiON:dgux:*:*)
- # DG/UX returns AViiON for all architectures
- UNAME_PROCESSOR=`/usr/bin/uname -p`
- if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88100 ] ; then
- if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \
- -o ${TARGET_BINARY_INTERFACE}x = x ] ; then
- #echo m88k-dg-dgux${UNAME_RELEASE}
- GNU_NAME="m88k-dg-dgux${UNAME_RELEASE}"
- else
- #echo m88k-dg-dguxbcs${UNAME_RELEASE}
- GNU_NAME="m88k-dg-dguxbcs${UNAME_RELEASE}"
- fi
- else
- #echo i586-dg-dgux${UNAME_RELEASE}
- GNU_NAME="i586-dg-dgux${UNAME_RELEASE}"
- fi
- ns_printf
- exit 0 ;;
- M88*:DolphinOS:*:*) # DolphinOS (SVR3)
- echo m88k-dolphin-sysv3
- exit 0 ;;
- M88*:*:R3*:*)
- # Delta 88k system running SVR3
- echo m88k-motorola-sysv3
- exit 0 ;;
- XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
- echo m88k-tektronix-sysv3
- exit 0 ;;
- Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
- echo m68k-tektronix-bsd
- exit 0 ;;
- *:IRIX*:*:*)
- #echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
- GNU_NAME="mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`"
- NS_NAME="IRIX"
- NS_RELEASE="`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`"
- ns_printf
- exit 0 ;;
- ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
- echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
- exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX '
- i[34]86:AIX:*)
- echo i386-ibm-aix
- exit 0 ;;
- *:AIX:2:3)
- if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
- # commenting out this test program - unable to execute
- # cc on some machines...
- #sed 's/^ //' << EOF >dummy.c
- ##include <sys/systemcfg.h>
- #
- #main()
- # {
- # if (!__power_pc())
- # exit(1);
- # puts("powerpc-ibm-aix3.2.5");
- # exit(0);
- # }
-#EOF
- #${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
- #rm -f dummy.c dummy
- #echo rs6000-ibm-aix3.2.5
- GNU_NAME="rs6000-ibm-aix3.2.5"
- NS_RELEASE="3.2.5"
- elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
- #echo rs6000-ibm-aix3.2.4
- GNU_NAME="rs6000-ibm-aix3.2.4"
- NS_RELEASE="3.2.4"
- else
- #echo rs6000-ibm-aix3.2
- GNU_NAME="rs6000-ibm-aix3.2"
- NS_RELEASE="3.2"
- fi
- ns_printf
- exit 0 ;;
- *:AIX:*:4)
- if /usr/sbin/lsattr -EHl proc0 | grep POWER >/dev/null 2>&1; then
- IBM_ARCH=rs6000
- else
- IBM_ARCH=powerpc
- fi
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
- else
- IBM_REV=4.${UNAME_RELEASE}
- fi
- #echo ${IBM_ARCH}-ibm-aix${IBM_REV}
- GNU_NAME="${IBM_ARCH}-ibm-aix${IBM_REV}"
- NS_RELEASE="${IBM_REV}"
- ns_printf
- exit 0 ;;
- *:AIX:*:*)
- #echo rs6000-ibm-aix
- GNU_NAME="rs6000-ibm-aix"
- ns_printf
- exit 0 ;;
- ibmrt:4.4BSD:*|romp-ibm:BSD:*)
- echo romp-ibm-bsd4.4
- exit 0 ;;
- ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC NetBSD and
- echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
- exit 0 ;; # report: romp-ibm BSD 4.3
- *:BOSX:*:*)
- echo rs6000-bull-bosx
- exit 0 ;;
- DPX/2?00:B.O.S.:*:*)
- echo m68k-bull-sysv3
- exit 0 ;;
- 9000/[34]??:4.3bsd:1.*:*)
- echo m68k-hp-bsd
- exit 0 ;;
- hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
- echo m68k-hp-bsd4.4
- exit 0 ;;
- 9000/[3478]??:HP-UX:*:*)
- case "${UNAME_MACHINE}" in
- 9000/31? ) HP_ARCH=m68000 ;;
- 9000/[34]?? ) HP_ARCH=m68k ;;
- 9000/7?? | 9000/8?[679] ) HP_ARCH=hppa1.1 ;;
- 9000/8?? ) HP_ARCH=hppa1.0 ;;
- esac
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- #echo ${HP_ARCH}-hp-hpux${HPUX_REV}
- GNU_NAME="${HP_ARCH}-hp-hpux${HPUX_REV}"
- NS_NAME="HPUX"
- NS_PRETTY_NAME="HP-UX"
- NS_RELEASE="${HPUX_REV}"
- ns_printf
- exit 0 ;;
- ia64:HP-UX:*:*)
- HP_ARCH=hpia
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- GNU_NAME="${HP_ARCH}-hp-hpux${HPUX_REV}"
- NS_NAME="HPUX"
- NS_PRETTY_NAME="HP-UX"
- NS_RELEASE="${HPUX_REV}"
- ns_printf
- exit 0 ;;
- 3050*:HI-UX:*:*)
- sed 's/^ //' << EOF >dummy.c
- #include <unistd.h>
- int
- main ()
- {
- long cpu = sysconf (_SC_CPU_VERSION);
- /* The order matters, because CPU_IS_HP_MC68K erroneously returns
- true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
- results, however. */
- if (CPU_IS_PA_RISC (cpu))
- {
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
- case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
- default: puts ("hppa-hitachi-hiuxwe2"); break;
- }
- }
- else if (CPU_IS_HP_MC68K (cpu))
- puts ("m68k-hitachi-hiuxwe2");
- else puts ("unknown-hitachi-hiuxwe2");
- exit (0);
- }
-EOF
- ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
- rm -f dummy.c dummy
- echo unknown-hitachi-hiuxwe2
- exit 0 ;;
- 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
- echo hppa1.1-hp-bsd
- exit 0 ;;
- 9000/8??:4.3bsd:*:*)
- echo hppa1.0-hp-bsd
- exit 0 ;;
- hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
- echo hppa1.1-hp-osf
- exit 0 ;;
- hp8??:OSF1:*:*)
- echo hppa1.0-hp-osf
- exit 0 ;;
- parisc*:Lites*:*:*)
- echo hppa1.1-hp-lites
- exit 0 ;;
- C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
- echo c1-convex-bsd
- exit 0 ;;
- C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit 0 ;;
- C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
- echo c34-convex-bsd
- exit 0 ;;
- C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
- echo c38-convex-bsd
- exit 0 ;;
- C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
- echo c4-convex-bsd
- exit 0 ;;
- CRAY*X-MP:*:*:*)
- echo xmp-cray-unicos
- exit 0 ;;
- CRAY*Y-MP:*:*:*)
- echo ymp-cray-unicos${UNAME_RELEASE}
- exit 0 ;;
- CRAY*C90:*:*:*)
- echo c90-cray-unicos${UNAME_RELEASE}
- exit 0 ;;
- CRAY-2:*:*:*)
- echo cray2-cray-unicos
- exit 0 ;;
- hp3[0-9][05]:NetBSD:*:*)
- echo m68k-hp-netbsd${UNAME_RELEASE}
- exit 0 ;;
- hp3[0-9][05]:OpenBSD:*:*)
- echo m68k-hp-openbsd${UNAME_RELEASE}
- exit 0 ;;
- i[34]86:BSD/386:*:* | *:BSD/OS:*:*)
- #echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
- GNU_NAME="${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}"
- NS_NAME="BSDI"
- NS_PRETTY_NAME="BSDI"
- NS_RELEASE="${UNAME_RELEASE}"
- ns_printf
- exit 0 ;;
- *:FreeBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
- exit 0 ;;
- *:NetBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
- exit 0 ;;
- *:OpenBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
- exit 0 ;;
- i*:CYGWIN*:*)
- #echo i386-unknown-cygwin32
- GNU_NAME="i386-unknown-cygwin32"
- NS_NAME="WINNT"
- NS_PRETTY_NAME="WinNT"
- NS_RELEASE="${UNAME_RELEASE}"
- ns_printf
- exit 0 ;;
- p*:CYGWIN*:*)
- echo powerpcle-unknown-cygwin32
- exit 0 ;;
- prep*:SunOS:5.*:*)
- echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
- *:GNU:*:*)
- echo `echo ${UNAME_MACHINE}|sed -e 's,/.*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
- exit 0 ;;
- *:Linux:*:*)
- # The BFD linker knows what the default object file format is, so
- # first see if it will tell us.
- ld_help_string=`ld --help 2>&1`
- if echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: elf_i[345]86"; then
- #echo "${UNAME_MACHINE}-unknown-linux" ; exit 0
- GNU_NAME="${UNAME_MACHINE}-unknown-linux"
- NS_NAME="${UNAME_SYSTEM}"
- NS_RELEASE="${UNAME_RELEASE}"
- if echo "$NS_RELEASE" | grep >/dev/null 2>&1 "2.0."; then
- NS_RELEASE="2.0"
- fi
- ns_printf
- exit 0
- elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: elf_x86_64"; then
- #echo "${UNAME_MACHINE}-unknown-linux" ; exit 0
- GNU_NAME="${UNAME_MACHINE}-unknown-linux"
- NS_NAME="${UNAME_SYSTEM}"
- NS_RELEASE="${UNAME_RELEASE}"
- if echo "$NS_RELEASE" | grep >/dev/null 2>&1 "2.0."; then
- NS_RELEASE="2.0"
- fi
- ns_printf
- exit 0
- elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i[345]86linux"; then
- #echo "${UNAME_MACHINE}-unknown-linuxaout" ; exit 0
- GNU_NAME="${UNAME_MACHINE}-unknown-linuxaout"
- NS_NAME="${UNAME_SYSTEM}"
- NS_RELEASE="${UNAME_RELEASE}"
- ns_printf
- exit 0
- elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i[345]86coff"; then
- #echo "${UNAME_MACHINE}-unknown-linuxcoff" ; exit 0
- GNU_NAME="${UNAME_MACHINE}-unknown-linuxcoff"
- NS_NAME="${UNAME_SYSTEM}"
- NS_RELEASE="${UNAME_RELEASE}"
- ns_printf
- exit 0
- elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: m68kelf"; then
- #echo "${UNAME_MACHINE}-unknown-linux" ; exit 0
- GNU_NAME="${UNAME_MACHINE}-unknown-linux"
- NS_NAME="${UNAME_SYSTEM}"
- NS_RELEASE="${UNAME_RELEASE}"
- ns_printf
- exit 0
- elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: m68klinux"; then
- #echo "${UNAME_MACHINE}-unknown-linuxaout" ; exit 0
- GNU_NAME="${UNAME_MACHINE}-unknown-linuxaout"
- NS_NAME="${UNAME_SYSTEM}"
- NS_RELEASE="${UNAME_RELEASE}"
- ns_printf
- exit 0
- elif test "${UNAME_MACHINE}" = "alpha" ; then
- #echo alpha-unknown-linux ; exit 0
- GNU_NAME="alpha-unknown-linux"
- NS_NAME="${UNAME_SYSTEM}"
- NS_RELEASE="${UNAME_RELEASE}"
- ns_printf
- exit 0
- else
- # Either a pre-BFD a.out linker (linuxoldld) or one that does not give us
- # useful --help. Gcc wants to distinguish between linuxoldld and linuxaout.
- test ! -d /usr/lib/ldscripts/. \
- && echo "${UNAME_MACHINE}-unknown-linuxoldld" && exit 0
- # Determine whether the default compiler is a.out or elf
- cat >dummy.c <<EOF
-main(argc, argv)
-int argc;
-char *argv[];
-{
-#ifdef __ELF__
- printf ("%s-unknown-linux\n", argv[1]);
-#else
- printf ("%s-unknown-linuxaout\n", argv[1]);
-#endif
- return 0;
-}
-EOF
- ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0
- rm -f dummy.c dummy
- fi ;;
-# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions
-# are messed up and put the nodename in both sysname and nodename.
- i[34]86:DYNIX/ptx:4*:*)
- echo i386-sequent-sysv4
- exit 0 ;;
- i[34]86:*:4.*:* | i[34]86:SYSTEM_V:4.*:*)
- #if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
- #echo ${UNAME_MACHINE}-unixware-sysv${UNAME_RELEASE}
- if grep SCO /usr/include/sco_values.h >/dev/null 2>/dev/null; then
- #echo ${UNAME_MACHINE}-unknown-unixware${UNAME_VERSION}
- # check for UDK, which is like building on Gemini
- # assumes correct "cc" is first in PATH
- if cc -V 2>&1 | grep "CCS. 3.2" >/dev/null 2>/dev/null; then
- NS_NAME="UnixWare"
- NS_RELEASE="5"
- else
- NS_NAME="UNIXWARE"
- NS_RELEASE="${UNAME_VERSION}"
- fi
- GNU_NAME="${UNAME_MACHINE}-unknown-unixware${UNAME_VERSION}"
- NS_PRETTY_NAME="UnixWare"
- ns_printf
- else
- echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}
- fi
- exit 0 ;;
- i[34]86:UnixWare:5*:*)
- GNU_NAME="${UNAME_MACHINE}-unknown-unixware${UNAME_VERSION}"
- NS_NAME="UnixWare"
- NS_PRETTY_NAME="UnixWare"
- NS_RELEASE="${UNAME_VERSION}"
- ns_printf
- exit 0 ;;
- i[34]86:SCO_SV:3.2:*)
- if /bin/uname -X 2>/dev/null >/dev/null ; then
- UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
- (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
- (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
- && UNAME_MACHINE=i586
- GNU_NAME="${UNAME_MACHINE}-unknown-sco`echo $UNAME_REL|sed -e 's/.*v//`"
- NS_NAME="SCO"
- NS_PRETTY_NAME="SCO"
- NS_RELEASE="`echo $UNAME_REL|sed -e 's/.*v//`"
- ns_printf
- fi
- exit 0 ;;
- i[34]86:*:3.2:*)
- if test -f /usr/options/cb.name; then
- UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
- echo ${UNAME_MACHINE}-unknown-isc$UNAME_REL
- elif /bin/uname -X 2>/dev/null >/dev/null ; then
- UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
- (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
- (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
- && UNAME_MACHINE=i586
- #echo ${UNAME_MACHINE}-unknown-sco$UNAME_REL
- GNU_NAME="${UNAME_MACHINE}-unknown-sco${UNAME_REL}"
- NS_NAME="SCO"
- NS_PRETTY_NAME="SCO"
- NS_RELEASE="${UNAME_RELEASE}"
- ns_printf
- else
- echo ${UNAME_MACHINE}-unknown-sysv32
- fi
- exit 0 ;;
- Intel:Mach:3*:*)
- echo i386-unknown-mach3
- exit 0 ;;
- paragon:*:*:*)
- echo i860-intel-osf1
- exit 0 ;;
- i860:*:4.*:*) # i860-SVR4
- if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
- echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
- else # Add other i860-SVR4 vendors below as they are discovered.
- echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
- fi
- exit 0 ;;
- mini*:CTIX:SYS*5:*)
- # "miniframe"
- echo m68010-convergent-sysv
- exit 0 ;;
- M680[234]0:*:R3V[567]*:*)
- test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
- 3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0)
- uname -p 2>/dev/null | grep 86 >/dev/null \
- && echo i486-ncr-sysv4.3 && exit 0 ;;
- 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
- uname -p 2>/dev/null | grep 86 >/dev/null \
- && echo i486-ncr-sysv4 && exit 0 ;;
- 3[34]??/3[34]??:*:4.0:* | 3[34]??/3[34]??,*:*:4.0:*)
- #uname -p 2>/dev/null | grep Pentium >/dev/null \
- # && echo i586-ncr-sysv4 && exit 0 ;;
- uname -p 2>/dev/null | grep Pentium >/dev/null
- if [ "$?" -eq 0 ]; then
- GNU_NAME="i586-ncr-sysv${UNAME_RELEASE}"
- NS_NAME="NCR"
- NS_RELEASE="${UNAME_VERSION}"
- ns_printf
- else
- GNU_NAME="unknown-ncr-sysv${UNAME_RELEASE}"
- NS_NAME="NCR"
- NS_RELEASE="${UNAME_VERSION}"
- ns_printf
- fi
- exit 0 ;;
- m680[234]0:LynxOS:2.[23]*:*)
- echo m68k-lynx-lynxos${UNAME_RELEASE}
- exit 0 ;;
- mc68030:UNIX_System_V:4.*:*)
- echo m68k-atari-sysv4
- exit 0 ;;
- i[34]86:LynxOS:2.[23]*:*)
- echo i386-lynx-lynxos${UNAME_RELEASE}
- exit 0 ;;
- TSUNAMI:LynxOS:2.[23]*:*)
- echo sparc-lynx-lynxos${UNAME_RELEASE}
- exit 0 ;;
- rs6000:LynxOS:2.[23]*:*)
- echo rs6000-lynx-lynxos${UNAME_RELEASE}
- exit 0 ;;
- RM*:SINIX-*:*:*)
- #echo mips-sni-sysv4
- GNU_NAME="mips-sni-sysv4"
- NS_NAME="ReliantUNIX"
- NS_PRETTY_NAME="Sinix"
- NS_RELEASE="${UNAME_RELEASE}"
- ns_printf
- exit 0 ;;
- *:SINIX-*:*:*)
- if uname -p 2>/dev/null >/dev/null ; then
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
- #echo ${UNAME_MACHINE}-sni-sysv4
- GNU_NAME="${UNAME_MACHINE}-sni-sysv4"
- else
- #echo ns32k-sni-sysv
- GNU_NAME="ns32k-sni-sysv"
- fi
- ns_printf
- exit 0 ;;
- mc68*:A/UX:*:*)
- echo m68k-apple-aux${UNAME_RELEASE}
- exit 0 ;;
- R?000:*System_V*:*:*)
- if [ -d /usr/nec ]; then
- #echo mips-nec-sysv${UNAME_RELEASE}
- GNU_NAME="mips-nec-sysv${UNAME_RELEASE}"
- NS_NAME="NEC"
- NS_RELEASE="${UNAME_RELEASE}"
- ns_printf
- else
- echo mips-unknown-sysv${UNAME_RELEASE}
- fi
- exit 0 ;;
- *:NEWS-OS:*:*)
- GNU_NAME="mips-sony-newsos"
- NS_NAME="SONY"
- NS_RELEASE="${UNAME_RELEASE}"
- exit 0 ;;
- *86:Windows_NT:4*:*)
- GNU_NAME="x86-unknown-winnt4"
- NS_NAME="WINNT"
- NS_PRETTY_NAME="WinNT"
- NS_RELEASE="${UNAME_RELEASE}"
- ns_printf
- exit 0 ;;
- *:WINNT:4*:*)
- GNU_NAME="x86-unknown-winnt4"
- NS_NAME="WINNT"
- NS_PRETTY_NAME="WinNT"
- NS_RELEASE="${UNAME_RELEASE}"
- ns_printf
- exit 0 ;;
- *:WINNT:*:*)
- GNU_NAME="x86-unknown-winnt"
- NS_NAME="WINNT"
- NS_PRETTY_NAME="WinNT"
- NS_RELEASE="${UNAME_RELEASE}"
- ns_printf
- exit 0 ;;
-esac
-
-echo '(Unable to guess system type)' 1>&2
-
-exit 1
diff --git a/nsarch.bat b/nsarch.bat
deleted file mode 100644
index 2fc3704f..00000000
--- a/nsarch.bat
+++ /dev/null
@@ -1,40 +0,0 @@
-@rem //
-@rem // BEGIN COPYRIGHT BLOCK
-@rem // This Program is free software; you can redistribute it and/or modify it under
-@rem // the terms of the GNU General Public License as published by the Free Software
-@rem // Foundation; version 2 of the License.
-@rem //
-@rem // This Program is distributed in the hope that it will be useful, but WITHOUT
-@rem // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-@rem // FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-@rem //
-@rem // You should have received a copy of the GNU General Public License along with
-@rem // this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
-@rem // Place, Suite 330, Boston, MA 02111-1307 USA.
-@rem //
-@rem // In addition, as a special exception, Red Hat, Inc. gives You the additional
-@rem // right to link the code of this Program with code not covered under the GNU
-@rem // General Public License ("Non-GPL Code") and to distribute linked combinations
-@rem // including the two, subject to the limitations in this paragraph. Non-GPL Code
-@rem // permitted under this exception must only link to the code of this Program
-@rem // through those well defined interfaces identified in the file named EXCEPTION
-@rem // found in the source code files (the "Approved Interfaces"). The files of
-@rem // Non-GPL Code may instantiate templates or use macros or inline functions from
-@rem // the Approved Interfaces without causing the resulting work to be covered by
-@rem // the GNU General Public License. Only Red Hat, Inc. may make changes or
-@rem // additions to the list of Approved Interfaces. You must obey the GNU General
-@rem // Public License in all respects for all of the Program code and other code used
-@rem // in conjunction with the Program except the Non-GPL Code covered by this
-@rem // exception. If you modify this file, you may extend this exception to your
-@rem // version of the file, but you are not obligated to do so. If you do not wish to
-@rem // provide this exception without modification, you must delete this exception
-@rem // statement from your version and license this file solely under the GPL without
-@rem // exception.
-@rem //
-@rem //
-@rem // Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
-@rem // Copyright (C) 2005 Red Hat, Inc.
-@rem // All rights reserved.
-@rem // END COPYRIGHT BLOCK
-@rem //
-sh nsarch
diff --git a/ntversion.pl b/ntversion.pl
deleted file mode 100644
index 63505283..00000000
--- a/ntversion.pl
+++ /dev/null
@@ -1,66 +0,0 @@
-#
-# BEGIN COPYRIGHT BLOCK
-# This Program is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; version 2 of the License.
-#
-# This Program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place, Suite 330, Boston, MA 02111-1307 USA.
-#
-# In addition, as a special exception, Red Hat, Inc. gives You the additional
-# right to link the code of this Program with code not covered under the GNU
-# General Public License ("Non-GPL Code") and to distribute linked combinations
-# including the two, subject to the limitations in this paragraph. Non-GPL Code
-# permitted under this exception must only link to the code of this Program
-# through those well defined interfaces identified in the file named EXCEPTION
-# found in the source code files (the "Approved Interfaces"). The files of
-# Non-GPL Code may instantiate templates or use macros or inline functions from
-# the Approved Interfaces without causing the resulting work to be covered by
-# the GNU General Public License. Only Red Hat, Inc. may make changes or
-# additions to the list of Approved Interfaces. You must obey the GNU General
-# Public License in all respects for all of the Program code and other code used
-# in conjunction with the Program except the Non-GPL Code covered by this
-# exception. If you modify this file, you may extend this exception to your
-# version of the file, but you are not obligated to do so. If you do not wish to
-# provide this exception without modification, you must delete this exception
-# statement from your version and license this file solely under the GPL without
-# exception.
-#
-#
-# Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
-# Copyright (C) 2005 Red Hat, Inc.
-# All rights reserved.
-# END COPYRIGHT BLOCK
-#
-@date = localtime();
-$FILEVERSION = &doubleDigit( $date[5] ) . ',' . # year
- &doubleDigit( $date[4] + 1 ) . ',' . # month
- &doubleDigit( $date[3] ) . ',' . # date
- &doubleDigit( $date[2] );
-$FILEVERSIONTEXT = '"' . &doubleDigit( $date[4] ) . '/' . # month
- &doubleDigit( $date[3] ) . '/' . # date
- &doubleDigit( $date[5] ) . ' ' . # year
- &doubleDigit( $date[2] ) . ':' . # hour
- &doubleDigit( $date[1] ) . '"'; # minute
-$MAJORVERSION=$ARGV[1];
-$MINORVERSION=$ARGV[2];
-
-open(VERSIONFILE, ">$ARGV[0]/include/nt/ntversion.h");
-print VERSIONFILE "// This file is automatically generated.\r\n";
-print VERSIONFILE "// Please do not edit this file manually.\r\n";
-print VERSIONFILE "// It contains the version number of this build.\r\n";
-print VERSIONFILE "\r\n";
-print VERSIONFILE "#define VERSION $FILEVERSION\r\n";
-print VERSIONFILE "#define PRODUCT $MAJORVERSION,0,0,$MINORVERSION\r\n";
-print VERSIONFILE "#define VERSIONTEXT $FILEVERSIONTEXT\r\n";
-print VERSIONFILE "#define PRODUCTTEXT \"$MAJORVERSION.$MINORVERSION\"\r\n";
-close( VERSIONFILE );
-
-sub doubleDigit {
- $_[0] > 9 ? $_[0] : '0' . $_[0];
-}
diff --git a/pumpkin.pl b/pumpkin.pl
deleted file mode 100644
index dd6346c9..00000000
--- a/pumpkin.pl
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/usr/local/bin/perl
-#
-# BEGIN COPYRIGHT BLOCK
-# This Program is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; version 2 of the License.
-#
-# This Program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place, Suite 330, Boston, MA 02111-1307 USA.
-#
-# In addition, as a special exception, Red Hat, Inc. gives You the additional
-# right to link the code of this Program with code not covered under the GNU
-# General Public License ("Non-GPL Code") and to distribute linked combinations
-# including the two, subject to the limitations in this paragraph. Non-GPL Code
-# permitted under this exception must only link to the code of this Program
-# through those well defined interfaces identified in the file named EXCEPTION
-# found in the source code files (the "Approved Interfaces"). The files of
-# Non-GPL Code may instantiate templates or use macros or inline functions from
-# the Approved Interfaces without causing the resulting work to be covered by
-# the GNU General Public License. Only Red Hat, Inc. may make changes or
-# additions to the list of Approved Interfaces. You must obey the GNU General
-# Public License in all respects for all of the Program code and other code used
-# in conjunction with the Program except the Non-GPL Code covered by this
-# exception. If you modify this file, you may extend this exception to your
-# version of the file, but you are not obligated to do so. If you do not wish to
-# provide this exception without modification, you must delete this exception
-# statement from your version and license this file solely under the GPL without
-# exception.
-#
-#
-# Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
-# Copyright (C) 2005 Red Hat, Inc.
-# All rights reserved.
-# END COPYRIGHT BLOCK
-
-# NT doesn't reliably do perl -e, so we have to do this.
-die "Usage: $0 <days> <file>\n" unless $#ARGV == 1;
-
-open( PUMPKIN, ">$ARGV[1]" ) || die "Can't create $ARGV[1]: $!\n";
-print PUMPKIN time + $ARGV[0] * 24 * 60 * 60;
-close( PUMPKIN );
diff --git a/wrappers/ds_newinst.in b/wrappers/ds_newinst.in
deleted file mode 100755
index 12e2839b..00000000
--- a/wrappers/ds_newinst.in
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/bin/sh
-
-###############################################################################
-## (1) Specify variables used by this script. ##
-###############################################################################
-
-LIB_DIR=@serverdir@:@nss_libdir@:@nspr_libdir@:@ldapsdk_libdir@:@sasl_libdir@:@libdir@
-BIN_DIR=@bindir@:/usr/bin:/bin
-COMMAND=ds_newinst-bin
-
-
-###############################################################################
-## (2) Set the LD_LIBRARY_PATH environment variable to determine the ##
-## search order this command wrapper uses to find shared libraries. ##
-###############################################################################
-
-LD_LIBRARY_PATH=${LIB_DIR}
-export LD_LIBRARY_PATH
-
-
-###############################################################################
-## (3) Set the PATH environment variable to determine the search ##
-## order this command wrapper uses to find binary executables. ##
-## ##
-## NOTE: Since the wrappers themselves are ALWAYS located in ##
-## "/usr/bin", this directory will always be excluded ##
-## from the search path. Since "/bin" is nothing more ##
-## than a symbolic link to "/usr/bin" on Solaris, this ##
-## directory will also always be excluded from the search ##
-## path on this platform. ##
-###############################################################################
-
-PATH=${BIN_DIR}
-export PATH
-
-
-###############################################################################
-## (4) Execute the binary executable specified by this command wrapper ##
-## based upon the preset LD_LIBRARY_PATH and PATH environment variables.##
-###############################################################################
-
-ORIGINAL_IFS=${IFS}
-IFS=:
-
-for dir in ${PATH}
-do
- if [ -x ${dir}/${COMMAND} ]
- then
- IFS=${ORIGINAL_IFS}
- ${dir}/${COMMAND} "$@"
- exit $?
- fi
-done
-
-echo "Unable to find \"${COMMAND}\" in \"${PATH}\"!"
-
-exit 255
-