MCPcopy Create free account
hub / github.com/devnullvoid/pvetui / CreateNodeProxyConfigWithLogger

Function CreateNodeProxyConfigWithLogger

internal/vnc/proxy.go:486–555  ·  view source on GitHub ↗

CreateNodeProxyConfigWithLogger creates a proxy configuration for a node VNC shell connection with shared logger.

(client *api.Client, nodeName string, sharedLogger *logger.Logger)

Source from the content-addressed store, hash-verified

484
485// CreateNodeProxyConfigWithLogger creates a proxy configuration for a node VNC shell connection with shared logger.
486func CreateNodeProxyConfigWithLogger(client *api.Client, nodeName string, sharedLogger *logger.Logger) (*ProxyConfig, error) {
487 var configLogger *logger.Logger
488
489 if sharedLogger != nil {
490 configLogger = sharedLogger
491 } else {
492 // Create a logger for proxy configuration
493 var err error
494
495 configLogger, err = logger.NewInternalLogger(logger.LevelDebug, "")
496 if err != nil {
497 configLogger = logger.NewSimpleLogger(logger.LevelInfo)
498 }
499 }
500
501 configLogger.Info("Creating VNC proxy configuration for node: %s", nodeName)
502
503 // Get VNC shell proxy details from Proxmox API
504 configLogger.Debug("Requesting VNC shell proxy from Proxmox API for node %s", nodeName)
505
506 proxy, err := client.GetNodeVNCShellWithWebSocket(nodeName)
507 if err != nil {
508 configLogger.Error("Failed to get VNC shell proxy from API for node %s: %v", nodeName, err)
509
510 return nil, fmt.Errorf("failed to create node VNC shell: %w", err)
511 }
512
513 configLogger.Debug("VNC shell proxy response for node %s - Port: %s, Ticket length: %d, Password length: %d",
514 nodeName, proxy.Port, len(proxy.Ticket), len(proxy.Password))
515
516 // Extract hostname from client base URL
517 baseURL := client.GetBaseURL()
518
519 u, err := url.Parse(baseURL)
520 if err != nil {
521 configLogger.Error("Failed to parse client base URL for node %s: %v", nodeName, err)
522
523 return nil, fmt.Errorf("failed to parse base URL: %w", err)
524 }
525
526 configLogger.Debug("Extracted Proxmox host for node %s: %s", nodeName, u.Host)
527
528 // Get authentication token
529 authToken := client.GetAuthToken()
530 configLogger.Debug("Authentication token type for node %s: %s", nodeName, getAuthTokenType(authToken))
531
532 // For node shells, use the ticket as password if no password is generated
533 password := proxy.Password
534 if password == "" {
535 password = proxy.Ticket
536
537 configLogger.Debug("Using ticket as password for node shell %s", nodeName)
538 }
539
540 config := &ProxyConfig{
541 Port: proxy.Port,
542 Ticket: proxy.Ticket,
543 Password: password,

Callers 2

CreateNodeProxyConfigFunction · 0.85

Calls 9

InfoMethod · 0.95
DebugMethod · 0.95
ErrorMethod · 0.95
NewInternalLoggerFunction · 0.92
NewSimpleLoggerFunction · 0.92
getAuthTokenTypeFunction · 0.85
GetBaseURLMethod · 0.80
GetAuthTokenMethod · 0.80

Tested by

no test coverage detected