view release on metacpan or search on metacpan
lib/Agent/TCLI/Package/Net/HTTP.pm view on Meta::CPAN
$self->Verbose("get: $command params",3,$param);
$param->{'try_count'} = 1;
$param->{'completed'} = 0;
$param->{'start_time'} = time();
$self->requests->{$request->id}{'request'} = $request;
$self->requests->{$request->id}{'param'} = $param;
# execution
$kernel->post( 'http-client' => 'request' => 'ProcessResponse' =>
GET($param->{'url'},
Connection => "Keep-Alive",
),
$request->id, #tag
'ResponseProgress', #progress callback
'', #proxy override
);
$request->Respond($kernel, 'Trying '.$param->{'url'},100)
if ( $param->{'http_verbose'} );
lib/Agent/TCLI/Package/Net/HTTP.pm view on Meta::CPAN
my $txt;
$self->Verbose("retry: id(".$id.") ");
my $request = $self->requests->{$id}{'request'};
my $param = $self->requests->{$id}{'param'};
$param->{'try_count'}++ ;
# execution
$kernel->post( 'http-client' => 'request' => 'ProcessResponse' =>
GET($param->{'url'},
Connection => "Keep-Alive",
),
$id,
'ResponseProgress', #progress callback
'', #proxy override
);
}
sub ResponseProgress {
lib/Agent/TCLI/Package/Net/HTTPD.pm view on Meta::CPAN
}
sub _shutdown :Cumulative {
my ($kernel, $self, $session) =
@_[KERNEL, OBJECT, SESSION];
$self->Verbose($self->name.':_shutdown:');
foreach my $port ( keys %{ $self->ports } )
{
$self->Verbose("_shutdown: $port");
$kernel->post( 'HTTPD'.$port , 'SHUTDOWN' );
}
return ('_shutdown '.$self->name )
}
sub _stop {
my ($kernel, $self,) =
@_[KERNEL, OBJECT,];
$self->Verbose("_stop: ".$self->name." stopping",2);
}
lib/Agent/TCLI/Package/Net/HTTPD.pm view on Meta::CPAN
return unless ( $param = $cmd->Validate($kernel, $request, $self) );
$self->Verbose("spawn: param dump",4,$param);
unless (defined( $self->ports->{ $param->{'port'} } ) )
{
$request->Respond($kernel,'Unable to locate the HTTPD Server',404);
return;
}
$kernel->post( 'HTTPD'.$param->{'port'} , 'SHUTDOWN' );
# remove the stored control for this server
$self->SetWheelKey( $param->{'port'} , 'control' );
delete( $self->ports->{ $param->{'port'} } );
$request->Respond($kernel,'HTTPD Stopped on port '.$param->{'port'},200);
}
=item uri
lib/Agent/TCLI/Package/Net/HTTPD.pm view on Meta::CPAN
my ($kernel, $self, $request, $response, $dirmatch ) =
@_[KERNEL, OBJECT, ARG0 .. ARG2 ];
my $port = $response->connection->local_port;
# Do our stuff to HTTP::Response
$response->code( 0 );
$kernel->call($self->name => 'Log' => $request, $response ) if $self->logging;
$kernel->post( 'HTTPD'.$port , 'CLOSE', $response );
}
=item OK200
This POE Event handler is used as a target event for URIs. It will
send an HTTP response code of 200 with the content 'OK'.
It will log the conenction if logging is turned on.
=cut
lib/Agent/TCLI/Package/Net/HTTPD.pm view on Meta::CPAN
@_[KERNEL, OBJECT, ARG0, ARG1, ARG2 ];
my $port = $response->connection->local_port;
# Do our stuff to HTTP::Response
$response->code( 200 );
$response->content( 'OK' );
$kernel->call( $self->name => 'Log' => $request, $response ) if $self->logging;
$kernel->post('HTTPD'.$port, 'DONE', $response );
}
=item NA404
This POE Event handler is used as a target event for URIs. It will
send an HTTP response code of 404 with an error message.
It will log the conenction if logging is turned on.
=cut
sub NA404 {
# ARG0 = HTTP::Request object, ARG1 = HTTP::Response object,
# ARG2 = the DIR that matched
my ($kernel, $self, $request, $response, $dirmatch ) =
@_[KERNEL, OBJECT, ARG0 .. ARG2 ];
my $port = $response->connection->local_port;
# Check for errors
if ( ! defined $request ) {
$_[KERNEL]->post( 'HTTPD'.$port, 'DONE', $response );
return;
}
# Do our stuff to HTTP::Response
$response->code( 404 );
$response->content( "Hi visitor from " . $response->connection->remote_ip.
", Page not found -> '" . $request->uri->path . "'" );
$kernel->call($self->name => 'Log' => $request, $response ) if $self->logging;
$kernel->post('HTTPD'.$port, 'DONE', $response );
}
=item Log
This POE Event handler is used internally to provide the logging. It sends
the time, remote ip:port, local ip:port, uri and optionally the SSL cipher
to the Tail session.
=back
lib/Agent/TCLI/Package/Net/HTTPD.pm view on Meta::CPAN
$response->connection->local_ip.':'.$port,
$response->code,
'Bad request',
$response->connection->ssl ? $response->connection->sslcipher : '',
)."\n";
}
# In the future we'll need to resolve port to control to send to correct tail
my $control = $self->GetWheelKey( $port, 'control');
$kernel->post('tcli_tail', 'Append', $log );
return;
}
1;
#__END__
=head3 INHERITED METHODS
This module is an Object::InsideOut object that inherits from Agent::TCLI::Package::Base. It
inherits methods from both. Please refer to their documentation for more
lib/Agent/TCLI/Package/Net/Ping.pm view on Meta::CPAN
{
$self->Verbose('dos: argument error '.$txt);
$request->Respond($kernel, $txt,412);
return;
}
$self->requests->{$target->addr}{'request'} = $request;
# execution
$kernel->post( 'pinger' => 'ping' => 'Pong' =>
$target->addr,
$param->{'timeout'},
$param->{'retry_count'},
);
return($self->name.":ping done");
}
=item Pong
lib/Agent/TCLI/Package/Net/Traceroute.pm view on Meta::CPAN
DebugSocket => 0, # Defaults to 0
);
return($self->name.":_start complete ");
} #end start
sub _shutdown {
my ($kernel, $self,) =
@_[KERNEL, OBJECT,];
$self->Verbose("_shutdown: ".$self->name." shutting down",2);
$kernel->post('tracer' => 'shutdown');
$kernel->alarm_remove_all();
return($self->name.":_shutdown complete ");
}
=item trace
This POE event handler processes the trace command
lib/Agent/TCLI/Package/Net/Traceroute.pm view on Meta::CPAN
push(@trace_options,'UseICMP',1)
if ($param->{'useicmp'} || ($^O eq "MSWin32"));
$self->requests->{$param->{'target'}->addr}{'request'} = $request;
$self->Verbose(" target ".$param->{'target'}->addr." options ",
1,\@trace_options );
# execution
$kernel->post(
"tracer", # Post request to 'tracer' component
"traceroute", # Ask it to traceroute to an address
"TraceResponse", # Post answers to 'trace_response'
$param->{'target'}->addr, # This is the host to traceroute to
\@trace_options
# [
# PerHopPostback => 'TraceHopResponse',
# Queries => 5, # Override the global queries parameter
# MaxTTL => 30, # Override the global MaxTTL parameter
# Callback => [ $args ], # Data to send back with postback event
# ]
);
return($self->name.":trace done");
}
=item TraceResponse
This POE event handler processes the return data from the PoCo::Client::Traceroute.