mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-04-16 12:35:54 +00:00
1. **Fixed XPadding Placement Dropdown**: - Added the missing `cookie` and `query` options to `xPaddingPlacement` (`stream_xhttp.html`). - *Why:* Previously, users wanting `cookie` obfuscation were forced to use the `header` placement string. This caused Xray-core to blindly intercept the entire monolithic HTTP Cookie header, failing internal padding-length validations and causing the inbound to silently drop the connection. 2. **Fixed Uplink Data Placement Validation**: - Replaced the unsupported `query` option with `cookie` in `uplinkDataPlacement`. - *Why:* Xray-core's `transport_internet.go` explicitly forbids `query` as an uplink placement option. Selecting it from the UI previously sent a payload that would cause Xray-core to instantly throw an `unsupported uplink data placement: query` panic. Adding `cookie` perfectly aligns the UI with Xray-core restrictions. ### Related Issues - Resolves #3992
259 lines
7.6 KiB
Go
259 lines
7.6 KiB
Go
// Code generated by protoc-gen-go. DO NOT EDIT.
|
|
// versions:
|
|
// protoc-gen-go v1.36.11
|
|
// protoc v6.33.5
|
|
// source: proxy/vless/account.proto
|
|
|
|
package vless
|
|
|
|
import (
|
|
proxyman "github.com/xtls/xray-core/app/proxyman"
|
|
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
|
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
|
reflect "reflect"
|
|
sync "sync"
|
|
unsafe "unsafe"
|
|
)
|
|
|
|
const (
|
|
// Verify that this generated code is sufficiently up-to-date.
|
|
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
|
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
|
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
|
)
|
|
|
|
type Reverse struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"`
|
|
Sniffing *proxyman.SniffingConfig `protobuf:"bytes,2,opt,name=sniffing,proto3" json:"sniffing,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *Reverse) Reset() {
|
|
*x = Reverse{}
|
|
mi := &file_proxy_vless_account_proto_msgTypes[0]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *Reverse) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*Reverse) ProtoMessage() {}
|
|
|
|
func (x *Reverse) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proxy_vless_account_proto_msgTypes[0]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use Reverse.ProtoReflect.Descriptor instead.
|
|
func (*Reverse) Descriptor() ([]byte, []int) {
|
|
return file_proxy_vless_account_proto_rawDescGZIP(), []int{0}
|
|
}
|
|
|
|
func (x *Reverse) GetTag() string {
|
|
if x != nil {
|
|
return x.Tag
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *Reverse) GetSniffing() *proxyman.SniffingConfig {
|
|
if x != nil {
|
|
return x.Sniffing
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type Account struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
// ID of the account, in the form of a UUID, e.g., "66ad4540-b58c-4ad2-9926-ea63445a9b57".
|
|
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
|
|
// Flow settings. May be "xtls-rprx-vision".
|
|
Flow string `protobuf:"bytes,2,opt,name=flow,proto3" json:"flow,omitempty"`
|
|
Encryption string `protobuf:"bytes,3,opt,name=encryption,proto3" json:"encryption,omitempty"`
|
|
XorMode uint32 `protobuf:"varint,4,opt,name=xorMode,proto3" json:"xorMode,omitempty"`
|
|
Seconds uint32 `protobuf:"varint,5,opt,name=seconds,proto3" json:"seconds,omitempty"`
|
|
Padding string `protobuf:"bytes,6,opt,name=padding,proto3" json:"padding,omitempty"`
|
|
Reverse *Reverse `protobuf:"bytes,7,opt,name=reverse,proto3" json:"reverse,omitempty"`
|
|
Testpre uint32 `protobuf:"varint,8,opt,name=testpre,proto3" json:"testpre,omitempty"`
|
|
Testseed []uint32 `protobuf:"varint,9,rep,packed,name=testseed,proto3" json:"testseed,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *Account) Reset() {
|
|
*x = Account{}
|
|
mi := &file_proxy_vless_account_proto_msgTypes[1]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *Account) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*Account) ProtoMessage() {}
|
|
|
|
func (x *Account) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proxy_vless_account_proto_msgTypes[1]
|
|
if x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use Account.ProtoReflect.Descriptor instead.
|
|
func (*Account) Descriptor() ([]byte, []int) {
|
|
return file_proxy_vless_account_proto_rawDescGZIP(), []int{1}
|
|
}
|
|
|
|
func (x *Account) GetId() string {
|
|
if x != nil {
|
|
return x.Id
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *Account) GetFlow() string {
|
|
if x != nil {
|
|
return x.Flow
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *Account) GetEncryption() string {
|
|
if x != nil {
|
|
return x.Encryption
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *Account) GetXorMode() uint32 {
|
|
if x != nil {
|
|
return x.XorMode
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *Account) GetSeconds() uint32 {
|
|
if x != nil {
|
|
return x.Seconds
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *Account) GetPadding() string {
|
|
if x != nil {
|
|
return x.Padding
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *Account) GetReverse() *Reverse {
|
|
if x != nil {
|
|
return x.Reverse
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *Account) GetTestpre() uint32 {
|
|
if x != nil {
|
|
return x.Testpre
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *Account) GetTestseed() []uint32 {
|
|
if x != nil {
|
|
return x.Testseed
|
|
}
|
|
return nil
|
|
}
|
|
|
|
var File_proxy_vless_account_proto protoreflect.FileDescriptor
|
|
|
|
const file_proxy_vless_account_proto_rawDesc = "" +
|
|
"\n" +
|
|
"\x19proxy/vless/account.proto\x12\x10xray.proxy.vless\x1a\x19app/proxyman/config.proto\"Z\n" +
|
|
"\aReverse\x12\x10\n" +
|
|
"\x03tag\x18\x01 \x01(\tR\x03tag\x12=\n" +
|
|
"\bsniffing\x18\x02 \x01(\v2!.xray.app.proxyman.SniffingConfigR\bsniffing\"\x86\x02\n" +
|
|
"\aAccount\x12\x0e\n" +
|
|
"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
|
|
"\x04flow\x18\x02 \x01(\tR\x04flow\x12\x1e\n" +
|
|
"\n" +
|
|
"encryption\x18\x03 \x01(\tR\n" +
|
|
"encryption\x12\x18\n" +
|
|
"\axorMode\x18\x04 \x01(\rR\axorMode\x12\x18\n" +
|
|
"\aseconds\x18\x05 \x01(\rR\aseconds\x12\x18\n" +
|
|
"\apadding\x18\x06 \x01(\tR\apadding\x123\n" +
|
|
"\areverse\x18\a \x01(\v2\x19.xray.proxy.vless.ReverseR\areverse\x12\x18\n" +
|
|
"\atestpre\x18\b \x01(\rR\atestpre\x12\x1a\n" +
|
|
"\btestseed\x18\t \x03(\rR\btestseedBR\n" +
|
|
"\x14com.xray.proxy.vlessP\x01Z%github.com/xtls/xray-core/proxy/vless\xaa\x02\x10Xray.Proxy.Vlessb\x06proto3"
|
|
|
|
var (
|
|
file_proxy_vless_account_proto_rawDescOnce sync.Once
|
|
file_proxy_vless_account_proto_rawDescData []byte
|
|
)
|
|
|
|
func file_proxy_vless_account_proto_rawDescGZIP() []byte {
|
|
file_proxy_vless_account_proto_rawDescOnce.Do(func() {
|
|
file_proxy_vless_account_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_proxy_vless_account_proto_rawDesc), len(file_proxy_vless_account_proto_rawDesc)))
|
|
})
|
|
return file_proxy_vless_account_proto_rawDescData
|
|
}
|
|
|
|
var file_proxy_vless_account_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
|
|
var file_proxy_vless_account_proto_goTypes = []any{
|
|
(*Reverse)(nil), // 0: xray.proxy.vless.Reverse
|
|
(*Account)(nil), // 1: xray.proxy.vless.Account
|
|
(*proxyman.SniffingConfig)(nil), // 2: xray.app.proxyman.SniffingConfig
|
|
}
|
|
var file_proxy_vless_account_proto_depIdxs = []int32{
|
|
2, // 0: xray.proxy.vless.Reverse.sniffing:type_name -> xray.app.proxyman.SniffingConfig
|
|
0, // 1: xray.proxy.vless.Account.reverse:type_name -> xray.proxy.vless.Reverse
|
|
2, // [2:2] is the sub-list for method output_type
|
|
2, // [2:2] is the sub-list for method input_type
|
|
2, // [2:2] is the sub-list for extension type_name
|
|
2, // [2:2] is the sub-list for extension extendee
|
|
0, // [0:2] is the sub-list for field type_name
|
|
}
|
|
|
|
func init() { file_proxy_vless_account_proto_init() }
|
|
func file_proxy_vless_account_proto_init() {
|
|
if File_proxy_vless_account_proto != nil {
|
|
return
|
|
}
|
|
type x struct{}
|
|
out := protoimpl.TypeBuilder{
|
|
File: protoimpl.DescBuilder{
|
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
|
RawDescriptor: unsafe.Slice(unsafe.StringData(file_proxy_vless_account_proto_rawDesc), len(file_proxy_vless_account_proto_rawDesc)),
|
|
NumEnums: 0,
|
|
NumMessages: 2,
|
|
NumExtensions: 0,
|
|
NumServices: 0,
|
|
},
|
|
GoTypes: file_proxy_vless_account_proto_goTypes,
|
|
DependencyIndexes: file_proxy_vless_account_proto_depIdxs,
|
|
MessageInfos: file_proxy_vless_account_proto_msgTypes,
|
|
}.Build()
|
|
File_proxy_vless_account_proto = out.File
|
|
file_proxy_vless_account_proto_goTypes = nil
|
|
file_proxy_vless_account_proto_depIdxs = nil
|
|
}
|