From a04835fb1b226e28a03f12446c9dbaeb0e37c085 Mon Sep 17 00:00:00 2001 From: Moritz Zwerger Date: Thu, 21 Dec 2023 00:01:10 +0100 Subject: [PATCH] update check fixes --- .../minosoft/updater/MinosoftUpdater.kt | 29 +++++++++--------- .../de/bixilon/minosoft/updater/UpdateKey.kt | 2 +- .../de/bixilon/minosoft/util/http/HTTP2.kt | 11 ++++--- .../assets/minosoft/updater/release.der | Bin 0 -> 550 bytes .../assets/minosoft/updater/release.pub | 14 --------- 5 files changed, 22 insertions(+), 34 deletions(-) create mode 100644 src/main/resources/assets/minosoft/updater/release.der delete mode 100644 src/main/resources/assets/minosoft/updater/release.pub diff --git a/src/main/java/de/bixilon/minosoft/updater/MinosoftUpdater.kt b/src/main/java/de/bixilon/minosoft/updater/MinosoftUpdater.kt index 345433dd4..faf765a66 100644 --- a/src/main/java/de/bixilon/minosoft/updater/MinosoftUpdater.kt +++ b/src/main/java/de/bixilon/minosoft/updater/MinosoftUpdater.kt @@ -19,7 +19,7 @@ import de.bixilon.kutil.string.StringUtil.formatPlaceholder import de.bixilon.kutil.url.URLUtil.toURL import de.bixilon.minosoft.config.profile.profiles.other.OtherProfileManager import de.bixilon.minosoft.properties.MinosoftProperties -import de.bixilon.minosoft.util.http.HTTP2.getJson +import de.bixilon.minosoft.util.http.HTTP2.get import de.bixilon.minosoft.util.http.exceptions.HTTPException import de.bixilon.minosoft.util.json.Jackson import java.net.URL @@ -40,12 +40,11 @@ object MinosoftUpdater { fun check(): MinosoftUpdate? { val profile = OtherProfileManager.selected.updater - return check(profile.url.toURL(), profile.channel) + return check(profile.url, profile.channel) } - fun check(url: URL, channel: String): MinosoftUpdate? { - validateURL(url) + fun check(url: String, channel: String): MinosoftUpdate? { val commit = MinosoftProperties.git?.commit ?: "" val version = MinosoftProperties.general.name @@ -53,26 +52,28 @@ object MinosoftUpdater { val os = PlatformInfo.OS val arch = PlatformInfo.ARCHITECTURE - val request = url.toString().formatPlaceholder( - "\${COMMIT}" to commit, - "\${VERSION}" to version, - "\${STABLE}" to stable, - "\${OS}" to os, - "\${ARCH}" to arch, - "\${CHANNEL}" to channel, + val request = url.formatPlaceholder( + "COMMIT" to commit, + "VERSION" to version, + "STABLE" to stable, + "OS" to os.name.lowercase(), + "ARCH" to arch.name.lowercase(), + "CHANNEL" to channel.lowercase(), ) + + validateURL(request.toURL()) val update = request(request) this.update = update return update } private fun request(url: String): MinosoftUpdate? { - val response = url.getJson() + val response = url.get({ it }) return when (response.statusCode) { 204 -> null - 200 -> Jackson.MAPPER.convertValue(response.body, MinosoftUpdate::class.java) - else -> throw HTTPException(response.statusCode, response.body.toString()) + 200 -> Jackson.MAPPER.readValue(response.body, MinosoftUpdate::class.java) + else -> throw HTTPException(response.statusCode, response.body) } } diff --git a/src/main/java/de/bixilon/minosoft/updater/UpdateKey.kt b/src/main/java/de/bixilon/minosoft/updater/UpdateKey.kt index b755d721f..b7d935f44 100644 --- a/src/main/java/de/bixilon/minosoft/updater/UpdateKey.kt +++ b/src/main/java/de/bixilon/minosoft/updater/UpdateKey.kt @@ -17,4 +17,4 @@ import de.bixilon.minosoft.data.registries.identified.Namespaces.minosoft import de.bixilon.minosoft.util.signature.SignatureSigner -object UpdateKey : SignatureSigner(minosoft("updater/release.pub"), "SHA512withRSA") +object UpdateKey : SignatureSigner(minosoft("updater/release.der"), "SHA512withRSA") diff --git a/src/main/java/de/bixilon/minosoft/util/http/HTTP2.kt b/src/main/java/de/bixilon/minosoft/util/http/HTTP2.kt index 6f4e46860..87eedf6ff 100644 --- a/src/main/java/de/bixilon/minosoft/util/http/HTTP2.kt +++ b/src/main/java/de/bixilon/minosoft/util/http/HTTP2.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020-2022 Moritz Zwerger + * Copyright (C) 2020-2023 Moritz Zwerger * * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * @@ -74,13 +74,14 @@ object HTTP2 { fun String.get(bodyBuilder: (String) -> Response, headers: Map = emptyMap()): HTTPResponse { val client = HttpClient.newHttpClient() - val request = HttpRequest.newBuilder() + var request = HttpRequest.newBuilder() .uri(URI.create(this)) .GET() - .headers(*headers.headers()) - .build() + if (headers.isNotEmpty()) { + request = request.headers(*headers.headers()) + } - val response = client.send(request, HttpResponse.BodyHandlers.ofString()) + val response = client.send(request.build(), HttpResponse.BodyHandlers.ofString()) return HTTPResponse(response.statusCode(), bodyBuilder(response.body())) } diff --git a/src/main/resources/assets/minosoft/updater/release.der b/src/main/resources/assets/minosoft/updater/release.der new file mode 100644 index 0000000000000000000000000000000000000000..a4080bc6ca47757921fb8a9c2f6e0e027d33dda7 GIT binary patch literal 550 zcmV+>0@?jAf&wBi4F(A+hDe6@4FLfG1potr0uKN%f&vNxf&u{mrh&h4bG5@K;hn|bg4|u49Ffz9;GB#XVE{H8@HKnCxC*&)dUXP?UIq6!=*e1}Qj7CV{o-tS z3EVQnN=~)f(HeA~izfFw?QR{5QI6?d3VO{}yd75{&5(qpbyqC8Lc$-ymOVud9yfPA z-G@kob;OoQ9eE%V@yi!tApD)l?b5)=cDX?2x`Urg32s9_v|~?ywp*{=QK4pIG$ca` z0E1&wTeD_hOuzHm%!i;3KwQk?u@SSVB5m>^(r5ZnmZSO!V|u{{5^Xb7T9J6%jRKKo zq%+pF%}5*uON$V1GGM>+C|Q`JY o(Y7}4v3{opm|YzCv-puHW%q#A+)h*kd{SQDGM*CU0s{d60Y_;B*Z=?k literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/minosoft/updater/release.pub b/src/main/resources/assets/minosoft/updater/release.pub deleted file mode 100644 index c8b55f6ea..000000000 --- a/src/main/resources/assets/minosoft/updater/release.pub +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN PUBLIC KEY----- -MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEApoG/cXO1wyfitUwf55fs -8ch8JxOmb7RW7YQWGVJ13StZZdsaBPmYNsHkQWwL9G45U4QIEwnlDLpDWPe90pB2 -7sf41LHq81PygtxdnByR04fgnIwXYQA2G/A1e7+4CrlyenUCr14F9zjoyVqbUovz -Tf3ibHkJ3DLDSk612tEadJ6LJvc77W4di1GO6V0Kes1WvB1XIM2QhKV1Vyy5QsIf -wpY9RQ4eN3c93YdIhHXElkkdeSAT8csXYiD8ncnt0sDIdrlA5rqDn0wJbkM/tGNP -f7Zbr91RoWZjNCRDCgCDY1Nbs2ZgTL/z2syHoA5AXMzisRGzqCJt8iHSZ/pRlqP6 -CWN6wQcSbTNUWpF43I0CkWakM9a1zUgcBkuLEG8yYL/zKFmYo2x3rdjaTyWCQyOO -SWkc4NBVgfwtlgNBrsB7zO+IdIEJwW+Jp5a7yR72AsFjcU5xcz/p9QmNhvWqAFCD -fXrTNHFtr11T91sKdgG2B6E2TbYlyEsKR4BmQfJn7qemlJrIFkX/H3k8wygbnHWg -cHPGcTVAMVxb9rk6M+BAkglG4nS8ldz/ZC/ScaWczwvNPsn0tbkgzql6BOi7jPc0 -WO33JN/QxqO00xEg/O5NRXpzSIh3ehHnAQBV1KmxnP1U0bY277F+pwaYXRz5s/iR -KGX3gNbcTlQEfFJe3zKeEuUCAwEAAQ== ------END PUBLIC KEY-----