parent
39c454c95e
commit
60877da4ed
@ -591,7 +591,7 @@ sub spool_dir {
|
||||
unless ($Spool_dir) { # first time through
|
||||
$self->log(LOGDEBUG, "Initializing spool_dir");
|
||||
$Spool_dir = $self->config('spool_dir')
|
||||
|| Qpsmtpd::Utils::tildeexp('~/tmp/');
|
||||
|| Qpsmtpd::Utils->tildeexp('~/tmp/');
|
||||
|
||||
$Spool_dir .= "/" unless ($Spool_dir =~ m!/$!);
|
||||
|
||||
|
@ -2,13 +2,22 @@ package Qpsmtpd::Utils;
|
||||
use strict;
|
||||
|
||||
sub tildeexp {
|
||||
my $path = shift;
|
||||
my ($self, $path) = @_;
|
||||
$path =~ s{^~([^/]*)} {
|
||||
$1
|
||||
$1
|
||||
? (getpwnam($1))[7]
|
||||
: ( $ENV{HOME} || $ENV{LOGDIR} || (getpwuid($>))[7])
|
||||
}ex;
|
||||
return $path;
|
||||
}
|
||||
|
||||
sub is_localhost {
|
||||
my ($self, $ip) = @_;
|
||||
return if ! $ip;
|
||||
return 1 if $ip =~ /^127\./; # IPv4
|
||||
return 1 if $ip =~ /:127\./; # IPv4 mapped IPv6
|
||||
return 1 if $ip eq '::1'; # IPv6
|
||||
return;
|
||||
}
|
||||
|
||||
1;
|
||||
|
35
t/qpsmtpd-utils.t
Normal file
35
t/qpsmtpd-utils.t
Normal file
@ -0,0 +1,35 @@
|
||||
#!/usr/bin/perl
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use Test::More;
|
||||
|
||||
use lib 'lib'; # test lib/Qpsmtpd/Utils (vs site_perl)
|
||||
|
||||
BEGIN { use_ok('Qpsmtpd::Utils'); }
|
||||
|
||||
my $utils = bless {}, 'Qpsmtpd::Utils';
|
||||
|
||||
__tildeexp();
|
||||
__is_localhost();
|
||||
|
||||
done_testing();
|
||||
|
||||
sub __is_localhost {
|
||||
|
||||
for my $local_ip (qw/ 127.0.0.1 ::1 2607:f060:b008:feed::127.0.0.1 127.0.0.2 /) {
|
||||
ok( $utils->is_localhost($local_ip), "is_localhost, $local_ip");
|
||||
}
|
||||
|
||||
for my $rem_ip (qw/ 128.0.0.1 ::2 2607:f060:b008:feed::128.0.0.1 /) {
|
||||
ok( !$utils->is_localhost($rem_ip), "!is_localhost, $rem_ip");
|
||||
}
|
||||
};
|
||||
|
||||
sub __tildeexp {
|
||||
my $path = $utils->tildeexp('~root/foo.txt');
|
||||
ok( $path, "tildeexp, $path");
|
||||
|
||||
$path = $utils->tildeexp('no/tilde/in/path');
|
||||
cmp_ok( $path, 'eq', 'no/tilde/in/path', 'tildeexp, no expansion');
|
||||
};
|
Loading…
Reference in New Issue
Block a user