]>
Commit | Line | Data |
---|---|---|
ed7079a4 JPT |
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 | use strict; | |
23 | ||
24 | # enable only the following on debugging purpose | |
19b01b74 AF |
25 | #use warnings; |
26 | #use CGI::Carp 'fatalsToBrowser'; | |
ed7079a4 JPT |
27 | |
28 | require '/var/ipfire/general-functions.pl'; | |
29 | require "${General::swroot}/lang.pl"; | |
30 | require "${General::swroot}/header.pl"; | |
31 | ||
32 | my %macsettings=(); | |
33 | my $errormessage = ''; | |
34 | ||
35 | &Header::showhttpheaders(); | |
36 | ||
37 | &General::readhash("${General::swroot}/mac/settings", \%macsettings); | |
38 | ||
39 | &Header::getcgihash(\%macsettings); | |
40 | ||
41 | &Header::openpage($Lang::tr{'mac address title'}, 1, ); | |
42 | ||
43 | &Header::openbigbox('100%', 'left', '', $errormessage); | |
44 | ||
45 | if ($macsettings{'ACTION'} eq $Lang::tr{'save'}) { | |
46 | $macsettings{'MAC'} =~ s/\-/:/g; | |
47 | my @mac = split(/:/,$macsettings{"MAC"}); | |
48 | if ($#mac == 5) { | |
d4ca4a03 AF |
49 | foreach (@mac) { |
50 | unless ($_ =~ /^[a-fA-F0-9]{1,2}$/) { | |
51 | $errormessage = $Lang::tr{'mac address error not valid'}; | |
52 | last; | |
ed7079a4 | 53 | } |
ed7079a4 | 54 | } |
d4ca4a03 AF |
55 | } else { |
56 | $errormessage = $Lang::tr{'mac address error not valid'}; | |
57 | } | |
1bffb899 AF |
58 | $macsettings{'MAC1'} =~ s/\-/:/g; |
59 | if ( not ($macsettings{'MAC1'} eq "" )) { | |
60 | my @mac = split(/:/,$macsettings{"MAC1"}); | |
61 | if ($#mac == 5) { | |
62 | foreach (@mac) { | |
63 | unless ($_ =~ /^[a-fA-F0-9]{1,2}$/) { | |
64 | $errormessage = $Lang::tr{'mac address error not valid'}; | |
65 | last; | |
66 | } | |
67 | } | |
68 | } else { | |
69 | $errormessage = $Lang::tr{'mac address error not valid'}; | |
70 | } | |
71 | } | |
d4ca4a03 | 72 | $macsettings{'MAC2'} =~ s/\-/:/g; |
19b01b74 AF |
73 | if ( not ($macsettings{'MAC2'} eq "" )) { |
74 | my @mac = split(/:/,$macsettings{"MAC2"}); | |
75 | if ($#mac == 5) { | |
76 | foreach (@mac) { | |
77 | unless ($_ =~ /^[a-fA-F0-9]{1,2}$/) { | |
78 | $errormessage = $Lang::tr{'mac address error not valid'}; | |
79 | last; | |
80 | } | |
d4ca4a03 | 81 | } |
19b01b74 AF |
82 | } else { |
83 | $errormessage = $Lang::tr{'mac address error not valid'}; | |
ed7079a4 | 84 | } |
ed7079a4 | 85 | } |
d4ca4a03 AF |
86 | if ($errormessage eq "") { |
87 | $macsettings{'MAC'} =~ s/\:/-/g; | |
1bffb899 | 88 | $macsettings{'MAC1'} =~ s/\:/-/g; |
d4ca4a03 AF |
89 | $macsettings{'MAC2'} =~ s/\:/-/g; |
90 | &General::writehash("${General::swroot}/mac/settings", \%macsettings); | |
91 | &Header::openbox('100%', 'left', $Lang::tr{'mac address saved'}); | |
92 | print "<font class='base'>$Lang::tr{'mac address saved txt'}</font>\n"; | |
93 | &Header::closebox(); | |
94 | } | |
ed7079a4 | 95 | } |
2e7457d3 | 96 | if ($macsettings{'ACTION'} eq $Lang::tr{'reconnect'}) { |
ed7079a4 JPT |
97 | system("/usr/local/bin/redctrl restart >/dev/null 2>&1 &"); |
98 | &Header::openbox('100%', 'left', $Lang::tr{'mac address recon'} ); | |
99 | print "<font class='base'>$Lang::tr{'mac address done'}</font>\n"; | |
100 | &Header::closebox(); | |
101 | } | |
2e7457d3 | 102 | if ($macsettings{'ACTION'} eq $Lang::tr{'delete'} ) { |
958a98a2 JPT |
103 | system("cat /dev/null > ${General::swroot}/mac/settings &"); |
104 | &Header::openbox('100%', 'left', $Lang::tr{'mac address deleted'} ); | |
105 | print "<font class='base'>$Lang::tr{'mac address deleted txt'}</font>\n"; | |
106 | &Header::closebox(); | |
107 | } | |
2e7457d3 JPT |
108 | if ($macsettings{'ACTION'} eq $Lang::tr{'reboot'}) { |
109 | &General::log($Lang::tr{'rebooting ipfire'}); | |
110 | system("/usr/local/bin/ipfirereboot boot"); | |
111 | &Header::openbox('100%', 'left', $Lang::tr{'rebooting ipfire'} ); | |
112 | print " <img src='/images/indicator.gif' /><br /><br />"; | |
113 | print "<meta http-equiv='refresh' content='120;'>"; | |
114 | &Header::closebox(); | |
115 | } | |
ed7079a4 JPT |
116 | |
117 | # DPC move error message to top so it is seen! | |
118 | if ($errormessage) { | |
119 | &Header::openbox('100%', 'left', $Lang::tr{'error messages'}); | |
120 | print "<font class='base'>$errormessage </font>\n"; | |
121 | &Header::closebox(); | |
122 | } | |
123 | ||
124 | print "<form method='post' action='$ENV{'SCRIPT_NAME'}'>\n"; | |
125 | ||
126 | &Header::openbox('100%', 'left', $Lang::tr{'mac address header'}); | |
127 | print <<END | |
128 | ||
129 | <table border="0" width='100%'> | |
130 | <tr> | |
599cc8bc | 131 | <td colspan="2"><font class='base'>$Lang::tr{'mac desc'}</font></td> |
ed7079a4 JPT |
132 | </tr> |
133 | <tr> | |
599cc8bc | 134 | <td colspan="2"> </td> |
ed7079a4 JPT |
135 | </tr> |
136 | <tr> | |
599cc8bc | 137 | <td width="25%"><font class='base'>$Lang::tr{'mac new'} </font></td><td> |
2e7457d3 JPT |
138 | END |
139 | ; | |
140 | if ($macsettings{'ACTION'} eq $Lang::tr{'delete'} ) { | |
141 | print <<END | |
142 | <input type="text" name="MAC" maxlength="17" value=''/></td> | |
143 | END | |
144 | ; | |
145 | } else { | |
146 | print <<END | |
13c13410 | 147 | <input type="text" name="MAC" maxlength="17" value='$macsettings{"MAC"}'/></td> |
2e7457d3 JPT |
148 | END |
149 | ; | |
150 | } | |
1bffb899 AF |
151 | print <<END |
152 | </tr> | |
153 | <tr> | |
154 | <td> </td> | |
155 | </tr> | |
156 | <tr> | |
157 | <td><font class='base'>$Lang::tr{'mac1 new'} </font></td><td> | |
158 | END | |
159 | ; | |
160 | if ($macsettings{'ACTION'} eq $Lang::tr{'delete'} ) { | |
161 | print <<END | |
162 | <input type="text" name="MAC1" maxlength="17" value=''/><img src='/blob.gif' alt='*' /></td> | |
163 | END | |
164 | ; | |
165 | } else { | |
166 | print <<END | |
167 | <input type="text" name="MAC1" maxlength="17" value='$macsettings{"MAC1"}'/><img src='/blob.gif' alt='*' /></td> | |
168 | END | |
169 | ; | |
170 | } | |
2e7457d3 | 171 | print <<END |
ed7079a4 | 172 | </tr> |
599cc8bc JPT |
173 | <tr> |
174 | <td> </td> | |
d4ca4a03 AF |
175 | </tr> |
176 | <tr> | |
177 | <td><font class='base'>$Lang::tr{'mac2 new'} </font></td><td> | |
178 | END | |
179 | ; | |
180 | if ($macsettings{'ACTION'} eq $Lang::tr{'delete'} ) { | |
181 | print <<END | |
599cc8bc | 182 | <input type="text" name="MAC2" maxlength="17" value=''/><img src='/blob.gif' alt='*' /></td> |
d4ca4a03 AF |
183 | END |
184 | ; | |
185 | } else { | |
186 | print <<END | |
599cc8bc | 187 | <input type="text" name="MAC2" maxlength="17" value='$macsettings{"MAC2"}'/><img src='/blob.gif' alt='*' /></td> |
d4ca4a03 AF |
188 | END |
189 | ; | |
190 | } | |
1bffb899 | 191 | |
d4ca4a03 AF |
192 | print <<END |
193 | </tr> | |
599cc8bc | 194 | <tr> |
cc37572c | 195 | <td colspan="2"><br><hr /></td> |
ed7079a4 JPT |
196 | </tr> |
197 | <tr> | |
cc37572c AM |
198 | <td align='left'><img src='/blob.gif' alt='*' /> $Lang::tr{'this field may be blank'}</td><div align="right"></td> |
199 | <td align='right'> | |
2e7457d3 JPT |
200 | END |
201 | ; | |
202 | if ($macsettings{'ACTION'} eq $Lang::tr{'delete'} ) { | |
203 | print <<END | |
204 | <input type='submit' name='ACTION' value='$Lang::tr{'save'}' /> | |
205 | | |
206 | <input type='submit' name='ACTION' value='$Lang::tr{'delete'}' /> | |
207 | | |
208 | <input type='submit' name='ACTION' value='$Lang::tr{'reboot'}' /> | |
209 | END | |
210 | ; | |
211 | } elsif ($macsettings{'ACTION'} eq $Lang::tr{'save'} && $errormessage eq "") { | |
212 | print <<END | |
13c13410 JPT |
213 | <input type='submit' name='ACTION' value='$Lang::tr{'save'}' /> |
214 | | |
2e7457d3 | 215 | <input type='submit' name='ACTION' value='$Lang::tr{'delete'}' /> |
958a98a2 | 216 | |
2e7457d3 JPT |
217 | <input type='submit' name='ACTION' value='$Lang::tr{'reconnect'}' /> |
218 | END | |
219 | ; | |
220 | } elsif ($macsettings{'ACTION'} eq $Lang::tr{'save'}) { | |
221 | print <<END | |
222 | <input type='submit' name='ACTION' value='$Lang::tr{'save'}' /> | |
223 | END | |
224 | ; | |
225 | } else { | |
226 | print <<END | |
227 | <input type='submit' name='ACTION' value='$Lang::tr{'save'}' /> | |
228 | | |
229 | <input type='submit' name='ACTION' value='$Lang::tr{'delete'}' /> | |
230 | END | |
231 | ; | |
232 | } | |
233 | print <<END | |
13c13410 | 234 | </div></td> |
ed7079a4 JPT |
235 | </tr> |
236 | </table> | |
237 | ||
238 | END | |
239 | ; | |
ed7079a4 JPT |
240 | &Header::closebox(); |
241 | ||
242 | print "</form>\n"; | |
243 | ||
244 | &Header::closebigbox(); | |
245 | ||
246 | &Header::closepage(); | |
247 |