POE::Component::Server::IRC::OperServ - a fully event-driven networkable IRC server daemon module with an OperServ.
# A fairly simple example: use strict; use warnings; use POE qw(Component::Server::IRC::OperServ); my %config = ( servername => 'simple.poco.server.irc', nicklen => 15, network => 'SimpleNET' ); my $pocosi = POE::Component::Server::IRC::OperServ->spawn( config => \%config ); POE::Session->create( package_states => [ 'main' => [qw(_start _default)], ], heap => { ircd => $pocosi }, ); $poe_kernel->run(); exit 0; sub _start { my ($kernel,$heap) = @_[KERNEL,HEAP]; $heap->{ircd}->yield( 'register' ); # Anyone connecting from the loopback gets spoofed hostname $heap->{ircd}->add_auth( mask => '*@localhost', spoof => 'm33p.com', no_tilde => 1 ); # We have to add an auth as we have specified one above. $heap->{ircd}->add_auth( mask => '*@*' ); # Start a listener on the 'standard' IRC port. $heap->{ircd}->add_listener( port => 6667 ); # Add an operator who can connect from localhost $heap->{ircd}->add_operator( { username => 'moo', password => 'fishdont' } ); undef; } sub _default { my ( $event, $args ) = @_[ ARG0 .. $#_ ]; print STDOUT "$event: "; foreach (@$args) { SWITCH: { if ( ref($_) eq 'ARRAY' ) { print STDOUT "[", join ( ", ", @$_ ), "] "; last SWITCH; } if ( ref($_) eq 'HASH' ) { print STDOUT "{", join ( ", ", %$_ ), "} "; last SWITCH; } print STDOUT "'$_' "; } } print STDOUT "\n"; return 0; # Don't handle signals. }
POE::Component::Server::IRC::OperServ is subclass of POE::Component::Server::IRC which provides simple operator services.
The documentation is the same as for POE::Component::Server::IRC, consult that for usage.
This subclass provides a server user called OperServ. OperServ accepts PRIVMSG commands from operators.
/msg OperServ <command> <parameters>
The following commands are accepted:
The OperServ will remove all channel modes on the indicated channel, including all users' +ov flags. The timestamp of the channel will be reset and the OperServ will join that channel with +o.
The OperServ will simply join the channel you specify with +o.
The OperServ will part (leave) the channel specified.
The OperServ will set the channel mode you tell it to. You can also remove the channel mode by prefixing the mode with a '-' (minus) sign.
The OperServ will give +o to any user on a channel you specify. OperServ does not need to be in that channel (as this is mostly a server hack).
Whenever the OperServ joins a channel (which you specify with the join command) it will automatically gain +o.
Chris 'BinGOs' Williams
Copyright (c) Chris Williams
(c)
This module may be used, modified, and distributed under the same terms as Perl itself. Please see the license that came with your Perl distribution for details.
POE::Component::Server::IRC
To install POE::Component::Server::IRC, copy and paste the appropriate command in to your terminal.
cpanm
cpanm POE::Component::Server::IRC
CPAN shell
perl -MCPAN -e shell install POE::Component::Server::IRC
For more information on module installation, please visit the detailed CPAN module installation guide.