#!/usr/bin/perl
#
# WIDE InternetFAX
#
# file: ifax_fax_send
# 
# Written by Takakazu YAMAUCHI <yamauchi@ohnolab.org>.
# Modified by Masahiko KIMOTO <kimoto@ohnolab.org>.
# Copyright (c) 1998 by Takakazu YAMAUCHI <yamauchi@ohnolab.org>,
#                       Masahiko KIMOTO <kimoto@ohnolab.org>,
#                       Ohno Laboratory(Tokyo Institute of Technology) and 
#                       WIDE Project.
# ALL RIGHTS RESERVED.
#
# If you need fully defined copyright notice, see COPYRIGHT which is 
# included in this package.
# 
# $Id: ifax_fax_send,v 1.4 1999/03/08 04:22:58 kimoto Exp $

# ---------------------------------------------------------------------------
# DESCRIPTION OF THIS FILE:
# FAX֥⥸塼
# ܺ٤README.ifax_fax_send.jp򻲾ȤΤ
# ---------------------------------------------------------------------------

#  ifax_fax_send -d PhoneNumber [-h hostname] files ...\n;
#
#  Currently Only TIFF and PostScript  ...
#

# ---------------------------------------------------------------------------
#  եɤ߹ࡣ
# ---------------------------------------------------------------------------
# ɸեpath/etc/wifax.confĶѿ
# WIFAXCONFPATHͤǾ񤭤Ǥ롣
# եƤ KEY = VAL ηǤФȤꤢʤǤ
# ŪKEYιܤϷƤ
# ޤKEYʸʸ̵뤹롣
# rulefile: dispatcherѤ롼ǡ١Υե̾
# bindir:   ٤ƤΥ⥸塼μ¹Է֤Ƥǥ쥯ȥ̾
# spooldir: סΥǥ쥯ȥ̾
#
$wifax_conf = "/etc/wifax.conf";
$wifax_conf = $ENV{'WIFAXCONFPATH'} if ($ENV{'WIFAXCONFPATH'} ne "");
undef %CONFIG;
if (-e $wifax_conf) {
    open(CONF,$wifax_conf) || die "cannot open $wifax_conf\n";
    while (<CONF>) {
	chop;
	/\S/ || next;
	/\s*\#/ && next;
	/\s*([^= ]+)\s*=\s*(.*)$/ || next;
	$1 =~ tr/A-Z/a-z/;
	$CONFIG{$1}=$2;
    }
    close(CONF);
}

# ---------------------------------------------------------------------------
# ѿDEFAULT
# ---------------------------------------------------------------------------
$default_rulefile = "/var/wifax/etc/wifax.rule";
$default_spooldir = "/var/wifax/spool/";
$default_bindir   = "/usr/wide/wifax/bin";

# ---------------------------------------------------------------------------
# PATH
# ---------------------------------------------------------------------------

$rulefile = ($CONFIG{'rulefile'} eq "") ? 
    $default_rulefile : $CONFIG{'rulefile'};
$spooldir = ($CONFIG{'spooldir'} eq "") ? 
    $default_spooldir : $CONFIG{'spooldir'};
$bindir = ($CONFIG{'bindir'} eq "") ? 
    $default_bindir : $CONFIG{'bindir'};

# ---------------------------------------------------------------------------

$a2ps = "/usr/local/bin/a2ps";
$sendfax = "/usr/contrib/bin/sendfax";

$LABELSTRING = "MESSAGE_INFORMATION";

$dest = "";
$hostoption = "";
$headerfilename = "header";

#
# ν
#

while ($#ARGV != 0) {

    if ($ARGV[0] eq "-d") {
	# -d ΤȤˤϰֹ椬
	shift(@ARGV);
	if ($ARGV[0] =~ /([\*\+\.\-0-9]+)/) { 
	    # ֹϿޤ*+-.ȹ礻
	    $dest = "$1";
	    print "FAX Number : $dest\n";
	}
	shift(@ARGV);
    } elsif ($ARGV[0] =~ "-h") {
	# ѥۥ/ttyݡȤꤵ줿
	
	shift(@ARGV);
	$hostoption = "-h $ARGV[0]";
	print "Destination Host: $hostoption\n";
	shift(@ARGV);
    } else {
	last;
    }
}

#
# ֹ椬ꤵƤʤä鲿⤻˽
#
if ($dest eq "") {
    print "Destination phone number is required.\n";
    exit;
}

#
# F/C ǽľ
#

#
# 鲼F/C ǽľ
#

#
# @tifps  եΥե̾Υꥹ
# @etcsϲեޤϥƥȥեȽ̤ǤʤäΤ
# ꥹ
# Τ褦ʥեμȽ̤ HylaFax¦ǤäƤ뤬ǰΤ
# ¦Ǥ
#

undef @tifps;
undef @etcs;

$textfilename = "/tmp/testfile.$$.ps";
open(LPR_TXT,"|$a2ps -l $LABELSTRING -p > $textfilename");

#
# ĤΰΥեμ֤˸Ƥ
#

foreach (@ARGV) {
    next if (! -e $_);

    $filename = $_;
    $file = `/usr/bin/file $filename`;
    chop($file);

    if ($file =~ /tiff /i ||
	$file =~ /tif /i ||
	$file =~ /[Pp]ost[Ss]cript/) {

	# Image FileϤΤޤޥե̾ΥꥹȤ˲ä
	push(@tifps,$filename);

    } elsif ($file =~ /[Tt]ext/) {
	# ƥȥեϤޤȤưĤPSե
	# XXX: ¤Ĥ٤

	open(FILE,"$filename") || die "cannot open $filename";
	@t =  <FILE>;

	# åإåʤΤޤƥȤʤΤɽ
	if ($filename eq $headerfilename) {
	    print LPR_TXT "MESSAGE HEADER:\n\n";
	} else {
	    print LPR_TXT "DESCRIPTIONS:\n\n";
	}

	# ѥ졼ɽ
	print LPR_TXT @t;
	print LPR_TXT "-------------------------\n\n";
	close(FILE);
    } else {
	# 褯狼ʤեϰʤ
	print "Unknown file type: $file\n";
    }
}
close(LPR_TXT);

push(@tifps,$textfilename);

# sendfax¹Ԥ
print "Now executing: $sendfax -n $hostoption -d $dest @tifps \n";   
system("$sendfax -n $hostoption -d $dest @tifps");

unlink($textfilename);

exit(0);
