use Regex::Common to detect IP and pass filter query
authorDobrica Pavlinusic <dpavlin@rot13.org>
Mon, 14 Mar 2011 17:49:43 +0000 (18:49 +0100)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Mon, 14 Mar 2011 17:49:43 +0000 (18:49 +0100)
Makefile.PL
lib/APKPM/LDAP.pm

index 3144b51..527f888 100644 (file)
@@ -10,6 +10,7 @@ WriteMakefile(
                'Net::Ping' => 0,
                'Mojolicious'  => 0.9003,
                'DBD::Pg' => 0,
+               'Regexp::Common' => 0,
        },
        AUTHOR       => 'Dobrica Pavlinusic <dpavlin@rot13.org>',
 #      ABSTRACT_FROM => 'lib/APKPM.pm',
index c697b11..0be5e56 100644 (file)
@@ -4,6 +4,7 @@ use base qw(Gearman::Driver::Worker);
 use Moose;
 use Time::HiRes;
 use Data::Dump qw(dump);
+use Regexp::Common qw(net);
 
 with 'APKPM::Config';
 with 'APKPM::Gearman';
@@ -21,9 +22,10 @@ sub process_name {
 sub search : Job : MinProcesses(1) : MaxProcesses(5) : Encode(e_json) {
        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);