]> Sergey Matveev's repositories - public-inbox.git/blobdiff - script/public-inbox-nntpd
No ext_urls
[public-inbox.git] / script / public-inbox-nntpd
index 23d269d4b778c9ffb6480f81ef3154eac56a72b3..aca2738354b1d8b7f26514b01eddcb1bff11b011 100755 (executable)
@@ -1,69 +1,8 @@
-#!/usr/bin/perl -w
-# Copyright (C) 2015 all contributors <meta@public-inbox.org>
-# License: AGPLv3 or later (https://www.gnu.org/licenses/agpl-3.0.txt)
+#!perl -w
+# Copyright (C) all contributors <meta@public-inbox.org>
+# License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 #
 # Standalone NNTP server for public-inbox.
-use strict;
-use warnings;
-require PublicInbox::Daemon;
-require PublicInbox::NewsGroup;
-require PublicInbox::NNTP;
-require PublicInbox::Config;
-my $nntpd = PublicInbox::NNTPD->new;
-daemon_run('0.0.0.0:119',
-       sub { $nntpd->refresh_groups }, # refresh
-       sub ($$$) { PublicInbox::NNTP->new($_[0], $nntpd) }); # post_accept
-
-1;
-package PublicInbox::NNTPD;
-use strict;
-use warnings;
-
-sub new {
-       my ($class) = @_;
-       bless {
-               groups => {},
-               err => \*STDERR,
-               out => \*STDOUT,
-               grouplist => [],
-       }, $class;
-}
-
-sub refresh_groups () {
-       my ($self) = @_;
-       my $pi_config = PublicInbox::Config->new;
-       my $new = {};
-       my @list;
-       foreach my $k (keys %$pi_config) {
-               $k =~ /\Apublicinbox\.([^\.]+)\.mainrepo\z/ or next;
-               my $g = $1;
-               my $git_dir = $pi_config->{$k};
-               my $addr = $pi_config->{"publicinbox.$g.address"};
-               my $ngname = $pi_config->{"publicinbox.$g.newsgroup"};
-               if (defined $ngname) {
-                       next if ($ngname eq ''); # disabled
-                       $g = $ngname;
-               }
-               my $ng = PublicInbox::NewsGroup->new($g, $git_dir, $addr);
-               my $old_ng = $self->{groups}->{$g};
-
-               # Reuse the old one if possible since it can hold
-               # references to valid mm and gcf objects
-               if ($old_ng) {
-                       $old_ng->update($ng);
-                       $ng = $old_ng;
-               }
-
-               # Only valid if msgmap and search works
-               if ($ng->usable) {
-                       $new->{$g} = $ng;
-                       push @list, $ng;
-               }
-       }
-       @list = sort { $a->{name} cmp $b->{name} } @list;
-       $self->{grouplist} = \@list;
-       # this will destroy old groups that got deleted
-       %{$self->{groups}} = %$new;
-}
-
-1;
+use v5.12;
+use PublicInbox::Daemon;
+PublicInbox::Daemon::run('nntp://0.0.0.0:119');