]>
Commit | Line | Data |
---|---|---|
1 | #!/usr/bin/perl | |
2 | ############################################################################### | |
3 | # # | |
4 | # IPFire.org - A linux based firewall # | |
5 | # Copyright (C) 2007 Michael Tremer & Christian Schmidt # | |
6 | # # | |
7 | # This program is free software: you can redistribute it and/or modify # | |
8 | # it under the terms of the GNU General Public License as published by # | |
9 | # the Free Software Foundation, either version 3 of the License, or # | |
10 | # (at your option) any later version. # | |
11 | # # | |
12 | # This program is distributed in the hope that it will be useful, # | |
13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of # | |
14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # | |
15 | # GNU General Public License for more details. # | |
16 | # # | |
17 | # You should have received a copy of the GNU General Public License # | |
18 | # along with this program. If not, see <http://www.gnu.org/licenses/>. # | |
19 | # # | |
20 | ############################################################################### | |
21 | ||
22 | ||
23 | use strict; | |
24 | ||
25 | # enable only the following on debugging purpose | |
26 | #use warnings; | |
27 | #use CGI::Carp 'fatalsToBrowser'; | |
28 | ||
29 | require '/var/ipfire/general-functions.pl'; | |
30 | require "${General::swroot}/lang.pl"; | |
31 | require "${General::swroot}/header.pl"; | |
32 | ||
33 | my %cgiparams=(); | |
34 | my %mainsettings=(); | |
35 | my %checked=(); | |
36 | my $errormessage=''; | |
37 | ||
38 | ||
39 | $cgiparams{'FX'} = 'off'; | |
40 | $cgiparams{'SPEED'} = 'off'; | |
41 | $cgiparams{'WINDOWWITHHOSTNAME'} = 'off'; | |
42 | $cgiparams{'REBOOTQUESTION'} = 'off'; | |
43 | $cgiparams{'REFRESHINDEX'} = 'off'; | |
44 | $cgiparams{'ACTION'} = ''; | |
45 | &Header::getcgihash(\%cgiparams); | |
46 | ||
47 | &Header::showhttpheaders(); | |
48 | &General::readhash("${General::swroot}/main/settings",\%mainsettings); | |
49 | if ($cgiparams{'ACTION'} eq "$Lang::tr{'save'}") | |
50 | { | |
51 | open(FILE,"${General::swroot}/langs/list"); | |
52 | my $found=0; | |
53 | while (<FILE>) | |
54 | { | |
55 | my $lang=''; | |
56 | my $engname=''; | |
57 | my $natname=''; | |
58 | chomp; | |
59 | ($lang,$engname,$natname) = split (/:/, $_,3); | |
60 | if ($cgiparams{'lang'} eq $lang) | |
61 | { | |
62 | $found=1; | |
63 | } | |
64 | } | |
65 | close (FILE); | |
66 | if ( $found == 0 ) | |
67 | { | |
68 | $errormessage="$errormessage<P>$Lang::tr{'invalid input'}"; | |
69 | goto SAVE_ERROR; | |
70 | } | |
71 | ||
72 | # Set flag if index page is to refresh whilst ppp is up. | |
73 | # Default is NO refresh. | |
74 | if ($cgiparams{'REFRESHINDEX'} ne 'off') { | |
75 | system ('/usr/bin/touch', "${General::swroot}/main/refreshindex"); | |
76 | } else { | |
77 | unlink "${General::swroot}/main/refreshindex"; | |
78 | } | |
79 | ||
80 | # Beep on ip-up or ip-down. Default is ON. | |
81 | if ($cgiparams{'PPPUPDOWNBEEP'} ne 'on') { | |
82 | $cgiparams{'PPPUPDOWNBEEP'} = 'off'; | |
83 | system ('/usr/bin/touch', "${General::swroot}/ppp/nobeeps"); | |
84 | } else { | |
85 | unlink "${General::swroot}/ppp/nobeeps"; | |
86 | } | |
87 | ||
88 | # write cgi vars to the file. | |
89 | $mainsettings{'LANGUAGE'} = $cgiparams{'lang'}; | |
90 | $mainsettings{'WINDOWWITHHOSTNAME'} = $cgiparams{'WINDOWWITHHOSTNAME'}; | |
91 | $mainsettings{'REBOOTQUESTION'} = $cgiparams{'REBOOTQUESTION'}; | |
92 | $mainsettings{'PPPUPDOWNBEEP'} = $cgiparams{'PPPUPDOWNBEEP'}; | |
93 | $mainsettings{'FX'} = $cgiparams{'FX'}; | |
94 | $mainsettings{'SPEED'} = $cgiparams{'SPEED'}; | |
95 | $mainsettings{'THEME'} = $cgiparams{'theme'}; | |
96 | $mainsettings{'REFRESHINDEX'} = $cgiparams{'REFRESHINDEX'}; | |
97 | &General::writehash("${General::swroot}/main/settings", \%mainsettings); | |
98 | &Lang::reload($cgiparams{'lang'}); | |
99 | SAVE_ERROR: | |
100 | } else { | |
101 | if ($mainsettings{'WINDOWWITHHOSTNAME'}) { | |
102 | $cgiparams{'WINDOWWITHHOSTNAME'} = $mainsettings{'WINDOWWITHHOSTNAME'}; | |
103 | } else { | |
104 | $cgiparams{'WINDOWWITHHOSTNAME'} = 'off'; | |
105 | } | |
106 | ||
107 | if ($mainsettings{'REBOOTQUESTION'}) { | |
108 | $cgiparams{'REBOOTQUESTION'} = $mainsettings{'REBOOTQUESTION'}; | |
109 | } else { | |
110 | $cgiparams{'REBOOTQUESTION'} = 'on'; | |
111 | } | |
112 | ||
113 | if ($mainsettings{'PPPUPDOWNBEEP'}) { | |
114 | $cgiparams{'PPPUPDOWNBEEP'} = $mainsettings{'PPPUPDOWNBEEP'}; | |
115 | } else { | |
116 | $cgiparams{'PPPUPDOWNBEEP'} = 'on'; | |
117 | } | |
118 | ||
119 | if ($mainsettings{'FX'}) { | |
120 | $cgiparams{'FX'} = $mainsettings{'FX'}; | |
121 | } else { | |
122 | $cgiparams{'FX'} = 'on'; | |
123 | } | |
124 | ||
125 | if ($mainsettings{'THEME'}) { | |
126 | $cgiparams{'THEME'} = $mainsettings{'THEME'}; | |
127 | } else { | |
128 | $cgiparams{'THEME'} = 'ipfire'; | |
129 | } | |
130 | ||
131 | if($mainsettings{'REFRESHINDEX'}) { | |
132 | $cgiparams{'REFRESHINDEX'} = $mainsettings{'REFRESHINDEX'}; | |
133 | } else { | |
134 | $cgiparams{'REFRESHINDEX'} = 'off'; | |
135 | } | |
136 | if($mainsettings{'SPEED'}) { | |
137 | $cgiparams{'SPEED'} = $mainsettings{'SPEED'}; | |
138 | } else { | |
139 | # if var is not defined it will be set to on because after installation var | |
140 | # is not set and the speedmeter should be displayed, it can only be deactivated | |
141 | # by manually setting the var to off | |
142 | $cgiparams{'SPEED'} = 'on'; | |
143 | } | |
144 | } | |
145 | ||
146 | # Default settings | |
147 | if ($cgiparams{'ACTION'} eq "$Lang::tr{'restore defaults'}") | |
148 | { | |
149 | $cgiparams{'WINDOWWITHHOSTNAME'} = 'off'; | |
150 | $cgiparams{'REBOOTQUESTION'} = 'on'; | |
151 | $cgiparams{'PPPUPDOWNBEEP'} = 'on'; | |
152 | $cgiparams{'REFRESHINDEX'} = 'off'; | |
153 | $cgiparams{'FX'} = 'on'; | |
154 | $cgiparams{'SPEED'} = 'on'; | |
155 | $cgiparams{'THEME'} = 'ipfire'; | |
156 | } | |
157 | ||
158 | $checked{'WINDOWWITHHOSTNAME'}{'off'} = ''; | |
159 | $checked{'WINDOWWITHHOSTNAME'}{'on'} = ''; | |
160 | $checked{'WINDOWWITHHOSTNAME'}{$cgiparams{'WINDOWWITHHOSTNAME'}} = "checked='checked'"; | |
161 | ||
162 | $checked{'REBOOTQUESTION'}{'off'} = ''; | |
163 | $checked{'REBOOTQUESTION'}{'on'} = ''; | |
164 | $checked{'REBOOTQUESTION'}{$cgiparams{'REBOOTQUESTION'}} = "checked='checked'"; | |
165 | ||
166 | $checked{'PPPUPDOWNBEEP'}{'off'} = ''; | |
167 | $checked{'PPPUPDOWNBEEP'}{'on'} = ''; | |
168 | $checked{'PPPUPDOWNBEEP'}{$cgiparams{'PPPUPDOWNBEEP'}} = "checked='checked'"; | |
169 | ||
170 | $checked{'REFRESHINDEX'}{'off'} = ''; | |
171 | $checked{'REFRESHINDEX'}{'on'} = ''; | |
172 | $checked{'REFRESHINDEX'}{$cgiparams{'REFRESHINDEX'}} = "checked='checked'"; | |
173 | ||
174 | $checked{'FX'}{'off'} = ''; | |
175 | $checked{'FX'}{'on'} = ''; | |
176 | $checked{'FX'}{$cgiparams{'FX'}} = "checked='checked'"; | |
177 | ||
178 | $checked{'SPEED'}{'off'} = ''; | |
179 | $checked{'SPEED'}{'on'} = ''; | |
180 | $checked{'SPEED'}{$cgiparams{'SPEED'}} = "checked='checked'"; | |
181 | ||
182 | &Header::openpage($Lang::tr{'gui settings'}, 1, ''); | |
183 | &Header::openbigbox('100%', 'left', '', $errormessage); | |
184 | ||
185 | if ($errormessage) { | |
186 | &Header::openbox('100%','left',$Lang::tr{'error messages'}); | |
187 | print "<font class='base'>${errormessage} </font>\n"; | |
188 | &Header::closebox(); | |
189 | } | |
190 | ||
191 | &Header::openbox('100%','left',$Lang::tr{'gui settings'}); | |
192 | ||
193 | print <<END | |
194 | <form method='post' action='$ENV{'SCRIPT_NAME'}'> | |
195 | <table width='100%'> | |
196 | <tr> | |
197 | <td colspan='2'><p><b>$Lang::tr{'display'}</b></td> | |
198 | </tr> | |
199 | <tr> | |
200 | <td><input type='checkbox' name='FX' $checked{'FX'}{'on'} /></td> | |
201 | <td>$Lang::tr{'display webinterface effects'}</td> | |
202 | </tr> | |
203 | <tr> | |
204 | <td><input type='checkbox' name='WINDOWWITHHOSTNAME' $checked{'WINDOWWITHHOSTNAME'}{'on'} /></td> | |
205 | <td>$Lang::tr{'display hostname in window title'}</td> | |
206 | </tr> | |
207 | <tr> | |
208 | <td><input type='checkbox' name='REBOOTQUESTION' $checked{'REBOOTQUESTION'}{'on'} /></td> | |
209 | <td>$Lang::tr{'reboot question'}</td> | |
210 | </tr> | |
211 | <tr> | |
212 | <td><input type='checkbox' name='REFRESHINDEX' $checked{'REFRESHINDEX'}{'on'} /></td> | |
213 | <td>$Lang::tr{'refresh index page while connected'}</td> | |
214 | </tr> | |
215 | <tr> | |
216 | <td><input type='checkbox' name='SPEED' $checked{'SPEED'}{'on'} /></td> | |
217 | <td>$Lang::tr{'show ajax speedmeter in footer'}</td> | |
218 | </tr> | |
219 | <tr> | |
220 | <td> </td> | |
221 | <td>$Lang::tr{'languagepurpose'}</td> | |
222 | </tr> | |
223 | <tr> | |
224 | <td> </td> | |
225 | <td><select name='lang'> | |
226 | END | |
227 | ; | |
228 | ||
229 | my $id=0; | |
230 | open(FILE,"${General::swroot}/langs/list"); | |
231 | while (<FILE>) | |
232 | { | |
233 | my $lang=''; | |
234 | my $engname=''; | |
235 | my $natname=''; | |
236 | $id++; | |
237 | chomp; | |
238 | ($lang,$engname,$natname) = split (/:/, $_, 3); | |
239 | print "<option value='$lang' "; | |
240 | if ($lang =~ /$mainsettings{'LANGUAGE'}/) | |
241 | { | |
242 | print " selected='selected'"; | |
243 | } | |
244 | print <<END | |
245 | >$engname ($natname)</option> | |
246 | END | |
247 | ; | |
248 | } | |
249 | ||
250 | print <<END | |
251 | </select></td></tr> | |
252 | <tr> | |
253 | <td colspan='2'><hr /><p><b>$Lang::tr{'theme'}</b></td> | |
254 | </tr> | |
255 | <tr> | |
256 | <td> </td> | |
257 | <td><select name='theme'> | |
258 | END | |
259 | ; | |
260 | ||
261 | my $dir = "/srv/web/ipfire/html/themes"; | |
262 | local *DH; | |
263 | my ($item, $file); | |
264 | my @files; | |
265 | ||
266 | # Foreach directory create am theme entry to be selected by user | |
267 | ||
268 | opendir (DH, $dir); | |
269 | while ($file = readdir (DH)) { | |
270 | next if ( $file =~ /^\./ ); | |
271 | push (@files, $file); | |
272 | } | |
273 | closedir (DH); | |
274 | ||
275 | foreach $item (sort (@files)) { | |
276 | if ( "$mainsettings{'THEME'}" eq "$item" ) { | |
277 | print "<option value='$item' selected='selected'>$item</option>\n"; | |
278 | } else { | |
279 | print "<option value='$item'>$item</option>\n"; | |
280 | } | |
281 | } | |
282 | ||
283 | print <<END | |
284 | </select></td></tr> | |
285 | <tr> | |
286 | <td colspan='2'><hr /><p><b>$Lang::tr{'sound'}</b></td> | |
287 | </tr> | |
288 | <tr> | |
289 | <td><input type ='checkbox' name='PPPUPDOWNBEEP' $checked{'PPPUPDOWNBEEP'}{'on'} /></td> | |
290 | <td>$Lang::tr{'beep when ppp connects or disconnects'}</td> | |
291 | </tr> | |
292 | <tr> | |
293 | <td colspan='2'><hr /></td> | |
294 | </tr> | |
295 | </table> | |
296 | <div align='center'> | |
297 | <table width='80%'> | |
298 | <tr> | |
299 | <td width='50%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'restore defaults'}' /></td> | |
300 | <td width='50%' align='center'><input type='submit' name='ACTION' value='$Lang::tr{'save'}' /></td> | |
301 | </tr> | |
302 | </table> | |
303 | </div> | |
304 | </form> | |
305 | END | |
306 | ; | |
307 | &Header::closebox(); | |
308 | &Header::closebigbox(); | |
309 | &Header::closepage(); | |
310 | ||
311 | ||
312 |