mirror of
https://github.com/qdm12/gluetun.git
synced 2026-05-09 20:29:23 +02:00
feat(server): PUT /v1/portforward route to set ports forwarded (#2392)
This commit is contained in:
committed by
Quentin McGaw
parent
199ad77ec9
commit
724cd3a15e
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user