This commit is contained in:
Him188moe 2019-08-19 02:31:37 +08:00
parent 75352667ee
commit b3a227e51d
4 changed files with 29 additions and 17 deletions

View File

@ -4,7 +4,6 @@ import io.netty.bootstrap.Bootstrap
import io.netty.channel.*
import io.netty.channel.nio.NioEventLoopGroup
import io.netty.channel.socket.nio.NioDatagramChannel
import io.netty.handler.codec.MessageToMessageEncoder
import io.netty.handler.codec.bytes.ByteArrayDecoder
import net.mamoe.mirai.network.packet.client.ClientPacket
import net.mamoe.mirai.network.packet.client.login.*
@ -124,15 +123,16 @@ class Robot(val number: Int, private val password: String) {
@ExperimentalUnsignedTypes
private fun sendPacket(packet: ClientPacket) {
try {
MiraiLogger log "Encoding"
packet.encode()
} catch (e: Exception) {
e.printStackTrace()
}
packet.writeHex(Protocol.tail)
println("Packet sent: $packet")
/*val p = DatagramPacket(packet.toByteArray());
p.socketAddress = this.serverAddress*/
channel!!.writeAndFlush(packet.toByteArray())
channel!!.writeAndFlush(DatagramPacket(packet.toByteArray()))
MiraiLogger info "Packet sent: $packet"
}
private fun DatagramPacket(toByteArray: ByteArray): DatagramPacket = DatagramPacket(toByteArray, toByteArray.size, this.serverAddress)
@ -146,17 +146,18 @@ class Robot(val number: Int, private val password: String) {
try {
val b = Bootstrap()
MiraiLogger.info("Connecting")
b.group(group)
.channel(NioDatagramChannel::class.java)
.option(ChannelOption.SO_BROADCAST, true)
.handler(object : ChannelInitializer<NioDatagramChannel>() {
@Throws(Exception::class)
override fun initChannel(ch: NioDatagramChannel) {
ch.pipeline().addLast(object : MessageToMessageEncoder<ByteArray>() {
/*ch.pipeline().addLast(object : MessageToMessageEncoder<ByteArray>() {
override fun encode(ctx: ChannelHandlerContext?, msg: ByteArray?, out: MutableList<Any>?) {
out!!.add(DatagramPacket(msg!!))
}
})
})*/
ch.pipeline().addLast(ByteArrayDecoder())
ch.pipeline().addLast(object : SimpleChannelInboundHandler<ByteArray>() {
override fun channelRead0(ctx: ChannelHandlerContext, bytes: ByteArray) {
@ -176,10 +177,11 @@ class Robot(val number: Int, private val password: String) {
channel = b.bind(15345).sync().channel()
MiraiLogger info "Succeed"
sendPacket(ClientTouchPacket(this@Robot.number, serverIP))
channel!!.closeFuture().sync()
} finally {
group.shutdownGracefully().sync()
}
}
}
}

View File

@ -1,7 +1,6 @@
package net.mamoe.mirai.network.packet.client
import lombok.Getter
import lombok.ToString
import net.mamoe.mirai.network.Protocol
import net.mamoe.mirai.network.packet.Packet
import net.mamoe.mirai.network.packet.PacketId
@ -14,7 +13,6 @@ import java.security.MessageDigest
/**
* @author Him188moe
*/
@ToString
@ExperimentalUnsignedTypes
abstract class ClientPacket : ByteArrayDataOutputStream(), Packet {
@Getter
@ -53,6 +51,10 @@ abstract class ClientPacket : ByteArrayDataOutputStream(), Packet {
encode()
return toByteArray()
}
override fun toString(): String {
return this.javaClass.simpleName + this.javaClass.declaredFields.joinToString(", ", "{", "}") { it.trySetAccessible(); it.name + "=" + it.get(this) }
}
}

View File

@ -47,9 +47,6 @@ class ClientTouchPacket(val qq: Int, val serverIp: String) : ClientPacket() {
}.toByteArray()))
}
override fun toString(): String {
return this.javaClass.simpleName + this.javaClass.declaredFields.joinToString(", ", "{", "}") { it.trySetAccessible(); it.name + "=" + it.get(this) }
}
}

View File

@ -6,12 +6,20 @@ import java.util.*
/**
* used to replace old logger
*/
object MiraiLogger{
fun info(o: Any) {
object MiraiLogger {
infix fun info(o: Any?) {
this.print(o.toString())
}
fun catching(e:Throwable){
infix fun log(o: Any?) = MiraiLogger.info(o)
infix fun println(o: Any?) = MiraiLogger.info(o)
infix fun debug(o: Any?) {
this.print(o.toString())
}
infix fun catching(e: Throwable) {
e.printStackTrace()
/*
this.print(e.message)
@ -19,8 +27,11 @@ object MiraiLogger{
this.print(e.cause.toString())*/
}
private fun print(value:String?){
private fun print(value: String?) {
val s = SimpleDateFormat("MM-dd HH:mm:ss").format(Date())
println(LoggerTextFormat.BLUE.toString() + "[Mirai] $s : $value")
kotlin.io.println(LoggerTextFormat.BLUE.toString() + "[Mirai] $s : $value")
}
}
}
fun log(any: Any?) = MiraiLogger.info(any)