containers.go 719 B

12345678910111213141516171819202122232425262728
  1. package containers
  2. //go:generate go run github.com/v2fly/v2ray-core/v5/common/errors/errorgen
  3. type UnparsedServerConf struct {
  4. KindHint string
  5. Content []byte
  6. }
  7. type Container struct {
  8. Kind string
  9. Metadata map[string]string
  10. ServerSpecs []UnparsedServerConf
  11. }
  12. type SubscriptionContainerDocumentParser interface {
  13. ParseSubscriptionContainerDocument(rawConfig []byte) (*Container, error)
  14. }
  15. var knownParsers = make(map[string]SubscriptionContainerDocumentParser)
  16. func RegisterParser(kind string, parser SubscriptionContainerDocumentParser) error {
  17. if _, found := knownParsers[kind]; found {
  18. return newError("parser already registered for kind ", kind)
  19. }
  20. knownParsers[kind] = parser
  21. return nil
  22. }