Added SSL support, also rewrote the socket read/write methods.

This commit is contained in:
Elijah Perrault committed 2011-02-08 15:54:22 -07:00
1 parent 6734dd6ce9
commit 88a32b7598
2 files changed
+19 -9

No files matched your search

+17 -9
View File
@@ -149,9 +149,9 @@ if (!$NUC and RSTAGE ne 'd') {
} }
# Include IPv6 if Auto was built for it. # Include IPv6 if Auto was built for it.
if ($ENFEAT =~ /ipv6/) { if ($ENFEAT =~ /ipv6/) { require IO::Socket::INET6; }
require IO::Socket::INET6; # Include SSL if Auto was built for it.
} if ($ENFEAT =~ /ssl/) { require IO::Socket::SSL; }
# Parse configuration file. # Parse configuration file.
println '* Parsing configuration file auto.conf...'; println '* Parsing configuration file auto.conf...';
@@ -302,18 +302,26 @@ foreach my $cskey (keys %cservers) {
PeerPort => $cservers{$cskey}{'port'}[0], PeerPort => $cservers{$cskey}{'port'}[0],
Timeout => 20, Timeout => 20,
); );
# Set IPv6 data. # Set IPv6/SSL data.
my $use6 = 0; my $use6 = 0;
my $usessl = 0;
if (defined $cservers{$cskey}{'ipv6'}[0]) { $use6 = $cservers{$cskey}{'ipv6'}[0]; } if (defined $cservers{$cskey}{'ipv6'}[0]) { $use6 = $cservers{$cskey}{'ipv6'}[0]; }
if (defined $cservers{$cskey}{'ssl'}[0]) { $usessl = $cservers{$cskey}{'ssl'}[0]; }
# Create the socket. # Create the socket.
if ($use6) { if ($use6) {
$SOCKET{$cskey} = IO::Socket::INET6->new(%conndata) or $SOCKET{$cskey} = IO::Socket::INET6->new(%conndata) or
err(2, 'Failed to connect to server: '.$cskey.' ['.$cservers{$cskey}{'host'}[0].q{:}.$cservers{$cskey}{'port'}[0].']', 0) and next; # Or error. err(2, 'Failed to connect to server ('.$ERRNO.'): '.$cskey.' ['.$cservers{$cskey}{'host'}[0].q{:}.$cservers{$cskey}{'port'}[0].']', 0) and next; # Or error.
} }
else { else {
$SOCKET{$cskey} = IO::Socket::INET->new(%conndata) or if ($usessl) {
err(2, 'Failed to connect to server: '.$cskey.' ['.$cservers{$cskey}{'host'}[0].q{:}.$cservers{$cskey}{'port'}[0].']', 0) and next; # Or error. $SOCKET{$cskey} = IO::Socket::SSL->new(%conndata) or
err(2, 'Failed to connect to server ('.$ERRNO.'): '.$cskey.' ['.$cservers{$cskey}{'host'}[0].q{:}.$cservers{$cskey}{'port'}[0].']', 0) and next; # Or error.
}
else {
$SOCKET{$cskey} = IO::Socket::INET->new(%conndata) or
err(2, 'Failed to connect to server ('.$ERRNO.'): '.$cskey.' ['.$cservers{$cskey}{'host'}[0].q{:}.$cservers{$cskey}{'port'}[0].']', 0) and next; # Or error.
}
} }
# Send PASS if we have one. # Send PASS if we have one.
@@ -385,7 +393,7 @@ while (1) {
} }
# Read the data. # Read the data.
my $idata; my $idata;
recv $sock, $idata, POSIX::BUFSIZ, 0; sysread $sock, $idata, POSIX::BUFSIZ, 0;
# Check for the data. # Check for the data.
if (!defined $idata || length($idata) == 0) { if (!defined $idata || length($idata) == 0) {
@@ -421,7 +429,7 @@ sub socksnd
my ($svr, $data) = @_; my ($svr, $data) = @_;
if (defined $SOCKET{$svr}) { if (defined $SOCKET{$svr}) {
send $SOCKET{$svr}, $data."\n", 0; syswrite $SOCKET{$svr}, $data."\n", POSIX::BUFSIZ, 0;
dbug "$svr << $data"; dbug "$svr << $data";
return 1; return 1;
} }
+2
View File
@@ -3,6 +3,8 @@ Auto IRC Bot 3.0: Change Log
3.0 Indev 3.0 Indev
================================================================== ==================================================================
* Rewrote socket read/write methods.
* Added SSL support.
* Added act() to API::IRC. * Added act() to API::IRC.
3.0 Alpha 2 3.0 Alpha 2