mirror of
https://github.com/znc/znc.git
synced 2026-07-05 17:31:06 +02:00
supporting perlscript for ZNC modperl
git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@320 726aef4b-f618-498e-8847-2d620e286838
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
package ZNC;
|
||||
use strict;
|
||||
|
||||
use lib qw( /home/work/znc );
|
||||
|
||||
my %Modules;
|
||||
|
||||
sub Eval
|
||||
{
|
||||
my $arg = shift;
|
||||
eval $arg;
|
||||
}
|
||||
|
||||
sub CallFunc
|
||||
{
|
||||
my ( $Func, @args ) = @_;
|
||||
my $FinalRet = CONTINUE();
|
||||
|
||||
foreach( keys( %Modules ) )
|
||||
{
|
||||
if ( $Modules{$_}->{$Func} )
|
||||
{
|
||||
my $Ret = $Modules{$_}->$Func( @args );
|
||||
|
||||
if ( $Ret == HALT() )
|
||||
{
|
||||
return( $Ret );
|
||||
}
|
||||
|
||||
if ( $Ret == HALTMODS() )
|
||||
{
|
||||
return( $Ret );
|
||||
}
|
||||
|
||||
if ( $Ret == HALTCORE() )
|
||||
{
|
||||
$FinalRet = $Ret;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return( $FinalRet );
|
||||
}
|
||||
|
||||
sub LoadMod
|
||||
{
|
||||
my ( $Username, $Module ) = @_;
|
||||
|
||||
if ( $Modules{"$Username|$Module"} )
|
||||
{
|
||||
ZNC::PutModule( "$Module Already Loaded" );
|
||||
return( HALTMODS() );
|
||||
}
|
||||
|
||||
require "${Module}.pm";
|
||||
|
||||
my $obj = new $Module();
|
||||
if ( !$obj )
|
||||
{
|
||||
ZNC::PutModule( "$Module Failed to load" );
|
||||
return( HALTMODS() );
|
||||
}
|
||||
|
||||
$obj->{ZNC_Username} = $Username;
|
||||
$obj->{ZNC_Name} = $Module;
|
||||
|
||||
$Modules{"$Username|$Module"} = $obj;
|
||||
ZNC::PutModule( "Loaded $Module" );
|
||||
}
|
||||
|
||||
sub UnLoadMod
|
||||
{
|
||||
my ( $Username, $Module ) = @_;
|
||||
|
||||
if ( !$Modules{"$Username|$Module"} )
|
||||
{
|
||||
ZNC::PutModule( "$Module Isn't Loaded" );
|
||||
return( HALTMODS() );
|
||||
}
|
||||
|
||||
undef $Modules{"$Username|$Module"};
|
||||
ZNC::PutModule( "UnLoaded $Module, note in order to refresh code you must reload all modules." );
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user