1
0
mirror of https://github.com/fumiama/WireGold.git synced 2026-06-11 04:06:14 +08:00

模块化 me router

This commit is contained in:
fumiama
2021-12-28 12:44:28 +08:00
parent bba9662a5b
commit ff5d9a03c5
7 changed files with 87 additions and 62 deletions

View File

@@ -18,9 +18,9 @@ type Tunnel struct {
dest uint16
}
func Create(peer string, srcport uint16, destport uint16) (s Tunnel, err error) {
func Create(me *link.Me, peer string, srcport uint16, destport uint16) (s Tunnel, err error) {
logrus.Infoln("[tunnel] create from", srcport, "to", destport)
s.l, err = link.Connect(peer)
s.l, err = me.Connect(peer)
if err == nil {
s.in = make(chan []byte, 4)
s.out = make(chan []byte, 4)

View File

@@ -3,25 +3,40 @@ package tunnel
import (
"testing"
"github.com/fumiama/WireGold/gold/link"
curve "github.com/fumiama/go-x25519"
"github.com/sirupsen/logrus"
"github.com/fumiama/WireGold/gold/link"
)
func TestTunnel(t *testing.T) {
logrus.SetLevel(logrus.DebugLevel)
link.SetMyself([32]byte{}, "192.168.1.2", "127.0.0.1:1236")
link.AddPeer("192.168.1.2", nil, "127.0.0.1:1236", nil, 0, false)
tunn, err := Create("192.168.1.2", 1, 1)
selfpk, err := curve.New(nil)
if err != nil {
t.Error(err)
} else {
sendb := ([]byte)("1234")
tunn.Write(sendb)
p := make([]byte, 4)
tunn.Read(p)
if string(sendb) != string(p) {
t.Log("error: recv", p)
t.Fail()
}
panic(err)
}
peerpk, err := curve.New(nil)
if err != nil {
panic(err)
}
m := link.NewMe(selfpk.Private(), "192.168.1.2", "127.0.0.1:1236")
m.AddPeer("192.168.1.3", peerpk.Public(), "127.0.0.1:1237", nil, 0, false)
p := link.NewMe(peerpk.Private(), "192.168.1.3", "127.0.0.1:1237")
p.AddPeer("192.168.1.2", selfpk.Public(), "127.0.0.1:1236", nil, 0, false)
tunnme, err := Create(&m, "192.168.1.3", 1, 1)
if err != nil {
t.Fatal(err)
}
tunnpeer, err := Create(&p, "192.168.1.2", 1, 1)
if err != nil {
t.Fatal(err)
}
sendb := ([]byte)("1234")
tunnme.Write(sendb)
buf := make([]byte, 4)
tunnpeer.Read(buf)
if string(sendb) != string(buf) {
t.Log("error: recv", buf)
t.Fail()
}
}