From 2d0e4dd2ef2340d8036f7e9e24c79730ee6a8c8c Mon Sep 17 00:00:00 2001 From: Alexander Marx Date: Wed, 8 Jan 2014 15:44:55 +0100 Subject: [PATCH] Layout index: added shutdown.cgi and menuentry. Also redesigned Layout --- config/menu/10-system.menu | 6 + html/cgi-bin/index.cgi | 339 ++++++++++++++++--------------------- html/cgi-bin/shutdown.cgi | 88 ++++++++++ langs/de/cgi-bin/de.pl | 2 + langs/en/cgi-bin/en.pl | 2 + 5 files changed, 247 insertions(+), 190 deletions(-) create mode 100755 html/cgi-bin/shutdown.cgi diff --git a/config/menu/10-system.menu b/config/menu/10-system.menu index b56a1ec04..5755366ed 100644 --- a/config/menu/10-system.menu +++ b/config/menu/10-system.menu @@ -40,6 +40,12 @@ 'title' => "$Lang::tr{'system information'}", 'enabled' => 1, }; + $subsystem->{'42.shutdown'} = { + 'caption' => $Lang::tr{'shutdown'}, + 'uri' => '/cgi-bin/shutdown.cgi', + 'title' => "$Lang::tr{'shutdown'}", + 'enabled' => 1, + }; $subsystem->{'99.credits'} = { 'caption' => $Lang::tr{'credits'}, 'uri' => '/cgi-bin/credits.cgi', diff --git a/html/cgi-bin/index.cgi b/html/cgi-bin/index.cgi index e37540bc2..5143e5e14 100644 --- a/html/cgi-bin/index.cgi +++ b/html/cgi-bin/index.cgi @@ -40,6 +40,8 @@ my $warnmessage = ''; my $refresh = ""; my $ipaddr=''; +my $haveipsec=0; +my $haveovpn=0; &Header::showhttpheaders(); @@ -60,9 +62,7 @@ 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'}/ ){ +if ($connstate =~ /$Lang::tr{'connecting'}/ || /$Lang::tr{'connection closed'}/ ){ $refresh = ""; } elsif ($connstate =~ /$Lang::tr{'dod waiting'}/ || -e "${General::swroot}/main/refreshindex") { $refresh = ""; @@ -138,7 +138,7 @@ 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)$/ )) { @@ -158,105 +158,57 @@ 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'}
- -END -; - } elsif ($cgiparams{'ACTION'} eq $Lang::tr{'shutdown ask'}) { -print < - - - - - - - - - -
$Lang::tr{'shutdown sure'}
- -END -; - } else { -print < - - - - - - -
- -END -; - } -} print < - +
- + + +
$Lang::tr{'network'}IP$Lang::tr{'ip address'} $Lang::tr{'status'}
$Lang::tr{'internet'}
$ipaddr $connstate END + my $HOSTNAME = (gethostbyaddr(pack("C4", split(/\./, $ipaddr)), 2))[0]; + if ( "$HOSTNAME" ne "" ) { + print <Hostname:$HOSTNAME  +END + } + + if ( -e "/var/ipfire/red/remote-ipaddress" ) { + my $GATEWAY = `cat /var/ipfire/red/remote-ipaddress`; + chomp($GATEWAY); + print <Gateway:$GATEWAY  +END + } + + my $DNS1 = `cat /var/ipfire/red/dns1`; + my $DNS2 = `cat /var/ipfire/red/dns2`; + chomp($DNS1); + chomp($DNS1); + + if ( $DNS1 ) { print <DNS-Server:$DNS1 +END + } + if ( $DNS2 ) { print <$DNS2 +END + } else { print < 
+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 "" ) { - print <Hostname:$HOSTNAME  -END - } - - if ( -e "/var/ipfire/red/remote-ipaddress" ) { - my $GATEWAY = `cat /var/ipfire/red/remote-ipaddress`; - chomp($GATEWAY); + if ( $netsettings{'GREEN_DEV'} ) { + my $sub=&General::iporsubtocidr($netsettings{'GREEN_NETMASK'}); print <Gateway:$GATEWAY  -END - } - - my $DNS1 = `cat /var/ipfire/red/dns1`; - my $DNS2 = `cat /var/ipfire/red/dns2`; - chomp($DNS1); - chomp($DNS1); - - if ( $DNS1 ) { print <DNS-Server:$DNS1 -END - } - if ( $DNS2 ) { print <$DNS2 -END - } else { print <  -END - } - - if ( $netsettings{'GREEN_DEV'} ) { print < + + + + + + +
$Lang::tr{'network'}$Lang::tr{'ip address'}$Lang::tr{'status'}
$Lang::tr{'lan'} - $netsettings{'GREEN_ADDRESS'} - + $netsettings{'GREEN_ADDRESS'}/$sub + 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'} - + $netsettings{'BLUE_ADDRESS'}/$sub + 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'}; } } - if ( $netsettings{'ORANGE_DEV'} ) { print <$Lang::tr{'dmz'}
-
$netsettings{'ORANGE_ADDRESS'} - Online + $netsettings{'ORANGE_ADDRESS'}/$sub + Online +END + } +#check if IPSEC is running +if ( `cat /var/ipfire/vpn/settings | grep ^ENABLED=on` || + `cat /var/ipfire/vpn/settings | grep ^ENABLED_BLUE=on` ) { + $haveipsec=1; + my $ipsecip = `cat /var/ipfire/vpn/settings | grep ^VPN_IP= | cut -c 8-`; +print<$Lang::tr{'vpn'}
+
$ipsecip + Online +END +} + +#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"; + $haveovpn=1; +print < + + OpenVPN
+
$ovpnip + Online END } - if ( `cat /var/ipfire/vpn/settings | grep ^ENABLED=on` || - `cat /var/ipfire/vpn/settings | grep ^ENABLED_BLUE=on` ) { +print"
"; +&Header::closebox(); + +# Start of Box wich contains all vpn connections + &Header::openbox('100%', 'center', $Lang::tr{'vpn'}) if ($haveipsec || $haveovpn); + +#show ipsec connectiontable + if ( $haveipsec ) { my $ipsecip = `cat /var/ipfire/vpn/settings | grep ^VPN_IP= | cut -c 8-`; 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; + my $col=""; 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'; } - + my ($vpnip,$vpnsub) = split("/",$confighash{$key}[11]); + $vpnsub=&General::iporsubtocidr($vpnsub); + $vpnip="$vpnip/$vpnsub"; if ($id % 2) { - print ""; + $col="bgcolor='$color{'color20'}'"; + print ""; } else { - print ""; + $col="bgcolor='$color{'color22'}'"; + print ""; } - my $active = "
$Lang::tr{'ipsec network'}$Lang::tr{'ip address'}$Lang::tr{'status'}
$confighash{$key}[1] / " . $Lang::tr{"$confighash{$key}[3]"} . " (" . $Lang::tr{"$confighash{$key}[4]"} . ")$confighash{$key}[11]
$confighash{$key}[1] / " . $Lang::tr{"$confighash{$key}[3]"} . " (" . $Lang::tr{"$confighash{$key}[4]"} . ")$vpnip
$confighash{$key}[1] / " . $Lang::tr{"$confighash{$key}[3]"} . " (" . $Lang::tr{"$confighash{$key}[4]"} . ")$confighash{$key}[11]
$confighash{$key}[1] / " . $Lang::tr{"$confighash{$key}[3]"} . " (" . $Lang::tr{"$confighash{$key}[4]"} . ")$vpnip
$Lang::tr{'capsclosed'}
"; + my $active = "$Lang::tr{'capsclosed'}"; if ($confighash{$key}[0] eq 'off') { - $active = "
$Lang::tr{'capsclosed'}
"; + $active = "$Lang::tr{'capsclosed'}"; } else { foreach my $line (@status) { if (($line =~ /\"$confighash{$key}[1]\".*IPsec SA established/) || @@ -380,46 +361,38 @@ END } } } - print "$active"; + print "$active"; } + print ""; } ### # Check if there is any OpenVPN connection configured. ### -if ( -s "${General::swroot}/ovpn/ovpnconfig") - { +if ( $haveovpn ) +{ print < + - + + + 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'}; - print <$ovpnip - - - + + + +
- OpenVPN
-
$Lang::tr{'openvpn network'}$Lang::tr{'ip address'}$Lang::tr{'status'}Online -END - - } - # Print the OpenVPN N2N connection status. if ( -d "${General::swroot}/ovpn/n2nconf") { my %confighash=(); &General::readhasharray("${General::swroot}/ovpn/ovpnconfig", \%confighash); + my $lines; + my $col=""; foreach my $dkey (keys %confighash) { + $lines++; if (($confighash{$dkey}[3] eq 'net') && (-e "/var/run/$confighash{$dkey}[1]n2n.pid")) { my $tport = $confighash{$dkey}[22]; next if ($tport eq ''); @@ -437,16 +410,24 @@ END } else { $display = $tustate[1]; } - + if ($lines %2){ + $col="bgcolor='$color{'color20'}'"; + }else{ + $col="bgcolor='$color{'color22'}'"; + } + #make cidr from ip + my ($vpnip,$vpnsub) = split("/",$confighash{$dkey}[11]); + my $vpnsub=&General::iporsubtocidr($vpnsub); + my $vpnip="$vpnip/$vpnsub"; print < - + $confighash{$dkey}[1] - $confighash{$dkey}[11] + + $vpnip + $display @@ -459,7 +440,7 @@ END } } } - +&Header::closebox(); # Fireinfo if ( ! -e "/var/ipfire/main/send_profile") { $warnmessage .= "
  • $Lang::tr{'fireinfo please enable'}
  • "; @@ -534,28 +515,6 @@ END if ( -e "/var/run/need_reboot" ) { 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(); } diff --git a/html/cgi-bin/shutdown.cgi b/html/cgi-bin/shutdown.cgi new file mode 100755 index 000000000..dd6a03ca8 --- /dev/null +++ b/html/cgi-bin/shutdown.cgi @@ -0,0 +1,88 @@ +#!/usr/bin/perl +# +# SmoothWall CGIs +# +# This code is distributed under the terms of the GPL +# +# (c) The SmoothWall Team +# + +use strict; + +# enable only the following on debugging purpose +#use warnings; +#use CGI::Carp 'fatalsToBrowser'; + +require '/var/ipfire/general-functions.pl'; +require "${General::swroot}/lang.pl"; +require "${General::swroot}/header.pl"; + +my %cgiparams=(); +my $death = 0; +my $rebirth = 0; + +&Header::showhttpheaders(); + +$cgiparams{'ACTION'} = ''; +&Header::getcgihash(\%cgiparams); + +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) { + + &Header::openpage($Lang::tr{'shutdown control'}, 1, ''); + + &Header::openbigbox('100%', 'left'); + + print "\n"; + + &Header::openbox('100%', 'left', ); + print < +
    +END + ; + &Header::closebox(); + +} else { + my $message=''; + my $title=''; + my $refresh = ""; + if ($death) { + $title = $Lang::tr{'shutting down'}; + $message = $Lang::tr{'ipfire has now shutdown'}; + } else { + $title = $Lang::tr{'rebooting'}; + $message = $Lang::tr{'ipfire has now rebooted'}; + } + &Header::openpage($title, 0, $refresh); + + &Header::openbigbox('100%', 'center'); + print < + + +
    +




    +
    +
    +$message + +END + ; +} + +&Header::closebigbox(); +&Header::closepage(); + diff --git a/langs/de/cgi-bin/de.pl b/langs/de/cgi-bin/de.pl index 568f057cb..ee69c98a6 100644 --- a/langs/de/cgi-bin/de.pl +++ b/langs/de/cgi-bin/de.pl @@ -1271,6 +1271,7 @@ 'ipinfo' => 'IP-Info', 'iptable rules' => 'IPTable-Regeln', 'iptmangles' => 'IPTable Mangles', +'ipsec network' => 'IPsec-Netzwerke', 'iptnats' => 'IPTable Network Address Translation', 'ipts' => 'iptables', 'isdn' => 'ISDN', @@ -1536,6 +1537,7 @@ 'openvpn fragment allowed with udp' => '"fragment" kann nur in Kombination mit dem UDP-Protokoll genutzt werden.', 'openvpn log' => 'OpenVPN Log', 'openvpn mssfix allowed with udp' => '"mssfix" kann nur in Kombination mit dem UDP-Protokoll genutzt werden.', +'openvpn network' => 'OpenVPN-Netzwerke', 'openvpn prefix local subnet' => 'Die Prefix-Notation wird nicht unterstützt. Bitte geben Sie eine Subnetzmaske beim lokalen Subnetz ein wie z.B. 255.255.255.0.', 'openvpn prefix openvpn subnet' => 'Die Prefix-Notation wird nicht unterstützt. Bitte geben Sie eine Subnetzmaske beim OpenVPN-Subnetz ein wie z.B. 255.255.255.0.', 'openvpn prefix remote subnet' => 'Die Prefix-Notation wird nicht unterstützt. Bitte geben Sie eine Subnetzmaske beim entfernten Subnetz ein wie z.B. 255.255.255.0.', diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl index 451ea7945..7d4546dbe 100644 --- a/langs/en/cgi-bin/en.pl +++ b/langs/en/cgi-bin/en.pl @@ -1298,6 +1298,7 @@ 'ipfire side is invalid' => 'IPFire side is invalid.', 'ipfires hostname' => 'IPFire\'s Hostname', 'ipinfo' => 'IP info', +'ipsec network' => 'IPsec network', 'iptable rules' => 'IPTable rules', 'iptmangles' => 'IPTable Mangles', 'iptnats' => 'IPTable Network Address Translation', @@ -1566,6 +1567,7 @@ 'openvpn fragment allowed with udp' => 'Using fragment is only allowed when using the UDP protocol.', 'openvpn log' => 'OpenVPN Log', 'openvpn mssfix allowed with udp' => 'Using "mssfix" is only allowed when using the UDP protocol.', +'openvpn network' => 'OpenVPN networks', 'openvpn prefix local subnet' => 'Using the prefix notation is not supported for the local subnet. Please enter a subnet mask like 255.255.255.0.', 'openvpn prefix openvpn subnet' => 'Using the prefix notation is not supported for the OpenVPN subnet. Please enter a subnet mask like 255.255.255.0.', 'openvpn prefix remote subnet' => 'Using the prefix notation is not supported for the remote subnet. Please enter a subnet mask like 255.255.255.0.', -- 2.39.2