root/main/trunk/greenstone2/gsicontrol.sh @ 23963

Revision 23963, 7.7 KB (checked in by ak19, 9 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 *
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 browser.