]>
git.ipfire.org Git - ipfire-2.x.git/blob - src/wio/wio.cgi
3 ###############################################################################
5 # IPFire.org - A linux based firewall #
6 # Copyright (C) 2017-2020 Stephan Feddersen <sfeddersen@ipfire.org> #
7 # All Rights Reserved. #
9 # This program is free software: you can redistribute it and/or modify #
10 # it under the terms of the GNU General Public License as published by #
11 # the Free Software Foundation, either version 3 of the License, or #
12 # (at your option) any later version. #
14 # This program is distributed in the hope that it will be useful, #
15 # but WITHOUT ANY WARRANTY; without even the implied warranty of #
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
17 # GNU General Public License for more details. #
19 # You should have received a copy of the GNU General Public License #
20 # along with this program. If not, see <http://www.gnu.org/licenses/>. #
22 ###############################################################################
24 # Version: 2020/08/04 21:12:23
26 # This wio.cgi is based on the code from the IPCop WIO Addon
27 # and is extremly adapted to work with IPFire.
29 # Autor: Stephan Feddersen
30 # Co-Autor: Alexander Marx
31 # Co-Autor: Frank Mainz (for some code for the IPCop WIO Addon)
36 # enable only the following on debugging purpose
39 #use CGI::Carp 'fatalsToBrowser';
44 use POSIX
qw(strftime);
49 require '/var/ipfire/general-functions.pl';
50 require '/var/ipfire/network-functions.pl';
51 require '/var/ipfire/lang.pl';
52 require '/var/ipfire/header.pl';
53 require '/usr/lib/wio/wio-lib.pl';
54 require '/usr/lib/wio/wio-graphs.pl';
56 my $logdir = "/var/log/wio";
58 my ( %mainsettings, %mailsettings, %wiosettings, %cgiparams, %netsettings, %ipshash, %vpnsettings,
59 %vpnconfighash, %ovpnconfighash, %ovpnccdconfhash, %ovpnsettings, %checked, %selected, %color ) = ();
61 &General
::readhash
('/var/ipfire/main/settings', \
%mainsettings);
62 &General
::readhash
('/var/ipfire/ethernet/settings', \
%netsettings);
63 &General
::readhash
('/var/ipfire/dma/mail.conf', \
%mailsettings);
64 &General
::readhash
('/var/ipfire/wio/wio.conf', \
%wiosettings);
65 &General
::readhash
("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \
%color);
66 &General
::readhasharray
('/var/ipfire/ovpn/ovpnconfig', \
%ovpnconfighash);
67 &General
::readhash
('/var/ipfire/ovpn/settings', \
%ovpnsettings);
68 &General
::readhasharray
('/var/ipfire/ovpn/ccd.conf', \
%ovpnccdconfhash);
69 &General
::readhasharray
('/var/ipfire/vpn/config', \
%vpnconfighash);
70 &General
::readhash
('/var/ipfire/vpn/settings', \
%vpnsettings);
72 my $ipadrfile = "$logdir/wioips";
73 my $onoffip = "$logdir/wioscip";
74 my $wiosettings = "/var/ipfire/wio/wio.conf";
75 my $dyndnsconfig = "/var/ipfire/ddns/config";
76 my $importfile = "$logdir/importfile";
77 my $wiofile = "$logdir/wiofile";
78 my $editfile = "$logdir/editfile";
79 my $hostfile = "/var/ipfire/main/hosts";
80 my $dhcpfile = "/var/ipfire/dhcp/fixleases";
81 my $imgstatic = "/images/wio";
82 my $rrddir = "/var/log/rrd/wio";
83 my $refreshbox = '<meta http-equiv="refresh" content="0;url=/cgi-bin/wio.cgi">';
84 my $sortstring = '^IPADR|^HOST';
85 my $ovpnaddon = "/var/ipfire/ovpn";
86 my $ovpnpid = "/var/run/openvpn.pid";
87 my $vpnpid = "/var/run/charon.pid";
88 my $redactive = "/var/ipfire/red/active";
90 my $now = strftime
"%Y-%m-%d", localtime;
92 if ( -e
$redactive ) {
93 open(IPADDR
, "/var/ipfire/red/local-ipaddress");
109 my $arpbuttontext = "$Lang::tr{'wio_show_table_on'}";
110 my $clientimportbuttontext = "$Lang::tr{'wio_show_table_on'}";
111 my $networksearchbuttontext = "$Lang::tr{'wio_show_table_on'}";
113 my ( $message, $infomessage, $errormessage, $importmessage ) = '';
115 my ( $buttontext, $host, $timestamp, $ipadr, $on, $remark, $dyndns, $dyndnsip, $sendemailon, $net, $dev, $iprange, $output, $write, $webinterface,
116 $sendemailoff, $pingmethode, $online, $color, $bgcolor, $exitcode, $id, $line, $interface, $counter, $vpnn2nip, $vpnn2nmask, $edc,
117 $edd, $wmon, $wmoff, $ipfqdn, $http, $wioscan, $statustxt, $status, $key, $ic, $text, $image ) = ();
119 my ( @temp, @dates, @ipaddresses, @names, @remark, @sendemailon, @sendemailoff, @current, @ddns, @match, @webinterface, @arpcache, @arpadd, @line,
120 @hosts, @vpnstatus, @ovpnstatus, @activ, @dyndns, @pingmethode, @status, @id, @write, @log );
122 my @nosaved = ('ACTION','ID','CLIENTID','TIMESTAMP','IPADR','HOST','REMARK','DYNDNS','SENDEMAILON','SENDEMAILOFF','PINGMETHODE','ONLINE','WEBINTERFACE');
124 my @devs_color = ('GREEN','BLUE','ORANGE','RED');
125 my @devs_net = ('green0','blue0','orange0','red0');
126 my @devs_img = ('green.png','blue.png','orange.png','red.png');
127 my @devs_alt = ('green','blue','orange','red');
129 my %ifacecolor = ( GREEN
=> 'wio_run_green', BLUE
=> 'wio_run_blue', ORANGE
=> 'wio_run_orange');
131 #if ( $netsettings{'RED_TYPE'} eq 'STATIC' || $netsettings{'RED_TYPE'} eq 'DHCP' ) {
132 # %ifacecolor = ( %ifacecolor, RED => 'wio_run_red' );
139 $wiosettings{'ACTION'} = '';
140 $wiosettings{'COUNT'} = '';
141 $wiosettings{'ID'} = '';
142 $wiosettings{'CLIENTID'} = '';
143 $wiosettings{'SORT'} = 'IPADR';
144 $wiosettings{'HOST'} = '';
145 $wiosettings{'IPADR'} = '';
146 $wiosettings{'EN'} = 'on';
147 $wiosettings{'REMARK'} = '';
148 $wiosettings{'DYNDNS'} = '';
149 $wiosettings{'CLIENTREMARK'} = '';
150 $wiosettings{'SENDEMAILON'} = '';
151 $wiosettings{'SENDEMAILOFF'} = '';
152 $wiosettings{'PINGMETHODE'} = 'ip';
153 $wiosettings{'WEBINTERFACE'} = '----';
154 $wiosettings{'TIMEOUT'} = '1';
155 $wiosettings{'TIMESTAMP'} = '';
156 $wiosettings{'ONLINE'} = 'off';
157 $wiosettings{'CRON'} = '15';
158 $wiosettings{'OVPNCRON'} = '5';
159 $wiosettings{'ENABLE'} = 'off';
160 $wiosettings{'LOGGING'} = 'off';
161 $wiosettings{'MAILREMARK'} = 'off';
162 $wiosettings{'MAILSTYLE'} = 'email';
163 $wiosettings{'OVPNRWMAIL'} = 'off';
164 $wiosettings{'WIOGUISHOWARPTABLE'} = '';
165 $wiosettings{'WIOGUISHOWCLIENTIMPORTTABLE'} = '';
166 $wiosettings{'WIOGUISHOWNETWORKSEARCHTABLE'} = '';
168 &Header
::getcgihash
(\
%wiosettings);
169 &Header
::getcgihash
(\
%mainsettings);
170 &Header
::getcgihash
(\
%mailsettings);
171 &Header
::getcgihash
(\
%netsettings);
173 if ( $mailsettings{'USEMAIL'} eq 'on' ) { $wiosettings{'SENDEMAIL'} = 'on'; }
174 else { $wiosettings{'SENDEMAIL'} = 'off'; }
176 if ( -e
$wiofile ) { goto WIOSCAN
; }
179 foreach (@devs_color) {
180 if ( $netsettings{"${_}_DEV"} ne '' ) {
181 $wiosettings{"${_}_IPLOW"} = &Network
::find_next_ip_address
($netsettings{"${_}_NETADDRESS"}, 1);
183 my $broadcast = &Network
::get_broadcast
($netsettings{"${_}_NETADDRESS"} . "/" . $netsettings{"${_}_NETMASK"});
184 $wiosettings{"${_}_IPHIGH"} = &Network
::find_next_ip_address
($broadcast, -1);
190 if ( $wiosettings{'ACTION'} eq $Lang::tr
{'wio_save'}.'1' ) {
191 unless ( `ps -A | grep wio.pl` ) {
192 $cgiparams{'SORT'} = $wiosettings{'SORT'};
193 $cgiparams{'CRON'} = $wiosettings{'CRON'};
194 $cgiparams{'OVPNCRON'} = $wiosettings{'OVPNCRON'};
195 $cgiparams{'ENABLE'} = $wiosettings{'ENABLE'};
196 $cgiparams{'LOGGING'} = $wiosettings{'LOGGING'};
197 $cgiparams{'TIMEOUT'} = $wiosettings{'TIMEOUT'};
198 $cgiparams{'ACTION'} = $wiosettings{'ACTION'};
199 $cgiparams{'CLIENTREMARK'} = $wiosettings{'CLIENTREMARK'};
200 $cgiparams{'MAILREMARK'} = $wiosettings{'MAILREMARK'};
201 $cgiparams{'MAILSTYLE'} = $wiosettings{'MAILSTYLE'};
202 $cgiparams{'OVPNRWMAIL'} = $wiosettings{'OVPNRWMAIL'};
204 &General
::writehash
($wiosettings, \
%cgiparams);
205 &General
::readhash
($wiosettings, \
%wiosettings);
207 if ( $wiosettings{'ENABLE'} eq 'off' ) {
208 &WIO
::clearfile
($ipadrfile);
209 unlink glob "$rrddir/*";
213 $infomessage = "$Lang::tr{'wio_error_function'}";
217 ## save imported clients
219 if ( $wiosettings{'ACTION'} eq $Lang::tr
{'wio_save'}.'2' ) {
220 unless ( `ps -A | grep wio.pl` ) {
221 while ( $count < $wiosettings{'COUNT'} ) {
222 if ( defined($wiosettings{"USE$count"}) && $wiosettings{"USE$count"} eq 'on' ) {
223 $wiosettings{'CLIENTID'} = $wiosettings{"CLIENTID$count"};
224 $wiosettings{'TIMESTAMP'} = $wiosettings{"TIMESTAMP$count"};
225 $wiosettings{'IPADR'} = $wiosettings{"IPADR$count"};
226 $wiosettings{'HOST'} = $wiosettings{"HOST$count"};
227 $wiosettings{'EN'} = $wiosettings{"EN$count"};
228 $wiosettings{'REMARK'} = $wiosettings{"REMARK$count"};
229 $wiosettings{'DYNDNS'} = $wiosettings{"DYNDNS$count"};
230 $wiosettings{'SENDEMAILON'} = $wiosettings{"SENDEMAILON$count"};
231 $wiosettings{'SENDEMAILOFF'} = $wiosettings{"SENDEMAILOFF$count"};
232 $wiosettings{'PINGMETHODE'} = $wiosettings{"PINGMETHODE$count"};
233 $wiosettings{'ONLINE'} = $wiosettings{"ONLINE$count"};
234 $wiosettings{'WEBINTERFACE'} = $wiosettings{"WEBINTERFACE$count"};
239 open(FILE
, ">> $editfile");
240 print FILE
"$wiosettings{'CLIENTID'},$wiosettings{'TIMESTAMP'},$wiosettings{'IPADR'},$wiosettings{'HOST'},$wiosettings{'EN'},$wiosettings{'REMARK'},$wiosettings{'DYNDNS'},$wiosettings{'SENDEMAILON'},$wiosettings{'SENDEMAILOFF'},$wiosettings{'PINGMETHODE'},$wiosettings{'ONLINE'},$wiosettings{'WEBINTERFACE'}\n";
242 $importmessage = $errormessage;
245 $wiosettings{'CLIENTID'} = &General
::findhasharraykey
(\
%ipshash);
246 unshift (@current, "$wiosettings{'CLIENTID'},$wiosettings{'TIMESTAMP'},$wiosettings{'IPADR'},$wiosettings{'HOST'},$wiosettings{'EN'},$wiosettings{'REMARK'},$wiosettings{'DYNDNS'},$wiosettings{'SENDEMAILON'},$wiosettings{'SENDEMAILOFF'},$wiosettings{'PINGMETHODE'},$wiosettings{'ONLINE'},$wiosettings{'WEBINTERFACE'}\n");
247 &SortDataFile
('',@current);
253 map ($wiosettings{$_} = '' ,@nosaved);
254 unlink ($importfile);
255 if ( -e
"$editfile" ) { goto EDIT
; }
258 $infomessage = "$Lang::tr{'wio_error_function'}";
262 ## add or update client
264 if ( $wiosettings{'ACTION'} eq $Lang::tr
{'wio_client_add'} ) {
265 unless ( `ps -A | grep wio.pl` ) {
268 unless ($errormessage) {
269 if ( $wiosettings{'ID'} eq '' && $wiosettings{'ACTION'} ne $Lang::tr
{'edit'} ) {
270 $wiosettings{'CLIENTID'} = &General
::findhasharraykey
(\
%ipshash);
271 unshift (@current, "$wiosettings{'CLIENTID'},$wiosettings{'TIMESTAMP'},$wiosettings{'IPADR'},$wiosettings{'HOST'},$wiosettings{'EN'},$wiosettings{'REMARK'},$wiosettings{'DYNDNS'},$wiosettings{'SENDEMAILON'},$wiosettings{'SENDEMAILOFF'},$wiosettings{'PINGMETHODE'},$wiosettings{'ONLINE'},$wiosettings{'WEBINTERFACE'}\n");
274 @current[$wiosettings{'ID'}] = "$wiosettings{'CLIENTID'},$wiosettings{'TIMESTAMP'},$wiosettings{'IPADR'},$wiosettings{'HOST'},$wiosettings{'EN'},$wiosettings{'REMARK'},$wiosettings{'DYNDNS'},$wiosettings{'SENDEMAILON'},$wiosettings{'SENDEMAILOFF'},$wiosettings{'PINGMETHODE'},$wiosettings{'ONLINE'},$wiosettings{'WEBINTERFACE'}\n";
279 map ($wiosettings{$_} = '' ,@nosaved);
280 &SortDataFile
('',@current);
283 $infomessage = "$Lang::tr{'wio_error_function'}";
287 ## show / hide arptable
289 if ( $wiosettings{'WIOGUISHOWARPTABLE'} eq 'arptable' ) {
290 unless ( `ps -A | grep wio.pl` ) {
291 if ( $wiosettings{'ACTION'} eq $Lang::tr
{'wio_show_table_off'} ) {
292 $wiosettings{'WIOGUISHOWARPTABLE'} = 'off';
293 $arpbuttontext = "$Lang::tr{'wio_show_table_on'}";
296 $wiosettings{'WIOGUISHOWARPTABLE'} = 'on';
297 $arpbuttontext = "$Lang::tr{'wio_show_table_off'}";
301 $infomessage = "$Lang::tr{'wio_error_function'}";
305 ## show / hide clientimporttable
307 if ( $wiosettings{'WIOGUISHOWCLIENTIMPORTTABLE'} eq 'clientimport' ) {
308 unless ( `ps -A | grep wio.pl` ) {
309 if ( $wiosettings{'ACTION'} eq $Lang::tr
{'wio_show_table_off'} ) {
310 $wiosettings{'WIOGUISHOWCLIENTIMPORTTABLE'} = 'off';
311 $clientimportbuttontext = "$Lang::tr{'wio_show_table_on'}";
314 $wiosettings{'WIOGUISHOWCLIENTIMPORTTABLE'} = 'on';
315 $clientimportbuttontext = "$Lang::tr{'wio_show_table_off'}";
319 $infomessage = "$Lang::tr{'wio_error_function'}";
323 ## show / hide networksearchtable
325 if ( $wiosettings{'WIOGUISHOWNETWORKSEARCHTABLE'} eq 'networksearch' ) {
326 unless ( `ps -A | grep wio.pl` ) {
327 if ( $wiosettings{'ACTION'} eq $Lang::tr
{'wio_show_table_off'} ) {
328 $wiosettings{'WIOGUISHOWNETWORKSEARCHTABLE'} = 'off';
329 $networksearchbuttontext = "$Lang::tr{'wio_show_table_on'}";
332 $wiosettings{'WIOGUISHOWNETWORKSEARCHTABLE'} = 'on';
333 $networksearchbuttontext = "$Lang::tr{'wio_show_table_off'}";
337 $infomessage = "$Lang::tr{'wio_error_function'}";
343 if ( $wiosettings{'ACTION'} eq $Lang::tr
{'wio_add'} ) {
344 unless ( `ps -A | grep wio.pl` ) {
345 open(FILE
, "$logdir/.arpcache");
349 chomp(@arpadd[$wiosettings{'ID'}]);
350 @temp = split (/\,/, @arpadd[$wiosettings{'ID'}]);
352 $wiosettings{'CLIENTID'} = &General
::findhasharraykey
(\
%ipshash);
353 $wiosettings{'IPADR'} = $temp[1];
354 $wiosettings{'HOST'} = $temp[2];
355 $wiosettings{'EN'} = 'on';
357 $wiosettings{'PINGMETHODE'} = 'ip';
358 $wiosettings{'ONLINE'} = 'off';
360 open(FILE
, ">> $editfile");
361 print FILE
"$wiosettings{'CLIENTID'},$wiosettings{'TIMESTAMP'},$wiosettings{'IPADR'},$wiosettings{'HOST'},$wiosettings{'EN'},$wiosettings{'REMARK'},$wiosettings{'DYNDNS'},$wiosettings{'SENDEMAILON'},$wiosettings{'SENDEMAILOFF'},$wiosettings{'PINGMETHODE'},$wiosettings{'ONLINE'},$wiosettings{'WEBINTERFACE'}\n";
367 undef($wiosettings{'ID'});
368 $infomessage = "$Lang::tr{'wio_error_function'}";
372 ## enable / disable client || enable / disable dyndns || enable / disable sendemailon || enable / disable sendemailoff || change ip / fqdn
374 if ( $wiosettings{'ACTION'} eq $Lang::tr
{'enable disable client'} ) { $edc = 'on'; }
375 if ( $wiosettings{'ACTION'} eq $Lang::tr
{'enable disable dyndns'} ) { $edd = 'on'; }
376 if ( $wiosettings{'ACTION'} eq $Lang::tr
{'wio_mail_online'} ) { $wmon = 'on'; }
377 if ( $wiosettings{'ACTION'} eq $Lang::tr
{'wio_mail_offline'} ) { $wmoff = 'on'; }
378 if (( $wiosettings{'ACTION'} eq $Lang::tr
{'wio_ip_on'} ) || ( $wiosettings{'ACTION'} eq $Lang::tr
{'wio_fqdn_on'} )) { $ipfqdn = 'on'; }
380 if ( defined($edc) || defined($edd) || defined($wmon) || defined($wmoff) || defined($ipfqdn) ) {
381 unless ( `ps -A | grep wio.pl` ) {
382 chomp(@current[$wiosettings{'ID'}]);
383 @temp = split (/\,/, @current[$wiosettings{'ID'}]);
385 if ( $edc eq 'on' ) {
386 $temp[4] = $temp[4] ne '' ?
'' : 'on';
390 unlink "$rrddir/$temp[0].rrd";
392 elsif ( $edd eq 'on' ) { $temp[6] = $temp[6] ne '' ?
'' : 'on'; }
393 elsif ( $wmon eq 'on' ) { $temp[7] = $temp[7] ne '' ?
'' : 'on'; }
394 elsif ( $wmoff eq 'on' ) { $temp[8] = $temp[8] ne '' ?
'' : 'on'; }
395 elsif ( $ipfqdn eq 'on' ) { $temp[9] = $temp[9] eq 'fqdn' ?
'ip' : 'fqdn'; }
397 @current[$wiosettings{'ID'}] = join (',', @temp)."\n";
398 undef($wiosettings{'ID'});
403 undef($wiosettings{'ID'});
404 $infomessage = "$Lang::tr{'wio_error_function'}";
408 ## refresh wio status || refresh single client status
410 if ( $wiosettings{'ACTION'} eq $Lang::tr
{'wio_refresh'} || $wiosettings{'ACTION'} eq $Lang::tr
{'wio_sc_refresh'} ) {
412 unless ( `ps -A | grep wio.pl` ) {
414 if ( $wiosettings{'ACTION'} eq $Lang::tr
{'wio_sc_refresh'} ) {
415 open(FILE
, "> $onoffip");
416 print FILE
@current[$wiosettings{'ID'}];
419 undef($wiosettings{'ID'});
422 &Header
::showhttpheaders
();
423 &Header
::openpage
($Lang::tr
{'wio'}, 1, $refreshbox);
424 &Header
::openbigbox
('100%', 'left', '');
425 &Header
::openbox
('100%', 'left', $Lang::tr
{'wio_info'});
428 <table align='center' width='100%'>
429 <tr><td align='center'>$Lang::tr{'wio_msg'}</td></tr>
430 <tr><td> </td></tr>
431 <tr><td align='center'><img align='middle' src='/images/indicator.gif' /></td></tr>
436 &Header
::closebigbox
();
437 &Header
::closepage
();
439 while ( system("/usr/local/bin/wiohelper", "&") ) {}
444 $infomessage = "$Lang::tr{'wio_already_running'}";
452 if ( $wiosettings{'ACTION'} eq $Lang::tr
{'wio_dyndns_refresh'} ) {
453 unless ( `ps -A | grep wio.pl` ) {
454 chomp(@current[$wiosettings{'ID'}]);
455 @temp = split (/\,/, @current[$wiosettings{'ID'}]);
457 ($temp[2], $infomessage) = &WIO
::getdyndnsip
($temp[2], $temp[3]);
459 @current[$wiosettings{'ID'}] = join (',', @temp)."\n";
463 undef($wiosettings{'ID'});
466 $infomessage = "$Lang::tr{'wio_error_function'}";
472 if ( $wiosettings{'ACTION'} eq $Lang::tr
{'edit'} ) {
473 unless ( `ps -A | grep wio.pl` ) {
474 chomp(@current[$wiosettings{'ID'}]);
475 @temp = split (/\,/, @current[$wiosettings{'ID'}]);
477 $wiosettings{'CLIENTID'} = $temp[0];
478 $wiosettings{'TIMESTAMP'} = $temp[1];
479 $wiosettings{'IPADR'} = $temp[2];
480 $wiosettings{'HOST'} = $temp[3];
481 $wiosettings{'EN'} = $temp[4];
482 $wiosettings{'REMARK'} = $temp[5];
483 $wiosettings{'DYNDNS'} = $temp[6];
484 $wiosettings{'SENDEMAILON'} = $temp[7];
485 $wiosettings{'SENDEMAILOFF'} = $temp[8];
486 $wiosettings{'PINGMETHODE'} = $temp[9];
487 $wiosettings{'ONLINE'} = $temp[10];
488 $wiosettings{'WEBINTERFACE'} = $temp[11];
491 undef($wiosettings{'ACTION'});
492 $infomessage = "$Lang::tr{'wio_error_function'}";
498 if ( $wiosettings{'ACTION'} eq $Lang::tr
{'wio_remove_client'} ) {
499 unless ( `ps -A | grep wio.pl` ) {
500 chomp(@current[$wiosettings{'ID'}]);
502 @temp = split (/\,/, @current[$wiosettings{'ID'}]);
504 unlink "$rrddir/$temp[0].rrd";
506 splice (@current,$wiosettings{'ID'},1);
510 undef($wiosettings{'ID'});
513 undef($wiosettings{'ID'});
514 $infomessage = "$Lang::tr{'wio_error_function'}";
518 ## remove all clients
520 if ( $wiosettings{'ACTION'} eq $Lang::tr
{'wio_remove_all'} ) {
521 unless ( `ps -A | grep wio.pl` ) {
522 &WIO
::clearfile
($ipadrfile);
523 unlink glob "$rrddir/*";
527 $infomessage = "$Lang::tr{'wio_error_function'}";
533 if ( $wiosettings{'ACTION'} eq $Lang::tr
{'wio_back'} ) {
534 if ( -e
"$importfile" ) { unlink ($importfile); }
535 map ($wiosettings{$_} = '' ,@nosaved);
536 undef($errormessage);
539 ## import hosts, fixleases or csv file || scan networks (green/blue/orange)
541 if ( $wiosettings{'ACTION'} eq 'wio_run_green' ||
542 $wiosettings{'ACTION'} eq 'wio_run_blue' ||
543 $wiosettings{'ACTION'} eq 'wio_run_red' ||
544 $wiosettings{'ACTION'} eq 'wio_run_orange') { $wioscan = 'on'; }
546 if ( $wiosettings{'ACTION'} eq $Lang::tr
{'wio_import'}.'1' ||
547 $wiosettings{'ACTION'} eq $Lang::tr
{'wio_import'}.'2' ||
548 $wiosettings{'ACTION'} eq $Lang::tr
{'wio_import'}.'3' ||
549 defined($wioscan) || defined($importmessage) ) {
551 unless ( `ps -A | grep wio.pl` ) {
552 if ( $wiosettings{'ACTION'} eq $Lang::tr
{'wio_import'}.'1' && $importmessage eq '' ) {
554 &Header
::getcgihash
(\
%wiosettings, {'wantfile' => 1, 'filevar' => 'CSVFILE'});
556 if ( $wiosettings{'CSVFILE'} eq '' ) {
557 $errormessage = $Lang::tr
{'wio_no_file_selected'};
558 $message = 2; goto ERROR
;
561 if ( $wiosettings{'CSVFILE'} =~ /[^a-z0-9A-Z\ \.\-\_\:\\]+/ ) {
562 $errormessage = $Lang::tr
{'wio_no_csv_error'};
563 $message = 2; goto ERROR
;
566 if ( !($wiosettings{'CSVFILE'} =~ /.csv$/) ) {
567 $errormessage = $Lang::tr
{'wio_no_csv'};
568 $message = 2; goto ERROR
;
571 if (copy
($wiosettings{'CSVFILE'}, "$logdir/importfile") != 1) {
573 $message = 2; goto ERROR
;
579 &General
::readhash
($wiosettings, \
%wiosettings);
581 &Header
::showhttpheaders
();
582 &Header
::openpage
($Lang::tr
{'wio'}, 1, '');
583 &Header
::openbigbox
('100%', 'left');
585 if ($importmessage) {
586 &Header
::openbox
('100%', 'left', $Lang::tr
{'wio_error'}, 'error');
587 print" <table width='100%'><tr><td><font class='base'>$importmessage</font></td></tr></table>";
591 if ( -e
"$editfile" ) {
592 open(FILE
, "< $editfile" ); }
593 elsif ( $wiosettings{'ACTION'} eq $Lang::tr
{'wio_import'}.'1' ) {
594 open(FILE
, "< $importfile" ); }
595 elsif ( $wiosettings{'ACTION'} eq $Lang::tr
{'wio_import'}.'2' ) {
596 open(FILE
, "< $hostfile" ); }
597 elsif ( $wiosettings{'ACTION'} eq $Lang::tr
{'wio_import'}.'3' ) {
598 open(FILE
, "< $dhcpfile" ); }
599 elsif ( $wioscan eq 'on' ) {
601 foreach (keys(%ifacecolor)) {
602 if ( $netsettings{"${_}_DEV"} eq $wiosettings{'ID'} ) {
603 $dev = $netsettings{"${_}_DEV"};
604 $iprange = $wiosettings{"${_}_IPLOW"} . "-" . $wiosettings{"${_}_IPHIGH"};
606 if ( $_ eq 'GREEN' ) { $color = "$Header::colourgreen"; $net = $Lang::tr
{'wio_msg_green'}; }
607 elsif ( $_ eq 'BLUE' ) { $color = "$Header::colourblue"; $net = $Lang::tr
{'wio_msg_blue'}; }
608 elsif ( $_ eq 'RED' ) { $color = "$Header::colourred"; $net = $Lang::tr
{'wio_msg_red'}; }
609 else { $color = "$Header::colourorange"; $net = $Lang::tr
{'wio_msg_orange'}; }
613 &Header
::openbox
('100%', 'left', $Lang::tr
{'wio_info'});
614 print"<table width='100%'>
615 <tr><td align='center'><font class='base'>$Lang::tr{'wio_msg_left'} </font><font class='base' color='$color'><b>$net</b></font> $Lang::tr{'wio_msg_center'} <font class='base'> $Lang::tr{'wio_msg_right'} $Lang::tr{'wio_msg_hint'}</font></td></tr>
616 <tr><td> </td></tr>
617 <tr><td align='center'><img align='middle' src='/images/indicator.gif' /></td></tr>
620 &Header
::closebigbox
();
622 open(FILE
, "/usr/local/bin/wioscan -wsa $dev $iprange |" );
629 if ( $wioscan ne 'on' && ! -e
$wiofile ) { @hosts = sort @hosts; }
631 open(FILE
, "> $wiofile");
635 print"<meta http-equiv=\"refresh\" content=\"0; URL=$ENV{'SCRIPT_NAME'}\">";
642 open(FILE
, "< $wiofile");
646 &General
::readhash
($wiosettings, \
%wiosettings);
648 &Header
::showhttpheaders
();
649 &Header
::openpage
($Lang::tr
{'wio'}, 1, '');
650 &Header
::openbigbox
('100%', 'left');
656 @line = split (/\,/, $_);
658 if ( -e
$editfile || -e
$importfile ) {
659 $wiosettings{'CLIENTID$count'} = $line[0];
660 $wiosettings{'TIMESTAMP$count'} = $line[1];
661 $wiosettings{'IPADR$count'} = $line[2];
662 $wiosettings{'HOST$count'} = $line[3];
663 $wiosettings{'EN$count'} = $line[4];
664 $wiosettings{'REMARK$count'} = $line[5];
665 $wiosettings{'DYNDNS$count'} = $line[6];
666 $wiosettings{'SENDEMAILON$count'} = $line[7];
667 $wiosettings{'SENDEMAILOFF$count'} = $line[8];
668 $wiosettings{'PINGMETHODE$count'} = $line[9];
669 $wiosettings{'ONLINE$count'} = $line[10];
670 $wiosettings{'WEBINTERFACE$count'} = $line[11];
671 $wiosettings{'USE$count'} = 'on';
674 $wiosettings{'IPADR$count'} = $line[1];
675 $wiosettings{'EN$count'} = 'on';
676 $wiosettings{'PINGMETHODE$count'} = 'ip';
677 $wiosettings{'USE$count'} = 'on';
679 if ( $wiosettings{'ACTION'} eq $Lang::tr
{'wio_import'}.'2' ) {
680 $wiosettings{'HOST$count'} = $line[2];
681 $wiosettings{'DOM$count'} = $line[3];
682 $wiosettings{'REMARK$count'} = '';
684 elsif ( $wioscan eq 'on' || -e
$wiofile ) {
685 $wiosettings{'HOST$count'} = gethostbyaddr(inet_aton
($line[1]), AF_INET
);
686 if ($wiosettings{'HOST$count'} eq '') { $wiosettings{'HOST$count'} = $line[1]; }
687 $wiosettings{'REMARK$count'} = '';
690 $wiosettings{'HOST$count'} = $line[7];
691 $wiosettings{'REMARK$count'} = $line[6];
695 $checked{'EN$count'}{'on'} = ($wiosettings{'EN$count'} eq '' ) ?
'' : "checked='checked'";
697 $checked{'DYNDNS$count'}{'on'} = ($wiosettings{'DYNDNS$count'} eq '' ) ?
'' : "checked='checked'";
698 $checked{'SENDEMAILON$count'}{'on'} = ($wiosettings{'SENDEMAILON$count'} eq '' ) ?
'' : "checked='checked'";
699 $checked{'SENDEMAILOFF$count'}{'on'} = ($wiosettings{'SENDEMAILOFF$count'} eq '' ) ?
'' : "checked='checked'";
701 $checked{'PINGMETHODE$count'}{'ip'} = $checked{'PINGMETHODE$count'}{'fqdn'} = '';
702 $checked{'PINGMETHODE$count'}{$wiosettings{'PINGMETHODE$count'}} = "checked='checked'";
704 $checked{'USE$count'}{'on'} = ($wiosettings{'USE$count'} eq '' ) ?
'' : "checked='checked'";
706 $selected{'WEBINTERFACE$count'}{'----'} = '';
707 $selected{'WEBINTERFACE$count'}{'HTTP'} = '';
708 $selected{'WEBINTERFACE$count'}{'HTTPS'} = '';
709 $selected{'WEBINTERFACE$count'}{$wiosettings{'WEBINTERFACE$count'}} = "selected='selected'";
711 if (! &WIO
::checkinto
($wiosettings{'IPADR$count'}, $wiosettings{'HOST$count'}, @current) ) {
713 if ( $importmessage ) {
714 &Header
::openbox
('100%', 'left', "$Lang::tr{'wio_import_data'}'$wiosettings{'HOST$count'}'$Lang::tr{'wio_import_data1'}");
716 elsif ( $wiosettings{'ACTION'} eq $Lang::tr
{'wio_import'}.'1' || $wioscan eq 'on' || -e
$wiofile || -e
$editfile ) {
717 &Header
::openbox
('100%', 'left', "$Lang::tr{'wio_import_data'}'$wiosettings{'HOST$count'}'$Lang::tr{'wio_import_data2'}");
719 elsif ( $wiosettings{'ACTION'} eq $Lang::tr
{'wio_import'}.'2' ) {
720 &Header
::openbox
('100%', 'left', "$Lang::tr{'wio_import_data'}'$wiosettings{'HOST$count'}.$wiosettings{'DOM$count'}'$Lang::tr{'wio_import_data2'}");
723 &Header
::openbox
('100%', 'left', $Lang::tr
{'wio_import_leases'});
727 <form method='post' action='$ENV{'SCRIPT_NAME'}' enctype='multipart/form-data'>
728 <input type='hidden' name='ONLINE$count' value='$wiosettings{'ONLINE$count'}' />
732 <td>$Lang::tr{'wio_use'}</td>
733 <td><input type='checkbox' name='USE$count' $checked{'USE$count'}{'on'} /></td>
736 <td>$Lang::tr{'wio_client_enable'}</td>
737 <td><input type='checkbox' name='EN$count' $checked{'EN$count'}{'on'} /></td>
740 <td>$Lang::tr{'host ip'}:</td>
741 <td><input type='text' name='IPADR$count' value='$wiosettings{'IPADR$count'}' size='18' /></td>
742 <td>$Lang::tr{'hostname'}:</td>
745 if ( $wiosettings{'ACTION'} eq $Lang::tr
{'wio_import'}.'2' ) {
746 print"<td><input type='text' name='HOST$count' size='18' value='$wiosettings{'HOST$count'}.$wiosettings{'DOM$count'}' /></td>";
749 print"<td><input type='text' name='HOST$count' size='18' value='$wiosettings{'HOST$count'}' /></td>";
753 <td>$Lang::tr{'remark'}:</td>
754 <td><input type='text' name='REMARK$count' value='$wiosettings{'REMARK$count'}' size='18' /></td>
757 <td class='base'>$Lang::tr{'wio_ping_send'}:</td>
758 <td align='left'><input type='radio' name='PINGMETHODE$count' value='ip' $checked{'PINGMETHODE$count'}{'ip'} /> IP <input type='radio' name='PINGMETHODE$count' value='fqdn' $checked{'PINGMETHODE$count'}{'fqdn'} /> FQDN</td>
759 <td>$Lang::tr{'wio_dyndns'}:</td>
760 <td><input type='checkbox' name='DYNDNS$count' $checked{'DYNDNS$count'}{'on'} /></td>
763 if ( $wiosettings{'SENDEMAIL'} eq 'on' ) {
764 print"<td>$Lang::tr{'wio_sendemail'}:</td>
765 <td><input type='checkbox' name='SENDEMAILON$count' $checked{'SENDEMAILON$count'}{'on'} /> $Lang::tr{'wio_online'} <input type='checkbox' name='SENDEMAILOFF$count' $checked{'SENDEMAILOFF$count'}{'on'} /> $Lang::tr{'wio_offline'}</td>";
768 print"<td colspan='2'> </td>";
774 <td height='30'>$Lang::tr{'wio_link_open'}:</td>
775 <td align='left' colspan='5'>
776 <select size='1' name='WEBINTERFACE$count' width='80' style='width: 80px'>
777 <option value='----' $selected{'WEBINTERFACE$count'}{'----'}>----</option>
778 <option value='HTTP' $selected{'WEBINTERFACE$count'}{'HTTP'}>HTTP</option>
779 <option value='HTTPS' $selected{'WEBINTERFACE$count'}{'HTTPS'}>HTTPS</option>
792 if ( $showcount gt 0 ) {
793 &Header
::openbox
('100%', 'left', $Lang::tr
{'wio_import_infos'});
800 if ($importmessage) { print"<td> </td>"; }
801 else { print"<td><font color='$color{'color11'}'>$Lang::tr{'wio_import_infos_csv'}</font></td>"; }
805 <tr><td colspan='4'> </td></tr>
809 <td width='25%'> </td>
810 <td width='25%'><input type='hidden' name='COUNT' value='$count' /><input type='hidden' name='ACTION' value='$Lang::tr{'wio_save'}2' /><input type='submit' name='SUBMIT' value='$Lang::tr{'wio_save'}' /></form></td>
811 <td width='25%'><form method='post' action='$ENV{'SCRIPT_NAME'}' enctype='multipart/form-data'><input type='submit' name='ACTION' value='$Lang::tr{'wio_back'}' /></form></td>
812 <td width='25%'> </td>
818 &Header
::closebigbox
();
819 &Header
::closepage
();
822 print"<meta http-equiv=\"refresh\" content=\"0; URL=$ENV{'SCRIPT_NAME'}?INFO\">";
825 if ( -e
"$editfile" ) { unlink ($editfile); }
826 if ( -e
"$wiofile" ) { unlink($wiofile); }
830 $infomessage = "$Lang::tr{'wio_error_function'}";
836 if ($ENV{'QUERY_STRING'} =~ /$sortstring/ ) {
837 my $string = $ENV{'QUERY_STRING'};
839 if ( $string eq 'INFO' ) {
840 $infomessage = $Lang::tr
{'wio_import_info_csv'};
843 &General
::readhash
($wiosettings, \
%wiosettings);
845 my $actual = $wiosettings{'SORT'};
847 if ($actual =~ $string) {
849 if ($actual !~ 'Rev') { $Rev = 'Rev'; }
853 system("/bin/sed -i 's#$wiosettings{'SORT'}#$string#g' $wiosettings");
855 $wiosettings{'SORT'} = $string;
856 map ($wiosettings{$_} = '' ,@nosaved);
857 &SortDataFile
('',@current);
865 unless($message == 1) { &General
::readhash
($wiosettings, \
%wiosettings); }
867 for ($i=5; $i<=60; $i+=5) { $selected{'CRON'}{$i} = ''; }
869 $selected{'CRON'}{$wiosettings{'CRON'}} = "selected='selected'";
871 for ($i=1; $i<=15; $i++) {
872 $selected{'TIMEOUT'}{$i} = '';
873 $selected{'OVPNCRON'}{$i} = '';
876 $selected{'TIMEOUT'}{$wiosettings{'TIMEOUT'}} = "selected='selected'";
877 $selected{'OVPNCRON'}{$wiosettings{'OVPNCRON'}} = "selected='selected'";
879 $checked{'ENABLE'}{'off'} = $checked{'ENABLE'}{'on'} = '';
880 $checked{'ENABLE'}{$wiosettings{'ENABLE'}} = "checked='checked'";
882 $checked{'LOGGING'}{'off'} = $checked{'LOGGING'}{'on'} = '';
883 $checked{'LOGGING'}{$wiosettings{'LOGGING'}} = "checked='checked'";
885 $checked{'CLIENTREMARK'}{'off'} = $checked{'CLIENTREMARK'}{'on'} = '';
886 $checked{'CLIENTREMARK'}{$wiosettings{'CLIENTREMARK'}} = "checked='checked'";
888 $checked{'MAILREMARK'}{'off'} = $checked{'MAILREMARK'}{'on'} = '';
889 $checked{'MAILREMARK'}{$wiosettings{'MAILREMARK'}} = "checked='checked'";
891 $checked{'OVPNRWMAIL'}{'off'} = $checked{'OVPNRWMAIL'}{'on'} = '';
892 $checked{'OVPNRWMAIL'}{$wiosettings{'OVPNRWMAIL'}} = "checked='checked'";
894 $checked{'MAILSTYLE'}{'smail'} = $checked{'MAILSTYLE'}{'email'} = '';
895 $checked{'MAILSTYLE'}{$wiosettings{'MAILSTYLE'}} = "checked='checked'";
897 &Header
::showhttpheaders
();
898 &Header
::openpage
($Lang::tr
{'wio'}, 1, "<meta http-equiv='expires' content='-1'><meta http-equiv='cache-control' content='no-store, no-cache, must-revalidate'><meta http-equiv='pragma' content='no-cache'>");
899 &Header
::openbigbox
('100%', 'left', '');
901 ## DEBUG / ERROR / INFO / UPDATE
904 &Header
::openbox
('100%', 'left', 'DEBUG', 'warning');
906 print"errormessage: $errormessage<br />\n";
907 print"infomessage: $infomessage<br />\n";
912 foreach (sort keys %wiosettings) {
913 print"$_ = $wiosettings{$_}<br />\n";
920 foreach (sort keys %netsettings) {
921 print"$_ = $netsettings{$_}<br />\n";
927 if ( $errormessage ) {
928 &Header
::openbox
('100%', 'left', $Lang::tr
{'wio_error'}, 'error');
929 print"<table width='100%'><tr><td><font class='base'><b>$errormessage</b></font></td></tr></table>";
933 if ( $infomessage ) {
934 &Header
::openbox
('100%', 'left', $Lang::tr
{'wio_info'}, 'warning');
935 print"<table width='100%'><tr><td><font class='base'><b>$infomessage</b></font></td></tr></table>";
941 if ( $wiosettings{'ACTION'} eq $Lang::tr
{'edit'}.'1' || $message == 1 || $wiosettings{'ENABLE'} eq 'off' ) {
943 &Header
::openbox
('100%', 'left', $Lang::tr
{'wio settings'});
946 <form method='post' action='$ENV{'SCRIPT_NAME'}' enctype='multipart/form-data'>
949 <td bgcolor='$color{'color20'}' align='left'><b>$Lang::tr{'wio_settings_msg_hint'}</b></td>
950 <td colspan='2'> </td>
953 <td width='48%'> </td>
954 <td width='2%'> </td>
955 <td width='50%'> </td>
958 <td align='right'>$Lang::tr{'wio enabled'}</td>
961 print"<td> </td>";
963 if ( $wiosettings{'ENABLE'} eq 'on' ) {
964 print"<td align='left'><input type='checkbox' onClick=\"return confirm('$Lang::tr{'wio_disable_hint'}')\" name='ENABLE' $checked{'ENABLE'}{'on'} /></td>";
967 print"<td align='left'><input type='checkbox' name='ENABLE' $checked{'ENABLE'}{'on'} /></td>";
971 <tr><td colspan='3'> </td></tr>
973 <td align='right'>$Lang::tr{'wio cron'}</td>
975 <td align='left'><select size='1' name='CRON' size='5'>
978 for ($i=5; $i<=60; $i+=5) {
979 $_ = sprintf("%02s",$i);
980 print "<option $selected{'CRON'}{$_}>$_</option>\n";
984 </select> $Lang::tr{'wio min'}</td>
986 <tr><td colspan='3'> </td></tr>
988 <td align='right'>$Lang::tr{'wio timeout'}</td>
990 <td align='left'><select size='1' name='TIMEOUT' size='5'>
993 for ($i=1; $i<=15; $i++) {
994 $_ = sprintf("%02s",$i);
995 print "<option $selected{'TIMEOUT'}{$_}>$_</option>\n";
999 </select> $Lang::tr{'wio sec'}</td>
1001 <tr><td colspan='3'> </td></tr>
1003 <td align='right'>$Lang::tr{'wio_logging'}</td>
1005 <td align='left'><input type='checkbox' name='LOGGING' $checked{'LOGGING'}{'on'} /></td>
1007 <tr><td colspan='3'> </td></tr>
1009 <td align='right'>$Lang::tr{'wio_clientremark'}</td>
1011 <td align='left'><input type='checkbox' name='CLIENTREMARK' $checked{'CLIENTREMARK'}{'on'} /></td>
1013 <tr><td colspan='3'> </td></tr>
1016 if ( $wiosettings{'SENDEMAIL'} eq 'on' ) {
1019 <td align='right'>$Lang::tr{'wio_mail_style'}:</td>
1021 <td align='left'><input type='radio' name='MAILSTYLE' value='smail' $checked{'MAILSTYLE'}{'smail'} /> $Lang::tr{'wio_mail_smail'} <input type='radio' name='MAILSTYLE' value='email' $checked{'MAILSTYLE'}{'email'} /> $Lang::tr{'wio_mail_email'}</td>
1023 <tr><td colspan='3'> </td></tr>
1025 <td align='right'>$Lang::tr{'wio_mailremark_enabled'}</td>
1027 <td align='left'><input type='checkbox' name='MAILREMARK' $checked{'MAILREMARK'}{'on'}></td>
1029 <tr><td colspan='3'> </td></tr>
1032 if ( -e
"$ovpnaddon" || ! -z
"/var/ipfire/vpn/config" ) {
1035 <td align='right'>$Lang::tr{'wio_mail_ovpnrw'}</td>
1037 <td align='left'><input type='checkbox' name='OVPNRWMAIL' $checked{'OVPNRWMAIL'}{'on'}></td>
1039 <tr><td colspan='3'> </td></tr>
1041 <td align='right'>$Lang::tr{'wio_ovpn_cron'}</td>
1043 <td align='left'><select size='1' name='OVPNCRON' size='5'>
1046 for ($i=1; $i<=15; $i++) {
1047 $_ = sprintf("%02s",$i);
1048 print "<option $selected{'OVPNCRON'}{$_}>$_</option>\n";
1052 </select> $Lang::tr{'wio min'}</td>
1054 <tr><td colspan='3'> </td></tr>
1058 <tr><td colspan='3'> </td></tr>
1060 <td colspan='2'> </td>
1061 <td align='left'><input type='hidden' name='ACTION' value='$Lang::tr{'wio_save'}1' /><input type='submit' name='submit' value='$Lang::tr{'wio_save'}' />"
1062 .($wiosettings{'ENABLE'} ne 'off' ?
" <input type='button' onClick='location.href=\"/cgi-bin/wio.cgi\"' value='$Lang::tr{'wio_back'}'>" : "")
1069 &Header
::closebox
();
1070 &Header
::closebigbox
();
1071 &Header
::closepage
();
1075 ## wio client status
1077 if ( $wiosettings{'ENABLE'} eq 'on') {
1078 if ( !$errormessage && $wiosettings{'ACTION'} ne $Lang::tr
{'edit'} || $message == 2 ) {
1079 &Header
::openbox
('100%', 'left', $Lang::tr
{'wio stat'});
1081 foreach (@current) {
1084 ($id,$timestamp,$ipadr,$host,$on,$remark,$dyndns,$sendemailon,$sendemailoff,$pingmethode,$online,$webinterface) = split (/\,/, $_);
1086 if ( defined($dyndns) && ( $dyndns =~ 'on' ) ) {
1087 ($dyndnsip, $infomessage) = &WIO
::getdyndnsip
($ipadr, $host);
1089 if ( $dyndnsip ne $ipadr ) {
1097 if ( $on eq 'on' ) { push (@dates,($timestamp)); }
1098 else { push (@dates,('-')); }
1100 push (@ipaddresses,($ipadr));
1101 push (@names,($host));
1102 push (@activ,($on));
1103 push (@remark,($remark));
1104 push (@dyndns,($dyndns));
1105 push (@sendemailon,($sendemailon));
1106 push (@sendemailoff,($sendemailoff));
1107 push (@pingmethode,($pingmethode));
1108 push (@status,($online));
1109 push (@webinterface,($webinterface));
1111 push (@write, "$id,$timestamp,$ipadr,$host,$on,$remark,$dyndns,$sendemailon,$sendemailoff,$pingmethode,$online,$webinterface\n");
1116 if ( defined($write) ) { &writeips
(); }
1121 <table border='0' width='100%' bordercolor='$Header::bordercolour' cellspacing='0' cellpadding='0' style='border-collapse: collapse'>
1123 <td width='33%' bgcolor='$color{'color20'}' align='left'><b> $Lang::tr{'wio_wan_con'}</b></td>
1124 <td width='67%' align='right'> </td>
1126 <tr><td colspan='2'> </td></tr>
1129 <table border='0' width='100%' bordercolor='$Header::bordercolour' cellspacing='0' cellpadding='0' style='border-collapse: collapse'>
1130 <tr bgcolor='$color{'color20'}' height='20'>
1131 <td width='3%' align='center'><b>$Lang::tr{'wio_id'}</b></td>
1132 <td width='15%' align='center'><b>$Lang::tr{'wio ipadress'}</b></td>
1133 <td width='7%' align='center'><b>$Lang::tr{'wio network'}</b></td>
1134 <td width='15%' align='center'><b>$Lang::tr{'wio_lanname'}</b></td>
1135 <td width='15%' align='center'><b>$Lang::tr{'wio_wanname'}</b></td>
1136 <td width='20%' align='center'><b>$Lang::tr{'wio_dyndns_hosts'}</b></td>
1137 <td width='11%' align='center'><b>$Lang::tr{'wio image'}</b></td>
1138 <td width='14%' align='center'><b>$Lang::tr{'wio_connected'}</b></td>
1140 <tr bgcolor='$color{'color22'}' height='20'>
1141 <td align='center'>01</td>
1142 <td align='center'><font color='$Header::colourred'>$redip</font></td>
1143 <td align='center'><img align='middle' src='$imgstatic/red.png' alt='$Lang::tr{'internet'}' title='$Lang::tr{'internet'}' /></td>
1144 <td align='center'><font color='$Header::colourgreen'>".$mainsettings{'HOSTNAME'}.".".$mainsettings{'DOMAINNAME'}."</font></td>
1145 <td align='center'><font color='$Header::colourred'>".( $redip ne '-' ?
(gethostbyaddr(pack("C4", split (/\./, $redip)), 2))[0] : '-' )."</font></td>
1149 if ( -s
"$dyndnsconfig" ) {
1151 open(FILE
, "< $dyndnsconfig");
1158 @temp = split (/\,/, $_);
1160 if ( $temp[7] eq "on" ) {
1161 $bgcolor = ( &General
::DyndnsServiceSync
(&General
::GetDyndnsRedIP
,$temp[1],$temp[2]) ?
"$Header::colourgreen" : "$Header::colourred" );
1167 print"<font color='$bgcolor'>$temp[1].$temp[2]</font>";
1168 if ( $iddyndns++ ne (@ddns-1) ) { print"<br />\n"; }
1178 <table bgcolor='".( -e
$redactive ?
"${Header::colourgreen}" : "${Header::colourred}" )."' cellpadding='2' cellspacing='0' width='100%'>
1180 <td align='center'><font color='white'><b>".( -e
$redactive ?
$Lang::tr
{'wio_wan_up'} : $Lang::tr
{'wio_wan_down'} )."</b></font></td>
1184 <td align='center'><font color='$Header::colourred'>".( -e
"$redactive" ?
&General
::age
("$redactive") : '-' )."</font></td>
1186 <tr height='1'><td colspan='9' bgcolor='#696565'></td></tr>
1192 ## vpn connection(s)
1194 if ( -e
"$vpnpid" ) {
1196 @vpnstatus = `/usr/local/bin/ipsecctrl I`;
1199 <table border='0' width='100%' bordercolor='$Header::bordercolour' cellspacing='0' cellpadding='0' style='border-collapse: collapse'>
1201 <td width='33%' bgcolor='$color{'color20'}' align='left'><b> $Lang::tr{'wio_vpn_con'}</b></td>
1202 <td width='67%'> </td>
1204 <tr><td colspan='2'> </td></tr>
1206 <table border='0' width='100%' bordercolor='$Header::bordercolour' cellspacing='0' cellpadding='0' style='border-collapse: collapse'>
1207 <tr bgcolor='$color{'color20'}' height='20'>
1208 <td width='3%' align='center'><b>$Lang::tr{'wio_id'}</b></td>
1209 <td width='19%' align='center'><b>$Lang::tr{'wio checked'}</b></td>
1210 <td width='20%' align='center'><b>$Lang::tr{'name'}</b></td>
1211 <td width='8%' align='center'><b>$Lang::tr{'type'}</b></td>
1212 <td width='25%' align='center'><b>$Lang::tr{'wio_common_name'}</b></td>
1213 <td width='11%' align='center'><b>$Lang::tr{'wio image'}</b></td>
1214 <td width='14%' align='center'><b>$Lang::tr{'wio_connected'}</b></td>
1218 foreach $key (sort SortByTunnelName
(keys(%vpnconfighash))) {
1220 my ( $vpnclient, $vpnclientip, $vpnrwnet, $vpnn2nnet, $vpntime, $vpncheck ) = '';
1222 $status = "bgcolor='${Header::colourred}'";
1223 $statustxt = "$Lang::tr{'capsclosed'}";
1224 $vpnclient = $vpnconfighash{$key}[1];
1226 my ($ip,$sub) = split(/\//,$vpnsettings{'RW_NET'});
1227 my @ip = split( /\./, $ip);
1228 $vpnrwnet = join( '.', ( $ip[0], $ip[1], $ip[2], ) );
1230 if ($vpnconfighash{$key}[0] eq 'off') {
1231 $status = "bgcolor='${Header::colourblue}'";
1232 $statustxt = "$Lang::tr{'capsclosed'}";
1236 $vpnn2nnet = $vpnconfighash{$key}[11];
1239 foreach (@vpnstatus) {
1240 if ($_ =~ /$vpnclient.*ESTABLISHED/) {
1241 $status = "bgcolor='${Header::colourgreen}'";
1242 $statustxt = "$Lang::tr{'capsopen'}";
1243 $vpntime = `/usr/local/bin/ipsecctrl I | grep $vpnclient.*ESTABLISHED | sed 's/^[ \t]*//' | cut -d " " -f 3-4`;
1244 $vpntime = &WIO
::contime
($vpntime, "ipsec");
1245 $vpnclientip = `/usr/local/bin/ipsecctrl I | grep $vpnclient.*$vpnrwnet | sed 's/^[ \t]*//' | cut -d " " -f 6 | cut -d "/" -f 1`;
1246 $vpncheck = strftime
("%d.%m.%Y - %H:%M:%S",localtime);
1251 print"<tr".($idvpn % 2?
" bgcolor='$color{'color20'}'":" bgcolor='$color{'color22'}'")." height='20'>";
1253 my $vpnnr = $idvpn+1;
1255 printf ("<td align='center'>%02d</td>", $vpnnr);
1257 print"<td align='center'>".($vpncheck ne '' ?
"$vpncheck" : "-")."</td>
1258 <td align='center'>$vpnclient</td>
1259 <td align='center'><img align='middle' src='$imgstatic/".($vpnconfighash{$key}[3] eq 'host' ?
"vpnrw.png' alt='$Lang::tr{'wio_rw'}' title='$Lang::tr{'wio_rw'}'" : "vpnn2n.png' alt='$Lang::tr{'wio_n2n'}' title='$Lang::tr{'wio_n2n'}'")." /></td>
1260 <td align='center'>".($vpnconfighash{$key}[3] eq 'host' ?
(defined($vpnclientip) ?
"$vpnclientip" : "-") : $vpnconfighash{$key}[3] eq 'net' ?
"$vpnn2nnet" : "-")."</td>
1262 <table $status cellpadding='2' cellspacing='0' width='100%'>
1264 <td align='center'><font color='white'><b>$statustxt</b></font></td>
1268 <td align='center' height='20'>".($vpntime ne '' ?
"$vpntime" : "-")."</td>
1272 if ($wiosettings{'CLIENTREMARK'} eq 'on') {
1273 print"<tr".($idvpn % 2?
" bgcolor='$color{'color20'}'":" bgcolor='$color{'color22'}'")." height='20'><td> </td><td colspan='16' align='left'>".($vpnconfighash{$key}[25] ne '' ?
"$vpnconfighash{$key}[25]" : "-")."</td></tr>";
1276 print"<tr height='1'><td colspan='7' bgcolor='#696565'></td></tr>";
1284 ## openvpn connection(s)
1286 if ( -e
"$ovpnpid" ) {
1288 @ovpnstatus = `cat /var/run/ovpnserver.log`;
1291 <table border='0' width='100%' bordercolor='$Header::bordercolour' cellspacing='0' cellpadding='0' style='border-collapse: collapse'>
1293 <td width='33%' bgcolor='$color{'color20'}' align='left'><b> $Lang::tr{'wio_ovpn_con'}</b></td>
1294 <td width='67%'> </td>
1296 <tr><td colspan='2'> </td></tr>
1298 <table border='0' width='100%' bordercolor='$Header::bordercolour' cellspacing='0' cellpadding='0' style='border-collapse: collapse'>
1299 <tr bgcolor='$color{'color20'}' height='20'>
1300 <td width='3%' align='center'><b>$Lang::tr{'wio_id'}</b></td>
1301 <td width='19%' align='center'><b>$Lang::tr{'wio checked'}</b></td>
1302 <td width='20%' align='center'><b>$Lang::tr{'name'}</b></td>
1303 <td width='8%' align='center'><b>$Lang::tr{'type'}</b></td>
1304 <td width='25%' align='center'><b>$Lang::tr{'wio_common_name'}</b></td>
1305 <td width='11%' align='center'><b>$Lang::tr{'wio image'}</b></td>
1306 <td width='14%' align='center'><b>$Lang::tr{'wio_connected'}</b></td>
1310 foreach $key (keys %ovpnconfighash) {
1312 my ( $ovpncheck, $ovpntime, $ovpnclt, $ovpnrwip ) = '';
1314 print"<tr".($idovpn % 2?
" bgcolor='$color{'color20'}'":" bgcolor='$color{'color22'}'")." height='20'>";
1316 my $ovpnnr = $idovpn+1;
1318 printf ("<td align='center' height='20'> %02d</td>", $ovpnnr);
1320 if ($ovpnconfighash{$key}[3] eq 'net') {
1321 $image = "$imgstatic/ovpnn2n.png";
1322 $text = "$Lang::tr{'wio_n2n'}";
1325 $image = "$imgstatic/ovpnrw.png";
1326 $text = "$Lang::tr{'wio_rw'}";
1329 if ( $ovpnconfighash{$key}[0] eq 'off' ) {
1330 $status = "${Header::colourblue}";
1331 $statustxt = "$Lang::tr{'capsclosed'}";
1335 if ($ovpnconfighash{$key}[3] eq 'net') {
1336 if (-e
"/var/run/$ovpnconfighash{$key}[1]n2n.pid") {
1337 my ( @output, @tustate ) = '';
1338 my $tport = $ovpnconfighash{$key}[22];
1339 my $tnet = new Net
::Telnet
( Timeout
=>5, Errmode
=>'return', Port
=>$tport);
1341 $tnet->open('127.0.0.1');
1342 @output = $tnet->cmd(String
=> 'state', Prompt
=> '/(END.*\n|ERROR:.*\n)/');
1343 @tustate = split(/\,/, $output[1]);
1344 $ovpntime = &WIO
::contime
(scalar localtime($tustate[0]), "ovpn");
1345 $ovpncheck = strftime
("%d.%m.%Y - %H:%M:%S", localtime);
1347 if (($tustate[1] eq 'CONNECTED')) {
1348 $status = "${Header::colourgreen}";
1349 $statustxt = "$Lang::tr{'capsopen'}";
1350 $ovpnrwip = $ovpnconfighash{$key}[11];
1353 $status = "${Header::colourred}";
1354 $statustxt = "$tustate[1]";
1360 foreach (@ovpnstatus) {
1361 if ( $_ =~ /^(.+),(\d+\.\d+\.\d+\.\d+\:\d+),(\d+),(\d+),(.+)/ ) {
1362 @match = split (m/^(.+),(\d+\.\d+\.\d+\.\d+\:\d+),(\d+),(\d+),(.+)/, $_);
1363 $match[1] =~ s/[_]/ /g;
1366 if ( $match[1] ne "Common Name" && ($match[1] eq $ovpnconfighash{$key}[2]) ) {
1367 $ovpnclt = $match[1];
1368 $ovpntime = &WIO
::contime
($match[5], "ovpn");
1371 if ( $_ =~ /^(\d+\.\d+\.\d+\.\d+),(.+),(\d+\.\d+\.\d+\.\d+\:\d+),(.+)/ ) {
1372 @match = split(m/^(\d+\.\d+\.\d+\.\d+),(.+),(\d+\.\d+\.\d+\.\d+\:\d+),(.+)/, $_);
1375 if ( $match[1] ne "Virtual Address" && $match[2] eq $ovpnclt ) {
1376 $ovpnrwip = $match[1];
1377 $ovpncheck = &WIO
::statustime
($match[4]);
1380 if ( $ovpnclt eq $ovpnconfighash{$key}[2] ) {
1381 $status = "${Header::colourgreen}";
1382 $statustxt = "$Lang::tr{'capsopen'}";
1385 $status = "${Header::colourred}";
1386 $statustxt = "$Lang::tr{'capsclosed'}";
1393 <td align='center'>".(defined($ovpncheck) ?
"$ovpncheck" : "-")."</td>
1394 <td align='center'>".($ovpnconfighash{$key}[2] eq '%auth-dn' ?
"$ovpnconfighash{$key}[9]" : ($ovpnconfighash{$key}[4] eq 'cert' ?
"$ovpnconfighash{$key}[1]": "-"))."</td>
1395 <td align='center'><img align='middle' src='$image' alt='$text' title='$text' /></td>
1396 <td align='center'>".($ovpnrwip ne '' ?
"$ovpnrwip" : "-")."</td>
1397 <td align='center'><table bgcolor='$status' cellpadding='2' cellspacing='0' width='100%'><tr height='20'><td align='center'><font color='white'><b>$statustxt</b></font></td></tr></table></td>
1398 <td align='center'>".(defined($ovpntime) ?
"$ovpntime" : "-")."</td>
1402 if ($wiosettings{'CLIENTREMARK'} eq 'on') {
1403 print"<tr".($idovpn % 2?
" bgcolor='$color{'color20'}'":" bgcolor='$color{'color22'}'")." height='20'><td> </td><td colspan='16' align='left'>".($ovpnconfighash{$key}[25] ne '' ?
"$ovpnconfighash{$key}[25]" : "-")."</td></tr>";
1406 print"<tr height='1'><td colspan='17' bgcolor='#696565'></td></tr>";
1417 <table border='0' width='100%' bordercolor='$Header::bordercolour' cellspacing='0' cellpadding='0' style='border-collapse: collapse'>
1419 <td width='33%' bgcolor='$color{'color20'}' align='left'><b> $Lang::tr{'wio_clients'}</b></td>
1420 <td width='67%'> </td>
1422 <tr><td colspan='2'> </td></tr>
1425 <table border='0' width='100%' bordercolor='$Header::bordercolour' cellspacing='0' cellpadding='0' style='border-collapse: collapse'>
1426 <tr bgcolor='$color{'color20'}' height='20'>
1427 <td width='3%' align='center'><b>$Lang::tr{'wio_id'}</b></td>
1428 <td width='4%' align='center'><b>$Lang::tr{'wio_activ'}</b></td>
1429 <td width='5%' align='center'><b>$Lang::tr{'wio_check'}</b></td>
1430 <td width='15%' align='center'><b>$Lang::tr{'wio checked'}</b></td>
1431 <td width='4%' align='center'><b>$Lang::tr{'wio_webinterface'}</b></td>
1432 <td width='11%' align='center'><a href='$ENV{'SCRIPT_NAME'}?IPADR'><b>$Lang::tr{'wio ipadress'}</b></a></td>
1433 <td width='5%' align='center'><b>$Lang::tr{'wio network'}</b></td>
1434 <td width='23%' align='center'><a href='$ENV{'SCRIPT_NAME'}?HOST'><b>$Lang::tr{'wio name'}</b></a></td>
1435 <td width='9%' align='center'><b>$Lang::tr{'wio image'}</b></td>
1436 <td width='3%' align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}' enctype='multipart/form-data'><input type='hidden' name='ACTION' value='$Lang::tr{'wio_refresh'}' /><input type='image' name='$Lang::tr{'wio_refresh'}' src='$imgstatic/refresh.png' align='middle' alt='$Lang::tr{'wio_refresh'}' title='$Lang::tr{'wio_refresh'}' /></form></td>
1437 <td width='4%' colspan='2' align='center'><b>$Lang::tr{'wio_dyndns'}</b></td>
1438 <td width='12%' colspan='4' align='center'><b>$Lang::tr{'action'}</b></td>
1439 <td width='3%' align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}' enctype='multipart/form-data'><input type='hidden' name='ACTION' value='$Lang::tr{'wio_remove_all'}' /><input type='image' name='$Lang::tr{'wio_remove_all'}' src='/images/delete.gif' align='middle' alt='$Lang::tr{'wio_remove_all'}' title='$Lang::tr{'wio_remove_all'}' onClick=\"return confirm('$Lang::tr{'wio_remove_all_hint'}')\"/></form></td>
1443 for (my $a=0; $a<$nr; $a++) {
1445 my $gif = 'off.gif';
1446 my $gdesc = $Lang::tr
{'wio_client_off'};
1447 my $dyndnsimg = 'on.gif';
1448 my $dyndnsimgtxt = $Lang::tr
{'wio_dyndns_on'};
1449 my $mailonimg = 'wio/mailgreenon.png';
1450 my $mailonimgtxt = $Lang::tr
{'wio_mail_online_on'};
1451 my $mailoffimg = 'wio/mailredon.png';
1452 my $mailoffimgtxt = $Lang::tr
{'wio_mail_offline_on'};
1457 if ( $activ[$a] eq 'on' ) {
1459 $gdesc = $Lang::tr
{'wio_client_on'};
1462 if ( $dyndns[$a] ne 'on' ) {
1463 $dyndnsimg = 'off.gif';
1464 $dyndnsimgtxt = $Lang::tr
{'wio_dyndns_off'};
1467 if ( $sendemailon[$a] ne 'on' ) {
1468 $mailonimg = 'wio/mailgreenoff.png';
1469 $mailonimgtxt = $Lang::tr
{'wio_mail_online_off'};
1472 if ( $sendemailoff[$a] ne 'on' ) {
1473 $mailoffimg = 'wio/mailredoff.png';
1474 $mailoffimgtxt = $Lang::tr
{'wio_mail_offline_off'};
1477 if ( $webinterface[$a] eq 'HTTP' ) {
1478 $webimg = 'wio/http.png';
1480 elsif ( $webinterface[$a] eq 'HTTPS' ) {
1481 $webimg = 'wio/https.png';
1484 $webimg = 'wio/none.png';
1487 $bgcolor = $status[$a] eq "on" ?
"${Header::colourgreen}" : ($status[$a] eq "off" && $dates[$a] eq "") ?
"${Header::colourblue}" : "${Header::colourred}";
1488 $statustxt = $status[$a] eq "on" ?
"$Lang::tr{'wio up'}" : ($status[$a] eq "off" && $dates[$a] eq "") ?
"$Lang::tr{'wio_no_image'}" : "$Lang::tr{'wio down'}";
1490 print"<tr".($a % 2?
" bgcolor='$color{'color20'}'":" bgcolor='$color{'color22'}'")." height='20'>";
1491 printf ("<td align='center'> %02d</td>", $a+1);
1493 print"<td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}' enctype='multipart/form-data'>
1494 <input type='hidden' name='ACTION' value='$Lang::tr{'enable disable client'}' />
1495 <input type='image' name='$Lang::tr{'enable disable client'}' src='/images/$gif' align='middle' alt='$gdesc' title='$gdesc' />
1496 <input type='hidden' name='ID' value='$a' /></form></td>";
1498 if ( $pingmethode[$a] eq 'ip') {
1499 print"<td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}' enctype='multipart/form-data'>
1500 <input type='hidden' name='ACTION' value='$Lang::tr{'wio_ip_on'}' />
1501 <input type='image' name='$Lang::tr{'wio_ip_on'}' src='/images/wio/ip.png' align='middle' alt='$Lang::tr{'wio_ip_on'}' title='$Lang::tr{'wio_ip_on'}' />
1502 <input type='hidden' name='ID' value='$a' /></form></td>";
1505 print"<td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}' enctype='multipart/form-data'>
1506 <input type='hidden' name='ACTION' value='$Lang::tr{'wio_fqdn_on'}' />
1507 <input type='image' name='$Lang::tr{'wio_fqdn_on'}' src='/images/wio/fqdn.png' align='middle' alt='$Lang::tr{'wio_fqdn_on'}' title='$Lang::tr{'wio_fqdn_on'}' />
1508 <input type='hidden' name='ID' value='$a' /></form></td>";
1511 print"<td align='center'>$dates[$a]</td>";
1513 print"<td align='center'><img align='middle' src='/images/$webimg' /></td>";
1515 if ( $webinterface[$a] eq 'HTTP' ) {
1516 print"<td align='center'><a title=\"$Lang::tr{'wio_webinterface_link'}\" href=\"http://$ipaddresses[$a]\" target=\"_blank\">$ipaddresses[$a]</a></td>";
1518 elsif ( $webinterface[$a] eq 'HTTPS' ) {
1519 print"<td align='center'><a title=\"$Lang::tr{'wio_webinterface_link'}\" href=\"https://$ipaddresses[$a]\" target=\"_blank\">$ipaddresses[$a]</a></td>";
1522 print"<td align='center'>$ipaddresses[$a]</td>";
1525 my $dotip = length($ipaddresses[$a]) - rindex($ipaddresses[$a],'.');
1527 foreach (@devs_color) {
1531 foreach $interface (@devs_net) {
1532 next if ( $netsettings{"$ic"."_DEV"} eq 'red0' && $netsettings{"RED_TYPE"} eq 'PPPOE');
1533 if ( $netsettings{"$ic"."_DEV"} eq $interface ) {
1534 if ( &General
::IpInSubnet
($ipaddresses[$a], $netsettings{"$ic"."_NETADDRESS"}, $netsettings{"$ic"."_NETMASK"}) ) {
1535 if ( $netsettings{"$ic"."_DEV"} eq 'red0' ) {
1536 print"<td align='center' height='20'><img src='$imgstatic/$devs_img[$in]' alt='$Lang::tr{'wio_red_lan'}' title='$Lang::tr{'wio_red_lan'}' /></td>";
1539 print"<td align='center' height='20'><img src='$imgstatic/$devs_img[$in]' alt='$Lang::tr{$devs_alt[$in]}' title='$Lang::tr{$devs_alt[$in]}' /></td>";
1548 if ( -e
"$vpnpid" ) {
1549 foreach $key (keys(%vpnconfighash)) {
1550 next unless ($vpnconfighash{$key}[3] eq 'net');
1552 my $convertip = &General
::ipcidr2msk
($vpnconfighash{$key}[11]);
1554 my @net = split ("/", $convertip);
1556 $vpnn2nip = $net[0];
1557 $vpnn2nmask = length($net[1]) - rindex($net[1],'.');
1559 if (substr($ipaddresses[$a],0,length($ipaddresses[$a])-$dotip) eq substr($vpnn2nip,0,length($vpnn2nip)-$vpnn2nmask)) {
1560 print"<td align='center'><img align='middle' src='$imgstatic/vpn.png' alt='IPsec' title='IPsec' /></td>";
1566 if ( $ovpnsettings{'DOVPN_SUBNET'} ne '' ) {
1567 @match = split ("/", $ovpnsettings{'DOVPN_SUBNET'});
1569 if ( &General
::IpInSubnet
($ipaddresses[$a], $match[0], $match[1]) ) {
1570 print"<td align='center'><img src='$imgstatic/ovpn.png' alt='OpenVPN' title='OpenVPN' /></td>";
1575 if ( %ovpnccdconfhash ne '' ) {
1576 foreach $key (keys(%ovpnccdconfhash)) {
1578 my $convertip = &General
::ipcidr2msk
($ovpnccdconfhash{$key}[1]);
1579 my @net = split ("/", $convertip);
1581 $vpnn2nip = $net[0];
1582 $vpnn2nmask = length($net[1]) - rindex($net[1],'.');
1584 if (substr($ipaddresses[$a],0,length($ipaddresses[$a])-$dotip) eq substr($vpnn2nip,0,length($vpnn2nip)-$vpnn2nmask)) {
1585 print"<td align='center'><img align='middle' src='$imgstatic/ovpn.png' alt='OpenVPN' title='OpenVPN' /></td>";
1591 if ( $netsettings{"RED_TYPE"} eq 'PPPOE' ) {
1592 my $redipadr = qx'ip addr | grep red0 | grep inet | awk "{print \$2}"';
1593 my @rednet = split ("/", $redipadr);
1595 my $red_netmask = General
::iporsubtodec
($rednet[1]);
1596 my $red_netaddress = Network
::get_netaddress
("$rednet[0]/$red_netmask");
1598 if ( &General
::IpInSubnet
($ipaddresses[$a], $red_netaddress, $red_netmask) ) {
1599 print"<td align='center' height='20'><img src='$imgstatic/red.png' alt='$Lang::tr{'internet'}' title='$Lang::tr{'internet'}' /></td>";
1604 print"<td align='center'><img align='middle' src='$imgstatic/white.png' alt='$Lang::tr{'wio_unknown_lan'}' title='$Lang::tr{'wio_unknown_lan'}' /></td>";
1609 if ( $webinterface[$a] eq 'HTTP' ) {
1610 print"<td align='center'><a title=\"$Lang::tr{'wio_webinterface_link'}\" href=\"http://$names[$a]\" target=\"_blank\">$names[$a]</a></td>";
1612 elsif ( $webinterface[$a] eq 'HTTPS' ) {
1613 print"<td align='center'><a title=\"$Lang::tr{'wio_webinterface_link'}\" href=\"https://$names[$a]\" target=\"_blank\">$names[$a]</a></td>";
1616 print"<td align='center'>$names[$a]</td>";
1621 <table bgcolor='$bgcolor' cellpadding='2' cellspacing='0' width='100%'>
1623 <td align='center'><font color='$color{'color21'}'><b>$statustxt</b></font></td>
1628 <td width='3%' align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}' enctype='multipart/form-data'>
1629 <input type='hidden' name='ACTION' value='$Lang::tr{'wio_sc_refresh'}' />
1630 <input type='image' name='$Lang::tr{'wio_sc_refresh'}' src='$imgstatic/refresh.png' align='middle' alt='$Lang::tr{'wio_sc_refresh'}' title='$Lang::tr{'wio_sc_refresh'}' />
1631 <input type='hidden' name='ID' value='$a' /></form></td>
1633 <td width='3%' align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}' enctype='multipart/form-data'>
1634 <input type='hidden' name='ACTION' value='$Lang::tr{'enable disable dyndns'}' />
1635 <input type='image' name='$Lang::tr{'enable disable dyndns'}' src='/images/$dyndnsimg' align='middle' alt='$dyndnsimgtxt' title='$dyndnsimgtxt' />
1636 <input type='hidden' name='ID' value='$a' /></form></td>";
1638 if ( defined($dyndns[$a]) && ($dyndns[$a] eq 'on') ) {
1639 print"<td width='3%' align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}' enctype='multipart/form-data'>
1640 <input type='hidden' name='ACTION' value='$Lang::tr{'wio_dyndns_refresh'}' />
1641 <input type='image' name='$Lang::tr{'wio_dyndns_refresh'}' src='/images/reload.gif' align='middle' alt='$Lang::tr{'wio_dyndns_refresh'}' title='$Lang::tr{'wio_dyndns_refresh'}' />
1642 <input type='hidden' name='ID' value='$a' /></form></td>";
1645 print"<td width='3%' align='center'>-</td>";
1648 if ( -e
"/var/log/rrd/wio/$id[$a].rrd" ) {
1650 <td width='3%' align='center'><form method='post' action='/cgi-bin/wiographs.cgi' enctype='multipart/form-data'>
1651 <input type='image' name='$Lang::tr{'wio_graphs'}' src='$imgstatic/graph.png' align='middle' alt='$Lang::tr{'wio_graphs'}' title='$Lang::tr{'wio_graphs'}' />
1652 <input type='hidden' name='HOSTID' value='$id[$a]' /><input type='hidden' name='HOSTNAME' value='$names[$a]' /></form></td>
1656 print "<td width='3%' align='center'><img src='$imgstatic/no_graph.png' align='middle' alt='$Lang::tr{'wio_no_graphs'}' title='$Lang::tr{'wio_no_graphs'}' /></td>";
1659 if ( $wiosettings{'SENDEMAIL'} eq 'on') {
1660 print"<td width='3%' align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}' enctype='multipart/form-data'>
1661 <input type='hidden' name='ACTION' value='$Lang::tr{'wio_mail_online'}' />
1662 <input type='image' name='$Lang::tr{'wio_mail_online'}' src='/images/$mailonimg' align='middle' alt='$mailonimgtxt' title='$mailonimgtxt' />
1663 <input type='hidden' name='ID' value='$a' /></form></td>
1664 <td width='3%' align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}' enctype='multipart/form-data'>
1665 <input type='hidden' name='ACTION' value='$Lang::tr{'wio_mail_offline'}' />
1666 <input type='image' name='$Lang::tr{'wio_mail_offline'}' src='/images/$mailoffimg' align='middle' alt='$mailoffimgtxt' title='$mailoffimgtxt' />
1667 <input type='hidden' name='ID' value='$a' /></form></td>";
1670 print"<td width='3%' align='center'>-</td>
1671 <td width='3%' align='center'>-</td>";
1675 <td width='3%' align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}' enctype='multipart/form-data'>
1676 <input type='hidden' name='ACTION' value='$Lang::tr{'edit'}' />
1677 <input type='image' name='$Lang::tr{'edit'}' src='/images/edit.gif' align='middle' alt='$Lang::tr{'edit'}' title='$Lang::tr{'edit'}' />
1678 <input type='hidden' name='ID' value='$a' /></form></td>
1680 <td width='3%' align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}' enctype='multipart/form-data'>
1681 <input type='hidden' name='ACTION' value='$Lang::tr{'wio_remove_client'}' />
1682 <input type='image' name='$Lang::tr{'wio_remove_client'}' src='/images/delete.gif' align='middle' alt='$Lang::tr{'wio_remove_client'}' title='$Lang::tr{'wio_remove_client'}' onClick=\"return confirm('$Lang::tr{'wio_remove_client_hint'}')\" />
1683 <input type='hidden' name='ID' value='$a' /></form></td></tr>
1686 if ($wiosettings{'CLIENTREMARK'} eq 'on') {
1687 print"<tr".($a % 2?
" bgcolor='$color{'color20'}'":" bgcolor='$color{'color22'}'")." height='20'><td> </td><td colspan='16' align='left'>".($remark[$a] ne '' ?
"$remark[$a]" : "-")."</td></tr>";
1689 print"<tr height='1'><td colspan='17' bgcolor='#696565'></td></tr>";
1694 &Header
::closebox
();
1698 ## add / modify client
1700 $checked{'EN'}{'on'} = ($wiosettings{'EN'} eq '' ) ?
'' : "checked='checked'";
1702 $checked{'DYNDNS'}{'off'} = $checked{'DYNDNS'}{'on'} = '';
1703 $checked{'DYNDNS'}{$wiosettings{'DYNDNS'}} = "checked='checked'";
1705 $checked{'SENDEMAILON'}{'off'} = $checked{'SENDEMAILON'}{'on'} = '';
1706 $checked{'SENDEMAILON'}{$wiosettings{'SENDEMAILON'}} = "checked='checked'";
1708 $checked{'SENDEMAILOFF'}{'off'} = $checked{'SENDEMAILOFF'}{'on'} = '';
1709 $checked{'SENDEMAILOFF'}{$wiosettings{'SENDEMAILOFF'}} = "checked='checked'";
1711 if (! defined($errormessage) && $wiosettings{'ACTION'} ne $Lang::tr
{'edit'} ) {
1712 $wiosettings{'PINGMETHODE'} = 'ip';
1715 $checked{'PINGMETHODE'}{'ip'} = $checked{'PINGMETHODE'}{'fqdn'} = '';
1716 $checked{'PINGMETHODE'}{$wiosettings{'PINGMETHODE'}} = "checked='checked'";
1718 $selected{'WEBINTERFACE'}{'----'} = '';
1719 $selected{'WEBINTERFACE'}{'HTTP'} = '';
1720 $selected{'WEBINTERFACE'}{'HTTPS'} = '';
1721 $selected{'WEBINTERFACE'}{$wiosettings{'WEBINTERFACE'}} = "selected='selected'";
1723 $buttontext = $Lang::tr
{'wio_client_add'};
1725 if ( $wiosettings{'ACTION'} eq $Lang::tr
{'edit'} || defined($errormessage) && ! defined($message) ) {
1726 &Header
::openbox
('100%', 'left', $Lang::tr
{'wio_edit_client'});
1727 $buttontext = $Lang::tr
{'update'};
1730 &Header
::openbox
('100%', 'left', $Lang::tr
{'wio_edit_settings'});
1733 if (! defined($errormessage) && $wiosettings{'ACTION'} ne $Lang::tr
{'edit'} ) {
1735 <table width='100%' border='0' bordercolor='$Header::bordercolour' cellspacing='0' cellpadding='0' style='border-collapse: collapse'>
1737 <td width='33%' bgcolor='$color{'color20'}' align='left' height='25'><b> $Lang::tr{'wio_add'}</b></td>
1738 <td width='67%' align='right'> </td>
1748 <form method='post' action='$ENV{'SCRIPT_NAME'}'>
1749 <input type='hidden' name='ID' value='$wiosettings{'ID'}' />
1750 <input type='hidden' name='CLIENTID' value='$wiosettings{'CLIENTID'}' />
1751 <input type='hidden' name='ONLINE' value='$wiosettings{'ONLINE'}' />
1752 <input type='hidden' name='TIMESTAMP' value='$wiosettings{'TIMESTAMP'}' />
1756 <table width='100%' border='0' bordercolor='$Header::bordercolour' cellspacing='0' cellpadding='0' style='border-collapse: collapse'>
1758 <td height='30'>$Lang::tr{'wio_client_enable'}</td>
1759 <td align='left'><input type='checkbox' name='EN' $checked{'EN'}{'on'} /></td>
1760 <td colspan='4'> </td>
1763 <td height='30'>$Lang::tr{'wio ipadress'}:</td>
1764 <td align='left'><input type='text' name='IPADR' value='$wiosettings{'IPADR'}' size='25' /></td>
1765 <td>$Lang::tr{'wio name'}:</td>
1766 <td align='left'><input type='text' name='HOST' value='$wiosettings{'HOST'}' size='25' /></td>
1767 <td>$Lang::tr{'remark'}:</td>
1768 <td align='left'><input type='text' name='REMARK' value='$wiosettings{'REMARK'}' size='30'></td>
1771 <td height='30'>$Lang::tr{'wio_ping_send'}:</td>
1772 <td align='left'><input type='radio' name='PINGMETHODE' value='ip' $checked{'PINGMETHODE'}{'ip'} /> IP <input type='radio' name='PINGMETHODE' value='fqdn' $checked{'PINGMETHODE'}{'fqdn'} /> FQDN</td>
1773 <td>$Lang::tr{'wio_dyndns'}:</td>
1774 <td align='left'><input type='checkbox' name='DYNDNS' $checked{'DYNDNS'}{'on'} /></td>
1777 if ( $wiosettings{'SENDEMAIL'} eq 'on' ) {
1778 print"<td>$Lang::tr{'wio_sendemail'}:</td>
1779 <td><input type='checkbox' name='SENDEMAILON' $checked{'SENDEMAILON'}{'on'} /> $Lang::tr{'wio_online'} <input type='checkbox' name='SENDEMAILOFF' $checked{'SENDEMAILOFF'}{'on'} /> $Lang::tr{'wio_offline'}</td>";
1782 print"<td colspan='2'> </td>";
1788 <td height='30'>$Lang::tr{'wio_link_open'}:</td>
1789 <td align='left' colspan='5'>
1790 <select size='1' name='WEBINTERFACE' width='80' style='width: 80px'>
1791 <option value='----' $selected{'WEBINTERFACE'}{'----'}>----</option>
1792 <option value='HTTP' $selected{'WEBINTERFACE'}{'HTTP'}>HTTP</option>
1793 <option value='HTTPS' $selected{'WEBINTERFACE'}{'HTTPS'}>HTTPS</option>
1798 <table width='100%' cellspacing='0' cellpadding='0' style='border-collapse: collapse'>
1800 <td width='20%' align='center'> </td>
1803 if ( $buttontext eq $Lang::tr
{'update'} && ( defined($errormessage) || $wiosettings{'ACTION'} eq $Lang::tr
{'edit'}) && ! defined($message) ) {
1804 print"<td width='20%' align='center'> </td>
1805 <td width='20%' align='center'> </td>
1806 <td width='20%' align='center'><input type='hidden' name='ACTION' value='$Lang::tr{'wio_client_add'}' /><input type='submit' name='SUBMIT' value='$buttontext' /></td>
1807 <td width='20%' align='center'><input type='button' onClick='location.href=\"/cgi-bin/wio.cgi\"' value='$Lang::tr{'wio_back'}'></form></td>";
1810 print"<td width='20%' align='center'> </td>
1811 <td width='20%' align='center'> </td>
1812 <td width='20%' align='center'> </td>
1813 <td width='20%' align='right'><input type='hidden' name='ACTION' value='$Lang::tr{'wio_client_add'}' /><input type='submit' name='SUBMIT' value='$buttontext' /></form></td>";
1821 if ( $wiosettings{'ENABLE'} eq 'on' && !$errormessage && $wiosettings{'ACTION'} ne $Lang::tr
{'edit'} || $message == 2 ) {
1825 ## arp table entries
1828 <table border='0' width='100%' bordercolor='$Header::bordercolour' cellspacing='0' cellpadding='0' style='border-collapse: collapse'>
1830 <td width='33%' bgcolor='$color{'color20'}' align='left' height='25'><b> $Lang::tr{'wio_arp_table_entries'}</b></td>
1831 <td width='67%' align='right'><form method='post' action='$ENV{'SCRIPT_NAME'}'><input type='hidden' name='WIOGUISHOWARPTABLE' value='arptable' /><input type='submit' name='ACTION' value='$arpbuttontext' /></form></td>
1836 if ( $wiosettings{'WIOGUISHOWARPTABLE'} eq 'on' ) {
1839 <table border='0' width='100%' bordercolor='$Header::bordercolour' cellspacing='0' cellpadding='0' style='border-collapse: collapse'>
1840 <tr><td colspan='2'> </td></tr>
1841 <tr bgcolor='$color{'color20'}'>
1842 <td width='5%' align='center' height='20'><b>$Lang::tr{'wio_id'}</b></td>
1843 <td width='20%' align='center' height='20'><b>$Lang::tr{'wio_hwaddress'}</b></td>
1844 <td width='20%' align='center' height='20'><b>$Lang::tr{'wio ipadress'}</b></td>
1845 <td width='15%' align='center' height='20'><b>$Lang::tr{'wio network'}</b></td>
1846 <td width='20%' align='center' height='20'><b>$Lang::tr{'wio name'}</b></td>
1847 <td width='15%' align='center' height='20'><b>$Lang::tr{'wio_iface'}</b></td>
1848 <td width='5%' align='center' height='20'><b>$Lang::tr{'action'}</b></td>
1852 $output = `/sbin/ip neigh list`;
1853 $output = &Header
::cleanhtml
($output,"y");
1857 foreach $line (split(/\n/, $output))
1859 if ($line =~ m/^(.*) dev ([^ ]+) lladdr ([0-9a-f:]*) (.*)$/) {
1860 my $arphost = gethostbyaddr(inet_aton
($1), AF_INET
);
1861 if ( $arphost eq 'localhost' ) { $arphost = ''; }
1862 push (@arpcache, "$3,$1,$arphost,$2\n");
1864 elsif ($line =~ m/^(.*) dev ([^ ]+) (.*)$/) {
1865 my $arphost = gethostbyaddr(inet_aton
($1), AF_INET
);
1866 if ( $arphost eq 'localhost' ) { $arphost = ''; }
1867 push (@arpcache, ",$1,$arphost,$2\n");
1873 &SortDataFile
('arpcache',@arpcache);
1875 foreach (@arpcache) {
1878 @line = split (/\,/, $_);
1880 print"<tr".($idarp % 2?
" bgcolor='$color{'color20'}'":" bgcolor='$color{'color22'}'")." height='20'>";
1881 printf ("<td align='center'> %02d</td>", $idarp+1);
1882 print"<td align='center'>$line[0]</td>
1883 <td align='center'>$line[1]</td>";
1887 foreach (@devs_color) {
1891 foreach $interface (@devs_net) {
1892 next if ( $netsettings{"$ic"."_DEV"} eq 'red0' && ($netsettings{"RED_TYPE"} eq 'DHCP' || $netsettings{"RED_TYPE"} eq 'PPPOE'));
1894 if ($netsettings{"$ic"."_DEV"} eq $interface) {
1895 if ( &General
::IpInSubnet
($line[1], $netsettings{"$ic"."_NETADDRESS"}, $netsettings{"$ic"."_NETMASK"}) ) {
1896 print"<td align='center'><img src='$imgstatic/$devs_img[$in]' alt='$Lang::tr{$devs_alt[$in]}' title='$Lang::tr{$devs_alt[$in]}' /></td>";
1905 if ($netsettings{"RED_TYPE"} eq 'DHCP' || $netsettings{"RED_TYPE"} eq 'PPPOE' || $netsettings{"RED_TYPE"} eq 'STATIC') {
1906 my $redipadr = qx'ip addr | grep red0 | grep inet | awk "{print \$2}"';
1907 my @rednet = split ("/", $redipadr);
1909 my $red_netmask = General
::iporsubtodec
($rednet[1]);
1910 my $red_netaddress = Network
::get_netaddress
("$rednet[0]/$red_netmask");
1912 if ( &General
::IpInSubnet
($line[1], $red_netaddress, $red_netmask) ) {
1913 print"<td align='center' height='20'><img src='$imgstatic/red.png' alt='$Lang::tr{'internet'}' title='$Lang::tr{'internet'}' /></td>";
1917 print"<td align='center'><img align='middle' src='$imgstatic/white.png' alt='$Lang::tr{'wio_unknown_lan'}' title='$Lang::tr{'wio_unknown_lan'}' /></td>";
1923 print"<td align='center'>$line[2]</td>
1924 <td align='center'>".&WIO
::color_devices
($line[3])."</td>";
1926 unless (&WIO
::checkinto
($line[1], '', @current)) {
1927 print"<td align='center'><form method='post' action='$ENV{'SCRIPT_NAME'}' enctype='multipart/form-data'>
1928 <input type='hidden' name='ACTION' value='$Lang::tr{'wio_add'}' />
1929 <input type='image' name='$Lang::tr{'wio_add'}' src='/images/add.gif' align='middle' alt='$Lang::tr{'wio_add'}' title='$Lang::tr{'wio_add'}' />
1930 <input type='hidden' name='ID' value='$idarp' /></form></td>";
1933 print"<td align='center'><img src='$imgstatic/add.png' align='middle' alt='$Lang::tr{'wio_no_add'}' title='$Lang::tr{'wio_no_add'}' /></td>";
1937 print"<tr height='1'><td colspan='17' bgcolor='#696565'></td></tr>";
1949 <table border='0' width='100%' bordercolor='$Header::bordercolour' cellspacing='0' cellpadding='0' style='border-collapse: collapse'>
1951 <td width='33%' bgcolor='$color{'color20'}' align='left' height='25'><b> $Lang::tr{'wio_import_file'}</b></td>
1952 <td width='67%' align='right'><form method='post' action='$ENV{'SCRIPT_NAME'}'><input type='hidden' name='WIOGUISHOWCLIENTIMPORTTABLE' value='clientimport' /><input type='submit' name='ACTION' value='$clientimportbuttontext' /></form></td>
1957 if ( $wiosettings{'WIOGUISHOWCLIENTIMPORTTABLE'} eq 'on' ) {
1960 <table width='100%' cellspacing='0' cellpadding='0' style='border-collapse: collapse'>
1961 <tr><td colspan='3'> </td></tr>
1962 <tr bgcolor='$color{'color22'}'>
1963 <form method='post' action='/cgi-bin/wio.cgi' enctype='multipart/form-data'>
1964 <td width='33%' align='right'>$Lang::tr{'wio_import_csv'} </td>
1965 <td width='40%' align='center'><input type='file' name='CSVFILE' size='30' /></td>
1966 <td width='27%' align='right'><input type='hidden' name='ACTION' value='$Lang::tr{'wio_import'}1' /><input type='submit' name='SUBMIT' value='$Lang::tr{'wio_import'}' /></td>
1969 <tr><td colspan='3'> </td></tr>
1970 <tr bgcolor='$color{'color22'}'>
1971 <form method='post' action='/cgi-bin/wio.cgi' enctype='multipart/form-data'>
1972 <td width='33%' align='right'>$Lang::tr{'wio_import_hosts'} </td>
1973 <td width='40%' align='center'> </td>
1974 <td width='27%' align='right'><input type='hidden' name='ACTION' value='$Lang::tr{'wio_import'}2' /><input type='submit' name='SUBMIT' value='$Lang::tr{'wio_import'}' /></td>
1977 <tr><td colspan='3'> </td></tr>
1978 <tr bgcolor='$color{'color22'}'>
1979 <form method='post' action='/cgi-bin/wio.cgi' enctype='multipart/form-data'>
1980 <td width='33%' align='right'>$Lang::tr{'wio_import_fixleases'} </td>
1981 <td width='40%' align='center'> </td>
1982 <td width='27%' align='right'><input type='hidden' name='ACTION' value='$Lang::tr{'wio_import'}3' /><input type='submit' name='SUBMIT' value='$Lang::tr{'wio_import'}' /></td>
1992 <table border='0' width='100%' bordercolor='$Header::bordercolour' cellspacing='0' cellpadding='0' style='border-collapse: collapse'>
1994 <td width='33%' bgcolor='$color{'color20'}' align='left' height='25'><b> $Lang::tr{'wio_net_scan'}</b></td>
1995 <td width='67%' align='right'><form method='post' action='$ENV{'SCRIPT_NAME'}'><input type='hidden' name='WIOGUISHOWNETWORKSEARCHTABLE' value='networksearch' /><input type='submit' name='ACTION' value='$networksearchbuttontext' /></form></td>
2000 if ( $wiosettings{'WIOGUISHOWNETWORKSEARCHTABLE'} eq 'on' ) {
2003 <table width='100%' cellspacing='0' cellpadding='0' style='border-collapse: collapse'>
2005 <td colspan='3'> </td>
2009 foreach (keys(%ifacecolor)) {
2010 if ( $_ eq 'GREEN' ) { $color = "$Header::colourgreen"; $net = $Lang::tr
{'wio_net_scan_green'}; }
2011 elsif ( $_ eq 'BLUE' ) { $color = "$Header::colourblue"; $net = $Lang::tr
{'wio_net_scan_blue'}; }
2012 elsif ( $_ eq 'RED' ) { $color = "$Header::colourred"; $net = $Lang::tr
{'wio_net_scan_red'}; }
2013 else { $color = "$Header::colourorange"; $net = $Lang::tr
{'wio_net_scan_orange'}; }
2015 if ( $netsettings{"${_}_DEV"} eq 'disabled' || $netsettings{"${_}_DEV"} eq '' || $netsettings{"${_}_ADDRESS"} eq '' ) { next; }
2019 <tr bgcolor='$color{'color22'}'>
2020 <td width='33%' align='right'><form method='post' action='$ENV{'SCRIPT_NAME'}' enctype='multipart/form-data'>$Lang::tr{'wio_net_scan_l'} <font color='$color'><b>$net </b></font>$Lang::tr{'wio_net_scan_r'}</td>
2021 <td width='40%' align='center'><input type='text' name='${_}_IPLOW' value='$wiosettings{"${_}_IPLOW"}' size='14' STYLE='background-color:$color; text-align: center; color:white' /> - <input type='text' name='${_}_IPHIGH' value='$wiosettings{"${_}_IPHIGH"}' size='14' STYLE='background-color:$color; text-align: center; color:white' /></td>
2022 <td width='27%' align='right'><input type='hidden' name='ACTION' value='$ifacecolor{$_}' /><input type='hidden' name='ID' value='$netsettings{"${_}_DEV"}' /><input type='submit' name='SUBMIT' value='$Lang::tr{'wio_net_scan_run'}'></form></td>
2025 <td colspan='3'> </td>
2037 &Header
::closebox
();
2040 if ( $wiosettings{'ENABLE'} eq 'on' && !$errormessage && $wiosettings{'ACTION'} ne $Lang::tr
{'edit'} || $message == 2 ) {
2042 &Header
::openbox
('100%', 'left', $Lang::tr
{'wio_service'});
2045 <table border='0' width='100%' bordercolor='$Header::bordercolour' cellspacing='0' cellpadding='0' style='border-collapse: collapse'>
2046 <tr bgcolor='$color{'color22'}'>
2047 <td colspan='2' align='right'></td>
2050 if ( $wiosettings{'LOGGING'} eq 'on' ) {
2051 print"<td width='10%' align='right'><form method='post' action='/cgi-bin/logs.cgi/log.dat' enctype='multipart/form-data'><input type='hidden' name='SECTION' value='wio' /><input type='submit' name='SUBMIT' value='$Lang::tr{'system logs'}' /></form></td>";
2055 <td width='10%' align='right'><form method='post' action='$ENV{'SCRIPT_NAME'}' enctype='multipart/form-data'><input type='hidden' name='ACTION' value='$Lang::tr{'edit'}1' /><input type='submit' name='SUBMIT' value='$Lang::tr{'wio_edit_set'}' /></form></td>
2061 &Header
::closebox
();
2064 &Header
::closebigbox
();
2065 &Header
::closepage
();
2067 ############################################################################################################################
2070 my ($data,@checkfile) = @_;
2077 if (rindex ($wiosettings{'SORT'},'Rev') != -1) {
2078 $qs = substr ($wiosettings{'SORT'},0,length($wiosettings{'SORT'})-3);
2080 if ($qs eq 'IPADR') {
2081 my @a = split (/\./,$entries{$a}->{$qs});
2082 my @b = split (/\./,$entries{$b}->{$qs});
2089 $entries{$b}->{$qs} cmp $entries{$a}->{$qs};
2093 $qs = $wiosettings{'SORT'};
2095 if ($qs eq 'IPADR') {
2096 my @a = split (/\./,$entries{$a}->{$qs});
2097 my @b = split (/\./,$entries{$b}->{$qs});
2104 $entries{$a}->{$qs} cmp $entries{$b}->{$qs};
2109 if ($data eq 'arpcache') {
2110 foreach (@checkfile) {
2112 @temp = split (',', $_);
2114 my @record = ('KEY',$idsort++,'MAC',$temp[0],'IPADR',$temp[1],'HOST',$temp[2],'REMARK',$temp[3],'IFACE',$temp[4]);
2116 %{$record} = @record;
2117 $entries{$record->{KEY
}} = $record;
2120 open(FILE
, "> $logdir/.arpcache");
2122 foreach (sort sortips
keys %entries) {
2123 print FILE
"$entries{$_}->{MAC},$entries{$_}->{IPADR},$entries{$_}->{HOST},$entries{$_}->{REMARK},$entries{$_}->{IFACE},$entries{$_}->{HW}\n";
2128 open (FILE
, "$logdir/.arpcache");
2133 foreach (@checkfile) {
2135 @temp = split (',', $_);
2137 my @record = ('KEY',$idsort++,'CLIENTID',$temp[0],'TIMESTAMP',$temp[1],'IPADR',$temp[2],'HOST',$temp[3],'EN',$temp[4],'REMARK',$temp[5],'DYNDNS',$temp[6],'SENDEMAILON',$temp[7],'SENDEMAILOFF',$temp[8],'PINGMETHODE',$temp[9],'ONLINE',$temp[10],'WEBINTERFACE',$temp[11]);
2139 %{$record} = @record;
2140 $entries{$record->{KEY
}} = $record;
2143 open(FILE
, "> $ipadrfile");
2145 foreach (sort sortips
keys %entries) {
2146 print FILE
"$entries{$_}->{CLIENTID},$entries{$_}->{TIMESTAMP},$entries{$_}->{IPADR},$entries{$_}->{HOST},$entries{$_}->{EN},$entries{$_}->{REMARK},$entries{$_}->{DYNDNS},$entries{$_}->{SENDEMAILON},$entries{$_}->{SENDEMAILOFF},$entries{$_}->{PINGMETHODE},$entries{$_}->{ONLINE},$entries{$_}->{WEBINTERFACE}\n";
2155 ############################################################################################################################
2159 print"<table width='100%'><tr><td colspan='2' height='35'><hr></td></tr></table>";
2163 ############################################################################################################################
2167 &General
::readhasharray
($ipadrfile, \
%ipshash);
2169 open(FILE
, "< $ipadrfile");
2175 ############################################################################################################################
2179 open(FILE
, "> $ipadrfile");
2180 if ( defined($write) ) { print FILE
@write; }
2181 else { print FILE
@current; }
2186 ############################################################################################################################
2188 sub SortByTunnelName
{
2190 if ($vpnconfighash{$a}[1] lt $vpnconfighash{$b}[1]) {
2193 elsif ($vpnconfighash{$a}[1] gt $vpnconfighash{$b}[1]) {
2202 ############################################################################################################################
2206 if ( $wiosettings{'IPADR'} eq '' && $wiosettings{'PINGMETHODE'} eq 'ip' && $wiosettings{'DYNDNS'} eq '' ) {
2207 $errormessage = $Lang::tr
{'wio_ip_empty'};
2210 if ( $wiosettings{'IPADR'} ne '' && (! &General
::validip
($wiosettings{'IPADR'})) ) {
2211 $errormessage = $Lang::tr
{'wio_ip_error'};
2214 if ( $wiosettings{'HOST'} eq '' && $wiosettings{'PINGMETHODE'} eq 'fqdn' ) {
2215 $errormessage = $Lang::tr
{'wio_host_empty'};
2218 if ( $wiosettings{'HOST'} ne '' && (! &General
::validdomainname
($wiosettings{'HOST'})) ) {
2219 $errormessage = $Lang::tr
{'wio_host_error'};
2222 if ( $wiosettings{'DYNDNS'} eq 'on' && (! defined($errormessage)) ) {
2223 unless(&General
::validfqdn
($wiosettings{'HOST'})) { $errormessage = $Lang::tr
{'wio_fqdn_error'}; }
2224 ( $wiosettings{'IPADR'}, $infomessage ) = &WIO
::getdyndnsip
($wiosettings{'IPADR'}, $wiosettings{'HOST'});
2225 $wiosettings{'PINGMETHODE'} = 'fqdn';
2228 if ( $wiosettings{'ID'} eq '' && ! defined($errormessage) ) { $errormessage = &WIO
::checkinto
($wiosettings{'IPADR'}, $wiosettings{'HOST'}, @current); }
2230 if ( $wiosettings{'REMARK'} ne '' ) { $wiosettings{'REMARK'} =~ s/,/,/g; }