forked from webmin/webmin
-
Notifications
You must be signed in to change notification settings - Fork 0
/
save.cgi
executable file
·82 lines (76 loc) · 1.9 KB
/
save.cgi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#!/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("");