Initial commit

This commit is contained in:
2026-06-30 15:14:37 +08:00
commit 15dab96872
311 changed files with 95639 additions and 0 deletions
+47
View File
@@ -0,0 +1,47 @@
package wg
import (
"encoding/binary"
"fmt"
)
// WGPlugin WireGuard 协议插件实现
type WGPlugin struct{}
// NewWGPlugin 创建 WireGuard 协议插件
func NewWGPlugin() *WGPlugin {
return &WGPlugin{}
}
// IsControlPacket 判断是否为控制包
// WG 控制包类型:1 (Initiation), 2 (Response), 3 (CookieReply)
func (p *WGPlugin) IsControlPacket(packet []byte) bool {
if len(packet) < 1 {
return false
}
packetType := packet[0]
return packetType == 1 || packetType == 2 || packetType == 3
}
// IsDataPacket 判断是否为数据包
// WG 数据包类型:4
func (p *WGPlugin) IsDataPacket(packet []byte) bool {
if len(packet) < 1 {
return false
}
return packet[0] == 4
}
// ExtractRouteID 从数据包中提取路由标识(WG receiver index
// WG 数据包格式:[类型 (1 字节)][保留 (3 字节)][receiver index (4 字节)]...
func (p *WGPlugin) ExtractRouteID(packet []byte) (uint32, error) {
if len(packet) < 8 {
return 0, fmt.Errorf("数据包过短:%d", len(packet))
}
// 读取 packet[4:8],网络字节序解析为 uint32
routeID := binary.BigEndian.Uint32(packet[4:8])
return routeID, nil
}