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
RevLine 
[19278]1@echo off
2
[19970]3setlocal
[20262]4::set testdone=0
[19278]5set target=%1
6set configfile=%2
7
[20262]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
[19970]14:: Need to get greenstone installation directory
15:: set cwd=%CD%
[19278]16
[19970]17set MONITOR_SUCCESS=MAKE SUCCESSFUL
18set MONITOR_FAILED=MAKE FAILED
19set MONITOR_FINISHED=MAKE DONE
20
[19278]21:: check that we have >=1 and <=2 arguments
22:chkargs
[20262]23if "%target%" == "" goto usage
24if not "%3" == "" goto usage
[19278]25 goto begincmd
26
27
28:usage
29echo.
30echo Usage: %0 command
31echo where command is any of the following:
[19970]32echo web-start
33echo web-stop
34echo web-restart
[20262]35::echo web-status
36::echo web-graceful
[19278]37echo configure-admin
38echo configure-web [config-filename]
39echo configure-apache [config-filename]
40echo configure-cgi
[20262]41echo test-gsdlhome
42echo web-stop-tested
[19278]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
[20159]53if NOT "%GSDLHOME%" == "" if NOT "%GSDLOS%" == "" goto commands
[20338]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
[19278]60
61
62::MAIN MENU
63:commands
[20262]64echo.
65echo Using:
66echo GSDLHOME = %GSDLHOME%
67echo GSDLOS = %GSDLOS%
68echo.
69
[19278]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
[20262]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
[20338]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
[19278]86
[20338]87
[19278]88:start
[20159]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
[20262]91START "%GSDLHOME%\apachectl" "%GSDLHOME%\bin\windows\starthttpd.exe" %GS2_APACHE_HTTPD_SIGNAL% "%GSDLHOME%\apache-httpd\windows\bin\httpd.exe"
[19970]92echo %MONITOR_SUCCESS%
93echo %MONITOR_FINISHED%
94goto exit
95
[19278]96:stop
[20262]97:stoptest
[20435]98if exist "%GSDLHOME%\apache-httpd\%GSDLOS%\conf\httpd.conf" "%GSDLHOME%\bin\windows\stophttpd.exe" %GS2_APACHE_HTTPD_SIGNAL% SILENT
[20262]99if "%target%" == "web-stop-tested" goto exit
[19970]100echo %MONITOR_SUCCESS%
[20262]101echo %MONITOR_FINISHED%
[19970]102goto exit
103
[19278]104:restart
[20262]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)
[19970]107ping 127.0.0.1 -n 2 -w 1000 > nul
[20262]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"
[19970]110goto start
111
[20338]112::status
113::graceful
114::echo Command %target% is not operational on this operating system
115::goto exit
[19278]116
117
118::configure-admin
119:cfgadmin
120echo.
[19288]121echo Configuring admin user password:
122for /F %%T in ('getpw') do set encrypted_password=%%T
[19290]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.
[19970]126:: When piping, need to double-escape the angle brackets with three hat signs,
[19290]127:: but when redirecting to a file, need to escape only once (one hat sign).
[19288]128if ERRORLEVEL 0 (
129 (
130 echo [admin]
[19290]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"
[19288]138) else (
139 echo Did not set password
140)
[20262]141echo.
[19288]142goto exit
[19278]143
[20338]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
[20615]189if "%connect%" == "1" set allowfrom="all"& goto portcon
190FOR /F "tokens=2 delims==" %%G IN ('findstr /R ^host %configfile%') do set allowfrom=%%G
191
[20338]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
[19970]197::configure-port-and-connection
[20338]198:setport
[19970]199set /p port=Enter port number to use:
200set /p connect=Allow external connections [yes/no]:
[20615]201if "%connect%" == "yes" set allowfrom="all"& goto portcon
202if "%connect%" == "y" set allowfrom="all"& goto portcon
[20338]203
[20615]204set /p allowfrom=Enter host (hostname, IP, localhost, 127.0.0.1) to use:
205goto portcon
206
[20338]207:portcon
208if "%port%" == "" (
[20505]209 echo Done
210 goto exit
[20338]211)
212set _sed="bin\windows\sed.exe"
213for /F "delims=*" %%T in ('"echo %GSDLHOME%| bin\windows\sed.exe s@\\@\/@g"') do set safepath=%%T
[19970]214
[20338]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
[19970]223
[20338]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
[19278]238:exit
[19970]239endlocal
Note: See TracBrowser for help on using the repository browser.