Quick Start
gogetway is a Go framework for building TCP/HTTP gateways with traffic recording, replay, and passive mirroring.
This page walks you through the three most common usage patterns in 5 minutes.
1. Install
go get github.com/wangshiben/gogetway
If you just want a ready-made proxy CLI, use
cmd/tcp-proxy— see the Readme.
2. Active Proxy + Recording
The simplest pattern: listen on a local port, forward to an upstream, and persist traffic to a file.
package main
import (
"context"
"log"
"net"
"os"
"github.com/wangshiben/gogetway/getwayServer"
)
func main() {
f, _ := os.Create("./traffic.log")
defer f.Close()
writeFunc := func(data []byte, ctx context.Context) (int, error) {
log.Printf("recorded %d bytes", len(data))
return len(data), nil
}
server := getwayServer.NewSimpleTCPServerWithWriterAndFunc(
"127.0.0.1:8080", // upstream
":9000", // local listen
getwayServer.TCPType,
f,
writeFunc,
)
server.SetConnectTargetFunc(func(ctx context.Context, client net.Conn) (net.Conn, error) {
return net.Dial("tcp", "127.0.0.1:8080")
})
server.StartListen() // blocking
}
Next: SimpleTCPServer in depth
3. Traffic Replay
Replay a recorded file to a target service:
import "github.com/wangshiben/gogetway/tcpPlayback"
count, err := tcpPlayback.ReplayFileToTarget(
"./traffic.log",
"127.0.0.1:9999",
false, // whether to honor original inter-packet timing
nil, // optional DataParser
)
log.Printf("replayed=%d err=%v", count, err)
Next: TcpPlayer in depth
4. Passive Mirror (Zero-Deploy)
Use pcap-based capture to mirror or sidecar-record an already-deployed service:
mirror := getwayServer.NewGopacketTrafficMirror(getwayServer.GopacketMirrorConfig{
ObservedPort: 8090,
TargetAddr: "127.0.0.1:18090", // sidecar target; empty = record only
Writer: recordFile,
})
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
mirror.Start(ctx, mySource) // mySource implements ObservedPacketSource
Next: GopacketTrafficMirror in depth
5. Doc Index
| Topic | Page |
|---|---|
| Active proxy (listen + forward + record) | SimpleTCPServer |
| Passive mirror (pcap capture) | GopacketTrafficMirror |
| Traffic replay | TcpPlayer |
| Resource-pool abstraction | ConnectResource / ResourceGroup |
| Lock management | LockGroup |
| Recording protocol format | proto format |