Handle hostnames with upper-case letters
[webmin.git] / webmin / change_advanced.cgi
1 #!/usr/local/bin/perl
2 # Save advanced options
3
4 require './webmin-lib.pl';
5 &ReadParse();
6 &error_setup($text{'advanced_err'});
7 &get_miniserv_config(\%miniserv);
8
9 # Save global temp dir setting
10 if ($in{'tempdir_def'}) {
11         delete($gconfig{'tempdir'});
12         }
13 else {
14         -d $in{'tempdir'} || &error($text{'advanced_etemp'});
15         $gconfig{'tempdir'} = $in{'tempdir'};
16         }
17
18 # Save temp clearing options
19 $gconfig{'tempdirdelete'} = $in{'tempdirdelete'};
20 if ($in{'tempdelete_def'}) {
21         $gconfig{'tempdelete_days'} = '';
22         }
23 else {
24         $in{'tempdelete'} =~ /^[0-9\.]+$/ ||
25                 &error($text{'advanced_etempdelete'});
26         $gconfig{'tempdelete_days'} = $in{'tempdelete'};
27         }
28
29 # Save per-module temp dirs
30 for($i=0; defined($tmod = $in{'tmod_'.$i}); $i++) {
31         next if (!$tmod);
32         $tdir = $in{'tdir_'.$i};
33         %minfo = &get_module_info($tmod);
34         -d $tdir || &error(&text('advanced_etdir', $minfo{'desc'}));
35         push(@tdirs, [ $tmod, $tdir ]);
36         }
37 &save_tempdirs(\%gconfig, \@tdirs);
38
39 # Save umask
40 if ($in{'umask_def'}) {
41         delete($gconfig{'umask'});
42         }
43 else {
44         $in{'umask'} =~ /^[0-7]{3}$/ || &error($text{'advanced_eumask'});
45         $gconfig{'umask'} = $in{'umask'};
46         }
47
48 # Save chattr
49 if (defined($in{'chattr'})) {
50         $gconfig{'chattr'} = $in{'chattr'};
51         }
52
53 # Save nice level
54 if ($in{'nice_def'}) {
55         delete($gconfig{'nice'});
56         }
57 else {
58         $gconfig{'nice'} = $in{'nice'};
59         }
60
61 # Save scheduling class
62 if (defined($in{'sclass'})) {
63         $gconfig{'sclass'} = $in{'sclass'};
64         $gconfig{'sprio'} = $in{'sprio'};
65         }
66
67 &lock_file("$config_directory/config");
68 &write_file("$config_directory/config", \%gconfig);
69 &unlock_file("$config_directory/config");
70
71 if (defined($in{'preload'})) {
72         # Save preload option, forcing new mode
73         if ($in{'preload'}) {
74                 $miniserv{'premodules'} = 'WebminCore';
75                 }
76         else {
77                 delete($miniserv{'premodules'});
78                 }
79         &save_preloads(\%miniserv, [ ]);
80         }
81
82 # Save pre-cache option
83 if ($in{'precache_mode'} == 0) {
84         $miniserv{'precache'} = 'none';
85         }
86 elsif ($in{'precache_mode'} == 1) {
87         $miniserv{'precache'} = '';
88         }
89 else {
90         $in{'precache'} =~ /\S/ || &error($text{'advanced_eprecache'});
91         $miniserv{'precache'} = $in{'precache'};
92         }
93
94 &lock_file($ENV{'MINISERV_CONFIG'});
95 &put_miniserv_config(\%miniserv);
96 &unlock_file($ENV{'MINISERV_CONFIG'});
97
98 &show_restart_page();
99 &webmin_log("advanced");
100