Hack in support for an "exclude" config option for the init module, so
we can hide certain system services that shouldn't really be configurable
via the web interface

Upstream-Status: Pending

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
---
 init/index.cgi   | 27 ++++++++++++++-------------
 init/init-lib.pl |  5 +++--
 2 files changed, 17 insertions(+), 15 deletions(-)

Index: webmin-1.850/init/index.cgi
===================================================================
--- webmin-1.850.orig/init/index.cgi
+++ webmin-1.850/init/index.cgi
@@ -45,19 +45,20 @@ elsif ($init_mode eq "init" && $access{'
 					     : "$config{'init_dir'}/$ac[0]");
 		}
 	@runlevels = &list_runlevels();
-	foreach $r (@runlevels) {
-		foreach $w ("S", "K") {
-			foreach $a (&runlevel_actions($r, $w)) {
-				@ac = split(/\s+/, $a);
-				if (!$nodemap{$ac[2]}) {
-					push(@acts, $ac[1]);
-					push(@actsl,
-					     "1+$r+$ac[0]+$ac[1]+$ac[2]+$w");
-					push(@actsf, "$config{'init_base'}/rc$r.d/$w$ac[0]$ac[1]");
-					}
-				}
-			}
-		}
+	# Assume there won't be any of these broken actions
+	#foreach $r (@runlevels) {
+	#	foreach $w ("S", "K") {
+	#		foreach $a (&runlevel_actions($r, $w)) {
+	#			@ac = split(/\s+/, $a);
+	#			if (!$nodemap{$ac[2]}) {
+	#				push(@acts, $ac[1]);
+	#				push(@actsl,
+	#				     "1+$r+$ac[0]+$ac[1]+$ac[2]+$w");
+	#				push(@actsf, "$config{'init_base'}/rc$r.d/$w$ac[0]$ac[1]");
+	#				}
+	#			}
+	#		}
+	#	}
 
 	# For each action, look at /etc/rc*.d/* files to see if it is 
 	# started at boot
Index: webmin-1.850/init/init-lib.pl
===================================================================
--- webmin-1.850.orig/init/init-lib.pl
+++ webmin-1.850/init/init-lib.pl
@@ -124,8 +124,9 @@ List boot time action names from init.d,
 =cut
 sub list_actions
 {
-local($dir, $f, @stbuf, @rv);
+local($dir, $f, @stbuf, @rv, @exclude);
 $dir = $config{init_dir};
+@exclude = split(/,/, $config{exclude});
 opendir(DIR, $dir);
 foreach $f (sort { lc($a) cmp lc($b) } readdir(DIR)) {
 	if ($f eq "." || $f eq ".." || $f =~ /\.bak$/ || $f eq "functions" ||
@@ -133,7 +134,7 @@ foreach $f (sort { lc($a) cmp lc($b) } r
 	    -d "$dir/$f" || $f =~ /\.swp$/ || $f eq "skeleton" ||
 	    $f =~ /\.lock$/ || $f =~ /\.dpkg-(old|dist)$/ ||
 	    $f =~ /^\.depend\./ || $f eq '.legacy-bootordering' ||
-	    $f =~ /^mandrake/) { next; }
+	    $f =~ /^mandrake/ || grep {$_ eq $f} @exclude ) { next; }
 	if (@stbuf = stat("$dir/$f")) {
 		push(@rv, "$f $stbuf[1]");
 		}
