From 43ac09a0145ce274fff530e2e42dc8cc76c9ed70 Mon Sep 17 00:00:00 2001
From: "mayhew64@gmail.com"
 <mayhew64@gmail.com@4033779f-a91e-0410-96ef-6bf7bf53c507>
Date: Fri, 20 Apr 2012 15:45:54 +0000
Subject: [PATCH] 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
---
 ...O create the eclipse WebGoat workspace.txt | 196 ++++++++++++
 build.xml                                     | 282 ++++++++++++++++++
 2 files changed, 478 insertions(+)
 create mode 100644 HOW TO create the eclipse WebGoat workspace.txt
 create mode 100644 build.xml

diff --git a/HOW TO create the eclipse WebGoat workspace.txt b/HOW TO create the eclipse WebGoat workspace.txt
new file mode 100644
index 000000000..ba01dd1e9
--- /dev/null
+++ b/HOW TO create the eclipse WebGoat workspace.txt	
@@ -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
diff --git a/build.xml b/build.xml
new file mode 100644
index 000000000..52c34732a
--- /dev/null
+++ b/build.xml
@@ -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>
+
+