7925 Commits

Author SHA1 Message Date
Dylan K. Taylor
c5bf746e4c typo 2018-07-21 14:45:22 +01:00
Dylan K. Taylor
7d8624b12f ResourcePacksSessionHandler: clean up error reporting 2018-07-21 14:44:54 +01:00
Dylan K. Taylor
da876cc8f3 ResourcePacksSessionHandler: Prevent clients requesting the same chunk more than once
Currently this can be used to attack the server by spamming requests for the same chunks forever. This commit prevents that by disconnecting the client if a chunk is requested more than 1 time. It is not necessary to allow more than 1 request per chunk, since RakNet should ensure that these are always delivered correctly.
2018-07-21 14:31:34 +01:00
Dylan K. Taylor
d6e61e3e00 ResourcePacksSessionHandler: Account for out-of-bounds chunk requests 2018-07-21 14:19:24 +01:00
Dylan K. Taylor
b9cd96f6e0 ResourcePacksSessionHandler: remove useless brackets 2018-07-21 13:36:20 +01:00
Dylan K. Taylor
25a5394152 Merge phase 1 of network refactor - session handler rewrite
There are further changes that need to be done yet, but this section is now ready for showtime.
2018-07-21 10:03:17 +01:00
Dylan K. Taylor
bfc372c6fb Merge branch 'release/3.2' 2018-07-21 09:53:50 +01:00
Dylan K. Taylor
90bf94f8f7 Merge branch 'release/3.1' into release/3.2 2018-07-21 09:53:41 +01:00
Dylan K. Taylor
5e13e2e777 Merge branch 'release/3.0' into release/3.1 2018-07-21 09:53:31 +01:00
Dylan K. Taylor
1ef6f5d166 ZippedResourcePack: Make manifest parse errors less useless 2018-07-21 09:53:16 +01:00
Dylan K. Taylor
c257a791e1 ResourcePacksSessionHandler: move max pack chunk size to const 2018-07-21 09:37:15 +01:00
Dylan K. Taylor
59f6821c29 Allow parameterizing ResourcePackManager to session handler
this will open the way (in the future) for custom managers to be used, instead of a global thing.
2018-07-20 20:08:12 +01:00
Dylan K. Taylor
eccc249009 KillCommand: clean up old shitcode 2018-07-20 19:44:41 +01:00
Dylan K. Taylor
30c044f028 Unwrap more code from packet handlers 2018-07-20 18:48:46 +01:00
Dylan K. Taylor
015ee90571 Split PlayerActionPacket handling into two classes, death is now a session state 2018-07-20 18:11:29 +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
97a1483f75 Player: remove useless crap from "constructor"
1. this isn't really the player constructor
2. this shit isn't needed until we start using the player as an actual player
2018-07-20 15:38:53 +01:00
Dylan K. Taylor
a4939b6bf1 Player: re-structure a whole bunch of construction mess
This consolidates the Player entity construction and makes it more organized and consistent. There is of course a lot more work to do apart from this on player construction.
2018-07-20 15:34:47 +01:00
Dylan K. Taylor
7633136a86 Player: move max players check to somewhere that makes sense 2018-07-20 13:22:08 +01:00
Dylan K. Taylor
3cd105ff33 Remove remnants of needACK functionality
this has been broken for a long time and hasn't been used for even longer.
2018-07-20 13:07:06 +01:00
Dylan K. Taylor
0fecb79add Player: separate some PlayerActionPacket handling logic out into their own functions
these are public, because later on the session handler will be calling these instead of the player itself.
2018-07-20 13:02:36 +01:00
Dylan K. Taylor
aae19d45b7 Player: remove useless handleDataPacket() leftover 2018-07-20 12:41:16 +01:00
Dylan K. Taylor
57a86d9ed7 Player: remove useless InteractPacket handler
all the things we cared about in here don't exist anymore, so there's no sense in the handler still existing. It can be restored when we want to use the things it still does.
2018-07-20 12:39:48 +01:00
Dylan K. Taylor
25cfcada26 Player: clean up container close handling 2018-07-20 12:36:44 +01:00
Dylan K. Taylor
e16f20affa NetworkSession: added getHandler() and setHandler(), SessionHandler->setUp() now not useless 2018-07-20 12:36:44 +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
85647c03bf Move IP/port to NetworkSession 2018-07-20 12:36:43 +01:00
Dylan K. Taylor
f969f3b77f Flatten NetworkSession hierarchy in preparation for refactor 2018-07-20 12:36:43 +01:00
Dylan K. Taylor
bf4c6e4c2b Merge branch 'release/3.2' 2018-07-20 12:21:56 +01:00
Dylan K. Taylor
522ef042a7 yet another empty merge... this is tiresome 2018-07-20 12:21:49 +01:00
Dylan K. Taylor
4be36914d6 back to dev 2018-07-20 12:21:15 +01:00
Dylan K. Taylor
e3ef1ecb30 another empty merge 2018-07-20 12:20:54 +01:00
Dylan K. Taylor
dbaf7287bc back to dev 2018-07-20 12:20:24 +01:00
Dylan K. Taylor
3640062142 disable dev flag 3.1.1 2018-07-20 12:12:26 +01:00
Dylan K. Taylor
9af70283fd Empty merge 2018-07-20 12:11:58 +01:00
Dylan K. Taylor
b3b240e25b disable dev flag 3.0.8 2018-07-20 12:05:14 +01:00
Dylan K. Taylor
f77ab468e3 Merge branch 'release/3.2' 2018-07-20 11:57:21 +01:00
Dylan K. Taylor
76ee6bc298 Merge branch 'release/3.1' into release/3.2 2018-07-20 11:57:13 +01:00
Dylan K. Taylor
b18872fbc6 Merge branch 'release/3.0' into release/3.1 2018-07-20 11:57:06 +01:00
Dylan K. Taylor
2b30ef1671 Revert "Living: fix knockback condition, take 2"
This reverts commit 0081e30a896a730f9598353353f6ee258803850e.

The logic introduced by this commit is correct in MC JAVA 1.9+. Unfortunately, nobody likes 1.9+ for combat.
Some testing in MCPE vanilla made it apparent that this logic isn't correct for MCPE. The old logic is correct for pre-1.9 knockback.
2018-07-20 11:55:10 +01:00
Dylan K. Taylor
424e9f4a49 Merge branch 'release/3.2' 2018-07-20 11:30:46 +01:00
Dylan K. Taylor
04f20c703c Merge branch 'release/3.1' into release/3.2 2018-07-20 11:30:39 +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
1144620f2b Level: minor de-spaghettification of chunk requesting
Now the Level tells the player to request chunks on tick, instead of the server doing it.
2018-07-18 16:49:58 +01:00
Dylan K. Taylor
e57dd3e8ba Merge branch 'release/3.2' 2018-07-18 15:14:41 +01:00
Dylan K. Taylor
efe4b0cd3a Merge branch 'release/3.1' into release/3.2 2018-07-18 15:14:34 +01:00