• Telodendria-0_2_0 cfba96edee

    Telodendria v0.2.0 Pre-Release

    jordan released this 2023-03-06 19:44:53 -05:00 | 338 commits to master since this release

    This release is focused on providing a decent amount of the client authentication
    API. You can now create accounts on a Telodendria homeserver, and log in to
    get access tokens.


    • Added the basic form of the user registration API. If registration is enabled
      in the configuration file, clients can now register for Matrix accounts.
    • Added the basic form of the user login API. Clients can now log in to
      their accounts and generate access tokens to be used to authenticate requests.
    • Added the basic form of the user interactive authentication API, which can be used
      by endpoints that the spec says requires it. Currently, it only implements the
      dummy and password stages, but more stages, such as the registration token stage,
      will be added in future releases.
    • Added a simple landing page that allows those setting up Telodendria to
      quickly verify that it is accessible where it needs to be.
    • Added the static login page for clients that don't support regular login.


    • Improved HTTP request logging by removing unnecessary log entries and making
      errors more specific.
    • Leaked memory is now hexdump-ed out to the log if the log level is set to debug.
      This greatly simplifies debugging, because developers can now see exactly what the
      contents of the leaked memory are. Note that in some circumstances, this memory
      may contain sensitive data, such as access tokens, usernames, or passwords. However,
      Telodendria should not be leaking memory at all, so if you encounter any leaks,
      please report them.
    • Refactored a lot of the code and accompanying documentation to be more readable and

    Bug Fixes

    • Fixed a memory leak that would occur when parsing an invalid JSON object.
    • Fixed an edge case where HTTP response headers were being sent before they were
      properly set, causing the server to report a status of 200 even when that wasn't the
      desired status.
    • Fixed a few memory leaks in the HTTP parameter decoder that would occur in some
      edge cases.
    • Fixed an "off-by-one" error in the HTTP server request parser that would prevent
      GET parameters from being parsed.
    • Fixed the database file name descriptor to prevent directory traversal attacks
      by replacing special characters with safer ones.
    • Fixed a memory leak that would occur when closing a database that contains
      cached objects.
    • Fixed a memory leak that would occur when deleting database objects.
    • Fixed a few non-fatal memory warnings that would show up as a result of passing a
      constant string into certain functions.


    • Fixed a bug in td that caused cvs to be invoked in the wrong directory when
      tagging a new release.
    • Added support for environment variable substitution in all site files. This
      makes it easier to release Telodendria versions.
    • Fix whitespace issues in various shell scripts.
    • Fixed the debug log output so that it only shows the file name, not the
      entire file path in the repository.
    • Updated the copyright year in the source code and compiled output.
    • Switched the -std=c89 flag to -ansi, as -ansi might be more supported.
    • Fixed the -v flag. It now sets the log level to debug as soon as possible to
      allow debugging configuration file parsing if necessary.

    ... And many more bug fixes and feature additions! Too much has changed to make a
    comprehensive change log. A lot of things have been done under the hood to make
    Telodendria easier to develop in the future. Please test the current functionality,
    and report bugs.

    The following platforms have been known to compile and run Telodendria:

    • OpenBSD
    • Linux (GNU and non-GNU)
    • Windows (via Cygwin)
    • FreeBSD
    • NetBSD
    • DragonFlyBSD
    • Haiku OS
    • Android (via Termux)

    Telodendria is about being portable; if you compile it on an obscure operating system,
    do let us know about it!