X-Git-Url: http://www.git.stargrave.org/?p=public-inbox.git;a=blobdiff_plain;f=lib%2FPublicInbox%2FNNTPD.pm;h=451f4d4183bf52875e5f3e800f269c331ccffa14;hp=a67811bc9bd458a6eb958c71513ac3d3f23fce7c;hb=31ec75b69e02df6330bc16dd2bd48d354726f4c1;hpb=33cef7f24d3ddedc4cd79ee88b0bba6ed1aab4c9 diff --git a/lib/PublicInbox/NNTPD.pm b/lib/PublicInbox/NNTPD.pm index a67811bc..451f4d41 100644 --- a/lib/PublicInbox/NNTPD.pm +++ b/lib/PublicInbox/NNTPD.pm @@ -1,4 +1,4 @@ -# Copyright (C) 2016 all contributors +# Copyright (C) 2016-2020 all contributors # License: AGPL-3.0+ # represents an NNTPD (currently a singleton), @@ -6,15 +6,27 @@ package PublicInbox::NNTPD; use strict; use warnings; -require PublicInbox::Config; +use Sys::Hostname; +use 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, + greet => \"201 $name ready - post via email\r\n", + # accept_tls => { SSL_server => 1, ..., SSL_reuse_ctx => ... } }, $class; } @@ -25,7 +37,7 @@ sub refresh_groups () { my @list; $pi_config->each_inbox(sub { my ($ng) = @_; - my $ngname = $ng->{newsgroup} or next; + my $ngname = $ng->{newsgroup} or return; if (ref $ngname) { warn 'multiple newsgroups not supported: '. join(', ', @$ngname). "\n"; @@ -33,6 +45,10 @@ sub refresh_groups () { # Only valid if msgmap and search works $new->{$ngname} = $ng; push @list, $ng; + + # preload to avoid fragmentation: + $ng->description; + $ng->base_url; } }); @list = sort { $a->{newsgroup} cmp $b->{newsgroup} } @list;