added build.xml and HOW to back into project for building distributions

git-svn-id: http://webgoat.googlecode.com/svn/trunk/webgoat@440 4033779f-a91e-0410-96ef-6bf7bf53c507
This commit is contained in:
mayhew64@gmail.com 2012-04-20 15:45:54 +00:00
parent 444023c2e5
commit 43ac09a014
2 changed files with 478 additions and 0 deletions

View File

@ -0,0 +1,196 @@
***************************************
As of 5.1 the developer release contains the eclipse workspace
and project files.
Extract distribution to c:\
- It will create a WebGoat-x.x directory
Extract Eclipse-Workspace.zip to C:\WebGoat-x.x
Start eclipse using eclipse.bat
After eclipse starts
Top left - Project Explorer view
right click WebGoat refresh
right click Servers refresh
Bottom - Servers view
right click Tomcat… - start
Browse to http://localhost/WebGoat/attack
You're done. Changing files in eclipse will automatically rebuild
and redeploy the application.
Follow the instructions below to build the workspace from scratch
***************************************
***************************************
Eclipse startup and dependency removal
WebGoat uses Eclipse WTP 1.5
***************************************
Change paths in eclipse.bat to reflect your environment
edit <webgoat-root>/eclipse.bat
Change JAVAHOME to directory where java is installed.
ex: This may be .\java or "C:\Program Files\Java\jdk1.5.0_08"
Change ECLIPSE_HOME to directory where eclipse is installed
ex: This may be .\eclipse or "C:\Program Files\eclipse"
Note: WebGoat requires eclipse with WTP project
Run eclipse using the eclipse.bat file
located at <webgoat-root>/eclipse.bat
Remove eclipse dependencies
Delete all files and directories beginning
with a period. ex) .settings, .project, etc...
Note: These files probably do not exist unless you have
previously tried to build a WebGoat eclipse project
Eclipse will start up in the default state
Click arrow at top right to load the eclipse workbench
***************************************
Verify tomcat directory is read/write access
***************************************
You may have to install Tomcat and merge the webgoat users into
the tomcat-users.xml file
File: <tomcat-root>/conf/tomcat-users.xml
<tomcat-users>
<role rolename="webgoat_admin"/>
<role rolename="webgoat_basic"/>
<role rolename="webgoat_user"/>
<user username="webgoat" password="webgoat" roles="webgoat_admin"/>
<user username="basic" password="basic" roles="webgoat_user,webgoat_basic"/>
<user username="guest" password="guest" roles="webgoat_user"/>
</tomcat-users>
***************************************
Initial Setup of Development Enviroment
***************************************
Step 1) Add the WebGoat JDK
window->preferences->
java->installed JREs
add
Name: WebGoat JDK 1.5
Directory: java
OK
select new JDK as default
remove previous JDK if exists
OK
window->preferences
server->Installed Runtime
ADD
apache
tomcat v5.5
NEXT
directory: use browse button to locate <webgoat-root>/tomcat (e.g. C:\P4\BUILD\depot\WebGoat\J2EE\main\tomcat)
JRE: WebGoat JDK 1.5
FINISH
select apache tomcat v5.5 as default
OK
window->open perspective
other
J2EE
in Project Explorer
right click->New->New Dynamic Web Project
Name: WebGoat
Deselect "use default"
Browse to <webgoat-root>/project (e.g. C:\P4\BUILD\depot\WebGoat\J2EE\main\project)
NEXT
NEXT
change Java Source Directory: JavaSource
FINISH
Click "I Agree" if dialog appears (will appear after build completes)
From "Servers" View - Should be in bottom view
right click->New->Server (Tomcat 5.5 should be default selected)
NEXT
select WebGoat
ADD
FINISH
From a Windows file explorer window
Copy the <tomcat_root>.keystore to eclipse workspace directory
<WebGoat_Root>\J2EE\main\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\.keystore
From Servers view
double click Tomcat v 5.5 Server @ locahost
in "Server Overview" window
Uncheck "Run modules directly from the workspace"
SAVE (ctrl-s)
NOTE: In developer mode you may want to leave this checked
Right click on Tomcat v5.5 Sever@localhost ->Start
Browse to http://localhost/WebGoat/attack
***************************************
Deploying to Tomcat
***************************************
From Servers view
double click Tomcat v 5.5 Server @ locahost
in "Server Overview" window
Uncheck "Run modules directly from the workspace"
SAVE (ctrl-s)
From Servers view
right click->Publish
Using file system
copy JavaSource directory into <tomcat-root>/webapps/WebGoat/
***************************************
Configuring Webgoat.properties for
your environment.
i.e. How to manage the menus
***************************************
Edit <webgoat-root>/project/WebContent/WEB-INF/webgoat.properties
- Turn off/on the desired lessons

282
build.xml Normal file
View File

@ -0,0 +1,282 @@
<!-- A "project" describes a set of targets that may be requested
when Ant is executed. The "default" attribute defines the
target which is executed if no specific target is requested,
and the "basedir" attribute defines the current working directory
from which Ant executes the requested task. This is normally
set to the current working directory.
-->
<project name="WebGoat" default="Build_ALL_OWASP_Releases" basedir=".">
<!-- ===================== Property Definitions =========================== -->
<!--
Each of the following properties are used in the build script.
Values for these properties are set by the first place they are
defined, from the following list:
* Definitions on the "ant" command line (ant -Dfoo=bar compile).
* Definitions from a "build.properties" file in the top level
source directory of this application.
* Definitions from a "build.properties" file in the developer's
home directory.
* Default definitions in this build.xml file.
You will note below that property values can be composed based on the
contents of previously defined properties. This is a powerful technique
that helps you minimize the number of changes required when your development
environment is modified. Note that property composition is allowed within
"build.properties" files as well as in the "build.xml" script.
-->
<property file="build.properties"/>
<property file="${user.home}/build.properties"/>
<!-- ==================== File and Directory Names ======================== -->
<!--
These properties generally define file and directory names (or paths) that
affect where the build process stores its outputs.
build.home The directory into which the "prepare" and
"compile" targets will generate their output.
Defaults to "build".
catalina.home The directory in which you have installed
a binary distribution of Tomcat 4. This will
be used by the "deploy" target.
dist.home The name of the base directory in which
distribution files are created.
Defaults to "dist".
install.home The absolute path of the directory into which
the installer will copy its files. The Eclipse
project is bound to this path.
-->
<property name="app.home" value="${basedir}/project"/>
<property name="app.name" value="WebGoat"/> <!-- MUST BE CONSISTENT WITH project/build.xml! -->
<property name="app.version" value="5.1"/> <!-- MUST BE CONSISTENT WITH project/build.xml! -->
<property name="catalina.home" value="${basedir}/tomcat"/>
<property name="dist.home" value="${app.home}/dist"/>
<property name="dist.owasp" value="${app.home}/owasp_distributions"/>
<property name="install.home" value="WebGoat-${app.version}"/>
<!-- ==================== Clean Target ==================================== -->
<!--
The "clean" target deletes any previous "build" and "dist" directory,
so that you can be ensured the application can be built from scratch.
-->
<target name="clean"
description="Delete old build and dist directories">
<delete file="${web_inf.home}/web.xml"/>
<delete dir="${dist.home}"/>
<delete dir="${catalina.home}/logs"/>
<delete dir="${catalina.home}/work/Catalina/localhost"/>
<delete dir="${catalina.home}/webapps/${app.name}"/>
<delete file="${catalina.home}/webapps/${app.name}.war"/>
<delete dir="${catalina.home}/server/webapps/${app.name}"/>
<mkdir dir="${dist.home}"/>
<mkdir dir="${catalina.home}/logs"/>
</target>
<target name="clean_all"
description="Delete old build, dist directories and zips">
<delete dir="${dist.home}"/>
<delete dir="${dist.owasp}"/>
<mkdir dir="${dist.home}"/>
<mkdir dir="${dist.owasp}"/>
</target>
<!-- ==================== Compile Target ===================================== -->
<target name="compile" depends="Compile-WebGoat"
description="Build all dependency applications">
</target>
<target name="Compile-WebGoat"
description="Build the WebGoat application">
<ant dir="${app.home}" target="BuildWar" inheritAll="false"/>
</target>
<!--
<target name="DELETE_ME_Compile-WebGoat-Unix"
description="Build the WebGoat application">
<ant dir="${app.home}" target="BuildUnixWar" inheritAll="false"/>
</target>
-->
<target name="Compile-WebGoat-LAB"
description="Build the WebGoat application">
<ant dir="${app.home}" inheritAll="false">
<target name="-WebGoatPropertiesLAB"/>
<target name="BuildWar"/>
</ant>
</target>
<target name="Compile-WebGoat-Class"
description="Build the WebGoat application">
<ant dir="${app.home}" inheritAll="false">
<target name="-WebGoatPropertiesClass"/>
<target name="BuildWar"/>
</ant>
</target>
<target name="Compile-WebGoat-OWASP"
description="Build the WebGoat application">
<ant dir="${app.home}" inheritAll="false">
<target name="-WebGoatPropertiesOWASP"/>
<target name="BuildWar"/>
</ant>
</target>
<!-- ==================== Dist Target ===================================== -->
<!--
The "dist" target creates a binary distribution of your application
in a directory structure ready to be archived in a tar.gz or zip file.
Note that this target depends on two others:
* "compile" so that the entire web application (including external
dependencies) will have been assembled
-->
<target name="ZipProject"
description="Create a zip archive of all Eclipse project files from C:\WebGoatClassCD">
<!-- Put a copy of the keystore into the WTP dynamic deployment area -->
<copy file="/WebGoatClassCD/tomcat/.keystore" tofile="/WebGoatClassCD/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/.keystore"/>
<zip destfile="${basedir}/project-student.zip"
basedir="/WebGoatClassCD"
includes="project/.project, project/.classpath, project/.settings/**, workspace/**"/>
</target>
<target name="DeployWar"
description="Copy existing war to Tomcat - Does not rebuild">
<!-- Install war to Tomcat -->
<delete dir="${catalina.home}/webapps/${app.name}"/>
<delete file="${catalina.home}/webapps/${app.name}.war"/>
<copy file="${app.home}/dist/${app.name}-${app.version}.war" tofile="${catalina.home}/webapps/${app.name}.war"/>
</target>
<!--Build patch release -->
<target name="BuildPatch_release" depends="clean, compile"
description="Creates patch release of class files for WebGoat">
<zip destfile="${dist.home}/${app.name}-${app.version}_patch.zip">
<zipfileset dir="build/WEB-INF/classes" prefix="WEB-INF/classes"/>
<zipfileset dir="." includes="readme_patch.txt"/>
</zip>
</target>
<!-- Build J2EE Lab Environment release -->
<target name="Build_DeveloperLab_Release" depends="clean"
description="Builds J2EE Developer Course release">
<!-- Build the WebGoat WAR with the desired properties file -->
<ant dir="${app.home}" inheritAll="false">
<target name="WebGoatPropertiesOWASP"/>
<target name="BuildWar"/>
</ant>
<antcall target="DeployWar"> </antcall>
<!-- Build the CD image -->
<zip destfile="${dist.home}/${ant.project.name}-DeveloperLab-${app.version}.zip">
<zipfileset dir="." prefix="${install.home}"
includes="eclipse/, java/, project/, FirefoxPortable/, Paros/, tomcat/, webscarab/,
Read*.txt, HOW*.txt, eclipse.bat, webgoat.bat, webgoat_8080.bat, webscarab.bat,
Eclipse-Workspace.zip"
excludes="project/.*, project/.settings/**, project/dist/**, project/owasp_distributions/**, project/bin/**, project/build/**"/>
</zip>
</target>
<target name="Build_Class_Release" depends="clean"
description="Builds WebGoat Course release">
<!-- Build the WebGoat WAR with the desired properties file -->
<ant dir="${app.home}" inheritAll="false">
<target name="WebGoatPropertiesOWASP"/>
<target name="BuildWar"/>
</ant>
<antcall target="DeployWar"> </antcall>
<!-- Build the CD image -->
<zip destfile="${dist.home}/${ant.project.name}-Class-${app.version}.zip">
<zipfileset dir="." prefix="${install.home}"
includes="java/, tomcat/, FirefoxPortable/, Paros/, webscarab/, webgoat.bat, webgoat_8080.bat, webscarab.bat"
excludes="project/.*, project/.settings/**, project/dist/**, project/owasp_distributions/**, project/bin/**, project/build/**"/>
</zip>
</target>
<!-- Build OWASP Developer Lab Environment release -->
<target name="Build_OWASP_DeveloperLab_release" depends="clean"
description="Builds OWASP Developer release">
<!-- Build the WebGoat WAR with the desired properties file -->
<ant dir="${app.home}" inheritAll="false">
<target name="WebGoatPropertiesOWASP"/>
<target name="BuildWar"/>
</ant>
<antcall target="DeployWar"> </antcall>
<!-- Build the CD image -->
<zip destfile="${dist.home}/${ant.project.name}-OWASP_Developer-${app.version}.zip">
<zipfileset dir="." prefix="${install.home}"
includes="eclipse/, java/, project/, tomcat/,
read*.txt, HOW*.txt, eclipse.bat, webgoat.bat, webgoat_8080.bat,
Eclipse-Workspace.zip"
excludes="project/.*, project/.settings/**, project/dist/**, project/owasp_distributions/**, project/bin/**, project/build/**"/>
</zip>
</target>
<target name="Build_OWASP_Standard_Release" depends="clean"
description="Builds WebGoat OWASP release">
<!-- Build the WebGoat WAR with the desired properties file -->
<ant dir="${app.home}" inheritAll="false">
<target name="WebGoatPropertiesOWASP"/>
<target name="BuildWar"/>
</ant>
<antcall target="DeployWar"> </antcall>
<!-- Build the CD image -->
<zip destfile="${dist.home}/${ant.project.name}-OWASP_Standard-${app.version}.zip">
<zipfileset dir="." prefix="${install.home}"
includes="java/, tomcat/, read*.txt, webgoat.bat, webgoat_8080.bat"
excludes="project/.*, project/.settings/**, project/dist/**, project/owasp_distributions/**, project/bin/**, project/build/**"/>
</zip>
</target>
<!--Build all OWASP release -->
<target name="Build_ALL_OWASP_Releases" depends="clean_all"
description="Creates all binary distributions for OWASP">
<copy file="${basedir}/readme.txt" tofile="${dist.owasp}/readme.txt"/>
<antcall target="Build_OWASP_Standard_Release"> </antcall>
<copydir dest="${dist.owasp}" src="${dist.home}"/>
<antcall target="Build_OWASP_DeveloperLab_release"> </antcall>
<copydir dest="${dist.owasp}" src="${dist.home}"/>
</target>
<!-- ==================== Prepare Target ================================== -->
<!--
The "prepare" target is used to create the "build" destination directory,
and copy the static contents of your web application to it. If you need
to copy static files from external dependencies, you can customize the
contents of this task.
Normally, this task is executed indirectly when needed.
-->
<target name="prepare">
</target>
</project>