[READ-ONLY] Mirror of https://github.com/ewanc26/wolfram. Primarily C AT Protocol SDK: client-side, wire-level implementation (XRPC, OAuth/DPoP, identity, repos/MST/CAR, firehose/Jetstream, moderation, CLI, generated clients). Not a port of the PDS/AppView/Ozone backends.
ansi-c api-client at-protocol atproto bluesky c c-sdk decentralized decentralized-social embedded lexicon libwolfram memory-management oauth2 posix sdk shared-library static-library systems-programming xrpc

feat(server): opt-in trusted client-IP header for reverse-proxy deployments master

wf_server_client_ip only ever used the raw TCP peer address, which behind a reverse proxy (nginx, a Cloudflare Tunnel, etc.) is always the proxy's own address, not the real client's. Every downstream consumer of that value -- the built-in IP-keyed rate limiter in particular -- effectively collapses every real user behind the proxy into a single shared bucket, so one abusive or buggy client can exhaust a login-attempt limiter and lock out everyone else. Add wf_xrpc_server_set_trusted_client_ip_header(server, header_name) to opt into trusting a specific header (e.g. "CF-Connecting-IP") instead of the socket peer. Off by default; only safe when the deployment topology guarantees the header can't be forged end-to-end (i.e. the proxy always overwrites or strips any client-supplied copy before setting its own).