From 44ac92dfccf0bbcebefe8bc5c7f33dcdd4a2d6b8 Mon Sep 17 00:00:00 2001 From: Josh Stark Date: Sat, 16 Mar 2019 18:06:35 +0000 Subject: [PATCH] Updated properties loader to cascade through environment --- .gitignore | 1 + build.gradle | 2 +- .../fleet/core/FleetProperties.java | 40 ++++++++++++++----- .../fleet/core/PropertiesLoader.java | 21 +++++++++- .../io/linuxserver/fleet/web/WebServer.java | 3 ++ src/main/resources/log4j2.xml | 24 ----------- 6 files changed, 55 insertions(+), 36 deletions(-) delete mode 100644 src/main/resources/log4j2.xml diff --git a/.gitignore b/.gitignore index 64bbbb7..d82baf6 100644 --- a/.gitignore +++ b/.gitignore @@ -30,4 +30,5 @@ out/ config/fleet.properties src/main/resources/assets/js/all*.js src/main/resources/assets/css/all*.css +src/main/resources/log4j2.xml .gradle/ \ No newline at end of file diff --git a/build.gradle b/build.gradle index 40e40ac..740ca4b 100644 --- a/build.gradle +++ b/build.gradle @@ -11,7 +11,7 @@ repositories { mavenCentral() } -version = '1.0.0' +version = '1.0.1' dependencies { diff --git a/src/main/java/io/linuxserver/fleet/core/FleetProperties.java b/src/main/java/io/linuxserver/fleet/core/FleetProperties.java index 22e54b5..b7f604c 100644 --- a/src/main/java/io/linuxserver/fleet/core/FleetProperties.java +++ b/src/main/java/io/linuxserver/fleet/core/FleetProperties.java @@ -30,42 +30,62 @@ public class FleetProperties { } public String getDatabaseDriverClassName() { - return properties.getProperty("fleet.database.driver"); + return getStringProperty("fleet.database.driver"); } public String getDatabaseUrl() { - return properties.getProperty("fleet.database.url"); + return getStringProperty("fleet.database.url"); } public String getDatabaseUsername() { - return properties.getProperty("fleet.database.username"); + return getStringProperty("fleet.database.username"); } public String getDatabasePassword() { - return properties.getProperty("fleet.database.password"); + return getStringProperty("fleet.database.password"); } public String getAppUsername() { - return properties.getProperty("fleet.admin.username"); + return getStringProperty("fleet.admin.username"); } public String getAppPassword() { - return properties.getProperty("fleet.admin.password"); + return getStringProperty("fleet.admin.password"); } public int getAppPort() { - return Integer.parseInt(properties.getProperty("fleet.app.port")); + return Integer.parseInt(getStringProperty("fleet.app.port")); } public int getRefreshIntervalInMinutes() { - return Integer.parseInt(properties.getProperty("fleet.refresh.interval")); + return Integer.parseInt(getStringProperty("fleet.refresh.interval")); } public DockerHubCredentials getDockerHubCredentials() { - String username = properties.getProperty("fleet.dockerhub.username"); - String password = properties.getProperty("fleet.dockerhub.password"); + String username = getStringProperty("fleet.dockerhub.username"); + String password = getStringProperty("fleet.dockerhub.password"); return new DockerHubCredentials(username, password); } + + /** + *

+ * Obtains the property value from three separate sources: first from the config file. If not present, it will look + * at the JVM runtime. If that is not present, it will finally check the system environment. + *

+ */ + private String getStringProperty(String propertyKey) { + + String property = properties.getProperty(propertyKey); + if (null == property) { + + property = System.getProperty(propertyKey); + if (null == property) { + property = System.getenv(propertyKey); + } + } + + return property; + } } diff --git a/src/main/java/io/linuxserver/fleet/core/PropertiesLoader.java b/src/main/java/io/linuxserver/fleet/core/PropertiesLoader.java index ac02923..7b5b071 100644 --- a/src/main/java/io/linuxserver/fleet/core/PropertiesLoader.java +++ b/src/main/java/io/linuxserver/fleet/core/PropertiesLoader.java @@ -46,6 +46,8 @@ class PropertiesLoader extends BaseRuntimeLoader { try { + createConfigFileIfNotProvided(); + Properties properties = new Properties(); properties.load(new FileInputStream(FleetRuntime.CONFIG_BASE + "/fleet.properties")); @@ -64,6 +66,23 @@ class PropertiesLoader extends BaseRuntimeLoader { } } + private void createConfigFileIfNotProvided() { + + try { + + File configFile = new File(FleetRuntime.CONFIG_BASE + "/fleet.properties"); + if (!configFile.exists()) { + + if (!configFile.createNewFile()) { + throw new RuntimeException("Unable to create base config for fleet."); + } + } + + } catch (IOException e) { + throw new RuntimeException("Unable to create base config for fleet.", e); + } + } + private boolean createStaticFileDirectory() { File staticFilesDir = new File(FleetRuntime.CONFIG_BASE + "/fleet_static"); @@ -94,7 +113,7 @@ class PropertiesLoader extends BaseRuntimeLoader { * @return * All application properties. */ - protected FleetProperties getProperties() { + FleetProperties getProperties() { return properties; } diff --git a/src/main/java/io/linuxserver/fleet/web/WebServer.java b/src/main/java/io/linuxserver/fleet/web/WebServer.java index ecce6d3..5673ae2 100644 --- a/src/main/java/io/linuxserver/fleet/web/WebServer.java +++ b/src/main/java/io/linuxserver/fleet/web/WebServer.java @@ -53,6 +53,9 @@ public class WebServer { path("/admin", configureAuthorisationRoute("/getImage")); after("/api/v1/*", (request, response) -> { + + response.header("Access-Control-Allow-Origin", "*"); + response.header("Access-Control-Allow-Methods", "GET"); response.header("Content-Type", "application/json"); }); diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml deleted file mode 100644 index 849aecc..0000000 --- a/src/main/resources/log4j2.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file