#!/usr/local/bin/perl
# Display the advanced options form
require './webmin-lib.pl';
&ui_print_header(undef, $text{'advanced_title'}, "");
&get_miniserv_config(\%miniserv);
print &ui_form_start("change_advanced.cgi", "post");
print &ui_table_start($text{'advanced_header'}, undef, 2);
# Global temp directory
print &ui_table_row($text{'advanced_temp'},
&ui_opt_textbox("tempdir", $gconfig{'tempdir'},
30, $text{'advanced_tempdef'})."
".
&ui_checkbox("tempdirdelete", 1, $text{'advanced_tdd'},
$gconfig{'tempdirdelete'}));
# Temp files clearing period
print &ui_table_row($text{'advanced_tempdelete'},
&ui_opt_textbox("tempdelete", $gconfig{'tempdelete_days'},
5, $text{'advanced_nodelete'})." ".
$text{'advanced_days'});
# Per-module temp directories
@mods = sort { $a->{'desc'} cmp $b->{'desc'} } &get_all_module_infos();
$ttable = &ui_columns_start([ $text{'advanced_tmod'},
$text{'advanced_tdir'} ]);
$i = 0;
foreach $d (&get_tempdirs(\%gconfig), [ ]) {
$ttable .= &ui_columns_row([
&ui_select("tmod_$i", $d->[0],
[ [ "", " " ],
map { [ $_->{'dir'}, $_->{'desc'} ] } @mods ]),
&ui_textbox("tdir_$i", $d->[1], 30)
]);
$i++;
}
$ttable .= &ui_columns_end();
print &ui_table_row($text{'advanced_tempmods'}, $ttable);
@preloads = &get_preloads(\%miniserv);
if (!@preloads && (!$miniserv{'premodules'} ||
$miniserv{'premodules'} eq 'WebminCore')) {
# New-style preload possible or enabled
print &ui_table_row($text{'advanced_preload'},
&ui_yesno_radio("preload",
$miniserv{'premodules'} eq 'WebminCore'));
}
elsif ($preloads[0]->[0] eq "main" && $preloads[0]->[1] eq "web-lib-funcs.pl") {
# Old-style preloads enabled
print &ui_table_row($text{'advanced_preload'},
&ui_yesno_radio("preload", 1));
}
# Files to pre-cache
$mode = $miniserv{'precache'} eq 'none' ? 0 :
$miniserv{'precache'} eq '' ? 1 : 2;
print &ui_table_row($text{'advanced_precache'},
&ui_radio("precache_mode", $mode,
[ [ 0, $text{'advanced_precache0'}."
" ],
[ 1, $text{'advanced_precache1'}."
" ],
[ 2, &text('advanced_precache2',
&ui_textbox("precache",
$mode == 2 ? $miniserv{'precache'} : "", 40)) ] ]));
# Umask for created files
print &ui_table_row($text{'advanced_umask'},
&ui_opt_textbox("umask", $gconfig{'umask'}, 5, $text{'default'}));
# Overwrite immutable files
if (&has_command("chattr")) {
print &ui_table_row($text{'advanced_chattr'},
&ui_yesno_radio("chattr", $gconfig{'chattr'}));
}
# Nice level for cron jobs
if (&foreign_check("proc")) {
&foreign_require("proc", "proc-lib.pl");
print &ui_table_row($text{'advanced_nice'},
&ui_radio("nice_def", $gconfig{'nice'} eq '' ? 1 : 0,
[ [ 1, $text{'default'} ],
[ 0, $text{'advanced_pri'}." ".
&proc::nice_selector("nice", $gconfig{'nice'} || 0) ] ]));
# IO scheduling class and priority
if (defined(&proc::os_list_scheduling_classes) &&
(@classes = &proc::os_list_scheduling_classes())) {
print &ui_table_row($text{'advanced_sclass'},
&ui_select("sclass", $gconfig{'sclass'},
[ [ undef, $text{'default'} ],
@classes ]));
@prios = &proc::os_list_scheduling_priorities();
print &ui_table_row($text{'advanced_sprio'},
&ui_select("sprio", $gconfig{'sprio'},
[ [ undef, $text{'default'} ],
@prios ]));
}
}
print &ui_table_end();
print &ui_form_end([ [ "save", $text{'save'} ] ]);
&ui_print_footer("", $text{'index_return'});