Expand description
Configuration for a WASI application in an Enarx Keep
This crate provides Config, which can be used to with any serde deserializer.
Its main purpose is to read an Enarx.toml configuration file.
extern crate toml;
use enarx_config::Config;
const CONFIG: &str = r#"
[[files]]
name = "LISTEN"
kind = "listen"
prot = "tls"
port = 12345
"#;
let config: Config = toml::from_str(CONFIG).unwrap();§Configure Enarx.toml
With the Enarx.toml configuration file, environment variables, arguments and pre-opened file descriptors
can be passed to the WASM application.
§Elements
All elements are optional.
§env
env specifies the environment variables exported to the WASM application in a map.
§Example
[env]
VAR1 = "var1"
VAR2 = "var2"§args
args specifies the arguments for the WASM application in an array.
§Example
args = [
"--argument1",
"--argument2=foo"
]§steward
steward specifies the URL for the steward to contact for a TLS certificate.
§Example
steward = "https://steward.example.com"§files
files specifies an array of file descriptor definitions to be pre-opened for the WASM application.
A files entry can contain the following sub elements.
§kind
kind can be one of "null", "stdin","stdout", "stderr", "listen" or "connect".
§name
Name of the file descriptor, exported in the FD_NAMES environment variable.
The default name for kind "null", "stdin","stdout", "stderr" is the kind.
The FD_NAMES environment variable contains all name strings of the files array joined with “:”.
The FD_COUNT environment variable contains the number of files elements.
§prot
prot can be "tcp" or "tls" for kind = "connect" or kind = "listen".
"tls" is the default, if prot is not specified.
tls transparently wraps a TCP connection with the TLS protocol.
For kind = "listen" every accepted connection is also wrapped with the TLS protocol.
§host
host specifies the host to connect to for a kind = "connect"
§addr
addr specifies the address to bind to for a kind = "listen".
§Examples
addr = "::" # bind to any interface IPv6 and IPv4 (the default, if not specified)
addr = "0.0.0.0" # bind to any IPv4 interface
addr = "::1" # bind to IPv6 localhost
addr = "127.0.0.1" # bind to IPv4 localhost
addr = "192.168.1.1" # bind to a specific IPv4 address§port
port specifies the port to connect or bind to for kind = "connect" or kind = "listen".
The default value is 443.
§Example
# Configuration for a WASI application in an Enarx Keep
# Arguments
args = [
"--argument1",
"--argument2=foo"
]
# Environment variables
[env]
VAR1 = "var1"
VAR2 = "var2"
# Pre-opened file descriptors
[[files]]
kind = "null"
[[files]]
kind = "stdout"
[[files]]
kind = "stderr"
# A listen socket
[[files]]
name = "LISTEN"
kind = "listen"
prot = "tls" # or prot = "tcp"
port = 12345
# An outgoing connected socket
[[files]]
name = "CONNECT"
kind = "connect"
prot = "tcp" # or prot = "tls"
host = "127.0.0.1"
port = 23456This configuration files passes the environment VAR1=var1 VAR2=var2 and the arguments --argument1 --argument2=foo to the WASM application.
Additionally, five file descriptors are pre-opened:
- 0:
/dev/null - 1:
/dev/stdout - 2:
/dev/stderr - 3: a TCP listen socket bound to port
12345on address::, where every accepted connection is transparently wrapped with the TLS protocol - 4: a normal TCP stream socket connected to
127.0.0.1:23456
Additionally, the following environment variables are exported:
FD_COUNT=5FD_NAMES=null:stdout:stderr:LISTEN:CONNECT
Structs§
Enums§
Constants§
- CONFIG_
TEMPLATE - Configuration file template