diff --git a/option/subscription.go b/option/subscription.go index b7c5a9b6..30765923 100644 --- a/option/subscription.go +++ b/option/subscription.go @@ -1,8 +1,9 @@ package option type SubscriptionServiceOptions struct { - Interval Duration `json:"interval,omitempty"` - Providers []SubscriptionProviderOptions `json:"providers"` + Interval Duration `json:"interval,omitempty"` + DownloadDetour string `json:"download_detour,omitempty"` + Providers []SubscriptionProviderOptions `json:"providers"` DialerOptions } diff --git a/service/default.go b/service/default.go new file mode 100644 index 00000000..1868b229 --- /dev/null +++ b/service/default.go @@ -0,0 +1,21 @@ +package service + +import ( + "github.com/sagernet/sing-box/adapter" + "github.com/sagernet/sing-box/log" +) + +type myServiceAdapter struct { + serviceType string + router adapter.Router + logger log.ContextLogger + tag string +} + +func (a *myServiceAdapter) Type() string { + return a.serviceType +} + +func (a *myServiceAdapter) Tag() string { + return a.tag +} diff --git a/service/subscription.go b/service/subscription.go index bfa2987e..8cb869af 100644 --- a/service/subscription.go +++ b/service/subscription.go @@ -2,10 +2,33 @@ package service import ( "github.com/sagernet/sing-box/adapter" + C "github.com/sagernet/sing-box/constant" "github.com/sagernet/sing-box/log" "github.com/sagernet/sing-box/option" ) -func NewSubscription(router adapter.Router, logger log.ContextLogger, options option.Service) (adapter.BoxService, error) { - panic("not implemented") +var _ adapter.BoxService = (*Subscription)(nil) + +// Subscription is a service that subscribes to remote servers for outbounds. +type Subscription struct { + myServiceAdapter +} + +func NewSubscription(router adapter.Router, logger log.ContextLogger, options option.Service) (*Subscription, error) { + return &Subscription{ + myServiceAdapter{ + router: router, + serviceType: C.ServiceSubscription, + logger: logger, + tag: options.Tag, + }, + }, nil +} + +func (s *Subscription) Start() error { + panic("implement me") +} + +func (s *Subscription) Close() error { + panic("implement me") }