5 unstable releases

new 0.13.0-alpha Apr 9, 2024
0.12.0-alpha.1 Apr 2, 2024
0.12.0-alpha Mar 18, 2024
0.11.0 Apr 9, 2024
0.11.0-rc.2 Apr 2, 2024

#406 in Database interfaces

Download history 99/week @ 2024-03-14 20/week @ 2024-03-21 177/week @ 2024-03-28 161/week @ 2024-04-04

457 downloads per month
Used in 2 crates (via opentalk-database)

EUPL-1.2

19KB
468 lines

OpenTalk Controller

See the administration guide for more information.

Configuration

See the configuration chapter of the administration guide for more information.

An example configuration is available in the extra/example.toml(extra/ example.toml) file. It can be copied to the root directory:

cp ./extra/example.toml ./config.toml

Upgrading

See the migration guide for information about upgrading.

Build the container image

The Dockerfile is located at container/Dockerfile.

To build the image, execute in the root of the repository:

docker build -f container/Dockerfile . --tag <your tag>

Sub-crates

Inside the crates folder following crates can be found:

  • controller
    • core crate which contains all of the controllers core features
    • OpenID Connect user authentication
    • Database connection and interfacing
    • actix_web based HTTP servers for external and internal APIs
    • Extensible signaling websocket endpoint for video room signaling
  • controller-settings
    • Settings for the controller
  • db-storage
    • Database types used for the controller and modules
  • janus-media
    • media signaling module using the janus-client crate
  • jobs
    • Job execution system for maintenance tasks such as removing old meeting information according to GDPR legislation
  • community-modules
    • functionality for registering all modules in the community edition
    • depends on all modules in the community edition
  • chat
    • chat signaling module which implements a simple room, group and private chat
  • automod
    • signaling module implementing automoderation for videoconferences
  • legal-vote
    • signaling module implementing legal vote for videoconferences
  • polls
    • signaling module implementing polls for videoconferences
  • client EXPERIMENTAL
    • Client side implementation of the controllers APIs used for testing
  • r3dlock
    • redis redlock distributed lock implementation for a single instance
  • janus-client
  • kustos
    • authz abstraction based on casbin-rs
  • test-util
  • types
    • types that are shared across different crates, such as Web API and signaling messages

lib.rs:

Contains the application settings.

The application settings are set with a TOML config file. Settings specified in the config file can be overwritten by environment variables. To do so, set an environment variable with the prefix OPENTALK_CTRL_ followed by the field names you want to set. Nested fields are separated by two underscores __.

OPENTALK_CTRL_<field>__<field-of-field>...

Example

set the database.url field:

OPENTALK_CTRL_DATABASE__URL=postgres://postgres:password123@localhost:5432/opentalk

So the field 'database.max_connections' would resolve to:

OPENTALK_CTRL_DATABASE__MAX_CONNECTIONS=5

Note

Fields set via environment variables do not affect the underlying config file.

Implementation Details:

Setting categories, in which all properties implement a default value, should also implement the Default trait.

Dependencies

~42MB
~465K SLoC