From 9f7b11fc572116caa5334912faf2c5251c56236e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felipe=20=C3=81vila?= <79549074+FelipeGFA@users.noreply.github.com> Date: Wed, 5 Nov 2025 11:53:43 -0300 Subject: [PATCH] Fix GreenShit: remove unnecessary x-client-hash and simplify authentication (#11408) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * corrige autenticação da extensão greenshit removendo x-client-hash desnecessário - Remove função generateToken() que gerava hash HMAC para o header x-client-hash - API funciona apenas com token Bearer, x-client-hash não é necessário - Remove imports não utilizados (Base64, Mac, SecretKeySpec) - Remove constante SECRET_KEY - Adiciona campo path ao PageDto para corresponder à resposta da API - Simplifica pageListRequestMobile para usar apenas header de autorização - Funcionalidade de login do usuário permanece intacta e automática * atualiza versionCode da extensão sussyscan e multisrc greenshit - Incrementa overrideVersionCode de 56 para 57 (sussyscan) - Incrementa versionId de 2 para 3 (SussyToons.kt) - Incrementa baseVersionCode de 5 para 6 (greenshit multisrc) * Reverter versionId * Remove variave nao utilizada * Reverte a versaoCode * remover espaços --- lib-multisrc/greenshit/build.gradle.kts | 2 +- .../tachiyomi/multisrc/greenshit/GreenShit.kt | 25 ------------------- 2 files changed, 1 insertion(+), 26 deletions(-) diff --git a/lib-multisrc/greenshit/build.gradle.kts b/lib-multisrc/greenshit/build.gradle.kts index b45873b53..ede652be5 100644 --- a/lib-multisrc/greenshit/build.gradle.kts +++ b/lib-multisrc/greenshit/build.gradle.kts @@ -2,4 +2,4 @@ plugins { id("lib-multisrc") } -baseVersionCode = 5 +baseVersionCode = 6 diff --git a/lib-multisrc/greenshit/src/eu/kanade/tachiyomi/multisrc/greenshit/GreenShit.kt b/lib-multisrc/greenshit/src/eu/kanade/tachiyomi/multisrc/greenshit/GreenShit.kt index e0b3e676e..f0cc8cc45 100644 --- a/lib-multisrc/greenshit/src/eu/kanade/tachiyomi/multisrc/greenshit/GreenShit.kt +++ b/lib-multisrc/greenshit/src/eu/kanade/tachiyomi/multisrc/greenshit/GreenShit.kt @@ -1,7 +1,6 @@ package eu.kanade.tachiyomi.multisrc.greenshit import android.content.SharedPreferences -import android.util.Base64 import android.widget.Toast import androidx.preference.EditTextPreference import androidx.preference.PreferenceScreen @@ -31,8 +30,6 @@ import okhttp3.Response import org.jsoup.nodes.Document import org.jsoup.nodes.Element import java.io.IOException -import javax.crypto.Mac -import javax.crypto.spec.SecretKeySpec abstract class GreenShit( override val name: String, @@ -196,31 +193,11 @@ abstract class GreenShit( private fun pageListRequestMobile(chapter: SChapter): Request { val pathSegment = chapter.url.replace("capitulo", "capitulo-app-token") val newHeaders = headers.newBuilder() - .set("x-client-hash", generateToken(scanId, SECRET_KEY)) .set("authorization", "Bearer $token") .build() return GET("$apiUrl$pathSegment", newHeaders) } - private fun generateToken(scanId: Long, secretKey: String): String { - val timestamp = System.currentTimeMillis() / 1000 - val expiration = timestamp + 3600 - - val payload = buildJsonObject { - put("scan_id", scanId) - put("timestamp", timestamp) - put("exp", expiration) - }.toJsonString() - - val hmac = Mac.getInstance("HmacSHA256") - val secretKeySpec = SecretKeySpec(secretKey.toByteArray(), "HmacSHA256") - hmac.init(secretKeySpec) - val signatureBytes = hmac.doFinal(payload.toByteArray()) - val signature = signatureBytes.joinToString("") { "%02x".format(it) } - - return Base64.encodeToString("$payload.$signature".toByteArray(), Base64.NO_WRAP) - } - override fun pageListParse(response: Response): List = when (contentOrigin) { ContentOrigin.Mobile -> pageListParseMobile(response) @@ -444,7 +421,5 @@ abstract class GreenShit( private const val TOKEN_PREF = "greenShitToken" private const val USERNAME_PREF = "usernamePref" private const val PASSWORD_PREF = "passwordPref" - - private const val SECRET_KEY = "sua_chave_secreta_aqui_32_caracteres" } }