Xray-core/app/proxyman/config.proto

116 lines
3.2 KiB
Protocol Buffer
Raw Normal View History

2020-11-25 11:01:53 +00:00
syntax = "proto3";
package xray.app.proxyman;
option csharp_namespace = "Xray.App.Proxyman";
2020-12-04 01:36:16 +00:00
option go_package = "github.com/xtls/xray-core/app/proxyman";
2020-11-25 11:01:53 +00:00
option java_package = "com.xray.app.proxyman";
option java_multiple_files = true;
import "common/net/address.proto";
import "common/net/port.proto";
import "transport/internet/config.proto";
import "common/serial/typed_message.proto";
message InboundConfig {}
message AllocationStrategy {
enum Type {
// Always allocate all connection handlers.
Always = 0;
// Randomly allocate specific range of handlers.
Random = 1;
// External. Not supported yet.
External = 2;
}
Type type = 1;
2023-04-23 11:27:32 +00:00
message AllocationStrategyConcurrency {uint32 value = 1;}
2020-11-25 11:01:53 +00:00
// Number of handlers (ports) running in parallel.
// Default value is 3 if unset.
AllocationStrategyConcurrency concurrency = 2;
2023-04-23 11:27:32 +00:00
message AllocationStrategyRefresh {uint32 value = 1;}
2020-11-25 11:01:53 +00:00
// Number of minutes before a handler is regenerated.
// Default value is 5 if unset.
AllocationStrategyRefresh refresh = 3;
}
enum KnownProtocols {
HTTP = 0;
TLS = 1;
}
message SniffingConfig {
// Whether or not to enable content sniffing on an inbound connection.
bool enabled = 1;
// Override target destination if sniff'ed protocol is in the given list.
// Supported values are "http", "tls", "fakedns".
2020-11-25 11:01:53 +00:00
repeated string destination_override = 2;
repeated string domains_excluded = 3;
2021-09-16 07:05:48 +00:00
// Whether should only try to sniff metadata without waiting for client input.
// Can be used to support SMTP like protocol where server send the first
// message.
bool metadata_only = 4;
2021-09-16 07:05:48 +00:00
bool route_only = 5;
2020-11-25 11:01:53 +00:00
}
message ReceiverConfig {
// PortList specifies the ports which the Receiver should listen on.
xray.common.net.PortList port_list = 1;
2020-11-25 11:01:53 +00:00
// Listen specifies the IP address that the Receiver should listen on.
xray.common.net.IPOrDomain listen = 2;
AllocationStrategy allocation_strategy = 3;
xray.transport.internet.StreamConfig stream_settings = 4;
bool receive_original_destination = 5;
reserved 6;
// Override domains for the given protocol.
// Deprecated. Use sniffing_settings.
2023-04-23 11:27:32 +00:00
repeated KnownProtocols domain_override = 7 [deprecated = true];
2020-11-25 11:01:53 +00:00
SniffingConfig sniffing_settings = 8;
}
message InboundHandlerConfig {
string tag = 1;
xray.common.serial.TypedMessage receiver_settings = 2;
xray.common.serial.TypedMessage proxy_settings = 3;
}
message OutboundConfig {}
message SenderConfig {
// Send traffic through the given IP. Only IP is allowed.
xray.common.net.IPOrDomain via = 1;
xray.transport.internet.StreamConfig stream_settings = 2;
xray.transport.internet.ProxyConfig proxy_settings = 3;
MultiplexingConfig multiplex_settings = 4;
2023-04-23 11:27:32 +00:00
SingMultiplexConfig smux_settings = 5;
2020-11-25 11:01:53 +00:00
}
message MultiplexingConfig {
// Whether or not Mux is enabled.
bool enabled = 1;
// Max number of concurrent connections that one Mux connection can handle.
int32 concurrency = 2;
// Transport XUDP in another Mux.
int32 xudpConcurrency = 3;
// "reject" (default), "allow" or "skip".
string xudpProxyUDP443 = 4;
2020-11-25 11:01:53 +00:00
}
2023-04-23 11:27:32 +00:00
message SingMultiplexConfig {
bool enabled = 1;
string protocol = 2;
int32 max_connections = 3;
int32 min_streams = 4;
int32 max_streams = 5;
bool padding = 6;
}