From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.2 required=3.0 tests=ALL_TRUSTED,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 4D36B1F54E for ; Wed, 20 Jul 2022 01:22:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=80x24.org; s=selector1; t=1658280124; bh=3fL5kufxI+zXcHQrvaqU4Ud4rZ06yua+aQ5dkcvIVZU=; h=From:To:Subject:Date:From; b=fzoC8oZhRNLMCBCBkcOYInic26VjRV5mGTowZ7ZqJ6X6Vgtcs+Y7ZwIkLku6VdRe1 jsLlP31C/05OQGYEux/pfcClp1Scqm943zQl8e6i1IzPst+MWeWmavWgw33GKK4pqB mKtBO1I1QqGZxt3nfcZS+1TpJyb6vd0JXFZET8RA= From: Eric Wong To: meta@public-inbox.org Subject: [PATCH] netd: load modules for well-known ports Date: Wed, 20 Jul 2022 01:22:04 +0000 Message-Id: <20220720012204.18260-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: When inheriting well-known ports from systemd (or similar), we can auto-load the proper *D.pm file based on the port number without requiring command-line args. load_mod also gets fixed to use its argument, instead of implicit $1 since that won't work for our well-known. --- This made setting up public-inbox-netd much easier on public-inbox.org (serving IMAP/NNTP/POP3 and TLS variants, along with .onion sockets). Non-standard ports (.onion sockets) still require CLI args. lib/PublicInbox/Daemon.pm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/PublicInbox/Daemon.pm b/lib/PublicInbox/Daemon.pm index 8b4c3c70..fbce9154 100644 --- a/lib/PublicInbox/Daemon.pm +++ b/lib/PublicInbox/Daemon.pm @@ -77,7 +77,7 @@ sub accept_tls_opt ($) { sub load_mod ($) { my ($scheme) = @_; - my $modc = "PublicInbox::\U$1"; + my $modc = "PublicInbox::\U$scheme"; my $mod = $modc.'D'; eval "require $mod"; # IMAPD|HTTPD|NNTPD|POP3D die $@ if $@; @@ -204,8 +204,10 @@ EOF for my $sockname (@inherited_names) { $sockname =~ /:([0-9]+)\z/ or next; if (my $scheme = $KNOWN_TLS{$1}) { + $xnetd->{$sockname} = load_mod(substr($scheme, 0, -1)); $tls_opt{"$scheme://$sockname"} ||= accept_tls_opt(''); } elsif (($scheme = $KNOWN_STARTTLS{$1})) { + $xnetd->{$sockname} = load_mod($scheme); next if $tls_opt{"$scheme://$sockname"}; $tls_opt{''} ||= accept_tls_opt(''); }