POE::Component::Server::IRC::Common - provides a set of common functions for the POE::Component::Server::IRC suite.
use strict; use warnings; use POE::Component::Server::IRC::Common qw( :ALL ); my $nickname = '^Lame|BOT[moo]'; my $uppercase_nick = u_irc( $nickname ); my $lowercase_nick = l_irc( $nickname ); my $mode_line = 'ov+b-i Bob sue stalin*!*@*'; my $hashref = parse_mode_line( $mode_line ); my $banmask = 'stalin*'; $full_banmask = parse_ban_mask( $banmask ); if ( matches_mask( $full_banmask, 'stalin!joe@kremlin.ru' ) ) { print "EEK!"; } my $results_hashref = matches_mask_array( \@masks, \@items_to_match_against ); my $mode_change = gen_mode_change( 'abcde', 'befmZ' ); my $passwd = mkpasswd( 'moocow' );
POE::Component::IRC::Common provides a set of common functions for the POE::Component::Server::IRC suite. There are included functions for uppercase and lowercase nicknames/channelnames and for parsing mode lines and ban masks.
u_irc
Takes one mandatory parameter, a string to convert to IRC uppercase, and one optional parameter, the casemapping of the ircd ( which can be 'rfc1459', 'strict-rfc1459' or 'ascii'. Default is 'rfc1459' ). Returns the IRC uppercase equivalent of the passed string.
l_irc
Takes one mandatory parameter, a string to convert to IRC lowercase, and one optional parameter, the casemapping of the ircd ( which can be 'rfc1459', 'strict-rfc1459' or 'ascii'. Default is 'rfc1459' ). Returns the IRC lowercase equivalent of the passed string.
parse_mode_line
Takes a list representing an IRC mode line. Returns a hashref. If the modeline couldn't be parsed the hashref will be empty. On success the following keys will be available in the hashref:
'modes', an arrayref of normalised modes; 'args', an arrayref of applicable arguments to the modes;
Example:
my $hashref = parse_mode_line( 'ov+b-i', 'Bob', 'sue', 'stalin*!*@*' ); $hashref will be { 'modes' => [ '+o', '+v', '+b', '-i' ], 'args' => [ 'Bob', 'sue', 'stalin*!*@*' ], };
parse_ban_mask
Takes one parameter, a string representing an IRC ban mask. Returns a normalised full banmask.
$fullbanmask = parse_ban_mask( 'stalin*' ); $fullbanmask will be 'stalin*!*@*';
matches_mask
Takes two parameters, a string representing an IRC mask ( it'll be processed with parse_ban_mask() to ensure that it is normalised ) and something to match against the IRC mask, such as a nick!user@hostname string. Returns 1 if they match, 0 otherwise. Returns undef if parameters are missing. Optionally, one may pass the casemapping ( see u_irc() ), as this function ises u_irc() internally.
matches_mask_array
Takes two array references, the first being a list of strings representing IRC mask, the second a list of somethings to test against the masks. Returns an empty hashref if there are no matches. Matches are returned are arrayrefs keyed on the mask that they matched.
gen_mode_change
Takes two arguments, being a strings representing a set of IRC user modes before and after a change. Returns a string representing what changed.
my $mode_change = gen_mode_change( 'abcde', 'befmZ' ); $mode_change is now '-acd+fmZ'
unparse_mode_line
Takes one argument a string representing a number of mode changes. Returns a condensed version of the changes.
my $mode_line = unparse_mode_line('+o+o+o-v+v'); $mode_line is now '+ooo-v+v'
validate_chan_name
Takes one argument a channel name to validate. Returns true or false if the channel name is valid or not.
validate_nick_name
Takes one argument a nickname to validate. Returns true or false if the nickname is valid or not.
parse_user
Takes one parameter, a string representing a user in the form nick!user@hostname. In a scalar context it returns just the nickname. In a list context it returns a list consisting of the nick, user and hostname, respectively.
mkpasswd
Takes one mandatory argument a plain string to 'encrypt'. If no further options are specified it uses crypt to generate the password. Specifying 'md5' option uses Crypt::PasswdMD5's unix_md5_crypt function to generate the password. Specifying 'apache' uses Crypt::PasswdMD5's apache_md5_crypt function to generate the password.
crypt
unix_md5_crypt
apache_md5_crypt
my $passwd = mkpasswd( 'moocow' ); # vanilla crypt() my $passwd = mkpasswd( 'moocow', md5 => 1 ) # unix_md5_crypt() my $passwd = mkpasswd( 'moocow', apache => 1 ) # apache_md5_crypt()
chkpasswd
Takes two mandatory arguments, a password string and something to check that password against. The function first tries md5 comparisons ( UNIX and Apache ), then crypt and finally plain-text password check.
Chris 'BinGOs' Williams
Copyright © Chris Williams
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.