Viewing file: save_generic.cgi (1.57 KB) -rwxr-xr-x Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#!/usr/bin/perl # save_generic.cgi # Save, create or delete an outgoing address mapping
require './sendmail-lib.pl'; require './generics-lib.pl'; &ReadParse(); $access{'omode'} || &error($text{'gsave_ecannot'}); $conf = &get_sendmailcf(); $gfile = &generics_file($conf); &lock_file($gfile); ($gdbm, $gdbmtype) = &generics_dbm($conf); @gens = &list_generics($gfile); if (!$in{'new'}) { $g = $gens[$in{'num'}]; &can_edit_generic($g) || &error($text{'gsave_ecannot2'}); }
if ($in{'delete'}) { # delete some mapping $logg = $g; &delete_generic($g, $gfile, $gdbm, $gdbmtype); } else { # Saving or creating.. check inputs &error_setup($text{'gsave_err'}); $in{'from'} =~ /^\S+$/ || &error(&text('gsave_efrom', $in{'from'})); $access{'omode'} == 1 || $in{'from'} =~ /$access{'oaddrs'}/ || &error(&text('gsave_ematch', $access{'oaddrs'})); $in{'to'} =~ /^\S+\@[a-z0-9\.\-\_]+$/i || &error(&text('gsave_eto', $in{'to'})); if ($in{'new'} || lc($in{'from'}) ne lc($g->{'from'})) { ($same) = grep { lc($_->{'from'}) eq lc($in{'from'}) } @gens; $same && &error(&text('gsave_ealready', $in{'from'})); } $newg{'from'} = $in{'from'}; $newg{'to'} = $in{'to'}; $newg{'cmt'} = $in{'cmt'}; &can_edit_generic(\%newg) || &error($text{'gsave_ecannot3'}); if ($in{'new'}) { &create_generic(\%newg, $gfile, $gdbm, $gdbmtype); } else { &modify_generic($g, \%newg, $gfile, $gdbm, $gdbmtype); } $logg = \%newg; } &unlock_file($gfile); &webmin_log($in{'delete'} ? 'delete' : $in{'new'} ? 'create' : 'modify', "generic", $logg->{'from'}, $logg); &redirect("list_generics.cgi");
|