aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Fripost/Commands/alias_search.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Fripost/Commands/alias_search.pm')
-rw-r--r--lib/Fripost/Commands/alias_search.pm80
1 files changed, 80 insertions, 0 deletions
diff --git a/lib/Fripost/Commands/alias_search.pm b/lib/Fripost/Commands/alias_search.pm
new file mode 100644
index 0000000..6e638ac
--- /dev/null
+++ b/lib/Fripost/Commands/alias_search.pm
@@ -0,0 +1,80 @@
+package Fripost::Commands::alias_search;
+
+use 5.010_000;
+use strict;
+use warnings;
+use utf8;
+
+=head1 NAME
+
+alias_search.pm - List matching virtual aliases
+
+=cut
+
+use FindBin qw($Bin);
+use lib "$Bin/lib";
+
+use Fripost::Schema;
+
+our $VERSION = '0.01';
+
+sub perform_search {
+ my $ldap = shift;
+
+ foreach my $alias ($ldap->alias->search( $_[0] )->entries) {
+ say "" . ($alias->{isActive} ? "ACTIVE" : "INACTIVE")
+ . " alias for " . $alias->{goto} . " are "
+ . (join ', ', @{$alias->{address}});
+ }
+}
+
+sub main {
+ my $ldap = shift;
+ my $conf = shift;
+
+ my $search = $_[0];
+
+ my $f = $conf->{from};
+ my $g = $conf->{goto};
+ my $from = $f || !$f && !$g;
+ my $goto = $g || !$f && !$g;
+
+ if ($from) {
+ perform_search($ldap, {address => $search});
+
+ my ($u,$d) = split /\@/, $search, 2;
+ $d = $u if (defined $u) and not (defined $d);
+ $ldap->domain->search({ domain => $d })->count
+ or die "Error: Unknown domain `$d'.\n";
+ }
+
+ if ($goto) {
+ perform_search($ldap, {goto => $search});
+ }
+}
+
+
+=head1 AUTHOR
+
+Guilhem Moulin C<< <guilhem at fripost.org> >>
+
+=head1 COPYRIGHT
+
+Copyright 2012 Guilhem Moulin.
+
+Copyright 2012 Stefan Kangas <skangas@skangas.se>.
+
+=head1 LICENSE
+
+This program is free software; you can redistribute it and/or modify it
+under the same terms as perl itself.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+=cut
+
+1; # End of alias_search.pm
+
+__END__