mirror of
https://github.com/webmin/webmin.git
synced 2025-08-19 01:15:14 +00:00
84 lines
2.2 KiB
Perl
Executable File
84 lines
2.2 KiB
Perl
Executable File
#!/usr/local/bin/perl
|
|
# save_title.cgi
|
|
# Save a boot menu option
|
|
|
|
require './grub-lib.pl';
|
|
&ReadParse();
|
|
&lock_file($config{'menu_file'});
|
|
$conf = &get_menu_config();
|
|
if (!$in{'new'}) {
|
|
$old = $title = $conf->[$in{'idx'}];
|
|
}
|
|
&error_setup($text{'title_err'});
|
|
|
|
if ($in{'delete'}) {
|
|
# Just delete the title
|
|
&save_directive($conf, $title, undef);
|
|
}
|
|
else {
|
|
# validate inputs
|
|
$in{'title'} =~ /\S/ || &error($text{'title_etitle'});
|
|
$in{'root_mode'} != 1 || $in{'other'} =~ /^\S+$/ ||
|
|
&error($text{'title_eroot'});
|
|
$in{'boot_mode'} != 2 || $in{'kernel'} =~ /\S/ ||
|
|
&error($text{'title_ekernel'});
|
|
$in{'boot_mode'} != 1 || $in{'chain_def'} || $in{'chain'} =~ /\S/ ||
|
|
&error($text{'title_echain'});
|
|
$in{'initrd_def'} || $in{'initrd'} =~ /\S/ ||
|
|
&error($text{'title_einitrd'});
|
|
|
|
# store inputs in title structure
|
|
$title->{'name'} = 'title';
|
|
$title->{'value'} = $in{'title'};
|
|
local $r = $in{'noverify'} ? "rootnoverify" : "root";
|
|
delete($title->{'root'});
|
|
delete($title->{'rootnoverify'});
|
|
if ($in{'root_mode'} == 1) {
|
|
$title->{$r} = $in{'other'};
|
|
}
|
|
elsif ($in{'root_mode'} == 2) {
|
|
$root = &linux_to_bios($in{'root'});
|
|
$root || &error(&text('title_edev', $in{'root'}));
|
|
$title->{$r} = $root;
|
|
}
|
|
delete($title->{'kernel'});
|
|
delete($title->{'chainloader'});
|
|
delete($title->{'initrd'});
|
|
delete($title->{'module'});
|
|
if ($in{'boot_mode'} == 2) {
|
|
$title->{'kernel'} = $in{'kernel'};
|
|
$title->{'kernel'} .= " $in{'args'}" if ($in{'args'});
|
|
$title->{'initrd'} = $in{'initrd'} if (!$in{'initrd_def'});
|
|
if ($in{'module'} =~ /\S/) {
|
|
$title->{'module'} =
|
|
join("\0", split(/\r?\n/, $in{'module'}));
|
|
}
|
|
}
|
|
elsif ($in{'boot_mode'} == 1) {
|
|
$title->{'chainloader'} = $in{'chain_def'} ? '+1'
|
|
: $in{'chain'};
|
|
}
|
|
if ($in{'makeactive'}) {
|
|
$title->{'makeactive'} = "";
|
|
}
|
|
else {
|
|
delete($title->{'makeactive'});
|
|
}
|
|
if ($in{'lock'}) {
|
|
$title->{'lock'} = "";
|
|
}
|
|
else {
|
|
delete($title->{'lock'});
|
|
}
|
|
|
|
# create or update the title
|
|
&save_directive($conf, $old, $title);
|
|
}
|
|
|
|
&flush_file_lines($config{'menu_file'});
|
|
&unlock_file($config{'menu_file'});
|
|
&webmin_log($in{'new'} ? 'create' : $in{'delete'} ? 'delete' : 'modify',
|
|
'title', undef, $title);
|
|
&redirect("");
|
|
|