feat(server): PUT /v1/portforward route to set ports forwarded (#2392)

This commit is contained in:
Rubyn Angelo Stark
2026-03-07 18:06:03 +01:00
committed by Quentin McGaw
parent 199ad77ec9
commit 724cd3a15e
10 changed files with 119 additions and 40 deletions
+28
View File
@@ -2,7 +2,9 @@ package service
import (
"context"
"fmt"
"net/http"
"slices"
"sync"
)
@@ -50,3 +52,29 @@ func (s *Service) GetPortsForwarded() (ports []uint16) {
copy(ports, s.ports)
return ports
}
func (s *Service) SetPortsForwarded(ctx context.Context, ports []uint16) (err error) {
s.startStopMutex.Lock()
defer s.startStopMutex.Unlock()
s.portMutex.Lock()
defer s.portMutex.Unlock()
slices.Sort(ports)
if slices.Equal(s.ports, ports) {
return nil
}
err = s.cleanup()
if err != nil {
return fmt.Errorf("cleaning up: %w", err)
}
err = s.onNewPorts(ctx, ports)
if err != nil {
return fmt.Errorf("handling new ports: %w", err)
}
s.logger.Info("updated: " + portsToString(s.ports))
return nil
}