diff --git a/common/loader/type.proto b/common/loader/type.proto index 7e8ae0c2d..d311f01bc 100644 --- a/common/loader/type.proto +++ b/common/loader/type.proto @@ -5,7 +5,10 @@ option go_package = "loader"; option java_package = "com.v2ray.core.common.loader"; option java_outer_classname = "TypeProto"; +// Serialized proto message along with its type name. message TypedSettings { + // The name of the message type, retrieved from protobuf API. string type = 1; + // Serialized proto message. bytes settings = 2; } \ No newline at end of file diff --git a/config.proto b/config.proto index e9c4e07b4..eb03d4217 100644 --- a/config.proto +++ b/config.proto @@ -12,6 +12,7 @@ import "v2ray.com/core/common/log/config.proto"; import "v2ray.com/core/transport/internet/config.proto"; import "v2ray.com/core/transport/config.proto"; +// Configuration serialization format. enum ConfigFormat { Protobuf = 0; JSON = 1; @@ -40,34 +41,54 @@ message AllocationStrategy { Type type = 1; // Number of handlers (ports) running in parallel. + // Default value is 3 if unset. AllocationStrategyConcurrency concurrency = 2; // Number of minutes before a handler is regenerated. + // Default value is 5 if unset. AllocationStrategyRefresh refresh = 3; } // Config for an inbound connection handler. message InboundConnectionConfig { + // Protocol specific settings. Must be one of the supported protocols. v2ray.core.common.loader.TypedSettings settings = 1; + + // Range of port number to run on. Both inclusive. v2ray.core.common.net.PortRange port_range = 2; + + // IP address to listen on. 0.0.0.0 if unset. v2ray.core.common.net.IPOrDomain listen_on = 3; + + // Tag of this handler. string tag = 4; + AllocationStrategy allocation_strategy = 5; + v2ray.core.transport.internet.StreamConfig stream_settings = 6; + bool allow_passive_connection = 7; } +// Config for an outbound connection handler. message OutboundConnectionConfig { v2ray.core.common.loader.TypedSettings settings = 1; + + // IP address to send data through. 0.0.0.0 if unset. v2ray.core.common.net.IPOrDomain send_through = 2; v2ray.core.transport.internet.StreamConfig stream_settings = 3; string tag = 4; } message Config { + // Inbound handler configurations. Must have at least one item. repeated InboundConnectionConfig inbound = 1; + + // Outbound handler configurations. Must have at least one item. The first item is used as default for routing. repeated OutboundConnectionConfig outbound = 2; v2ray.core.common.log.Config log = 3; + + // App configuration. Must be one in the app directory. repeated v2ray.core.common.loader.TypedSettings app = 4; v2ray.core.transport.Config transport = 5; } \ No newline at end of file diff --git a/transport/internet/config.proto b/transport/internet/config.proto index d31be10af..b5cc8a6ea 100644 --- a/transport/internet/config.proto +++ b/transport/internet/config.proto @@ -8,13 +8,21 @@ import "v2ray.com/core/common/net/network.proto"; import "v2ray.com/core/common/loader/type.proto"; message NetworkSettings { + // Type of network that this settings supports. v2ray.core.common.net.Network network = 1; + + // Specific settings. v2ray.core.common.loader.TypedSettings settings = 2; } message StreamConfig { + // Effective network. v2ray.core.common.net.Network network = 1; + repeated NetworkSettings network_settings = 2; + + // Type of security. Must be a message name of the settings proto. string security_type = 3; + repeated v2ray.core.common.loader.TypedSettings security_settings = 4; } \ No newline at end of file