From f6340997aa216e00fef0f7c7951a4d4084a95d36 Mon Sep 17 00:00:00 2001 From: Stefan Schantl Date: Thu, 17 Jun 2021 18:54:17 +0200 Subject: [PATCH] services.cgi: Redesign isautorun() because shell globbing cannot used anymore. Signed-off-by: Stefan Schantl --- html/cgi-bin/services.cgi | 64 ++++++++++++++++++++++++++++----------- 1 file changed, 47 insertions(+), 17 deletions(-) diff --git a/html/cgi-bin/services.cgi b/html/cgi-bin/services.cgi index e25201c1cc..2374757350 100644 --- a/html/cgi-bin/services.cgi +++ b/html/cgi-bin/services.cgi @@ -163,6 +163,8 @@ END # Generate list of installed addon pak's opendir (DIR, "/opt/pakfire/db/installed") || die "Cannot opendir /opt/pakfire/db/installed/: $!"; my @pak = sort readdir DIR; + closedir(DIR); + foreach (@pak){ chomp($_); next unless (m/^meta-/); @@ -187,6 +189,7 @@ END print ""; $col="bgcolor='$color{'color20'}'"; } + print "$_ "; my $status = isautorun($_,$col); print "$status "; @@ -217,27 +220,54 @@ END &Header::closepage(); } -sub isautorun{ - my $cmd = $_[0]; - my $col = $_[1]; +sub isautorun (@) { + my ($cmd, $col) = @_; + + # Init directory. + my $initdir = "/etc/rc.d/rc3.d/"; + my $status = ""; - my @init = &General::system_output("find", "/etc/rc.d/rc3.d/S??${cmd}"); - my $init = chomp(@init[0]); - if ($init ne ''){ + + # Check if autorun for the given cmd is enabled. + if ( &find_init("$cmd", "$initdir") ) { + # Adjust status. $status = "$Lang::tr{"; - } - @init = &General::system_output("find", "/etc/rc.d/rc3.d/off/S??${cmd}"); - my $init = chomp (@init[0]); - if ($init ne ''){ + } else { + # Adjust status. $status = "$Lang::tr{"; } + # Return the status. return $status; } -sub isrunning{ - my $cmd = $_[0]; - my $col = $_[1]; +sub find_init (@) { + my ($cmd, $dir) = @_; + + # Open given init directory. + opendir (INITDIR, "$dir") || die "Cannot opendir $dir: $!"; + + # Read-in init files from directory. + my @inits = readdir(INITDIR); + + # Close directory handle. + closedir(INITDIR); + + # Loop through the directory. + foreach my $init (@inits) { + # Check if the current processed file belongs to the given command. + if ($init =~ /S\d+\d+$cmd\z/) { + # Found, return "1" - True. + return "1"; + } + } + + # Nothing found, return nothing. + return; +} + +sub isrunning (@) { + my ($cmd, $col) = @_; my $status = "$Lang::tr{'stopped'}"; my $pid = ''; my $testcmd = ''; @@ -288,16 +318,16 @@ sub isrunning{ return $status; } -sub isrunningaddon{ - my $cmd = $_[0]; - my $col = $_[1]; +sub isrunningaddon (@) { + my ($cmd, $col) = @_; + my $status = "$Lang::tr{'stopped'}"; my $pid = ''; my $testcmd = ''; my $exename; my @memory; - my @testcmd = &General::system_output("/usr/local/bin/addonctrl", "$_", "status"); + my @testcmd = &General::system_output("/usr/local/bin/addonctrl", "$cmd", "status"); my $testcmd = @testcmd[0]; if ( $testcmd =~ /is\ running/ && $testcmd !~ /is\ not\ running/){ -- 2.39.5