mirror of
https://github.com/jmcorgan/fips.git
synced 2026-07-30 19:46:15 +00:00
Add an outbound-only Nym mixnet transport that tunnels FMP peer links through a local nym-socks5-client SOCKS5 proxy into the Nym mixnet. It structurally mirrors the Tor SOCKS5 transport (connection pool, connect-on-send background promotion, FMP-v0 framing reused from TCP) with the onion, inbound-listener, and control-port machinery removed. Wires the transport through the full TransportHandle dispatch, NymConfig (standard transport-instance pattern), and node instantiation, and surfaces its counters in fipstop. Includes a mock SOCKS5 harness and unit coverage for the address-parsing paths. Also adds an isolated single-container example (examples/sidecar-nostr-mixnet-relay/) demonstrating FIPS peering across the mixnet end to end. No new crate dependencies: tokio_socks, socket2, and futures are already pulled in by the Tor transport.
72 lines
1.5 KiB
Plaintext
72 lines
1.5 KiB
Plaintext
##
|
|
## strfry configuration for FIPS mesh deployment.
|
|
## Full reference: https://github.com/hoytech/strfry
|
|
##
|
|
|
|
db = "/usr/src/app/strfry-db/"
|
|
|
|
dbParams {
|
|
# Maximum size of the database (bytes). 10 GiB is a safe default.
|
|
mapsize = 10737418240
|
|
}
|
|
|
|
relay {
|
|
# Bind on all interfaces so the FIPS TUN (IPv4 + IPv6) can reach it.
|
|
bind = "0.0.0.0"
|
|
port = 7777
|
|
|
|
nofiles = 0
|
|
|
|
info {
|
|
name = "FIPS Nostr Relay"
|
|
description = "A Nostr relay accessible over the FIPS mesh network."
|
|
pubkey = ""
|
|
contact = ""
|
|
}
|
|
|
|
# Maximum size of an inbound WebSocket message (bytes).
|
|
maxWebsocketPayloadSize = 131072
|
|
|
|
# Send a ping every N seconds to keep connections alive.
|
|
autoPingSeconds = 55
|
|
|
|
# Enable per-message compression.
|
|
enableTcpNoDelay = false
|
|
|
|
rejectFutureEventsSeconds = 900
|
|
rejectEphemeralEventsOlderThanSeconds = 60
|
|
rejectEventsNewerThanSeconds = 900
|
|
|
|
maxFilterLimit = 500
|
|
maxSubsPerConnection = 20
|
|
|
|
writePolicy {
|
|
# Plugin executable for write-policy decisions (leave empty to allow all).
|
|
plugin = ""
|
|
}
|
|
|
|
compression {
|
|
enabled = true
|
|
slidingWindow = true
|
|
}
|
|
|
|
logging {
|
|
dumpInAll = false
|
|
dumpInEvents = false
|
|
dumpInReqs = false
|
|
dbScanPerf = false
|
|
}
|
|
|
|
numThreads {
|
|
ingester = 3
|
|
reqWorker = 3
|
|
reqMonitor = 3
|
|
negentropy = 2
|
|
}
|
|
|
|
negentropy {
|
|
enabled = true
|
|
maxSyncEvents = 1000000
|
|
}
|
|
}
|