Version 0.31 branch

git-svn-id: https://svn.perl.org/qpsmtpd/branches/v031@480 958fd67b-6ff1-0310-b445-bb7760255be9
This commit is contained in:
Matt Sergeant 2005-07-07 19:48:19 +00:00
parent 90daeb3786
commit a1324b5ddb
2 changed files with 31 additions and 8 deletions

View File

@ -16,6 +16,7 @@ use APR::Bucket ();
use APR::Socket ();
use Apache2::Filter ();
use ModPerl::Util ();
use Apache::Scoreboard;
our $VERSION = '0.02';
@ -55,7 +56,7 @@ sub start_connection {
my $remote_host = $opts{host} || ( $opts{ip} ? "[$opts{ip}]" : "[noip!]");
my $remote_info = $opts{info} ? "$opts{info}\@$remote_host" : $remote_host;
my $remote_ip = $opts{ip};
$self->log(LOGNOTICE, "Connection from $remote_info [$remote_ip]");
$self->SUPER::connection->start(

View File

@ -4,6 +4,8 @@ use vars qw($VERSION $Logger $TraceLevel $Spool_dir);
use Sys::Hostname;
use Qpsmtpd::Constants;
use Qpsmtpd::Transaction;
use Qpsmtpd::Connection;
$VERSION = "0.31-dev";
@ -114,17 +116,25 @@ sub config_dir {
my $configdir = ($ENV{QMAIL} || '/var/qmail') . '/control';
my ($name) = ($0 =~ m!(.*?)/([^/]+)$!);
$configdir = "$name/config" if (-e "$name/config/$config");
if (exists $ENV{QPSMTPD_CONFIG}) {
$configdir = $ENV{QPSMTPD_CONFIG} if (-e "$ENV{QPSMTPD_CONFIG}/$config");
}
return $configdir;
}
sub plugin_dir {
my ($name) = ($0 =~ m!(.*?)/([^/]+)$!);
my $dir = "$name/plugins";
my $self = shift;
my $plugin_dir = $self->config('plugin_dir', "NOLOG");
unless (defined($plugin_dir)) {
my ($name) = ($0 =~ m!(.*?)/([^/]+)$!);
$plugin_dir = "$name/plugins";
}
return $plugin_dir;
}
sub get_qmail_config {
my ($self, $config, $type) = @_;
$self->log(LOGDEBUG, "trying to get config for $config");
$self->log(LOGDEBUG, "trying to get config for $config") unless $type and $type eq "NOLOG";
if ($self->{_config_cache}->{$config}) {
return wantarray ? @{$self->{_config_cache}->{$config}} : $self->{_config_cache}->{$config}->[0];
}
@ -246,10 +256,6 @@ sub _load_plugins {
return @ret;
}
sub transaction {
return {}; # base class implements empty transaction
}
sub run_hooks {
my ($self, $hook) = (shift, shift);
my $hooks = $self->{hooks};
@ -347,6 +353,22 @@ sub spool_dir {
return $Spool_dir;
}
sub transaction {
my $self = shift;
return $self->{_transaction} || $self->reset_transaction();
}
sub reset_transaction {
my $self = shift;
$self->run_hooks("reset_transaction") if $self->{_transaction};
return $self->{_transaction} = Qpsmtpd::Transaction->new();
}
sub connection {
my $self = shift;
return $self->{_connection} || ($self->{_connection} = Qpsmtpd::Connection->new());
}
# For unique filenames. We write to a local tmp dir so we don't need
# to make them unpredictable.
my $transaction_counter = 0;