cloud-mu 3.6.10 → 3.6.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Berksfile +2 -3
- data/Berksfile.lock +11 -14
- data/bin/mu-aws-setup +16 -4
- data/bin/mu-configure +2 -1
- data/cloud-mu.gemspec +2 -2
- data/cookbooks/mu-firewall/Berksfile +1 -1
- data/cookbooks/mu-firewall/attributes/default.rb +2 -2
- data/cookbooks/mu-firewall/metadata.rb +3 -3
- data/cookbooks/mu-firewall/recipes/default.rb +11 -2
- data/cookbooks/mu-master/Berksfile +1 -1
- data/cookbooks/mu-master/attributes/default.rb +14 -1
- data/cookbooks/mu-master/files/default/389ds-perl/ASDialogs.pm +173 -0
- data/cookbooks/mu-master/files/default/389ds-perl/AdminMigration.pm +569 -0
- data/cookbooks/mu-master/files/default/389ds-perl/AdminServer.pm +952 -0
- data/cookbooks/mu-master/files/default/389ds-perl/AdminUtil.pm +983 -0
- data/cookbooks/mu-master/files/default/389ds-perl/ConfigDSDialogs.pm +449 -0
- data/cookbooks/mu-master/files/default/389ds-perl/DSCreate.pm +1551 -0
- data/cookbooks/mu-master/files/default/389ds-perl/DSDialogs.pm +233 -0
- data/cookbooks/mu-master/files/default/389ds-perl/DSMigration.pm +1175 -0
- data/cookbooks/mu-master/files/default/389ds-perl/DSUpdate.pm +534 -0
- data/cookbooks/mu-master/files/default/389ds-perl/DSUpdateDialogs.pm +152 -0
- data/cookbooks/mu-master/files/default/389ds-perl/DSUtil.pm +1710 -0
- data/cookbooks/mu-master/files/default/389ds-perl/Dialog.pm +249 -0
- data/cookbooks/mu-master/files/default/389ds-perl/DialogManager.pm +212 -0
- data/cookbooks/mu-master/files/default/389ds-perl/FileConn.pm +461 -0
- data/cookbooks/mu-master/files/default/389ds-perl/Inf.pm +268 -0
- data/cookbooks/mu-master/files/default/389ds-perl/Migration.pm +327 -0
- data/cookbooks/mu-master/files/default/389ds-perl/RegDSDialogs.pm +94 -0
- data/cookbooks/mu-master/files/default/389ds-perl/Resource.pm +137 -0
- data/cookbooks/mu-master/files/default/389ds-perl/Setup.pm +240 -0
- data/cookbooks/mu-master/files/default/389ds-perl/SetupDialogs.pm +243 -0
- data/cookbooks/mu-master/files/default/389ds-perl/SetupLog.pm +82 -0
- data/cookbooks/mu-master/files/default/setCertName.ldif +4 -0
- data/cookbooks/mu-master/libraries/mu.rb +2 -2
- data/cookbooks/mu-master/metadata.rb +1 -1
- data/cookbooks/mu-master/recipes/389ds.rb +71 -32
- data/cookbooks/mu-master/recipes/basepackages.rb +5 -0
- data/cookbooks/mu-master/recipes/default.rb +16 -5
- data/cookbooks/mu-master/recipes/init.rb +36 -3
- data/cookbooks/mu-master/recipes/ssl-certs.rb +6 -0
- data/cookbooks/mu-master/recipes/sssd.rb +85 -62
- data/cookbooks/mu-master/recipes/update_nagios_only.rb +7 -1
- data/cookbooks/mu-master/templates/default/389-directory-setup.inf.erb +11 -26
- data/cookbooks/mu-master/templates/default/sssd.conf.erb +18 -8
- data/cookbooks/mu-tools/files/default/Mu_CA.pem +33 -0
- data/cookbooks/mu-tools/metadata.rb +0 -1
- data/cookbooks/mu-tools/recipes/set_local_fw.rb +7 -1
- data/cookbooks/mu-tools/templates/amazon/sshd_config.erb +5 -1
- data/cookbooks/nagios/CHANGELOG.md +679 -0
- data/cookbooks/nagios/LICENSE +201 -0
- data/cookbooks/nagios/README.md +340 -0
- data/cookbooks/nagios/attributes/config.rb +163 -0
- data/cookbooks/nagios/attributes/default.rb +204 -0
- data/cookbooks/nagios/libraries/base.rb +311 -0
- data/cookbooks/nagios/libraries/command.rb +68 -0
- data/cookbooks/nagios/libraries/contact.rb +229 -0
- data/cookbooks/nagios/libraries/contactgroup.rb +111 -0
- data/cookbooks/{firewall/recipes/disable_firewall.rb → nagios/libraries/custom_option.rb} +20 -7
- data/cookbooks/nagios/libraries/data_bag_helper.rb +23 -0
- data/cookbooks/nagios/libraries/default.rb +90 -0
- data/cookbooks/nagios/libraries/helpers.rb +229 -0
- data/cookbooks/nagios/libraries/host.rb +410 -0
- data/cookbooks/nagios/libraries/hostdependency.rb +178 -0
- data/cookbooks/nagios/libraries/hostescalation.rb +170 -0
- data/cookbooks/nagios/libraries/hostgroup.rb +117 -0
- data/cookbooks/nagios/libraries/nagios.rb +277 -0
- data/cookbooks/nagios/libraries/resource.rb +59 -0
- data/cookbooks/nagios/libraries/service.rb +449 -0
- data/cookbooks/nagios/libraries/servicedependency.rb +213 -0
- data/cookbooks/nagios/libraries/serviceescalation.rb +193 -0
- data/cookbooks/nagios/libraries/servicegroup.rb +142 -0
- data/cookbooks/nagios/libraries/timeperiod.rb +159 -0
- data/cookbooks/nagios/libraries/users_helper.rb +54 -0
- data/cookbooks/nagios/metadata.json +44 -0
- data/cookbooks/nagios/metadata.rb +22 -0
- data/cookbooks/nagios/recipes/_load_databag_config.rb +153 -0
- data/cookbooks/nagios/recipes/_load_default_config.rb +241 -0
- data/cookbooks/nagios/recipes/apache.rb +114 -0
- data/cookbooks/nagios/recipes/default.rb +41 -0
- data/cookbooks/nagios/recipes/nginx.rb +114 -0
- data/cookbooks/nagios/recipes/pagerduty.rb +95 -0
- data/cookbooks/nagios/recipes/server.rb +182 -0
- data/cookbooks/nagios/recipes/server_package.rb +85 -0
- data/cookbooks/nagios/recipes/server_source.rb +137 -0
- data/cookbooks/nagios/resources/command.rb +34 -0
- data/cookbooks/nagios/resources/conf.rb +52 -0
- data/cookbooks/nagios/resources/contact.rb +34 -0
- data/cookbooks/nagios/resources/contactgroup.rb +35 -0
- data/cookbooks/nagios/resources/host.rb +35 -0
- data/cookbooks/nagios/resources/hostdependency.rb +35 -0
- data/cookbooks/nagios/resources/hostescalation.rb +36 -0
- data/cookbooks/nagios/resources/hostgroup.rb +35 -0
- data/cookbooks/nagios/resources/resource.rb +34 -0
- data/cookbooks/nagios/resources/service.rb +35 -0
- data/cookbooks/nagios/resources/servicedependency.rb +35 -0
- data/cookbooks/nagios/resources/serviceescalation.rb +35 -0
- data/cookbooks/nagios/resources/servicegroup.rb +35 -0
- data/cookbooks/nagios/resources/timeperiod.rb +35 -0
- data/cookbooks/nagios/templates/apache2.conf.erb +102 -0
- data/cookbooks/nagios/templates/cgi.cfg.erb +266 -0
- data/cookbooks/nagios/templates/commands.cfg.erb +13 -0
- data/cookbooks/nagios/templates/contacts.cfg.erb +37 -0
- data/cookbooks/nagios/templates/hostgroups.cfg.erb +25 -0
- data/cookbooks/nagios/templates/hosts.cfg.erb +15 -0
- data/cookbooks/nagios/templates/htpasswd.users.erb +6 -0
- data/cookbooks/nagios/templates/nagios.cfg.erb +22 -0
- data/cookbooks/nagios/templates/nginx.conf.erb +80 -0
- data/cookbooks/nagios/templates/pagerduty.cgi.erb +185 -0
- data/cookbooks/nagios/templates/resource.cfg.erb +27 -0
- data/cookbooks/nagios/templates/servicedependencies.cfg.erb +15 -0
- data/cookbooks/nagios/templates/servicegroups.cfg.erb +14 -0
- data/cookbooks/nagios/templates/services.cfg.erb +14 -0
- data/cookbooks/nagios/templates/spawn-fcgi.erb +10 -0
- data/cookbooks/nagios/templates/templates.cfg.erb +31 -0
- data/cookbooks/nagios/templates/timeperiods.cfg.erb +13 -0
- data/extras/platform_berksfile_base +3 -3
- data/extras/python_rpm/build.sh +4 -4
- data/extras/python_rpm/muthon.spec +2 -4
- data/extras/vault_tools/export_vaults.sh +11 -1
- data/install/installer +1 -1
- data/modules/mu/kittens.rb +27523 -0
- data/modules/mu/master/ldap.rb +48 -31
- data/modules/mu/master.rb +69 -0
- data/modules/mu/mu.yaml.rb +351 -0
- data/modules/mu/providers/aws/firewall_rule.rb +3 -1
- data/modules/mu/providers/aws.rb +11 -5
- data/modules/mu.rb +5 -4
- metadata +99 -48
- data/cookbooks/firewall/CHANGELOG.md +0 -488
- data/cookbooks/firewall/LICENSE +0 -202
- data/cookbooks/firewall/README.md +0 -366
- data/cookbooks/firewall/TODO.md +0 -6
- data/cookbooks/firewall/attributes/default.rb +0 -5
- data/cookbooks/firewall/attributes/firewalld.rb +0 -8
- data/cookbooks/firewall/attributes/iptables.rb +0 -17
- data/cookbooks/firewall/attributes/ufw.rb +0 -12
- data/cookbooks/firewall/attributes/windows.rb +0 -8
- data/cookbooks/firewall/libraries/helpers.rb +0 -105
- data/cookbooks/firewall/libraries/helpers_firewalld.rb +0 -116
- data/cookbooks/firewall/libraries/helpers_firewalld_dbus.rb +0 -72
- data/cookbooks/firewall/libraries/helpers_iptables.rb +0 -112
- data/cookbooks/firewall/libraries/helpers_nftables.rb +0 -170
- data/cookbooks/firewall/libraries/helpers_ufw.rb +0 -142
- data/cookbooks/firewall/libraries/helpers_windows.rb +0 -129
- data/cookbooks/firewall/libraries/provider_firewall_firewalld.rb +0 -179
- data/cookbooks/firewall/libraries/provider_firewall_iptables.rb +0 -171
- data/cookbooks/firewall/libraries/provider_firewall_iptables_ubuntu.rb +0 -200
- data/cookbooks/firewall/libraries/provider_firewall_iptables_ubuntu1404.rb +0 -200
- data/cookbooks/firewall/libraries/provider_firewall_rule.rb +0 -34
- data/cookbooks/firewall/libraries/provider_firewall_ufw.rb +0 -138
- data/cookbooks/firewall/libraries/provider_firewall_windows.rb +0 -126
- data/cookbooks/firewall/libraries/resource_firewall.rb +0 -26
- data/cookbooks/firewall/libraries/resource_firewall_rule.rb +0 -52
- data/cookbooks/firewall/metadata.json +0 -40
- data/cookbooks/firewall/metadata.rb +0 -15
- data/cookbooks/firewall/recipes/default.rb +0 -76
- data/cookbooks/firewall/recipes/firewalld.rb +0 -87
- data/cookbooks/firewall/resources/firewalld.rb +0 -28
- data/cookbooks/firewall/resources/firewalld_config.rb +0 -39
- data/cookbooks/firewall/resources/firewalld_helpers.rb +0 -106
- data/cookbooks/firewall/resources/firewalld_icmptype.rb +0 -88
- data/cookbooks/firewall/resources/firewalld_ipset.rb +0 -104
- data/cookbooks/firewall/resources/firewalld_policy.rb +0 -115
- data/cookbooks/firewall/resources/firewalld_service.rb +0 -98
- data/cookbooks/firewall/resources/firewalld_zone.rb +0 -118
- data/cookbooks/firewall/resources/nftables.rb +0 -71
- data/cookbooks/firewall/resources/nftables_rule.rb +0 -113
- data/cookbooks/firewall/templates/default/ufw/default.erb +0 -13
- /data/cookbooks/{firewall → nagios}/chefignore +0 -0
- /data/cookbooks/{firewall → nagios}/renovate.json +0 -0
@@ -0,0 +1,449 @@
|
|
1
|
+
# BEGIN COPYRIGHT BLOCK
|
2
|
+
# This Program is free software; you can redistribute it and/or modify it under
|
3
|
+
# the terms of the GNU General Public License as published by the Free Software
|
4
|
+
# Foundation; version 2 of the License.
|
5
|
+
#
|
6
|
+
# This Program is distributed in the hope that it will be useful, but WITHOUT
|
7
|
+
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
8
|
+
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
9
|
+
#
|
10
|
+
# You should have received a copy of the GNU General Public License along with
|
11
|
+
# this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
|
12
|
+
# Place, Suite 330, Boston, MA 02111-1307 USA.
|
13
|
+
#
|
14
|
+
# Copyright (C) 2007 Red Hat, Inc.
|
15
|
+
# All rights reserved.
|
16
|
+
# END COPYRIGHT BLOCK
|
17
|
+
#
|
18
|
+
|
19
|
+
package ConfigDSDialogs;
|
20
|
+
|
21
|
+
use strict;
|
22
|
+
|
23
|
+
use Sys::Hostname;
|
24
|
+
use DialogManager;
|
25
|
+
use Setup;
|
26
|
+
use Dialog;
|
27
|
+
use DSUtil;
|
28
|
+
|
29
|
+
use Mozilla::LDAP::API qw(ldap_explode_dn);
|
30
|
+
|
31
|
+
sub verifyConfigDSInfo {
|
32
|
+
my $self = shift;
|
33
|
+
my $url = $self->{manager}->{inf}->{General}->{ConfigDirectoryLdapURL};
|
34
|
+
my $certdir;
|
35
|
+
my @errs;
|
36
|
+
if ($url =~ /^ldaps/) {
|
37
|
+
if (!$self->{manager}->{inf}->{General}->{certdb} and
|
38
|
+
!$self->{manager}->{inf}->{General}->{CACertificate}) {
|
39
|
+
return ('dialog_configdsinfo_nocacert');
|
40
|
+
}
|
41
|
+
if (!$self->{manager}->{inf}->{General}->{certdb}) {
|
42
|
+
(@errs) = AdminUtil::importCACert($self->{manager}->{setup}->{configdir} . "/admin-serv",
|
43
|
+
$self->{manager}->{inf}->{General}->{CACertificate});
|
44
|
+
if (@errs) {
|
45
|
+
return @errs;
|
46
|
+
}
|
47
|
+
}
|
48
|
+
}
|
49
|
+
my $conn = AdminUtil::getConfigDSConn($url,
|
50
|
+
$self->{manager}->{inf}->{General}->{ConfigDirectoryAdminID},
|
51
|
+
$self->{manager}->{inf}->{General}->{ConfigDirectoryAdminPwd},
|
52
|
+
$self->{manager}->{setup}->{configdir}, \@errs);
|
53
|
+
if (@errs or !$conn) {
|
54
|
+
$conn->close() if ($conn);
|
55
|
+
return @errs if (@errs);
|
56
|
+
return ('dialog_configdsinfo_unreachable', $url);
|
57
|
+
}
|
58
|
+
|
59
|
+
(@errs) = AdminUtil::verifyAdminDomain($conn, $url,
|
60
|
+
$self->{manager}->{inf}->{General}->{AdminDomain});
|
61
|
+
|
62
|
+
$conn->close();
|
63
|
+
|
64
|
+
return @errs;
|
65
|
+
}
|
66
|
+
|
67
|
+
my $configdsinfo = new Dialog (
|
68
|
+
$EXPRESS,
|
69
|
+
'dialog_configdsinfo_text',
|
70
|
+
sub {
|
71
|
+
my $self = shift;
|
72
|
+
my $index = shift;
|
73
|
+
if ($index == 0) { # the url
|
74
|
+
my $url = $self->{manager}->{inf}->{General}->{ConfigDirectoryLdapURL};
|
75
|
+
if (!defined($url)) {
|
76
|
+
my $host = $self->{manager}->{inf}->{General}->{FullMachineName} ||
|
77
|
+
hostname();
|
78
|
+
my $port = $self->{manager}->{inf}->{slapd}->{ServerPort} || 389;
|
79
|
+
if (!portAvailable($port)) {
|
80
|
+
$port = getAvailablePort();
|
81
|
+
}
|
82
|
+
my $suffix = "o=NetscapeRoot";
|
83
|
+
$url = "ldap://$host:$port/$suffix";
|
84
|
+
}
|
85
|
+
return $url;
|
86
|
+
} elsif ($index == 1) { # the id
|
87
|
+
return $self->{manager}->{inf}->{General}->{ConfigDirectoryAdminID} ||
|
88
|
+
"admin";
|
89
|
+
} elsif ($index == 2) { # the password
|
90
|
+
return undef;
|
91
|
+
} elsif ($index == 3) { # admin domain
|
92
|
+
my $admindomain = $self->{manager}->{inf}->{General}->{AdminDomain};
|
93
|
+
if (!defined($admindomain)) {
|
94
|
+
$admindomain = $self->{manager}->{inf}->{General}->{FullMachineName} ||
|
95
|
+
hostname();
|
96
|
+
$admindomain =~ s/^[^\.]*\.//; # just the domain part
|
97
|
+
}
|
98
|
+
return $admindomain;
|
99
|
+
} else { # the CA cert
|
100
|
+
my $url = $self->{manager}->{inf}->{General}->{ConfigDirectoryLdapURL};
|
101
|
+
my $cert = $self->{manager}->{inf}->{General}->{CACertificate};
|
102
|
+
if (($url !~ /^ldaps/) or $self->{manager}->{inf}->{General}->{certdb} or
|
103
|
+
($cert =~ /^-----BEGIN CERTIFICATE-----/)) {
|
104
|
+
# not using LDAPS, or already have a certdb - hide CA prompt
|
105
|
+
$self->{prompts}->[4]->[2] = 1;
|
106
|
+
} else {
|
107
|
+
$self->{prompts}->[4]->[2] = 0; # unhide CA prompt
|
108
|
+
}
|
109
|
+
return $self->{manager}->{inf}->{General}->{CACertificate};
|
110
|
+
}
|
111
|
+
},
|
112
|
+
sub {
|
113
|
+
my $self = shift;
|
114
|
+
my $ans = shift;
|
115
|
+
my $index = shift;
|
116
|
+
my $res = $DialogManager::SAME;
|
117
|
+
if ($index == 0) {
|
118
|
+
# validate URL?
|
119
|
+
$self->{manager}->{inf}->{General}->{ConfigDirectoryLdapURL} = $ans;
|
120
|
+
my $url = $self->{manager}->{inf}->{General}->{ConfigDirectoryLdapURL};
|
121
|
+
if (($url !~ /^ldaps/) or $self->{manager}->{inf}->{General}->{certdb}) {
|
122
|
+
# not using LDAPS, or already have a certdb - hide CA prompt
|
123
|
+
$self->{prompts}->[4]->[2] = 1;
|
124
|
+
} else {
|
125
|
+
$self->{prompts}->[4]->[2] = 0; # unhide CA prompt
|
126
|
+
}
|
127
|
+
$res = $DialogManager::NEXT;
|
128
|
+
} elsif ($index == 1) { # id
|
129
|
+
$self->{manager}->{inf}->{General}->{ConfigDirectoryAdminID} = $ans;
|
130
|
+
$res = $DialogManager::NEXT;
|
131
|
+
} elsif ($index == 2) { # pwd
|
132
|
+
my $test = $ans;
|
133
|
+
if ($test) {
|
134
|
+
$test =~ s/\s//g;
|
135
|
+
}
|
136
|
+
if (!$ans or (length($test) != length($ans))) {
|
137
|
+
$self->{manager}->alert("dialog_configdsadmin_invalid");
|
138
|
+
} else {
|
139
|
+
$self->{manager}->{inf}->{General}->{ConfigDirectoryAdminPwd} = $ans;
|
140
|
+
$res = $DialogManager::NEXT;
|
141
|
+
}
|
142
|
+
} elsif ($index == 3) { # admin domain
|
143
|
+
$self->{manager}->{inf}->{General}->{AdminDomain} = $ans;
|
144
|
+
$res = $DialogManager::NEXT;
|
145
|
+
} else { # CA cert filename
|
146
|
+
if ($ans && length($ans) &&
|
147
|
+
($ans !~ /^-----BEGIN CERTIFICATE-----/) && ! -f $ans) {
|
148
|
+
$self->{manager}->alert("dialog_configdsinfo_ca_error", $ans);
|
149
|
+
} else {
|
150
|
+
$self->{manager}->{inf}->{General}->{CACertificate} = $ans;
|
151
|
+
$res = $DialogManager::NEXT;
|
152
|
+
}
|
153
|
+
}
|
154
|
+
|
155
|
+
if (($index == 4) && ($res == $DialogManager::NEXT)) {
|
156
|
+
my (@text) = verifyConfigDSInfo($self);
|
157
|
+
if (@text) {
|
158
|
+
$self->{manager}->alert(@text);
|
159
|
+
$self->{manager}->alert('dialog_configdsinfo_tryagain');
|
160
|
+
$res = $DialogManager::FIRST;
|
161
|
+
}
|
162
|
+
}
|
163
|
+
return $res;
|
164
|
+
},
|
165
|
+
['dialog_configdsinfo_url_prompt'], ['dialog_configdsinfo_id_prompt'],
|
166
|
+
['dialog_configdsinfo_pwd_prompt', 1], ['dialog_configdsinfo_domain_prompt'],
|
167
|
+
['dialog_configdsinfo_ca_prompt']
|
168
|
+
);
|
169
|
+
|
170
|
+
my $regconfigdsinfo = new Dialog (
|
171
|
+
$EXPRESS,
|
172
|
+
'dialog_configdsinfo_text',
|
173
|
+
sub {
|
174
|
+
my $self = shift;
|
175
|
+
my $index = shift;
|
176
|
+
if ($index == 0) { # the url
|
177
|
+
my $url = $self->{manager}->{inf}->{General}->{ConfigDirectoryLdapURL};
|
178
|
+
if (!defined($url)) {
|
179
|
+
my $host = $self->{manager}->{inf}->{General}->{FullMachineName} ||
|
180
|
+
hostname();
|
181
|
+
my $port = $self->{manager}->{inf}->{slapd}->{ServerPort} || 389;
|
182
|
+
if (!portAvailable($port)) {
|
183
|
+
$port = getAvailablePort();
|
184
|
+
}
|
185
|
+
my $suffix = "o=NetscapeRoot";
|
186
|
+
$url = "ldap://$host:$port/$suffix";
|
187
|
+
}
|
188
|
+
return $url;
|
189
|
+
} elsif ($index == 1) { # the id
|
190
|
+
return $self->{manager}->{inf}->{General}->{ConfigDirectoryAdminID} ||
|
191
|
+
"admin";
|
192
|
+
} elsif ($index == 2 || $index == 3) { # the password
|
193
|
+
return undef;
|
194
|
+
} elsif ($index == 4) { # admin domain
|
195
|
+
my $admindomain = $self->{manager}->{inf}->{General}->{AdminDomain};
|
196
|
+
if (!defined($admindomain)) {
|
197
|
+
$admindomain = $self->{manager}->{inf}->{General}->{FullMachineName} ||
|
198
|
+
hostname();
|
199
|
+
$admindomain =~ s/^[^\.]*\.//; # just the domain part
|
200
|
+
}
|
201
|
+
return $admindomain;
|
202
|
+
} else { # the CA cert
|
203
|
+
my $url = $self->{manager}->{inf}->{General}->{ConfigDirectoryLdapURL};
|
204
|
+
my $cert = $self->{manager}->{inf}->{General}->{CACertificate};
|
205
|
+
if (($url !~ /^ldaps/) or $self->{manager}->{inf}->{General}->{certdb} or
|
206
|
+
($cert =~ /^-----BEGIN CERTIFICATE-----/)) {
|
207
|
+
# not using LDAPS, or already have a certdb - hide CA prompt
|
208
|
+
$self->{prompts}->[5]->[2] = 1;
|
209
|
+
} else {
|
210
|
+
$self->{prompts}->[5]->[2] = 0; # unhide CA prompt
|
211
|
+
}
|
212
|
+
return $self->{manager}->{inf}->{General}->{CACertificate};
|
213
|
+
}
|
214
|
+
},
|
215
|
+
sub {
|
216
|
+
my $self = shift;
|
217
|
+
my $ans = shift;
|
218
|
+
my $index = shift;
|
219
|
+
|
220
|
+
my $res = $DialogManager::SAME;
|
221
|
+
if ($index == 0) {
|
222
|
+
# validate URL?
|
223
|
+
$self->{manager}->{inf}->{General}->{ConfigDirectoryLdapURL} = $ans;
|
224
|
+
my $url = $self->{manager}->{inf}->{General}->{ConfigDirectoryLdapURL};
|
225
|
+
if (($url !~ /^ldaps/) or $self->{manager}->{inf}->{General}->{certdb}) {
|
226
|
+
# not using LDAPS, or already have a certdb - hide CA prompt
|
227
|
+
$self->{prompts}->[5]->[2] = 1;
|
228
|
+
} else {
|
229
|
+
$self->{prompts}->[5]->[2] = 0; # unhide CA prompt
|
230
|
+
}
|
231
|
+
$res = $DialogManager::NEXT;
|
232
|
+
} elsif ($index == 1) { # id
|
233
|
+
$self->{manager}->{inf}->{General}->{ConfigDirectoryAdminID} = $ans;
|
234
|
+
$res = $DialogManager::NEXT;
|
235
|
+
} elsif ($index == 2) { # pwd
|
236
|
+
my $test = $ans;
|
237
|
+
if ($test) {
|
238
|
+
$test =~ s/\s//g;
|
239
|
+
}
|
240
|
+
if (!$ans or (length($test) != length($ans))) {
|
241
|
+
$self->{manager}->alert("dialog_configdsadmin_invalid");
|
242
|
+
} else {
|
243
|
+
$self->{firstpassword} = $ans; # save for next index
|
244
|
+
$res = $DialogManager::NEXT;
|
245
|
+
}
|
246
|
+
} elsif ($index == 3) { # verify second password
|
247
|
+
if ($ans ne $self->{firstpassword}) {
|
248
|
+
$self->{manager}->alert("dialog_configdsadmin_nomatch");
|
249
|
+
} else {
|
250
|
+
$self->{manager}->{inf}->{General}->{ConfigDirectoryAdminPwd} = $ans;
|
251
|
+
$res = $DialogManager::NEXT;
|
252
|
+
}
|
253
|
+
} elsif ($index == 4) { # admin domain
|
254
|
+
$self->{manager}->{inf}->{General}->{AdminDomain} = $ans;
|
255
|
+
$res = $DialogManager::NEXT;
|
256
|
+
} else { # CA cert filename
|
257
|
+
if ($ans && length($ans) &&
|
258
|
+
($ans !~ /^-----BEGIN CERTIFICATE-----/) && ! -f $ans) {
|
259
|
+
$self->{manager}->alert("dialog_configdsinfo_ca_error", $ans);
|
260
|
+
} else {
|
261
|
+
$self->{manager}->{inf}->{General}->{CACertificate} = $ans;
|
262
|
+
$res = $DialogManager::NEXT;
|
263
|
+
}
|
264
|
+
}
|
265
|
+
return $res;
|
266
|
+
},
|
267
|
+
['dialog_configdsinfo_url_prompt'], ['dialog_configdsinfo_id_prompt'],
|
268
|
+
['dialog_configdsinfo_pwd_prompt', 1], ['dialog_configdsinfo_pwd2_prompt', 1],
|
269
|
+
['dialog_configdsinfo_domain_prompt', 0, 0], ['dialog_configdsinfo_ca_prompt']
|
270
|
+
);
|
271
|
+
|
272
|
+
my $configdsadmin = new Dialog (
|
273
|
+
$EXPRESS,
|
274
|
+
'dialog_configdsadmin_text',
|
275
|
+
sub {
|
276
|
+
my $self = shift;
|
277
|
+
my $index = shift;
|
278
|
+
my $id;
|
279
|
+
if ($index == 0) { # return undef for password defaults
|
280
|
+
$id = $self->{manager}->{inf}->{General}->{ConfigDirectoryAdminID};
|
281
|
+
if (!defined($id)) {
|
282
|
+
$id = "admin";
|
283
|
+
} elsif (isValidDN($id)) { # must be a uid for this dialog
|
284
|
+
my @rdns = ldap_explode_dn($id, 1);
|
285
|
+
$id = $rdns[0];
|
286
|
+
}
|
287
|
+
}
|
288
|
+
return $id;
|
289
|
+
},
|
290
|
+
sub {
|
291
|
+
my $self = shift;
|
292
|
+
my $ans = shift;
|
293
|
+
my $index = shift;
|
294
|
+
my $res = $DialogManager::SAME;
|
295
|
+
if ($index == 0) { # verify DN
|
296
|
+
if (($ans =~ /[\x00-\x20\x22\x2b\x2c\x3d\x5c\x7f\x80-\xff]/) && !isValidDN($ans)) {
|
297
|
+
$self->{manager}->alert("dialog_configdsadmin_error", $ans);
|
298
|
+
} else {
|
299
|
+
$res = $DialogManager::NEXT;
|
300
|
+
$self->{manager}->{inf}->{General}->{ConfigDirectoryAdminID} = $ans;
|
301
|
+
}
|
302
|
+
} elsif ($index == 1) { # verify initial password
|
303
|
+
if ($ans =~ /[\x80-\xff]/) {
|
304
|
+
$self->{manager}->alert("dialog_configdsadmin_invalid");
|
305
|
+
} else {
|
306
|
+
my $test = $ans;
|
307
|
+
if ($test) {
|
308
|
+
$test =~ s/\s//g;
|
309
|
+
}
|
310
|
+
if (!$ans or (length($test) != length($ans))) {
|
311
|
+
$self->{manager}->alert("dialog_configdsadmin_invalid");
|
312
|
+
} else {
|
313
|
+
$res = $DialogManager::NEXT;
|
314
|
+
$self->{firstpassword} = $ans; # save for next index
|
315
|
+
}
|
316
|
+
}
|
317
|
+
} elsif ($index == 2) { # verify second password
|
318
|
+
if ($ans =~ /[\x80-\xff]/) {
|
319
|
+
$self->{manager}->alert("dialog_configdsadmin_invalid");
|
320
|
+
} else {
|
321
|
+
if ($ans ne $self->{firstpassword}) {
|
322
|
+
$self->{manager}->alert("dialog_configdsadmin_nomatch");
|
323
|
+
} else {
|
324
|
+
$self->{manager}->{inf}->{General}->{ConfigDirectoryAdminPwd} = $ans;
|
325
|
+
$res = $DialogManager::NEXT;
|
326
|
+
}
|
327
|
+
}
|
328
|
+
}
|
329
|
+
return $res;
|
330
|
+
},
|
331
|
+
['dialog_configdsadmin_prompt'], ['dialog_configdsadmin_pw1_prompt', 1], ['dialog_configdsadmin_pw2_prompt', 1]
|
332
|
+
);
|
333
|
+
|
334
|
+
my $configdsadmindomain = new Dialog (
|
335
|
+
$TYPICAL,
|
336
|
+
'dialog_configdsadmindomain_text',
|
337
|
+
sub {
|
338
|
+
my $self = shift;
|
339
|
+
my $admindomain = $self->{manager}->{inf}->{General}->{AdminDomain};
|
340
|
+
if (!defined($admindomain)) {
|
341
|
+
$admindomain = $self->{manager}->{inf}->{General}->{FullMachineName} ||
|
342
|
+
hostname();
|
343
|
+
$admindomain =~ s/^[^\.]*\.//; # just the domain part
|
344
|
+
}
|
345
|
+
return $admindomain;
|
346
|
+
},
|
347
|
+
sub {
|
348
|
+
my $self = shift;
|
349
|
+
my $ans = shift;
|
350
|
+
my $res = $DialogManager::SAME;
|
351
|
+
if ($ans =~ /[\x00-\x20\x22\x2b\x2c\x3d\x5c\x7f\x80-\xff]/) {
|
352
|
+
$self->{manager}->alert("dialog_configdsadmindomain_error", $ans);
|
353
|
+
} elsif (isValidDN($ans)) {
|
354
|
+
$self->{manager}->alert("dialog_configdsadmindomain_notadn", $ans);
|
355
|
+
} else {
|
356
|
+
$res = $DialogManager::NEXT;
|
357
|
+
$self->{manager}->{inf}->{General}->{AdminDomain} = $ans;
|
358
|
+
}
|
359
|
+
return $res;
|
360
|
+
},
|
361
|
+
['dialog_configdsadmindomain_prompt']
|
362
|
+
);
|
363
|
+
|
364
|
+
my $useconfigds = new DialogYesNo (
|
365
|
+
$EXPRESS,
|
366
|
+
'dialog_useconfigds_text',
|
367
|
+
sub {
|
368
|
+
my $self = shift;
|
369
|
+
my $yes = $self->{"manager"}->getText("yes");
|
370
|
+
my $nno = $self->{"manager"}->getText("no");
|
371
|
+
my $ret = 0;
|
372
|
+
if ((defined($self->{manager}->{inf}->{slapd}->{SlapdConfigForMC}) and
|
373
|
+
($yes =~ /^$self->{manager}->{inf}->{slapd}->{SlapdConfigForMC}/i)) or
|
374
|
+
(defined($self->{manager}->{inf}->{slapd}->{UseExistingMC}) and
|
375
|
+
!$self->{manager}->{inf}->{slapd}->{UseExistingMC})) {
|
376
|
+
# we have to set up the directory server as the config ds
|
377
|
+
$self->{manager}->{inf}->{slapd}->{SlapdConfigForMC} = "yes";
|
378
|
+
$self->{manager}->{inf}->{slapd}->{UseExistingMC} = 0;
|
379
|
+
$ret = 0; # explicitly create the config ds
|
380
|
+
} elsif (defined($self->{manager}->{inf}->{General}->{ConfigDirectoryLdapURL})) {
|
381
|
+
$ret = 1; # use an existing config ds and register the servers with that one
|
382
|
+
} elsif (!defined($self->{manager}->{inf}->{slapd}->{SlapdConfigForMC}) and
|
383
|
+
!defined($self->{manager}->{inf}->{slapd}->{UseExistingMC})) {
|
384
|
+
$ret = 0; # implicitly create the config ds
|
385
|
+
} else {
|
386
|
+
$ret = 1; # use an existing config ds and register the servers with that one
|
387
|
+
if (exists($self->{manager}->{inf}->{slapd}->{SlapdConfigForMC})) {
|
388
|
+
delete $self->{manager}->{inf}->{slapd}->{SlapdConfigForMC};
|
389
|
+
}
|
390
|
+
$self->{manager}->{inf}->{slapd}->{UseExistingMC} = 1;
|
391
|
+
}
|
392
|
+
return $ret;
|
393
|
+
},
|
394
|
+
sub {
|
395
|
+
my $self = shift;
|
396
|
+
my $ans = shift;
|
397
|
+
my $res = $self->handleResponse($ans);
|
398
|
+
if ($res == $DialogManager::NEXT) {
|
399
|
+
if ($self->isYes()) {
|
400
|
+
if (exists($self->{manager}->{inf}->{slapd}->{SlapdConfigForMC})) {
|
401
|
+
delete $self->{manager}->{inf}->{slapd}->{SlapdConfigForMC};
|
402
|
+
}
|
403
|
+
$self->{manager}->{inf}->{slapd}->{UseExistingMC} = 1;
|
404
|
+
$configdsinfo->enable(); # use it
|
405
|
+
$configdsadmin->disable();
|
406
|
+
$configdsadmindomain->disable();
|
407
|
+
} else {
|
408
|
+
$self->{manager}->{inf}->{slapd}->{SlapdConfigForMC} = "yes";
|
409
|
+
$self->{manager}->{inf}->{slapd}->{UseExistingMC} = 0;
|
410
|
+
$configdsinfo->disable(); # ignore it
|
411
|
+
$configdsadmin->enable();
|
412
|
+
$configdsadmindomain->enable();
|
413
|
+
}
|
414
|
+
}
|
415
|
+
return $res;
|
416
|
+
},
|
417
|
+
['dialog_useconfigds_prompt'],
|
418
|
+
);
|
419
|
+
|
420
|
+
my $updatedialog = new DialogYesNo (
|
421
|
+
$EXPRESS,
|
422
|
+
'dialog_update_text',
|
423
|
+
1,
|
424
|
+
sub {
|
425
|
+
my $self = shift;
|
426
|
+
my $ans = shift;
|
427
|
+
my $res = $self->handleResponse($ans);
|
428
|
+
if ($res == $DialogManager::NEXT) {
|
429
|
+
$res = $DialogManager::ERR if (!$self->isYes());
|
430
|
+
}
|
431
|
+
return $res;
|
432
|
+
},
|
433
|
+
['dialog_update_prompt'],
|
434
|
+
);
|
435
|
+
|
436
|
+
|
437
|
+
sub getDialogs {
|
438
|
+
return ($useconfigds, $configdsinfo, $configdsadmin, $configdsadmindomain);
|
439
|
+
}
|
440
|
+
|
441
|
+
sub getRegDialogs {
|
442
|
+
return ($regconfigdsinfo, $configdsadmindomain);
|
443
|
+
}
|
444
|
+
|
445
|
+
sub getUpdateDialogs {
|
446
|
+
return ($updatedialog, $configdsinfo);
|
447
|
+
}
|
448
|
+
|
449
|
+
1;
|