]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blame - config/vdradmin/install-ipfire.sh
Upgraded fetchmail to latest stable.
[people/pmueller/ipfire-2.x.git] / config / vdradmin / install-ipfire.sh
CommitLineData
ff1305e3
AF
1#!/bin/bash
2# Copyright (c) 2005/6 Andreas Mair
3#
4#
5# Download and patchscript for VDRAdmin-AM
6# (based on install.sh Copyright (c) 2003 Frank (xpix) Herrmann)
7
8PATH=$PATH:/sbin:/bin:/usr/sbin:/usr/bin
9DESTDIR=${DESTDIR}
10LIBDIR=${LIBDIR:-$DESTDIR/usr/share/vdradmin}
11ETCDIR=${ETCDIR:-$DESTDIR/etc/vdradmin}
12DOCDIR=${DOCDIR:-$DESTDIR/usr/share/doc/vdradmin}
13BINDIR=${BINDIR:-$DESTDIR/usr/bin}
14LOCDIR=${LOCDIR:-$DESTDIR/usr/share/locale}
15MANDIR=${MANDIR:-$DESTDIR/usr/share/man/man1}
16LOGDIR=${LOGDIR:-$DESTDIR/var/log}
17PIDFILE=${PIDFILE:-$DESTDIR/var/run/vdradmind.pid}
18VIDEODIR=${VIDEODIR:-/var/video}
19EPGIMAGES=${EPGIMAGES:-$VIDEODIR/epgimages}
20VDRCONF=${VDRCONF:-/opt/vdr/etc}
21
22function usage()
23{
24 echo ""
25 echo "usage: $(basename $0) [-c | -u | -p | -h]"
26 echo ""
27 echo -e "\t-c : Run \"vdradmind -c\" after installation (=configure)."
28 echo -e "\t-u : Perform uninstall."
29 echo -e "\t-p : List and optionally install required Perl modules."
30 echo -e "\t-h : This message."
31 echo ""
32 exit 0
33}
34
35function killRunningVDRAdmin()
36{
37 local KILLED=0
38 local PID=$(pidof vdradmind)
39 [ "$PID" ] || PID=$(ps a | grep vdradmind.pl | grep perl | grep -v grep | cut -d' ' -f1)
40 if [ "$PID" ]; then
41 KILLED=1
42 kill $PID
43 fi
44
45 return $KILLED
46}
47
48# $1 - the Perl module to check for.
49function checkPerlModule()
50{
51 [ -z "$1" ] && return 1
52
53 local MODULE=$1
54 local ALT_MODULE=$2
55 local ALT_MESSAGE=
56 [ "$ALT_MODULE" ] && ALT_MESSAGE=" or $ALT_MODULE"
57
58 echo -n "Checking for Perl module $MODULE$ALT_MESSAGE... "
59 perl -ce 'BEGIN{$0 =~ /(^.*\/)/; $BASENAME = $1; unshift(@INC, $BASENAME . "lib/");} use '$MODULE >/dev/null 2>&1
60 if [ $? -eq 2 ]; then
61 if [ "$ALT_MODULE" ]; then
62 perl -ce 'BEGIN{$0 =~ /(^.*\/)/; $BASENAME = $1; unshift(@INC, $BASENAME . "lib/");} use '$ALT_MODULE >/dev/null 2>&1
63 [ $? -eq 0 ] && echo " $ALT_MODULE found" && return 0
64 fi
65 echo " MISSING"
66 read -p "Do you want to install $MODULE? [y/N]"
67 [ "$REPLY" = "y" -o "$REPLY" = "Y" ] && su -c "perl -MCPAN -e 'CPAN::install \"$MODULE\"'"
68 else
69 echo " found"
70 fi
71
72}
73
74function perlModules()
75{
76 echo ""
77 echo "*** Required ***"
78 checkPerlModule locale
79 checkPerlModule Env
80 checkPerlModule Template
81 checkPerlModule CGI
82 checkPerlModule IO::Socket
83 checkPerlModule Time::Local
84 checkPerlModule MIME::Base64
85 checkPerlModule File::Temp
86 checkPerlModule URI::Escape
87
88
89 echo ""
90 echo "You need Locale::gettext OR Locale::Messages"
91 checkPerlModule Locale::gettext Locale::Messages
92
93 echo ""
94 echo "*** Optional ***"
95 echo "* Required for AutoTimer email notification"
96 #checkPerlModule Net::SMTP
97 #checkPerlModule Authen::SASL
98 echo "* Required for AutoTimer email notification and CRAM-MD5 authentication"
99 checkPerlModule Digest::HMAC_MD5
100 echo "* Required if VDR and VDRAdmin-AM use different character encoding"
101 checkPerlModule Encode
102 echo "* Required for IPv6 support"
103 #checkPerlModule IO::Socket::INET6
104 echo "* Required if you want to use gzip'ed HTTP responses"
105 checkPerlModule Compress::Zlib
106}
107
108function makeDir()
109{
110 [ -z "$1" ] && return 1
111 local DIR=$1
112 local MUST_CREATE=${2:-0}
113 if [ -e "$DIR" -a ! -d "$DIR" ]; then
114 echo "$DIR exists but is no directory!"
115 echo "Aborting..."
116 return 1
117 elif [ -d $DIR -a $MUST_CREATE = 1 ]; then
118 echo "$DIR exists. Please remove it before calling install.sh!"
119 echo "Aborting..."
120 return 1
121 fi
122 if [ ! -e "$DIR" ]; then
123 mkdir -p "$DIR"
124 if [ $? -ne 0 ]; then
125 echo "Failed to create directory $DIR!"
126 echo "Aborting..."
127 return 1
128 fi
129 fi
130
131 return 0
132}
133
134function doInstall()
135{
136 echo ""
137 echo "********* Installing VDRAdmin-AM *************"
138 echo ""
139
140 perlModules
141
142 makeDir $LIBDIR 1 && cp -r template lib $LIBDIR || exit 1
143 makeDir $DOCDIR && cp -r contrib COPYING CREDITS HISTORY INSTALL LGPL.txt README* REQUIREMENTS FAQ $DOCDIR || exit 1
144 makeDir $MANDIR && cp vdradmind.pl.1 $MANDIR/vdradmind.1 || exit 1
145 makeDir $ETCDIR || exit 1
146
147 (
148 cd locale
149 for lang in *
150 do
151 makeDir $LOCDIR/$lang/LC_MESSAGES/ && install -m 644 $lang/LC_MESSAGES/vdradmin.mo $LOCDIR/$lang/LC_MESSAGES/vdradmin.mo || exit 1
152 done
153 )
154
155 local RESTART=
156 [ ! -e $BINDIR ] && mkdir -p $BINDIR
157 if [ -d $BINDIR ]; then
158 killRunningVDRAdmin
159 if [ $? -ne 0 ] ; then
160 RESTART=1
161 echo "Killed running VDRAdmin-AM..."
162 fi
163 sed <vdradmind.pl >$BINDIR/vdradmind \
164 -e "s/^\(my \$SEARCH_FILES_IN_SYSTEM *=\) 0;/\1 1;/" \
165 -e "s:/usr/share/vdradmin/lib:${LIBDIR}/lib:" \
166 -e "s:/usr/share/vdradmin/template:${LIBDIR}/template:" \
167 -e "s:/var/log:${LOGDIR}:" \
168 -e "s:/var/run/vdradmind.pid:${PIDFILE}:" \
169 -e "s:\(\$ETCDIR *= \)\"/etc/vdradmin\";:\1\"${ETCDIR}\";:" \
170 -e "s:/usr/share/locale:${LOCDIR}:" \
171 -e "s:\(\$CONFIG{VIDEODIR} *= \)\"/video\";:\1\"${VIDEODIR}\";:" \
172 -e "s:\(\$CONFIG{EPGIMAGES} *= \)\"\$CONFIG{VIDEODIR}/epgimages\";:\1\"${EPGIMAGES}\";:" \
173 -e "s:\(\$CONFIG{VDRCONFDIR} *= \)\"\$CONFIG{VIDEODIR}\";:\1\"${VDRCONF}\";:"
174
175 chmod a+x $BINDIR/vdradmind
176
177 if [ "$CONFIG" ]; then
178 echo "Configuring VDRAdmin-AM..."
179 $BINDIR/vdradmind -c
180 fi
181
182 if [ "$RESTART" ]; then
183 echo "Restarting VDRAdmin-AM..."
184 $BINDIR/vdradmind
185 fi
186
187 echo ""
188 if [ -e $BINDIR/vdradmind.pl ]; then
189 echo "Removing ancient $BINDIR/vdradmind.pl"
190 rm -f $BINDIR/vdradmind.pl
191 fi
192 if [ -e $MANDIR/vdradmind.pl.1 ]; then
193 echo "Removing ancient $MANDIR/vdradmind.pl.1"
194 rm -f $MANDIR/vdradmind.pl.1
195 fi
196 else
197 echo "$BINDIR exists but is no directory!"
198 echo "Aborting..."
199 exit 1
200 fi
201
202 echo ""
203 echo ""
204 echo "VDRAdmin-AM has been installed!"
205 echo ""
206 if [ -z "$RESTART" ]; then
207 echo "Run \"$BINDIR/vdradmind\" to start VDRAdmin-AM."
208 echo ""
209 fi
210 echo "NOTE:"
211 echo "If you want to run VDRAdmin-AM in a different language you must set the LANG environment variable (see README)."
212 echo ""
213 echo "NOTE2:"
214 echo "If you would like VDRAdmin-AM to start at system's boot, please modify your system's init scripts."
215 exit 0
216}
217
218function doUninstall()
219{
220 echo ""
221 echo "********* Uninstalling VDRAdmin-AM *************"
222 echo ""
223
224 killRunningVDRAdmin
225 if [ -d $DOCDIR ]; then
226 rm -rf $DOCDIR
227 fi
228 if [ -d $LIBDIR ]; then
229 rm -rf $LIBDIR
230 fi
231 if [ -e $MANDIR/vdradmind.pl.1 ]; then
232 rm -f $MANDIR/vdradmind.pl.1
233 fi
234 if [ -e $MANDIR/vdradmind.1 ]; then
235 rm -f $MANDIR/vdradmind.1
236 fi
237 if [ -e $BINDIR/vdradmind.pl ]; then
238 rm -f $BINDIR/vdradmind.pl
239 fi
240 if [ -e $BINDIR/vdradmind ]; then
241 rm -f $BINDIR/vdradmind
242 fi
243 rm -f $LOCDIR/*/LC_MESSAGES/vdradmin.mo
244
245 echo ""
246 echo "VDRAdmin-AM has been uninstalled!"
247 echo ""
248 if [ -d $ETCDIR ]; then
249 echo "Your configuration files located in $ETCDIR have NOT been deleted!"
250 echo "If you want to get rid of them, please delete them manually!"
251 echo ""
252 fi
253}
254
255UNINSTALL=
256CONFIG=
257PERL=
258while [ "$1" ]
259do
260 case $1 in
261 -u) UNINSTALL=1;;
262 -c) CONFIG=1;;
263 -p) PERL=1;;
264 -h) usage;;
265 *) echo "Ignoring param \"$1\$.";;
266 esac
267 shift
268done
269
270if [ $(basename $0) = "uninstall.sh" -o "$UNINSTALL" ]; then
271 doUninstall
272elif [ "$PERL" ]; then
273 echo ""
274 echo "Testing required Perl modules..."
275 perlModules
276 echo "...done."
277else
278 doInstall
279fi