feat: Add ECHAccepted field to MITMProbeReport and log results in probe handling
Kim committed
May 7, 2026 at 12:09 UTC
49a64f1678d337289f015ab5a82cc1fb01a283c6
1 file changed
+11
-5
sdk/mitm.go
+11
-5
@@ -33,11 +33,12 @@ const (
33
)
34
35
type MITMProbeReport struct {
36
- RelayURL string
37
- PublicURL string
38
- Address string
39
- Detected bool
40
- Reason string
36
+ RelayURL string
37
+ PublicURL string
38
+ Address string
39
+ ECHAccepted bool
40
+ Detected bool
41
+ Reason string
42
}
43
44
type mitmProbePending struct {
@@ -135,6 +136,7 @@ func (m *mitmManager) probeTLSPassthrough(ctx context.Context) (MITMProbeReport,
136
}
137
138
clientState := tlsConn.ConnectionState()
139
+ report.ECHAccepted = clientState.ECHAccepted
140
expected, err := (&clientState).ExportKeyingMaterial(mitmProbeExporterLabel, nil, 32)
141
if err != nil {
142
return report, fmt.Errorf("export client probe keying material: %w", err)
@@ -243,11 +245,13 @@ func (m *mitmManager) logResult(report MITMProbeReport, err error) {
245
}
246
log.Warn().
247
Err(err).
248
+ Bool("ech_accepted", report.ECHAccepted).
249
Str("relay_url", relayURL).
250
Str("address", l.identity.Address).
251
Msg("tls passthrough self-probe failed")
252
case report.Reason == types.MITMProbeReasonProbeTimeout:
253
log.Warn().
254
+ Bool("ech_accepted", report.ECHAccepted).
255
Str("relay_url", report.RelayURL).
256
Str("public_url", report.PublicURL).
257
Str("address", report.Address).
@@ -255,6 +259,7 @@ func (m *mitmManager) logResult(report MITMProbeReport, err error) {
259
case report.Detected:
260
event := log.Warn().
261
Bool("ban_mitm", m.ban).
262
+ Bool("ech_accepted", report.ECHAccepted).
263
Str("reason", report.Reason).
264
Str("relay_url", report.RelayURL).
265
Str("public_url", report.PublicURL).
@@ -271,6 +276,7 @@ func (m *mitmManager) logResult(report MITMProbeReport, err error) {
276
event.Msg("tls termination suspected by self-probe")
277
default:
278
log.Debug().
279
+ Bool("ech_accepted", report.ECHAccepted).
280
Str("relay_url", report.RelayURL).
281
Str("public_url", report.PublicURL).
282
Str("address", report.Address).