feat: add Linux OAuth adapters
Add a bounded libcurl transport with verified TLS, no redirects or retries, sanitized failures, binary-safe requests, and resolved-address enforcement for cleartext loopback traffic. Add shell-free xdg-open launching and a one-shot IPv4 loopback callback receiver with strict HTTP/query parsing, deadlines, fixed callback path, and RAII cleanup. Token parsing, Secret Service, and Graph remain follow-up phases.
This commit is contained in:
@@ -141,13 +141,25 @@ desktop binary.
|
||||
|
||||
The provider-neutral HTTP seam accepts an injected transport and can therefore
|
||||
be exercised with deterministic fakes. It intentionally owns no generic retry
|
||||
policy; provider operations must decide whether a retry is safe. This phase does
|
||||
not make Office 365 usable yet. It includes no concrete HTTP transport, real
|
||||
browser/loopback adapter, token JSON parser, Secret Service backend, Graph call,
|
||||
or usable account setup. The next product slice supplies concrete desktop,
|
||||
network, and secret-storage adapters, followed by read-only Graph calendar
|
||||
discovery and delta synchronization. Remote writes remain gated on the
|
||||
durability and conflict paths being exercised end to end.
|
||||
policy; provider operations must decide whether a retry is safe. The concrete
|
||||
Linux adapter uses libcurl while preserving
|
||||
TLS certificate and host verification, bounds responses and timeouts, and
|
||||
follows neither redirects nor retries automatically. Cleartext HTTP exists only
|
||||
for loopback tests. Browser opening invokes `xdg-open` without a shell.
|
||||
|
||||
The receiver listens only on `127.0.0.1`, chooses a dynamic port, advertises a
|
||||
`localhost` URL with the fixed `/nocal/oauth/callback` path, and processes one
|
||||
bounded callback. The Microsoft registration is a Mobile and desktop public
|
||||
client with `http://localhost/nocal/oauth/callback`. Microsoft ignores the port
|
||||
when matching localhost redirects. Literal HTTP `127.0.0.1` registration needs
|
||||
a manifest edit, and IPv6 loopback redirects are currently unsupported.
|
||||
|
||||
These adapters still do not make Office 365 usable. They include no token JSON
|
||||
parser, Secret Service backend, Graph call, or account UI. libsecret exposes
|
||||
synchronous operations that may block, so the next phase isolates its adapter
|
||||
off the render thread. Token parsing and secure persistence come before
|
||||
read-only Graph calendar discovery and delta synchronization. Remote writes
|
||||
remain gated on the durability and conflict paths being exercised end to end.
|
||||
|
||||
## Local file interchange
|
||||
|
||||
|
||||
Reference in New Issue
Block a user