]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blob - config/vdradmin/install-ipfire.sh
Upgraded fetchmail to latest stable.
[people/pmueller/ipfire-2.x.git] / config / vdradmin / install-ipfire.sh
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
8 PATH=$PATH:/sbin:/bin:/usr/sbin:/usr/bin
9 DESTDIR=${DESTDIR}
10 LIBDIR=${LIBDIR:-$DESTDIR/usr/share/vdradmin}
11 ETCDIR=${ETCDIR:-$DESTDIR/etc/vdradmin}
12 DOCDIR=${DOCDIR:-$DESTDIR/usr/share/doc/vdradmin}
13 BINDIR=${BINDIR:-$DESTDIR/usr/bin}
14 LOCDIR=${LOCDIR:-$DESTDIR/usr/share/locale}
15 MANDIR=${MANDIR:-$DESTDIR/usr/share/man/man1}
16 LOGDIR=${LOGDIR:-$DESTDIR/var/log}
17 PIDFILE=${PIDFILE:-$DESTDIR/var/run/vdradmind.pid}
18 VIDEODIR=${VIDEODIR:-/var/video}
19 EPGIMAGES=${EPGIMAGES:-$VIDEODIR/epgimages}
20 VDRCONF=${VDRCONF:-/opt/vdr/etc}
21
22 function 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
35 function 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.
49 function 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
74 function 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
108 function 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
134 function 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
218 function 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
255 UNINSTALL=
256 CONFIG=
257 PERL=
258 while [ "$1" ]
259 do
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
268 done
269
270 if [ $(basename $0) = "uninstall.sh" -o "$UNINSTALL" ]; then
271 doUninstall
272 elif [ "$PERL" ]; then
273 echo ""
274 echo "Testing required Perl modules..."
275 perlModules
276 echo "...done."
277 else
278 doInstall
279 fi