in pkg/tools/ssl/node.go [47:96]
func (r *Register) Node(sslSymbolOffsetsMap, nodeTLSSymbolOffsetsMap *ebpf.Map,
sslWrite, sslWriteRet, sslRead, sslReadRet,
sslNew, tlsWrap, tlsWrapRet *ebpf.Program) {
r.addHandler("Node", func() (bool, error) {
libSSLModule, nodeModule, openSSLAttach, err := r.findNodeTLSModules()
if err != nil {
return false, err
}
if libSSLModule == nil || nodeModule == nil {
return false, nil
}
v, err := r.getNodeVersion(nodeModule.Path)
if err != nil {
return false, err
}
log.Debugf("read the nodejs version, pid: %d, version: %s", r.pid, v)
// openSSL symbol offsets
if sslSymbolOffsetsMap != nil {
config, err := r.buildOpenSSLSymAddrConfig(libSSLModule.Path)
if err != nil {
return false, err
}
if err := sslSymbolOffsetsMap.Put(uint32(r.pid), config); err != nil {
return false, err
}
}
if nodeTLSSymbolOffsetsMap != nil {
config, err := r.findNodeTLSAddrConfig(v)
if err != nil {
return false, err
}
// setting the locations
if err := nodeTLSSymbolOffsetsMap.Put(uint32(r.pid), config); err != nil {
return false, fmt.Errorf("setting the node TLS location failure, pid: %d, error: %v", r.pid, err)
}
}
libSSLLinker := r.linker.OpenUProbeExeFile(libSSLModule.Path)
if openSSLAttach {
libSSLLinker.AddLink("SSL_write", sslWrite, sslWriteRet)
libSSLLinker.AddLink("SSL_read", sslRead, sslReadRet)
}
if e := r.nodeTLSRegisterProbes(v, libSSLLinker, nodeModule, sslNew, tlsWrap, tlsWrapRet); e != nil {
return false, e
}
if e := r.linker.HasError(); e != nil {
return false, e
}
return true, nil
})
}