Skip to content

Repository files navigation

DNS TAPIR Aggregate Receiver

This repository contains the DNS TAPIR Aggregate Receiver, a server component used for submitting and retrieving TAPIR aggregates.

Submitted aggregates are stored in a S3 compatible object store with its metadata stored in MongoDB. New aggregates are announced via MQTT or NATS.

Clients are assumed to be authenticated using mTLS (via a front end proxy), and all submitted data must be signed using HTTP Message Signatures (RFC 9421). Public keys for allowed signers are fetched from DNS TAPIR Node Manager via HTTP or stored in PEM format in the CLIENTS_DATABASE directory as {key_id}.pem.

Configuration

The default configuration file is aggrec.toml. Example configuration below:

metadata_base_url= "https://aggrec.example.com"

clients_database = "https://nodeman.example.com/api/v1/node/{key_id}/public_key"

[s3]
endpoint_url = "http://localhost:9000"
bucket = "aggregates"
create_bucket = true
access_key_id = "access_key_id"
secret_access_key = "secret_access_key"

[mongodb]
server =  "mongodb://localhost/aggregates"

[http]
trusted_hosts = ["127.0.0.1"]
healthcheck_hosts = ["127.0.0.1"]
stats_hosts = ["127.0.0.1", "192.168.0.0/16"]

[mqtt]
broker = "mqtt://localhost"
topic = "aggregates"

[nats]
servers = ["nats://localhost:4222"]
subject = "aggregates"

[otlp]
spans_endpoint = "http://localhost:4317"
metrics_endpoint = "http://localhost:4317"
insecure = true

[key_cache]
size = 1000
ttl = 300

API

Documentation at /docs and /redoc.

Testing

docker-compose.yaml contains a basic stack for running tests.

About

DNS TAPIR Aggregate Receiver

Resources

Stars

0 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages