Current Path : /bin/ |
Current File : //bin/net-server |
#!/usr/bin/env perl package net_server; use strict; use warnings; if (grep {$_ eq '--help' || $_ eq '-h'} @ARGV) { require Pod::Usage; Pod::Usage::pod2usage(-verbose => 1); exit; } my $pkg; if (@ARGV && $ARGV[0] && $ARGV[0] =~ /^(\w+)$/ && ($pkg = $1) && eval { require "Net/Server/$pkg.pm" } ) { $pkg = "Net::Server::$pkg"; } else { if ($pkg && grep {-e "$_/Net/Server/$pkg.pm"} @INC) { die "Error trying to become a Net::Server::$pkg:\n\n$@"; } $pkg = 'Net::Server::MultiType'; } require base; import base $pkg; __PACKAGE__->run; exit; sub default_port { my $self = shift; return 8080 if $> && $self->isa('Net::Server::HTTP'); return $self->SUPER::default_port; } __END__ =head1 NAME net-server - Base Net::Server starting module =head1 SYNOPSIS net-server [base type] [net server arguments] net-server PreFork ipv '*' net-server HTTP net-server HTTP app foo.cgi net-server HTTP app foo.cgi app /=bar.cgi net-server HTTP port 8080 port 8443/ssl ipv '*' server_type PreFork --SSL_key_file=my.key --SSL_cert_file=my.crt access_log_file STDERR =head1 DESCRIPTION The net-server program gives a simple way to test out code and try port connection parameters. Though the running server can be robust enough for full tim use, it is anticipated that this binary will just be used for basic testing of net-server ports, acting as a simple echo server, or for running development scripts as CGI. =head1 OPTIONS =over 4 =item C<base type> The very first argument may be a Net::Server flavor. This is given as shorthand for writing out server_type "ServerFlavor". Additionally, this allows types such as HTTP and PSGI, which are not true Net::Server base types, to subclass other server types via an additional server_type argument. net-server PreFork net-server HTTP # becomes a HTTP server in the Fork flavor net-server HTTP server_type PreFork # preforking HTTP server =item C<port> Port to bind upon. Default is 80 if running a HTTP server as root, 8080 if running a HTTP server as non-root, or 20203 otherwise. Multiple value can be given for binding to multiple ports. All of the methods for specifying port attributes enumerated in L<Net::Server> and L<Net::Server::Proto> are available here. net-server port 20201 net-server port 20202 net-server port 20203/IPv6 =item C<host> Host to bind to. Default is *. Will bind to an IPv4 socket if an IPv4 address is given. Will bind to an IPv6 socket if an IPv6 address is given (requires installation of IO::Socket::INET6). If a hostname is given and C<ipv> is still set to 4, an IPv4 socket will be created. If a hostname is given and C<ipv> is set to 6, an IPv6 socket will be created. If a hostname is given and C<ipv> is set to * (default), a lookup will be performed and any available IPv4 or IPv6 addresses will be bound. The C<ipv> parameter can be set directly, or passed along in the port, or additionally can be passed as part of the hostname. net-server host localhost net-server host localhost/IPv4 =back There are many more options available. Please see the L<Net::Server> documentation. =head1 AUTHOR Paul Seamons <paul at seamons.com> =head1 LICENSE This package may be distributed under the terms of either the GNU General Public License or the Perl Artistic License =cut