Compare commits

..

2 commits

Author SHA1 Message Date
af5ed9465f Fix headers with continuation immediately at start.
Signed-off-by: Thomas Hochstein <thh@thh.name>
2026-02-01 00:42:36 +01:00
dd034b71b4 Fix indenting.
Signed-off-by: Thomas Hochstein <thh@thh.name>
2026-02-01 00:40:30 +01:00
3 changed files with 33 additions and 19 deletions

View file

@ -5,6 +5,7 @@ huhu 0.11.0 (unreleased)
* Add wrapper script for read-mail.pl
* Drop more headers.
* Only connect to newsserver if there are approved posts.
* Fix headers with continuation immediately at start.
huhu 0.10 (unknown)
* huhu reports version 0.09 (from MOD/Displaylib.pm), but has code

View file

@ -101,7 +101,7 @@ sub enter_table($$$$)
{
if ($values[$i])
{
$msg .= "\n*** " . $columns[$i] . "***\n" . $values[$i];
$msg .= "\n*** " . $columns[$i] . "***\n" . $values[$i];
}
}
$self->increase_errorlevel($article_id, $msg);

View file

@ -129,7 +129,7 @@ while (my $ref = $dataref->fetchrow_arrayref)
my ($id,$posting) = @{$ref};
next unless($dbi->set_status($id, 'sending', [ 'moderated' ]));
# Posting einlesen.
# Posting einlesen.
my $article = News::Article->new(\$posting);
next if (!defined($article->header('Newsgroups')));
@ -189,23 +189,36 @@ while (my $ref = $dataref->fetchrow_arrayref)
'X-Zedat-Hint', # FU Berlin (moderators.dana.de)
);
#albasani-workaround fuer @invalid
# albasani-workaround fuer @invalid
if ($article->header('From') =~ /\@invalid[> ]/i) {
my $newfrom = $article->header('From');
$newfrom =~ s/\@invalid/\@invalid.invalid/i;
$article->set_headers('From',$newfrom);
}
# albasani-workaround fuer leere User-Agent headerzeilen
# albasani-workaround fuer leere User-Agent headerzeilen
if (defined $article->header('User-Agent') and $article->header('User-Agent') !~ /\w/) {
$article->drop_headers(('User-Agent'));
}
#Neue Message-ID und Approved-Header erzeugen
my $mid = defined($article->header('Message-ID')) ? $article->header('Message-ID') :
'<' . substr (rand() . '-' . time(), 2) . '@' . $config{'mid_fqdn'} . '>';
$article->set_headers('Message-ID', $mid, 'Approved', $approve_string);
# Fix headers with continuation immediately at start, i.e.
# X-MyHeader:
# Thisisaveryveryveryveryveryveryveryveryverylongheadervalue.
# will become
# X-MyHeader: Thisisaveryveryveryveryveryveryveryveryverylongheadervalue.
foreach my $header ( $article->header_names() ) {
if ($article->header($header) =~ /^\n/) {
my $fixedheader = $article->header($header);
$fixedheader =~ s/^\n\s+//;
$article->set_headers($header, $fixedheader);
}
}
#signieren
#Neue Message-ID und Approved-Header erzeugen
my $mid = defined($article->header('Message-ID')) ? $article->header('Message-ID') :
'<' . substr (rand() . '-' . time(), 2) . '@' . $config{'mid_fqdn'} . '>';
$article->set_headers('Message-ID', $mid, 'Approved', $approve_string);
#signieren
if ($sign_pgpmoose)
{
my @msg = $article->sign_pgpmoose($moderated_group, $pgp_passphrase, $pgp_keyid);
@ -217,16 +230,16 @@ while (my $ref = $dataref->fetchrow_arrayref)
my @articleheaders = $article->header('References');
eval {
# Workaround fuer Buggy Software, die kaputte References erzeugt
my @references = $article->header('References');
if (@references > 1) {
$article->set_headers('References', join "\n ", @references);
}
#posten
$article->post($nntp) or die $!;
#posted-Bit setzen, aktuelle MID in DB eintragen (wird in Zukunft vielleicht mal von einer Zusatzfunktion benoetigt)
$dbi->set_posted_status($id,$mid);
};
# Workaround fuer Buggy Software, die kaputte References erzeugt
my @references = $article->header('References');
if (@references > 1) {
$article->set_headers('References', join "\n ", @references);
}
#posten
$article->post($nntp) or die $!;
#posted-Bit setzen, aktuelle MID in DB eintragen (wird in Zukunft vielleicht mal von einer Zusatzfunktion benoetigt)
$dbi->set_posted_status($id,$mid);
};
# Fehler in Datenbank festhalten, sofern einer aufgetreten ist
if ($@) {
$dbi->increase_errorlevel($id, $@);