1 package APKPM::Davolink;
3 use base qw(Gearman::Driver::Worker);
7 use Data::Dump qw(dump);
11 use lib '/opt/managment_tools/lib';
14 sub prefix { 'Davolink_' }
16 sub info : Job : MinProcesses(1) : MaxProcesses(5) : Decode : Encode {
17 my ( $self, $job, $workload ) = @_;
18 warn "# workload = ", dump $workload;
19 my $cpeip = shift @$workload;
20 my $cpeconnect=H1::Davolink->new($cpeip,$self->config('iadusername'),$self->config('iadpasswd'));
21 $cpeconnect->connect();
22 my $ret = { ip => $cpeip };
23 foreach my $param ( @$workload ) {
24 if ( $param =~ m/uptime/i ) {
25 $ret->{UPTIME} = $cpeconnect->custom("cat /proc/uptime");
26 } elsif ( $param =~ m/adsl/i ) {
27 $ret->{ADSL} = { $cpeconnect->adsl_info };
28 } elsif ( $param =~ m/wan/i ) {
29 $ret->{WAN} = [ $cpeconnect->wan_info ];
30 } elsif ( $param =~ m/route/i ) {
31 $ret->{ROUTES} = [ $cpeconnect->route_info ];
33 die "unknown param $param";
40 my ( $self, $result ) = @_;
41 warn "# decode ", dump($result);
42 return [ split(/\s+/,$result) ];
46 my ( $self, $result ) = @_;
47 warn "# encode ",dump $result;
48 return JSON::XS::encode_json($result);