From: <jam...@te...> - 2002-09-17 21:17:29
|
This patch is against 0.990. Unfortunately, I can't stay in step with you Jamie, as I just have to get our product (which includes webmin) out the door. Anyway, I wanted to be able to allow someone to change run levels, but not what started in a particular run level, so I made it so (-: The patch is of course below. One thing I am not positive about is whether I should have included code to check for: if ($config{'init_base'}) around the code that showed the run levels and got them. Also, I have not added this, as I would like to question you concerning it, but I think it would be nice if the current runlevel was included in the init screen. On RH if you have the SysVinit package installed you can use the runlevel command to determine the current run level. This may not be prevalant on all linuxes. The "who -r" command works on Solaris, but is not shared by linux. Anyway, how would you implement this? Would you have a config entry that listed the command, or do something like the OS depenedent libraries for the Net module? Cheers...james diff -urN .delta/init/acl_security.pl current/init/acl_security.pl --- .delta/init/acl_security.pl Tue Sep 17 15:39:25 2002 +++ current/init/acl_security.pl Tue Sep 17 16:05:33 2002 @@ -16,6 +16,14 @@ printf "<input type=radio name=bootup value=0 %s> $text{'no'}</td> </tr>\n", $_[0]->{'bootup'} ? "" : "checked"; +# +# Change Run Level +print "<tr> <td><b>$text{'change_runlevel'}</b></td><td>\n"; +printf "<input type=radio name=change_runlevel value=1 %s> $text{'yes'}\n", + $_[0]->{'change_runlevel'} ? "checked" : ""; +printf "<input type=radio name=change_runlevel value=0 %s> $text{'no'}</td> </tr>\n", + $_[0]->{'change_runlevel'} ? "" : "checked"; + print "<tr> <td><b>$text{'acl_reboot'}</b></td> <td>\n"; printf "<input type=radio name=reboot value=1 %s> $text{'yes'}\n", $_[0]->{'reboot'} ? "checked" : ""; @@ -33,6 +41,7 @@ # Parse the form for security options for the init module sub acl_security_save { +$_[0]->{'change_runlevel'} = $in{'change_runlevel'}; $_[0]->{'bootup'} = $in{'bootup'}; $_[0]->{'reboot'} = $in{'reboot'}; $_[0]->{'shutdown'} = $in{'shutdown'}; diff -urN .delta/init/change_rl.cgi current/init/change_rl.cgi --- .delta/init/change_rl.cgi Tue Sep 17 15:39:25 2002 +++ current/init/change_rl.cgi Tue Sep 17 16:54:44 2002 @@ -5,7 +5,7 @@ require './init-lib.pl'; &ReadParse(); %access = &get_module_acl(); -$access{'bootup'} || &error($text{'change_ecannot'}); +$access{'change_runlevel'} || &error($text{'change_ecannot'}); &header($text{'change_title'}, ""); print "<hr>\n"; diff -urN .delta/init/index.cgi current/init/index.cgi --- .delta/init/index.cgi Tue Sep 17 15:39:25 2002 +++ current/init/index.cgi Tue Sep 17 16:10:41 2002 @@ -7,6 +7,11 @@ require './hostconfig-lib.pl'; &header($text{'index_title'}, "", undef, 1, 1); %access = &get_module_acl(); + +# +# Determine the runlevels +@runlevels = &list_runlevels(); + print "<hr>\n"; if ($config{'hostconfig'} && $access{'bootup'}) { @@ -45,7 +50,6 @@ push(@actsf, $ac[0] =~ /^\// ? $ac[0] : "$config{'init_dir'}/$ac[0]"); } - @runlevels = &list_runlevels(); foreach $r (@runlevels) { foreach $w ("S", "K") { foreach $a (&runlevel_actions($r, $w)) { @@ -163,20 +167,6 @@ print "<a href='edit_action.cgi?2'>$text{'index_add'}</a><p>\n"; print "<hr>\n"; - # Show runlevel switch form - print "<form action=change_rl.cgi>\n"; - print "<table width=100%>\n"; - - print "<tr> <td nowrap><input type=submit ", - "value='$text{'index_rlchange'}'>\n"; - print "<select name=level>\n"; - foreach $r (@runlevels) { - printf "<option %s>%s\n", - $r eq $boot[0] ? "selected" : "", $r; - } - print "</select></td> <td>$text{'index_rlchangedesc'}</td> </tr>\n"; - - print "</table></form><hr>\n"; } elsif ($config{'local_script'} && $access{'bootup'}) { # Display local bootup script @@ -200,6 +190,22 @@ print "<hr>\n"; } +# Show runlevel switch form +if($access{'change_runlevel'}) { + print "<form action=change_rl.cgi>\n"; + print "<table width=100%>\n"; + + print "<tr> <td nowrap><input type=submit ", + "value='$text{'index_rlchange'}'>\n"; + print "<select name=level>\n"; + foreach $r (@runlevels) { + printf "<option %s>%s\n", + $r eq $boot[0] ? "selected" : "", $r; + } + print "</select></td> <td>$text{'index_rlchangedesc'}</td> </tr>\n"; + print "</table></form><hr>\n"; + } + # reboot/shutdown buttons print "<table cellpadding=5 width=100%>\n"; if ($access{'reboot'}) { diff -urN .delta/init/lang/en current/init/lang/en --- .delta/init/lang/en Tue Sep 17 15:39:25 2002 +++ current/init/lang/en Tue Sep 17 16:06:42 2002 @@ -25,6 +25,7 @@ index_rlstop=Stop all actions in runlevel: index_rlstartdesc=Clicking this button will cause all actions that are setup to be stopped when exiting the selected runlevel to be stopped immediately. Be careful, as this may result in the shutdown of your system. +change_runlevel=Can Change Runlevel? edit_title=Edit Action create_title=Create Action |