source: main/trunk/greenstone2/gsicontrol.sh@ 23976

Last change on this file since 23976 was 23975, checked in by ak19, 13 years ago

Removed repetition in previously committed code to make it tidier and easier to maintain.

  • Property svn:executable set to *
File size: 7.9 KB
Line 
1#!/bin/bash
2
3testdone=0
4
5cgibin="cgi-bin"
6if [ -d "cgi-bin/$GSDLOS$GSDLARCH" ] ; then
7 cgibin="cgi-bin/$GSDLOS$GSDLARCH"
8fi
9
10
11function test-gsdlhome {
12 if [ $testdone == "0" ] ; then
13 if test -z "$GSDLHOME" ; then
14 echo "" ;
15 echo "Environment variable GSDLHOME not set." ;
16 echo " This needs to be set to run this gsicontrol command." ;
17 echo " Have you run 'source setup.bash'?" ;
18 echo "" ;
19 exit 1
20 else
21 echo "Using: " ;
22 echo " GSDLHOME = $GSDLHOME" ;
23 echo " GSDLOS = $GSDLOS" ;
24 fi
25 testdone=1
26 fi
27}
28
29function configure-cgi {
30 test-gsdlhome
31 if test ! -e "$GSDLHOME/$cgibin/gsdlsite.cfg" ; then
32 echo "Configuring $cgibin/gsdlsite.cfg" ;
33 sed "s@\*\*GSDLHOME\*\*@$GSDLHOME@g" "$cgibin/gsdlsite.cfg.in" > "$cgibin/gsdlsite.cfg" ;
34 else
35 echo "WARNING: Nothing done for make configure-cgi." ;
36 echo " If you wish to regenerate the file " ;
37 echo " $GSDLHOME/$cgibin/gsdlsite.cfg" ;
38 echo " from scratch, delete the existing file first." ;
39 fi
40}
41
42function configure-admin {
43 test-gsdlhome
44 echo "" ;
45 echo "Configuring admin user password:" ;
46 encrypted_password=`getpw` ;
47 if [ $? = "0" ] ; then
48 echo -e "[admin]\n<enabled>true\n<groups>administrator,colbuilder,all-collections-editor\n<password>$encrypted_password\n<username>admin" \
49 | txt2db -append "$GSDLHOME/etc/users.gdb" ;
50 else
51 echo "Did not set password" ;
52 fi
53 echo ""
54}
55
56
57function configure-port-and-connection {
58 test-gsdlhome
59
60 echo "Enter port number to use:"
61 read port ;
62 echo "Enter host IP to allow (127.0.0.1 is included by default):"
63 read hostIP ;
64 echo "Enter hostname or list of hosts to allow (localhost included by default):"
65 read hosts ;
66 echo "Allow external connections [yes/no]:"
67 read connection ;
68 if [ "x$connection" = "xyes" ] || [ "x$connection" = "xy" ] ; then
69 allowfromall="Allow"
70 else
71 allowfromall="Deny"
72 fi
73
74 lib_path_var="LD_LIBRARY_PATH" ;
75 if [ $GSDLOS = "darwin" ] ; then
76 lib_path_var="DYLD_LIBRARY_PATH"
77 fi
78
79 if test -e "$GSDLHOME/$cgibin/gsdlsite.cfg" ; then
80 collecthome=`egrep "^collecthome" "$GSDLHOME/$cgibin/gsdlsite.cfg" | awk '{print $2}'` ;
81 fi
82 if test -z $collecthome ; then
83 collecthome="$GSDLHOME/collect" ;
84 fi
85
86 if test ! -z $port ; then
87 echo "Port: $port" ;
88 echo "Stopping web server (if running)" ;
89 web-stop-tested ;
90 echo "Setting config file to use port $port";
91 cat "$GSDLHOME/apache-httpd/$GSDLOS$GSDLARCH/conf/httpd.conf.in" \
92 | sed "s@\*\*PORT\*\*@$port@g" \
93 | sed "s@\*\*CONNECTPERMISSION\*\*@$allowfromall@g" \
94 | sed "s@\*\*HOST_IP\*\*@$hostIP@g" \
95 | sed "s@\*\*HOSTS\*\*@$hosts@g" \
96 | sed "s@\*\*COLLECTHOME\*\*@$collecthome@g" \
97 | sed "s@\*\*GSDLHOME\*\*@$GSDLHOME@g" \
98 | sed "s@\*\*APACHE_HOME_OS\*\*@$GSDLHOME/apache-httpd/$GSDLOS$GSDLARCH@g" \
99 | sed "s@\*\*LIBRARY_PATH_VAR\*\*@$lib_path_var@g" \
100 > "$GSDLHOME/apache-httpd/$GSDLOS$GSDLARCH/conf/httpd.conf" ;
101 echo "Type '$0 web-start' to start the web server running on port $port" ;
102 fi ;
103 echo "Done" ;
104}
105
106
107MONITOR_SUCCESS="MAKE SUCCESSFUL"
108MONITOR_FAILED="MAKE FAILED"
109MONITOR_FINISHED="MAKE DONE"
110
111function configure-apache {
112 test-gsdlhome
113 configfile=$1 ;
114# if no configfile given, launch it with llssite.cfg. Create it from the template if needed.
115 if [ "x$configfile" = "x" ]; then
116 if test ! -e "$GSDLHOME/llssite.cfg" && test -e "$GSDLHOME/llssite.cfg.in" ; then
117 cp "$GSDLHOME/llssite.cfg.in" "$GSDLHOME/llssite.cfg" ;
118 fi
119 configfile="$GSDLHOME/llssite.cfg";
120 fi ;
121 echo "Configuring the apache webserver..." ;
122 port=`egrep "^portnumber" $configfile | awk -F= '{print $2}'` ;
123 hostIP=`egrep "^hostIP" $configfile | awk -F= '{print $2}'` ;
124 hosts=`egrep "^hosts" $configfile | awk -F= '{print $2}'` ;
125
126 externalaccess=`egrep "^externalaccess" $configfile | awk -F= '{print $2}'` ;
127 if [ "x$externalaccess" = "x1" ] ; then
128 externalaccess="yes"
129 else
130 externalaccess="no"
131 fi
132
133 echo -e "$port\n$hostIP\n$hosts\n$externalaccess" | configure-port-and-connection ;
134 if test -e "$GSDLHOME/apache-httpd/$GSDLOS$GSDLARCH/conf/httpd.conf" ; then
135 echo $MONITOR_SUCCESS;
136 else
137 echo $MONITOR_FAILED;
138 fi
139 echo $MONITOR_FINISHED
140}
141
142function configure-web {
143 for one_file in gs2-server.app gli.app client-gli.app gems.app ; do
144 if test ! -e "$one_file/Contents/document.wflow" ; then
145 sed "s@\*\*GSDLHOME\*\*@$GSDLHOME@g" "$one_file/Contents/document.wflow.in" > "$one_file/Contents/document.wflow"
146 fi
147 done ;
148
149 configure-cgi
150 configure-apache $1
151}
152
153# forces configure-cgi by deleting gsdlsite.cfg
154function reset-gsdlhome {
155 echo "" ;
156 if test -e "$GSDLHOME/$cgibin/gsdlsite.cfg" ; then
157 /bin/mv "$GSDLHOME/$cgibin/gsdlsite.cfg" "$GSDLHOME/$cgibin/gsdlsite.cfg.bak" ;
158 echo "**** Regenerating $GSDLHOME/$cgibin/gsdlsite.cfg" ;
159 echo "**** Previous version of file now $GSDLHOME/$cgibin/gsdlsite.cfg.bak" ;
160 fi
161
162 log4jprop=$GSDLHOME/lib/java/log4j.properties
163 sed "s^@gsdl2home@^$GSDLHOME^g" "$log4jprop.in" > "$log4jprop"
164
165 for one_file in gs2-server.app gli.app client-gli.app gems.app ; do
166 if test -e "$one_file/Contents/document.wflow" ; then
167 rm -f "$one_file/Contents/document.wflow"
168 fi
169 done ;
170
171 configure-web $1
172}
173
174function web-status {
175 test-gsdlhome
176 $GSDLHOME/apache-httpd/$GSDLOS$GSDLARCH/bin/apachectl status
177}
178
179function web-start {
180 test-gsdlhome
181 $GSDLHOME/apache-httpd/$GSDLOS$GSDLARCH/bin/apachectl start
182 if [ $? = 0 ] ; then
183 echo $MONITOR_SUCCESS;
184 else
185 echo $MONITOR_FAILED;
186 fi
187 echo $MONITOR_FINISHED;
188}
189
190function web-restart {
191 test-gsdlhome
192 $GSDLHOME/apache-httpd/$GSDLOS$GSDLARCH/bin/apachectl restart
193 if [ $? = 0 ] ; then
194 echo $MONITOR_SUCCESS;
195 else
196 echo $MONITOR_FAILED;
197 fi
198 echo $MONITOR_FINISHED;
199}
200
201function web-graceful {
202 test-gsdlhome
203 $GSDLHOME/apache-httpd/$GSDLOS$GSDLARCH/bin/apachectl graceful
204 if [ $? = 0 ] ; then
205 echo $MONITOR_SUCCESS;
206 else
207 echo $MONITOR_FAILED;
208 fi
209 echo $MONITOR_FINISHED;
210}
211
212function web-stop-tested {
213# This version runs without testing for GSDLHOME
214# Useful to be run as a target when we know test-gsdlhome has already
215# been done. This avoids an unnecessary repetition of printing
216# out the values of GSDLHOME and GSDLOS
217 if test -e "$GSDLHOME/apache-httpd/$GSDLOS$GSDLARCH/conf/httpd.conf" ; then
218 $GSDLHOME/apache-httpd/$GSDLOS$GSDLARCH/bin/apachectl stop ;
219 fi
220}
221
222function web-stop {
223 test-gsdlhome
224 web-stop-tested
225 if [ $? = 0 ] ; then
226 echo $MONITOR_SUCCESS;
227 else
228 echo $MONITOR_FAILED;
229 fi
230 echo $MONITOR_FINISHED;
231}
232
233function usage {
234 echo ""
235 echo " Usage: $0 <command>"
236 echo " where <command> is any of the following: "
237 echo " web-start"
238 echo " web-stop"
239 echo " web-restart"
240 echo " web-status"
241 echo " web-graceful"
242 echo " configure-admin"
243 echo " configure-web [config-filename]"
244 echo " configure-apache [config-filename]"
245 echo " configure-cgi"
246 echo " reset-gsdlhome [config-filename]\n\t(Save a copy of $cgibin/gsdlsite.cfg to preserve any customisations)"
247 echo " test-gsdlhome"
248 echo " web-stop-tested"
249 echo ""
250}
251
252
253if [[ $# < 1 || $# > 2 ]] ; then
254 usage
255 exit 0
256fi
257
258target=$1
259configfile=$2
260
261# remove any extraneous double quotes
262configfile=${configfile//\"/}
263
264case $target in
265 web-start)
266 web-start;;
267 web-stop)
268 web-stop;;
269 web-restart)
270 web-restart;;
271 web-status)
272 web-status;;
273 web-graceful)
274 web-graceful;;
275 configure-admin)
276 configure-admin;;
277 configure-web)
278 configure-web $configfile;;
279 configure-apache)
280 configure-apache $configfile;;
281 configure-cgi)
282 configure-cgi;;
283 set-port)
284 configure-port-and-connection;;
285 reset-gsdlhome)
286 reset-gsdlhome;;
287 test-gsdlhome)
288 test-gsdlhome;;
289 web-stop-tested)
290 web-stop-tested;;
291 *)
292 echo
293 echo "Command unrecognised: $target"
294 usage;;
295
296esac
297
298exit;
Note: See TracBrowser for help on using the repository browser.