mirror of
https://github.com/shynome/wgortc.git
synced 2025-09-26 20:21:16 +08:00
93c1db3064b4d99da71c5d99ca0e6aae23e14482
wgortc (Wireguard Over Webrtc)
How to Use
replace conn.Bind
with this. more details see example/main.go
// the signaler server is only for test
signaler := lens2.NewSignaler("client", "https://test:test@signaler.slive.fun")
bind := wgortc.NewBind(signaler)
dev = device.NewDevice(tun, bind, device.NewLogger(loglevel, "client"))
Custom Signaler Server
implement the signaler.Channel
interface
package signaler
import "github.com/pion/webrtc/v3"
type SDP = webrtc.SessionDescription
type Channel interface {
Handshake(endpoint string, offer SDP) (answer *SDP, err error)
Accept() (offerCh <-chan Session, err error)
Close() error
}
type Session interface {
Description() (offer SDP)
Resolve(answer *SDP) (err error)
Reject(err error)
}
如何建立连接
sequenceDiagram
participant client
participant server
par first message packet
client->>server: webrtc session description
and
client->>server: wireguard initiator message
end
Note over server,client: server wireguard check initiator
critical check failed
server--)client: close connection
option check ok
server->>client: webrtc session description
server->>client: wiregaurd response initiator
server->>client: webrtc pair connect
end
Note over server,client: webrtc connected
loop webrtc datachannel open
server->client: wireguard exchange data
end
Languages
Go
100%