add handler recorder

This commit is contained in:
ginuerzh
2024-09-14 23:21:25 +08:00
parent e7581f0a9e
commit 69455ace9d
39 changed files with 1256 additions and 271 deletions
+62
View File
@@ -1,6 +1,68 @@
package recorder
import (
"context"
"encoding/json"
"net/http"
"time"
"github.com/go-gost/core/recorder"
)
const (
RecorderServiceHandler = "recorder.service.handler"
RecorderServiceHandlerSerial = "recorder.service.handler.serial"
RecorderServiceHandlerTunnel = "recorder.service.handler.tunnel"
)
type HTTPRecorderObject struct {
Host string `json:"host"`
Method string `json:"method"`
Proto string `json:"proto"`
Scheme string `json:"scheme"`
URI string `json:"uri"`
StatusCode int `json:"statusCode"`
RequestHeader http.Header `json:"requestHeader"`
ResponseHeader http.Header `json:"responseHeader"`
// RequestBody string
// ResponseBody string
}
type DNSRecorderObject struct {
ID int `json:"id"`
Name string `json:"name"`
Class string `json:"class"`
Type string `json:"type"`
Question string `json:"question"`
Answer string `json:"answer"`
Cached bool `json:"cached"`
}
type HandlerRecorderObject struct {
Node string `json:"node,omitempty"`
Service string `json:"service"`
Network string `json:"network"`
RemoteAddr string `json:"remote"`
LocalAddr string `json:"local"`
Host string `json:"host"`
Client string `json:"client,omitempty"`
HTTP *HTTPRecorderObject `json:"http,omitempty"`
DNS *DNSRecorderObject `json:"dns,omitempty"`
Err string `json:"err,omitempty"`
Duration time.Duration `json:"duration"`
Time time.Time `json:"time"`
SID string `json:"sid"`
}
func (p *HandlerRecorderObject) Record(ctx context.Context, r recorder.Recorder) error {
if p == nil || r == nil {
return nil
}
data, err := json.Marshal(p)
if err != nil {
return err
}
return r.Record(ctx, data)
}