equal
deleted
inserted
replaced
15 use Text::Wrap; |
15 use Text::Wrap; |
16 |
16 |
17 use password; |
17 use password; |
18 |
18 |
19 my $Cf; |
19 my $Cf; |
20 my ($ldap, $abase); |
20 my ($ldap, $abase, $ubase); |
21 |
21 |
22 sub _add(); |
22 sub _add(); |
23 sub _list(); |
23 sub _list(); |
24 sub _delete(); |
24 sub _delete(); |
25 sub uniq(@); |
25 sub uniq(@); |
26 sub verbose(@); |
26 sub verbose(@); |
27 sub columns(); |
27 sub columns(); |
28 |
28 |
|
29 sub OU_ACCOUNTS(); |
29 sub OU_ALIASES(); |
30 sub OU_ALIASES(); |
30 sub OC_ALIAS(); |
31 sub OC_ALIAS(); |
31 sub AT_FORWARDINGADDRESS(); |
32 sub AT_FORWARDINGADDRESS(); |
|
33 sub AT_GROUP(); |
|
34 sub AT_PRIMARYADDRESS(); |
32 |
35 |
33 sub import(@) { |
36 sub import(@) { |
34 $Cf = shift; |
37 $Cf = shift; |
35 |
38 |
36 require constant; |
39 require constant; |
|
40 import constant OU_ACCOUNTS => $Cf->ldap_ou_accounts; |
37 import constant OU_ALIASES => $Cf->ldap_ou_aliases; |
41 import constant OU_ALIASES => $Cf->ldap_ou_aliases; |
38 import constant OC_ALIAS => $Cf->ldap_oc_alias; |
42 import constant OC_ALIAS => $Cf->ldap_oc_alias; |
39 import constant AT_FORWARDINGADDRESS => $Cf->ldap_at_forwardingaddress; |
43 import constant AT_FORWARDINGADDRESS => $Cf->ldap_at_forwardingaddress; |
|
44 import constant AT_GROUP => $Cf->ldap_at_group; |
|
45 import constant AT_PRIMARYADDRESS => $Cf->ldap_at_primaryaddress; |
40 |
46 |
41 $abase = OU_ALIASES . "," . $Cf->ldap_base; |
47 $abase = OU_ALIASES . "," . $Cf->ldap_base; |
|
48 $ubase = OU_ACCOUNTS . "," . $Cf->ldap_base; |
42 } |
49 } |
43 |
50 |
44 sub run($) { |
51 sub run($) { |
45 # Eigentlich brauchen wir für alles ldap |
52 # Eigentlich brauchen wir für alles ldap |
46 $ldap = new Net::LDAP $Cf->ldap_server or die; |
53 $ldap = new Net::LDAP $Cf->ldap_server or die; |
192 . ": " |
199 . ": " |
193 . join(", ", $e->get(AT_FORWARDINGADDRESS)) |
200 . join(", ", $e->get(AT_FORWARDINGADDRESS)) |
194 . "\n"); |
201 . "\n"); |
195 |
202 |
196 } |
203 } |
|
204 |
|
205 $filter = "(|" . join("", map { "(".AT_GROUP."=$_)" } @ARGV) . ")"; |
|
206 $r = $ldap->search( |
|
207 filter => $filter, |
|
208 base => $ubase, |
|
209 attrs => [AT_GROUP, AT_PRIMARYADDRESS] |
|
210 ); |
|
211 die $r->error if $r->code; |
|
212 |
|
213 my %group; |
|
214 while (my $e = $r->shift_entry) { |
|
215 my $mail = $e->get_value(AT_PRIMARYADDRESS); |
|
216 foreach my $g ($e->get_value(AT_GROUP)) { |
|
217 push @{$group{$g}}, $mail; |
|
218 } |
|
219 } |
|
220 foreach my $g (keys %group) { |
|
221 print wrap("", "\t", "$g⇒ " . join(", ", @{$group{$g}}) . "\n"); |
|
222 } |
197 } |
223 } |
198 |
224 |
199 sub verbose(@) { |
225 sub verbose(@) { |
200 printf STDERR @_; |
226 printf STDERR @_; |
201 } |
227 } |