2016-06-16 5 views
0

Basierend erstellen auf Reverse DNS lookup in perl Ich habe versucht, eine Variable in NGINX zu schaffen, so kann ich nutzen, um Suchmaschinen zu identifizieren, aber ich habe eine Menge Fehler wie folgt aus:NGINX + PERL> versucht, eine Reverse-DNS-Variable

2016/06/16 21:10:33 [Fehler] 25853 # 0: * 519 call_sv ("sub {return skalar gethostbyaddr (inet_aton ($ remote_addr), AF_INET);}") fehlgeschlagen: "undefinierte Subroutine & main: : inet_aton wurde bei (Eval 3) Zeile 1 aufgerufen.

in meinen http Block hinzugefügt:

perl_require Socket.pm; 
perl_set $test_rdns "sub { return scalar gethostbyaddr(inet_aton($remote_addr), AF_INET); }"; 

Bitte helfen Sie, ich nicht den Schlüssel zur Lösung dieser Angelegenheit finden.

Antwort

0

Ich weiß nicht genau, was perl_require tut, aber ich denke, es hat etwas mit Perl require Funktion zu tun, und etwas vorsichtig sein, wenn Sie require ist, dass es nicht das Paket des import Methode nicht aufrufen und tut Laden Sie die standardmäßig exportierten Funktionen und Symbole nicht in das aufrufende Paket.

Das Ergebnis ist, dass Sie qualifizierte Symbolnamen in Perl rufen

perl_set $test_rdns "sub { return scalar gethostbyaddr(Socket::inet_aton($remote_addr), \ 
                 Socket::AF_INET); }"; 

oder Sie werden Socket verwenden müssten ‚s import Methode

perl_set $test_rdns "sub { use Socket; return scalar \ 
       gethostbyaddr(inet_aton($remote_addr), AF_INET); }"; 

(Dieser zweite Vorschlag nicht haben zu nennen ist getestet und funktioniert möglicherweise nicht, je nachdem, was nginx mit Perl-Bibliotheksverzeichnissen und Suchpfad tut)