Releases: eepnet/emissary
Release list
v0.4.0
This release stabilizes the SSU2 transport and brings IPv6 support to both NTCP2 (#322) and SSU2 (#323). Simplified bandwidth metering has been implemented (#324) and the router configuration now supports specifying a bandwidth limit and a share percentage. The defaults are 1 MB/s and 90% (router class P).
PQ hybrid support has been implemented for destinations (#329), NTCP2 (#331) and SSU2 (#334). The crypto used by destinations can be controlled with i2cp.leaseSetEncType (default is 6,4). [ntcp2] and [ssu2] have ml_kem and disable_pq options which allow controlling the PQ-related behavior of the transports. See router configuration documentation for NTCP2 and SSU2 for more details.
Added
- ssu2: Implement peer test protocol (#266)
- sam: Add support for
QUIT/EXIT/STOP(#268) - cli: Implement
RouterCommand::RouterUiDev(#301) - ssu2: Introduce
RelayManager(#306) - ssu2: Implement support for fragmented
RouterInfos (#318) - ssu2: Add support for
RouterInfocompression (#319) - ntcp2: Implement idle timeouts (#321)
- ntcp2: Add IPv6 support (#322)
- ssu2: Add IPv6 support (#323)
- core: Implement simple bandwidth metering (#324)
- ssu2: Implement connection migration (#327)
- session: Add support for PQ Hybrid ECIES-x25519-AEAD-Ratchet (#329)
- ntcp2: Add support for PQ hybrid connections (#331)
- ssu2: Add support for PQ hybrid connections (#334)
- cli/socks: Add outproxy support (#335)
Changed
- core: Introduce
SubsystemManager(#247) - core: Add more metrics (#251)
- ssu2: Check clock skew (#252)
- docs: Improve router configuration documentation (#256)
- ssu2: Share
R::UdpSocketbetween sessions (#257) - streaming: Make opening a stream more aggressive (#262)
- core: Address warning about private macro usage (#270)
- core: Expose I2CP port in
ProtocolAddressInfo(#271) - ssu2: Refactor
TransmissionManager(#274) - transit: Close tunnels which have no activity after 2 minutes (#275)
- docs: Improve docs (#280)
- ci: Use nextest (#281)
- core: Decrease the time it takes to run tests by using
tokio::test's start_paused(#282) - Be precise when marking tests with
start_paused, make investigation for #288 easier (#289) - ssu2: Refactor
Detector(#290) - cli: Specify which client tunnel exited (#296)
- cli/http: Allow specifying HTTP Proxy tunnel lengths (#297)
- ssu2: Add support for parallel peer tests (#300)
- core: Use userspace CRNG seeded by a system RNG (#302)
- core: Add fuzzers for SAM, I2CP, SSU2 and NTCP2 (#307)
- primitives: Refactor
RouterAddress(#309) - ssu2: Request introducers if the router is firewalled (#313)
- transport: Add introducer support to
TransportManager(#314) - ssu2: Implement outbound relay support (#315)
- transport: Refactor firewall/external address handling (#316)
- transit: Remove
total_bandwidth(#317) - cli/ui: Upgrade iced (#320)
- transport: Add more metrics (#326)
- cli/http: Allow specifying port for HTTP outproxy (#332)
- cli: Enable SSU2 by default (#336)
- docs: Update documentation (#337)
Fixed
- ssu2: Terminate inbound connection if outbound connection is pending (#249)
- transport: Reject dial requests if the router is already connected (#250)
- ssu2: Inform transport manager when a connection has been terminated (#255)
- streaming: Resend reply SYN if it doesn't get acknowledged (#259)
- i2cp: Treat options field of
GetDateas optional (#261) - core: Fix fuzz tests (#269)
- tunnel: Fix flaky
exploratory_tunnel_test(#276) - transit: Improve transit tunnel cleanup logic (#279)
- cli: Fix configuration tests (#298)
- docs: Add
Runtimetrait parameter to examples (#303) - cli: Decrease mock update interval to 250 milliseconds (#305)
- cli/ui: Improve subscription address validation (#311)
- util: Use correct protocol for SSU2 NAT-PMP port mapping (#312)
- core: Fix bugs (#328)
- tunnel: Return random inbound/outbound tunnel (#330)
- cli: Do not add duplicate entries to addres book (#333)
Thanks to @bheesham, @hizani and @Shrike05 for their contributions!
v0.3.1
v0.3.1 contains a fix that hopefully alleviates some of the issues caused by the ongoing attack.
Update to the latest version: cargo install emissary-cli --locked --force
v0.3.0
NOTE: Old address book file ($HOME/.emissary/addressbook/addresses) must be removed due to breaking changes made to address book format
Added
- ssu2: Implement congestion control (#115)
- cli/http: Add outproxy support (#118)
- ssu2: Add metrics (#133)
- sam: Add support for primary sessions (#165)
- cli: Implement SOCKS proxy (#175)
- util: Replace
async-stdwithsmol(#169) - cli: Add Base64 encoding/decoding as built-in router commands (#207)
- cli: Implement
RouterCommand::Devnet(#233) - core: Add support for Datagram2 (#226)
- Add documentation for embedding emissary (#240)
Changed
- util: Refactor reseed logic (#105)
- session: Make ratchet threshold configurable (#106)
- cli/http: Use
.b32.i2phostnames in HTTP requests (#116) - cli: Generate random port for NTCP2 (#126)
- sam: Validate tunnel lengths (#144)
- sam: Validate tunnel lengths and quantities (#154)
- session: Verify
DateTimeblocks (#161) - sam: Add MASTER alias for PRIMARY sessions (#177)
- ntcp2: Check clock skew (#179)
- ssu2: Fix
SessionCreatedcustom network ID test (#181) - sam: Reimplement
Datagram::parse()usingnom(#200) - runtime: Convert
Runtime::UdpSocketto use async/await (#211) - primitives: Check offline signature expiration timestamp (#219)
- primitives: Use ElGamal key type in destinations (#220)
- core: Introduce error types for parsers (#221)
- cli: Change the on-disk format of address book files (#222)
- core: Gate event system behind a feature flag (#224)
- cli: Implement add/remove API for
AddressBook(#227) - cli/ui: Overhaul the native router UI (#228)
- util: move
Storagetoemissary-util(#234) - util: Move
PortMappertoemissary-util(#237)
Fixed
- datagram: Drop datagrams originating from DSA-SHA1 destinations (#103)
- transport: fix regression for undialable routers (b0cb1c5)
- streaming: handle missing routing path gracefully (7cbf025)
- ssu2: Handle invalid
SessionConfirmedmessages gracefully (#146) - core: Parse SAM private key correctly (#203)
- ssu2: Decrypt
Datapayload inOutboundSsu2Session::on_data()(#215) - streaming: Send Base64-encoded destination to non-silent listeners (#236)
Thanks to @hizani, @kralverde and @sjlgasnier for their contributions!
v0.2.0
Added
- cli: implement browser ui (d96ed00)
- session: Respond to ACK requests if no traffic is sent (#78)
- session: Respond to NextKey if no traffic is sent (#87)
Changed
- netdb: remove chrono (#72)
- tunnel: Drop expired I2NP fragments (#73)
- util: Return associated type from Runtime::delay (#80)
- verify datagram signature (#83)
- primitives: Implement a HashMap backend for Mapping (#86)
Fixed
- tunnel: randomize tunnel build record order (d3622f8)
- Update tunnel build code to match specification (#82)
- ssu2: Improve pending inbound/outbound sessions (#97)
- sam: set highest supported version to v3.2 (30e97f1)
- profile: accept G/E routers to profile storage (d1e3ae1)
Thanks to @hizani and @kralverde for their contributions!