From 801d7276292394516db0b20c3032219803019faa Mon Sep 17 00:00:00 2001 From: Him188moe Date: Sun, 1 Sep 2019 16:18:11 +0800 Subject: [PATCH] update --- .../main/java/net/mamoe/mirai/contact/QQ.kt | 2 +- .../mamoe/mirai/event/MiraiEventManager.java | 38 ++++++---- .../mamoe/mirai/event/MiraiEventManagerKt.kt | 17 ++++- .../java/net/mamoe/mirai/message/Message.java | 3 + .../java/net/mamoe/mirai/message/MessageKt.kt | 2 + .../mirai/message/{ => defaults}/At.java | 3 +- .../mirai/message/{ => defaults}/Face.java | 7 +- .../mirai/message/{ => defaults}/Image.java | 4 +- .../message/{ => defaults}/MessageChain.java | 5 +- .../message/{ => defaults}/PlainText.java | 4 +- .../mirai/network/RobotNetworkHandler.kt | 3 +- .../mamoe/mirai/network/packet/AccountInfo.kt | 2 +- .../mirai/network/packet/ClientPacket.kt | 3 +- .../mirai/network/packet/MessageEvent.kt | 4 +- .../net/mamoe/mirai/network/packet/SKey.kt | 2 +- .../mamoe/mirai/network/packet/ServerEvent.kt | 2 +- .../mirai/network/packet/ServerPacket.kt | 6 +- .../net/mamoe/mirai/network/packet/Session.kt | 8 +- .../net/mamoe/mirai/network/packet/Touch.kt | 2 +- .../network/packet/login/ClientLoginPacket.kt | 6 +- .../packet/login/ClientLoginStatusPacket.kt | 2 +- .../ClientLoginVerificationCodePacket.kt | 4 +- ...rverLoginResponsePasswordVerifiedPacket.kt | 6 +- .../login/ServerLoginResponseResendPacket.kt | 6 +- ...rverLoginResponseVerificationCodePacket.kt | 2 +- .../message/ClientSendFriendMessagePacket.kt | 14 +++- .../ServerVerificationCodePacket.kt | 2 +- .../java/net/mamoe/mirai/util/DebugLogger.kt | 34 --------- .../{util => utils}/ClientLoginStatus.java | 2 +- .../java/net/mamoe/mirai/utils/MiraiLogger.kt | 6 +- .../mirai/{util => utils}/TEACryptor.java | 5 +- .../net/mamoe/mirai/{util => utils}/Tested.kt | 0 .../java/net/mamoe/mirai/utils/Utils.java | 73 ------------------- .../net/mamoe/mirai/{util => utils}/Utils.kt | 41 ++++------- .../mamoe/mirai/utils/config/MiraiConfig.java | 17 ++--- mirai-core/src/test/java/PacketTest.kt | 2 +- 36 files changed, 132 insertions(+), 207 deletions(-) rename mirai-core/src/main/java/net/mamoe/mirai/message/{ => defaults}/At.java (86%) rename mirai-core/src/main/java/net/mamoe/mirai/message/{ => defaults}/Face.java (64%) rename mirai-core/src/main/java/net/mamoe/mirai/message/{ => defaults}/Image.java (88%) rename mirai-core/src/main/java/net/mamoe/mirai/message/{ => defaults}/MessageChain.java (81%) rename mirai-core/src/main/java/net/mamoe/mirai/message/{ => defaults}/PlainText.java (75%) delete mode 100644 mirai-core/src/main/java/net/mamoe/mirai/util/DebugLogger.kt rename mirai-core/src/main/java/net/mamoe/mirai/{util => utils}/ClientLoginStatus.java (87%) rename mirai-core/src/main/java/net/mamoe/mirai/{util => utils}/TEACryptor.java (97%) rename mirai-core/src/main/java/net/mamoe/mirai/{util => utils}/Tested.kt (100%) delete mode 100644 mirai-core/src/main/java/net/mamoe/mirai/utils/Utils.java rename mirai-core/src/main/java/net/mamoe/mirai/{util => utils}/Utils.kt (78%) diff --git a/mirai-core/src/main/java/net/mamoe/mirai/contact/QQ.kt b/mirai-core/src/main/java/net/mamoe/mirai/contact/QQ.kt index 5c88da2b5..722857b8a 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/contact/QQ.kt +++ b/mirai-core/src/main/java/net/mamoe/mirai/contact/QQ.kt @@ -1,6 +1,6 @@ package net.mamoe.mirai.contact -import net.mamoe.mirai.message.At +import net.mamoe.mirai.message.defaults.At /** * @author Him188moe diff --git a/mirai-core/src/main/java/net/mamoe/mirai/event/MiraiEventManager.java b/mirai-core/src/main/java/net/mamoe/mirai/event/MiraiEventManager.java index 73f3f2a7c..385d83632 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/event/MiraiEventManager.java +++ b/mirai-core/src/main/java/net/mamoe/mirai/event/MiraiEventManager.java @@ -47,14 +47,17 @@ public class MiraiEventManager { if (!hook.isMount()) { hook.setMount(true); hooksLock.writeLock().lock(); - if (!hooks.containsKey(hook.getEventClass())) { - hooks.put(hook.getEventClass(), new LinkedList<>() {{ - add(hook); - }}); - } else { - hooks.get(hook.getEventClass()).add(hook); + try { + if (!hooks.containsKey(hook.getEventClass())) { + hooks.put(hook.getEventClass(), new LinkedList<>() {{ + add(hook); + }}); + } else { + hooks.get(hook.getEventClass()).add(hook); + } + } finally { + hooksLock.writeLock().unlock(); } - hooksLock.writeLock().unlock(); } } @@ -98,16 +101,19 @@ public class MiraiEventManager { public void broadcastEvent(MiraiEvent event) { hooksLock.readLock().lock(); - if (hooks.containsKey(event.getClass())) { - hooks.put(event.getClass(), - hooks.get(event.getClass()) - .stream() - .sorted(Comparator.comparingInt(MiraiEventHook::getPriority)) - .filter(a -> !a.accept(event)) - .collect(Collectors.toList()) - ); + try { + if (hooks.containsKey(event.getClass())) { + hooks.put(event.getClass(), + hooks.get(event.getClass()) + .stream() + .sorted(Comparator.comparingInt(MiraiEventHook::getPriority)) + .filter(a -> !a.accept(event)) + .collect(Collectors.toList()) + ); + } + } finally { + hooksLock.readLock().unlock(); } - hooksLock.readLock().unlock(); } diff --git a/mirai-core/src/main/java/net/mamoe/mirai/event/MiraiEventManagerKt.kt b/mirai-core/src/main/java/net/mamoe/mirai/event/MiraiEventManagerKt.kt index 3d2a610de..1ae0337c2 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/event/MiraiEventManagerKt.kt +++ b/mirai-core/src/main/java/net/mamoe/mirai/event/MiraiEventManagerKt.kt @@ -1,7 +1,6 @@ package net.mamoe.mirai.event import net.mamoe.mirai.event.events.MiraiEvent -import net.mamoe.mirai.event.events.robot.RobotLoginSucceedEvent import kotlin.reflect.KClass @@ -13,17 +12,27 @@ fun , E : MiraiEvent> C.hookOnce(hook: (E) -> Unit) { MiraiEventManager.getInstance().hookOnce(MiraiEventHook(this, hook)) } +fun , E : MiraiEvent> C.hookWhile(hook: (E) -> Boolean) { + MiraiEventManager.getInstance().hookAlways(MiraiEventHookSimple(this, hook)) +} + fun , E : MiraiEvent> C.hookAlways(hook: (E) -> Unit) { - this.java.hookOnce(hook) + this.java.hookAlways(hook) } fun , E : MiraiEvent> C.hookOnce(hook: (E) -> Unit) { this.java.hookOnce(hook) } +fun , E : MiraiEvent> C.hookWhile(hook: (E) -> Boolean) { + this.java.hookWhile(hook) +} -fun main() { - RobotLoginSucceedEvent::class.hookOnce { + +private class MiraiEventHookSimple(clazz: Class, val hook: (E) -> Boolean) : MiraiEventHook(clazz) { + override fun accept(event: MiraiEvent?): Boolean { + @Suppress("UNCHECKED_CAST") + return hook.invoke(event as E) } } \ No newline at end of file diff --git a/mirai-core/src/main/java/net/mamoe/mirai/message/Message.java b/mirai-core/src/main/java/net/mamoe/mirai/message/Message.java index be6e01ffb..e56f328b6 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/message/Message.java +++ b/mirai-core/src/main/java/net/mamoe/mirai/message/Message.java @@ -1,6 +1,9 @@ package net.mamoe.mirai.message; import net.mamoe.mirai.contact.QQ; +import net.mamoe.mirai.message.defaults.At; +import net.mamoe.mirai.message.defaults.MessageChain; +import net.mamoe.mirai.message.defaults.PlainText; import org.jetbrains.annotations.NotNull; import java.awt.image.BufferedImage; diff --git a/mirai-core/src/main/java/net/mamoe/mirai/message/MessageKt.kt b/mirai-core/src/main/java/net/mamoe/mirai/message/MessageKt.kt index cfe84db39..6ae5be4b9 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/message/MessageKt.kt +++ b/mirai-core/src/main/java/net/mamoe/mirai/message/MessageKt.kt @@ -1,5 +1,7 @@ package net.mamoe.mirai.message +import net.mamoe.mirai.message.defaults.PlainText + /** * 实现使用 '+' 操作符连接 [Message] 与 [Message] */ diff --git a/mirai-core/src/main/java/net/mamoe/mirai/message/At.java b/mirai-core/src/main/java/net/mamoe/mirai/message/defaults/At.java similarity index 86% rename from mirai-core/src/main/java/net/mamoe/mirai/message/At.java rename to mirai-core/src/main/java/net/mamoe/mirai/message/defaults/At.java index 133550b65..088a98a30 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/message/At.java +++ b/mirai-core/src/main/java/net/mamoe/mirai/message/defaults/At.java @@ -1,6 +1,7 @@ -package net.mamoe.mirai.message; +package net.mamoe.mirai.message.defaults; import net.mamoe.mirai.contact.QQ; +import net.mamoe.mirai.message.Message; import org.jetbrains.annotations.NotNull; import java.util.Objects; diff --git a/mirai-core/src/main/java/net/mamoe/mirai/message/Face.java b/mirai-core/src/main/java/net/mamoe/mirai/message/defaults/Face.java similarity index 64% rename from mirai-core/src/main/java/net/mamoe/mirai/message/Face.java rename to mirai-core/src/main/java/net/mamoe/mirai/message/defaults/Face.java index 9756ec5cd..b1708fd11 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/message/Face.java +++ b/mirai-core/src/main/java/net/mamoe/mirai/message/defaults/Face.java @@ -1,9 +1,12 @@ -package net.mamoe.mirai.message; +package net.mamoe.mirai.message.defaults; + +import net.mamoe.mirai.message.FaceID; +import net.mamoe.mirai.message.Message; /** * @author Him188moe */ -public class Face extends Message { +public final class Face extends Message { private final FaceID id; public Face(FaceID id) { diff --git a/mirai-core/src/main/java/net/mamoe/mirai/message/Image.java b/mirai-core/src/main/java/net/mamoe/mirai/message/defaults/Image.java similarity index 88% rename from mirai-core/src/main/java/net/mamoe/mirai/message/Image.java rename to mirai-core/src/main/java/net/mamoe/mirai/message/defaults/Image.java index 3db18f063..466a636b9 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/message/Image.java +++ b/mirai-core/src/main/java/net/mamoe/mirai/message/defaults/Image.java @@ -1,4 +1,6 @@ -package net.mamoe.mirai.message; +package net.mamoe.mirai.message.defaults; + +import net.mamoe.mirai.message.Message; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; diff --git a/mirai-core/src/main/java/net/mamoe/mirai/message/MessageChain.java b/mirai-core/src/main/java/net/mamoe/mirai/message/defaults/MessageChain.java similarity index 81% rename from mirai-core/src/main/java/net/mamoe/mirai/message/MessageChain.java rename to mirai-core/src/main/java/net/mamoe/mirai/message/defaults/MessageChain.java index eb20e6a60..3561460ce 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/message/MessageChain.java +++ b/mirai-core/src/main/java/net/mamoe/mirai/message/defaults/MessageChain.java @@ -1,5 +1,6 @@ -package net.mamoe.mirai.message; +package net.mamoe.mirai.message.defaults; +import net.mamoe.mirai.message.Message; import org.jetbrains.annotations.NotNull; import java.util.LinkedList; @@ -12,7 +13,7 @@ import java.util.stream.Collectors; public final class MessageChain extends Message { private LinkedList list = new LinkedList<>(); - MessageChain(@NotNull Message head, @NotNull Message tail) { + public MessageChain(@NotNull Message head, @NotNull Message tail) { Objects.requireNonNull(head); Objects.requireNonNull(tail); diff --git a/mirai-core/src/main/java/net/mamoe/mirai/message/PlainText.java b/mirai-core/src/main/java/net/mamoe/mirai/message/defaults/PlainText.java similarity index 75% rename from mirai-core/src/main/java/net/mamoe/mirai/message/PlainText.java rename to mirai-core/src/main/java/net/mamoe/mirai/message/defaults/PlainText.java index d32bd7f9e..c60e0bd83 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/message/PlainText.java +++ b/mirai-core/src/main/java/net/mamoe/mirai/message/defaults/PlainText.java @@ -1,4 +1,6 @@ -package net.mamoe.mirai.message; +package net.mamoe.mirai.message.defaults; + +import net.mamoe.mirai.message.Message; /** * @author Him188moe 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 546554a8a..aec04cb6b 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 @@ -9,8 +9,7 @@ import net.mamoe.mirai.network.packet.message.ClientSendFriendMessagePacket import net.mamoe.mirai.network.packet.verification.ServerVerificationCodePacket import net.mamoe.mirai.network.packet.verification.ServerVerificationCodePacketEncrypted import net.mamoe.mirai.task.MiraiThreadPool -import net.mamoe.mirai.util.* -import net.mamoe.mirai.utils.MiraiLogger +import net.mamoe.mirai.utils.* import java.io.ByteArrayInputStream import java.io.FileOutputStream import java.net.DatagramPacket diff --git a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/AccountInfo.kt b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/AccountInfo.kt index 9dd704dc3..85ffc41dc 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/AccountInfo.kt +++ b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/AccountInfo.kt @@ -1,7 +1,7 @@ package net.mamoe.mirai.network.packet import net.mamoe.mirai.network.Protocol -import net.mamoe.mirai.util.TEACryptor +import net.mamoe.mirai.utils.TEACryptor import java.io.DataInputStream /** 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 117f9bbcf..c8190a5ba 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,7 +2,8 @@ package net.mamoe.mirai.network.packet import lombok.Getter import net.mamoe.mirai.network.Protocol -import net.mamoe.mirai.util.* +import net.mamoe.mirai.util.TestedSuccessfully +import net.mamoe.mirai.utils.* import java.io.DataOutputStream import java.io.IOException import java.net.InetAddress diff --git a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/MessageEvent.kt b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/MessageEvent.kt index 800c3c160..2657662ee 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/MessageEvent.kt +++ b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/MessageEvent.kt @@ -1,8 +1,8 @@ package net.mamoe.mirai.network.packet import net.mamoe.mirai.network.Protocol -import net.mamoe.mirai.util.TEACryptor -import net.mamoe.mirai.util.toUHexString +import net.mamoe.mirai.utils.TEACryptor +import net.mamoe.mirai.utils.toUHexString import java.io.DataInputStream diff --git a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/SKey.kt b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/SKey.kt index 1b2f6f205..c5a1d4905 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/SKey.kt +++ b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/SKey.kt @@ -1,7 +1,7 @@ package net.mamoe.mirai.network.packet import net.mamoe.mirai.network.Protocol -import net.mamoe.mirai.util.TEACryptor +import net.mamoe.mirai.utils.TEACryptor import java.io.DataInputStream 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 06ed1a3d4..ca69bcdaa 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 @@ -1,6 +1,6 @@ package net.mamoe.mirai.network.packet -import net.mamoe.mirai.util.toUHexString +import net.mamoe.mirai.utils.toUHexString import java.io.ByteArrayOutputStream import java.io.DataInputStream import java.util.zip.GZIPInputStream 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 6aa34b7b4..d959728a7 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 @@ -2,9 +2,9 @@ package net.mamoe.mirai.network.packet import net.mamoe.mirai.network.packet.login.* import net.mamoe.mirai.network.packet.verification.ServerVerificationCodePacketEncrypted -import net.mamoe.mirai.util.getAllDeclaredFields -import net.mamoe.mirai.util.hexToBytes -import net.mamoe.mirai.util.toUHexString +import net.mamoe.mirai.utils.getAllDeclaredFields +import net.mamoe.mirai.utils.hexToBytes +import net.mamoe.mirai.utils.toUHexString import java.io.DataInputStream /** diff --git a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/Session.kt b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/Session.kt index 7fb8e23c1..a6eb7bf81 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/Session.kt +++ b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/Session.kt @@ -1,10 +1,10 @@ package net.mamoe.mirai.network.packet import net.mamoe.mirai.network.Protocol -import net.mamoe.mirai.util.ByteArrayDataOutputStream -import net.mamoe.mirai.util.TEACryptor -import net.mamoe.mirai.util.getRandomKey -import net.mamoe.mirai.util.lazyEncode +import net.mamoe.mirai.utils.ByteArrayDataOutputStream +import net.mamoe.mirai.utils.TEACryptor +import net.mamoe.mirai.utils.getRandomKey +import net.mamoe.mirai.utils.lazyEncode import java.io.DataInputStream import java.net.InetAddress diff --git a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/Touch.kt b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/Touch.kt index f4789efe0..5654f791c 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/Touch.kt +++ b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/Touch.kt @@ -1,7 +1,7 @@ package net.mamoe.mirai.network.packet import net.mamoe.mirai.network.Protocol -import net.mamoe.mirai.util.* +import net.mamoe.mirai.utils.* import java.io.DataInputStream import java.io.IOException diff --git a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ClientLoginPacket.kt b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ClientLoginPacket.kt index b6eeb65a0..c58e1c6d4 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ClientLoginPacket.kt +++ b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ClientLoginPacket.kt @@ -2,7 +2,11 @@ package net.mamoe.mirai.network.packet.login import net.mamoe.mirai.network.Protocol import net.mamoe.mirai.network.packet.* -import net.mamoe.mirai.util.* +import net.mamoe.mirai.util.TestedSuccessfully +import net.mamoe.mirai.utils.ByteArrayDataOutputStream +import net.mamoe.mirai.utils.TEACryptor +import net.mamoe.mirai.utils.hexToBytes +import net.mamoe.mirai.utils.toUHexString import java.io.DataOutputStream /** diff --git a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ClientLoginStatusPacket.kt b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ClientLoginStatusPacket.kt index b831024e6..e73b228d5 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ClientLoginStatusPacket.kt +++ b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ClientLoginStatusPacket.kt @@ -2,7 +2,7 @@ package net.mamoe.mirai.network.packet.login import net.mamoe.mirai.network.Protocol import net.mamoe.mirai.network.packet.* -import net.mamoe.mirai.util.ClientLoginStatus +import net.mamoe.mirai.utils.ClientLoginStatus /** * @author Him188moe diff --git a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ClientLoginVerificationCodePacket.kt b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ClientLoginVerificationCodePacket.kt index c3aaf649d..751fa07bf 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ClientLoginVerificationCodePacket.kt +++ b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ClientLoginVerificationCodePacket.kt @@ -2,8 +2,8 @@ package net.mamoe.mirai.network.packet.login import net.mamoe.mirai.network.Protocol import net.mamoe.mirai.network.packet.* -import net.mamoe.mirai.util.ByteArrayDataOutputStream -import net.mamoe.mirai.util.TEACryptor +import net.mamoe.mirai.utils.ByteArrayDataOutputStream +import net.mamoe.mirai.utils.TEACryptor /** * @author Him188moe diff --git a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ServerLoginResponsePasswordVerifiedPacket.kt b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ServerLoginResponsePasswordVerifiedPacket.kt index dcc1dd915..09e0c90f7 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ServerLoginResponsePasswordVerifiedPacket.kt +++ b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ServerLoginResponsePasswordVerifiedPacket.kt @@ -5,10 +5,10 @@ import net.mamoe.mirai.network.packet.ServerPacket import net.mamoe.mirai.network.packet.goto import net.mamoe.mirai.network.packet.readNBytes import net.mamoe.mirai.network.packet.readVarString -import net.mamoe.mirai.util.TEACryptor import net.mamoe.mirai.util.TestedSuccessfully -import net.mamoe.mirai.util.hexToBytes -import net.mamoe.mirai.util.toUHexString +import net.mamoe.mirai.utils.TEACryptor +import net.mamoe.mirai.utils.hexToBytes +import net.mamoe.mirai.utils.toUHexString import java.io.DataInputStream /** 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 3f98f04b7..7372b1ff8 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 @@ -4,10 +4,10 @@ import net.mamoe.mirai.network.packet.PacketId import net.mamoe.mirai.network.packet.ServerPacket import net.mamoe.mirai.network.packet.dataInputStream import net.mamoe.mirai.network.packet.goto -import net.mamoe.mirai.util.TEACryptor import net.mamoe.mirai.util.TestedSuccessfully -import net.mamoe.mirai.util.hexToUBytes -import net.mamoe.mirai.util.toUHexString +import net.mamoe.mirai.utils.TEACryptor +import net.mamoe.mirai.utils.hexToUBytes +import net.mamoe.mirai.utils.toUHexString import java.io.DataInputStream /** diff --git a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ServerLoginResponseVerificationCodePacket.kt b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ServerLoginResponseVerificationCodePacket.kt index a366cae67..540b23f5a 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ServerLoginResponseVerificationCodePacket.kt +++ b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/login/ServerLoginResponseVerificationCodePacket.kt @@ -3,7 +3,7 @@ package net.mamoe.mirai.network.packet.login import net.mamoe.mirai.network.packet.ServerPacket import net.mamoe.mirai.network.packet.dataInputStream import net.mamoe.mirai.network.packet.goto -import net.mamoe.mirai.util.TEACryptor +import net.mamoe.mirai.utils.TEACryptor import java.io.DataInputStream /** diff --git a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/message/ClientSendFriendMessagePacket.kt b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/message/ClientSendFriendMessagePacket.kt index 8b437bbd5..d753158c6 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/message/ClientSendFriendMessagePacket.kt +++ b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/message/ClientSendFriendMessagePacket.kt @@ -2,7 +2,8 @@ package net.mamoe.mirai.network.packet.message import net.mamoe.mirai.network.Protocol import net.mamoe.mirai.network.packet.* -import net.mamoe.mirai.util.lazyEncode +import net.mamoe.mirai.utils.lazyEncode +import net.mamoe.mirai.utils.toUHexString /** * @author Him188moe @@ -54,4 +55,15 @@ class ClientSendFriendMessagePacket( }//todo check } } +} + +fun main() { + println(lazyEncode { + val bytes = "hahaha".toByteArray() + it.writeByte(0x01) + it.writeShort(bytes.size) + it.writeByte(0x01) + it.writeShort(bytes.size - 1) + it.write(bytes) + }.toUHexString()) } \ No newline at end of file diff --git a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/verification/ServerVerificationCodePacket.kt b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/verification/ServerVerificationCodePacket.kt index 17464deb2..545fcabbc 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/network/packet/verification/ServerVerificationCodePacket.kt +++ b/mirai-core/src/main/java/net/mamoe/mirai/network/packet/verification/ServerVerificationCodePacket.kt @@ -3,7 +3,7 @@ package net.mamoe.mirai.network.packet.verification import net.mamoe.mirai.network.packet.ServerPacket import net.mamoe.mirai.network.packet.dataInputStream import net.mamoe.mirai.network.packet.goto -import net.mamoe.mirai.util.TEACryptor +import net.mamoe.mirai.utils.TEACryptor import java.io.DataInputStream /** diff --git a/mirai-core/src/main/java/net/mamoe/mirai/util/DebugLogger.kt b/mirai-core/src/main/java/net/mamoe/mirai/util/DebugLogger.kt deleted file mode 100644 index 6159a4f3b..000000000 --- a/mirai-core/src/main/java/net/mamoe/mirai/util/DebugLogger.kt +++ /dev/null @@ -1,34 +0,0 @@ -package net.mamoe.mirai.util - -import net.mamoe.mirai.network.packet.ClientPacket -import net.mamoe.mirai.network.packet.ServerPacket - -/** - * @author Him188moe - */ -object DebugLogger { - val buff = StringBuilder() -} - - -fun ByteArray.encryptionDebugLogging() { - DebugLogger.buff.append("TEA encrypt: " + this.toUHexString()).append("\n") -} - -fun ByteArray.packetSentDebugLogging() { - DebugLogger.buff.append("packet sent: " + this.toUHexString()).append("\n") -} - -fun ByteArray.decryptionDebugLogging() { - DebugLogger.buff.append("TEA decrypted: " + this.toUHexString()).append("\n") -} - -fun ServerPacket.logging() { - DebugLogger.buff.append(this.toString()).append("\n") - -} - -@ExperimentalUnsignedTypes -fun ClientPacket.logging() { - DebugLogger.buff.append(this.toString()).append("\n") -} \ No newline at end of file diff --git a/mirai-core/src/main/java/net/mamoe/mirai/util/ClientLoginStatus.java b/mirai-core/src/main/java/net/mamoe/mirai/utils/ClientLoginStatus.java similarity index 87% rename from mirai-core/src/main/java/net/mamoe/mirai/util/ClientLoginStatus.java rename to mirai-core/src/main/java/net/mamoe/mirai/utils/ClientLoginStatus.java index 31d96b662..45e1976fd 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/util/ClientLoginStatus.java +++ b/mirai-core/src/main/java/net/mamoe/mirai/utils/ClientLoginStatus.java @@ -1,4 +1,4 @@ -package net.mamoe.mirai.util; +package net.mamoe.mirai.utils; /** * @author Him188moe 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 b5b6ddd03..ff946d6ea 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 @@ -38,4 +38,8 @@ object MiraiLogger { } -fun log(any: Any?) = MiraiLogger.info(any) \ No newline at end of file +fun Any.logInfo() = MiraiLogger.info(this) + +fun Any.logDebug() = MiraiLogger.debug(this) + +fun Any.logError() = MiraiLogger.error(this) \ No newline at end of file diff --git a/mirai-core/src/main/java/net/mamoe/mirai/util/TEACryptor.java b/mirai-core/src/main/java/net/mamoe/mirai/utils/TEACryptor.java similarity index 97% rename from mirai-core/src/main/java/net/mamoe/mirai/util/TEACryptor.java rename to mirai-core/src/main/java/net/mamoe/mirai/utils/TEACryptor.java index 5e3b121f4..9b6269c49 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/util/TEACryptor.java +++ b/mirai-core/src/main/java/net/mamoe/mirai/utils/TEACryptor.java @@ -1,4 +1,4 @@ -package net.mamoe.mirai.util; +package net.mamoe.mirai.utils; import net.mamoe.mirai.network.Protocol; @@ -239,13 +239,10 @@ public class TEACryptor { } public byte[] encrypt(byte[] plaintext) { - DebugLoggerKt.encryptionDebugLogging(plaintext); - //System.out.println("TEA加密, 原文=" + Utils.INSTANCE.toHexString(plaintext, "")); return encrypt(plaintext, 0, plaintext.length); } public byte[] decrypt(byte[] ciphertext) { - DebugLoggerKt.decryptionDebugLogging(ciphertext); return decrypt(ciphertext, 0, ciphertext.length); } } \ No newline at end of file diff --git a/mirai-core/src/main/java/net/mamoe/mirai/util/Tested.kt b/mirai-core/src/main/java/net/mamoe/mirai/utils/Tested.kt similarity index 100% rename from mirai-core/src/main/java/net/mamoe/mirai/util/Tested.kt rename to mirai-core/src/main/java/net/mamoe/mirai/utils/Tested.kt diff --git a/mirai-core/src/main/java/net/mamoe/mirai/utils/Utils.java b/mirai-core/src/main/java/net/mamoe/mirai/utils/Utils.java deleted file mode 100644 index 0183e06f4..000000000 --- a/mirai-core/src/main/java/net/mamoe/mirai/utils/Utils.java +++ /dev/null @@ -1,73 +0,0 @@ -package net.mamoe.mirai.utils; - -import java.io.*; -import java.nio.charset.StandardCharsets; - -public class Utils { - /** - * File supporting from Nukkit - * */ - public static void writeFile(String fileName, String content) throws IOException { - writeFile(fileName, new ByteArrayInputStream(content.getBytes(StandardCharsets.UTF_8))); - } - - public static void writeFile(String fileName, InputStream content) throws IOException { - writeFile(new File(fileName), content); - } - - public static void writeFile(File file, String content) throws IOException { - writeFile(file, new ByteArrayInputStream(content.getBytes(StandardCharsets.UTF_8))); - } - - public static void writeFile(File file, InputStream content) throws IOException { - if (content == null) { - throw new IllegalArgumentException("content must not be null"); - } - if (!file.exists()) { - file.createNewFile(); - } - try (FileOutputStream stream = new FileOutputStream(file)) { - byte[] buffer = new byte[1024]; - int length; - while ((length = content.read(buffer)) != -1) { - stream.write(buffer, 0, length); - } - } - content.close(); - } - - public static String readFile(File file) throws IOException { - if (!file.exists() || file.isDirectory()) { - throw new FileNotFoundException(); - } - return readFile(new FileInputStream(file)); - } - - public static String readFile(String filename) throws IOException { - File file = new File(filename); - if (!file.exists() || file.isDirectory()) { - throw new FileNotFoundException(); - } - return readFile(new FileInputStream(file)); - } - - public static String readFile(InputStream inputStream) throws IOException { - return readFile(new InputStreamReader(inputStream, StandardCharsets.UTF_8)); - } - - private static String readFile(Reader reader) throws IOException { - try (BufferedReader br = new BufferedReader(reader)) { - String temp; - StringBuilder stringBuilder = new StringBuilder(); - temp = br.readLine(); - while (temp != null) { - if (stringBuilder.length() != 0) { - stringBuilder.append("\n"); - } - stringBuilder.append(temp); - temp = br.readLine(); - } - return stringBuilder.toString(); - } - } -} diff --git a/mirai-core/src/main/java/net/mamoe/mirai/util/Utils.kt b/mirai-core/src/main/java/net/mamoe/mirai/utils/Utils.kt similarity index 78% rename from mirai-core/src/main/java/net/mamoe/mirai/util/Utils.kt rename to mirai-core/src/main/java/net/mamoe/mirai/utils/Utils.kt index 67d887b6d..3fac69b21 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/util/Utils.kt +++ b/mirai-core/src/main/java/net/mamoe/mirai/utils/Utils.kt @@ -1,4 +1,4 @@ -package net.mamoe.mirai.util +package net.mamoe.mirai.utils import net.mamoe.mirai.network.Protocol import java.io.ByteArrayOutputStream @@ -8,30 +8,15 @@ import java.lang.reflect.Field import java.util.* import java.util.zip.CRC32 -/** - * @author Him188moe - */ -object Utils { - fun toHexString(byteArray: ByteArray, separator: String = " "): String = byteArray.joinToString(separator) { - var ret = it.toString(16).toUpperCase() - if (ret.length == 1) { - ret = "0$ret" - } - return@joinToString ret - } - - @ExperimentalUnsignedTypes - fun toHexString(byteArray: UByteArray, separator: String = " "): String = byteArray.joinToString(separator) { - var ret = it.toString(16).toUpperCase() - if (ret.length == 1) { - ret = "0$ret" - } - return@joinToString ret +fun ByteArray.toHexString(): String = toHexString(" ") +fun ByteArray.toHexString(separator: String = " "): String = this.joinToString(separator) { + var ret = it.toString(16).toUpperCase() + if (ret.length == 1) { + ret = "0$ret" } + return@joinToString ret } -fun ByteArray.toHexString(): String = toHexString(" ") -fun ByteArray.toHexString(separator: String = " "): String = Utils.toHexString(this, separator) @ExperimentalUnsignedTypes fun ByteArray.toUHexString(separator: String = " "): String = this.toUByteArray().toUHexString(separator) @@ -39,7 +24,13 @@ fun ByteArray.toUHexString(separator: String = " "): String = this.toUByteArray( fun ByteArray.toUHexString(): String = this.toUByteArray().toUHexString() @ExperimentalUnsignedTypes -fun UByteArray.toUHexString(separator: String = " "): String = Utils.toHexString(this, separator) +fun UByteArray.toUHexString(separator: String = " "): String = this.joinToString(separator) { + var ret = it.toString(16).toUpperCase() + if (ret.length == 1) { + ret = "0$ret" + } + return@joinToString ret +} @ExperimentalUnsignedTypes fun UByteArray.toUHexString(): String = this.toUHexString(" ") @@ -94,10 +85,6 @@ fun getGTK(sKey: String): Int { return value } -fun main() { - println(getGTK("ABCDEFGEFC")) -} - fun getCrc32(key: ByteArray): Int = CRC32().let { it.update(key); it.value.toInt() } diff --git a/mirai-core/src/main/java/net/mamoe/mirai/utils/config/MiraiConfig.java b/mirai-core/src/main/java/net/mamoe/mirai/utils/config/MiraiConfig.java index 617cefcaf..106615e6f 100644 --- a/mirai-core/src/main/java/net/mamoe/mirai/utils/config/MiraiConfig.java +++ b/mirai-core/src/main/java/net/mamoe/mirai/utils/config/MiraiConfig.java @@ -1,14 +1,18 @@ package net.mamoe.mirai.utils.config; +import kotlin.io.FilesKt; import net.mamoe.mirai.MiraiServer; -import net.mamoe.mirai.utils.Utils; import org.jetbrains.annotations.NotNull; import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.Yaml; +import java.io.ByteArrayInputStream; import java.io.File; +import java.io.FileOutputStream; import java.io.IOException; -import java.util.*; +import java.nio.charset.Charset; +import java.util.LinkedHashMap; +import java.util.Objects; /** * YAML-TYPE CONFIG @@ -35,7 +39,7 @@ public class MiraiConfig extends MiraiConfigSection { Yaml yaml = new Yaml(dumperOptions); String content = yaml.dump(this.sortedMap); try { - Utils.writeFile(this.root, content); + new ByteArrayInputStream(content.getBytes()).transferTo(new FileOutputStream(this.root)); } catch (IOException e) { e.printStackTrace(); } @@ -59,12 +63,7 @@ public class MiraiConfig extends MiraiConfigSection { DumperOptions dumperOptions = new DumperOptions(); dumperOptions.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); Yaml yaml = new Yaml(dumperOptions); - try { - return yaml.loadAs(Utils.readFile(file), LinkedHashMap.class); - } catch (IOException e) { - e.printStackTrace(); - } - return new LinkedHashMap<>(); + return yaml.loadAs(String.join("\n", FilesKt.readLines(file, Charset.defaultCharset())), LinkedHashMap.class); } diff --git a/mirai-core/src/test/java/PacketTest.kt b/mirai-core/src/test/java/PacketTest.kt index d44ce71da..4d7b5ffb9 100644 --- a/mirai-core/src/test/java/PacketTest.kt +++ b/mirai-core/src/test/java/PacketTest.kt @@ -1,5 +1,5 @@ import net.mamoe.mirai.network.packet.login.ClientPasswordSubmissionPacket -import net.mamoe.mirai.util.toUHexString +import net.mamoe.mirai.utils.toUHexString @ExperimentalUnsignedTypes fun main(){