From 2803607901024e747ea9826b5d6e0b22d24fe1aa Mon Sep 17 00:00:00 2001 From: Nanne Baars Date: Wed, 12 Oct 2016 13:40:54 -0400 Subject: [PATCH] WIP lesson completion --- .../org/owasp/webgoat/lessons/Attack.java | 2 +- .../owasp/webgoat/lessons/LessonEndpoint.java | 8 ++++++++ .../org/owasp/webgoat/plugins/Plugin.java | 5 +---- .../owasp/webgoat/plugins/YmlBasedLesson.java | 20 +++---------------- 4 files changed, 13 insertions(+), 22 deletions(-) diff --git a/webgoat-container/src/main/java/org/owasp/webgoat/lessons/Attack.java b/webgoat-container/src/main/java/org/owasp/webgoat/lessons/Attack.java index 6f869ecf1..c8976dce6 100644 --- a/webgoat-container/src/main/java/org/owasp/webgoat/lessons/Attack.java +++ b/webgoat-container/src/main/java/org/owasp/webgoat/lessons/Attack.java @@ -32,7 +32,7 @@ import org.owasp.webgoat.lessons.model.AttackResult; * @version $Id: $Id * @since August 08, 2016 */ -public interface Attack { + public interface Attack { AttackResult attack(); diff --git a/webgoat-container/src/main/java/org/owasp/webgoat/lessons/LessonEndpoint.java b/webgoat-container/src/main/java/org/owasp/webgoat/lessons/LessonEndpoint.java index 98376b71e..f7a8a8a0d 100644 --- a/webgoat-container/src/main/java/org/owasp/webgoat/lessons/LessonEndpoint.java +++ b/webgoat-container/src/main/java/org/owasp/webgoat/lessons/LessonEndpoint.java @@ -25,6 +25,7 @@ */ package org.owasp.webgoat.lessons; +import org.owasp.webgoat.lessons.model.AttackResult; import org.owasp.webgoat.session.LessonTracker; import org.owasp.webgoat.session.UserTracker; import org.owasp.webgoat.session.WebSession; @@ -52,6 +53,7 @@ public abstract class LessonEndpoint implements MvcEndpoint { private File pluginDirectory; @Autowired private WebSession webSession; + private boolean solved = false; /** * The directory of the plugin directory in which the lessons resides, so if you want to access the lesson 'ClientSideFiltering' you will @@ -75,6 +77,12 @@ public abstract class LessonEndpoint implements MvcEndpoint { return lessonTracker; } + protected AttackResult trackProgress(AttackResult attackResult) { + this.solved = attackResult.isLessonCompleted(); + getLessonTracker().setCompleted(solved); + return attackResult; + } + @Override public final boolean isSensitive() { return false; diff --git a/webgoat-container/src/main/java/org/owasp/webgoat/plugins/Plugin.java b/webgoat-container/src/main/java/org/owasp/webgoat/plugins/Plugin.java index 9c41d2933..23395dd51 100644 --- a/webgoat-container/src/main/java/org/owasp/webgoat/plugins/Plugin.java +++ b/webgoat-container/src/main/java/org/owasp/webgoat/plugins/Plugin.java @@ -85,15 +85,12 @@ public class Plugin { final List hints = (List) lessonYml.get("hints"); final String title = (String) lessonYml.get("title"); final String html = (String) lessonYml.get("id"); - Class attackClazz = findAttack(html); - this.ymlBasedLesson = new YmlBasedLesson(category, hints, title, html, attackClazz); + this.ymlBasedLesson = new YmlBasedLesson(category, hints, title, html); this.lesson = null; } catch (IOException e) { throw new PluginLoadingFailure("Unable to read yml file", e); } } - - } private Class findAttack(String id) { diff --git a/webgoat-container/src/main/java/org/owasp/webgoat/plugins/YmlBasedLesson.java b/webgoat-container/src/main/java/org/owasp/webgoat/plugins/YmlBasedLesson.java index 6d712a2ab..877433eea 100644 --- a/webgoat-container/src/main/java/org/owasp/webgoat/plugins/YmlBasedLesson.java +++ b/webgoat-container/src/main/java/org/owasp/webgoat/plugins/YmlBasedLesson.java @@ -1,8 +1,8 @@ package org.owasp.webgoat.plugins; -import org.owasp.webgoat.lessons.Attack; import org.owasp.webgoat.lessons.Category; import org.owasp.webgoat.lessons.LessonAdapter; +import org.owasp.webgoat.lessons.LessonEndpoint; import org.owasp.webgoat.session.WebSession; import java.util.List; @@ -43,15 +43,13 @@ public class YmlBasedLesson extends LessonAdapter { private final List hints; private final String title; private final String id; - private Attack attack; + private List lessonEndpoints; - public YmlBasedLesson(String category, List hints, String title, String id, Class attack) { + public YmlBasedLesson(String category, List hints, String title, String id) { this.category = category; this.hints = hints; this.title = title; this.id = id; - // createAttack(attack); - } @Override @@ -78,16 +76,4 @@ public class YmlBasedLesson extends LessonAdapter { return id; } - public Attack getLessonAttack() { - return this.attack; - } - - private void createAttack(Class attack) { - try { - this.attack = (Attack) attack.newInstance(); - } catch (Exception e) { - e.printStackTrace(); - } - } - }