|
Server : Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8e-fips-rhel5 DAV/2 PHP/5.2.17 System : Linux localhost 2.6.18-419.el5 #1 SMP Fri Feb 24 22:47:42 UTC 2017 x86_64 User : nobody ( 99) PHP Version : 5.2.17 Disable Function : NONE Directory : /proc/21571/root/usr/share/doc/mgetty-1.1.33/samples/ |
Upload File : |
#!/usr/bin/perl -w
# $Id: new_fax.th,v 1.1 1998/08/31 20:25:38 gert Exp $
# Program which is called for newly received faxes
#
# take all fax data, pack together (tar archive + gzip), and send as
# MIME mail. Use together with "faxview.th" for decoding those e-mails.
#
# Torsten Hilbrich <Torsten.Hilbrich@gmx.net>
#
# Some functions for dealing with files
use File::Basename;
# The user to receive the fax and the get the fax viewer on its display
my $user = 'torsten';
my $faxviewer = '/usr/local/bin/faxview';
my $sendmail = '/usr/sbin/sendmail';
my $tar = '/bin/tar';
my $gzip = '/bin/gzip';
my $su = '/bin/su';
my $mmencode = '/usr/local/bin/mmencode';
# Information received from mgetty
my $hangup_code = shift;
my $sender_id = shift;
my $number_pages = shift;
my $subject_line =
"Subject: incoming FAX from $sender_id with $number_pages page";
if($number_pages != 1) {
$subject_line = "${subject_line}s";
}
# Check the hangup code
if($hangup_code != 0) {
my $args = "";
my $file;
foreach $file (@ARGV) {
$args = "$args\n$file";
}
open MAIL, "|$sendmail $user"
or die "Unable to send mail using $sendmail to $user";
print MAIL <<EOF
$subject_line
The fax was not completly received. No data are appended here, you
may want to check the files:$args
.
EOF
;
close MAIL;
exit 0;
}
# First call the faxviewer in the background
my $args = "";
my $file;
foreach $file (@ARGV) {
$args = "$args \\\"$file\\\"";
}
system("$su $user -c \"$faxviewer $args -display :0 &\"");
my $tmp = "/tmp/new_fax-$$";
mkdir $tmp, 0755
or die "Unable to create dir $tmp";
my $archive_tmp = "$tmp/$sender_id.new";
my $archive = "$tmp/$sender_id.faxes";
my $mail = "$tmp/mail";
foreach $file (@ARGV) {
# Ignore non-existing files
-f $file && -r $file or next;
chdir dirname($file)
or die "Unable to chdir to directory of $file";
system($tar, "rf", $archive_tmp, basename $file) == 0
or die "Tar failed for adding $file to archive $archive_tmp";
}
system("$gzip -c9 \"$archive_tmp\" > \"$archive\"") == 0
or die "Gzip failed for compressing $archive_tmp to $archive";
# Now build a file for sending mail
$args = basename $archive;
open MAIL, ">$mail"
or die "Unable to compose mail in $mail";
print MAIL <<EOF
$subject_line
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="attachment"
--attachment
Content-Type: application/x-faxarchive; name="$args"
Content-Transfer-Encoding: base64
EOF
;
close MAIL;
# Encode the file and add it to the mail
system("$mmencode -b \"$archive\" >> \"$mail\"") == 0
or die "Error while encoding $archive into $mail";
open MAIL, ">>$mail"
or die "Unable to append to mail in $mail";
print MAIL <<EOF
--attachment--
EOF
;
close MAIL;
# Now call sendmail
system("$sendmail $user < \"$mail\"") == 0
or die "Error while sending the mail";
END {
defined $tmp and
system("rm -rf $tmp");
}