Skip to content

Commit 19e6cc8

Browse files
Return network error when logging in and the network connection fails (#3432)
1 parent 9bfed73 commit 19e6cc8

File tree

6 files changed

+40
-26
lines changed

6 files changed

+40
-26
lines changed

.github/workflows/vulncheck.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
- name: Set up Go
2020
uses: actions/setup-go@v5
2121
with:
22-
go-version: 1.22.7
22+
go-version: 1.22
2323
check-latest: true
2424
- name: Get official govulncheck
2525
run: go install golang.org/x/vuln/cmd/govulncheck@latest
@@ -33,7 +33,7 @@ jobs:
3333
runs-on: ubuntu-latest
3434
strategy:
3535
matrix:
36-
go-version: [ 1.22.7 ]
36+
go-version: [ 1.22 ]
3737
os: [ ubuntu-latest ]
3838
steps:
3939
- name: Check out code

Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ test-start-docker-minio-w-redirect-url: initialize-docker-network
243243
-e MINIO_SERVER_URL='http://localhost:9000' \
244244
-v /data1 -v /data2 -v /data3 -v /data4 \
245245
-d --network host --name minio --rm\
246-
quay.io/minio/minio:latest server /data{1...4})
246+
quay.io/minio/minio:latest server /data{1...4})
247247

248248
test-start-docker-nginx-w-subpath:
249249
@(docker run \

api/errors.go

+7-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import (
2929

3030
var (
3131
ErrDefault = errors.New("an error occurred, please try again")
32-
ErrInvalidLogin = errors.New("invalid Login")
32+
ErrInvalidLogin = errors.New("invalid login")
3333
ErrForbidden = errors.New("403 Forbidden")
3434
ErrBadRequest = errors.New("400 Bad Request")
3535
ErrFileTooLarge = errors.New("413 File too Large")
@@ -73,6 +73,7 @@ var (
7373
ErrPolicyNotFound = errors.New("policy does not exist")
7474
ErrLoginNotAllowed = errors.New("login not allowed")
7575
ErrHealthReportFail = errors.New("failure to generate Health report")
76+
ErrNetworkError = errors.New("unable to login due to network error")
7677
)
7778

7879
type CodedAPIError struct {
@@ -111,6 +112,11 @@ func ErrorWithContext(ctx context.Context, err ...interface{}) *CodedAPIError {
111112
errorCode = 401
112113
errorMessage = ErrInvalidLogin.Error()
113114
}
115+
if errors.Is(err1, ErrNetworkError) {
116+
detailedMessage = ""
117+
errorCode = 503
118+
errorMessage = ErrNetworkError.Error()
119+
}
114120
if strings.Contains(strings.ToLower(err1.Error()), ErrAccessDenied.Error()) {
115121
errorCode = 403
116122
errorMessage = err1.Error()

api/user_login.go

+9-1
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,11 @@ import (
2020
"context"
2121
"encoding/base64"
2222
"encoding/json"
23+
stderrors "errors"
2324
"fmt"
25+
"net"
2426
"net/http"
27+
"net/url"
2528
"strings"
2629

2730
"github.com/go-openapi/errors"
@@ -142,7 +145,6 @@ func getLoginResponse(params authApi.LoginParams) (*models.LoginResponse, *Coded
142145
if credsVerificate.SessionToken == "" || credsVerificate.SecretAccessKey == "" || credsVerificate.AccessKeyID == "" {
143146
return nil, ErrorWithContext(ctx, errors.New(401, "Invalid STS Params"))
144147
}
145-
146148
} else {
147149
clientIP := getClientIP(params.HTTPRequest)
148150
// prepare console credentials
@@ -158,6 +160,12 @@ func getLoginResponse(params authApi.LoginParams) (*models.LoginResponse, *Coded
158160
}
159161
sessionID, err := login(consoleCreds, sf)
160162
if err != nil {
163+
var urlErr *url.Error
164+
if stderrors.As(err, &urlErr) {
165+
if _, isNetErr := urlErr.Err.(net.Error); isNetErr {
166+
return nil, ErrorWithContext(ctx, ErrNetworkError)
167+
}
168+
}
161169
return nil, ErrorWithContext(ctx, err, ErrInvalidLogin)
162170
}
163171
// serialize output

go.mod

+7-7
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@ require (
2121
github.com/minio/cli v1.24.2
2222
github.com/minio/highwayhash v1.0.3
2323
github.com/minio/kes v0.23.0
24-
github.com/minio/madmin-go/v3 v3.0.63
24+
github.com/minio/madmin-go/v3 v3.0.64
2525
github.com/minio/mc v0.0.0-20240815155011-479171e7be9c
26-
github.com/minio/minio-go/v7 v7.0.75
26+
github.com/minio/minio-go/v7 v7.0.76
2727
github.com/minio/selfupdate v0.6.0
2828
github.com/minio/websocket v1.6.0
2929
github.com/mitchellh/go-homedir v1.1.0
30-
github.com/rs/xid v1.5.0
30+
github.com/rs/xid v1.6.0
3131
github.com/secure-io/sio-go v0.3.1
3232
github.com/stretchr/testify v1.9.0
3333
github.com/tidwall/gjson v1.17.3
@@ -93,7 +93,7 @@ require (
9393
github.com/lestrrat-go/jwx v1.2.30 // indirect
9494
github.com/lestrrat-go/option v1.0.1 // indirect
9595
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
96-
github.com/lufia/plan9stats v0.0.0-20240513124658-fba389f38bae // indirect
96+
github.com/lufia/plan9stats v0.0.0-20240819163618-b1d8f4d146e7 // indirect
9797
github.com/mailru/easyjson v0.7.7 // indirect
9898
github.com/mattn/go-colorable v0.1.13 // indirect
9999
github.com/mattn/go-isatty v0.0.20 // indirect
@@ -121,10 +121,10 @@ require (
121121
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect
122122
github.com/prometheus/client_golang v1.20.0 // indirect
123123
github.com/prometheus/client_model v0.6.1 // indirect
124-
github.com/prometheus/common v0.55.0 // indirect
124+
github.com/prometheus/common v0.58.0 // indirect
125125
github.com/prometheus/procfs v0.15.1 // indirect
126126
github.com/prometheus/prom2json v1.4.0 // indirect
127-
github.com/prometheus/prometheus v0.54.0 // indirect
127+
github.com/prometheus/prometheus v0.54.1 // indirect
128128
github.com/rivo/uniseg v0.4.7 // indirect
129129
github.com/rjeczalik/notify v0.9.3 // indirect
130130
github.com/safchain/ethtool v0.4.1 // indirect
@@ -145,7 +145,7 @@ require (
145145
go.uber.org/multierr v1.11.0 // indirect
146146
go.uber.org/zap v1.27.0 // indirect
147147
golang.org/x/sync v0.8.0 // indirect
148-
golang.org/x/sys v0.24.0 // indirect
148+
golang.org/x/sys v0.25.0 // indirect
149149
golang.org/x/term v0.23.0 // indirect
150150
google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 // indirect
151151
google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 // indirect

go.sum

+14-14
Original file line numberDiff line numberDiff line change
@@ -141,8 +141,8 @@ github.com/lestrrat-go/option v1.0.1 h1:oAzP2fvZGQKWkvHa1/SAcFolBEca1oN+mQ7eooNB
141141
github.com/lestrrat-go/option v1.0.1/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I=
142142
github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
143143
github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
144-
github.com/lufia/plan9stats v0.0.0-20240513124658-fba389f38bae h1:dIZY4ULFcto4tAFlj1FYZl8ztUZ13bdq+PLY+NOfbyI=
145-
github.com/lufia/plan9stats v0.0.0-20240513124658-fba389f38bae/go.mod h1:ilwx/Dta8jXAgpFYFvSWEMwxmbWXyiUHkd5FwyKhb5k=
144+
github.com/lufia/plan9stats v0.0.0-20240819163618-b1d8f4d146e7 h1:5RK988zAqB3/AN3opGfRpoQgAVqr6/A5+qRTi67VUZY=
145+
github.com/lufia/plan9stats v0.0.0-20240819163618-b1d8f4d146e7/go.mod h1:ilwx/Dta8jXAgpFYFvSWEMwxmbWXyiUHkd5FwyKhb5k=
146146
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
147147
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
148148
github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
@@ -176,14 +176,14 @@ github.com/minio/kes v0.23.0 h1:T0zHtyDoI3JdKrVvzdM4xwVryYYyh5pKwNUVBoqxsNs=
176176
github.com/minio/kes v0.23.0/go.mod h1:vvXVGcgu9mYLkbVWlEvFFl6bYR196RQlOU2Q+rHApl8=
177177
github.com/minio/kes-go v0.2.1 h1:KnqS+p6xoSFJZbQhmJaz/PbxeA6nQyRqT/ywrn5lU2o=
178178
github.com/minio/kes-go v0.2.1/go.mod h1:76xf7l41Wrh+IifisABXK2S8uZWYgWV1IGBKC3GdOJk=
179-
github.com/minio/madmin-go/v3 v3.0.63 h1:ERJRxEI/FFRh8MDi4Z+3DKe4sONkQ0g+OkNzRpk7qxk=
180-
github.com/minio/madmin-go/v3 v3.0.63/go.mod h1:IFAwr0XMrdsLovxAdCcuq/eoL4nRuMVQQv0iubJANQw=
179+
github.com/minio/madmin-go/v3 v3.0.64 h1:Btwgs3CrgSciVaCWv/3clOxuDdUzylo/oTQp0M8GkwE=
180+
github.com/minio/madmin-go/v3 v3.0.64/go.mod h1:IFAwr0XMrdsLovxAdCcuq/eoL4nRuMVQQv0iubJANQw=
181181
github.com/minio/mc v0.0.0-20240815155011-479171e7be9c h1:0tzuJ1nV6oZstqKQ/CwK1dzxNJ/cE38ym4SPi2HsWoY=
182182
github.com/minio/mc v0.0.0-20240815155011-479171e7be9c/go.mod h1:Cr4x7eiMJfOTWwg40Rk3EaOI7i+DUyOAtqLO7x+heiA=
183183
github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34=
184184
github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM=
185-
github.com/minio/minio-go/v7 v7.0.75 h1:0uLrB6u6teY2Jt+cJUVi9cTvDRuBKWSRzSAcznRkwlE=
186-
github.com/minio/minio-go/v7 v7.0.75/go.mod h1:qydcVzV8Hqtj1VtEocfxbmVFa2siu6HGa+LDEPogjD8=
185+
github.com/minio/minio-go/v7 v7.0.76 h1:9nxHH2XDai61cT/EFhyIw/wW4vJfpPNvl7lSFpRt+Ng=
186+
github.com/minio/minio-go/v7 v7.0.76/go.mod h1:AVM3IUN6WwKzmwBxVdjzhH8xq+f57JSbbvzqvUzR6eg=
187187
github.com/minio/mux v1.9.0 h1:dWafQFyEfGhJvK6AwLOt83bIG5bxKxKJnKMCi0XAaoA=
188188
github.com/minio/mux v1.9.0/go.mod h1:1pAare17ZRL5GpmNL+9YmqHoWnLmMZF9C/ioUCfy0BQ=
189189
github.com/minio/pkg/v3 v3.0.11 h1:+r61IPJRKE34lps1LkMGuksTtcxApq9s52Du+3b//wo=
@@ -229,14 +229,14 @@ github.com/prometheus/client_golang v1.20.0 h1:jBzTZ7B099Rg24tny+qngoynol8LtVYlA
229229
github.com/prometheus/client_golang v1.20.0/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE=
230230
github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
231231
github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
232-
github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc=
233-
github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8=
232+
github.com/prometheus/common v0.58.0 h1:N+N8vY4/23r6iYfD3UQZUoJPnUYAo7v6LG5XZxjZTXo=
233+
github.com/prometheus/common v0.58.0/go.mod h1:GpWM7dewqmVYcd7SmRaiWVe9SSqjf0UrwnYnpEZNuT0=
234234
github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
235235
github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
236236
github.com/prometheus/prom2json v1.4.0 h1:2AEOsd1ebqql/p9u0IWgCpUAteAAf9Lnf/SVyieqer4=
237237
github.com/prometheus/prom2json v1.4.0/go.mod h1:DmcIMPspQD/fMyFCYti5qJJbuEnqDh3DGoooO0sgr4w=
238-
github.com/prometheus/prometheus v0.54.0 h1:6+VmEkohHcofl3W5LyRlhw1Lfm575w/aX6ZFyVAmzM0=
239-
github.com/prometheus/prometheus v0.54.0/go.mod h1:xlLByHhk2g3ycakQGrMaU8K7OySZx98BzeCR99991NY=
238+
github.com/prometheus/prometheus v0.54.1 h1:vKuwQNjnYN2/mDoWfHXDhAsz/68q/dQDb+YbcEqU7MQ=
239+
github.com/prometheus/prometheus v0.54.1/go.mod h1:xlLByHhk2g3ycakQGrMaU8K7OySZx98BzeCR99991NY=
240240
github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
241241
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
242242
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
@@ -245,8 +245,8 @@ github.com/rjeczalik/notify v0.9.3 h1:6rJAzHTGKXGj76sbRgDiDcYj/HniypXmSJo1SWakZe
245245
github.com/rjeczalik/notify v0.9.3/go.mod h1:gF3zSOrafR9DQEWSE8TjfI9NkooDxbyT4UgRGKZA0lc=
246246
github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M=
247247
github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA=
248-
github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc=
249-
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
248+
github.com/rs/xid v1.6.0 h1:fV591PaemRlL6JfRxGDEPl69wICngIQ3shQtzfy2gxU=
249+
github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0=
250250
github.com/safchain/ethtool v0.4.1 h1:S6mEleTADqgynileXoiapt/nKnatyR6bmIHoF+h2ADo=
251251
github.com/safchain/ethtool v0.4.1/go.mod h1:XLLnZmy4OCRTkksP/UiMjij96YmIsBfmBQcs7H6tA48=
252252
github.com/secure-io/sio-go v0.3.1 h1:dNvY9awjabXTYGsTF1PiCySl9Ltofk9GA3VdWlo7rRc=
@@ -347,8 +347,8 @@ golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
347347
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
348348
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
349349
golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
350-
golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg=
351-
golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
350+
golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34=
351+
golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
352352
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
353353
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
354354
golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU=

0 commit comments

Comments
 (0)