1*4882a593Smuzhiyun# Hack in support for an "exclude" config option for the init module, so
2*4882a593Smuzhiyun# we can hide certain system services that shouldn't really be configurable
3*4882a593Smuzhiyun# via the web interface
4*4882a593Smuzhiyun#
5*4882a593Smuzhiyun# Upstream-status: Pending
6*4882a593Smuzhiyun#
7*4882a593Smuzhiyun# Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
8*4882a593Smuzhiyun# Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
9*4882a593Smuzhiyun---
10*4882a593Smuzhiyun init/index.cgi   | 27 ++++++++++++++-------------
11*4882a593Smuzhiyun init/init-lib.pl |  5 +++--
12*4882a593Smuzhiyun 2 files changed, 17 insertions(+), 15 deletions(-)
13*4882a593Smuzhiyun
14*4882a593SmuzhiyunIndex: webmin-1.850/init/index.cgi
15*4882a593Smuzhiyun===================================================================
16*4882a593Smuzhiyun--- webmin-1.850.orig/init/index.cgi
17*4882a593Smuzhiyun+++ webmin-1.850/init/index.cgi
18*4882a593Smuzhiyun@@ -45,19 +45,20 @@ elsif ($init_mode eq "init" && $access{'
19*4882a593Smuzhiyun 					     : "$config{'init_dir'}/$ac[0]");
20*4882a593Smuzhiyun 		}
21*4882a593Smuzhiyun 	@runlevels = &list_runlevels();
22*4882a593Smuzhiyun-	foreach $r (@runlevels) {
23*4882a593Smuzhiyun-		foreach $w ("S", "K") {
24*4882a593Smuzhiyun-			foreach $a (&runlevel_actions($r, $w)) {
25*4882a593Smuzhiyun-				@ac = split(/\s+/, $a);
26*4882a593Smuzhiyun-				if (!$nodemap{$ac[2]}) {
27*4882a593Smuzhiyun-					push(@acts, $ac[1]);
28*4882a593Smuzhiyun-					push(@actsl,
29*4882a593Smuzhiyun-					     "1+$r+$ac[0]+$ac[1]+$ac[2]+$w");
30*4882a593Smuzhiyun-					push(@actsf, "$config{'init_base'}/rc$r.d/$w$ac[0]$ac[1]");
31*4882a593Smuzhiyun-					}
32*4882a593Smuzhiyun-				}
33*4882a593Smuzhiyun-			}
34*4882a593Smuzhiyun-		}
35*4882a593Smuzhiyun+	# Assume there won't be any of these broken actions
36*4882a593Smuzhiyun+	#foreach $r (@runlevels) {
37*4882a593Smuzhiyun+	#	foreach $w ("S", "K") {
38*4882a593Smuzhiyun+	#		foreach $a (&runlevel_actions($r, $w)) {
39*4882a593Smuzhiyun+	#			@ac = split(/\s+/, $a);
40*4882a593Smuzhiyun+	#			if (!$nodemap{$ac[2]}) {
41*4882a593Smuzhiyun+	#				push(@acts, $ac[1]);
42*4882a593Smuzhiyun+	#				push(@actsl,
43*4882a593Smuzhiyun+	#				     "1+$r+$ac[0]+$ac[1]+$ac[2]+$w");
44*4882a593Smuzhiyun+	#				push(@actsf, "$config{'init_base'}/rc$r.d/$w$ac[0]$ac[1]");
45*4882a593Smuzhiyun+	#				}
46*4882a593Smuzhiyun+	#			}
47*4882a593Smuzhiyun+	#		}
48*4882a593Smuzhiyun+	#	}
49*4882a593Smuzhiyun
50*4882a593Smuzhiyun 	# For each action, look at /etc/rc*.d/* files to see if it is
51*4882a593Smuzhiyun 	# started at boot
52*4882a593SmuzhiyunIndex: webmin-1.850/init/init-lib.pl
53*4882a593Smuzhiyun===================================================================
54*4882a593Smuzhiyun--- webmin-1.850.orig/init/init-lib.pl
55*4882a593Smuzhiyun+++ webmin-1.850/init/init-lib.pl
56*4882a593Smuzhiyun@@ -124,8 +124,9 @@ List boot time action names from init.d,
57*4882a593Smuzhiyun =cut
58*4882a593Smuzhiyun sub list_actions
59*4882a593Smuzhiyun {
60*4882a593Smuzhiyun-local($dir, $f, @stbuf, @rv);
61*4882a593Smuzhiyun+local($dir, $f, @stbuf, @rv, @exclude);
62*4882a593Smuzhiyun $dir = $config{init_dir};
63*4882a593Smuzhiyun+@exclude = split(/,/, $config{exclude});
64*4882a593Smuzhiyun opendir(DIR, $dir);
65*4882a593Smuzhiyun foreach $f (sort { lc($a) cmp lc($b) } readdir(DIR)) {
66*4882a593Smuzhiyun 	if ($f eq "." || $f eq ".." || $f =~ /\.bak$/ || $f eq "functions" ||
67*4882a593Smuzhiyun@@ -133,7 +134,7 @@ foreach $f (sort { lc($a) cmp lc($b) } r
68*4882a593Smuzhiyun 	    -d "$dir/$f" || $f =~ /\.swp$/ || $f eq "skeleton" ||
69*4882a593Smuzhiyun 	    $f =~ /\.lock$/ || $f =~ /\.dpkg-(old|dist)$/ ||
70*4882a593Smuzhiyun 	    $f =~ /^\.depend\./ || $f eq '.legacy-bootordering' ||
71*4882a593Smuzhiyun-	    $f =~ /^mandrake/) { next; }
72*4882a593Smuzhiyun+	    $f =~ /^mandrake/ || grep {$_ eq $f} @exclude ) { next; }
73*4882a593Smuzhiyun 	if (@stbuf = stat("$dir/$f")) {
74*4882a593Smuzhiyun 		push(@rv, "$f $stbuf[1]");
75*4882a593Smuzhiyun 		}
76