in reply to Re: Unfinished custom proxy
in thread Unfinished custom proxy

Well I just don't know how to do it correctly. While I defined port, agent,...etc, I used a hash with predefined key names like port, agent, logfh, but I could find any method for @ARGV, like params, arguments or whatever, may be it sound stupid :) for pro guys, but this is my reason I thought that with my skills I can either pass it by default with new(), or I should use something that I don't know yet. BTW my only guess was:
open ( LOGFILE, ">>", "/var/log/repeater.log"); my $proxy = HTTP::Proxy->new( port => '38374', agent => $ua, logfh => <LOGFILE>, @ARGV );
Can I do such a thing ?

Replies are listed 'Best First'.
Re^3: Unfinished custom proxy
by Eliya (Vicar) on Jan 08, 2012 at 12:00 UTC

    You can do that as long as @ARGV (which I suppose you're using here to refer to arguments in the wider sense) contains key-value pairs that are acceptable with a HTTP::Proxy constructor call — which is why I asked what exactly those arguments are supposed to be or do.

      BTW, Eliya thank you very much for your help with previous problem, thanks to you it works as a charm.
Re^3: Unfinished custom proxy
by kazak (Beadle) on Jan 08, 2012 at 12:24 UTC
    Now it's exiting with:
    telnet 127.0.0.1 38374 Trying 127.0.0.1... Can't use an undefined value as a symbol reference at HTTP/Proxy.pm li +ne 765. Can't use an undefined value as a symbol reference at HTTP/Proxy.pm li +ne 765. Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. Connection closed by foreign host. [1]+ Exit 29 ./proxy1.pl

      It's a little difficult to help without knowing what exactly you've done that results in the error. Or more generally, what exactly you want to achieve. From your initial description I gather you want to make a redirection in case a specific substring is found in the URL. But I don't yet understand how the "need to pass @ARGV" issue is related to that...

      As for the "Can't use an undefined value as a symbol reference", the error happens when the module is trying to use logfh the first time (line 765) — which is because you've passed <LOGFILE> (presumably), instead of *LOGFILE, i.e. it should be

      logfh => *LOGFILE,

      <LOGFILE> reads lines from the file handle (which doesn't make sense here), while *LOGFILE refers to the file handle itself.   In case you find the glob syntax (*...) curious, you can also use a lexical file handle

      my $fname = "/var/log/repeater.log"; open my $logfh, ">>", $fname or die "couldn't open '$fname': $!"; ... logfh => $logfh,
        Hi again. I've managed to start a proxy with your help. And now it even serves some requests ( it's some log entries):
        [Sun Jan 8 10:38:53 2012] (1554) SOCKET: New connection from 127.0.0. +1:49293 [Sun Jan 8 10:38:53 2012] (897) PROCESS: Forked child process 1554 [Sun Jan 8 10:39:01 2012] (1554) REQUEST: GET http://www.google.com/s +orry/?continue=http://www.google.com/search%3Fq%3Dcar+rent [Sun Jan 8 10:39:01 2012] (1554) REQUEST: Via: 0.9 domU-00-05-34-21-B +5-AC.compute-1.internal (HTTP::Proxy/0.25) [Sun Jan 8 10:39:01 2012] (1554) REQUEST: X-Forwarded-For: 127.0.0.1 [Sun Jan 8 10:39:01 2012] (1554) RESPONSE: 503 Service Unavailable [Sun Jan 8 10:39:01 2012] (1554) RESPONSE: Cache-Control: no-cache, m +ust-revalidate [Sun Jan 8 10:39:01 2012] (1554) RESPONSE: Date: Sun, 08 Jan 2012 15: +39:01 GMT [Sun Jan 8 10:39:01 2012] (1554) RESPONSE: Via: 1.1 domU-00-05-34-21- +B5-AC.compute-1.internal (HTTP::Proxy/0.25) [Sun Jan 8 10:39:01 2012] (1554) RESPONSE: Server: HTTP server (unkno +wn) [Sun Jan 8 10:39:01 2012] (1554) RESPONSE: Content-Length: 2639 [Sun Jan 8 10:39:01 2012] (1554) RESPONSE: Content-Type: text/html; c +harset=UTF-8 [Sun Jan 8 10:39:01 2012] (1554) RESPONSE: Expires: Mon, 01 Jan 1990 +00:00:00 GMT [Sun Jan 8 10:39:01 2012] (1554) RESPONSE: Title: http://www.google.c +o.uk/search?q=car rent [Sun Jan 8 10:39:01 2012] (1554) RESPONSE: X-Cache: MISS from domU-00 +-05-34-21-B5-AC.compute-1.internal [Sun Jan 8 10:39:01 2012] (1554) RESPONSE: X-Cache-Lookup: MISS from +domU-00-05-34-21-B5-AC.compute-1.internal:3128 [Sun Jan 8 10:39:01 2012] (1554) RESPONSE: X-Frame-Options: SAMEORIGI +N [Sun Jan 8 10:39:01 2012] (1554) RESPONSE: X-XSS-Protection: 1; mode= +block [Sun Jan 8 10:39:01 2012] (1554) SOCKET: Connection closed by the pro +xy [Sun Jan 8 10:39:01 2012] (1554) PROCESS: Served 1 requests [Sun Jan 8 10:39:02 2012] (897) PROCESS: Reaped child process 1554 [Sun Jan 8 10:39:02 2012] (897) PROCESS: 0 remaining kids:
        But the link is not being transformed.