feat: enhance lease management retrieval and clean up unused functions

gosunuts committed Feb 26, 2026 at 11:09 UTC f2b3fac1605eb611909ac3b864f0c84760800b19
5 files changed +2 -45
cmd/relay-server/admin.go
+1 -1
@@ -243,7 +243,7 @@ func (a *Admin) HandleAdminRequest(w http.ResponseWriter, r *http.Request, serv
243 writeJSON(w, serv.GetLeaseManager().GetBannedLeases())
244 case route == "stats" && r.Method == http.MethodGet:
245 writeJSON(w, map[string]interface{}{
246 - "leases_count": len(serv.GetAllLeaseEntries()),
246 + "leases_count": len(serv.GetLeaseManager().GetAllLeaseEntries()),
247 "uptime": "TODO",
248 })
249 case route == "settings" && r.Method == http.MethodGet:
cmd/relay-server/serve.go
-1
@@ -170,7 +170,6 @@ func proxyToHTTP(w http.ResponseWriter, r *http.Request, serv *portal.RelayServe
170 return
171 }
172
173 - // Find lease by name
173 entry, ok := serv.GetLeaseManager().GetLeaseByName(leaseName)
174 if !ok {
175 http.Error(w, "service not found", http.StatusNotFound)
cmd/relay-server/utils.go
+1 -1
@@ -423,7 +423,7 @@ func (r *leaseRow) fromLeaseEntry(entry *portal.LeaseEntry, admin *Admin, portal
423 // If forAdmin is true, includes all leases with admin-only fields.
424 // If forAdmin is false, filters out banned, unapproved, hidden, and stale leases.
425 func convertLeaseEntriesToRows(serv *portal.RelayServer, admin *Admin, forAdmin bool) []leaseRow {
426 - leaseEntries := serv.GetAllLeaseEntries()
426 + leaseEntries := serv.GetLeaseManager().GetAllLeaseEntries()
427 rows := []leaseRow{}
428 now := time.Now()
429
portal/lease.go
-27
@@ -235,33 +235,6 @@ func (lm *LeaseManager) GetLeaseByName(name string) (*LeaseEntry, bool) {
235 return nil, false
236 }
237
238 - now := time.Now()
239 - for _, lease := range lm.leases {
240 - if lease.Lease.Name == name {
241 - // Check if banned
242 - if _, banned := lm.bannedLeases[lease.Lease.ID]; banned {
243 - continue
244 - }
245 - // Check if expired
246 - if now.After(lease.Expires) {
247 - continue
248 - }
249 - return lease, true
250 - }
251 - }
252 - return nil, false
253 -}
254 -
255 -// GetLeaseByNameFold returns a lease entry by name using case-insensitive matching.
256 -// This is needed because DNS subdomains are case-insensitive.
257 -func (lm *LeaseManager) GetLeaseByNameFold(name string) (*LeaseEntry, bool) {
258 - lm.leasesLock.RLock()
259 - defer lm.leasesLock.RUnlock()
260 -
261 - if name == "" {
262 - return nil, false
263 - }
264 -
238 now := time.Now()
239 for _, lease := range lm.leases {
240 if strings.EqualFold(lease.Lease.Name, name) {
portal/relay.go
-15
@@ -47,21 +47,6 @@ func (g *RelayServer) GetLeaseManager() *LeaseManager {
47 return g.leaseManager
48 }
49
50 -// GetLeaseByName returns a lease entry by its name.
51 -func (g *RelayServer) GetLeaseByName(name string) (*LeaseEntry, bool) {
52 - return g.leaseManager.GetLeaseByName(name)
53 -}
54 -
55 -// GetLeaseByNameFold returns a lease entry by name using case-insensitive matching.
56 -func (g *RelayServer) GetLeaseByNameFold(name string) (*LeaseEntry, bool) {
57 - return g.leaseManager.GetLeaseByNameFold(name)
58 -}
59 -
60 -// GetAllLeaseEntries returns all lease entries from the lease manager.
61 -func (g *RelayServer) GetAllLeaseEntries() []*LeaseEntry {
62 - return g.leaseManager.GetAllLeaseEntries()
63 -}
64 -
50 // GetReverseHub returns the reverse hub instance.
51 func (g *RelayServer) GetReverseHub() *ReverseHub {
52 return g.reverseHub