diff options
Diffstat (limited to 'fripost-searchalias')
-rwxr-xr-x | fripost-searchalias | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/fripost-searchalias b/fripost-searchalias new file mode 100755 index 0000000..0775942 --- /dev/null +++ b/fripost-searchalias @@ -0,0 +1,144 @@ +#!/usr/bin/perl + +use 5.010_000; +use strict; +use warnings; +use utf8; + +=head1 NAME + +fripost-searchalias - List matching aliases + +=head1 SYNOPSIS + +B<fripost-searchalias> [B<--debug>] [I<goto> [I<from>]] + +=head1 DESCRIPTION + +B<fripost-seardomain> list virtual aliases matching exactly I<from>, +targetting to I<goto>. +Wildcards I<*> can appear in I<goto> or I<from>, to match zero or more +characters. +If no I<from> is given, list all aliases whose target matches I<goto>. +If neither I<goto> nor I<from> are given, B<fripost-searchalias> list +all existing virtual aliases. + +=head1 OPTIONS + +=over 8 + +=item B<--server_host=>I<host> + +The LDAP URI to connect to. +The default value is read from the configuration file, see B<CONFIGURATION>. + +=item B<--bind_dn=>I<binddn> + +The Distinguished Name (DN) to bind to the LDAP directory. +(If not set, B<fripost-searchalias> binds anonymously.) +The default value is read from the configuration file, see B<CONFIGURATION>. + +=item B<--bind_pw=>I<password> + +The password to to bind with. +The default value is read from the configuration file, see B<CONFIGURATION>. + +=item B<--base_dn=>I<basedn> + +The root DN for everything done by B<fripost-searchalias>. +The default value is read from the configuration file, see B<CONFIGURATION>. + +=item B<--debug> + +Debug mode. + +=back + +=head1 CONFIGURATION + +The configuration is read from the file C<$HOME/.fripost.yml>. +Valid keys include: + +=over 4 + +=item I<server_host> + +The LDAP URI to connect to. Defaults to C<ldap://127.0.0.1:389>. + +=item I<bind_dn> + +The Distinguished Name (DN) to bind to the LDAP directory. +(If not set, B<fripost-searchalias> binds anonymously.) + +=item I<bind_pw> + +The password to to bind with. + +=item I<base_dn> + +The root DN for everything done by B<fripost-searchalias>. + +=back + +=cut + +use FindBin qw($Bin); +use lib "$Bin/lib"; + +use Env qw /HOME/; +use File::Spec::Functions; + +use Fripost::Schema; +use Getopt::Long qw /:config noauto_abbrev no_ignore_case + gnu_compat bundling permute nogetopt_compat + auto_version auto_help/; +use Pod::Usage; +use YAML::Syck; + + +## Get command line options +our $conf = LoadFile( catfile ($HOME, '.fripost.yml') ); + +GetOptions( + 'server_host=s' => \$conf->{server_host}, + 'base_dn=s' => \$conf->{base_dn}, + 'bind_dn=s' => \$conf->{bind_dn}, + 'bind_pw=s' => \$conf->{bind_pw}, + 'pretend' => \$conf->{pretend}, + 'debug' => \$conf->{debug}, + 'man' => sub { pod2usage(-exitstatus => 0, + -verbose => 2) } +) or pod2usage(2); + + +# Connect to the LDAP server +my $ldap = Fripost::Schema->new( $conf ); + +my %alias; +$alias{goto} = $ARGV[0] if defined $ARGV[0]; +$alias{address} = $ARGV[1] if defined $ARGV[1]; + +foreach my $alias ($ldap->alias->search( \%alias )->entries) { + say "From: " . (join ', ', @{$alias->{address}}); + say "Goto: " . $alias->{goto}; + say "IsActive: " . $alias->{isActive}; + say "--------------------------------" +} + +$ldap->unbind(); + + +=head1 AUTHOR + +Guilhem Moulin C<< <guilhem at fripost.org> >> + +=head1 COPYRIGHT + +Copyright 2012 Guilhem Moulin. + +=head1 LICENSE + +This program is free software; you can redistribute it and/or modify it +under the same terms as perl itself. + +=cut |