2009-12-10 4 views
2

J'ai de la difficulté à faire fonctionner les filtres avec HTTP::Proxy et je n'arrive pas à comprendre ce que je devrais ajouter à la fonction logmask() pour obtenir cette information.Comment obtenir HTTP :: Proxy pour enregistrer les informations de filtre?

J'ai un fichier journal, cette partie est correcte, la journalisation est en cours, mais aucune information sur les filtres, bien qu'ils soient implémentés et (parfois) fonctionnent.

J'ai essayé

  • logmask(['FILTERS'])
  • logmask('FILTERS')
  • logmask(FILTERS)

et aucun de ceux qui travaillent! Qu'est-ce que je rate?

Aussi, qu'est-ce que c'est que les puissances de deux pour le masque? Et les constantes étant exportées par :log?

Je suis plutôt confus, comme vous pouvez le dire.

EDIT:

en passant par les conseils ci-dessous, j'ai le script suivant:

#!/sw/bin/perl 
use strict; 
use warnings; 
use HTTP::Proxy qw(:log); 
use HTTP::Proxy::BodyFilter::tags; 
use HTTP::Proxy::BodyFilter::simple; 
open(LOG, '>>', "/Users/ambrose/proxy-log.txt") or die "$!"; 

my $proxy = HTTP::Proxy->new; 
$proxy->port(3128); 
$proxy->logfh(*LOG); 
$proxy->logmask(ALL); 

$proxy->push_filter(
    mime  => 'text/html', 
    response => HTTP::Proxy::BodyFilter::tags->new(), 
    response => HTTP::Proxy::BodyFilter::simple->new(
     sub { ${ $_[1] } =~ s!(</?)i>!$1b>!ig } 
    ) 
); 

$proxy->start; 

qui ne se connecte pas quoi que ce soit sur les filtres, bien que le filtre est en marche, je peux voir que italiques ont été changés en gras, comme dans l'exemple.

Si je change la ligne:

$proxy->logmask(ALL); 

à

$proxy->logmask(FILTERS); 

rien ne s'ajouté au fichier journal du tout.

Répondre

1

Notez que les constantes de journalisation ne sont pas exportées par défaut, mais par la balise: log. Ils peuvent également être exportés un par un.

Ils sont des constantes symboliques, donc vous voulez faire $proxy->logmask(FILTERS), mais vous devez d'abord use HTTP::Proxy qw(:log) ou use HTTP::Proxy qw(FILTERS).

Ou si vous n'aimez pas la pollution des espaces de noms, vous devriez pouvoir faire $proxy->logmask(HTTP::Proxy::FILTERS())

Questions connexes