# faxmenu
# ID 6.3 97/10/20
#
# The purpose of this script is to provide the end user with a
# CADOL like interface to common VSI*FAX commands.  This
# script is designed to be called from a program record.
#
# -----------------------------------------------------------------------------
# CHANGE HISTORY SECTION :
#  Rel#    Date                    Description
#  ----- --------   -----------------------------------------------------------
#  5.3.0 03/12/96   Created.
#  5.3.0 10/28/96   Added selection to display fax log.
#  5.3.0 10/28/96   SPR#003839 - Selection #9 "purge outgoing" was calling the
#  5.3.0            "purge expired" function Fax_Purget instead of the purge
#  5.3.0            outgoing function Fax_Purgeo.
#  6.1.0 08/13/97   Modified to also work with version 3 of VSI*FAX.
#  6.1.0            VSI*FAX Gold Series fax server.
#  6.1.0 08/21/97   Added selection to print fax log.
#  6.1.0 10/20/97   SPR#005315 - Print Fax Log option did not work on VS/95.
#  6.1.0 10/20/97   SPR#005338 - Print Fax Log option - could not slave print
#  6.1.0            (printer 0).
# -----------------------------------------------------------------------------
#
# Check version of VSI*FAX
#
if [ -f /etc/vsifax3.sh ]
then
  VSIREL=3
else
  VSIREL=2
fi

#
# Make sure paths are set correctly
#
if [ $VSIREL -eq 2 ]
then
  SET_VSI_ENV=". /etc/vsifax.sh"
else
  SET_VSI_ENV=". /etc/vsifax3.sh"
fi

#
# Constant Definitions
#
ESCC=27
CANC=24
DATE=`/bin/date +%D`
VUSER=${VAE_ORIG-$LOGNAME}
#
MENU_SEL01="CONFIGURE MODEM FOR FAX"
MENU_SEL02="CONFIG. MODEM FOR DIAL-IN"
MENU_SEL03="VSI*FAX STATUS"
MENU_SEL04="CANCEL FAX REQUEST"
MENU_SEL05="ENABLE FAX"
MENU_SEL06="START VSI*FAX SCHEDULER"
MENU_SEL07="STOP VSI*FAX SCHEDULER"
MENU_SEL08="PURGE EXPIRED REQUESTS"
MENU_SEL09="PURGE OUTGOING FAX LOG"
MENU_SEL10="DISPLAY FAX LOG"
MENU_SEL11="PRINT FAX LOG"
SELECTIONS="[1,2,3,4,5,6,7,8,9,10,11]"
#

#
# ----------------------------------------------------------------------------
# Display menu
# ----------------------------------------------------------------------------
#
display_menu()
{
  clear
  cursorat 0 0
  echo "$DATE                                                    USER $VUSER"
  echo "                             VSI*FAX

   1. $MENU_SEL01
   2. $MENU_SEL02
   3. $MENU_SEL03
   4. $MENU_SEL04
   5. $MENU_SEL05
   6. $MENU_SEL06
   7. $MENU_SEL07
   8. $MENU_SEL08
   9. $MENU_SEL09
  10. $MENU_SEL10
  11. $MENU_SEL11

  ?\c"
}

#
# ----------------------------------------------------------------------------
# Exit menu
# ----------------------------------------------------------------------------
#
exit_menu()
{
  exit 0
}

#
# ----------------------------------------------------------------------------
# configure modem for fax
# ----------------------------------------------------------------------------
#
Modem_Fax()
{
if [ $VSIREL -eq 2 ]
then
  CMD="fxsched -s"
else
  CMD="vfxsched start > /dev/null"
fi
#
su root << END
$VAE/data/fax/etc/modem_fx
$SET_VSI_ENV
$CMD
END
}

#
# ----------------------------------------------------------------------------
# configure modem for dial-in
# ----------------------------------------------------------------------------
#
Modem_In()
{
if [ $VSIREL -eq 2 ]
then
  CMD="fxshut -s"
else
  CMD="vfxsched stop > /dev/null"
fi
#
su root << END
$SET_VSI_ENV
$CMD
$VAE/data/fax/etc/modem_in
END
}

#
# ----------------------------------------------------------------------------
# VSI*FAX Status
# ----------------------------------------------------------------------------
#
Fax_Status()
{
if [ $VSIREL -eq 2 ]
then
  CMD="fxstat -t"
else
  CMD="vfxstat -t"
fi
clear
$SET_VSI_ENV
$CMD | pg -p "<enter> to continue..."
}

#
# ----------------------------------------------------------------------------
# Cancel VSI*FAX request
# ----------------------------------------------------------------------------
#
Fax_Cancel()
{
Fax_Status
#
if [ $VSIREL -eq 2 ]
then
  CMD="fxcancel"
else
  CMD="vfxcancel"
fi
echo
ID=`GetInput -prompt "Request ID?" -cancel ABORT -esc ABORT`

[ $RET = $ESCC ] && exit_menu # Exit if ESC
if [ $RET -eq $CANC ]         # try again if Cancel
then
  return 0
fi
if [ "$ID" -eq "" ]         # try again if Cancel
then
  return 0
fi

su root << END
$SET_VSI_ENV
$CMD $ID
END
}

#
# ----------------------------------------------------------------------------
# Enable Fax
# ----------------------------------------------------------------------------
#
Fax_Enable()
{
if [ $VSIREL -eq 2 ]
then
  CMD1="fxenable fax1"
  CMD2="fxaccept fax1"
  CMD3="fxrcv fax1"
else
  CMD1="vfxadmin enable fax1"
  CMD2="vfxadmin accept fax1"
  CMD3="vfxadmin receive fax1"
fi
su root << END
$SET_VSI_ENV
$CMD1
$CMD2
$CMD3
END
}

#
# ----------------------------------------------------------------------------
# Start VSI*FAX Scheduler
# ----------------------------------------------------------------------------
#
Fax_Sched()
{
if [ $VSIREL -eq 2 ]
then
  CMD="fxsched -s"
else
  CMD="vfxsched start > /dev/null"
fi
su root << END
$SET_VSI_ENV
$CMD
END
}

#
# ----------------------------------------------------------------------------
# Shut down VSI*FAX Scheduler
# ----------------------------------------------------------------------------
#
Fax_Shut()
{
if [ $VSIREL -eq 2 ]
then
  CMD="fxshut -s"
else
  CMD="vfxsched stop > /dev/null"
fi

su root << END
$SET_VSI_ENV
$CMD
END
}

#
# ----------------------------------------------------------------------------
# Purge Expired Requests
# ----------------------------------------------------------------------------
#
Fax_Purget()
{
if [ $VSIREL -eq 2 ]
then
  CMD="fxpurge -t 24"
else
  CMD="vfxpurge -e 1"
fi

su root << END
$SET_VSI_ENV
$CMD
END
}

#
# ----------------------------------------------------------------------------
# Purge Outgoing Fax Log
# ----------------------------------------------------------------------------
#
Fax_Purgeo()
{
if [ $VSIREL -eq 2 ]
then
  CMD="fxpurge -o 24"
else
  CMD="vfxpurge -o 1"
fi

su root << END
$SET_VSI_ENV
$CMD
END
}

#
# ----------------------------------------------------------------------------
# Display VSI*FAX Outgoing Fax Log
# ----------------------------------------------------------------------------
#
Fax_Log()
{
if [ $VSIREL -eq 2 ]
then
  CMD="flog"
else
  CMD="vfxolog"
fi

su root << END
$SET_VSI_ENV
clear
$CMD | pg -p "<enter> to continue..."
END
}

#
# ----------------------------------------------------------------------------
# scat - Slave print
# ----------------------------------------------------------------------------
#
scat()
{
echo "\033;6"
cat $1
echo "\014"
echo "\033;1"
}

#
# ----------------------------------------------------------------------------
# Print VSI*FAX Outgoing Fax Log
# ----------------------------------------------------------------------------
#
Print_Fax_Log()
{
valid=""
while [ "$valid" = "" ]
do
  PRINTER=""
  while [ "$PRINTER" = "" ]
  do
   PRINTER=`GetInput -prompt "Select Printer Number:" -cancel ABORT -esc ABORT`
   [ $RET = $ESCC ] && exit_menu # Exit if ESC
   if [ $RET -eq $CANC ]         # try again if Cancel
   then
     return 0
   fi
  done

  if [ $PRINTER -eq 0 ]
  then
    valid=$PRINTER
  else
    grep -i "^${PRINTER}	" /versyss/config/printers > /tmp/cadolprt$$
    if [ $? -eq 0 ]
    then
      valid=$PRINTER
    fi
  fi
done

if [ $VSIREL -eq 2 ]
then
  CMD="flog"
else
  CMD="vfxolog"
fi

if [ $PRINTER -eq 0 ]
then
  type="slave"
else
  type=`cat /tmp/cadolprt$$ | cut -d"	" -f2`
  cadolprtcmd=`cat /tmp/cadolprt$$ | cut -d"	" -f3`
fi

if [ $type = "d" ]
then
  PRTCMD="$CMD > $cadolprtcmd"
fi

if [ $type = "f" ]
then
  PRTCMD="$CMD | $cadolprtcmd"
fi

if [ $type = "F" ]
then
  PRTCMD="$CMD | $cadolprtcmd"
fi

if [ $type = "i" ]
then
  PRTCMD="$CMD | $cadolprtcmd"
fi

rm -f /tmp/cadolprt$$

if [ $type = "slave" ]
then
  su root << END
. /etc/VAE
$SET_VSI_ENV
echo "\033;6"
$CMD
echo "\014"
echo "\033;1"
END
else
  su root << END
. /etc/VAE
$SET_VSI_ENV
sh -c "$PRTCMD"
END
fi
}

#
# ----------------------------------------------------------------------------
# MAIN ROUTINE STARTS HERE
# ----------------------------------------------------------------------------
#

while true
do
  display_menu

  choice=`GetInput -prompt "" -cancel ABORT -esc ABORT -bytes 2 -range $SELECTIONS`

  RET=$?                        # get the value entered
  [ $RET = $ESCC ] && exit_menu # Exit if ESC
  if [ $RET -eq $CANC ]         # try again if Cancel
  then
    continue
  fi

  case  "$choice" in
  1)
    Modem_Fax
    ;;
  2)
    Modem_In
    ;;
  3)
    Fax_Status
    ;;
  4)
    Fax_Cancel
    ;;
  5)
    Fax_Enable
    ;;
  6)
    Fax_Sched
    ;;
  7)
    Fax_Shut
    ;;
  8)
    Fax_Purget
    ;;
  9)
    Fax_Purgeo
    ;;
  10)
    Fax_Log
    ;;
  11)
    Print_Fax_Log
    ;;
  esac
done

