1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
| package internet
|
| import (
| "context"
| "net"
|
| "github.com/v2fly/v2ray-core/v5/common"
| )
|
| type PacketHeader interface {
| Size() int32
| Serialize([]byte)
| }
|
| func CreatePacketHeader(config interface{}) (PacketHeader, error) {
| header, err := common.CreateObject(context.Background(), config)
| if err != nil {
| return nil, err
| }
| if h, ok := header.(PacketHeader); ok {
| return h, nil
| }
| return nil, newError("not a packet header")
| }
|
| type ConnectionAuthenticator interface {
| Client(net.Conn) net.Conn
| Server(net.Conn) net.Conn
| }
|
| func CreateConnectionAuthenticator(config interface{}) (ConnectionAuthenticator, error) {
| auth, err := common.CreateObject(context.Background(), config)
| if err != nil {
| return nil, err
| }
| if a, ok := auth.(ConnectionAuthenticator); ok {
| return a, nil
| }
| return nil, newError("not a ConnectionAuthenticator")
| }
|
|