github.com/containers/podman/v4@v4.9.4/pkg/machine/qemu/claim_darwin.go (about)

     1  package qemu
     2  
     3  import (
     4  	"fmt"
     5  	"io"
     6  	"net"
     7  	"os"
     8  	"os/user"
     9  	"path/filepath"
    10  	"time"
    11  )
    12  
    13  func dockerClaimSupported() bool {
    14  	return true
    15  }
    16  
    17  func dockerClaimHelperInstalled() bool {
    18  	u, err := user.Current()
    19  	if err != nil {
    20  		return false
    21  	}
    22  
    23  	labelName := fmt.Sprintf("com.github.containers.podman.helper-%s", u.Username)
    24  	fileName := filepath.Join("/Library", "LaunchDaemons", labelName+".plist")
    25  	info, err := os.Stat(fileName)
    26  	return err == nil && info.Mode().IsRegular()
    27  }
    28  
    29  func claimDockerSock() bool {
    30  	u, err := user.Current()
    31  	if err != nil {
    32  		return false
    33  	}
    34  
    35  	helperSock := fmt.Sprintf("/var/run/podman-helper-%s.socket", u.Username)
    36  	con, err := net.DialTimeout("unix", helperSock, time.Second*5)
    37  	if err != nil {
    38  		return false
    39  	}
    40  	_ = con.SetWriteDeadline(time.Now().Add(time.Second * 5))
    41  	_, err = fmt.Fprintln(con, "GO")
    42  	if err != nil {
    43  		return false
    44  	}
    45  	_ = con.SetReadDeadline(time.Now().Add(time.Second * 5))
    46  	read, err := io.ReadAll(con)
    47  
    48  	return err == nil && string(read) == "OK"
    49  }
    50  
    51  func findClaimHelper() string {
    52  	exe, err := os.Executable()
    53  	if err != nil {
    54  		return ""
    55  	}
    56  
    57  	exe, err = filepath.EvalSymlinks(exe)
    58  	if err != nil {
    59  		return ""
    60  	}
    61  
    62  	return filepath.Join(filepath.Dir(exe), "podman-mac-helper")
    63  }