HarperFast / HarperFast/symphony

Reject ineffective fingerprint-forwarding carrier configurations

Open
#30 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
1
Forks
0
PR merge metrics
No merged PRs in 30d

Description

Follow-up from the review of #23.

## Problem

A route can request `forwardFingerprint: ja3` or `ja4` without selecting a carrier that can actually deliver it.

The HTTP-header carrier requires terminated plaintext HTTP/1. Passthrough and HTTP/2 require `sourceAddressHeader: proxyProtocolV2`. Static routes currently emit only an stderr warning for ineffective combinations, allowing an apparently healthy deployment that silently drops the requested fingerprint. Routes supplied through `resolveConnection` do not receive equivalent warning or validation.

This leaves downstream controls believing they receive an authoritative fingerprint when no signal is delivered.

## Acceptance criteria

- Reject configurations where fingerprint forwarding has no viable carrier, rather than relying on stderr.
- Apply identical validation to static routes and routes supplied through `resolveConnection`.
- HTTP-header forwarding must require TLS termination and an HTTP/1 upstream path.
- Passthrough and HTTP/2 forwarding must require PROXY protocol v2.
- Validate incompatible UDS/Harper combinations where the immediate consumer does not support the selected PROXY protocol version.
- Return a construction/resolution error that identifies the route and recommends the compatible carrier.
- Add tests for valid and invalid static and resolved-route combinations.

Contributor guide

Open the contributing guide

Research direction

Trace static route construction and routes supplied through resolveConnection, starting from the existing stderr warning for ineffective fingerprint forwarding. Review the route-related tests and add coverage for valid and invalid static and resolved-route combinations; done means construction or resolution rejects incompatible carriers with a route-specific recommendation.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
networking
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.