diff --git a/config/cfgroot/general-functions.pl b/config/cfgroot/general-functions.pl index 442e31f36..fa90009bb 100644 --- a/config/cfgroot/general-functions.pl +++ b/config/cfgroot/general-functions.pl @@ -115,11 +115,9 @@ sub log } sub setup_default_networks { - my %netsettings=(); + my %netsettings = %Network::ethernet; my $defaultNetworks = shift; - &readhash("/var/ipfire/ethernet/settings", \%netsettings); - # Get current defined networks (Red, Green, Blue, Orange) $defaultNetworks->{$Lang::tr{'fwhost any'}}{'IPT'} = "0.0.0.0/0.0.0.0"; $defaultNetworks->{$Lang::tr{'fwhost any'}}{'NAME'} = "ALL"; @@ -579,11 +577,10 @@ sub checksubnets sub check_net_internal_range{ my $network=shift; my ($ip,$cidr)=split(/\//,$network); - my %ownnet=(); + my %ownnet = %Network::ethernet; my $errormessage; $cidr=&iporsubtocidr($cidr); #check if we use one of ipfire's networks (green,orange,blue) - &readhash("${General::swroot}/ethernet/settings", \%ownnet); if (($ownnet{'GREEN_NETADDRESS'} ne '' && $ownnet{'GREEN_NETADDRESS'} ne '0.0.0.0') && &IpInSubnet($ip,$ownnet{'GREEN_NETADDRESS'},&iporsubtodec($ownnet{'GREEN_NETMASK'}))){ $errormessage=$Lang::tr{'ccd err green'};return $errormessage;} if (($ownnet{'ORANGE_NETADDRESS'} ne '' && $ownnet{'ORANGE_NETADDRESS'} ne '0.0.0.0') && &IpInSubnet($ip,$ownnet{'ORANGE_NETADDRESS'},&iporsubtodec($ownnet{'ORANGE_NETMASK'}))){ $errormessage=$Lang::tr{'ccd err orange'};return $errormessage;} if (($ownnet{'BLUE_NETADDRESS'} ne '' && $ownnet{'BLUE_NETADDRESS'} ne '0.0.0.0') && &IpInSubnet($ip,$ownnet{'BLUE_NETADDRESS'},&iporsubtodec($ownnet{'BLUE_NETMASK'}))){ $errormessage=$Lang::tr{'ccd err blue'};return $errormessage;} @@ -593,11 +590,10 @@ sub check_net_internal_range{ sub check_net_internal_exact{ my $network=shift; my ($ip,$cidr)=split(/\//,$network); - my %ownnet=(); + my %ownnet = %Network::ethernet; my $errormessage; $cidr=&iporsubtocidr($cidr); #check if we use one of ipfire's networks (green,orange,blue) - &readhash("${General::swroot}/ethernet/settings", \%ownnet); if (($ownnet{'GREEN_NETADDRESS'} ne '' && $ownnet{'GREEN_NETADDRESS'} ne '0.0.0.0') && &Network::network_equal("$ownnet{'GREEN_NETADDRESS'}/$ownnet{'GREEN_NETMASK'}", $network)){ $errormessage=$Lang::tr{'ccd err green'};return $errormessage;} if (($ownnet{'ORANGE_NETADDRESS'} ne '' && $ownnet{'ORANGE_NETADDRESS'} ne '0.0.0.0') && &Network::network_equal("$ownnet{'ORANGE_NETADDRESS'}/$ownnet{'ORANGE_NETMASK'}", $network)){ $errormessage=$Lang::tr{'ccd err orange'};return $errormessage;} if (($ownnet{'BLUE_NETADDRESS'} ne '' && $ownnet{'BLUE_NETADDRESS'} ne '0.0.0.0') && &Network::network_equal("$ownnet{'BLUE_NETADDRESS'}/$ownnet{'BLUE_NETMASK'}", $network)){ $errormessage=$Lang::tr{'ccd err blue'};return $errormessage;} @@ -1039,11 +1035,8 @@ sub MakeUserAgent() { sub RedIsWireless() { # This function checks if a network device is a wireless device. - my %settings = (); - &readhash("${General::swroot}/ethernet/settings", \%settings); - # Find the name of the network device. - my $device = $settings{'RED_DEV'}; + my $device = $Network::ethernet{'RED_DEV'}; # Exit, if no device is configured. return 0 if ($device eq ""); diff --git a/config/cfgroot/header.pl b/config/cfgroot/header.pl index 3fd06cf17..ca4484756 100644 --- a/config/cfgroot/header.pl +++ b/config/cfgroot/header.pl @@ -88,7 +88,6 @@ END my %menuhash = (); my $menu = \%menuhash; %settings = (); -%ethsettings = (); %pppsettings = (); my @URI = split('\?', $ENV{'REQUEST_URI'}); @@ -101,7 +100,6 @@ if ($ENV{'SERVER_ADDR'} && $ENV{'HTTPS'} ne 'on') { ### Initialize environment &General::readhash("${swroot}/main/settings", \%settings); -&General::readhash("${swroot}/ethernet/settings", \%ethsettings); &General::readhash("${swroot}/ppp/settings", \%pppsettings); $hostname = $settings{'HOSTNAME'}; $hostnameintitle = 0; @@ -379,7 +377,7 @@ sub closebox { } sub green_used() { - if ($ethsettings{'GREEN_DEV'} && $ethsettings{'GREEN_DEV'} ne "") { + if ($Network::ethernet{'GREEN_DEV'} && $Network::ethernet{'GREEN_DEV'} ne "") { return 1; } @@ -387,14 +385,14 @@ sub green_used() { } sub orange_used () { - if ($ethsettings{'CONFIG_TYPE'} =~ /^[24]$/) { + if ($Network::ethernet{'CONFIG_TYPE'} =~ /^[24]$/) { return 1; } return 0; } sub blue_used () { - if ($ethsettings{'CONFIG_TYPE'} =~ /^[34]$/) { + if ($Network::ethernet{'CONFIG_TYPE'} =~ /^[34]$/) { return 1; } return 0; @@ -432,7 +430,7 @@ sub genmenu { if (! blue_used()) { $menu->{'05.firewall'}{'subMenu'}->{'60.wireless'}{'enabled'} = 0; } - if ( $ethsettings{'CONFIG_TYPE'} =~ /^(1|2|3|4)$/ && $ethsettings{'RED_TYPE'} eq 'STATIC' ) { + if ( $Network::ethernet{'CONFIG_TYPE'} =~ /^(1|2|3|4)$/ && $Network::ethernet{'RED_TYPE'} eq 'STATIC' ) { $menu->{'03.network'}{'subMenu'}->{'70.aliases'}{'enabled'} = 1; } @@ -440,7 +438,7 @@ sub genmenu { $menu->{'01.system'}{'subMenu'}->{'21.wlan'}{'enabled'} = 1; } - if ( $ethsettings{'RED_TYPE'} eq "PPPOE" && $pppsettings{'MONPORT'} ne "" ) { + if ( $Network::ethernet{'RED_TYPE'} eq "PPPOE" && $pppsettings{'MONPORT'} ne "" ) { $menu->{'02.status'}{'subMenu'}->{'74.modem-status'}{'enabled'} = 1; } @@ -613,15 +611,13 @@ sub cleanhtml { sub connectionstatus { my %pppsettings = (); - my %netsettings = (); my $iface=''; $pppsettings{'PROFILENAME'} = 'None'; &General::readhash("${General::swroot}/ppp/settings", \%pppsettings); - &General::readhash("${General::swroot}/ethernet/settings", \%netsettings); my $profileused=''; - unless ( $netsettings{'RED_TYPE'} =~ /^(DHCP|STATIC)$/ ) { + unless ($Network::ethernet{'RED_TYPE'} =~ /^(DHCP|STATIC)$/) { $profileused="- $pppsettings{'PROFILENAME'}"; } @@ -830,13 +826,13 @@ sub colorize { return "".$string.""; } elsif ( $string =~ "lo" or $string =~ "127.0.0.0" ){ return "".$string.""; - } elsif ( $string =~ $ethsettings{'GREEN_DEV'} or &General::IpInSubnet($string2,$ethsettings{'GREEN_NETADDRESS'},$ethsettings{'GREEN_NETMASK'}) ){ + } elsif ( $string =~ $Network::ethernet{'GREEN_DEV'} or &General::IpInSubnet($string2,$Network::ethernet{'GREEN_NETADDRESS'},$Network::ethernet{'GREEN_NETMASK'}) ){ return "".$string.""; - } elsif ( $string =~ "ppp0" or $string =~ $ethsettings{'RED_DEV'} or $string =~ "0.0.0.0" or $string =~ $ethsettings{'RED_ADDRESS'} ){ + } elsif ( $string =~ "ppp0" or $string =~ $Network::ethernet{'RED_DEV'} or $string =~ "0.0.0.0" or $string =~ $Network::ethernet{'RED_ADDRESS'} ){ return "".$string.""; - } elsif ( $ethsettings{'CONFIG_TYPE'}>1 and ( $string =~ $ethsettings{'BLUE_DEV'} or &General::IpInSubnet($string2,$ethsettings{'BLUE_NETADDRESS'},$ethsettings{'BLUE_NETMASK'}) )){ + } elsif ( $Network::ethernet{'CONFIG_TYPE'}>1 and ( $string =~ $Network::ethernet{'BLUE_DEV'} or &General::IpInSubnet($string2,$Network::ethernet{'BLUE_NETADDRESS'},$Network::ethernet{'BLUE_NETMASK'}) )){ return "".$string.""; - } elsif ( $ethsettings{'CONFIG_TYPE'}>2 and ( $string =~ $ethsettings{'ORANGE_DEV'} or &General::IpInSubnet($string2,$ethsettings{'ORANGE_NETADDRESS'},$ethsettings{'ORANGE_NETMASK'}) )){ + } elsif ( $Network::ethernet{'CONFIG_TYPE'}>2 and ( $string =~ $Network::ethernet{'ORANGE_DEV'} or &General::IpInSubnet($string2,$Network::ethernet{'ORANGE_NETADDRESS'},$Network::ethernet{'ORANGE_NETMASK'}) )){ return "".$string.""; } else { return $string; diff --git a/config/cfgroot/network-functions.pl b/config/cfgroot/network-functions.pl index 507e85c23..221239e5c 100644 --- a/config/cfgroot/network-functions.pl +++ b/config/cfgroot/network-functions.pl @@ -29,8 +29,9 @@ use experimental 'smartmatch'; use Socket; # System ethernet configuration -our %ethernet_settings = (); -&General::readhash("${General::swroot}/ethernet/settings", \%ethernet_settings); +our %ethernet = (); + +&General::readhash("${General::swroot}/ethernet/settings", \%ethernet); # List of all possible network zones that can be configured our @known_network_zones = ("red", "green", "orange", "blue"); @@ -593,7 +594,7 @@ sub get_intf_by_address($) { # sub get_available_network_zones () { # Obtain the configuration type from the netsettings hash. - my $config_type = $ethernet_settings{'CONFIG_TYPE'}; + my $config_type = $ethernet{'CONFIG_TYPE'}; # Hash which contains the conversation from the config mode # to the existing network interface names. They are stored like @@ -639,8 +640,8 @@ sub is_zone_available() { # sub is_red_mode_ip() { # Obtain the settings from the netsettings hash - my $config_type = $ethernet_settings{'CONFIG_TYPE'}; - my $red_type = $ethernet_settings{'RED_TYPE'}; + my $config_type = $ethernet{'CONFIG_TYPE'}; + my $red_type = $ethernet{'RED_TYPE'}; # RED must be a network device (configuration 1-4) with dynamic or static IP return (($config_type ~~ [1..4]) && ($red_type ~~ ["DHCP", "STATIC"]));