3 # Save, create or delete an outgoing address mapping
5 require './sendmail-lib.pl';
6 require './generics-lib.pl';
8 $access{'omode'} || &error($text{'gsave_ecannot'});
9 $conf = &get_sendmailcf();
10 $gfile = &generics_file($conf);
12 ($gdbm, $gdbmtype) = &generics_dbm($conf);
13 @gens = &list_generics($gfile);
15 $g = $gens[$in{'num'}];
16 &can_edit_generic($g) ||
17 &error($text{'gsave_ecannot2'});
23 &delete_generic($g, $gfile, $gdbm, $gdbmtype);
26 # Saving or creating.. check inputs
27 &error_setup($text{'gsave_err'});
28 $in{'from'} =~ /^\S+$/ ||
29 &error(&text('gsave_efrom', $in{'from'}));
30 $access{'omode'} == 1 || $in{'from'} =~ /$access{'oaddrs'}/ ||
31 &error(&text('gsave_ematch', $access{'oaddrs'}));
32 $in{'to'} =~ /^\S+\@[a-z0-9\.\-\_]+$/i ||
33 &error(&text('gsave_eto', $in{'to'}));
34 if ($in{'new'} || lc($in{'from'}) ne lc($g->{'from'})) {
35 ($same) = grep { lc($_->{'from'}) eq lc($in{'from'}) }
37 $same && &error(&text('gsave_ealready', $in{'from'}));
39 $newg{'from'} = $in{'from'};
40 $newg{'to'} = $in{'to'};
41 $newg{'cmt'} = $in{'cmt'};
42 &can_edit_generic(\%newg) ||
43 &error($text{'gsave_ecannot3'});
45 &create_generic(\%newg, $gfile, $gdbm, $gdbmtype);
48 &modify_generic($g, \%newg, $gfile, $gdbm, $gdbmtype);
53 &webmin_log($in{'delete'} ? 'delete' : $in{'new'} ? 'create' : 'modify',
54 "generic", $logg->{'from'}, $logg);
55 &redirect("list_generics.cgi");