Fix creating config for WARP

This commit is contained in:
Sergei Maklagin
2026-05-02 14:54:26 +03:00
parent 2e0306ae41
commit e2ef7d83a1

View File

@@ -68,7 +68,7 @@ func NewEndpoint(ctx context.Context, router adapter.Router, logger log.ContextL
} }
} }
if config == nil { if config == nil {
config, err := endpoint.createConfig() config, err = endpoint.createConfig()
if err != nil { if err != nil {
logger.ErrorContext(ctx, err) logger.ErrorContext(ctx, err)
return return
@@ -183,6 +183,16 @@ func (w *Endpoint) isEndpointInitialized(ctx context.Context) error {
} }
func (w *Endpoint) createConfig() (*Config, error) { func (w *Endpoint) createConfig() (*Config, error) {
opts := make([]cloudflare.CloudflareApiOption, 0, 1)
if w.options.Profile.Detour != "" {
detour, ok := service.FromContext[adapter.OutboundManager](w.ctx).Outbound(w.options.Profile.Detour)
if !ok {
return nil, E.New("outbound detour not found: ", w.options.Profile.Detour)
}
opts = append(opts, cloudflare.WithDialContext(func(ctx context.Context, network, addr string) (net.Conn, error) {
return detour.DialContext(ctx, network, M.ParseSocksaddr(addr))
}))
}
var privateKey wgtypes.Key var privateKey wgtypes.Key
var err error var err error
if w.options.Profile.PrivateKey != "" { if w.options.Profile.PrivateKey != "" {
@@ -196,16 +206,6 @@ func (w *Endpoint) createConfig() (*Config, error) {
return nil, err return nil, err
} }
} }
opts := make([]cloudflare.CloudflareApiOption, 0, 1)
if w.options.Profile.Detour != "" {
detour, ok := service.FromContext[adapter.OutboundManager](w.ctx).Outbound(w.options.Profile.Detour)
if !ok {
return nil, E.New("outbound detour not found: ", w.options.Profile.Detour)
}
opts = append(opts, cloudflare.WithDialContext(func(ctx context.Context, network, addr string) (net.Conn, error) {
return detour.DialContext(ctx, network, M.ParseSocksaddr(addr))
}))
}
api := cloudflare.NewCloudflareApi(opts...) api := cloudflare.NewCloudflareApi(opts...)
var profile *cloudflare.CloudflareProfile var profile *cloudflare.CloudflareProfile
if w.options.Profile.AuthToken != "" && w.options.Profile.ID != "" { if w.options.Profile.AuthToken != "" && w.options.Profile.ID != "" {