source: gsdl/trunk/gsicontrol.sh@ 20829

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

PassEnv (DY)LD_LIBRARY_PATH entry added into linux/mac conf file. There's a placeholder that's written over by gsicontrol.sh. The Windows one at the moment need not be updated to do the same, as in Windows the PATH variable holds the path to various DLLs, and we don't want to expose the entire PATH unless we can't help it.

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