If this isn't exactly what you wanted, please try our Search (there's a LOT of techy and non-techy stuff here about Linux, Unix, Mac OS X and just computers in general!):
From: dowagiac_2000@yahoo.com (Matt Lewis)
Subject: Hylafax setup howto - OpenServer 5.0.x
Date: 26 Jun 2003 15:24:41 -0700
Installing Hylafax on SCO OpenServer 5.0.x
June 25th, 2003
Summary:
Hylafax is a complete opensource fax package for Unix based systems.
Ability to send faxes and or emails using ASCII, Tiff, Postscript and
PDF input.
Server/client accessibility and strict control of who can send faxes.
Mail to fax gateway ready and easily integrated into existing
sendmail setups. Tools
and utilities to allow for web based and MS outlook fax integration.
Email or fax based delivery and error notification for authorized
senders.
Requirements:
Hylafax >= 4.1
Gawk >= 3.0
Ghostscript >= 6.51
Fileutils >= 3.16
Bash >=2.03
Glib >=1.5
Mawk >= 1.3
Zlib >=1.1
Aft-tar.Z (Adobe font files)
The above packages except the (Adobe font files) are part of Skunkware
for OpenServer distribution located at
<ftp://ftp2.caldera.com/pub/skunkware/osr5/vols/>
The (Adobe font files ) may be commonly found by searching the
internet for afm-tar.Z
1. Install the above packages using custom in the following order.
a. gawk
b. ghostscript
c. fileutils
d. bash
e. Glib
f. Mawk
g. Zlib
h. Hylafax
2. Use faxsetup script attached at end of this posting. Move this to
/usr/local/sbin/faxsetup on the target host. The default faxsetup
script included with the hylafax package will not work.
3. Figure out the what tty's your fax modems are on. The quickest way
to determine this is ( tail /usr/lib/uucp/Devices )
4. Disable the tty in question. Exa. # disable tty1A . The faxsetup
script will not be able to probe the modem capabilities without the
tty disabled.
5. Run ( /usr/local/sbin/faxsetup ) . Follow the prompts. Leaving the
defaults as are. If this is the first time you install this. Answer
yes to run
faxaddmodem to add a new fax modem.
6. Setup init script. Use the hylafax.sh script shown at the end of
this posting
( cp hylafax.sh /etc/init.d/hylafax )
( ln -s /etc/init.d/hylafax /etc/rc0.d/K92hylafax )
( ln -s /etc/init.d/hylafax /etc/rc2.d/S92hylafax )
7. Start fax daemon and client. ( /etc/init.d/hylafax start )
8. Install Adobe fonts
( cp afm-tar.Z /usr/local/share/ghostscript/fonts/ )
( uncompress afm-tar.Z )
( tar xAvf afm-tar )
( mv afm/* ./ )
( rmdir afm )
9. Re-enable tty. Exa ( enable tty1A )
10. Test sending a fax. ( sendfax -d <number> <file> )
There are many other options for the fax packages.
Some useful utilities include
1. faxmail
2. faxrm
3. faxstat
4. faxcover
Many other options are available. See www.hylafax.org
<http://www.hylafax.org> for more details.
A very nice client package for hylafax for use on windows is at
http://www.cypheus.de/frm_home_e.htm
It is windows client software for integration with hylafax and allows
many options. Like custom cover pages for each person. Fax address
book. Word and
Outlook integration etc..
# Hylafax init script Copy this and put into file hylafax to put in
/etc/init.d/hylafax
#!/bin/sh
case $1 in
'start') /usr/local/sbin/hfaxd -i hylafax ;
/usr/local/sbin/faxmodem tty1A
/usr/local/sbin/faxq ;;
'stop') kill `ps -e | grep " faxq$" | cut -f2 -d" "`;
kill `ps -e | grep " hfaxd$" | cut -f2 -d" "`;;
*) /bin/echo "$0 start or $0 stop";;
esac
#---------- End hylafax init script ---------
# -=-------------- Faxsetup script Copy this and put into file
faxsetup ------------------
#! /usr/local/bin/bash
# $Id: faxsetup.sh.in,v 1.7 1999/08/05 11:11:42 robert Exp $
#
# Warning, this file was automatically created by the HylaFAX
configure script
#
# HylaFAX Facsimile Software
#
# Copyright (c) 1990-1996 Sam Leffler
# Copyright (c) 1991-1996 Silicon Graphics, Inc.
# HylaFAX is a trademark of Silicon Graphics
#
# Permission to use, copy, modify, distribute, and sell this software
and
# its documentation for any purpose is hereby granted without fee,
provided
# that (i) the above copyright notices and this permission notice
appear in
# all copies of the software and related documentation, and (ii) the
names of
# Sam Leffler and Silicon Graphics may not be used in any advertising
or
# publicity relating to the software without the specific, prior
written
# permission of Sam Leffler and Silicon Graphics.
#
# THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
# EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
# WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
#
# IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
# ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
KIND,
# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
PROFITS,
# WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY
THEORY OF
# LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE
# OF THIS SOFTWARE.
#
#
# VERSION: 4.1beta2
# DATE: Tue Feb 6 10:48:33 PST 2001
# TARGET: i386-pc-sco3.2v5.0.5
#
#
# faxsetup [options]
#
# This script interactively prepares and verifies
# a HylaFAX client and/or server machine for use.
#
PATH=/bin:/usr/bin:/etc
test -d /usr/ucb && PATH=$PATH:/usr/ucb # Sun and others
test -d /usr/bsd && PATH=$PATH:/usr/bsd # Silicon Graphics
test -d /usr/5bin && PATH=/usr/5bin:$PATH:/usr/etc # Sun and others
test -d /usr/sbin && PATH=/usr/sbin:$PATH # 4.4BSD-derived
test -d /usr/local/bin && PATH=$PATH:/usr/local/bin # for GNU tools
AWK=/usr/local/bin/mawk # awk for use below
CAT=/bin/cat # cat command for use below
CHGRP=/usr/local/bin/chgrp # change file group for use below
CHMOD=/usr/local/bin/chmod # change file mode for use below
CHOWN=/usr/local/bin/chown # change file owner for use below
CP=/usr/local/bin/cp # cp command for use below
ECHO=/bin/echo # echo command for use below
GREP=/bin/grep # grep command for use below
LN=/usr/local/bin/ln # ln command for use below
LN_S=-s # ln option for creating a symbolic link
MKFIFO=/usr/local/bin/mkfifo # FIFO creation program for use below
MV=/usr/local/bin/mv # move file for use below
RMCMD=/usr/local/bin/rm # remove file for use below
SCRIPT_SH=/usr/local/bin/bash # shell for use below
SED=/bin/sed # sed for use below
FAX=fax # identity of the fax user
SERVICES=/etc/services # location of services database
INETDCONF=/usr/etc/inetd.conf # default location of inetd
configuration file
ALIASES=/usr/lib/aliases # default location of mail aliases database
file
PASSWD=/etc/passwd # where to go for password entries
PROTOUID=uucp # user who's uid we use for FAX user
defPROTOUID=3 # use this uid if PROTOUID doesn't exist
GROUP=/etc/group # where to go for group entries
PROTOGID=uucp # group who's gid we use for FAX user
defPROTOGID=10 # use this gid if PROTOGID doesn't exist
VERSION="4.1beta2" # configured version
DATE="Tue Feb 6 10:48:33 PST 2001" # data software was configured
TARGET="i386-pc-sco3.2v5.0.5" # configured target
PATH_AFM=/usr/local/share/ghostscript/5.50:/usr/local/share/ghostscript/fonts #
directory for Adobe Font Metric files
DIR_BIN=/usr/local/bin # directory for client applications
DIR_LIBDATA=/usr/local/lib/fax # directory for client data files
DIR_LIBEXEC=/usr/local/sbin # directory where servers are located
DIR_LOCKS=/usr/spool/uucp # UUCP locking directory
DIR_MAN=/usr/local/man # directory for manual pages
DIR_SBIN=/usr/local/sbin # directory for server applications
DIR_SPOOL=/var/spool/fax # top of fax spooling tree
TIFFBIN=/usr/local/bin # TIFF tools
LOCKS=-ascii # UUCP lock type
PATH_GETTY=/etc/getty # pathname for getty program
PATH_SENDMAIL=/usr/lib/sendmail # pathname for sendmail
PATH_VGETTY=/bin/vgetty # pathname for voice getty program
PATH_EGETTY=/bin/egetty # pathname for external getty program
PS=gs # default PostScript RIP package
PATH_GSRIP=/usr/local/bin/gs # pathname of Ghostscript RIP
PATH_DPSRIP=/usr/local/sbin/ps2fax.exe # pathname of old IRIX DPS RIP
PATH_IMPRIP=/usr/lib/print/psrip # pathname of IRIX Impressario RIP
POSIXLY_CORRECT=1; export POSIXLY_CORRECT # disable GNU extensions
#
# Location of sysv init script
#
SYSVINIT=/etc/init.d/hylafax
FAXQ_SERVER=1
HFAXD_SERVER=1
#
# These are the configuration parameters written to the
# setup.cache file and read in by all the HylaFAX scripts.
#
# We use the same names used by configure for consistency
# (but some confusion within this script).
#
VARS="SCRIPT_SH
FONTPATH PATH_AFM
AWK
BIN DIR_BIN
CAT
CHGRP
CHMOD
CHOWN
CP
DPSRIP PATH_DPSRIP
ECHO
FAXQ_SERVER
GREP
GSRIP PATH_GSRIP
HFAXD_SERVER
IMPRIP PATH_IMPRIP
LIBDATA DIR_LIBDATA
LIBEXEC DIR_LIBEXEC
LN
MANDIR DIR_MAN
MKFIFO
MV
PATH
PATHGETTY PATH_GETTY
PATHVGETTY PATH_VGETTY
PATHEGETTY PATH_EGETTY
PSPACKAGE PS
RM RMCMD
SBIN DIR_SBIN
SED
SENDMAIL PATH_SENDMAIL
SPOOL DIR_SPOOL
SYSVINIT
TIFFBIN
UUCP_LOCKDIR DIR_LOCKS
UUCP_LOCKTYPE LOCKS"
dumpvals()
{
echo "$VARS" |
while read a b; do eval c=\$${b:-$a}; echo "$a='$c'"; done
}
#
# Error diagnostics that should go to the terminal are
# done with this interface or cat.
#
bitch()
{
echo "$@" 1>&2
}
#
# This is the preferred interface for
# configure to terminate abnormally.
#
boom()
{
$RM $JUNK
exit 1
}
usage()
{
cat<<EOF
Usage: faxsetup [options] [host]
Options: [defaults in brackets after descriptions]
-client setup client support
-server setup server support
-with-PARAM[=ARG] set configuration PARAM [ARG=yes]
-help print this message
-quiet do not print 'Using ...' messages
-verbose opposite of -quiet
EOF
}
QUIET=no
isServer=no
isClient=no
onClient()
{
test $isClient = yes
}
onServer()
{
test $isServer = yes
}
#
# Crack command line arguments. We purposely
# use syntax and options that are compatible
# with GNU autoconf.
#
WITHARGS=no
ac_prev=
for ac_option
do
if [ -n "$ac_prev" ]; then # assign the argument to previous
option
eval "$ac_prev=\$ac_option"
ac_prev=
continue
fi
case "$ac_option" in # collect optional argument
-*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'`;;
*) ac_optarg=;;
esac
case "$ac_option" in
-with-*|--with-*)
ac_with=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
# Reject names that are not valid shell variable names.
if [ -n "`echo $ac_with| sed 's/[-_a-zA-Z0-9]//g'`" ]; then
bitch "configure: $ac_with: invalid parameter name."
die
fi
ac_with=`echo $ac_with| sed 's/-/_/g'`
case "$ac_option" in
*=*) ;;
*) ac_optarg=yes;;
esac
eval "${ac_with}='$ac_optarg'"
WITHARGS=yes
;;
-client) isClient=yes;;
-server) isServer=yes;;
-quiet) QUIET=yes;;
-verbose) QUIET=no;;
-help) usage; exit 0;;
-*)
bitch "faxsetup: $ac_option: invalid option; use -help for usage."
boom
;;
esac
done
if [ -n "$ac_prev" ]; then
bitch "faxsetup: missing argument to --`echo $ac_prev | sed
's/_/-/g'`"
boom
fi
# if nothing specified on command line, default client+server
if [ $isClient = no -a $isServer = no ]; then
isClient=yes
isServer=yes
fi
#
# Descriptor usage:
# 1: ???
# 2: messages that should be seen even if we're in the background.
# 3: [stdout from test runs]
# 4: verbose-style messages (Using ...)
# 5: setup.cache file
#
if [ $QUIET = yes ]; then
exec 4>/dev/null # chuck messages
else
exec 4>&1 # messages go to stdout
fi
Note()
{
echo "$@" 1>&4
}
Note ""
Note "Setup program for HylaFAX (tm) $VERSION."
Note ""
Note "Created for $TARGET on $DATE."
Note ""
CPU=`expr $TARGET : '\(.*\)-.*-.*'` || CPU=unknown
VENDOR=`expr $TARGET : '.*-\(.*\)-.*'` || VENDOR=unknown
OS=`expr $TARGET : '.*-.*-\([a-zA-z]*\).*'` || OS=unknown
RELEASE=`(uname -r) 2>/dev/null` || RELEASE=unknown
#
# Read in any site, target, vendor, os, or os-release
# specific setup work. Note that we read stuff here
# so that configuration parameters can be altered. We
# use some pre-defined function names below to provide
# hooks for other actions.
#
#
# Hooks for additional client+server checks
#
otherBasicServerChecks()
{
true
}
otherBasicClientChecks()
{
true
}
#
# Hook for adding stuff to setup.modem
#
dumpOtherModemFuncs()
{
true
}
#
# Figure out which brand of echo we have and define prompt
# and printf shell functions accordingly. Note that we
# assume that if the System V-style echo is not present,
# then the BSD printf program is available. These functions
# are defined here so that they can be tailored on a per-site,
# etc. basis.
#
if [ `echo foo\\\c`@ = "foo@" ]; then
# System V-style echo supports \r
# and \c which is all that we need
prompt()
{
echo "$* \\c"
}
printf()
{
echo "$*\\c"
}
dumpPromptFuncs()
{
cat<<-'EOF'
prompt()
{
echo "$* \\c"
}
printf()
{
echo "$*\\c"
}
EOF
}
elif [ "`echo -n foo`@" = "foo@" ]; then
# BSD-style echo; use echo -n to get
# a line without the trailing newline
prompt()
{
echo -n "$* "
}
dumpPromptFuncs()
{
cat<<-'EOF'
prompt()
{
echo -n "$* "
}
EOF
}
else
# something else; do without
prompt()
{
echo "$*"
}
dumpPromptFuncs()
{
cat<<-'EOF'
prompt()
{
echo "$*"
}
EOF
}
fi
if onServer; then
#
# Setup the password file manipulation functions according
# to whether we have System-V style support through the
# passmgmt program, or BSD style support through the chpass
# program, or for SCO boxes through pwconv, or SVR4 style support
# through useradd. If none are found, we setup functions that
# will cause us to abort if we need to munge the password file.
#
# NB: some systems override these function definitions through
# per-os faxsetup files
#
if [ -f /bin/passmgmt -o -f /usr/sbin/passmgmt ]; then
addPasswd()
{
passmgmt -o -a -c 'Facsimile Agent' -h $4 -u $2 -g $3 $1
}
deletePasswd()
{
passmgmt -d $1
}
modifyPasswd()
{
passmgmt -m -h $4 -u $2 -o -g $3 $1
}
lockPasswd()
{
passwd -l $1
}
elif [ -f /usr/bin/chpass ]; then
addPasswd()
{
chpass -a "$1:*:$2:$3::0:0:Facsimile Agent:$4:"
}
modifyPasswd()
{
chpass -a "$1:*:$2:$3::0:0:Facsimile Agent:$4:"
}
lockPasswd()
{
return 0 # entries are always locked
}
elif [ -f /etc/pwconv ]; then # could be a SCO box
addPasswd()
{
echo "${1}:NOLOGIN:${2}:${3}:Facsimile Agent:${4}:" >> ${PASSWD}
/etc/pwconv
}
lockPasswd()
{
return 0 # entries are always locked
}
elif [ -f /usr/sbin/useradd -o -f /etc/useradd ]; then
addPasswd()
{
useradd -c 'Facsimile Agent' -d $4 -u $2 -o -g $3 $1
}
deletePasswd()
{
userdel $1
}
modifyPasswd()
{
usermod -m -d $4 -u $2 -o -g $3 $1
}
lockPasswd()
{
passwd -l $1
}
else
addPasswd()
{
cat >&2 <<EOF
FATAL ERROR: I don't know how to add a passwd entry!
You will have to create the password entry manually using the
following info:
Login Name: $1
Password: *
Uid: $2
Gid: $3
Full Name: Facsimile Agent
Home Dir: $4
EOF
boom
}
modifyPasswd()
{
cat >&2 <<EOF
FATAL ERROR: I don't know how to modify a passwd entry!
You will have to update the password entry manually using the
following info:
Login Name: $1
Password: *
Uid: $2
Gid: $3
Full Name: Facsimile Agent
Home Dir: $4
EOF
boom
}
fi
#
# Functions required by faxaddmodem.
#
case $TARGET in
*-sunos*|*-linux*|*-ultrix*|*-hpux*|*-freebsd*|*-netbsd*)
dumpTTYFuncs()
{
cat<<'EOF'
ttyPort()
{
expr $1 : 'tty\(.*\)'
}
ttyLocks()
{
echo $UUCP_LOCKDIR/LCK..$1
}
ttyAliases()
{
echo /dev/$1
}
ttyDev()
{
echo /dev/$1
}
checkPort()
{
return
}
EOF
}
;;
*-svr4*|*-sysv4*|*-solaris*)
dumpTTYFuncs()
{
cat<<'EOF'
ttyPort()
{
port=`expr $1 : 'term\/\(.*\)' \| $1` # Usual
port=`expr $port : 'cua\/\(.*\)' \| $port` # Solaris
port=`expr $port : 'tty\(.*\)' \| $port` # Old-style
echo $port
}
ttyLocks()
{
devs=$1
locks="$UUCP_LOCKDIR/`$SVR4UULCKN /dev/$devs`" || {
echo "Sorry, I cannot determine the UUCP lock file name for
$devs"
exit 1
}
echo $locks
}
ttyAliases()
{
echo /dev/$1
}
ttyDev()
{
echo /dev/$1
}
checkPort()
{
return
}
EOF
}
;;
*)
dumpTTYFuncs()
{
Note ""
Note "Beware, I am guessing the tty naming conventions for your
system."
cat<<'EOF'
ttyPort()
{
expr $1 : 'tty\(.*\)'
}
ttyLocks()
{
echo $UUCP_LOCKDIR/LCK..$1
}
ttyAliases()
{
echo /dev/$1
}
ttyDev()
{
echo /dev/$1
}
checkPort()
{
return
}
EOF
}
;;
esac
case $TARGET in
*-*bsd*)
dumpSTTYFuncs()
{
cat<<EOF
ttyStty()
{
echo $STTYCMD -f \$tdev
}
ttySpeeds()
{
speeds=
if [ -z "\$SPEED" ]; then
for s in 38400 19200 9600 4800 2400 1200; do
$STTYCMD -f \$tdev \$s </dev/null >/dev/null 2>&1 &&
speeds="\$speeds \$s"
done
fi
echo \$speeds
}
EOF
}
;;
*)
dumpSTTYFuncs()
{
cat<<EOF
ttyStty()
{
echo $STTYCMD
}
ttySpeeds()
{
speeds=
if [ -z "\$SPEED" ]; then
for s in 38400 19200 9600 4800 2400 1200; do
onDev $STTYCMD \$s </dev/null >/dev/null 2>&1 && speeds="\$speeds
\$s"
done
fi
echo \$speeds
}
EOF
}
;;
esac
machdepPasswdWork()
{
true
}
#
# Default values for new scheduler config files
#
defaultLogFacility=daemon
defaultCountryCode=1
defaultAreaCode=
defaultLongDistancePrefix=1
defaultInternationalPrefix=011
defaultDialStringRules=\"etc/dialrules\"
defaultServerTracing=1
defaultContCoverPage=
defaultContCoverCmd=\"bin/mkcover\"
defaultDestControls=
defaultMaxConcurrentJobs=1
defaultMaxDials=12
defaultMaxSendPages=0xffffffff
defaultMaxTries=3
defaultModemGroup=
defaultPostScriptTimeout=180
defaultPS2FaxCmd=\"bin/ps2fax\"
defaultSendFaxCmd=\"bin/faxsend\"
defaultSendPageCmd=\"bin/pagesend\"
defaultSendUUCPCmd=\"bin/uucpsend\"
defaultSessionTracing=0xffffffff
defaultTimeOfDay=\"Any\"
defaultUse2D=Yes
defaultNotifyCmd=\"bin/notify\"
defaultUUCPLockDir=\"$DIR_LOCKS\"
defaultUUCPLockTimeout=30
defaultUUCPLockType=\"$LOCKS\"
fi
CONFIG_FILES=
if [ -f $DIR_SBIN/faxsetup.local ]; then
. $DIR_SBIN/faxsetup.local
CONFIG_FILES="$CONFIG_FILES $DIR_SBIN/faxsetup.local"
elif [ -f $DIR_SBIN/faxsetup.${CPU}-${VENDOR}-${OS}${RELEASE} ]; then
. $DIR_SBIN/faxsetup.${CPU}-${VENDOR}-${OS}${RELEASE}
CONFIG_FILES="$CONFIG_FILES
$DIR_SBIN/faxsetup.${CPU}-${VENDOR}-${OS}${RELEASE}"
elif [ -f $DIR_SBIN/faxsetup.${VENDOR}-${OS}${RELEASE} ]; then
. $DIR_SBIN/faxsetup.${VENDOR}-${OS}${RELEASE}
CONFIG_FILES="$CONFIG_FILES
$DIR_SBIN/faxsetup.${VENDOR}-${OS}${RELEASE}"
elif [ -f $DIR_SBIN/faxsetup.${CPU}-${VENDOR}-${OS} ]; then
. $DIR_SBIN/faxsetup.${CPU}-${VENDOR}-${OS}
CONFIG_FILES="$CONFIG_FILES
$DIR_SBIN/faxsetup.${CPU}-${VENDOR}-${OS}"
elif [ -f $DIR_SBIN/faxsetup.${VENDOR}-${OS} ]; then
. $DIR_SBIN/faxsetup.${VENDOR}-${OS}
CONFIG_FILES="$CONFIG_FILES $DIR_SBIN/faxsetup.${VENDOR}-${OS}"
elif [ -f $DIR_SBIN/faxsetup.${CPU}-${VENDOR} ]; then
. $DIR_SBIN/faxsetup.${CPU}-${VENDOR}
CONFIG_FILES="$CONFIG_FILES $DIR_SBIN/faxsetup.${CPU}-${VENDOR}"
elif [ -f $DIR_SBIN/faxsetup.${VENDOR} ]; then
. $DIR_SBIN/faxsetup.${VENDOR}
CONFIG_FILES="$CONFIG_FILES $DIR_SBIN/faxsetup.${VENDOR}"
elif [ -f $DIR_SBIN/faxsetup.${OS} ]; then
. $DIR_SBIN/faxsetup.${OS}
CONFIG_FILES="$CONFIG_FILES $DIR_SBIN/faxsetup.${OS}"
fi
#
# Flush cached values if something was specified on the
# command line
#
if onServer; then
REASON=
if [ $WITHARGS = yes ]; then
REASON="of command line parameters"
elif [ "$CONFIG_FILES" ]; then
REASON=`find $CONFIG_FILES -newer $DIR_SPOOL/etc/setup.cache -print
2>/dev/null`
test "$REASON" && REASON="$REASON has been updated"
fi
if [ "$REASON" -a -f $DIR_SPOOL/etc/setup.cache ]; then
Note "Flushing cached parameters because $REASON."
Note ""
rm -f $DIR_SPOOL/etc/setup.cache
fi
if [ -f $DIR_SPOOL/etc/setup.cache ]; then
Note "Reading cached parameters from $DIR_SPOOL/etc/setup.cache."
Note ""
. $DIR_SPOOL/etc/setup.cache
fi
fi
RM="$RMCMD -f" # remove file for use below
#
# Deduce the effective user id:
# 1. POSIX-style, the id program
# 2. the old whoami program
# 3. last gasp, check if we have write permission on /dev
#
euid=`id|$SED -e 's/.*uid=[0-9]*(\([^)]*\)).*/\1/'`
test -z "$euid" && euid=`(whoami) 2>/dev/null`
test -z "$euid" -a -w /dev && euid=root
if [ "$euid" != "root" ]; then
bitch "Sorry, but you must run this script as the super-user!"
boom
fi
onClient && Note "Checking system for proper client configuration."
onServer && Note "Checking system for proper server configuration."
#
# Verify configuration parameters are correct.
#
dirMisConfigured()
{
cat >&2 <<EOF
FATAL ERROR: $1 does not exist or is not a directory!
The directory $1 does not exist or this file is not a directory. If
the HylaFAX software is not yet installed you must do so before
running
this script. If the software is installed but is configured for use
in
a different location than this script expects then the software will
not
function correctly.
EOF
boom
}
#
# Check basic spooling area setup.
#
if onServer; then
test -d $DIR_SPOOL || {
cat >&2 <<-EOF
FATAL ERROR: $DIR_SPOOL does not exist or is not a directory!
The HylaFAX spooling area $DIR_SPOOL does not exist or this file is
not a directory. If the HylaFAX software is not yet installed you
must do so before running this script. If the software is installed
but is configured for use in a different location than this script
expects then you may override the default pathname by running this
script with a -with-DIR_SPOOL option; e.g.
faxsetup -with-DIR_SPOOL=/var/spool/someplace_unexpected
EOF
boom
}
cd $DIR_SPOOL
DIRS="archive bin client config dev docq doneq etc info log\
pollq recvq sendq status tmp"
for i in $DIRS; do
test -d $i || dirMisConfigured $DIR_SPOOL/$i
done
#
# XXX should check permission and ownership of sensitive dirs
#
JUNK="etc/setup.tmp"
trap "$RM \$JUNK; exit 1" 1 2 15
exec 5>etc/setup.tmp
echo '# Warning, this file was automatically generated by
faxsetup' >&5
echo '# on' `date` "for ${USER:-$euid}" >&5
fi
#
# Basic client installation.
#
if onClient; then
test -d $DIR_BIN || dirMisConfigured $DIR_BIN
for file in sendfax sendpage faxstat faxalter faxcover faxmail
faxrm; do
test -x $DIR_BIN/$file || {
cat >&2 <<EOF
FATAL ERROR: $DIR_BIN/$file is not an executable program!
The file $DIR_BIN/$file does not exist or this file is not
an executable program. If the HylaFAX software is not yet installed
you
must do so before running this script. If the software is installed
but
is configured for use in a different location than this script expects
then the software will not function correctly.
EOF
boom
}
done
test -d $DIR_LIBDATA || dirMisConfigured $DIR_LIBDATA
for file in pagesizes faxcover.ps typerules; do
test -f $DIR_LIBDATA/$file || {
cat >&2 <<EOF
FATAL ERROR: $DIR_LIBDATA/$file does not exist!
The file $DIR_LIBDATA/$file does not exist. If the HylaFAX
software is not yet installed you must do so before running this
script.
If the software is installed but is configured for use in a different
location than this script expects then the software will not function
correctly.
EOF
boom
}
done
test -d $DIR_LIBEXEC || dirMisConfigured $DIR_LIBEXEC
for file in textfmt; do
test -f $DIR_LIBEXEC/$file || {
cat >&2 <<EOF
FATAL ERROR: $DIR_LIBEXEC/$file does not exist!
The file $DIR_LIBEXEC/$file does not exist. If the HylaFAX
software is not yet installed you must do so before running this
script.
If the software is installed but is configured for use in a different
location than this script expects then the software will not function
correctly.
EOF
boom
}
done
otherBasicClientChecks
fi
#
# Server setup other than the spooling area.
#
if onServer; then
test -d $DIR_LIBEXEC || dirMisConfigured $DIR_LIBEXEC
test -d $DIR_SBIN || dirMisConfigured $DIR_SBIN
test -d $DIR_LOCKS || {
cat >&2 <<EOF
FATAL ERROR: $DIR_LOCKS does not exist or is not a directory!
The UUCP lockfile directory is not where it is expected or this file
is not a directory. It is possible to configure the HylaFAX software
to use a directory other than the configured one by setting up the
UUCPLockDir configuration parameter in each configuration file in the
$DIR_SPOOL/etc directory, but this is potentially error-prone.
Your best bet is to either create a symbolic link for the expected
pathname or reconfigure HylaFAX with the correct pathname and build
a new distribution.
EOF
boom
}
test -d $TIFFBIN || {
cat >&2 <<EOF
FATAL ERROR: $TIFFBIN does not exist or is not a directory!
The directory of tools from the TIFF software distribution is not
where it is expected or this file is not a directory. If you do not
have the TIFF distribution installed on this machine then you must
install it; the master FTP location is
ftp://ftp.sgi.com/graphics/tiff.
Otherwise, if the software is installed in a directory other than
where it is expected you can configure the HylaFAX software to use
an alternate directory by supplying a -with-TIFFBIN option when
running
this script; e.g. faxsetup -with-TIFFBIN=someplace_nonstandard.
EOF
boom
}
for file in tiffcp tiff2ps fax2ps tiffinfo; do
test -x $TIFFBIN/$file || {
cat >&2 <<EOF
FATAL ERROR: $TIFFBIN/$file does not exist or is not an executable
program!
The program $TIFFBIN/$file is not where it is expected or the file
is not executable. This program is part of the TIFF software
distribution that is required for use with HylaFAX. If you do not
have the TIFF distribution installed on this machine then you must
install it; the master FTP location is
ftp://ftp.sgi.com/graphics/tiff.
Otherwise, if the software is installed in a directory other than
where it is expected you can configure the HylaFAX software to use
an alternate directory by supplying a -with-TIFFBIN option when
running
this script; e.g. faxsetup -with-TIFFBIN=someplace_nonstandard.
EOF
boom
}
done
otherBasicServerChecks
fi
#
# Quick check to see if the manual pages are installed;
# perhaps not even worth the effort.
#
test -d $DIR_MAN || {
cat >&4 <<EOF
Warning: $DIR_MAN does not exist or is not a directory!
The directory for manual pages does not exist or is not a directory.
If this directory does not exist because the manual pages have not
been
installed then you can ignore this message. Otherwise you may want to
check out what happened to the manual pages.
EOF
}
#
# Utility program parameters.
#
appMisConfigured()
{
cat >&2 <<EOF
FATAL ERROR: $1 does not exist or is not an executable program!
The file:
$1
does not exist or this file is not an executable program. The HylaFAX
software expects this program to exist and be in this location. If
the
program resides in a different location then you must either
reconfigure
and rebuild HylaFAX or override the default pathnames in the
distributed
software through one of the HylaFAX configuration files (consult the
HylaFAX documentation).
EOF
boom
}
warnAppMisConfigured()
{
cat >&2 <<EOF
Warning: $1 does not exist or is not an executable program!
The file:
$1
does not exist or this file is not an executable program. The
HylaFAX software optionally uses this program and the fact that
it does not exist on the system is not a fatal error. If the
program resides in a different location and you do not want to
install a symbolic link for $1 that points to your program
then you must reconfigure and rebuild HylaFAX from source code.
EOF
}
if onServer; then
test -x $PATH_GETTY || warnAppMisConfigured $PATH_GETTY
test -x $PATH_VGETTY || warnAppMisConfigured $PATH_VGETTY
test -x $PATH_EGETTY || warnAppMisConfigured $PATH_EGETTY
for i in $CAT $CHGRP $CHMOD $CHOWN $CP $ECHO $GREP $LN $MKFIFO $MV
\
$RMCMD $SED $SENDMAIL; do
test -x $i || appMisConfigured $i
done
#
# Test/verify we know how to create FIFO special files.
#
case $MKFIFO in
*mknod)
mkfifo()
{
$MKFIFO $1 p
}
;;
*)
mkfifo()
{
$MKFIFO $1
}
;;
esac
$RM conffifo; JUNK="$JUNK conffifo"
if (mkfifo conffifo && test -p conffifo) >/dev/null 2>&1; then
true
elif test -r conffifo; then # NB: not everyone has test -p
true
else
cat >&2 <<EOF
FATAL ERROR: Don't know how to create FIFO special files!
We were unable to create a FIFO special file using the command:
$MKFIFO conffifo
HylaFAX requires support for FIFO special files and will not function
without this support. If your system does not have support for FIFO
files then reconfigure it to include support (on some systems this
support is optional and requires recompilation or rebuilding of the
kernel). If your system does have support for FIFO files but they are
not created using the expected program then you will need to
reconfigure
and rebuild HylaFAX from the source distribution or emulate the needed
functionality (possibly by providing a shell script).
EOF
boom
fi
fi
#
# AWK support.
#
if onServer; then
test -x $AWK || appMisConfigured $AWK
# awk must support functions and -v
CheckAwk()
{
($1 -v BAR=bar '
function foo(x) {
print "GOT" x
}
BEGIN { foo(BAR) }
' </dev/null | grep GOTbar) >/dev/null 2>&1
return
}
CheckAwk $AWK || {
cat >&2 <<EOF
FATAL ERROR: $AWK does not support needed functionality!
The following test does not work correctly with the configured awk
program.
----------------------------------------------------------
$AWK -v BAR=bar '
function foo(x) {
print "GOT" x
}
BEGIN { foo(BAR) }
' </dev/null | grep GOTbar
----------------------------------------------------------
The HylaFAX software requires an awk program that supports functions
and
the -v option for passing parameters from the command line. The
deficiency
of $AWK on your system will cause problems in various parts of the
HylaFAX
software.
If you are running an old version of $AWK then get a more up to date
version. Otherwise you can reconfigure HylaFAX from the source
distribution
to force a different awk program to be used or you can, as a last
resort,
try altering the shell scripts that are part of HylaFAX that use $AWK.
EOF
boom
}
fi
#
# Installation of Adobe Font Metric files
#
if onClient; then
FDIRS=`echo $PATH_AFM | sed "s/:/ /g"`
MATCH=
for FDIR in $FDIRS; do
if [ -d $FDIR ]; then
cd $FDIR
if [ -n "`ls | grep '.afm'`" ] || [ -f Courier ]; then
MATCH=$FDIR
break
fi
else
cat >&4 <<EOF
Warning: $FDIR does not exist or is not a directory!
The directory $FDIR does not exist or this file is not a directory.
This is the directory where the HylaFAX client applications expect to
locate font metric information to use in formatting ASCII text for
submission as facsimile. Without this information HylaFAX may
generate
illegible facsimile from ASCII text.
EOF
fi
done
if [ -z "$MATCH" ];then
cat >&4 <<EOF
Warning: Font metric information files were not found!
The font metric information file for the Courier font was not found in
the $PATH_AFM path. This means that client HylaFAX applications
that use this information to format ASCII text for submission as fax
will
use incorrect information and generate potentially illegible
facsimile.
If font metric information is present on your system in a directory
other
than $PATH_AFM then you can setup a symbolic link to the appropriate
directory or you can specify the appropriate pathname in the
configuration
file $DIR_LIBDATA/hyla.conf with a line of the form:
FontPath: someplace_unexpected
If you do not have the font metric information files loaded on your
system
system you can obtain them by public FTP from the place where you
obtained
the HylaFAX software or from the master FTP site at ftp.sgi.com.
EOF
fi
# return to spool directory
cd $DIR_SPOOL
fi
#
# PostScript RIP support.
#
if onServer; then
case $PS in
dps) PATH_PSRIP=$PATH_DPSRIP;;
imp) PATH_PSRIP=$PATH_IMPRIP;;
gs) PATH_PSRIP=$PATH_GSRIP;;
esac
if [ -x "$PATH_PSRIP" ]; then
if [ $PS = gs ]; then
# verify Ghostscript was linked with the tiffg3 device driver
$PATH_PSRIP -h | grep tiffg3 >/dev/null 2>&1 || {
cat >&2 <<EOF
FATAL ERROR: No tiffg3 driver in $PATH_PSRIP.
HylaFAX has been configured to use Ghostscript as the PostScript
imaging program but the output of $PATH_PSRIP -h does not
list the tiffg3 driver as a configured driver (see below).
----------------------------------------------------------
% $PATH_PSRIP -h
EOF
$PATH_PSRIP -h
----------------------------------------------------------
cat >&2 <<EOF
The tiffg3 driver is required for HylaFAX to operate correctly.
Consult the documentation for information on building Ghostscript
with the necessary TIFF driver and then rerun faxsetup when a new
Ghostscript has been installed.
EOF
boom
}
elif [ $PS = dps ]; then
JUNK="$JUNK ps.fax"
$CAT etc/dpsprinter.ps | $PATH_PSRIP >/dev/null 2>&1
if [ $? -eq 2 ]; then
if expr $RELEASE \>= 6.2 >/dev/null; then
cat >&2 <<EOF
FATAL ERROR: No DPS-based RIP available for IRIX $RELEASE!
The DPS-based PostScript RIP is a COFF executable and cannot be used
under IRIX $RELEASE. You must use a different RIP such as fw_gs.sw.gs
which is found on the SGI Freeware CD-ROM and which is based on the
freely distributed Ghostscript software package. This package is
also included in the binary distribution of HylaFAX for SGI systems
found on ftp.sgi.com.
Once you have installed the Ghostscript distribution rerun faxsetup
with the option -with-PS=gs to override the default setting.
EOF
boom
fi
fi
fi
elif [ $PS = dps ]; then
if expr $RELEASE \>= 6.2 >/dev/null; then
cat >&2 <<EOF
FATAL ERROR: No DPS-based RIP available for IRIX $RELEASE!
This distribution has been configured to use the DPS-based PostScript
RIP that is only available as a COFF executable. This program cannot
be used under IRIX $RELEASE. You must use a different RIP such as the
Ghostscript-based RIP in the fw_gs.sw.gs installation image which is
found on the SGI Freeware CD-ROM. The fw_gs package is also included
in the binary distribution of HylaFAX for SGI systems found on
ftp.sgi.com.
Once you have installed the Ghostscript distribution rerun faxsetup
with the option -with-PS=gs to override the default setting.
EOF
boom
else
appMisConfigured $PATH_PSRIP
fi
else
appMisConfigured $PATH_PSRIP
fi
#
# Force bin/ps2fax to point to the appropriate script.
#
Note ""
Note "Make $DIR_SPOOL/bin/ps2fax a link to
$DIR_SPOOL/bin/ps2fax.$PS."
Note ""
$RM bin/ps2fax
if [ -n "$LN_S" ]; then
$LN $LN_S ps2fax.$PS bin/ps2fax;
else
$LN bin/ps2fax.$PS bin/ps2fax;
fi
fi
#
# Find the full pathname of a file
# using the specified test operation.
#
findThing()
{
t="$1"; app=$2; path=$3;
case $app in
/*) eval $t $app && { echo $app; return; };;
esac
IFS=:
for i in $path; do
eval $t $i/$app && { echo $i/$app; return; }
done
}
#
# Find the full pathname of an executable.
#
findApp()
{
findThing "test -x" $1 $2
}
#
# Deal with known alternate locations for system files.
#
PickFile()
{
for i do
test -f $i && { echo $i; return; }
done
echo $1
}
INETDCONF=`PickFile $INETDCONF /etc/inetd.conf /etc/inet/inetd.conf`
ALIASES=`PickFile $ALIASES /etc/aliases /etc/ucbmail/aliases
/etc/mail/aliases /usr/mmdf/table/alias.user /usr/mmdf/table/alias.n`
SERVICES=`PickFile $SERVICES /etc/inet/services`
test -f /etc/master.passwd && PASSWD=/etc/master.passwd
#
# Figure out which brand of echo we have and define
# prompt and printf shell functions accordingly.
# Note that we assume that if the System V-style
# echo is not present, then the BSD printf program
# is available.
#
t=`(printf hello) 2>/dev/null`
if [ "$t" != hello ]; then
cat >&2 <<EOF
FATAL ERROR: No printf command or emulation!
HylaFAX requires a shell-level program that understands C-style
strings
(e.g. "\r") and has a mechanism for printing a string without a
trailing
newline character. The System V echo command and the BSD/POSIX-style
printf command are known to support these functions; however your
system
does not appear to have either of these programs. If you have a
program
hidden somewhere on your system be sure to include it in the search
path
used by faxsetup:
$PATH
and then rerun faxsetup. Otherwise a printf command is included in
the
GNU shell utilities package that can be retrieved by public FTP.
EOF