mirror of https://github.com/v2ray/v2ray-core
commit
4bb3e4eb30
|
@ -0,0 +1,28 @@
|
||||||
|
name: Update dlc
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '0 0 * * FRI'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
build:
|
||||||
|
name: Update
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- name: Check out code into the Go module directory
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Download and Write
|
||||||
|
run: |
|
||||||
|
curl -L -o release/config/geoip.dat "https://github.com/v2ray/geoip/raw/release/geoip.dat"
|
||||||
|
curl -L -o release/config/geosite.dat "https://github.com/v2ray/domain-list-community/raw/release/dlc.dat"
|
||||||
|
|
||||||
|
- name: push
|
||||||
|
run: |
|
||||||
|
git config --local user.email "action@github.com"
|
||||||
|
git config --local user.name "GitHub Action"
|
||||||
|
git commit -am "update geoip, geosite" -a
|
||||||
|
git push -v --progress
|
||||||
|
|
|
@ -5,6 +5,7 @@ on:
|
||||||
branches: [ master ]
|
branches: [ master ]
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: [ master ]
|
branches: [ master ]
|
||||||
|
types: [assigned, opened, synchronize, reopened]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
|
@ -16,6 +17,8 @@ jobs:
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Lint Code Base
|
- name: Lint Code Base
|
||||||
uses: github/super-linter@v2.0.0
|
uses: github/super-linter@v2.2.0
|
||||||
env:
|
env:
|
||||||
VALIDATE_ALL_CODEBASE: false
|
VALIDATE_ALL_CODEBASE: false
|
||||||
|
VALIDATE_JSON: false
|
||||||
|
VALIDATE_ANSIBLE: false
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
# This is a basic workflow to help you get started with Actions
|
||||||
|
|
||||||
|
name: Sign
|
||||||
|
|
||||||
|
# Controls when the action will run. Triggers the workflow on push or pull request
|
||||||
|
# events but only for the master branch
|
||||||
|
on:
|
||||||
|
release:
|
||||||
|
types: [released]
|
||||||
|
|
||||||
|
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
||||||
|
jobs:
|
||||||
|
# This workflow contains a single job called "build"
|
||||||
|
build:
|
||||||
|
# The type of runner that the job will run on
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
# Steps represent a sequence of tasks that will be executed as part of the job
|
||||||
|
steps:
|
||||||
|
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
# Invoke release signing
|
||||||
|
- name: make it run
|
||||||
|
run: chmod +x $GITHUB_WORKSPACE/release/requestsign_github.sh
|
||||||
|
|
||||||
|
# Invoke release signing
|
||||||
|
- name: make it run
|
||||||
|
run: chmod +x $GITHUB_WORKSPACE/release/requestsign.sh
|
||||||
|
|
||||||
|
# Invoke release signing
|
||||||
|
- name: Invoke release signing
|
||||||
|
env:
|
||||||
|
SIGN_SERVICE_PASSWORD: ${{ secrets.SIGN_SERVICE_PASSWORD }}
|
||||||
|
SIGN_SERIVCE_URL: ${{ secrets.SIGN_SERIVCE_URL }}
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
run: $GITHUB_WORKSPACE/release/requestsign_github.sh
|
|
@ -0,0 +1,18 @@
|
||||||
|
name: Mark stale issues and pull requests
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: "30 1 * * *"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
stale:
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/stale@v1
|
||||||
|
with:
|
||||||
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
stale-issue-message: 'This issue is stale because it has been open 120 days with no activity. Remove stale label or comment or this will be closed in 5 days'
|
||||||
|
days-before-stale: 120
|
||||||
|
days-before-close: 5
|
|
@ -84,8 +84,10 @@ func (p *Policy) ToCorePolicy() policy.Session {
|
||||||
func (p *SystemPolicy) ToCorePolicy() policy.System {
|
func (p *SystemPolicy) ToCorePolicy() policy.System {
|
||||||
return policy.System{
|
return policy.System{
|
||||||
Stats: policy.SystemStats{
|
Stats: policy.SystemStats{
|
||||||
InboundUplink: p.Stats.InboundUplink,
|
InboundUplink: p.Stats.InboundUplink,
|
||||||
InboundDownlink: p.Stats.InboundDownlink,
|
InboundDownlink: p.Stats.InboundDownlink,
|
||||||
|
OutboundUplink: p.Stats.OutboundUplink,
|
||||||
|
OutboundDownlink: p.Stats.OutboundDownlink,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,9 @@
|
||||||
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
|
// versions:
|
||||||
|
// protoc-gen-go v1.24.0
|
||||||
|
// protoc (unknown)
|
||||||
|
// source: config.proto
|
||||||
|
|
||||||
package policy
|
package policy
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -30,7 +36,7 @@ type Second struct {
|
||||||
func (x *Second) Reset() {
|
func (x *Second) Reset() {
|
||||||
*x = Second{}
|
*x = Second{}
|
||||||
if protoimpl.UnsafeEnabled {
|
if protoimpl.UnsafeEnabled {
|
||||||
mi := &file_v2ray_com_core_app_policy_config_proto_msgTypes[0]
|
mi := &file_config_proto_msgTypes[0]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
|
@ -43,7 +49,7 @@ func (x *Second) String() string {
|
||||||
func (*Second) ProtoMessage() {}
|
func (*Second) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *Second) ProtoReflect() protoreflect.Message {
|
func (x *Second) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_v2ray_com_core_app_policy_config_proto_msgTypes[0]
|
mi := &file_config_proto_msgTypes[0]
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
@ -56,7 +62,7 @@ func (x *Second) ProtoReflect() protoreflect.Message {
|
||||||
|
|
||||||
// Deprecated: Use Second.ProtoReflect.Descriptor instead.
|
// Deprecated: Use Second.ProtoReflect.Descriptor instead.
|
||||||
func (*Second) Descriptor() ([]byte, []int) {
|
func (*Second) Descriptor() ([]byte, []int) {
|
||||||
return file_v2ray_com_core_app_policy_config_proto_rawDescGZIP(), []int{0}
|
return file_config_proto_rawDescGZIP(), []int{0}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *Second) GetValue() uint32 {
|
func (x *Second) GetValue() uint32 {
|
||||||
|
@ -79,7 +85,7 @@ type Policy struct {
|
||||||
func (x *Policy) Reset() {
|
func (x *Policy) Reset() {
|
||||||
*x = Policy{}
|
*x = Policy{}
|
||||||
if protoimpl.UnsafeEnabled {
|
if protoimpl.UnsafeEnabled {
|
||||||
mi := &file_v2ray_com_core_app_policy_config_proto_msgTypes[1]
|
mi := &file_config_proto_msgTypes[1]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
|
@ -92,7 +98,7 @@ func (x *Policy) String() string {
|
||||||
func (*Policy) ProtoMessage() {}
|
func (*Policy) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *Policy) ProtoReflect() protoreflect.Message {
|
func (x *Policy) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_v2ray_com_core_app_policy_config_proto_msgTypes[1]
|
mi := &file_config_proto_msgTypes[1]
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
@ -105,7 +111,7 @@ func (x *Policy) ProtoReflect() protoreflect.Message {
|
||||||
|
|
||||||
// Deprecated: Use Policy.ProtoReflect.Descriptor instead.
|
// Deprecated: Use Policy.ProtoReflect.Descriptor instead.
|
||||||
func (*Policy) Descriptor() ([]byte, []int) {
|
func (*Policy) Descriptor() ([]byte, []int) {
|
||||||
return file_v2ray_com_core_app_policy_config_proto_rawDescGZIP(), []int{1}
|
return file_config_proto_rawDescGZIP(), []int{1}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *Policy) GetTimeout() *Policy_Timeout {
|
func (x *Policy) GetTimeout() *Policy_Timeout {
|
||||||
|
@ -140,7 +146,7 @@ type SystemPolicy struct {
|
||||||
func (x *SystemPolicy) Reset() {
|
func (x *SystemPolicy) Reset() {
|
||||||
*x = SystemPolicy{}
|
*x = SystemPolicy{}
|
||||||
if protoimpl.UnsafeEnabled {
|
if protoimpl.UnsafeEnabled {
|
||||||
mi := &file_v2ray_com_core_app_policy_config_proto_msgTypes[2]
|
mi := &file_config_proto_msgTypes[2]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
|
@ -153,7 +159,7 @@ func (x *SystemPolicy) String() string {
|
||||||
func (*SystemPolicy) ProtoMessage() {}
|
func (*SystemPolicy) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *SystemPolicy) ProtoReflect() protoreflect.Message {
|
func (x *SystemPolicy) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_v2ray_com_core_app_policy_config_proto_msgTypes[2]
|
mi := &file_config_proto_msgTypes[2]
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
@ -166,7 +172,7 @@ func (x *SystemPolicy) ProtoReflect() protoreflect.Message {
|
||||||
|
|
||||||
// Deprecated: Use SystemPolicy.ProtoReflect.Descriptor instead.
|
// Deprecated: Use SystemPolicy.ProtoReflect.Descriptor instead.
|
||||||
func (*SystemPolicy) Descriptor() ([]byte, []int) {
|
func (*SystemPolicy) Descriptor() ([]byte, []int) {
|
||||||
return file_v2ray_com_core_app_policy_config_proto_rawDescGZIP(), []int{2}
|
return file_config_proto_rawDescGZIP(), []int{2}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *SystemPolicy) GetStats() *SystemPolicy_Stats {
|
func (x *SystemPolicy) GetStats() *SystemPolicy_Stats {
|
||||||
|
@ -188,7 +194,7 @@ type Config struct {
|
||||||
func (x *Config) Reset() {
|
func (x *Config) Reset() {
|
||||||
*x = Config{}
|
*x = Config{}
|
||||||
if protoimpl.UnsafeEnabled {
|
if protoimpl.UnsafeEnabled {
|
||||||
mi := &file_v2ray_com_core_app_policy_config_proto_msgTypes[3]
|
mi := &file_config_proto_msgTypes[3]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
|
@ -201,7 +207,7 @@ func (x *Config) String() string {
|
||||||
func (*Config) ProtoMessage() {}
|
func (*Config) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *Config) ProtoReflect() protoreflect.Message {
|
func (x *Config) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_v2ray_com_core_app_policy_config_proto_msgTypes[3]
|
mi := &file_config_proto_msgTypes[3]
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
@ -214,7 +220,7 @@ func (x *Config) ProtoReflect() protoreflect.Message {
|
||||||
|
|
||||||
// Deprecated: Use Config.ProtoReflect.Descriptor instead.
|
// Deprecated: Use Config.ProtoReflect.Descriptor instead.
|
||||||
func (*Config) Descriptor() ([]byte, []int) {
|
func (*Config) Descriptor() ([]byte, []int) {
|
||||||
return file_v2ray_com_core_app_policy_config_proto_rawDescGZIP(), []int{3}
|
return file_config_proto_rawDescGZIP(), []int{3}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *Config) GetLevel() map[uint32]*Policy {
|
func (x *Config) GetLevel() map[uint32]*Policy {
|
||||||
|
@ -246,7 +252,7 @@ type Policy_Timeout struct {
|
||||||
func (x *Policy_Timeout) Reset() {
|
func (x *Policy_Timeout) Reset() {
|
||||||
*x = Policy_Timeout{}
|
*x = Policy_Timeout{}
|
||||||
if protoimpl.UnsafeEnabled {
|
if protoimpl.UnsafeEnabled {
|
||||||
mi := &file_v2ray_com_core_app_policy_config_proto_msgTypes[4]
|
mi := &file_config_proto_msgTypes[4]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
|
@ -259,7 +265,7 @@ func (x *Policy_Timeout) String() string {
|
||||||
func (*Policy_Timeout) ProtoMessage() {}
|
func (*Policy_Timeout) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *Policy_Timeout) ProtoReflect() protoreflect.Message {
|
func (x *Policy_Timeout) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_v2ray_com_core_app_policy_config_proto_msgTypes[4]
|
mi := &file_config_proto_msgTypes[4]
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
@ -272,7 +278,7 @@ func (x *Policy_Timeout) ProtoReflect() protoreflect.Message {
|
||||||
|
|
||||||
// Deprecated: Use Policy_Timeout.ProtoReflect.Descriptor instead.
|
// Deprecated: Use Policy_Timeout.ProtoReflect.Descriptor instead.
|
||||||
func (*Policy_Timeout) Descriptor() ([]byte, []int) {
|
func (*Policy_Timeout) Descriptor() ([]byte, []int) {
|
||||||
return file_v2ray_com_core_app_policy_config_proto_rawDescGZIP(), []int{1, 0}
|
return file_config_proto_rawDescGZIP(), []int{1, 0}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *Policy_Timeout) GetHandshake() *Second {
|
func (x *Policy_Timeout) GetHandshake() *Second {
|
||||||
|
@ -315,7 +321,7 @@ type Policy_Stats struct {
|
||||||
func (x *Policy_Stats) Reset() {
|
func (x *Policy_Stats) Reset() {
|
||||||
*x = Policy_Stats{}
|
*x = Policy_Stats{}
|
||||||
if protoimpl.UnsafeEnabled {
|
if protoimpl.UnsafeEnabled {
|
||||||
mi := &file_v2ray_com_core_app_policy_config_proto_msgTypes[5]
|
mi := &file_config_proto_msgTypes[5]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
|
@ -328,7 +334,7 @@ func (x *Policy_Stats) String() string {
|
||||||
func (*Policy_Stats) ProtoMessage() {}
|
func (*Policy_Stats) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *Policy_Stats) ProtoReflect() protoreflect.Message {
|
func (x *Policy_Stats) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_v2ray_com_core_app_policy_config_proto_msgTypes[5]
|
mi := &file_config_proto_msgTypes[5]
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
@ -341,7 +347,7 @@ func (x *Policy_Stats) ProtoReflect() protoreflect.Message {
|
||||||
|
|
||||||
// Deprecated: Use Policy_Stats.ProtoReflect.Descriptor instead.
|
// Deprecated: Use Policy_Stats.ProtoReflect.Descriptor instead.
|
||||||
func (*Policy_Stats) Descriptor() ([]byte, []int) {
|
func (*Policy_Stats) Descriptor() ([]byte, []int) {
|
||||||
return file_v2ray_com_core_app_policy_config_proto_rawDescGZIP(), []int{1, 1}
|
return file_config_proto_rawDescGZIP(), []int{1, 1}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *Policy_Stats) GetUserUplink() bool {
|
func (x *Policy_Stats) GetUserUplink() bool {
|
||||||
|
@ -370,7 +376,7 @@ type Policy_Buffer struct {
|
||||||
func (x *Policy_Buffer) Reset() {
|
func (x *Policy_Buffer) Reset() {
|
||||||
*x = Policy_Buffer{}
|
*x = Policy_Buffer{}
|
||||||
if protoimpl.UnsafeEnabled {
|
if protoimpl.UnsafeEnabled {
|
||||||
mi := &file_v2ray_com_core_app_policy_config_proto_msgTypes[6]
|
mi := &file_config_proto_msgTypes[6]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
|
@ -383,7 +389,7 @@ func (x *Policy_Buffer) String() string {
|
||||||
func (*Policy_Buffer) ProtoMessage() {}
|
func (*Policy_Buffer) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *Policy_Buffer) ProtoReflect() protoreflect.Message {
|
func (x *Policy_Buffer) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_v2ray_com_core_app_policy_config_proto_msgTypes[6]
|
mi := &file_config_proto_msgTypes[6]
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
@ -396,7 +402,7 @@ func (x *Policy_Buffer) ProtoReflect() protoreflect.Message {
|
||||||
|
|
||||||
// Deprecated: Use Policy_Buffer.ProtoReflect.Descriptor instead.
|
// Deprecated: Use Policy_Buffer.ProtoReflect.Descriptor instead.
|
||||||
func (*Policy_Buffer) Descriptor() ([]byte, []int) {
|
func (*Policy_Buffer) Descriptor() ([]byte, []int) {
|
||||||
return file_v2ray_com_core_app_policy_config_proto_rawDescGZIP(), []int{1, 2}
|
return file_config_proto_rawDescGZIP(), []int{1, 2}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *Policy_Buffer) GetConnection() int32 {
|
func (x *Policy_Buffer) GetConnection() int32 {
|
||||||
|
@ -411,14 +417,16 @@ type SystemPolicy_Stats struct {
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
unknownFields protoimpl.UnknownFields
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
InboundUplink bool `protobuf:"varint,1,opt,name=inbound_uplink,json=inboundUplink,proto3" json:"inbound_uplink,omitempty"`
|
InboundUplink bool `protobuf:"varint,1,opt,name=inbound_uplink,json=inboundUplink,proto3" json:"inbound_uplink,omitempty"`
|
||||||
InboundDownlink bool `protobuf:"varint,2,opt,name=inbound_downlink,json=inboundDownlink,proto3" json:"inbound_downlink,omitempty"`
|
InboundDownlink bool `protobuf:"varint,2,opt,name=inbound_downlink,json=inboundDownlink,proto3" json:"inbound_downlink,omitempty"`
|
||||||
|
OutboundUplink bool `protobuf:"varint,3,opt,name=outbound_uplink,json=outboundUplink,proto3" json:"outbound_uplink,omitempty"`
|
||||||
|
OutboundDownlink bool `protobuf:"varint,4,opt,name=outbound_downlink,json=outboundDownlink,proto3" json:"outbound_downlink,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *SystemPolicy_Stats) Reset() {
|
func (x *SystemPolicy_Stats) Reset() {
|
||||||
*x = SystemPolicy_Stats{}
|
*x = SystemPolicy_Stats{}
|
||||||
if protoimpl.UnsafeEnabled {
|
if protoimpl.UnsafeEnabled {
|
||||||
mi := &file_v2ray_com_core_app_policy_config_proto_msgTypes[7]
|
mi := &file_config_proto_msgTypes[7]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
|
@ -431,7 +439,7 @@ func (x *SystemPolicy_Stats) String() string {
|
||||||
func (*SystemPolicy_Stats) ProtoMessage() {}
|
func (*SystemPolicy_Stats) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *SystemPolicy_Stats) ProtoReflect() protoreflect.Message {
|
func (x *SystemPolicy_Stats) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_v2ray_com_core_app_policy_config_proto_msgTypes[7]
|
mi := &file_config_proto_msgTypes[7]
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
@ -444,7 +452,7 @@ func (x *SystemPolicy_Stats) ProtoReflect() protoreflect.Message {
|
||||||
|
|
||||||
// Deprecated: Use SystemPolicy_Stats.ProtoReflect.Descriptor instead.
|
// Deprecated: Use SystemPolicy_Stats.ProtoReflect.Descriptor instead.
|
||||||
func (*SystemPolicy_Stats) Descriptor() ([]byte, []int) {
|
func (*SystemPolicy_Stats) Descriptor() ([]byte, []int) {
|
||||||
return file_v2ray_com_core_app_policy_config_proto_rawDescGZIP(), []int{2, 0}
|
return file_config_proto_rawDescGZIP(), []int{2, 0}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *SystemPolicy_Stats) GetInboundUplink() bool {
|
func (x *SystemPolicy_Stats) GetInboundUplink() bool {
|
||||||
|
@ -461,98 +469,116 @@ func (x *SystemPolicy_Stats) GetInboundDownlink() bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
var File_v2ray_com_core_app_policy_config_proto protoreflect.FileDescriptor
|
func (x *SystemPolicy_Stats) GetOutboundUplink() bool {
|
||||||
|
if x != nil {
|
||||||
|
return x.OutboundUplink
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
var file_v2ray_com_core_app_policy_config_proto_rawDesc = []byte{
|
func (x *SystemPolicy_Stats) GetOutboundDownlink() bool {
|
||||||
0x0a, 0x26, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x72, 0x65,
|
if x != nil {
|
||||||
0x2f, 0x61, 0x70, 0x70, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66,
|
return x.OutboundDownlink
|
||||||
0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e,
|
}
|
||||||
0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22,
|
return false
|
||||||
0x1e, 0x0a, 0x06, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
|
}
|
||||||
0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22,
|
|
||||||
0xd0, 0x04, 0x0a, 0x06, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x3f, 0x0a, 0x07, 0x74, 0x69,
|
var File_config_proto protoreflect.FileDescriptor
|
||||||
0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x76, 0x32,
|
|
||||||
0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c,
|
var file_config_proto_rawDesc = []byte{
|
||||||
0x69, 0x63, 0x79, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x6f,
|
0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15,
|
||||||
0x75, 0x74, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x39, 0x0a, 0x05, 0x73,
|
0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70,
|
||||||
0x74, 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x32, 0x72,
|
0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x1e, 0x0a, 0x06, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x12,
|
||||||
0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69,
|
0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05,
|
||||||
0x63, 0x79, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52,
|
0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xd0, 0x04, 0x0a, 0x06, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
|
||||||
0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x12, 0x3c, 0x0a, 0x06, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72,
|
0x12, 0x3f, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
|
||||||
0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63,
|
0x0b, 0x32, 0x25, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61,
|
||||||
0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50,
|
0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
|
||||||
0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x52, 0x06, 0x62, 0x75,
|
0x2e, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75,
|
||||||
0x66, 0x66, 0x65, 0x72, 0x1a, 0x92, 0x02, 0x0a, 0x07, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74,
|
0x74, 0x12, 0x39, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
|
||||||
0x12, 0x3b, 0x0a, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x18, 0x01, 0x20,
|
0x32, 0x23, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70,
|
||||||
0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65,
|
0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e,
|
||||||
0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, 0x65, 0x63, 0x6f,
|
0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x12, 0x3c, 0x0a, 0x06,
|
||||||
0x6e, 0x64, 0x52, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x12, 0x46, 0x0a,
|
0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x76,
|
||||||
0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x6c, 0x65,
|
|
||||||
0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63,
|
|
||||||
0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53,
|
|
||||||
0x65, 0x63, 0x6f, 0x6e, 0x64, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f,
|
|
||||||
0x6e, 0x49, 0x64, 0x6c, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f,
|
|
||||||
0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x32, 0x72,
|
|
||||||
0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69,
|
|
||||||
0x63, 0x79, 0x2e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x52, 0x0a, 0x75, 0x70, 0x6c, 0x69, 0x6e,
|
|
||||||
0x6b, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x42, 0x0a, 0x0d, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e,
|
|
||||||
0x6b, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76,
|
|
||||||
0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f,
|
0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f,
|
||||||
0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x52, 0x0c, 0x64, 0x6f, 0x77,
|
0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x42, 0x75, 0x66, 0x66,
|
||||||
0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4f, 0x6e, 0x6c, 0x79, 0x1a, 0x4d, 0x0a, 0x05, 0x53, 0x74, 0x61,
|
0x65, 0x72, 0x52, 0x06, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x1a, 0x92, 0x02, 0x0a, 0x07, 0x54,
|
||||||
0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x75, 0x70, 0x6c, 0x69, 0x6e,
|
0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x3b, 0x0a, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x73, 0x68,
|
||||||
0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x55, 0x70, 0x6c,
|
0x61, 0x6b, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x32, 0x72, 0x61,
|
||||||
0x69, 0x6e, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x64, 0x6f, 0x77, 0x6e,
|
|
||||||
0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x75, 0x73, 0x65, 0x72,
|
|
||||||
0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x1a, 0x28, 0x0a, 0x06, 0x42, 0x75, 0x66, 0x66,
|
|
||||||
0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
|
|
||||||
0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69,
|
|
||||||
0x6f, 0x6e, 0x22, 0xaa, 0x01, 0x0a, 0x0c, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x6f, 0x6c,
|
|
||||||
0x69, 0x63, 0x79, 0x12, 0x3f, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01,
|
|
||||||
0x28, 0x0b, 0x32, 0x29, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e,
|
|
||||||
0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65,
|
|
||||||
0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x73,
|
|
||||||
0x74, 0x61, 0x74, 0x73, 0x1a, 0x59, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x25, 0x0a,
|
|
||||||
0x0e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x18,
|
|
||||||
0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x70,
|
|
||||||
0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f,
|
|
||||||
0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f,
|
|
||||||
0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x22,
|
|
||||||
0xde, 0x01, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3e, 0x0a, 0x05, 0x6c, 0x65,
|
|
||||||
0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x76, 0x32, 0x72, 0x61,
|
|
||||||
0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63,
|
0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63,
|
||||||
0x79, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x45, 0x6e,
|
0x79, 0x2e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x52, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x73, 0x68,
|
||||||
0x74, 0x72, 0x79, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x3b, 0x0a, 0x06, 0x73, 0x79,
|
0x61, 0x6b, 0x65, 0x12, 0x46, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f,
|
||||||
0x73, 0x74, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x32, 0x72,
|
0x6e, 0x5f, 0x69, 0x64, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76,
|
||||||
0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69,
|
0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f,
|
||||||
0x63, 0x79, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52,
|
0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x52, 0x0e, 0x63, 0x6f, 0x6e,
|
||||||
0x06, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x1a, 0x57, 0x0a, 0x0a, 0x4c, 0x65, 0x76, 0x65, 0x6c,
|
0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x6c, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x75,
|
||||||
0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
|
0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
|
||||||
0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x33, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
|
0x32, 0x1d, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70,
|
||||||
0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63,
|
0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x52,
|
||||||
0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50,
|
0x0a, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x42, 0x0a, 0x0d, 0x64,
|
||||||
0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
|
0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01,
|
||||||
0x42, 0x3d, 0x0a, 0x19, 0x63, 0x6f, 0x6d, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f,
|
0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e,
|
||||||
0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x50, 0x01, 0x5a,
|
0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, 0x65, 0x63, 0x6f, 0x6e,
|
||||||
0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0xaa, 0x02, 0x15, 0x56, 0x32, 0x52, 0x61, 0x79, 0x2e,
|
0x64, 0x52, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4f, 0x6e, 0x6c, 0x79, 0x1a,
|
||||||
0x43, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x70, 0x70, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x62,
|
0x4d, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72,
|
||||||
0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
0x5f, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x75,
|
||||||
|
0x73, 0x65, 0x72, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x75, 0x73, 0x65,
|
||||||
|
0x72, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,
|
||||||
|
0x52, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x1a, 0x28,
|
||||||
|
0x0a, 0x06, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x6e,
|
||||||
|
0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, 0x6f,
|
||||||
|
0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x81, 0x02, 0x0a, 0x0c, 0x53, 0x79, 0x73,
|
||||||
|
0x74, 0x65, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x3f, 0x0a, 0x05, 0x73, 0x74, 0x61,
|
||||||
|
0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79,
|
||||||
|
0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
|
||||||
|
0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, 0x74,
|
||||||
|
0x61, 0x74, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x1a, 0xaf, 0x01, 0x0a, 0x05, 0x53,
|
||||||
|
0x74, 0x61, 0x74, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f,
|
||||||
|
0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x6e,
|
||||||
|
0x62, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x29, 0x0a, 0x10, 0x69,
|
||||||
|
0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x18,
|
||||||
|
0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x44, 0x6f,
|
||||||
|
0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75,
|
||||||
|
0x6e, 0x64, 0x5f, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52,
|
||||||
|
0x0e, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x12,
|
||||||
|
0x2b, 0x0a, 0x11, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x64, 0x6f, 0x77, 0x6e,
|
||||||
|
0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x6f, 0x75, 0x74, 0x62,
|
||||||
|
0x6f, 0x75, 0x6e, 0x64, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x22, 0xde, 0x01, 0x0a,
|
||||||
|
0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3e, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c,
|
||||||
|
0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63,
|
||||||
|
0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x43,
|
||||||
|
0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79,
|
||||||
|
0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x3b, 0x0a, 0x06, 0x73, 0x79, 0x73, 0x74, 0x65,
|
||||||
|
0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e,
|
||||||
|
0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e,
|
||||||
|
0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x73, 0x79,
|
||||||
|
0x73, 0x74, 0x65, 0x6d, 0x1a, 0x57, 0x0a, 0x0a, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x45, 0x6e, 0x74,
|
||||||
|
0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52,
|
||||||
|
0x03, 0x6b, 0x65, 0x79, 0x12, 0x33, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
|
||||||
|
0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65,
|
||||||
|
0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x6f, 0x6c, 0x69,
|
||||||
|
0x63, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x3d, 0x0a,
|
||||||
|
0x19, 0x63, 0x6f, 0x6d, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e,
|
||||||
|
0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x50, 0x01, 0x5a, 0x06, 0x70, 0x6f,
|
||||||
|
0x6c, 0x69, 0x63, 0x79, 0xaa, 0x02, 0x15, 0x56, 0x32, 0x52, 0x61, 0x79, 0x2e, 0x43, 0x6f, 0x72,
|
||||||
|
0x65, 0x2e, 0x41, 0x70, 0x70, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x62, 0x06, 0x70, 0x72,
|
||||||
|
0x6f, 0x74, 0x6f, 0x33,
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
file_v2ray_com_core_app_policy_config_proto_rawDescOnce sync.Once
|
file_config_proto_rawDescOnce sync.Once
|
||||||
file_v2ray_com_core_app_policy_config_proto_rawDescData = file_v2ray_com_core_app_policy_config_proto_rawDesc
|
file_config_proto_rawDescData = file_config_proto_rawDesc
|
||||||
)
|
)
|
||||||
|
|
||||||
func file_v2ray_com_core_app_policy_config_proto_rawDescGZIP() []byte {
|
func file_config_proto_rawDescGZIP() []byte {
|
||||||
file_v2ray_com_core_app_policy_config_proto_rawDescOnce.Do(func() {
|
file_config_proto_rawDescOnce.Do(func() {
|
||||||
file_v2ray_com_core_app_policy_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_v2ray_com_core_app_policy_config_proto_rawDescData)
|
file_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_config_proto_rawDescData)
|
||||||
})
|
})
|
||||||
return file_v2ray_com_core_app_policy_config_proto_rawDescData
|
return file_config_proto_rawDescData
|
||||||
}
|
}
|
||||||
|
|
||||||
var file_v2ray_com_core_app_policy_config_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
|
var file_config_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
|
||||||
var file_v2ray_com_core_app_policy_config_proto_goTypes = []interface{}{
|
var file_config_proto_goTypes = []interface{}{
|
||||||
(*Second)(nil), // 0: v2ray.core.app.policy.Second
|
(*Second)(nil), // 0: v2ray.core.app.policy.Second
|
||||||
(*Policy)(nil), // 1: v2ray.core.app.policy.Policy
|
(*Policy)(nil), // 1: v2ray.core.app.policy.Policy
|
||||||
(*SystemPolicy)(nil), // 2: v2ray.core.app.policy.SystemPolicy
|
(*SystemPolicy)(nil), // 2: v2ray.core.app.policy.SystemPolicy
|
||||||
|
@ -563,7 +589,7 @@ var file_v2ray_com_core_app_policy_config_proto_goTypes = []interface{}{
|
||||||
(*SystemPolicy_Stats)(nil), // 7: v2ray.core.app.policy.SystemPolicy.Stats
|
(*SystemPolicy_Stats)(nil), // 7: v2ray.core.app.policy.SystemPolicy.Stats
|
||||||
nil, // 8: v2ray.core.app.policy.Config.LevelEntry
|
nil, // 8: v2ray.core.app.policy.Config.LevelEntry
|
||||||
}
|
}
|
||||||
var file_v2ray_com_core_app_policy_config_proto_depIdxs = []int32{
|
var file_config_proto_depIdxs = []int32{
|
||||||
4, // 0: v2ray.core.app.policy.Policy.timeout:type_name -> v2ray.core.app.policy.Policy.Timeout
|
4, // 0: v2ray.core.app.policy.Policy.timeout:type_name -> v2ray.core.app.policy.Policy.Timeout
|
||||||
5, // 1: v2ray.core.app.policy.Policy.stats:type_name -> v2ray.core.app.policy.Policy.Stats
|
5, // 1: v2ray.core.app.policy.Policy.stats:type_name -> v2ray.core.app.policy.Policy.Stats
|
||||||
6, // 2: v2ray.core.app.policy.Policy.buffer:type_name -> v2ray.core.app.policy.Policy.Buffer
|
6, // 2: v2ray.core.app.policy.Policy.buffer:type_name -> v2ray.core.app.policy.Policy.Buffer
|
||||||
|
@ -582,13 +608,13 @@ var file_v2ray_com_core_app_policy_config_proto_depIdxs = []int32{
|
||||||
0, // [0:11] is the sub-list for field type_name
|
0, // [0:11] is the sub-list for field type_name
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() { file_v2ray_com_core_app_policy_config_proto_init() }
|
func init() { file_config_proto_init() }
|
||||||
func file_v2ray_com_core_app_policy_config_proto_init() {
|
func file_config_proto_init() {
|
||||||
if File_v2ray_com_core_app_policy_config_proto != nil {
|
if File_config_proto != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if !protoimpl.UnsafeEnabled {
|
if !protoimpl.UnsafeEnabled {
|
||||||
file_v2ray_com_core_app_policy_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
file_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
||||||
switch v := v.(*Second); i {
|
switch v := v.(*Second); i {
|
||||||
case 0:
|
case 0:
|
||||||
return &v.state
|
return &v.state
|
||||||
|
@ -600,7 +626,7 @@ func file_v2ray_com_core_app_policy_config_proto_init() {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
file_v2ray_com_core_app_policy_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
|
file_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
|
||||||
switch v := v.(*Policy); i {
|
switch v := v.(*Policy); i {
|
||||||
case 0:
|
case 0:
|
||||||
return &v.state
|
return &v.state
|
||||||
|
@ -612,7 +638,7 @@ func file_v2ray_com_core_app_policy_config_proto_init() {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
file_v2ray_com_core_app_policy_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
|
file_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
|
||||||
switch v := v.(*SystemPolicy); i {
|
switch v := v.(*SystemPolicy); i {
|
||||||
case 0:
|
case 0:
|
||||||
return &v.state
|
return &v.state
|
||||||
|
@ -624,7 +650,7 @@ func file_v2ray_com_core_app_policy_config_proto_init() {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
file_v2ray_com_core_app_policy_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
|
file_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
|
||||||
switch v := v.(*Config); i {
|
switch v := v.(*Config); i {
|
||||||
case 0:
|
case 0:
|
||||||
return &v.state
|
return &v.state
|
||||||
|
@ -636,7 +662,7 @@ func file_v2ray_com_core_app_policy_config_proto_init() {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
file_v2ray_com_core_app_policy_config_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
|
file_config_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
|
||||||
switch v := v.(*Policy_Timeout); i {
|
switch v := v.(*Policy_Timeout); i {
|
||||||
case 0:
|
case 0:
|
||||||
return &v.state
|
return &v.state
|
||||||
|
@ -648,7 +674,7 @@ func file_v2ray_com_core_app_policy_config_proto_init() {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
file_v2ray_com_core_app_policy_config_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
|
file_config_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
|
||||||
switch v := v.(*Policy_Stats); i {
|
switch v := v.(*Policy_Stats); i {
|
||||||
case 0:
|
case 0:
|
||||||
return &v.state
|
return &v.state
|
||||||
|
@ -660,7 +686,7 @@ func file_v2ray_com_core_app_policy_config_proto_init() {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
file_v2ray_com_core_app_policy_config_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
|
file_config_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
|
||||||
switch v := v.(*Policy_Buffer); i {
|
switch v := v.(*Policy_Buffer); i {
|
||||||
case 0:
|
case 0:
|
||||||
return &v.state
|
return &v.state
|
||||||
|
@ -672,7 +698,7 @@ func file_v2ray_com_core_app_policy_config_proto_init() {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
file_v2ray_com_core_app_policy_config_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
|
file_config_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
|
||||||
switch v := v.(*SystemPolicy_Stats); i {
|
switch v := v.(*SystemPolicy_Stats); i {
|
||||||
case 0:
|
case 0:
|
||||||
return &v.state
|
return &v.state
|
||||||
|
@ -689,18 +715,18 @@ func file_v2ray_com_core_app_policy_config_proto_init() {
|
||||||
out := protoimpl.TypeBuilder{
|
out := protoimpl.TypeBuilder{
|
||||||
File: protoimpl.DescBuilder{
|
File: protoimpl.DescBuilder{
|
||||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||||
RawDescriptor: file_v2ray_com_core_app_policy_config_proto_rawDesc,
|
RawDescriptor: file_config_proto_rawDesc,
|
||||||
NumEnums: 0,
|
NumEnums: 0,
|
||||||
NumMessages: 9,
|
NumMessages: 9,
|
||||||
NumExtensions: 0,
|
NumExtensions: 0,
|
||||||
NumServices: 0,
|
NumServices: 0,
|
||||||
},
|
},
|
||||||
GoTypes: file_v2ray_com_core_app_policy_config_proto_goTypes,
|
GoTypes: file_config_proto_goTypes,
|
||||||
DependencyIndexes: file_v2ray_com_core_app_policy_config_proto_depIdxs,
|
DependencyIndexes: file_config_proto_depIdxs,
|
||||||
MessageInfos: file_v2ray_com_core_app_policy_config_proto_msgTypes,
|
MessageInfos: file_config_proto_msgTypes,
|
||||||
}.Build()
|
}.Build()
|
||||||
File_v2ray_com_core_app_policy_config_proto = out.File
|
File_config_proto = out.File
|
||||||
file_v2ray_com_core_app_policy_config_proto_rawDesc = nil
|
file_config_proto_rawDesc = nil
|
||||||
file_v2ray_com_core_app_policy_config_proto_goTypes = nil
|
file_config_proto_goTypes = nil
|
||||||
file_v2ray_com_core_app_policy_config_proto_depIdxs = nil
|
file_config_proto_depIdxs = nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,6 +38,8 @@ message SystemPolicy {
|
||||||
message Stats {
|
message Stats {
|
||||||
bool inbound_uplink = 1;
|
bool inbound_uplink = 1;
|
||||||
bool inbound_downlink = 2;
|
bool inbound_downlink = 2;
|
||||||
|
bool outbound_uplink = 3;
|
||||||
|
bool outbound_downlink = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
Stats stats = 1;
|
Stats stats = 1;
|
||||||
|
|
|
@ -91,9 +91,9 @@ func (w *tcpWorker) callback(conn internet.Connection) {
|
||||||
ctx = session.ContextWithContent(ctx, content)
|
ctx = session.ContextWithContent(ctx, content)
|
||||||
if w.uplinkCounter != nil || w.downlinkCounter != nil {
|
if w.uplinkCounter != nil || w.downlinkCounter != nil {
|
||||||
conn = &internet.StatCouterConnection{
|
conn = &internet.StatCouterConnection{
|
||||||
Connection: conn,
|
Connection: conn,
|
||||||
Uplink: w.uplinkCounter,
|
ReadCounter: w.uplinkCounter,
|
||||||
Downlink: w.downlinkCounter,
|
WriteCounter: w.downlinkCounter,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if err := w.proxy.Process(ctx, net.Network_TCP, conn, w.dispatcher); err != nil {
|
if err := w.proxy.Process(ctx, net.Network_TCP, conn, w.dispatcher); err != nil {
|
||||||
|
|
|
@ -10,6 +10,8 @@ import (
|
||||||
"v2ray.com/core/common/net"
|
"v2ray.com/core/common/net"
|
||||||
"v2ray.com/core/common/session"
|
"v2ray.com/core/common/session"
|
||||||
"v2ray.com/core/features/outbound"
|
"v2ray.com/core/features/outbound"
|
||||||
|
"v2ray.com/core/features/policy"
|
||||||
|
"v2ray.com/core/features/stats"
|
||||||
"v2ray.com/core/proxy"
|
"v2ray.com/core/proxy"
|
||||||
"v2ray.com/core/transport"
|
"v2ray.com/core/transport"
|
||||||
"v2ray.com/core/transport/internet"
|
"v2ray.com/core/transport/internet"
|
||||||
|
@ -17,6 +19,31 @@ import (
|
||||||
"v2ray.com/core/transport/pipe"
|
"v2ray.com/core/transport/pipe"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func getStatCounter(v *core.Instance, tag string) (stats.Counter, stats.Counter) {
|
||||||
|
var uplinkCounter stats.Counter
|
||||||
|
var downlinkCounter stats.Counter
|
||||||
|
|
||||||
|
policy := v.GetFeature(policy.ManagerType()).(policy.Manager)
|
||||||
|
if len(tag) > 0 && policy.ForSystem().Stats.OutboundUplink {
|
||||||
|
statsManager := v.GetFeature(stats.ManagerType()).(stats.Manager)
|
||||||
|
name := "outbound>>>" + tag + ">>>traffic>>>uplink"
|
||||||
|
c, _ := stats.GetOrRegisterCounter(statsManager, name)
|
||||||
|
if c != nil {
|
||||||
|
uplinkCounter = c
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if len(tag) > 0 && policy.ForSystem().Stats.OutboundDownlink {
|
||||||
|
statsManager := v.GetFeature(stats.ManagerType()).(stats.Manager)
|
||||||
|
name := "outbound>>>" + tag + ">>>traffic>>>downlink"
|
||||||
|
c, _ := stats.GetOrRegisterCounter(statsManager, name)
|
||||||
|
if c != nil {
|
||||||
|
downlinkCounter = c
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return uplinkCounter, downlinkCounter
|
||||||
|
}
|
||||||
|
|
||||||
// Handler is an implements of outbound.Handler.
|
// Handler is an implements of outbound.Handler.
|
||||||
type Handler struct {
|
type Handler struct {
|
||||||
tag string
|
tag string
|
||||||
|
@ -25,14 +52,19 @@ type Handler struct {
|
||||||
proxy proxy.Outbound
|
proxy proxy.Outbound
|
||||||
outboundManager outbound.Manager
|
outboundManager outbound.Manager
|
||||||
mux *mux.ClientManager
|
mux *mux.ClientManager
|
||||||
|
uplinkCounter stats.Counter
|
||||||
|
downlinkCounter stats.Counter
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewHandler create a new Handler based on the given configuration.
|
// NewHandler create a new Handler based on the given configuration.
|
||||||
func NewHandler(ctx context.Context, config *core.OutboundHandlerConfig) (outbound.Handler, error) {
|
func NewHandler(ctx context.Context, config *core.OutboundHandlerConfig) (outbound.Handler, error) {
|
||||||
v := core.MustFromContext(ctx)
|
v := core.MustFromContext(ctx)
|
||||||
|
uplinkCounter, downlinkCounter := getStatCounter(v, config.Tag)
|
||||||
h := &Handler{
|
h := &Handler{
|
||||||
tag: config.Tag,
|
tag: config.Tag,
|
||||||
outboundManager: v.GetFeature(outbound.ManagerType()).(outbound.Manager),
|
outboundManager: v.GetFeature(outbound.ManagerType()).(outbound.Manager),
|
||||||
|
uplinkCounter: uplinkCounter,
|
||||||
|
downlinkCounter: downlinkCounter,
|
||||||
}
|
}
|
||||||
|
|
||||||
if config.SenderSettings != nil {
|
if config.SenderSettings != nil {
|
||||||
|
@ -148,7 +180,7 @@ func (h *Handler) Dial(ctx context.Context, dest net.Destination) (internet.Conn
|
||||||
conn = tls.Client(conn, tlsConfig)
|
conn = tls.Client(conn, tlsConfig)
|
||||||
}
|
}
|
||||||
|
|
||||||
return conn, nil
|
return h.getStatCouterConnection(conn), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
newError("failed to get outbound handler with tag: ", tag).AtWarning().WriteToLog(session.ExportIDToError(ctx))
|
newError("failed to get outbound handler with tag: ", tag).AtWarning().WriteToLog(session.ExportIDToError(ctx))
|
||||||
|
@ -164,7 +196,19 @@ func (h *Handler) Dial(ctx context.Context, dest net.Destination) (internet.Conn
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return internet.Dial(ctx, dest, h.streamSettings)
|
conn, err := internet.Dial(ctx, dest, h.streamSettings)
|
||||||
|
return h.getStatCouterConnection(conn), err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *Handler) getStatCouterConnection(conn internet.Connection) (internet.Connection) {
|
||||||
|
if h.uplinkCounter != nil || h.downlinkCounter != nil {
|
||||||
|
return &internet.StatCouterConnection{
|
||||||
|
Connection: conn,
|
||||||
|
ReadCounter: h.downlinkCounter,
|
||||||
|
WriteCounter: h.uplinkCounter,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return conn
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetOutbound implements proxy.GetOutbound.
|
// GetOutbound implements proxy.GetOutbound.
|
||||||
|
|
|
@ -1,13 +1,80 @@
|
||||||
package outbound_test
|
package outbound_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"v2ray.com/core"
|
||||||
|
"v2ray.com/core/app/policy"
|
||||||
. "v2ray.com/core/app/proxyman/outbound"
|
. "v2ray.com/core/app/proxyman/outbound"
|
||||||
|
"v2ray.com/core/app/stats"
|
||||||
|
"v2ray.com/core/common/net"
|
||||||
|
"v2ray.com/core/common/serial"
|
||||||
"v2ray.com/core/features/outbound"
|
"v2ray.com/core/features/outbound"
|
||||||
|
"v2ray.com/core/proxy/freedom"
|
||||||
|
"v2ray.com/core/transport/internet"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestInterfaces(t *testing.T) {
|
func TestInterfaces(t *testing.T) {
|
||||||
_ = (outbound.Handler)(new(Handler))
|
_ = (outbound.Handler)(new(Handler))
|
||||||
_ = (outbound.Manager)(new(Manager))
|
_ = (outbound.Manager)(new(Manager))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const v2rayKey core.V2rayKey = 1
|
||||||
|
|
||||||
|
func TestOutboundWithoutStatCounter(t *testing.T) {
|
||||||
|
config := &core.Config{
|
||||||
|
App: []*serial.TypedMessage{
|
||||||
|
serial.ToTypedMessage(&stats.Config{}),
|
||||||
|
serial.ToTypedMessage(&policy.Config{
|
||||||
|
System: &policy.SystemPolicy{
|
||||||
|
Stats: &policy.SystemPolicy_Stats{
|
||||||
|
InboundUplink: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
v, _ := core.New(config)
|
||||||
|
v.AddFeature((outbound.Manager)(new(Manager)))
|
||||||
|
ctx := context.WithValue(context.Background(), v2rayKey, v)
|
||||||
|
h, _ := NewHandler(ctx, &core.OutboundHandlerConfig{
|
||||||
|
Tag: "tag",
|
||||||
|
ProxySettings: serial.ToTypedMessage(&freedom.Config{}),
|
||||||
|
})
|
||||||
|
conn, _ := h.(*Handler).Dial(ctx, net.TCPDestination(net.DomainAddress("localhost"), 13146))
|
||||||
|
_, ok := conn.(*internet.StatCouterConnection)
|
||||||
|
if ok {
|
||||||
|
t.Errorf("Expected conn to not be StatCouterConnection")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestOutboundWithStatCounter(t *testing.T) {
|
||||||
|
config := &core.Config{
|
||||||
|
App: []*serial.TypedMessage{
|
||||||
|
serial.ToTypedMessage(&stats.Config{}),
|
||||||
|
serial.ToTypedMessage(&policy.Config{
|
||||||
|
System: &policy.SystemPolicy{
|
||||||
|
Stats: &policy.SystemPolicy_Stats{
|
||||||
|
OutboundUplink: true,
|
||||||
|
OutboundDownlink: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
v, _ := core.New(config)
|
||||||
|
v.AddFeature((outbound.Manager)(new(Manager)))
|
||||||
|
ctx := context.WithValue(context.Background(), v2rayKey, v)
|
||||||
|
h, _ := NewHandler(ctx, &core.OutboundHandlerConfig{
|
||||||
|
Tag: "tag",
|
||||||
|
ProxySettings: serial.ToTypedMessage(&freedom.Config{}),
|
||||||
|
})
|
||||||
|
conn, _ := h.(*Handler).Dial(ctx, net.TCPDestination(net.DomainAddress("localhost"), 13146))
|
||||||
|
_, ok := conn.(*internet.StatCouterConnection)
|
||||||
|
if !ok {
|
||||||
|
t.Errorf("Expected conn to be StatCouterConnection")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -119,6 +119,10 @@ jobs:
|
||||||
GITHUB_TOKEN: $(GITHUB_TOKEN)
|
GITHUB_TOKEN: $(GITHUB_TOKEN)
|
||||||
PRERELEASE: true
|
PRERELEASE: true
|
||||||
RELEASE_TAG: unstable-$(Build.SourceVersion)
|
RELEASE_TAG: unstable-$(Build.SourceVersion)
|
||||||
|
RELEASE_SHA: $(Build.SourceVersion)
|
||||||
|
TRIGGER_REASON: $(Build.SourceBranch)
|
||||||
|
GITHUB_REPO_OWNER: v2fly
|
||||||
|
GITHUB_REPO_NAME: v2ray-core
|
||||||
- script: |
|
- script: |
|
||||||
cd ./src/v2ray.com/core
|
cd ./src/v2ray.com/core
|
||||||
echo $RELEASE_TAG
|
echo $RELEASE_TAG
|
||||||
|
|
|
@ -6,9 +6,10 @@ import (
|
||||||
"context"
|
"context"
|
||||||
)
|
)
|
||||||
|
|
||||||
type key int
|
// V2rayKey is the key type of Instance in Context, exported for test.
|
||||||
|
type V2rayKey int
|
||||||
|
|
||||||
const v2rayKey key = 1
|
const v2rayKey V2rayKey = 1
|
||||||
|
|
||||||
// FromContext returns an Instance from the given context, or nil if the context doesn't contain one.
|
// FromContext returns an Instance from the given context, or nil if the context doesn't contain one.
|
||||||
func FromContext(ctx context.Context) *Instance {
|
func FromContext(ctx context.Context) *Instance {
|
||||||
|
|
2
core.go
2
core.go
|
@ -19,7 +19,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
version = "4.25.1"
|
version = "4.26.0"
|
||||||
build = "Custom"
|
build = "Custom"
|
||||||
codename = "V2Fly, a community-driven edition of V2Ray."
|
codename = "V2Fly, a community-driven edition of V2Ray."
|
||||||
intro = "A unified platform for anti-censorship."
|
intro = "A unified platform for anti-censorship."
|
||||||
|
|
|
@ -41,6 +41,10 @@ type SystemStats struct {
|
||||||
InboundUplink bool
|
InboundUplink bool
|
||||||
// Whether or not to enable stat counter for downlink traffic in inbound handlers.
|
// Whether or not to enable stat counter for downlink traffic in inbound handlers.
|
||||||
InboundDownlink bool
|
InboundDownlink bool
|
||||||
|
// Whether or not to enable stat counter for uplink traffic in outbound handlers.
|
||||||
|
OutboundUplink bool
|
||||||
|
// Whether or not to enable stat counter for downlink traffic in outbound handlers.
|
||||||
|
OutboundDownlink bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// System contains policy settings at system level.
|
// System contains policy settings at system level.
|
||||||
|
|
10
go.mod
10
go.mod
|
@ -9,14 +9,16 @@ require (
|
||||||
github.com/miekg/dns v1.1.29
|
github.com/miekg/dns v1.1.29
|
||||||
github.com/refraction-networking/utls v0.0.0-20190909200633-43c36d3c1f57
|
github.com/refraction-networking/utls v0.0.0-20190909200633-43c36d3c1f57
|
||||||
github.com/seiflotfy/cuckoofilter v0.0.0-20200511222245-56093a4d3841
|
github.com/seiflotfy/cuckoofilter v0.0.0-20200511222245-56093a4d3841
|
||||||
|
github.com/stretchr/testify v1.6.1
|
||||||
|
github.com/xiaokangwang/VSign v0.0.0-20200704130305-63f4b4d7a751
|
||||||
go.starlark.net v0.0.0-20190919145610-979af19b165c
|
go.starlark.net v0.0.0-20190919145610-979af19b165c
|
||||||
golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9
|
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9
|
||||||
golang.org/x/net v0.0.0-20200602114024-627f9648deb9
|
golang.org/x/net v0.0.0-20200602114024-627f9648deb9
|
||||||
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a
|
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a
|
||||||
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd
|
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd
|
||||||
google.golang.org/grpc v1.27.0
|
google.golang.org/grpc v1.30.0
|
||||||
google.golang.org/protobuf v1.24.0
|
google.golang.org/protobuf v1.25.0
|
||||||
h12.io/socks v1.0.0
|
h12.io/socks v1.0.1
|
||||||
)
|
)
|
||||||
|
|
||||||
go 1.13
|
go 1.13
|
||||||
|
|
38
go.sum
38
go.sum
|
@ -2,9 +2,16 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT
|
||||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||||
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||||
|
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
|
||||||
|
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
|
||||||
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc h1:8WFBn63wegobsYAX0YjD+8suexZDga5CctH4CCTx2+8=
|
github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc h1:8WFBn63wegobsYAX0YjD+8suexZDga5CctH4CCTx2+8=
|
||||||
github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc/go.mod h1:c9O8+fpSOX1DM8cPNSkX/qsBWdkD4yd2dpciOWQjpBw=
|
github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc/go.mod h1:c9O8+fpSOX1DM8cPNSkX/qsBWdkD4yd2dpciOWQjpBw=
|
||||||
|
github.com/ebfe/bcrypt_pbkdf v0.0.0-20140212075826-3c8d2dcb253a h1:YtdtTUN1iH97s+6PUjLnaiKSQj4oG1/EZ3N9bx6g4kU=
|
||||||
|
github.com/ebfe/bcrypt_pbkdf v0.0.0-20140212075826-3c8d2dcb253a/go.mod h1:/CZpbhAusDOobpcb9yubw46kdYjq0zRC0Wpg9a9zFQM=
|
||||||
|
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||||
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||||
|
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
|
||||||
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
|
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
|
||||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||||
|
@ -14,6 +21,7 @@ github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt
|
||||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||||
github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs=
|
github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs=
|
||||||
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||||
|
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
|
||||||
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
|
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
|
||||||
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
|
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
|
||||||
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
|
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
|
||||||
|
@ -32,13 +40,26 @@ github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w=
|
||||||
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
|
github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
|
||||||
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||||
|
github.com/h12w/go-socks5 v0.0.0-20200522160539-76189e178364 h1:5XxdakFhqd9dnXoAZy1Mb2R/DZ6D1e+0bGC/JhucGYI=
|
||||||
|
github.com/h12w/go-socks5 v0.0.0-20200522160539-76189e178364/go.mod h1:eDJQioIyy4Yn3MVivT7rv/39gAJTrA7lgmYr8EW950c=
|
||||||
github.com/miekg/dns v1.1.29 h1:xHBEhR+t5RzcFJjBLJlax2daXOrTYtr9z4WdKEfWFzg=
|
github.com/miekg/dns v1.1.29 h1:xHBEhR+t5RzcFJjBLJlax2daXOrTYtr9z4WdKEfWFzg=
|
||||||
github.com/miekg/dns v1.1.29/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM=
|
github.com/miekg/dns v1.1.29/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM=
|
||||||
|
github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2 h1:JhzVVoYvbOACxoUmOs6V/G4D5nPVUW73rKvXxP4XUJc=
|
||||||
|
github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||||
github.com/refraction-networking/utls v0.0.0-20190909200633-43c36d3c1f57 h1:SL1K0QAuC1b54KoY1pjPWe6kSlsFHwK9/oC960fKrTY=
|
github.com/refraction-networking/utls v0.0.0-20190909200633-43c36d3c1f57 h1:SL1K0QAuC1b54KoY1pjPWe6kSlsFHwK9/oC960fKrTY=
|
||||||
github.com/refraction-networking/utls v0.0.0-20190909200633-43c36d3c1f57/go.mod h1:tz9gX959MEFfFN5whTIocCLUG57WiILqtdVxI8c6Wj0=
|
github.com/refraction-networking/utls v0.0.0-20190909200633-43c36d3c1f57/go.mod h1:tz9gX959MEFfFN5whTIocCLUG57WiILqtdVxI8c6Wj0=
|
||||||
github.com/seiflotfy/cuckoofilter v0.0.0-20200511222245-56093a4d3841 h1:pnfutQFsV7ySmHUeX6ANGfPsBo29RctUvDn8G3rmJVw=
|
github.com/seiflotfy/cuckoofilter v0.0.0-20200511222245-56093a4d3841 h1:pnfutQFsV7ySmHUeX6ANGfPsBo29RctUvDn8G3rmJVw=
|
||||||
github.com/seiflotfy/cuckoofilter v0.0.0-20200511222245-56093a4d3841/go.mod h1:ET5mVvNjwaGXRgZxO9UZr7X+8eAf87AfIYNwRSp9s4Y=
|
github.com/seiflotfy/cuckoofilter v0.0.0-20200511222245-56093a4d3841/go.mod h1:ET5mVvNjwaGXRgZxO9UZr7X+8eAf87AfIYNwRSp9s4Y=
|
||||||
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
|
github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
|
||||||
|
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
|
github.com/xiaokangwang/VSign v0.0.0-20200704121915-cb2e1f64f24c h1:ZhNj6V5QpDFbJZQR1FYywUTwRgr1HmlsvuExY/U0vJI=
|
||||||
|
github.com/xiaokangwang/VSign v0.0.0-20200704121915-cb2e1f64f24c/go.mod h1:jTwBnzBuqZP3VX/Z65ErYb9zd4anQprSC7N38TmAp1E=
|
||||||
|
github.com/xiaokangwang/VSign v0.0.0-20200704130305-63f4b4d7a751 h1:vpFL+XrF7TFUuoV3PX/CJebjK77XA0yc9NnCs5AaxUY=
|
||||||
|
github.com/xiaokangwang/VSign v0.0.0-20200704130305-63f4b4d7a751/go.mod h1:jTwBnzBuqZP3VX/Z65ErYb9zd4anQprSC7N38TmAp1E=
|
||||||
go.starlark.net v0.0.0-20190919145610-979af19b165c h1:WR7X1xgXJlXhQBdorVc9Db3RhwG+J/kp6bLuMyJjfVw=
|
go.starlark.net v0.0.0-20190919145610-979af19b165c h1:WR7X1xgXJlXhQBdorVc9Db3RhwG+J/kp6bLuMyJjfVw=
|
||||||
go.starlark.net v0.0.0-20190919145610-979af19b165c/go.mod h1:c1/X6cHgvdXj6pUlmWKMkuqRnW4K8x2vwt6JAaaircg=
|
go.starlark.net v0.0.0-20190919145610-979af19b165c/go.mod h1:c1/X6cHgvdXj6pUlmWKMkuqRnW4K8x2vwt6JAaaircg=
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M=
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M=
|
||||||
|
@ -46,6 +67,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk
|
||||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||||
golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9 h1:vEg9joUBmeBcK9iSJftGNf3coIG4HqZElCPehJsfAYM=
|
golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9 h1:vEg9joUBmeBcK9iSJftGNf3coIG4HqZElCPehJsfAYM=
|
||||||
golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||||
|
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI=
|
||||||
|
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||||
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
|
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
|
||||||
|
@ -98,8 +121,11 @@ google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaR
|
||||||
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
|
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
|
||||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||||
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
|
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
|
||||||
|
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
|
||||||
google.golang.org/grpc v1.27.0 h1:rRYRFMVgRv6E0D70Skyfsr28tDXIuuPZyWGMPdMcnXg=
|
google.golang.org/grpc v1.27.0 h1:rRYRFMVgRv6E0D70Skyfsr28tDXIuuPZyWGMPdMcnXg=
|
||||||
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||||
|
google.golang.org/grpc v1.30.0 h1:M5a8xTlYTxwMn5ZFkwhRabsygDY5G8TYLyQDBxJNAxE=
|
||||||
|
google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
|
||||||
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
||||||
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
||||||
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
|
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
|
||||||
|
@ -109,10 +135,14 @@ google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2
|
||||||
google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM=
|
google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM=
|
||||||
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||||
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||||
google.golang.org/protobuf v1.24.0 h1:UhZDfRO8JRQru4/+LlLE0BRKGF8L+PICnvYZmx/fEGA=
|
google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c=
|
||||||
google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
|
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
|
||||||
h12.io/socks v1.0.0 h1:oiFI7YXv4h/0kBNcmAb5EkkoFJgYsOF88EQjMBxjitc=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
||||||
h12.io/socks v1.0.0/go.mod h1:MdYbo5/eB9ka7u5dzW2Qh0iSyJENwB3KI5H5ngenFGA=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
|
||||||
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
h12.io/socks v1.0.1 h1:bXESSI/+hbdrp+22vcc7/JiXjmLH4UWktKdYgGr3ShA=
|
||||||
|
h12.io/socks v1.0.1/go.mod h1:AIhxy1jOId/XCz9BO+EIgNL2rQiPTBNnOfnVnQ+3Eck=
|
||||||
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||||
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||||
rsc.io/quote/v3 v3.1.0 h1:9JKUTTIUgS6kzR9mK1YuGKv6Nl+DijDNIc0ghT58FaY=
|
rsc.io/quote/v3 v3.1.0 h1:9JKUTTIUgS6kzR9mK1YuGKv6Nl+DijDNIc0ghT58FaY=
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
SUPPORTED_MATRIX = [
|
SUPPORTED_MATRIX = [
|
||||||
("windows", "amd64"),
|
("windows", "amd64"),
|
||||||
("windows", "386"),
|
("windows", "386"),
|
||||||
|
("windows", "arm"),
|
||||||
("darwin", "amd64"),
|
("darwin", "amd64"),
|
||||||
("linux", "amd64"),
|
("linux", "amd64"),
|
||||||
("linux", "386"),
|
("linux", "386"),
|
||||||
|
|
|
@ -51,15 +51,19 @@ func (t *Policy) Build() (*policy.Policy, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
type SystemPolicy struct {
|
type SystemPolicy struct {
|
||||||
StatsInboundUplink bool `json:"statsInboundUplink"`
|
StatsInboundUplink bool `json:"statsInboundUplink"`
|
||||||
StatsInboundDownlink bool `json:"statsInboundDownlink"`
|
StatsInboundDownlink bool `json:"statsInboundDownlink"`
|
||||||
|
StatsOutboundUplink bool `json:"statsOutboundUplink"`
|
||||||
|
StatsOutboundDownlink bool `json:"statsOutboundDownlink"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *SystemPolicy) Build() (*policy.SystemPolicy, error) {
|
func (p *SystemPolicy) Build() (*policy.SystemPolicy, error) {
|
||||||
return &policy.SystemPolicy{
|
return &policy.SystemPolicy{
|
||||||
Stats: &policy.SystemPolicy_Stats{
|
Stats: &policy.SystemPolicy_Stats{
|
||||||
InboundUplink: p.StatsInboundUplink,
|
InboundUplink: p.StatsInboundUplink,
|
||||||
InboundDownlink: p.StatsInboundDownlink,
|
InboundDownlink: p.StatsInboundDownlink,
|
||||||
|
OutboundUplink: p.StatsOutboundUplink,
|
||||||
|
OutboundDownlink: p.StatsOutboundDownlink,
|
||||||
},
|
},
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,3 +54,35 @@ def gen_targets(matrix):
|
||||||
name = bin_name + "_sig",
|
name = bin_name + "_sig",
|
||||||
base = ":" + bin_name,
|
base = ":" + bin_name,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
bin_name = "v2ctl_" + os + "_" + arch + "_armv6"
|
||||||
|
foreign_go_binary(
|
||||||
|
name = bin_name,
|
||||||
|
pkg = pkg,
|
||||||
|
output = output + "_armv6",
|
||||||
|
os = os,
|
||||||
|
arch = arch,
|
||||||
|
arm = "6",
|
||||||
|
gotags = "confonly",
|
||||||
|
)
|
||||||
|
|
||||||
|
gpg_sign(
|
||||||
|
name = bin_name + "_sig",
|
||||||
|
base = ":" + bin_name,
|
||||||
|
)
|
||||||
|
|
||||||
|
bin_name = "v2ctl_" + os + "_" + arch + "_armv5"
|
||||||
|
foreign_go_binary(
|
||||||
|
name = bin_name,
|
||||||
|
pkg = pkg,
|
||||||
|
output = output,
|
||||||
|
os = os,
|
||||||
|
arch = arch,
|
||||||
|
arm = "5",
|
||||||
|
gotags = "confonly",
|
||||||
|
)
|
||||||
|
|
||||||
|
gpg_sign(
|
||||||
|
name = bin_name + "_sig",
|
||||||
|
base = ":" + bin_name,
|
||||||
|
)
|
||||||
|
|
|
@ -2,106 +2,11 @@ package control
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"github.com/xiaokangwang/VSign/signerVerify"
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
|
||||||
|
|
||||||
"golang.org/x/crypto/openpgp"
|
|
||||||
|
|
||||||
"v2ray.com/core/common"
|
"v2ray.com/core/common"
|
||||||
)
|
)
|
||||||
|
|
||||||
var pubkey = []string{`-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
||||||
|
|
||||||
mQENBFx4NlQBCADJyVwRUO/LzcnoHLWKppFQY4aTS+fH8k4Pf5nB3VR41v/3QZm1
|
|
||||||
jBkuO1522KmBkPPuuYDAdOrE8Y8UVLfir5RxnZXF9Ke8SPq0zB+ruOHfv0xJUz8q
|
|
||||||
bcArsdXpDRxtrEbi7J81YOB/yITuY5kSYUA9v1TZWf7eSS6GIw/YF0Eo/gsbbpwQ
|
|
||||||
yon/Ue3xxxbZnWvfsluhPADomNwbJ5iTFeRClJqdACb/YqIEo2M2ttLE3QF2qrrL
|
|
||||||
SbzdTUtr3qjADIEWHoABcQ+Amx0sGnyiTJUGiL+4QwdIOLsh4RLq1MWgN+niw9Cl
|
|
||||||
cUQBPojZmHPPqIjNXr823TpZvkZOxuE9RSDjABEBAAG0I1YyUmF5IE9mZmljaWFs
|
|
||||||
IDxvZmZpY2lhbEB2MnJheS5jb20+iQFUBBMBCAA+FiEErWNIgUDlPuCCHb89lRmC
|
|
||||||
s2m2F+UFAlx4NlQCGwMFCQPCZwAFCwkIBwIGFQgJCgsCBBYCAwECHgECF4AACgkQ
|
|
||||||
lRmCs2m2F+Xvlgf8CenlUIj+abvtISSkHLi1qKPTIt8tzPxcYX1yUC3nkqaXW7eh
|
|
||||||
+VTjZXU7y5rfelUBQchnEqqIfH4liH5t+yFoMeTntyo3bTgcj7BhjBwwB4lQspnb
|
|
||||||
AjiuLV95L6QbJoPVyJ1KlAC3X88QRlUDYy5ft0wTro1A4oLdgtbzWhiXKIAcedBt
|
|
||||||
zMjvX/qETtQvs15sF+HgF3/MHPjGH0I3gumIRMiIEE7vtaQvOZHknXlg552W+gmN
|
|
||||||
BVFr9uuLMPCD/+LB2uhGhjuEA8Jj3mqKtkyWSEkOd9losBbBrEo0wupEz1/Ahxga
|
|
||||||
h2X1Zd1etdDRsjl7JRt4Hf+vXV+kg/GfM6Gw5LkBDQRceDZUAQgArB8vjN/lwKte
|
|
||||||
vLjWEw7DaVbMC9R7RMYLSrdPTaQpBnFuQON3GOiIikRuwowl+K0HiZzojJwVq4yF
|
|
||||||
cGB8cBx9fT+zmAhPxLIDvY/mRb2BzsnpGgMlwydJZYLTTrPzbCXep9uzNXtBbcwd
|
|
||||||
aXLXWfTEoWmEVO1ZGuqI7X96cJvdhjzQAvkCpk+lgdJ9vo67aTBRu2d1YL6nd9lK
|
|
||||||
Oh4x43Cd2GNNpPOSdLxhISozImIGMFlrXn6riHXRVVcj+yVR/b9afsAm1MicDPtL
|
|
||||||
dWxCF7kZ/4u3rcLHAjCz5T/zoBn2S4MtISWzkPXkswz6fa9fHWCgblbl4uzUq7fl
|
|
||||||
3I8JvdGRfwARAQABiQE8BBgBCAAmFiEErWNIgUDlPuCCHb89lRmCs2m2F+UFAlx4
|
|
||||||
NlQCGwwFCQPCZwAACgkQlRmCs2m2F+Vh1wf/TMCke/T18e//8KFmgKAeiLECpMxE
|
|
||||||
h6jZvfIMh5lN0YxmgKkw7T2UgYyqYJ4Wxm24iiNw2KUV/saltzsc5PoWMlcdpI8c
|
|
||||||
t7VNWbzHTgr2+UvigLgFpGG6G5GSlKVinXSZcgADN4F+7VMD+urycFPEmLYSTmlE
|
|
||||||
DKz+NrHmeKh08palwJEZnuK4vBg6WREHLcrborGgyZUxLu/ehbGc3QqMBbvupr3m
|
|
||||||
QiRC90xqxDa1u+q6cbFdiOdaKMzvibT9OnC7RanZ3uk+D0Jgs7yKuwHSNwNX6C3C
|
|
||||||
NTaV4BNont/v+X9ycP3NhqlMN8yONnSl66O19RBbdbP6M+UCr96mRiu0YA==
|
|
||||||
=T8XU
|
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
|
||||||
`, `-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
||||||
Comment: GPGTools - https://gpgtools.org
|
|
||||||
|
|
||||||
mQINBFiuFLcBEACtu5pycj7nHINq9gdkWtQhOdQPMRmbWPbCfxBRceIyB9IHUKay
|
|
||||||
ldKEAA5DlOtub2ao811pLqcvcWMN61vmwDE9wcBBf1BRpoTb1XB4k60UDuCH4m9u
|
|
||||||
r/XcwGaVBchiO8mdqCpB/h0rGXuoJ2Lqk4kXmyRZuaX2WUg7eOK9ZfslaaBc8lvI
|
|
||||||
r5UvY7UL39LtzvOhQ+el2fXhktwZnCjDlovZzRVpn0QXXUAnuDuzCmd04NXjHZZB
|
|
||||||
8q+h7jZrPrNusPzThkcaTUyuMqAHSrn0plNV1Ne0gDsUjGIOEoWtodnTeYGjkodu
|
|
||||||
qipmLoFiFz0MsdD6CBs6LOr2OIjqJ8TtiMj2MqPiKZTVOb+hpmH1Cs6EN3IhCiLX
|
|
||||||
QbiKX3UjBdVRIFlr4sL/JvOpLKr1RaEQS3nJ2m/Xuki1AOeKLoX8ebPca34tyXj0
|
|
||||||
2gs7Khmfa02TI+fvcAlwzfwhDDab96SnKNOK6XDp0rh3ZTKVYeFhcN7m9z8FWHyJ
|
|
||||||
O1onRVaq2bsKPX1Zv9ZC7jZIAMV2pC26UmRc7nJ/xdFj3tafA5hvILUifpO1qdlX
|
|
||||||
iOCK+biPU3T9c6FakNiQ0sXAqhHbKaJNYcjDF3H3QIs1a35P7kfUJ+9Nc1WoCFGV
|
|
||||||
Gh94dVLMGuoh+qo0A0qCg/y0/gGeZQ7G3jT5NXFx6UjlAb42R/dP+VSg6QARAQAB
|
|
||||||
tCVPZmZpY2lhbCBSZWxlYXNlIDxvZmZpY2lhbEB2MnJheS5jb20+iQJUBBMBCgA+
|
|
||||||
AhsDBQsJCAcDBRUKCQgLBRYCAwEAAh4BAheAFiEEiwxeMlNgMveaPc7Z4a+lUMfT
|
|
||||||
xJoFAlqRYBMFCQPF0FwACgkQ4a+lUMfTxJoymBAAnyqLfEdmP0ulki3uCQvIH4JD
|
|
||||||
OXvFRyTLYweLehGqZ63i7yy0c1BzOsQbmQy2Trl2uiCgjOLmA6LdFB2d3rhsFssK
|
|
||||||
fhFGroqCOHPdG7thSnBu9C0ohWdoiE1hfXVUtRn0P2vfqswNMdxwNwlZiRhWJemw
|
|
||||||
1WmlaSXRp3PznC1eCYwUaS5IT18rzJyuk8z/Scb9DEWQwPhypz+NTE3j7qvQFmdP
|
|
||||||
0cEDGUUXVe3HQ7oHlC+hzL79KttJeEMl575YbuLtAeRSJC0M+IgXd8YKuoORhqFM
|
|
||||||
OwW4CNVMnAiF6mmb2Wf1hM+A9ydWVd3rz7sp3k1n4i5Hl4ftEz2cdicTX1JBG4ZB
|
|
||||||
wsa9pfC5jk+negIQVvHPQRtWc/2bNYxNBF2cIpKF9wQ00E/wP64vl5QwJzs58Fqc
|
|
||||||
cl3AwfskfvzeLSpdKlOCLE8FSQiKQ/NNw9fAuAe7YxW9xSKRTFGx8yQCNd11fmFe
|
|
||||||
iMCDsBE9I51yUy8ywEtnedHi6mxMrnLv24VkD7jQZBWlvMDUEhGy2f6KgrSHTdEJ
|
|
||||||
ZchSxfEIaM9Thy1E/3f6dQVkiPsf+/4wikS6sCdyW+ITVYc6yE5MvRz5oDjQH4z5
|
|
||||||
JoELeuNxR59kpBErgdr8DBHSJNuxIT63QynrglwsG319Dzu5uPUC6WfqUGG9ATJ0
|
|
||||||
neWkINHrf53bVk2rUG65Ag0EWK4UtwEQAL+11tnPaWlnbVj64j1Qikd+2gZRR7XF
|
|
||||||
fNx1RHHHr4fyxmXUteZFS/L7QHJMDUYmVe6yiq6cvafuygqaUdrp8FLqapGZrsnj
|
|
||||||
jH4i+h1cnZBiO4ui3mA/oaQM/FVjQDQ1LBeLlVxGDYhj/mlmDfYOIsd0wys0AmmW
|
|
||||||
ytPsx0xXnbd9lkJpItfilAR+p7rbHc+755ZIIXPCOH1bXfJz+x0yafi7TgQgEC/M
|
|
||||||
a4SeXVSpygKamZxYbdTpV355Fa4FHCAcK8v3+LnhE6c/4HXnGiuCAO3Lm1ZhgT3E
|
|
||||||
xr8TjlWqdUFJiMmCAf9x8UidBoa6UGyW/yI55CbH35f5p3Tgq0k4Sjq8OrwC6qJm
|
|
||||||
WGWv0HTCs9m21ie3yDKZljVfZ+gXSkaY84JbcYbmAEXH42Y/fEQdkhxxVELHt6Tk
|
|
||||||
1bYvpW1NgRopw9U/mV8mERc0H6Vp+KoWU4uXiHK532YR4kUmvWh5WiSPFu/e6t5+
|
|
||||||
/iWVwXVzvrDWx76cKuye1PgF/CmhKLc1JacJgaEtxuXvVXI4er+aTL/HbiISdzfc
|
|
||||||
tYYdEVSYlkjJdV3/30HsupdsV/Y7O2DiGhlsGa5pKXVLmAvvHzdDfc2iKIbRSRWR
|
|
||||||
kHni7uw/r/ZY78j5yBxwjZkopo3A5NJhByBOnNh9ZaWHBrc1a3WSsItGAn5ORHWk
|
|
||||||
Q1KJY7SDFcXvABEBAAGJAiUEGAEKAA8FAliuFLcCGwwFCQHhM4AACgkQ4a+lUMfT
|
|
||||||
xJrRCA//clpNxJahlPqEsdzCyYEGeXvI1dcZvUmEg+Nm6n1ohRVw1lqP+JbS31N4
|
|
||||||
lByA93R2S5QVjMdr9KranXLC4F+bCJak5wbk7Pza9jqejf5f9nSqwc+M3EkMI2Sy
|
|
||||||
2UlokDwK8m3yMtCf3vRDifvMGXpdUVsWreYvhY5owZfgYD1Ojy6toYqE31HGJEBM
|
|
||||||
z+nGGKkAHVKOZbQAY9X6yAxGYuoV1Z2vddu7OJ4IMdqC4mxbndmKhsfGvotNVgFT
|
|
||||||
WRW9DsKP+Im4WrNpcF7hxZFKNMlw3RbvrrFkCVYuejLUY9xEb57gqLT2APo0LmtX
|
|
||||||
XfvJVB3X2uOelu/MAnnANmPg4Ej8J7D/Q+XX33IGXCrVXo0CVEPscFSqn6O94Ni8
|
|
||||||
INpICE6G1EW/y+iZWcmjx59AnKYeFa40xgr/7TYZmouGBXfBNhtsghFlZY7Hw7ZD
|
|
||||||
Ton1Wxcv14DPigiItYk7WkOiyPTLpAloWRSzs7GDFi2MQaFnrrrJ3ep0wHKuaaYl
|
|
||||||
KJh08QdpalNSjGiga6boN1MH5FkI2NYAyGwQGvvcMe+TDEK43KcH4AssiZNtuXzx
|
|
||||||
fkXkose778mzGzk5rBr0jGtKAxV2159CaI2KzR+uN7JwzoHrRRhVu/OWcaL/5MKq
|
|
||||||
OUUihc22Z9/8GnKH1gscBhoIF+cqqOfzTIA6KrJHIC2u5Vpjvac=
|
|
||||||
=xv/V
|
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
|
||||||
`}
|
|
||||||
|
|
||||||
func firstIdentity(m map[string]*openpgp.Identity) string {
|
|
||||||
for k := range m {
|
|
||||||
return k
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
type VerifyCommand struct{}
|
type VerifyCommand struct{}
|
||||||
|
|
||||||
func (c *VerifyCommand) Name() string {
|
func (c *VerifyCommand) Name() string {
|
||||||
|
@ -112,7 +17,7 @@ func (c *VerifyCommand) Description() Description {
|
||||||
return Description{
|
return Description{
|
||||||
Short: "Verify if a binary is officially signed.",
|
Short: "Verify if a binary is officially signed.",
|
||||||
Usage: []string{
|
Usage: []string{
|
||||||
"v2ctl verify [--sig=<sig-file>] file",
|
"v2ctl verify --sig=<sig-file> file...",
|
||||||
"Verify the file officially signed by V2Ray.",
|
"Verify the file officially signed by V2Ray.",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -133,12 +38,7 @@ func (c *VerifyCommand) Execute(args []string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if *sigFile == "" {
|
if *sigFile == "" {
|
||||||
*sigFile = target + ".sig"
|
return newError("empty signature path.")
|
||||||
}
|
|
||||||
|
|
||||||
targetReader, err := os.Open(os.ExpandEnv(target))
|
|
||||||
if err != nil {
|
|
||||||
return newError("failed to open file: ", target).Base(err)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sigReader, err := os.Open(os.ExpandEnv(*sigFile))
|
sigReader, err := os.Open(os.ExpandEnv(*sigFile))
|
||||||
|
@ -146,23 +46,15 @@ func (c *VerifyCommand) Execute(args []string) error {
|
||||||
return newError("failed to open file ", *sigFile).Base(err)
|
return newError("failed to open file ", *sigFile).Base(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, key := range pubkey {
|
files := fs.Args()
|
||||||
keyring, err := openpgp.ReadArmoredKeyRing(strings.NewReader(key))
|
|
||||||
if err != nil {
|
|
||||||
return newError("failed to create keyring").Base(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
entity, err := openpgp.CheckDetachedSignature(keyring, targetReader, sigReader)
|
err = signerVerify.OutputAndJudge(signerVerify.CheckSignaturesV2Fly(sigReader, files))
|
||||||
if err != nil {
|
|
||||||
fmt.Println("failed to verify, try another key: ", err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
fmt.Println("Signed by:", firstIdentity(entity.Identities))
|
if err == nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return newError("file is not officially signed by V2Ray")
|
return newError("file is not officially signed by V2Ray").Base(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
|
|
@ -36,6 +36,54 @@ def gen_targets(matrix):
|
||||||
base = ":" + bin_name,
|
base = ":" + bin_name,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
bin_name = "v2ray_" + os + "_" + arch + "_armv7_nowindow"
|
||||||
|
foreign_go_binary(
|
||||||
|
name = bin_name,
|
||||||
|
pkg = pkg,
|
||||||
|
output = "w" + output + "_armv7",
|
||||||
|
os = os,
|
||||||
|
arch = arch,
|
||||||
|
arm = "7",
|
||||||
|
ld = "-H windowsgui",
|
||||||
|
)
|
||||||
|
|
||||||
|
gpg_sign(
|
||||||
|
name = bin_name + "_sig",
|
||||||
|
base = ":" + bin_name,
|
||||||
|
)
|
||||||
|
|
||||||
|
bin_name = "v2ray_" + os + "_" + arch + "_armv6_nowindow"
|
||||||
|
foreign_go_binary(
|
||||||
|
name = bin_name,
|
||||||
|
pkg = pkg,
|
||||||
|
output = "w" + output + "_armv6",
|
||||||
|
os = os,
|
||||||
|
arch = arch,
|
||||||
|
arm = "6",
|
||||||
|
ld = "-H windowsgui",
|
||||||
|
)
|
||||||
|
|
||||||
|
gpg_sign(
|
||||||
|
name = bin_name + "_sig",
|
||||||
|
base = ":" + bin_name,
|
||||||
|
)
|
||||||
|
|
||||||
|
bin_name = "v2ray_" + os + "_" + arch + "_armv5_nowindow"
|
||||||
|
foreign_go_binary(
|
||||||
|
name = bin_name,
|
||||||
|
pkg = pkg,
|
||||||
|
output = "w" + output,
|
||||||
|
os = os,
|
||||||
|
arch = arch,
|
||||||
|
arm = "5",
|
||||||
|
ld = "-H windowsgui",
|
||||||
|
)
|
||||||
|
|
||||||
|
gpg_sign(
|
||||||
|
name = bin_name + "_sig",
|
||||||
|
base = ":" + bin_name,
|
||||||
|
)
|
||||||
|
|
||||||
if arch in ["mips", "mipsle"]:
|
if arch in ["mips", "mipsle"]:
|
||||||
bin_name = "v2ray_" + os + "_" + arch + "_softfloat"
|
bin_name = "v2ray_" + os + "_" + arch + "_softfloat"
|
||||||
foreign_go_binary(
|
foreign_go_binary(
|
||||||
|
@ -57,7 +105,7 @@ def gen_targets(matrix):
|
||||||
foreign_go_binary(
|
foreign_go_binary(
|
||||||
name = bin_name,
|
name = bin_name,
|
||||||
pkg = pkg,
|
pkg = pkg,
|
||||||
output = output+"_armv7",
|
output = output + "_armv7",
|
||||||
os = os,
|
os = os,
|
||||||
arch = arch,
|
arch = arch,
|
||||||
arm = "7",
|
arm = "7",
|
||||||
|
@ -72,7 +120,7 @@ def gen_targets(matrix):
|
||||||
foreign_go_binary(
|
foreign_go_binary(
|
||||||
name = bin_name,
|
name = bin_name,
|
||||||
pkg = pkg,
|
pkg = pkg,
|
||||||
output = output+"_armv6",
|
output = output + "_armv6",
|
||||||
os = os,
|
os = os,
|
||||||
arch = arch,
|
arch = arch,
|
||||||
arm = "6",
|
arm = "6",
|
||||||
|
@ -87,7 +135,7 @@ def gen_targets(matrix):
|
||||||
foreign_go_binary(
|
foreign_go_binary(
|
||||||
name = bin_name,
|
name = bin_name,
|
||||||
pkg = pkg,
|
pkg = pkg,
|
||||||
output = output+"_armv5",
|
output = output,
|
||||||
os = os,
|
os = os,
|
||||||
arch = arch,
|
arch = arch,
|
||||||
arm = "5",
|
arm = "5",
|
||||||
|
@ -96,4 +144,4 @@ def gen_targets(matrix):
|
||||||
gpg_sign(
|
gpg_sign(
|
||||||
name = bin_name + "_sig",
|
name = bin_name + "_sig",
|
||||||
base = ":" + bin_name,
|
base = ":" + bin_name,
|
||||||
)
|
)
|
||||||
|
|
|
@ -0,0 +1,129 @@
|
||||||
|
package aead
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
"strconv"
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestCreateAuthID(t *testing.T) {
|
||||||
|
key := KDF16([]byte("Demo Key for Auth ID Test"), "Demo Path for Auth ID Test")
|
||||||
|
authid := CreateAuthID(key, time.Now().Unix())
|
||||||
|
|
||||||
|
fmt.Println(key)
|
||||||
|
fmt.Println(authid)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCreateAuthIDAndDecode(t *testing.T) {
|
||||||
|
key := KDF16([]byte("Demo Key for Auth ID Test"), "Demo Path for Auth ID Test")
|
||||||
|
authid := CreateAuthID(key, time.Now().Unix())
|
||||||
|
|
||||||
|
fmt.Println(key)
|
||||||
|
fmt.Println(authid)
|
||||||
|
|
||||||
|
AuthDecoder := NewAuthIDDecoderHolder()
|
||||||
|
var keyw [16]byte
|
||||||
|
copy(keyw[:], key)
|
||||||
|
AuthDecoder.AddUser(keyw, "Demo User")
|
||||||
|
res, err := AuthDecoder.Match(authid)
|
||||||
|
fmt.Println(res)
|
||||||
|
fmt.Println(err)
|
||||||
|
assert.Equal(t, "Demo User", res)
|
||||||
|
assert.Nil(t, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCreateAuthIDAndDecode2(t *testing.T) {
|
||||||
|
key := KDF16([]byte("Demo Key for Auth ID Test"), "Demo Path for Auth ID Test")
|
||||||
|
authid := CreateAuthID(key, time.Now().Unix())
|
||||||
|
|
||||||
|
fmt.Println(key)
|
||||||
|
fmt.Println(authid)
|
||||||
|
|
||||||
|
AuthDecoder := NewAuthIDDecoderHolder()
|
||||||
|
var keyw [16]byte
|
||||||
|
copy(keyw[:], key)
|
||||||
|
AuthDecoder.AddUser(keyw, "Demo User")
|
||||||
|
res, err := AuthDecoder.Match(authid)
|
||||||
|
fmt.Println(res)
|
||||||
|
fmt.Println(err)
|
||||||
|
assert.Equal(t, "Demo User", res)
|
||||||
|
assert.Nil(t, err)
|
||||||
|
|
||||||
|
key2 := KDF16([]byte("Demo Key for Auth ID Test2"), "Demo Path for Auth ID Test")
|
||||||
|
authid2 := CreateAuthID(key2, time.Now().Unix())
|
||||||
|
|
||||||
|
res2, err2 := AuthDecoder.Match(authid2)
|
||||||
|
assert.EqualError(t, err2, "user do not exist")
|
||||||
|
assert.Nil(t, res2)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCreateAuthIDAndDecodeMassive(t *testing.T) {
|
||||||
|
key := KDF16([]byte("Demo Key for Auth ID Test"), "Demo Path for Auth ID Test")
|
||||||
|
authid := CreateAuthID(key, time.Now().Unix())
|
||||||
|
|
||||||
|
fmt.Println(key)
|
||||||
|
fmt.Println(authid)
|
||||||
|
|
||||||
|
AuthDecoder := NewAuthIDDecoderHolder()
|
||||||
|
var keyw [16]byte
|
||||||
|
copy(keyw[:], key)
|
||||||
|
AuthDecoder.AddUser(keyw, "Demo User")
|
||||||
|
res, err := AuthDecoder.Match(authid)
|
||||||
|
fmt.Println(res)
|
||||||
|
fmt.Println(err)
|
||||||
|
assert.Equal(t, "Demo User", res)
|
||||||
|
assert.Nil(t, err)
|
||||||
|
|
||||||
|
for i := 0; i <= 10000; i++ {
|
||||||
|
key2 := KDF16([]byte("Demo Key for Auth ID Test2"), "Demo Path for Auth ID Test", strconv.Itoa(i))
|
||||||
|
var keyw2 [16]byte
|
||||||
|
copy(keyw2[:], key2)
|
||||||
|
AuthDecoder.AddUser(keyw2, "Demo User"+strconv.Itoa(i))
|
||||||
|
}
|
||||||
|
|
||||||
|
authid3 := CreateAuthID(key, time.Now().Unix())
|
||||||
|
|
||||||
|
res2, err2 := AuthDecoder.Match(authid3)
|
||||||
|
assert.Equal(t, "Demo User", res2)
|
||||||
|
assert.Nil(t, err2)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCreateAuthIDAndDecodeSuperMassive(t *testing.T) {
|
||||||
|
key := KDF16([]byte("Demo Key for Auth ID Test"), "Demo Path for Auth ID Test")
|
||||||
|
authid := CreateAuthID(key, time.Now().Unix())
|
||||||
|
|
||||||
|
fmt.Println(key)
|
||||||
|
fmt.Println(authid)
|
||||||
|
|
||||||
|
AuthDecoder := NewAuthIDDecoderHolder()
|
||||||
|
var keyw [16]byte
|
||||||
|
copy(keyw[:], key)
|
||||||
|
AuthDecoder.AddUser(keyw, "Demo User")
|
||||||
|
res, err := AuthDecoder.Match(authid)
|
||||||
|
fmt.Println(res)
|
||||||
|
fmt.Println(err)
|
||||||
|
assert.Equal(t, "Demo User", res)
|
||||||
|
assert.Nil(t, err)
|
||||||
|
|
||||||
|
for i := 0; i <= 1000000; i++ {
|
||||||
|
key2 := KDF16([]byte("Demo Key for Auth ID Test2"), "Demo Path for Auth ID Test", strconv.Itoa(i))
|
||||||
|
var keyw2 [16]byte
|
||||||
|
copy(keyw2[:], key2)
|
||||||
|
AuthDecoder.AddUser(keyw2, "Demo User"+strconv.Itoa(i))
|
||||||
|
}
|
||||||
|
|
||||||
|
authid3 := CreateAuthID(key, time.Now().Unix())
|
||||||
|
|
||||||
|
before := time.Now()
|
||||||
|
res2, err2 := AuthDecoder.Match(authid3)
|
||||||
|
after := time.Now()
|
||||||
|
assert.Equal(t, "Demo User", res2)
|
||||||
|
assert.Nil(t, err2)
|
||||||
|
|
||||||
|
fmt.Println(after.Sub(before).Seconds())
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,105 @@
|
||||||
|
package aead
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"fmt"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
"io"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestOpenVMessAEADHeader(t *testing.T) {
|
||||||
|
TestHeader := []byte("Test Header")
|
||||||
|
key := KDF16([]byte("Demo Key for Auth ID Test"), "Demo Path for Auth ID Test")
|
||||||
|
var keyw [16]byte
|
||||||
|
copy(keyw[:], key)
|
||||||
|
sealed := SealVMessAEADHeader(keyw, TestHeader)
|
||||||
|
|
||||||
|
var AEADR = bytes.NewReader(sealed)
|
||||||
|
|
||||||
|
var authid [16]byte
|
||||||
|
|
||||||
|
io.ReadFull(AEADR, authid[:])
|
||||||
|
|
||||||
|
out, _, err, _ := OpenVMessAEADHeader(keyw, authid, AEADR)
|
||||||
|
|
||||||
|
fmt.Println(string(out))
|
||||||
|
fmt.Println(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestOpenVMessAEADHeader2(t *testing.T) {
|
||||||
|
TestHeader := []byte("Test Header")
|
||||||
|
key := KDF16([]byte("Demo Key for Auth ID Test"), "Demo Path for Auth ID Test")
|
||||||
|
var keyw [16]byte
|
||||||
|
copy(keyw[:], key)
|
||||||
|
sealed := SealVMessAEADHeader(keyw, TestHeader)
|
||||||
|
|
||||||
|
var AEADR = bytes.NewReader(sealed)
|
||||||
|
|
||||||
|
var authid [16]byte
|
||||||
|
|
||||||
|
io.ReadFull(AEADR, authid[:])
|
||||||
|
|
||||||
|
out, _, err, readen := OpenVMessAEADHeader(keyw, authid, AEADR)
|
||||||
|
assert.Equal(t, len(sealed)-16-AEADR.Len(), readen)
|
||||||
|
assert.Equal(t, string(TestHeader), string(out))
|
||||||
|
assert.Nil(t, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestOpenVMessAEADHeader4(t *testing.T) {
|
||||||
|
for i := 0; i <= 60; i++ {
|
||||||
|
TestHeader := []byte("Test Header")
|
||||||
|
key := KDF16([]byte("Demo Key for Auth ID Test"), "Demo Path for Auth ID Test")
|
||||||
|
var keyw [16]byte
|
||||||
|
copy(keyw[:], key)
|
||||||
|
sealed := SealVMessAEADHeader(keyw, TestHeader)
|
||||||
|
var sealedm [16]byte
|
||||||
|
copy(sealedm[:], sealed)
|
||||||
|
sealed[i] ^= 0xff
|
||||||
|
var AEADR = bytes.NewReader(sealed)
|
||||||
|
|
||||||
|
var authid [16]byte
|
||||||
|
|
||||||
|
io.ReadFull(AEADR, authid[:])
|
||||||
|
|
||||||
|
out, drain, err, readen := OpenVMessAEADHeader(keyw, authid, AEADR)
|
||||||
|
assert.Equal(t, len(sealed)-16-AEADR.Len(), readen)
|
||||||
|
assert.Equal(t, true, drain)
|
||||||
|
assert.NotNil(t, err)
|
||||||
|
if err == nil {
|
||||||
|
fmt.Println(">")
|
||||||
|
}
|
||||||
|
assert.Nil(t, out)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestOpenVMessAEADHeader4Massive(t *testing.T) {
|
||||||
|
for j := 0; j < 1000; j++ {
|
||||||
|
|
||||||
|
for i := 0; i <= 60; i++ {
|
||||||
|
TestHeader := []byte("Test Header")
|
||||||
|
key := KDF16([]byte("Demo Key for Auth ID Test"), "Demo Path for Auth ID Test")
|
||||||
|
var keyw [16]byte
|
||||||
|
copy(keyw[:], key)
|
||||||
|
sealed := SealVMessAEADHeader(keyw, TestHeader)
|
||||||
|
var sealedm [16]byte
|
||||||
|
copy(sealedm[:], sealed)
|
||||||
|
sealed[i] ^= 0xff
|
||||||
|
var AEADR = bytes.NewReader(sealed)
|
||||||
|
|
||||||
|
var authid [16]byte
|
||||||
|
|
||||||
|
io.ReadFull(AEADR, authid[:])
|
||||||
|
|
||||||
|
out, drain, err, readen := OpenVMessAEADHeader(keyw, authid, AEADR)
|
||||||
|
assert.Equal(t, len(sealed)-16-AEADR.Len(), readen)
|
||||||
|
assert.Equal(t, true, drain)
|
||||||
|
assert.NotNil(t, err)
|
||||||
|
if err == nil {
|
||||||
|
fmt.Println(">")
|
||||||
|
}
|
||||||
|
assert.Nil(t, out)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -82,6 +82,35 @@ pkg_zip(
|
||||||
mappings = gen_mappings("windows", "386"),
|
mappings = gen_mappings("windows", "386"),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
pkg_zip(
|
||||||
|
name = "v2ray_windows_arm_package",
|
||||||
|
srcs = [
|
||||||
|
":config_json",
|
||||||
|
":doc",
|
||||||
|
":geodata",
|
||||||
|
"//infra/control/main:v2ctl_windows_arm_armv5",
|
||||||
|
"//infra/control/main:v2ctl_windows_arm_armv5_sig",
|
||||||
|
"//infra/control/main:v2ctl_windows_arm_armv6",
|
||||||
|
"//infra/control/main:v2ctl_windows_arm_armv6_sig",
|
||||||
|
"//infra/control/main:v2ctl_windows_arm_armv7",
|
||||||
|
"//infra/control/main:v2ctl_windows_arm_armv7_sig",
|
||||||
|
"//main:v2ray_windows_arm_armv5",
|
||||||
|
"//main:v2ray_windows_arm_armv5_sig",
|
||||||
|
"//main:v2ray_windows_arm_armv5_nowindow",
|
||||||
|
"//main:v2ray_windows_arm_armv5_nowindow_sig",
|
||||||
|
"//main:v2ray_windows_arm_armv6",
|
||||||
|
"//main:v2ray_windows_arm_armv6_sig",
|
||||||
|
"//main:v2ray_windows_arm_armv6_nowindow",
|
||||||
|
"//main:v2ray_windows_arm_armv6_nowindow_sig",
|
||||||
|
"//main:v2ray_windows_arm_armv7",
|
||||||
|
"//main:v2ray_windows_arm_armv7_sig",
|
||||||
|
"//main:v2ray_windows_arm_armv7_nowindow",
|
||||||
|
"//main:v2ray_windows_arm_armv7_nowindow_sig",
|
||||||
|
],
|
||||||
|
out = "v2ray-windows-arm.zip",
|
||||||
|
mappings = gen_mappings("windows", "arm"),
|
||||||
|
)
|
||||||
|
|
||||||
pkg_zip(
|
pkg_zip(
|
||||||
name = "v2ray_freebsd_amd64_package",
|
name = "v2ray_freebsd_amd64_package",
|
||||||
srcs = [
|
srcs = [
|
||||||
|
@ -196,12 +225,12 @@ pkg_zip(
|
||||||
":doc",
|
":doc",
|
||||||
":geodata",
|
":geodata",
|
||||||
":systemd",
|
":systemd",
|
||||||
"//infra/control/main:v2ctl_linux_arm",
|
"//infra/control/main:v2ctl_linux_arm_armv5",
|
||||||
|
"//infra/control/main:v2ctl_linux_arm_armv5_sig",
|
||||||
|
"//infra/control/main:v2ctl_linux_arm_armv6",
|
||||||
|
"//infra/control/main:v2ctl_linux_arm_armv6_sig",
|
||||||
"//infra/control/main:v2ctl_linux_arm_armv7",
|
"//infra/control/main:v2ctl_linux_arm_armv7",
|
||||||
"//infra/control/main:v2ctl_linux_arm_armv7_sig",
|
"//infra/control/main:v2ctl_linux_arm_armv7_sig",
|
||||||
"//infra/control/main:v2ctl_linux_arm_sig",
|
|
||||||
"//main:v2ray_linux_arm",
|
|
||||||
"//main:v2ray_linux_arm_sig",
|
|
||||||
"//main:v2ray_linux_arm_armv5",
|
"//main:v2ray_linux_arm_armv5",
|
||||||
"//main:v2ray_linux_arm_armv5_sig",
|
"//main:v2ray_linux_arm_armv5_sig",
|
||||||
"//main:v2ray_linux_arm_armv6",
|
"//main:v2ray_linux_arm_armv6",
|
||||||
|
|
|
@ -1,13 +1,12 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
|
||||||
RELBODY="https://www.v2ray.com/chapter_00/01_versions.html"
|
RELBODY="https://www.v2ray.com/chapter_00/01_versions.html"
|
||||||
JSON_DATA=$(echo "{}" | jq -c ".tag_name=\"${RELEASE_TAG}\"")
|
JSON_DATA=$(echo "{}" | jq -c ".tag_name=\"${RELEASE_TAG}\"")
|
||||||
JSON_DATA=$(echo ${JSON_DATA} | jq -c ".prerelease=${PRERELEASE}")
|
JSON_DATA=$(echo ${JSON_DATA} | jq -c ".prerelease=${PRERELEASE}")
|
||||||
JSON_DATA=$(echo ${JSON_DATA} | jq -c ".body=\"${RELBODY}\"")
|
JSON_DATA=$(echo ${JSON_DATA} | jq -c ".body=\"${RELBODY}\"")
|
||||||
RELEASE_DATA=$(curl --data "${JSON_DATA}" -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/v2fly/V2FlyBleedingEdgeBinary/releases)
|
RELEASE_DATA=$(curl --data "${JSON_DATA}" -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/v2fly/V2FlyBleedingEdgeBinary/releases)
|
||||||
echo $RELEASE_DATA
|
echo $RELEASE_DATA
|
||||||
RELEASE_ID=$(echo $RELEASE_DATA| jq ".id")
|
RELEASE_ID=$(echo $RELEASE_DATA | jq ".id")
|
||||||
|
|
||||||
function uploadfile() {
|
function uploadfile() {
|
||||||
FILE=$1
|
FILE=$1
|
||||||
|
@ -21,19 +20,55 @@ function uploadfile() {
|
||||||
function upload() {
|
function upload() {
|
||||||
FILE=$1
|
FILE=$1
|
||||||
DGST=$1.dgst
|
DGST=$1.dgst
|
||||||
openssl dgst -md5 $FILE | sed 's/([^)]*)//g' >> $DGST
|
openssl dgst -md5 $FILE | sed 's/([^)]*)//g' >>$DGST
|
||||||
openssl dgst -sha1 $FILE | sed 's/([^)]*)//g' >> $DGST
|
openssl dgst -sha1 $FILE | sed 's/([^)]*)//g' >>$DGST
|
||||||
openssl dgst -sha256 $FILE | sed 's/([^)]*)//g' >> $DGST
|
openssl dgst -sha256 $FILE | sed 's/([^)]*)//g' >>$DGST
|
||||||
openssl dgst -sha512 $FILE | sed 's/([^)]*)//g' >> $DGST
|
openssl dgst -sha512 $FILE | sed 's/([^)]*)//g' >>$DGST
|
||||||
uploadfile $FILE
|
uploadfile $FILE
|
||||||
uploadfile $DGST
|
uploadfile $DGST
|
||||||
}
|
}
|
||||||
|
|
||||||
ART_ROOT=$GOPATH/src/v2ray.com/core/bazel-bin/release
|
ART_ROOT=$GOPATH/src/v2ray.com/core/bazel-bin/release
|
||||||
|
|
||||||
|
pushd ${ART_ROOT}
|
||||||
|
{
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen version ${RELEASE_TAG}
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen project "v2flyunstable"
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-macos.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-windows-64.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-windows-32.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-windows-arm.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-64.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-32.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-arm.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-arm64.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-mips64.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-mips64le.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-mips.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-mipsle.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-ppc64.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-ppc64le.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-s390x.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-freebsd-64.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-freebsd-32.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-openbsd-64.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-openbsd-32.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-dragonfly-64.zip
|
||||||
|
} >Release.unsigned.unsorted
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen sort < Release.unsigned.unsorted > Release.unsigned
|
||||||
|
|
||||||
|
{
|
||||||
|
echo "Build Finished"
|
||||||
|
echo "https://github.com/v2fly/V2FlyBleedingEdgeBinary/releases/tag/${RELEASE_TAG}"
|
||||||
|
} > buildcomment
|
||||||
|
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil post commit "${RELEASE_SHA}" < buildcomment
|
||||||
|
popd
|
||||||
|
|
||||||
upload ${ART_ROOT}/v2ray-macos.zip
|
upload ${ART_ROOT}/v2ray-macos.zip
|
||||||
upload ${ART_ROOT}/v2ray-windows-64.zip
|
upload ${ART_ROOT}/v2ray-windows-64.zip
|
||||||
upload ${ART_ROOT}/v2ray-windows-32.zip
|
upload ${ART_ROOT}/v2ray-windows-32.zip
|
||||||
|
upload ${ART_ROOT}/v2ray-windows-arm.zip
|
||||||
upload ${ART_ROOT}/v2ray-linux-64.zip
|
upload ${ART_ROOT}/v2ray-linux-64.zip
|
||||||
upload ${ART_ROOT}/v2ray-linux-32.zip
|
upload ${ART_ROOT}/v2ray-linux-32.zip
|
||||||
upload ${ART_ROOT}/v2ray-linux-arm.zip
|
upload ${ART_ROOT}/v2ray-linux-arm.zip
|
||||||
|
@ -50,3 +85,4 @@ upload ${ART_ROOT}/v2ray-freebsd-32.zip
|
||||||
upload ${ART_ROOT}/v2ray-openbsd-64.zip
|
upload ${ART_ROOT}/v2ray-openbsd-64.zip
|
||||||
upload ${ART_ROOT}/v2ray-openbsd-32.zip
|
upload ${ART_ROOT}/v2ray-openbsd-32.zip
|
||||||
upload ${ART_ROOT}/v2ray-dragonfly-64.zip
|
upload ${ART_ROOT}/v2ray-dragonfly-64.zip
|
||||||
|
upload ${ART_ROOT}/Release.unsigned
|
||||||
|
|
|
@ -119,7 +119,9 @@
|
||||||
},
|
},
|
||||||
"system": {
|
"system": {
|
||||||
"statsInboundUplink": false,
|
"statsInboundUplink": false,
|
||||||
"statsInboundDownlink": false
|
"statsInboundDownlink": false,
|
||||||
|
"statsOutboundUplink": false,
|
||||||
|
"statsOutboundDownlink": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,7 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
export VROOT=$( dirname "${BASH_SOURCE[0]}" )/../../
|
||||||
|
|
||||||
|
rm $VROOT/infra/control/verify.go
|
||||||
|
|
||||||
|
sed -i '/VSign/d' $VROOT/go.mod
|
|
@ -0,0 +1,28 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
RELEASE_DATA=$(curl --data "version=${SIGN_VERSION}" --data "password=${SIGN_SERVICE_PASSWORD}" -X POST "${SIGN_SERIVCE_URL}" )
|
||||||
|
echo $RELEASE_DATA
|
||||||
|
RELEASE_ID=$(echo $RELEASE_DATA| jq -r ".id")
|
||||||
|
|
||||||
|
function uploadfile() {
|
||||||
|
FILE=$1
|
||||||
|
CTYPE=$(file -b --mime-type $FILE)
|
||||||
|
|
||||||
|
sleep 1
|
||||||
|
curl -H "Authorization: token ${GITHUB_TOKEN}" -H "Content-Type: ${CTYPE}" --data-binary @$FILE "https://uploads.github.com/repos/v2fly/v2ray-core/releases/${RELEASE_ID}/assets?name=$(basename $FILE)"
|
||||||
|
sleep 1
|
||||||
|
}
|
||||||
|
|
||||||
|
function upload() {
|
||||||
|
FILE=$1
|
||||||
|
DGST=$1.dgst
|
||||||
|
openssl dgst -md5 $FILE | sed 's/([^)]*)//g' >> $DGST
|
||||||
|
openssl dgst -sha1 $FILE | sed 's/([^)]*)//g' >> $DGST
|
||||||
|
openssl dgst -sha256 $FILE | sed 's/([^)]*)//g' >> $DGST
|
||||||
|
openssl dgst -sha512 $FILE | sed 's/([^)]*)//g' >> $DGST
|
||||||
|
uploadfile $FILE
|
||||||
|
uploadfile $DGST
|
||||||
|
}
|
||||||
|
|
||||||
|
curl "https://raw.githubusercontent.com/v2fly/Release/master/v2fly/${SIGN_VERSION}.Release" > Release
|
||||||
|
upload Release
|
|
@ -0,0 +1,7 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
export SIGN_VERSION=$(cat $GITHUB_EVENT_PATH| jq -r ".release.tag_name")
|
||||||
|
|
||||||
|
echo $SIGN_VERSION
|
||||||
|
|
||||||
|
$GITHUB_WORKSPACE/release/requestsign.sh
|
|
@ -21,7 +21,7 @@ then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
GITHUB_RELEASE_TAG=${TRIGGER_REASON:${#CONST_refsB}:10}
|
GITHUB_RELEASE_TAG=${TRIGGER_REASON:${#CONST_refsB}:25}
|
||||||
|
|
||||||
echo ${GITHUB_RELEASE_TAG}
|
echo ${GITHUB_RELEASE_TAG}
|
||||||
|
|
||||||
|
@ -54,9 +54,40 @@ function upload() {
|
||||||
|
|
||||||
ART_ROOT=$GOPATH/src/v2ray.com/core/bazel-bin/release
|
ART_ROOT=$GOPATH/src/v2ray.com/core/bazel-bin/release
|
||||||
|
|
||||||
|
|
||||||
|
pushd ${ART_ROOT}
|
||||||
|
{
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen version "${GITHUB_RELEASE_TAG}"
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen project "v2fly"
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-macos.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-windows-64.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-windows-32.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-windows-arm.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-64.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-32.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-arm.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-arm64.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-mips64.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-mips64le.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-mips.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-mipsle.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-ppc64.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-ppc64le.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-linux-s390x.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-freebsd-64.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-freebsd-32.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-openbsd-64.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-openbsd-32.zip
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen file v2ray-dragonfly-64.zip
|
||||||
|
} >Release.unsigned.unsorted
|
||||||
|
go run github.com/xiaokangwang/V2BuildAssist/v2buildutil gen sort < Release.unsigned.unsorted > Release.unsigned
|
||||||
|
|
||||||
|
popd
|
||||||
|
|
||||||
upload ${ART_ROOT}/v2ray-macos.zip
|
upload ${ART_ROOT}/v2ray-macos.zip
|
||||||
upload ${ART_ROOT}/v2ray-windows-64.zip
|
upload ${ART_ROOT}/v2ray-windows-64.zip
|
||||||
upload ${ART_ROOT}/v2ray-windows-32.zip
|
upload ${ART_ROOT}/v2ray-windows-32.zip
|
||||||
|
upload ${ART_ROOT}/v2ray-windows-arm.zip
|
||||||
upload ${ART_ROOT}/v2ray-linux-64.zip
|
upload ${ART_ROOT}/v2ray-linux-64.zip
|
||||||
upload ${ART_ROOT}/v2ray-linux-32.zip
|
upload ${ART_ROOT}/v2ray-linux-32.zip
|
||||||
upload ${ART_ROOT}/v2ray-linux-arm.zip
|
upload ${ART_ROOT}/v2ray-linux-arm.zip
|
||||||
|
@ -73,3 +104,4 @@ upload ${ART_ROOT}/v2ray-freebsd-32.zip
|
||||||
upload ${ART_ROOT}/v2ray-openbsd-64.zip
|
upload ${ART_ROOT}/v2ray-openbsd-64.zip
|
||||||
upload ${ART_ROOT}/v2ray-openbsd-32.zip
|
upload ${ART_ROOT}/v2ray-openbsd-32.zip
|
||||||
upload ${ART_ROOT}/v2ray-dragonfly-64.zip
|
upload ${ART_ROOT}/v2ray-dragonfly-64.zip
|
||||||
|
upload ${ART_ROOT}/Release.unsigned
|
||||||
|
|
|
@ -1,30 +0,0 @@
|
||||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
||||||
|
|
||||||
mQENBFx4NlQBCADJyVwRUO/LzcnoHLWKppFQY4aTS+fH8k4Pf5nB3VR41v/3QZm1
|
|
||||||
jBkuO1522KmBkPPuuYDAdOrE8Y8UVLfir5RxnZXF9Ke8SPq0zB+ruOHfv0xJUz8q
|
|
||||||
bcArsdXpDRxtrEbi7J81YOB/yITuY5kSYUA9v1TZWf7eSS6GIw/YF0Eo/gsbbpwQ
|
|
||||||
yon/Ue3xxxbZnWvfsluhPADomNwbJ5iTFeRClJqdACb/YqIEo2M2ttLE3QF2qrrL
|
|
||||||
SbzdTUtr3qjADIEWHoABcQ+Amx0sGnyiTJUGiL+4QwdIOLsh4RLq1MWgN+niw9Cl
|
|
||||||
cUQBPojZmHPPqIjNXr823TpZvkZOxuE9RSDjABEBAAG0I1YyUmF5IE9mZmljaWFs
|
|
||||||
IDxvZmZpY2lhbEB2MnJheS5jb20+iQFUBBMBCAA+FiEErWNIgUDlPuCCHb89lRmC
|
|
||||||
s2m2F+UFAlx4NlQCGwMFCQPCZwAFCwkIBwIGFQgJCgsCBBYCAwECHgECF4AACgkQ
|
|
||||||
lRmCs2m2F+Xvlgf8CenlUIj+abvtISSkHLi1qKPTIt8tzPxcYX1yUC3nkqaXW7eh
|
|
||||||
+VTjZXU7y5rfelUBQchnEqqIfH4liH5t+yFoMeTntyo3bTgcj7BhjBwwB4lQspnb
|
|
||||||
AjiuLV95L6QbJoPVyJ1KlAC3X88QRlUDYy5ft0wTro1A4oLdgtbzWhiXKIAcedBt
|
|
||||||
zMjvX/qETtQvs15sF+HgF3/MHPjGH0I3gumIRMiIEE7vtaQvOZHknXlg552W+gmN
|
|
||||||
BVFr9uuLMPCD/+LB2uhGhjuEA8Jj3mqKtkyWSEkOd9losBbBrEo0wupEz1/Ahxga
|
|
||||||
h2X1Zd1etdDRsjl7JRt4Hf+vXV+kg/GfM6Gw5LkBDQRceDZUAQgArB8vjN/lwKte
|
|
||||||
vLjWEw7DaVbMC9R7RMYLSrdPTaQpBnFuQON3GOiIikRuwowl+K0HiZzojJwVq4yF
|
|
||||||
cGB8cBx9fT+zmAhPxLIDvY/mRb2BzsnpGgMlwydJZYLTTrPzbCXep9uzNXtBbcwd
|
|
||||||
aXLXWfTEoWmEVO1ZGuqI7X96cJvdhjzQAvkCpk+lgdJ9vo67aTBRu2d1YL6nd9lK
|
|
||||||
Oh4x43Cd2GNNpPOSdLxhISozImIGMFlrXn6riHXRVVcj+yVR/b9afsAm1MicDPtL
|
|
||||||
dWxCF7kZ/4u3rcLHAjCz5T/zoBn2S4MtISWzkPXkswz6fa9fHWCgblbl4uzUq7fl
|
|
||||||
3I8JvdGRfwARAQABiQE8BBgBCAAmFiEErWNIgUDlPuCCHb89lRmCs2m2F+UFAlx4
|
|
||||||
NlQCGwwFCQPCZwAACgkQlRmCs2m2F+Vh1wf/TMCke/T18e//8KFmgKAeiLECpMxE
|
|
||||||
h6jZvfIMh5lN0YxmgKkw7T2UgYyqYJ4Wxm24iiNw2KUV/saltzsc5PoWMlcdpI8c
|
|
||||||
t7VNWbzHTgr2+UvigLgFpGG6G5GSlKVinXSZcgADN4F+7VMD+urycFPEmLYSTmlE
|
|
||||||
DKz+NrHmeKh08palwJEZnuK4vBg6WREHLcrborGgyZUxLu/ehbGc3QqMBbvupr3m
|
|
||||||
QiRC90xqxDa1u+q6cbFdiOdaKMzvibT9OnC7RanZ3uk+D0Jgs7yKuwHSNwNX6C3C
|
|
||||||
NTaV4BNont/v+X9ycP3NhqlMN8yONnSl66O19RBbdbP6M+UCr96mRiu0YA==
|
|
||||||
=T8XU
|
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
untrusted comment: V2Fly Signing Key
|
||||||
|
RWTe6SReSmJUeqoA8cq1MxX7ycL06DAMAJcAgQ8dCN3kFtnWBHYDpTnx
|
|
@ -271,7 +271,7 @@ func TestSocksBridageUDPWithRouting(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSocksConformance(t *testing.T) {
|
func TestSocksConformanceMod(t *testing.T) {
|
||||||
tcpServer := tcp.Server{
|
tcpServer := tcp.Server{
|
||||||
MsgProcessor: xor,
|
MsgProcessor: xor,
|
||||||
}
|
}
|
||||||
|
@ -348,7 +348,7 @@ func TestSocksConformance(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
dialer := socks4.DialSocksProxy(socks4.SOCKS4, net.TCPDestination(net.LocalHostIP, noAuthPort).NetAddr())
|
dialer := socks4.Dial("socks4://" + net.TCPDestination(net.LocalHostIP, noAuthPort).NetAddr())
|
||||||
conn, err := dialer("tcp", dest.NetAddr())
|
conn, err := dialer("tcp", dest.NetAddr())
|
||||||
common.Must(err)
|
common.Must(err)
|
||||||
defer conn.Close()
|
defer conn.Close()
|
||||||
|
@ -359,8 +359,8 @@ func TestSocksConformance(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
dialer := socks4.DialSocksProxy(socks4.SOCKS4A, net.TCPDestination(net.LocalHostIP, noAuthPort).NetAddr())
|
dialer := socks4.Dial("socks4://" + net.TCPDestination(net.LocalHostIP, noAuthPort).NetAddr())
|
||||||
conn, err := dialer("tcp", net.TCPDestination(net.LocalHostDomain, tcpServer.Port).NetAddr())
|
conn, err := dialer("tcp", net.TCPDestination(net.LocalHostIP, tcpServer.Port).NetAddr())
|
||||||
common.Must(err)
|
common.Must(err)
|
||||||
defer conn.Close()
|
defer conn.Close()
|
||||||
|
|
||||||
|
|
|
@ -12,14 +12,14 @@ type Connection interface {
|
||||||
|
|
||||||
type StatCouterConnection struct {
|
type StatCouterConnection struct {
|
||||||
Connection
|
Connection
|
||||||
Uplink stats.Counter
|
ReadCounter stats.Counter
|
||||||
Downlink stats.Counter
|
WriteCounter stats.Counter
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *StatCouterConnection) Read(b []byte) (int, error) {
|
func (c *StatCouterConnection) Read(b []byte) (int, error) {
|
||||||
nBytes, err := c.Connection.Read(b)
|
nBytes, err := c.Connection.Read(b)
|
||||||
if c.Uplink != nil {
|
if c.ReadCounter != nil {
|
||||||
c.Uplink.Add(int64(nBytes))
|
c.ReadCounter.Add(int64(nBytes))
|
||||||
}
|
}
|
||||||
|
|
||||||
return nBytes, err
|
return nBytes, err
|
||||||
|
@ -27,8 +27,8 @@ func (c *StatCouterConnection) Read(b []byte) (int, error) {
|
||||||
|
|
||||||
func (c *StatCouterConnection) Write(b []byte) (int, error) {
|
func (c *StatCouterConnection) Write(b []byte) (int, error) {
|
||||||
nBytes, err := c.Connection.Write(b)
|
nBytes, err := c.Connection.Write(b)
|
||||||
if c.Downlink != nil {
|
if c.WriteCounter != nil {
|
||||||
c.Downlink.Add(int64(nBytes))
|
c.WriteCounter.Add(int64(nBytes))
|
||||||
}
|
}
|
||||||
return nBytes, err
|
return nBytes, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,6 +27,9 @@ var upgrader = &websocket.Upgrader{
|
||||||
ReadBufferSize: 4 * 1024,
|
ReadBufferSize: 4 * 1024,
|
||||||
WriteBufferSize: 4 * 1024,
|
WriteBufferSize: 4 * 1024,
|
||||||
HandshakeTimeout: time.Second * 4,
|
HandshakeTimeout: time.Second * 4,
|
||||||
|
CheckOrigin: func(r *http.Request) bool {
|
||||||
|
return true
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *requestHandler) ServeHTTP(writer http.ResponseWriter, request *http.Request) {
|
func (h *requestHandler) ServeHTTP(writer http.ResponseWriter, request *http.Request) {
|
||||||
|
|
Loading…
Reference in New Issue