source: gsdl/trunk/gsicontrol.bat@ 20619

Last change on this file since 20619 was 20615, checked in by ak19, 15 years ago

Brought up to date with the recent changes made to server.jar and related files, including the gsicontrol.sh for Linux, so that the address resolution method (hostname from IP, IP, localhost, 127.0.0.1) can be specified by the user in the GSI dialog.

File size: 8.0 KB
Line 
1@echo off
2
3setlocal
4::set testdone=0
5set target=%1
6set configfile=%2
7
8:: Construct the signal using the unique GS2 installation
9:: directory (after replacing colons and backslashes)
10for /F "delims=*" %%T in ('"echo %GSDLHOME%| bin\windows\sed.exe s@[\\:]@_@g"') do set signal=%%T
11set GS2_APACHE_HTTPD_SIGNAL=GS2_APACHE_HTTPD_%signal%
12rem echo Signal is: %GS2_APACHE_HTTPD_SIGNAL%
13
14:: Need to get greenstone installation directory
15:: set cwd=%CD%
16
17set MONITOR_SUCCESS=MAKE SUCCESSFUL
18set MONITOR_FAILED=MAKE FAILED
19set MONITOR_FINISHED=MAKE DONE
20
21:: check that we have >=1 and <=2 arguments
22:chkargs
23if "%target%" == "" goto usage
24if not "%3" == "" goto usage
25 goto begincmd
26
27
28:usage
29echo.
30echo Usage: %0 command
31echo where command is any of the following:
32echo web-start
33echo web-stop
34echo web-restart
35::echo web-status
36::echo web-graceful
37echo configure-admin
38echo configure-web [config-filename]
39echo configure-apache [config-filename]
40echo configure-cgi
41echo test-gsdlhome
42echo web-stop-tested
43echo.
44goto exit
45
46
47:begincmd
48:: web-stop-tested command assumes GSDLHOME/greenstone environment is already set
49if "%target%" == "web-stop-tested" goto stoptest
50
51:: For all other commands, the greenstone environment needs to be set first before they can be run
52:testgsdl
53if NOT "%GSDLHOME%" == "" if NOT "%GSDLOS%" == "" goto commands
54echo.
55echo Environment variable GSDLHOME (or GSDLOS) not set.
56echo This needs to be set to run the gsicontrol command %target%.
57echo Have you run setup.bat?
58echo.
59goto exit
60
61
62::MAIN MENU
63:commands
64echo.
65echo Using:
66echo GSDLHOME = %GSDLHOME%
67echo GSDLOS = %GSDLOS%
68echo.
69
70if "%target%" == "web-start" goto start
71if "%target%" == "web-stop" goto stop
72if "%target%" == "web-restart" goto restart
73if "%target%" == "configure-admin" goto cfgadmin
74if "%target%" == "configure-web" goto cfgweb
75if "%target%" == "configure-apache" goto cfgapach
76if "%target%" == "configure-cgi" goto cfgcgi
77:: already tested gsdlhome (and web-stop-tested) above, don't want to keep looping on it
78if "%target%" == "test-gsdlhome" goto exit
79rem if "%target%" == "web-stop-tested" goto exit
80rem if "%target%" == "web-status" goto status
81rem if "%target%" == "web-graceful" goto graceful
82if "%target%" == "set-port" goto setport
83:: unknown command
84echo Command unrecognised: %target%
85goto usage
86
87
88:start
89:: START starts the app in a new console named by the string following immediately thereafter
90:: then we start up apache-httpd and pass the signal that the stop command will respond to
91START "%GSDLHOME%\apachectl" "%GSDLHOME%\bin\windows\starthttpd.exe" %GS2_APACHE_HTTPD_SIGNAL% "%GSDLHOME%\apache-httpd\windows\bin\httpd.exe"
92echo %MONITOR_SUCCESS%
93echo %MONITOR_FINISHED%
94goto exit
95
96:stop
97:stoptest
98if exist "%GSDLHOME%\apache-httpd\%GSDLOS%\conf\httpd.conf" "%GSDLHOME%\bin\windows\stophttpd.exe" %GS2_APACHE_HTTPD_SIGNAL% SILENT
99if "%target%" == "web-stop-tested" goto exit
100echo %MONITOR_SUCCESS%
101echo %MONITOR_FINISHED%
102goto exit
103
104:restart
105if exist "%GSDLHOME%\apache-httpd\%GSDLOS%\conf\httpd.conf" "%GSDLHOME%\bin\windows\stophttpd.exe" %GS2_APACHE_HTTPD_SIGNAL%
106:: wait 4s, see http://malektips.com/dos0017.html. The number in the 2nd line is variable (number of seconds to wait)
107ping 127.0.0.1 -n 2 -w 1000 > nul
108ping 127.0.0.1 -n 4 -w 1000> nul
109::"%GSDLHOME%\bin\windows\starthttpd.exe" %GS2_APACHE_HTTPD_SIGNAL% "%GSDLHOME%\apache-httpd\windows\bin\httpd.exe"
110goto start
111
112::status
113::graceful
114::echo Command %target% is not operational on this operating system
115::goto exit
116
117
118::configure-admin
119:cfgadmin
120echo.
121echo Configuring admin user password:
122for /F %%T in ('getpw') do set encrypted_password=%%T
123
124:: Have to create an intermediate file in the following, because echoing
125:: lines straight into a pipe adds spaces before the end of each line.
126:: When piping, need to double-escape the angle brackets with three hat signs,
127:: but when redirecting to a file, need to escape only once (one hat sign).
128if ERRORLEVEL 0 (
129 (
130 echo [admin]
131 echo ^<enabled^>true
132 echo ^<groups^>administrator,colbuilder,all-collections-editor
133 echo ^<password^>%encrypted_password%
134 echo ^<username^>admin
135 ) > "%GSDLHOME%\etc\users.txt"
136 type "%GSDLHOME%\etc\users.txt" | txt2db -append "%GSDLHOME%\etc\users.gdb"
137 del "%GSDLHOME%\etc\users.txt"
138) else (
139 echo Did not set password
140)
141echo.
142goto exit
143
144
145::configure-web
146::configure-cgi
147:cfgweb
148:cfgcgi
149if exist "%GSDLHOME%\cgi-bin\gsdlsite.cfg" goto cgimsg
150echo Configuring cgi-bin\gsdlsite.cfg
151for /F "delims=*" %%T in ('"echo %GSDLHOME%| bin\windows\sed.exe s@\\@\\\\@g"') do set safepath=%%T
152bin\windows\sed.exe "s@\*\*GSDLHOME\*\*@\"%safepath%\"@g" cgi-bin/gsdlsite.cfg.in > cgi-bin/gsdlsite.cfg
153set safepath=
154goto cgifin
155
156:cgimsg
157echo WARNING: Nothing done for configure-cgi.
158echo If you wish to regenerate the file
159echo %GSDLHOME%\cgi-bin\gsdlsite.cfg
160echo from scratch, delete the existing file first.
161echo.
162
163:cgifin
164if "%target%" == "configure-cgi" goto exit
165if "%target%" == "configure-web" goto cfgapach
166
167::configure-apache
168:cfgapach
169if not "%configfile%" == "" if exist "%configfile%" (goto cfgport) else (echo Config file %configfile% does not exist. Using default llssite.cfg)
170
171if exist "%GSDLHOME%\llssite.cfg" (
172 set configfile="%GSDLHOME%\llssite.cfg"
173 goto cfgport
174)
175if not exist "%GSDLHOME%\llssite.cfg.in" (
176 echo Unable to proceed as neither %GSDLHOME%\llssite.cfg nor %GSDLHOME%\llssite.cfg.in could be found
177 goto exit
178)
179copy "%GSDLHOME%\llssite.cfg.in" "%GSDLHOME%\llssite.cfg"
180set configfile="%GSDLHOME%\llssite.cfg"
181
182:cfgport
183echo Configuring the apache webserver...
184:: See http://ss64.com/nt/for_cmd.html, http://ss64.com/nt/findstr.html (and http://ss64.com/nt/find.html)
185FOR /F "tokens=2 delims==" %%G IN ('findstr /R ^portnumber %configfile%') do set port=%%G
186echo Found port %port%
187FOR /F "tokens=2 delims==" %%G IN ('findstr /R ^externalaccess %configfile%') do set connect=%%G
188
189if "%connect%" == "1" set allowfrom="all"& goto portcon
190FOR /F "tokens=2 delims==" %%G IN ('findstr /R ^host %configfile%') do set allowfrom=%%G
191
192:: Using CALL to jump to labels means we can return from them. BUT need to ensure
193:: that command extensions are enabled to call labels. So just use GOTO instead.
194::http://ss64.com/nt/call.html
195goto portcon
196
197::configure-port-and-connection
198:setport
199set /p port=Enter port number to use:
200set /p connect=Allow external connections [yes/no]:
201if "%connect%" == "yes" set allowfrom="all"& goto portcon
202if "%connect%" == "y" set allowfrom="all"& goto portcon
203
204set /p allowfrom=Enter host (hostname, IP, localhost, 127.0.0.1) to use:
205goto portcon
206
207:portcon
208if "%port%" == "" (
209 echo Done
210 goto exit
211)
212set _sed="bin\windows\sed.exe"
213for /F "delims=*" %%T in ('"echo %GSDLHOME%| bin\windows\sed.exe s@\\@\/@g"') do set safepath=%%T
214
215echo Port: %port%
216echo Stopping web server (if running)
217if not exist "%GSDLHOME%\apache-httpd\%GSDLOS%\conf\httpd.conf" echo Missing conf file
218if exist "%GSDLHOME%\apache-httpd\%GSDLOS%\conf\httpd.conf" "%GSDLHOME%\bin\windows\stophttpd.exe" %GS2_APACHE_HTTPD_SIGNAL% SILENT
219echo Setting config file to use port %port%
220type "%GSDLHOME%\apache-httpd\%GSDLOS%\conf\httpd.conf.in" | %_sed% "s@\*\*PORT\*\*@%port%@g" | %_sed% "s@\*\*CONNECTION\*\*@%allowfrom%@g" | %_sed% "s@\*\*GSDLHOME\*\*@%safepath%@g" | %_sed% "s@\*\*APACHE_HOME_OS\*\*@%safepath%\/apache-httpd\/%GSDLOS%@g" > "%GSDLHOME%\apache-httpd\%GSDLOS%\conf\httpd.conf"
221echo Type '%0 web-start' to start the web server running on port %port%
222echo Done
223
224set connect=
225set allowfrom=
226set _sed=
227set safepath=
228
229:: Extra processing for configure-web and configure-cgi command targets
230if not "%target%" == "cfgweb" goto exit
231if not "%target%" == "cfgcgi" goto exit
232if exist "%GSDLHOME%\apache-httpd\%GSDLOS%\conf\httpd.conf" (echo %MONITOR_SUCCESS%) else (echo %MONITOR_FAILED%)
233echo %MONITOR_FINISHED%
234set port=
235set externalaccess=
236goto exit
237
238:exit
239endlocal
Note: See TracBrowser for help on using the repository browser.