Http Basics lessons fails to load #53
This commit is contained in:
@ -1,26 +0,0 @@
|
||||
package org.owasp.webgoat.plugins;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Path;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
public final class GlobalProperties {
|
||||
|
||||
private final Path pluginDirectory;
|
||||
|
||||
public GlobalProperties(Path pluginDirectory) {
|
||||
this.pluginDirectory = Objects.requireNonNull(pluginDirectory, "pluginDirectory cannot be null");
|
||||
}
|
||||
|
||||
public void loadProperties(Path globalPropertiesPath) {
|
||||
try {
|
||||
PluginFileUtils.createDirsIfNotExists(pluginDirectory);
|
||||
List<Path> filesInDirectory = PluginFileUtils.getFilesInDirectory(globalPropertiesPath);
|
||||
new Plugin(pluginDirectory).loadFiles(filesInDirectory, true);
|
||||
} catch (IOException e) {
|
||||
throw new IllegalStateException("Unable to load global properties, check your installation for the directory i18n: " + globalPropertiesPath.toString(), e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -5,8 +5,8 @@ import com.google.common.base.Preconditions;
|
||||
import com.google.common.collect.Lists;
|
||||
import org.owasp.webgoat.classloader.PluginClassLoader;
|
||||
import org.owasp.webgoat.lessons.AbstractLesson;
|
||||
import org.owasp.webgoat.util.LabelProvider;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
@ -90,16 +90,11 @@ public class Plugin {
|
||||
|
||||
private void copyProperties(boolean reload, Path file) {
|
||||
try {
|
||||
ByteArrayOutputStream bos = new ByteArrayOutputStream();
|
||||
Files.copy(file, bos);
|
||||
byte[] lines = Files.readAllBytes(file);
|
||||
Path propertiesPath = createPropertiesDirectory();
|
||||
ResourceBundleClassLoader.setPropertiesPath(propertiesPath);
|
||||
LabelProvider.updatePluginResources(propertiesPath);
|
||||
PluginFileUtils.createDirsIfNotExists(file.getParent());
|
||||
if (reload) {
|
||||
Files.write(propertiesPath.resolve(file.getFileName()), bos.toByteArray(), CREATE, APPEND);
|
||||
} else {
|
||||
Files.write(propertiesPath.resolve(file.getFileName()), bos.toByteArray(), CREATE, TRUNCATE_EXISTING);
|
||||
}
|
||||
Files.write(propertiesPath.resolve(file.getFileName()), lines, CREATE, (reload ? APPEND : TRUNCATE_EXISTING));
|
||||
} catch (IOException io) {
|
||||
throw new PluginLoadingFailure("Property file detected, but unable to copy the properties", io);
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package org.owasp.webgoat.plugins;
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.google.common.collect.Lists;
|
||||
import org.owasp.webgoat.classloader.PluginClassLoader;
|
||||
import org.owasp.webgoat.util.LabelProvider;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@ -78,6 +79,7 @@ public class PluginsLoader implements Runnable {
|
||||
plugins.add(plugin);
|
||||
}
|
||||
}
|
||||
LabelProvider.refresh();
|
||||
return plugins;
|
||||
}
|
||||
|
||||
|
@ -1,33 +0,0 @@
|
||||
package org.owasp.webgoat.plugins;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.net.URLClassLoader;
|
||||
import java.nio.file.Path;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class ResourceBundleClassLoader {
|
||||
|
||||
private final static ResourceBundleClassLoader classLoader = new ResourceBundleClassLoader();
|
||||
private Path propertiesPath;
|
||||
|
||||
private ResourceBundleClassLoader() {
|
||||
}
|
||||
|
||||
public static void setPropertiesPath(Path path) {
|
||||
classLoader.propertiesPath = path;
|
||||
}
|
||||
|
||||
public static ClassLoader createPropertyFilesClassLoader() {
|
||||
final List<URL> urls = new ArrayList<>();
|
||||
|
||||
try {
|
||||
urls.add(classLoader.propertiesPath.toUri().toURL());
|
||||
} catch (IOException e) {
|
||||
throw new PluginLoadingFailure("Unable to load the properties for the classloader", e);
|
||||
}
|
||||
return new URLClassLoader(urls.toArray(new URL[urls.size()]), Thread.currentThread().getContextClassLoader());
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user