| OLD | NEW |
| 1 // Copyright 2016 The LUCI Authors. All rights reserved. | 1 // Copyright 2016 The LUCI Authors. All rights reserved. |
| 2 // Use of this source code is governed under the Apache License, Version 2.0 | 2 // Use of this source code is governed under the Apache License, Version 2.0 |
| 3 // that can be found in the LICENSE file. | 3 // that can be found in the LICENSE file. |
| 4 | 4 |
| 5 package prpc | 5 package prpc |
| 6 | 6 |
| 7 import ( | 7 import ( |
| 8 "fmt" | 8 "fmt" |
| 9 "net/http" | 9 "net/http" |
| 10 "sort" | 10 "sort" |
| 11 "strings" | 11 "strings" |
| 12 "sync" | 12 "sync" |
| 13 | 13 |
| 14 "golang.org/x/net/context" | 14 "golang.org/x/net/context" |
| 15 "google.golang.org/grpc" | 15 "google.golang.org/grpc" |
| 16 "google.golang.org/grpc/codes" | 16 "google.golang.org/grpc/codes" |
| 17 | 17 |
| 18 "github.com/luci/luci-go/common/errors" | |
| 19 "github.com/luci/luci-go/common/logging" | 18 "github.com/luci/luci-go/common/logging" |
| 19 "github.com/luci/luci-go/common/retry" |
| 20 "github.com/luci/luci-go/server/router" | 20 "github.com/luci/luci-go/server/router" |
| 21 ) | 21 ) |
| 22 | 22 |
| 23 var ( | 23 var ( |
| 24 // Describe the permitted Access Control requests. | 24 // Describe the permitted Access Control requests. |
| 25 allowHeaders = strings.Join([]string{"Origin", "Content-Type", "Accept",
"Authorization"}, ", ") | 25 allowHeaders = strings.Join([]string{"Origin", "Content-Type", "Accept",
"Authorization"}, ", ") |
| 26 allowMethods = strings.Join([]string{"OPTIONS", "POST"}, ", ") | 26 allowMethods = strings.Join([]string{"OPTIONS", "POST"}, ", ") |
| 27 | 27 |
| 28 // allowPreflightCacheAgeSecs is the amount of time to enable the browse
r to | 28 // allowPreflightCacheAgeSecs is the amount of time to enable the browse
r to |
| 29 // cache the preflight access control response, in seconds. | 29 // cache the preflight access control response, in seconds. |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 112 if a == nil { | 112 if a == nil { |
| 113 a = GetDefaultAuth() | 113 a = GetDefaultAuth() |
| 114 if a == nil { | 114 if a == nil { |
| 115 panic("prpc: no custom Authenticator was provided and de
fault authenticator was not registered.\n" + | 115 panic("prpc: no custom Authenticator was provided and de
fault authenticator was not registered.\n" + |
| 116 "Either explicitly set `Server.Authenticator = N
oAuthentication`, or use RegisterDefaultAuth()") | 116 "Either explicitly set `Server.Authenticator = N
oAuthentication`, or use RegisterDefaultAuth()") |
| 117 } | 117 } |
| 118 } | 118 } |
| 119 | 119 |
| 120 return func(c *router.Context, next router.Handler) { | 120 return func(c *router.Context, next router.Handler) { |
| 121 switch ctx, err := a.Authenticate(c.Context, c.Request); { | 121 switch ctx, err := a.Authenticate(c.Context, c.Request); { |
| 122 » » case errors.IsTransient(err): | 122 » » case retry.Tag.In(err): |
| 123 res := errResponse(codes.Internal, http.StatusInternalSe
rverError, escapeFmt(err.Error())) | 123 res := errResponse(codes.Internal, http.StatusInternalSe
rverError, escapeFmt(err.Error())) |
| 124 res.write(c.Context, c.Writer) | 124 res.write(c.Context, c.Writer) |
| 125 case err != nil: | 125 case err != nil: |
| 126 res := errResponse(codes.Unauthenticated, http.StatusUna
uthorized, escapeFmt(err.Error())) | 126 res := errResponse(codes.Unauthenticated, http.StatusUna
uthorized, escapeFmt(err.Error())) |
| 127 res.write(c.Context, c.Writer) | 127 res.write(c.Context, c.Writer) |
| 128 default: | 128 default: |
| 129 c.Context = ctx | 129 c.Context = ctx |
| 130 next(c) | 130 next(c) |
| 131 } | 131 } |
| 132 } | 132 } |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 220 s.mu.Lock() | 220 s.mu.Lock() |
| 221 defer s.mu.Unlock() | 221 defer s.mu.Unlock() |
| 222 | 222 |
| 223 names := make([]string, 0, len(s.services)) | 223 names := make([]string, 0, len(s.services)) |
| 224 for name := range s.services { | 224 for name := range s.services { |
| 225 names = append(names, name) | 225 names = append(names, name) |
| 226 } | 226 } |
| 227 sort.Strings(names) | 227 sort.Strings(names) |
| 228 return names | 228 return names |
| 229 } | 229 } |
| OLD | NEW |