.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "POE::Component::IRC::Plugin::Console 3pm" .TH POE::Component::IRC::Plugin::Console 3pm "2021-09-30" "perl v5.32.1" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" POE::Component::IRC::Plugin::Console \- A PoCo\-IRC plugin that provides a lightweight debugging and control console for your bot .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 1 \& use POE qw(Component::IRC Component::IRC::Plugin::Console); \& \& my $nickname = \*(AqFlibble\*(Aq . $$; \& my $ircname = \*(AqFlibble the Sailor Bot\*(Aq; \& my $ircserver = \*(Aqirc.blahblahblah.irc\*(Aq; \& my $port = 6667; \& my $bindport = 6969; \& \& my @channels = ( \*(Aq#Blah\*(Aq, \*(Aq#Foo\*(Aq, \*(Aq#Bar\*(Aq ); \& \& my $irc = POE::Component::IRC\->spawn( \& nick => $nickname, \& server => $ircserver, \& port => $port, \& ircname => $ircname, \& ) or die "Oh noooo! $!"; \& \& POE::Session\->create( \& package_states => [ \& main => [ qw(_start irc_001 irc_console_service irc_console_connect \& irc_console_authed irc_console_close irc_console_rw_fail) ], \& ], \& ); \& \& $poe_kernel\->run(); \& \& sub _start { \& $irc\->plugin_add( \*(AqConsole\*(Aq => POE::Component::IRC::Plugin::Console\->new( \& bindport => $bindport, \& password => \*(Aqopensesame\*(Aq \& ); \& $irc\->yield( register => \*(Aqall\*(Aq ); \& $irc\->yield( connect => { } ); \& return; \& } \& \& sub irc_001 { \& $irc\->yield( join => $_ ) for @channels; \& return; \& } \& \& sub irc_console_service { \& my $getsockname = $_[ARG0]; \& return; \& } \& \& sub irc_console_connect { \& my ($peeradr, $peerport, $wheel_id) = @_[ARG0 .. ARG2]; \& return; \& } \& \& sub irc_console_authed { \& my $wheel_id = $_[ARG0]; \& return; \& } \& \& sub irc_console_close { \& my $wheel_id = $_[ARG0]; \& return; \& } \& \& sub irc_console_rw_fail { \& my ($peeradr, $peerport) = @_[ARG0, ARG1]; \& return; \& } .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" POE::Component::IRC::Plugin::Console is a POE::Component::IRC plugin that provides an interactive console running over the loopback network. One connects to the listening socket using a telnet client (or equivalent), authenticate using the applicable password. Once authed one will receive all events that are processed through the component. One may also issue all the documented component commands. .SH "METHODS" .IX Header "METHODS" .ie n .SS """new""" .el .SS "\f(CWnew\fP" .IX Subsection "new" Takes two arguments: .PP \&\fB'password'\fR, the password to set for *all* console connections; .PP \&\fB'bindport'\fR, specify a particular port to bind to, defaults to 0, ie. randomly allocated; .PP Returns a plugin object suitable for feeding to POE::Component::IRC's \f(CW\*(C`plugin_add\*(C'\fR method. .ie n .SS """getsockname""" .el .SS "\f(CWgetsockname\fP" .IX Subsection "getsockname" Gives access to the underlying listener's \f(CW\*(C`getsockname\*(C'\fR method. See POE::Wheel::SocketFactory for details. .SH "OUTPUT EVENTS" .IX Header "OUTPUT EVENTS" The plugin generates the following additional POE::Component::IRC events: .ie n .SS """irc_console_service""" .el .SS "\f(CWirc_console_service\fP" .IX Subsection "irc_console_service" Emitted when a listener is successfully spawned. \f(CW\*(C`ARG0\*(C'\fR is the result of \&\f(CW\*(C`getsockname\*(C'\fR, see above for details. .ie n .SS """irc_console_connect""" .el .SS "\f(CWirc_console_connect\fP" .IX Subsection "irc_console_connect" Emitted when a client connects to the console. \f(CW\*(C`ARG0\*(C'\fR is the peeradr, \f(CW\*(C`ARG1\*(C'\fR is the peer port and \f(CW\*(C`ARG2\*(C'\fR is the wheel id of the connection. .ie n .SS """irc_console_authed""" .el .SS "\f(CWirc_console_authed\fP" .IX Subsection "irc_console_authed" Emitted when a client has successfully provided a valid password. \f(CW\*(C`ARG0\*(C'\fR is the wheel id of the connection. .ie n .SS """irc_console_close""" .el .SS "\f(CWirc_console_close\fP" .IX Subsection "irc_console_close" Emitted when a client terminates a connection. \f(CW\*(C`ARG0\*(C'\fR is the wheel id of the connection. .ie n .SS """irc_console_rw_fail""" .el .SS "\f(CWirc_console_rw_fail\fP" .IX Subsection "irc_console_rw_fail" Emitted when a POE::Wheel::ReadWrite could not be created on a socket. \f(CW\*(C`ARG0\*(C'\fR is the peer's address, \f(CW\*(C`ARG1\*(C'\fR is the peer's port. .SH "AUTHOR" .IX Header "AUTHOR" Chris 'BinGOs' Williams .SH "SEE ALSO" .IX Header "SEE ALSO" POE::Component::IRC .PP POE::Wheel::SocketFactory