Annotation of embedaddon/curl/tests/httpserver.pl, revision 1.1.1.1
1.1 misho 1: #!/usr/bin/env perl
2: #***************************************************************************
3: # _ _ ____ _
4: # Project ___| | | | _ \| |
5: # / __| | | | |_) | |
6: # | (__| |_| | _ <| |___
7: # \___|\___/|_| \_\_____|
8: #
9: # Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
10: #
11: # This software is licensed as described in the file COPYING, which
12: # you should have received as part of this distribution. The terms
13: # are also available at https://curl.haxx.se/docs/copyright.html.
14: #
15: # You may opt to use, copy, modify, merge, publish, distribute and/or sell
16: # copies of the Software, and permit persons to whom the Software is
17: # furnished to do so, under the terms of the COPYING file.
18: #
19: # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
20: # KIND, either express or implied.
21: #
22: #***************************************************************************
23:
24: BEGIN {
25: push(@INC, $ENV{'srcdir'}) if(defined $ENV{'srcdir'});
26: push(@INC, ".");
27: }
28:
29: use strict;
30: use warnings;
31:
32: use serverhelp qw(
33: server_pidfilename
34: server_logfilename
35: );
36:
37: use sshhelp qw(
38: exe_ext
39: );
40:
41: my $verbose = 0; # set to 1 for debugging
42: my $port = 8990; # just a default
43: my $unix_socket; # location to place a listening Unix socket
44: my $ipvnum = 4; # default IP version of http server
45: my $idnum = 1; # default http server instance number
46: my $proto = 'http'; # protocol the http server speaks
47: my $pidfile; # pid file
48: my $portfile; # port number file
49: my $logfile; # log file
50: my $connect; # IP to connect to on CONNECT
51: my $srcdir;
52: my $gopher = 0;
53:
54: my $flags = "";
55: my $path = '.';
56: my $logdir = $path .'/log';
57:
58: while(@ARGV) {
59: if($ARGV[0] eq '--pidfile') {
60: if($ARGV[1]) {
61: $pidfile = $ARGV[1];
62: shift @ARGV;
63: }
64: }
65: elsif($ARGV[0] eq '--portfile') {
66: if($ARGV[1]) {
67: $portfile = $ARGV[1];
68: shift @ARGV;
69: }
70: }
71: elsif($ARGV[0] eq '--logfile') {
72: if($ARGV[1]) {
73: $logfile = $ARGV[1];
74: shift @ARGV;
75: }
76: }
77: elsif($ARGV[0] eq '--srcdir') {
78: if($ARGV[1]) {
79: $srcdir = $ARGV[1];
80: shift @ARGV;
81: }
82: }
83: elsif($ARGV[0] eq '--ipv4') {
84: $ipvnum = 4;
85: }
86: elsif($ARGV[0] eq '--ipv6') {
87: $ipvnum = 6;
88: }
89: elsif($ARGV[0] eq '--unix-socket') {
90: $ipvnum = 'unix';
91: if($ARGV[1]) {
92: $unix_socket = $ARGV[1];
93: shift @ARGV;
94: }
95: }
96: elsif($ARGV[0] eq '--gopher') {
97: $gopher = 1;
98: }
99: elsif($ARGV[0] eq '--port') {
100: if($ARGV[1] =~ /^(\d+)$/) {
101: $port = $1;
102: shift @ARGV;
103: }
104: }
105: elsif($ARGV[0] eq '--connect') {
106: if($ARGV[1]) {
107: $connect = $ARGV[1];
108: shift @ARGV;
109: }
110: }
111: elsif($ARGV[0] eq '--id') {
112: if($ARGV[1] =~ /^(\d+)$/) {
113: $idnum = $1 if($1 > 0);
114: shift @ARGV;
115: }
116: }
117: elsif($ARGV[0] eq '--verbose') {
118: $verbose = 1;
119: }
120: else {
121: print STDERR "\nWarning: httpserver.pl unknown parameter: $ARGV[0]\n";
122: }
123: shift @ARGV;
124: }
125:
126: if(!$srcdir) {
127: $srcdir = $ENV{'srcdir'} || '.';
128: }
129: if(!$pidfile) {
130: $pidfile = "$path/". server_pidfilename($proto, $ipvnum, $idnum);
131: }
132: if(!$portfile) {
133: $portfile = "$path/". server_portfilename($proto, $ipvnum, $idnum);
134: }
135: if(!$logfile) {
136: $logfile = server_logfilename($logdir, $proto, $ipvnum, $idnum);
137: }
138:
139: $flags .= "--pidfile \"$pidfile\" ".
140: "--logfile \"$logfile\" ".
141: "--portfile \"$portfile\" ";
142: $flags .= "--gopher " if($gopher);
143: $flags .= "--connect $connect " if($connect);
144: if($ipvnum eq 'unix') {
145: $flags .= "--unix-socket '$unix_socket' ";
146: } else {
147: $flags .= "--ipv$ipvnum --port $port ";
148: }
149: $flags .= "--srcdir \"$srcdir\"";
150:
151: if($verbose) {
152: print STDERR "RUN: server/sws".exe_ext('SRV')." $flags\n";
153: }
154:
155: exec("server/sws".exe_ext('SRV')." $flags");
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>