mirror of
https://github.com/webmin/webmin.git
synced 2025-07-20 16:48:46 +00:00
46 lines
1.4 KiB
Perl
Executable File
46 lines
1.4 KiB
Perl
Executable File
#!/usr/local/bin/perl
|
|
# save_domain.cgi
|
|
# Save, create or delete an address mapping
|
|
|
|
require './sendmail-lib.pl';
|
|
require './domain-lib.pl';
|
|
&ReadParse();
|
|
$access{'domains'} || &error($text{'dsave_ecannot'});
|
|
$conf = &get_sendmailcf();
|
|
$dfile = &domains_file($conf);
|
|
&lock_file($dfile);
|
|
($ddbm, $ddbmtype) = &domains_dbm($conf);
|
|
@doms = &list_domains($dfile);
|
|
if (!$in{'new'}) { $d = $doms[$in{'num'}]; }
|
|
foreach $du (@doms) { $already{$du->{'from'}}++; }
|
|
|
|
if ($in{'delete'}) {
|
|
# delete some mapping
|
|
$logd = $d;
|
|
&delete_domain($d, $dfile, $ddbm, $ddbmtype);
|
|
}
|
|
else {
|
|
# Saving or creating.. check inputs
|
|
&error_setup($text{'dsave_err'});
|
|
$in{'from'} =~ /^[A-z0-9\.\-]+$/ ||
|
|
&error(&text('dsave_edomain', $in{'from'}));
|
|
$in{'to'} =~ /^[A-z0-9\.\-]+$/ ||
|
|
&error(&text('dsave_edomain', $in{'to'}));
|
|
if ($in{'new'} || lc($in{'from'}) ne lc($d->{'from'})) {
|
|
($same) = grep { lc($_->{'from'}) eq lc($in{'from'}) }
|
|
@doms;
|
|
$same && &error(&text('dsave_ealready', $in{'from'}));
|
|
}
|
|
$newd{'from'} = $in{'from'};
|
|
$newd{'to'} = $in{'to'};
|
|
$newd{'cmt'} = $in{'cmt'};
|
|
if ($in{'new'}) { &create_domain(\%newd, $dfile, $ddbm, $ddbmtype); }
|
|
else { &modify_domain($d, \%newd, $dfile, $ddbm, $ddbmtype); }
|
|
$logd = \%newd;
|
|
}
|
|
&unlock_file($dfile);
|
|
&webmin_log($in{'delete'} ? 'delete' : $in{'new'} ? 'create' : 'modify',
|
|
"domain", $logd->{'from'}, $logd);
|
|
&redirect("list_domains.cgi");
|
|
|