Mikhail
a22017ee8f
Sketch x tag internals
2024-05-15 13:05:24 +02:00
Nikita Vilunov
b2a06ef984
xmpp: add x-user element to muc presence response
2024-05-14 03:21:06 +02:00
Nikita Vilunov
89918d9de1
xmpp: add item-not-found error condition to room disco#info iq
2024-05-13 16:42:52 +02:00
Nikita Vilunov
26720a2a08
core: separate the model from the logic implementation ( #66 )
...
This separates the core in two layers – the model objects and the `LavinaCore` service. Service is responsible for implementing the application logic and exposing it as core's public API to projections, while the model objects will be independent of each other and responsible only for managing and owning in-memory data.
The model objects include:
1. `Storage` – the open connection to the SQLite DB.
2. `PlayerRegistry` – creates, stores refs to, and stops player actors.
3. `RoomRegistry` – manages active rooms.
4. `DialogRegistry` – manages active dialogs.
5. `Broadcasting` – manages subscriptions of players to rooms on remote cluster nodes.
6. `LavinaClient` – manages HTTP connections to remote cluster nodes.
7. `ClusterMetadata` – read-only configuration of the cluster metadata, i.e. allocation of entities to nodes.
As a result:
1. Model objects will be fully independent of each other, e.g. it's no longer necessary to provide a `Storage` to all registries, or to provide `PlayerRegistry` and `DialogRegistry` to each other.
2. Model objects will no longer be `Arc`-wrapped; instead the whole `Services` object will be `Arc`ed and provided to projections.
3. The public API of `lavina-core` will be properly delimited by the APIs of `LavinaCore`, `PlayerConnection` and so on.
4. `LavinaCore` and `PlayerConnection` will also contain APIs of all features, unlike it was previously with `RoomRegistry` and `DialogRegistry`. This is unfortunate, but it could be improved in future.
Reviewed-on: lavina/lavina#66
2024-05-13 14:32:45 +00:00
Nikita Vilunov
d1a72e7978
move repo methods into submodules and clean up warnings
2024-05-10 23:50:34 +02:00
Nikita Vilunov
6749103726
scalability: initial support for remote rooms ( #61 )
...
Reviewed-on: lavina/lavina#61
2024-05-10 20:44:24 +00:00
Mikhail
3b454ad7cd
xmpp: unit-tests for resource bind it and muc presence
...
Reviewed-on: lavina/lavina#64
Co-authored-by: Mikhail <mikhail@liamets.dev>
Co-committed-by: Mikhail <mikhail@liamets.dev>
2024-05-10 13:35:34 +00:00
Mikhail
5512a74999
Check if user is a member before inserting a membership ( #62 )
...
It would typically fail on insertion due to uniqueness constraints: user id - room id.
Reviewed-on: lavina/lavina#62
Co-authored-by: Mikhail <mikhail@liamets.dev>
Co-committed-by: Mikhail <mikhail@liamets.dev>
2024-05-08 22:10:32 +00:00
Nikita Vilunov
bb0fe3bf0b
use borrows in http endpoint handlers
2024-05-05 19:24:42 +02:00
Nikita Vilunov
8ac64ba8f5
get rid of storage usages in projections
2024-05-05 19:24:23 +02:00
homycdev
abe9a26925
irc: implement WHOIS command ( #43 )
...
Reviewed-on: lavina/lavina#43
Co-authored-by: homycdev <abdulkhamid98@gmail.com>
Co-committed-by: homycdev <abdulkhamid98@gmail.com>
2024-05-05 17:21:40 +00:00
Mikhail
adf1d8c14c
xmpp: Implement Message Archive Management stub for XEP-0313 ( #60 )
...
https://xmpp.org/extensions/xep-0313.html
Reviewed-on: lavina/lavina#60
Co-authored-by: Mikhail <mikhail@liamets.dev>
Co-committed-by: Mikhail <mikhail@liamets.dev>
2024-05-05 15:12:58 +00:00
Nikita Vilunov
9a09ff717e
management api endpoints for rooms
2024-05-01 17:30:31 +02:00
Nikita Vilunov
a87f7c9d73
xmpp: extract common fragments of integration tests into functions
2024-04-29 23:56:18 +02:00
Nikita Vilunov
25605322a0
player shutdown API ( #58 )
...
Reviewed-on: lavina/lavina#58
2024-04-29 17:24:43 +00:00
Nikita Vilunov
31f9da9b05
xmpp: fix incorrect auth test
2024-04-29 19:13:32 +02:00
Nikita Vilunov
c1dc2df150
xmpp: document xml parsing types
2024-04-28 17:29:31 +02:00
Nikita Vilunov
c69513f38b
xmpp: use mutable namespace and event in parser coroutines
2024-04-28 17:19:31 +02:00
Nikita Vilunov
8ec9ecfe2c
xmpp: handle incorrect credentials by replying with an error
2024-04-28 17:11:29 +02:00
Nikita Vilunov
a047d55ab5
xmpp: handle correctly unavailable self-presence and improve basic test scenario
2024-04-28 15:43:22 +02:00
Nikita Vilunov
ea81ddadfc
dialog message persistence
2024-04-27 12:58:27 +02:00
Nikita Vilunov
4ff09ea05f
tracing otlp exporter and instrumentation annotations ( #57 )
...
Resolves #56
Reviewed-on: lavina/lavina#57
2024-04-26 10:16:23 +00:00
Nikita Vilunov
ec49489ef1
validate that rooms and dialogs are owned exclusively on shutdown
2024-04-23 19:18:46 +02:00
Nikita Vilunov
d305f5bf77
argon2-based password hashing ( #55 )
...
Reviewed-on: lavina/lavina#55
2024-04-23 16:31:00 +00:00
Nikita Vilunov
799da8366c
basic dialog implementation with irc and xmpp support ( #53 )
...
Reviewed-on: lavina/lavina#53
2024-04-23 16:26:40 +00:00
Nikita Vilunov
d805061d5b
refactor auth logic into a common module ( #54 )
...
Reviewed-on: lavina/lavina#54
2024-04-23 10:10:10 +00:00
Nikita Vilunov
6c08d69f41
sasl: remove unused code
2024-04-23 00:41:54 +02:00
Nikita Vilunov
12d30ca5c2
irc: implement server-time capability for incoming messages ( #52 )
...
Spec: https://ircv3.net/specs/extensions/server-time
Reviewed-on: lavina/lavina#52
2024-04-21 21:00:44 +00:00
Nikita Vilunov
ddb348bee9
refactor lavina core by grouping public services into a new LavinaCore struct.
...
this will be useful in future when additional services will be introduced and passed as dependencies
2024-04-21 19:45:50 +02:00
Nikita Vilunov
5a09b743c9
return AlreadyJoined when a player attempts to join a room they are already in
2024-04-20 17:09:44 +02:00
Nikita Vilunov
cebe354179
update libraries
2024-04-19 14:27:19 +02:00
Nikita Vilunov
02a8309d9e
xmpp: relax the jid regex a bit
2024-04-18 01:42:28 +02:00
Nikita Vilunov
fbb3d4f4f9
xmpp: rewrite xml element parsers using coroutines
2024-04-16 17:44:34 +02:00
Nikita Vilunov
048660624d
irc: support registration with different order of NICK/USER/CAP END commands ( #51 )
...
Resolves #33
Reviewed-on: lavina/lavina#51
2024-04-16 11:35:14 +00:00
Nikita Vilunov
6bba699d87
xmpp: disco-info iq for rooms
2024-04-15 23:08:43 +02:00
Nikita Vilunov
6d493d83a3
xmpp: use the Jid type in IQs' to and from fields, separate presence handling
2024-04-15 18:18:51 +02:00
Nikita Vilunov
757d7c5665
persistent room topics ( #50 )
...
Reviewed-on: lavina/lavina#50
2024-04-15 09:12:23 +00:00
Nikita Vilunov
0105a5b710
persistent memberships ( #49 )
...
Reviewed-on: lavina/lavina#49
2024-04-15 09:06:10 +00:00
Nikita Vilunov
57b6af8732
xmpp: configurable server hostname ( #47 )
...
Reviewed-on: lavina/lavina#47
2024-04-15 00:33:26 +00:00
Nikita Vilunov
0944c449ca
xmpp: in integration tests extract server startup code
2024-04-13 02:32:41 +02:00
Mikhail
fd694cd75c
Add message timestamps ( #41 )
...
Resolves #38
Reviewed-on: lavina/lavina#41
Co-authored-by: Mikhail <mikhail@liamets.dev>
Co-committed-by: Mikhail <mikhail@liamets.dev>
2024-04-12 21:32:21 +00:00
Nikita Vilunov
cccc05afe9
xmpp: ignore text elements with spaces at the stream root
2024-04-11 23:08:09 +02:00
Nikita Vilunov
8b099f9be2
xmpp: fix handling of the `bind` iq
2024-04-07 12:06:23 +00:00
Nikita Vilunov
36b0d50d51
irc: allow PART without a reason
2024-04-06 23:01:24 +00:00
Nikita Vilunov
adece11fef
xmpp: make xml-headers optional in the c2s stream
2024-04-06 22:37:27 +00:00
Nikita Vilunov
ab61e975bf
xmpp: send correct errors on unknown iqs
2024-04-06 22:37:27 +00:00
Nikita Vilunov
fd437df67e
xmpp: buffer data outgoing over a TLS-stream
2024-04-06 22:35:01 +00:00
Nikita Vilunov
a325c7307c
irc: improve tests and remove tail space in chan member list
2024-04-06 22:34:11 +00:00
Nikita Vilunov
d436631450
improve docs and split command handlers into methods ( #40 )
2024-03-26 16:26:31 +00:00
Nikita Vilunov
878ec33cbb
apply uniform formatting
2024-03-20 19:59:15 +01:00