X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=html%2Fcgi-bin%2Fservices.cgi;h=156db2d2407cab273687a57820f022b841fbd464;hb=23c6672b8c7c555b1455aebc08b51585770152da;hp=c7314be9264af45d99dbfd91f908f555875f35c1;hpb=08efdb4f268f2d7489da9e1ac063f8418ffc8ad9;p=people%2Fpmueller%2Fipfire-2.x.git diff --git a/html/cgi-bin/services.cgi b/html/cgi-bin/services.cgi index c7314be926..156db2d240 100644 --- a/html/cgi-bin/services.cgi +++ b/html/cgi-bin/services.cgi @@ -2,7 +2,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# Copyright (C) 2008 Michael Tremer & Christian Schmidt # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -28,24 +28,24 @@ use strict; require '/var/ipfire/general-functions.pl'; require "${General::swroot}/lang.pl"; require "${General::swroot}/header.pl"; - -#workaround to suppress a warning when a variable is used only once -my @dummy = ( ${Header::colourred} ); -undef (@dummy); +require "${General::swroot}/graphs.pl"; my %color = (); my %mainsettings = (); +my %netsettings=(); &General::readhash("${General::swroot}/main/settings", \%mainsettings); &General::readhash("/srv/web/ipfire/html/themes/".$mainsettings{'THEME'}."/include/colors.txt", \%color); - -my %netsettings=(); &General::readhash("${General::swroot}/ethernet/settings", \%netsettings); +#workaround to suppress a warning when a variable is used only once +my @dummy = ( ${Header::colourred} ); +undef (@dummy); + + my %cgiparams=(); # Maps a nice printable name to the changing part of the pid file, which # is also the name of the program -my %servicenames = -( +my %servicenames =( $Lang::tr{'dhcp server'} => 'dhcpd', $Lang::tr{'web server'} => 'httpd', $Lang::tr{'cron server'} => 'fcron', @@ -59,68 +59,98 @@ my %servicenames = 'OpenVPN' => 'openvpn' ); +my %link =( + $Lang::tr{'dhcp server'} => "$Lang::tr{'dhcp server'}", + $Lang::tr{'web server'} => $Lang::tr{'web server'}, + $Lang::tr{'cron server'} => $Lang::tr{'cron server'}, + $Lang::tr{'dns proxy server'} => $Lang::tr{'dns proxy server'}, + $Lang::tr{'logging server'} => $Lang::tr{'logging server'}, + $Lang::tr{'kernel logging server'} => $Lang::tr{'kernel logging server'}, + $Lang::tr{'ntp server'} => "$Lang::tr{'ntp server'}", + $Lang::tr{'secure shell server'} => "$Lang::tr{'secure shell server'}", + $Lang::tr{'vpn'} => "$Lang::tr{'vpn'}", + $Lang::tr{'web proxy'} => "$Lang::tr{'web proxy'}", + 'OpenVPN' => "OpenVPN", + "$Lang::tr{'intrusion detection system'} (GREEN)" => "$Lang::tr{'intrusion detection system'} (GREEN)", + "$Lang::tr{'intrusion detection system'} (RED)" => "$Lang::tr{'intrusion detection system'} (RED)", + "$Lang::tr{'intrusion detection system'} (ORANGE)" => "$Lang::tr{'intrusion detection system'} (ORANGE)", + "$Lang::tr{'intrusion detection system'} (BLUE)" => "$Lang::tr{'intrusion detection system'} (BLUE)" +); + my $lines=0; # Used to count the outputlines to make different bgcolor my $iface = ''; -if (open(FILE, "${General::swroot}/red/iface")) -{ +if (open(FILE, "${General::swroot}/red/iface")){ $iface = ; close FILE; chomp $iface; } + $servicenames{"$Lang::tr{'intrusion detection system'} (RED)"} = "snort_${iface}"; $servicenames{"$Lang::tr{'intrusion detection system'} (GREEN)"} = "snort_$netsettings{'GREEN_DEV'}"; -if ($netsettings{'ORANGE_DEV'} ne '') { + +if ($netsettings{'ORANGE_DEV'} ne ''){ $servicenames{"$Lang::tr{'intrusion detection system'} (ORANGE)"} = "snort_$netsettings{'ORANGE_DEV'}"; } -if ($netsettings{'BLUE_DEV'} ne '') { +if ($netsettings{'BLUE_DEV'} ne ''){ $servicenames{"$Lang::tr{'intrusion detection system'} (BLUE)"} = "snort_$netsettings{'BLUE_DEV'}"; } -&Header::showhttpheaders(); -&Header::getcgihash(\%cgiparams); -&Header::openpage($Lang::tr{'status information'}, 1, ''); -&Header::openbigbox('100%', 'left'); - -&Header::openbox('100%', 'left', $Lang::tr{'services'}); - -print < END ; + my $key = ''; + foreach $key (sort keys %servicenames){ + $lines++; + if ($lines % 2){ + print "\n\n"; + }else{ + print "\n\n"; + } -my $key = ''; -foreach $key (sort keys %servicenames) -{ - $lines++; - if ($lines % 2) - { print "\n\n";} - else - { print "\n\n";} - - my $shortname = $servicenames{$key}; - my $status = &isrunning($shortname); - - print "$status\n"; - print "\n"; -} - - -print "
$Lang::tr{'services'}$Lang::tr{'status'}PID$Lang::tr{'memory'}
"; + print %link->{$key}; + print "
"; + print %link->{$key}; + print "
$key
$key
\n"; + my $shortname = $servicenames{$key}; + my $status = &isrunning($shortname); -&Header::closebox(); + print "$status\n"; + print "\n"; + } -&Header::openbox('100%', 'left', "Addon - $Lang::tr{services}"); + print "\n"; + &Header::closebox(); -my $paramstr=$ENV{QUERY_STRING}; -my @param=split(/!/, $paramstr); -if ($param[1] ne '') { - system("/usr/local/bin/addonctrl @param[0] @param[1] > /dev/null 2>&1"); -} + &Header::openbox('100%', 'left', "Addon - $Lang::tr{services}"); + my $paramstr=$ENV{QUERY_STRING}; + my @param=split(/!/, $paramstr); + if ($param[1] ne ''){ + system("/usr/local/bin/addonctrl @param[0] @param[1] > /dev/null 2>&1"); + } -print < @@ -134,75 +164,76 @@ print <"; - } - else - { - print ""; + my $lines=0; # Used to count the outputlines to make different bgcolor + + # Generate list of installed addon pak's + my @pak = `find /opt/pakfire/db/installed/meta-* 2>/dev/null | cut -d"-" -f2`; + foreach (@pak){ + chomp($_); + + # Check which of the paks are services + my @svc = `find /etc/init.d/$_ 2>/dev/null | cut -d"/" -f4`; + foreach (@svc){ + # blacklist some packages + # + # alsa has trouble with the volume saving and was not really stopped + # + chomp($_); + if ($_ ne "alsa"){ + $lines++; + if ($lines % 2){ + print ""; + }else{ + print ""; + } + print " "; + my $status = isautorun($_); + print "$status "; + print ""; + print " "; + my $status = &isrunningaddon($_); + $status =~ s/\\[[0-1]\;[0-9]+m//g; + + chomp($status); + print "$status"; + print ""; + } } - print " "; - my $status = isautorun($_); - print "$status "; - print ""; - print " "; - my $status = &isrunningaddon($_); - $status =~ s/\\[[0-1]\;[0-9]+m//g; - - chomp($status); - print "$status"; - print ""; - } } -} -print "
$_$Lang::tr{$Lang::tr{
$_$Lang::tr{$Lang::tr{
\n"; + print "\n"; + &Header::closebox(); + + &Header::openbox('100%', 'center', "$Lang::tr{'processes'} $Lang::tr{'graph'}"); + &Graphs::makegraphbox("services.cgi","processescpu","day"); + &Header::closebox(); -&Header::closebox(); -&Header::closebigbox(); -&Header::closepage(); + &Header::openbox('100%', 'center', "$Lang::tr{'processes'} $Lang::tr{'memory'} $Lang::tr{'graph'}"); + &Graphs::makegraphbox("services.cgi","processesmemory","day"); + &Header::closebox(); -sub isautorun -{ + &Header::closebigbox(); + &Header::closepage(); +} + +sub isautorun{ my $cmd = $_[0]; my $status = ""; - my $init = `find /etc/rc.d/rc3.d/S??${cmd}`; + my $init = `find /etc/rc.d/rc3.d/S??${cmd} 2>/dev/null`; chomp ($init); - if ($init ne '') { - $status = "$Lang::tr{"; + if ($init ne ''){ + $status = "$Lang::tr{"; } - $init = `find /etc/rc.d/rc3.d/off/S??${cmd}`; + $init = `find /etc/rc.d/rc3.d/off/S??${cmd} 2>/dev/null`; chomp ($init); - if ($init ne '') { - $status = "$Lang::tr{"; + if ($init ne ''){ + $status = "$Lang::tr{"; } - -return $status; + + return $status; } -sub isrunning -{ +sub isrunning{ my $cmd = $_[0]; my $status = "$Lang::tr{'stopped'}"; my $pid = ''; @@ -218,7 +249,9 @@ sub isrunning close FILE; if (open(FILE, "/proc/${pid}/status")){ while (){ - if (/^Name:\W+(.*)/) {$testcmd = $1; } + if (/^Name:\W+(.*)/) { + $testcmd = $1; + } } close FILE; } @@ -227,41 +260,47 @@ sub isrunning @memory = split(/ /,$temp); } close FILE; - if ($testcmd =~ /$exename/){$status = "$Lang::tr{'running'}$pid$memory[0] KB";} + if ($testcmd =~ /$exename/){ + $status = "$Lang::tr{'running'}$pid$memory[0] KB"; } -return $status; + } + return $status; } -sub isrunningaddon -{ +sub isrunningaddon{ my $cmd = $_[0]; my $status = "$Lang::tr{'stopped'}"; my $pid = ''; my $testcmd = ''; my $exename; my @memory; - + my $testcmd = `/usr/local/bin/addonctrl $_ status`; if ( $testcmd =~ /is\ running/ && $testcmd !~ /is\ not\ running/){ - $status = "$Lang::tr{'running'}"; - $testcmd =~ s/[a-z_]//gi; $testcmd =~ s/\[[0-1]\;[0-9]+//gi; $testcmd =~ s/[\(\)\.]//gi; $testcmd =~ s/ //gi; $testcmd =~ s///gi; - - my @pid = split(/\s/,$testcmd); - $status .="$pid[0]"; - - my $memory = 0; - - foreach (@pid){ - chomp($_); - if (open(FILE, "/proc/$_/statm")){ + $status = "$Lang::tr{'running'}"; + $testcmd =~ s/[a-z_]//gi; + $testcmd =~ s/\[[0-1]\;[0-9]+//gi; + $testcmd =~ s/[\(\)\.]//gi; + $testcmd =~ s/ //gi; + $testcmd =~ s///gi; + + my @pid = split(/\s/,$testcmd); + $status .="$pid[0]"; + + my $memory = 0; + + foreach (@pid){ + chomp($_); + if (open(FILE, "/proc/$_/statm")){ my $temp = ; - @memory = split(/ /,$temp); + @memory = split(/ /,$temp); + } + $memory+=$memory[0]; } - $memory+=$memory[0]; - } - $status .="$memory KB"; + $status .="$memory KB"; + }else{ + $status = "$Lang::tr{'stopped'}"; } - else {$status = "$Lang::tr{'stopped'}";} -return $status; + return $status; }