mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-11-04 18:13:42 +08:00 
			
		
		
		
	v0.7.2 ---------------- Fixes: - solver: gracefully handle cache loading errors - remotecache: only visit each item once when walking results - cache: avoid possible nil dereference on error handling - contenthash: allow security.capability in cache checksum - contenthash: treat unix sockets as regular files - push: fix race condition on pushing the same layers in parallel - inline cache: fix handling of duplicate blobs in same image - gateway: fix metadata getting lost on subsolve in external frontend - filesync: avoid ignoring close error - runc: update runc binary to v1.0.0-rc91 - buildctl-daemonless: allow max retries on socket connect for buildctl - buildctl-daemonless: fix shell args expansion - buildctl-daemonless: show log on startup timeout v0.7.1 ---------------- Fixes: - git: use --force flag on fetch - tar exporter: handle symlinks properly - resolver: disable http2 for pushing Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
		
			
				
	
	
		
			61 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package entitlements
 | 
						|
 | 
						|
import (
 | 
						|
	"github.com/pkg/errors"
 | 
						|
)
 | 
						|
 | 
						|
type Entitlement string
 | 
						|
 | 
						|
const (
 | 
						|
	EntitlementSecurityInsecure Entitlement = "security.insecure"
 | 
						|
	EntitlementNetworkHost      Entitlement = "network.host"
 | 
						|
)
 | 
						|
 | 
						|
var all = map[Entitlement]struct{}{
 | 
						|
	EntitlementSecurityInsecure: {},
 | 
						|
	EntitlementNetworkHost:      {},
 | 
						|
}
 | 
						|
 | 
						|
func Parse(s string) (Entitlement, error) {
 | 
						|
	_, ok := all[Entitlement(s)]
 | 
						|
	if !ok {
 | 
						|
		return "", errors.Errorf("unknown entitlement %s", s)
 | 
						|
	}
 | 
						|
	return Entitlement(s), nil
 | 
						|
}
 | 
						|
 | 
						|
func WhiteList(allowed, supported []Entitlement) (Set, error) {
 | 
						|
	m := map[Entitlement]struct{}{}
 | 
						|
 | 
						|
	var supm Set
 | 
						|
	if supported != nil {
 | 
						|
		var err error
 | 
						|
		supm, err = WhiteList(supported, nil)
 | 
						|
		if err != nil { // should not happen
 | 
						|
			return nil, err
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	for _, e := range allowed {
 | 
						|
		e, err := Parse(string(e))
 | 
						|
		if err != nil {
 | 
						|
			return nil, err
 | 
						|
		}
 | 
						|
		if supported != nil {
 | 
						|
			if !supm.Allowed(e) {
 | 
						|
				return nil, errors.Errorf("granting entitlement %s is not allowed by build daemon configuration", e)
 | 
						|
			}
 | 
						|
		}
 | 
						|
		m[e] = struct{}{}
 | 
						|
	}
 | 
						|
 | 
						|
	return Set(m), nil
 | 
						|
}
 | 
						|
 | 
						|
type Set map[Entitlement]struct{}
 | 
						|
 | 
						|
func (s Set) Allowed(e Entitlement) bool {
 | 
						|
	_, ok := s[e]
 | 
						|
	return ok
 | 
						|
}
 |