feat: add Metadata field to HopRoute and update related functions
Kim committed
Apr 27, 2026 at 11:52 UTC
d027db30b57e4b79260c220bfbaab8f05f5ef1b8
4 files changed
+8
-1
portal/auth/hop_route.go
+1
@@ -79,6 +79,7 @@ func normalizeHopRoute(route types.HopRoute, requireOwner bool) (types.HopRoute,
79
route.RelayURL = relayURL
80
route.MatchHostname = utils.NormalizeHostname(route.MatchHostname)
81
route.MatchToken = strings.TrimSpace(route.MatchToken)
82
+ route.Metadata = route.Metadata.Copy()
83
route.ForwardToken = strings.TrimSpace(route.ForwardToken)
84
route.ExpiresAt = route.ExpiresAt.UTC()
85
route.Signature = strings.TrimSpace(route.Signature)
portal/lease.go
+5
-1
@@ -284,6 +284,7 @@ func (r *leaseRegistry) RegisterHopRoute(route *types.HopRoute, now time.Time) (
284
Address: ownerKey,
285
},
286
Hostname: matchHostname,
287
+ Metadata: route.Metadata.Copy(),
288
ExpiresAt: expiresAt,
289
hopToken: matchToken,
290
hopNextOverlayIPv4: overlayIPv4,
@@ -514,9 +515,12 @@ func (r *leaseRegistry) PublicLeases(now time.Time) []types.Lease {
515
if record == nil || !record.isPublicEntry() || record.isExpired(now) {
516
continue
517
}
518
+ if record.Metadata.Hide {
519
+ continue
520
+ }
521
if record.stream != nil {
522
identityKey := record.Key()
519
- if r.policy.IsIdentityBanned(identityKey) || r.policy.IsIdentityDenied(identityKey) || !r.policy.EffectiveApproval(identityKey) || record.Metadata.Hide {
523
+ if r.policy.IsIdentityBanned(identityKey) || r.policy.IsIdentityDenied(identityKey) || !r.policy.EffectiveApproval(identityKey) {
524
continue
525
}
526
since := time.Duration(0)
sdk/api_client.go
+1
@@ -136,6 +136,7 @@ func (l *listener) registerLease(ctx context.Context, ttl time.Duration, udpEnab
136
}
137
if i == 0 {
138
route.MatchHostname = publicHostname
139
+ route.Metadata = l.metadata
140
} else {
141
route.MatchToken = previousHopToken
142
}
types/api.go
+1
@@ -136,6 +136,7 @@ type HopRoute struct {
136
RelayURL string `json:"relay_url"`
137
MatchHostname string `json:"match_hostname,omitempty"`
138
MatchToken string `json:"match_token,omitempty"`
139
+ Metadata LeaseMetadata `json:"metadata,omitempty"`
140
ForwardRelay RelayDescriptor `json:"forward_relay"`
141
ForwardToken string `json:"forward_token"`
142
ExpiresAt time.Time `json:"expires_at,omitempty"`