#!/bin/sh 

#
#  This file is part of the FEddy LXPoint package
#
#        Release 1.4.02  
# 
#  Maintainance : Peter Marbaise (pema@hippo.fido.de,2:2452/110.20)
# 
#  based on Ralf Jardon ( FIDO 2:2443/2011.11 e-mail ralf.jardon@uni-koeln.de )
# 	LXPoint package
#  based on Oliver Graf's FEddi  Fido 2:2454/130.69
#                                 email ograf@informatik.uni-koblenz.de
# 
#  Personal use allowed under the terms of the
# 
#               GNU GENERAL PUBLIC LICENSE Version 2
#               (see LICENSE for the complete text)
# 
# *-------------------------------------------------------------------
# 
#
# Copyright 1996,  Ralf Jardon FIDO@2:2443/2011.11 e-mail rjardon@punisher.wupper.de
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is 
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
#  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
#  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
#  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO
#  EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
#  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
#  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
#  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 
#  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 
#  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
VERSION="0.4 modified 1998 by pema@hippo.fido.de"
dialog=dialog
if [ `whoami` != root ]; then
$dialog --backtitle "LinuX FIDO point packet" \
--msgbox "Run setupfido as ROOT"  5 40
exit
fi
OLDDIR=$PWD
SPOOLDIR=/var/spool
BINDIR=/usr/local/lib/fnet
HOMEDIR=/home
exec 2> /tmp/tracefile
set -x
rm -f /tmp/FIDO*
#
# MAINLOOP
#
echo -e "\a"
$dialog --backtitle "LinuX FIDO point packet" \
--msgbox "Remember creating a user fnet FIRST!! \n
   See HELP or README for details"  7 41

while [ 0 ]; do
$dialog --backtitle "LinuX FIDO point packet" \
--title "Main setup menu" --menu "\n\
(c) 1996-97 by Ralf Jardon modified 98 by pema@hippo.fido.de" 19 65 10 \
"HELP" "Read the FIDO Point Setup HELP file" \
"REMOVE" "Remove installed Point Packet" \
"USERNAME" "Your login name" \
"FULLNAME" "Your Christian- and surname" \
"NODENR" "Nodenumber from Fido Boss" \
"POINTNR" "Your own pointnumber" \
"DEFAULTNODE" "Default line to poll" \
"PASSWORD" "Password protected session password" \
"MODEMPORT" "Port where your Modem is" \
"MODEMINIT" "Initialisation string" \
"DIAL" "Dial procedure" \
"REGION" "Country & City pre dial" \
"LOCATION" "Place where do you live" \
"VIEW" "Take a look at your settings" \
"INSTALL" "Install Fido stuff" \
"END" "Clear tmpfiles and exit" 2> /tmp/selection
 if [ $? = 1 -o $? = 255 ]; then
  rm -f /tmp/selection 
  clear
  exit
 fi
 SELECT="`cat /tmp/selection`"
 rm /tmp/selection
#
# HELP
#
case $SELECT in
HELP)
 $dialog --backtitle "LinuX FIDO point packet" \
--title "LinuX Point Setup Help" --textbox "$PWD/README" 20 79;;
#
# REMOVE ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#
REMOVE)
 $dialog --backtitle "LinuX FIDO point packet" \
--title "Remove FIDO Packet" --yesno "Are you really sure ??" 5 40
if [ $? = 0 ]; then
 rm -rf $BINDIR/fnet
 rm -rf $SPOOLDIR/fnet
 rm -f $HOMEDIR/$USERNAME/.feddirc
fi;;
#
# NAME ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#
USERNAME)
$dialog --backtitle "LinuX FIDO point packet" \
--title "Your login name" \
--inputbox "e.g. John" 8 45 2> /tmp/FIDO_USERNAME
USERNAME="`cat /tmp/FIDO_USERNAME`";;
# DIAL ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#
DIAL)
$dialog --backtitle "LinuX FIDO point packet" \
--title "Dial procedure" --menu "" 10 26 2 \
"T" "Tone" \
"P" "Pulse" 2> /tmp/FIDO_MODEMDIAL
MODEMDIAL="`cat /tmp/FIDO_MODEMDIAL`";;
#
# FULLNAME ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#
FULLNAME)
$dialog --backtitle "LinuX FIDO point packet" \
--title "Your Christianname" \
--inputbox "e.g. Ralf" 8 45 2> /tmp/FIDO_FULLNAME
FULLNAME="`cat /tmp/FIDO_FULLNAME`"
$dialog --backtitle "LinuX FIDO point packet" \
--title "Your surename" \
--inputbox "e.g. Jardon" 8 45 2> /tmp/FIDO_FULLNAME1
FULLNAME1="`cat /tmp/FIDO_FULLNAME1`";;
#
# NODENUMBER ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#
NODENR)
START=1
$dialog --backtitle "LinuX FIDO point packet" \
--title "Nodenumbers" --menu "How many lines to poll" 12 26 4 \
"1" "" \
"2" "" \
"3" "" \
"4" "" 2> /tmp/FIDO_NUMBER
NUMBER="`cat /tmp/FIDO_NUMBER`"
if [ $? = 0 ]; then
 while [ $START != $[NUMBER+1] ]; do
  $dialog --backtitle "LinuX FIDO point packet" \
--title "Nodenumber $START from FIDO Boss" \
--inputbox "e.g. 2:2443/2011" 8 40 2> /tmp/FIDO_NODENR$START
  let START+=1
 done
NODENR1="`cat /tmp/FIDO_NODENR1`"
NODENR2="`cat /tmp/FIDO_NODENR2`"
NODENR3="`cat /tmp/FIDO_NODENR3`"
NODENR4="`cat /tmp/FIDO_NODENR4`"
fi;;
#
# POINTNUMBER +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#
POINTNR)
$dialog --backtitle "LinuX FIDO point packet" \
--title "Your Pointnumber" \
--inputbox "e.g. 11" 8 40 2> /tmp/FIDO_POINTNR
POINTNR="`cat /tmp/FIDO_POINTNR`";;
#
# DEFAULTNODE +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#
DEFAULTNODE)
$dialog --backtitle "LinuX FIDO point packet" \
--title "Default line to poll (highest speed line)" \
--inputbox "e.g. f2013.n2443.z2" 8 47 2> /tmp/FIDO_DEFAULTNODE
DEFAULTNODE="`cat /tmp/FIDO_DEFAULTNODE`";;
#
# PASSWORD ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#
PASSWORD)
$dialog --backtitle "LinuX FIDO point packet" \
--title "Password for 'password protected sessions'" \
--inputbox "e.g. yz6th7ki" 8 50 2> /tmp/FIDO_PASSWORD
PASSWORD="`cat /tmp/FIDO_PASSWORD`";;
#
# MODEMPORT +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#
MODEMPORT)
$dialog --backtitle "LinuX FIDO point packet" \
--title "Modemport (ttyS1=com2)" \
--inputbox "e.g. ttyS1" 8 40 2> /tmp/FIDO_MODEMPORT
MODEMPORT="`cat /tmp/FIDO_MODEMPORT`";;
#
# LOCATION ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#
LOCATION)
$dialog --backtitle "LinuX FIDO point packet" \
--title "Place where do you live" \
--inputbox "e.g. Wuppertal" 8 40 2> /tmp/FIDO_LOCATION
LOCATION="`cat /tmp/FIDO_LOCATION`";;
#
# INIT ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#
MODEMINIT)
$dialog --backtitle "LinuX FIDO point packet" \
--title "Initialisation string" \
--inputbox "e.g. ATZ" 8 40 2> /tmp/FIDO_MODEMINIT
MODEMINIT="`cat /tmp/FIDO_MODEMINIT`";;
#
# REGION ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#
REGION)
$dialog --backtitle "LinuX FIDO point packet" \
--title "Country code without leading '0'" \
--inputbox "e.g. 49" 8 40 2> /tmp/FIDO_REGION1
REGION1="`cat /tmp/FIDO_REGION1`"
$dialog --backtitle "LinuX FIDO point packet" \
--title "City code without leading '0'" \
--inputbox "e.g. 202" 8 40 2> /tmp/FIDO_REGION2
REGION2="`cat /tmp/FIDO_REGION2`"
$dialog --backtitle "LinuX FIDO point packet" \
--title "Your privat phone" \
--inputbox "e.g. 637450" 8 40 2> /tmp/FIDO_PHONENR
PHONENR="`cat /tmp/FIDO_PHONENR`";;
#
# START +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#
INSTALL)
ERROR=false
for i in USERNAME DEFAULTNODE FULLNAME FULLNAME1 NODENR1 POINTNR PASSWORD \
LOCATION MODEMPORT MODEMINIT MODEMDIAL PHONENR REGION1 REGION2; do
FILE=/tmp/FIDO_$i 
if [ ! -s $FILE ]; then 
dialog --backtitle "LinuX FIDO point packet" \
--title "Checking dependencies..." \
--msgbox "Missing $i"  5 40
ERROR=true
fi
done
if [ $ERROR = false ]; then
$dialog --backtitle "LinuX FIDO point packet" \
--title "Install Fido stuff" --yesno "Are you really sure ??" 5 40
if [ $? = 0 ]; then
 #
 # expand fido stuff
 #
pushd $PWD
cd /
tar xzf $OLDDIR/fnet.spool.no_nl.tgz
if [ $? != 0 ]; then
 clear
     echo -e "\a TAR (Line 221) ERROR :-( please send '/tmp/tracefile' to me !!"
 exit
fi
popd
### install binaries
mkdir $BINDIR
mkdir $BINDIR/utils
mkdir $BINDIR/packer

ALLPRG="fscan ftoss futility fnlc fmbedit ifcico ifpack ifreq ifunpack"
for I in $ALLPRG; do \
    rm  -f $BINDIR/$I; \
   install -s -g uucp -o fnet -m 0710 ./bin/$I $BINDIR/$I
done
install -s -g uucp -o fnet -m 0710 ./bin/utils/copymove $BINDIR/utils/copymove
install -s -g uucp -o fnet -m 0750 ./bin/edi $BINDIR/edi
install -s -g uucp -o fnet -m 0750 ./bin/edi $BINDIR/ifpoll
install -s -g uucp -o fnet -m 0710 ./bin/edi $BINDIR/ifstat

ALLPRG="crc32 demo exportmsg faxforward formatmsg formatmsgprint \
	importtext identtemplate insertfortune insertlastword \
	mailforward mirror printmsg rot13 rot18 unidenttemplate \
        unpack wccount xfeddy xfeddy.readme"

for I in $ALLPRG; do \
   install -s -g uucp -o fnet -m 0755 ./bin/utils/$I $BINDIR/utils/$I
done
ALLPRG="arc funzip gunzip gzip lha rar unarj unzip zip"        
for I in $ALLPRG; do \
   install -s -g uucp -o fnet -m 0755 ./bin/packer/$I $BINDIR/packer/$I
done
####
cd $OLDDIR
 #
 # modify config files
 #
 cd config
 for i in config config.ifcico feddirc ifpoll fnlcrc; do
  sed -e s-USERNAME-$USERNAME-g -e s-DEFAULTNODE-$DEFAULTNODE-g \
-e s-FULLNAME1-"$FULLNAME1"-g -e s-NODENR1-$NODENR1-g -e s-NODENR2-$NODENR2-g \
-e s-NODENR3-$NODENR3-g -e s-NODENR4-$NODENR4-g -e s-POINTNR-$POINTNR-g \
-e s-VERSION-"$VERSION"-g \
-e s-PASSWORD-"$PASSWORD"-g -e s-LOCATION-"$LOCATION"-g -e s-MODEMPORT-$MODEMPORT-g \
-e s-REGION1-$REGION1-g -e s-REGION2-$REGION2-g -e s-MODEMINIT-"$MODEMINIT"-g \
-e s-MODEMDIAL-$MODEMDIAL-g -e s-PHONENR-$PHONENR-g -e s-FULLNAME-"$FULLNAME"-g $i > $i.$USERNAME
if [ $? != 0 ]; then
 clear
     echo -e "\a SED (Line 235) ERROR :-( please send '/tmp/tracefile' to me !!" 
 exit
fi
done
START=1
while [ $START != $[NUMBER+1] ]; do 
sed -e s-#password$START-password-g config.$USERNAME > config.buffer
rm config.$USERNAME && mv config.buffer config.$USERNAME
sed -e s-#password$START-password-g -e s-#address$START-address-g \
config.ifcico.$USERNAME > config.ifcico.buffer
rm config.ifcico.$USERNAME && mv config.ifcico.buffer config.ifcico.$USERNAME
let START+=1 
done
 cp config.$USERNAME $BINDIR/config
 cp config.ifcico.$USERNAME $BINDIR/config.ifcico
 cp feddirc.$USERNAME $HOMEDIR/$USERNAME/.feddirc 
 cp ifpoll.$USERNAME $BINDIR/ifpoll
 cp fnlcrc.$USERNAME $SPOOLDIR/fnet/nodelist/fnlcrc
 cd $OLDDIR
 #
 # change owner and permissions
 #
 chown -R fnet:uucp $SPOOLDIR/fnet
 if [ $? != 0 ]; then 
  ERROR=true 
 fi
 chmod -R ug+rw $SPOOLDIR/fnet
 if [ $? != 0 ]; then
  ERROR=true
 fi 
 chown fnet:uucp $BINDIR
 if [ $? != 0 ]; then
  ERROR=true
 fi 
 chown fnet:uucp $BINDIR/packer
 if [ $? != 0 ]; then
  ERROR=true
 fi 
 chown fnet:uucp $BINDIR/utils
 if [ $? != 0 ]; then
  ERROR=true
 fi 
 chmod 0770 $BINDIR
 if [ $? != 0 ]; then
  ERROR=true
 fi 
 chmod 0755 $BINDIR/packer
 if [ $? != 0 ]; then
  ERROR=true
 fi 
 chmod 0755 $BINDIR/utils
 if [ $? != 0 ]; then
  ERROR=true
 fi 
 chmod go+rw /dev/$MODEMPORT
 if [ $? != 0 ]; then
  ERROR=true
 fi 
 chmod u+x $BINDIR/ifpoll
 if [ $? != 0 ]; then
  ERROR=true
 fi 
 chown $USERNAME:users $HOMEDIR/$USERNAME/.feddirc
 if [ $? != 0 ]; then
  ERROR=true
 fi
 if [ $ERROR = true ]; then
 clear
     echo -e "\a CHOWN (Line 296) ERROR :-( please send '/tmp/tracefile' to me !!" 
 exit
 fi

 #
 # create and modify .bash_login for needed paths
 #
if [ ! -f $HOMEDIR/$USERNAME/.bash_login ]; then
  touch $HOMEDIR/$USERNAME/.bash_login
fi
echo -e "export PATH=\042\044PATH:/usr/local/lib/fnet:/usr/local/lib/fnet/packer\042" >> $HOMEDIR/$USERNAME/.bash_login
chown $USERNAME:users $HOMEDIR/$USERNAME/.bash_login
#
# install man pages
#
cp ./ifcico-man/ifcico.8 /usr/man/man8/.
cp ./doc/FEddy/man/* /usr/man/man1/.
cp ./doc/FEddy/samples/* /var/spool/fnet/msgbase/.
#
dialog --backtitle "LinuX FIDO point packet" \
--msgbox "Installation ready"  5 40
fi
fi;;
#
# VIEW ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#
VIEW)
rm -f /tmp/FIDO_LOG
touch /tmp/FIDO_LOG
cat << EOM >>/tmp/FIDO_LOG

 Loginname..................................: $USERNAME
 Fullname ..................................: $FULLNAME $FULLNAME1
 Nodenr 1...................................: $NODENR1
 Nodenr 2...................................: $NODENR2
 Nodenr 3...................................: $NODENR3
 Nodenr 4...................................: $NODENR4
 Default node to poll.......................: $DEFAULTNODE
 Pointnr....................................: $POINTNR
 Fido Password..............................: $PASSWORD
 Modem port.................................: $MODEMPORT
 Modem dial procedure.......................: $MODEMDIAL
 Modem initialisation string................: $MODEMINIT
 Region pre dial & privat phone.............: +$REGION1-$REGION2-$PHONENR
 Location...................................: $LOCATION
EOM
$dialog --backtitle "LinuX FIDO point packet" \
--title "LinuX Point settings" --textbox "/tmp/FIDO_LOG" 20 70;;
#
# END
#
END)
rm -f /tmp/FIDO_* 
rm -f /tmp/tracefile 
rm -f /tmp/selection
clear
exit;;
#
# END OF MAINLOOP
#
esac 
done
