1 |
#!/usr/local/bin/perl -w |
2 |
|
3 |
use Net::LDAP; |
4 |
use Net::LDAP::LDIF; |
5 |
use CGI qw/:standard/; |
6 |
|
7 |
# ldap server host |
8 |
$host = 'ldap.pliva.hr'; |
9 |
# e-mail address to mail report to: |
10 |
$email = 'dpavlin@pliva.hr'; |
11 |
# log file |
12 |
$log = '/tmp/vizitke.log'; |
13 |
|
14 |
$ldap = Net::LDAP->new($host,port=>389) || die "$@"; |
15 |
|
16 |
$ldap->bind; # anonymous |
17 |
|
18 |
%labels = ('givenname'=>'ime', |
19 |
'sn'=>'prezime', |
20 |
'cn'=>'ime i prezime'); |
21 |
|
22 |
|
23 |
print header, |
24 |
start_html('NaruĆØivanje vizitki'), |
25 |
start_form, |
26 |
"UpiĀ¹ite svoje ",popup_menu(-name=>'what', |
27 |
-values=>['givenname','sn','cn'], |
28 |
-default=>'cn', |
29 |
-labels=>\%labels), |
30 |
textfield(-name=>'search',-default=>'*'),br, |
31 |
"Broj komada koje naruĆØujete ", |
32 |
textfield(-name=>'kom',-size=>4,-default=>10),br, |
33 |
submit(-value=>"NaruĆØi"),p |
34 |
end_form; |
35 |
|
36 |
if(param()) { |
37 |
$mesg = $ldap->search ( |
38 |
base => 'o=pliva.hr', |
39 |
filter => param('what').'='.param('search') |
40 |
); |
41 |
my $max = $mesg->count; |
42 |
if ($max > 1) { |
43 |
param('what','cn'); # reset what='cn' |
44 |
print "Broj osoba koje odgovaraju upitu: ",$mesg->count,br, |
45 |
b("Odaberite samo jednu!"), |
46 |
start_form, |
47 |
hidden(-name=>'what',-value=>'cn'), |
48 |
hidden(-name=>'kom'), |
49 |
p; |
50 |
for($i = 0 ; $i < $max ; $i++) { |
51 |
my $entry = $mesg->entry($i); |
52 |
my ($mail) = $entry->get('mail'); # array, take first |
53 |
my ($cn)=$entry->get('cn'); |
54 |
push @radio_vals,$cn; |
55 |
$radio_labels{$cn}=$cn; |
56 |
} |
57 |
print radio_group(-name=>'search', |
58 |
-values=>\@radio_vals, |
59 |
-linebreak=>'true', |
60 |
-default=>\$radio_vals[0], |
61 |
-labels=>\%radio_labels), |
62 |
submit(-value=>"Odaberi"),p |
63 |
end_form; |
64 |
} elsif ($max==0) { |
65 |
print b("Nije naĆ°ena niti jedna osoba"); |
66 |
} else { |
67 |
my $entry = $mesg->entry(0); |
68 |
my @data = ( $entry->get('cn') ); |
69 |
sub add_opt { |
70 |
($label,$data) = @_; |
71 |
if ($data) { |
72 |
push @data,"$label $data"; |
73 |
} |
74 |
} |
75 |
add_opt "",$entry->get('ou'); |
76 |
add_opt "",$entry->get('postaladdress'); |
77 |
add_opt "soba: ",$entry->get('roomnumber'); |
78 |
add_opt "e-mail: ",$entry->get('mail'); |
79 |
add_opt "tel: ",$entry->get('telephonenumber'); |
80 |
add_opt "fax: ",$entry->get('facsimiletelephonenumber'); |
81 |
# add_opt ": ",$entry->get(''); |
82 |
push @data,"Narudzba za ".param("kom")." komada\n"; |
83 |
print join("<br>\n",@data); |
84 |
open(MAIL,"|/usr/lib/sendmail $email"); |
85 |
print MAIL join("\n",@data); |
86 |
close(MAIL); |
87 |
open(LOG,">> $log"); |
88 |
print LOG "\nVrijeme zahtjeva: ".localtime(time)."\n"; |
89 |
print LOG join("\t\n",@data); |
90 |
close(LOG); |
91 |
} |
92 |
} |