#!/bin/sh
#
# Maustauschscript by PoC(@pocnet.net)
#
# Version 1.0 Final, 1.3.97, ich denke, das kann man jetzt auf
#  die Leute loslassen ;-) MTBE will NEVER be included!
#  VORSICHT beim Testen!
#  Ein Outfile geht schnell baden, das muss nicht sein.
#  UNBEDINGT Usernamen eintragen sowie Passwortfile anlegen (siehe unten) und
#  chmod 600, da Klartext.
# BUGS: No Doku, Exitcodes nicht eindeutig.
# Version 1.0, 1.3.97
#  Erste halbwegs sichere Version.
# Version 1.01, 21.4.97
#  Support für CS@OG's Antimime-Filter, falls vorhanden.
# Version 1.02, 14.5.97
#  Kleine Schönheitskorrekturen.
# Version 1.03, 6.1.98
#  Zeilenlängenbug Maus und Mausefalle ausgemerzt.
# Version 1.04, 5.6.98
#  Remote Capabilities ergaenzt (infile/outfile sind auf anderem Host abgelegt)
# Version 1.05, 23.7.98
#  Remote wieder 'rausgeworfen: tycho is tot. Geht jetzt per ftp direkt vom Mac.
# Version 1.06, 30.7.99
#  Locking ergaenzt, damit nicht zwei mtbe auf denselben Port zugreifen
#  ACHTUNG: Das Teil schaut nicht, ob der Port tatsaechlich belegt ist!
#  Wenn auf den Lock keinen Verlaß ist, crasht's halt.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
# or get it at http://www.gnu.org/licenses/gpl.html
# 
#####################################
# Verschiedene (Pfad)deklarationen
#####################################
TAUSCH=/home/poc/tausch				# Hier werden In- und Outfile abgelegt
INF=infile.txt					# Je nach FE und Umgebung, CASE!
ZINF=infile.zip
OUTF=outfile.txt
ZOUTF=outfile.zip
TEMP=/tmp
TAUSCHDEV=/dev/ttyI9
LOCKFILE="/var/lock/LCK..`basename $TAUSCHDEV`"
#####################################
# Programme
#####################################
# Ohne mtbe (by Wolfram_Roesler@ac2.maus.de) geht nix! Was unklar? -> RTFM.
MTBE="/usr/local/bin/mtbe -t $TAUSCHDEV -z AT -b 38400 -n 0781-9483621 -d 20 -r 20"
ZIP="/usr/bin/zip -m -T -j -k -b /tmp "
UZIP="/usr/bin/unzip -b -L -u "		# Diese beiden sind auch essentiell!
AMIME="/usr/local/bin/antimime"		# MIME-Filter (optional)
SEDSTR="s/:UW0/:UW=0/1"
#####################################
# Diverse Abfragen
#####################################
# Ohne Maustauscher kein Maustausch
if ! test -f /usr/local/bin/mtbe ; then
	echo "Das Maustauschbackend ist nicht oder nicht korrekt installiert."
	exit 1
fi

# Ohne Zip/Unzip kein Maustausch
if ! test -f /usr/bin/zip ; then
        echo "Der Packer ist nicht oder nicht korrekt installiert."
        exit 1
fi

if ! test -f /usr/bin/unzip ; then
        echo "Der Entpacker ist nicht oder nicht korrekt installiert."
        exit 1
fi

# Ohne Tauschverzeichnis kein Tausch
if ! test -d ${TAUSCH} ; then
	echo "Tauschdir existierte nicht, wird angelegt."
	mkdir ${TAUSCH}
fi

# Wenn kein Passwortfile, dann kein Maustausch
if ! test -r ${HOME}/.pwd ; then
	echo "Kein Passwortfile gefunden oder keine Berechtigung,"
	echo "kein Maustausch moeglich!"
	exit 1
fi

# Wenn das alte Outfile noch daliegt, dann kein Tausch.
if test -f ${TAUSCH}/${OUTF} ; then
	echo "Outfile bereits vorhanden, kein Maustausch moeglich!"
	exit 1
fi

# Wenn das Infile nicht existiert...
if ! test -f ${TAUSCH}/${INF} ; then
	echo "Infile.txt nicht vorhanden, verwende Defaultinfile!"
	printf "#CMD\n:ON\n:OE\n:PN\n:PSA\n:M75264077\n#\n" > ${TAUSCH}/${INF}
fi

# Wegen Cron
test -f /etc/profile && . /etc/profile

#####################################
# Mausefallen-UW0-Bug beheben
#####################################
mv ${TAUSCH}/${INF} ${TEMP}/
cat /tmp/${INF} |crlf |sed ${SEDSTR} |lfcr > ${TAUSCH}/${INF}
rm -f ${TEMP}/${INF}
#####################################
# Files packen
#####################################
# Infile und Tauschuploads -falls vorhanden- packen,
# altes gepacktes Outfile wegwerfen (falls da), 's wird wohl einsortiert sein.
cd ${TAUSCH}
rm -f ${ZINF} ${ZOUTF}
echo "Zipping Infile und Uploads..."
${ZIP} ${ZINF} *
#####################################
# Tausch oder nich?
#####################################
# Wenn Infile.zip da dann Tausch
if test -r ${TAUSCH}/${ZINF} ; then
	while test -f $LOCKFILE; do					# Solange Port gelockt ist
		sleep 1									# warten bis unlocked
	done
	echo "$$" > $LOCKFILE						# Nun locken wir 
	${MTBE} -l "Patrik Schindler" -p \@${HOME}/.pwd -i ${TAUSCH}/${ZINF} -o ${TAUSCH}/
	rm -f $LOCKFILE								# Port ist wieder frei
else
	echo "Infile.zip nicht vorhanden, kein Tausch."
	exit 1
fi
#####################################
# Files auspacken
#####################################
# Outfiles aus der Maus auspacken und die Schnulli-Downloads retten.
if test -r ${TAUSCH}/${ZOUTF} ; then
	${UZIP} ${ZOUTF}
	echo "Aufraeumen..."
	rm -f ${ZOUTF} ${ZINF}			# Gepackten Krempel in die Tonne werfen
	mv * ${HOME}/				# Alles nach home und
	if test -x ${AMIME} ; then		# Entweder kopieren oder konvertieren.
	  ${AMIME} ${HOME}/${OUTF} ${TAUSCH}/${OUTF}
	  rm -f ${HOME}/${OUTF}
	else
	  mv ${HOME}/${OUTF} ${TAUSCH}/
	fi
else
	echo "Kein Outfile, Tausch nicht erfolgreich."
	date
	exit 1
fi
#
echo "Feddisch."
exit 0
# Das war's.
