Documentation ¶
Overview ¶
Package config provides the Katzenpost server configuration.
Index ¶
- Constants
- func AuthorityPeersFromPeers(peers []*Peer) ([]*config.AuthorityPeer, error)
- func Store(cfg *Config, fileName string) error
- type BoltSpoolDB
- type BoltUserDB
- type CBORPluginKaetzchen
- type Config
- type Debug
- type ExternUserDB
- type Kaetzchen
- type Logging
- type Management
- type Nonvoting
- type PKI
- type Peer
- type Provider
- type SQLDB
- type Server
- type SpoolDB
- type UserDB
- type Voting
Constants ¶
const ( // BackendSQL is a SQL based backend. BackendSQL = "sql" // BackendBolt is a BoltDB based backend. BackendBolt = "bolt" // BackendExtern is a External (RESTful http) backend. BackendExtern = "extern" )
Variables ¶
This section is empty.
Functions ¶
func AuthorityPeersFromPeers ¶
func AuthorityPeersFromPeers(peers []*Peer) ([]*config.AuthorityPeer, error)
AuthorityPeersFromPeers loads keys and instances config.AuthorityPeer for each Peer
Types ¶
type BoltSpoolDB ¶
type BoltSpoolDB struct { // SpoolDB is the path to the user message spool. If left empty, it will // use `spool.db` under the DataDir. SpoolDB string }
BoltSpoolDB is the BolTDB implementation of the spool.
type BoltUserDB ¶
type BoltUserDB struct { // UserDB is the path to the user database. If left empty it will use // `users.db` under the DataDir. UserDB string }
BoltUserDB is the BoltDB implementation of userdb.
type CBORPluginKaetzchen ¶
type CBORPluginKaetzchen struct { // Capability is the capability exposed by the agent. Capability string // Endpoint is the provider side endpoint that the agent will accept // requests at. While not required by the spec, this server only // supports Endpoints that are lower-case local-parts of an e-mail // address. Endpoint string // Config is the extra per agent arguments to be passed to the agent's // initialization routine. Config map[string]interface{} // Command is the full file path to the external plugin program // that implements this Kaetzchen service. Command string // MaxConcurrency is the number of worker goroutines to start // for this service. MaxConcurrency int // Disable disabled a configured agent. Disable bool }
CBORPluginKaetzchen is a Provider auto-responder agent.
type Config ¶
type Config struct { Server *Server Logging *Logging Provider *Provider PKI *PKI Management *Management Debug *Debug }
Config is the top level Katzenpost server configuration.
func Load ¶
Load parses and validates the provided buffer b as a config file body and returns the Config.
func (*Config) FixupAndValidate ¶
FixupAndValidate applies defaults to config entries and validates the supplied configuration. Most people should call one of the Load variants instead.
type Debug ¶
type Debug struct { // IdentityKey specifies the identity private key. IdentityKey *eddsa.PrivateKey `toml:"-"` // NumSphinxWorkers specifies the number of worker instances to use for // inbound Sphinx packet processing. NumSphinxWorkers int // NumProviderWorkers specifies the number of worker instances to use for // provider specific packet processing. NumProviderWorkers int // NumKaetzchenWorkers specifies the number of worker instances to use for // Kaetzchen specific packet processing. NumKaetzchenWorkers int // SchedulerExternalMemoryQueue will enable the experimental external // memory queue that is backed by disk. SchedulerExternalMemoryQueue bool // SchedulerQueueSize is the maximum allowed scheduler queue size before // random entries will start getting dropped. A value <= 0 is treated // as unlimited. SchedulerQueueSize int // SchedulerMaxBurst is the maximum number of packets that will be // dispatched per scheduler wakeup event. SchedulerMaxBurst int // UnwrapDelay is the maximum allowed unwrap delay due to queueing in // milliseconds. UnwrapDelay int // ProviderDelay is the maximum allowed provider delay due to queueing // in milliseconds. ProviderDelay int // KaetzchenDelay is the maximum allowed kaetzchen delay due to queueing // in milliseconds. KaetzchenDelay int // SchedulerSlack is the maximum allowed scheduler slack due to queueing // and or processing in milliseconds. SchedulerSlack int // SendSlack is the maximum allowed send queue slack due to queueing and // or congestion in milliseconds. SendSlack int // DecoySlack is the maximum allowed decoy sweep slack due to various // external delays such as latency before a loop decoy packet will // be considered lost. DecoySlack int // ConnectTimeout specifies the maximum time a connection can take to // establish a TCP/IP connection in milliseconds. ConnectTimeout int // HandshakeTimeout specifies the maximum time a connection can take for a // link protocol handshake in milliseconds. HandshakeTimeout int // ReauthInterval specifies the interval at which a connection will be // reauthenticated in milliseconds. ReauthInterval int // SendDecoyTraffic enables sending decoy traffic. This is still // experimental and untuned and thus is disabled by default. // // WARNING: This option will go away once decoy traffic is more concrete. SendDecoyTraffic bool // DisableRateLimit disables the per-client rate limiter. This option // should only be used for testing. DisableRateLimit bool // GenerateOnly halts and cleans up the server right after long term // key generation. GenerateOnly bool }
Debug is the Katzenpost server debug configuration.
type ExternUserDB ¶
type ExternUserDB struct { // ProviderURL is the base url used for the external provider authentication API. // It should be in the form `http://localhost:8080/` ProviderURL string }
ExternUserDB is the external http user authentication.
type Kaetzchen ¶
type Kaetzchen struct { // Capability is the capability exposed by the agent. Capability string // Endpoint is the provider side endpoint that the agent will accept // requests at. While not required by the spec, this server only // supports Endpoints that are lower-case local-parts of an e-mail // address. Endpoint string // Config is the extra per agent arguments to be passed to the agent's // initialization routine. Config map[string]interface{} // Disable disabled a configured agent. Disable bool }
Kaetzchen is a Provider auto-responder agent.
type Logging ¶
type Logging struct { // Disable disables logging entirely. Disable bool // File specifies the log file, if omitted stdout will be used. File string // Level specifies the log level. Level string }
Logging is the Katzenpost server logging configuration.
type Management ¶
type Management struct { // Enable enables the management interface. Enable bool // Path specifies the path to the manaagment interface socket. If left // empty it will use `management_sock` under the DataDir. Path string }
Management is the Katzenpost management interface configuration.
type Nonvoting ¶
type Nonvoting struct { // Address is the authority's IP/port combination. Address string // PublicKey is the authority's public key in Base64 or Base16 format. PublicKey string }
Nonvoting is a non-voting directory authority.
type PKI ¶
type PKI struct { // Nonvoting is a non-voting directory authority. Nonvoting *Nonvoting Voting *Voting }
PKI is the Katzenpost directory authority configuration.
type Provider ¶
type Provider struct { // EnableUserRegistrationHTTP is set to true if the // User Registration HTTP service listener is enabled. EnableUserRegistrationHTTP bool // UserRegistrationHTTPAddresses is quite simply // the set of TCP addresses that the User // Registration HTTP service should listen on // (e.g. "127.0.0.1:36967"). UserRegistrationHTTPAddresses []string // AdvertiseUserRegistrationHTTPAddresses is the set of HTTP URLs // that shall be advertised in the mixnet PKI document. AdvertiseUserRegistrationHTTPAddresses []string // SQLDB is the SQL database backend configuration. SQLDB *SQLDB // UserDB is the userdb backend configuration. UserDB *UserDB // SpoolDB is the user message spool configuration. SpoolDB *SpoolDB // BinaryRecipients disables all Provider side recipient pre-processing, // including removing trailing `NUL` bytes, case normalization, and // delimiter support. BinaryRecipients bool // CaseSensitiveRecipients disables recipient case normalization. If left // unset, all user names will be converted to lower case. CaseSensitiveRecipients bool // RecipientDelimiter is the set of characters that separates a user name // from it's extension (eg: `alice+foo`). RecipientDelimiter string // Kaetzchen is the list of configured internal Kaetzchen (auto-responder agents) // for this provider. Kaetzchen []*Kaetzchen // CBORPluginKaetzchen is the list of configured external CBOR Kaetzchen plugins // for this provider. CBORPluginKaetzchen []*CBORPluginKaetzchen }
Provider is the Katzenpost provider configuration.
type SQLDB ¶
type SQLDB struct { // Backend is the active database backend (driver). // // - pgx: Postgresql. Backend string // DataSourceName is the SQL data source name or URI. The format // of this parameter is dependent on the database driver being used. // // - pgx: https://godoc.org/github.com/jackc/pgx#ParseConnectionString DataSourceName string }
SQLDB is the SQL database backend configuration.
type Server ¶
type Server struct { // Identifier is the human readable identifier for the node (eg: FQDN). Identifier string // Addresses are the IP address/port combinations that the server will bind // to for incoming connections. Addresses []string // AltAddresses is the map of extra transports and addresses at which // the mix is reachable by clients. The most useful alternative // transport is likely ("tcp") (`core/pki.TransportTCP`). AltAddresses map[string][]string // If set to true then only advertise to the PKI the AltAddresses // and do NOT send any of the Addresses. OnlyAdvertiseAltAddresses bool // DataDir is the absolute path to the server's state files. DataDir string // IsProvider specifies if the server is a provider (vs a mix). IsProvider bool }
Server is the Katzenpost server configuration.
type SpoolDB ¶
type SpoolDB struct { // Backend is the active spool backend. If left empty, the BoltSpoolDB // backend will be used (`bolt`). Backend string // BoltDB backed spool (`bolt`). Bolt *BoltSpoolDB }
SpoolDB is the user message spool configuration.
type UserDB ¶
type UserDB struct { // Backend is the active userdb backend. If left empty, the BoltUserDB // backend will be used (`bolt`). Backend string // BoltDB backed userdb (`bolt`). Bolt *BoltUserDB // Externally defined (RESTful http) userdb (`extern`). Extern *ExternUserDB }
UserDB is the userdb backend configuration.