mirror of
https://github.com/webmin/webmin.git
synced 2025-07-20 16:48:46 +00:00
66 lines
2.1 KiB
Perl
Executable File
66 lines
2.1 KiB
Perl
Executable File
#!/usr/local/bin/perl
|
|
# Display a form for editing this module's configuration on multiple hosts
|
|
|
|
require './cluster-webmin-lib.pl';
|
|
require '../config-lib.pl';
|
|
&ReadParse();
|
|
|
|
# Work out which hosts were selected
|
|
@hosts = &list_webmin_hosts();
|
|
@servers = &list_servers();
|
|
foreach $h (@hosts) {
|
|
local ($got) = grep { $_->{'dir'} eq $in{'mod'} } @{$h->{'modules'}};
|
|
if ($got) {
|
|
push(@gothosts, $h);
|
|
$gothosts{$h->{'id'}} = 1;
|
|
}
|
|
}
|
|
@hosts = &create_on_parse(undef, \@gothosts, $in{'mod'}, 1);
|
|
@hosts = grep { $gothosts{$_->{'id'}} } @hosts;
|
|
@hosts || &error($text{'config_enone'});
|
|
%minfo = &get_module_info($in{'mod'});
|
|
%minfo || &error($text{'config_ethis'});
|
|
|
|
# Get the config on the first host, or the local host
|
|
($getfrom) = grep { $_->{'id'} == 0 } @hosts;
|
|
$getfrom ||= $hosts[0];
|
|
($serv) = grep { $_->{'id'} == $getfrom->{'id'} } @servers;
|
|
&remote_foreign_require($serv->{'host'}, "webmin", "webmin-lib.pl");
|
|
%fconfig = &remote_foreign_call($serv->{'host'}, "webmin", "foreign_config",
|
|
$in{'mod'});
|
|
|
|
# Show the config editor
|
|
%descmap = map { $_->{'id'}, $_->{'desc'} || $_->{'host'} } @servers;
|
|
$ondesc = $in{'server'} == -1 ? $text{'config_all'} :
|
|
$in{'server'} == -3 ? $text{'config_have'} :
|
|
$in{'server'} =~ /^group_(.*)/ ? &text('config_group', "$1") :
|
|
&text('config_on', $descmap{$in{'server'}});
|
|
&ui_print_header($ondesc, $text{'config_title'}, "");
|
|
|
|
print &ui_form_start("save_config.cgi", "post");
|
|
print &ui_hidden("mod", $in{'mod'});
|
|
foreach $h (@hosts) {
|
|
print &ui_hidden("_host", $h->{'id'});
|
|
}
|
|
print &ui_hidden("_getfrom", $getfrom->{'id'});
|
|
print &ui_table_start(&text('config_header', $minfo{'desc'}), "100%", 2);
|
|
|
|
$mdir = &module_root_directory($in{'mod'});
|
|
if (-r "$mdir/config_info.pl") {
|
|
# Module has a custom config editor
|
|
&foreign_require($in{'mod'}, "config_info.pl");
|
|
if (&foreign_defined($in{'mod'}, "config_form")) {
|
|
$func++;
|
|
&foreign_call($in{'mod'}, "config_form", \%fconfig);
|
|
}
|
|
}
|
|
if (!$func) {
|
|
# Use config.info to create config inputs
|
|
&generate_config(\%fconfig, "$mdir/config.info", $in{'mod'});
|
|
}
|
|
print &ui_table_end();
|
|
print &ui_form_end([ [ "save", $text{'save'} ] ]);
|
|
|
|
&ui_print_footer("", $text{'index_return'});
|
|
|