summaryrefslogtreecommitdiffstats
path: root/ldap/admin
diff options
context:
space:
mode:
authorRich Megginson <rmeggins@redhat.com>2007-06-07 21:23:54 +0000
committerRich Megginson <rmeggins@redhat.com>2007-06-07 21:23:54 +0000
commiteba4de83e9a81055b1eb83187fe7f1bcda728e0e (patch)
treed0268d7573da8922b73b135eb47fbf77197025ec /ldap/admin
parentbe1c466f5e186b333269dab6bf29ff659ec8d74d (diff)
downloadds-eba4de83e9a81055b1eb83187fe7f1bcda728e0e.tar.gz
ds-eba4de83e9a81055b1eb83187fe7f1bcda728e0e.tar.xz
ds-eba4de83e9a81055b1eb83187fe7f1bcda728e0e.zip
Resolves: bug 239765
Description: Allow mimimum schema in ds_newinst.pl Fix Description: Fixed by abartlet. Add a new configuration param to create_instance - install_full_schema. By default this is 1, meaning the traditional behavior of installing all of the schema. If set to 0, this will only install the 00core.ldif schema file. This also required enhancements to ds_newinst.pl as well as a bug fix to allow passing in a 0 value. Reviewed by: nhosoi, rmeggins
Diffstat (limited to 'ldap/admin')
-rw-r--r--ldap/admin/src/create_instance.c33
-rw-r--r--ldap/admin/src/create_instance.h1
-rw-r--r--ldap/admin/src/ds_newinst.pl.in19
3 files changed, 43 insertions, 10 deletions
diff --git a/ldap/admin/src/create_instance.c b/ldap/admin/src/create_instance.c
index 032ef87a..9a97f2bb 100644
--- a/ldap/admin/src/create_instance.c
+++ b/ldap/admin/src/create_instance.c
@@ -300,6 +300,7 @@ void set_defaults(char *sroot, char *hn, server_config_s *conf)
conf->upgradingServer = 0;
conf->start_server = "1";
+ conf->install_full_schema = 1;
conf->admin_domain = NULL;
conf->config_ldap_url = NULL;
conf->user_ldap_url = NULL;
@@ -3530,14 +3531,27 @@ char *ds_gen_confs(char *sroot, server_config_s *cf, char *cs_path)
fclose(srcf);
fclose(f);
- /*
- * <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;
-
+ 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);
@@ -4490,6 +4504,9 @@ int parse_form(server_config_s *cf)
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);
diff --git a/ldap/admin/src/create_instance.h b/ldap/admin/src/create_instance.h
index d3babf2a..32a4a78c 100644
--- a/ldap/admin/src/create_instance.h
+++ b/ldap/admin/src/create_instance.h
@@ -185,6 +185,7 @@ typedef struct {
#if defined(ENABLE_LDAPI)
char *ldapifilepath;
#endif
+ int install_full_schema;
} server_config_s;
diff --git a/ldap/admin/src/ds_newinst.pl.in b/ldap/admin/src/ds_newinst.pl.in
index b037a50e..bc05b5e1 100644
--- a/ldap/admin/src/ds_newinst.pl.in
+++ b/ldap/admin/src/ds_newinst.pl.in
@@ -54,7 +54,7 @@ sub getCgiContentAndLength {
my $content = "";
my $firsttime = 1;
while (my ($kk, $vv) = each %{$args}) {
- next if (!$kk || !$vv);
+ next if (!defined($kk) || !defined($vv));
if ($firsttime) {
$firsttime = 0;
} else {
@@ -277,14 +277,29 @@ if ($table{General}->{PackageName}) {
$cgiargs{install_ldif_file} = $table{slapd}->{InstallLdifFile};
# if for some reason you do not want the server started after instance creation
-# the following line can be commented out - NOTE that if you are creating the
+# 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 $sroot = $cgiargs{sroot};
my $prog = "@bindir@/ds_newinst";