Cover V05, I05
Article
Listing 1
Listing 2
Listing 3
Sidebar 1
Sidebar 2

may96.tar


Listing 1: asap.pl

#!/usr/bin/perl

open(PINTAB, "< /usr/lib/pq/pqpin.tab") || die "I Can't open PIN table file: $!\n";

#load up the pin database into memory
while ($aline = <PINTAB>) {
while ( ($aline =~ /^#/) && ($aline = <PINTAB>)) {
#The the line is a comment, just eat it
}
($addressee[$pincount], $pin[$pincount], $modemnum[$pincount], $maxmesg[$pincount]) = split(' ',
$aline);
$pincount++;
}

while ($aline = <STDIN>) {

@thefields = split(' ', $aline);

if(@thefields[0] eq "From:") {
chop($aline);
$fromline = $aline;
}

if(@thefields[0] eq "To:") {
chop($aline);
@to = split(/\@/,$thefields[1]);
$to = $to[0];

$thispincount = 0;
while(($thispincount < $pincount) && ($to ne $addressee[$thispincount])) {
$thispincount++;
}

if($to ne $addressee[$thispincount]) {
die "The addressee doesn't appear to be in the database!\n";
}
}

if(@thefields[0] eq "Subject:") {
chop($aline);
$subjectline = $aline;
}
}

#the email will just be passed along
$pageline = sprintf("%s, %s", $fromline, $subjectline);

if(length $pageline > 191) {
$mesg = sprintf("New Email: %s", $pageline);
$mesg = substr($mesg,0,202);
printf("Message too long, here is the message:%s\nHere is its len:%d", $mesg, length
$mesg );
}
$mesg = sprintf("New Email: %s", $pageline);

$sum = 31;	#to account for stx cr cr etx
for ($i = 0; $i < length($pin[$thispincount]); $i++) {
$sum +=  ord(substr($pin[$thispincount], $i,1));
}

if (length($mesg) > 231) { die "\7The message is greater than 230 characters!\n"}
for ($i = 0; $i < length($mesg); $i++) {
$sum +=  ord(substr($mesg, $i,1));
}

$sumstr = sprintf("%lx", $sum);
$sumstr = substr($sumstr,length($sumstr)-3,3);

$sumstr =~ s/a/:/g;
$sumstr =~ s/b/;/g;
$sumstr =~ s/c/</g;
$sumstr =~ s/d/=/g;
$sumstr =~ s/e/>/g;
$sumstr =~ s/f/?/g;

open(MESGOUT, ">> /var/spool/pq/$modemnum[$thispincount]") || die "I Can't
open message output file: $!\n";
chmod 666, MESGOUT;
printf(MESGOUT "%s\n", $pin[$thispincount]);
printf(MESGOUT "%s\n", $mesg);
printf(MESGOUT "%s\n\n", $sumstr);
close(MESGOUT);

# End of File