diff --git a/build.gradle b/build.gradle index c9839555..2b769fa7 100644 --- a/build.gradle +++ b/build.gradle @@ -6,8 +6,11 @@ plugins { id "io.swagger.swaggerhub" version "1.3.2" id 'edu.sc.seis.launch4j' version '3.0.5' id 'com.diffplug.spotless' version '6.23.3' + id 'com.github.jk1.dependency-license-report' version '2.5' } +import com.github.jk1.license.render.* + group = 'stirling.software' version = '0.18.1' sourceCompatibility = '17' @@ -16,6 +19,12 @@ repositories { mavenCentral() } + + +licenseReport { + renderers = [new JsonReportRenderer()] +} + sourceSets { main { java { diff --git a/src/main/java/stirling/software/SPDF/controller/web/HomeWebController.java b/src/main/java/stirling/software/SPDF/controller/web/HomeWebController.java index 23c19f9a..882b1581 100644 --- a/src/main/java/stirling/software/SPDF/controller/web/HomeWebController.java +++ b/src/main/java/stirling/software/SPDF/controller/web/HomeWebController.java @@ -10,6 +10,16 @@ import org.springframework.web.bind.annotation.ResponseBody; import io.swagger.v3.oas.annotations.Hidden; import stirling.software.SPDF.model.ApplicationProperties; +import stirling.software.SPDF.model.Dependency; + +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.core.io.ClassPathResource; +import org.springframework.core.io.Resource; +import java.io.IOException; +import java.nio.file.Files; +import java.util.List; +import java.util.Map; @Controller public class HomeWebController { @@ -20,6 +30,24 @@ public class HomeWebController { model.addAttribute("currentPage", "about"); return "about"; } + + @GetMapping("/licenses") + @Hidden + public String licensesForm(Model model) { + model.addAttribute("currentPage", "licenses"); + Resource resource = new ClassPathResource("static/3rdPartyLicenses.json"); + try { + String json = new String(Files.readAllBytes(resource.getFile().toPath())); + ObjectMapper mapper = new ObjectMapper(); + Map> data = mapper.readValue(json, new TypeReference>>() {}); + model.addAttribute("dependencies", data.get("dependencies")); + } catch (IOException e) { + e.printStackTrace(); + // Handle exceptions, possibly return an error view + } + return "licenses"; + } + @GetMapping("/") public String home(Model model) { diff --git a/src/main/java/stirling/software/SPDF/model/Dependency.java b/src/main/java/stirling/software/SPDF/model/Dependency.java new file mode 100644 index 00000000..bbff3e2a --- /dev/null +++ b/src/main/java/stirling/software/SPDF/model/Dependency.java @@ -0,0 +1,13 @@ +package stirling.software.SPDF.model; + +import lombok.Data; + +@Data +public class Dependency { + private String moduleName; + private String moduleUrl; + private String moduleVersion; + private String moduleLicense; + private String moduleLicenseUrl; + +} diff --git a/src/main/resources/static/3rdPartyLicenses.json b/src/main/resources/static/3rdPartyLicenses.json new file mode 100644 index 00000000..25e8e91b --- /dev/null +++ b/src/main/resources/static/3rdPartyLicenses.json @@ -0,0 +1,846 @@ +{ + "dependencies": [ + { + "moduleName": "ch.qos.logback:logback-classic", + "moduleUrl": "http://www.qos.ch", + "moduleVersion": "1.4.14", + "moduleLicense": "GNU Lesser General Public License", + "moduleLicenseUrl": "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html" + }, + { + "moduleName": "ch.qos.logback:logback-core", + "moduleUrl": "http://www.qos.ch", + "moduleVersion": "1.4.14", + "moduleLicense": "GNU Lesser General Public License", + "moduleLicenseUrl": "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html" + }, + { + "moduleName": "com.fasterxml.jackson.core:jackson-annotations", + "moduleUrl": "https://github.com/FasterXML/jackson", + "moduleVersion": "2.15.3", + "moduleLicense": "The Apache Software License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "com.fasterxml.jackson.core:jackson-core", + "moduleUrl": "https://github.com/FasterXML/jackson-core", + "moduleVersion": "2.15.3", + "moduleLicense": "The Apache Software License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "com.fasterxml.jackson.core:jackson-databind", + "moduleUrl": "https://github.com/FasterXML/jackson", + "moduleVersion": "2.15.3", + "moduleLicense": "The Apache Software License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml", + "moduleUrl": "https://github.com/FasterXML/jackson-dataformats-text", + "moduleVersion": "2.15.3", + "moduleLicense": "The Apache Software License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "com.fasterxml.jackson.datatype:jackson-datatype-jdk8", + "moduleUrl": "https://github.com/FasterXML/jackson-modules-java8/jackson-datatype-jdk8", + "moduleVersion": "2.15.3", + "moduleLicense": "The Apache Software License, Version 2.0", + "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "com.fasterxml.jackson.datatype:jackson-datatype-jsr310", + "moduleUrl": "https://github.com/FasterXML/jackson-modules-java8/jackson-datatype-jsr310", + "moduleVersion": "2.15.3", + "moduleLicense": "The Apache Software License, Version 2.0", + "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "com.fasterxml.jackson.module:jackson-module-parameter-names", + "moduleUrl": "https://github.com/FasterXML/jackson-modules-java8/jackson-module-parameter-names", + "moduleVersion": "2.15.3", + "moduleLicense": "The Apache Software License, Version 2.0", + "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "com.fasterxml.jackson:jackson-bom", + "moduleVersion": "2.15.3" + }, + { + "moduleName": "com.fasterxml:classmate", + "moduleUrl": "https://github.com/FasterXML/java-classmate", + "moduleVersion": "1.6.0", + "moduleLicense": "The Apache Software License, Version 2.0", + "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "com.github.vladimir-bukhtoyarov:bucket4j-core", + "moduleUrl": "http://github.com/vladimir-bukhtoyarov/bucket4j/bucket4j-core", + "moduleVersion": "7.6.0", + "moduleLicense": "The Apache Software License, Version 2.0", + "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "com.google.zxing:core", + "moduleUrl": "https://github.com/zxing/zxing/core", + "moduleVersion": "3.5.2", + "moduleLicense": "The Apache Software License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "com.h2database:h2", + "moduleUrl": "https://h2database.com", + "moduleVersion": "2.1.214", + "moduleLicense": "MPL 2.0", + "moduleLicenseUrl": "https://www.mozilla.org/en-US/MPL/2.0/" + }, + { + "moduleName": "com.opencsv:opencsv", + "moduleUrl": "http://opencsv.sf.net", + "moduleVersion": "5.9", + "moduleLicense": "Apache 2", + "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "com.sun.istack:istack-commons-runtime", + "moduleUrl": "https://www.eclipse.org", + "moduleVersion": "4.1.2", + "moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception", + "moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html" + }, + { + "moduleName": "com.twelvemonkeys.common:common-image", + "moduleVersion": "3.10.1", + "moduleLicense": "The BSD License", + "moduleLicenseUrl": "https://github.com/haraldk/TwelveMonkeys#license" + }, + { + "moduleName": "com.twelvemonkeys.common:common-io", + "moduleVersion": "3.10.1", + "moduleLicense": "The BSD License", + "moduleLicenseUrl": "https://github.com/haraldk/TwelveMonkeys#license" + }, + { + "moduleName": "com.twelvemonkeys.common:common-lang", + "moduleVersion": "3.10.1", + "moduleLicense": "The BSD License", + "moduleLicenseUrl": "https://github.com/haraldk/TwelveMonkeys#license" + }, + { + "moduleName": "com.twelvemonkeys.imageio:imageio-batik", + "moduleVersion": "3.10.1", + "moduleLicense": "The BSD License", + "moduleLicenseUrl": "https://github.com/haraldk/TwelveMonkeys#license" + }, + { + "moduleName": "com.twelvemonkeys.imageio:imageio-bmp", + "moduleVersion": "3.10.1", + "moduleLicense": "The BSD License", + "moduleLicenseUrl": "https://github.com/haraldk/TwelveMonkeys#license" + }, + { + "moduleName": "com.twelvemonkeys.imageio:imageio-core", + "moduleVersion": "3.10.1", + "moduleLicense": "The BSD License", + "moduleLicenseUrl": "https://github.com/haraldk/TwelveMonkeys#license" + }, + { + "moduleName": "com.twelvemonkeys.imageio:imageio-jpeg", + "moduleVersion": "3.10.1", + "moduleLicense": "The BSD License", + "moduleLicenseUrl": "https://github.com/haraldk/TwelveMonkeys#license" + }, + { + "moduleName": "com.twelvemonkeys.imageio:imageio-metadata", + "moduleVersion": "3.10.1", + "moduleLicense": "The BSD License", + "moduleLicenseUrl": "https://github.com/haraldk/TwelveMonkeys#license" + }, + { + "moduleName": "com.twelvemonkeys.imageio:imageio-tiff", + "moduleVersion": "3.10.1", + "moduleLicense": "The BSD License", + "moduleLicenseUrl": "https://github.com/haraldk/TwelveMonkeys#license" + }, + { + "moduleName": "com.twelvemonkeys.imageio:imageio-webp", + "moduleVersion": "3.10.1", + "moduleLicense": "The BSD License", + "moduleLicenseUrl": "https://github.com/haraldk/TwelveMonkeys#license" + }, + { + "moduleName": "com.zaxxer:HikariCP", + "moduleUrl": "https://github.com/brettwooldridge/HikariCP", + "moduleVersion": "5.0.1", + "moduleLicense": "The Apache Software License, Version 2.0", + "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "commons-beanutils:commons-beanutils", + "moduleUrl": "https://commons.apache.org/proper/commons-beanutils/", + "moduleVersion": "1.9.4", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "commons-collections:commons-collections", + "moduleUrl": "http://commons.apache.org/collections/", + "moduleVersion": "3.2.2", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "commons-io:commons-io", + "moduleUrl": "https://commons.apache.org/proper/commons-io/", + "moduleVersion": "2.15.1", + "moduleLicense": "Apache-2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "commons-logging:commons-logging", + "moduleUrl": "http://jakarta.apache.org/commons/logging/", + "moduleVersion": "1.0.4", + "moduleLicense": "The Apache Software License, Version 2.0", + "moduleLicenseUrl": "/LICENSE.txt" + }, + { + "moduleName": "io.micrometer:micrometer-commons", + "moduleUrl": "https://github.com/micrometer-metrics/micrometer", + "moduleVersion": "1.12.1", + "moduleLicense": "The Apache Software License, Version 2.0", + "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "io.micrometer:micrometer-core", + "moduleUrl": "https://github.com/micrometer-metrics/micrometer", + "moduleVersion": "1.12.1", + "moduleLicense": "The Apache Software License, Version 2.0", + "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "io.micrometer:micrometer-jakarta9", + "moduleUrl": "https://github.com/micrometer-metrics/micrometer", + "moduleVersion": "1.12.1", + "moduleLicense": "The Apache Software License, Version 2.0", + "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "io.micrometer:micrometer-observation", + "moduleUrl": "https://github.com/micrometer-metrics/micrometer", + "moduleVersion": "1.12.1", + "moduleLicense": "The Apache Software License, Version 2.0", + "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "io.smallrye:jandex", + "moduleVersion": "3.1.2", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "io.swagger.core.v3:swagger-annotations-jakarta", + "moduleUrl": "https://github.com/swagger-api/swagger-core/modules/swagger-annotations", + "moduleVersion": "2.2.15", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "io.swagger.core.v3:swagger-core-jakarta", + "moduleUrl": "https://github.com/swagger-api/swagger-core/modules/swagger-core", + "moduleVersion": "2.2.15", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "io.swagger.core.v3:swagger-models-jakarta", + "moduleUrl": "https://github.com/swagger-api/swagger-core/modules/swagger-models", + "moduleVersion": "2.2.15", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "jakarta.activation:jakarta.activation-api", + "moduleUrl": "https://www.eclipse.org", + "moduleVersion": "2.1.2", + "moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception", + "moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html" + }, + { + "moduleName": "jakarta.annotation:jakarta.annotation-api", + "moduleUrl": "https://www.eclipse.org", + "moduleVersion": "2.1.1", + "moduleLicense": "GPL2 w/ CPE", + "moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html" + }, + { + "moduleName": "jakarta.inject:jakarta.inject-api", + "moduleUrl": "https://www.eclipse.org", + "moduleVersion": "2.0.1", + "moduleLicense": "The Apache Software License, Version 2.0", + "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "jakarta.persistence:jakarta.persistence-api", + "moduleUrl": "https://www.eclipse.org", + "moduleVersion": "3.1.0", + "moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception", + "moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html" + }, + { + "moduleName": "jakarta.transaction:jakarta.transaction-api", + "moduleUrl": "https://projects.eclipse.org/projects/ee4j.jta", + "moduleVersion": "2.0.1", + "moduleLicense": "GPL2 w/ CPE", + "moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html" + }, + { + "moduleName": "jakarta.validation:jakarta.validation-api", + "moduleUrl": "https://www.eclipse.org", + "moduleVersion": "3.0.2", + "moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception", + "moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html" + }, + { + "moduleName": "jakarta.xml.bind:jakarta.xml.bind-api", + "moduleUrl": "https://www.eclipse.org", + "moduleVersion": "4.0.1", + "moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception", + "moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html" + }, + { + "moduleName": "net.bytebuddy:byte-buddy", + "moduleVersion": "1.14.10", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "org.antlr:antlr4-runtime", + "moduleUrl": "https://www.antlr.org/", + "moduleVersion": "4.13.0", + "moduleLicense": "BSD-3-Clause", + "moduleLicenseUrl": "https://www.antlr.org/license.html" + }, + { + "moduleName": "org.apache.commons:commons-collections4", + "moduleUrl": "https://commons.apache.org/proper/commons-collections/", + "moduleVersion": "4.4", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "org.apache.commons:commons-lang3", + "moduleUrl": "https://commons.apache.org/proper/commons-lang/", + "moduleVersion": "3.13.0", + "moduleLicense": "Apache-2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "org.apache.commons:commons-text", + "moduleUrl": "https://commons.apache.org/proper/commons-text", + "moduleVersion": "1.11.0", + "moduleLicense": "Apache-2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "org.apache.logging.log4j:log4j-api", + "moduleVersion": "2.21.1", + "moduleLicense": "Apache-2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "org.apache.logging.log4j:log4j-to-slf4j", + "moduleVersion": "2.21.1", + "moduleLicense": "Apache-2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "org.apache.pdfbox:fontbox", + "moduleUrl": "http://pdfbox.apache.org/", + "moduleVersion": "2.0.29", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "org.apache.pdfbox:pdfbox", + "moduleUrl": "http://pdfbox.apache.org", + "moduleVersion": "2.0.29", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "org.apache.pdfbox:xmpbox", + "moduleUrl": "http://pdfbox.apache.org", + "moduleVersion": "2.0.29", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "org.apache.tomcat.embed:tomcat-embed-core", + "moduleUrl": "https://tomcat.apache.org/", + "moduleVersion": "10.1.17", + "moduleLicense": "Eclipse Public License - v 2.0", + "moduleLicenseUrl": "https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt" + }, + { + "moduleName": "org.apache.tomcat.embed:tomcat-embed-el", + "moduleUrl": "https://tomcat.apache.org/", + "moduleVersion": "10.1.17", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "org.apache.tomcat.embed:tomcat-embed-websocket", + "moduleUrl": "https://tomcat.apache.org/", + "moduleVersion": "10.1.17", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "org.apache.xmlgraphics:batik-all", + "moduleVersion": "1.17", + "moduleLicense": "The Apache Software License, Version 2.0", + "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "org.apache.xmlgraphics:xmlgraphics-commons", + "moduleUrl": "http://xmlgraphics.apache.org/commons/", + "moduleVersion": "2.9", + "moduleLicense": "The Apache Software License, Version 2.0", + "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "org.aspectj:aspectjweaver", + "moduleUrl": "https://www.eclipse.org/aspectj/", + "moduleVersion": "1.9.21", + "moduleLicense": "Eclipse Public License - v 2.0", + "moduleLicenseUrl": "https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt" + }, + { + "moduleName": "org.attoparser:attoparser", + "moduleUrl": "https://www.attoparser.org", + "moduleVersion": "2.0.7.RELEASE", + "moduleLicense": "The Apache Software License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "org.bouncycastle:bcpkix-jdk18on", + "moduleUrl": "https://www.bouncycastle.org/java.html", + "moduleVersion": "1.77", + "moduleLicense": "Bouncy Castle Licence", + "moduleLicenseUrl": "https://www.bouncycastle.org/licence.html" + }, + { + "moduleName": "org.bouncycastle:bcprov-jdk18on", + "moduleUrl": "https://www.bouncycastle.org/java.html", + "moduleVersion": "1.77", + "moduleLicense": "Bouncy Castle Licence", + "moduleLicenseUrl": "https://www.bouncycastle.org/licence.html" + }, + { + "moduleName": "org.bouncycastle:bcutil-jdk18on", + "moduleUrl": "https://www.bouncycastle.org/java.html", + "moduleVersion": "1.77", + "moduleLicense": "Bouncy Castle Licence", + "moduleLicenseUrl": "https://www.bouncycastle.org/licence.html" + }, + { + "moduleName": "org.commonmark:commonmark", + "moduleVersion": "0.21.0", + "moduleLicense": "BSD 2-Clause License", + "moduleLicenseUrl": "https://opensource.org/licenses/BSD-2-Clause" + }, + { + "moduleName": "org.eclipse.angus:angus-activation", + "moduleUrl": "https://www.eclipse.org", + "moduleVersion": "2.0.1", + "moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception", + "moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html" + }, + { + "moduleName": "org.glassfish.jaxb:jaxb-core", + "moduleUrl": "https://www.eclipse.org", + "moduleVersion": "4.0.4", + "moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception", + "moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html" + }, + { + "moduleName": "org.glassfish.jaxb:jaxb-runtime", + "moduleUrl": "https://www.eclipse.org", + "moduleVersion": "4.0.4", + "moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception", + "moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html" + }, + { + "moduleName": "org.glassfish.jaxb:txw2", + "moduleUrl": "https://eclipse-ee4j.github.io/jaxb-ri/", + "moduleVersion": "4.0.4", + "moduleLicense": "GNU General Public License, version 2 with the GNU Classpath Exception", + "moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html" + }, + { + "moduleName": "org.hdrhistogram:HdrHistogram", + "moduleUrl": "http://hdrhistogram.github.io/HdrHistogram/", + "moduleVersion": "2.1.12", + "moduleLicense": "Public Domain, per Creative Commons CC0", + "moduleLicenseUrl": "http://creativecommons.org/publicdomain/zero/1.0/" + }, + { + "moduleName": "org.hibernate.common:hibernate-commons-annotations", + "moduleUrl": "http://hibernate.org", + "moduleVersion": "6.0.6.Final", + "moduleLicense": "GNU Library General Public License v2.1 or later", + "moduleLicenseUrl": "http://www.opensource.org/licenses/LGPL-2.1" + }, + { + "moduleName": "org.hibernate.orm:hibernate-core", + "moduleUrl": "https://www.hibernate.org/orm/6.4", + "moduleVersion": "6.4.1.Final", + "moduleLicense": "GNU Library General Public License v2.1 or later", + "moduleLicenseUrl": "https://www.opensource.org/licenses/LGPL-2.1" + }, + { + "moduleName": "org.jboss.logging:jboss-logging", + "moduleUrl": "http://www.jboss.org", + "moduleVersion": "3.5.3.Final", + "moduleLicense": "Public Domain", + "moduleLicenseUrl": "http://repository.jboss.org/licenses/cc0-1.0.txt" + }, + { + "moduleName": "org.latencyutils:LatencyUtils", + "moduleUrl": "http://latencyutils.github.io/LatencyUtils/", + "moduleVersion": "2.0.3", + "moduleLicense": "Public Domain, per Creative Commons CC0", + "moduleLicenseUrl": "http://creativecommons.org/publicdomain/zero/1.0/" + }, + { + "moduleName": "org.slf4j:jul-to-slf4j", + "moduleUrl": "http://www.slf4j.org", + "moduleVersion": "2.0.9", + "moduleLicense": "MIT License", + "moduleLicenseUrl": "http://www.opensource.org/licenses/mit-license.php" + }, + { + "moduleName": "org.slf4j:slf4j-api", + "moduleUrl": "http://www.slf4j.org", + "moduleVersion": "2.0.9", + "moduleLicense": "MIT License", + "moduleLicenseUrl": "http://www.opensource.org/licenses/mit-license.php" + }, + { + "moduleName": "org.springdoc:springdoc-openapi-starter-common", + "moduleVersion": "2.2.0", + "moduleLicense": "The Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "org.springdoc:springdoc-openapi-starter-webmvc-api", + "moduleVersion": "2.2.0", + "moduleLicense": "The Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "org.springdoc:springdoc-openapi-starter-webmvc-ui", + "moduleVersion": "2.2.0", + "moduleLicense": "The Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "org.springframework.boot:spring-boot", + "moduleUrl": "https://spring.io/projects/spring-boot", + "moduleVersion": "3.2.1", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "org.springframework.boot:spring-boot-actuator", + "moduleUrl": "https://spring.io/projects/spring-boot", + "moduleVersion": "3.2.1", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "org.springframework.boot:spring-boot-actuator-autoconfigure", + "moduleUrl": "https://spring.io/projects/spring-boot", + "moduleVersion": "3.2.1", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "org.springframework.boot:spring-boot-autoconfigure", + "moduleUrl": "https://spring.io/projects/spring-boot", + "moduleVersion": "3.2.1", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "org.springframework.boot:spring-boot-devtools", + "moduleUrl": "https://spring.io/projects/spring-boot", + "moduleVersion": "3.2.1", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "org.springframework.boot:spring-boot-starter", + "moduleUrl": "https://spring.io/projects/spring-boot", + "moduleVersion": "3.2.1", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "org.springframework.boot:spring-boot-starter-actuator", + "moduleUrl": "https://spring.io/projects/spring-boot", + "moduleVersion": "3.2.1", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "org.springframework.boot:spring-boot-starter-aop", + "moduleUrl": "https://spring.io/projects/spring-boot", + "moduleVersion": "3.2.1", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "org.springframework.boot:spring-boot-starter-data-jpa", + "moduleUrl": "https://spring.io/projects/spring-boot", + "moduleVersion": "3.2.1", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "org.springframework.boot:spring-boot-starter-jdbc", + "moduleUrl": "https://spring.io/projects/spring-boot", + "moduleVersion": "3.2.1", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "org.springframework.boot:spring-boot-starter-json", + "moduleUrl": "https://spring.io/projects/spring-boot", + "moduleVersion": "3.2.1", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "org.springframework.boot:spring-boot-starter-logging", + "moduleUrl": "https://spring.io/projects/spring-boot", + "moduleVersion": "3.2.1", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "org.springframework.boot:spring-boot-starter-security", + "moduleUrl": "https://spring.io/projects/spring-boot", + "moduleVersion": "3.2.1", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "org.springframework.boot:spring-boot-starter-thymeleaf", + "moduleUrl": "https://spring.io/projects/spring-boot", + "moduleVersion": "3.2.1", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "org.springframework.boot:spring-boot-starter-tomcat", + "moduleUrl": "https://spring.io/projects/spring-boot", + "moduleVersion": "3.2.1", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "org.springframework.boot:spring-boot-starter-web", + "moduleUrl": "https://spring.io/projects/spring-boot", + "moduleVersion": "3.2.1", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "org.springframework.data:spring-data-commons", + "moduleUrl": "https://spring.io/projects/spring-data", + "moduleVersion": "3.2.1", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "org.springframework.data:spring-data-jpa", + "moduleUrl": "https://projects.spring.io/spring-data-jpa", + "moduleVersion": "3.2.1", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "org.springframework.security:spring-security-config", + "moduleUrl": "https://spring.io/projects/spring-security", + "moduleVersion": "6.2.1", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "org.springframework.security:spring-security-core", + "moduleUrl": "https://spring.io/projects/spring-security", + "moduleVersion": "6.2.1", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "org.springframework.security:spring-security-crypto", + "moduleUrl": "https://spring.io/projects/spring-security", + "moduleVersion": "6.2.1", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "org.springframework.security:spring-security-web", + "moduleUrl": "https://spring.io/projects/spring-security", + "moduleVersion": "6.2.1", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "org.springframework:spring-aop", + "moduleUrl": "https://github.com/spring-projects/spring-framework", + "moduleVersion": "6.1.2", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "org.springframework:spring-aspects", + "moduleUrl": "https://github.com/spring-projects/spring-framework", + "moduleVersion": "6.1.2", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "org.springframework:spring-beans", + "moduleUrl": "https://github.com/spring-projects/spring-framework", + "moduleVersion": "6.1.2", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "org.springframework:spring-context", + "moduleUrl": "https://github.com/spring-projects/spring-framework", + "moduleVersion": "6.1.2", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "org.springframework:spring-core", + "moduleUrl": "https://github.com/spring-projects/spring-framework", + "moduleVersion": "6.1.2", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "org.springframework:spring-expression", + "moduleUrl": "https://github.com/spring-projects/spring-framework", + "moduleVersion": "6.1.2", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "org.springframework:spring-jcl", + "moduleUrl": "https://github.com/spring-projects/spring-framework", + "moduleVersion": "6.1.2", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "org.springframework:spring-jdbc", + "moduleUrl": "https://github.com/spring-projects/spring-framework", + "moduleVersion": "6.1.2", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "org.springframework:spring-orm", + "moduleUrl": "https://github.com/spring-projects/spring-framework", + "moduleVersion": "6.1.2", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "org.springframework:spring-tx", + "moduleUrl": "https://github.com/spring-projects/spring-framework", + "moduleVersion": "6.1.2", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "org.springframework:spring-web", + "moduleUrl": "https://github.com/spring-projects/spring-framework", + "moduleVersion": "6.1.2", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "org.springframework:spring-webmvc", + "moduleUrl": "https://github.com/spring-projects/spring-framework", + "moduleVersion": "6.1.2", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "org.thymeleaf.extras:thymeleaf-extras-springsecurity5", + "moduleVersion": "3.1.2.RELEASE", + "moduleLicense": "The Apache Software License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "org.thymeleaf:thymeleaf", + "moduleVersion": "3.1.2.RELEASE", + "moduleLicense": "The Apache Software License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "org.thymeleaf:thymeleaf-spring5", + "moduleVersion": "3.1.2.RELEASE", + "moduleLicense": "The Apache Software License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "org.thymeleaf:thymeleaf-spring6", + "moduleVersion": "3.1.2.RELEASE", + "moduleLicense": "The Apache Software License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "org.unbescape:unbescape", + "moduleUrl": "http://www.unbescape.org", + "moduleVersion": "1.1.6.RELEASE", + "moduleLicense": "The Apache Software License, Version 2.0", + "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "org.webjars:swagger-ui", + "moduleUrl": "http://webjars.org", + "moduleVersion": "5.2.0", + "moduleLicense": "Apache 2.0", + "moduleLicenseUrl": "https://github.com/swagger-api/swagger-ui" + }, + { + "moduleName": "org.yaml:snakeyaml", + "moduleUrl": "https://bitbucket.org/snakeyaml/snakeyaml", + "moduleVersion": "2.2", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "xml-apis:xml-apis", + "moduleUrl": "http://xml.apache.org/commons/components/external/", + "moduleVersion": "1.4.01", + "moduleLicense": "The W3C License", + "moduleLicenseUrl": "http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/java-binding.zip" + }, + { + "moduleName": "xml-apis:xml-apis-ext", + "moduleUrl": "http://xml.apache.org/commons/components/external/", + "moduleVersion": "1.3.04", + "moduleLicense": "The Apache Software License, Version 2.0", + "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/static/css/dark-mode.css b/src/main/resources/static/css/dark-mode.css index 2f070c9c..722461df 100644 --- a/src/main/resources/static/css/dark-mode.css +++ b/src/main/resources/static/css/dark-mode.css @@ -11,6 +11,13 @@ body, select, textarea { color: rgb(var(--base-font-color)) !important; } + a { + color: #add8e6; + } + a:hover { + color: #87ceeb; /* Slightly brighter blue on hover for accessibility */ +} + .dark-card { background-color: rgb(var(--body-background-color)) !important; color: rgb(var(--base-font-color)) !important; diff --git a/src/main/resources/templates/fragments/footer.html b/src/main/resources/templates/fragments/footer.html index 4fc411fe..8a79aa25 100644 --- a/src/main/resources/templates/fragments/footer.html +++ b/src/main/resources/templates/fragments/footer.html @@ -1,9 +1,41 @@
+ + + + + +
+
diff --git a/src/main/resources/templates/licenses.html b/src/main/resources/templates/licenses.html new file mode 100644 index 00000000..e759f3ef --- /dev/null +++ b/src/main/resources/templates/licenses.html @@ -0,0 +1,56 @@ + + + + + + + + +
+
+
+

+ +
+
+
+

3rd Party licenses

+ + + + + + + + + + + + + + + +
ModuleVersionLicense
+ +
+
+
+
+
+
+ + diff --git a/src/main/resources/templates/security/cert-sign.html b/src/main/resources/templates/security/cert-sign.html index fbbf36d1..85954d21 100644 --- a/src/main/resources/templates/security/cert-sign.html +++ b/src/main/resources/templates/security/cert-sign.html @@ -26,9 +26,9 @@