Crate bonsaidb_server

Source
Expand description

BonsaiDb’s networked database implementation.

This crate implements BonsaiDb’s networked database implementation. The Server and CustomServer<Backend> types provide their most common functionality by implementing the StorageConnection.

This crate supports two methods for exposing a BonsaiDb server: QUIC and WebSockets.

QUIC is a new protocol built atop UDP. It is designed to operate more reliably than TCP, and features TLS built-in at the protocol level. WebSockets are an established protocol built atop TCP and HTTP.

Our user’s guide has a section covering setting up and accessing a BonsaiDb server.

§Minimum Supported Rust Version (MSRV)

While this project is alpha, we are actively adopting the current version of Rust. The current minimum version is 1.70.

§Feature Flags

By default, the full feature is enabled.

  • full: Enables all the flags below,
  • acme: Enables automtic certificate acquisition through ACME/LetsEncrypt.
  • cli: Enables the cli module.
  • encryption: Enables at-rest encryption.
  • hyper: Enables convenience functions for upgrading websockets using hyper.
  • instrument: Enables instrumenting with tracing.
  • pem: Enables the ability to install a certificate using the PEM format.
  • websockets: Enables WebSocket support.
  • password-hashing: Enables the ability to use password authentication using Argon2.
  • token-authentication: Enables the ability to authenticate using authentication tokens, which are similar to API keys.

Re-exports§

pub use bonsaidb_core as core;
pub use bonsaidb_local as local;
pub use fabruic;

Modules§

api
Types for defining API handlers.
cli
Command-line interface for the server.

Structs§

AcmeConfiguration
The Automated Certificate Management Environment (ACME) configuration.
BonsaiListenConfig
Configuration for the BonsaiDb network protocol.
ConnectedClient
A connected database client.
CustomServer
A BonsaiDb server.
LockedClientDataGuard
A locked reference to associated client data.
NoBackend
A Backend with no custom functionality.
Peer
A connected network peer.
ServerConfiguration
Configuration options for Server
ServerDatabase
A database belonging to a CustomServer.

Enums§

BackendError
An error that can occur inside of a Backend function.
ConnectionHandling
Controls how a server should handle a connection.
DefaultPermissions
The default permissions to use for all connections to the server.
Error
An error occurred while interacting with a Server.
StandardTcpProtocols
TCP ApplicationProtocols that BonsaiDb has some knowledge of.
Transport
The ways a client can be connected to the server.

Constants§

LETS_ENCRYPT_PRODUCTION_DIRECTORY
URI of https://letsencrypt.org/ prod Directory. Certificates aquired from this are trusted by most Browsers.
LETS_ENCRYPT_STAGING_DIRECTORY
URI of https://letsencrypt.org/ staging Directory. Use this for tests. See https://letsencrypt.org/docs/staging-environment/

Traits§

ApplicationProtocols
A collection of supported protocols for a network service.
Backend
Tailors the behavior of a server to your needs.
HttpService
A service that can handle incoming HTTP connections. A convenience implementation of TcpService that is useful is you are only serving HTTP and WebSockets over a service.
TcpService
A service that can handle incoming TCP connections.

Type Aliases§

Server
A BonsaiDb server without a custom backend.