mirror of
https://github.com/fosrl/olm.git
synced 2026-02-08 05:56:41 +00:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4850b1b332 | ||
|
|
1ff74f7173 |
@@ -36,7 +36,7 @@ func (o *Olm) handleConnect(msg websocket.WSMessage) {
|
|||||||
|
|
||||||
var wgData WgData
|
var wgData WgData
|
||||||
|
|
||||||
if o.connected {
|
if o.registered {
|
||||||
logger.Info("Already connected. Ignoring new connection request.")
|
logger.Info("Already connected. Ignoring new connection request.")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -208,7 +208,7 @@ func (o *Olm) handleConnect(msg websocket.WSMessage) {
|
|||||||
|
|
||||||
o.apiServer.SetRegistered(true)
|
o.apiServer.SetRegistered(true)
|
||||||
|
|
||||||
o.connected = true
|
o.registered = true
|
||||||
|
|
||||||
// Start ping monitor now that we are registered and connected
|
// Start ping monitor now that we are registered and connected
|
||||||
o.websocket.StartPingMonitor()
|
o.websocket.StartPingMonitor()
|
||||||
|
|||||||
@@ -157,7 +157,7 @@ func (o *Olm) handleWgPeerUpdateData(msg websocket.WSMessage) {
|
|||||||
func (o *Olm) handleSync(msg websocket.WSMessage) {
|
func (o *Olm) handleSync(msg websocket.WSMessage) {
|
||||||
logger.Debug("Received sync message: %v", msg.Data)
|
logger.Debug("Received sync message: %v", msg.Data)
|
||||||
|
|
||||||
if !o.connected {
|
if !o.registered {
|
||||||
logger.Warn("Not connected, ignoring sync request")
|
logger.Warn("Not connected, ignoring sync request")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
14
olm/olm.go
14
olm/olm.go
@@ -8,7 +8,6 @@ import (
|
|||||||
_ "net/http/pprof"
|
_ "net/http/pprof"
|
||||||
"os"
|
"os"
|
||||||
"sync"
|
"sync"
|
||||||
"syscall"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/fosrl/newt/bind"
|
"github.com/fosrl/newt/bind"
|
||||||
@@ -32,7 +31,7 @@ type Olm struct {
|
|||||||
privateKey wgtypes.Key
|
privateKey wgtypes.Key
|
||||||
logFile *os.File
|
logFile *os.File
|
||||||
|
|
||||||
connected bool
|
registered bool
|
||||||
tunnelRunning bool
|
tunnelRunning bool
|
||||||
|
|
||||||
uapiListener net.Listener
|
uapiListener net.Listener
|
||||||
@@ -386,10 +385,10 @@ func (o *Olm) StartTunnel(config TunnelConfig) {
|
|||||||
|
|
||||||
o.apiServer.SetConnectionStatus(true)
|
o.apiServer.SetConnectionStatus(true)
|
||||||
|
|
||||||
if o.connected {
|
if o.registered {
|
||||||
o.websocket.StartPingMonitor()
|
o.websocket.StartPingMonitor()
|
||||||
|
|
||||||
logger.Debug("Already connected, skipping registration")
|
logger.Debug("Already registered, skipping registration")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -576,7 +575,7 @@ func (o *Olm) Close() {
|
|||||||
// If we never created a device from the FD, close it explicitly
|
// If we never created a device from the FD, close it explicitly
|
||||||
// This can happen if tunnel is stopped during registration before handleConnect
|
// This can happen if tunnel is stopped during registration before handleConnect
|
||||||
logger.Debug("Closing unused TUN file descriptor %d", o.tunnelConfig.FileDescriptorTun)
|
logger.Debug("Closing unused TUN file descriptor %d", o.tunnelConfig.FileDescriptorTun)
|
||||||
if err := syscall.Close(int(o.tunnelConfig.FileDescriptorTun)); err != nil {
|
if err := closeFD(o.tunnelConfig.FileDescriptorTun); err != nil {
|
||||||
logger.Error("Failed to close TUN file descriptor: %v", err)
|
logger.Error("Failed to close TUN file descriptor: %v", err)
|
||||||
} else {
|
} else {
|
||||||
logger.Info("Closed unused TUN file descriptor")
|
logger.Info("Closed unused TUN file descriptor")
|
||||||
@@ -615,7 +614,7 @@ func (o *Olm) StopTunnel() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Reset the running state BEFORE cleanup to prevent callbacks from accessing nil pointers
|
// Reset the running state BEFORE cleanup to prevent callbacks from accessing nil pointers
|
||||||
o.connected = false
|
o.registered = false
|
||||||
o.tunnelRunning = false
|
o.tunnelRunning = false
|
||||||
|
|
||||||
// Cancel the tunnel context if it exists
|
// Cancel the tunnel context if it exists
|
||||||
@@ -739,9 +738,6 @@ func (o *Olm) SetPowerMode(mode string) error {
|
|||||||
|
|
||||||
logger.Info("Switching to low power mode")
|
logger.Info("Switching to low power mode")
|
||||||
|
|
||||||
// Mark as disconnected so we re-register on reconnect
|
|
||||||
o.connected = false
|
|
||||||
|
|
||||||
// Update API server connection status
|
// Update API server connection status
|
||||||
if o.apiServer != nil {
|
if o.apiServer != nil {
|
||||||
o.apiServer.SetConnectionStatus(false)
|
o.apiServer.SetConnectionStatus(false)
|
||||||
|
|||||||
10
olm/olm_unix.go
Normal file
10
olm/olm_unix.go
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
//go:build !windows
|
||||||
|
|
||||||
|
package olm
|
||||||
|
|
||||||
|
import "syscall"
|
||||||
|
|
||||||
|
// closeFD closes a file descriptor in a platform-specific way
|
||||||
|
func closeFD(fd uint32) error {
|
||||||
|
return syscall.Close(int(fd))
|
||||||
|
}
|
||||||
10
olm/olm_windows.go
Normal file
10
olm/olm_windows.go
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
//go:build windows
|
||||||
|
|
||||||
|
package olm
|
||||||
|
|
||||||
|
import "syscall"
|
||||||
|
|
||||||
|
// closeFD closes a file descriptor in a platform-specific way
|
||||||
|
func closeFD(fd uint32) error {
|
||||||
|
return syscall.Close(syscall.Handle(fd))
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user