Deutsch   English   Français   Italiano  
<t81r2q$chp$1@shakotay.alphanet.ch>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!news.mixmin.net!aioe.org!news.alphanet.ch!alphanet.ch!.POSTED!not-for-mail
From: Marc SCHAEFER <schaefer@alphanet.ch>
Newsgroups: fr.comp.usenet.serveurs
Subject: Re: =?ISO-8859-1?Q?v=E9rification?= de l'action des controls,
 cancels et nocems
Date: Sat, 11 Jun 2022 10:34:02 -0000 (UTC)
Organization: Posted through ALPHANET
Message-ID: <t81r2q$chp$1@shakotay.alphanet.ch>
References: <t81b6i$eu1$1@ns507557.dodin.fr.nf> <2ad8ah109acge7isgtt9v8l200bdoc30n8@consensus-omnium> <t81o8a$kh9$1@ns507557.dodin.fr.nf> <l5rE_kwHfVTfc_upORQ92dFz3-o@jntp> <t81p5s$km0$4@ns507557.dodin.fr.nf> <FKF-2At37QRFOBbaVD8V55YrFj4@jntp> <t81qcq$lah$1@ns507557.dodin.fr.nf>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
Injection-Date: Sat, 11 Jun 2022 10:34:02 -0000 (UTC)
Injection-Info: shakotay.alphanet.ch; posting-account="schaefer";
	logging-data="12857"; mail-complaints-to="usenet@alphanet.ch"; posting-host="634ce6c9682d817d72f6177875e2bb4f.nnrp.alphanet.ch"
User-Agent: tin/2.4.3-20181224 ("Glen Mhor") (UNIX) (Linux/4.19.0-20-amd64 (x86_64))
Cancel-Lock: sha256:K6+/6Jr3t8OKXs676QhxJe4K9l81XmFuhfD0Hv+CTEs= sha256:rBKGw/PMfk0Bnv2aiohkKb78U5FMo3SLno/W5I+/JJ0=
Bytes: 3237
Lines: 54

jdd <jdd@dodin.org> wrote:
>> pasdenom.info!dodin.fr.nf!.POSTED.82-64-122-108.subs.proxad.net!not-for-mai
> 
> d'accord. Une idée pour déterminer par script (ou cron) quelle est 
> l'origine? (le premier serveur). Avec mes yeux j'y arrive à peu près, 

1) si c'est filter_nnrpd.pl, alors c'est un post d'un utilisateur local

2) si c'est filter_innd.pl / cleanfeed, alors c'est local ou distant

Voici un code pour /etc/news/cleanfeed/cleanfeed.local, qui est appelé
avec les entêtes de l'article qui porte le cancel et l'article qui est
la cible du cancel (target, t)

sub is_local_cancel($$) {
   my ($r_h, $t_h) = @_;

   my $local_r_post = ($r_h->{Path} =~ /^\.POSTED[^!]*!not-for-mail$/);
   my $local_t_post = ($t_h->{Path} =~ /^news\.alphanet\.ch!alphanet\.ch!\.POSTED[^!]*!not-for-mail$/);


Je contrôle que l'article qui porte le cancel qui n'a pas encore été
injecté est local, et je contrôle de plus que la cible, déjà injectée,
est locale.

Cela ne marchera pas si les utilisateurs mettent des choses en plus dans
le Path: avant l'injection, ou si ça provient d'un autre serveur.

Et ensuite je vérifie les droits d'accès de cancel (même user dans le
Injection-Info).

Bien sûr, c'est traité *sans* le cancel-lock, voir le code appelant:

   my $lock = $headers{'Cancel-Lock'};
   if (defined($lock)) {
      my $key = $r_hdr->{'Cancel-Key'} || return "$descr of $target without Cancel-Key";
      return verify_cancel_key($key, $lock, $target);
   }
   else {
      my $r = is_local_cancel($r_hdr, \%headers);
      if (!defined($r)) {
         # no cancel-lock: go ahead and cancel anyway!
         INN::cancel($target);
      }
      else {
         return $r;
      }
   }

   return undef;
}

Sur ALPHANET, vu que désormais je génère aussi des Cancel-Lock serveurs,
ce cas ne s'applique plus: j'ai laissé le code pour le mois de
transition.