use strict;
use POE qw(Component::Client::SOCKS Wheel::ReadWrite Filter::Line);
use Data::Dumper;
my $poco = POE::Component::Client::SOCKS->spawn( options => { trace => 0 } );
POE::Session->create(
package_states => [
'main' => [ qw(_start _success _failed _conn_input _conn_error) ],
],
heap => { sockify => $poco },
options => { trace => 0 },
);
$poe_kernel->run();
exit 0;
sub _start {
my ($kernel,$heap) = @_[KERNEL,HEAP];
$heap->{sockify}->connect(
SocksProxy => '127.0.0.1',
RemoteAddress => 'cou.ch',
RemotePort => 6667,
SuccessEvent => '_success',
FailureEvent => '_failed',
);
return;
}
sub _success {
my ($heap,$args) = @_[HEAP,ARG0];
warn Dumper( $args );
$heap->{wheel} = POE::Wheel::ReadWrite->new(
Handle => $args->{socket},
Filter => POE::Filter::Line->new(),
InputEvent => '_conn_input',
ErrorEvent => '_conn_error',
);
return;
}
sub _failed {
warn Dumper( $_[ARG0] );
return;
}
sub _conn_input {
warn $_[ARG0], "\n";
return;
}
sub _conn_error {
delete $_[HEAP]->{wheel};
return;
}