2 # Create, update or delete an autoreply filter
4 require './filter-lib.pl';
5 &foreign_require("mailbox", "mailbox-lib.pl");
7 &error_setup($text{'auto_err'});
9 # Find existing autoreply filter object
10 &lock_file($procmail::procmailrc);
11 @filters = &list_filters();
12 ($old) = grep { $_->{'actionreply'} && $_->{'nocond'} } @filters;
15 if ($filter && !$in{'enabled'}) {
17 &delete_filter($filter);
19 elsif ($in{'enabled'}) {
22 $filter = { 'actionreply' => 1,
26 $in{'reply'} =~ /\S/ || &error($text{'save_ereply'});
27 $in{'reply'} =~ s/\r//g;
28 $filter->{'reply'}->{'autotext'} = $in{'reply'};
30 # From address (automatic)
31 $filter->{'reply'}->{'from'} = &mailbox::get_preferred_from_address();
34 $idx = defined($filter->{'index'}) ? $filter->{'index'}
36 $filter->{'reply'}->{'autoreply'} ||=
37 "$remote_user_info[7]/autoreply.$idx.txt";
40 if ($config{'reply_force'}) {
42 $min = $config{'reply_min'} || 60;
43 $filter->{'reply'}->{'period'} = $min*60;
44 $filter->{'reply'}->{'replies'} ||=
45 "$user_module_config_directory/replies";
47 elsif ($in{'period_def'}) {
49 delete($filter->{'reply'}->{'replies'});
50 delete($filter->{'reply'}->{'period'});
53 # Set reply period and tracking file
54 $in{'period'} =~ /^\d+$/ ||
55 &error($text{'save_eperiod'});
56 if ($config{'reply_min'} &&
57 $in{'period'} < $config{'reply_min'}) {
58 &error(&text('save_eperiodmin', $config{'reply_min'}));
60 $filter->{'reply'}->{'period'} = $in{'period'}*60;
61 $filter->{'reply'}->{'replies'} ||=
62 "$user_module_config_directory/replies";
66 if ($in{'charset_def'} == 1) {
67 delete($filter->{'reply'}->{'charset'});
69 elsif ($in{'charset_def'} == 2) {
70 $filter->{'reply'}->{'charset'} = &get_charset();
73 $in{'charset'} =~ /^[a-z0-9\.\-\_]+$/i ||
74 error($text{'save_echarset'});
75 $filter->{'reply'}->{'charset'} = $in{'charset'};
79 &modify_filter($filter);
82 &insert_filter($filter);
86 &unlock_file($procmail::procmailrc);