#!/usr/local/bin/perl # delete_group.cgi # Delete a group, after asking for confirmation require './cluster-useradmin-lib.pl'; &ReadParse(); &error_setup($text{'gdel_err'}); @hosts = &list_useradmin_hosts(); @servers = &list_servers(); foreach $h (@hosts) { local ($g) = grep { $_->{'group'} eq $in{'group'} } @{$h->{'groups'}}; if ($g) { %group = %$g; last; } } %group || &error($text{'gdel_ealready'}); # Setup error handler for down hosts sub del_error { $del_error_msg = join("", @_); } &remote_error_setup(\&del_error); $| = 1; &ui_print_header(undef, $text{'gdel_title'}, ""); if ($in{'confirmed'}) { # Do the deletion on all hosts foreach $host (@hosts) { $del_error_msg = undef; ($serv) = grep { $_->{'id'} == $host->{'id'} } @servers; ($group) = grep { $_->{'group'} eq $in{'group'} } @{$host->{'groups'}}; next if (!$group); print "",&text('gdel_on', $serv->{'desc'} ? $serv->{'desc'} : $serv->{'host'}),"

\n"; print "

\n"; next; } local @glist = &remote_foreign_call($serv->{'host'}, "useradmin", "list_groups"); ($group) = grep { $_->{'group'} eq $in{'group'} } @glist; if (!$group) { # Already deleted? print "$text{'gdel_gone'}

\n"; print "\n"; next; } # Delete from other modules if ($in{'others'}) { if (&supports_gothers($serv)) { # Delete in other modules on the server print "$text{'gdel_other'}
\n"; &remote_foreign_call($serv->{'host'}, "useradmin", "other_modules", "useradmin_delete_group", $group); print "$text{'gdel_done'}

\n"; } else { # Group syncing not supported print "$text{'gsave_nosync'}

\n"; } } # Run the pre-change command &remote_eval($serv->{'host'}, "useradmin", <{'host'}, "useradmin", "making_changes"); if (defined($merr)) { print &text('usave_emaking', "$merr"),"

\n"; print "\n"; next; } # Delete the group print "$text{'gdel_group'}
\n"; &remote_foreign_call($serv->{'host'}, "useradmin", "delete_group", $group); print "$text{'gdel_done'}

\n"; # Run the post-change command &remote_foreign_call($serv->{'host'}, "useradmin", "made_changes"); # Update in local list @glist = grep { $_ ne $group } @glist; $host->{'groups'} = \@glist; &save_useradmin_host($host); print "\n"; } &webmin_log("delete", "group", $group->{'group'}, $group); &ui_print_footer("", $text{'index_return'}); } else { # Check if this is anyone's primary group foreach $h (@hosts) { foreach $u (@{$h->{'users'}}) { if ($u->{'gid'} == $group{'gid'}) { $puser = $u; last; } } } if ($puser) { print "",&text('gdel_eprimary', $puser->{'user'}), "

\n"; &ui_print_footer("", $text{'index_return'}); exit; } # Ask if the user is sure print "

\n"; print "\n"; print "\n"; print "
",&text('gdel_sure', $group{'group'}),"\n"; print "\n"; print "
", "$text{'gdel_dothers'}
\n"; print "

\n"; print "

\n"; &ui_print_footer("", $text{'index_return'}); }