Commit Graph

301 Commits

Author SHA1 Message Date
Dylan K. Taylor
b2c0bba86e Merge branch 'release/3.2' into mcpe-1.6-master 2018-08-29 17:27:48 +01:00
Dylan K. Taylor
e09087de26 Fix version numbers 2018-08-29 16:27:01 +01:00
Dylan K. Taylor
f830eddd59 Merge branch 'mcpe-1.6' into mcpe-1.6-master 2018-08-21 17:55:48 +01:00
Dylan K. Taylor
9ca38ba868 Protocol changes for 1.6.0.8 + resource packs "fix" 2018-08-21 17:36:55 +01:00
Dylan K. Taylor
424c50e1e9 Protocol changes for 1.6.0.5, minus Entity->Actor rename 2018-08-21 17:36:29 +01:00
Dylan K. Taylor
566f3c6262 AvailableCommandsPacket: stricter decode and handling 2018-08-21 17:14:54 +01:00
Dylan K. Taylor
0d05dcec08 AvailableCommandsPacket: deal with dynamic enums
somehow I missed this, thanks @NiclasOlofsson for pointing it out
2018-08-21 17:14:53 +01:00
Dylan K. Taylor
986077e03c Protocol changes for 1.6.0.1 2018-08-21 17:14:53 +01:00
Dylan K. Taylor
078a2486b5 Merge branch 'release/3.2' 2018-08-11 20:00:01 +01:00
Dylan K. Taylor
a8811ab2b3 Fixed 1.5.0 PlayerSkinPacket protocol change that somehow disappeared
I am 100% sure I committed this change, but it isn't in the merge...
2018-08-11 19:59:44 +01:00
Dylan K. Taylor
dbf5d9e985 Merge branch 'release/3.2' 2018-08-11 19:37:55 +01:00
Dylan K. Taylor
974583a853 Merge branch 'release/3.0' into release/3.1 2018-08-11 19:37:10 +01:00
Dylan K. Taylor
03f8fe62d4 Fixed structure of GuiDataPickItemPacket
this changed in 1.2.0.7 beta and I didn't spot it.
2018-08-11 19:36:53 +01:00
Dylan K. Taylor
f626b9e8a0 Initial mass migration to session handlers
This introduces several new session handlers, splitting up session handling into several new states:

- Login: Only allows handling the LoginPacket. This is the only time LoginPacket can be sent, and it'll be discarded when sent at any other time.
- Resource packs: Handles only the resource packs sequence (downloading packs and such). This is the only time ResourcePackClientResponse and ResourcePackChunkRequest will be handled.
- Pre-spawn: Only chunk radius requests are accepted during this state.

SimpleNetworkHandler handles all the "rest" of the logic that hasn't yet been separated out into their own dedicated handlers. There's also a NullNetworkHandler which discards all packets while it's active.

This solves a large number of issues with the security of the login sequence. It solves a range of possible DoS attacks and crashes, while also allowing great code simplification and cleanup.
2018-07-20 17:09:04 +01:00
Dylan K. Taylor
08621604cd PacketPool: remove redundant comment
this was added to signify that these were normal, while BatchPacket was a hack. Since this has now been corrected, there's no need for the comment.
2018-07-20 12:36:44 +01:00
Dylan K. Taylor
cdcafb1e75 PacketPool: Properly deal with varint packet IDs now that BatchPacket is gone 2018-07-20 12:36:44 +01:00
Dylan K. Taylor
64ecc373be Split up session base logic and packet handling
this will allow for mutable packet handlers which can be used to cleanly implement multi-stage game sessions.
2018-07-20 12:36:44 +01:00
Dylan K. Taylor
bdd9a7eb52 Kill BatchPacket, clean up batching related things
DataPacketSendEvent and DataPacketReceiveEvent will no longer capture BatchPackets
In most places strings are now used instead of DataPackets, to remove limitations on what data can be sent to a network interface
Removed CraftingManager's cyclic dependency on Server

There is a lot more work to do aside from this, but this commit is intended to clean up what is necessary to fix the handling of BatchPacket.
2018-07-20 12:36:44 +01:00
Dylan K. Taylor
424e9f4a49 Merge branch 'release/3.2' 2018-07-20 11:30:46 +01:00
Dylan K. Taylor
dd8499e202 Merge branch 'release/3.0' into release/3.1 2018-07-20 11:30:27 +01:00
Dylan K. Taylor
124ebf69c5 PlayStatusPacket: default to current protocol if not specified 2018-07-20 11:29:40 +01:00
Dylan K. Taylor
bc9a387b0b Fixed merge error 2018-07-17 18:46:27 +01:00
Dylan K. Taylor
df3870a112 Merge branch 'release/3.2' 2018-07-17 18:35:43 +01:00
Dylan K. Taylor
b5dcdea6d8 Protocol changes for 1.5.0 "release"
what a piece of shit this version is...
2018-07-11 10:00:15 +01:00
Dylan K. Taylor
b23c947060 Merge branch 'release/3.1' 2018-07-06 13:12:22 +01:00
Dylan K. Taylor
ee7c838040 LoginPacket: barf on finding extraData multiple times
this fixes a potential exploit where clients could append JWTs signed with their own keys to the end of the chain containing fake XUID/UUID/username which would then overwrite the legitimate ones in earlier links.
This stems from the fact that the final link of the vanilla chain contains the client's own pubkey, so the client is able to append its own data to the end of the chain.
2018-07-06 12:54:43 +01:00
Dylan K. Taylor
950465d283 as always, missed one - I blame PhpStorm 2018-07-05 13:35:04 +01:00
Dylan K. Taylor
2bba3a0805 Apply typehints to pocketmine\network\mcpe\protocol namespace
this is pulled from network-nuke in order to reduce the size of the diff.
2018-07-05 13:19:15 +01:00
Dylan K. Taylor
05af87e1d4 Strip empty lines at the end of classes 2018-06-11 13:19:23 +01:00
Dylan K. Taylor
3a1df1d99e LevelSoundEventPacket: added STOP_RECORD constant
this isn't actually a sound and as such doesn't have a stringy ID, so the script didn't see it.
2018-05-25 17:56:05 +01:00
Dylan K. Taylor
8ccd13319c LevelSoundEventPacket: update constants
now with whitespace gaps generated because apparently some are missing... ugh!
2018-05-25 17:27:31 +01:00
Dylan K. Taylor
c9ed517063 Merge branch 'release/alpha12' 2018-05-22 18:50:24 +01:00
Dylan K. Taylor
28b0f5f86a UpdateBlockSyncedPacket: rename field 2018-05-22 18:49:41 +01:00
Dylan K. Taylor
e87e2d4e52 UpdateBlockSyncedPacket: fix field visibility 2018-05-22 18:49:41 +01:00
Dylan K. Taylor
c285295037 Merge branch 'release/alpha12' 2018-05-17 18:40:24 +01:00
Dylan K. Taylor
f6e71d8296 Protocol changes for 1.4.0 release
this is nearly the same as 1.5.0.0, except the skin packet premium boolean has been dropped.

This isn't production ready yet because the blockID table needs updating (waiting on MrARM to fix his script for that).
2018-05-17 10:36:16 +01:00
Dylan K. Taylor
b333a0e24c PlayStatusPacket: add new constant 2018-05-17 10:33:18 +01:00
Dylan K. Taylor
295016cbc1 DisconnectPacket: fix decoding 2018-05-02 16:56:48 +01:00
Dylan K. Taylor
a014b44b69 New PlayerActionPacket constants
anyone know what these are for? something to do with riptide but I didn't manage to find out what...
2018-05-02 12:03:29 +01:00
Dylan K. Taylor
c7544c1d25 AvailableCommandsPacket: update arg types 2018-05-02 12:03:29 +01:00
Dylan K. Taylor
eb28622823 Protocol changes for 1.5.0.0
this feels so strange to type... can we ditch the versioning system already?
2018-05-02 12:03:29 +01:00
Dylan K. Taylor
68494f1c0d CraftingDataPacket: decode chemistry recipes correctly 2018-05-02 12:03:29 +01:00
Dylan K. Taylor
d384df1f2e fixed some mistakes in the protocol 2018-05-02 12:03:29 +01:00
Dylan K. Taylor
fe8102c062 Silence another stupid spam bug 2018-05-02 12:03:29 +01:00
Dylan K. Taylor
8b15d85469 bump versions for 1.2.20.1 beta 2018-05-02 12:03:29 +01:00
Dylan K. Taylor
db432bb024 Found some things in new packets 2018-05-02 12:03:29 +01:00
Dylan K. Taylor
91486a23a5 some changes for 1.2.14.2 beta 2018-05-02 12:03:29 +01:00
Dylan K. Taylor
d8f4dde5f3 PlayerHotbarPacket: remove unused import 2018-05-01 14:09:17 +01:00
Dylan K. Taylor
08d8adae5b fixup some ResourcePack TODOs 2018-04-07 13:09:44 +01:00
Dylan K. Taylor
8d988af7db EntityLink: added type constants 2018-04-07 11:35:36 +01:00