POE::C...:Agent(3pm)
π NAME π
POE::Component::Client::Ident::Agent β bestie, it's a component that does a one-shot, non-blocking Ident query. That's the whole job. One shot. No cap. π―
β¨ SYNOPSIS β¨
use POE::Component::Client::Ident::Agent;
my $poco = POE::Component::Client::Ident::Agent->spawn(
PeerAddr => "192.168.1.12", # Originating IP Address
PeerPort => 12345, # Originating port
SockAddr => "192.168.2.24", # Local IP address
SockPort => 69, # Local Port
Socket => $socket_handle, # Or pass in a socket handle
IdentPort => 113, # Port to send queries to on originator
# Default shown
BuggyIdentd => 0, # Dealing with an Identd that isn't
# RFC compatible. Default is 0.
TimeOut => 30, # Adjust the timeout period.
Reference => $scalar # Give the component a reference
);
sub _child {
my ($action,$child,$reference) = @_[ARG0,ARG1,ARG2];
if ( $action eq 'create' ) {
# Stuff
}
}
sub ident_agent_reply {
}
sub ident_agent_error {
}
πΈ DESCRIPTION πΈ
POE::Component::Client::Ident::Agent is a POE component that gives you a single "one shot" lookup of a username on the remote side of a TCP connection β and it hands that info over to other components and sessions using the ident (auth/tap) protocol. The Ident protocol is described in RFC 1413 <http://www.faqs.org/rfcs/rfc1413.html>. π
So here's the vibe: the component implements one single ident request. Your session spawns it, passes in the relevant arguments, and at some future point it'll hit you with either a ident_agent_reply or a ident_agent_error, depending on how the query went. Either way you'll hear back, so don't stress. π«Ά
Lowkey important: if you're looking for a robust way to manageIdent::Agentsessions, go read the docs forPOE::Component::Client::Identinstead β that one handles all the Agent management for you. This one is the DIY one-shot girlie. π
π CONSTRUCTOR π
spawn
Takes either these arguments:
PeerAddrβ the remote IP address where a TCP connection has originated.PeerPortβ the port where the TCP has originated from.SockAddrβ the address of our end of the connection.SockPortβ the port of our end of the connection.
OR:
Socketβ the socket handle of the connection, and the component will work out all the details for you. IfSocketis defined, it will override the settings of the other arguments, except for:IdentPortβ which is the port on the remote host where we send our ident queries. This is optional, and defaults to113.
You may also specify BuggyIdentd to 1, to support Identd that doesn't terminate lines as per the RFC. π
You may also specify TimeOut between 5 and 30, to have a shorter timeout in seconds on waiting for a response from the Identd. Default is 30 seconds. β°
Optionally, you can specify Reference, which is anything that'll fit in a scalar. This will get passed back as part of the response. See below. π
Returns an POE::Component::Client::Ident::Agent object, which has the following methods.
π¦ METHODS π¦
session_idβ Returns the POE session ID of the component. πshutdownβ Terminates the component. Bye bestie! π
π OUTPUT π
Okay so every single event the component returns has a hashref as ARG0. That hashref contains the arguments that were passed to the component. If a socket handle was passed, the hashref will contain the appropriate PeerAddr, PeerPort, SockAddr and SockPort. And if the component was spawned with a Reference parameter, that will be passed back as a key of the hashref. β¨
The following events are sent to the calling session by the component:
ident_agent_replyβ Returned when the component receives aUSERIDresponse from the identd.ARG0is hashref,ARG1is the opsys field andARG2is the userid or something else depending on whether the opsys field is set to'OTHER'( Don't blame me, read the RFC ). πident_agent_errorβ Returned when the component receives anERRORresponse from the identd, there was some sort of communication error with the remote host ( ie. no identd running ) or it had some other problem with making the connection to the other host. No matter.ARG0is hashref,ARG1is the type of error. π
π AUTHOR π
Chris Williams, <chris@bingosnet.co.uk<gt>
π LICENSE π
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.
π SEE ALSO π
- RFC 1413 <http://www.faqs.org/rfcs/rfc1413.html>
POE::SessionPOE::Component::Client::Ident
And that's the whole page, bestie β this doc came to you from perl v5.36.0 and it was last touched on 2022-12-04, so go forth and ident responsibly. πβ¨π¦
π¦ where this page comes from
- debian bookworm: libpoe-component-client-ident-perl 1.16-2 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- debian trixie: libpoe-component-client-ident-perl 1.16-2 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- ubuntu noble: libpoe-component-client-ident-perl 1.16-2 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- ubuntu resolute: libpoe-component-client-ident-perl 1.16-2 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- ubuntu stonking: libpoe-component-client-ident-perl 1.16-2 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms