alpha
Login
or
Join now
gazagnaire.org
/
ocaml-docker
Star
0
Fork
0
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
Docker Engine API types and codecs in pure OCaml
Star
0
Fork
0
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
Overview
Issues
Pulls
Pipelines
ocaml-docker
/
lib
/
server
/
at
main
7 files
Thomas Gazagnaire
docker-server: adopt the respond split and bytesrw hijack streams
13d ago
897164e8
authz.ml
docker-server: adopt the respond split and bytesrw hijack streams Move the server's I/O entry points to respond-eio and take the hijacked exec/attach connection as a Bytesrw writer rather than the old Hijack callbacks; declare the new respond-eio and bytesrw deps.
1 week ago
authz.mli
docker: AuthZ-plugin mode for the proxy policies (Server.Authz) Add Server.Authz, the Docker authorization-plugin protocol decided by the same Proxy.policy as the standalone proxy. Registered with `dockerd --authorization-plugin`, it answers the plugin handshake (Plugin.Activate -> implements authz) and the AuthZPlugin.AuthZReq/AuthZRes RPCs: it base64- decodes the daemon's RequestBody, turns the call into a Proxy.request, and returns {Allow,Msg} from the policy (a Rewrite is treated as allow, since the AuthZ protocol cannot modify the request). So no_privileged, read_only, and the Rego adapter all run BOTH as a standalone gateway and in-daemon -- the opa-docker-authz integration model over our policy surface. Test (test_authz.ml): drive the plugin over a socket -- the handshake advertises authz, and the no_privileged policy denies a privileged create and allows a plain one.
1 month ago
dune
docker-server: adopt the respond split and bytesrw hijack streams Move the server's I/O entry points to respond-eio and take the hijacked exec/attach connection as a Bytesrw writer rather than the old Hijack callbacks; declare the new respond-eio and bytesrw deps.
1 week ago
proxy.ml
docker: reformat the proxy and its fuzz driver for ocamlformat
3 weeks ago
proxy.mli
docker-proxy: differential fuzz of the request parser, strict Content-Length Cross-check the proxy's hand-rolled request-head parser against the strict RFC 9112 parser in nox-http: for every generated request the proxy must never trust an n-byte body a strict parser frames differently (the smuggling root), and must refuse the ambiguous framings that parser rejects. Exposed via Proxy.classify. The fuzz immediately found the gap it was built for: content_length used int_of_string, which accepts 0x10, 5_0 and +5 -- none valid HTTP -- so the proxy trusted a length the daemon would reject. Content-Length is now parsed as a single run of ASCII digits, and a malformed or comma-list value is refused as invalid framing alongside the TE+CL and conflicting-length checks.
3 weeks ago
server.ml
docker-server: adopt the respond split and bytesrw hijack streams Move the server's I/O entry points to respond-eio and take the hijacked exec/attach connection as a Bytesrw writer rather than the old Hijack callbacks; declare the new respond-eio and bytesrw deps.
1 week ago
server.mli
docker: fold docker-runner into docker; give dockr its own package docker-runner was its own opam package but is I/O-free (deps: docker + fmt) like the main docker types, so a separate package only paid off for a future real backend depending on just the interface -- which doesn't exist. Fold it in: lib/runner.ml is now the Docker.Runner module (BACKEND renamed to the idiomatic S), the docker-runner package/opam are dropped, and its test moves to test/test_runner.ml. Merging the three binaries into one dockr also pulled docker-client and nox-crypto-rng (which the docker-server library does not use) into a library-bearing package; move the binary into its own executable-only dockr package (the etco pattern), so docker-server keeps only its real library deps (docker-client returns to with-test for the tests). Net: still 4 packages (docker, docker-client, docker-server, dockr), but each carries honest deps. Consumers use Docker.Runner.S / Docker.Runner.Memory; 65 + e2e tests pass.
1 month ago