1syntax = "proto3";
2
3package v2ray.core.app.proxyman;
4option csharp_namespace = "V2Ray.Core.App.Proxyman";
5option go_package = "github.com/v2fly/v2ray-core/v4/app/proxyman";
6option java_package = "com.v2ray.core.app.proxyman";
7option java_multiple_files = true;
8
9import "common/net/address.proto";
10import "common/net/port.proto";
11import "transport/internet/config.proto";
12import "common/serial/typed_message.proto";
13
14message InboundConfig {}
15
16message AllocationStrategy {
17  enum Type {
18    // Always allocate all connection handlers.
19    Always = 0;
20
21    // Randomly allocate specific range of handlers.
22    Random = 1;
23
24    // External. Not supported yet.
25    External = 2;
26  }
27
28  Type type = 1;
29
30  message AllocationStrategyConcurrency {
31    uint32 value = 1;
32  }
33
34  // Number of handlers (ports) running in parallel.
35  // Default value is 3 if unset.
36  AllocationStrategyConcurrency concurrency = 2;
37
38  message AllocationStrategyRefresh {
39    uint32 value = 1;
40  }
41
42  // Number of minutes before a handler is regenerated.
43  // Default value is 5 if unset.
44  AllocationStrategyRefresh refresh = 3;
45}
46
47enum KnownProtocols {
48  HTTP = 0;
49  TLS = 1;
50}
51
52message SniffingConfig {
53  // Whether or not to enable content sniffing on an inbound connection.
54  bool enabled = 1;
55
56  // Override target destination if sniff'ed protocol is in the given list.
57  // Supported values are "http", "tls", "fakedns".
58  repeated string destination_override = 2;
59
60  // Whether should only try to sniff metadata without waiting for client input.
61  // Can be used to support SMTP like protocol where server send the first message.
62  bool metadata_only = 3;
63}
64
65message ReceiverConfig {
66  // PortRange specifies the ports which the Receiver should listen on.
67  v2ray.core.common.net.PortRange port_range = 1;
68  // Listen specifies the IP address that the Receiver should listen on.
69  v2ray.core.common.net.IPOrDomain listen = 2;
70  AllocationStrategy allocation_strategy = 3;
71  v2ray.core.transport.internet.StreamConfig stream_settings = 4;
72  bool receive_original_destination = 5;
73  reserved 6;
74  // Override domains for the given protocol.
75  // Deprecated. Use sniffing_settings.
76  repeated KnownProtocols domain_override = 7 [deprecated = true];
77  SniffingConfig sniffing_settings = 8;
78}
79
80message InboundHandlerConfig {
81  string tag = 1;
82  v2ray.core.common.serial.TypedMessage receiver_settings = 2;
83  v2ray.core.common.serial.TypedMessage proxy_settings = 3;
84}
85
86message OutboundConfig {}
87
88message SenderConfig {
89  // Send traffic through the given IP. Only IP is allowed.
90  v2ray.core.common.net.IPOrDomain via = 1;
91  v2ray.core.transport.internet.StreamConfig stream_settings = 2;
92  v2ray.core.transport.internet.ProxyConfig proxy_settings = 3;
93  MultiplexingConfig multiplex_settings = 4;
94}
95
96message MultiplexingConfig {
97  // Whether or not Mux is enabled.
98  bool enabled = 1;
99  // Max number of concurrent connections that one Mux connection can handle.
100  uint32 concurrency = 2;
101}
102