refactor(middlewares): remove xsync wrapper and replace strutils.SplitLine with bytes.Line

This commit is contained in:
yusing
2025-09-13 22:33:21 +08:00
parent fbe82c3082
commit a483e15a20
3 changed files with 16 additions and 14 deletions

View File

@@ -5,16 +5,16 @@ import (
"net/http"
"github.com/go-playground/validator/v10"
"github.com/puzpuzpuz/xsync/v4"
gphttp "github.com/yusing/go-proxy/internal/net/gphttp"
nettypes "github.com/yusing/go-proxy/internal/net/types"
"github.com/yusing/go-proxy/internal/serialization"
F "github.com/yusing/go-proxy/internal/utils/functional"
)
type (
cidrWhitelist struct {
CIDRWhitelistOpts
cachedAddr F.Map[string, bool] // cache for trusted IPs
cachedAddr *xsync.Map[string, bool] // cache for trusted IPs
}
CIDRWhitelistOpts struct {
Allow []*nettypes.CIDR `validate:"min=1"`
@@ -42,7 +42,7 @@ func init() {
// setup implements MiddlewareWithSetup.
func (wl *cidrWhitelist) setup() {
wl.CIDRWhitelistOpts = cidrWhitelistDefaults
wl.cachedAddr = F.NewMapOf[string, bool]()
wl.cachedAddr = xsync.NewMap[string, bool](xsync.WithPresize(100))
}
// before implements RequestModifier.

View File

@@ -1,6 +1,7 @@
package middleware
import (
"bytes"
"context"
"errors"
"fmt"
@@ -115,11 +116,12 @@ func fetchUpdateCFIPRange(endpoint string, cfCIDRs *[]*nettypes.CIDR) error {
return err
}
for _, line := range strutils.SplitLine(string(body)) {
if line == "" {
for line := range bytes.Lines(body) {
line = bytes.TrimSpace(line)
if len(line) == 0 {
continue
}
_, cidr, err := net.ParseCIDR(line)
_, cidr, err := net.ParseCIDR(string(line))
if err != nil {
return fmt.Errorf("cloudflare responeded an invalid CIDR: %s", line)
}

View File

@@ -6,13 +6,13 @@ import (
"path"
"sync"
"github.com/puzpuzpuz/xsync/v4"
"github.com/rs/zerolog/log"
"github.com/yusing/go-proxy/internal/common"
"github.com/yusing/go-proxy/internal/gperr"
"github.com/yusing/go-proxy/internal/task"
U "github.com/yusing/go-proxy/internal/utils"
F "github.com/yusing/go-proxy/internal/utils/functional"
W "github.com/yusing/go-proxy/internal/watcher"
"github.com/yusing/go-proxy/internal/utils"
"github.com/yusing/go-proxy/internal/watcher"
"github.com/yusing/go-proxy/internal/watcher/events"
)
@@ -20,13 +20,13 @@ const errPagesBasePath = common.ErrorPagesBasePath
var (
setupOnce sync.Once
dirWatcher W.Watcher
fileContentMap = F.NewMapOf[string, []byte]()
dirWatcher watcher.Watcher
fileContentMap = xsync.NewMap[string, []byte](xsync.WithGrowOnly())
)
func setup() {
t := task.RootTask("error_page", false)
dirWatcher = W.NewDirectoryWatcher(t, errPagesBasePath)
dirWatcher = watcher.NewDirectoryWatcher(t, errPagesBasePath)
loadContent()
go watchDir()
}
@@ -46,13 +46,13 @@ func GetErrorPageByStatus(statusCode int) (content []byte, ok bool) {
}
func loadContent() {
files, err := U.ListFiles(errPagesBasePath, 0)
files, err := utils.ListFiles(errPagesBasePath, 0)
if err != nil {
log.Err(err).Msg("failed to list error page resources")
return
}
for _, file := range files {
if fileContentMap.Has(file) {
if _, ok := fileContentMap.Load(file); ok {
continue
}
content, err := os.ReadFile(file)