From: Stefan Schantl Date: Thu, 17 Jun 2021 16:54:17 +0000 (+0200) Subject: services.cgi: Redesign isautorun() because shell globbing cannot used anymore. X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=cbf9320491d377cf085240d7f97325e96b4ee2ec;p=people%2Fstevee%2Fipfire-2.x.git services.cgi: Redesign isautorun() because shell globbing cannot used anymore. Signed-off-by: Stefan Schantl --- diff --git a/html/cgi-bin/services.cgi b/html/cgi-bin/services.cgi index ee4ac185a2..cb5f5e8a84 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/){