my $self = fields::new($class);
$self->SUPER::new($sock);
$self->{nntpd} = $nntpd;
- res($self, '201 server ready - post via email');
+ res($self, '201 ' . $nntpd->{servername} . ' ready - post via email');
$self->{rbuf} = '';
$self->watch_read(1);
update_idle_time($self);
sub xref ($$$$) {
my ($self, $ng, $n, $mid) = @_;
- my $ret = "$ng->{domain} $ng->{newsgroup}:$n";
+ my $ret = $self->{nntpd}->{servername} . " $ng->{newsgroup}:$n";
# num_for is pretty cheap and sometimes we'll lookup the existence
# of an article without getting even the OVER info. In other words,
package PublicInbox::NNTPD;
use strict;
use warnings;
+use Sys::Hostname;
require PublicInbox::Config;
sub new {
my ($class) = @_;
+ my $pi_config = PublicInbox::Config->new;
+ my $name = $pi_config->{'publicinbox.nntpserver'};
+ if (!defined($name) or $name eq '') {
+ $name = hostname;
+ } elsif (ref($name) eq 'ARRAY') {
+ $name = $name->[0];
+ }
+
bless {
groups => {},
err => \*STDERR,
out => \*STDOUT,
grouplist => [],
+ servername => $name,
}, $class;
}
my $mid = 'a@b';
my $mime = Email::MIME->new("Message-ID: <$mid>\r\n\r\n");
my $hdr = $mime->header_obj;
- my $mock_self = { nntpd => { grouplist => [] } };
+ my $mock_self = { nntpd => { grouplist => [],
+ servername => 'example.com' } };
PublicInbox::NNTP::set_nntp_headers($mock_self, $hdr, $ng, 1, $mid);
is_deeply([ $mime->header('Message-ID') ], [ "<$mid>" ],
'Message-ID unchanged');
use Socket qw(SO_KEEPALIVE IPPROTO_TCP TCP_NODELAY);
use File::Temp qw/tempdir/;
use Net::NNTP;
+use Sys::Hostname;
my $tmpdir = tempdir('pi-nntpd-XXXXXX', TMPDIR => 1, CLEANUP => 1);
my $home = "$tmpdir/pi-home";
'from' => "El\xc3\xa9anor <me\@example.com>",
'to' => "El\xc3\xa9anor <you\@example.com>",
'cc' => $addr,
- 'xref' => "example.com $group:1",
+ 'xref' => hostname . " $group:1",
'references' => '<reftabsqueezed>',
);
my $s = IO::Socket::INET->new(%opts);
sysread($s, my $buf, 4096);
- is($buf, "201 server ready - post via email\r\n", 'got greeting');
+ is($buf, "201 " . hostname . " ready - post via email\r\n",
+ 'got greeting');
$s->autoflush(1);
ok(syswrite($s, " \r\n"), 'wrote spaces');
$s = IO::Socket::INET->new(%opts);
sysread($s, $buf, 4096);
- is($buf, "201 server ready - post via email\r\n", 'got greeting');
+ is($buf, "201 " . hostname . " ready - post via email\r\n",
+ 'got greeting');
$s->autoflush(1);
syswrite($s, "NEWGROUPS 19990424 000000 GMT\r\n");