Skip to content

Commit d3b10e0

Browse files
authored
Translate broker addresses in DescribeCluster response - Closes #17 (#18)
Signed-off-by: Jakub Scholz <www@scholzj.com>
1 parent cb03c98 commit d3b10e0

File tree

3 files changed

+27
-4
lines changed

3 files changed

+27
-4
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module github.com/scholzj/kekspose
33
go 1.24.0
44

55
require (
6-
github.com/scholzj/go-kafka-protocol v0.0.1
6+
github.com/scholzj/go-kafka-protocol v0.0.2
77
github.com/scholzj/strimzi-go v0.6.0
88
github.com/spf13/cobra v1.10.2
99
github.com/stretchr/testify v1.11.1

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,8 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH
9191
github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
9292
github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
9393
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
94-
github.com/scholzj/go-kafka-protocol v0.0.1 h1:DXaVfboTBMHsYjgA3XPtOiR6bO4TvmhMVNDhUCOdmQc=
95-
github.com/scholzj/go-kafka-protocol v0.0.1/go.mod h1:5A/liM02deqyur7XYmBFQu/ETZACtSLrETJDQlvDJL4=
94+
github.com/scholzj/go-kafka-protocol v0.0.2 h1:/s/pz4b5INovlLezrBn8qR0/AE03V/ijmnZvYpZQAZI=
95+
github.com/scholzj/go-kafka-protocol v0.0.2/go.mod h1:5A/liM02deqyur7XYmBFQu/ETZACtSLrETJDQlvDJL4=
9696
github.com/scholzj/strimzi-go v0.6.0 h1:DEvIy9/00q1r83eSSKZVGeDx/UMKcNPMsaWtAAzdfLk=
9797
github.com/scholzj/strimzi-go v0.6.0/go.mod h1:fO//Ti6/rrsC0dbQ09iNsy4Rf5yHcH4pt6VXioKJaQY=
9898
github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU=

pkg/kekspose/proksy/proksy.go

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"net"
99

1010
"github.com/scholzj/go-kafka-protocol/api/apiversions"
11+
"github.com/scholzj/go-kafka-protocol/api/describecluster"
1112
"github.com/scholzj/go-kafka-protocol/api/findcoordinator"
1213
"github.com/scholzj/go-kafka-protocol/api/metadata"
1314
"github.com/scholzj/go-kafka-protocol/protocol"
@@ -66,7 +67,7 @@ func (p *Proksy) BrokerToClient(client net.Conn, broker httpstream.Stream, shutd
6667
}
6768

6869
for i := range *metadataResponse.Brokers {
69-
(*metadataResponse.Brokers)[i].Host = "localhost"
70+
(*metadataResponse.Brokers)[i].Host = ptr.To("localhost")
7071
(*metadataResponse.Brokers)[i].Port = int32(p.PortMapping[(*metadataResponse.Brokers)[i].NodeId])
7172
}
7273

@@ -119,6 +120,28 @@ func (p *Proksy) BrokerToClient(client net.Conn, broker httpstream.Stream, shutd
119120
slog.Error("<- Failed to re-encode ApiVersions response", "node", p.NodeId, "error", err)
120121
}
121122
response.Body = buf
123+
} else if response.ApiKey == 60 {
124+
describeCluster := describecluster.DescribeClusterResponse{}
125+
err := describeCluster.Read(response)
126+
if err != nil {
127+
slog.Error("<- Failed to decode DescribeCluster response", "node", p.NodeId, "error", err)
128+
}
129+
130+
if describeCluster.EndpointType == 1 && describeCluster.Brokers != nil {
131+
for i := range *describeCluster.Brokers {
132+
(*describeCluster.Brokers)[i].Host = ptr.To("localhost")
133+
(*describeCluster.Brokers)[i].Port = int32(p.PortMapping[(*describeCluster.Brokers)[i].BrokerId])
134+
}
135+
}
136+
137+
slog.Log(context.Background(), TraceLevel, describeCluster.PrettyPrint())
138+
139+
buf := bytes.NewBuffer(make([]byte, 0))
140+
err = describeCluster.Write(buf)
141+
if err != nil {
142+
slog.Error("<- Failed to re-encode DescribeCluster response", "node", p.NodeId, "error", err)
143+
}
144+
response.Body = buf
122145
}
123146

124147
slog.Debug("<- Proxying response from remote", "node", p.NodeId)

0 commit comments

Comments
 (0)