Skip to content

Commit 4438309

Browse files
committed
update deps
added a slog/log adapter for ftpserverlib 0.28.0 Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
1 parent 23d6e0d commit 4438309

4 files changed

Lines changed: 126 additions & 27 deletions

File tree

go.mod

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@ require (
1313
github.com/aws/aws-sdk-go-v2 v1.41.0
1414
github.com/aws/aws-sdk-go-v2/config v1.32.6
1515
github.com/aws/aws-sdk-go-v2/credentials v1.19.6
16-
github.com/aws/aws-sdk-go-v2/service/s3 v1.94.0
16+
github.com/aws/aws-sdk-go-v2/service/s3 v1.95.0
1717
github.com/aws/aws-sdk-go-v2/service/sts v1.41.5
1818
github.com/bmatcuk/doublestar/v4 v4.9.1
1919
github.com/cockroachdb/cockroach-go/v2 v2.4.3
2020
github.com/coreos/go-oidc/v3 v3.17.0
2121
github.com/drakkan/webdav v0.0.0-20241026165615-b8b8f74ae71b
2222
github.com/eikenb/pipeat v0.0.0-20251030185646-385cd3c3e07b
23-
github.com/fclairamb/ftpserverlib v0.27.0
23+
github.com/fclairamb/ftpserverlib v0.28.0
2424
github.com/fclairamb/go-log v0.6.0
2525
github.com/go-acme/lego/v4 v4.30.1
2626
github.com/go-chi/chi/v5 v5.2.3
@@ -32,7 +32,7 @@ require (
3232
github.com/hashicorp/go-hclog v1.6.3
3333
github.com/hashicorp/go-plugin v1.7.0
3434
github.com/hashicorp/go-retryablehttp v0.7.8
35-
github.com/jackc/pgx/v5 v5.7.6
35+
github.com/jackc/pgx/v5 v5.8.0
3636
github.com/jlaffaye/ftp v0.2.0
3737
github.com/klauspost/compress v1.18.2
3838
github.com/lithammer/shortuuid/v4 v4.2.0
@@ -173,10 +173,10 @@ require (
173173
golang.org/x/text v0.32.0 // indirect
174174
golang.org/x/tools v0.40.0 // indirect
175175
golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect
176-
google.golang.org/genproto v0.0.0-20251213004720-97cd9d5aeac2 // indirect
177-
google.golang.org/genproto/googleapis/api v0.0.0-20251213004720-97cd9d5aeac2 // indirect
178-
google.golang.org/genproto/googleapis/rpc v0.0.0-20251213004720-97cd9d5aeac2 // indirect
179-
google.golang.org/grpc v1.77.0 // indirect
176+
google.golang.org/genproto v0.0.0-20251222181119-0a764e51fe1b // indirect
177+
google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b // indirect
178+
google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect
179+
google.golang.org/grpc v1.78.0 // indirect
180180
google.golang.org/protobuf v1.36.11 // indirect
181181
gopkg.in/yaml.v3 v3.0.1 // indirect
182182
)

go.sum

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,8 @@ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.16 h1:oHjJHeUy
8383
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.16/go.mod h1:iRSNGgOYmiYwSCXxXaKb9HfOEj40+oTKn8pTxMlYkRM=
8484
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.16 h1:NSbvS17MlI2lurYgXnCOLvCFX38sBW4eiVER7+kkgsU=
8585
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.16/go.mod h1:SwT8Tmqd4sA6G1qaGdzWCJN99bUmPGHfRwwq3G5Qb+A=
86-
github.com/aws/aws-sdk-go-v2/service/s3 v1.94.0 h1:SWTxh/EcUCDVqi/0s26V6pVUq0BBG7kx0tDTmF/hCgA=
87-
github.com/aws/aws-sdk-go-v2/service/s3 v1.94.0/go.mod h1:79S2BdqCJpScXZA2y+cpZuocWsjGjJINyXnOsf5DTz8=
86+
github.com/aws/aws-sdk-go-v2/service/s3 v1.95.0 h1:MIWra+MSq53CFaXXAywB2qg9YvVZifkk6vEGl/1Qor0=
87+
github.com/aws/aws-sdk-go-v2/service/s3 v1.95.0/go.mod h1:79S2BdqCJpScXZA2y+cpZuocWsjGjJINyXnOsf5DTz8=
8888
github.com/aws/aws-sdk-go-v2/service/signin v1.0.4 h1:HpI7aMmJ+mm1wkSHIA2t5EaFFv5EFYXePW30p1EIrbQ=
8989
github.com/aws/aws-sdk-go-v2/service/signin v1.0.4/go.mod h1:C5RdGMYGlfM0gYq/tifqgn4EbyX99V15P2V3R+VHbQU=
9090
github.com/aws/aws-sdk-go-v2/service/sso v1.30.8 h1:aM/Q24rIlS3bRAhTyFurowU8A0SMyGDtEOY/l/s/1Uw=
@@ -143,8 +143,8 @@ github.com/envoyproxy/protoc-gen-validate v1.3.0/go.mod h1:HvYl7zwPa5mffgyeTUHA9
143143
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
144144
github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
145145
github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=
146-
github.com/fclairamb/ftpserverlib v0.27.0 h1:HcCdVNTs9Irc0T/eHRqkcGkOejwg39WiqBdt2vLZIpE=
147-
github.com/fclairamb/ftpserverlib v0.27.0/go.mod h1:Wi6QrU/oxgjSgcDjFUxQHlkJfVU/94t4+zNufrkdNU8=
146+
github.com/fclairamb/ftpserverlib v0.28.0 h1:SdQYxxpAM6Y+FGffKAHCcPxLIdagNOCqOmY1WXYJfe0=
147+
github.com/fclairamb/ftpserverlib v0.28.0/go.mod h1:oiQyZ8h8P5zuZhIkZ+SdZvU69gSHZZVuKdhIdZ+RSxI=
148148
github.com/fclairamb/go-log v0.6.0 h1:1V7BJ75P2PvanLHRyGBBFjncB6d4AgEmu+BPWKbMkaU=
149149
github.com/fclairamb/go-log v0.6.0/go.mod h1:cyXxOw4aJwO6lrZb8GRELSw+sxO6wwkLJdsjY5xYCWA=
150150
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
@@ -161,10 +161,6 @@ github.com/go-chi/render v1.0.3 h1:AsXqd2a1/INaIfUSKq3G5uA8weYx20FOsM7uSoCyyt4=
161161
github.com/go-chi/render v1.0.3/go.mod h1:/gr3hVkmYR0YlEy3LxCuVRFzEu9Ruok+gFqbIofjao0=
162162
github.com/go-jose/go-jose/v4 v4.1.3 h1:CVLmWDhDVRa6Mi/IgCgaopNosCaHz7zrMeF9MlZRkrs=
163163
github.com/go-jose/go-jose/v4 v4.1.3/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08=
164-
github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU=
165-
github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0=
166-
github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4=
167-
github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs=
168164
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
169165
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
170166
github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
@@ -221,8 +217,8 @@ github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsI
221217
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
222218
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo=
223219
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
224-
github.com/jackc/pgx/v5 v5.7.6 h1:rWQc5FwZSPX58r1OQmkuaNicxdmExaEz5A2DO2hUuTk=
225-
github.com/jackc/pgx/v5 v5.7.6/go.mod h1:aruU7o91Tc2q2cFp5h4uP3f6ztExVpyVv88Xl/8Vl8M=
220+
github.com/jackc/pgx/v5 v5.8.0 h1:TYPDoleBBme0xGSAX3/+NujXXtpZn9HBONkQC7IEZSo=
221+
github.com/jackc/pgx/v5 v5.8.0/go.mod h1:QVeDInX2m9VyzvNeiCJVjCkNFqzsNb43204HshNSZKw=
226222
github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo=
227223
github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
228224
github.com/jhump/protoreflect v1.17.0 h1:qOEr613fac2lOuTgWN4tPAtLL7fUSbuJL5X5XumQh94=
@@ -463,14 +459,14 @@ gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk=
463459
gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E=
464460
google.golang.org/api v0.257.0 h1:8Y0lzvHlZps53PEaw+G29SsQIkuKrumGWs9puiexNAA=
465461
google.golang.org/api v0.257.0/go.mod h1:4eJrr+vbVaZSqs7vovFd1Jb/A6ml6iw2e6FBYf3GAO4=
466-
google.golang.org/genproto v0.0.0-20251213004720-97cd9d5aeac2 h1:stRtB2UVzFOWnorVuwF0BVVEjQ3AN6SjHWdg811UIQM=
467-
google.golang.org/genproto v0.0.0-20251213004720-97cd9d5aeac2/go.mod h1:yJ2HH4EHEDTd3JiLmhds6NkJ17ITVYOdV3m3VKOnws0=
468-
google.golang.org/genproto/googleapis/api v0.0.0-20251213004720-97cd9d5aeac2 h1:7LRqPCEdE4TP4/9psdaB7F2nhZFfBiGJomA5sojLWdU=
469-
google.golang.org/genproto/googleapis/api v0.0.0-20251213004720-97cd9d5aeac2/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto=
470-
google.golang.org/genproto/googleapis/rpc v0.0.0-20251213004720-97cd9d5aeac2 h1:2I6GHUeJ/4shcDpoUlLs/2WPnhg7yJwvXtqcMJt9liA=
471-
google.golang.org/genproto/googleapis/rpc v0.0.0-20251213004720-97cd9d5aeac2/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk=
472-
google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM=
473-
google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig=
462+
google.golang.org/genproto v0.0.0-20251222181119-0a764e51fe1b h1:kqShdsddZrS6q+DGBCA73CzHsKDu5vW4qw78tFnbVvY=
463+
google.golang.org/genproto v0.0.0-20251222181119-0a764e51fe1b/go.mod h1:gw1DtiPCt5uh/HV9STVEeaO00S5ATsJiJ2LsZV8lcDI=
464+
google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b h1:uA40e2M6fYRBf0+8uN5mLlqUtV192iiksiICIBkYJ1E=
465+
google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b/go.mod h1:Xa7le7qx2vmqB/SzWUBa7KdMjpdpAHlh5QCSnjessQk=
466+
google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b h1:Mv8VFug0MP9e5vUxfBcE3vUkV6CImK3cMNMIDFjmzxU=
467+
google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ=
468+
google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc=
469+
google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U=
474470
google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=
475471
google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
476472
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

internal/ftpd/ftpd.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919
"context"
2020
"errors"
2121
"fmt"
22+
"log/slog"
2223
"net"
2324
"os"
2425
"path/filepath"
@@ -401,9 +402,14 @@ func (c *Configuration) Initialize(configDir string) error {
401402
server := NewServer(c, configDir, binding, idx)
402403

403404
go func(s *Server) {
404-
ftpLogger := logger.LeveledLogger{Sender: "ftpserverlib"}
405+
ftpLogger := logger.NewSlogAdapter("ftpserverlib", []slog.Attr{
406+
{
407+
Key: "server_id",
408+
Value: slog.StringValue(fmt.Sprintf("FTP_%d", s.ID)),
409+
},
410+
})
405411
ftpServer := ftpserver.NewFtpServer(s)
406-
ftpServer.Logger = ftpLogger.With("server_id", fmt.Sprintf("FTP_%v", s.ID))
412+
ftpServer.Logger = slog.New(ftpLogger)
407413
logger.Info(logSender, "", "starting FTP serving, binding: %v", s.binding.GetAddress())
408414
util.CheckTCP4Port(s.binding.Port)
409415
exitChannel <- ftpServer.ListenAndServe()

internal/logger/slog.go

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
// Copyright (C) 2025 Nicola Murino
2+
//
3+
// This program is free software: you can redistribute it and/or modify
4+
// it under the terms of the GNU Affero General Public License as published
5+
// by the Free Software Foundation, version 3.
6+
//
7+
// This program is distributed in the hope that it will be useful,
8+
// but WITHOUT ANY WARRANTY; without even the implied warranty of
9+
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10+
// GNU Affero General Public License for more details.
11+
//
12+
// You should have received a copy of the GNU Affero General Public License
13+
// along with this program. If not, see <https://www.gnu.org/licenses/>.
14+
15+
package logger
16+
17+
import (
18+
"context"
19+
"log/slog"
20+
"slices"
21+
22+
"github.com/rs/zerolog"
23+
)
24+
25+
// slogAdapter is an adapter for slog.Handler
26+
type slogAdapter struct {
27+
sender string
28+
attrs []slog.Attr
29+
}
30+
31+
// NewSlogAdapter creates a slog.Handler adapter
32+
func NewSlogAdapter(sender string, attrs []slog.Attr) *slogAdapter {
33+
return &slogAdapter{
34+
sender: sender,
35+
attrs: attrs,
36+
}
37+
}
38+
39+
func (l *slogAdapter) Enabled(ctx context.Context, level slog.Level) bool {
40+
// Log level is handled by our implementation
41+
return true
42+
}
43+
44+
func (l *slogAdapter) Handle(ctx context.Context, r slog.Record) error {
45+
var ev *zerolog.Event
46+
switch r.Level {
47+
case slog.LevelDebug:
48+
ev = logger.Debug()
49+
case slog.LevelInfo:
50+
ev = logger.Info()
51+
case slog.LevelWarn:
52+
ev = logger.Warn()
53+
case slog.LevelError:
54+
ev = logger.Error()
55+
default:
56+
ev = logger.Debug()
57+
}
58+
59+
ev.Timestamp()
60+
if l.sender != "" {
61+
ev.Str("sender", l.sender)
62+
}
63+
64+
addSlogAttr := func(a slog.Attr) {
65+
if a.Key == "timestamp" {
66+
return
67+
}
68+
ev.Any(a.Key, a.Value.Any())
69+
}
70+
71+
for _, a := range l.attrs {
72+
addSlogAttr(a)
73+
}
74+
75+
r.Attrs(func(a slog.Attr) bool {
76+
addSlogAttr(a)
77+
return true
78+
})
79+
80+
ev.Msg(r.Message)
81+
82+
return nil
83+
}
84+
85+
func (l *slogAdapter) WithAttrs(attrs []slog.Attr) slog.Handler {
86+
newHandler := *l
87+
newHandler.attrs = slices.Concat(l.attrs, attrs)
88+
return &newHandler
89+
}
90+
91+
func (l *slogAdapter) WithGroup(name string) slog.Handler {
92+
newHandler := *l
93+
if name != "" {
94+
newHandler.sender = name
95+
}
96+
return &newHandler
97+
}

0 commit comments

Comments
 (0)