mirror of
https://github.com/fumiama/WireGold.git
synced 2026-06-27 22:30:26 +08:00
feat: add base14 en/decoding
This commit is contained in:
@@ -41,6 +41,7 @@ EndPoint: 0.0.0.0:56789
|
|||||||
MTU: 1504
|
MTU: 1504
|
||||||
SpeedLoop: 4096
|
SpeedLoop: 4096
|
||||||
Mask: 0x1234567890abcdef
|
Mask: 0x1234567890abcdef
|
||||||
|
Base14: true
|
||||||
Peers:
|
Peers:
|
||||||
-
|
-
|
||||||
IP: "192.168.233.2"
|
IP: "192.168.233.2"
|
||||||
|
|||||||
@@ -17,7 +17,8 @@ type Config struct {
|
|||||||
EndPoint string `yaml:"EndPoint"`
|
EndPoint string `yaml:"EndPoint"`
|
||||||
MTU int64 `yaml:"MTU"` // MTU of nic (will minus packet header len)
|
MTU int64 `yaml:"MTU"` // MTU of nic (will minus packet header len)
|
||||||
SpeedLoop uint16 `yaml:"SpeedLoop"`
|
SpeedLoop uint16 `yaml:"SpeedLoop"`
|
||||||
Mask uint64 `yaml:"Mask"` // Mask 是异或报文所用掩码, 必须保证各端统一
|
Mask uint64 `yaml:"Mask"` // Mask 是异或报文所用掩码, 必须保证各端统一
|
||||||
|
Base14 bool `yaml:"Base14"` // Base14 是否将最终报文进行 base16384 编码后再发送
|
||||||
Peers []Peer `yaml:"Peers"`
|
Peers []Peer `yaml:"Peers"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -51,6 +51,8 @@ type Me struct {
|
|||||||
srcport, dstport, mtu, speedloop uint16
|
srcport, dstport, mtu, speedloop uint16
|
||||||
// 报头掩码
|
// 报头掩码
|
||||||
mask uint64
|
mask uint64
|
||||||
|
// 是否进行 base16384 编码
|
||||||
|
base14 bool
|
||||||
// 本机网络端点初始化配置
|
// 本机网络端点初始化配置
|
||||||
networkconfigs []any
|
networkconfigs []any
|
||||||
}
|
}
|
||||||
@@ -64,6 +66,7 @@ type MyConfig struct {
|
|||||||
NICConfig *NICConfig
|
NICConfig *NICConfig
|
||||||
SrcPort, DstPort, MTU, SpeedLoop uint16
|
SrcPort, DstPort, MTU, SpeedLoop uint16
|
||||||
Mask uint64
|
Mask uint64
|
||||||
|
Base14 bool
|
||||||
}
|
}
|
||||||
|
|
||||||
type NICConfig struct {
|
type NICConfig struct {
|
||||||
@@ -116,6 +119,7 @@ func NewMe(cfg *MyConfig) (m Me) {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
m.mask = cfg.Mask
|
m.mask = cfg.Mask
|
||||||
|
m.base14 = cfg.Base14
|
||||||
var buf [8]byte
|
var buf [8]byte
|
||||||
binary.BigEndian.PutUint64(buf[:], m.mask)
|
binary.BigEndian.PutUint64(buf[:], m.mask)
|
||||||
logrus.Infoln("[me] xor mask", hex.EncodeToString(buf[:]))
|
logrus.Infoln("[me] xor mask", hex.EncodeToString(buf[:]))
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import (
|
|||||||
|
|
||||||
"github.com/fumiama/WireGold/config"
|
"github.com/fumiama/WireGold/config"
|
||||||
"github.com/fumiama/WireGold/gold/head"
|
"github.com/fumiama/WireGold/gold/head"
|
||||||
|
base14 "github.com/fumiama/go-base16384"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -29,6 +30,9 @@ func (m *Me) wait(data []byte) *head.Packet {
|
|||||||
if config.ShowDebugLog {
|
if config.ShowDebugLog {
|
||||||
logrus.Debugln("[recv] data bytes", hex.EncodeToString(data[:bound]), endl)
|
logrus.Debugln("[recv] data bytes", hex.EncodeToString(data[:bound]), endl)
|
||||||
}
|
}
|
||||||
|
if m.base14 {
|
||||||
|
data = base14.Decode(data)
|
||||||
|
}
|
||||||
seq, data := m.xordec(data)
|
seq, data := m.xordec(data)
|
||||||
if config.ShowDebugLog {
|
if config.ShowDebugLog {
|
||||||
logrus.Debugln("[recv] data xored", hex.EncodeToString(data[:bound]), endl)
|
logrus.Debugln("[recv] data xored", hex.EncodeToString(data[:bound]), endl)
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import (
|
|||||||
"github.com/fumiama/WireGold/config"
|
"github.com/fumiama/WireGold/config"
|
||||||
"github.com/fumiama/WireGold/gold/head"
|
"github.com/fumiama/WireGold/gold/head"
|
||||||
"github.com/fumiama/WireGold/helper"
|
"github.com/fumiama/WireGold/helper"
|
||||||
|
base14 "github.com/fumiama/go-base16384"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@@ -147,6 +148,9 @@ func (l *Link) writeonce(p *head.Packet, teatype uint8, additional uint16, datas
|
|||||||
logrus.Debugln("[send] data bytes", hex.EncodeToString(d[:bound]), endl)
|
logrus.Debugln("[send] data bytes", hex.EncodeToString(d[:bound]), endl)
|
||||||
}
|
}
|
||||||
d = l.me.xorenc(d, seq)
|
d = l.me.xorenc(d, seq)
|
||||||
|
if l.me.base14 {
|
||||||
|
d = base14.Encode(d)
|
||||||
|
}
|
||||||
if config.ShowDebugLog {
|
if config.ShowDebugLog {
|
||||||
logrus.Debugln("[send] data xored", hex.EncodeToString(d[:bound]), endl)
|
logrus.Debugln("[send] data xored", hex.EncodeToString(d[:bound]), endl)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -113,6 +113,7 @@ func (wg *WG) init(srcport, dstport uint16) {
|
|||||||
MTU: uint16(wg.c.MTU),
|
MTU: uint16(wg.c.MTU),
|
||||||
SpeedLoop: wg.c.SpeedLoop,
|
SpeedLoop: wg.c.SpeedLoop,
|
||||||
Mask: wg.c.Mask,
|
Mask: wg.c.Mask,
|
||||||
|
Base14: wg.c.Base14,
|
||||||
})
|
})
|
||||||
|
|
||||||
for _, peer := range wg.c.Peers {
|
for _, peer := range wg.c.Peers {
|
||||||
|
|||||||
Reference in New Issue
Block a user