Sujet : Accès aux headers complets depuis cleanfeed INN2 (was: Re: refuser les posts d'un utilisateur (à sa demande))
De : schaefer (at) *nospam* alphanet.ch (Marc SCHAEFER)
Groupes : fr.comp.usenet.serveursDate : 24. Aug 2022, 16:14:00
Autres entêtes
Organisation : Posted through news.alphanet.ch
Message-ID : <te5f7o$4bm$1@shakotay.alphanet.ch>
References : 1 2 3 4 5 6 7 8 9 10 11 12 13
User-Agent : tin/2.4.3-20181224 ("Glen Mhor") (UNIX) (Linux/4.19.0-21-amd64 (x86_64))
jdd <
jdd@dodin.org> wrote:
INN ferait complètement l'impasse sur les headers définis par
l'utilisateur? (juste bons pour filtrer avec le client)?
Il semble que tous les entêtes ne sont pas dans $hdr, un work-around serait:
my $headers = INN::head($hdr{'Message-ID'};) || return "missing article with Message-ID " . $hdr{'Message-ID'};
my %headers;
my $previous;
foreach my $line (split(/\s*\n/, $headers)) {
if ($line =~ m/^([[:alnum:]-]+):\s+(.*)/) {
# assuming low/upcase normalisation by INN
$headers{$1} = $2;
$previous = $1;
}
elsif ($line =~ m/^\s+(.*)/) {
if (defined($previous)) {
$headers{$previous} .= " " . $1;
}
else {
INN::syslog('notice', 'garbled line: ' . $line);
}
}
}
(c'est mon code de vérification de cancel-lock dans cleanfeed)
Ensuite, tu peux utiliser $headers{'X-No-Dodin'}.
Mais c'est assez inefficace! Peut-être que Julien EliÉ a une autre
suggestion?