Apache2-POST200

 view release on metacpan or  search on metacpan

Changes  view on Meta::CPAN

Revision history for Perl extension Apache2::POST200.

0.01  Tue Dec  6 19:12:08 2005
	- original version; created by h2xs 1.23 with options
		-A -b 5.8.0 -n Apache2::POST200 -XS

0.04  Wed Jun  7 11:12:32 CEST 2006
	- update to new interface of Crypt::CBC
	- test suite is now compatible to Apache 2.0

lib/Apache2/POST200.pm  view on Meta::CPAN

use Apache2::Filter;
use APR::Brigade;
use APR::Bucket;
use APR::Table;
use Apache2::Const -compile=>qw{OK DECLINED
				TAKE1 TAKE12 TAKE123 TAKE3 FLAG OR_ALL
				M_POST M_GET
				HTTP_OK REDIRECT NOT_FOUND};

use MIME::Base64 ();
use Crypt::CBC ();
use Crypt::Blowfish ();
use Digest::MD5 ();
use Digest::CRC ();
use DBI;

our $VERSION = '0.05';
my $rcounter=0;

# these 2 values were once read from /dev/random on my box
my $default_key=("tFS\343x\314\357uh\212W\177+#\332\0q\317S\231\321\316\270H".

lib/Apache2/POST200.pm  view on Meta::CPAN

sub Response {
  my $r=shift;

  my $cf=Apache2::Module::get_config(__PACKAGE__, $r->server,
				     $r->per_dir_config);

  return Apache2::Const::NOT_FOUND
    unless( $r->method_number==Apache2::Const::M_GET and
	    length( $r->args )==32+length($cf->{location}->[0]) );

  my $crypt=Crypt::CBC->new(
			    -key=>$cf->{secret}->[0],
			    -keysize=>length($cf->{secret}->[0]),
			    -cipher=>'Crypt::Blowfish',
			    -literal_key=>1,
			    -header=>'none',
			    -iv=>$cf->{secret}->[1],
			   );

  my $session=$r->args;
  $session=~s/^\Q$cf->{location}->[0]\E//;

lib/Apache2/POST200.pm  view on Meta::CPAN

    my $session=pack( 'NNnNC8',
		      $r->request_time, $$, $rcounter++,
		      $r->connection->id,
		      split( /\./, $r->connection->remote_ip, 4 ),
		      split( /\./, $r->connection->local_ip, 4 ),
		    );
    $rcounter%=2**16;

    $session=pack( 'C', Digest::CRC::crc8( $session ) ).$session;

    my $crypt=Crypt::CBC->new(
			      -key=>$cf->{secret}->[0],
			      -keysize=>length($cf->{secret}->[0]),
			      -cipher=>'Crypt::Blowfish',
			      -literal_key=>1,
			      -header=>'none',
			      -iv=>$cf->{secret}->[1],
			     );

    $session=MIME::Base64::encode_base64( $crypt->encrypt( $session ), '' );



( run in 1.340 second using v1.01-cache-2.11-cpan-df04353d9ac )