source: main/trunk/greenstone2/gs2-server.bat@ 22084

Last change on this file since 22084 was 22084, checked in by ak19, 11 years ago

If no config file (llssite or glisite.cfg) is provided with the config flag, which can happen when gs2-server.bat is run on its own, then the batch file terminated with the message: goto is unexpected at this time. Fixed this.

File size: 7.9 KB
Line 
1@echo off
2SETLOCAL
3
4if "%serverlang%" == "" set serverlang=en
5set java_min_version=1.5.0_00
6set PROGNAME=gs2-server
7if "%PROGABBR%" == "" set PROGABBR=GSI
8pushd "%CD%"
9CD /D "%~dp0"
10
11echo Greenstone 2 Server
12echo Copyright (C) 2009, New Zealand Digital Library Project, University Of Waikato
13echo This software comes with ABSOLUTELY NO WARRANTY; for details see LICENSE.txt
14echo This is free software, and you are welcome to redistribute it
15
16:: -------- Run the Greenstone 2 Server --------
17
18:: ---- Determine GSDLHOME ----
19set gsdl2path=
20
21:: Some users may set the above line manually
22if "%gsdl2path%" == "" (
23 set GSDLHOME=%CD%
24 set gsdl2path=%CD%
25)
26echo GS2 Home: %GSDLHOME%
27
28:: Setup Greenstone2, unless it has already been done
29:: If either GSDLHOME or GSDLOS is not set, need to run setup.bat first
30:: OR operations in an IF stmt: http://fixunix.com/ms-dos/21057-how-implement-if-condition-batch-file.html
31for %%i in ("%GSDLOS%" "%GSDLHOME%") do if %%i == "" set OR=True
32if "%OR%" == "True" (
33 pushd "%gsdl2path%"
34 call setup.bat
35rem echo **** GSDLOS: %GSDLOS% and GSDLHOME: %GSDLHOME%
36 popd
37)
38
39
40:: First test that there is actually something that can be run...
41:: Exit if the apache-httpd folder doesn't exist for some reason
42:: (The errors reported when the apache webserver does not exist
43:: in the correct location are not at all helpful).
44
45:: "You cannot use the if command to test directly for a directory, but
46:: the null (NUL) device does exist in every directory. As a result, you
47:: can test for the null device to determine whether a directory exists."
48rem echo "%GSDLHOME%\apache-httpd\nul"
49if not exist "%GSDLHOME%\apache-httpd\*" (
50 echo.
51 echo UNABLE TO CONTINUE: There is no apache-httpd directory.
52 echo It does not look like the local apache webserver has been installed.
53 echo Exiting...
54 echo.
55 goto exit
56)
57:: exit 1
58
59
60:: If there's no llssite.cfg file, copy from the template
61if exist "%GSDLHOME%\llssite.cfg" goto cfgfile
62if exist "%GSDLHOME%\llssite.cfg.in" (
63 copy "%GSDLHOME%\llssite.cfg.in" "%GSDLHOME%\llssite.cfg"
64) else (
65 echo Warning: could not find llssite.cfg.in to create llssite.cfg from.
66)
67
68:cfgfile
69:: ---- Determine GSDLHOME ----
70:: JRE_HOME or JAVA_HOME must be set correctly to run this program
71bin\windows\search4j -m %java_min_version% > nul
72echo.
73:: In Java code, '...getResourceAsStream("build.properties")'
74:: needs up to be in the right directory when run
75if %ERRORLEVEL% equ 0 pushd %GSDL2PATH%
76
77:: http://ss64.com/nt/call.html (and leave in trailing slash)
78call :isinpath "%GSDLHOME%\lib\java"
79
80:: After the call, we come back here
81goto chkjava
82
83:isinpath
84:: http://ss64.com/nt/syntax-replace.html and http://ss64.com/nt/syntax-args.html
85:: (Does not work: section "Finding items within the PATH environment variable")
86:: Instead, we expand the filepath of parameter 1 to its full path and
87:: try to subtract it from the classpath.
88::call set test_cpath=%%CLASSPATH:%~f1=%%
89call set test_cpath=%%CLASSPATH:%1=%%
90
91:: If there IS a difference in the classpath before and after,
92:: then the filepath was already on the classpath
93if not "%CLASSPATH%" == "%test_cpath%" (
94 echo - CLASSPATH already correct
95 echo %CLASSPATH%
96 goto :eof
97)
98
99:: If there was NO difference in the classpath before and after,
100:: then the filepath needs to be added to the classpath
101set CLASSPATH=%GSDLHOME%\lib\java;%CLASSPATH%
102
103:: http://ss64.com/nt/for_r.html and (for call) http://ss64.com/nt/for.html
104:: http://ss64.com/nt/syntax-args.html
105FOR /R "%GSDLHOME%\lib\java" %%G IN (*.jar) DO call :putinpath "%%G"
106echo - Adjusted CLASSPATH
107echo.
108::echo CLASSPATH:& echo %CLASSPATH%
109goto :eof
110
111
112:putinpath
113set jarfile=%1
114::strip quotes around jarfile path, since we can't update classpath with quotes
115set jarfile=%jarfile:"=%
116echo jarfile: %jarfile%
117set CLASSPATH=%CLASSPATH%;%jarfile%
118goto :eof
119
120:: ---- Check Java ----
121:chkjava
122:: call the script with source, so that we have the variables JAVA_EXECUTABLE and GS_JAVA_HOME it sets
123set exit_status=0
124:: Need to find Java. If found, JAVA_EXECUTABLE will be set
125:: call findjava.bat %serverlang% %PROGNAME%
126if "%GSDL3SRCHOME%" == "" (set _VERSION=2) else (set _VERSION=3)
127call "%GSDLHOME%\findjava.bat"
128if "%JAVA_EXECUTABLE%" == "" echo **** No Java executable found& goto exit
129set PATH=%GS_JAVA_HOME%\bin;%PATH%
130
131
132:: ---- Run the Greenstone Server Interface ----
133:: Some informative messages to direct the users to the logs
134if "%serverlang%" == "en" (
135 echo ***************************************************************
136 echo Starting the Greenstone Server Interface ^(GSI^)...
137 echo.
138 echo Server log messages go to:
139 echo "%GSDLHOME%\etc\logs-gsi\server.log"
140 echo.
141 echo Using Apache web server located at:
142 echo "%GSDLHOME%\apache-httpd\%GSDLOS%\bin\httpd"
143 echo The Apache error log is at:
144 echo "%GSDLHOME%\apache-httpd\%GSDLOS%\logs\error_log"
145 echo The Apache configuration file template is at:
146 echo "%GSDLHOME%\apache-httpd\%GSDLOS%\conf\httpd.conf.in"
147 echo This is used to generate:
148 echo "%GSDLHOME%\apache-httpd\%GSDLOS%\conf\httpd.conf"
149 echo each time Enter Library is pressed or otherwise activated.
150 echo ***************************************************************
151 echo.
152)
153echo.
154
155:: GLI launches gs2-server.bat with:
156:: cmd /c start "window" "c:\path to\gs2-server.bat" --config=c:\path to\glisite.cfg [--quit=portnum]
157:: The configfile param could contain spaces, in which case its space-separated parts spread over
158:: multiple parameters . Need to handle things the following way, since using quotes to embed the
159:: parameters breaks the start command, see http://ss64.com/nt/start.html
160:: This script is launched by the start cmd as:
161:: "c:\path to\gs2-server.bat" --config=c:\path to\config.cfg [--quit=portnum].
162:: But if the parameter following --config=<some string> doesn't start with a double hyphen, we
163:: assume it to be part of the config parameter, as the configfile path may have contained spaces.
164
165:: Store all parameters together in config file var: we may or may not have a portnumber
166:: Get everything after the "--quitport=", if anything, and store it in port var. If no port, nothing to do.
167set conf=%*
168if "%conf%" == "" goto :runit
169
170set port=%conf:*--quitport=%
171if "%conf%" == "%port%" (
172set port=
173goto :runit
174) else (
175set port=%port:~1%
176)
177
178:: Because we got here, need to adjust conf by removing " --quitport=" from it and prefixing this to port
179call set conf=%%conf:%port%=%%
180set conf=%conf:~0,-12%
181set port=--quitport=%port%
182
183:: Remove trailing spaces from conf and port
184:: (We'll put the all-important quotes around conf and port when the actual java cmd is launched)
185set tmp=%conf%
186call :trim %tmp%
187set conf=%tmp%
188set tmp=%port%
189call :trim %port%
190set port=%tmp%
191set tmp=
192
193goto :runit
194
195:: http://www.computing.net/answers/programming/dos-batch-remove-trailing-space/9270.html
196:trim
197set tmp=%*
198goto :eof
199
200:runit
201::echo port: %port%& echo conf: %conf%& echo.& echo.
202:: "%JAVA_EXECUTABLE%" org.greenstone.server.Server2 "%GSDLHOME%" "%serverlang%" %*
203"%JAVA_EXECUTABLE%" org.greenstone.server.Server2 "%GSDLHOME%" "%serverlang%" "%conf%" "%port%"
204
205
206:: The 1st argument to gs2-server.bat (if any) would be --config, the 2nd is the config filename.
207:: Both are stored in %conf% now. If the config file is glisite.cfg, then this script was launched through
208:: GLI and would have opened a DOS console. Need to exit from this script then to close the console.
209:: Remove --config=prefix and do a case insensitive comparison, since filepaths can have uppercase chars
210if "%conf%" == "" goto exit
211if /i "%conf:~9%" == "%GSDLHOME%\glisite.cfg" goto quitcmd
212goto exit
213
214:: Exit the batch script (close the console)
215:quitcmd
216popd
217ENDLOCAL
218exit 0
219
220:: Just end the script without closing the console
221:exit
222popd
223ENDLOCAL
Note: See TracBrowser for help on using the repository browser.