Skip to content

Commit 134dba1

Browse files
committed
Better handling of ipv6
1 parent 48a47fd commit 134dba1

File tree

4 files changed

+40
-17
lines changed

4 files changed

+40
-17
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ go 1.25.3
55
require (
66
github.com/alecthomas/chroma/v2 v2.21.1
77
github.com/aorith/svg-sequence v0.0.16
8-
github.com/aorith/svg-timeline v0.2.1
8+
github.com/aorith/svg-timeline v0.2.2
99
)
1010

1111
require github.com/dlclark/regexp2 v1.11.5 // indirect

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ github.com/aorith/svg-sequence v0.0.16 h1:nqKkFY8w9Opg/U85BFicSTU7YeEqwNF1QzekrY
1010
github.com/aorith/svg-sequence v0.0.16/go.mod h1:8PeIQFIE65/ZgSbPwUvv5lfuaiv80V9x2t4NNRhI2jQ=
1111
github.com/aorith/svg-timeline v0.2.1 h1:BKog2X8drlpTeIXZXa89OnxVaFr4IUhVA4/9q3BUsHE=
1212
github.com/aorith/svg-timeline v0.2.1/go.mod h1:haohFRiwc0+Po6714AgYlsoeolDqRTNkI+d62k51qjo=
13+
github.com/aorith/svg-timeline v0.2.2 h1:nQ5zn9mAPy+insAIsY3M9gNlrjluRHaQJdDJpI9Es9Y=
14+
github.com/aorith/svg-timeline v0.2.2/go.mod h1:haohFRiwc0+Po6714AgYlsoeolDqRTNkI+d62k51qjo=
1315
github.com/dlclark/regexp2 v1.11.5 h1:Q/sSnsKerHeCkc/jSTNq1oCm7KiVgUMZRDUoRu0JQZQ=
1416
github.com/dlclark/regexp2 v1.11.5/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
1517
github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM=

render/sequence.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -220,12 +220,11 @@ func addTransactionLogs(s *svgsequence.Sequence, ts vsl.TransactionSet, tx *vsl.
220220
s.AddStep(svgsequence.Step{
221221
Source: B, Target: B,
222222
Text: fmt.Sprintf(
223-
"%s\n%s\n%s %s:%d",
223+
"%s\n%s\n%s %s",
224224
record.GetTag(),
225225
truncateStrMiddle(record.Name, truncateLen),
226226
record.Reason,
227-
record.RemoteAddr.String(),
228-
record.RemotePort,
227+
record.ConnStr(),
229228
),
230229
})
231230

vsl/records.go

Lines changed: 35 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,8 @@ func NewBaseRecord(rawLog string) (BaseRecord, error) {
7272
}
7373

7474
tag := fields[1] // e.g: Begin
75-
firstIndex := strings.Index(rawLog, tag)
76-
value := rawLog[firstIndex+len(tag):]
77-
value = strings.TrimLeft(value, " \t")
75+
_, after, _ := strings.Cut(rawLog, tag)
76+
value := strings.TrimLeft(after, " \t")
7877

7978
return BaseRecord{Tag: tag, RawValue: value, rawLog: rawLog}, nil
8079
}
@@ -239,8 +238,12 @@ type BackendOpenRecord struct {
239238
Reason string // connect or reuse
240239
}
241240

241+
func (r BackendOpenRecord) ConnStr() string {
242+
return net.JoinHostPort(r.RemoteAddr.String(), fmt.Sprintf("%d", r.RemotePort))
243+
}
244+
242245
func (r BackendOpenRecord) String() string {
243-
return fmt.Sprintf("%s (%s:%d) %s", r.Name, r.RemoteAddr.String(), r.RemotePort, r.Reason)
246+
return fmt.Sprintf("%s (%s) %s", r.Name, r.ConnStr(), r.Reason)
244247
}
245248

246249
func NewBackendOpenRecord(blr BaseRecord) (BackendOpenRecord, error) {
@@ -254,7 +257,7 @@ func NewBackendOpenRecord(blr BaseRecord) (BackendOpenRecord, error) {
254257
return BackendOpenRecord{}, fmt.Errorf("conversion to BackendOpenRecord failed, bad file descriptor on line %q", blr.GetRawLog())
255258
}
256259

257-
remoteAddr := net.ParseIP(parts[2])
260+
remoteAddr := net.ParseIP(strings.Trim(parts[2], "[]"))
258261
if remoteAddr == nil {
259262
return BackendOpenRecord{}, fmt.Errorf("conversion to BackendOpenRecord failed, bad remoteAddr on line %q", blr.GetRawLog())
260263
}
@@ -264,7 +267,7 @@ func NewBackendOpenRecord(blr BaseRecord) (BackendOpenRecord, error) {
264267
return BackendOpenRecord{}, fmt.Errorf("conversion to BackendOpenRecord failed, bad remotePort on line %q", blr.GetRawLog())
265268
}
266269

267-
localAddr := net.ParseIP(parts[4])
270+
localAddr := net.ParseIP(strings.Trim(parts[4], "[]"))
268271
if localAddr == nil {
269272
return BackendOpenRecord{}, fmt.Errorf("conversion to BackendOpenRecord failed, bad localAddr on line %q", blr.GetRawLog())
270273
}
@@ -298,13 +301,21 @@ type BackendStartRecord struct {
298301
RemotePort int // Remote port
299302
}
300303

304+
func (r BackendStartRecord) ConnStr() string {
305+
return net.JoinHostPort(r.RemoteAddr.String(), fmt.Sprintf("%d", r.RemotePort))
306+
}
307+
308+
func (r BackendStartRecord) String() string {
309+
return r.ConnStr()
310+
}
311+
301312
func NewBackendStartRecord(blr BaseRecord) (BackendStartRecord, error) {
302313
parts := strings.Fields(blr.GetRawValue())
303314
if len(parts) < 2 {
304315
return BackendStartRecord{}, fmt.Errorf("conversion to BackendStartRecord failed, incorrect len on line %q", blr.GetRawLog())
305316
}
306317

307-
remoteAddr := net.ParseIP(parts[0])
318+
remoteAddr := net.ParseIP(strings.Trim(parts[2], "[]"))
308319
if remoteAddr == nil {
309320
return BackendStartRecord{}, fmt.Errorf("conversion to BackendStartRecord failed, bad remoteAddr on line %q", blr.GetRawLog())
310321
}
@@ -536,13 +547,21 @@ type ReqStartRecord struct {
536547
Listener string // Listener name (from -a)
537548
}
538549

550+
func (r ReqStartRecord) ConnStr() string {
551+
return net.JoinHostPort(r.ClientIP.String(), fmt.Sprintf("%d", r.ClientPort))
552+
}
553+
554+
func (r ReqStartRecord) String() string {
555+
return r.ConnStr() + " " + r.Listener
556+
}
557+
539558
func NewReqStartRecord(blr BaseRecord) (ReqStartRecord, error) {
540559
parts := strings.Fields(blr.GetRawValue())
541560
if len(parts) != 3 {
542561
return ReqStartRecord{}, fmt.Errorf("conversion to ReqStartRecord failed, incorrect len on line %q", blr.GetRawLog())
543562
}
544563

545-
clientIP := net.ParseIP(parts[0])
564+
clientIP := net.ParseIP(strings.Trim(parts[0], "[]"))
546565
if clientIP == nil {
547566
return ReqStartRecord{}, fmt.Errorf("conversion to BackendOpenRecord failed, bad clientAddr on line %q", blr.GetRawLog())
548567
}
@@ -982,11 +1001,14 @@ type SessOpenRecord struct {
9821001
FileDescriptor int // File descriptor number
9831002
}
9841003

1004+
func (r SessOpenRecord) ConnStr() string {
1005+
return net.JoinHostPort(r.RemoteAddr.String(), fmt.Sprintf("%d", r.RemotePort))
1006+
}
1007+
9851008
func (r SessOpenRecord) String() string {
9861009
return fmt.Sprintf(
987-
"%s:%d %s %s:%d (%s) %d",
988-
r.RemoteAddr,
989-
r.RemotePort,
1010+
"%s %s %s:%d (%s) %d",
1011+
r.ConnStr(),
9901012
r.SocketName,
9911013
r.LocalAddr,
9921014
r.LocalPort,
@@ -1001,7 +1023,7 @@ func NewSessOpenRecord(blr BaseRecord) (SessOpenRecord, error) {
10011023
return SessOpenRecord{}, fmt.Errorf("conversion to SessOpenRecord failed, incorrect len on line %q", blr.GetRawLog())
10021024
}
10031025

1004-
remoteAddr := net.ParseIP(parts[0])
1026+
remoteAddr := net.ParseIP(strings.Trim(parts[0], "[]"))
10051027
if remoteAddr == nil {
10061028
return SessOpenRecord{}, fmt.Errorf("conversion to SessOpenRecord failed, bad remoteAddr on line %q", blr.GetRawLog())
10071029
}
@@ -1011,7 +1033,7 @@ func NewSessOpenRecord(blr BaseRecord) (SessOpenRecord, error) {
10111033
return SessOpenRecord{}, fmt.Errorf("conversion to SessOpenRecord failed, bad remotePort on line %q", blr.GetRawLog())
10121034
}
10131035

1014-
localAddr := net.ParseIP(parts[3])
1036+
localAddr := net.ParseIP(strings.Trim(parts[3], "[]"))
10151037
if localAddr == nil {
10161038
return SessOpenRecord{}, fmt.Errorf("conversion to SessOpenRecord failed, bad localAddr on line %q", blr.GetRawLog())
10171039
}

0 commit comments

Comments
 (0)