Extract the stage-related code from LessonTracker into SequentialLessonTracker
git-svn-id: http://webgoat.googlecode.com/svn/trunk@157 4033779f-a91e-0410-96ef-6bf7bf53c507
This commit is contained in:
@ -42,8 +42,6 @@ public class LessonTracker
|
||||
|
||||
private boolean completed = false;
|
||||
|
||||
private int currentStage = 1;
|
||||
|
||||
private int maxHintLevel = 0;
|
||||
|
||||
private int numVisits = 0;
|
||||
@ -72,18 +70,6 @@ public class LessonTracker
|
||||
}
|
||||
|
||||
|
||||
public int getStage()
|
||||
{
|
||||
return currentStage;
|
||||
}
|
||||
|
||||
|
||||
public void setStage(int stage)
|
||||
{
|
||||
currentStage = stage;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets the maxHintLevel attribute of the LessonTracker object
|
||||
*
|
||||
@ -175,15 +161,13 @@ public class LessonTracker
|
||||
*
|
||||
* @param props The new properties value
|
||||
*/
|
||||
private void setProperties(Properties props, Screen screen)
|
||||
protected void setProperties(Properties props, Screen screen)
|
||||
{
|
||||
completed = Boolean.valueOf(
|
||||
props.getProperty(screen.getTitle() + ".completed"))
|
||||
.booleanValue();
|
||||
maxHintLevel = Integer.parseInt(props.getProperty(screen.getTitle()
|
||||
+ ".maxHintLevel"));
|
||||
currentStage = Integer.parseInt(props.getProperty(screen.getTitle()
|
||||
+ ".currentStage"));
|
||||
numVisits = Integer.parseInt(props.getProperty(screen.getTitle()
|
||||
+ ".numVisits"));
|
||||
viewedCookies = Boolean.valueOf(
|
||||
@ -367,8 +351,6 @@ public class LessonTracker
|
||||
//System.out.println( "Storing data to" + fileName );
|
||||
lessonProperties.setProperty(screen.getTitle() + ".completed", Boolean
|
||||
.toString(completed));
|
||||
lessonProperties.setProperty(screen.getTitle() + ".currentStage",
|
||||
Integer.toString(currentStage));
|
||||
lessonProperties.setProperty(screen.getTitle() + ".maxHintLevel",
|
||||
Integer.toString(maxHintLevel));
|
||||
lessonProperties.setProperty(screen.getTitle() + ".numVisits", Integer
|
||||
@ -417,7 +399,6 @@ public class LessonTracker
|
||||
StringBuffer buff = new StringBuffer();
|
||||
buff.append("LessonTracker:" + "\n");
|
||||
buff.append(" - completed:.......... " + completed + "\n");
|
||||
buff.append(" - currentStage:....... " + currentStage + "\n");
|
||||
buff.append(" - maxHintLevel:....... " + maxHintLevel + "\n");
|
||||
buff.append(" - numVisits:.......... " + numVisits + "\n");
|
||||
buff.append(" - viewedCookies:...... " + viewedCookies + "\n");
|
||||
|
@ -0,0 +1,39 @@
|
||||
package org.owasp.webgoat.session;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
public class SequentialLessonTracker extends LessonTracker {
|
||||
|
||||
private int currentStage = 1;
|
||||
|
||||
|
||||
|
||||
public int getStage()
|
||||
{
|
||||
return currentStage;
|
||||
}
|
||||
|
||||
|
||||
public void setStage(int stage)
|
||||
{
|
||||
currentStage = stage;
|
||||
}
|
||||
|
||||
protected void setProperties(Properties props, Screen screen)
|
||||
{
|
||||
super.setProperties(props, screen);
|
||||
currentStage = Integer.parseInt(props.getProperty(screen.getTitle()
|
||||
+ ".currentStage"));
|
||||
}
|
||||
|
||||
public void store(WebSession s, Screen screen, String user)
|
||||
{
|
||||
lessonProperties.setProperty(screen.getTitle() + ".currentStage",
|
||||
Integer.toString(currentStage));
|
||||
super.store(s, screen, user);
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return super.toString() + " - currentStage:....... " + currentStage + "\n";
|
||||
}
|
||||
}
|
@ -22,6 +22,7 @@ import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.owasp.webgoat.lessons.AbstractLesson;
|
||||
import org.owasp.webgoat.lessons.Category;
|
||||
import org.owasp.webgoat.lessons.SequentialLessonAdapter;
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
@ -907,9 +908,14 @@ public class WebSession
|
||||
}
|
||||
else if (myParser.getRawParameter( STAGE, null ) != null)
|
||||
{
|
||||
int stage = myParser.getIntParameter(STAGE, getCurrentLesson().getStage(this));
|
||||
if (stage > 0 && stage <= getCurrentLesson().getStageCount())
|
||||
getCurrentLesson().setStage(this, stage);
|
||||
AbstractLesson al = getCurrentLesson();
|
||||
if (al instanceof SequentialLessonAdapter)
|
||||
{
|
||||
SequentialLessonAdapter sla = (SequentialLessonAdapter) al;
|
||||
int stage = myParser.getIntParameter(STAGE, sla.getStage(this));
|
||||
if (stage > 0 && stage <= sla.getStageCount())
|
||||
sla.setStage(this, stage);
|
||||
}
|
||||
}
|
||||
// else update global variables for the current screen
|
||||
else
|
||||
@ -981,9 +987,14 @@ public class WebSession
|
||||
|
||||
private void restartLesson(int lessonId)
|
||||
{
|
||||
System.out.println("Restarting lesson: " + getLesson(lessonId));
|
||||
getCurrentLesson().getLessonTracker( this ).setStage(1);
|
||||
getCurrentLesson().getLessonTracker( this ).setCompleted(false);
|
||||
AbstractLesson al = getLesson(lessonId);
|
||||
System.out.println("Restarting lesson: " + al);
|
||||
al.getLessonTracker( this ).setCompleted(false);
|
||||
if (al instanceof SequentialLessonAdapter)
|
||||
{
|
||||
SequentialLessonAdapter sla = (SequentialLessonAdapter) al;
|
||||
sla.getLessonTracker( this ).setStage(1);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1063,23 +1074,6 @@ public class WebSession
|
||||
return currentMenu;
|
||||
}
|
||||
|
||||
public String htmlEncode(String s)
|
||||
{
|
||||
//System.out.println("Testing for stage 4 completion in lesson " + getCurrentLesson().getName());
|
||||
if (getCurrentLesson().getName().equals("CrossSiteScripting"))
|
||||
{
|
||||
if (getCurrentLesson().getStage(this) == 4 &&
|
||||
s.indexOf("<script>") > -1 && s.indexOf("alert") > -1 && s.indexOf("</script>") > -1)
|
||||
{
|
||||
setMessage( "Welcome to stage 5 -- exploiting the data layer" );
|
||||
// Set a phantom stage value to setup for the 4-5 transition
|
||||
getCurrentLesson().setStage(this, 1005);
|
||||
}
|
||||
}
|
||||
|
||||
return ParameterParser.htmlEncode(s);
|
||||
}
|
||||
|
||||
public WebgoatContext getWebgoatContext() {
|
||||
return webgoatContext;
|
||||
}
|
||||
|
Reference in New Issue
Block a user