mirror of
https://github.com/webmin/webmin.git
synced 2025-07-23 00:30:33 +00:00
69 lines
1.8 KiB
Perl
Executable File
69 lines
1.8 KiB
Perl
Executable File
#!/usr/local/bin/perl
|
|
# save_file.cgi
|
|
# Save, create or delete a file editor
|
|
|
|
require './custom-lib.pl';
|
|
&ReadParse();
|
|
|
|
$access{'edit'} || &error($text{'file_ecannot'});
|
|
if ($in{'delete'}) {
|
|
$edit = &get_command($in{'id'}, $in{'idx'});
|
|
&delete_command($edit);
|
|
&webmin_log("delete", "edit", $edit->{'id'}, $edit);
|
|
&redirect("");
|
|
}
|
|
elsif ($in{'clone'}) {
|
|
&redirect("edit_file.cgi?id=$in{'id'}&idx=$in{'idx'}&clone=1&new=1");
|
|
}
|
|
else {
|
|
&error_setup($text{'file_err'});
|
|
if (!$in{'new'}) {
|
|
$edit = &get_command($in{'id'}, $in{'idx'});
|
|
}
|
|
else {
|
|
$edit = { 'id' => time() };
|
|
}
|
|
|
|
# parse and validate inputs
|
|
$in{'edit'} =~ /\S/ || &error($text{'file_eedit'});
|
|
$edit->{'edit'} = $in{'edit'};
|
|
$in{'desc'} =~ /\S/ || &error($text{'file_edesc'});
|
|
$edit->{'desc'} = $in{'desc'};
|
|
$in{'html'} =~ s/\r//g;
|
|
$in{'html'} =~ s/\n*/\n/;
|
|
$cmd->{'html'} = $in{'html'};
|
|
if ($in{'owner_def'}) {
|
|
$edit->{'user'} = $edit->{'group'} = undef;
|
|
}
|
|
else {
|
|
(@u = getpwnam($in{'user'})) || &error($text{'file_euser'});
|
|
(@g = getgrnam($in{'group'})) || &error($text{'file_egroup'});
|
|
$edit->{'user'} = $in{'user'};
|
|
$edit->{'group'} = $in{'group'};
|
|
}
|
|
if ($in{'perms_def'}) {
|
|
$edit->{'perms'} = undef;
|
|
}
|
|
else {
|
|
$in{'perms'} =~ /^[0-7]{3}$/ || &error($text{'file_eperms'});
|
|
$edit->{'perms'} = $in{'perms'};
|
|
}
|
|
$edit->{'beforeedit'} = $in{'beforeedit'};
|
|
$edit->{'before'} = $in{'before'};
|
|
$edit->{'after'} = $in{'after'};
|
|
$edit->{'order'} = $in{'order_def'} ? 0 : int($in{'order'});
|
|
$edit->{'usermin'} = $in{'usermin'};
|
|
$edit->{'envs'} = $in{'envs'};
|
|
&parse_params_inputs($edit);
|
|
&save_command($edit);
|
|
&webmin_log($in{'new'} ? "create" : "modify", "edit",
|
|
$cmd->{'id'}, $cmd);
|
|
|
|
if ($in{'new'} && $access{'cmds'} ne '*') {
|
|
$access{'cmds'} .= " ".$edit->{'id'};
|
|
&save_module_acl(\%access);
|
|
}
|
|
&redirect("");
|
|
}
|
|
|