implement sockets, thus far untested

git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@333 726aef4b-f618-498e-8847-2d620e286838
This commit is contained in:
imaginos
2005-05-18 06:12:41 +00:00
parent 2d1602ec4c
commit aae356d498
2 changed files with 365 additions and 30 deletions
+98 -19
View File
@@ -1,22 +1,3 @@
#
# TODO need to add socket support
# OnConnect( $sockhandle, $parentsockhandle )
# in the event this is comming in from a listener, the $sockhandle will be different from the others, so need to
# register it in the socket class like the others
# socket will register as $self = { "$sockhandle" => 1 }
#
# For Listeners
# OnConnectionFrom( $sockhandle, $remotehost, $remoteport )
#
# OnError( $sockhandle, $errno )
# OnConnectionRefused( $sockhandle )
# OnTimeout( $sockhandle )
# OnDisconnect( $sockhandle )
# OnData( $sockhandle, $bytes, $length )
# OnReadLine( $sockhandle, $bytes, $length )
# ZNC::WriteSock( $sockhandle, $bytes, $length )
# my $sockhandle = ZNC::ConnectSock( $host, $port, $timeout, $enablereadline )
# my $sockhandle = ZNC::ConnectSockSSL( $host, $port, $timeout, $enablereadline )
# my $sockhandle = ZNC::ListenSock( $port, $bindhostname, $enablereadline )
# my $sockhandle = ZNC::ListenSockSSL( $port, $bindhostname, $enablereadline )
#
@@ -34,6 +15,10 @@ sub COREEval
eval $arg;
}
sub COREShutdown()
{
}
sub CORECallFunc
{
my ( $Username, $Func, @args ) = @_;
@@ -190,6 +175,28 @@ sub CORECallTimer
return( HALTMODS() );
}
sub CORECallSock
{
my ( $Username, $Func, $ModName ) = @_;
for( my $i = 0; $i < @MODS; $i++ )
{
if ( ( $MODS[$i]->{ZNC_Username} eq $Username ) && ( $MODS[$i]->{ZNC_Name} eq $ModName ) )
{
if ( $MODS[$i]->can( $Func ) )
{
my $ret = $MODS[$i]->$Func();
if ( $Func eq "OnConnectionFrom" )
{ # special case this for now, requires a return value
return( $ret );
}
}
return( CONTINUE() );
}
}
return( HALTMODS() );
}
######################
# Ease Of use USER functions
sub AddTimer
@@ -261,6 +268,74 @@ sub PutTarget
PutIRC( "PRIVMSG $target :$line" );
}
sub ConnectSock
{
my ( $host, $port, $timeout, $bEnableReadline, $bUseSSL ) = @_;
if ( ( !$host ) || ( $port ) )
{
return( -1 );
}
if ( !$timeout )
{
$timeout = 60;
}
if ( !$bEnableReadline )
{
$bEnableReadline = 0;
}
if ( !$bUseSSL )
{
$bUseSSL = 0;
}
return( COREConnectSock( $host, $port, $bEnableReadline, $bUseSSL ) );
}
sub ConnectSockSSL
{
my ( $host, $port, $timeout, $bEnableReadline, $bUseSSL ) = @_;
return( ConnectSock( $host, $port, $timeout, $bEnableReadline, $bUseSSL, 1 ) );
}
sub ListenSock
{
my ( $port, $bindhost, $bEnableReadline, $bUseSSL ) = @_;
if ( !$port )
{
return( -1 );
}
if ( !$bindhost )
{
$bindhost = "";
}
if ( !$bEnableReadline )
{
$bEnableReadline = 0;
}
if ( !$bUseSSL )
{
$bUseSSL = 0;
}
return( COREListenSock( $port, $bindhost, $bEnableReadline, $bUseSSL ) );
}
sub ListenSockSSL
{
my ( $port, $bindhost, $bEnableReadline ) = @_;
return( ListenSock( $port, $bindhost, $bEnableReadline, 1 ) );
}
1;
@@ -270,3 +345,7 @@ sub PutTarget