3 # Delete a webmin user across all servers
5 require './cluster-webmin-lib.pl';
7 &ui_print_header(undef, $text{'udelete_title'}, "");
8 print "<b>",&text('udelete_doing', $in{'user'}),"</b><p>\n";
10 # Setup error handler for down hosts
13 $user_error_msg = join("", @_);
15 &remote_error_setup(\&user_error);
17 # Delete the user on all servers that have him
18 foreach $h (&list_webmin_hosts()) {
19 foreach $u (@{$h->{'users'}}) {
20 if ($u->{'name'} eq $in{'user'}) {
26 @servers = &list_servers();
29 local ($s) = grep { $_->{'id'} == $h->{'id'} } @servers;
30 local ($rh = "READ$p", $wh = "WRITE$p");
34 &remote_foreign_require($s->{'host'}, "acl", "acl-lib.pl");
35 if ($user_error_msg) {
37 print $wh &serialise_variable([ 0, $user_error_msg ]);
42 &remote_foreign_call($s->{'host'}, "acl", "delete_user",
44 $h->{'users'} = [ grep { $_->{'name'} ne $in{'user'} }
47 # Remove from any groups
48 foreach $g (@{$h->{'groups'}}) {
49 local @mems = @{$g->{'members'}};
50 local $i = &indexof($in{'user'}, @mems);
53 $g->{'members'} = \@mems;
54 &remote_foreign_call($s->{'host'}, "acl",
55 "modify_group", $g->{'name'}, $g);
58 &save_webmin_host($h);
60 # Restart the remote webmin
61 print $wh &serialise_variable([ 1 ]);
62 &remote_foreign_call($s->{'host'}, "acl", "restart_miniserv");
69 # Read back the results
72 local ($s) = grep { $_->{'id'} == $h->{'id'} } @servers;
73 local $d = &server_name($s);
76 local $rv = &unserialise_variable($line);
79 if ($rv && $rv->[0] == 1) {
81 print &text('udelete_success', $d),"<br>\n";
84 # Something went wrong
85 print &text('udelete_failed', $d, $rv->[1]),"<br>\n";
90 print "<p><b>$text{'udelete_done'}</b><p>\n";
93 &ui_print_footer("", $text{'index_return'});