Listing 3. CGI Script
#!/usr/bin/perl
use DBI;
$dbh = DBI->connect("dbi:Pg:dbname=database", "postgres", "password")
|| die "Can't connect to database.\n";
print "Content-type: text/xml\n\n\n";
print "\n";
check_cid("/tmp/panels/cid");
print "\n";
exit;
sub check_cid {
my($dir) = @_;
my(@a, $a, $file, $count, $top);
local(*FILE, *DIR);
opendir DIR, "/tmp/panels/cid";
while ($file = readdir(DIR)) {
if ($file eq ".") { next; }
if ($file eq "..") { next; }
open FILE, "/tmp/panels/cid/$file";
chomp($line = );
close FILE;
($dir, $name, $number, $uid) = split("#", $line);
$count++;
if ($dir eq "IN") {
$html = "Incoming call from $name ($number)";
} else {
$html = "Outgoing call from $name ($number)";
}
expire_call($uid);
print <
phone$count
$html
EOF
;
}
}
sub expire_call {
my($id) = @_;
my($sth, $count);
$sth = $dbh->prepare("select count(*) from cdr where
uniqueid=\'$id\'");
$sth->execute();
($count) = $sth->fetchrow_array();
if ($count) {
unlink("/tmp/panels/cid/$id");
}
}