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.
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 = 300Documentation at /docs and /redoc.
docker-compose.yaml contains a basic stack for running tests.