Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 158487 Details for
Bug 246683
Reimplement ds_create without setuputil code
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
adminserver diffs
cvsdiffs (text/plain), 33.28 KB, created by
Rich Megginson
on 2007-07-03 22:51:01 UTC
(
hide
)
Description:
adminserver diffs
Filename:
MIME Type:
Creator:
Rich Megginson
Created:
2007-07-03 22:51:01 UTC
Size:
33.28 KB
patch
obsolete
>Index: adminserver/Makefile.am >=================================================================== >RCS file: /cvs/dirsec/adminserver/Makefile.am,v >retrieving revision 1.21 >diff -u -8 -r1.21 Makefile.am >--- adminserver/Makefile.am 29 Jun 2007 21:29:06 -0000 1.21 >+++ adminserver/Makefile.am 3 Jul 2007 22:46:22 -0000 >@@ -156,17 +156,17 @@ > > cgibin_PROGRAMS = admpw security ugdsconfig ReadLog start_config_ds \ > config statpingserv viewdata dsconfig monreplication restartsrv \ > statusping viewlog htmladmin sec-activate stopsrv download help \ > ds_start ds_restart ds_shutdown ds_ldif2db ds_db2ldif ds_bak2db \ > ds_db2bak ds_listdb ds_rmdb ds_remove ds_snmpctrl ds_vlvindex ds_addindex > > bin_SCRIPTS = admserv/newinst/src/register_server.pl >-cgibin_SCRIPTS = admserv/cgi-src40/Cgi.pm >+cgibin_SCRIPTS = admserv/cgi-src40/ds_create > nodist_cmdbin_SCRIPTS = admserv/cfgstuff/start-ds-admin admserv/cfgstuff/stop-ds-admin admserv/cfgstuff/restart-ds-admin > > cmdbin_SCRIPTS = admserv/newinst/src/setup-ds-admin.pl \ > admserv/newinst/src/migrate-ds-admin.pl > > perl_SCRIPTS = admserv/newinst/src/ASDialogs.pm \ > admserv/newinst/src/AdminUtil.pm \ > admserv/newinst/src/AdminServer.pm \ >@@ -368,17 +368,18 @@ > admserv/cgi-src40/sec-activate_root.res \ > admserv/cgi-src40/viewlog_root.res > > MOSTLYCLEANFILES += $(RESOURCE_BUNDLES_ROOT) > # ICU resource file installation is handled specially > nodist_property_DATA = $(RESOURCE_BUNDLES_ROOT) > # regular property files go here > property_DATA = admserv/newinst/src/setup-ds-admin.res \ >- admserv/newinst/src/migrate-ds-admin.res >+ admserv/newinst/src/migrate-ds-admin.res \ >+ admserv/cgi-src40/ds_create.res > > # French resource bundles (for the French localization in the future) > #RESOURCE_BUNDLES_FR = foo_fr.res > > # German resource bundles (for the German localization in the future) > #RESOURCE_BUNDLES_DE = foo_de.res > > %_root.res : %.properties >Index: adminserver/admserv/newinst/src/AdminMigration.pm.in >=================================================================== >RCS file: /cvs/dirsec/adminserver/admserv/newinst/src/AdminMigration.pm.in,v >retrieving revision 1.1 >diff -u -8 -r1.1 AdminMigration.pm.in >--- adminserver/admserv/newinst/src/AdminMigration.pm.in 29 Jun 2007 21:29:05 -0000 1.1 >+++ adminserver/admserv/newinst/src/AdminMigration.pm.in 3 Jul 2007 22:46:22 -0000 >@@ -155,27 +155,27 @@ > > return 1; > } > > > # This is how we extract the sie and isie as the as entries are > # being added > sub migratecb { >- my ($context, $entry) = @_; >+ my ($context, $entry, $errs) = @_; > > my @arycontext = ($context); > # always replace the tasks and commands with the new ones > my $dn = $entry->getDN(); > if (($entry->getDN() =~ /^cn=Tasks/i) or > ($entry->getDN() =~ /^cn=Commands/i)) { > push @arycontext, 1; # means to delete any existing entries first > } > >- my $rc = check_and_add_entry(\@arycontext, $entry); >+ my $rc = check_and_add_entry(\@arycontext, $entry, $errs); > > return $rc; > } > > # The config DS should have already been migrated, including the old > # admin server data. We need to update that information. Some of the > # fields no longer apply (userPassword, configuration.encryption.nsCertFile, > # configuration.encryption.nsKeyFile, serverRoot) >@@ -202,31 +202,39 @@ > "@ldifdir@/21astasks.ldif.tmpl", > "@ldifdir@/22ascommands.ldif.tmpl" > ); > my $setupinf = new Inf("@infdir@/setup.inf"); > my $admininf = new Inf("@infdir@/admin.inf"); > > my $mapper = new Inf("@infdir@/asmigrate.map"); > >- $mapper = process_maptbl($mapper, ($inf, $admininf, $setupinf)); >+ $mapper = process_maptbl($mapper, \@errs, $inf, $admininf, $setupinf); > if (!$mapper) { > $conn->close(); >+ $mig->msg(@errs); > $mig->msg($FATAL, 'error_creating_asmigration_maptbl'); > return 0; > } > > # update isie and sie >- getMappedEntries($mapper, \@ldiffiles, \&migratecb, $conn); >+ getMappedEntries($mapper, \@ldiffiles, \@errs, \&migratecb, $conn); >+ if (@errs) { >+ $conn->close(); >+ $mig->msg(@errs); >+ return 0; >+ } >+ > my $localconf = "$configdir/local.conf"; > my $isnew; > if (! -f $localconf) { > $isnew = 1; > } > if (!open(LOCALCONF, ">$localconf")) { >+ $conn->close(); > $mig->msg($FATAL, 'error_updating_localconf', $localconf, $!); > return 0; > } > # now get the entries and write them to local.conf > my $entry = $conn->search($inf->{admin}->{sie}, "sub", "(objectclass=*)"); > while ($entry) { > updateLocalConf($entry, $inf->{admin}->{sie}, \*LOCALCONF); > $entry = $conn->nextEntry(); >Index: adminserver/admserv/newinst/src/AdminServer.pm.in >=================================================================== >RCS file: /cvs/dirsec/adminserver/admserv/newinst/src/AdminServer.pm.in,v >retrieving revision 1.4 >diff -u -8 -r1.4 AdminServer.pm.in >--- adminserver/admserv/newinst/src/AdminServer.pm.in 29 Jun 2007 21:29:05 -0000 1.4 >+++ adminserver/admserv/newinst/src/AdminServer.pm.in 3 Jul 2007 22:46:22 -0000 >@@ -34,22 +34,22 @@ > # Copyright (C) 2007 Red Hat, Inc. > # All rights reserved. > # END COPYRIGHT BLOCK > # > > package AdminServer; > require Exporter; > @ISA = qw(Exporter); >-@EXPORT = qw(createAdminServer reconfigAdminServer registerDSWithConfigDS >+@EXPORT = qw(createAdminServer reconfigAdminServer > createASFilesAndDirs setFileOwnerPerms updateHttpConfFiles >- startAdminServer registerManyDSWithConfigDS); >-@EXPORT_OK = qw(createAdminServer reconfigAdminServer registerDSWithConfigDS >+ startAdminServer); >+@EXPORT_OK = qw(createAdminServer reconfigAdminServer > createASFilesAndDirs setFileOwnerPerms updateHttpConfFiles >- startAdminServer registerManyDSWithConfigDS); >+ startAdminServer); > > use File::Path; > # tempfiles > use File::Temp qw(tempfile tempdir); > > # load perldap > use Mozilla::LDAP::Conn; > use Mozilla::LDAP::Utils qw(normalizeDN); >@@ -201,34 +201,35 @@ > } > > return 1; > } > > # This is how we extract the sie and isie as the as entries are > # being added > sub registercb { >- my ($context, $entry) = @_; >+ my ($context, $entry, $errs) = @_; > >- my $rc = check_and_add_entry([$context->{conn}], $entry); >+ my $rc = check_and_add_entry([$context->{conn}], $entry, $errs); > my $setup = $context->{setup}; > if ($rc) { > if ($entry->hasValue('objectclass', 'nsApplication', 1)) { > $context->{isie} = $entry->getDN(); > } elsif ($entry->hasValue('objectclass', 'nsAdminServer', 1)) { > $context->{sie} = $entry->getDN(); > } > > if ($context->{sie}) { > $rc = updateLocalConf($entry, $context->{sie}, $context->{localfh}); > if (!$rc) { > $setup->msg($FATAL, 'error_updating_localconf_entry', $entry->getDN()); > } > } > } else { >+ $setup->msg(@{$errs}); > $setup->msg($FATAL, 'error_adding_adminserver_config_entry', $entry->getDN()); > } > > return $rc; > } > > sub registerASWithConfigDS { > my $setup = shift; >@@ -253,35 +254,36 @@ > "@ldifdir@/21astasks.ldif.tmpl", > "@ldifdir@/22ascommands.ldif.tmpl" > ); > my $setupinf = new Inf("@infdir@/setup.inf"); > my $admininf = new Inf("@infdir@/admin.inf"); > > my $mapper = new Inf("@infdir@/adminserver.map"); > >- $mapper = process_maptbl($mapper, ($inf, $admininf, $setupinf)); >- if (!$mapper) { >+ $mapper = process_maptbl($mapper, \@errs, $inf, $admininf, $setupinf); >+ if (!$mapper or @errs) { > $conn->close(); >+ $setup->msg(@errs); > $setup->msg($FATAL, 'error_creating_adminserver_maptbl'); > return 0; > } > > # context will get filled in with isie and sie in registercb > my $localconf = "$configdir/local.conf"; > my $isnew; > if (! -f $localconf) { > $isnew = 1; > } > if (!open(LOCALCONF, ">$localconf")) { > $setup->msg($FATAL, 'error_updating_localconf', $localconf, $!); > return 0; > } > my $context = {conn => $conn, localfh => \*LOCALCONF, setup => $setup}; >- getMappedEntries($mapper, \@ldiffiles, \®istercb, $context); >+ getMappedEntries($mapper, \@ldiffiles, \@errs, \®istercb, $context); > close(LOCALCONF); > > if ($isnew) { > my $admConf = getAdmConf($configdir); > my $uid = getpwnam $admConf->{sysuser}; > chmod 0600, "$localconf"; > chown $uid, -1, "$localconf"; > } >@@ -293,17 +295,17 @@ > userdn => $conn->{adminbinddn}}, > $configdir)) { > $setup->msg($FATAL, 'error_updating_admconf', $!); > return 0; > } > } > > $conn->close(); >- return 1; >+ return @errs ? 0 : 1; > } > > # update other config files - these are the fields which users typically want to > # change during an install or an upgrade, that also must be synced to the Apache > # style config files - we use the config CGI in command line mode because it > # already has all of the logic to update the files correctly > sub updateHttpConfFiles { > my $serverAddress = shift; >@@ -446,103 +448,8 @@ > } > return 1; > } > > sub reconfigAdminServer { > my $setup = shift; > return createAdminServer($setup, 1); > } >- >-sub registerDSWithConfigDS { >- my $setup = shift; >- my $inf = shift || $setup->{inf}; >- my $configdir = shift || "$setup->{configdir}/admin-serv"; >- my @errs; >- >- $setup->msg('registering_dirserver'); >- # open a connection to the configuration directory server >- my $conn; >- if (ref($configdir)) { >- $conn = $configdir; >- } else { >- $conn = getConfigDSConn($inf->{General}->{ConfigDirectoryLdapURL}, >- $inf->{General}->{ConfigDirectoryAdminID}, >- $inf->{General}->{ConfigDirectoryAdminPwd}, >- $configdir, \@errs); >- } >- >- if (@errs) { >- $setup->msg($FATAL, @errs); >- return 0; >- } >- >- # add the Admin Server configuration entries >- my @ldiffiles = ("@ldifdir@/10dsdata.ldif.tmpl", >- "@ldifdir@/11dstasks.ldif.tmpl" >- ); >- my $setupinf = new Inf("@infdir@/setup.inf"); >- my $slapdinf = new Inf("@infdir@/slapd.inf"); >- >- my $mapper = new Inf("@infdir@/dirserver.map"); >- >- if (!$inf->{General}->{ConfigDirectoryLdapURL}) { >- $inf->{General}->{ConfigDirectoryLdapURL} = >- $setup->{inf}->{General}->{ConfigDirectoryLdapURL}; >- } >- >- $mapper = process_maptbl($mapper, ($inf, $slapdinf, $setupinf)); >- if (!$mapper) { >- $conn->close(); >- $setup->msg($FATAL, 'error_creating_dirserver_maptbl'); >- return 0; >- } >- >- my $context = [$conn]; >- getMappedEntries($mapper, \@ldiffiles, \&check_and_add_entry, $context); >- >- if (!ref($configdir)) { >- $conn->close(); >- } >- >- return 1; >-} >- >-# this takes a list of DS instances and registers all of them >-# with the config DS >-sub registerManyDSWithConfigDS { >- my $setup = shift; >- my $configdir = shift; >- my @instances = @_; >- my @errs; >- my $inf = $setup->{inf}; >- >- if (!@instances) { >- return 1; >- } >- >- $setup->msg('registering_dirserver_instances'); >- # open a connection to the configuration directory server >- my $conn = getConfigDSConn($inf->{General}->{ConfigDirectoryLdapURL}, >- $inf->{General}->{ConfigDirectoryAdminID}, >- $inf->{General}->{ConfigDirectoryAdminPwd}, >- $configdir, \@errs); >- >- if (@errs) { >- $setup->msg($FATAL, @errs); >- return 0; >- } >- >- my $admConf = getAdmConf($configdir); >- >- for (@instances) { >- my $instinf = createInfFromConfig("$setup->{configdir}/$_", $_); >- $instinf->{General}->{AdminDomain} = $admConf->{AdminDomain}; >- unlink($instinf->{filename}); >- if (!registerDSWithConfigDS($setup, $instinf, $conn)) { >- return 0; >- } >- } >- >- $conn->close(); >- >- return 0; >-} >Index: adminserver/admserv/newinst/src/AdminUtil.pm.in >=================================================================== >RCS file: /cvs/dirsec/adminserver/admserv/newinst/src/AdminUtil.pm.in,v >retrieving revision 1.7 >diff -u -8 -r1.7 AdminUtil.pm.in >--- adminserver/admserv/newinst/src/AdminUtil.pm.in 29 Jun 2007 21:29:05 -0000 1.7 >+++ adminserver/admserv/newinst/src/AdminUtil.pm.in 3 Jul 2007 22:46:22 -0000 >@@ -36,29 +36,32 @@ > # END COPYRIGHT BLOCK > # > > package AdminUtil; > require Exporter; > @ISA = qw(Exporter); > @EXPORT = qw(getAdmConf getConfigDSConn createConfigDS createSubDS > updateAdmConf updateAdmpw updateLocalConf importCACert >- getLocalConfigDS getPset); >+ getLocalConfigDS getPset registerDSWithConfigDS >+ registerManyDSWithConfigDS createSubDSNoConn); > @EXPORT_OK = qw(getAdmConf getConfigDSConn createConfigDS createSubDS > updateAdmConf updateAdmpw updateLocalConf importCACert >- getLocalConfigDS getPset); >+ getLocalConfigDS getPset registerDSWithConfigDS >+ registerManyDSWithConfigDS createSubDSNoConn); > > # load perldap > use Mozilla::LDAP::Conn; > use Mozilla::LDAP::Utils qw(normalizeDN); > use Mozilla::LDAP::API qw(:constant ldap_url_parse ldap_explode_dn); > use Mozilla::LDAP::LDIF qw(enlist_values); > > use Util; > use Inf; >+use FileConn; > > use strict; > > # get the adminutil client configuration (adm.conf) > # the file is in LDIF format > # just return as a hash ref for easy key/value access > # single valued attributes will have a single string value > # multi valued attributes will have an array ref value >@@ -259,67 +262,92 @@ > '@ldifdir@/13dsschema.mod.tmpl', > '@ldifdir@/14dsmonitor.mod.tmpl' > ); > my $setupinf = new Inf("@infdir@/setup.inf"); > my $admininf = new Inf("@infdir@/admin.inf"); > my $dsinf = new Inf("@infdir@/slapd.inf"); > my $mapper = new Inf("@infdir@/configdsroot.map"); > >- $mapper = process_maptbl($mapper, ($inf, $dsinf, $admininf, $setupinf)); >- if (!$mapper) { >+ $mapper = process_maptbl($mapper, $errs, $inf, $dsinf, $admininf, $setupinf); >+ if (!$mapper or @{$errs}) { > $conn->close(); >- @{$errs} = ('error_creating_configds_maptbl'); >+ if (!@{$errs}) { >+ @{$errs} = ('error_creating_configds_maptbl'); >+ } > return 0; > } > >- getMappedEntries($mapper, \@ldiffiles, \&check_and_add_entry, >+ getMappedEntries($mapper, \@ldiffiles, $errs, \&check_and_add_entry, > [$conn]); > > $conn->close(); >- return 1; >+ return @{$errs} ? 0 : 1; > } > >-# Take the slapd server instance specified in the slapd section of the given inf >-# and make it into a subordinative directory server >-# (no o=netscaperoot, with PTA setup) >-sub createSubDS { >+sub internalCreateSubDS { >+ my $conn = shift; > my $inf = shift; > my $errs = shift; > >- # open a connection to the directory server >- my $conn = new Mozilla::LDAP::Conn($inf->{General}->{FullMachineName}, >- $inf->{slapd}->{ServerPort}, >- $inf->{slapd}->{RootDN}, >- $inf->{slapd}->{RootDNPwd}, >- $inf->{General}->{certdir}); >- > # add the o=NetscapeRoot tree using the mapper and ldif templates > my @ldiffiles = ('@ldifdir@/12dsconfig.mod.tmpl', > '@ldifdir@/13dsschema.mod.tmpl', > '@ldifdir@/14dsmonitor.mod.tmpl', > '@ldifdir@/15dspta.ldif.tmpl' > ); > my $setupinf = new Inf("@infdir@/setup.inf"); > my $admininf = new Inf("@infdir@/admin.inf"); > my $dsinf = new Inf("@infdir@/slapd.inf"); > my $mapper = new Inf("@infdir@/dirserver.map"); > >- $mapper = process_maptbl($mapper, ($inf, $dsinf, $admininf, $setupinf)); >- if (!$mapper) { >+ $mapper = process_maptbl($mapper, $errs, $inf, $dsinf, $admininf, $setupinf); >+ if (!$mapper or @{$errs}) { > $conn->close(); >- @{$errs} = ('error_creating_configds_maptbl'); >+ if (!@{$errs}) { >+ @{$errs} = ('error_creating_configds_maptbl'); >+ } > return 0; > } > >- getMappedEntries($mapper, \@ldiffiles, \&check_and_add_entry, >+ getMappedEntries($mapper, \@ldiffiles, $errs, \&check_and_add_entry, > [$conn]); > > $conn->close(); >- return 1; >+ return @{$errs} ? 0 : 1; >+} >+ >+# Take the slapd server instance specified in the slapd section of the given inf >+# and make it into a subordinative directory server >+# (no o=netscaperoot, with PTA setup) >+sub createSubDS { >+ my $inf = shift; >+ my $errs = shift; >+ >+ # open a connection to the directory server >+ my $conn = new Mozilla::LDAP::Conn($inf->{General}->{FullMachineName}, >+ $inf->{slapd}->{ServerPort}, >+ $inf->{slapd}->{RootDN}, >+ $inf->{slapd}->{RootDNPwd}, >+ $inf->{General}->{certdir}); >+ >+ return internalCreateSubDS($conn, $inf, $errs); >+} >+ >+# same as createSubDS but works directly on the dse.ldif file itself >+# this is suitable for use when creating a new DS instance on the local >+# machine, >+sub createSubDSNoConn { >+ my $inf = shift; >+ my $errs = shift; >+ >+ my $dseldif = "@instconfigdir@/slapd-" . $inf->{slapd}->{ServerIdentifier} . "/dse.ldif"; >+ my $conn = new FileConn($dseldif); >+ >+ return internalCreateSubDS($conn, $inf, $errs); > } > > sub updateAdmConf { > my $params = shift; # hashref > my $configdir = shift || "@configdir@"; > my $admConf = getAdmConf($configdir); > my $isnew = 0; > if (!$admConf || !%{$admConf}) { >@@ -506,8 +534,178 @@ > } > > if ($ldapStart =~ /slapd-(.+?)\//) { > $inst = $1; > } > > return $inst; > } >+ >+# most admin server CGIs only use PASSWORD and USERDN >+sub getAuthCredentials { >+ if ($AdminUtil::USER) { >+ return ($AdminUtil::USER, $AdminUtil::PASSWORD, >+ $AdminUtil::AUTHORIZATION, $AdminUtil::USERDN, >+ $AdminUtil::SIEPWD); >+ } >+ >+ if (!defined($ENV{PASSWORD_PIPE})) { >+ return (); >+ } >+ >+ my $fh; >+ if (fileno(STDIN) == $ENV{PASSWORD_PIPE}) { >+ $fh = \*STDIN; >+ } else { >+ open(INPUT, "<&=$ENV{PASSWORD_PIPE}") or >+ die "Error: could not open PASSWORD_PIPE $ENV{PASSWORD_PIPE}: $!"; >+ $fh = \*INPUT; >+ } >+ while (<$fh>) { >+ if (/^User: (.*)$/) { >+ $AdminUtil::USER = $1; >+ } >+ if (/^Password: (.*)$/) { >+ $AdminUtil::PASSWORD = $1; >+ } >+ if (/^Authorization: (.*)$/) { >+ $AdminUtil::AUTHORIZATION = $1; >+ } >+ if (/^UserDN: (.*)$/) { >+ $AdminUtil::USERDN = $1; >+ } >+ if (/^SIEPWD: (.*)$/) { >+ $AdminUtil::SIEPWD = $1; >+ } >+ } >+ if (fileno(STDIN) != $ENV{PASSWORD_PIPE}) { >+ close $fh; >+ } >+ >+ return ($AdminUtil::USER, $AdminUtil::PASSWORD, >+ $AdminUtil::AUTHORIZATION, $AdminUtil::USERDN, >+ $AdminUtil::SIEPWD); >+} >+ >+# this takes a list of DS instances and registers all of them >+# with the config DS >+sub registerManyDSWithConfigDS { >+ my $inf = shift; >+ my $errs = shift; >+ my $configdir = shift; >+ my @instances = @_; >+ >+ if (!@instances) { >+ return 1; # no instances to register - just return ok >+ } >+ >+ # open a connection to the configuration directory server >+ my $conn = getConfigDSConn($inf->{General}->{ConfigDirectoryLdapURL}, >+ $inf->{General}->{ConfigDirectoryAdminID}, >+ $inf->{General}->{ConfigDirectoryAdminPwd}, >+ "$configdir/admin-serv", $errs); >+ >+ if (!$conn or @{$errs}) { >+ return 0; >+ } >+ >+ my $admConf = getAdmConf("$configdir/admin-serv"); >+ >+ for my $inst (@instances) { >+ my $instinf = createInfFromConfig("$configdir/$inst", $inst); >+ unlink($instinf->{filename}); >+ $instinf->{General}->{ConfigDirectoryLdapURL} = >+ $inf->{General}->{ConfigDirectoryLdapURL}; >+ if (!registerDSWithConfigDS($inst, $errs, $instinf, >+ $conn, $admConf, $configdir)) { >+ return 0; >+ } >+ } >+ >+ $conn->close(); >+ >+ return 1 >+} >+ >+sub registerDSWithConfigDS { >+ my $servid = shift; >+ my $errs = shift; >+ my $inf = shift; >+ my $conn = shift; >+ my $admConf = shift; >+ my $configdir = shift || "@instconfigdir@"; >+ my $inst; >+ my $needclose; >+ >+ if ($servid =~ /^slapd-/) { >+ $inst = $servid; >+ } else { >+ $inst = "slapd-$servid"; >+ } >+ >+ my ($dummy1, $pwd, $dummy2, $userdn) = getAuthCredentials(); >+ >+ if (!$inf->{General}->{AdminDomain}) { >+ if (!$admConf) { >+ $admConf = getAdmConf("$configdir/admin-serv"); >+ } >+ $inf->{General}->{AdminDomain} = $admConf->{AdminDomain}; >+ } >+ >+ # open a connection to the configuration directory server >+ if (!$conn) { >+ if (!$userdn) { >+ $userdn = $inf->{General}->{ConfigDirectoryAdminID}; >+ } >+ if (!$pwd) { >+ $pwd = $inf->{General}->{ConfigDirectoryAdminPwd}; >+ } >+ >+ $conn = getConfigDSConn($inf->{General}->{ConfigDirectoryLdapURL}, >+ $userdn, $pwd, >+ "$configdir/admin-serv", $errs); >+ $needclose = 1; >+ } >+ >+ if (!$conn or @{$errs}) { >+ return 0; >+ } >+ >+ my $instinf; >+ # setup will usually supply everything, but ds_create will not >+ if (!$inf->{slapd}->{RootDNPwd}) { >+ $instinf = createInfFromConfig("$configdir/$inst", $inst, $errs); >+ if (!$instinf or @{$errs}) { >+ if ($needclose) { >+ $conn->close(); >+ } >+ return 0; >+ } >+ } >+ >+ # add the Admin Server configuration entries >+ my @ldiffiles = ("@ldifdir@/10dsdata.ldif.tmpl", >+ "@ldifdir@/11dstasks.ldif.tmpl" >+ ); >+ my $setupinf = new Inf("@infdir@/setup.inf"); >+ my $slapdinf = new Inf("@infdir@/slapd.inf"); >+ >+ my $mapper = new Inf("@infdir@/dirserver.map"); >+ >+ $mapper = process_maptbl($mapper, $errs, $inf, $instinf, $slapdinf, $setupinf); >+ if (!$mapper or @{$errs}) { >+ if ($needclose) { >+ $conn->close(); >+ } >+ return 0; >+ } >+ >+ my $context = [$conn]; >+ getMappedEntries($mapper, \@ldiffiles, $errs, \&check_and_add_entry, $context); >+ >+ if ($needclose) { >+ $conn->close(); >+ } >+ >+ return @{$errs} ? 0 : 1; >+} >+ >Index: adminserver/admserv/newinst/src/migrate-ds-admin.pl.in >=================================================================== >RCS file: /cvs/dirsec/adminserver/admserv/newinst/src/migrate-ds-admin.pl.in,v >retrieving revision 1.1 >diff -u -8 -r1.1 migrate-ds-admin.pl.in >--- adminserver/admserv/newinst/src/migrate-ds-admin.pl.in 29 Jun 2007 21:29:05 -0000 1.1 >+++ adminserver/admserv/newinst/src/migrate-ds-admin.pl.in 3 Jul 2007 22:46:22 -0000 >@@ -42,16 +42,17 @@ > use strict; > > use AdminMigration; > use AdminUtil; > use AdminServer; > use Migration; > use Resource; > use DSMigration; >+use SetupLog; > > my $res = new Resource("@propertydir@/migrate-ds-admin.res", > "@propertydir@/migrate-ds.res", > "@propertydir@/setup-ds-admin.res", > "@propertydir@/setup-ds.res"); > > my $mig = new Migration($res); # parse cmd line etc. > >@@ -78,17 +79,24 @@ > } > > # next, migrate the admin server - this also registers the directory servers > $mig->msg('begin_as_migration', $mig->{oldsroot}); > migrateAdminServer($mig); > > # next, register/update the new directory servers > # in the config ds >-registerManyDSWithConfigDS($mig, "$mig->{configdir}/admin-serv", @{$mig->{instances}}); >+$mig->msg('registering_dirserver_instances'); >+my @errs; >+if (!registerManyDSWithConfigDS($mig->{inf}, \@errs, >+ $mig->{configdir}, >+ @{$mig->{instances}})) { >+ $mig->msg($FATAL, @errs); >+ exit 1; >+} > > $mig->msg('end_dsadmin_migration'); > > END { > if ($mig) { > if (!$mig->{keep}) { > unlink $mig->{inffile}; > } >Index: adminserver/admserv/newinst/src/register_server.pl.in >=================================================================== >RCS file: /cvs/dirsec/adminserver/admserv/newinst/src/register_server.pl.in,v >retrieving revision 1.3 >diff -u -8 -r1.3 register_server.pl.in >--- adminserver/admserv/newinst/src/register_server.pl.in 18 Jun 2007 17:14:51 -0000 1.3 >+++ adminserver/admserv/newinst/src/register_server.pl.in 3 Jul 2007 22:46:22 -0000 >@@ -181,27 +181,30 @@ > } > > # eval map table for each dynamic .inf file > foreach my $thisinf (@inffiles) > { > my $mapper = new Inf($mapfile); > my $infdatum = new Inf($thisinf); > push(@infdata, ($infdatum)); >- $mapper = process_maptbl($mapper, @infdata); >+ my @errs; >+ $mapper = process_maptbl($mapper, \@errs, @infdata); > if ( NULL eq $mapper ) > { >+ print "@errs\n"; > print "ERROR: failed to generate mapper\n"; > exit 1; > } > >- my @ents = getMappedEntries($mapper, \@ldiffiles, \&check_and_add_entry, >- [$conn, $confds_fresh, $confds_verbose]); >- if ( @ents ) >+ getMappedEntries($mapper, \@ldiffiles, \@errs, \&check_and_add_entry, >+ [$conn, $confds_fresh, $confds_verbose]); >+ if ( @errs ) > { >+ print "@errs\n"; > print "ERROR: failed to register server info\n"; > return 1; > } > > pop @infdata; > # in case handling multiple server instances, > # need to turn it off from the second loop. > $confds_fresh = 0; >Index: adminserver/admserv/newinst/src/setup-ds-admin.pl.in >=================================================================== >RCS file: /cvs/dirsec/adminserver/admserv/newinst/src/setup-ds-admin.pl.in,v >retrieving revision 1.6 >diff -u -8 -r1.6 setup-ds-admin.pl.in >--- adminserver/admserv/newinst/src/setup-ds-admin.pl.in 29 Jun 2007 21:29:05 -0000 1.6 >+++ adminserver/admserv/newinst/src/setup-ds-admin.pl.in 3 Jul 2007 22:46:22 -0000 >@@ -140,47 +140,52 @@ > $createconfigds = 1; > } > > $setup->{inf}->write(); > > $setup->msg('create_dirserver'); > > # create a directory server instance >-my ($rc, $output) = createDSInstance($setup->{inf}); >+my @errs = (); >+my ($rc, $output) = createDSInstance($setup->{inf}, \@errs); > if ($rc) { >+ if (@errs) { >+ $setup->msg(@errs); >+ } > $setup->msg($FATAL, 'error_creating_dsinstance', $rc, $output); > exit 1; > } else { > $setup->msg('created_dsinstance', $output); > } > > # setup directory server instance to be the configuration DS > if ($createconfigds) { >- my @errs = (); > $setup->msg('create_configds'); > if (!createConfigDS($setup->{inf}, \@errs)) { > $setup->msg($FATAL, @errs); > $setup->msg($FATAL, 'error_create_configds'); > exit 1; > } > } > else > { >- my @errs = (); > $setup->msg('create_configds'); > if (!createSubDS($setup->{inf}, \@errs)) { > $setup->msg($FATAL, @errs); > $setup->msg($FATAL, 'error_create_configds'); > exit 1; > } > } > > # register ds instances with config DS >-if (!registerDSWithConfigDS($setup)) { >+if (!registerDSWithConfigDS($setup->{inf}->{slapd}->{ServerIdentifier}, >+ \@errs, >+ $setup->{inf})) { >+ $setup->msg(@errs); > $setup->msg($FATAL, 'error_register_dirserver'); > exit 1; > } > > > # configure and register the admin server instance > if (!$setup->{reconfigas}) { > if (!createAdminServer($setup)) { >Index: adminserver/admserv/schema/ldif/11dstasks.ldif.tmpl >=================================================================== >RCS file: /cvs/dirsec/adminserver/admserv/schema/ldif/11dstasks.ldif.tmpl,v >retrieving revision 1.3 >diff -u -8 -r1.3 11dstasks.ldif.tmpl >--- adminserver/admserv/schema/ldif/11dstasks.ldif.tmpl 27 Jun 2007 22:25:00 -0000 1.3 >+++ adminserver/admserv/schema/ldif/11dstasks.ldif.tmpl 3 Jul 2007 22:46:22 -0000 >@@ -175,17 +175,17 @@ > objectClass: nsAdminObject > nsExecRef: perl?migrateInstance > cn: Migrate > > dn: cn=Create, cn=Operation, cn=Tasks, cn=%brand% Directory Server, cn=Server Group, cn=%fqdn%, ou=%domain%, o=NetscapeRoot > objectClass: top > objectClass: nstask > objectClass: nsAdminObject >-nsExecRef: ds_newinst >+nsExecRef: ds_create > cn: Create > > dn: cn=GetConfigInfo, cn=Operation, cn=Tasks, cn=%brand% Directory Server, cn=Server Group, cn=%fqdn%, ou=%domain%, o=NetscapeRoot > objectClass: top > objectClass: nstask > objectClass: nsAdminObject > nsExecRef: perl?getConfigInfo > cn: GetConfigInfo >Index: adminserver/admserv/schema/ldif/15dspta.ldif.tmpl.in >=================================================================== >RCS file: /cvs/dirsec/adminserver/admserv/schema/ldif/15dspta.ldif.tmpl.in,v >retrieving revision 1.1 >diff -u -8 -r1.1 15dspta.ldif.tmpl.in >--- adminserver/admserv/schema/ldif/15dspta.ldif.tmpl.in 28 Jun 2007 18:41:29 -0000 1.1 >+++ adminserver/admserv/schema/ldif/15dspta.ldif.tmpl.in 3 Jul 2007 22:46:22 -0000 >@@ -17,19 +17,19 @@ > # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. > # > # END COPYRIGHT BLOCK > dn: cn=Pass Through Authentication,cn=plugins,cn=config > objectClass: top > objectClass: nsSlapdPlugin > objectClass: extensibleObject > cn: Pass Through Authentication >-nsslapd-pluginPath: @dslibdir@/plugins/libpassthru-plugin.so >+nsslapd-pluginPath: libpassthru-plugin > nsslapd-pluginInitfunc: passthruauth_init > nsslapd-pluginType: preoperation > nsslapd-pluginEnabled: on >-nsslapd-pluginarg0: %config_ds_url%/o%3DNetscapeRoot >+nsslapd-pluginarg0: %config_ds_url% > nsslapd-plugin-depends-on-type: database > nsslapd-pluginId: passthruauth > nsslapd-pluginVersion: %ds_version% > nsslapd-pluginVendor: %vendor% > nsslapd-pluginDescription: pass through authentication plugin > >Index: adminserver/tests/setup.sh >=================================================================== >RCS file: /cvs/dirsec/adminserver/tests/setup.sh,v >retrieving revision 1.1 >diff -u -8 -r1.1 setup.sh >--- adminserver/tests/setup.sh 9 May 2007 00:26:39 -0000 1.1 >+++ adminserver/tests/setup.sh 3 Jul 2007 22:46:22 -0000 >@@ -5,19 +5,19 @@ > sroot=/export/rmeggins/11srv > port=1100 > secport=1101 > rootdn="cn=directory manager" > rootpw=password > #adminpw=boguspassword > adminpw=admin > #needinstance=1 >-needdata=1 >-usessl=1 >-PATH=/usr/lib64/mozldap:$PATH >+#needdata=1 >+#usessl=1 >+PATH=/usr/lib64/mozldap:/usr/lib/mozldap:$PATH > export PATH > > if [ "$needinstance" ] ; then > $sroot/bin/ds_newinst.pl - <<EOF > [General] > FullMachineName= localhost.localdomain > SuiteSpotUserID= $USER > ServerRoot= $sroot/lib/fedora-ds >@@ -72,43 +72,45 @@ > ErrorLog testtmp/error > PidFile testtmp/pid > User $USER > EOF > > dir=`pwd` > > # CGI env. vars >-ADMSERV_CONF_DIR=$dir/testtmp >-export ADMSERV_CONF_DIR >-ADMSERV_LOG_DIR=$dir/testtmp >-export ADMSERV_LOG_DIR >+#ADMSERV_CONF_DIR=$dir/testtmp >+#ADMSERV_CONF_DIR=$sroot/etc/fedora-ds/admin-serv >+#export ADMSERV_CONF_DIR >+#ADMSERV_LOG_DIR=$dir/testtmp >+#export ADMSERV_LOG_DIR > HTTP_ACCEPT_LANGUAGE=en > export HTTP_ACCEPT_LANGUAGE > SERVER_URL=http://localhost > export SERVER_URL > > pwpfile=/tmp/pwp.$$ > cat > $pwpfile <<EOF > User: admin > Password: $adminpw > > UserDN: uid=admin, ou=Administrators, ou=TopologyManagement, o=NetscapeRoot > SIEPWD: $adminpw > EOF > >-VALGRIND="valgrind --log-file=/var/tmp/vg.out --tool=memcheck --leak-check=yes --suppressions=/home/rmeggins/valgrind.supp --num-callers=40 " >+VALGRIND="valgrind --log-file=/var/tmp/vg.out --tool=memcheck --leak-check=yes --suppressions=$HOME/valgrind.supp --num-callers=40 " > GDB="gdb -x .gdbinit " >-DEBUGCMD="$VALGRIND" >+#DEBUGCMD="$VALGRIND" > #DEBUGCMD="$GDB" > > PROGS="mergeConfig admpw security ugdsconfig ReadLog start_config_ds \ > config statpingserv viewdata dsconfig monreplication restartsrv \ > statusping viewlog htmladmin sec-activate stopsrv download help" >-PROGS=restartsrv >+ >+SCRIPTS=ds_create > > # each prog has a subdir containing the GET/POST args and any other test data > for prog in $PROGS ; do > getlist=/tmp/gettests.$$ > find $testdir/$prog -name testget.\* -print 2> /dev/null | sort -n > $getlist > for test in `cat $getlist` ; do > if [ ! -d results/$prog ] ; then mkdir -p results/$prog ; fi > basetest=`basename $test` >@@ -146,9 +148,31 @@ > ./libtool --mode execute $GDB ./$prog > else > ./libtool --mode execute $DEBUGCMD ./$prog < $test > results/$prog/$basetest.html > fi > done > rm -f $postlist > done > >+for prog in $SCRIPTS ; do >+ getlist=/tmp/gettests.$$ >+ find $testdir/$prog -name testget.\* -print 2> /dev/null | sort -n > $getlist >+ for test in `cat $getlist` ; do >+ if [ ! -d results/$prog ] ; then mkdir -p results/$prog ; fi >+ basetest=`basename $test` >+ echo "Running test $test" >+ REQUEST_METHOD=GET ; export REQUEST_METHOD >+ QUERY_STRING="`cat $test`" ; export QUERY_STRING >+ SCRIPT_NAME=slapd/Tasks/Operation/$prog ; export SCRIPT_NAME >+ # open pwpfile for reading as file desc 4 - CGIs have to use stdin (0) for POST >+ exec 4<$pwpfile >+ PASSWORD_PIPE=4 ; export PASSWORD_PIPE >+ if [ -n "$DEBUGCMD" -a "$DEBUGCMD" = "$GDB" ] ; then >+ perl -d admserv/cgi-src40/$prog >+ else >+ perl -w admserv/cgi-src40/$prog >+ fi >+ done >+ rm -f $getlist >+done >+ > rm -rf $pwpfile .gdbinit
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 246683
:
158484
|
158485
|
158486
| 158487 |
158491
|
158494
|
158914
|
158989
|
159007