Skip to content

Commit

Permalink
build: migrate from github.com/golang/protobuf to google.golang.org/p…
Browse files Browse the repository at this point in the history
…rotobuf
  • Loading branch information
yin1999 committed Jan 7, 2024
1 parent 458db39 commit 5457ddb
Show file tree
Hide file tree
Showing 58 changed files with 155 additions and 154 deletions.
2 changes: 1 addition & 1 deletion app/observatory/burst/burstobserver.go
Expand Up @@ -4,7 +4,7 @@ import (
"context"
"sync"

"github.com/golang/protobuf/proto"
"google.golang.org/protobuf/proto"

core "github.com/v2fly/v2ray-core/v5"
"github.com/v2fly/v2ray-core/v5/app/observatory"
Expand Down
2 changes: 1 addition & 1 deletion app/observatory/command/command.go
Expand Up @@ -8,8 +8,8 @@ package command
import (
"context"

"github.com/golang/protobuf/proto"
"google.golang.org/grpc"
"google.golang.org/protobuf/proto"

core "github.com/v2fly/v2ray-core/v5"
"github.com/v2fly/v2ray-core/v5/app/observatory"
Expand Down
6 changes: 3 additions & 3 deletions app/observatory/multiobservatory/multi.go
Expand Up @@ -3,8 +3,8 @@ package multiobservatory
import (
"context"

"github.com/golang/protobuf/jsonpb"
"github.com/golang/protobuf/proto"
"google.golang.org/protobuf/encoding/protojson"
"google.golang.org/protobuf/proto"

"github.com/v2fly/v2ray-core/v5/common"
"github.com/v2fly/v2ray-core/v5/common/taggedfeatures"
Expand Down Expand Up @@ -34,7 +34,7 @@ func New(ctx context.Context, config *Config) (*Observer, error) {
return &Observer{config: config, ctx: ctx, TaggedFeatures: holder}, nil
}

func (x *Config) UnmarshalJSONPB(unmarshaler *jsonpb.Unmarshaler, bytes []byte) error {
func (x *Config) UnmarshalJSONPB(unmarshaler *protojson.UnmarshalOptions, bytes []byte) error {
var err error
x.Holders, err = taggedfeatures.LoadJSONConfig(context.TODO(), "service", "background", bytes)
return err
Expand Down
2 changes: 1 addition & 1 deletion app/observatory/observer.go
Expand Up @@ -12,7 +12,7 @@ import (
"sync"
"time"

"github.com/golang/protobuf/proto"
"google.golang.org/protobuf/proto"

core "github.com/v2fly/v2ray-core/v5"
"github.com/v2fly/v2ray-core/v5/common"
Expand Down
4 changes: 2 additions & 2 deletions app/router/config.go
Expand Up @@ -7,7 +7,7 @@ import (
"context"
"encoding/json"

"github.com/golang/protobuf/jsonpb"
"google.golang.org/protobuf/encoding/protojson"

"github.com/v2fly/v2ray-core/v5/app/router/routercommon"
"github.com/v2fly/v2ray-core/v5/common/net"
Expand Down Expand Up @@ -174,7 +174,7 @@ func (br *BalancingRule) Build(ohm outbound.Manager, dispatcher routing.Dispatch
}
}

func (br *BalancingRule) UnmarshalJSONPB(unmarshaler *jsonpb.Unmarshaler, bytes []byte) error {
func (br *BalancingRule) UnmarshalJSONPB(unmarshaler *protojson.UnmarshalOptions, bytes []byte) error {
type BalancingRuleStub struct {
Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"`
OutboundSelector []string `protobuf:"bytes,2,rep,name=outbound_selector,json=outboundSelector,proto3" json:"outbound_selector,omitempty"`
Expand Down
2 changes: 1 addition & 1 deletion app/router/strategy_leastload.go
Expand Up @@ -6,7 +6,7 @@ import (
"sort"
"time"

"github.com/golang/protobuf/proto"
"google.golang.org/protobuf/proto"

core "github.com/v2fly/v2ray-core/v5"
"github.com/v2fly/v2ray-core/v5/app/observatory"
Expand Down
2 changes: 1 addition & 1 deletion app/subscription/specs/outbound_parser.go
Expand Up @@ -5,7 +5,7 @@ import (
"context"
"encoding/json"

"github.com/golang/protobuf/proto"
"google.golang.org/protobuf/proto"

"github.com/v2fly/v2ray-core/v5/common/registry"
"github.com/v2fly/v2ray-core/v5/common/serial"
Expand Down
4 changes: 2 additions & 2 deletions common/net/address.go
Expand Up @@ -6,7 +6,7 @@ import (
"net"
"strings"

"github.com/golang/protobuf/jsonpb"
"google.golang.org/protobuf/encoding/protojson"
)

var (
Expand Down Expand Up @@ -212,7 +212,7 @@ func NewIPOrDomain(addr Address) *IPOrDomain {
}
}

func (d *IPOrDomain) UnmarshalJSONPB(unmarshaler *jsonpb.Unmarshaler, bytes []byte) error {
func (d *IPOrDomain) UnmarshalJSONPB(unmarshaler *protojson.UnmarshalOptions, bytes []byte) error {
var ipOrDomain string
if err := json.Unmarshal(bytes, &ipOrDomain); err != nil {
return err
Expand Down
4 changes: 2 additions & 2 deletions common/net/network.go
Expand Up @@ -4,7 +4,7 @@ import (
"encoding/json"
"strings"

"github.com/golang/protobuf/jsonpb"
"google.golang.org/protobuf/encoding/protojson"
)

func (n Network) SystemString() string {
Expand All @@ -20,7 +20,7 @@ func (n Network) SystemString() string {
}
}

func (nl *NetworkList) UnmarshalJSONPB(unmarshaler *jsonpb.Unmarshaler, bytes []byte) error {
func (nl *NetworkList) UnmarshalJSONPB(unmarshaler *protojson.UnmarshalOptions, bytes []byte) error {
var networkStrList []string
if err := json.Unmarshal(bytes, &networkStrList); err == nil {
nl.Network = ParseNetworkStringList(networkStrList)
Expand Down
12 changes: 3 additions & 9 deletions common/protoext/extensions.go
@@ -1,7 +1,7 @@
package protoext

import (
"github.com/golang/protobuf/proto"
"google.golang.org/protobuf/proto"
"google.golang.org/protobuf/reflect/protoreflect"
"google.golang.org/protobuf/types/descriptorpb"
)
Expand All @@ -10,18 +10,12 @@ import (

func GetMessageOptions(msgDesc protoreflect.MessageDescriptor) (*MessageOpt, error) {
msgOpt := msgDesc.Options().(*descriptorpb.MessageOptions)
msgOptRet, err := proto.GetExtension(msgOpt, E_MessageOpt)
if err != nil {
return nil, newError("unable to parse extension from message").Base(err)
}
msgOptRet := proto.GetExtension(msgOpt, E_MessageOpt)
return msgOptRet.(*MessageOpt), nil
}

func GetFieldOptions(fieldDesc protoreflect.FieldDescriptor) (*FieldOpt, error) {
fieldOpt := fieldDesc.Options().(*descriptorpb.FieldOptions)
msgOptRet, err := proto.GetExtension(fieldOpt, E_FieldOpt)
if err != nil {
return nil, newError("unable to parse extension from message").Base(err)
}
msgOptRet := proto.GetExtension(fieldOpt, E_FieldOpt)
return msgOptRet.(*FieldOpt), nil
}
2 changes: 1 addition & 1 deletion common/registry/implementation_set.go
@@ -1,7 +1,7 @@
package registry

import (
"github.com/golang/protobuf/proto"
"google.golang.org/protobuf/proto"

"github.com/v2fly/v2ray-core/v5/common/protoext"
)
Expand Down
28 changes: 16 additions & 12 deletions common/registry/registry.go
@@ -1,15 +1,13 @@
package registry

import (
"bytes"
"context"
"reflect"
"strings"
"sync"

"github.com/golang/protobuf/jsonpb"
"github.com/golang/protobuf/proto"
protov2 "google.golang.org/protobuf/proto"
"google.golang.org/protobuf/encoding/protojson"
"google.golang.org/protobuf/proto"

"github.com/v2fly/v2ray-core/v5/common/protoext"
"github.com/v2fly/v2ray-core/v5/common/protofilter"
Expand Down Expand Up @@ -65,14 +63,17 @@ func (i *implementationRegistry) LoadImplementationByAlias(ctx context.Context,
return nil, newError("unable to create implementation config instance").Base(err)
}

unmarshaler := jsonpb.Unmarshaler{AllowUnknownFields: false}
err = unmarshaler.Unmarshal(bytes.NewReader(data), implementationConfigInstance.(proto.Message))
implementationConfigInstancev2, ok := implementationConfigInstance.(proto.Message)
if !ok {
return nil, newError("unable to cast implementation config instance to proto.Message")
}

unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: false}
err = unmarshaler.Unmarshal(data, implementationConfigInstancev2)
if err != nil {
return nil, newError("unable to parse json content").Base(err)
}

implementationConfigInstancev2 := proto.MessageV2(implementationConfigInstance)

if isRestrictedModeContext(ctx) {
if err := enforceRestriction(implementationConfigInstancev2); err != nil {
return nil, err
Expand All @@ -83,7 +84,7 @@ func (i *implementationRegistry) LoadImplementationByAlias(ctx context.Context,
return nil, err
}

return implementationConfigInstance.(proto.Message), nil
return implementationConfigInstancev2, nil
}

func newImplementationRegistry() *implementationRegistry {
Expand Down Expand Up @@ -111,9 +112,12 @@ func RegisterImplementation(proto interface{}, loader CustomLoader) error {
return nil
}

func registerImplementation(proto interface{}, loader CustomLoader) error {
protoReflect := reflect.New(reflect.TypeOf(proto).Elem())
proto2 := protoReflect.Interface().(protov2.Message)
func registerImplementation(protoMsg interface{}, loader CustomLoader) error {
protoReflect := reflect.New(reflect.TypeOf(protoMsg).Elem())
proto2, ok := protoReflect.Interface().(proto.Message)
if !ok {
return newError("unable to cast proto to proto.Message")
}
msgDesc := proto2.ProtoReflect().Descriptor()
fullName := string(msgDesc.FullName())
msgOpts, err := protoext.GetMessageOptions(msgDesc)
Expand Down
26 changes: 18 additions & 8 deletions common/serial/resolver.go
@@ -1,21 +1,31 @@
package serial

import (
"github.com/golang/protobuf/proto"
"google.golang.org/protobuf/reflect/protoreflect"
"google.golang.org/protobuf/reflect/protoregistry"
)

type AnyResolver interface {
Resolve(typeURL string) (proto.Message, error)
protoregistry.MessageTypeResolver
protoregistry.ExtensionTypeResolver
}

type serialResolver struct{}

func (s serialResolver) Resolve(typeURL string) (proto.Message, error) {
instance, err := GetInstance(typeURL)
if err != nil {
return nil, err
}
return instance.(proto.Message), nil
func (s serialResolver) FindMessageByName(messageName protoreflect.FullName) (protoreflect.MessageType, error) {
return protoregistry.GlobalTypes.FindMessageByName(messageName)
}

func (s serialResolver) FindMessageByURL(url string) (protoreflect.MessageType, error) {
return protoregistry.GlobalTypes.FindMessageByURL(url)
}

func (s serialResolver) FindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error) {
return protoregistry.GlobalTypes.FindExtensionByName(field)
}

func (s serialResolver) FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error) {
return protoregistry.GlobalTypes.FindExtensionByNumber(message, field)
}

func GetResolver() AnyResolver {
Expand Down
15 changes: 9 additions & 6 deletions common/serial/typed_message.go
Expand Up @@ -2,10 +2,11 @@ package serial

import (
"errors"
"reflect"
"strings"

"github.com/golang/protobuf/proto"
"google.golang.org/protobuf/proto"
"google.golang.org/protobuf/reflect/protoreflect"
"google.golang.org/protobuf/reflect/protoregistry"
"google.golang.org/protobuf/types/known/anypb"
)

Expand All @@ -25,16 +26,18 @@ func ToTypedMessage(message proto.Message) *anypb.Any {

// GetMessageType returns the name of this proto Message.
func GetMessageType(message proto.Message) string {
return proto.MessageName(message)
return string(message.ProtoReflect().Descriptor().FullName())
}

// GetInstance creates a new instance of the message with messageType.
func GetInstance(messageType string) (interface{}, error) {
mType := proto.MessageType(messageType)
if mType == nil || mType.Elem() == nil {
// mType := proto.MessageType(messageType)
mType, err := protoregistry.GlobalTypes.FindMessageByName(protoreflect.FullName(messageType))
if err != nil {
return nil, errors.New("Serial: Unknown type: " + messageType)
}
return reflect.New(mType.Elem()).Interface(), nil

return mType.New().Interface(), nil
}

func GetInstanceOf(v *anypb.Any) (proto.Message, error) {
Expand Down
2 changes: 1 addition & 1 deletion features/extension/observatory.go
Expand Up @@ -3,7 +3,7 @@ package extension
import (
"context"

"github.com/golang/protobuf/proto"
"google.golang.org/protobuf/proto"

"github.com/v2fly/v2ray-core/v5/features"
)
Expand Down
4 changes: 1 addition & 3 deletions go.mod
Expand Up @@ -8,11 +8,9 @@ require (
github.com/go-chi/render v1.0.3
github.com/go-playground/validator/v10 v10.16.0
github.com/golang/mock v1.6.0
github.com/golang/protobuf v1.5.3
github.com/google/go-cmp v0.6.0
github.com/google/gopacket v1.1.19
github.com/gorilla/websocket v1.5.1
github.com/jhump/protoreflect v1.15.3
github.com/lunixbochs/struc v0.0.0-20200707160740-784aaebc1d40
github.com/miekg/dns v1.1.57
github.com/mustafaturan/bus v1.0.2
Expand Down Expand Up @@ -47,7 +45,6 @@ require (
github.com/ajg/form v1.5.1 // indirect
github.com/andybalholm/brotli v1.0.5 // indirect
github.com/boljen/go-bitmap v0.0.0-20151001105940-23cd2fb0ce7d // indirect
github.com/bufbuild/protocompile v0.6.0 // indirect
github.com/cloudflare/circl v1.3.3 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/dgryski/go-metro v0.0.0-20211217172704-adc40b04c140 // indirect
Expand All @@ -57,6 +54,7 @@ require (
github.com/go-playground/locales v0.14.1 // indirect
github.com/go-playground/universal-translator v0.18.1 // indirect
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect
github.com/golang/protobuf v1.5.3 // indirect
github.com/google/btree v1.1.2 // indirect
github.com/google/pprof v0.0.0-20230602150820-91b7bce49751 // indirect
github.com/klauspost/compress v1.16.7 // indirect
Expand Down
4 changes: 0 additions & 4 deletions go.sum
Expand Up @@ -34,8 +34,6 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB
github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84=
github.com/boljen/go-bitmap v0.0.0-20151001105940-23cd2fb0ce7d h1:zsO4lp+bjv5XvPTF58Vq+qgmZEYZttJK+CWtSZhKenI=
github.com/boljen/go-bitmap v0.0.0-20151001105940-23cd2fb0ce7d/go.mod h1:f1iKL6ZhUWvbk7PdWVmOaak10o86cqMUYEmn1CZNGEI=
github.com/bufbuild/protocompile v0.6.0 h1:Uu7WiSQ6Yj9DbkdnOe7U4mNKp58y9WDMKDn28/ZlunY=
github.com/bufbuild/protocompile v0.6.0/go.mod h1:YNP35qEYoYGme7QMtz5SBCoN4kL4g12jTtjuzRNdjpE=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
Expand Down Expand Up @@ -168,8 +166,6 @@ github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0m
github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I=
github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc=
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
github.com/jhump/protoreflect v1.15.3 h1:6SFRuqU45u9hIZPJAoZ8c28T3nK64BNdp9w6jFonzls=
github.com/jhump/protoreflect v1.15.3/go.mod h1:4ORHmSBmlCW8fh3xHmJMGyul1zNqZK4Elxc8qKP+p1k=
github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
Expand Down
2 changes: 1 addition & 1 deletion infra/conf/cfgcommon/buildable.go
Expand Up @@ -3,7 +3,7 @@ package cfgcommon
import (
"context"

"github.com/golang/protobuf/proto"
"google.golang.org/protobuf/proto"
)

type Buildable interface {
Expand Down
2 changes: 1 addition & 1 deletion infra/conf/cfgcommon/testassist/general.go
Expand Up @@ -4,7 +4,7 @@ import (
"encoding/json"
"testing"

"github.com/golang/protobuf/proto"
"google.golang.org/protobuf/proto"

"github.com/v2fly/v2ray-core/v5/common"
"github.com/v2fly/v2ray-core/v5/infra/conf/cfgcommon"
Expand Down
2 changes: 1 addition & 1 deletion infra/conf/cfgcommon/tlscfg/tls.go
Expand Up @@ -4,7 +4,7 @@ import (
"encoding/base64"
"strings"

"github.com/golang/protobuf/proto"
"google.golang.org/protobuf/proto"

"github.com/v2fly/v2ray-core/v5/common/platform/filesystem"
"github.com/v2fly/v2ray-core/v5/infra/conf/cfgcommon"
Expand Down

0 comments on commit 5457ddb

Please sign in to comment.