[F] Fix artemis response reading

pull/131/head
Azalea 2025-03-21 07:59:31 -04:00
parent 2f319e661b
commit 5fe20906d9
1 changed files with 13 additions and 5 deletions

View File

@ -5,6 +5,7 @@ import io.netty.buffer.ByteBuf
import io.netty.buffer.ByteBufUtil import io.netty.buffer.ByteBufUtil
import io.netty.buffer.Unpooled import io.netty.buffer.Unpooled
import java.net.Socket import java.net.Socket
import java.net.SocketTimeoutException
class AimeDbClient(val gameId: String, val keychipShort: String, val server: String) { class AimeDbClient(val gameId: String, val keychipShort: String, val server: String) {
// https://sega.bsnk.me/allnet/aimedb/common/#packet-header // https://sega.bsnk.me/allnet/aimedb/common/#packet-header
@ -59,11 +60,18 @@ class AimeDbClient(val gameId: String, val keychipShort: String, val server: Str
writeIntLE(0) // 0C 4b: Serial number writeIntLE(0) // 0C 4b: Serial number
} }
fun send(buf: ByteBuf): ByteBuf = fun send(buf: ByteBuf): ByteBuf = Socket(server, 22345).use {
Unpooled.wrappedBuffer(Socket(server, 22345).use { it.soTimeout = 3000
it.getOutputStream().write(buf.array()) it.getOutputStream().write(buf.array())
it.getInputStream().readBytes() it.getInputStream().use { r ->
}).let { AimeDbEncryption.decrypt(it) } Unpooled.buffer().apply {
val buffer = ByteArray(1024)
try {
while (r.read(buffer) != -1) writeBytes(buffer)
} catch (_: SocketTimeoutException) { }
}
}
}.let { AimeDbEncryption.decrypt(it) }
fun execLookup(card: String) = fun execLookup(card: String) =
send(when (card.length) { send(when (card.length) {