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

Last change on this file since 23948 was 23948, checked in by davidb, 13 years ago

Introduction of GSDLARCH to support linux32 and linux64 folders, if having multiple binaries in one Greenstone installation. In the event setup.bash cannont find bin/linux32 (or linux64) it sets GSDLARCH to be the empty string, thereby letting everything else continue as is used to be. Further, dymaically tests to see if cgi-bin/linux32 (or 64) exists, in which case this is the point used for this OS's cgi-bin programs

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