Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 1 addition & 4 deletions server/profile.go
Original file line number Diff line number Diff line change
Expand Up @@ -159,13 +159,10 @@ func (p *Profile) Render(metadata metadata.Metadata) (*boxOption.Options, error)
if metadata.Version == nil || metadata.Version.LessThan(semver.ParseVersion("1.12.0-alpha.1")) {
ctx = boxOption.ContextWithDontUpgrade(ctx)
}
options, err := selectedTemplate.Render(ctx, metadata, p.Name, outbounds, subscriptions)
options, err := selectedTemplate.Render(ctx, metadata, p.Name, endpoints, outbounds, subscriptions)
if err != nil {
return nil, err
}
if metadata.Version != nil && metadata.Version.GreaterThanOrEqual(semver.ParseVersion("1.12.0-alpha.1")) {
options.Endpoints = endpoints
}
options, err = badjson.Omitempty(ctx, options)
if err != nil {
return nil, E.Cause(err, "omitempty")
Expand Down
8 changes: 6 additions & 2 deletions template/filter/filter_null_references.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@ func filterNullGroupReference(metadata M.Metadata, options *option.Options) erro
outboundTags := common.Map(options.Outbounds, func(it option.Outbound) string {
return it.Tag
})
endpointTags := common.Map(options.Endpoints, func(it option.Endpoint) string {
return it.Tag
})
routingTargets := append(outboundTags, endpointTags...)
for _, outbound := range options.Outbounds {
switch outboundOptions := outbound.Options.(type) {
case *option.SelectorOutboundOptions:
Expand All @@ -35,12 +39,12 @@ func filterNullGroupReference(metadata M.Metadata, options *option.Options) erro
if it.DefaultOptions.Action != C.RuleActionTypeRoute {
return true
}
return common.Contains(outboundTags, it.DefaultOptions.RouteOptions.Outbound)
return common.Contains(routingTargets, it.DefaultOptions.RouteOptions.Outbound)
case C.RuleTypeLogical:
if it.LogicalOptions.Action != C.RuleActionTypeRoute {
return true
}
return common.Contains(outboundTags, it.LogicalOptions.RouteOptions.Outbound)
return common.Contains(routingTargets, it.LogicalOptions.RouteOptions.Outbound)
default:
panic("no")
}
Expand Down
6 changes: 5 additions & 1 deletion template/template.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"regexp"

M "github.com/sagernet/serenity/common/metadata"
"github.com/sagernet/serenity/common/semver"
"github.com/sagernet/serenity/option"
"github.com/sagernet/serenity/subscription"
"github.com/sagernet/serenity/template/filter"
Expand Down Expand Up @@ -40,9 +41,12 @@ type ExtraGroup struct {
exclude []*regexp.Regexp
}

func (t *Template) Render(ctx context.Context, metadata M.Metadata, profileName string, outbounds [][]boxOption.Outbound, subscriptions []*subscription.Subscription) (*boxOption.Options, error) {
func (t *Template) Render(ctx context.Context, metadata M.Metadata, profileName string, endpoints []boxOption.Endpoint, outbounds [][]boxOption.Outbound, subscriptions []*subscription.Subscription) (*boxOption.Options, error) {
var options boxOption.Options
options.Log = t.Log
if metadata.Version != nil && metadata.Version.GreaterThanOrEqual(semver.ParseVersion("1.12.0-alpha.1")) {
options.Endpoints = endpoints
}
err := t.renderDNS(ctx, metadata, &options)
if err != nil {
return nil, E.Cause(err, "render dns")
Expand Down
Loading