loser to workinr?

Former-commit-id: 04f7778765
This commit is contained in:
Owen
2025-11-21 14:17:23 -05:00
parent 68c2744ebe
commit e3623fd756
17 changed files with 1170 additions and 982 deletions

View File

@@ -15,7 +15,6 @@ import (
"github.com/fosrl/olm/api"
"github.com/fosrl/olm/network"
"github.com/fosrl/olm/peermonitor"
"github.com/fosrl/olm/tunfilter"
"github.com/fosrl/olm/websocket"
"golang.zx2c4.com/wireguard/device"
"golang.zx2c4.com/wireguard/tun"
@@ -71,6 +70,8 @@ var (
holePunchData HolePunchData
uapiListener net.Listener
tdev tun.Device
filteredDev *FilteredDevice
dnsProxy *DNSProxy
apiServer *api.API
olmClient *websocket.Client
tunnelCancel context.CancelFunc
@@ -82,12 +83,6 @@ var (
globalCtx context.Context
stopRegister func()
stopPing chan struct{}
// Packet interceptor components
filteredDev *tunfilter.FilteredDevice
packetInjector *tunfilter.PacketInjector
interceptorManager *tunfilter.InterceptorManager
ipFilter *tunfilter.IPFilter
)
func Init(ctx context.Context, config GlobalConfig) {
@@ -431,15 +426,19 @@ func StartTunnel(config TunnelConfig) {
}
}
// Create packet injector for the TUN device
packetInjector = tunfilter.NewPacketInjector(tdev)
// Wrap TUN device with packet filter for DNS proxy
filteredDev = NewFilteredDevice(tdev)
// Create interceptor manager
interceptorManager = tunfilter.NewInterceptorManager(packetInjector)
// Create an interceptor filter and wrap the TUN device
interceptorFilter := tunfilter.NewInterceptorFilter(interceptorManager)
filteredDev = tunfilter.NewFilteredDevice(tdev, interceptorFilter)
// Create and start DNS proxy
dnsProxy, err = NewDNSProxy(tdev, config.MTU)
if err != nil {
logger.Error("Failed to create DNS proxy: %v", err)
return
}
if err := dnsProxy.Start(filteredDev); err != nil {
logger.Error("Failed to start DNS proxy: %v", err)
return
}
// fileUAPI, err := func() (*os.File, error) {
// if config.FileDescriptorUAPI != 0 {
@@ -1066,26 +1065,17 @@ func Close() {
dev = nil
}
// Stop packet injector
if packetInjector != nil {
packetInjector.Stop()
packetInjector = nil
// Stop DNS proxy
if dnsProxy != nil {
dnsProxy.Stop(filteredDev)
dnsProxy = nil
}
// Stop interceptor manager
if interceptorManager != nil {
interceptorManager.Stop()
interceptorManager = nil
}
// Clear packet filter
// Clear filtered device
if filteredDev != nil {
filteredDev.SetFilter(nil)
filteredDev = nil
}
ipFilter = nil
// Close TUN device
if tdev != nil {
tdev.Close()