github.com/safing/portbase@v0.19.5/utils/debug/debug_default.go (about)

     1  //go:build !android
     2  
     3  package debug
     4  
     5  import (
     6  	"context"
     7  	"fmt"
     8  
     9  	"github.com/shirou/gopsutil/host"
    10  )
    11  
    12  // AddPlatformInfo adds OS and platform information.
    13  func (di *Info) AddPlatformInfo(ctx context.Context) {
    14  	// Get information from the system.
    15  	info, err := host.InfoWithContext(ctx)
    16  	if err != nil {
    17  		di.AddSection(
    18  			"Platform Information",
    19  			NoFlags,
    20  			fmt.Sprintf("Failed to get: %s", err),
    21  		)
    22  		return
    23  	}
    24  
    25  	// Check if we want to add virtulization information.
    26  	var virtInfo string
    27  	if info.VirtualizationRole == "guest" {
    28  		if info.VirtualizationSystem != "" {
    29  			virtInfo = fmt.Sprintf("VM: %s", info.VirtualizationSystem)
    30  		} else {
    31  			virtInfo = "VM: unidentified"
    32  		}
    33  	}
    34  
    35  	// Add section.
    36  	di.AddSection(
    37  		fmt.Sprintf("Platform: %s %s", info.Platform, info.PlatformVersion),
    38  		UseCodeSection|AddContentLineBreaks,
    39  		fmt.Sprintf("System: %s %s (%s) %s", info.Platform, info.OS, info.PlatformFamily, info.PlatformVersion),
    40  		fmt.Sprintf("Kernel: %s %s", info.KernelVersion, info.KernelArch),
    41  		virtInfo,
    42  	)
    43  }