1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2025-01-29 04:37:06 -05:00

support v4 json pb output

This commit is contained in:
Shelikhoo 2021-06-19 15:09:13 +01:00
parent 2df4fa39e3
commit 28c36019b2
No known key found for this signature in database
GPG Key ID: C4D5E79D22B25316
2 changed files with 23 additions and 2 deletions

View File

@ -37,11 +37,11 @@ func DumpJsonPb(config proto.Message, w io.Writer) error {
return dumpJsonPb(config, w) return dumpJsonPb(config, w)
} }
const FormatProtobufJSON = "jsonpb" const FormatProtobufJSONPB = "jsonpb"
func init() { func init() {
common.Must(core.RegisterConfigLoader(&core.ConfigFormat{ common.Must(core.RegisterConfigLoader(&core.ConfigFormat{
Name: []string{FormatProtobufJSON}, Name: []string{FormatProtobufJSONPB},
Extension: []string{".pb.json", ".pbjson"}, Extension: []string{".pb.json", ".pbjson"},
Loader: func(input interface{}) (*core.Config, error) { Loader: func(input interface{}) (*core.Config, error) {
switch v := input.(type) { switch v := input.(type) {

View File

@ -3,6 +3,7 @@ package jsonv4
import ( import (
"bytes" "bytes"
"encoding/json" "encoding/json"
"github.com/v2fly/v2ray-core/v4/infra/conf/jsonpb"
"os" "os"
"strings" "strings"
@ -123,6 +124,26 @@ func executeConvert(cmd *base.Command, args []string) {
if err != nil { if err != nil {
base.Fatalf("failed to convert to protobuf: %s", err) base.Fatalf("failed to convert to protobuf: %s", err)
} }
case jsonpb.FormatProtobufJSONPB:
data, err := json.Marshal(m)
if err != nil {
base.Fatalf("failed to marshal json: %s", err)
}
r := bytes.NewReader(data)
cf, err := serial.DecodeJSONConfig(r)
if err != nil {
base.Fatalf("failed to decode json: %s", err)
}
pbConfig, err := cf.Build()
if err != nil {
base.Fatalf(err.Error())
}
w := bytes.NewBuffer(nil)
err = jsonpb.DumpJsonPb(pbConfig, w)
if err != nil {
base.Fatalf(err.Error())
}
out = w.Bytes()
default: default:
base.Errorf("invalid output format: %s", outputFormat) base.Errorf("invalid output format: %s", outputFormat)
base.Errorf("Run '%s help %s' for details.", base.CommandEnv.Exec, cmd.LongName()) base.Errorf("Run '%s help %s' for details.", base.CommandEnv.Exec, cmd.LongName())