]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blobdiff - config/vdradmin/install-ipfire.sh
Change vdradmin istallation part 1
[people/pmueller/ipfire-2.x.git] / config / vdradmin / install-ipfire.sh
diff --git a/config/vdradmin/install-ipfire.sh b/config/vdradmin/install-ipfire.sh
new file mode 100755 (executable)
index 0000000..af77b49
--- /dev/null
@@ -0,0 +1,279 @@
+#!/bin/bash
+# Copyright (c) 2005/6 Andreas Mair
+#
+#
+# Download and patchscript for VDRAdmin-AM
+# (based on install.sh Copyright (c) 2003 Frank (xpix) Herrmann)
+
+PATH=$PATH:/sbin:/bin:/usr/sbin:/usr/bin
+DESTDIR=${DESTDIR}
+LIBDIR=${LIBDIR:-$DESTDIR/usr/share/vdradmin}
+ETCDIR=${ETCDIR:-$DESTDIR/etc/vdradmin}
+DOCDIR=${DOCDIR:-$DESTDIR/usr/share/doc/vdradmin}
+BINDIR=${BINDIR:-$DESTDIR/usr/bin}
+LOCDIR=${LOCDIR:-$DESTDIR/usr/share/locale}
+MANDIR=${MANDIR:-$DESTDIR/usr/share/man/man1}
+LOGDIR=${LOGDIR:-$DESTDIR/var/log}
+PIDFILE=${PIDFILE:-$DESTDIR/var/run/vdradmind.pid}
+VIDEODIR=${VIDEODIR:-/var/video}
+EPGIMAGES=${EPGIMAGES:-$VIDEODIR/epgimages}
+VDRCONF=${VDRCONF:-/opt/vdr/etc}
+
+function usage()
+{
+       echo ""
+       echo "usage: $(basename $0) [-c | -u | -p | -h]"
+       echo ""
+       echo -e "\t-c : Run \"vdradmind -c\" after installation (=configure)."
+       echo -e "\t-u : Perform uninstall."
+       echo -e "\t-p : List and optionally install required Perl modules."
+       echo -e "\t-h : This message."
+       echo ""
+       exit 0
+}
+
+function killRunningVDRAdmin()
+{
+       local KILLED=0
+       local PID=$(pidof vdradmind)
+       [ "$PID" ] || PID=$(ps a | grep vdradmind.pl | grep perl | grep -v grep | cut -d' ' -f1)
+       if [ "$PID" ]; then
+               KILLED=1
+               kill $PID
+       fi
+
+       return $KILLED
+}
+
+# $1 - the Perl module to check for.
+function checkPerlModule()
+{
+       [ -z "$1" ] && return 1
+
+       local MODULE=$1
+       local ALT_MODULE=$2
+       local ALT_MESSAGE=
+       [ "$ALT_MODULE" ] && ALT_MESSAGE=" or $ALT_MODULE"
+
+       echo -n "Checking for Perl module $MODULE$ALT_MESSAGE... "
+       perl -ce 'BEGIN{$0 =~ /(^.*\/)/; $BASENAME = $1; unshift(@INC, $BASENAME . "lib/");} use '$MODULE >/dev/null 2>&1
+       if [ $? -eq 2 ]; then
+               if [ "$ALT_MODULE" ]; then
+                       perl -ce 'BEGIN{$0 =~ /(^.*\/)/; $BASENAME = $1; unshift(@INC, $BASENAME . "lib/");} use '$ALT_MODULE >/dev/null 2>&1
+                       [ $? -eq 0 ] && echo " $ALT_MODULE found" && return 0
+               fi
+               echo " MISSING"
+               read -p "Do you want to install $MODULE? [y/N]"
+               [ "$REPLY" = "y" -o "$REPLY" = "Y" ] && su -c "perl -MCPAN -e 'CPAN::install \"$MODULE\"'"
+       else
+               echo " found"
+       fi
+
+}
+
+function perlModules()
+{
+       echo ""
+       echo "*** Required ***"
+       checkPerlModule locale
+       checkPerlModule Env
+       checkPerlModule Template
+       checkPerlModule CGI
+       checkPerlModule IO::Socket
+       checkPerlModule Time::Local
+       checkPerlModule MIME::Base64
+       checkPerlModule File::Temp
+       checkPerlModule URI::Escape
+
+
+       echo ""
+       echo "You need Locale::gettext OR Locale::Messages"
+       checkPerlModule Locale::gettext Locale::Messages
+
+       echo ""
+       echo "*** Optional ***"
+       echo "* Required for AutoTimer email notification"
+       #checkPerlModule Net::SMTP
+       #checkPerlModule Authen::SASL
+       echo "* Required for AutoTimer email notification and CRAM-MD5 authentication"
+       checkPerlModule Digest::HMAC_MD5
+       echo "* Required if VDR and VDRAdmin-AM use different character encoding"
+       checkPerlModule Encode
+       echo "* Required for IPv6 support"
+       #checkPerlModule IO::Socket::INET6
+       echo "* Required if you want to use gzip'ed HTTP responses"
+       checkPerlModule Compress::Zlib
+}
+
+function makeDir()
+{
+       [ -z "$1" ] && return 1
+       local DIR=$1
+       local MUST_CREATE=${2:-0}
+       if [ -e "$DIR" -a ! -d "$DIR" ]; then
+               echo "$DIR exists but is no directory!"
+               echo "Aborting..."
+               return 1
+       elif [ -d $DIR -a $MUST_CREATE = 1 ]; then
+               echo "$DIR exists. Please remove it before calling install.sh!"
+               echo "Aborting..."
+               return 1
+       fi
+       if [ ! -e "$DIR" ]; then
+               mkdir -p "$DIR"
+               if [ $? -ne 0 ]; then
+                       echo "Failed to create directory $DIR!"
+                       echo "Aborting..."
+                       return 1
+               fi
+       fi
+
+       return 0
+}
+
+function doInstall()
+{
+       echo ""
+       echo "********* Installing VDRAdmin-AM *************"
+       echo ""
+
+       perlModules
+
+       makeDir $LIBDIR 1 && cp -r template lib $LIBDIR || exit 1
+  makeDir $DOCDIR && cp -r contrib COPYING CREDITS HISTORY INSTALL LGPL.txt README* REQUIREMENTS FAQ $DOCDIR || exit 1
+       makeDir $MANDIR && cp vdradmind.pl.1 $MANDIR/vdradmind.1 || exit 1
+       makeDir $ETCDIR || exit 1
+
+       (
+               cd locale
+               for lang in *
+               do
+                       makeDir $LOCDIR/$lang/LC_MESSAGES/ && install -m 644 $lang/LC_MESSAGES/vdradmin.mo $LOCDIR/$lang/LC_MESSAGES/vdradmin.mo || exit 1
+               done
+       )
+
+       local RESTART=
+       [ ! -e $BINDIR ] && mkdir -p $BINDIR
+       if [ -d $BINDIR ]; then
+               killRunningVDRAdmin
+               if [ $? -ne 0 ] ; then
+                       RESTART=1
+               echo "Killed running VDRAdmin-AM..."
+       fi
+       sed <vdradmind.pl >$BINDIR/vdradmind \
+           -e "s/^\(my \$SEARCH_FILES_IN_SYSTEM *=\) 0;/\1 1;/" \
+           -e "s:/usr/share/vdradmin/lib:${LIBDIR}/lib:" \
+           -e "s:/usr/share/vdradmin/template:${LIBDIR}/template:" \
+           -e "s:/var/log:${LOGDIR}:" \
+           -e "s:/var/run/vdradmind.pid:${PIDFILE}:" \
+           -e "s:\(\$ETCDIR *= \)\"/etc/vdradmin\";:\1\"${ETCDIR}\";:" \
+           -e "s:/usr/share/locale:${LOCDIR}:" \
+           -e "s:\(\$CONFIG{VIDEODIR} *= \)\"/video\";:\1\"${VIDEODIR}\";:" \
+           -e "s:\(\$CONFIG{EPGIMAGES} *= \)\"\$CONFIG{VIDEODIR}/epgimages\";:\1\"${EPGIMAGES}\";:" \
+                               -e "s:\(\$CONFIG{VDRCONFDIR} *= \)\"\$CONFIG{VIDEODIR}\";:\1\"${VDRCONF}\";:"
+
+               chmod a+x  $BINDIR/vdradmind
+
+       if [ "$CONFIG" ]; then
+       echo "Configuring VDRAdmin-AM..."
+       $BINDIR/vdradmind -c
+       fi
+
+       if [ "$RESTART" ]; then
+               echo "Restarting VDRAdmin-AM..."
+               $BINDIR/vdradmind
+       fi
+
+               echo ""
+               if [ -e $BINDIR/vdradmind.pl ]; then
+                       echo "Removing ancient $BINDIR/vdradmind.pl"
+                       rm -f $BINDIR/vdradmind.pl
+               fi
+               if [ -e $MANDIR/vdradmind.pl.1 ]; then
+                       echo "Removing ancient $MANDIR/vdradmind.pl.1"
+                       rm -f $MANDIR/vdradmind.pl.1
+               fi
+       else
+               echo "$BINDIR exists but is no directory!"
+               echo "Aborting..."
+               exit 1
+       fi
+
+       echo ""
+       echo ""
+       echo "VDRAdmin-AM has been installed!"
+       echo ""
+       if [ -z "$RESTART" ]; then
+               echo "Run \"$BINDIR/vdradmind\" to start VDRAdmin-AM."
+               echo ""
+       fi
+       echo "NOTE:"
+       echo "If you want to run VDRAdmin-AM in a different language you must set the LANG environment variable (see README)."
+       echo ""
+       echo "NOTE2:"
+       echo "If you would like VDRAdmin-AM to start at system's boot, please modify your system's init scripts."
+       exit 0
+}
+
+function doUninstall()
+{
+       echo ""
+       echo "********* Uninstalling VDRAdmin-AM *************"
+       echo ""
+
+       killRunningVDRAdmin
+       if [ -d $DOCDIR ]; then
+               rm -rf $DOCDIR
+       fi
+       if [ -d $LIBDIR ]; then
+               rm -rf $LIBDIR
+       fi
+       if [ -e $MANDIR/vdradmind.pl.1 ]; then
+               rm -f $MANDIR/vdradmind.pl.1
+       fi
+       if [ -e $MANDIR/vdradmind.1 ]; then
+               rm -f $MANDIR/vdradmind.1
+       fi
+       if [ -e $BINDIR/vdradmind.pl ]; then
+               rm -f $BINDIR/vdradmind.pl
+       fi
+       if [ -e $BINDIR/vdradmind ]; then
+               rm -f $BINDIR/vdradmind
+       fi
+       rm -f $LOCDIR/*/LC_MESSAGES/vdradmin.mo
+
+       echo ""
+       echo "VDRAdmin-AM has been uninstalled!"
+       echo ""
+       if [ -d $ETCDIR ]; then
+               echo "Your configuration files located in $ETCDIR have NOT been deleted!"
+               echo "If you want to get rid of them, please delete them manually!"
+               echo ""
+       fi
+}
+
+UNINSTALL=
+CONFIG=
+PERL=
+while [ "$1" ]
+do
+       case $1 in
+               -u) UNINSTALL=1;;
+               -c) CONFIG=1;;
+               -p) PERL=1;;
+               -h) usage;;
+               *) echo "Ignoring param \"$1\$.";;
+       esac
+       shift
+done
+
+if [ $(basename $0) = "uninstall.sh" -o "$UNINSTALL" ]; then
+       doUninstall
+elif [ "$PERL" ]; then
+       echo ""
+       echo "Testing required Perl modules..."
+       perlModules
+       echo "...done."
+else
+       doInstall
+fi