if ($config->get("campaigntransfer_db", fail_soft => 1)) {
my($dbconn, $dbuser, $dbpass, $dbschema) = split(/\s+/, $config->get("campaigntransfer_db"));
my $dbh = DBI->connect("dbi:Pg:dbname=hermes","hermes","",{ RaiseError => 1, PrintError => 0, AutoCommit => 0, ShowErrorStatement => 1 });
my @bannedemails;
$qentry->logger->info("debug Ravish 1st line");
# Check specific emails first, then regex matches
# Check locale-specific bans before global bans
my $stmt = $dbh->prepare_cached("select regex, email, '['
|| id || case locale when '*' then '*' else '' end ||
case regex when 't' then '+' else '' end || '] ' || reason as message from ".($dbschema ? "$dbschema." : "")."bannedemails where locale
in (?, '*') order by case regex when 't' then 1 else 0 end, case locale when '*' then 1 else 0 end");
$stmt->execute($qentry->campaign_locale);
my($is_regex, $pattern, $reason);
$stmt->bind_columns(\$is_regex, \$pattern, \$reason);
my @regexes;
my %literal;
while ($stmt->fetch) {
my $regex;
if ($is_regex) {
push @regexes, [qr{$pattern}i, $reason];
}
else {
$literal{lc($pattern)} = $reason;
}
}
$dbh->disconnect;
$qentry->logger->info("debug Ravish 2nd line");
$qentry->logger->debug1("Fetched ".(scalar @regexes)." regexes and ".(scalar keys %literal)." literal email
addresses to blacklist");
return (\@regexes, \%literal);
}
return ([], {});