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:
parent
d068b60791
commit
e28ef6a47d
@ -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 {
|
||||||
|
@ -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
|
||||||
|
@ -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 {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user