NAME
HTTP::Server::Encrypt - HTTP server can encrypt BODY section
SYNOPSIS
use HTTP::Server::Encrypt qw(http_server_start);
my %http_conf;
$http_conf{'port'} = 80;
$http_conf{'docroot'} = "/var/www/htdoc/";
$http_conf{'blowfish_key'} = "somekey";
$http_conf{'blowfish_encrypt'} = 'yes';
$http_conf{'blowfish_decrypt'} = 'yes';
http_server_start(\%http_conf);
DESCRIPTION
A pure Perl WebServer with features below.
Be able to encrypt response BODY section and decrypt resquest BODY section with BlowFish CBC.
HTTP Basic Authentication support.
Prefork processes module.
Use sendfile for station file requests.
Route dynamic requests to file.
Built-in IP filter.
CGI support.
EASY SETUP
Usage of HTTP::Server::Encrypt is very simple.
http_server_start(%params)
To set up a new HTTP Server, just call the http_server_start method. It will run as a daemon.
http_server_start accepts the following named parameters in %params:
port
Default 80.
protocol
Value http for protocol HTTP. Value pon for protocol PON.
min_spare
How many child will be forked when the server start.
max_spare
Maximum number of processes can be forked.
docroot
Set the root directory. For example: Request GET /script.pl will be responsed by /var/www/html/script.pl if you this set to /var/www/html/.
cache_expires_secs
Set the HTTP "Cache-Control: max-age" value for static requesets.
username
Set the HTTP Basic Authentication username.
passwd
Set the HTTP Basic Authentication password. If username and password are not be set, HTTP Basic Authentication disabled.
blowfish_key
Set the BODY encrpyt key. if not set, BODY encrypt disabled.
blowfish_encrypt
Enable encrypt the response BODY.
blowfish_decrypt
Enable encrypt the request BODY.
ip_allow
Allow ip list.
ip_deny
Deny ip list.
log_dir
Set access log directory. Disable log if set to no.
HOW TO WRITE SCRIPTS
Only PERL script support.
Just scripts in docroot.
For example:
If you docroot set to /var/www/html/.
Request GET /script.pl will be responsed by /var/www/html/script.pl.
There is some vars can be used in the script.
$peer_ip
The IP address from which the user is viewing the current page.
$peer_port
The TCP port from which the user is viewing the current page.
%_GET
HTTP GET variables.
An associative array of variables passed to the current script via the URL parameters.
%_POST
HTTP POST variables.
An associative array of variables passed to the current script via the HTTP POST method.
$_POST
Raw POST data.
%_HEAD
HTTP request headers.
%_ENV
Execution environment information.
An associative array of variables passed to the current script via the environment method.
Default 80.
Above can be used direct.
CGI SUPPORT
If you write scripts in Python or C or something not PERL,
You may want use CGI standard, then you can write
use HTTP::Server::Encrypt::CGI;
Instead of
use HTTP::Server::Encrypt;
Then you just put you CGI applications in docroot.
More information in HTTP::Server::Encrypt::CGI.
TIPS
If your want do things after http_server_start method, you may want this:
my $parent = fork();
unless($parent)
{
http_server_start(\%http_conf);
exit 1;
}
my $pidfile = __FILE__ . ".pid";
for(1..9)
{
last if -s $pidfile;
sleep 1;
}
... #server already up. do your things ...
AUTHOR
Written by ChenGang, yikuyiku.com@gmail.com
COPYRIGHT
Copyright (c) 2011 ChenGang. This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
SEE ALSO
HTTP::Daemon, HTTP::Server::Simple, HTTP::Server::Encrypt::CGI