libgnunetchat

library for GNUnet Messenger
Log | Files | Refs | README | LICENSE

commit 42905b5dc34ed6ecd7c45c06973230cae59e4636
parent e4ef5f41ace530d61963fad78d40664e2c5e199c
Author: Jacki <jacki@thejackimonster.de>
Date:   Wed,  6 Mar 2024 23:06:00 +0100

Update changelog and other documents

Signed-off-by: Jacki <jacki@thejackimonster.de>

Diffstat:
MChangeLog | 16++++++++++++++++
MHOWTO.md | 6++++++
MREADME.md | 15++++++++-------
3 files changed, 30 insertions(+), 7 deletions(-)

diff --git a/ChangeLog b/ChangeLog @@ -1,3 +1,19 @@ +## Version 0.3.0 +* This release requires the GNUnet Messenger Service 0.3! +* It allows ticket management for tickets sent from contacts. +* Deletions or other updates of messages result in separate event calls. +* It is possible to tag messages or contacts. +* Invitations can be rejected via tag messages. +* Contacts can be blocked or unblocked which results in filtering messages. +* Processing of messages is ensured by enforcing logical order of callbacks while querying old messages. +* Private messages are readable to its sender. +* Messages provide information about its recipient. +* Logouts get processed on application level on exit. +* Delays message callbacks depending on message kind (deletion with custom delay). +* New debug tools are available to visualize the message graph. +* Add test case for message receivement. +* Multiple issues are fixed. + ## Version 0.1.3 * Use Meson as build system instead of GNU Automake * Fix issues regarding inclusion of private headers diff --git a/HOWTO.md b/HOWTO.md @@ -43,12 +43,16 @@ Most capabilities like sending text messages, files and such will be handled by There are two functionalities which differentiate between direct chats and group chats. Groups allow you to list all of their current members with `GNUNET_CHAT_group_iterate_contacts()` and you can invite any contact using `GNUNET_CHAT_group_invite_contact()`. Inviting people via your contacts will automatically send them an encrypted invite message through the common chat with least amount of other members (this is likely to be the direct chat with that given contact). But even if the invitation will be sent via another common group chat, you can be sure that it is encrypted and others won't be able to read it. +If the recipient of an invitation rejects it, you will receive a message to be notified about it. However it's application and user specific whether a contact needs to accept or reject any invitation. + ## Contacts Anyone in your contacts needs to share at least one chat with you. This can either be a group chat or a direct chat. All contacts can be listed via `GNUNET_CHAT_iterate_contacts()`. If you want to get rid of a specific contact you can call `GNUNET_CHAT_contact_delete()` which will at least close the direct chat with them. But you would need to drop all common group chats to remove them fully from your contacts list. Each contact will provide a context for a direct chat with them. But it's recommend to check its status first. If a contact is only part of your contacts list because of a common group, there is no direct chat established. That means you will first need to invite them to a direct chat. The function `GNUNET_CHAT_context_request()` will take care of that and change the contexts status after success and depending on the acceptance of your invitation. Keep in mind that all requests and invitations for chats with other people can be ignored by them. Any chat is designed opt-in. +If you don't like to receive further messages from any contact, it is possible to block them via `GNUNET_CHAT_contact_set_blocked()`. This will mark the contact in every common chat as blocked and it's fully reversible at any time. Additionally you can tag or untag contacts via `GNUNET_CHAT_contact_tag()` and `GNUNET_CHAT_contact_untag()` respectively. This is a feature to individually group contacts. + ## Contexts As mentioned under [Contacts](#Contacts) each context will have a status if it's ready to be used. If that is possible a context provides many features typical for a modern chat application. For example you can send text messages, files and read receipts for other messages. A context will also list you all received and sent messages with `GNUNET_CHAT_context_iterate_messages()` as well as files via `GNUNET_CHAT_context_iterate_files()` accordingly. @@ -63,6 +67,8 @@ This also means that a user can not disable to receiving "read receipts". But th A special feature of the GNUnet Messenger service is that messages can be deleted despite the decentralized networking structure behind the front-end. An application can request the deletion of any message with a custom delay to operate using `GNUNET_CHAT_message_delete()`. This will operate differently depending on the original sender of the message. If the current account is the original sender, a deletion message will be sent into the chat requesting all members to delete its content from storage. Obviously it is trust required that other systems will enforce this demand on permission but the default implementation in GNUnet will just do as said as long the permission to delete the message by the sender can be verified. +If you want to tag any message in a chat, you can do that via `GNUNET_CHAT_context_send_tag()` which will send a specific message to add a tag to another message. That tag can be deleted later on as any other generic message. + Last thing to add about messages is that there will be kinds of messages which do not have any counterpart in the GNUnet Messenger service. They will usually represent internal events or information of the API. This allows the application to deal with warnings, refresh- or login-events in a similar way as with other received information from the chats. ### Files diff --git a/README.md b/README.md @@ -8,13 +8,14 @@ This library is an abstraction layer using the client API from different [GNUnet Implementing all those typical features of a messenger application requires more than only a service to exchange messages. Therefore this library utilizes multiple different services provided by GNUnet to achieve this goal: - - [ARM](https://docs.gnunet.org/handbook/gnunet.html#Automatic-Restart-Manager-_0028ARM_0029) to automatically start all required services without manual setup from a user - - [FS](https://docs.gnunet.org/handbook/gnunet.html#File_002dsharing-_0028FS_0029-Subsystem) to upload, download and share files via the network in a secure way - - [GNS](https://docs.gnunet.org/handbook/gnunet.html#GNU-Name-System-_0028GNS_0029) to resolve published records of open lobbies, potentially exchanging contact credentials and opening a chat - - [IDENTITY](https://docs.gnunet.org/handbook/gnunet.html#IDENTITY-Subsystem) to create, delete and manage accounts as well as providing information to verify another users identity - - [MESSENGER](https://docs.gnunet.org/handbook/gnunet.html#MESSENGER-Subsystem) to open, close and manage any kind of chats as well as exchanging messages in a decentralized and secure way with other users - - [NAMESTORE](https://docs.gnunet.org/handbook/gnunet.html#NAMESTORE-Subsystem) to store contact and group chat information locally and to publish records of lobbies accessible via GNS - - [REGEX](https://docs.gnunet.org/handbook/gnunet.html#REGEX-Subsystem) to publish peer information allowing other peers to quickly form a public group chat around a certain topic + - [ARM](https://docs.gnunet.org/doxygen/d4/d56/group__arm.html) to automatically start all required services without manual setup from a user + - [FS](https://docs.gnunet.org/doxygen/d1/db9/group__fs.html) to upload, download and share files via the network in a secure way + - [GNS](https://docs.gnunet.org/doxygen/d5/d60/group__GNS.html) to resolve published records of open lobbies, potentially exchanging contact credentials and opening a chat + - [IDENTITY](https://docs.gnunet.org/doxygen/d0/d2f/group__identity.html) to create, delete and manage accounts as well as providing information to verify another users identity + - [MESSENGER](https://docs.gnunet.org/doxygen/d6/d08/group__messenger.html) to open, close and manage any kind of chats as well as exchanging messages in a decentralized and secure way with other users + - [NAMESTORE](https://docs.gnunet.org/doxygen/d3/da4/group__namestore.html) to store contact and group chat information locally and to publish records of lobbies accessible via GNS + - [RECLAIM](https://docs.gnunet.org/doxygen/de/dea/group__reclaim.html) to claim and issue tickets regarding contacts and share private information with selected users + - [REGEX](https://docs.gnunet.org/doxygen/d0/d57/group__regex.html) to publish peer information allowing other peers to quickly form a public group chat around a certain topic ## Build & Installation