 4cb0839e41
			
		
	
	4cb0839e41
	
	
	
		
			
			Updates the filemode on the grpc socket to have group write permission which is needed to perform GRPC. Additionally, ensure the run directory has the specified group ownership and has group read and enter permission. Signed-off-by: Derek McGowan <derek@mcgstyle.net>
		
			
				
	
	
		
			43 lines
		
	
	
		
			821 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			821 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| // +build !windows
 | |
| 
 | |
| package sys
 | |
| 
 | |
| import (
 | |
| 	"net"
 | |
| 	"os"
 | |
| 	"path/filepath"
 | |
| 
 | |
| 	"golang.org/x/sys/unix"
 | |
| )
 | |
| 
 | |
| // CreateUnixSocket creates a unix socket and returns the listener
 | |
| func CreateUnixSocket(path string) (net.Listener, error) {
 | |
| 	if err := os.MkdirAll(filepath.Dir(path), 0660); err != nil {
 | |
| 		return nil, err
 | |
| 	}
 | |
| 	if err := unix.Unlink(path); err != nil && !os.IsNotExist(err) {
 | |
| 		return nil, err
 | |
| 	}
 | |
| 	return net.Listen("unix", path)
 | |
| }
 | |
| 
 | |
| // GetLocalListener returns a listerner out of a unix socket.
 | |
| func GetLocalListener(path string, uid, gid int) (net.Listener, error) {
 | |
| 	l, err := CreateUnixSocket(path)
 | |
| 	if err != nil {
 | |
| 		return l, err
 | |
| 	}
 | |
| 
 | |
| 	if err := os.Chmod(path, 0660); err != nil {
 | |
| 		l.Close()
 | |
| 		return nil, err
 | |
| 	}
 | |
| 
 | |
| 	if err := os.Chown(path, uid, gid); err != nil {
 | |
| 		l.Close()
 | |
| 		return nil, err
 | |
| 	}
 | |
| 
 | |
| 	return l, nil
 | |
| }
 |