From 94fbf02ea2fdfd7a786af8ce8b9b04006b361dd0 Mon Sep 17 00:00:00 2001 From: chrislu Date: Sat, 17 Jun 2023 00:11:23 -0700 Subject: [PATCH] generate jwt token when looking up needle id fix https://github.com/seaweedfs/seaweedfs/issues/4577 --- weed/server/master_grpc_server_volume.go | 41 ++++++++++++++---------- 1 file 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