#!/usr/local/bin/perl
# Save SPF options for a virtual server
require './virtual-server-lib.pl';
&ReadParse();
&error_setup($text{'spf_err'});
$d = &get_domain($in{'dom'});
&can_edit_domain($d) || &error($text{'edit_ecannot'});
&set_all_null_print();
$oldd = { %$d };
$spf = &get_domain_spf($d);
if ($in{'enabled'}) {
$spf ||= &default_domain_spf($d);
$defspf = &default_domain_spf($d);
foreach $t ('a', 'mx', 'ip4') {
local @v = split(/\s+/, $in{'extra_'.$t});
foreach my $v (@v) {
if (($t eq "a" || $t eq "mx") &&
$v !~ /^[a-z0-9\.\-\_]+$/i ||
$t eq "ip4" && !&check_ipaddress($v)) {
&error(&text('spf_e'.$t, $v));
}
}
$spf->{$t.':'} = \@v;
}
$spf->{'all'} = $in{'all'};
&save_domain_spf($d, $spf);
}
else {
# Just turn off
&save_domain_spf($d, undef);
}
# Save DNS IP address
if ($in{'dns_ip_def'}) {
delete($d->{'dns_ip'});
}
else {
&check_ipaddress($in{'dns_ip'}) || &error($text{'spf_ednsip'});
$d->{'dns_ip'} = $in{'dns_ip'};
}
&modify_dns($d, $oldd);
&save_domain($d);
&run_post_actions();
# All done
&webmin_log("spf", "domain", $d->{'dom'});
&domain_redirect($d);
syntax highlighted by Code2HTML, v. 0.9.1