Hunter0x7c7
2022-08-11 a82f9cb69f63aaeba40c024960deda7d75b9fece
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
41
42
43
44
45
46
47
48
49
50
51
52
package simplified
 
import (
    "context"
 
    "github.com/v2fly/v2ray-core/v5/common"
    "github.com/v2fly/v2ray-core/v5/common/net"
    "github.com/v2fly/v2ray-core/v5/common/protocol"
    "github.com/v2fly/v2ray-core/v5/common/serial"
    "github.com/v2fly/v2ray-core/v5/proxy/shadowsocks"
)
 
func init() {
    common.Must(common.RegisterConfig((*ServerConfig)(nil), func(ctx context.Context, config interface{}) (interface{}, error) {
        simplifiedServer := config.(*ServerConfig)
        fullServer := &shadowsocks.ServerConfig{
            User: &protocol.User{
                Account: serial.ToTypedMessage(&shadowsocks.Account{
                    Password:   simplifiedServer.Password,
                    CipherType: shadowsocks.CipherFromString(simplifiedServer.Method),
                }),
            },
            Network:        net.ParseNetworks(simplifiedServer.Network),
            PacketEncoding: simplifiedServer.PacketEncoding,
        }
 
        return common.CreateObject(ctx, fullServer)
    }))
 
    common.Must(common.RegisterConfig((*ClientConfig)(nil), func(ctx context.Context, config interface{}) (interface{}, error) {
        simplifiedClient := config.(*ClientConfig)
        fullClient := &shadowsocks.ClientConfig{
            Server: []*protocol.ServerEndpoint{
                {
                    Address: simplifiedClient.Address,
                    Port:    simplifiedClient.Port,
                    User: []*protocol.User{
                        {
                            Account: serial.ToTypedMessage(&shadowsocks.Account{
                                Password:                       simplifiedClient.Password,
                                CipherType:                     shadowsocks.CipherFromString(simplifiedClient.Method),
                                ExperimentReducedIvHeadEntropy: simplifiedClient.ExperimentReducedIvHeadEntropy,
                            }),
                        },
                    },
                },
            },
        }
 
        return common.CreateObject(ctx, fullClient)
    }))
}