X-Git-Url: http://git.ipfire.org/?p=people%2Fteissler%2Fipfire-2.x.git;a=blobdiff_plain;f=html%2Fcgi-bin%2Findex.cgi;h=0b38237b6a3c6de732f4e0d4f0edc47274a68223;hp=ea19e26f5904cfae7feb21b11ae948091e643bc7;hb=4e7c3114cade2f653d703d8a64db7bc4f15f18eb;hpb=5ec41d5f9a65441d513517d6fc5693a615264cb4 diff --git a/html/cgi-bin/index.cgi b/html/cgi-bin/index.cgi index ea19e26f5..0b38237b6 100644 --- a/html/cgi-bin/index.cgi +++ b/html/cgi-bin/index.cgi @@ -21,6 +21,7 @@ use strict; use Net::Telnet; +use Sort::Naturally; # enable only the following on debugging purpose #use warnings; @@ -36,10 +37,22 @@ my %pppsettings=(); my %modemsettings=(); my %netsettings=(); my %ddnssettings=(); +my %proxysettings=(); +my %vpnsettings=(); +my %vpnconfig=(); +my %ovpnconfig=(); my $warnmessage = ''; my $refresh = ""; my $ipaddr=''; - +my $showbox=0; +my $showipsec=0; +my $showovpn=0; + +if ( ! -e "/var/ipfire/main/gpl_accepted" ) { + print "Status: 302 Moved Temporarily\n"; + print "Location: gpl.cgi\n\n"; + exit (0); +} &Header::showhttpheaders(); @@ -51,6 +64,8 @@ $pppsettings{'PROFILENAME'} = 'None'; &General::readhash("${General::swroot}/modem/settings", \%modemsettings); &General::readhash("${General::swroot}/ethernet/settings", \%netsettings); &General::readhash("${General::swroot}/ddns/settings", \%ddnssettings); +&General::readhash("${General::swroot}/proxy/advanced/settings", \%proxysettings); +&General::readhash("${General::swroot}/vpn/settings", \%vpnsettings); my %color = (); my %mainsettings = (); @@ -59,14 +74,12 @@ my %mainsettings = (); my $connstate = &Header::connectionstatus(); - if ( -e "/var/ipfire/main/gpl-accepted" ) { -if ($cgiparams{'ACTION'} eq $Lang::tr{'shutdown'} || $cgiparams{'ACTION'} eq $Lang::tr{'reboot'}) { - $refresh = ""; -} elsif ($connstate =~ /$Lang::tr{'connecting'}/ || /$Lang::tr{'connection closed'}/ ){ - $refresh = ""; -} elsif ($connstate =~ /$Lang::tr{'dod waiting'}/ || -e "${General::swroot}/main/refreshindex") { - $refresh = ""; -} +if ( -e "/var/ipfire/main/gpl-accepted" ) { + if ($connstate =~ /$Lang::tr{'connecting'}/ || /$Lang::tr{'connection closed'}/ ){ + $refresh = ""; + }elsif ($connstate =~ /$Lang::tr{'dod waiting'}/ || -e "${General::swroot}/main/refreshindex") { + $refresh = ""; + } } if ($cgiparams{'ACTION'} eq $Lang::tr{'dial profile'}) @@ -81,8 +94,8 @@ if ($cgiparams{'ACTION'} eq $Lang::tr{'dial profile'}) unlink("${General::swroot}/ppp/settings"); link("${General::swroot}/ppp/settings-$cgiparams{'PROFILE'}", "${General::swroot}/ppp/settings"); - system ("/usr/bin/touch", "${General::swroot}/ppp/updatesettings"); - + open (TMP, ">${General::swroot}/ppp/updatesettings"); + close TMP; # read in the new params "early" so we can write secrets. %cgiparams = (); &General::readhash("${General::swroot}/ppp/settings", \%cgiparams); @@ -106,10 +119,11 @@ if ($cgiparams{'ACTION'} eq $Lang::tr{'dial profile'}) if ($cgiparams{'ACTION'} eq $Lang::tr{'dial'}) { system('/usr/local/bin/redctrl start > /dev/null') == 0 - or &General::log("Dial failed: $?"); sleep 1;} -elsif ($cgiparams{'ACTION'} eq $Lang::tr{'hangup'}) { + or &General::log("Dial failed: $?"); sleep 1; +}elsif ($cgiparams{'ACTION'} eq $Lang::tr{'hangup'}) { system('/usr/local/bin/redctrl stop > /dev/null') == 0 - or &General::log("Hangup failed: $?"); sleep 1;} + or &General::log("Hangup failed: $?"); sleep 1; +} my $c; my $maxprofiles = 5; @@ -129,18 +143,15 @@ for ($c = 1; $c <= $maxprofiles; $c++) { $selected{'PROFILE'}{$pppsettings{'PROFILE'}} = "selected='selected'"; my $dialButtonDisabled = "disabled='disabled'"; - &Header::openpage($Lang::tr{'main page'}, 1, $refresh); &Header::openbigbox('', 'center'); +if (open(IPADDR,"${General::swroot}/red/local-ipaddress")) { + $ipaddr = ; + close IPADDR; + chomp ($ipaddr); + } -# licence agreement -if ($cgiparams{'ACTION'} eq $Lang::tr{'yes'} && $cgiparams{'gpl_accepted'} eq '1') { - system('touch /var/ipfire/main/gpl_accepted') -} -if ( -e "/var/ipfire/main/gpl_accepted" ) { -&Header::openbox('100%', 'center', &Header::cleanhtml(`/bin/uname -n`,"y")); - - +&Header::openbox('100%', 'center', ''); if ( ( $pppsettings{'VALID'} eq 'yes' && $modemsettings{'VALID'} eq 'yes' ) || ( $netsettings{'CONFIG_TYPE'} =~ /^(1|2|3|4)$/ && $netsettings{'RED_TYPE'} =~ /^(DHCP|STATIC)$/ )) { if (open(IPADDR,"${General::swroot}/ddns/ipcache")) { $ipaddr = ; @@ -158,105 +169,66 @@ if ( ( $pppsettings{'VALID'} eq 'yes' && $modemsettings{'VALID'} eq 'yes' ) || ( print "$Lang::tr{'profile has errors'}\n \n"; } -#if ( $netsettings{'RED_TYPE'} =~ /^(DHCP|STATIC)$/ ) { -# $ipaddr = $netsettings{'RED_ADDRESS'}; -#} - -my $death = 0; -my $rebirth = 0; - -if ($cgiparams{'ACTION'} eq $Lang::tr{'shutdown'}) { - $death = 1; - &General::log($Lang::tr{'shutting down ipfire'}); - system '/usr/local/bin/ipfirereboot down'; -} elsif ($cgiparams{'ACTION'} eq $Lang::tr{'reboot'}) { - $rebirth = 1; - &General::log($Lang::tr{'rebooting ipfire'}); - system '/usr/local/bin/ipfirereboot boot'; -} - -if ($death == 0 && $rebirth == 0) { - -if ($mainsettings{'REBOOTQUESTION'} eq "off") { -print < - - - - - - -
- -END -; -} else { - if ($cgiparams{'ACTION'} eq $Lang::tr{'reboot ask'}) { -print < - - - - - - - - - -
$Lang::tr{'reboot sure'}
- +print < + + + + + + + END -; - } elsif ($cgiparams{'ACTION'} eq $Lang::tr{'shutdown ask'}) { -print < -
$Lang::tr{'network'}$Lang::tr{'ip address'}$Lang::tr{'status'}
$Lang::tr{'internet'}
$ipaddr $connstate
- - - - - - - - -
$Lang::tr{'shutdown sure'}
- + my $HOSTNAME = (gethostbyaddr(pack("C4", split(/\./, $ipaddr)), 2))[0]; + if ( "$HOSTNAME" ne "" ) { + print <$Lang::tr{'hostname'}:$HOSTNAME END -; - } else { -print < - - - - - - -
- + } + + if ( -e "${General::swroot}/red/remote-ipaddress" ) { + open (TMP, "<${General::swroot}/red/remote-ipaddress"); + my $GATEWAY = ; + chomp($GATEWAY); + close TMP; + print <$Lang::tr{'gateway'}:$GATEWAY END -; } -} -print <; + close(DNS); + chomp($dns_server); + if ($dns_server) { + push(@dns_servers, $dns_server); + } + } + my $dns_servers_str = join(", ", @dns_servers); - - - - - - - - + + + +
$Lang::tr{'network'}IP$Lang::tr{'status'}
$Lang::tr{'internet'}
$ipaddr $connstate + print < + + $Lang::tr{'dns servers'}: + + $dns_servers_str +
END + +#Dial profiles if ( $netsettings{'RED_TYPE'} ne "STATIC" && $netsettings{'RED_TYPE'} ne "DHCP" ){ print `/usr/local/bin/dialctrl.pl show`; print < - - +
+ +
$Lang::tr{'profile'}:
"; } - my $HOSTNAME = (gethostbyaddr(pack("C4", split(/\./, $ipaddr)), 2))[0]; - if ( "$HOSTNAME" ne "" ) { + if ( $netsettings{'GREEN_DEV'} ) { + my $sub=&General::iporsubtocidr($netsettings{'GREEN_NETMASK'}); print <Hostname:$HOSTNAME  +
+ + + + + + + +
$Lang::tr{'network'}$Lang::tr{'ip address'}$Lang::tr{'status'}
$Lang::tr{'lan'} + $netsettings{'GREEN_ADDRESS'}/$sub + END + if ( $proxysettings{'ENABLE'} eq 'on' ) { + print $Lang::tr{'advproxy on'}; + if ( $proxysettings{'TRANSPARENT'} eq 'on' ) { print " (transparent)"; } + } else { print $Lang::tr{'advproxy off'}; } } - - if ( -e "/var/ipfire/red/remote-ipaddress" ) { - my $GATEWAY = `cat /var/ipfire/red/remote-ipaddress`; - chomp($GATEWAY); + if ( $netsettings{'BLUE_DEV'} ) { + my $sub=&General::iporsubtocidr($netsettings{'BLUE_NETMASK'}); print <Gateway:$GATEWAY  +
$Lang::tr{'wireless'}
+
$netsettings{'BLUE_ADDRESS'}/$sub + END + if ( $proxysettings{'ENABLE_BLUE'} eq 'on' ) { + print $Lang::tr{'advproxy on'}; + if ( $proxysettings{'TRANSPARENT_BLUE'} eq 'on' ) { print " (transparent)"; } + } else { print $Lang::tr{'advproxy off'}; } } - - my $DNS1 = `cat /var/ipfire/red/dns1`; - my $DNS2 = `cat /var/ipfire/red/dns2`; - chomp($DNS1); - chomp($DNS1); - - if ( $DNS1 ) { print <DNS-Server:$DNS1 + if ( $netsettings{'ORANGE_DEV'} ) { + my $sub=&General::iporsubtocidr($netsettings{'ORANGE_NETMASK'}); + print <$Lang::tr{'dmz'}
+
$netsettings{'ORANGE_ADDRESS'}/$sub + Online END } - if ( $DNS2 ) { print <$DNS2 -END - } else { print <  +#check if IPSEC is running +if ( $vpnsettings{'ENABLED'} eq 'on' || $vpnsettings{'ENABLED_BLUE'} eq 'on' ) { + my $ipsecip = $vpnsettings{'VPN_IP'}; +print<$Lang::tr{'ipsec'}
+
$ipsecip + Online END - } +} - if ( $netsettings{'GREEN_DEV'} ) { print <$Lang::tr{'lan'} - $netsettings{'GREEN_ADDRESS'} - +#check if OpenVPN is running +my %confighash=(); +&General::readhash("${General::swroot}/ovpn/settings", \%confighash); + +if (($confighash{'ENABLED'} eq "on") || + ($confighash{'ENABLED_BLUE'} eq "on") || + ($confighash{'ENABLED_ORANGE'} eq "on")) { + my ($ovpnip,$sub) = split("/",$confighash{'DOVPN_SUBNET'}); + $sub=&General::iporsubtocidr($sub); + $ovpnip="$ovpnip/$sub"; +print < + + OpenVPN
+
$ovpnip + Online END - if ( `cat /var/ipfire/proxy/advanced/settings | grep ^ENABLE=on` ) { - print $Lang::tr{'advproxy on'}; - if ( `cat /var/ipfire/proxy/advanced/settings | grep ^TRANSPARENT=on` ) { print " (transparent)"; } - } else { print $Lang::tr{'advproxy off'}; } } - if ( $netsettings{'BLUE_DEV'} ) { print <$Lang::tr{'wireless'}
-
$netsettings{'BLUE_ADDRESS'} - -END - if ( `cat /var/ipfire/proxy/advanced/settings | grep ^ENABLE_BLUE=on` ) { - print $Lang::tr{'advproxy on'}; - if ( `cat /var/ipfire/proxy/advanced/settings | grep ^TRANSPARENT_BLUE=on` ) { print " (transparent)"; } - } else { print $Lang::tr{'advproxy off'}; } +print"
"; +&Header::closebox(); + +#Check if there are any vpns configured (ipsec and openvpn) +&General::readhasharray("${General::swroot}/vpn/config", \%vpnconfig); +foreach my $key (sort { ncmp($vpnconfig{$a}[1],$vpnconfig{$b}[1]) } keys %vpnconfig) { + if ($vpnconfig{$key}[0] eq 'on'){ + $showipsec=1; + $showbox=1; + last; } - if ( $netsettings{'ORANGE_DEV'} ) { print <$Lang::tr{'dmz'}
- $netsettings{'ORANGE_ADDRESS'} - Online -END +} +&General::readhasharray("${General::swroot}/ovpn/ovpnconfig", \%ovpnconfig); +foreach my $dkey (sort { ncmp($ovpnconfig{$a}[1],$ovpnconfig{$b}[1])} keys %ovpnconfig) { + if (($ovpnconfig{$dkey}[3] eq 'net') && (-e "/var/run/$ovpnconfig{$dkey}[1]n2n.pid")){ + $showbox=1; + $showovpn=1; + last; } - if ( `cat /var/ipfire/vpn/settings | grep ^ENABLED=on` || - `cat /var/ipfire/vpn/settings | grep ^ENABLED_BLUE=on` ) { - my $ipsecip = `cat /var/ipfire/vpn/settings | grep ^VPN_IP= | cut -c 8-`; +} + +if ($showbox){ +# Start of Box wich contains all vpn connections + &Header::openbox('100%', 'center', $Lang::tr{'vpn'}); +#show ipsec connectiontable + if ( $showipsec ) { + my $ipsecip = $vpnsettings{'VPN_IP'}; my @status = `/usr/local/bin/ipsecctrl I`; my %confighash = (); - &General::readhasharray("${General::swroot}/vpn/config", \%confighash); - print <$Lang::tr{'vpn'}
- $ipsecip - Online -END my $id = 0; my $gif; - foreach my $key (sort { uc($confighash{$a}[1]) cmp uc($confighash{$b}[1]) } keys %confighash) { - if ($confighash{$key}[0] eq 'on') { $gif = 'on.gif'; } else { $gif = 'off.gif'; } - - if ($id % 2) { - print "$confighash{$key}[1] / " . $Lang::tr{"$confighash{$key}[3]"} . " (" . $Lang::tr{"$confighash{$key}[4]"} . ")$confighash{$key}[11]"; - } else { - print "$confighash{$key}[1] / " . $Lang::tr{"$confighash{$key}[3]"} . " (" . $Lang::tr{"$confighash{$key}[4]"} . ")$confighash{$key}[11]"; - } - - my $active = "
$Lang::tr{'capsclosed'}
"; - if ($confighash{$key}[0] eq 'off') { - $active = "
$Lang::tr{'capsclosed'}
"; - } else { - foreach my $line (@status) { - if (($line =~ /\"$confighash{$key}[1]\".*IPsec SA established/) || - ($line =~/$confighash{$key}[1]\{.*INSTALLED/ )) - { - $active = "
$Lang::tr{'capsopen'}
"; + my $col=""; + my $count=0; + print < + + + + + + +END + foreach my $key (sort { uc($vpnconfig{$a}[1]) cmp uc($vpnconfig{$b}[1]) } keys %vpnconfig) { + if ($vpnconfig{$key}[0] eq 'on') { + $count++; + my ($vpnip,$vpnsub) = split("/",$vpnconfig{$key}[11]); + $vpnsub=&General::iporsubtocidr($vpnsub); + $vpnip="$vpnip/$vpnsub"; + if ($count % 2){ + $col="bgcolor='$color{'color22'}'"; + }else{ + $col="bgcolor='$color{'color20'}'"; + } + if ($id % 2) { + print ""; + } else { + print ""; + } + my $active = ""; + if ($vpnconfig{$key}[0] eq 'off') { + $active = ""; + } else { + foreach my $line (@status) { + if (($line =~ /\"$vpnconfig{$key}[1]\".*IPsec SA established/) || ($line =~/$vpnconfig{$key}[1]\{.*INSTALLED/ )){ + $active = ""; + } + } } - } + print "$active"; } - print ""; } + print "
$Lang::tr{'ipsec network'}$Lang::tr{'ip address'}$Lang::tr{'status'}
$vpnconfig{$key}[1]$vpnip
$vpnconfig{$key}[1]$vpnip$Lang::tr{'capsclosed'}$Lang::tr{'capsclosed'}$Lang::tr{'capsopen'}$active
"; } ### # Check if there is any OpenVPN connection configured. ### -if ( -s "${General::swroot}/ovpn/ovpnconfig") - { - print < - - OpenVPN
- -END - # Check if the OpenVPN server for Road Warrior Connections is running and display status information. - my %confighash=(); - - &General::readhash("${General::swroot}/ovpn/settings", \%confighash); - - if (($confighash{'ENABLED'} eq "on") || - ($confighash{'ENABLED_BLUE'} eq "on") || - ($confighash{'ENABLED_ORANGE'} eq "on")) { - - my $ovpnip = $confighash{'DOVPN_SUBNET'}; + if ( $showovpn ){ print <$ovpnip - Online +
+ + + + + END - } - - # Print the OpenVPN N2N connection status. - if ( -d "${General::swroot}/ovpn/n2nconf") { - my %confighash=(); - - &General::readhasharray("${General::swroot}/ovpn/ovpnconfig", \%confighash); - foreach my $dkey (keys %confighash) { - if (($confighash{$dkey}[3] eq 'net') && (-e "/var/run/$confighash{$dkey}[1]n2n.pid")) { - my $tport = $confighash{$dkey}[22]; - next if ($tport eq ''); - - my $tnet = new Net::Telnet ( Timeout=>5, Errmode=>'return', Port=>$tport); - $tnet->open('127.0.0.1'); - my @output = $tnet->cmd(String => 'state', Prompt => '/(END.*\n|ERROR:.*\n)/'); - my @tustate = split(/\,/, $output[1]); - - my $display; - my $display_colour = $Header::colourred; - if ( $tustate[1] eq 'CONNECTED') { - $display_colour = $Header::colourgreen; - $display = $Lang::tr{'capsopen'}; - } else { - $display = $tustate[1]; - } - - print < - - - - + # Check if the OpenVPN server for Road Warrior Connections is running and display status information. + my $active; + my $count=0; + # Print the OpenVPN N2N connection status. + if ( -d "${General::swroot}/ovpn/n2nconf") { + my $col=""; + foreach my $dkey (sort { ncmp ($ovpnconfig{$a}[1],$ovpnconfig{$b}[1])} keys %ovpnconfig) { + if (($ovpnconfig{$dkey}[3] eq 'net') && (-e "/var/run/$ovpnconfig{$dkey}[1]n2n.pid")){ + $count++; + my $tport = $ovpnconfig{$dkey}[22]; + next if ($tport eq ''); + my $tnet = new Net::Telnet ( Timeout=>5, Errmode=>'return', Port=>$tport); + $tnet->open('127.0.0.1'); + my @output = $tnet->cmd(String => 'state', Prompt => '/(END.*\n|ERROR:.*\n)/'); + my @tustate = split(/\,/, $output[1]); + my $display; + my $display_colour = $Header::colourred; + if ( $tustate[1] eq 'CONNECTED' || ($tustate[1] eq 'WAIT')) { + $display_colour = $Header::colourgreen; + $display = $Lang::tr{'capsopen'}; + } else { + $display = $tustate[1]; + } + if ($count %2){ + $col="bgcolor='$color{'color22'}'"; + }else{ + $col="bgcolor='$color{'color20'}'"; + } + $active='off'; + #make cidr from ip + my ($vpnip,$vpnsub) = split("/",$ovpnconfig{$dkey}[11]); + my $vpnsub=&General::iporsubtocidr($vpnsub); + my $vpnip="$vpnip/$vpnsub"; + print < + + + + END + } } } + if ($active ne 'off'){ + print ""; + } + print"
$Lang::tr{'openvpn network'}$Lang::tr{'ip address'}$Lang::tr{'status'} - $confighash{$dkey}[1] - - $confighash{$dkey}[11] - - - - $display - - -
$ovpnconfig{$dkey}[1]$vpnip$display
$Lang::tr{'ovpn no connections'}
"; } +&Header::closebox(); } # Fireinfo @@ -520,74 +528,21 @@ foreach my $disk (@files) { $warnmessage .= "
  • $disk - $Lang::tr{'deprecated fs warn'}
  • \n\n"; } - if ($warnmessage) { + &Header::openbox('100%','center', ); + print ""; + print ""; print "
    $Lang::tr{'fwhost hint'}
    $warnmessage
    "; + &Header::closebox(); } -print < -END -; + +print "
    "; &Pakfire::dblist("upgrade", "notice"); -print <
    $Lang::tr{'needreboot'}!"; } -} else { - my $message=''; - if ($death) { - $message = $Lang::tr{'ipfire has now shutdown'}; - } else { - $message = $Lang::tr{'ipfire has now rebooted'}; - } - print < - - -
    -




    -
    -
    -$message -
    -END -; -} - -&Header::closebox(); -} - -else { -&Header::openbox('100%', 'left', $Lang::tr{'gpl license agreement'}); -print <
    -END -; -if ( -e "/usr/share/doc/licenses/GPLv3" ) { - print ''; -} -else { - print '
    GNU GENERAL PUBLIC LICENSE
    '; -} -print < - - $Lang::tr{'gpl i accept these terms and conditions'}. -
    - - -

    - $Lang::tr{'gpl unofficial translation of the general public license v3'} - -END - -&Header::closebox(); -} +print ""; &Header::closebigbox(); &Header::closepage();