The v1/ecaptureq.proto file in this directory defines the core Protobuf protocol used between eCapture and external components (such as collectors and debugging tools).
- Proto Package Name:
event - Go Package Path:
./pb(seeoption go_package = "./pb";) - Source File Location:
protobuf/proto/v1/ecaptureq.proto - Generated Code Location:
protobuf/gen/v1/ecaptureq.pb.go
Used to identify the type of log entry:
LOG_TYPE_HEARTBEAT(0): Heartbeat information, used for health checks and connection keep-alive.LOG_TYPE_PROCESS_LOG(1): Process execution logs, such as system events, error messages, etc.LOG_TYPE_EVENT(2): Actual captured business data events (e.g., TLS/HTTP data).
A unified representation of a single event (packet/session fragment) captured by eCapture, corresponding to the Go struct pb.Event:
int64 timestamp: Event timestamp.string uuid: Unique event identifier, used for correlation and deduplication.string src_ip/uint32 src_port: Source IP address and port.string dst_ip/uint32 dst_port: Destination IP address and port.int64 pid: Process ID.string pname: Process name, e.g.,curl,nginx, etc.uint32 type: Event/Protocol type enum value:0: Unknown1: HTTP/1.x Request2: HTTP/2 Request3: HTTP/1.x Response4: HTTP/2 Response
uint32 length: Effective length of thepayload(in bytes).[]byte payload: Actual payload data.
Note: In the internal eCaptureQ backend model, fields such as
is_binary,payload_utf8, andpayload_binaryare derived to distinguish between text/binary display. However, these are extension fields used internally by the server and UI, and do not appear directly in the ProtobufEventmessage.
Heartbeat message, used for connection keep-alive and statistics, corresponding to the Go struct pb.Heartbeat:
int64 timestamp: Timestamp when the heartbeat was sent.int64 count: Heartbeat count or statistical values like cumulative event count.string message: Additional information (e.g., version number, status description, etc.).
Top-level log encapsulation structure, uniformly carrying different types of business data:
LogType log_type: Log type (LOG_TYPE_HEARTBEAT/LOG_TYPE_PROCESS_LOG/LOG_TYPE_EVENT).oneof payload: Carries one of the following three based on thelog_type:Event event_payload: Carries event data whenlog_type = LOG_TYPE_EVENT.Heartbeat heartbeat_payload: Carries heartbeat information whenlog_type = LOG_TYPE_HEARTBEAT.string run_log: Carries a standard execution log string whenlog_type = LOG_TYPE_PROCESS_LOG.
This client can be used as a reference for integrating eCapture into other systems:
import (
pb "github.com/gojue/ecapture/protobuf/gen/v1"
"golang.org/x/net/websocket"
"google.golang.org/protobuf/proto"
)
// Connect
ws, err := websocket.Dial("ws://127.0.0.1:28257/", "", "http://localhost/")
if err != nil {
// Handle error
}
defer ws.Close()
// Receive messages
for {
var msgData []byte
err := websocket.Message.Receive(ws, &msgData)
if err != nil {
break
}
var logEntry pb.LogEntry
err = proto.Unmarshal(msgData, &logEntry)
if err != nil {
continue
}
// Process logEntry based on logEntry.LogType
}