use base qw(Gearman::Driver::Worker);
use Moose;
use Time::HiRes;
-use JSON::XS;
use Data::Dump qw(dump);
+use Regexp::Common qw(net);
with 'APKPM::Config';
+with 'APKPM::Gearman';
use Net::LDAP;
return "$orig ($job_name)";
}
-sub search : Job : MinProcesses(1) : MaxProcesses(5) : Encode {
+sub search : Job : Encode(e_json) : MinProcesses(0) {
my ( $self, $job, $workload ) = @_;
- my $filter = $workload =~ m/\d+\.\d+\.\d+\.\d+/ ?
- "dhcpStatements=fixed-address $workload" :
- "cn=$workload*"
+ my $filter =
+ $workload =~ m/$RE{net}{IPv4}/ ? "dhcpStatements=fixed-address $workload" :
+ $workload =~ m/\w+=/ ? $workload : # have filter specified
+ "cn=*$workload*" ; # defailt: search for user
;
warn "# search ",dump($filter);
my $ldap = Net::LDAP->new($self->config('ldaphost')) or die $@;
my $mesg = $ldap->bind($self->config('ldapusername'),Password => $self->config('ldappasswd'));
- $mesg = $ldap->search(base => $self->config('ldapbase'), filter => $filter);
+# $mesg = $ldap->search(base => $self->config('ldapbase'), filter => $filter);
+ $mesg = $ldap->search(base => 'cn=clientnetVoD,cn=Dhcp,ou=Servers,dc=portus,dc=isp' , filter => $filter);
warn "# found ", $mesg->count, " entries";
- my $entries;
+ my $entries = [];
for ( my $i = 0; $i < $mesg->count; $i++ ) {
my $entry = $mesg->entry($i);
my $e = { dn => $entry->dn };
return $entries;
}
-sub encode {
- my ( $self, $result ) = @_;
- my $json = JSON::XS::encode_json($result);
- warn "## ", dump $json;
- return $json;
-}
-
1;