# Declare our package
package POE::Component::Server::SimpleHTTP::Connection;
# Standard stuff to catch errors
use strict qw(subs vars refs); # Make sure we can't mess up
use warnings FATAL => 'all'; # Enable warnings to catch errors
# Initialize our version
# $Revision: 1181 $
our $VERSION = '1.05';
# Get some things we need
use Socket qw( inet_ntoa unpack_sockaddr_in );
# Creates a new instance!
sub new {
# Get rid of the class
my $class = shift;
# Create the hash
my $self = {
# Did the socket die?
'DIED' => 0,
# SSLification status
'SSLified' => 0,
# SSL cipher in use
'SSLCipher' => undef,
};
# Get the stuff
my $socket = shift;
# Figure out everything!
eval {
( $self->{'remote_port'}, $self->{'remote_addr'} ) = unpack_sockaddr_in( getpeername( $socket ) );
$self->{'remote_ip'} = inet_ntoa( $self->{'remote_addr'} );
( $self->{'local_port'}, $self->{'local_addr'} ) = unpack_sockaddr_in( getsockname( $socket ) );
$self->{'local_ip'} = inet_ntoa( $self->{'local_addr'} );
};
# Check for errors!
if ( $@ ) {
# Just ignore this socket and return nothing!
return undef;
}
# Bless ourself!
bless( $self, 'POE::Component::Server::SimpleHTTP::Connection' );
# All done!
return $self;
}
# Gets the remote_ip
sub remote_ip {
return shift->{'remote_ip'};
}
# Gets the remote_port
sub remote_port {
return shift->{'remote_port'};
}
# Gets the remote_addr
sub remote_addr {
return shift->{'remote_addr'};
}
# Gets the local_addr
sub local_addr {
return shift->{'local_addr'};
}
# Gets the local_ip
sub local_ip {
return shift->{'local_ip'};
}
# Gets the local_port
sub local_port {
return shift->{'local_port'};
}
# Boolean accessor to check if the socket is dead
sub dead {
return shift->{'DIED'};
}
# Are we SSLified?
sub ssl {
return shift->{'SSLified'};
}
# What ssl cipher is in use?
sub sslcipher {
return shift->{'SSLCipher'};
}
# End of module
1;
__END__
=head1 NAME
POE::Component::Server::SimpleHTTP::Connection - Stores connection information for SimpleHTTP
=head1 SYNOPSIS
use POE::Component::Server::SimpleHTTP::Connection;
my $connection = POE::Component::Server::SimpleHTTP::Connection->new( $socket );
# Print some stuff
print $connection->remote_port;
=head1 DESCRIPTION
This module simply holds some information from a SimpleHTTP connection.
=head2 METHODS
my $connection = POE::Component::Server::SimpleHTTP::Connection->new( $socket );
$connection->remote_ip(); # Returns remote ip in dotted quad format ( 1.1.1.1 )
$connection->remote_port(); # Returns remote port
$connection->remote_addr(); # Returns true remote address, consult the L<Socket> POD
$connection->local_addr(); # Returns true local address, same as above
$connection->local_ip(); # Returns local ip in dotted quad format ( 1.1.1.1 )
$connection->local_port(); # Returns local port
$connection->dead(); # Returns a boolean value whether the socket is closed or not
$connection->ssl(); # Returns a boolean value whether the socket is SSLified or not
$connection->sslcipher(); # Returns the SSL Cipher type or undef if not SSL
=head2 EXPORT
Nothing.
=head1 SEE ALSO
L<POE::Component::Server::SimpleHTTP>
L<POE::Component::Server::SimpleHTTP::Response>
=head1 AUTHOR
Apocalypse E<lt>apocal@cpan.orgE<gt>
=head1 COPYRIGHT AND LICENSE
Copyright 2006 by Apocalypse
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
=cut