Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion client.go
Original file line number Diff line number Diff line change
Expand Up @@ -307,7 +307,7 @@ func (c *Client) connect(ctx context.Context, transport *quic.Transport, retoken
conn, err := transport.Dial(ctx, c.controlAddr, &tls.Config{
ServerName: c.controlHost,
RootCAs: c.controlCAs,
NextProtos: iterc.MapVarStrings(model.ClientControlV03, model.ClientControlV02),
NextProtos: iterc.MapVarStrings(model.ClientControlV03),
}, quicc.ClientConfig(c.handshakeIdleTimeout))
if err != nil {
return nil, fmt.Errorf("dial server %s: %w", c.controlAddr, err)
Expand Down
2 changes: 1 addition & 1 deletion endpoint.go
Original file line number Diff line number Diff line change
Expand Up @@ -283,7 +283,7 @@ func (ep *endpoint) runRelay(ctx context.Context, conn *quic.Conn) error {
return fmt.Errorf("relay unexpected response")
}

ep.peer.setRelays(resp.Relay.Directs)
ep.peer.setRelays(resp.Relay.Relays)
}
})

Expand Down
3 changes: 1 addition & 2 deletions model/protos.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ func (v ClientControlNextProto) String() string {

func GetClientControlNextProto(conn *quic.Conn) ClientControlNextProto {
proto := conn.ConnectionState().TLS.NegotiatedProtocol
for _, v := range []ClientControlNextProto{ClientControlV03, ClientControlV02} {
for _, v := range []ClientControlNextProto{ClientControlV03} {
if v.string == proto {
return v
}
Expand All @@ -23,7 +23,6 @@ func GetClientControlNextProto(conn *quic.Conn) ClientControlNextProto {

var (
ClientControlUnknown = ClientControlNextProto{}
ClientControlV02 = ClientControlNextProto{"connet-client/0.2"} // 0.8.0
ClientControlV03 = ClientControlNextProto{"connet-client/0.3"} // 0.13.0
// Update GetClientControlNextProto when adding a new one
)
Expand Down
8 changes: 4 additions & 4 deletions peer.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ import (
type peer struct {
self *notify.V[*pbclient.Peer]

relays *notify.V[[]*pbclient.DirectRelay]
relays *notify.V[[]*pbclient.Relay]
relayConns *notify.V[map[relayID]*quic.Conn]

peers *notify.V[[]*pbclient.RemotePeer]
Expand Down Expand Up @@ -119,7 +119,7 @@ func newPeer(direct *directServer, addrs *notify.V[advertiseAddrs], metadata str
ClientCertificate: clientTLSCert.Leaf.Raw,
}),

relays: notify.NewEmpty[[]*pbclient.DirectRelay](),
relays: notify.NewEmpty[[]*pbclient.Relay](),
relayConns: notify.NewEmpty[map[relayID]*quic.Conn](),

peers: notify.NewEmpty[[]*pbclient.RemotePeer](),
Expand All @@ -135,7 +135,7 @@ func newPeer(direct *directServer, addrs *notify.V[advertiseAddrs], metadata str
}, nil
}

func (p *peer) setRelays(relays []*pbclient.DirectRelay) {
func (p *peer) setRelays(relays []*pbclient.Relay) {
p.relays.Set(relays)
}

Expand Down Expand Up @@ -172,7 +172,7 @@ func (p *peer) runDirectAddrs(ctx context.Context) error {

func (p *peer) runRelays(ctx context.Context) error {
runningRelays := map[relayID]*relay{}
return p.relays.Listen(ctx, func(relays []*pbclient.DirectRelay) error {
return p.relays.Listen(ctx, func(relays []*pbclient.Relay) error {
p.logger.Debug("relays updated", "len", len(relays))

activeRelays := map[relayID]struct{}{}
Expand Down
4 changes: 2 additions & 2 deletions proto/client.proto
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ message Response {
repeated RemotePeer peers = 1;
}
message Relays {
repeated DirectRelay directs = 2;
repeated Relay relays = 2;
}
}

Expand All @@ -65,7 +65,7 @@ message RemotePeer {
Peer peer = 8;
}

message DirectRelay {
message Relay {
string id = 1; // relay id as assigned by the control server
repeated model.HostPort addresses = 2;
bytes server_certificate = 3; // generic certificate used by this relay
Expand Down
50 changes: 25 additions & 25 deletions proto/pbclient/client.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions server/control/clients.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ type ClientAuthentication []byte

type ClientRelays interface {
Directs(ctx context.Context, endpoint model.Endpoint, role model.Role, cert *x509.Certificate, auth ClientAuthentication,
notify func(map[RelayID]*pbclient.DirectRelay) error) error
notify func(map[RelayID]*pbclient.Relay) error) error
}

func newClientServer(
Expand Down Expand Up @@ -274,7 +274,7 @@ func (s *clientServer) runListener(ctx context.Context, ingress Ingress) error {

tlsConf := ingress.TLS.Clone()
if len(tlsConf.NextProtos) == 0 {
tlsConf.NextProtos = iterc.MapVarStrings(model.ClientControlV03, model.ClientControlV02)
tlsConf.NextProtos = iterc.MapVarStrings(model.ClientControlV03)
}

quicConf := quicc.ServerConfig()
Expand Down Expand Up @@ -711,11 +711,11 @@ func (s *clientStream) relay(ctx context.Context, req *pbclient.Request_Relay) e

g.Go(func(ctx context.Context) error {
defer s.conn.logger.Debug("completed direct relay notify")
return s.conn.server.relays.Directs(ctx, endpoint, role, clientCert, s.conn.auth, func(relays map[RelayID]*pbclient.DirectRelay) error {
return s.conn.server.relays.Directs(ctx, endpoint, role, clientCert, s.conn.auth, func(relays map[RelayID]*pbclient.Relay) error {
s.conn.logger.Debug("updated direct relay list", "relays", len(relays))
if err := proto.Write(s.stream, &pbclient.Response{
Relay: &pbclient.Response_Relays{
Directs: slices.Collect(maps.Values(relays)),
Relays: slices.Collect(maps.Values(relays)),
},
}); err != nil {
return fmt.Errorf("client relay response: %w", err)
Expand Down
14 changes: 7 additions & 7 deletions server/control/relays.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ func newRelayServer(
directsCache[msg.Key.ID] = directRelay{
auth: msg.Value.Authentication,
authSealKey: msg.Value.AuthenticationSealKey,
template: &pbclient.DirectRelay{
template: &pbclient.Relay{
Id: msg.Key.ID.string,
Addresses: model.PBsFromHostPorts(msg.Value.Hostports),
ServerCertificate: msg.Value.Certificate.Raw,
Expand Down Expand Up @@ -137,7 +137,7 @@ type relayServer struct {
type directRelay struct {
auth RelayAuthentication
authSealKey *[32]byte
template *pbclient.DirectRelay
template *pbclient.Relay
}

func (s *relayServer) cachedDirects() (map[RelayID]directRelay, int64) {
Expand All @@ -148,7 +148,7 @@ func (s *relayServer) cachedDirects() (map[RelayID]directRelay, int64) {
}

func (s *relayServer) Directs(ctx context.Context, endpoint model.Endpoint, role model.Role, cert *x509.Certificate, auth ClientAuthentication,
notify func(map[RelayID]*pbclient.DirectRelay) error) error {
notify func(map[RelayID]*pbclient.Relay) error) error {

authenticationData, err := protobuf.Marshal(&pbrelay.ClientAuthentication{
Endpoint: endpoint.PB(),
Expand All @@ -165,12 +165,12 @@ func (s *relayServer) Directs(ctx context.Context, endpoint model.Endpoint, role
}

directRelays, offset := s.cachedDirects()
localDirectRelays := map[RelayID]*pbclient.DirectRelay{}
localDirectRelays := map[RelayID]*pbclient.Relay{}
for id, relay := range directRelays {
if ok, err := s.auth.Allow(relay.auth, auth, endpoint); err != nil {
return fmt.Errorf("auth allow error: %w", err)
} else if ok {
localDirectRelays[id] = &pbclient.DirectRelay{
localDirectRelays[id] = &pbclient.Relay{
Id: relay.template.Id,
Addresses: relay.template.Addresses,
ServerCertificate: relay.template.ServerCertificate,
Expand All @@ -197,7 +197,7 @@ func (s *relayServer) Directs(ctx context.Context, endpoint model.Endpoint, role
} else if ok, err := s.auth.Allow(msg.Value.Authentication, auth, endpoint); err != nil {
return fmt.Errorf("auth allow error: %w", err)
} else if ok {
localDirectRelays[msg.Key.ID] = &pbclient.DirectRelay{
localDirectRelays[msg.Key.ID] = &pbclient.Relay{
Id: msg.Key.ID.string,
Addresses: model.PBsFromHostPorts(msg.Value.Hostports),
ServerCertificate: msg.Value.Certificate.Raw,
Expand Down Expand Up @@ -305,7 +305,7 @@ func (s *relayServer) runDirectsCache(ctx context.Context) error {
s.directsCache[msg.Key.ID] = directRelay{
auth: msg.Value.Authentication,
authSealKey: msg.Value.AuthenticationSealKey,
template: &pbclient.DirectRelay{
template: &pbclient.Relay{
Id: msg.Key.ID.string,
Addresses: model.PBsFromHostPorts(msg.Value.Hostports),
ServerCertificate: msg.Value.Certificate.Raw,
Expand Down