NAME
HTTP::Server::Encrypt - HTTP server with encrypt BODY section
SYNOPSIS
use HTTP::Server::Encrypt qw(http_server_start);
my %http_conf;
$http_conf{'port'} = 80;
$http_conf{'username'} = 'username';
$http_conf{'passwd'} = 'passwd';
$http_conf{'min_spare'} = 2;
$http_conf{'max_spare'} = 6;
$http_conf{'static_expires_secs'} = 7200;
$http_conf{'docroot'} = 'plugins/';
$http_conf{'blowfish_key'} = $key;
$http_conf{'blowfish_encrypt'} = 'yes';
$http_conf{'blowfish_decrypt'} = 'yes';
$http_conf{'ip_allow'} = \%ip_allow;
$http_conf{'ip_deny'} = \%ip_deny;
$http_conf{'log_dir'} = '/var/log/httpd_encrype/';
http_server_start(\%http_conf);
DESCRIPTION
A pure Perl WebServer with additional features below.
Counld encrypt response BODY section or decrypt resquest BODY section with BlowFish CBC.
Support HTTP Basic Authentication.
Minimum and maximum number of prefork processes is configurable.
Cache static request`s response in memory.
Route dynamic requests to file.
Built-in IP filter.
Support protocol PON (Perl Object Notation).
USAGE
Usage of HTTP::Server::Encrypt is very simple.
http_server_start(%params)
To set up a new HTTP Server, call the http_server_start method. You Get All Done. It will run as a daemon.
If your want do things after http_server_start method, you may use 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 ...
http_server_start accepts the following named parameters in %params:
port
The port of the daemon to which you wish to listen on. Defaults to 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
This directive sets the directory from which the server will serve files. 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 content.
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
Set enable encrpy the send response BODY section.
blowfish_decrypt
Set enable encrpy the recieved request BODY section.
ip_allow
Set ip list allow acccess.
ip_deny
Set ip list deny access.
log_dir
Set log directory. Disable log if value eq no.
PERFORMANCE
The Module has about more the half of request/sec performance compared to apache 2.2.I got 3000 req/sec on Xeon 5520/8G which httpd got 6000. Your can trade off between req/sec and sec/req yourself using the config min_spare and max_spare.
ABOUT PON
That is a very simple and friendly Network Protocol for PERL. I use it on my distributed system communication.Because it works just like JSON, I called it "PON".
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.