mirror of
https://github.com/fosrl/olm.git
synced 2026-02-08 05:56:41 +00:00
Compare commits
3 Commits
dev
...
dependabot
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
31e6822901 | ||
|
|
4850b1b332 | ||
|
|
1ff74f7173 |
2
go.mod
2
go.mod
@@ -7,7 +7,7 @@ require (
|
|||||||
github.com/fosrl/newt v1.9.0
|
github.com/fosrl/newt v1.9.0
|
||||||
github.com/godbus/dbus/v5 v5.2.2
|
github.com/godbus/dbus/v5 v5.2.2
|
||||||
github.com/gorilla/websocket v1.5.3
|
github.com/gorilla/websocket v1.5.3
|
||||||
github.com/miekg/dns v1.1.70
|
github.com/miekg/dns v1.1.72
|
||||||
golang.org/x/sys v0.40.0
|
golang.org/x/sys v0.40.0
|
||||||
golang.zx2c4.com/wireguard v0.0.0-20250521234502-f333402bd9cb
|
golang.zx2c4.com/wireguard v0.0.0-20250521234502-f333402bd9cb
|
||||||
golang.zx2c4.com/wireguard/wgctrl v0.0.0-20241231184526-a9ab2273dd10
|
golang.zx2c4.com/wireguard/wgctrl v0.0.0-20241231184526-a9ab2273dd10
|
||||||
|
|||||||
4
go.sum
4
go.sum
@@ -10,8 +10,8 @@ github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
|
|||||||
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
|
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
|
||||||
github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg=
|
github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg=
|
||||||
github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||||
github.com/miekg/dns v1.1.70 h1:DZ4u2AV35VJxdD9Fo9fIWm119BsQL5cZU1cQ9s0LkqA=
|
github.com/miekg/dns v1.1.72 h1:vhmr+TF2A3tuoGNkLDFK9zi36F2LS+hKTRW0Uf8kbzI=
|
||||||
github.com/miekg/dns v1.1.70/go.mod h1:+EuEPhdHOsfk6Wk5TT2CzssZdqkmFhf8r+aVyDEToIs=
|
github.com/miekg/dns v1.1.72/go.mod h1:+EuEPhdHOsfk6Wk5TT2CzssZdqkmFhf8r+aVyDEToIs=
|
||||||
github.com/vishvananda/netlink v1.3.1 h1:3AEMt62VKqz90r0tmNhog0r/PpWKmrEShJU0wJW6bV0=
|
github.com/vishvananda/netlink v1.3.1 h1:3AEMt62VKqz90r0tmNhog0r/PpWKmrEShJU0wJW6bV0=
|
||||||
github.com/vishvananda/netlink v1.3.1/go.mod h1:ARtKouGSTGchR8aMwmkzC0qiNPrrWO5JS/XMVl45+b4=
|
github.com/vishvananda/netlink v1.3.1/go.mod h1:ARtKouGSTGchR8aMwmkzC0qiNPrrWO5JS/XMVl45+b4=
|
||||||
github.com/vishvananda/netns v0.0.5 h1:DfiHV+j8bA32MFM7bfEunvT8IAqQ/NzSJHtcmW5zdEY=
|
github.com/vishvananda/netns v0.0.5 h1:DfiHV+j8bA32MFM7bfEunvT8IAqQ/NzSJHtcmW5zdEY=
|
||||||
|
|||||||
@@ -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