aboutsummaryrefslogtreecommitdiff
path: root/weed/server/master_grpc_server_volume.go
diff options
context:
space:
mode:
authorchrislu <chris.lu@gmail.com>2023-06-17 00:11:23 -0700
committerchrislu <chris.lu@gmail.com>2023-06-17 00:11:23 -0700
commit94fbf02ea2fdfd7a786af8ce8b9b04006b361dd0 (patch)
treea1342f3d53f0aa33ec95fbc29c2261b974bbc68e /weed/server/master_grpc_server_volume.go
parent75f7893c11fb95bdd0f199caa473147d5db0463d (diff)
downloadseaweedfs-94fbf02ea2fdfd7a786af8ce8b9b04006b361dd0.tar.xz
seaweedfs-94fbf02ea2fdfd7a786af8ce8b9b04006b361dd0.zip
generate jwt token when looking up needle id
fix https://github.com/seaweedfs/seaweedfs/issues/4577
Diffstat (limited to 'weed/server/master_grpc_server_volume.go')
-rw-r--r--weed/server/master_grpc_server_volume.go41
1 files changed, 24 insertions, 17 deletions
diff --git a/weed/server/master_grpc_server_volume.go b/weed/server/master_grpc_server_volume.go
index a2676accf..87c7b9990 100644
--- a/weed/server/master_grpc_server_volume.go
+++ b/weed/server/master_grpc_server_volume.go
@@ -82,25 +82,32 @@ func (ms *MasterServer) LookupVolume(ctx context.Context, req *master_pb.LookupV
resp := &master_pb.LookupVolumeResponse{}
volumeLocations := ms.lookupVolumeId(req.VolumeOrFileIds, req.Collection)
- for _, result := range volumeLocations {
- var locations []*master_pb.Location
- for _, loc := range result.Locations {
- locations = append(locations, &master_pb.Location{
- Url: loc.Url,
- PublicUrl: loc.PublicUrl,
- DataCenter: loc.DataCenter,
- })
+ for _, volumeOrFileId := range req.VolumeOrFileIds {
+ vid := volumeOrFileId
+ commaSep := strings.Index(vid, ",")
+ if commaSep > 0 {
+ vid = vid[0:commaSep]
}
- var auth string
- if strings.Contains(result.VolumeOrFileId, ",") { // this is a file id
- auth = string(security.GenJwtForVolumeServer(ms.guard.SigningKey, ms.guard.ExpiresAfterSec, result.VolumeOrFileId))
+ if result, found := volumeLocations[vid]; found {
+ var locations []*master_pb.Location
+ for _, loc := range result.Locations {
+ locations = append(locations, &master_pb.Location{
+ Url: loc.Url,
+ PublicUrl: loc.PublicUrl,
+ DataCenter: loc.DataCenter,
+ })
+ }
+ var auth string
+ if commaSep > 0 { // this is a file id
+ auth = string(security.GenJwtForVolumeServer(ms.guard.SigningKey, ms.guard.ExpiresAfterSec, result.VolumeOrFileId))
+ }
+ resp.VolumeIdLocations = append(resp.VolumeIdLocations, &master_pb.LookupVolumeResponse_VolumeIdLocation{
+ VolumeOrFileId: result.VolumeOrFileId,
+ Locations: locations,
+ Error: result.Error,
+ Auth: auth,
+ })
}
- resp.VolumeIdLocations = append(resp.VolumeIdLocations, &master_pb.LookupVolumeResponse_VolumeIdLocation{
- VolumeOrFileId: result.VolumeOrFileId,
- Locations: locations,
- Error: result.Error,
- Auth: auth,
- })
}
return resp, nil