feat(socket-proxy): implement Docker socket proxy and related configurations

- Updated Dockerfile and Makefile for socket-proxy build.
- Modified go.mod to include necessary dependencies.
- Updated CI workflows for socket-proxy integration.
- Better module isolation
- Code refactor
This commit is contained in:
yusing
2025-05-10 09:47:03 +08:00
parent 4ddfb48b9d
commit 8fe94d6d14
38 changed files with 658 additions and 523 deletions

View File

@@ -3,8 +3,8 @@ package accesslog_test
import (
"testing"
"github.com/yusing/go-proxy/internal/docker"
. "github.com/yusing/go-proxy/internal/logging/accesslog"
"github.com/yusing/go-proxy/internal/docker"
"github.com/yusing/go-proxy/internal/utils"
expect "github.com/yusing/go-proxy/internal/utils/testing"
)

View File

@@ -9,9 +9,8 @@ import (
"time"
"github.com/coder/websocket"
"github.com/yusing/go-proxy/internal/net/gphttp"
"github.com/puzpuzpuz/xsync/v3"
"github.com/yusing/go-proxy/internal/net/gphttp/gpwebsocket"
F "github.com/yusing/go-proxy/internal/utils/functional"
)
type logEntryRange struct {
@@ -22,8 +21,8 @@ type memLogger struct {
*bytes.Buffer
sync.RWMutex
notifyLock sync.RWMutex
connChans F.Map[chan *logEntryRange, struct{}]
listeners F.Map[chan []byte, struct{}]
connChans *xsync.MapOf[chan *logEntryRange, struct{}]
listeners *xsync.MapOf[chan []byte, struct{}]
}
type MemLogger io.Writer
@@ -40,8 +39,8 @@ const (
var memLoggerInstance = &memLogger{
Buffer: bytes.NewBuffer(make([]byte, maxMemLogSize)),
connChans: F.NewMapOf[chan *logEntryRange, struct{}](),
listeners: F.NewMapOf[chan []byte, struct{}](),
connChans: xsync.NewMapOf[chan *logEntryRange, struct{}](),
listeners: xsync.NewMapOf[chan []byte, struct{}](),
}
func GetMemLogger() MemLogger {
@@ -136,7 +135,7 @@ func (m *memLogger) Write(p []byte) (n int, err error) {
func (m *memLogger) ServeHTTP(w http.ResponseWriter, r *http.Request) {
conn, err := gpwebsocket.Initiate(w, r)
if err != nil {
gphttp.ServerError(w, r, err)
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
@@ -153,7 +152,7 @@ func (m *memLogger) ServeHTTP(w http.ResponseWriter, r *http.Request) {
}()
if err := m.wsInitial(r.Context(), conn); err != nil {
gphttp.ServerError(w, r, err)
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}