Changelog¶
v2.0.0¶
This is a major rewrite of the library to increase the flexibility and re-usability of components. Many new abstractions have been introduced between the protocol, I/O layers, and the client.
Breaking Changes¶
Packetand its subclasses are now only available through the berconpy.protocol packagePacket.messageproperty now returns bytesPacket.from_bytes()no longer raisesIndexErrorServerCommandPacketnow raisesValueErrorwhentotalis 0 orindexis out of boundsAsyncRCONClient.client_idhas been renamed toadmin_idRCONClientDatagramProtocolis now replaced withAsyncClientConnectorThe
protocol_clsparameter forAsyncRCONClienthas been replaced withprotocoland must take anAsyncClientProtocolinstance
New Features¶
Add Sans-I/O client and server implementations of the RCON protocol:
Add Sans-I/O base classes, inherited by their original asyncio components:
Allow customization of the client cache by using a subclass of
RCONClientCacheAllow customization of keep alive messages, reconnect parameters, and command handling for
AsyncClientConnectorusingConnectorConfigandAsyncCommanderAdd send/receive support for UTF-8 encoding
Despite the
BattlEye RCON protocolspecifying that payloads be encoded in ASCII, RCON servers are willing to send UTF-8 encoded text back. As such, this library will begin processing strings in UTF-8.Improve validation of server responses to commands
Indexes must be within range
Indexes must not be repeated
Total must be consistent across associated packets
Bug Fixes¶
Fix
Ban.indexnot actually being stored as an integer
Miscellaneous¶
Show full traceback for malformed data being received when using DEBUG logging level
Add this changelog to the documentation
v1.1.1¶
Bug Fixes¶
Fix
AttributeErrorwhen attempting to convert aBaninstance into a string
Miscellaneous¶
Rename the Getting Started page to Introduction
Add section about logging in the Introduction guide
Clean up table of contents
Fix docs/ Makefile building in the wrong directory
v1.1.0¶
Bug Fixes¶
Fix the user’s current task being cancelled when
AsyncRCONClient.close()is called
Documentation¶
Add Getting Started guide
Add various clarifications and examples throughout the API reference
v1.0.0.post1¶
This version comes with a new online documentation providing an Event Reference and API reference for the various classes and methods in the library.
v1.0.0¶
This is the first release to be published on PyPI!
Breaking Changes¶
Cancel the current task when the connection stops
This prevents the body of
async with client.connect():continuing to run, even if the client is no longer running.Remove the
nameparameter fromAsyncRCONClientThis attribute is probably no longer necessary for logging purposes.
Bug Fixes¶
Fix
AsyncRCONClient.wait_for()hanging when the predicate returnsFalseFix potential
InvalidStateErrorwhen a command times out and receives a response at the same timeFix protocol not resetting its own state when an error occurs
Fix BattlEye kicks for players without GUIDs not being parsed correctly
Miscellaneous¶
Tweak logging levels used during protocol’s lifetime
Wait for three seconds before applying exponential backoff during a connection (re)attempt
v0.2.1¶
New Features¶
Add facade methods to
AsyncRCONClient:
Miscellaneous¶
Minor docstring tweaks for
AsyncRCONClient
v0.2.0¶
Breaking Changes¶
Refactor the
Packetinto refinement types:These classes improve type inference, reduces their constructor signatures, and help self-document what kind of packets are expected to be sent around each internal method.
Packet.from_bytes()can now raiseIndexErrorPacketconstructor now raisesValueErrorwhen exceeding max packet size
New Features¶
Use sequence number from server messages to avoid re-triggering
on_messageevents in case of network instabilityAdd
berconpy.extnamespace package for third-party extension supportAdd berconpy.ext.arma extension containing an
AsyncArmaRCONClientsubclass with methods specific to the Arma game seriesAdd new events:
on_admin_login(admin_id, addr)on_player_connect(player)on_player_guid(player)on_player_verify_guid(player)on_player_disconnect(player_id, name)on_player_kick(player, reason)on_admin_message(admin_id, channel, message)on_admin_announcement(admin_id, message)on_admin_whisper(player, admin_id, message)on_player_message(player, channel, message)
Add
Playerclass and player cache to the client, accessed with theAsyncRCONClient.playersproperty and theget_player()methodAfter successfully connecting once,
AsyncRCONClientwill indefinitely attempt to reconnect when the connection is lostExponential backoff to reduce excessive connection attempts
New exceptions have been added to replace
ValueErrorandRuntimeErrorin various locations:Add
AsyncRCONClient.client_idpropertyAdd new methods to
AsyncRCONClient:Add a
Bandataclass which is returned byAsyncRCONClient.fetch_bans()
Bug Fixes¶
Fix
RuntimeErrorwhen sending a command fails on the first attemptFix protocol hanging indefinitely when the server times out
Fix temporary listeners not being removed after they are invoked
Fix
AttributeErrorwhen protocol closes before having connectedFix potential
asyncio.CancelledErrorwhen callingAsyncRCONClient.send_command()Fix protocol parsing messages from addresses other than the connected server
Fix protocol not acknowledging messages when reconnecting
Fix
on_commandevent potentially being called more than once for multiple responses to the same command
Miscellaneous¶
Add logging configuration to repl.py
Add repr to
AsyncRCONClient
v0.1.0¶
New Features¶
Finish implementation for
AsyncRCONClient.wait_for()
Bug Fixes¶
Fix
AsyncRCONClient.send_command()returningbytesinstead ofstr
Miscellaneous¶
Add repl.py example
v0.0.1¶
This is the first version of berconpy, providing the initial implementation
for the AsyncRCONClient, Packet,
and RCONClientDatagramProtocol classes.