Handle hostnames with upper-case letters
[webmin.git] / webalizer / save_global.cgi
1 #!/usr/local/bin/perl
2 # save_global.cgi
3 # Save options to a webalizer.conf file
4
5 require './webalizer-lib.pl';
6 &error_setup($text{'global_err'});
7 $access{'view'} && &error($text{'edit_ecannot'});
8 &ReadParse();
9 !$in{'file'} || &can_edit_log($in{'file'}) || &error($text{'edit_ecannot'});
10 $in{'file'} || $access{'global'} || &error($text{'edit_ecannot'});
11
12 $cfile = &config_file_name($in{'file'}) if ($in{'file'});
13 if ($in{'delete'}) {
14         # Just delete the configuration for this logfile
15         &unlink_logged($cfile);
16         &redirect("");
17         exit;
18         }
19
20 &lock_file($cfile || $config{'webalizer_conf'});
21 $conf = &get_config($in{'file'});
22
23 # Validate and store inputs
24 if ($in{'report_def'}) {
25         &save_directive($conf, "ReportTitle");
26         }
27 else {
28         $in{'report'} =~ /\S/ || &error($text{'global_ereport'});
29         &save_directive($conf, "ReportTitle", $in{'report'});
30         }
31
32 if ($in{'host_def'}) {
33         &save_directive($conf, "HostName");
34         }
35 elsif (defined($in{'host'})) {
36         $in{'host'} =~ /^\S+$/ || &error($text{'global_ehost'});
37         &save_directive($conf, "HostName", $in{'host'});
38         }
39
40 @pages = split(/\s+/, $in{'page'});
41 &save_directive($conf, "PageType", @pages);
42
43 @index = split(/\s+/, $in{'index'});
44 &save_directive($conf, "IndexAlias", @index);
45
46 if ($in{'gmt'}) {
47         &save_directive($conf, "GMTTime", "yes");
48         }
49 else {
50         &save_directive($conf, "GMTTime");
51         }
52
53 if ($in{'fold'}) {
54         &save_directive($conf, "FoldSeqErr", "yes");
55         }
56 else {
57         &save_directive($conf, "FoldSeqErr");
58         }
59
60 if ($in{'visit_def'}) {
61         &save_directive($conf, "VisitTimeout");
62         }
63 else {
64         $in{'visit'} =~ /^\d+$/ || &error($text{'global_evisit'});
65         &save_directive($conf, "VisitTimeout", $in{'visit'});
66         }
67
68 if ($in{'dns_def'}) {
69         &save_directive($conf, "DNSChildren");
70         }
71 else {
72         $in{'dns'} =~ /^\d+$/ || &error($text{'global_edns'});
73         &save_directive($conf, "DNSChildren", $in{'dns'});
74         }
75
76 if ($in{'history_def'}) {
77         &save_directive($conf, "HistoryName");
78         }
79 else {
80         $in{'history'} =~ /^\S+$/ || &error($text{'global_ehistory'});
81         &save_directive($conf, "HistoryName", $in{'history'});
82         }
83
84 if ($in{'current_def'}) {
85         &save_directive($conf, "IncrementalName");
86         }
87 else {
88         $in{'current'} =~ /^\S+$/ || &error($text{'global_ecurrent'});
89         &save_directive($conf, "IncrementalName", $in{'current'});
90         }
91
92 if ($in{'cache_def'}) {
93         &save_directive($conf, "DNSCache");
94         }
95 else {
96         $in{'cache'} =~ /^\S+$/ || &error($text{'global_ecache'});
97         &save_directive($conf, "DNSCache", $in{'cache'});
98         }
99
100 foreach $g ('DailyGraph', 'DailyStats', 'HourlyGraph',
101             'HourlyStats', 'CountryGraph', 'GraphLegend') {
102         if ($in{$g}) {
103                 &save_directive($conf, $g);
104                 }
105         else {
106                 &save_directive($conf, $g, "no");
107                 }
108         }
109
110 foreach $t ('TopSites', 'TopKSites', 'TopURLs', 'TopKURLs', 'TopReferrers',
111             'TopAgents', 'TopCountries', 'TopEntry', 'TopExit',
112             'TopSearch', 'TopUsers') {
113         if ($in{"${t}_def"} == 1) {
114                 &save_directive($conf, $t);
115                 }
116         elsif ($in{"${t}_def"} == 2) {
117                 &save_directive($conf, $t, "0");
118                 }
119         else {
120                 $in{$t} =~ /^\d+$/ || &error(&text('global_etable',
121                                                    $text{"global_$t"}));
122                 &save_directive($conf, $t, $in{$t});
123                 }
124         }
125
126 foreach $a ('AllSites', 'AllURLs', 'AllReferrers', 'AllAgents',
127             'AllSearchStr', 'AllUsers') {
128         if ($in{$a}) {
129                 &save_directive($conf, $a, "yes");
130                 }
131         else {
132                 &save_directive($conf, $a);
133                 }
134         }
135
136 foreach $hid ("HideURL", "HideSite", "HideReferrer",
137               "HideUser", "HideAgent") {
138         @hidv = split(/\s+/, $in{lc($hid)});
139         &save_directive($conf, $hid, @hidv);
140         }
141
142 foreach $ign ("IgnoreURL", "IgnoreSite", "IgnoreReferrer",
143               "IgnoreUser", "IgnoreAgent") {
144         @ignv = split(/\s+/, $in{lc($ign)});
145         &save_directive($conf, $ign, @ignv);
146         }
147
148 foreach $inc ("IncludeURL", "IncludeSite", "IncludeReferrer",
149               "IncludeUser", "IncludeAgent") {
150         @incv = split(/\s+/, $in{lc($inc)});
151         &save_directive($conf, $inc, @incv);
152         }
153
154 &flush_file_lines();
155 &unlock_file($cfile || $config{'webalizer_conf'});
156 &webmin_log("modify", "global", $in{'file'});
157 &redirect($in{'file'} ? "edit_log.cgi?file=".&urlize($in{'file'}).
158                         "&type=$in{'type'}&custom=$in{'custom'}" : "");
159