Also extract html files

(cherry picked from commit 856bdab)
This commit is contained in:
nbaars 2015-01-04 07:41:00 +01:00
parent 0d48b83e82
commit ca6984e939
3 changed files with 16 additions and 5 deletions

View File

@ -13,6 +13,10 @@ public class PluginClassLoader extends ClassLoader {
return defineClass(name, classFile, 0, classFile.length); return defineClass(name, classFile, 0, classFile.length);
} }
public static void main(String[] args) {
}
} }

View File

@ -11,9 +11,13 @@ import java.nio.file.FileSystems;
import java.nio.file.FileVisitResult; import java.nio.file.FileVisitResult;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor; import java.nio.file.SimpleFileVisitor;
import java.nio.file.StandardCopyOption;
import java.nio.file.attribute.BasicFileAttributes; import java.nio.file.attribute.BasicFileAttributes;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
/** /**
* Extract the zip file and place the files in a temp directory * Extract the zip file and place the files in a temp directory
@ -24,9 +28,10 @@ import java.util.HashMap;
*/ */
public class PluginExtractor { public class PluginExtractor {
private static final String DIRECTORY = "plugins"; private static final String DIRECTORY = "webgoat";
private final Path pluginArchive; private final Path pluginArchive;
private final Logger logger = LoggerFactory.getLogger(getClass()); private final Logger logger = LoggerFactory.getLogger(getClass());
private final List<byte[]> classes = new ArrayList<byte[]>();
public PluginExtractor(Path pluginArchive) { public PluginExtractor(Path pluginArchive) {
this.pluginArchive = pluginArchive; this.pluginArchive = pluginArchive;
@ -39,8 +44,8 @@ public class PluginExtractor {
try { try {
zip = createZipFileSystem(); zip = createZipFileSystem();
final Path root = zip.getPath("/"); final Path root = zip.getPath("/");
final Path tempDirectory = Files.createTempDirectory(DIRECTORY); final Path tmpDir = Paths.get(System.getProperty("java.io.tmpdir"), DIRECTORY);
pluginBuilder.setBaseDirectory(tempDirectory); pluginBuilder.setBaseDirectory(tmpDir);
Files.walkFileTree(root, new SimpleFileVisitor<Path>() { Files.walkFileTree(root, new SimpleFileVisitor<Path>() {
@Override @Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
@ -49,7 +54,8 @@ public class PluginExtractor {
Files.copy(file, bos); Files.copy(file, bos);
pluginBuilder.loadClass(file.toString(), bos.toByteArray()); 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; return FileVisitResult.CONTINUE;
} }
}); });

View File

@ -461,9 +461,10 @@ public class Course {
public void loadCourses(WebgoatContext webgoatContext, ServletContext context, String path) { public void loadCourses(WebgoatContext webgoatContext, ServletContext context, String path) {
logger.info("Loading courses: " + path); logger.info("Loading courses: " + path);
this.webgoatContext = webgoatContext; this.webgoatContext = webgoatContext;
loadLessionFromPlugin(context);
loadFiles(context, path); loadFiles(context, path);
loadLessons(path); loadLessons(path);
loadResources(); loadResources();
loadLessionFromPlugin(context);
} }
} }