Files
nezha_domains/integration/agentcompat/internal/dashboard/tls.go
T
2026-07-20 04:46:55 +00:00

47 lines
1.3 KiB
Go

//go:build linux
package dashboard
import (
"context"
"errors"
"fmt"
"net/http"
"net/http/cookiejar"
"github.com/nezhahq/nezha/integration/agentcompat/internal/client"
)
func (dashboard *Dashboard) verifyTrustedTLS(ctx context.Context) error {
httpClient, transport, err := dashboard.newTLSHTTPClient("localhost")
if err != nil {
return err
}
dashboard.tlsTransport = transport
tlsClient, err := client.New(client.Config{BaseURL: dashboard.TLSURL(), HTTPClient: httpClient})
if err != nil {
return err
}
login, err := tlsClient.Login(ctx, client.LoginRequest{Username: "admin", Password: "admin"})
if err != nil {
return fmt.Errorf("login through trusted dashboard TLS: %w", err)
}
if login.Token == "" {
return errors.New("trusted dashboard TLS login omitted JWT")
}
dashboard.bootstrap.TLSAuthenticated = true
return nil
}
func (dashboard *Dashboard) newTLSHTTPClient(serverName string) (*http.Client, *http.Transport, error) {
jar, err := cookiejar.New(nil)
if err != nil {
return nil, nil, fmt.Errorf("create TLS cookie jar: %w", err)
}
transport := &http.Transport{
TLSClientConfig: dashboard.tlsFixture.ClientConfig(serverName),
DialContext: dialAddress(dashboard.httpsAddress),
}
return &http.Client{Transport: transport, Jar: jar, Timeout: dashboardHTTPClientTimeout}, transport, nil
}