MCPcopy Create free account
hub / github.com/bytebase/bytebase / getRequestMetadataFromHeaders

Function getRequestMetadataFromHeaders

backend/api/v1/audit.go:819–837  ·  view source on GitHub ↗

getRequestMetadataFromHeaders extracts request metadata from HTTP headers for ConnectRPC.

(headers http.Header, peerAddr string)

Source from the content-addressed store, hash-verified

817
818// getRequestMetadataFromHeaders extracts request metadata from HTTP headers for ConnectRPC.
819func getRequestMetadataFromHeaders(headers http.Header, peerAddr string) *storepb.RequestMetadata {
820 userAgent := headers.Get("User-Agent")
821 // Extract caller IP with fallback chain:
822 // 1. X-Real-IP (set by reverse proxy, most trustworthy single IP)
823 // 2. X-Forwarded-For (standard but can contain client-spoofed data)
824 // 3. Peer address from ConnectRPC (direct connection fallback)
825 callerIP := headers.Get("X-Real-IP")
826 if callerIP == "" {
827 callerIP = headers.Get("X-Forwarded-For")
828 }
829 if callerIP == "" {
830 callerIP = peerAddr
831 }
832
833 return &storepb.RequestMetadata{
834 CallerIp: callerIP,
835 CallerSuppliedUserAgent: userAgent,
836 }
837}
838
839// isValidateOnlyRequest checks if a request has validate_only field set to true
840// using protoreflect to generically detect the field.

Callers 1

createAuditLogMethod · 0.85

Calls 1

GetMethod · 0.80

Tested by

no test coverage detected