3 # postfix-module by Guillaume Cottenceau <gc@mandrakesoft.com>,
4 # for webmin by Jamie Cameron
6 # Save, modify, delete an alias for Postfix
9 require './postfix-lib.pl';
12 $access{'aliases'} || &error($text{'aliases_ecannot'});
13 &error_setup($text{'alias_save_err'});
15 # Get the alias (if editing or deleting)
16 @afiles = &get_aliases_files(&get_current_value("alias_maps"));
17 @aliases = &list_postfix_aliases();
19 $a = $aliases[$in{'num'}];
21 &lock_alias_files(\@afiles);
25 &delete_postfix_alias($a);
29 # saving or creating .. check inputs
30 $in{'name'} =~ /^[^:@ ]+$/ ||
31 &error(&text('asave_eaddr', $in{'name'}));
32 if ($in{'new'} || uc($a->{'name'}) ne uc($in{'name'})) {
34 for($i=0; $i<@aliases; $i++) {
35 if (uc($in{'name'}) eq uc($aliases[$i]->{'name'})) {
36 &error(&text('asave_ealready', $in{'name'}));
40 for($i=0; defined($t = $in{"type_$i"}); $i++) {
44 if ($t == 1 && $v !~ /^(\S+)$/) {
45 &error(&text('asave_etype1', $v));
47 elsif ($t == 3 && $v !~ /^\/(\S+)$/) {
48 &error(&text('asave_etype3', $v));
51 $v =~ /^(\S+)/ || &error($text{'asave_etype4none'});
52 -x $1 || &error(&text('asave_etype4', $1));
54 elsif ($t == 5 && $v !~ /^\/(\S+)$/) {
55 &error(&text('asave_etype5', $v));
57 elsif ($t == 6 && $v !~ /^\/(\S+)$/) {
58 &error(&text('asave_etype6', $v));
60 if ($t == 1 || $t == 3) { push(@values, $v); }
61 elsif ($t == 2) { push(@values, ":include:$v"); }
62 elsif ($t == 4) { push(@values, "|$v"); }
64 # Setup autoreply script
65 push(@values, "|$module_config_directory/autoreply.pl ".
67 &system_logged("cp autoreply.pl $module_config_directory");
68 &system_logged("chmod 755 $module_config_directory/config");
72 push(@values, "|$module_config_directory/filter.pl ".
74 &system_logged("cp filter.pl $module_config_directory");
75 &system_logged("chmod 755 $module_config_directory/config");
79 $newa{'name'} = $in{'name'};
80 $newa{'values'} = \@values;
81 if (defined($in{'cmt'})) {
82 $newa{'cmt'} = $in{'cmt'};
84 $newa{'enabled'} = $in{'enabled'};
86 &create_postfix_alias(\%newa);
89 &modify_postfix_alias($a, \%newa);
93 &unlock_alias_files(\@afiles);
95 # re-creates aliases database
96 ®enerate_aliases();
99 &webmin_log($in{'new'} ? 'create' : $in{'delete'} ? 'delete' : 'modify',
100 'alias', $loga->{'name'}, $loga);
101 &redirect("aliases.cgi");