sniffing: full websocket frame recording
This commit is contained in:
+17
-6
@@ -673,12 +673,9 @@ func (h *httpHandler) sniffingWebsocketFrame(ctx context.Context, rw, cc io.Read
|
|||||||
errc := make(chan error, 1)
|
errc := make(chan error, 1)
|
||||||
|
|
||||||
sampleRate := h.md.sniffingWebsocketSampleRate
|
sampleRate := h.md.sniffingWebsocketSampleRate
|
||||||
if sampleRate <= 0 {
|
if sampleRate == 0 {
|
||||||
sampleRate = sniffing.DefaultSampleRate
|
sampleRate = sniffing.DefaultSampleRate
|
||||||
}
|
}
|
||||||
if sampleRate > sniffing.MaxSampleRate {
|
|
||||||
sampleRate = sniffing.MaxSampleRate
|
|
||||||
}
|
|
||||||
d := time.Duration(1 / sampleRate * 1e9)
|
d := time.Duration(1 / sampleRate * 1e9)
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
@@ -686,8 +683,15 @@ func (h *httpHandler) sniffingWebsocketFrame(ctx context.Context, rw, cc io.Read
|
|||||||
*ro2 = *ro
|
*ro2 = *ro
|
||||||
ro = ro2
|
ro = ro2
|
||||||
|
|
||||||
ticker := time.NewTicker(d)
|
ticker := &time.Ticker{}
|
||||||
|
if d > 0 {
|
||||||
|
ticker = time.NewTicker(d)
|
||||||
defer ticker.Stop()
|
defer ticker.Stop()
|
||||||
|
} else {
|
||||||
|
tc := make(chan time.Time)
|
||||||
|
close(tc)
|
||||||
|
ticker.C = tc
|
||||||
|
}
|
||||||
|
|
||||||
buf := &bytes.Buffer{}
|
buf := &bytes.Buffer{}
|
||||||
for {
|
for {
|
||||||
@@ -719,8 +723,15 @@ func (h *httpHandler) sniffingWebsocketFrame(ctx context.Context, rw, cc io.Read
|
|||||||
*ro2 = *ro
|
*ro2 = *ro
|
||||||
ro = ro2
|
ro = ro2
|
||||||
|
|
||||||
ticker := time.NewTicker(d)
|
ticker := &time.Ticker{}
|
||||||
|
if d > 0 {
|
||||||
|
ticker = time.NewTicker(d)
|
||||||
defer ticker.Stop()
|
defer ticker.Stop()
|
||||||
|
} else {
|
||||||
|
tc := make(chan time.Time)
|
||||||
|
close(tc)
|
||||||
|
ticker.C = tc
|
||||||
|
}
|
||||||
|
|
||||||
buf := &bytes.Buffer{}
|
buf := &bytes.Buffer{}
|
||||||
for {
|
for {
|
||||||
|
|||||||
@@ -413,12 +413,9 @@ func (ep *entrypoint) sniffingWebsocketFrame(ctx context.Context, rw, cc io.Read
|
|||||||
errc := make(chan error, 1)
|
errc := make(chan error, 1)
|
||||||
|
|
||||||
sampleRate := ep.websocketSampleRate
|
sampleRate := ep.websocketSampleRate
|
||||||
if sampleRate <= 0 {
|
if sampleRate == 0 {
|
||||||
sampleRate = sniffing.DefaultSampleRate
|
sampleRate = sniffing.DefaultSampleRate
|
||||||
}
|
}
|
||||||
if sampleRate > sniffing.MaxSampleRate {
|
|
||||||
sampleRate = sniffing.MaxSampleRate
|
|
||||||
}
|
|
||||||
d := time.Duration(1 / sampleRate * 1e9)
|
d := time.Duration(1 / sampleRate * 1e9)
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
@@ -426,8 +423,15 @@ func (ep *entrypoint) sniffingWebsocketFrame(ctx context.Context, rw, cc io.Read
|
|||||||
*ro2 = *ro
|
*ro2 = *ro
|
||||||
ro = ro2
|
ro = ro2
|
||||||
|
|
||||||
ticker := time.NewTicker(d)
|
ticker := &time.Ticker{}
|
||||||
|
if d > 0 {
|
||||||
|
ticker = time.NewTicker(d)
|
||||||
defer ticker.Stop()
|
defer ticker.Stop()
|
||||||
|
} else {
|
||||||
|
tc := make(chan time.Time)
|
||||||
|
close(tc)
|
||||||
|
ticker.C = tc
|
||||||
|
}
|
||||||
|
|
||||||
buf := &bytes.Buffer{}
|
buf := &bytes.Buffer{}
|
||||||
for {
|
for {
|
||||||
@@ -459,8 +463,15 @@ func (ep *entrypoint) sniffingWebsocketFrame(ctx context.Context, rw, cc io.Read
|
|||||||
*ro2 = *ro
|
*ro2 = *ro
|
||||||
ro = ro2
|
ro = ro2
|
||||||
|
|
||||||
ticker := time.NewTicker(d)
|
ticker := &time.Ticker{}
|
||||||
|
if d > 0 {
|
||||||
|
ticker = time.NewTicker(d)
|
||||||
defer ticker.Stop()
|
defer ticker.Stop()
|
||||||
|
} else {
|
||||||
|
tc := make(chan time.Time)
|
||||||
|
close(tc)
|
||||||
|
ticker.C = tc
|
||||||
|
}
|
||||||
|
|
||||||
buf := &bytes.Buffer{}
|
buf := &bytes.Buffer{}
|
||||||
for {
|
for {
|
||||||
|
|||||||
@@ -557,12 +557,9 @@ func (h *Sniffer) sniffingWebsocketFrame(ctx context.Context, rw, cc io.ReadWrit
|
|||||||
errc := make(chan error, 1)
|
errc := make(chan error, 1)
|
||||||
|
|
||||||
sampleRate := h.WebsocketSampleRate
|
sampleRate := h.WebsocketSampleRate
|
||||||
if sampleRate <= 0 {
|
if sampleRate == 0 {
|
||||||
sampleRate = sniffing.DefaultSampleRate
|
sampleRate = sniffing.DefaultSampleRate
|
||||||
}
|
}
|
||||||
if sampleRate > sniffing.MaxSampleRate {
|
|
||||||
sampleRate = sniffing.MaxSampleRate
|
|
||||||
}
|
|
||||||
d := time.Duration(1 / sampleRate * 1e9)
|
d := time.Duration(1 / sampleRate * 1e9)
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
@@ -570,8 +567,15 @@ func (h *Sniffer) sniffingWebsocketFrame(ctx context.Context, rw, cc io.ReadWrit
|
|||||||
*ro2 = *ro
|
*ro2 = *ro
|
||||||
ro = ro2
|
ro = ro2
|
||||||
|
|
||||||
ticker := time.NewTicker(d)
|
ticker := &time.Ticker{}
|
||||||
|
if d > 0 {
|
||||||
|
ticker = time.NewTicker(d)
|
||||||
defer ticker.Stop()
|
defer ticker.Stop()
|
||||||
|
} else {
|
||||||
|
tc := make(chan time.Time)
|
||||||
|
close(tc)
|
||||||
|
ticker.C = tc
|
||||||
|
}
|
||||||
|
|
||||||
buf := &bytes.Buffer{}
|
buf := &bytes.Buffer{}
|
||||||
for {
|
for {
|
||||||
@@ -603,8 +607,15 @@ func (h *Sniffer) sniffingWebsocketFrame(ctx context.Context, rw, cc io.ReadWrit
|
|||||||
*ro2 = *ro
|
*ro2 = *ro
|
||||||
ro = ro2
|
ro = ro2
|
||||||
|
|
||||||
ticker := time.NewTicker(d)
|
ticker := &time.Ticker{}
|
||||||
|
if d > 0 {
|
||||||
|
ticker = time.NewTicker(d)
|
||||||
defer ticker.Stop()
|
defer ticker.Stop()
|
||||||
|
} else {
|
||||||
|
tc := make(chan time.Time)
|
||||||
|
close(tc)
|
||||||
|
ticker.C = tc
|
||||||
|
}
|
||||||
|
|
||||||
buf := &bytes.Buffer{}
|
buf := &bytes.Buffer{}
|
||||||
for {
|
for {
|
||||||
|
|||||||
@@ -42,8 +42,6 @@ const (
|
|||||||
MaxBodySize = 1024 * 1024 // 1MB
|
MaxBodySize = 1024 * 1024 // 1MB
|
||||||
// DeafultSampleRate is the default websocket sample rate (samples per second).
|
// DeafultSampleRate is the default websocket sample rate (samples per second).
|
||||||
DefaultSampleRate = 10.0
|
DefaultSampleRate = 10.0
|
||||||
// MaxSampleRate is the maximum websocket sample rate (samples per second).
|
|
||||||
MaxSampleRate = 100.0
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@@ -422,12 +420,9 @@ func (h *Sniffer) sniffingWebsocketFrame(ctx context.Context, rw, cc io.ReadWrit
|
|||||||
errc := make(chan error, 1)
|
errc := make(chan error, 1)
|
||||||
|
|
||||||
sampleRate := h.WebsocketSampleRate
|
sampleRate := h.WebsocketSampleRate
|
||||||
if sampleRate <= 0 {
|
if sampleRate == 0 {
|
||||||
sampleRate = DefaultSampleRate
|
sampleRate = DefaultSampleRate
|
||||||
}
|
}
|
||||||
if sampleRate > MaxSampleRate {
|
|
||||||
sampleRate = MaxSampleRate
|
|
||||||
}
|
|
||||||
d := time.Duration(1 / sampleRate * 1e9)
|
d := time.Duration(1 / sampleRate * 1e9)
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
@@ -435,8 +430,15 @@ func (h *Sniffer) sniffingWebsocketFrame(ctx context.Context, rw, cc io.ReadWrit
|
|||||||
*ro2 = *ro
|
*ro2 = *ro
|
||||||
ro = ro2
|
ro = ro2
|
||||||
|
|
||||||
ticker := time.NewTicker(d)
|
ticker := &time.Ticker{}
|
||||||
|
if d > 0 {
|
||||||
|
ticker = time.NewTicker(d)
|
||||||
defer ticker.Stop()
|
defer ticker.Stop()
|
||||||
|
} else {
|
||||||
|
tc := make(chan time.Time)
|
||||||
|
close(tc)
|
||||||
|
ticker.C = tc
|
||||||
|
}
|
||||||
|
|
||||||
buf := &bytes.Buffer{}
|
buf := &bytes.Buffer{}
|
||||||
for {
|
for {
|
||||||
@@ -468,8 +470,15 @@ func (h *Sniffer) sniffingWebsocketFrame(ctx context.Context, rw, cc io.ReadWrit
|
|||||||
*ro2 = *ro
|
*ro2 = *ro
|
||||||
ro = ro2
|
ro = ro2
|
||||||
|
|
||||||
ticker := time.NewTicker(d)
|
ticker := &time.Ticker{}
|
||||||
|
if d > 0 {
|
||||||
|
ticker = time.NewTicker(d)
|
||||||
defer ticker.Stop()
|
defer ticker.Stop()
|
||||||
|
} else {
|
||||||
|
tc := make(chan time.Time)
|
||||||
|
close(tc)
|
||||||
|
ticker.C = tc
|
||||||
|
}
|
||||||
|
|
||||||
buf := &bytes.Buffer{}
|
buf := &bytes.Buffer{}
|
||||||
for {
|
for {
|
||||||
|
|||||||
Reference in New Issue
Block a user