Newsgroup: it.comp.os.linux.sys
Titolo: INN e Subject

un unica espressione non mi era possibile (o non sono capace io).
L'hash $hdr te lo riepie, immagino, INN? Se capisco bene quello che succede,
questo dovrebbe essere sufficiente:
  sub filter_post {
       my $rval = "" ;
       $hdr{"Subject"} =~ s/^((R:|Re:) *)+/Re: /i;
       $rval;
  }
Non capisco la funzione di $rval, eccetera, ma ci penserai tu.
Non mi pare ci sia la necessita` di distinguere il numero di occorrenze,
visto che alla fine sostituisci tutto con "Re:" (il modificatore /i tiene
conto di maiuscolo/minuscolo), ma se non ho capito spiega meglio.
Ciao.

 visto che alla fine sostituisci tutto con "Re:" (il modificatore /i tiene
tiene? O non tiene conto?
A me senza (non lo sapevo) teneva conto delle maiuscole/minuscole..
Purtroppo mi ero illuso, questo funge si, ma corregge solo gli articoli
postati localmente, mentre per quelli iniettati da newsx, o da uno
spoolfile con rnews, bisogna agire su 
filter_innd.pl
. Questo in teoria
dovrebbe agire in modo uguale, in realta` no. Ecco cosa cita la
documentazione :
    The %hdr hash should not be modified inside filter_art().  Instead,
    if any of the contents need to be modified temporarily during filtering
    (smashing case, for example), copy them into a seperate variable first 
    and perform the modifications on the copy. 
Ma se non la modifico in filter_art dove la devo modificare??
E sta variabile temporanea n'do la faccio? Bho ;-)))
Bho..... son 2 ore che cerco fra FAQ di INN e google ma  non ho trovato
un bel niente :-(
Ciao, `matte.
-- 
err: signature too big

E sta variabile temporanea n'do la faccio? Bho ;-)))
Il senso del riferimento ad una variabile temporanea mi sembra, nel
contesto di quella frase, solo quello di consentire di pasticciare appunto
temporaneamente con il contenuto dell'header (per ogni evenienza in cui ti
venisse comodo farlo, tipo "smashing case"), avendo la certezza che
l'header vero resti tal quale. Ma siccome tu lo vuoi invece riscrivere,
accidenti, da qualche parte dovrai pur riscriverlo.
Pur restando dell'idea che la raccomandazione non riguardi il caso in
esame, non posso che consigliarti per prudenza di cercare ancora nella
documentazione e in rete, per vedere se trovi un esempio di come fare la
cosa secondo ogni possibile carisma di ortodossia.
Ciao.

 cosa secondo ogni possibile carisma di ortodossia.
L'unica mi pare passare da newsx, ma aspettiamo d'Itri ;-)


   passare per i filtri di INN.
Ecco, questa strada dovrebbe essere ragionevolmente semplice, e
presumibilmente priva di particolari tabu. Anche perche' se usi suck, il tuo
server probabilmente non e` propriamente "di transito": ti tiri giu` gli
articoli e li` restano, finche' non li cancelli.
Ciao.

 giu` gli articoli e li` restano, finche' non li cancelli.
E infatti, ho specificato dopo che si trattava di un home-pc ;-)


    <-- 2 scelta

 articoli dovrebbero passare *tutti* per l'NNRPD flter, che dici?
Caspita, come al solito mi era sfuggito, ho il vizio di fare : 
man newsx
/nnrpd
PATTERN NOT FOUND
q
:-))
Tnx cosi` dovrebbe proprio andare.
Il dubbio rimane sul file si spool, che una volta filtrato, INN non lo
prende piu`, evidentemente perche` variando dei caratteri, il numerello
dei bytes che ci mette pullnews va a farsi fottere, e di conseguenza
addio conteggio e INN non lo accetta....mierd :-|


parlasse.
No, c'e` una cosa. Adesso in dettaglio non ho chiaro in che punto
esattamente intervenga, ma c'e` un filtro che modifica alcuni header.
Temo comunque a questo punto di non essere in grado di aiutare piu` che
tanto: finche' si tratta di perl non ho problemi, ma il comportamento di INN
rientra, per quanto mi riguarda, fra i grandi misteri dell'universo (un
altro di questi e` perche' mai non sia possibile personalizzare in Windows
l'editor dei textbox).
Oh, una piccola cosa che volevo dirti, se non ti offendi: puo` anche darsi
che questo sia il gruppo piu` appropriato, non saprei dire; e` tuttavia
buona norma avvisare quando si modifica il Followup-To. Di fatto, e` quasi
un caso che sia stato in grado di seguire il thread.
Ciao.

 un caso che sia stato in grado di seguire il thread.
Ok. Non so se sia il + adatto, so che .iniziare molti guru non lo
frequentano e quindi era meglio qua, o su .software, non so ;-)


 addio conteggio e INN non lo accetta....mierd :-|
mica ho capito.


 esattamente intervenga, ma c'e` un filtro che modifica alcuni header.
si`, rimuove  l'X-Trace  e altri  header,  ma  vale  per gli  articoli
postati localmente che vanno spediti al server remoto con rpost.


 mica ho capito.
Se io filtro lo spoolfile col perl, questo cambia (infatti su 80MB viene
4kb di meno), e quindi la riga
#! rnews 1234
...che conteggia i bytes, va a farsi fottere, il numerello non e` piu`
giusto, quindi INN non lo accetta piu`. Ora o provo con altro (senza
pullnews) o metto a posto quello, ma e` parecchio dura mi sa, per me poi
che sono niubbo di perl....impossibile :)


 che sono niubbo di perl....impossibile :)
A qeusto punto direi che la tua prima  idea di sfruttare l'interfaccia
--filter di newsx e` la migliore solo che devi fare hacking in perl.
In pratica   da quanto  ho  capito il  tuo   programmino deve ricevere
l'articolo dallo standard  input, modificare gli header, riscrivere il
file temporaneo creato  da newsx (man newsx  per il nome del file) con
l'articolo in esame e restituire il codice 335 a newsx. Puoi esaminare
cleanfeed per vedere come fa.
Se decidi di procedere magari fammi sapere come va.


     { "Xref",                 TRUE,   HTstd },
ricompilato con  dpkg-buildpackage,   rinstallati con dpkg -i   sia il
nuovo inn2 deb package che  il nuovo  inews  package.  A questo  punto
newsx  --inews    funziona  perfettamente.   Inoltre    innd  riscrive
opprtunamente sia Xref sia  purtroppo NNTP-Posting-Host (dove mette un
bel localhost). 
Non e` proprio  il massimo non sapere il   posting host degli  utenti;
comunque funziona, se  decidi di provare  adesso puoi applicare il tuo
filter_nnrpd su tutti gli articoli (che bella vittoria di pirro).


 filter_nnrpd su tutti gli articoli (che bella vittoria di pirro).
Infatti, e poi che cosa mando all'abuse?;-)
Penso di tentare la strada del filtro con newsx a sto punto...


 adesso mi fai venire il terribile sospetto che fosse in uscita).
Si potrebbe usare questo:
POST FILTER
       if  the  -y post_filter option is specified on the command
       line in conjunction with any of the batch modes, then suck
       will call the post filter specified, after downloading the
       articles, and before batching/posting the  articles.   The
       filter  is  passed  the  directory  where the articles are
       stored (the -dm option).  The filter program is  responsi-
       ble  for  parsing the contents of the directory.  See sam-
       ple/
post_filter.pl
 for a sample post filter.  This  option
       was designed to allow you to add your own host name to the
       Path: header, but if you need to do anything else  to  the
       messages, you can.
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
Un apostolo vedendo Gesu` camminare sulle acque:
- Cazzo se e` buono 'sto fumo!!!

 Si potrebbe usare questo:
Per suck si, per newsx e` uguale, solo che l'articolo viene passato
tramite interfaccia highwind, ho cercato per 1 ora su google, ho trovato
molta roba ma come al solito niente di pratico per realizzarlo. Inutile
dire che sull'home di newsx non c'e` niente, e sulla man, ci sono 3
righe di numero dalle quali poco si puo` capire su come fare sto filtro.
Oppure come diceva Carlo patchare inews, ma non mi convince l'idea a dir
la verita` (btw non sono riuscito a farla neanche funzionare).
Ora, questo filtro per newsx.....trovassi un esempio....cleanfeed, si ma
e` troppo grande, non ci capisco una cippa...
Invece per estrarre lo spool da INN, e correggere automaticamente nella
creazione dello spoolfile i subject corrotti, quello mi e` riuscito
semplicemente patchando pullnews. Ora mi basta qualcosa che filtri
quello che immette nel server newsx tramite rnews, quel filtro appunto,
che non capisco come realizzare...


 che non capisco come realizzare...
Se potessi avere nel tuo filtro perl anche  la funzione di pullnews di
creare i batch sarebbe fatta.


 creare i batch sarebbe fatta.
Ehh, fosse cosi` facile, io da buon lamerozzo che sono, ho solo
modificato pullnews in modo che prima del conteggio correggesse gli
header (che forse e` anche la soluzione + pulita, ma non aiuta certo a
creare sto programmino -->spoolfile_corrotto->filtro->dir_incoming,
perche` questo dovrebbe ricalcolare i bytes, non piu` crearli soltanto).
Praticamente la grande modifica che ho fatto, e` questa ( ;-)) ): 
[07:20pm] matteo ~ $ diff -U 5 pullnews.old  pullnews.ok
--- pullnews.old        Sun Jul  1 19:43:08 2001
+++ pullnews.ok Sun Jul  1 21:40:08 2001
@@ -418,11 +418,13 @@
            for ($idx = 0 ; $idx < @{$article} ; $idx++) {
                if ($article->[$idx] =~ m!^message-id:\s*(\S+)!i) {
                    $msgid = $1 ;
                }
-
+
+               $article->[$idx] =~ s/^Subject: ((R:|Re:) *)+/Subject: Re: /i;
+
                # catch some of the more common problems with articles.
                if ($article->[$idx] =~ m!^\s+\n$!) {
                    $article->[$idx] = "\n";
                    warn "Fixing bad header line: $article->[$idx]\n";
	        }									
...ho saltato il problema, non risolto, purtroppo.
Ora come fare, per fare un filtro che corregga lo spoolfile e ricalcoli
i bytes? Il problema resta, e io sono troppo lamer per farlo, ma ci 
provero` comunque...


 provero` comunque...
ti aiuterei ma sono io che sono lamer.  Tocca proprio imparlo il perl,
dicono che il trucco sia leggere codice e scrivere codice, be, mi pare
una buona occasione per te di iniziare ad attuare la seconda parte del
piano.
Io personalmente cerchero` di capire  prima un po'meglio come funziona
cleanfeed (quindi sono ancora la punto 1).


 cleanfeed (quindi sono ancora la punto 1).
Su quello non ci ho capito proprio na fava, infatti se l'avessi capito
probabilmente starei usando --filter ;-)


 che lo dia al volo, senza metterlo in una dir temporanea...
Si`, in  questo caso dalla  funzione open_spool viene eseguito  un fork,
fatto partire  rnews ed  i dati sono  immessi nella  pipe. Senza --rnewt
viene creato un file temporaneo.
Cmq, si potrebbe usare questa patch per la versione 1.4:
--inizio--
--- getarticle.orig.c   Sun Apr 18 11:28:45 1999
+++ getarticle.c        Wed Jul  4 18:21:49 2001
@@ -107,6 +107,26 @@
     return is_tag(msgid,"<fake@");
 }
+/* Fix R: in Subject (by Kronos) */
+static int fix_subj(char *line) {
+       char *p, *next = line;
+       int add_byte = 0;
+
+       while((p = strstr(next, "R:")) != NULL) {
+               if (strlen(line) => MAXHEADERSIZE)
+                       /* Impossibile correggere, andrei in overflow */
+                       return 0;
+
+               p++;
+               memmove(p + 1, p, strlen(p) + 1);
+               *p = 'e';
+
+               add_byte++;
+       }
+
+       return add_byte;
+}
+
+
 /*
  *  read an article proper
  *  and feed it to the spool
@@ -155,6 +175,12 @@
                        reject = 1;
                    }
                }
+               break;
+           case 'S':
+               if (is_tag(line, "Subject:")) {
+                       gross_bytecount += fix_subj(line);
+               }
+
                break;
            case 'P':
                if (is_tag(line,"Path:")) {
--fine--
In questo modo  news sostituisce tutte le occorrenze di  R: con Re:  [1]
La funzione da sola e` testata,  ma non ho potuto fare prove all'interno
di newsx.
[1] Quindi anche un Subject come "Come posso patchare la R: di Outlook?"
verrebbe convertito in "Come posso  patchare la Re: di Outlook?". Non ho
idea di come fargli riconoscere casi del genere.
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
"L'abilita` politica e` l'abilita` di prevedere quello che
 accadra` domani, la prossima settimana, il prossimo mese e
 l'anno prossimo. E di essere cosi` abili, piu` tardi,
 da spiegare  perche' non e` accaduto."

 di newsx.
Ok la provero` appena posso, tnx!


 un filtro che restituisca l'articolo dallo STDOUT....
None, vuole un codice numerico che indica la sorte dell'articolo.
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
Choose  Windows. Choose a  PC. Choose  a  fucking big  hard  disk and  a
Pentium III  to run Internet  Explorer and mIrc. Choose HTML  email, and
viruses... Melissa,  Wm.Concept,  ExploreZip.   Choose sitting  in  that
chair watching mind-numbing soulless  web pages, stuffing virus infected
plugins into  your browser. Choose porn, rotting  away at the end  of it
all,  pishing away  your  last on  a miserable  dialup,  staring at  fat
whores, nothing but an embarassment to the people who build the net.
No matter what you choose, you're still a luser.

 Cmq, si potrebbe usare questa patch per la versione 1.4:
Mmmh, c'era qualche errore:
--- getarticle.orig.c   Sun Apr 18 11:28:45 1999
+++ getarticle.c        Thu Jul  5 15:17:28 2001
@@ -107,6 +107,26 @@
     return is_tag(msgid,"<fake@");
 }
+/* Fix R: in Subject (by Kronos) */
+static int fix_subj(char *line) {
+       char *p, *next = line;
+       int add_byte = 0;
+
+       while((p = strstr(next, "R:")) != NULL) {
+               if (strlen(line) >= MAXHEADERSIZE)
+                       /* Impossibile correggere, andrei in overflow */
+                       return add_byte;
+
+               p++;
+               memmove(p + 1, p, strlen(p) + 1);
+               *p = 'e';
+
+               add_byte++;
+       }
+
+       return add_byte;
+}
+
 /*
  *  read an article proper
  *  and feed it to the spool
@@ -155,6 +175,12 @@
                        reject = 1;
                    }
                }
+               break;
+           case 'S':
+               if (is_tag(line, "Subject:")) {
+                       gross_bytecount += fix_subj(line);
+               }
+
                break;
            case 'P':
                if (is_tag(line,"Path:")) {
ciao
Kronos
F/UP settato, qui` stiamo andando OT
-- 
Home: 
http://kronoz.cjb.net
Il dottore mi ha detto di smettere di fare cene intime per quattro.
A meno che non ci siamo altre tre persone.