Added SSL support, also rewrote the socket read/write methods.
This commit is contained in:
1 parent
6734dd6ce9
commit
88a32b7598
2 files changed
+19
-9
No files matched your search
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in new issue
Block a user