Author: nhosoi
Update of /cvs/dirsec/adminserver/admserv/newinst/src
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv20804/admserv/newinst/src
Modified Files:
AdminServer.pm.in ConfigDSDialogs.pm setup-ds-admin.res.in
Added Files:
RegDSDialogs.pm register-ds-admin.pl.in
register-ds-admin.res.in
Log Message:
resolves: #249739
Summary: Implement a script registering DS to the Configuration DS (comment #1-4)
--- NEW FILE RegDSDialogs.pm ---
# 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
#
package RegDSDialogs;
use strict;
use DialogManager;
use Setup;
use Dialog;
use Util;
my $configdsinfo = new Dialog (
$TYPICAL,
'use_existing_configds_txt',
sub {
my $self = shift;
my $servid = $self->{manager}->{inf}->{slapd}->{ServerIdentifier};
return $servid;
},
sub {
my $self = shift;
my $ans = shift;
my $index = shift;
my $res = $DialogManager::SAME;
$self->{manager}->setType($TYPICAL);
if ($index == 0) {
# validate serverIdentifier?
foreach my $inst
(@{$self->{manager}->{inf}->{slapd}->{Instances}})
{
if ( "$inst" eq "slapd-" . $ans )
{
$self->{manager}->{inf}->{slapd}->{ServerIdentifier} =
$ans;
$res = $DialogManager::NEXT;
goto out;
}
}
out:
if ( $DialogManager::SAME == $res )
{
$self->{manager}->alert("error_configds_txt", $ans);
}
return $res;
}
return $res;
},
['dialog_dsserverid_prompt']
);
sub getDialogs {
return ($configdsinfo);
}
1;
--- NEW FILE register-ds-admin.pl.in ---
#!/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
#
use lib "@perldir@";
use File::Basename;
use Net::Domain qw(hostfqdn);
# Admin Setup modules
use AdminUtil;
use AdminServer;
# Directory Setup modules
use Resource;
use Setup;
use SetupLog;
use DialogManager;
use Inf;
use Util;
sub reg_get_passwd
{
my $setup = shift;
my $key = shift;
my $value = shift;
print("\n==============================================================================\n");
$setup->msg(0, $key, $value);
system("stty -echo");
my $ans = <STDIN>;
system("stty echo");
print "\n";
chop($ans);
return $ans;
}
my $res = new Resource("@propertydir(a)/register-ds-admin.res",
"@propertydir(a)/setup-ds-admin.res",
"@propertydir(a)/setup-ds.res");
my $setup = new Setup($res);
$setup->msg('begin_ds_registration');
# get existing instances
my $instconfigdir = $setup->{configdir};
my @instances = ();
for my $dir (glob("$setup->{configdir}/slapd-*")) {
if (-d $dir) {
push @instances, basename($dir);
}
}
if ( $#instances < 0 )
{
$setup->msg($FATAL, 'error_no_ds');
$setup->doExit(1);
}
# see if there is already a configds
my $admConf = AdminUtil::getAdmConf("$instconfigdir/admin-serv");
my @admConfKeys = keys %$admConf;
my $orig_confdsid = "";
my $new_confdsid = "";
my $adminuid = "";
my @errs = ();
my $fqdn = hostfqdn();
# set defaults
if ( $#admConfKeys >= 0 )
{
# Admin Server is installed; that is Config DS exists, which may be
# replaced with a new one in the RegDSDialogs
$orig_confdsid = getLocalConfigDS("$instconfigdir/admin-serv");
$setup->{inf}->{slapd}->{ServerIdentifier} = $orig_confdsid;
$setup->{inf}->{slapd}->{Instances} = \@instances;
$setup->{inf}->{General}->{ConfigDirectoryLdapURL} = $admConf->{ldapurl};
$setup->{inf}->{General}->{ConfigDirectoryAdminID} = $admConf->{userdn};
$setup->{inf}->{General}->{AdminDomain} = $admConf->{AdminDomain};
$setup->{inf}->{General}->{SuiteSpotUserID} =
$admConf->{SuiteSpotUserID};
$setup->{inf}->{General}->{SuiteSpotGroup} = $admConf->{SuiteSpotGroup};
($setup->{inf}->{General}->{FullMachineName} = $admConf->{ldapurl}) =~
s/.*:\/\/(.*):[0-9]*\/.*/\1/;
$setup->{inf}->{admin}->{SysUser} = $admConf->{sysuser};
$adminuid = $admConf->{userdn};
# read additional config from config DS
my $pset = AdminUtil::getPset($admConf);
if ($pset && %{$pset}) {
$setup->{inf}->{admin}->{Port} =
$pset->{"configuration.nsserverport"};
$setup->{asorigport} = $pset->{"configuration.nsserverport"}; #
save orig. port
$setup->{inf}->{admin}->{ServerIpAddress} =
$pset->{"configuration.nsserveraddress"};
}
my $admpw = AdminUtil::getAdmpw($admConf);
if ($admpw && %{$admpw}) {
$setup->{inf}->{admin}->{ServerAdminID} = $admpw->{ServerAdminID};
$setup->{inf}->{admin}->{ServerAdminPwd} = $admpw->{ServerAdminPwd};
}
$setup->{reconfigas} = 1; # allow AS reconfig
my $dialogmgr = new DialogManager($setup, $res, $TYPICAL);
require RegDSDialogs;
my @dialogs = RegDSDialogs->getDialogs();
$dialogmgr->addDialog(@dialogs);
my $rc = $dialogmgr->run();
if ($rc)
{
$setup->doExit(1);
}
$new_confdsid = $setup->{inf}->{slapd}->{ServerIdentifier};
my $newinst = "slapd-$new_confdsid";
my $inf = createInfFromConfig("$instconfigdir/$newinst", $newinst);
if ( NULL == $inf )
{
$setup->msg($FATAL, 'error_create_inf_from_config',
"$instconfigdir/$newinst");
$setup->doExit(1);
}
if ( $orig_confdsid ne $new_confdsid )
{
# To switch to the new Config DS, unregister the old one
print("\n==============================================================================\n");
$setup->msg('unregister_old_confds', $orig_confdsid);
# If we don't have it, prompt for the Admin password
if (!$setup->{inf}->{General}->{ConfigDirectoryAdminPwd} ||
"" eq $setup->{inf}->{General}->{ConfigDirectoryAdminPwd})
{
$ans = reg_get_passwd($setup, 'input_admin_passwd', $adminuid);
$setup->{inf}->{General}->{ConfigDirectoryAdminPwd} = $ans;
}
while (!unregisterDSWithConfigDS($orig_confdsid, \@errs, $setup->{inf}))
{
$setup->msg($FATAL, 'error_unregister_ds', $orig_confdsid);
$ans = reg_get_passwd($setup, 'input_admin_passwd', $adminuid);
$setup->{inf}->{General}->{ConfigDirectoryAdminPwd} = $ans;
@errs = ();
}
# updating the port number
my $oldport = 0;
my $newport = $inf->{slapd}->{ServerPort};
($oldport = $setup->{inf}->{General}->{ldapurl}) =~
s/.*:([0-9]*)\/.*/\1/;
$setup->{inf}->{General}->{ldapurl} =~ s/$oldport/$newport/;
$setup->{inf}->{General}->{ConfigDirectoryLdapURL} = "ldap://"
. $fqdn . ":". $newport . "/o=NetscapeRoot";
}
# Set the new inf to $setup->{inf}
$setup->{inf}->{slapd} = $inf->{slapd};
}
else
{
# Admin Server is not set up.
# @instances has more than one instance
# note: this is orig_confdsid is just a candidate...
($orig_confdsid = $instances[0]) =~ s/slapd-(.*)/\1/;
my $originst = "slapd-$orig_confdsid";
my $inf = createInfFromConfig("$instconfigdir/$originst", $originst);
if ( NULL == $inf )
{
$setup->msg($FATAL, 'error_create_inf_from_config',
"$instconfigdir/$originst");
$setup->doExit(1);
}
$setup->{inf} = $inf;
$setup->{inf}->{slapd}->{ServerIdentifier} = $orig_confdsid;
$setup->{inf}->{slapd}->{Instances} = \@instances;
my $dialogmgr = new DialogManager($setup, $res, $TYPICAL);
require RegDSDialogs;
require SetupDialogs;
require ConfigDSDialogs;
require ASDialogs;
my @dialogs = RegDSDialogs->getDialogs();
$dialogmgr->addDialog(@dialogs);
my $rc = $dialogmgr->run();
if ( $rc )
{
$setup->doExit(1);
}
$new_confdsid = $setup->{inf}->{slapd}->{ServerIdentifier};
if ( $orig_confdsid ne $new_confdsid )
{
my $newinst = "slapd-$new_confdsid";
$inf = createInfFromConfig("$instconfigdir/$newinst", $newinst);
if ( NULL == $inf )
{
$setup->msg($FATAL, 'error_create_inf_from_config',
"$instconfigdir/$newinst");
$setup->doExit(1);
}
$setup->{inf}->{slapd} = $inf->{slapd};
$setup->{inf}->{slapd}->{Instances} = \@instances;
}
$setup->{inf}->{General}->{ConfigDirectoryLdapURL} = "ldap://" .
$fqdn . ":". $setup->{inf}->{slapd}->{ServerPort} .
"/o=NetscapeRoot";
$dialogmgr->resetDialog();
@dialogs = SetupDialogs->getRegDialogs();
push @dialogs, ConfigDSDialogs->getRegDialogs();
push @dialogs, ASDialogs->getDialogs();
$dialogmgr->addDialog(@dialogs);
$rc = $dialogmgr->run();
if ( $rc )
{
$setup->doExit(1);
}
$adminuid = $setup->{inf}->{General}->{ConfigDirectoryAdminID};
}
# Get the ConfigDS's rootDN password
print("\n==============================================================================\n");
$setup->msg('register_new_confds', $new_confdsid);
$setup->{inf}->{slapd}->{RootDNPwd} = reg_get_passwd($setup,
'input_rootdn_passwd', $new_confdsid);
if ( ($#admConfKeys >= 0 && ($orig_confdsid ne $new_confdsid)) ||
$#admConfKeys < 0 )
{
@errs = ();
# First, let's register the Configuration Directory itself
while (!createConfigDS($setup->{inf}, \@errs))
{
foreach my $err (@errs)
{
if ( $err eq "suffix_already_exists" )
{
goto out;
}
}
$setup->{inf}->{slapd}->{RootDNPwd} = reg_get_passwd($setup,
'input_rootdn_passwd', $new_confdsid);
@errs = ();
}
out:
}
# If we don't have it, prompt for the Admin password
if (!$setup->{inf}->{General}->{ConfigDirectoryAdminPwd} ||
"" eq $setup->{inf}->{General}->{ConfigDirectoryAdminPwd})
{
$ans = reg_get_passwd($setup, 'input_admin_passwd', $adminuid);
$setup->{inf}->{General}->{ConfigDirectoryAdminPwd} = $ans;
}
@errs = ();
while (!registerDSWithConfigDS($new_confdsid, \@errs, $setup->{inf}))
{
$setup->msg($WARN, 'error_register_configds', $new_confdsid);
$ans = reg_get_passwd($setup, 'input_admin_passwd', $adminuid);
$setup->{inf}->{General}->{ConfigDirectoryAdminPwd} = $ans;
@errs = ();
}
my $hassubinst = 0;
# Then, register the rest of the Directory Servers, if any
my @subinstances = (); # array without the Config DS
foreach my $subinst (@instances)
{
if ( "$subinst" ne "slapd-" . $new_confdsid )
{
if ( 0 == $hassubinst )
{
$hassubinst = 1;
print("\n==============================================================================\n");
$setup->msg('register_subds');
}
my $subid = $subinst;
$subid =~ s/slapd-//;
push(@subinstances, ($subinst));
my $subinf = createInfFromConfig("$instconfigdir/$subinst", $subinst);
if ( NULL == $subinf )
{
$setup->msg($FATAL, 'error_create_inf_from_config',
"$subinstconfigdir/$subinst");
$setup->doExit(1);
}
$setup->{inf}->{slapd} = $subinf->{slapd};
$setup->{inf}->{slapd}->{RootDNPwd} = reg_get_passwd($setup,
'input_rootdn_passwd', $subid);
while (!createSubDS($setup->{inf}, \@errs))
{
$setup->msg($FATAL, @errs);
$setup->msg($FATAL, 'error_create_configds');
$setup->{inf}->{slapd}->{RootDNPwd} = reg_get_passwd($setup,
'input_rootdn_passwd', $subid);
}
}
}
if ( $#subinstances >= 0 )
{
@errs = ();
if ( !registerManyDSWithConfigDS($setup->{inf}, \@errs, $instconfigdir,
@subinstances) )
{
$setup->msg($FATAL, @errs);
$setup->doExit(1);
}
}
# configure and register the admin server instance
# need these 3 values for ldapStart
$setup->{inf}->{slapd}->{ServerIdentifier} = $new_confdsid;
$setup->{inf}->{slapd}->{UseExistingMC} = "yes";
$setup->{inf}->{slapd}->{SlapdConfigForMC} = "yes";
if ( !$setup->{reconfigas} )
{
if ( !createAdminServer($setup) )
{
$setup->msg($FATAL, 'error_create_adminserver');
$setup->doExit(1);
}
}
else
{
if ( !reconfigAdminServer($setup) )
{
$setup->msg($FATAL, 'error_reconfig_adminserver');
$setup->doExit(1);
}
}
$setup->msg('end_ds_registration');
$setup->doExit(0);
--- NEW FILE register-ds-admin.res.in ---
begin_ds_registration = Beginning registration of the Directory Server
use_existing_configds_txt = Do you want to use this server as Configuration Directory
Server?\n\n
unregister_old_confds = Cleaning up old Config DS: %s\n
register_new_confds = Registering new Config DS: %s\n
register_subds = Registering Sub DSes:
end_ds_registration = Finished registration of the Directory Server
input_rootdn_passwd = Please input the Directory Manager password on the server %s:
input_admin_uid = Please input the password for the Administrator User ID: [%s]
input_admin_passwd = Please input the password for the Administrator User %s:
input_userid = Please input the UNIX user id to run the server: [%s]
input_groupid = Please input the UNIX group id to run the server: [%s]
error_configds_txt = Error: the server ID %s does not exist. Choose server ID existing on
the host.\n
error_opening_instconfdir = Error: could not open config dir %s: %s\n\nDirectory Servers
may not be set up yet.\nPlease run setup-ds-admin.pl.\nNote: once you run
setup-ds-admin.pl, the server is automatically registered.\n
error_no_ds = Error: could not find a Directory Server instance.\n\nDirectory Server may
not be set up yet.\nPlease run setup-ds-admin.pl.\nNote: once you run setup-ds-admin.pl,
the server is automatically registered.\n
error_create_inf_from_config = Error: could not retrieve necessary info from %s. Please
check the file.\n
error_register_configds = Error: failed to register the configuration server info to the
Configuration Directory Server %s.\n
error_register_subds = Error: failed to register the additional server info to the
Configuration Directory Server %s.\n
error_unregister_ds = Error: failed to clean up the configuration info from the old
Configuration\nDirectory Server %s.\n
error_connection_failed = Error: failed to open an LDAP connection.\n
Index: AdminServer.pm.in
===================================================================
RCS file: /cvs/dirsec/adminserver/admserv/newinst/src/AdminServer.pm.in,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- AdminServer.pm.in 24 Jul 2007 20:10:16 -0000 1.7
+++ AdminServer.pm.in 27 Jul 2007 01:42:46 -0000 1.8
@@ -189,9 +189,9 @@
# This is how we extract the sie and isie as the as entries are
# being added
sub registercb {
- my ($context, $entry, $errs) = @_;
+ my ($context, $entry, $errs) = @_;
- my $rc = check_and_add_entry([$context->{conn}], $entry, $errs);
+ my $rc = check_and_add_entry([$context->{conn}, $context->{reconfig}], $entry,
$errs);
my $setup = $context->{setup};
if ($rc) {
if ($entry->hasValue('objectclass', 'nsApplication', 1)) {
@@ -218,6 +218,7 @@
my $setup = shift;
my $inf = $setup->{inf};
my $configdir = shift;
+ my $reconfig = shift;
my @errs;
$setup->msg('registering_adminserver');
@@ -260,7 +261,7 @@
$setup->msg($FATAL, 'error_updating_localconf', $localconf, $!);
return 0;
}
- my $context = {conn => $conn, localfh => \*LOCALCONF, setup => $setup};
+ my $context = {conn => $conn, localfh => \*LOCALCONF, setup => $setup,
reconfig => $reconfig};
getMappedEntries($mapper, \@ldiffiles, \@errs, \®istercb, $context);
close(LOCALCONF);
@@ -408,7 +409,7 @@
return 0;
}
- if (!registerASWithConfigDS($setup, $configdir)) {
+ if (!registerASWithConfigDS($setup, $configdir, $reconfig)) {
return 0;
}
Index: ConfigDSDialogs.pm
===================================================================
RCS file: /cvs/dirsec/adminserver/admserv/newinst/src/ConfigDSDialogs.pm,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ConfigDSDialogs.pm 24 Jul 2007 20:10:16 -0000 1.5
+++ ConfigDSDialogs.pm 27 Jul 2007 01:42:46 -0000 1.6
@@ -167,6 +167,108 @@
['dialog_configdsinfo_ca_prompt']
);
+my $regconfigdsinfo = new Dialog (
+ $EXPRESS,
+ 'dialog_configdsinfo_text',
+ sub {
+ my $self = shift;
+ my $index = shift;
+ if ($index == 0) { # the url
+ my $url =
$self->{manager}->{inf}->{General}->{ConfigDirectoryLdapURL};
+ if (!defined($url)) {
+ my $host =
$self->{manager}->{inf}->{General}->{FullMachineName} ||
+ hostfqdn;
+ my $port = $self->{manager}->{inf}->{slapd}->{ServerPort} ||
389;
+ if (!portAvailable($port)) {
+ $port = getAvailablePort();
+ }
+ my $suffix = "o=NetscapeRoot";
+ $url = "ldap://$host:$port/$suffix";
+ }
+ return $url;
+ } elsif ($index == 1) { # the id
+ return
$self->{manager}->{inf}->{General}->{ConfigDirectoryAdminID} ||
+ "admin";
+ } elsif ($index == 2 || $index == 3) { # the password
+ return undef;
+ } elsif ($index == 4) { # admin domain
+ my $admindomain =
$self->{manager}->{inf}->{General}->{AdminDomain};
+ if (!defined($admindomain)) {
+ $admindomain =
$self->{manager}->{inf}->{General}->{FullMachineName} ||
+ hostfqdn;
+ $admindomain =~ s/^[^\.]*\.//; # just the domain part
+ }
+ return $admindomain;
+ } else { # the CA cert
+ my $url =
$self->{manager}->{inf}->{General}->{ConfigDirectoryLdapURL};
+ my $cert = $self->{manager}->{inf}->{General}->{CACertificate};
+ if (($url !~ /^ldaps/) or
$self->{manager}->{inf}->{General}->{certdb} or
+ ($cert =~ /^-----BEGIN CERTIFICATE-----/)) {
+ # not using LDAPS, or already have a certdb - hide CA prompt
+ $self->{prompts}->[5]->[2] = 1;
+ } else {
+ $self->{prompts}->[5]->[2] = 0; # unhide CA prompt
+ }
+ return $self->{manager}->{inf}->{General}->{CACertificate};
+ }
+ },
+ sub {
+ my $self = shift;
+ my $ans = shift;
+ my $index = shift;
+
+ my $res = $DialogManager::SAME;
+ if ($index == 0) {
+ # validate URL?
+ $self->{manager}->{inf}->{General}->{ConfigDirectoryLdapURL} =
$ans;
+ my $url =
$self->{manager}->{inf}->{General}->{ConfigDirectoryLdapURL};
+ if (($url !~ /^ldaps/) or
$self->{manager}->{inf}->{General}->{certdb}) {
+ # not using LDAPS, or already have a certdb - hide CA prompt
+ $self->{prompts}->[5]->[2] = 1;
+ } else {
+ $self->{prompts}->[5]->[2] = 0; # unhide CA prompt
+ }
+ $res = $DialogManager::NEXT;
+ } elsif ($index == 1) { # id
+ $self->{manager}->{inf}->{General}->{ConfigDirectoryAdminID} =
$ans;
+ $res = $DialogManager::NEXT;
+ } elsif ($index == 2) { # pwd
+ my $test = $ans;
+ if ($test) {
+ $test =~ s/\s//g;
+ }
+ if (!$ans or (length($test) != length($ans))) {
+ $self->{manager}->alert("dialog_configdsadmin_invalid");
+ } else {
+ $self->{firstpassword} = $ans; # save for next index
+ $res = $DialogManager::NEXT;
+ }
+ } elsif ($index == 3) { # verify second password
+ if ($ans ne $self->{firstpassword}) {
+ $self->{manager}->alert("dialog_configdsadmin_nomatch");
+ } else {
+ $self->{manager}->{inf}->{General}->{ConfigDirectoryAdminPwd}
= $ans;
+ $res = $DialogManager::NEXT;
+ }
+ } elsif ($index == 4) { # admin domain
+ $self->{manager}->{inf}->{General}->{AdminDomain} = $ans;
+ $res = $DialogManager::NEXT;
+ } else { # CA cert filename
+ if ($ans && length($ans) &&
+ ($ans !~ /^-----BEGIN CERTIFICATE-----/) && ! -f $ans) {
+ $self->{manager}->alert("dialog_configdsinfo_ca_error",
$ans);
+ } else {
+ $self->{manager}->{inf}->{General}->{CACertificate} = $ans;
+ $res = $DialogManager::NEXT;
+ }
+ }
+ return $res;
+ },
+ ['dialog_configdsinfo_url_prompt'],
['dialog_configdsinfo_id_prompt'],
+ ['dialog_configdsinfo_pwd_prompt', 1],
['dialog_configdsinfo_pwd2_prompt', 1],
+ ['dialog_configdsinfo_domain_prompt', 0, 0],
['dialog_configdsinfo_ca_prompt']
+);
+
my $configdsadmin = new Dialog (
$EXPRESS,
'dialog_configdsadmin_text',
@@ -311,4 +413,8 @@
return ($useconfigds, $configdsinfo, $configdsadmin, $configdsadmindomain);
}
+sub getRegDialogs {
+ return ($regconfigdsinfo, $configdsadmindomain);
+}
+
1;
Index: setup-ds-admin.res.in
===================================================================
RCS file: /cvs/dirsec/adminserver/admserv/newinst/src/setup-ds-admin.res.in,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- setup-ds-admin.res.in 13 Jul 2007 18:39:15 -0000 1.5
+++ setup-ds-admin.res.in 27 Jul 2007 01:42:46 -0000 1.6
@@ -46,6 +46,7 @@
dialog_configdsinfo_url_prompt = Configuration directory server URL
dialog_configdsinfo_id_prompt = Configuration directory server admin ID
dialog_configdsinfo_pwd_prompt = Configuration directory server admin password
+dialog_configdsinfo_pwd2_prompt = Configuration directory server admin password
(confirm)
dialog_configdsinfo_domain_prompt = Configuration directory server admin domain
dialog_configdsinfo_ca_prompt = CA certificate filename
dialog_configdsinfo_ca_error = '%s' is not a valid CA certificate file. Please
choose another one.\n\n
@@ -57,7 +58,7 @@
dialog_configdsadmin_text = Please enter the administrator ID for the configuration
directory\nserver. This is the ID typically used to log in to the console. You\nwill
also be prompted for the password.\n\n
dialog_configdsadmin_prompt = Configuration directory server\nadministrator ID
dialog_configdsadmin_pw1_prompt = Password
-dialog_configdsadmin_pw2_prompt = Password (again)
+dialog_configdsadmin_pw2_prompt = Password (confirm)
dialog_configdsadmin_error = The input '%s' is not a valid ID. Please choose
another one.\n\n
dialog_configdsadmin_invalid = The password contains invalid characters. Please choose
another one.\n\n
dialog_configdsadmin_nomatch = The passwords do not match. Please try again.\n\n