+
+ $Lang::tr{'services'} |
+ $Lang::tr{'status'} |
+ PID |
+ $Lang::tr{'memory'} |
+
END
;
my $key = '';
+ my $col="";
foreach $key (sort keys %servicenames){
$lines++;
if ($lines % 2){
- print "\n";
- print %link->{$key};
- print " | \n";
+ $col="bgcolor='$color{'color22'}'";
+ print "
";
+ print $link{$key};
+ print " | ";
}else{
- print "
\n";
- print %link->{$key};
- print " | \n";
+ $col="bgcolor='$color{'color20'}'";
+ print "
";
+ print $link{$key};
+ print " | ";
}
my $shortname = $servicenames{$key};
- my $status = &isrunning($shortname);
+ my $status = &isrunning($shortname,$col);
print "$status\n";
print "
\n";
@@ -152,14 +146,14 @@ END
print <
-
-
-Addon |
-Boot |
-$Lang::tr{'action'} |
-$Lang::tr{'status'} |
-PID |
-$Lang::tr{'memory'} |
+
+
+ Addon |
+ Boot |
+ $Lang::tr{'action'} |
+ $Lang::tr{'status'} |
+ PID |
+ $Lang::tr{'memory'} |
END
;
@@ -167,32 +161,38 @@ END
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`;
+ opendir (DIR, "/opt/pakfire/db/installed") || die "Cannot opendir /opt/pakfire/db/installed/: $!";
+ my @pak = sort readdir DIR;
foreach (@pak){
chomp($_);
+ next unless (m/^meta-/);
+ s/^meta-//;
# Check which of the paks are services
- my @svc = `find /etc/init.d/$_ 2>/dev/null | cut -d"/" -f4`;
- foreach (@svc){
+ if (-e "/etc/init.d/$_") {
# blacklist some packages
#
# alsa has trouble with the volume saving and was not really stopped
# mdadm should not stopped with webif because this could crash the system
#
- chomp($_);
+ if ( $_ eq 'squid' ) {
+ next;
+ }
if ( ($_ ne "alsa") && ($_ ne "mdadm") ) {
$lines++;
if ($lines % 2){
- print "";
+ print "
";
+ $col="bgcolor='$color{'color22'}'";
}else{
- print "
";
+ print "
";
+ $col="bgcolor='$color{'color20'}'";
}
- print "$_ | ";
- my $status = isautorun($_);
+ print "$_ | ";
+ my $status = isautorun($_,$col);
print "$status ";
- print " | ";
- print " | ";
- my $status = &isrunningaddon($_);
+ print " | ";
+ print " | ";
+ my $status = &isrunningaddon($_,$col);
$status =~ s/\\[[0-1]\;[0-9]+m//g;
chomp($status);
@@ -219,16 +219,17 @@ END
sub isautorun{
my $cmd = $_[0];
- my $status = " | ";
+ my $col = $_[1];
+ my $status = " | ";
my $init = `find /etc/rc.d/rc3.d/S??${cmd} 2>/dev/null`;
chomp ($init);
if ($init ne ''){
- $status = " | ";
+ $status = " | ";
}
$init = `find /etc/rc.d/rc3.d/off/S??${cmd} 2>/dev/null`;
chomp ($init);
if ($init ne ''){
- $status = " | ";
+ $status = " | ";
}
return $status;
@@ -236,14 +237,28 @@ sub isautorun{
sub isrunning{
my $cmd = $_[0];
- my $status = "$Lang::tr{'stopped'} | | ";
+ my $col = $_[1];
+ my $status = "$Lang::tr{'stopped'} | | ";
my $pid = '';
my $testcmd = '';
my $exename;
my $memory;
$cmd =~ /(^[a-z]+)/;
- $exename = $1;
+
+ # Check if the exename needs to be overwritten.
+ # This happens if the expected process name string
+ # differs from the real one. This may happened if
+ # a service uses multiple processes or threads.
+ if (exists($overwrite_exename_hash{$1})) {
+ # Grab the string which will be reported by
+ # the process from the corresponding hash.
+ $exename = $overwrite_exename_hash{$1};
+ } else {
+ # Directly expect the launched command as
+ # process name.
+ $exename = $1;
+ }
if (open(FILE, "/var/run/${cmd}.pid")){
$pid = ; chomp $pid;
@@ -267,7 +282,7 @@ sub isrunning{
close(FILE);
}
if ($testcmd =~ /$exename/){
- $status = "$Lang::tr{'running'} | $pid | $memory | ";
+ $status = "$Lang::tr{'running'} | $pid | $memory | ";
}
}
return $status;
@@ -275,7 +290,8 @@ sub isrunning{
sub isrunningaddon{
my $cmd = $_[0];
- my $status = "$Lang::tr{'stopped'} | | ";
+ my $col = $_[1];
+ my $status = "$Lang::tr{'stopped'} | | ";
my $pid = '';
my $testcmd = '';
my $exename;
@@ -293,7 +309,7 @@ sub isrunningaddon{
$testcmd =~ s///gi;
my @pid = split(/\s/,$testcmd);
- $status .="$pid[0] | ";
+ $status .="$pid[0] | ";
my $memory = 0;
@@ -305,9 +321,9 @@ sub isrunningaddon{
}
$memory+=$memory[0];
}
- $status .="$memory KB | ";
+ $status .="$memory KB | ";
}else{
- $status = "$Lang::tr{'stopped'} | | ";
+ $status = "$Lang::tr{'stopped'} | | ";
}
return $status;
}