mirror of
https://github.com/xjasonlyu/tun2socks.git
synced 2025-10-06 17:26:58 +08:00
34
engine/parse_windows.go
Normal file
34
engine/parse_windows.go
Normal file
@@ -0,0 +1,34 @@
|
||||
package engine
|
||||
|
||||
import (
|
||||
"net/url"
|
||||
|
||||
"github.com/gorilla/schema"
|
||||
"golang.org/x/sys/windows"
|
||||
wun "golang.zx2c4.com/wireguard/tun"
|
||||
|
||||
"github.com/xjasonlyu/tun2socks/v2/core/device"
|
||||
"github.com/xjasonlyu/tun2socks/v2/core/device/tun"
|
||||
"github.com/xjasonlyu/tun2socks/v2/internal/version"
|
||||
)
|
||||
|
||||
func init() {
|
||||
wun.WintunTunnelType = version.Name
|
||||
}
|
||||
|
||||
func parseTUN(u *url.URL, mtu uint32) (device.Device, error) {
|
||||
opts := struct {
|
||||
GUID string
|
||||
}{}
|
||||
if err := schema.NewDecoder().Decode(&opts, u.Query()); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if opts.GUID != "" {
|
||||
guid, err := windows.GUIDFromString(opts.GUID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
wun.WintunStaticRequestedGUID = &guid
|
||||
}
|
||||
return tun.Open(u.Host, mtu)
|
||||
}
|
Reference in New Issue
Block a user