38 Commits
Author SHA1 Message Date
ginuerzh 84d4d5dbbb p2p/proto: report the relay's liveness and a peer's punch trace
StatusReply gains relay_connected/relay_error: a live hole-punched session keeps
every gauge healthy while the relay is unreachable, so no other field can show an
outage. PeerDiagnostic gains trace, the peer's recent punch steps (oldest first).
Both are what the p2p doctor report reads.
v0.10.0
2026-09-30 21:33:05 +08:00
ginuerzh 77755db3e3 p2p/proto: add a per-peer diagnostic to StatusReply
StatusReply gains a repeated PeerDiagnostic (path, reason, state, last punch
error, dialled endpoint, candidates, caps, session and silence ages, and the
punch counters), each keyed by the peer's base64 public key so the list is
attributable.
2026-09-30 20:12:39 +08:00
ginuerzh bbcf8d3588 p2p/proto: add encrypted/plaintext peer gauges to StatusReply v0.9.0 2026-09-30 12:15:57 +08:00
ginuerzh f5e7de73d7 p2p/proto: report transport stats in StatusReply
Add direct_peers/derp_peers gauges and punch_attempts/punch_success/
streams_direct/streams_derp counters, so an operator can tell whether hole
punching works for their peers or traffic is stuck on the relay.
v0.8.1
2026-09-20 20:44:31 +08:00
ginuerzh 7000217d4f p2p/proto: replace the endpoint data plane with a Tunnel bidi stream
OpenTunnel now only authorizes the tunnel and returns a random single-use
id (the stream credential); the reserved endpoint field and CloseTunnel
are removed. Tunnel is a bidi stream whose lifetime is the tunnel's
lifetime, bound to the OpenTunnel id via the "id" metadata key. Breaking
change; regenerated with the pinned toolchain.
v0.8.0
2026-09-12 08:19:13 +08:00
ginuerzh ee9e947e12 p2p/proto: add network field to OpenTunnelRequest
Selects the endpoint's semantics: "tcp" (a byte stream, the default when
empty) or "udp" (a datagram endpoint, one datagram per write). A datagram
tunnel is what carries a tun link, since a byte-stream endpoint coalesces
and splits packets. Empty defaults to tcp, so existing clients and hosts
are unaffected.
v0.7.0
2026-09-11 20:20:29 +08:00
ginuerzh cba3f64b43 namespace proto file registrations to fix global registry collisions
Regenerate all protos from the module root with full relative paths so
descriptors register as e.g. auth/proto/auth.proto instead of bare
auth.proto. The protobuf file registry is process-global, so generic
filenames collided with other libraries and panicked at init
(proto: file "auth.proto" is already registered, #3).

Go API and wire format unchanged.
v0.6.1
2026-09-05 22:23:11 +08:00
ginuerzh 4b63a42bfd bump go 1.26, grpc 1.83.2, protobuf 1.36.11 v0.6.0 2026-09-05 21:18:05 +08:00
ginuerzh 2bf4d0be00 add .gitignore, document p2p plugin
- .gitignore excludes .codegraph/.claude/.remember and test artifacts
- CLAUDE.md: service catalog now 13 types; p2p row plus its deliberate
  deviations (opaque peer/endpoint, no example/, gRPC-only)
- README.md: p2p row and usage section with p2ps: config snippet
2026-09-05 20:59:43 +08:00
ginuerzh 18cd71e613 drop go-gost/x dependency from hop examples
The two hop examples imported x/config only for the NodeConfig type to
build demo nodes, dragging x (and its viper dependency tree) under the
plugin SDK — inverting the x -> plugin layering and one pin-bump away
from a package import cycle. The node payload is plain JSON on the
wire, so the examples now use local struct types with the same JSON
shape. go.mod shrinks to grpc + protobuf.
2026-09-05 20:52:07 +08:00
ginuerzh 45f52ef4bb add p2p plugin control protocol
P2P service with OpenTunnel/CloseTunnel/Status unary RPCs: the client
sends an opaque peer identifier, the plugin replies with an opaque
tunnel handle (v1: locally dialable TCP host:port). Error semantics:
transport/validation failures go through gRPC status; business
failures answer ok:false with a gRPC OK status — clients treat either
as failure. CloseTunnel is idempotent. Generated code checked in.
2026-09-05 20:44:48 +08:00
ginuerzh 40ac06135f auth/proto: add client certificate fields to AuthenticateRequest
Add client_cn, client_san, and client_cert_fingerprint fields to the
auth protobuf for passing TLS client certificate info during authentication.
v0.5.0
2026-07-05 12:45:06 +08:00
ginuerzh 7bbdfdac5f add rewriter plugin v0.4.0 2026-06-27 21:39:34 +08:00
ginuerzh e1226236da add network field to admission request, add CLAUDE.md and README.md v0.3.0 2026-05-21 22:22:12 +08:00
ginuerzh 146c8ff22e add service option v0.2.1 2025-08-29 23:32:38 +08:00
ginuerzh b76208b1e0 update router v0.2.0 2025-02-08 23:04:47 +08:00
ginuerzh 52c6cd2c7e add scope and service params for traffic limiter v0.1.1 2024-08-31 09:26:35 +08:00
pfulier 5b1a61b344 add LICENSE 2024-08-07 09:03:25 +08:00
ginuerzh 4a3c8f830f v0.1.0 v0.1.0 2024-07-08 22:50:37 +08:00
ginuerzh 20ced6222a fix hop http plugin example 2024-01-27 21:28:52 +08:00
ginuerzh 9c84e29cb8 add observer 2024-01-03 20:53:38 +08:00
ginuerzh d49a1cb23b fix router example 2023-11-19 16:43:31 +08:00
ginuerzh 96a9cabbf6 update router 2023-11-19 16:14:35 +08:00
ginuerzh d959ab5484 add router plugin 2023-11-19 14:21:32 +08:00
ginuerzh bfe81cbb44 add traffic limiter plugin 2023-11-18 18:26:15 +08:00
ginuerzh 0ae4157b9d add path option for hop 2023-11-09 20:33:46 +08:00
ginuerzh a1cc7a13e0 update sd proto 2023-11-02 20:51:24 +08:00
ginuerzh 4c25027b8b add sd 2023-10-31 22:57:54 +08:00
ginuerzh 2cfb0a14b4 update recorder proto 2023-10-27 22:13:11 +08:00
ginuerzh e190e1c74d add path for bypass 2023-10-20 23:55:19 +08:00
ginuerzh fc558b9a31 update ingress.proto 2023-10-15 15:37:45 +08:00
ginuerzh bc86458bf2 update example 2023-09-30 17:49:33 +08:00
ginuerzh 8bc0679b5c add hop plugin 2023-09-28 21:02:11 +08:00
ginuerzh 4700171909 add client param for auth plugin 2023-09-21 19:58:16 +08:00
ginuerzh 3fb3ca8dea update examples 2023-09-20 23:10:34 +08:00
ginuerzh 0e42c7c67e add client ID 2023-09-19 22:32:40 +08:00
ginuerzh 288089404a update example 2023-04-20 19:04:53 +08:00
ginuerzh d221a4ec9a initial commit 2023-04-18 20:31:01 +08:00