forked from lavina/lavina
update docs
This commit is contained in:
parent
f0b38545bf
commit
013a20cbea
|
@ -1,30 +0,0 @@
|
|||
## Dependency diagram of the project
|
||||
|
||||
```mermaid
|
||||
graph TD;
|
||||
lavina-->mgmt-api;
|
||||
lavina-->projection-irc;
|
||||
lavina-->projection-xmpp;
|
||||
lavina-->lavina-core;
|
||||
|
||||
projection-irc-->proto-irc;
|
||||
projection-irc-->lavina-core;
|
||||
|
||||
projection-xmpp-->proto-xmpp;
|
||||
projection-xmpp-->lavina-core;
|
||||
|
||||
sim-irc-->proto-irc;
|
||||
sim-irc-->mgmt-api;
|
||||
|
||||
sim-xmpp-->proto-xmpp;
|
||||
sim-xmpp-->mgmt-api;
|
||||
|
||||
workspace-->lavina;
|
||||
workspace-->sim-irc;
|
||||
workspace-->sim-xmpp;
|
||||
```
|
||||
|
||||
A few rules:
|
||||
- Only projections should be direct deps of `lavina`, there is no need to depend on `proto-*` crates.
|
||||
- On the other hand, projections should not be dependencies of `sim-*` crates.
|
||||
- `lavina-core` does not depend on protocol-specific crates.
|
|
@ -0,0 +1,46 @@
|
|||
## Dependency diagram of the project
|
||||
|
||||
```mermaid
|
||||
graph TD;
|
||||
lavina-->mgmt-api;
|
||||
lavina-->projection-irc;
|
||||
lavina-->projection-xmpp;
|
||||
lavina-->lavina-core;
|
||||
|
||||
projection-irc-->proto-irc;
|
||||
projection-irc-->lavina-core;
|
||||
|
||||
projection-xmpp-->proto-xmpp;
|
||||
projection-xmpp-->lavina-core;
|
||||
|
||||
sim-irc-->proto-irc;
|
||||
sim-irc-->mgmt-api;
|
||||
|
||||
sim-xmpp-->proto-xmpp;
|
||||
sim-xmpp-->mgmt-api;
|
||||
|
||||
workspace-->lavina;
|
||||
workspace-->sim-irc;
|
||||
workspace-->sim-xmpp;
|
||||
```
|
||||
|
||||
A few rules:
|
||||
- Only projections should be direct deps of `lavina`, there is no need to depend on `proto-*` crates.
|
||||
- On the other hand, projections should not be dependencies of `sim-*` crates.
|
||||
- `lavina-core` does not depend on protocol-specific crates.
|
||||
|
||||
## Lavina
|
||||
|
||||
**lavina-core**. This crate implements the core functionality of the server not specific to public interfaces. It includes handling general persistence, message casts, in future room authorization and cross-node communication.
|
||||
|
||||
**lavina**. The application crate. It's used to link other crates together and build the final binary with support for all protocols.
|
||||
|
||||
**mgmt-api**. Model definitions for management API to be used both in the server and client implementations.
|
||||
|
||||
## IRC
|
||||
|
||||
**proto-irc**. Protocol definition for IRC, includes both server-side and client-side messages and both serialization and deserialization where needed.
|
||||
|
||||
**projection-irc**. Projection of lavina-core onto the IRC client-to-server protocol implementation.
|
||||
|
||||
**sim-irc**. Future implementation of IRC client simulator to be used in integration and load testing.
|
|
@ -18,25 +18,12 @@ Print content of a TLS certificate:
|
|||
|
||||
openssl x509 -in certs/xmpp.pem -text
|
||||
|
||||
Make sure `xmpp.key` starts and ends with:
|
||||
```
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
-----END RSA PRIVATE KEY-----
|
||||
```
|
||||
|
||||
|
||||
## Protocol Specs
|
||||
|
||||
XMPP XSDs - [https://xmpp.org/schemas/index.shtml]
|
||||
|
||||
IRC modern spec - [https://modern.ircdocs.horse/]
|
||||
|
||||
## Initializing DB with some users
|
||||
|
||||
sqlite3 db.sqlite < test/init_state.sql
|
||||
|
||||
Same test migration could be used for integration tests in the future.
|
||||
|
||||
## Using irssi
|
||||
|
||||
irssi in a TUI-based IRC client.
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
# Building & Running Lavina
|
||||
|
||||
## Configuration
|
||||
|
||||
A server instance must be supplied with a configuration file to start up. The path to configuration is specified with a required CLI argument `--config <path>`.
|
||||
|
||||
Example configuration:
|
||||
```toml
|
||||
[telemetry]
|
||||
# address for management and telemetry API
|
||||
# should be kept private
|
||||
listen_on = "127.0.0.1:8080"
|
||||
|
||||
[irc]
|
||||
listen_on = "127.0.0.1:6667"
|
||||
server_name = "irc.localhost"
|
||||
|
||||
[xmpp]
|
||||
listen_on = "127.0.0.1:5222"
|
||||
cert = "./certs/xmpp.pem"
|
||||
key = "./certs/xmpp.key"
|
||||
|
||||
[storage]
|
||||
db_path = "db.sqlite"
|
||||
```
|
||||
|
||||
## With Docker Compose
|
||||
|
||||
Example `docker-compose.yml` file:
|
||||
```yaml
|
||||
version: '3.0'
|
||||
|
||||
services:
|
||||
lavina:
|
||||
image: git.vilunov.me/lavina/lavina:0.0.1
|
||||
volumes:
|
||||
- './config/:/etc/lavina/'
|
||||
- './data/:/var/lib/lavina/'
|
||||
ports:
|
||||
- '5222:5222' # xmpp
|
||||
- '6667:6667' # irc non-tls
|
||||
- '127.0.0.1:1380:8080' # management http (private)
|
||||
```
|
||||
|
||||
## With Cargo
|
||||
|
||||
You can run it via cargo:
|
||||
|
||||
cargo run -- --config config.toml
|
||||
|
||||
Or you can build it and run manually:
|
||||
|
||||
cargo build --release
|
||||
./target/release/lavina --config config.toml
|
Loading…
Reference in New Issue