diff --git a/mirai-core/src/main/java/net/mamoe/mirai/network/RobotNetworkHandler.kt b/mirai-core/src/main/java/net/mamoe/mirai/network/RobotNetworkHandler.kt index 0950f2c09..f201a92fc 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/network/RobotNetworkHandler.kt +++ b/mirai-core/src/main/java/net/mamoe/mirai/network/RobotNetworkHandler.kt @@ -219,7 +219,7 @@ class RobotNetworkHandler(private val robot: Robot) : Closeable { val data = packet.toByteArray() socket!!.send(DatagramPacket(data, data.size)) - robot purple "Packet sent: $packet" + robot cyanL "Packet sent: $packet" PacketSentEvent(robot, packet).broadcast() } catch (e: Throwable) { @@ -279,7 +279,9 @@ class RobotNetworkHandler(private val robot: Robot) : Closeable { */ inner class DebugHandler : PacketHandler() { override fun onPacketReceived(packet: ServerPacket) { - robot notice "Packet received: $packet" + if (!packet.javaClass.name.endsWith("Encrypted")) { + robot notice "Packet received: $packet" + } if (packet is ServerEventPacket) { sendPacket(ClientMessageResponsePacket(robot.account.qqNumber, packet.packetId, sessionKey, packet.eventIdentity)) } @@ -354,10 +356,6 @@ class RobotNetworkHandler(private val robot: Robot) : Closeable { } } - is ServerVerificationCodeUnknownPacket -> { - sendPacket(ClientVerificationCodeRefreshPacket(88, robot.account.qqNumber, token0825)) - } - is ServerVerificationCodeTransmissionPacket -> { if (packet is ServerVerificationCodeWrongPacket) { robot error "验证码错误, 请重新输入" @@ -377,6 +375,7 @@ class RobotNetworkHandler(private val robot: Robot) : Closeable { val code = Scanner(System.`in`).nextLine() if (code.isEmpty() || code.length != 4) { this.captchaCache = byteArrayOf() + this.captchaSectionId = 1 sendPacket(ClientVerificationCodeRefreshPacket(packet.packetIdLast + 1, robot.account.qqNumber, token0825)) } else { sendPacket(ClientVerificationCodeSubmitPacket(packet.packetIdLast + 1, robot.account.qqNumber, token0825, code, packet.verificationToken)) diff --git a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/ClientPacket.kt b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/ClientPacket.kt index 23ab2b2cd..e958d43d3 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/ClientPacket.kt +++ b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/ClientPacket.kt @@ -2,6 +2,7 @@ package net.mamoe.mirai.network.packet import lombok.Getter import net.mamoe.mirai.network.Protocol +import net.mamoe.mirai.network.packet.PacketNameFormatter.adjustName import net.mamoe.mirai.utils.* import java.io.DataOutputStream import java.io.IOException @@ -62,14 +63,15 @@ abstract class ClientPacket : ByteArrayDataOutputStream(), Packet { open fun getFixedId(): String = when (this.idHex.length) { 0 -> "__ __ __ __" - 2 -> this.idHex + " __ __" - 5 -> this.idHex + " __" + 2 -> this.idHex + " __ __ __" + 5 -> this.idHex + " __ __" + 7 -> this.idHex + " __" else -> this.idHex } override fun toString(): String { - return this.javaClass.simpleName + "(${this.getFixedId()})" + this.getAllDeclaredFields().joinToString(", ", "{", "}") { + return adjustName(this.javaClass.simpleName + "(${this.getFixedId()})") + this.getAllDeclaredFields().filterNot { it.name == "idHex" || it.name == "encoded" }.joinToString(", ", "{", "}") { it.trySetAccessible(); it.name + "=" + it.get(this).let { value -> when (value) { null -> null diff --git a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/Packet.java b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/Packet.java deleted file mode 100644 index e225f0c2d..000000000 --- a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/Packet.java +++ /dev/null @@ -1,8 +0,0 @@ -package net.mamoe.mirai.network.packet; - -/** - * @author Him188moe - */ -public interface Packet { - -} diff --git a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/Packet.kt b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/Packet.kt new file mode 100644 index 000000000..309d313f6 --- /dev/null +++ b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/Packet.kt @@ -0,0 +1,28 @@ +package net.mamoe.mirai.network.packet + +/** + * @author Him188moe + */ +interface Packet { + +} + + +object PacketNameFormatter { + @JvmSynthetic + private var longestNameLength: Int = 43 + + @JvmSynthetic + fun adjustName(name: String): String { + if (name.length > longestNameLength) { + longestNameLength = name.length + return name + } + + return StringBuilder().apply { + repeat(longestNameLength - name.length) { + this.append(" ") + } + }.toString() + name + } +} \ No newline at end of file diff --git a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/ServerEvent.kt b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/ServerEvent.kt index d7e4769d9..bbaa1d796 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/ServerEvent.kt +++ b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/ServerEvent.kt @@ -223,6 +223,10 @@ class ClientMessageResponsePacket( it.write(eventIdentity) } } + + override fun getFixedId(): String { + return packetIdFromServer.toUHexString() + } } /* diff --git a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/ServerPacket.kt b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/ServerPacket.kt index 397fa86dc..20c092e92 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/ServerPacket.kt +++ b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/ServerPacket.kt @@ -1,6 +1,7 @@ package net.mamoe.mirai.network.packet import lombok.Getter +import net.mamoe.mirai.network.packet.PacketNameFormatter.adjustName import net.mamoe.mirai.network.packet.action.ServerSendFriendMessageResponsePacket import net.mamoe.mirai.network.packet.action.ServerSendGroupMessageResponsePacket import net.mamoe.mirai.network.packet.login.* @@ -109,7 +110,7 @@ abstract class ServerPacket(val input: DataInputStream) : Packet { @ExperimentalUnsignedTypes override fun toString(): String { - return this.javaClass.simpleName + "(${this.getFixedId()})" + this.getAllDeclaredFields().joinToString(", ", "{", "}") { + return adjustName(this.javaClass.simpleName + "(${this.getFixedId()})") + this.getAllDeclaredFields().filterNot { it.name == "idHex" || it.name == "encoded" }.joinToString(", ", "{", "}") { it.trySetAccessible(); it.name + "=" + it.get(this).let { value -> when (value) { is ByteArray -> value.toUHexString() @@ -124,8 +125,9 @@ abstract class ServerPacket(val input: DataInputStream) : Packet { fun getFixedId(id: String): String = when (id.length) { 0 -> "__ __ __ __" - 2 -> "$id __ __" - 5 -> "$id __" + 2 -> "$id __ __ __" + 5 -> "$id __ __" + 7 -> "$id __" else -> id } diff --git a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/VerificationCode.kt b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/VerificationCode.kt index 008e3a76e..25c73b822 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/VerificationCode.kt +++ b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/VerificationCode.kt @@ -210,12 +210,6 @@ class ServerVerificationCodeCorrectPacket(input: DataInputStream) : ServerVerifi } } -class ServerVerificationCodeUnknownPacket(input: DataInputStream) : ServerVerificationCodePacket(input) { - override fun decode() { - MiraiLogger.debug(this.input.goto(0).readAllBytes()) - } -} - abstract class ServerVerificationCodePacket(input: DataInputStream) : ServerPacket(input) { @PacketId("00 BA") diff --git a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ServerLoginResponseResendPacket.kt b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ServerLoginResponseResendPacket.kt index def2bc103..94f95378e 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ServerLoginResponseResendPacket.kt +++ b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ServerLoginResponseResendPacket.kt @@ -44,6 +44,6 @@ class ServerLoginResponseResendPacket(input: DataInputStream, val flag: Flag) : class Encrypted(input: DataInputStream, private val flag: Flag) : ServerPacket(input) { @TestedSuccessfully - fun decrypt(tgtgtKey: ByteArray): ServerLoginResponseResendPacket = ServerLoginResponseResendPacket(decryptBy(tgtgtKey), flag).setId(this.idHex) + fun decrypt(tgtgtKey: ByteArray): ServerLoginResponseResendPacket = ServerLoginResponseResendPacket(this.decryptBy(tgtgtKey), flag).setId(this.idHex) } } diff --git a/mirai-core/src/main/java/net/mamoe/mirai/utils/MiraiLogger.kt b/mirai-core/src/main/java/net/mamoe/mirai/utils/MiraiLogger.kt index 53ce7f0c8..118012401 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/utils/MiraiLogger.kt +++ b/mirai-core/src/main/java/net/mamoe/mirai/utils/MiraiLogger.kt @@ -45,6 +45,8 @@ infix fun Robot.notice(o: Any?) = print(this, o.toString(), LoggerTextFormat.LIG infix fun Robot.purple(o: Any?) = print(this, o.toString(), LoggerTextFormat.PURPLE) +infix fun Robot.cyanL(o: Any?) = print(this, o.toString(), LoggerTextFormat.LIGHT_CYAN) + infix fun Robot.success(o: Any?) = print(this, o.toString(), LoggerTextFormat.GREEN) infix fun Robot.debug(o: Any?) = print(this, o.toString(), LoggerTextFormat.YELLOW)