Initial checkin.

Signed-off-by: Thomas Hochstein <thh@thh.name>
This commit is contained in:
Thomas Hochstein 2022-01-29 10:22:11 +01:00
commit 30132626b8
68 changed files with 5497 additions and 0 deletions

141
bin/mk-summary.pl Normal file
View file

@ -0,0 +1,141 @@
#!/usr/bin/perl -sw
#######################################################################
#
# $Id: mk-summary.pl 249 2010-02-17 22:42:19Z alba $
#
# Copyright 2010 Alexander Bartolich
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
######################################################################
use strict;
use Carp qw(confess);
use MOD::Utils();
######################################################################
sub get_param($)
######################################################################
{
my $param_name = shift || confess;
my $r_value;
{
# man perlvar
# $^W ... The current value of the warning switch, initially
# true if -w was used.
local $^W = 0;
$r_value = eval '*{$::{"' . $param_name . '"}}{"SCALAR"}';
}
if (defined($r_value))
{
my $value = $$r_value;
return $value if (defined($value));
}
my $var_name = 'HUHU_' . uc($param_name);
my $value = $ENV{$var_name};
return $value if (defined($value));
die "Parameter -$param_name not specified and environment variable $var_name not defined.";
}
######################################################################
# main
######################################################################
die 'Argument -config=file missing' unless($::config);
# supress warnings
$::email_domain = undef unless($::email_domain);
$::www_base_dir = undef unless($::www_base_dir);
$::www_base_url = undef unless($::www_base_url);
my $email_domain = get_param('email_domain');
my $www_base_dir = get_param('www_base_dir');
my $www_base_url = get_param('www_base_url');
my %config = MOD::Utils::read_private_config($::config);
my $MODERATED_GROUP = $config{'moderated_group'} || die;
my $user_name = $MODERATED_GROUP;
$user_name =~ s/\./-/g;
my $SUBMISSION_EMAIL = $user_name . '@' . $email_domain;
my $APPROVE_STRING = $config{'approve_string'} || '';
my $MID_FQDN = $config{'mid_fqdn'} || '';
my $MAILFROM = $config{'mailfrom'} || '';
my $NNTP_USER = $config{'nntp_user'} || '';
my $NNTP_PASS = $config{'nntp_pass'} || '';
my $NNTP_SERVER = $config{'nntp_server'} || '';
print <<EOF;
== Email ==
The submission address is <$SUBMISSION_EMAIL>.
Messages are directly processed by procmail, so you cannot access it
with POP or IMAP. (Messages are saved in a backup directory as plain
files, though.)
You can test Huhu by sending posts directly to this address.
When tests are finished you should send a message stating that
<$SUBMISSION_EMAIL> is the new submission address of
$MODERATED_GROUP to <moderators-request\@isc.org>.
== Web Interface ==
The web interface consists of two parts. The public part is accessible
to everybody. It just displays the approved posts.
https://albasani.net/huhu/aus/legal/moderated/public.pl
And then there is the private part. This is protected with a login.
using the HTTP digest system.
https://albasani.net/huhu/aus/legal/moderated/modtable.pl
HTTP digest is safe to use on unencrypted connections, but for additional
paranoia above URLs are also available through https (with a self signed
certificate).
There is currently no way to handle user management through the web
interface. I created one account for you:
Username:
Password:
== Test Mode ==
At the moment this instance of Huhu is in test mode. Approved messages
are sent to albasani.test.moderated. This is an internal group, i.e.
it is not sent to peers. You need an albasani-account to read it.
When you are satisfied with your tests please give me a note.
I will then switch to $MODERATED_GROUP.
== Configurable Options ==
The following settings are set to default values.
Please give me a note if you want to have them changed.
# Value of header "Approved:" in posts
approve_string=$APPROVE_STRING
# Right hand side of message IDs in in posts.
# Empty value means that the news server generates the ID.
mid_fqdn=$MID_FQDN
# Value of header "From:" in rejection notices.
mailfrom=$MAILFROM
== Usenet Account ==
Username: $NNTP_USER
Password: $NNTP_PASS
Server : $NNTP_SERVER
It has permissions to send approved posts to albasani.test.moderated
and $MODERATED_GROUP. Use it to bypass the moderation (e.g. send FAQs
or cancel messages) or to read the internal albasani.* groups.
EOF