package Header;
use CGI();
+use File::Basename;
+use HTML::Entities();
use Socket;
use Time::Local;
my $menu = \%menuhash;
%settings = ();
%ethsettings = ();
+%pppsettings = ();
@URI = ();
### Make sure this is an SSL request
### Initialize environment
&General::readhash("${swroot}/main/settings", \%settings);
&General::readhash("${swroot}/ethernet/settings", \%ethsettings);
+&General::readhash("${swroot}/ppp/settings", \%pppsettings);
$language = $settings{'LANGUAGE'};
$hostname = $settings{'HOSTNAME'};
$hostnameintitle = 0;
};
};
-### Read IPFire Buildversion
-$FIREBUILD = "File not found: firebuild\n";
-if (open(MYFile, "<${swroot}/firebuild")) {
- $FIREBUILD = <MYFile>;
- chomp($FIREBUILD);
- $FIREBUILD = "(Build: $FIREBUILD)";
- close(MYFile);
-};
+our $THEME_NAME = $settings{'THEME'};
require "${swroot}/langs/en.pl";
require "${swroot}/langs/${language}.pl";
-eval `/bin/cat /srv/web/ipfire/html/themes/$settings{'THEME'}/include/functions.pl`;
+eval `/bin/cat /srv/web/ipfire/html/themes/$THEME_NAME/include/functions.pl`;
sub orange_used () {
if ($ethsettings{'CONFIG_TYPE'} =~ /^[24]$/) {
my %sublogshash = ();
my $sublogs = \%sublogshash;
+ if ( -e "/var/ipfire/main/gpl_accepted") {
+
eval `/bin/cat /var/ipfire/menu.d/*.menu`;
eval `/bin/cat /var/ipfire/menu.d/*.main`;
- if (! blue_used() && ! orange_used()) {
- $menu->{'05.firewall'}{'subMenu'}->{'40.dmz'}{'enabled'} = 0;
- }
if (! blue_used()) {
- $menu->{'05.firewall'}{'subMenu'}->{'30.wireless'}{'enabled'} = 0;
+ $menu->{'05.firewall'}{'subMenu'}->{'60.wireless'}{'enabled'} = 0;
}
if ( $ethsettings{'CONFIG_TYPE'} =~ /^(1|2|3|4)$/ && $ethsettings{'RED_TYPE'} eq 'STATIC' ) {
$menu->{'03.network'}{'subMenu'}->{'70.aliases'}{'enabled'} = 1;
}
+
+ if (&General::RedIsWireless()) {
+ $menu->{'01.system'}{'subMenu'}->{'21.wlan'}{'enabled'} = 1;
+ }
+
+ if ( $ethsettings{'RED_TYPE'} eq "PPPOE" && $pppsettings{'MONPORT'} ne "" ) {
+ $menu->{'02.status'}{'subMenu'}->{'74.modem-status'}{'enabled'} = 1;
+ }
+ }
}
sub showhttpheaders
{
-# print "Pragma: no-cache\n";
-# print "Cache-control: no-cache\n";
-# print "Connection: close\n";
- print "Content-type: text/html\n\n";
+ print "Cache-control: private\n";
+ print "Content-type: text/html; charset=UTF-8\n\n";
}
sub is_menu_visible($) {
return (($ip >= $start) && ($ip <= $end));
}
-sub cleanhtml
-{
+sub escape($) {
+ my $s = shift;
+ return HTML::Entities::encode_entities($s);
+}
+
+sub cleanhtml {
my $outstring =$_[0];
$outstring =~ tr/,/ / if not defined $_[1] or $_[1] ne 'y';
- $outstring =~ s/&/&/g;
- $outstring =~ s/\'/'/g;
- $outstring =~ s/\"/"/g; #" This is just a workaround for the syntax highlighter
- $outstring =~ s/</</g;
- $outstring =~ s/>/>/g;
- return $outstring;
+
+ return escape($outstring);
}
sub connectionstatus
#Sorting of allocated leases
if ($ENV{'QUERY_STRING'} =~ /^IPADDR|^ETHER|^HOSTNAME|^ENDTIME/ ) {
my $newsort=$ENV{'QUERY_STRING'};
- &readhash("${swroot}/dhcp/settings", \%dhcpsettings);
+ &General::readhash("${swroot}/dhcp/settings", \%dhcpsettings);
$act=$dhcpsettings{'SORT_LEASELIST'};
#Reverse actual ?
if ($act =~ $newsort) {
};
$dhcpsettings{'SORT_LEASELIST'}=$newsort;
- &writehash("${swroot}/dhcp/settings", \%dhcpsettings);
+ &General::writehash("${swroot}/dhcp/settings", \%dhcpsettings);
$dhcpsettings{'ACTION'} = 'SORT'; # avoid the next test "First lauch"
}
{
&openbox('100%', 'left', $tr{'current dynamic leases'});
print <<END
-<table width='100%'>
+<table width='100%' class='tbl'>
<tr>
-<td width='25%' align='center'><a href='$ENV{'SCRIPT_NAME'}?IPADDR'><b>$tr{'ip address'}</b></a></td>
-<td width='25%' align='center'><a href='$ENV{'SCRIPT_NAME'}?ETHER'><b>$tr{'mac address'}</b></a></td>
-<td width='20%' align='center'><a href='$ENV{'SCRIPT_NAME'}?HOSTNAME'><b>$tr{'hostname'}</b></a></td>
-<td width='25%' align='center'><a href='$ENV{'SCRIPT_NAME'}?ENDTIME'><b>$tr{'lease expires'} (local time d/m/y)</b></a></td>
-<td width='5%' align='center'><b>Add to fix leases<b></td>
+<th width='25%' align='center'><a href='$ENV{'SCRIPT_NAME'}?IPADDR'><b>$tr{'ip address'}</b></a></th>
+<th width='25%' align='center'><a href='$ENV{'SCRIPT_NAME'}?ETHER'><b>$tr{'mac address'}</b></a></th>
+<th width='20%' align='center'><a href='$ENV{'SCRIPT_NAME'}?HOSTNAME'><b>$tr{'hostname'}</b></a></th>
+<th width='25%' align='center'><a href='$ENV{'SCRIPT_NAME'}?ENDTIME'><b>$tr{'lease expires'} (local time d/m/y)</b></a></th>
+<th width='5%' align='center'><b>Add to fix leases<b></th>
</tr>
END
- ;
+;
open(LEASES,"/var/state/dhcp/dhcpd.leases") or die "Can't open dhcpd.leases";
while ($line = <LEASES>) {
close(LEASES);
my $id = 0;
+ my $col="";
foreach my $key (sort leasesort keys %entries) {
print "<form method='post' action='/cgi-bin/dhcp.cgi'>\n";
my $hostname = &cleanhtml($entries{$key}->{HOSTNAME},"y");
if ($id % 2) {
- print "<tr bgcolor='$table1colour'>";
+ print "<tr>";
+ $col="bgcolor='$table1colour'";
}
else {
- print "<tr bgcolor='$table2colour'>";
+ print "<tr>";
+ $col="bgcolor='$table2colour'";
}
print <<END
-<td align='center'><input type='hidden' name='FIX_ADDR' value='$entries{$key}->{IPADDR}' />$entries{$key}->{IPADDR}</td>
-<td align='center'><input type='hidden' name='FIX_MAC' value='$entries{$key}->{ETHER}' />$entries{$key}->{ETHER}</td>
-<td align='center'><input type='hidden' name='FIX_REMARK' value='$hostname' /> $hostname</td>
-<td align='center'><input type='hidden' name='FIX_ENABLED' value='on' />
+<td align='center' $col><input type='hidden' name='FIX_ADDR' value='$entries{$key}->{IPADDR}' />$entries{$key}->{IPADDR}</td>
+<td align='center' $col><input type='hidden' name='FIX_MAC' value='$entries{$key}->{ETHER}' />$entries{$key}->{ETHER}</td>
+<td align='center' $col><input type='hidden' name='FIX_REMARK' value='$hostname' /> $hostname</td>
+<td align='center' $col><input type='hidden' name='FIX_ENABLED' value='on' />
END
- ;
+;
($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $dst) = localtime ($entries{$key}->{ENDTIME});
$enddate = sprintf ("%02d/%02d/%d %02d:%02d:%02d",$mday,$mon+1,$year+1900,$hour,$min,$sec);
print "$enddate";
}
print <<END
-<td><input type='hidden' name='ACTION' value='$Lang::tr{'add'}2' /><input type='submit' name='SUBMIT' value='$Lang::tr{'add'}' />
-</td></td></tr></form>
+</td><td $col><input type='hidden' name='ACTION' value='$Lang::tr{'add'}2' /><input type='submit' name='SUBMIT' value='$Lang::tr{'add'}' />
+</td></tr></form>
END
- ;
+;
$id++;
}
}
}
}
+
+sub colorize {
+ my $string = $_[0];
+ my @array = split(/\//,$string);
+ my $string2 = $array[0];
+
+ if ( $string eq "*" or $string eq "" ){
+ return $string;
+ } elsif ( $string =~ "ipsec" ){
+ return "<font color='".${Header::colourvpn}."'>".$string."</font>";
+ } elsif ( $string =~ "tun" ){
+ return "<font color='".${Header::colourovpn}."'>".$string."</font>";
+ } elsif ( $string =~ "lo" or $string =~ "127.0.0.0" ){
+ return "<font color='".${Header::colourfw}."'>".$string."</font>";
+ } elsif ( $string =~ $ethsettings{'GREEN_DEV'} or &IpInSubnet($string2,$ethsettings{'GREEN_NETADDRESS'},$ethsettings{'GREEN_NETMASK'}) ){
+ return "<font color='".${Header::colourgreen}."'>".$string."</font>";
+ } elsif ( $string =~ "ppp0" or $string =~ $ethsettings{'RED_DEV'} or $string =~ "0.0.0.0" or $string =~ $ethsettings{'RED_ADDRESS'} ){
+ return "<font color='".${Header::colourred}."'>".$string."</font>";
+ } elsif ( $ethsettings{'CONFIG_TYPE'}>1 and ( $string =~ $ethsettings{'BLUE_DEV'} or &IpInSubnet($string2,$ethsettings{'BLUE_NETADDRESS'},$ethsettings{'BLUE_NETMASK'}) )){
+ return "<font color='".${Header::colourblue}."'>".$string."</font>";
+ } elsif ( $ethsettings{'CONFIG_TYPE'}>2 and ( $string =~ $ethsettings{'ORANGE_DEV'} or &IpInSubnet($string2,$ethsettings{'ORANGE_NETADDRESS'},$ethsettings{'ORANGE_NETMASK'}) )){
+ return "<font color='".${Header::colourorange}."'>".$string."</font>";
+ } else {
+ return $string;
+ }
+}