Merge pull request #1026 from ceokot/sogs-auth

fix: Authenticate all Open Group API calls
This commit is contained in:
ThomasSession 2024-06-24 11:12:03 +10:00 committed by GitHub
commit 1619277b4f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 64 additions and 65 deletions

View File

@ -37,6 +37,7 @@ class BackgroundGroupAddJob(val joinUrl: String): Job {
delegate?.handleJobFailed(this, dispatcherName, DuplicateGroupException()) delegate?.handleJobFailed(this, dispatcherName, DuplicateGroupException())
return return
} }
storage.addOpenGroup(openGroup.joinUrl()) storage.addOpenGroup(openGroup.joinUrl())
storage.onOpenGroupAdded(openGroup.server, openGroup.room) storage.onOpenGroupAdded(openGroup.server, openGroup.room)
} catch (e: Exception) { } catch (e: Exception) {

View File

@ -273,7 +273,6 @@ object OpenGroupApi {
val queryParameters: Map<String, String> = mapOf(), val queryParameters: Map<String, String> = mapOf(),
val parameters: Any? = null, val parameters: Any? = null,
val headers: Map<String, String> = mapOf(), val headers: Map<String, String> = mapOf(),
val isAuthRequired: Boolean = true,
val body: ByteArray? = null, val body: ByteArray? = null,
/** /**
* Always `true` under normal circumstances. You might want to disable * Always `true` under normal circumstances. You might want to disable
@ -319,7 +318,7 @@ object OpenGroupApi {
?: return Promise.ofFail(Error.NoEd25519KeyPair) ?: return Promise.ofFail(Error.NoEd25519KeyPair)
val urlRequest = urlBuilder.toString() val urlRequest = urlBuilder.toString()
val headers = request.headers.toMutableMap() val headers = request.headers.toMutableMap()
if (request.isAuthRequired) {
val nonce = sodium.nonce(16) val nonce = sodium.nonce(16)
val timestamp = TimeUnit.MILLISECONDS.toSeconds(SnodeAPI.nowWithOffset) val timestamp = TimeUnit.MILLISECONDS.toSeconds(SnodeAPI.nowWithOffset)
var pubKey = "" var pubKey = ""
@ -385,7 +384,6 @@ object OpenGroupApi {
headers["X-SOGS-Timestamp"] = "$timestamp" headers["X-SOGS-Timestamp"] = "$timestamp"
headers["X-SOGS-Pubkey"] = pubKey headers["X-SOGS-Pubkey"] = pubKey
headers["X-SOGS-Signature"] = encodeBytes(signature) headers["X-SOGS-Signature"] = encodeBytes(signature)
}
val requestBuilder = okhttp3.Request.Builder() val requestBuilder = okhttp3.Request.Builder()
.url(urlRequest) .url(urlRequest)
@ -927,7 +925,7 @@ object OpenGroupApi {
} }
fun getCapabilities(server: String): Promise<Capabilities, Exception> { fun getCapabilities(server: String): Promise<Capabilities, Exception> {
val request = Request(verb = GET, room = null, server = server, endpoint = Endpoint.Capabilities, isAuthRequired = false) val request = Request(verb = GET, room = null, server = server, endpoint = Endpoint.Capabilities)
return getResponseBody(request).map { response -> return getResponseBody(request).map { response ->
JsonUtil.fromJson(response, Capabilities::class.java) JsonUtil.fromJson(response, Capabilities::class.java)
} }