1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2025-05-18 13:09:04 -04:00

shadowsockets fullcone inbound support

This commit is contained in:
Shelikhoo 2021-12-30 22:20:10 +00:00 committed by Xiaokang Wang (Shelikhoo)
parent d068b60791
commit e28ef6a47d
3 changed files with 20 additions and 2 deletions

View File

@ -9,6 +9,7 @@ option java_multiple_files = true;
import "common/net/network.proto"; import "common/net/network.proto";
import "common/protocol/user.proto"; import "common/protocol/user.proto";
import "common/protocol/server_spec.proto"; import "common/protocol/server_spec.proto";
import "common/net/packetaddr/config.proto";
message Account { message Account {
string password = 1; string password = 1;
@ -31,6 +32,7 @@ message ServerConfig {
bool udp_enabled = 1 [deprecated = true]; bool udp_enabled = 1 [deprecated = true];
v2ray.core.common.protocol.User user = 2; v2ray.core.common.protocol.User user = 2;
repeated v2ray.core.common.net.Network network = 3; repeated v2ray.core.common.net.Network network = 3;
v2ray.core.net.packetaddr.PacketAddrType packet_encoding = 4;
} }
message ClientConfig { message ClientConfig {

View File

@ -2,6 +2,7 @@ package shadowsocks
import ( import (
"context" "context"
"github.com/v2fly/v2ray-core/v5/common/net/packetaddr"
"time" "time"
core "github.com/v2fly/v2ray-core/v5" core "github.com/v2fly/v2ray-core/v5"
@ -70,10 +71,23 @@ func (s *Server) Process(ctx context.Context, network net.Network, conn internet
} }
func (s *Server) handlerUDPPayload(ctx context.Context, conn internet.Connection, dispatcher routing.Dispatcher) error { func (s *Server) handlerUDPPayload(ctx context.Context, conn internet.Connection, dispatcher routing.Dispatcher) error {
udpServer := udp.NewSplitDispatcher(dispatcher, func(ctx context.Context, packet *udp_proto.Packet) { udpDispatcherConstructor := udp.NewSplitDispatcher
switch s.config.PacketEncoding {
case packetaddr.PacketAddrType_None:
break
case packetaddr.PacketAddrType_Packet:
packetAddrDispatcherFactory := udp.NewPacketAddrDispatcherCreator(ctx)
udpDispatcherConstructor = packetAddrDispatcherFactory.NewPacketAddrDispatcher
}
udpServer := udpDispatcherConstructor(dispatcher, func(ctx context.Context, packet *udp_proto.Packet) {
request := protocol.RequestHeaderFromContext(ctx) request := protocol.RequestHeaderFromContext(ctx)
if request == nil { if request == nil {
return request = &protocol.RequestHeader{
Port: packet.Source.Port,
Address: packet.Source.Address,
User: s.user,
}
} }
payload := packet.Payload payload := packet.Payload

View File

@ -8,6 +8,7 @@ option java_multiple_files = true;
import "common/protoext/extensions.proto"; import "common/protoext/extensions.proto";
import "common/net/address.proto"; import "common/net/address.proto";
import "common/net/packetaddr/config.proto";
message ServerConfig{ message ServerConfig{
option (v2ray.core.common.protoext.message_opt).type = "inbound"; option (v2ray.core.common.protoext.message_opt).type = "inbound";
@ -16,6 +17,7 @@ message ServerConfig{
string method = 1; string method = 1;
string password = 2; string password = 2;
string network = 3; string network = 3;
v2ray.core.net.packetaddr.PacketAddrType packet_encoding = 4;
} }
message ClientConfig { message ClientConfig {