1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2025-01-03 07:56:42 -05:00

feat: packet_encoding for v4 config

This commit is contained in:
mkmark 2024-07-18 15:51:27 +08:00 committed by Xiaokang Wang (Shelikhoo)
parent 9eaff44bc6
commit cefddb0aa4
4 changed files with 50 additions and 19 deletions

View File

@ -3,6 +3,7 @@ package v4
import ( import (
"github.com/golang/protobuf/proto" "github.com/golang/protobuf/proto"
"github.com/v2fly/v2ray-core/v5/common/net/packetaddr"
"github.com/v2fly/v2ray-core/v5/common/protocol" "github.com/v2fly/v2ray-core/v5/common/protocol"
"github.com/v2fly/v2ray-core/v5/common/serial" "github.com/v2fly/v2ray-core/v5/common/serial"
"github.com/v2fly/v2ray-core/v5/infra/conf/cfgcommon" "github.com/v2fly/v2ray-core/v5/infra/conf/cfgcommon"
@ -10,13 +11,14 @@ import (
) )
type ShadowsocksServerConfig struct { type ShadowsocksServerConfig struct {
Cipher string `json:"method"` Cipher string `json:"method"`
Password string `json:"password"` Password string `json:"password"`
UDP bool `json:"udp"` UDP bool `json:"udp"`
Level byte `json:"level"` Level byte `json:"level"`
Email string `json:"email"` Email string `json:"email"`
NetworkList *cfgcommon.NetworkList `json:"network"` NetworkList *cfgcommon.NetworkList `json:"network"`
IVCheck bool `json:"ivCheck"` IVCheck bool `json:"ivCheck"`
PacketEncoding string `json:"packetEncoding"`
} }
func (v *ShadowsocksServerConfig) Build() (proto.Message, error) { func (v *ShadowsocksServerConfig) Build() (proto.Message, error) {
@ -42,6 +44,13 @@ func (v *ShadowsocksServerConfig) Build() (proto.Message, error) {
Account: serial.ToTypedMessage(account), Account: serial.ToTypedMessage(account),
} }
switch v.PacketEncoding {
case "Packet":
config.PacketEncoding = packetaddr.PacketAddrType_Packet
case "", "None":
config.PacketEncoding = packetaddr.PacketAddrType_None
}
return config, nil return config, nil
} }

View File

@ -6,6 +6,7 @@ import (
"github.com/golang/protobuf/proto" "github.com/golang/protobuf/proto"
"github.com/v2fly/v2ray-core/v5/common/net/packetaddr"
"github.com/v2fly/v2ray-core/v5/common/protocol" "github.com/v2fly/v2ray-core/v5/common/protocol"
"github.com/v2fly/v2ray-core/v5/common/serial" "github.com/v2fly/v2ray-core/v5/common/serial"
"github.com/v2fly/v2ray-core/v5/infra/conf/cfgcommon" "github.com/v2fly/v2ray-core/v5/infra/conf/cfgcommon"
@ -30,12 +31,13 @@ const (
) )
type SocksServerConfig struct { type SocksServerConfig struct {
AuthMethod string `json:"auth"` AuthMethod string `json:"auth"`
Accounts []*SocksAccount `json:"accounts"` Accounts []*SocksAccount `json:"accounts"`
UDP bool `json:"udp"` UDP bool `json:"udp"`
Host *cfgcommon.Address `json:"ip"` Host *cfgcommon.Address `json:"ip"`
Timeout uint32 `json:"timeout"` Timeout uint32 `json:"timeout"`
UserLevel uint32 `json:"userLevel"` UserLevel uint32 `json:"userLevel"`
PacketEncoding string `json:"packetEncoding"`
} }
func (v *SocksServerConfig) Build() (proto.Message, error) { func (v *SocksServerConfig) Build() (proto.Message, error) {
@ -64,6 +66,14 @@ func (v *SocksServerConfig) Build() (proto.Message, error) {
config.Timeout = v.Timeout config.Timeout = v.Timeout
config.UserLevel = v.UserLevel config.UserLevel = v.UserLevel
switch v.PacketEncoding {
case "Packet":
config.PacketEncoding = packetaddr.PacketAddrType_Packet
case "", "None":
config.PacketEncoding = packetaddr.PacketAddrType_None
}
return config, nil return config, nil
} }

View File

@ -4,6 +4,7 @@ import (
"testing" "testing"
"github.com/v2fly/v2ray-core/v5/common/net" "github.com/v2fly/v2ray-core/v5/common/net"
"github.com/v2fly/v2ray-core/v5/common/net/packetaddr"
"github.com/v2fly/v2ray-core/v5/common/protocol" "github.com/v2fly/v2ray-core/v5/common/protocol"
"github.com/v2fly/v2ray-core/v5/common/serial" "github.com/v2fly/v2ray-core/v5/common/serial"
"github.com/v2fly/v2ray-core/v5/infra/conf/cfgcommon" "github.com/v2fly/v2ray-core/v5/infra/conf/cfgcommon"
@ -30,7 +31,8 @@ func TestSocksInboundConfig(t *testing.T) {
"udp": false, "udp": false,
"ip": "127.0.0.1", "ip": "127.0.0.1",
"timeout": 5, "timeout": 5,
"userLevel": 1 "userLevel": 1,
"packetEncoding": "Packet"
}`, }`,
Parser: testassist.LoadJSON(creator), Parser: testassist.LoadJSON(creator),
Output: &socks.ServerConfig{ Output: &socks.ServerConfig{
@ -44,8 +46,9 @@ func TestSocksInboundConfig(t *testing.T) {
Ip: []byte{127, 0, 0, 1}, Ip: []byte{127, 0, 0, 1},
}, },
}, },
Timeout: 5, Timeout: 5,
UserLevel: 1, UserLevel: 1,
PacketEncoding: packetaddr.PacketAddrType_Packet,
}, },
}, },
}) })

View File

@ -11,6 +11,7 @@ import (
"github.com/golang/protobuf/proto" "github.com/golang/protobuf/proto"
"github.com/v2fly/v2ray-core/v5/common/net" "github.com/v2fly/v2ray-core/v5/common/net"
"github.com/v2fly/v2ray-core/v5/common/net/packetaddr"
"github.com/v2fly/v2ray-core/v5/common/protocol" "github.com/v2fly/v2ray-core/v5/common/protocol"
"github.com/v2fly/v2ray-core/v5/common/serial" "github.com/v2fly/v2ray-core/v5/common/serial"
"github.com/v2fly/v2ray-core/v5/infra/conf/cfgcommon" "github.com/v2fly/v2ray-core/v5/infra/conf/cfgcommon"
@ -91,9 +92,10 @@ type TrojanUserConfig struct {
// TrojanServerConfig is Inbound configuration // TrojanServerConfig is Inbound configuration
type TrojanServerConfig struct { type TrojanServerConfig struct {
Clients []*TrojanUserConfig `json:"clients"` Clients []*TrojanUserConfig `json:"clients"`
Fallback json.RawMessage `json:"fallback"` Fallback json.RawMessage `json:"fallback"`
Fallbacks []*TrojanInboundFallback `json:"fallbacks"` Fallbacks []*TrojanInboundFallback `json:"fallbacks"`
PacketEncoding string `json:"packetEncoding"`
} }
// Build implements Buildable // Build implements Buildable
@ -167,5 +169,12 @@ func (c *TrojanServerConfig) Build() (proto.Message, error) {
} }
} }
switch c.PacketEncoding {
case "Packet":
config.PacketEncoding = packetaddr.PacketAddrType_Packet
case "", "None":
config.PacketEncoding = packetaddr.PacketAddrType_None
}
return config, nil return config, nil
} }