3 # Add or update a server or group from the webmin servers module
5 require './cluster-useradmin-lib.pl';
7 @servers = &list_servers();
11 @add = grep { $_->{'id'} eq $in{'server'} } @servers;
12 &error_setup($text{'add_err'});
13 $msg = &text('add_msg', &server_name($add[0]));
16 # Add all from a group
17 ($group) = grep { $_->{'name'} eq $in{'group'} }
18 &servers::list_all_groups(\@servers);
19 foreach $m (@{$group->{'members'}}) {
20 push(@add, grep { $_->{'host'} eq $m } @servers);
22 &error_setup($text{'add_gerr'});
23 $msg = &text('add_gmsg', $in{'group'});
26 &ui_print_header(undef, $text{'add_title'}, "");
27 print "<b>$msg</b><p>\n";
29 # Setup error handler for down hosts
32 $add_error_msg = join("", @_);
34 &remote_error_setup(\&add_error);
36 # Get the users and groups for each host
37 &foreign_require("useradmin", "user-lib.pl");
38 $pft = &foreign_call("useradmin", "passfiles_type");
39 $gft = &foreign_call("useradmin", "groupfiles_type");
41 $add_error_msg = undef;
42 local $host = { 'id' => $s->{'id'} };
43 local $useradmin = &remote_foreign_check($s->{'host'}, "useradmin");
45 print "$add_error_msg<p>\n";
49 print &text('add_echeck', $s->{'host'}),"<p>\n";
52 &remote_foreign_require($s->{'host'}, "useradmin", "user-lib.pl");
54 local $rpft = &remote_foreign_call($s->{'host'}, "useradmin",
57 print &text('add_epft', $s->{'host'}),"<p>\n";
61 local @rusers = &remote_foreign_call($s->{'host'}, "useradmin",
63 local @rgroups = &remote_foreign_call($s->{'host'}, "useradmin",
65 $host->{'users'} = \@rusers;
66 $host->{'groups'} = \@rgroups;
67 &save_useradmin_host($host);
68 print &text('add_ok', &server_name($s), scalar(@rusers),
69 scalar(@rgroups)),"<p>\n";
73 &webmin_log("add", "host", $add[0]->{'host'});
76 &webmin_log("add", "group", $in{'group'});
79 &ui_print_footer("", $text{'index_return'});