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

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

GSDLHOME placeholder is set to path to gsdlhome in .app files for Mac. Still need to test on windows

  • Property svn:executable set to *
File size: 7.7 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 configure-cgi
144 configure-apache $1
145}
146
147# forces configure-cgi by deleting gsdlsite.cfg
148function reset-gsdlhome {
149 if test -e "$GSDLHOME/$cgibin/gsdlsite.cfg" ; then
150 echo "**** WARNING. Local changes made to $GSDLHOME/$cgibin/gsdlsite.cfg will be lost.";
151 rm -f "$GSDLHOME/$cgibin/gsdlsite.cfg";
152 fi
153
154 sed "s@\*\*GSDLHOME\*\*@$GSDLHOME@g" "gs2-server.app/Contents/document.wflow.in" > "gs2-server.app/Contents/document.wflow"
155 sed "s@\*\*GSDLHOME\*\*@$GSDLHOME@g" "gli.app/Contents/document.wflow.in" > "gli.app/Contents/document.wflow"
156 sed "s@\*\*GSDLHOME\*\*@$GSDLHOME@g" "client-gli.app/Contents/document.wflow.in" > "client-gli.app/Contents/document.wflow"
157 sed "s@\*\*GSDLHOME\*\*@$GSDLHOME@g" "gems.app/Contents/document.wflow.in" > "gems.app/Contents/document.wflow"
158
159 configure-web $1
160}
161
162function web-status {
163 test-gsdlhome
164 $GSDLHOME/apache-httpd/$GSDLOS$GSDLARCH/bin/apachectl status
165}
166
167function web-start {
168 test-gsdlhome
169 $GSDLHOME/apache-httpd/$GSDLOS$GSDLARCH/bin/apachectl start
170 if [ $? = 0 ] ; then
171 echo $MONITOR_SUCCESS;
172 else
173 echo $MONITOR_FAILED;
174 fi
175 echo $MONITOR_FINISHED;
176}
177
178function web-restart {
179 test-gsdlhome
180 $GSDLHOME/apache-httpd/$GSDLOS$GSDLARCH/bin/apachectl restart
181 if [ $? = 0 ] ; then
182 echo $MONITOR_SUCCESS;
183 else
184 echo $MONITOR_FAILED;
185 fi
186 echo $MONITOR_FINISHED;
187}
188
189function web-graceful {
190 test-gsdlhome
191 $GSDLHOME/apache-httpd/$GSDLOS$GSDLARCH/bin/apachectl graceful
192 if [ $? = 0 ] ; then
193 echo $MONITOR_SUCCESS;
194 else
195 echo $MONITOR_FAILED;
196 fi
197 echo $MONITOR_FINISHED;
198}
199
200function web-stop-tested {
201# This version runs without testing for GSDLHOME
202# Useful to be run as a target when we know test-gsdlhome has already
203# been done. This avoids an unnecessary repetition of printing
204# out the values of GSDLHOME and GSDLOS
205 if test -e "$GSDLHOME/apache-httpd/$GSDLOS$GSDLARCH/conf/httpd.conf" ; then
206 $GSDLHOME/apache-httpd/$GSDLOS$GSDLARCH/bin/apachectl stop ;
207 fi
208}
209
210function web-stop {
211 test-gsdlhome
212 web-stop-tested
213 if [ $? = 0 ] ; then
214 echo $MONITOR_SUCCESS;
215 else
216 echo $MONITOR_FAILED;
217 fi
218 echo $MONITOR_FINISHED;
219}
220
221function usage {
222 echo ""
223 echo " Usage: $0 <command>"
224 echo " where <command> is any of the following: "
225 echo " web-start"
226 echo " web-stop"
227 echo " web-restart"
228 echo " web-status"
229 echo " web-graceful"
230 echo " configure-admin"
231 echo " configure-web [config-filename]"
232 echo " configure-apache [config-filename]"
233 echo " configure-cgi"
234 echo " reset-gsdlhome [config-filename]\n\t(Save a copy of $cgibin/gsdlsite.cfg to preserve any customisations)"
235 echo " test-gsdlhome"
236 echo " web-stop-tested"
237 echo ""
238}
239
240
241if [[ $# < 1 || $# > 2 ]] ; then
242 usage
243 exit 0
244fi
245
246target=$1
247configfile=$2
248
249# remove any extraneous double quotes
250configfile=${configfile//\"/}
251
252case $target in
253 web-start)
254 web-start;;
255 web-stop)
256 web-stop;;
257 web-restart)
258 web-restart;;
259 web-status)
260 web-status;;
261 web-graceful)
262 web-graceful;;
263 configure-admin)
264 configure-admin;;
265 configure-web)
266 configure-web $configfile;;
267 configure-apache)
268 configure-apache $configfile;;
269 configure-cgi)
270 configure-cgi;;
271 set-port)
272 configure-port-and-connection;;
273 reset-gsdlhome)
274 reset-gsdlhome;;
275 test-gsdlhome)
276 test-gsdlhome;;
277 web-stop-tested)
278 web-stop-tested;;
279 *)
280 echo
281 echo "Command unrecognised: $target"
282 usage;;
283
284esac
285
286exit;
Note: See TracBrowser for help on using the repository browser.