/[ldap]/html/vizitka.cgi
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /html/vizitka.cgi

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (show annotations)
Wed May 24 17:39:36 2000 UTC (23 years, 11 months ago) by dpavlin
Branch: MAIN
Changes since 1.1: +20 -2 lines
utf-8 decoding

1 #!/usr/local/bin/perl -w
2
3 use Net::LDAP;
4 use Net::LDAP::LDIF;
5 use CGI qw/:standard/;
6 use CGI::Carp qw(fatalsToBrowser);
7
8 # ldap server host
9 $host = 'sun.lan';
10 # e-mail address to mail report to:
11 $email = 'dpavlin@sun.lan';
12 # log file
13 $log = '/tmp/vizitke.log';
14
15 $ldap = Net::LDAP->new($host,port=>389) || die "$@";
16
17 $ldap->bind; # anonymous
18
19 %labels = ('givenname'=>'ime',
20 'sn'=>'prezime',
21 'cn'=>'ime i prezime');
22
23 %utf2iso_tab = (
24 0x0161 => '¹', 0x0111 => 'ð', 0x010d => 'è', 0x0107 => 'æ', 0x017e => '¾',
25 0x0160 => '©', 0x0110 => 'Ð', 0x010c => 'È', 0x0106 => 'Æ', 0x017d => '®'
26 );
27
28 sub utf2iso {
29 my $out;
30 foreach (@_) {
31 s/([\xC0-\xDF])([\x80-\xBF])/$utf2iso_tab{unpack("c",$1)<<6&0x07C0|unpack("c",$2)&0x003F}/ge;
32 s/([\xE0-\xEF])([\x80-\xBF])([\x80-\xBF])/$utf2iso_tab{unpack("c",$1)<<12&0xF000|unpack("c",$2)<<6&0x0FC0|unpack("c",$3)&0x003F}/ge;
33 s/([\xF0-\xF7])([\x80-\xBF])([\x80-\xBF])([\x80-\xBF])/$utf2iso_tab{unpack("c",$1)<<18&0x1C0000|unpack("c",$2)<<12&0x3F000|unpack("c",$3)<<6&0x0FC0|unpack("c",$4)&0x003F}/ge;
34 $out.=$_;
35 }
36 return $out;
37 }
38
39 print
40 # header(-type => 'text/html;charset=UTF-8'),
41 header,
42 start_html('Naruèivanje vizitki'),
43 start_form,
44 "Upi¹ite svoje ",popup_menu(-name=>'what',
45 -values=>['givenname','sn','cn'],
46 -default=>'cn',
47 -labels=>\%labels),
48 textfield(-name=>'search',-default=>'*'),br,
49 "Broj komada koje naruèujete ",
50 textfield(-name=>'kom',-size=>4,-default=>10),br,
51 submit(-value=>"Naruèi"),p
52 end_form;
53
54 if(param()) {
55 $mesg = $ldap->search (
56 base => 'o=agrokor.hr',
57 filter => param('what').'='.param('search')
58 );
59 my $max = $mesg->count;
60 if ($max > 1) {
61 param('what','cn'); # reset what='cn'
62 print "Broj osoba koje odgovaraju upitu: ",$mesg->count,br,
63 b("Odaberite samo jednu!"),
64 start_form,
65 hidden(-name=>'what',-value=>'cn'),
66 hidden(-name=>'kom'),
67 p;
68 for($i = 0 ; $i < $max ; $i++) {
69 my $entry = $mesg->entry($i);
70 my ($mail) = $entry->get('mail'); # array, take first
71 my ($cn)=utf2iso($entry->get('cn'));
72 push @radio_vals,$cn;
73 $radio_labels{$cn}=$cn;
74 }
75 print radio_group(-name=>'search',
76 -values=>\@radio_vals,
77 -linebreak=>'true',
78 -default=>\$radio_vals[0],
79 -labels=>\%radio_labels),
80 submit(-value=>"Odaberi"),p
81 end_form;
82 } elsif ($max==0) {
83 print b("Nije naðena niti jedna osoba");
84 } else {
85 my $entry = $mesg->entry(0);
86 my @data = ( $entry->get('cn') );
87 sub add_opt {
88 ($label,$data) = @_;
89 if ($data) {
90 push @data,"$label $data";
91 }
92 }
93 add_opt "",$entry->get('ou');
94 add_opt "",$entry->get('postaladdress');
95 add_opt "soba: ",$entry->get('roomnumber');
96 add_opt "e-mail: ",$entry->get('mail');
97 add_opt "tel: ",$entry->get('telephonenumber');
98 add_opt "fax: ",$entry->get('facsimiletelephonenumber');
99 # add_opt ": ",$entry->get('');
100 push @data,"Narudzba za ".param("kom")." komada\n";
101 print join("<br>\n",@data);
102 open(MAIL,"|/usr/lib/sendmail $email");
103 print MAIL join("\n",@data);
104 close(MAIL);
105 open(LOG,">> $log");
106 print LOG "\nVrijeme zahtjeva: ".localtime(time)."\n";
107 print LOG join("\t\n",@data);
108 close(LOG);
109 }
110 }
111

  ViewVC Help
Powered by ViewVC 1.1.26