From f5bc844b917c92f636e1c2a993e77035ea6355f7 Mon Sep 17 00:00:00 2001 From: ianchen0119 Date: Wed, 24 Dec 2025 06:06:21 +0000 Subject: [PATCH] feat: disable jwt token --- plugin/gthulhu/auth.go | 19 +++++++++++++------ plugin/gthulhu/gthulhu.go | 15 +++++++++++---- plugin/internal/registry/registry.go | 1 + 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/plugin/gthulhu/auth.go b/plugin/gthulhu/auth.go index c456b23..18cfdfe 100644 --- a/plugin/gthulhu/auth.go +++ b/plugin/gthulhu/auth.go @@ -39,16 +39,22 @@ type JWTClient struct { token string tokenExpiresAt time.Time httpClient *http.Client + authEnabled bool } // NewJWTClient creates a new JWT client -func NewJWTClient(publicKeyPath, apiBaseURL string) *JWTClient { +func NewJWTClient( + publicKeyPath, + apiBaseURL string, + authEnabled bool, +) *JWTClient { return &JWTClient{ publicKeyPath: publicKeyPath, apiBaseURL: strings.TrimSuffix(apiBaseURL, "/"), httpClient: &http.Client{ Timeout: 30 * time.Second, }, + authEnabled: authEnabled, } } @@ -164,17 +170,18 @@ func (c *JWTClient) GetAuthenticatedClient() (*http.Client, error) { // MakeAuthenticatedRequest makes an HTTP request with JWT authentication func (c *JWTClient) MakeAuthenticatedRequest(method, url string, body io.Reader) (*http.Response, error) { - if err := c.ensureValidToken(); err != nil { - return nil, err - } - req, err := http.NewRequest(method, url, body) if err != nil { return nil, fmt.Errorf("failed to create request: %v", err) } // Add Authorization header - req.Header.Set("Authorization", "Bearer "+c.token) + if c.authEnabled { + if err := c.ensureValidToken(); err != nil { + return nil, err + } + req.Header.Set("Authorization", "Bearer "+c.token) + } req.Header.Set("Content-Type", "application/json") return c.httpClient.Do(req) diff --git a/plugin/gthulhu/gthulhu.go b/plugin/gthulhu/gthulhu.go index 02974eb..8ab0fb6 100644 --- a/plugin/gthulhu/gthulhu.go +++ b/plugin/gthulhu/gthulhu.go @@ -29,11 +29,14 @@ func init() { // Initialize JWT client if API config is provided if config.APIConfig.Enabled && config.APIConfig.PublicKeyPath != "" && config.APIConfig.BaseURL != "" { - err := gthulhuPlugin.InitJWTClient(config.APIConfig.PublicKeyPath, config.APIConfig.BaseURL) + err := gthulhuPlugin.InitJWTClient( + config.APIConfig.PublicKeyPath, + config.APIConfig.BaseURL, + config.APIConfig.AuthEnabled, + ) if err != nil { return nil, err } - // Initialize metrics client err = gthulhuPlugin.InitMetricsClient(config.APIConfig.BaseURL) if err != nil { @@ -301,8 +304,12 @@ func (g *GthulhuPlugin) getTaskExecutionTime(pid int32) uint64 { } // InitJWTClient initializes the JWT client for API authentication -func (g *GthulhuPlugin) InitJWTClient(publicKeyPath, apiBaseURL string) error { - g.jwtClient = NewJWTClient(publicKeyPath, apiBaseURL) +func (g *GthulhuPlugin) InitJWTClient( + publicKeyPath, + apiBaseURL string, + authEnabled bool, +) error { + g.jwtClient = NewJWTClient(publicKeyPath, apiBaseURL, authEnabled) return nil } diff --git a/plugin/internal/registry/registry.go b/plugin/internal/registry/registry.go index ffd83b1..fb1bdce 100644 --- a/plugin/internal/registry/registry.go +++ b/plugin/internal/registry/registry.go @@ -39,6 +39,7 @@ type APIConfig struct { BaseURL string `yaml:"base_url"` Interval int `yaml:"interval"` Enabled bool `yaml:"enabled"` + AuthEnabled bool `yaml:"auth_enabled"` } // SchedConfig holds the configuration parameters for creating a scheduler plugin