mirror of
https://github.com/webmin/webmin.git
synced 2025-07-21 23:40:34 +00:00
83 lines
1.9 KiB
Perl
Executable File
83 lines
1.9 KiB
Perl
Executable File
#!/usr/local/bin/perl
|
|
# Create, update or delete a mailcap entry
|
|
|
|
require './mailcap-lib.pl';
|
|
&ReadParse();
|
|
&error_setup($text{'save_err'});
|
|
@mailcap = &list_mailcap();
|
|
|
|
if (!$in{'new'}) {
|
|
($mailcap) = grep { $_->{'index'} == $in{'index'} } @mailcap;
|
|
$mailcap || &error($text{'edit_egone'});
|
|
}
|
|
else {
|
|
$mailcap = { 'args' => { } };
|
|
}
|
|
|
|
&lock_file($mailcap_file);
|
|
if ($in{'delete'}) {
|
|
# Just trash one
|
|
&delete_mailcap($mailcap);
|
|
}
|
|
else {
|
|
# Validate inputs
|
|
$in{'type'} =~ /([a-z0-9\-]+)\/([a-z0-9\-\*]+)/ ||
|
|
&error($text{'save_etype'});
|
|
#if (($in{'new'} || $in{'old'} ne $in{'type'}) && $in{'enabled'}) {
|
|
# ($clash) = grep { $_->{'type'} eq $in{'type'} &&
|
|
# $_->{'enabled'} == 1 } @mailcap;
|
|
# $clash && &error($text{'save_eclash'});
|
|
# }
|
|
$mailcap->{'type'} = $in{'type'};
|
|
$mailcap->{'enabled'} = $in{'enabled'};
|
|
$in{'program'} ||
|
|
&error($text{'save_eprogram'});
|
|
$mailcap->{'program'} = $in{'program'};
|
|
$in{'cmt'} =~ s/\r//g;
|
|
$in{'cmt'} =~ s/\s*$//g;
|
|
$mailcap->{'cmt'} = $in{'cmt'};
|
|
|
|
# Save extra args
|
|
$args = $mailcap->{'args'};
|
|
if ($in{'test_def'}) {
|
|
delete($args->{'test'});
|
|
}
|
|
else {
|
|
$in{'test'} =~ /\S/ && $in{'test'} !~ /;/ ||
|
|
&error($text{'save_etest'});
|
|
$args->{'test'} = $in{'test'};
|
|
}
|
|
if ($in{'term'}) {
|
|
$args->{'needsterminal'} = '';
|
|
}
|
|
else {
|
|
delete($args->{'needsterminal'});
|
|
}
|
|
if ($in{'copious'}) {
|
|
$args->{'copiousoutput'} = '';
|
|
}
|
|
else {
|
|
delete($args->{'copiousoutput'});
|
|
}
|
|
if ($in{'desc_def'}) {
|
|
delete($args->{'description'});
|
|
}
|
|
else {
|
|
$in{'desc'} !~ /;/ || &error($text{'save_edesc'});
|
|
$args->{'description'} = $in{'desc'};
|
|
}
|
|
|
|
# Update in file
|
|
if ($in{'new'}) {
|
|
&create_mailcap($mailcap);
|
|
}
|
|
else {
|
|
&modify_mailcap($mailcap);
|
|
}
|
|
}
|
|
&unlock_file($mailcap_file);
|
|
&webmin_log($in{'new'} ? "create" : $in{'delete'} ? "delete" : "modify",
|
|
"mailcap", $in{'old'} || $in{'type'});
|
|
&redirect("");
|
|
|