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 )