summaryrefslogtreecommitdiff
path: root/tests/scripts
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2009-09-10 01:15:01 +0200
committerMichael Adam <obnox@samba.org>2009-09-10 01:15:01 +0200
commit158f8a7e151e60963a53f392baa2030dda515df7 (patch)
tree8640e99827199ec0932bafd88db3d33d0fd0c619 /tests/scripts
parenta39d7cd8d87b30ff86ba9e3d3273f6da031dc65c (diff)
downloadtinyproxy-158f8a7e151e60963a53f392baa2030dda515df7.tar.gz
tinyproxy-158f8a7e151e60963a53f392baa2030dda515df7.zip
tests: add a simple web client written in perl.
This should be one of the test tools for writing our testsuite. This can be used to make direct connects to web servers like so: webclient.pl server_ip:port /path/file.html and to make requestis via a proxy like this: webclient.pl proxy_ip:port http://webserver:port/path/file.html Michael
Diffstat (limited to 'tests/scripts')
-rwxr-xr-xtests/scripts/webclient.pl46
1 files changed, 46 insertions, 0 deletions
diff --git a/tests/scripts/webclient.pl b/tests/scripts/webclient.pl
new file mode 100755
index 0000000..081d80c
--- /dev/null
+++ b/tests/scripts/webclient.pl
@@ -0,0 +1,46 @@
+#!/usr/bin/perl -w
+
+# Simple command line web client.
+# Initially loosely based on examples from the perlipc manpage.
+#
+# Copyright (C) 2009 Michael Adam
+#
+# License: GPL
+
+use strict;
+
+use IO::Socket;
+
+my $EOL = "\015\012";
+my $BLANK = $EOL x 2;
+
+unless (@ARGV > 1) {
+ die "usage: $0 host[:port] document ...";
+}
+
+my $host = shift(@ARGV);
+my $port = "http(80)";
+
+if ($host =~ /^([^:]+):(.*)/) {
+ $port = $2;
+ $host = $1;
+}
+
+foreach my $document (@ARGV) {
+ my $remote = IO::Socket::INET->new(
+ Proto => "tcp",
+ PeerAddr => $host,
+ PeerPort => $port,
+ );
+ unless ($remote) {
+ die "cannot connect to http daemon on $host (port $port)";
+ }
+
+ $remote->autoflush(1);
+
+ print $remote "GET $document HTTP/1.0" . $BLANK;
+ while (<$remote>) {
+ print;
+ }
+ close $remote;
+}