Files
natpass/code/client/handler/send.go
T
2021-08-02 18:32:01 +08:00

53 lines
1.2 KiB
Go

package handler
import (
"context"
"natpass/code/client/global"
"natpass/code/network"
"github.com/lwch/runtime"
)
const cidLength = 32
func createTunnel(ctx context.Context, cfg global.Tunnel, cli network.Natpass_ControlClient, id string) string {
cid, err := runtime.UUID(cidLength)
runtime.Assert(err)
sendConnect(cli, cid, cfg, id, cfg.Target)
return cid
}
func sendConnect(cli network.Natpass_ControlClient, cid string, cfg global.Tunnel,
from, to string) {
tpy := network.ConnectRequest_tcp
if cfg.Type != "tcp" {
tpy = network.ConnectRequest_udp
}
err := cli.Send(&network.ControlData{
XType: network.ControlData_connect_req,
From: from,
To: to,
Payload: &network.ControlData_Creq{
Creq: &network.ConnectRequest{
Name: cfg.Name,
Cid: cid,
XType: tpy,
Addr: cfg.RemoteAddr,
Port: uint32(cfg.RemotePort),
},
},
})
runtime.Assert(err)
}
func connectResponse(cli network.Natpass_ControlClient, payload *network.ConnectResponse, from, to string) {
cli.Send(&network.ControlData{
XType: network.ControlData_connect_rep,
From: from,
To: to,
Payload: &network.ControlData_Crep{
Crep: payload,
},
})
}