27 releases (15 breaking)

0.28.2 Jan 28, 2025
0.28.0 Dec 12, 2024
0.27.0 Nov 20, 2024
0.17.0-rc.1 Jul 19, 2024
0.0.0 Feb 8, 2023

#432 in Database interfaces

Download history

1,614 downloads per month

EUPL-1.2

56KB
1K SLoC

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 example/controller.toml file. It can be copied to the root directory:

cp ./example/controller.toml ./controller.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
  • 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
  • kustos
    • authz abstraction based on casbin-rs
  • test-util
  • types
    • types that are shared across different crates, such as Web API and signaling messages

OpenTalk Controller API Specification

The <docs/developer/api.yaml> file contains the OpenTalk API specification formalized in OpenAPI format.

Checking the consistency with Spectral

Stoplight Spectral is a linter tool for structured data such as JSON and YAML. It contains built-in support to ensure the consistency of an OpenAPI specification. These checks go far beyond what most other linters detect, resulting in significantly higher consistency of the OpenAPI specification.

Running the checks locally

Prerequisites

The subsequent commands assume that the project root is stored in the environment variable PROJECT_ROOT like this:

export PROJECT_ROOT="/path/to/opentalk/controller"

Alternatively if the project root is the current directory:

export PROJECT_ROOT="$(pwd)"
With spectral installed
spectral lint --ruleset "$PROJECT_ROOT"/ci/spectral/openapi.yml "$PROJECT_ROOT"/docs/developer/api.yaml
With the stoplight/spectral Docker image
docker run --rm -it -v "$PROJECT_ROOT":/tmp stoplight/spectral lint --ruleset /tmp/ci/spectral/openapi.yml /tmp/api/controller/frontend_api.yaml

Dependencies

~66MB
~785K SLoC