diff --git a/src/main/java/org/owasp/webgoat/plugins/PluginClassLoader.java b/src/main/java/org/owasp/webgoat/plugins/PluginClassLoader.java index 9b7201603..36bb92a4d 100644 --- a/src/main/java/org/owasp/webgoat/plugins/PluginClassLoader.java +++ b/src/main/java/org/owasp/webgoat/plugins/PluginClassLoader.java @@ -13,6 +13,10 @@ public class PluginClassLoader extends ClassLoader { return defineClass(name, classFile, 0, classFile.length); } + public static void main(String[] args) { + + } + } diff --git a/src/main/java/org/owasp/webgoat/plugins/PluginExtractor.java b/src/main/java/org/owasp/webgoat/plugins/PluginExtractor.java index 4d21e56c2..daf69fd3e 100644 --- a/src/main/java/org/owasp/webgoat/plugins/PluginExtractor.java +++ b/src/main/java/org/owasp/webgoat/plugins/PluginExtractor.java @@ -11,9 +11,13 @@ import java.nio.file.FileSystems; import java.nio.file.FileVisitResult; import java.nio.file.Files; import java.nio.file.Path; +import java.nio.file.Paths; import java.nio.file.SimpleFileVisitor; +import java.nio.file.StandardCopyOption; import java.nio.file.attribute.BasicFileAttributes; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; /** * Extract the zip file and place the files in a temp directory @@ -24,9 +28,10 @@ import java.util.HashMap; */ public class PluginExtractor { - private static final String DIRECTORY = "plugins"; + private static final String DIRECTORY = "webgoat"; private final Path pluginArchive; private final Logger logger = LoggerFactory.getLogger(getClass()); + private final List classes = new ArrayList(); public PluginExtractor(Path pluginArchive) { this.pluginArchive = pluginArchive; @@ -39,8 +44,8 @@ public class PluginExtractor { try { zip = createZipFileSystem(); final Path root = zip.getPath("/"); - final Path tempDirectory = Files.createTempDirectory(DIRECTORY); - pluginBuilder.setBaseDirectory(tempDirectory); + final Path tmpDir = Paths.get(System.getProperty("java.io.tmpdir"), DIRECTORY); + pluginBuilder.setBaseDirectory(tmpDir); Files.walkFileTree(root, new SimpleFileVisitor() { @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { @@ -49,7 +54,8 @@ public class PluginExtractor { Files.copy(file, bos); pluginBuilder.loadClass(file.toString(), bos.toByteArray()); } - // Files.copy(file, tempDirectory.resolve(file.getFileName()), StandardCopyOption.REPLACE_EXISTING); + + Files.copy(file, Paths.get(tmpDir.toString(), file.toString()), StandardCopyOption.REPLACE_EXISTING); return FileVisitResult.CONTINUE; } }); diff --git a/src/main/java/org/owasp/webgoat/session/Course.java b/src/main/java/org/owasp/webgoat/session/Course.java index 1338c5630..2f8813351 100644 --- a/src/main/java/org/owasp/webgoat/session/Course.java +++ b/src/main/java/org/owasp/webgoat/session/Course.java @@ -461,9 +461,10 @@ public class Course { public void loadCourses(WebgoatContext webgoatContext, ServletContext context, String path) { logger.info("Loading courses: " + path); this.webgoatContext = webgoatContext; + loadLessionFromPlugin(context); loadFiles(context, path); loadLessons(path); loadResources(); - loadLessionFromPlugin(context); + } }