source: main/trunk/release-kits/kits/rk2/installer/build.xml@ 29340

Last change on this file since 29340 was 29340, checked in by sjm84, 10 years ago

Removing execute permissions on all scripts that don't have cgi or pl file extensions. This is to circumvent the current vulnerability that exists with executable bash scripts

File size: 15.9 KB
Line 
1<?xml version="1.0"?>
2<!--
3This is the build.xml run by AntInstaller for the installer
4-->
5
6<project name="Installation">
7
8 <!-- this is required to pick up the properties generated during the install pages -->
9 <property file="${basedir}/ant.install.properties"/>
10
11 <!-- set some properties to keep track of the OS -->
12 <!-- if windows -->
13 <property name="rk.os" value="windows"/>
14 <property name="shell.name" value="windows"/>
15 <!-- /if -->
16 <!-- if linux -->
17 <property name="rk.os" value="linux"/>
18 <property name="shell.name" value="linux"/>
19 <!-- /if -->
20 <!-- if mac -->
21 <property name="rk.os" value="mac"/>
22 <property name="shell.name" value="darwin"/>
23 <!-- /if -->
24
25 <!-- classpath -->
26 <path id="project.classpath">
27 <pathelement path="${antinstaller.jar}"/>
28 </path>
29
30 <!-- custom tasks -->
31 <taskdef name="if" classname="ise.antelope.tasks.IfTask" classpathref="project.classpath"/>
32 <typedef name="rsr" classname="org.greenstone.anttasks.RegexSearchReplace" classpathref="project.classpath"/>
33 <typedef name="adduser" classname="org.greenstone.anttasks.AddGreenstoneUserToDatabase" classpathref="project.classpath"/>
34 <!-- if windows -->
35 <taskdef name="shortcut" classname="com.orangevolt.tools.ant.Win32ShortcutTask" classpathref="project.classpath"/>
36 <taskdef name="winprops" classname="com.orangevolt.tools.ant.Win32PropertiesTask" classpathref="project.classpath"/>
37 <typedef name="getfreepath" classname="org.greenstone.anttasks.GetFreePath" classpathref="project.classpath"/>
38 <!-- /if -->
39 <!-- if linux|mac -->
40 <taskdef name="sevenzip" classname="org.apache.tools.ant.SevenZip" classpathref="project.classpath"/>
41 <!-- /if -->
42
43 <!-- determine if a bundled java exists -->
44 <condition property="bundled.java.exists">
45 <or>
46 <available file="../@java.extracted@/bin/java"/>
47 <available file="../@java.extracted@/bin/java.exe"/>
48 </or>
49 </condition>
50
51 <!-- determine if there is an existing installation in the installDir-->
52 <available file="${installDir}\etc\installation.properties" property="is.overinstall"/>
53
54 <!-- create a local installDir String -->
55 <path id="installDir.path"><pathelement location="${installDir}"/></path>
56 <property name="installDir.local" refid="installDir.path"/>
57
58 <!-- if windows -->
59 <!-- load windows properties -->
60 <winprops/>
61 <!-- /if -->
62
63 <!-- load the properties of the previous installation if this is an overinstall -->
64 <target name="Looking For Previous Installation" if="is.overinstall">
65 <property file="${installDir}\etc\installation.properties"/>
66 <delete dir="${installed.startmenu.path}" failonerror="false"/>
67 </target>
68
69 <!-- copy jre -->
70 <target name="Initialising" if="bundled.java.exists">
71 <mkdir dir="${installDir}/packages"/>
72 <copy todir="${installDir}/packages/jre" failonerror="false">
73 <fileset dir="../@java.extracted@"/>
74 </copy>
75 <chmod dir="${installDir}/packages/jre/bin" includes="*" perm="775"/>
76 </target>
77
78 <!-- core system -->
79 <target name="Installing Core System">
80
81 <!-- if windows -->
82 <!-- figure out the start menu path -->
83 <getfreepath path="${win32.personal.programs_menu}\Greenstone-@version@" property="startmenu.path"/>
84 <path id="startmenu.path.path" path="${startmenu.path}"/>
85 <pathconvert targetos="unix" property="startmenu.path.unix" refid="startmenu.path.path"/>
86
87 <!-- extract 7za tool -->
88 <unzip src="${antinstaller.jar}" dest="${basedir}">
89 <patternset><include name="7za.exe"/></patternset>
90 </unzip>
91 <!-- /if -->
92
93 <!-- start web -->
94 <unzip src="${antinstaller.jar}" dest="${basedir}"><patternset><include name="core.lzma"/></patternset></unzip>
95 <!-- if linux|mac --><sevenzip task="decode" input="${basedir}/core.lzma" output="${basedir}/core.comp"/><!-- /if -->
96 <!-- if windows --><exec dir="${basedir}" executable="${basedir}/7za.exe"><arg line="x core.lzma"/></exec><!-- /if -->
97 <delete file="core.lzma"/>
98 <unzip src="${basedir}/core.comp" dest="${installDir}"/>
99 <delete file="core.comp"/>
100 <!-- end web -->
101
102 <!-- start cdrom -->
103 <copy todir="${installDir}">
104 <fileset dir="${orig.dir}/Software/core/all"/>
105 <fileset dir="${orig.dir}/Software/core/${rk.os}"/><!-- /if -->
106 </copy>
107 <!-- if windows -->
108 <copy todir="${installDir}/packages/jre" failonerror="false">
109 <fileset dir="${orig.dir}/Java/Windows/jre"/>
110 </copy>
111 <!-- /if -->
112 <!-- end cdrom -->
113
114 <echo>Setting Binaries to Executable</echo>
115 <chmod dir="${installDir}" includes="*.sh,*.bash" perm="775"/>
116 <chmod dir="${installDir}/bin" includes="*" perm="775"/>
117 <!-- to circumvent the Shellshock Bash bug vulnerability,
118 do not give execute permissions to bash files (*.*sh, or no file extension)
119 At present, the "getior" file is the only bash script here.
120 The other executables here have *.cgi, *.pl extensions.-->
121 <chmod dir="${installDir}/cgi-bin/${shell.name}" includes="*.cgi,*.pl" perm="775"/>
122 <chmod dir="${installDir}/bin/script" includes="**/*" perm="775"/>
123 <chmod dir="${installDir}/gli" includes="*.sh" perm="775"/>
124 <!-- if linux|mac -->
125 <chmod dir="${installDir}/bin/${shell.name}" includes="**/*" perm="775"/>
126 <!-- /if -->
127
128 <echo>Filling in concrete values in config files</echo>
129 <copy file="${installDir}/cgi-bin/${shell.name}/gsdlsite.cfg.in" tofile="${installDir}/cgi-bin/${shell.name}/gsdlsite.cfg"/>
130 <rsr file="${installDir}/cgi-bin/${shell.name}/gsdlsite.cfg" pattern="&quot;?\*\*GSDLHOME\*\*&quot;?" replacement="&quot;${installDir.local}&quot;"/>
131
132 <echo>Correcting perl shebangs in perl scripts</echo>
133 <!-- if linux|mac -->
134 <exec executable="which" outputproperty="perl.executable"><arg value="perl"/></exec>
135 <rsr file="${installDir}/cgi-bin/${shell.name}/gliserver.pl" pattern="^#!.*" replacement="#!${perl.executable} -w" lines="1"/>
136 <rsr file="${installDir}/cgi-bin/${shell.name}/metadata-server.pl" pattern="^#!.*" replacement="#!${perl.executable} -w" lines="1"/>
137 <rsr file="${installDir}/cgi-bin/${shell.name}/checksum.pl" pattern="^#!.*" replacement="#!${perl.executable} -w" lines="1"/>
138 <!-- /if -->
139 <!-- if windows -->
140 <property name="perl.executable" value="${installDir.local}\bin\windows\perl\bin\perl.exe"/>
141 <rsr file="${installDir}/cgi-bin/${shell.name}/gliserver.pl" pattern="^#!.*" replacement="#!${perl.executable} -w" lines="1"/>
142 <rsr file="${installDir}/cgi-bin/${shell.name}/metadata-server.pl" pattern="^#!.*" replacement="#!${perl.executable} -w" lines="1"/>
143 <rsr file="${installDir}/cgi-bin/${shell.name}/checksum.pl" pattern="^#!.*" replacement="#!${perl.executable} -w" lines="1"/>
144 <!-- /if -->
145
146 <echo>Creating the english dictionary</echo>
147 <copy file="${installDir}/gli/classes/dictionary.properties" tofile="${installDir}/gli/classes/dictionary_en.properties"/>
148
149 <!-- if linux|mac -->
150 <echo>Set the installation locale in config files</echo>
151 <rsr file="${installDir}/setup.bash" pattern="^gsdllang=.*" replacement="gsdllang=${language}"/>
152 <rsr file="${installDir}/gli/gli.sh" pattern="^glilang=.*" replacement="glilang=${language}"/>
153 <rsr file="${installDir}/gli/gems.sh" pattern="^glilang=.*" replacement="glilang=${language}"/>
154 <!-- /if -->
155 <rsr
156 file="${installDir}/gli/classes/xml/config.xml"
157 pattern="(&lt;Argument name=&quot;general.locale&quot;&gt;).*(&lt;/Argument&gt;)"
158 replacement="$1${language}$2"/>
159
160 <echo file="${installDir}/etc/main.cfg" append="true"
161 >cgiarg shortname=l argdefault=${language}</echo>
162
163 <echo message="Creating installation properties file"/>
164 <!-- if linux|mac -->
165 <echo file="${installDir}/etc/installation.properties">#this file is just a placeholder for now</echo>
166 <!-- /if -->
167 <!-- if windows -->
168 <echo file="${installDir}\etc\installation.properties">installed.startmenu.path:${startmenu.path.unix}</echo>
169 <!-- /if -->
170
171 <!-- if mac -->
172 <copy file="${installDir}/gli.app/Contents/document.wflow.in" tofile="${installDir}/gli.app/Contents/document.wflow"/>
173 <rsr file="${installDir}/gli.app/Contents/document.wflow" pattern="\*\*GSDLHOME\*\*" replacement="${installDir}"/>
174
175 <copy file="${installDir}/gs2-server.app/Contents/document.wflow.in" tofile="${installDir}/gs2-server.app/Contents/document.wflow"/>
176 <rsr file="${installDir}/gs2-server.app/Contents/document.wflow" pattern="\*\*GSDLHOME\*\*" replacement="${installDir}"/>
177
178 <copy file="${installDir}/gems.app/Contents/document.wflow.in" tofile="${installDir}/gems.app/Contents/document.wflow"/>
179 <rsr file="${installDir}/gems.app/Contents/document.wflow" pattern="\*\*GSDLHOME\*\*" replacement="${installDir}"/>
180
181 <copy file="${installDir}/client-gli.app/Contents/document.wflow.in" tofile="${installDir}/client-gli.app/Contents/document.wflow"/>
182 <rsr file="${installDir}/client-gli.app/Contents/document.wflow" pattern="\*\*GSDLHOME\*\*" replacement="${installDir}"/>
183
184 <chmod dir="${installDir}" includes="*.app" perm="755"/>
185 <chmod dir="${installDir}" includes="*.app/**/*" perm="755"/>
186 <!-- /if -->
187 </target>
188
189 <!-- Apache HTTPD -->
190 <target name="Installing Apache Web Server">
191 <echo>Installing the Apache Web Server</echo>
192
193 <!-- start web -->
194 <unzip src="${antinstaller.jar}" dest="${basedir}">
195 <patternset>
196 <include name="apachehttpd.lzma"/>
197 </patternset>
198 </unzip>
199
200 <!-- if linux|mac -->
201 <sevenzip task="decode" input="${basedir}/apachehttpd.lzma" output="${basedir}/apachehttpd.comp"/>
202 <!-- /if -->
203 <!-- if windows -->
204 <exec dir="${basedir}" executable="${basedir}/7za.exe">
205 <arg line="x apachehttpd.lzma"/>
206 </exec>
207 <!-- /if -->
208 <unzip src="${basedir}/apachehttpd.comp" dest="${installDir}"/>
209 <delete file="apachehttpd.comp"/>
210 <!-- end web -->
211
212 <!-- start cdrom -->
213 <mkdir dir="${installDir}/apache-httpd"/>
214 <mkdir dir="${installDir}/apache-httpd/${shell.name}"/>
215 <copy todir="${installDir}/apache-httpd/${shell.name}">
216 <fileset dir="${orig.dir}/Software/apache-httpd/${shell.name}"/>
217 </copy>
218 <!-- end cdrom -->
219
220 <!-- if linux|mac -->
221 <chmod dir="${installDir}/apache-httpd/${shell.name}/bin" includes="*" perm="775"/>
222 <chmod dir="${installDir}/apache-httpd/${shell.name}" includes="*.sh" perm="775"/>
223 <echo>Setting up apache web server</echo>
224 <exec dir="${installDir}" executable="${installDir}/apache-httpd/${shell.name}/install-bindist.sh">
225 <arg value="${installDir}/apache-httpd/${shell.name}"/>
226 </exec>
227 <!-- /if -->
228 </target>
229
230 <!-- ImageMagick -->
231 <target name="Installing ImageMagick">
232 <echo>Installing ImageMagick</echo>
233 <!-- start web -->
234 <unzip src="${antinstaller.jar}" dest="${basedir}"><patternset><include name="imagemagick.lzma"/></patternset></unzip>
235 <!-- if linux|mac --><sevenzip task="decode" input="${basedir}/imagemagick.lzma" output="${basedir}/imagemagick.comp"/><!-- /if -->
236 <!-- if windows --><exec dir="${basedir}" executable="${basedir}/7za.exe"><arg line="x imagemagick.lzma"/></exec><!-- /if -->
237 <delete file="imagemagick.lzma"/>
238 <unzip src="${basedir}/imagemagick.comp" dest="${installDir}"/>
239 <delete file="imagemagick.comp"/>
240 <!-- end web -->
241
242 <!-- start cdrom -->
243 <copy todir="${installDir}">
244 <fileset dir="${orig.dir}/Software/imagemagick/${rk.os}"/>
245 </copy>
246 <!-- end cdrom -->
247
248 <if><bool><available file="${installDir}/bin/${shell.name}/imagemagick" type="dir"/></bool>
249 <chmod dir="${installDir}/bin/${shell.name}/imagemagick/bin" includes="*" perm="775"/>
250 <else>
251 <chmod dir="${installDir}/ext/imagemagick/${shell.name}/bin" includes="*" perm="775"/>
252 </else>
253 </if>
254
255 </target>
256
257 <!-- Ghostscript -->
258 <target name="Installing Ghostscript" depends="">
259 <echo message="Installing Ghostscript"/>
260 <!-- start web -->
261 <unzip src="${antinstaller.jar}" dest="${basedir}"><patternset><include name="ghostscript.lzma"/></patternset></unzip>
262 <!-- if linux|mac --><sevenzip task="decode" input="${basedir}/ghostscript.lzma" output="${basedir}/ghostscript.comp"/><!-- /if -->
263 <!-- if windows --><exec dir="${basedir}" executable="${basedir}/7za.exe"><arg line="x ghostscript.lzma"/></exec><!-- /if -->
264 <delete file="ghostscript.lzma"/>
265 <unzip src="${basedir}/ghostscript.comp" dest="${installDir}" />
266 <delete file="ghostscript.comp"/>
267 <!-- end web -->
268
269 <!-- start cdrom -->
270 <copy todir="${installDir}">
271 <fileset dir="${orig.dir}/Software/ghostscript/${rk.os}"/>
272 </copy>
273 <!-- end cdrom -->
274
275 <chmod dir="${installDir}/bin/${shell.name}/ghostscript/bin" includes="*" perm="775"/>
276 </target>
277
278 <!-- Start menu shortcuts -->
279 <target name="Installing Start Menu Shortcuts">
280
281 <mkdir dir="${startmenu.path}\Documentation"/>
282
283 <!-- Server shortcut -->
284 <if><bool><available file="${installDir}/web/images/server.ico"/></bool>
285 <property name="servericon" value="${installDir}\web\images\server.ico"/>
286 <else>
287 <property name="servericon" value="${installDir}\web\images\serverico.ico"/>
288 </else>
289 </if>
290
291 <shortcut
292 file="${startmenu.path}\Greenstone Server.lnk"
293 execute="${installDir}\gs2-server.bat"
294 workingDirectory="${installDir}"
295 iconFile="${servericon}"
296 iconIndex="0" />
297
298 <!-- Librarian shortcut -->
299 <if><bool><available file="${installDir}/web/images/librarian.ico"/></bool>
300 <property name="libraryicon" value="${installDir}\web\images\librarian.ico"/>
301 <else>
302 <property name="libraryicon" value="${installDir}\web\images\icon.ico"/>
303 </else>
304 </if>
305
306 <shortcut
307 file="${startmenu.path}\Librarian Interface (GLI).lnk"
308 execute="${installDir}\gli\gli.bat"
309 workingDirectory="${installDir}\gli"
310 iconFile="${libraryicon}"
311 iconIndex="0" />
312
313 <!-- Remote Server shortcut -->
314 <if><bool><available file="${installDir}/web/images/clientgli.ico"/></bool>
315 <property name="clientgliicon" value="${installDir}\web\images\clientgli.ico"/>
316 <else>
317 <property name="clientgliicon" value="${installDir}\web\images\icon.ico"/>
318 </else>
319 </if>
320
321 <shortcut
322 file="${startmenu.path}\Remote Librarian Interface (Client GLI).lnk"
323 execute="${installDir}\gli\client-gli.bat"
324 workingDirectory="${installDir}\gli"
325 iconFile="${clientgliicon}"
326 iconIndex="0" />
327
328 <!-- GEMS shortcut -->
329 <if><bool><available file="${installDir}/web/images/metadata.ico"/></bool>
330 <property name="gemsicon" value="${installDir}\web\images\metadata.ico"/>
331 <else>
332 <property name="gemsicon" value="${installDir}\web\images\gems.ico"/>
333 </else>
334 </if>
335
336 <shortcut
337 file="${startmenu.path}\Metadata Set Editor (GEMS).lnk"
338 execute="${installDir}\gli\gems.bat"
339 workingDirectory="${installDir}\gli"
340 iconFile="${gemsicon}"
341 iconIndex="0" />
342
343 <!-- Uninstall shortcut -->
344 <if><bool><available file="${installDir}/web/images/newuninstall.ico"/></bool>
345 <property name="uninstallicon" value="${installDir}\web\images\newuninstall.ico"/>
346 <else>
347 <property name="uninstallicon" value="${installDir}\web\images\uninstall.ico"/>
348 </else>
349 </if>
350
351 <shortcut
352 file="${startmenu.path}\Uninstall.lnk"
353 execute="${installDir}\uninstall\Uninstall.bat"
354 workingDirectory="${installDir}\uninstall"
355 iconFile="${uninstallicon}"
356 iconIndex="0" />
357
358 <!-- Misc shortcuts -->
359 <shortcut
360 file="${startmenu.path}\Documentation\READMEen.lnk"
361 execute="${installDir}\READMEen.txt" />
362
363 <shortcut
364 file="${startmenu.path}\Documentation\Greenstone Wiki.url"
365 url="http://wiki.greenstone.org" />
366
367 <shortcut
368 file="${startmenu.path}\Documentation\Greenstone Website.url"
369 url="http://www.greenstone.org" />
370
371 </target>
372
373 <target name="Configuring Administration Pages" if="enable.admin.pages">
374 <echo>Enabling Admin Pages</echo>
375 <rsr file="${installDir}/etc/main.cfg" pattern="^\s*status\s+.*" replacement="status enabled"/>
376 <echo>Creating admin and demo users</echo>
377 <adduser txt2db="${installDir}/bin/${shell.name}/txt2db"
378 usersDb="${installDir}/etc/users.gdb"
379 username="admin"
380 password="${admin.password}"
381 groups="administrator,colbuilder,all-collections-editor"
382 comment="created at install time"/>
383 <adduser
384 txt2db="${installDir}/bin/${shell.name}/txt2db"
385 usersDb="${installDir}/etc/users.gdb"
386 username="demo"
387 password="demo"
388 groups="demo"
389 comment="Dummy 'demo' user with password 'demo' for authen-e collection"/>
390 </target>
391
392 <target name="Installing Documented Examples">
393 <unzip src="${orig.dir}/documented-examples.zip" dest="${installDir}/collect"/>
394 </target>
395
396</project>
Note: See TracBrowser for help on using the repository browser.