Skip to content

Commit caca599

Browse files
committed
Make enhanced code in SMTP replies optional (fixes #23)
1 parent 818de6c commit caca599

File tree

8 files changed

+56
-48
lines changed

8 files changed

+56
-48
lines changed

cmd/postfix_exporter/main.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package main
22

33
import (
44
"net/http"
5+
_ "net/http/pprof"
56
"os"
67

78
"github.com/alecthomas/kingpin/v2"

exporter/exporter.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ var (
6464

6565
hostSaidPart = `host ` + hostnameWithIPAddrPart + ` said: (.+) \(in reply to \w+[\w /-]*\)`
6666
reHostSaid = regexp.MustCompile(hostSaidPart)
67-
reHostReplyStatus = regexp.MustCompile(`^(\d{3})(.{1,3}(\d\.\d\.\d)|[^ ]+) (.+)$`)
67+
reHostReplyStatus = regexp.MustCompile(`^(\d{3})(.{1,3}(\d\.\d\.\d)|[^ ]+|) (.+)$`)
6868
reSmtpHostSaid = regexp.MustCompile(`^\w+: ` + hostSaidPart + `$`)
6969
)
7070

exporter/testdata/mail.log

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ Jan 1 00:00:00 hostname postfix/lmtp[12345]: 123456789AB: to=<[email protected]>,
5050
Jan 1 00:00:00 hostname postfix/lmtp[12345]: Unsupported
5151
# smtp
5252
Jan 1 00:00:00 hostname postfix/smtp[12345]: 123456789AB: to=<[email protected]>, relay=example.com[123.45.67.89]:123, delay=0.12, delays=0.12/0.12/0.12/0.12, dsn=1.2.3, status=sent (250 2.0.0 Ok: queued as aaaaaaaaaaaaa)
53+
Jan 1 00:00:00 hostname postfix/smtp[12345]: 123456789AB: to=<[email protected]>, relay=example.com[123.45.67.89]:123, delay=0.12, delays=0.12/0.12/0.12/0.12, dsn=1.2.3, status=sent (250 OK queued as aaaaaaaaaaaaa)
5354
2023-02-01T01:02:04.123456+00:00 hostname postfix/smtp[12345]: 123456789AB: to=<[email protected]>, relay=example.com[123.45.67.89]:25, delay=1.23, delays=1.23/1.23/1.23/1.23, dsn=1.2.3, status=bounced (host example.com[123.45.67.89] said: 123 #1.2.3 DKIM unauthenticated mail is prohibited, please check your DKIM signature. If you believe that this failure is in error, please refer to https://tools.ietf.org/html/rfc6376 or contact [email protected] for more information via alternate means. (in reply to end of DATA command))
5455
Jan 1 00:00:00 hostname postfix/smtp[12345]: 123456789AB: [email protected], relay=example.com[123.45.67.89]:25, delay=2, delays=2/2/2/2, dsn=1.2.3, status=deferred (host example.com[123.45.67.89] said: 123-1.2.3 The recipient's inbox is out of storage space. Please direct the 123-1.2.3 recipient to 123 1.2.3 https://support.google.com/mail/?p=OverQuotaTemp 000-0000000000000000000000000000000000000000000.000 - gsmtp (in reply to RCPT TO command))
5556
Jan 1 00:00:00 hostname postfix/smtp[12345]: 123456789AB: [email protected], relay=example.com[123.45.67.89]:25, delay=2, delays=2/2/2/2, dsn=1.2.3, status=deferred (host example.com[123.45.67.89] said: 12 Malformed (in reply to RCPT TO command))

exporter/testdata/metrics-with-config.txt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ postfix_delay_seconds_count{status="sent",subprogram="lmtp"} 1
2626
postfix_delay_seconds{status="sent",subprogram="smtp",quantile="0.5"} 0.12
2727
postfix_delay_seconds{status="sent",subprogram="smtp",quantile="0.9"} 0.12
2828
postfix_delay_seconds{status="sent",subprogram="smtp",quantile="0.99"} 0.12
29-
postfix_delay_seconds_sum{status="sent",subprogram="smtp"} 0.12
30-
postfix_delay_seconds_count{status="sent",subprogram="smtp"} 1
29+
postfix_delay_seconds_sum{status="sent",subprogram="smtp"} 0.24
30+
postfix_delay_seconds_count{status="sent",subprogram="smtp"} 2
3131
# HELP postfix_disconnects_total Total number of times disconnect events were collected.
3232
# TYPE postfix_disconnects_total counter
3333
postfix_disconnects_total{subprogram="smtpd"} 1
@@ -41,7 +41,7 @@ postfix_logs_total{severity="info",subprogram="cleanup"} 2
4141
postfix_logs_total{severity="info",subprogram="lmtp"} 3
4242
postfix_logs_total{severity="info",subprogram="postscreen"} 22
4343
postfix_logs_total{severity="info",subprogram="qmgr"} 2
44-
postfix_logs_total{severity="info",subprogram="smtp"} 8
44+
postfix_logs_total{severity="info",subprogram="smtp"} 9
4545
postfix_logs_total{severity="info",subprogram="smtpd"} 9
4646
postfix_logs_total{severity="info",subprogram="unknown"} 1
4747
postfix_logs_total{severity="warning",subprogram="smtpd"} 2
@@ -96,13 +96,14 @@ postfix_status_replies_total{code="123",enhanced_code="1.2.3",status="bounced",s
9696
postfix_status_replies_total{code="123",enhanced_code="1.2.3",status="deferred",subprogram="smtp",text="storage"} 1
9797
postfix_status_replies_total{code="250",enhanced_code="2.0.0",status="sent",subprogram="lmtp",text="sent"} 1
9898
postfix_status_replies_total{code="250",enhanced_code="2.0.0",status="sent",subprogram="smtp",text="sent"} 1
99+
postfix_status_replies_total{code="250",enhanced_code="",status="sent",subprogram="smtp",text="ok"} 1
99100
# HELP postfix_statuses_total Total number of times server message status change events were collected.
100101
# TYPE postfix_statuses_total counter
101102
postfix_statuses_total{status="bounced",subprogram="lmtp"} 1
102103
postfix_statuses_total{status="bounced",subprogram="smtp"} 1
103104
postfix_statuses_total{status="deferred",subprogram="smtp"} 2
104105
postfix_statuses_total{status="sent",subprogram="lmtp"} 1
105-
postfix_statuses_total{status="sent",subprogram="smtp"} 1
106+
postfix_statuses_total{status="sent",subprogram="smtp"} 2
106107
# HELP postfix_unsupported_total Total number of unsupported log records.
107108
# TYPE postfix_unsupported_total counter
108109
postfix_unsupported_total 8

exporter/testdata/metrics-without-config.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ postfix_delay_seconds_count{status="sent",subprogram="lmtp"} 1
2626
postfix_delay_seconds{status="sent",subprogram="smtp",quantile="0.5"} 0.12
2727
postfix_delay_seconds{status="sent",subprogram="smtp",quantile="0.9"} 0.12
2828
postfix_delay_seconds{status="sent",subprogram="smtp",quantile="0.99"} 0.12
29-
postfix_delay_seconds_sum{status="sent",subprogram="smtp"} 0.12
30-
postfix_delay_seconds_count{status="sent",subprogram="smtp"} 1
29+
postfix_delay_seconds_sum{status="sent",subprogram="smtp"} 0.24
30+
postfix_delay_seconds_count{status="sent",subprogram="smtp"} 2
3131
# HELP postfix_disconnects_total Total number of times disconnect events were collected.
3232
# TYPE postfix_disconnects_total counter
3333
postfix_disconnects_total{subprogram="smtpd"} 1
@@ -41,7 +41,7 @@ postfix_logs_total{severity="info",subprogram="cleanup"} 2
4141
postfix_logs_total{severity="info",subprogram="lmtp"} 3
4242
postfix_logs_total{severity="info",subprogram="postscreen"} 22
4343
postfix_logs_total{severity="info",subprogram="qmgr"} 2
44-
postfix_logs_total{severity="info",subprogram="smtp"} 8
44+
postfix_logs_total{severity="info",subprogram="smtp"} 9
4545
postfix_logs_total{severity="info",subprogram="smtpd"} 9
4646
postfix_logs_total{severity="info",subprogram="unknown"} 1
4747
postfix_logs_total{severity="warning",subprogram="smtpd"} 2
@@ -88,7 +88,7 @@ postfix_statuses_total{status="bounced",subprogram="lmtp"} 1
8888
postfix_statuses_total{status="bounced",subprogram="smtp"} 1
8989
postfix_statuses_total{status="deferred",subprogram="smtp"} 2
9090
postfix_statuses_total{status="sent",subprogram="lmtp"} 1
91-
postfix_statuses_total{status="sent",subprogram="smtp"} 1
91+
postfix_statuses_total{status="sent",subprogram="smtp"} 2
9292
# HELP postfix_unsupported_total Total number of unsupported log records.
9393
# TYPE postfix_unsupported_total counter
9494
postfix_unsupported_total 8

exporter/testdata/postfix.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ status_replies:
1111
text: sent
1212
- regexp: (?i)spf|dkim|dns
1313
text: local_conf_problem
14+
- regexp: OK queued as .+
15+
match: text
16+
text: ok
1417
- not_statuses:
1518
- bounced
1619
regexp: (.+)

go.mod

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
module github.com/sergeymakinen/postfix_exporter/v2
22

3-
go 1.23
3+
go 1.23.0
4+
5+
toolchain go1.24.1
46

57
require (
68
github.com/alecthomas/kingpin/v2 v2.4.0
79
github.com/coreos/go-systemd/v22 v22.5.0
810
github.com/nxadm/tail v1.4.11
9-
github.com/prometheus/client_golang v1.20.5
10-
github.com/prometheus/common v0.61.0
11-
github.com/prometheus/exporter-toolkit v0.13.2
11+
github.com/prometheus/client_golang v1.21.1
12+
github.com/prometheus/common v0.63.0
13+
github.com/prometheus/exporter-toolkit v0.14.0
1214
gopkg.in/yaml.v3 v3.0.1
1315
)
1416

@@ -18,22 +20,22 @@ require (
1820
github.com/cespare/xxhash/v2 v2.3.0 // indirect
1921
github.com/fsnotify/fsnotify v1.8.0 // indirect
2022
github.com/jpillora/backoff v1.0.0 // indirect
21-
github.com/klauspost/compress v1.17.11 // indirect
23+
github.com/klauspost/compress v1.18.0 // indirect
2224
github.com/kylelemons/godebug v1.1.0 // indirect
2325
github.com/mdlayher/socket v0.5.1 // indirect
2426
github.com/mdlayher/vsock v1.2.1 // indirect
2527
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
2628
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect
2729
github.com/prometheus/client_model v0.6.1 // indirect
28-
github.com/prometheus/procfs v0.15.1 // indirect
30+
github.com/prometheus/procfs v0.16.0 // indirect
2931
github.com/xhit/go-str2duration/v2 v2.1.0 // indirect
30-
golang.org/x/crypto v0.31.0 // indirect
31-
golang.org/x/net v0.33.0 // indirect
32-
golang.org/x/oauth2 v0.24.0 // indirect
33-
golang.org/x/sync v0.10.0 // indirect
34-
golang.org/x/sys v0.28.0 // indirect
35-
golang.org/x/text v0.21.0 // indirect
36-
google.golang.org/protobuf v1.36.1 // indirect
32+
golang.org/x/crypto v0.36.0 // indirect
33+
golang.org/x/net v0.37.0 // indirect
34+
golang.org/x/oauth2 v0.28.0 // indirect
35+
golang.org/x/sync v0.12.0 // indirect
36+
golang.org/x/sys v0.31.0 // indirect
37+
golang.org/x/text v0.23.0 // indirect
38+
google.golang.org/protobuf v1.36.5 // indirect
3739
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect
3840
gopkg.in/yaml.v2 v2.4.0 // indirect
3941
)

go.sum

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@ github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbS
1515
github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M=
1616
github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
1717
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
18-
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
19-
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
18+
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
19+
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
2020
github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA=
2121
github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
22-
github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc=
23-
github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0=
22+
github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo=
23+
github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
2424
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
2525
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
2626
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
@@ -39,16 +39,16 @@ github.com/nxadm/tail v1.4.11 h1:8feyoE3OzPrcshW5/MJ4sGESc5cqmGkGCWlco4l0bqY=
3939
github.com/nxadm/tail v1.4.11/go.mod h1:OTaG3NK980DZzxbRq6lEuzgU+mug70nY11sMd4JXXHc=
4040
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
4141
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
42-
github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y=
43-
github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE=
42+
github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGCQ8YOmu+Ibk=
43+
github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg=
4444
github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
4545
github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
46-
github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ=
47-
github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s=
48-
github.com/prometheus/exporter-toolkit v0.13.2 h1:Z02fYtbqTMy2i/f+xZ+UK5jy/bl1Ex3ndzh06T/Q9DQ=
49-
github.com/prometheus/exporter-toolkit v0.13.2/go.mod h1:tCqnfx21q6qN1KA4U3Bfb8uWzXfijIrJz3/kTIqMV7g=
50-
github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
51-
github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
46+
github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k=
47+
github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18=
48+
github.com/prometheus/exporter-toolkit v0.14.0 h1:NMlswfibpcZZ+H0sZBiTjrA3/aBFHkNZqE+iCj5EmRg=
49+
github.com/prometheus/exporter-toolkit v0.14.0/go.mod h1:Gu5LnVvt7Nr/oqTBUC23WILZepW0nffNo10XdhQcwWA=
50+
github.com/prometheus/procfs v0.16.0 h1:xh6oHhKwnOJKMYiYBDWmkHqQPyiY40sny36Cmx2bbsM=
51+
github.com/prometheus/procfs v0.16.0/go.mod h1:8veyXUu3nGP7oaCxhX6yeaM5u4stL2FeMXnCqhDthZg=
5252
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
5353
github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
5454
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
@@ -63,21 +63,21 @@ github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOf
6363
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
6464
github.com/xhit/go-str2duration/v2 v2.1.0 h1:lxklc02Drh6ynqX+DdPyp5pCKLUQpRT8bp8Ydu2Bstc=
6565
github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU=
66-
golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
67-
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
68-
golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
69-
golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
70-
golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE=
71-
golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
72-
golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
73-
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
66+
golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34=
67+
golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc=
68+
golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c=
69+
golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
70+
golang.org/x/oauth2 v0.28.0 h1:CrgCKl8PPAVtLnU3c+EDw6x11699EWlsDeWNWKdIOkc=
71+
golang.org/x/oauth2 v0.28.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8=
72+
golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw=
73+
golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
7474
golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
75-
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
76-
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
77-
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
78-
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
79-
google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk=
80-
google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
75+
golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
76+
golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
77+
golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
78+
golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
79+
google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM=
80+
google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
8181
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
8282
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
8383
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=

0 commit comments

Comments
 (0)