mirror of
https://github.com/webmin/webmin.git
synced 2025-07-23 00:30:33 +00:00
957 lines
36 KiB
Perl
Executable File
957 lines
36 KiB
Perl
Executable File
#!/usr/local/bin/perl
|
|
# edit_class.cgi
|
|
# Edit options for a class in some section
|
|
|
|
require './cfengine-lib.pl';
|
|
use Config;
|
|
&ReadParse();
|
|
$conf = $in{'cfd'} ? &get_cfd_config() : &get_config();
|
|
$sec = $conf->[$in{'idx'}] if ($in{'idx'} ne '');
|
|
if ($in{'new'}) {
|
|
&ui_print_header(undef, $sec ? $text{'edit_create2'} : $text{'edit_create1'}, "",
|
|
"edit");
|
|
$cls = { 'name' => 'any' };
|
|
}
|
|
else {
|
|
&ui_print_header(undef, $text{'edit_title'}, "", "edit");
|
|
$cls = $sec->{'cls'}->[$in{'cidx'}];
|
|
}
|
|
|
|
print "<form action=save_class.cgi method=post>\n";
|
|
print "<input type=hidden name=new value='$in{'new'}'>\n";
|
|
print "<input type=hidden name=idx value='$in{'idx'}'>\n";
|
|
print "<input type=hidden name=cidx value='$in{'cidx'}'>\n";
|
|
print "<input type=hidden name=type value='$in{'type'}'>\n";
|
|
print "<input type=hidden name=cfd value='$in{'cfd'}'>\n";
|
|
|
|
print "<table border width=100%>\n";
|
|
print "<tr $tb> <td><b>$text{'edit_header'}</b></td> </tr>\n";
|
|
print "<tr $cb> <td><table width=100%>\n";
|
|
|
|
$type = $in{'type'} ? $in{'type'} : $sec->{'name'};
|
|
$t = $text{"section_".$type."_".$in{'cfd'}};
|
|
$t = $text{"section_".$type} if (!$t);
|
|
print "<tr> <td><b>$text{'edit_section'}</b></td> <td colspan=3>\n";
|
|
print $t ? "$t ($type)" : $type,"</td> </tr>\n";
|
|
|
|
print "<td><b>$text{'edit_class'}</b></td> <td colspan=3>\n";
|
|
printf "<input type=radio name=class_def value=1 %s> %s\n",
|
|
$cls->{'name'} eq 'any' ? 'checked' : '', $text{'edit_all'};
|
|
printf "<input type=radio name=class_def value=0 %s>\n",
|
|
$cls->{'name'} eq 'any' ? '' : 'checked';
|
|
printf "<input name=class size=50 value='%s'></td> </tr>\n",
|
|
$cls->{'name'} eq 'any' ? '' : $cls->{'name'};
|
|
|
|
$type = undef if ($in{'manual'});
|
|
if ($text{"type_".$type."_".$in{'cfd'}}) {
|
|
print "<tr> <td colspan=4>",$text{"type_".$type."_".$in{'cfd'}},
|
|
"</td> </tr>\n";
|
|
}
|
|
elsif ($text{"type_".$type}) {
|
|
print "<tr> <td colspan=4>",$text{"type_".$type},"</td> </tr>\n";
|
|
}
|
|
if ($type eq 'links') {
|
|
# Show links that would be created
|
|
local @links = &parse_links($cls);
|
|
print "<tr> <td valign=top><b>$text{'edit_links'}</b></td>\n";
|
|
print "<td colspan=3><table border width=100%>\n";
|
|
print "<tr $tb> <td><b>$text{'edit_linkfrom'}</b></td> ",
|
|
"<td><b>$text{'edit_linktype'}</b></td> ",
|
|
"<td><b>$text{'edit_linkover'}</b></td> ",
|
|
"<td><b>$text{'edit_linkto'}</b></td> </tr>\n";
|
|
$i = 0;
|
|
foreach $l (@links, { }) {
|
|
print "<tr $cb>\n";
|
|
printf "<td><input name=from_$i size=30 value='%s'></td>\n",
|
|
$l->{'_linkfrom'};
|
|
printf "<td><input type=checkbox name=type_$i value=1 %s> %s</td>\n", $l->{'_linktype'} =~ /^\+/ ? "checked" : "", $text{'yes'};
|
|
printf "<td><input type=checkbox name=over_$i value=1 %s> %s</td>\n", $l->{'_linktype'} =~ /!$/ ? "checked" : "", $text{'yes'};
|
|
printf "<td><input name=to_$i size=30 value='%s'></td>\n",
|
|
$l->{'_linkto'};
|
|
print "</tr>\n";
|
|
$i++;
|
|
}
|
|
print "</table></td> </tr>\n";
|
|
}
|
|
elsif ($type eq 'directories') {
|
|
# Show directories that would be created
|
|
local @dirs = &parse_directories($cls);
|
|
print "<tr> <td colspan=4><table border width=100%>\n";
|
|
print "<tr $tb> <td><b>$text{'edit_dir'}</b></td> ",
|
|
"<td><b>$text{'edit_dirmode'}</b></td> ",
|
|
"<td><b>$text{'edit_dirowner'}</b></td> ",
|
|
"<td><b>$text{'edit_dirgroup'}</b></td> </tr>\n";
|
|
$i = 0;
|
|
foreach $d (@dirs, { }) {
|
|
print "<tr $cb>\n";
|
|
printf "<td><input name=dir_$i size=40 value='%s'></td>\n",
|
|
$d->{'_dir'};
|
|
printf "<td><input name=mode_$i size=4 value='%s'></td>\n",
|
|
&sname("mode", $d);
|
|
printf "<td><input name=owner_$i size=13 value='%s'></td>\n",
|
|
&sname("owner", $d);
|
|
printf "<td><input name=group_$i size=13 value='%s'></td>\n",
|
|
&sname("group", $d);
|
|
print "</tr>\n";
|
|
$i++;
|
|
}
|
|
print "</table></td> </tr>\n";
|
|
}
|
|
elsif ($type eq "control" && !$in{'cfd'}) {
|
|
# Show actionsequence definition
|
|
local ($as) = &find("actionsequence", $cls->{'defs'});
|
|
print "<tr> <td valign=top><b>$text{'edit_actionseq'}</b></td>\n";
|
|
print "<td colspan=3><table cellpadding=0 cellspacing=0>\n";
|
|
print "<tr> <td valign=top><textarea name=seq rows=10 cols=30>";
|
|
foreach $v (@{$as->{'valuequoted'}}) {
|
|
print &html_escape($v),"\n";
|
|
}
|
|
print "</textarea></td>\n";
|
|
print "<td><select name=add size=10>\n";
|
|
foreach $s ($in{'cfd'} ? @known_cfd_sections : @known_sections) {
|
|
next if ($s eq "control");
|
|
local $t = $text{"section_".$s."_".$in{'cfd'}};
|
|
$t = $text{"section_".$s} if (!$t);
|
|
printf "<option value=$s>$t ($s)</option>\n";
|
|
}
|
|
print "</select><br>\n";
|
|
print "<input type=button value='$text{'edit_actionadd'}' onClick='document.forms[0].seq.value += document.forms[0].add.options[document.forms[0].add.selectedIndex].value+\"\\n\"'>\n";
|
|
print "</td></tr></table> </td> </tr>\n";
|
|
|
|
# Show other global definitions
|
|
print "<tr> <td><b>$text{'edit_controldef'}</b></td> ",
|
|
"<td colspan=3><b>$text{'edit_controlvalue'}</b></td> </tr>\n";
|
|
$i = 0;
|
|
foreach $d (@{$cls->{'defs'}}, { }) {
|
|
next if ($d->{'name'} eq 'actionsequence');
|
|
print "<tr>\n";
|
|
printf "<td><input name=def_$i size=15 value='%s'></td>\n",
|
|
$d->{'name'};
|
|
printf "<td colspan=3><input name=value_$i size=50 value='%s'></td>\n", join(" ", @{$d->{'valuequoted'}});
|
|
print "</tr>\n";
|
|
$i++;
|
|
}
|
|
}
|
|
elsif ($type eq "control" && $in{'cfd'}) {
|
|
# Show cfd-specific control options
|
|
local $run = &find_value("cfrunCommand", $cls->{'defs'});
|
|
print "<tr> <td><b>$text{'edit_controlrun'}</b></td> <td colspan=3>\n";
|
|
printf "<input type=radio name=run_def value=1 %s> %s\n",
|
|
$run ? "" : "checked", $text{'edit_none'};
|
|
printf "<input type=radio name=run_def value=0 %s>\n",
|
|
$run ? "checked" : "";
|
|
printf "<input name=run size=50 value='%s'></td> </tr>\n", $run;
|
|
|
|
local $elapsed = &find_value("IfElapsed", $cls->{'defs'});
|
|
print "<tr> <td><b>$text{'edit_controlelapsed'}</b></td> <td>\n";
|
|
printf "<input type=radio name=elapsed_def value=1 %s> %s\n",
|
|
defined($elapsed) ? "" : "checked", $text{'default'};
|
|
printf "<input type=radio name=elapsed_def value=0 %s>\n",
|
|
defined($elapsed) ? "checked" : "";
|
|
printf "<input name=elapsed size=5 value='%s'></td>\n", $elapsed;
|
|
|
|
local $max = &find_value("MaxConnections", $cls->{'defs'});
|
|
print "<td><b>$text{'edit_controlmax'}</b></td> <td>\n";
|
|
printf "<input type=radio name=max_def value=1 %s> %s\n",
|
|
defined($max) ? "" : "checked", $text{'default'};
|
|
printf "<input type=radio name=max_def value=0 %s>\n",
|
|
defined($max) ? "checked" : "";
|
|
printf "<input name=max size=5 value='%s'></td> </tr>\n", $max;
|
|
|
|
print "<tr> <td colspan=4><hr></td> </tr>\n";
|
|
|
|
local $auto = &find_value("AutoExecCommand", $cls->{'defs'});
|
|
print "<tr> <td><b>$text{'edit_controlauto'}</b></td> <td colspan=3>\n";
|
|
printf "<input type=radio name=auto_def value=1 %s> %s\n",
|
|
$auto ? "" : "checked", $text{'edit_none'};
|
|
printf "<input type=radio name=auto_def value=0 %s>\n",
|
|
$auto ? "checked" : "";
|
|
printf "<input name=auto size=50 value='%s'></td></tr>\n", $auto;
|
|
|
|
local $interval = &find_value("AutoExecInterval", $cls->{'defs'});
|
|
print "<tr> <td><b>$text{'edit_controlinterval'}</b></td> <td>\n";
|
|
printf "<input type=radio name=interval_def value=1 %s> %s\n",
|
|
defined($interval) ? "" : "checked", $text{'default'};
|
|
printf "<input type=radio name=interval_def value=0 %s>\n",
|
|
defined($interval) ? "checked" : "";
|
|
printf "<input name=interval size=5 value='%s'></td> </tr>\n",$interval;
|
|
|
|
print "<tr> <td colspan=4><hr></td> </tr>\n";
|
|
|
|
local $dom = &find_value("domain", $cls->{'defs'});
|
|
print "<tr> <td><b>$text{'edit_controldom'}</b></td> <td>\n";
|
|
printf "<input type=radio name=dom_def value=1 %s> %s\n",
|
|
$dom ? "" : "checked", $text{'edit_none'};
|
|
printf "<input type=radio name=dom_def value=0 %s>\n",
|
|
$dom ? "checked" : "";
|
|
printf "<input name=dom size=15 value='%s'></td>\n", $dom;
|
|
|
|
local $log = &find_value("LogAllConnections", $cls->{'defs'});
|
|
print "<td><b>$text{'edit_controllog'}</b></td>\n";
|
|
printf "<td><input type=radio name=log value=1 %s> %s\n",
|
|
lc($log) eq "true" ? "checked" : "", $text{'yes'};
|
|
printf "<input type=radio name=log value=0 %s> %s\n",
|
|
lc($log) eq "false" ? "checked" : "", $text{'no'};
|
|
printf "<input type=radio name=log value=-1 %s> %s</td> </tr>\n",
|
|
$log ? "" : "checked", $text{'default'};
|
|
|
|
local @allow = &find_value("AllowConnectionsFrom", $cls->{'defs'});
|
|
print "<tr> <td><b>$text{'edit_controlallow'}</b></td>\n";
|
|
printf "<td colspan=3><input type=radio name=allow_def value=1 %s> %s ",
|
|
@allow ? "" : "checked", $text{'edit_controlall'};
|
|
printf "<input type=radio name=allow_def value=0 %s>\n",
|
|
@allow ? "checked" : "";
|
|
printf "<input name=allow size=40 value='%s'></td> </tr>\n",
|
|
join(" ", @allow);
|
|
|
|
local @deny = &find_value("DenyConnectionsFrom", $cls->{'defs'});
|
|
print "<tr> <td><b>$text{'edit_controldeny'}</b></td>\n";
|
|
printf "<td colspan=3><input type=radio name=deny_def value=1 %s> %s ",
|
|
@deny ? "" : "checked", $text{'edit_controlnone'};
|
|
printf "<input type=radio name=deny_def value=0 %s>\n",
|
|
@deny ? "checked" : "";
|
|
printf "<input name=deny size=40 value='%s'></td> </tr>\n",
|
|
join(" ", @deny);
|
|
|
|
local @skip = &find_value("SkipVerify", $cls->{'defs'});
|
|
print "<tr> <td><b>$text{'edit_controlskip'}</b></td>\n";
|
|
printf "<td colspan=3><input type=radio name=skip_def value=1 %s> %s ",
|
|
@skip ? "" : "checked", $text{'edit_controlnone'};
|
|
printf "<input type=radio name=skip_def value=0 %s>\n",
|
|
@skip ? "checked" : "";
|
|
printf "<input name=skip size=40 value='%s'></td> </tr>\n",
|
|
join(" ", @skip);
|
|
}
|
|
elsif ($type eq "grant" || $type eq "admit" || $type eq "deny") {
|
|
# Allow editing of allowed or denied directories
|
|
local (@grants, $grant);
|
|
foreach $v (@{$cls->{'values'}}) {
|
|
if ($v =~ /\//) {
|
|
push(@grants, $grant = { 'dir' => $v });
|
|
}
|
|
else {
|
|
push(@{$grant->{'hosts'}}, $v);
|
|
}
|
|
}
|
|
|
|
print "<tr> <td valign=top><b>",$text{'edit_'.$type},"</b></td>\n";
|
|
print "<td colspan=3><table border width=100%>\n";
|
|
print "<tr $tb> <td><b>$text{'edit_grantdir'}</b></td> ",
|
|
"<td><b>$text{'edit_granthosts'}</b></td> </tr>\n";
|
|
$i = 0;
|
|
foreach $g (@grants, { }) {
|
|
print "<tr $cb>\n";
|
|
printf "<td><input name=dir_$i size=20 value='%s'></td>\n",
|
|
$g->{'dir'};
|
|
printf "<td><input name=hosts_$i size=40 value='%s'></td>\n",
|
|
join(" ", @{$g->{'hosts'}});
|
|
print "</tr>\n";
|
|
$i++;
|
|
}
|
|
print "</table></td></tr>\n";
|
|
}
|
|
elsif ($type eq "groups" || $type eq "classes") {
|
|
# Allow editing of group definitions
|
|
print "<tr> <td valign=top><b>$text{'edit_groups'}</b></td>\n";
|
|
print "<td colspan=3><table border width=100%>\n";
|
|
print "<tr $tb> <td><b>$text{'edit_groupname'}</b></td> ",
|
|
"<td><b>$text{'edit_groupmems'}</b></td> </tr>\n";
|
|
$i = 0;
|
|
foreach $g (@{$cls->{'defs'}}, { }) {
|
|
print "<tr $cb>\n";
|
|
printf "<td><input name=name_$i size=15 value='%s'></td>\n",
|
|
$g->{'name'};
|
|
printf "<td><input name=mems_$i size=45 value='%s'></td>\n",
|
|
join(" ", @{$g->{'valuequoted'}});
|
|
print "</tr>\n";
|
|
$i++;
|
|
}
|
|
print "</table></td></tr>\n";
|
|
}
|
|
elsif ($type eq "files") {
|
|
# Allow editing of file permission settings
|
|
local @files = &parse_directories($cls);
|
|
local $i = 0;
|
|
foreach $f (@files, $in{'newfiles'} || $in{'new'} ? ( { } ) : ( ) ) {
|
|
print "<tr> <td colspan=4><hr></td> </tr>\n";
|
|
|
|
print "<tr> <td><b>$text{'edit_filesdir'}</b></td>\n";
|
|
print "<td colspan=3>";
|
|
printf "<input type=radio name=dir_def_$i value=1 %s> %s\n",
|
|
$f->{'_dir'} ? "" : "checked", $text{'edit_none'};
|
|
printf "<input type=radio name=dir_def_$i value=0 %s>\n",
|
|
$f->{'_dir'} ? "checked" : "";
|
|
printf "<input name=dir_$i size=50 value='%s'></td> </tr>\n",
|
|
$f->{'_dir'};
|
|
|
|
local $owner = &sname("owner", $f);
|
|
print "<tr> <td><b>$text{'edit_filesowner'}</b></td> <td>\n";
|
|
printf "<input type=radio name=owner_def_$i value=1 %s> %s\n",
|
|
$owner ? "" : "checked", $text{'edit_nochange'};
|
|
printf "<input type=radio name=owner_def_$i value=0 %s>\n",
|
|
$owner ? "checked" : "";
|
|
printf "<input name=owner_$i size=13 value='%s'></td>\n",
|
|
$owner;
|
|
|
|
local $group = &sname("group", $f);
|
|
print "<td><b>$text{'edit_filesgroup'}</b></td> <td>\n";
|
|
printf "<input type=radio name=group_def_$i value=1 %s> %s\n",
|
|
$group ? "" : "checked", $text{'edit_nochange'};
|
|
printf "<input type=radio name=group_def_$i value=0 %s>\n",
|
|
$group ? "checked" : "";
|
|
printf "<input name=group_$i size=13 value='%s'></td> </tr>\n",
|
|
$group;
|
|
|
|
local $mode = &sname("mode", $f);
|
|
print "<tr> <td><b>$text{'edit_filesmode'}</b></td> <td>\n";
|
|
printf "<input type=radio name=mode_def_$i value=1 %s> %s\n",
|
|
$mode ? "" : "checked", $text{'edit_nochange'};
|
|
printf "<input type=radio name=mode_def_$i value=0 %s>\n",
|
|
$mode ? "checked" : "";
|
|
printf "<input name=mode_$i size=15 value='%s'></td>\n",
|
|
$mode;
|
|
|
|
local $rec = &sname("recurse", $f);
|
|
print "<td><b>$text{'edit_filesrec'}</b></td> <td>\n";
|
|
printf "<input type=radio name=rec_def_$i value=1 %s> %s\n",
|
|
$rec ? "" : "checked", $text{'edit_none'};
|
|
printf "<input type=radio name=rec_def_$i value=2 %s> %s\n",
|
|
$rec eq 'inf' ? "checked" : "",
|
|
$text{'edit_filesinf'};
|
|
printf "<input type=radio name=rec_def_$i value=0 %s>\n",
|
|
$rec && $rec ne 'inf' ? "checked" : "";
|
|
printf "<input name=rec_$i size=6 value='%s'></td> </tr>\n",
|
|
$rec eq 'inf' ? '' : $rec;
|
|
|
|
local $include = &sname("include", $f);
|
|
print "<tr> <td><b>$text{'edit_filesinclude'}</b></td> <td>\n";
|
|
printf "<input type=radio name=include_def_$i value=1 %s> %s\n",
|
|
$include ? "" : "checked", $text{'edit_filesall'};
|
|
printf "<input type=radio name=include_def_$i value=0 %s>\n",
|
|
$include ? "checked" : "";
|
|
printf "<input name=include_$i size=15 value='%s'></td>\n",
|
|
$include;
|
|
|
|
local $exclude = &sname("exclude", $f);
|
|
print "<td><b>$text{'edit_filesexclude'}</b></td> <td>\n";
|
|
printf "<input type=radio name=exclude_def_$i value=1 %s> %s\n",
|
|
$exclude ? "" : "checked", $text{'edit_filesnone'};
|
|
printf "<input type=radio name=exclude_def_$i value=0 %s>\n",
|
|
$exclude ? "checked" : "";
|
|
printf "<input name=exclude_$i size=13 value='%s'></td></tr>\n",
|
|
$exclude;
|
|
|
|
local $acl = &sname("acl", $f);
|
|
print "<tr> <td><b>$text{'edit_filesacl'}</b></td> <td>\n";
|
|
printf "<input type=radio name=acl_def_$i value=1 %s> %s\n",
|
|
$acl ? "" : "checked", $text{'edit_nochange'};
|
|
printf "<input type=radio name=acl_def_$i value=0 %s>\n",
|
|
$acl ? "checked" : "";
|
|
printf "<input name=acl_$i size=15 value='%s'></td>\n",
|
|
$acl;
|
|
|
|
local $action = &sname("action", $f);
|
|
local @acts = ( "fixall", "fixdirs", "fixplain", "warnall", "warndirs", "warnplain", "touch", "linkchildren", "create", "compress", "alert" );
|
|
print "<td><b>$text{'edit_filesact'}</b></td>\n";
|
|
print "<td><select name=act_$i>\n";
|
|
printf "<option value='' %s>%s</option>\n",
|
|
$action ? "" : "selected", $text{'default'};
|
|
foreach $a (@acts) {
|
|
printf "<option value=%s %s>%s</option>\n",
|
|
$a, $action eq $a ? "selected" : "",
|
|
$text{"edit_files_$a"};
|
|
}
|
|
print "<option selected>$action</option>\n"
|
|
if ($action && &indexof($action, @acts) < 0);
|
|
print "</select></td> </tr>\n";
|
|
|
|
$i++;
|
|
}
|
|
if (!$in{'newfiles'} && !$in{'new'}) {
|
|
print &ui_link("edit_class.cgi?$in&newfiles=1",$text{'edit_filesnew'})."</td>\n";
|
|
}
|
|
}
|
|
elsif ($type eq "copy") {
|
|
# Allow editing of file copy options
|
|
local @copies = &parse_directories($cls);
|
|
local $i = 0;
|
|
foreach $f (@copies, $in{'newcopy'} || $in{'new'} ? ( { } ) : ( ) ) {
|
|
print "<tr> <td colspan=4><hr></td> </tr>\n";
|
|
|
|
print "<tr> <td><b>$text{'edit_copydir'}</b></td>\n";
|
|
print "<td colspan=3>";
|
|
printf "<input type=radio name=dir_def_$i value=1 %s> %s\n",
|
|
$f->{'_dir'} ? "" : "checked", $text{'edit_none'};
|
|
printf "<input type=radio name=dir_def_$i value=0 %s>\n",
|
|
$f->{'_dir'} ? "checked" : "";
|
|
printf "<input name=dir_$i size=50 value='%s'></td> </tr>\n",
|
|
$f->{'_dir'};
|
|
|
|
print "<tr> <td><b>$text{'edit_copydest'}</b></td>\n";
|
|
print "<td colspan=3>";
|
|
printf "<input name=dest_$i size=50 value='%s'></td> </tr>\n",
|
|
&sname("dest", $f);
|
|
|
|
local $server = &sname("server", $f);
|
|
print "<tr> <td><b>$text{'edit_copyserver'}</b></td>\n";
|
|
print "<td colspan=3>";
|
|
printf "<input type=radio name=server_def_$i value=1 %s> %s\n",
|
|
$server ? "" : "checked", $text{'edit_local'};
|
|
printf "<input type=radio name=server_def_$i value=0 %s>\n",
|
|
$server ? "checked" : "";
|
|
printf "<input name=server_$i size=40 value='%s'></td> </tr>\n",
|
|
$server;
|
|
|
|
local $owner = &sname("owner", $f);
|
|
print "<tr> <td><b>$text{'edit_filesowner'}</b></td> <td>\n";
|
|
printf "<input type=radio name=owner_def_$i value=1 %s> %s\n",
|
|
$owner ? "" : "checked", $text{'edit_nochange'};
|
|
printf "<input type=radio name=owner_def_$i value=0 %s>\n",
|
|
$owner ? "checked" : "";
|
|
printf "<input name=owner_$i size=13 value='%s'></td>\n",
|
|
$owner;
|
|
|
|
local $group = &sname("group", $f);
|
|
print "<td><b>$text{'edit_filesgroup'}</b></td> <td>\n";
|
|
printf "<input type=radio name=group_def_$i value=1 %s> %s\n",
|
|
$group ? "" : "checked", $text{'edit_nochange'};
|
|
printf "<input type=radio name=group_def_$i value=0 %s>\n",
|
|
$group ? "checked" : "";
|
|
printf "<input name=group_$i size=13 value='%s'></td> </tr>\n",
|
|
$group;
|
|
|
|
local $mode = &sname("mode", $f);
|
|
print "<tr> <td><b>$text{'edit_filesmode'}</b></td> <td>\n";
|
|
printf "<input type=radio name=mode_def_$i value=1 %s> %s\n",
|
|
$mode ? "" : "checked", $text{'edit_nochange'};
|
|
printf "<input type=radio name=mode_def_$i value=0 %s>\n",
|
|
$mode ? "checked" : "";
|
|
printf "<input name=mode_$i size=15 value='%s'></td>\n",
|
|
$mode;
|
|
|
|
local $rec = &sname("recurse", $f);
|
|
print "<td><b>$text{'edit_filesrec'}</b></td> <td>\n";
|
|
printf "<input type=radio name=rec_def_$i value=1 %s> %s\n",
|
|
$rec ? "" : "checked", $text{'edit_none'};
|
|
printf "<input type=radio name=rec_def_$i value=2 %s> %s\n",
|
|
$rec eq 'inf' ? "checked" : "",
|
|
$text{'edit_filesinf'};
|
|
printf "<input type=radio name=rec_def_$i value=0 %s>\n",
|
|
$rec && $rec ne 'inf' ? "checked" : "";
|
|
printf "<input name=rec_$i size=6 value='%s'></td> </tr>\n",
|
|
$rec eq 'inf' ? '' : $rec;
|
|
|
|
local $size = &sname("size", $f);
|
|
local $smode = $size =~ /^>/ ? 3 : $size =~ /^</ ? 2 :
|
|
$size ne '' ? 1 : 0;
|
|
print "<tr> <td><b>$text{'edit_copysize'}</b></td>\n";
|
|
print "<td colspan=3>\n";
|
|
printf "<input type=radio name=size_mode_$i value=0 %s> %s\n",
|
|
$smode == 0 ? "checked" : "", $text{'edit_none'};
|
|
|
|
printf "<input type=radio name=size_mode_$i value=2 %s> %s\n",
|
|
$smode == 2 ? "checked" : "", $text{'edit_copysize2'};
|
|
printf "<input name=size2_$i size=8 value='%s'>\n",
|
|
$smode == 2 ? substr($size, 1) : "";
|
|
|
|
printf "<input type=radio name=size_mode_$i value=1 %s> %s\n",
|
|
$smode == 1 ? "checked" : "", $text{'edit_copysize1'};
|
|
printf "<input name=size1_$i size=8 value='%s'>\n",
|
|
$smode == 1 ? $size : "";
|
|
|
|
printf "<input type=radio name=size_mode_$i value=3 %s> %s\n",
|
|
$smode == 3 ? "checked" : "", $text{'edit_copysize3'};
|
|
printf "<input name=size3_$i size=8 value='%s'>\n",
|
|
$smode == 3 ? substr($size, 1) : "";
|
|
|
|
local $backup = &sname("backup", $f);
|
|
print "<tr> <td><b>$text{'edit_copybackup'}</b></td> <td>\n";
|
|
printf "<input type=radio name=backup_$i value=1 %s> %s\n",
|
|
$backup eq "false" ? "" : "checked", $text{'yes'};
|
|
printf "<input type=radio name=backup_$i value=0 %s> %s</td>\n",
|
|
$backup eq "false" ? "checked" : "", $text{'no'};
|
|
|
|
local $force = &sname("force", $f);
|
|
print "<td><b>$text{'edit_copyforce'}</b></td> <td>\n";
|
|
printf "<input type=radio name=force_$i value=1 %s> %s\n",
|
|
$force eq "true" ? "checked" : "", $text{'yes'};
|
|
printf"<input type=radio name=force_$i value=0 %s> %s</td>\n",
|
|
$force eq "true" ? "" : "checked", $text{'no'};
|
|
print "</tr>\n";
|
|
|
|
local $purge = &sname("purge", $f);
|
|
print "<tr> <td><b>$text{'edit_copypurge'}</b></td> <td>\n";
|
|
printf "<input type=radio name=purge_$i value=1 %s> %s\n",
|
|
$purge eq "true" ? "checked" : "", $text{'yes'};
|
|
printf"<input type=radio name=purge_$i value=0 %s> %s</td>\n",
|
|
$purge eq "true" ? "" : "checked", $text{'no'};
|
|
|
|
local $action = &sname("action", $f);
|
|
local @acts = ( "fix", "silent", "warn" );
|
|
print "<td><b>$text{'edit_copyact'}</b></td>\n";
|
|
print "<td><select name=act_$i>\n";
|
|
printf "<option value='' %s>%s</option>\n",
|
|
$action ? "" : "selected", $text{'default'};
|
|
foreach $a (@acts) {
|
|
printf "<option value=%s %s>%s</option>\n",
|
|
$a, $action eq $a ? "selected" : "",
|
|
$text{"edit_copy_$a"};
|
|
}
|
|
print "<option selected>$action</option>\n"
|
|
if ($action && &indexof($action, @acts) < 0);
|
|
print "</select></td> </tr>\n";
|
|
|
|
$i++;
|
|
}
|
|
if (!$in{'newcopy'} && !$in{'new'}) {
|
|
print &ui_link("edit_class.cgi?$in&newcopy=1",$text{'edit_copynew'})."</td>\n";
|
|
}
|
|
}
|
|
elsif ($type eq "disable") {
|
|
# Editing files to disable or delete
|
|
local @dis = &parse_directories($cls);
|
|
local $i = 0;
|
|
foreach $f (@dis, $in{'newdis'} || $in{'new'} ? ( { } ) : ( ) ) {
|
|
print "<tr> <td colspan=4><hr></td> </tr>\n";
|
|
|
|
print "<tr> <td><b>$text{'edit_disfile'}</b></td>\n";
|
|
print "<td colspan=3>";
|
|
printf "<input type=radio name=dir_def_$i value=1 %s> %s\n",
|
|
$f->{'_dir'} ? "" : "checked", $text{'edit_none'};
|
|
printf "<input type=radio name=dir_def_$i value=0 %s>\n",
|
|
$f->{'_dir'} ? "checked" : "";
|
|
printf "<input name=dir_$i size=50 value='%s'></td> </tr>\n",
|
|
$f->{'_dir'};
|
|
|
|
local $rot = &sname("rotate", $f);
|
|
print "<tr> <td><b>$text{'edit_disrot'}</b></td>\n";
|
|
print "<td colspan=3>\n";
|
|
printf "<input type=radio name=rot_mode_$i value=0 %s> %s\n",
|
|
$rot eq '' ? "checked" : "", $text{'edit_disrot0'};
|
|
printf "<input type=radio name=rot_mode_$i value=1 %s> %s\n",
|
|
$rot eq 'empty' || $rot eq 'truncate' ? "checked" : "",
|
|
$text{'edit_disrot1'};
|
|
printf "<input type=radio name=rot_mode_$i value=2 %s>\n",
|
|
$rot =~ /\d/ ? "checked" : "";
|
|
print &text('edit_disrot2', sprintf("<input name=rot_$i size=6 value='%s'>", $rot =~ /\d/ ? $rot : undef)),"</td> </tr>\n";
|
|
|
|
local $type = &sname("type", $f);
|
|
local @types = ( "plain", "file", "link" );
|
|
print "<tr> <td><b>$text{'edit_distype'}</b></td>\n";
|
|
print "<td><select name=type_$i>\n";
|
|
printf "<option value='' %s>%s</option>\n",
|
|
$type ? "" : "selected", $text{'edit_dis_all'};
|
|
foreach $t (@types) {
|
|
printf "<option value=%s %s>%s</option>\n",
|
|
$t, $type eq $t ? "selected" : "",
|
|
$text{"edit_dis_$t"};
|
|
}
|
|
print "<option selected>$type</option>\n"
|
|
if ($type && &indexof($type, @types) < 0);
|
|
print "</select></td>\n";
|
|
|
|
local $size = &sname("size", $f);
|
|
local $smode = $size =~ /^>/ ? 3 : $size =~ /^</ ? 2 :
|
|
$size ne '' ? 1 : 0;
|
|
print "<tr> <td><b>$text{'edit_dissize'}</b></td>\n";
|
|
print "<td colspan=3>\n";
|
|
printf "<input type=radio name=size_mode_$i value=0 %s> %s\n",
|
|
$smode == 0 ? "checked" : "", $text{'edit_none'};
|
|
|
|
printf "<input type=radio name=size_mode_$i value=2 %s> %s\n",
|
|
$smode == 2 ? "checked" : "", $text{'edit_copysize2'};
|
|
printf "<input name=size2_$i size=8 value='%s'>\n",
|
|
$smode == 2 ? substr($size, 1) : "";
|
|
|
|
printf "<input type=radio name=size_mode_$i value=1 %s> %s\n",
|
|
$smode == 1 ? "checked" : "", $text{'edit_copysize1'};
|
|
printf "<input name=size1_$i size=8 value='%s'>\n",
|
|
$smode == 1 ? $size : "";
|
|
|
|
printf "<input type=radio name=size_mode_$i value=3 %s> %s\n",
|
|
$smode == 3 ? "checked" : "", $text{'edit_copysize3'};
|
|
printf "<input name=size3_$i size=8 value='%s'>\n",
|
|
$smode == 3 ? substr($size, 1) : "";
|
|
|
|
$i++;
|
|
}
|
|
if (!$in{'newdis'} && !$in{'new'}) {
|
|
print &ui_link("edit_class.cgi?$in&newdis=1",$text{'edit_disnew'})."</td>\n";
|
|
}
|
|
}
|
|
elsif ($type eq "editfiles") {
|
|
# Allow editing of file-editor script
|
|
local $i = 0;
|
|
foreach $e (@{$cls->{'lists'}},
|
|
$in{'newedit'} || $in{'new'} ? ( { } ) : ( ) ) {
|
|
print "<tr> <td colspan=4><hr></td> </tr>\n";
|
|
|
|
local $ef = $e->{'values'}->[0];
|
|
print "<tr> <td><b>$text{'edit_editfile'}</b></td>\n";
|
|
print "<td colspan=3>";
|
|
printf "<input type=radio name=edit_def_$i value=1 %s> %s\n",
|
|
$ef ? "" : "checked", $text{'edit_none'};
|
|
printf "<input type=radio name=edit_def_$i value=0 %s>\n",
|
|
$ef ? "checked" : "";
|
|
printf "<input name=edit_$i size=50 value='%s'></td> </tr>\n",
|
|
$ef;
|
|
|
|
print "<tr> <td valign=top><b>$text{'edit_editscript'}</b>",
|
|
"</td> <td colspan=3>\n";
|
|
print "<textarea name=script_$i rows=7 cols=70>";
|
|
shift(@{$e->{'values'}});
|
|
shift(@{$e->{'valuelines'}});
|
|
shift(@{$e->{'valuequotes'}});
|
|
foreach $l (&value_lines($e->{'values'}, $e->{'valuelines'},
|
|
$e->{'valuequotes'})) {
|
|
print &html_escape($l),"\n";
|
|
}
|
|
print "</textarea></td> </tr>\n";
|
|
|
|
$i++;
|
|
}
|
|
if (!$in{'newedit'} && !$in{'new'}) {
|
|
print &ui_link("edit_class.cgi?$in&newedit=1",$text{'edit_editnew'})."</td>\n";
|
|
}
|
|
}
|
|
elsif ($type eq "ignore") {
|
|
# Display list of ignored files
|
|
print "<tr> <td valign=top><b>$text{'edit_ignore'}</b></td>\n";
|
|
print "<td colspan=3><textarea name=ignore rows=8 cols=50>";
|
|
foreach $v (@{$cls->{'valuequoted'}}) {
|
|
print &html_escape($v),"\n";
|
|
}
|
|
print "</textarea></td> </tr>\n";
|
|
}
|
|
elsif ($type eq "processes") {
|
|
# Show processes to kill
|
|
local @procs = &parse_processes($cls);
|
|
local $i = 0;
|
|
foreach $p (@procs, $in{'newproc'} || $in{'new'} ? ( { } ) : ( ) ) {
|
|
if ($p->{'_options'}) {
|
|
# Don't edit SetOptionString lines
|
|
$i++;
|
|
next;
|
|
}
|
|
print "<tr> <td colspan=4><hr></td> </tr>\n";
|
|
|
|
print "<tr> <td><b>$text{'edit_proc'}</b></td>\n";
|
|
print "<td colspan=3>";
|
|
printf "<input type=radio name=proc_def_$i value=1 %s> %s\n",
|
|
$p->{'_match'} ? "" : "checked", $text{'edit_none'};
|
|
printf "<input type=radio name=proc_def_$i value=0 %s>\n",
|
|
$p->{'_match'} ? "checked" : "";
|
|
printf "<input name=proc_$i size=50 value='%s'></td> </tr>\n",
|
|
$p->{'_match'};
|
|
|
|
local $sig = &sname("signal", $p);
|
|
print "<tr> <td><b>$text{'edit_procsig'}</b></td>\n";
|
|
print "<td><select name=sig_$i>\n";
|
|
printf "<option value='' %s>%s</option>\n",
|
|
$sig ? "" : "selected", $text{'edit_none'};
|
|
foreach $s (split(/\s+/, $Config{sig_name})) {
|
|
printf "<option value=%s %s>$s</option>\n",
|
|
lc($s), lc($s) eq $sig ? "selected" : "", $s;
|
|
}
|
|
print "</select></td>\n";
|
|
|
|
local $act = &sname("action", $p);
|
|
print "<td><b>$text{'edit_procact'}</b></td>\n";
|
|
print "<td><select name=act_$i>\n";
|
|
printf "<option value='' %s>%s</option>\n",
|
|
!$act || $act eq 'signal' || $act eq 'do' ?
|
|
"selected" : "", $text{"edit_proc_signal"};
|
|
printf "<option value=bymatch %s>%s</option>\n",
|
|
$act eq "bymatch" ? "selected" : "",
|
|
$text{"edit_proc_bymatch"};
|
|
printf "<option value=warn %s>%s</option>\n",
|
|
$act eq "warn" ? "selected" : "",
|
|
$text{"edit_proc_warn"};
|
|
print "</select></td> </tr>\n";
|
|
|
|
local $mat = &sname("matches", $p);
|
|
local $smode = $mat =~ /^>/ ? 3 : $mat =~ /^</ ? 2 :
|
|
$mat ne '' ? 1 : 0;
|
|
print "<tr> <td><b>$text{'edit_procmat'}</b></td>\n";
|
|
print "<td colspan=3>\n";
|
|
printf "<input type=radio name=mat_mode_$i value=0 %s> %s\n",
|
|
$smode == 0 ? "checked" : "", $text{'edit_procmat0'};
|
|
|
|
printf "<input type=radio name=mat_mode_$i value=2 %s> %s\n",
|
|
$smode == 2 ? "checked" : "", $text{'edit_procmat2'};
|
|
printf "<input name=mat2_$i size=8 value='%s'>\n",
|
|
$smode == 2 ? substr($mat, 1) : "";
|
|
|
|
printf "<input type=radio name=mat_mode_$i value=1 %s> %s\n",
|
|
$smode == 1 ? "checked" : "", $text{'edit_procmat1'};
|
|
printf "<input name=mat1_$i size=8 value='%s'>\n",
|
|
$smode == 1 ? $mat : "";
|
|
|
|
printf "<input type=radio name=mat_mode_$i value=3 %s> %s\n",
|
|
$smode == 3 ? "checked" : "", $text{'edit_procmat3'};
|
|
printf "<input name=mat3_$i size=8 value='%s'>\n",
|
|
$smode == 3 ? substr($mat, 1) : "";
|
|
|
|
print "<tr> <td><b>$text{'edit_procrestart'}</b></td>\n";
|
|
print "<td colspan=3>";
|
|
printf "<input type=radio name=restart_def_$i value=1 %s> %s\n",
|
|
$p->{'_restart'} ? "" : "checked", $text{'edit_none'};
|
|
printf "<input type=radio name=restart_def_$i value=0 %s>\n",
|
|
$p->{'_restart'} ? "checked" : "";
|
|
printf "<input name=restart_$i size=50 value='%s'></td></tr>\n",
|
|
$p->{'_restart'};
|
|
|
|
local $owner = &sname("owner", $p);
|
|
print "<tr> <td><b>$text{'edit_procowner'}</b></td> <td>\n";
|
|
printf "<input type=radio name=owner_def_$i value=1 %s> %s\n",
|
|
$owner ? "" : "checked", "<tt>root</tt>";
|
|
printf "<input type=radio name=owner_def_$i value=0 %s>\n",
|
|
$owner ? "checked" : "";
|
|
printf "<input name=owner_$i size=13 value='%s'></td>\n",
|
|
$owner;
|
|
|
|
local $group = &sname("group", $p);
|
|
print "<td><b>$text{'edit_procgroup'}</b></td> <td>\n";
|
|
printf "<input type=radio name=group_def_$i value=1 %s> %s\n",
|
|
$group ? "" : "checked", "<tt>root</tt>";
|
|
printf "<input type=radio name=group_def_$i value=0 %s>\n",
|
|
$group ? "checked" : "";
|
|
printf "<input name=group_$i size=13 value='%s'></td> </tr>\n",
|
|
$group;
|
|
|
|
$i++;
|
|
}
|
|
if (!$in{'newproc'} && !$in{'new'}) {
|
|
print &ui_link("edit_class.cgi?$in&newproc=1",$text{'edit_procnew'})."</td>\n";
|
|
}
|
|
}
|
|
elsif ($type eq "shellcommands") {
|
|
# Edit list of executed shell commands
|
|
local @cmds = &parse_directories($cls);
|
|
print "<tr> <td colspan=4><table border width=100%>\n";
|
|
print "<tr $tb> <td><b>$text{'edit_cmd'}</b></td> ",
|
|
"<td><b>$text{'edit_cmdowner'}</b></td> ",
|
|
"<td><b>$text{'edit_cmdgroup'}</b></td> ",
|
|
"<td><b>$text{'edit_cmdtimeout'}</b></td> </tr>\n";
|
|
$i = 0;
|
|
foreach $c (@cmds, { }) {
|
|
print "<tr $cb>\n";
|
|
printf "<td><input name=cmd_$i size=40 value='%s'></td>\n",
|
|
$c->{'_dir'};
|
|
printf "<td><input name=owner_$i size=13 value='%s'></td>\n",
|
|
&sname("owner", $c);
|
|
printf "<td><input name=group_$i size=13 value='%s'></td>\n",
|
|
&sname("group", $c);
|
|
printf"<td><input name=timeout_$i size=6 value='%s'> %s</td>\n",
|
|
&sname("timeout", $c), "secs";
|
|
print "</tr>\n";
|
|
$i++;
|
|
}
|
|
print "</table></td> </tr>\n";
|
|
}
|
|
elsif ($type eq "tidy") {
|
|
# Allow editing of directories to tidy up
|
|
local @dirs = &parse_directories($cls);
|
|
local $i = 0;
|
|
foreach $d (@dirs, $in{'newtidy'} || $in{'new'} ? ( { } ) : ( ) ) {
|
|
print "<tr> <td colspan=4><hr></td> </tr>\n";
|
|
|
|
print "<tr> <td><b>$text{'edit_tidydir'}</b></td>\n";
|
|
print "<td colspan=3>";
|
|
printf "<input type=radio name=dir_def_$i value=1 %s> %s\n",
|
|
$d->{'_dir'} ? "" : "checked", $text{'edit_none'};
|
|
printf "<input type=radio name=dir_def_$i value=0 %s>\n",
|
|
$d->{'_dir'} ? "checked" : "";
|
|
printf "<input name=dir_$i size=50 value='%s'></td> </tr>\n",
|
|
$d->{'_dir'};
|
|
|
|
local $pat = &sname("pattern", $d);
|
|
print "<tr> <td><b>$text{'edit_tidypat'}</b></td>\n";
|
|
print "<td colspan=3>";
|
|
printf "<input type=radio name=pat_def_$i value=1 %s> %s\n",
|
|
$pat ? "" : "checked", $text{'edit_filesall'};
|
|
printf "<input type=radio name=pat_def_$i value=0 %s>\n",
|
|
$pat ? "checked" : "";
|
|
printf "<input name=pat_$i size=50 value='%s'></td> </tr>\n",
|
|
$pat;
|
|
|
|
local $size = &sname("size", $d);
|
|
print "<tr> <td><b>$text{'edit_tidysize'}</b></td>\n";
|
|
print "<td colspan=3>";
|
|
printf "<input type=radio name=smode_$i value=0 %s> %s\n",
|
|
$size eq '' ? "checked" : "", $text{'edit_tidysize0'};
|
|
printf "<input type=radio name=smode_$i value=1 %s> %s\n",
|
|
$size eq 'empty' ? "checked" : "",
|
|
$text{'edit_tidysize1'};
|
|
printf "<input type=radio name=smode_$i value=2 %s> %s\n",
|
|
$size eq 'empty' || $size eq '' ? "" : "checked",
|
|
$text{'edit_tidysize2'};
|
|
printf "<input name=size_$i size=6 value='%s'></td> </tr>\n",
|
|
$size eq 'empty' ? "" : $size;
|
|
|
|
local $age = &sname("age", $d);
|
|
local $type = &sname("type", $d);
|
|
print "<tr> <td><b>$text{'edit_tidyage'}</b></td>\n";
|
|
print "<td colspan=3>";
|
|
printf "<input type=radio name=age_def_$i value=1 %s> %s\n",
|
|
$age eq '' ? "checked" : "", $text{'edit_tidyage1'};
|
|
printf "<input type=radio name=age_def_$i value=0 %s>\n",
|
|
$age eq '' ? "" : "checked";
|
|
local $asel = "<select name=type_$i>";
|
|
$asel .= sprintf "<option value='' %s>%s</option>\n",
|
|
$type eq 'atime' || !$type ? "selected" : "",
|
|
$text{'edit_tidyatime'};
|
|
$asel .= sprintf "<option value=mtime %s>%s</option>\n",
|
|
$type eq 'mtime' ? "selected" : "", $text{'edit_tidymtime'};
|
|
$asel .= sprintf "<option value=ctime %s>%s</option>\n",
|
|
$type eq 'ctime' ? "selected" : "", $text{'edit_tidyctime'};
|
|
$asel .= "</select>\n";
|
|
local $afield = "<input name=age_$i size=5 value='$age'>\n";
|
|
print &text('edit_tidyage0', $asel, $afield),"</td> </tr>\n";
|
|
|
|
local $rec = &sname("recurse", $d);
|
|
print "<td><b>$text{'edit_filesrec'}</b></td> <td>\n";
|
|
printf "<input type=radio name=rec_def_$i value=1 %s> %s\n",
|
|
$rec ? "" : "checked", $text{'edit_none'};
|
|
printf "<input type=radio name=rec_def_$i value=2 %s> %s\n",
|
|
$rec eq 'inf' ? "checked" : "",
|
|
$text{'edit_filesinf'};
|
|
printf "<input type=radio name=rec_def_$i value=0 %s>\n",
|
|
$rec && $rec ne 'inf' ? "checked" : "";
|
|
printf "<input name=rec_$i size=6 value='%s'></td> </tr>\n",
|
|
$rec eq 'inf' ? '' : $rec;
|
|
|
|
$i++;
|
|
}
|
|
if (!$in{'newtidy'} && !$in{'new'}) {
|
|
print &ui_link("edit_class.cgi?$in&newtidy=1",$text{'edit_tidynew'})."</td>\n";
|
|
}
|
|
}
|
|
elsif ($type eq "miscmounts") {
|
|
# Display filesystems to mount
|
|
local @mnts = &parse_miscmounts($cls);
|
|
print "<tr> <td colspan=4><table border width=100%>\n";
|
|
print "<tr $tb> <td><b>$text{'edit_miscsrc'}</b></td> ",
|
|
"<td><b>$text{'edit_miscdest'}</b></td> ",
|
|
"<td><b>$text{'edit_miscmode'}</b></td> </tr>\n";
|
|
local $i = 0;
|
|
foreach $m (@mnts, { }) {
|
|
print "<tr $cb>\n";
|
|
printf "<td><input name=src_$i size=30 value='%s'></td>\n",
|
|
$m->{'_src'};
|
|
printf "<td><input name=dest_$i size=30 value='%s'></td>\n",
|
|
$m->{'_dest'};
|
|
printf "<td><input name=mode_$i size=10 value='%s'></td>\n",
|
|
&sname("mode", $m);
|
|
print "</tr>\n";
|
|
$i++;
|
|
}
|
|
print "</table></td></tr>\n";
|
|
}
|
|
elsif ($type eq "resolve") {
|
|
# Display nameserver options
|
|
local (@ns, @other);
|
|
for($i=0; $i<@{$cls->{'values'}}; $i++) {
|
|
if ($cls->{'valuequotes'}->[$i]) {
|
|
push(@other, $cls->{'values'}->[$i]);
|
|
}
|
|
else {
|
|
push(@ns, $cls->{'values'}->[$i]);
|
|
}
|
|
}
|
|
print "<tr> <td valign=top><b>$text{'edit_resns'}</b></td>\n";
|
|
print "<td><textarea name=ns rows=4 cols=20>",
|
|
join("\n", @ns),"</textarea></td>\n";
|
|
|
|
print "<td valign=top><b>$text{'edit_resother'}</b></td>\n";
|
|
print "<td><textarea name=other rows=4 cols=20>",
|
|
join("\n", @other),"</textarea></td> </tr>\n";
|
|
}
|
|
elsif ($type eq "defaultroute") {
|
|
# Display the default route
|
|
printf "<tr> <td><b>$text{'edit_route'}</b></td>\n";
|
|
printf "<td><input name=route size=25 value='%s'></td> </tr>\n",
|
|
$cls->{'values'}->[0];
|
|
}
|
|
elsif ($type eq "required" || $type eq "disks") {
|
|
# Display filesystems to check
|
|
local @reqs = &parse_directories($cls);
|
|
print "<tr> <td colspan=4><table border>\n";
|
|
print "<tr $tb> <td><b>$text{'edit_reqfs'}</b></td> ",
|
|
"<td><b>$text{'edit_reqfree'}</b></td> </tr>\n";
|
|
local $i = 0;
|
|
foreach $r (@reqs, { }) {
|
|
print "<tr $cb>\n";
|
|
printf "<td><input name=fs_$i size=40 value='%s'></td> <td>\n",
|
|
$r->{'_dir'};
|
|
local $free = &sname("freespace", $r);
|
|
printf "<input type=radio name=free_def_$i value=1 %s> %s\n",
|
|
$free eq '' ? "checked" : "", $text{'edit_none'};
|
|
printf "<input type=radio name=free_def_$i value=0 %s>\n",
|
|
$free eq '' ? "" : "checked";
|
|
printf "<input name=free_$i size=10 value='%s'></td>\n", $free;
|
|
print "</tr>\n";
|
|
print "</tr>\n";
|
|
$i++;
|
|
}
|
|
print "</table></td></tr>\n";
|
|
}
|
|
else {
|
|
# Allow editing of class manually
|
|
if (!$in{'new'}) {
|
|
$lref = &read_file_lines($cls->{'file'});
|
|
local $st = $cls->{'line'};
|
|
local $en = $cls->{'eline'};
|
|
if ($lref->[$st] =~ /^\s*(\S+)::\s*$/ && $1 eq $cls->{'name'}) {
|
|
$st++;
|
|
}
|
|
print "<tr> <td colspan=4><b>",&text('edit_manualtext2',
|
|
$st, $en, "<tt>$cls->{'file'}</tt>"),"</b>\n";
|
|
print "<br><textarea name=manual rows=15 cols=70>\n";
|
|
for($i=$st; $i<=$en; $i++) {
|
|
print &html_escape($lref->[$i]),"\n";
|
|
}
|
|
print "</textarea></td> </tr>\n";
|
|
}
|
|
else {
|
|
print "<tr> <td colspan=4><b>$text{'edit_manualtext'}</b>\n";
|
|
print "<br><textarea name=manual rows=15 cols=70>\n";
|
|
print "</textarea></td> </tr>\n";
|
|
}
|
|
}
|
|
|
|
print "</table></td></tr></table>\n";
|
|
print "<table width=100%><tr>\n";
|
|
if ($in{'new'}) {
|
|
print "<td><input type=submit value='$text{'create'}'></td>\n";
|
|
}
|
|
else {
|
|
print "<td><input type=submit value='$text{'save'}'></td>\n";
|
|
print "<td align=middle><input type=submit name=manualmode ",
|
|
"value='$text{'edit_manual'}'></td>\n" if (!$in{'manual'});
|
|
print "<td align=right><input type=submit name=delete ",
|
|
"value='$text{'delete'}'></td>\n";
|
|
}
|
|
print "</tr></table>\n";
|
|
print "</form>\n";
|
|
|
|
if ($in{'cfd'}) {
|
|
&ui_print_footer("edit_cfd.cgi", $text{'cfd_return'},
|
|
"", $text{'index_return'});
|
|
}
|
|
else {
|
|
&ui_print_footer("", $text{'index_return'});
|
|
}
|
|
|
|
# sname(name, &hash)
|
|
sub sname
|
|
{
|
|
local $i;
|
|
for($i=length($_[0]); $i>0; $i--) {
|
|
local $s = substr($_[0], 0, $i);
|
|
return $_[1]->{$s} if (defined($_[1]->{$s}));
|
|
}
|
|
return undef;
|
|
}
|
|
|