Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
M
Mirai
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
MyCard
Mirai
Commits
27dbfcfb
Commit
27dbfcfb
authored
Jan 30, 2020
by
Him188
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Move packets
parent
a120f3d4
Changes
18
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
110 additions
and
54 deletions
+110
-54
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/event/ForceOfflineEvent.kt
...tlin/net/mamoe/mirai/qqandroid/event/ForceOfflineEvent.kt
+14
-0
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/io/serialization/Jce.kt
.../kotlin/net/mamoe/mirai/qqandroid/io/serialization/Jce.kt
+30
-2
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/PushNotifyPack.kt
...rai/qqandroid/network/protocol/data/jce/PushNotifyPack.kt
+1
-1
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/RequestPushForceOffline.kt
...roid/network/protocol/data/jce/RequestPushForceOffline.kt
+13
-0
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/Cmd0x352Packet.kt
...i/qqandroid/network/protocol/data/proto/Cmd0x352Packet.kt
+1
-1
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/ImageRequest.kt
...rai/qqandroid/network/protocol/data/proto/ImageRequest.kt
+1
-1
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/Msg.kt
.../mamoe/mirai/qqandroid/network/protocol/data/proto/Msg.kt
+1
-1
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/MsgCommon.kt
.../mirai/qqandroid/network/protocol/data/proto/MsgCommon.kt
+1
-1
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/MsgSvc.kt
...moe/mirai/qqandroid/network/protocol/data/proto/MsgSvc.kt
+1
-1
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/OnlinePush.kt
...mirai/qqandroid/network/protocol/data/proto/OnlinePush.kt
+1
-1
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/PacketFactory.kt
.../mirai/qqandroid/network/protocol/packet/PacketFactory.kt
+5
-1
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/image/ImageDownPacket.kt
...oid/network/protocol/packet/chat/image/ImageDownPacket.kt
+2
-2
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/image/ImageUpPacket.kt
...droid/network/protocol/packet/chat/image/ImageUpPacket.kt
+2
-2
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/MessageSvc.kt
...ndroid/network/protocol/packet/chat/receive/MessageSvc.kt
+21
-9
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/OnlinePush.PbPushGroupMsg.kt
...protocol/packet/chat/receive/OnlinePush.PbPushGroupMsg.kt
+2
-2
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/MessageQQA.kt
...Main/kotlin/net/mamoe/mirai/qqandroid/utils/MessageQQA.kt
+2
-2
mirai-core-qqandroid/src/jvmTest/kotlin/test/JceDataClassGenerator.kt
...qandroid/src/jvmTest/kotlin/test/JceDataClassGenerator.kt
+12
-6
mirai-core-qqandroid/src/jvmTest/kotlin/test/SmsTest.kt
mirai-core-qqandroid/src/jvmTest/kotlin/test/SmsTest.kt
+0
-21
No files found.
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/event/ForceOfflineEvent.kt
0 → 100644
View file @
27dbfcfb
package
net.mamoe.mirai.qqandroid.event
import
net.mamoe.mirai.Bot
import
net.mamoe.mirai.data.Packet
import
net.mamoe.mirai.event.events.BotEvent
/**
* 被挤下线
*/
class
ForceOfflineEvent
(
override
val
bot
:
Bot
,
val
title
:
String
,
val
tips
:
String
)
:
BotEvent
(),
Packet
\ No newline at end of file
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/io/serialization/Jce.kt
View file @
27dbfcfb
...
@@ -7,8 +7,13 @@ import kotlinx.serialization.internal.*
...
@@ -7,8 +7,13 @@ import kotlinx.serialization.internal.*
import
kotlinx.serialization.modules.EmptyModule
import
kotlinx.serialization.modules.EmptyModule
import
kotlinx.serialization.modules.SerialModule
import
kotlinx.serialization.modules.SerialModule
import
net.mamoe.mirai.qqandroid.io.JceStruct
import
net.mamoe.mirai.qqandroid.io.JceStruct
import
net.mamoe.mirai.qqandroid.network.protocol.packet.withUse
import
net.mamoe.mirai.qqandroid.io.ProtoBuf
import
net.mamoe.mirai.qqandroid.io.ProtoBuf
import
net.mamoe.mirai.qqandroid.network.protocol.packet.login.data.RequestDataVersion2
import
net.mamoe.mirai.qqandroid.network.protocol.packet.login.data.RequestDataVersion3
import
net.mamoe.mirai.qqandroid.network.protocol.packet.login.data.RequestPacket
import
net.mamoe.mirai.qqandroid.network.protocol.packet.withUse
import
net.mamoe.mirai.utils.firstValue
import
net.mamoe.mirai.utils.io.read
import
net.mamoe.mirai.utils.io.readIoBuffer
import
net.mamoe.mirai.utils.io.readIoBuffer
import
net.mamoe.mirai.utils.io.readString
import
net.mamoe.mirai.utils.io.readString
import
net.mamoe.mirai.utils.io.toIoBuffer
import
net.mamoe.mirai.utils.io.toIoBuffer
...
@@ -30,6 +35,28 @@ fun <T> ByteReadPacket.readRemainingAsJceStruct(serializer: DeserializationStrat
...
@@ -30,6 +35,28 @@ fun <T> ByteReadPacket.readRemainingAsJceStruct(serializer: DeserializationStrat
return
Jce
.
byCharSet
(
charset
).
load
(
serializer
,
this
)
return
Jce
.
byCharSet
(
charset
).
load
(
serializer
,
this
)
}
}
/**
* 先解析为 [RequestPacket], 即 `UniRequest`, 再按版本解析 map, 再找出指定数据并反序列化
*/
fun
<
T
:
JceStruct
>
ByteReadPacket
.
decodeUniPacket
(
deserializer
:
DeserializationStrategy
<
T
>,
name
:
String
?
=
null
):
T
{
val
request
=
this
.
readRemainingAsJceStruct
(
RequestPacket
.
serializer
())
fun
ByteArray
.
doReadInner
():
T
=
read
{
discardExact
(
1
)
this
.
readRemainingAsJceStruct
(
deserializer
)
}
return
if
(
name
==
null
)
when
(
request
.
iVersion
.
toInt
())
{
2
->
request
.
sBuffer
.
loadAs
(
RequestDataVersion2
.
serializer
()).
map
.
firstValue
().
firstValue
().
doReadInner
()
3
->
request
.
sBuffer
.
loadAs
(
RequestDataVersion3
.
serializer
()).
map
.
firstValue
().
doReadInner
()
else
->
error
(
"unsupported version ${request.iVersion}"
)
}
else
when
(
request
.
iVersion
.
toInt
())
{
2
->
request
.
sBuffer
.
loadAs
(
RequestDataVersion2
.
serializer
()).
map
.
getOrElse
(
name
)
{
error
(
"cannot find $name"
)
}.
firstValue
().
doReadInner
()
3
->
request
.
sBuffer
.
loadAs
(
RequestDataVersion3
.
serializer
()).
map
.
getOrElse
(
name
)
{
error
(
"cannot find $name"
)
}.
doReadInner
()
else
->
error
(
"unsupported version ${request.iVersion}"
)
}
}
fun
<
T
:
JceStruct
>
T
.
toByteArray
(
serializer
:
SerializationStrategy
<
T
>,
c
:
JceCharset
=
JceCharset
.
GBK
):
ByteArray
=
Jce
.
byCharSet
(
c
).
dump
(
serializer
,
this
)
fun
<
T
:
JceStruct
>
T
.
toByteArray
(
serializer
:
SerializationStrategy
<
T
>,
c
:
JceCharset
=
JceCharset
.
GBK
):
ByteArray
=
Jce
.
byCharSet
(
c
).
dump
(
serializer
,
this
)
enum
class
JceCharset
(
val
kotlinCharset
:
Charset
)
{
enum
class
JceCharset
(
val
kotlinCharset
:
Charset
)
{
...
@@ -480,7 +507,8 @@ class Jce private constructor(private val charset: JceCharset, context: SerialMo
...
@@ -480,7 +507,8 @@ class Jce private constructor(private val charset: JceCharset, context: SerialMo
@Suppress
(
"UNCHECKED_CAST"
)
@Suppress
(
"UNCHECKED_CAST"
)
override
fun
<
T
>
decodeSerializableValue
(
deserializer
:
DeserializationStrategy
<
T
>):
T
{
override
fun
<
T
>
decodeSerializableValue
(
deserializer
:
DeserializationStrategy
<
T
>):
T
{
return
decodeNullableSerializableValue
(
deserializer
as
DeserializationStrategy
<
Any
?
>)
as
?
T
?:
error
(
"value with tag $currentTagOrNull is not optional but cannot find"
)
return
decodeNullableSerializableValue
(
deserializer
as
DeserializationStrategy
<
Any
?
>)
as
?
T
?:
error
(
"value with tag $currentTagOrNull is not optional but cannot find"
)
}
}
}
}
...
...
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/
packet/chat/data
/PushNotifyPack.kt
→
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/
data/jce
/PushNotifyPack.kt
View file @
27dbfcfb
package
net.mamoe.mirai.qqandroid.network.protocol.
packet.chat.data
package
net.mamoe.mirai.qqandroid.network.protocol.
data.jce
import
kotlinx.serialization.SerialId
import
kotlinx.serialization.SerialId
import
kotlinx.serialization.Serializable
import
kotlinx.serialization.Serializable
...
...
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/RequestPushForceOffline.kt
0 → 100644
View file @
27dbfcfb
package
net.mamoe.mirai.qqandroid.network.protocol.data.jce
import
kotlinx.serialization.SerialId
import
kotlinx.serialization.Serializable
import
net.mamoe.mirai.qqandroid.io.JceStruct
@Serializable
internal
class
RequestPushForceOffline
(
@SerialId
(
0
)
val
uin
:
Long
,
@SerialId
(
1
)
val
title
:
String
?
=
""
,
@SerialId
(
2
)
val
tips
:
String
?
=
""
,
@SerialId
(
3
)
val
sameDevice
:
Byte
?
=
null
)
:
JceStruct
\ No newline at end of file
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/
packet/chat/data
/Cmd0x352Packet.kt
→
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/
data/proto
/Cmd0x352Packet.kt
View file @
27dbfcfb
package
net.mamoe.mirai.qqandroid.network.protocol.
packet.chat.data
package
net.mamoe.mirai.qqandroid.network.protocol.
data.proto
import
kotlinx.serialization.SerialId
import
kotlinx.serialization.SerialId
import
kotlinx.serialization.Serializable
import
kotlinx.serialization.Serializable
...
...
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/
packet/chat/data
/ImageRequest.kt
→
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/
data/proto
/ImageRequest.kt
View file @
27dbfcfb
package
net.mamoe.mirai.qqandroid.network.protocol.
packet.chat.data
package
net.mamoe.mirai.qqandroid.network.protocol.
data.proto
import
kotlinx.serialization.SerialId
import
kotlinx.serialization.SerialId
import
kotlinx.serialization.Serializable
import
kotlinx.serialization.Serializable
...
...
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/
packet/chat/data
/Msg.kt
→
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/
data/proto
/Msg.kt
View file @
27dbfcfb
package
net.mamoe.mirai.qqandroid.network.protocol.
packet.chat.data
package
net.mamoe.mirai.qqandroid.network.protocol.
data.proto
import
kotlinx.serialization.SerialId
import
kotlinx.serialization.SerialId
import
kotlinx.serialization.Serializable
import
kotlinx.serialization.Serializable
...
...
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/
packet/chat/data
/MsgCommon.kt
→
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/
data/proto
/MsgCommon.kt
View file @
27dbfcfb
package
net.mamoe.mirai.qqandroid.network.protocol.
packet.chat.data
package
net.mamoe.mirai.qqandroid.network.protocol.
data.proto
import
kotlinx.serialization.SerialId
import
kotlinx.serialization.SerialId
import
kotlinx.serialization.Serializable
import
kotlinx.serialization.Serializable
...
...
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/
packet/chat/data
/MsgSvc.kt
→
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/
data/proto
/MsgSvc.kt
View file @
27dbfcfb
package
net.mamoe.mirai.qqandroid.network.protocol.
packet.chat.data
package
net.mamoe.mirai.qqandroid.network.protocol.
data.proto
import
kotlinx.serialization.SerialId
import
kotlinx.serialization.SerialId
import
kotlinx.serialization.Serializable
import
kotlinx.serialization.Serializable
...
...
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/
packet/chat/data
/OnlinePush.kt
→
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/
data/proto
/OnlinePush.kt
View file @
27dbfcfb
package
net.mamoe.mirai.qqandroid.network.protocol.
packet.chat.data
package
net.mamoe.mirai.qqandroid.network.protocol.
data.proto
import
kotlinx.serialization.SerialId
import
kotlinx.serialization.SerialId
import
kotlinx.serialization.Serializable
import
kotlinx.serialization.Serializable
...
...
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/PacketFactory.kt
View file @
27dbfcfb
...
@@ -61,8 +61,12 @@ internal object KnownPacketFactories : List<PacketFactory<*>> by mutableListOf(
...
@@ -61,8 +61,12 @@ internal object KnownPacketFactories : List<PacketFactory<*>> by mutableListOf(
StatSvc
.
Register
,
StatSvc
.
Register
,
OnlinePush
.
PbPushGroupMsg
,
OnlinePush
.
PbPushGroupMsg
,
MessageSvc
.
PushNotify
,
MessageSvc
.
PushNotify
,
MessageSvc
.
PbGetMsg
MessageSvc
.
PbGetMsg
,
MessageSvc
.
PushForceOffline
)
{
)
{
// SvcReqMSFLoginNotify 自己的其他设备上限
// MessageSvc.PushReaded 电脑阅读了别人的消息, 告知手机
// OnlinePush.PbC2CMsgSync 电脑发消息给别人, 同步给手机
fun
findPacketFactory
(
commandName
:
String
):
PacketFactory
<
*
>?
=
this
.
firstOrNull
{
it
.
commandName
==
commandName
}
fun
findPacketFactory
(
commandName
:
String
):
PacketFactory
<
*
>?
=
this
.
firstOrNull
{
it
.
commandName
==
commandName
}
...
...
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/image/ImageDownPacket.kt
View file @
27dbfcfb
...
@@ -9,8 +9,8 @@ import net.mamoe.mirai.qqandroid.network.QQAndroidClient
...
@@ -9,8 +9,8 @@ import net.mamoe.mirai.qqandroid.network.QQAndroidClient
import
net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacket
import
net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacket
import
net.mamoe.mirai.qqandroid.network.protocol.packet.PacketFactory
import
net.mamoe.mirai.qqandroid.network.protocol.packet.PacketFactory
import
net.mamoe.mirai.qqandroid.network.protocol.packet.buildLoginOutgoingPacket
import
net.mamoe.mirai.qqandroid.network.protocol.packet.buildLoginOutgoingPacket
import
net.mamoe.mirai.qqandroid.network.protocol.
packet.chat.data
.Cmd0x352Packet
import
net.mamoe.mirai.qqandroid.network.protocol.
data.proto
.Cmd0x352Packet
import
net.mamoe.mirai.qqandroid.network.protocol.
packet.chat.data
.GetImgUrlReq
import
net.mamoe.mirai.qqandroid.network.protocol.
data.proto
.GetImgUrlReq
import
net.mamoe.mirai.qqandroid.network.protocol.packet.writeSsoPacket
import
net.mamoe.mirai.qqandroid.network.protocol.packet.writeSsoPacket
internal
object
ImageDownPacket
:
PacketFactory
<
ImageDownPacket
.
ImageDownPacketResponse
>(
"LongConn.OffPicDown"
)
{
internal
object
ImageDownPacket
:
PacketFactory
<
ImageDownPacket
.
ImageDownPacketResponse
>(
"LongConn.OffPicDown"
)
{
...
...
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/image/ImageUpPacket.kt
View file @
27dbfcfb
...
@@ -10,8 +10,8 @@ import net.mamoe.mirai.qqandroid.network.protocol.packet.*
...
@@ -10,8 +10,8 @@ import net.mamoe.mirai.qqandroid.network.protocol.packet.*
import
net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacket
import
net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacket
import
net.mamoe.mirai.qqandroid.network.protocol.packet.PacketFactory
import
net.mamoe.mirai.qqandroid.network.protocol.packet.PacketFactory
import
net.mamoe.mirai.qqandroid.network.protocol.packet.buildLoginOutgoingPacket
import
net.mamoe.mirai.qqandroid.network.protocol.packet.buildLoginOutgoingPacket
import
net.mamoe.mirai.qqandroid.network.protocol.
packet.chat.data
.Cmd0x352Packet
import
net.mamoe.mirai.qqandroid.network.protocol.
data.proto
.Cmd0x352Packet
import
net.mamoe.mirai.qqandroid.network.protocol.
packet.chat.data
.UploadImgReq
import
net.mamoe.mirai.qqandroid.network.protocol.
data.proto
.UploadImgReq
internal
object
ImageUpPacket
:
PacketFactory
<
ImageUpPacket
.
ImageUpPacketResponse
>(
"LongConn.OffPicUp"
)
{
internal
object
ImageUpPacket
:
PacketFactory
<
ImageUpPacket
.
ImageUpPacketResponse
>(
"LongConn.OffPicUp"
)
{
...
...
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/MessageSvc.
PushNotify.
kt
→
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/MessageSvc.kt
View file @
27dbfcfb
...
@@ -5,17 +5,19 @@ import kotlinx.io.core.discardExact
...
@@ -5,17 +5,19 @@ import kotlinx.io.core.discardExact
import
net.mamoe.mirai.data.MultiPacket
import
net.mamoe.mirai.data.MultiPacket
import
net.mamoe.mirai.message.FriendMessage
import
net.mamoe.mirai.message.FriendMessage
import
net.mamoe.mirai.qqandroid.QQAndroidBot
import
net.mamoe.mirai.qqandroid.QQAndroidBot
import
net.mamoe.mirai.qqandroid.event.ForceOfflineEvent
import
net.mamoe.mirai.qqandroid.io.readRemainingAsProtoBuf
import
net.mamoe.mirai.qqandroid.io.readRemainingAsProtoBuf
import
net.mamoe.mirai.qqandroid.io.serialization.decodeUniPacket
import
net.mamoe.mirai.qqandroid.io.serialization.loadAs
import
net.mamoe.mirai.qqandroid.io.serialization.loadAs
import
net.mamoe.mirai.qqandroid.io.serialization.readRemainingAsJceStruct
import
net.mamoe.mirai.qqandroid.io.serialization.readRemainingAsJceStruct
import
net.mamoe.mirai.qqandroid.io.writeProtoBuf
import
net.mamoe.mirai.qqandroid.io.writeProtoBuf
import
net.mamoe.mirai.qqandroid.network.QQAndroidClient
import
net.mamoe.mirai.qqandroid.network.QQAndroidClient
import
net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY
import
net.mamoe.mirai.qqandroid.network.protocol.data.jce.RequestPushForceOffline
import
net.mamoe.mirai.qqandroid.network.protocol.data.jce.RequestPushNotify
import
net.mamoe.mirai.qqandroid.network.protocol.data.proto.MsgSvc
import
net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacket
import
net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacket
import
net.mamoe.mirai.qqandroid.network.protocol.packet.PacketFactory
import
net.mamoe.mirai.qqandroid.network.protocol.packet.PacketFactory
import
net.mamoe.mirai.qqandroid.network.protocol.packet.buildOutgoingUniPacket
import
net.mamoe.mirai.qqandroid.network.protocol.packet.buildOutgoingUniPacket
import
net.mamoe.mirai.qqandroid.network.protocol.packet.chat.data.MsgSvc
import
net.mamoe.mirai.qqandroid.network.protocol.packet.chat.data.RequestPushNotify
import
net.mamoe.mirai.qqandroid.network.protocol.packet.login.data.RequestDataVersion2
import
net.mamoe.mirai.qqandroid.network.protocol.packet.login.data.RequestDataVersion2
import
net.mamoe.mirai.qqandroid.network.protocol.packet.login.data.RequestPacket
import
net.mamoe.mirai.qqandroid.network.protocol.packet.login.data.RequestPacket
import
net.mamoe.mirai.qqandroid.utils.toMessageChain
import
net.mamoe.mirai.qqandroid.utils.toMessageChain
...
@@ -32,10 +34,7 @@ class MessageSvc {
...
@@ -32,10 +34,7 @@ class MessageSvc {
override
suspend
fun
ByteReadPacket
.
decode
(
bot
:
QQAndroidBot
):
RequestPushNotify
{
override
suspend
fun
ByteReadPacket
.
decode
(
bot
:
QQAndroidBot
):
RequestPushNotify
{
discardExact
(
8
)
discardExact
(
8
)
return
readRemainingAsJceStruct
(
RequestPacket
.
serializer
()).
sBuffer
return
decodeUniPacket
(
RequestPushNotify
.
serializer
())
.
loadAs
(
RequestDataVersion2
.
serializer
()).
map
.
firstValue
().
firstValue
()
.
toReadPacket
().
apply
{
discardExact
(
1
)
}
.
readRemainingAsJceStruct
(
RequestPushNotify
.
serializer
())
}
}
override
suspend
fun
QQAndroidBot
.
handle
(
packet
:
RequestPushNotify
)
{
override
suspend
fun
QQAndroidBot
.
handle
(
packet
:
RequestPushNotify
)
{
...
@@ -50,7 +49,9 @@ class MessageSvc {
...
@@ -50,7 +49,9 @@ class MessageSvc {
* 进行刷新消息
* 进行刷新消息
*/
*/
internal
object
PbGetMsg
:
PacketFactory
<
MultiPacket
<
FriendMessage
>>(
"MessageSvc.PbGetMsg"
)
{
internal
object
PbGetMsg
:
PacketFactory
<
MultiPacket
<
FriendMessage
>>(
"MessageSvc.PbGetMsg"
)
{
val
EXTRA_DATA
=
"08 00 12 33 6D 6F 64 65 6C 3A 78 69 61 6F 6D 69 20 36 3B 6F 73 3A 32 32 3B 76 65 72 73 69 6F 6E 3A 76 32 6D 61 6E 3A 78 69 61 6F 6D 69 73 79 73 3A 4C 4D 59 34 38 5A 18 E4 E1 A4 FF FE 2D 20 E9 E1 A4 FF FE 2D 28 A8 E1 A4 FF FE 2D 30 99 E1 A4 FF FE 2D"
.
hexToBytes
()
val
EXTRA_DATA
=
"08 00 12 33 6D 6F 64 65 6C 3A 78 69 61 6F 6D 69 20 36 3B 6F 73 3A 32 32 3B 76 65 72 73 69 6F 6E 3A 76 32 6D 61 6E 3A 78 69 61 6F 6D 69 73 79 73 3A 4C 4D 59 34 38 5A 18 E4 E1 A4 FF FE 2D 20 E9 E1 A4 FF FE 2D 28 A8 E1 A4 FF FE 2D 30 99 E1 A4 FF FE 2D"
.
hexToBytes
()
operator
fun
invoke
(
operator
fun
invoke
(
client
:
QQAndroidClient
,
client
:
QQAndroidClient
,
from
:
RequestPushNotify
from
:
RequestPushNotify
...
@@ -67,7 +68,7 @@ class MessageSvc {
...
@@ -67,7 +68,7 @@ class MessageSvc {
latestRambleNumber
=
20
,
latestRambleNumber
=
20
,
otherRambleNumber
=
3
,
otherRambleNumber
=
3
,
onlineSyncFlag
=
1
,
onlineSyncFlag
=
1
,
// serverBuf = from.serverBuf ?: EMPTY_BYTE_ARRAY,
// serverBuf = from.serverBuf ?: EMPTY_BYTE_ARRAY,
syncCookie
=
client
.
c2cMessageSync
.
syncCookie
,
syncCookie
=
client
.
c2cMessageSync
.
syncCookie
,
syncFlag
=
client
.
c2cMessageSync
.
syncFlag
,
syncFlag
=
client
.
c2cMessageSync
.
syncFlag
,
msgCtrlBuf
=
client
.
c2cMessageSync
.
msgCtrlBuf
,
msgCtrlBuf
=
client
.
c2cMessageSync
.
msgCtrlBuf
,
...
@@ -105,5 +106,16 @@ class MessageSvc {
...
@@ -105,5 +106,16 @@ class MessageSvc {
}.
toList
())
}.
toList
())
}
}
}
}
/**
* 被挤下线
*/
internal
object
PushForceOffline
:
PacketFactory
<
ForceOfflineEvent
>(
"MessageSvc.PushForceOffline"
)
{
override
suspend
fun
ByteReadPacket
.
decode
(
bot
:
QQAndroidBot
):
ForceOfflineEvent
{
discardExact
(
4
)
val
struct
=
this
.
decodeUniPacket
(
RequestPushForceOffline
.
serializer
())
return
ForceOfflineEvent
(
bot
,
title
=
struct
.
title
?:
""
,
tips
=
struct
.
tips
?:
""
)
}
}
}
}
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/OnlinePush.PbPushGroupMsg.kt
View file @
27dbfcfb
...
@@ -9,9 +9,9 @@ import kotlinx.serialization.protobuf.ProtoBuf
...
@@ -9,9 +9,9 @@ import kotlinx.serialization.protobuf.ProtoBuf
import
net.mamoe.mirai.contact.MemberPermission
import
net.mamoe.mirai.contact.MemberPermission
import
net.mamoe.mirai.message.GroupMessage
import
net.mamoe.mirai.message.GroupMessage
import
net.mamoe.mirai.qqandroid.QQAndroidBot
import
net.mamoe.mirai.qqandroid.QQAndroidBot
import
net.mamoe.mirai.qqandroid.network.protocol.data.proto.ImMsgBody
import
net.mamoe.mirai.qqandroid.network.protocol.data.proto.MsgOnlinePush
import
net.mamoe.mirai.qqandroid.network.protocol.packet.PacketFactory
import
net.mamoe.mirai.qqandroid.network.protocol.packet.PacketFactory
import
net.mamoe.mirai.qqandroid.network.protocol.packet.chat.data.ImMsgBody
import
net.mamoe.mirai.qqandroid.network.protocol.packet.chat.data.MsgOnlinePush
import
net.mamoe.mirai.qqandroid.utils.toMessageChain
import
net.mamoe.mirai.qqandroid.utils.toMessageChain
...
...
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/MessageQQA.kt
View file @
27dbfcfb
...
@@ -2,8 +2,8 @@ package net.mamoe.mirai.qqandroid.utils
...
@@ -2,8 +2,8 @@ package net.mamoe.mirai.qqandroid.utils
import
net.mamoe.mirai.data.ImageLink
import
net.mamoe.mirai.data.ImageLink
import
net.mamoe.mirai.message.data.*
import
net.mamoe.mirai.message.data.*
import
net.mamoe.mirai.qqandroid.network.protocol.
packet.chat.data
.ImMsgBody
import
net.mamoe.mirai.qqandroid.network.protocol.
data.proto
.ImMsgBody
import
net.mamoe.mirai.qqandroid.network.protocol.
packet.chat.data
.MsgSvc
import
net.mamoe.mirai.qqandroid.network.protocol.
data.proto
.MsgSvc
internal
fun
MessageChain
.
constructPbSendMsgReq
():
MsgSvc
.
PbSendMsgReq
{
internal
fun
MessageChain
.
constructPbSendMsgReq
():
MsgSvc
.
PbSendMsgReq
{
...
...
mirai-core-qqandroid/src/jvmTest/kotlin/test/JceDataClassGenerator.kt
View file @
27dbfcfb
package
test;
package
test;
import
net.mamoe.mirai.utils.cryptor.contentToString
import
java.io.File
import
java.io.File
import
java.lang.StringBuilder
fun
main
(){
fun
main
(){
val
var9
=
toJCEInfo
(
File
(
"/Users/jiahua.liu/Desktop/mirai/mirai-core-qqandroid/src/jvmTest/kotlin/test/GetFriendListReq"
).
readText
())
val
var9
=
toJCEInfo
(
println
(
"import kotlinx.serialization.SerialId\n"
+
File
(
"import kotlinx.serialization.Serializable\n"
+
"""
"import net.mamoe.mirai.qqandroid.io.JceStruct\n"
)
E:\Projects\QQAndroidFF\app\src\main\java\PushNotifyPack\RequestPushForceOffline.java
"""
.
trimIndent
()
).
readText
()
)
println
(
"import kotlinx.serialization.SerialId\n"
+
"import kotlinx.serialization.Serializable\n"
+
"import net.mamoe.mirai.qqandroid.io.JceStruct\n"
)
println
(
var9
.
toString
())
println
(
var9
.
toString
())
}
}
...
...
mirai-core-qqandroid/src/jvmTest/kotlin/test/SmsTest.kt
deleted
100644 → 0
View file @
a120f3d4
package
test
import
net.mamoe.mirai.utils.cryptor.contentToString
import
net.mamoe.mirai.utils.io.hexToBytes
import
net.mamoe.mirai.utils.io.readTLVMap
import
net.mamoe.mirai.utils.io.toIoBuffer
fun
main
(){
//server to client
val
s2c
=
"""
00 08 00 08 00 00 00 00 08 04 00 00 01 04 00 24 41 75 43 4A 64 56 72 56 34 30 79 67 67 2B 41 4D 59 30 42 31 4B 58 64 44 70 68 61 49 4C 41 67 59 65 41 3D 3D 01 16 00 0E 00 08 F7 FF 7C 00 01 04 00 01 5F 5E 10 E2 01 74 00 61 45 47 39 4A 30 72 79 2D 42 46 57 2D 64 36 39 76 4B 44 62 39 47 5F 61 67 6C 7A 71 46 61 36 35 34 47 33 41 4B 77 63 6D 58 78 61 71 6A 34 31 45 36 76 4D 6C 44 4A 50 68 42 41 6D 4D 71 61 65 71 6B 58 50 43 2D 52 5A 51 34 4D 41 38 54 62 63 48 6D 39 53 66 57 37 57 59 4E 6A 52 4C 52 4B 36 7A 56 6B 01 7A 00 04 00 00 00 09 01 97 00 01 00
"""
.
trimIndent
().
hexToBytes
().
toIoBuffer
().
readTLVMap
()
//client to server
val
c2s
=
"00 08 00 08 00 00 00 00 08 04 00 00 01 04 00 24 41 69 4E 54 75 7A 50 2F 48 6D 5A 30 74 37 64 54 71 57 7A 67 79 35 54 4C 77 39 55 69 53 59 69 45 71 67 3D 3D 01 16 00 0E 00 08 F7 FF 7C 00 01 04 00 01 5F 5E 10 E2 01 74 00 61 45 66 43 39 46 4B 63 70 47 30 5F 5A 55 41 4F 6A 4E 4C 6F 72 56 30 77 66 4B 67 49 4D 33 33 6E 58 44 37 5F 4B 61 75 56 6D 4F 6F 54 68 6A 64 38 62 72 44 64 69 5F 62 48 51 5A 66 37 6E 4F 6B 78 43 35 6E 47 4E 38 6B 6A 35 39 6D 37 32 71 47 66 78 4E 76 50 51 53 39 33 66 37 6B 72 71 66 71 78 63 5F 01 7A 00 04 00 00 00 09 01 97 00 01 00"
.
hexToBytes
().
toIoBuffer
().
readTLVMap
()
println
(
get_mpasswd
())
println
(
s2c
.
contentToString
())
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment