github.com/eagleql/xray-core@v1.4.4/app/router/config.proto (about) 1 syntax = "proto3"; 2 3 package xray.app.router; 4 option csharp_namespace = "Xray.App.Router"; 5 option go_package = "github.com/eagleql/xray-core/app/router"; 6 option java_package = "com.xray.app.router"; 7 option java_multiple_files = true; 8 9 import "common/net/port.proto"; 10 import "common/net/network.proto"; 11 12 // Domain for routing decision. 13 message Domain { 14 // Type of domain value. 15 enum Type { 16 // The value is used as is. 17 Plain = 0; 18 // The value is used as a regular expression. 19 Regex = 1; 20 // The value is a root domain. 21 Domain = 2; 22 // The value is a domain. 23 Full = 3; 24 } 25 26 // Domain matching type. 27 Type type = 1; 28 29 // Domain value. 30 string value = 2; 31 32 message Attribute { 33 string key = 1; 34 35 oneof typed_value { 36 bool bool_value = 2; 37 int64 int_value = 3; 38 } 39 } 40 41 // Attributes of this domain. May be used for filtering. 42 repeated Attribute attribute = 3; 43 } 44 45 // IP for routing decision, in CIDR form. 46 message CIDR { 47 // IP address, should be either 4 or 16 bytes. 48 bytes ip = 1; 49 50 // Number of leading ones in the network mask. 51 uint32 prefix = 2; 52 } 53 54 message GeoIP { 55 string country_code = 1; 56 repeated CIDR cidr = 2; 57 } 58 59 message GeoIPList { 60 repeated GeoIP entry = 1; 61 } 62 63 message GeoSite { 64 string country_code = 1; 65 repeated Domain domain = 2; 66 } 67 68 message GeoSiteList { 69 repeated GeoSite entry = 1; 70 } 71 72 message RoutingRule { 73 oneof target_tag { 74 // Tag of outbound that this rule is pointing to. 75 string tag = 1; 76 77 // Tag of routing balancer. 78 string balancing_tag = 12; 79 } 80 81 // List of domains for target domain matching. 82 repeated Domain domain = 2; 83 84 // List of CIDRs for target IP address matching. 85 // Deprecated. Use geoip below. 86 repeated CIDR cidr = 3 [deprecated = true]; 87 88 // List of GeoIPs for target IP address matching. If this entry exists, the 89 // cidr above will have no effect. GeoIP fields with the same country code are 90 // supposed to contain exactly same content. They will be merged during 91 // runtime. For customized GeoIPs, please leave country code empty. 92 repeated GeoIP geoip = 10; 93 94 // A range of port [from, to]. If the destination port is in this range, this 95 // rule takes effect. Deprecated. Use port_list. 96 xray.common.net.PortRange port_range = 4 [deprecated = true]; 97 98 // List of ports. 99 xray.common.net.PortList port_list = 14; 100 101 // List of networks. Deprecated. Use networks. 102 xray.common.net.NetworkList network_list = 5 [deprecated = true]; 103 104 // List of networks for matching. 105 repeated xray.common.net.Network networks = 13; 106 107 // List of CIDRs for source IP address matching. 108 repeated CIDR source_cidr = 6 [deprecated = true]; 109 110 // List of GeoIPs for source IP address matching. If this entry exists, the 111 // source_cidr above will have no effect. 112 repeated GeoIP source_geoip = 11; 113 114 // List of ports for source port matching. 115 xray.common.net.PortList source_port_list = 16; 116 117 repeated string user_email = 7; 118 repeated string inbound_tag = 8; 119 repeated string protocol = 9; 120 121 string attributes = 15; 122 123 string domain_matcher = 17; 124 } 125 126 message BalancingRule { 127 string tag = 1; 128 repeated string outbound_selector = 2; 129 } 130 131 message Config { 132 enum DomainStrategy { 133 // Use domain as is. 134 AsIs = 0; 135 136 // Always resolve IP for domains. 137 UseIp = 1; 138 139 // Resolve to IP if the domain doesn't match any rules. 140 IpIfNonMatch = 2; 141 142 // Resolve to IP if any rule requires IP matching. 143 IpOnDemand = 3; 144 } 145 DomainStrategy domain_strategy = 1; 146 repeated RoutingRule rule = 2; 147 repeated BalancingRule balancing_rule = 3; 148 }