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.
Files changed (171) hide show
  1. checksums.yaml +4 -4
  2. data/Berksfile +2 -3
  3. data/Berksfile.lock +11 -14
  4. data/bin/mu-aws-setup +16 -4
  5. data/bin/mu-configure +2 -1
  6. data/cloud-mu.gemspec +2 -2
  7. data/cookbooks/mu-firewall/Berksfile +1 -1
  8. data/cookbooks/mu-firewall/attributes/default.rb +2 -2
  9. data/cookbooks/mu-firewall/metadata.rb +3 -3
  10. data/cookbooks/mu-firewall/recipes/default.rb +11 -2
  11. data/cookbooks/mu-master/Berksfile +1 -1
  12. data/cookbooks/mu-master/attributes/default.rb +14 -1
  13. data/cookbooks/mu-master/files/default/389ds-perl/ASDialogs.pm +173 -0
  14. data/cookbooks/mu-master/files/default/389ds-perl/AdminMigration.pm +569 -0
  15. data/cookbooks/mu-master/files/default/389ds-perl/AdminServer.pm +952 -0
  16. data/cookbooks/mu-master/files/default/389ds-perl/AdminUtil.pm +983 -0
  17. data/cookbooks/mu-master/files/default/389ds-perl/ConfigDSDialogs.pm +449 -0
  18. data/cookbooks/mu-master/files/default/389ds-perl/DSCreate.pm +1551 -0
  19. data/cookbooks/mu-master/files/default/389ds-perl/DSDialogs.pm +233 -0
  20. data/cookbooks/mu-master/files/default/389ds-perl/DSMigration.pm +1175 -0
  21. data/cookbooks/mu-master/files/default/389ds-perl/DSUpdate.pm +534 -0
  22. data/cookbooks/mu-master/files/default/389ds-perl/DSUpdateDialogs.pm +152 -0
  23. data/cookbooks/mu-master/files/default/389ds-perl/DSUtil.pm +1710 -0
  24. data/cookbooks/mu-master/files/default/389ds-perl/Dialog.pm +249 -0
  25. data/cookbooks/mu-master/files/default/389ds-perl/DialogManager.pm +212 -0
  26. data/cookbooks/mu-master/files/default/389ds-perl/FileConn.pm +461 -0
  27. data/cookbooks/mu-master/files/default/389ds-perl/Inf.pm +268 -0
  28. data/cookbooks/mu-master/files/default/389ds-perl/Migration.pm +327 -0
  29. data/cookbooks/mu-master/files/default/389ds-perl/RegDSDialogs.pm +94 -0
  30. data/cookbooks/mu-master/files/default/389ds-perl/Resource.pm +137 -0
  31. data/cookbooks/mu-master/files/default/389ds-perl/Setup.pm +240 -0
  32. data/cookbooks/mu-master/files/default/389ds-perl/SetupDialogs.pm +243 -0
  33. data/cookbooks/mu-master/files/default/389ds-perl/SetupLog.pm +82 -0
  34. data/cookbooks/mu-master/files/default/setCertName.ldif +4 -0
  35. data/cookbooks/mu-master/libraries/mu.rb +2 -2
  36. data/cookbooks/mu-master/metadata.rb +1 -1
  37. data/cookbooks/mu-master/recipes/389ds.rb +71 -32
  38. data/cookbooks/mu-master/recipes/basepackages.rb +5 -0
  39. data/cookbooks/mu-master/recipes/default.rb +16 -5
  40. data/cookbooks/mu-master/recipes/init.rb +36 -3
  41. data/cookbooks/mu-master/recipes/ssl-certs.rb +6 -0
  42. data/cookbooks/mu-master/recipes/sssd.rb +85 -62
  43. data/cookbooks/mu-master/recipes/update_nagios_only.rb +7 -1
  44. data/cookbooks/mu-master/templates/default/389-directory-setup.inf.erb +11 -26
  45. data/cookbooks/mu-master/templates/default/sssd.conf.erb +18 -8
  46. data/cookbooks/mu-tools/files/default/Mu_CA.pem +33 -0
  47. data/cookbooks/mu-tools/metadata.rb +0 -1
  48. data/cookbooks/mu-tools/recipes/set_local_fw.rb +7 -1
  49. data/cookbooks/mu-tools/templates/amazon/sshd_config.erb +5 -1
  50. data/cookbooks/nagios/CHANGELOG.md +679 -0
  51. data/cookbooks/nagios/LICENSE +201 -0
  52. data/cookbooks/nagios/README.md +340 -0
  53. data/cookbooks/nagios/attributes/config.rb +163 -0
  54. data/cookbooks/nagios/attributes/default.rb +204 -0
  55. data/cookbooks/nagios/libraries/base.rb +311 -0
  56. data/cookbooks/nagios/libraries/command.rb +68 -0
  57. data/cookbooks/nagios/libraries/contact.rb +229 -0
  58. data/cookbooks/nagios/libraries/contactgroup.rb +111 -0
  59. data/cookbooks/{firewall/recipes/disable_firewall.rb → nagios/libraries/custom_option.rb} +20 -7
  60. data/cookbooks/nagios/libraries/data_bag_helper.rb +23 -0
  61. data/cookbooks/nagios/libraries/default.rb +90 -0
  62. data/cookbooks/nagios/libraries/helpers.rb +229 -0
  63. data/cookbooks/nagios/libraries/host.rb +410 -0
  64. data/cookbooks/nagios/libraries/hostdependency.rb +178 -0
  65. data/cookbooks/nagios/libraries/hostescalation.rb +170 -0
  66. data/cookbooks/nagios/libraries/hostgroup.rb +117 -0
  67. data/cookbooks/nagios/libraries/nagios.rb +277 -0
  68. data/cookbooks/nagios/libraries/resource.rb +59 -0
  69. data/cookbooks/nagios/libraries/service.rb +449 -0
  70. data/cookbooks/nagios/libraries/servicedependency.rb +213 -0
  71. data/cookbooks/nagios/libraries/serviceescalation.rb +193 -0
  72. data/cookbooks/nagios/libraries/servicegroup.rb +142 -0
  73. data/cookbooks/nagios/libraries/timeperiod.rb +159 -0
  74. data/cookbooks/nagios/libraries/users_helper.rb +54 -0
  75. data/cookbooks/nagios/metadata.json +44 -0
  76. data/cookbooks/nagios/metadata.rb +22 -0
  77. data/cookbooks/nagios/recipes/_load_databag_config.rb +153 -0
  78. data/cookbooks/nagios/recipes/_load_default_config.rb +241 -0
  79. data/cookbooks/nagios/recipes/apache.rb +114 -0
  80. data/cookbooks/nagios/recipes/default.rb +41 -0
  81. data/cookbooks/nagios/recipes/nginx.rb +114 -0
  82. data/cookbooks/nagios/recipes/pagerduty.rb +95 -0
  83. data/cookbooks/nagios/recipes/server.rb +182 -0
  84. data/cookbooks/nagios/recipes/server_package.rb +85 -0
  85. data/cookbooks/nagios/recipes/server_source.rb +137 -0
  86. data/cookbooks/nagios/resources/command.rb +34 -0
  87. data/cookbooks/nagios/resources/conf.rb +52 -0
  88. data/cookbooks/nagios/resources/contact.rb +34 -0
  89. data/cookbooks/nagios/resources/contactgroup.rb +35 -0
  90. data/cookbooks/nagios/resources/host.rb +35 -0
  91. data/cookbooks/nagios/resources/hostdependency.rb +35 -0
  92. data/cookbooks/nagios/resources/hostescalation.rb +36 -0
  93. data/cookbooks/nagios/resources/hostgroup.rb +35 -0
  94. data/cookbooks/nagios/resources/resource.rb +34 -0
  95. data/cookbooks/nagios/resources/service.rb +35 -0
  96. data/cookbooks/nagios/resources/servicedependency.rb +35 -0
  97. data/cookbooks/nagios/resources/serviceescalation.rb +35 -0
  98. data/cookbooks/nagios/resources/servicegroup.rb +35 -0
  99. data/cookbooks/nagios/resources/timeperiod.rb +35 -0
  100. data/cookbooks/nagios/templates/apache2.conf.erb +102 -0
  101. data/cookbooks/nagios/templates/cgi.cfg.erb +266 -0
  102. data/cookbooks/nagios/templates/commands.cfg.erb +13 -0
  103. data/cookbooks/nagios/templates/contacts.cfg.erb +37 -0
  104. data/cookbooks/nagios/templates/hostgroups.cfg.erb +25 -0
  105. data/cookbooks/nagios/templates/hosts.cfg.erb +15 -0
  106. data/cookbooks/nagios/templates/htpasswd.users.erb +6 -0
  107. data/cookbooks/nagios/templates/nagios.cfg.erb +22 -0
  108. data/cookbooks/nagios/templates/nginx.conf.erb +80 -0
  109. data/cookbooks/nagios/templates/pagerduty.cgi.erb +185 -0
  110. data/cookbooks/nagios/templates/resource.cfg.erb +27 -0
  111. data/cookbooks/nagios/templates/servicedependencies.cfg.erb +15 -0
  112. data/cookbooks/nagios/templates/servicegroups.cfg.erb +14 -0
  113. data/cookbooks/nagios/templates/services.cfg.erb +14 -0
  114. data/cookbooks/nagios/templates/spawn-fcgi.erb +10 -0
  115. data/cookbooks/nagios/templates/templates.cfg.erb +31 -0
  116. data/cookbooks/nagios/templates/timeperiods.cfg.erb +13 -0
  117. data/extras/platform_berksfile_base +3 -3
  118. data/extras/python_rpm/build.sh +4 -4
  119. data/extras/python_rpm/muthon.spec +2 -4
  120. data/extras/vault_tools/export_vaults.sh +11 -1
  121. data/install/installer +1 -1
  122. data/modules/mu/kittens.rb +27523 -0
  123. data/modules/mu/master/ldap.rb +48 -31
  124. data/modules/mu/master.rb +69 -0
  125. data/modules/mu/mu.yaml.rb +351 -0
  126. data/modules/mu/providers/aws/firewall_rule.rb +3 -1
  127. data/modules/mu/providers/aws.rb +11 -5
  128. data/modules/mu.rb +5 -4
  129. metadata +99 -48
  130. data/cookbooks/firewall/CHANGELOG.md +0 -488
  131. data/cookbooks/firewall/LICENSE +0 -202
  132. data/cookbooks/firewall/README.md +0 -366
  133. data/cookbooks/firewall/TODO.md +0 -6
  134. data/cookbooks/firewall/attributes/default.rb +0 -5
  135. data/cookbooks/firewall/attributes/firewalld.rb +0 -8
  136. data/cookbooks/firewall/attributes/iptables.rb +0 -17
  137. data/cookbooks/firewall/attributes/ufw.rb +0 -12
  138. data/cookbooks/firewall/attributes/windows.rb +0 -8
  139. data/cookbooks/firewall/libraries/helpers.rb +0 -105
  140. data/cookbooks/firewall/libraries/helpers_firewalld.rb +0 -116
  141. data/cookbooks/firewall/libraries/helpers_firewalld_dbus.rb +0 -72
  142. data/cookbooks/firewall/libraries/helpers_iptables.rb +0 -112
  143. data/cookbooks/firewall/libraries/helpers_nftables.rb +0 -170
  144. data/cookbooks/firewall/libraries/helpers_ufw.rb +0 -142
  145. data/cookbooks/firewall/libraries/helpers_windows.rb +0 -129
  146. data/cookbooks/firewall/libraries/provider_firewall_firewalld.rb +0 -179
  147. data/cookbooks/firewall/libraries/provider_firewall_iptables.rb +0 -171
  148. data/cookbooks/firewall/libraries/provider_firewall_iptables_ubuntu.rb +0 -200
  149. data/cookbooks/firewall/libraries/provider_firewall_iptables_ubuntu1404.rb +0 -200
  150. data/cookbooks/firewall/libraries/provider_firewall_rule.rb +0 -34
  151. data/cookbooks/firewall/libraries/provider_firewall_ufw.rb +0 -138
  152. data/cookbooks/firewall/libraries/provider_firewall_windows.rb +0 -126
  153. data/cookbooks/firewall/libraries/resource_firewall.rb +0 -26
  154. data/cookbooks/firewall/libraries/resource_firewall_rule.rb +0 -52
  155. data/cookbooks/firewall/metadata.json +0 -40
  156. data/cookbooks/firewall/metadata.rb +0 -15
  157. data/cookbooks/firewall/recipes/default.rb +0 -76
  158. data/cookbooks/firewall/recipes/firewalld.rb +0 -87
  159. data/cookbooks/firewall/resources/firewalld.rb +0 -28
  160. data/cookbooks/firewall/resources/firewalld_config.rb +0 -39
  161. data/cookbooks/firewall/resources/firewalld_helpers.rb +0 -106
  162. data/cookbooks/firewall/resources/firewalld_icmptype.rb +0 -88
  163. data/cookbooks/firewall/resources/firewalld_ipset.rb +0 -104
  164. data/cookbooks/firewall/resources/firewalld_policy.rb +0 -115
  165. data/cookbooks/firewall/resources/firewalld_service.rb +0 -98
  166. data/cookbooks/firewall/resources/firewalld_zone.rb +0 -118
  167. data/cookbooks/firewall/resources/nftables.rb +0 -71
  168. data/cookbooks/firewall/resources/nftables_rule.rb +0 -113
  169. data/cookbooks/firewall/templates/default/ufw/default.erb +0 -13
  170. /data/cookbooks/{firewall → nagios}/chefignore +0 -0
  171. /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;