borgbutler-core/build.gradle
File was deleted borgbutler-core/build.gradle.kts
New file @@ -0,0 +1,35 @@ plugins { java } description = "borgbutler-core" repositories { mavenCentral() } dependencies { implementation("commons-io:commons-io:2.18.0") implementation("org.apache.commons:commons-lang3:3.17.0") implementation("org.apache.commons:commons-exec:1.4.0") implementation("org.apache.commons:commons-collections4:4.4") implementation("org.apache.commons:commons-compress:1.27.1") implementation("org.apache.commons:commons-jcs3-core:3.2.1") implementation("com.esotericsoftware:kryo:5.1.0") implementation("io.github.microutils:kotlin-logging-jvm:3.0.5") implementation("com.fasterxml.jackson.core:jackson-databind:2.18.2") implementation("com.fasterxml.jackson.core:jackson-annotations:2.18.2") implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.18.2") implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") } sourceSets { main { java.srcDirs("src/main/java", "src/main/kotlin") } } tasks.test { minHeapSize = "128m" maxHeapSize = "1500m" } borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ButlerCache.java
@@ -11,8 +11,8 @@ import de.micromata.borgbutler.data.Repository; import de.micromata.borgbutler.json.borg.BorgFilesystemItem; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.jcs.JCS; import org.apache.commons.jcs.access.CacheAccess; import org.apache.commons.jcs3.JCS; import org.apache.commons.jcs3.access.CacheAccess; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; borgbutler-core/src/main/java/de/micromata/borgbutler/cache/JCSCache.java
@@ -1,8 +1,8 @@ package de.micromata.borgbutler.cache; import de.micromata.borgbutler.config.ConfigurationHandler; import org.apache.commons.jcs.JCS; import org.apache.commons.jcs.access.CacheAccess; import org.apache.commons.jcs3.JCS; import org.apache.commons.jcs3.access.CacheAccess; import org.slf4j.Logger; import org.slf4j.LoggerFactory; borgbutler-server/build.gradle
File was deleted borgbutler-server/build.gradle.kts
New file @@ -0,0 +1,69 @@ import org.gradle.api.tasks.bundling.Zip import java.util.Properties plugins { java application distribution id("org.springframework.boot") version "3.4.2" // Füge das Spring Boot Plugin hinzu id("io.spring.dependency-management") version "1.1.4" // Dependency Management Plugin für Spring Boot } description = "borgbutler-server" repositories { mavenCentral() } dependencies { implementation(project(":borgbutler-core")) implementation(project(":borgbutler-webapp")) implementation("org.apache.commons:commons-text:1.13.0") implementation("org.apache.commons:commons-collections4:4.4") implementation("org.apache.commons:commons-compress:1.27.1") implementation("commons-io:commons-io:2.18.0") implementation("org.springframework:spring-core:6.2.3") implementation("org.springframework.boot:spring-boot-starter-web:3.4.2") implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.18.2") implementation("io.github.microutils:kotlin-logging-jvm:2.0.6") implementation("org.apache.httpcomponents.client5:httpclient5:5.4.2") implementation("commons-cli:commons-cli:1.9.0") testImplementation("org.mockito:mockito-core:5.15.2") implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") } sourceSets { main { java.srcDirs("src/main/java", "src/main/kotlin") } } application { mainClass.set("de.micromata.borgbutler.server.BorgButlerApplication") } tasks.register("createVersionProperties") { dependsOn(tasks.processResources) doLast { val versionFile = file("$buildDir/resources/main/version.properties") val properties = Properties().apply { setProperty("version", project.version.toString()) setProperty("name", project.name) setProperty("build.date.millis", System.currentTimeMillis().toString()) } versionFile.writer().use { properties.store(it, null) } } } tasks.classes { dependsOn(tasks.named("createVersionProperties")) } tasks.named("distZip", Zip::class) { dependsOn(":borgbutler-webapp:packageWebApp") } tasks.register("dist") { dependsOn(tasks.named("distZip")) } borgbutler-server/src/main/java/de/micromata/borgbutler/server/BorgInstallation.java
@@ -5,18 +5,19 @@ import de.micromata.borgbutler.config.ConfigurationHandler; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.apache.http.HttpResponse; import org.apache.http.client.config.CookieSpecs; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.impl.client.HttpClients; import org.apache.hc.client5.http.classic.methods.HttpGet; import org.apache.hc.client5.http.config.RequestConfig; import org.apache.hc.client5.http.cookie.StandardCookieSpec; import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; import org.apache.hc.client5.http.impl.classic.HttpClientBuilder; import org.apache.hc.client5.http.impl.classic.HttpClients; import org.apache.hc.core5.http.ClassicHttpResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; import java.io.IOException; import java.io.InputStream; public class BorgInstallation { private Logger log = LoggerFactory.getLogger(BorgInstallation.class); @@ -173,17 +174,22 @@ log.info("Trying to download borg binary '" + binary[0] + "' (" + binary[1] + ") from url: " + url + "..."); HttpClientBuilder builder = HttpClients.custom() .setDefaultRequestConfig(RequestConfig.custom() .setCookieSpec(CookieSpecs.STANDARD).build()); .setCookieSpec(StandardCookieSpec.STRICT).build()); try (CloseableHttpClient httpClient = builder.build()) { HttpGet getRequest = new HttpGet(url); try (ClassicHttpResponse response = (ClassicHttpResponse) httpClient.execute(getRequest); InputStream inputStream = response.getEntity().getContent()) { HttpResponse response = httpClient.execute(getRequest); int statusCode = response.getCode(); if (response.getStatusLine().getStatusCode() != 200) { throw new RuntimeException("Failed : HTTP error code : " + response.getStatusLine().getStatusCode()); if (statusCode != 200) { throw new RuntimeException("Failed : HTTP error code : " + statusCode); } FileUtils.copyInputStreamToFile(inputStream, file); } FileUtils.copyInputStreamToFile(response.getEntity().getContent(), file); log.info("Downloaded: " + file.getAbsolutePath()); file.setExecutable(true, false); return file; borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/BorgButlerApplication.kt
@@ -22,7 +22,7 @@ import java.text.DateFormat import java.text.SimpleDateFormat import java.util.* import javax.annotation.PreDestroy import jakarta.annotation.PreDestroy private val log = KotlinLogging.logger {} borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/FilesystemBrowserRest.kt
@@ -11,7 +11,7 @@ import java.awt.Color import java.awt.FileDialog import java.io.File import javax.servlet.http.HttpServletRequest import jakarta.servlet.http.HttpServletRequest import javax.swing.JFileChooser import javax.swing.JFrame import javax.swing.JLabel borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/GlobalDefaultExceptionHandling.kt
@@ -30,7 +30,7 @@ import org.springframework.web.bind.annotation.ControllerAdvice import org.springframework.web.bind.annotation.ExceptionHandler import org.springframework.web.bind.annotation.ResponseStatus import javax.servlet.http.HttpServletRequest import jakarta.servlet.http.HttpServletRequest private val log = KotlinLogging.logger {} borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/I18nRest.kt
@@ -8,7 +8,7 @@ import org.springframework.web.bind.annotation.RequestParam import org.springframework.web.bind.annotation.RestController import java.util.* import javax.servlet.http.HttpServletRequest import jakarta.servlet.http.HttpServletRequest @RestController @RequestMapping("/rest/i18n") borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/JacksonConfig.kt
@@ -22,7 +22,7 @@ return it } val mapper = ObjectMapper() mapper.registerModule(KotlinModule()) mapper.registerModule((KotlinModule.Builder().build())) mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true) mapper.configure(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES, false) val failOnUnknownJsonProperties = RunningMode.runningInIDE borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/LoggingRest.kt
@@ -9,7 +9,7 @@ import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RequestParam import org.springframework.web.bind.annotation.RestController import javax.servlet.http.HttpServletRequest import jakarta.servlet.http.HttpServletRequest private val log = KotlinLogging.logger {} borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/RequestLog.kt
@@ -26,9 +26,9 @@ import de.micromata.borgbutler.json.JsonUtils import java.security.Principal import java.util.* import javax.servlet.http.Cookie import javax.servlet.http.HttpServletRequest import javax.servlet.http.Part import jakarta.servlet.http.Cookie import jakarta.servlet.http.HttpServletRequest import jakarta.servlet.http.Part /** * Helper class for debugging requests. Converts a given request to json. borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/RestUtils.kt
@@ -14,8 +14,8 @@ import java.net.InetAddress import java.net.UnknownHostException import java.util.* import javax.servlet.ServletRequest import javax.servlet.http.HttpServletRequest import jakarta.servlet.ServletRequest import jakarta.servlet.http.HttpServletRequest object RestUtils { /** borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/VersionRest.kt
@@ -8,7 +8,7 @@ import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RestController import java.util.* import javax.servlet.http.HttpServletRequest import jakarta.servlet.http.HttpServletRequest @RestController @RequestMapping("/rest") borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/user/UserFilter.kt
@@ -4,7 +4,7 @@ import org.slf4j.LoggerFactory import org.springframework.stereotype.Component import java.io.IOException import javax.servlet.* import jakarta.servlet.* /** * Ensuring the user data inside request threads. For now, it's only a simple implementation (no login required). build.gradle
File was deleted build.gradle.kts
New file @@ -0,0 +1,43 @@ import org.gradle.api.JavaVersion import org.gradle.api.tasks.testing.Test import org.gradle.jvm.toolchain.JavaLanguageVersion plugins { kotlin("jvm") version "1.8.22" apply false } allprojects { group = "de.micromata.borgbutler" version = "0.8" } subprojects { apply(plugin = "java") apply(plugin = "org.jetbrains.kotlin.jvm") tasks.withType<JavaCompile> { options.compilerArgs.add("-Xlint:unchecked") options.isDeprecation = true options.encoding = "UTF-8" } repositories { mavenCentral() maven("https://maven.ej-technologies.com/repository") } dependencies { add("testImplementation", "org.junit.jupiter:junit-jupiter-api:5.11.4") add("testRuntimeOnly", "org.junit.jupiter:junit-jupiter-engine:5.11.4") add("testRuntimeOnly", "org.junit.vintage:junit-vintage-engine:5.11.4") } tasks.named<Test>("test") { useJUnitPlatform() } } // Gradle Wrapper Task für Version 8.0 tasks.named<Wrapper>("wrapper") { gradleVersion = "8.0" } gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-8.12.1-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists