AnyEvent-Radius
view release on metacpan or search on metacpan
example/client.pl view on Meta::CPAN
#!/usr/bin/perl
use strict;
use Data::Dumper;
use Data::HexDump;
use Time::HiRes;
use Data::Radius::Constants qw(:all);
use AnyEvent::Radius::Client;
my $dict = AnyEvent::Radius::Client->load_dictionary('radius/dictionary');
my @result = ();
sub radius_reply_raw {
my($self, $data, $from) = @_;
printf "Received\n%s\n", HexDump($data);
#push @result, $data;
}
my %types = (
&ACCESS_ACCEPT => 'Access-Accept',
&ACCESS_REJECT => 'Access-Reject',
&ACCOUNTING_RESPONSE => 'Accounting-Response',
);
my %queue = ();
sub radius_reply {
my ($self, $h) = @_;
#print Dumper($h);
printf "Received %s (%d) #%d\n",
$types{ $h->{type} }, $h->{type}, $h->{request_id};
foreach my $av (@{ $h->{av_list} }) {
if ($av->{Vendor}) {
printf " %s / %s = %s\n", $av->{Vendor} // '', $av->{Name}, $av->{Value};
}
else {
printf " %s = %s\n", $av->{Name}, $av->{Value};
}
}
my $dq = $queue{ $h->{request_id} };
if (! $dq) {
warn "Received reply for request $h->{request_id} not in queue!";
return;
}
$dq->{done} = 1;
}
# sub on_read_raw {
# my ($client, $data, $from) = @_;
# print "Raw packet:\n", HexDump($data), "\n";
# }
sub read_timeout_cb {
print "Read timeout\n";
}
sub write_timeout_cb {
( run in 0.512 second using v1.01-cache-2.11-cpan-39bf76dae61 )