init.go 878 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package v5cfg
  2. import (
  3. core "github.com/v2fly/v2ray-core/v4"
  4. "github.com/v2fly/v2ray-core/v4/common"
  5. "github.com/v2fly/v2ray-core/v4/common/buf"
  6. "github.com/v2fly/v2ray-core/v4/common/cmdarg"
  7. "io"
  8. )
  9. const jsonV5 = "jsonv5"
  10. func init() {
  11. common.Must(core.RegisterConfigLoader(&core.ConfigFormat{
  12. Name: []string{jsonV5},
  13. Extension: []string{".v5.json"},
  14. Loader: func(input interface{}) (*core.Config, error) {
  15. switch v := input.(type) {
  16. case string:
  17. r, err := cmdarg.LoadArg(v)
  18. if err != nil {
  19. return nil, err
  20. }
  21. data, err := buf.ReadAllToBytes(r)
  22. if err != nil {
  23. return nil, err
  24. }
  25. return loadJsonConfig(data)
  26. case io.Reader:
  27. data, err := buf.ReadAllToBytes(v)
  28. if err != nil {
  29. return nil, err
  30. }
  31. return loadJsonConfig(data)
  32. default:
  33. return nil, newError("unknown type")
  34. }
  35. },
  36. }))
  37. }