Files
cursor-byok/internal/client/cursor.go
T

68 lines
1.8 KiB
Go

package client
import (
"fmt"
goruntime "runtime"
"cursor/internal/cursor"
"cursor/internal/logger"
)
// ApplyCursorSettings 用于处理与 ApplyCursorSettings 相关的逻辑。
func (s *ProxyService) ApplyCursorSettings() error {
if s == nil || s.proxy == nil {
return fmt.Errorf("proxy is not initialized")
}
s.caFileMu.Lock()
caCertPath, err := cursor.EnsureCACertFile(s.caCertPEM, s.caFilePath)
if err == nil {
s.caFilePath = caCertPath
}
s.caFileMu.Unlock()
if err != nil {
return fmt.Errorf("ensure ca cert file: %w", err)
}
if err := cursor.EnsureLegacySharedCACertRemoved(); err != nil {
logger.Errorf("remove legacy shared ca cert failed, continuing with installation CA: %v", err)
}
switch goruntime.GOOS {
case "windows":
if err := cursor.EnsureCACertInstalled(s.caCertPEM, caCertPath); err != nil {
return fmt.Errorf("install ca cert: %w", err)
}
case "darwin":
if err := cursor.EnsureCACertInstalled(s.caCertPEM, caCertPath); err != nil {
return fmt.Errorf("install ca cert: %w", err)
}
if err := cursor.SetSystemNodeExtraCACerts(caCertPath); err != nil {
return fmt.Errorf("set node extra ca certs: %w", err)
}
}
if err := cursor.WriteUserProxySettings(cursor.ProxyURLFromListenAddr(s.proxy.Snapshot().ListenAddr)); err != nil {
return err
}
s.setCursorSettingsApplied(true)
return nil
}
// ClearCursorSettings 用于处理与 ClearCursorSettings 相关的逻辑。
func (s *ProxyService) ClearCursorSettings() error {
if goruntime.GOOS == "darwin" {
if err := cursor.ClearSystemNodeExtraCACerts(); err != nil {
return err
}
}
if err := cursor.ClearUserProxySettings(); err != nil {
return err
}
s.setCursorSettingsApplied(false)
return nil
}
// GetDeviceID 用于处理与 GetDeviceID 相关的逻辑。
func (s *ProxyService) GetDeviceID() (string, error) {
return cursor.GetDeviceID()
}