3 # Delete a group, after asking for confirmation
5 require './cluster-useradmin-lib.pl';
7 &error_setup($text{'gdel_err'});
8 @hosts = &list_useradmin_hosts();
9 @servers = &list_servers();
12 local ($g) = grep { $_->{'group'} eq $in{'group'} } @{$h->{'groups'}};
18 %group || &error($text{'gdel_ealready'});
20 # Setup error handler for down hosts
23 $del_error_msg = join("", @_);
25 &remote_error_setup(\&del_error);
28 &ui_print_header(undef, $text{'gdel_title'}, "");
29 if ($in{'confirmed'}) {
30 # Do the deletion on all hosts
31 foreach $host (@hosts) {
32 $del_error_msg = undef;
33 ($serv) = grep { $_->{'id'} == $host->{'id'} } @servers;
34 ($group) = grep { $_->{'group'} eq $in{'group'} }
37 print "<b>",&text('gdel_on', $serv->{'desc'} ? $serv->{'desc'} :
38 $serv->{'host'}),"</b><p>\n";
40 &remote_foreign_require($serv->{'host'},
41 "useradmin", "user-lib.pl");
44 print &text('gdel_failed', $del_error_msg),"<p>\n";
48 local @glist = &remote_foreign_call($serv->{'host'},
49 "useradmin", "list_groups");
50 ($group) = grep { $_->{'group'} eq $in{'group'} } @glist;
53 print "$text{'gdel_gone'}<p>\n";
58 # Delete from other modules
60 if (&supports_gothers($serv)) {
61 # Delete in other modules on the server
62 print "$text{'gdel_other'}<br>\n";
63 &remote_foreign_call($serv->{'host'},
64 "useradmin", "other_modules",
65 "useradmin_delete_group", $group);
66 print "$text{'gdel_done'}<p>\n";
69 # Group syncing not supported
70 print "$text{'gsave_nosync'}<p>\n";
74 # Run the pre-change command
75 &remote_eval($serv->{'host'}, "useradmin", <<EOF
76 \$ENV{'USERADMIN_GROUP'} = '$group->{'group'}';
77 \$ENV{'USERADMIN_ACTION'} = 'DELETE_GROUP';
80 $merr = &remote_foreign_call($serv->{'host'}, "useradmin",
83 print &text('usave_emaking', "<tt>$merr</tt>"),"<p>\n";
89 print "$text{'gdel_group'}<br>\n";
90 &remote_foreign_call($serv->{'host'}, "useradmin",
91 "delete_group", $group);
92 print "$text{'gdel_done'}<p>\n";
94 # Run the post-change command
95 &remote_foreign_call($serv->{'host'}, "useradmin",
98 # Update in local list
99 @glist = grep { $_ ne $group } @glist;
100 $host->{'groups'} = \@glist;
101 &save_useradmin_host($host);
104 &webmin_log("delete", "group", $group->{'group'}, $group);
106 &ui_print_footer("", $text{'index_return'});
109 # Check if this is anyone's primary group
110 foreach $h (@hosts) {
111 foreach $u (@{$h->{'users'}}) {
112 if ($u->{'gid'} == $group{'gid'}) {
119 print "<b>",&text('gdel_eprimary', $puser->{'user'}),
121 &ui_print_footer("", $text{'index_return'});
125 # Ask if the user is sure
126 print "<form action=delete_group.cgi>\n";
127 print "<input type=hidden name=group value=\"$group{'group'}\">\n";
128 print "<input type=hidden name=confirmed value=1>\n";
130 print "<center><b>",&text('gdel_sure',
131 $group{'group'}),"</b>\n";
132 print "<input type=submit value=\"$text{'gdel_del'}\">\n";
133 print "<br><input type=checkbox name=others value=1 checked> ",
134 "$text{'gdel_dothers'}<br>\n";
135 print "</center><p>\n";
137 &ui_print_footer("", $text{'index_return'});