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

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 RCONClientCache

  • Allow customization of keep alive messages, reconnect parameters, and command handling for AsyncClientConnector using ConnectorConfig and AsyncCommander

  • Add send/receive support for UTF-8 encoding

    Despite the BattlEye RCON protocol specifying 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.index not 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

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

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 name parameter from AsyncRCONClient

    This attribute is probably no longer necessary for logging purposes.

Bug Fixes

  • Fix AsyncRCONClient.wait_for() hanging when the predicate returns False

  • Fix potential InvalidStateError when a command times out and receives a response at the same time

  • Fix protocol not resetting its own state when an error occurs

  • Fix protocol silently failing due to an OSError (GH-2)

  • 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

Miscellaneous

v0.2.0

Breaking Changes

New Features

Bug Fixes

  • Fix RuntimeError when sending a command fails on the first attempt

  • Fix protocol hanging indefinitely when the server times out

  • Fix temporary listeners not being removed after they are invoked

  • Fix AttributeError when protocol closes before having connected

  • Fix potential asyncio.CancelledError when calling AsyncRCONClient.send_command()

  • Fix protocol parsing messages from addresses other than the connected server

  • Fix protocol not acknowledging messages when reconnecting

  • Fix on_command event potentially being called more than once for multiple responses to the same command

Miscellaneous

v0.1.0

New Features

Bug Fixes

Miscellaneous

v0.0.1

This is the first version of berconpy, providing the initial implementation for the AsyncRCONClient, Packet, and RCONClientDatagramProtocol classes.