mirror of
https://github.com/kubeshark/kubeshark.git
synced 2025-09-27 05:23:06 +00:00
* initial tls tapper commit * add tls flag to mizu cli * support ssl_read_ex/ssl_write_ex * use hostproc to find libssl * auto discover tls processes * support libssl1.0 * recompile ebpf with old clang/llvm * Update tap/passive_tapper.go Co-authored-by: M. Mert Yıldıran <mehmet@up9.com> * Update tap/tlstapper/tls_poller.go Co-authored-by: M. Mert Yıldıran <mehmet@up9.com> * Update tap/tlstapper/tls_poller.go Co-authored-by: M. Mert Yıldıran <mehmet@up9.com> * Update tap/tlstapper/tls_poller.go Co-authored-by: M. Mert Yıldıran <mehmet@up9.com> * Update tap/tlstapper/tls_poller.go Co-authored-by: M. Mert Yıldıran <mehmet@up9.com> * Update tap/tlstapper/tls_poller.go Co-authored-by: M. Mert Yıldıran <mehmet@up9.com> * Update tap/tlstapper/tls_poller.go Co-authored-by: M. Mert Yıldıran <mehmet@up9.com> * Update tap/tlstapper/tls_poller.go Co-authored-by: M. Mert Yıldıran <mehmet@up9.com> * upgrade ebpf go lib * handling big tls messages * fixing max buffer size in ebpf * remove unused import * fix linter issues * minor pr fixes * compile with old clang * fix cgroup file format * pr fixes + cgroup extract enhance * fix linter * adding indirect ebpf dep to agent go.mod * adding ebpf docker builder * minor pr fixes * add req resp matcher to dissect * rename ssl hooks to ssl hooks structs * move to alpine, use local copy of mizu instead of git, add readme * use global req resp mather for tls Co-authored-by: M. Mert Yıldıran <mehmet@up9.com> Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
42 lines
583 B
Go
42 lines
583 B
Go
package tlstapper
|
|
|
|
import (
|
|
"io"
|
|
"time"
|
|
)
|
|
|
|
type tlsReader struct {
|
|
key string
|
|
chunks chan *tlsChunk
|
|
data []byte
|
|
doneHandler func(r *tlsReader)
|
|
}
|
|
|
|
func (r *tlsReader) Read(p []byte) (int, error) {
|
|
var chunk *tlsChunk
|
|
|
|
for len(r.data) == 0 {
|
|
var ok bool
|
|
select {
|
|
case chunk, ok = <-r.chunks:
|
|
if !ok {
|
|
return 0, io.EOF
|
|
}
|
|
|
|
r.data = chunk.getRecordedData()
|
|
case <-time.After(time.Second * 3):
|
|
r.doneHandler(r)
|
|
return 0, io.EOF
|
|
}
|
|
|
|
if len(r.data) > 0 {
|
|
break
|
|
}
|
|
}
|
|
|
|
l := copy(p, r.data)
|
|
r.data = r.data[l:]
|
|
|
|
return l, nil
|
|
}
|