Documentation ¶
Index ¶
- Variables
- func InPath(binaryName string) bool
- func IsNotFound(err error) bool
- func LookPath(binaryName string) string
- func SafeCommand(name string, arg ...string) (*exec.Cmd, error)
- func SplitEnvVar(v string) (string, string)
- func ToSecurityMap(c any) map[string]any
- func ToTOML(c any) string
- type AccessDeniedError
- type Auth
- type Exec
- type ExecAuth
- type NotFoundError
- type Runner
Constants ¶
This section is empty.
Variables ¶
View Source
var DefaultAuth = Auth{ Allow: security.MustNewWhitelist( "^(dart-)?sass(-embedded)?$", "^go$", "^npx$", "^postcss$", ), OsEnv: security.MustNewWhitelist(`(?i)^((HTTPS?|NO)_PROXY|PATH(EXT)?|APPDATA|TE?MP|TERM|GO\w+|(XDG_CONFIG_)?HOME|USERPROFILE|SSH_AUTH_SOCK|DISPLAY|LANG|SYSTEMDRIVE)$`), }
View Source
var WithContext = func(ctx context.Context) func(c *commandeer) {
return func(c *commandeer) {
c.ctx = ctx
}
}
View Source
var WithDir = func(dir string) func(c *commandeer) {
return func(c *commandeer) {
c.dir = dir
}
}
View Source
var WithEnviron = func(env []string) func(c *commandeer) { return func(c *commandeer) { setOrAppend := func(s string) { k1, _ := SplitEnvVar(s) var found bool for i, v := range c.env { k2, _ := SplitEnvVar(v) if k1 == k2 { found = true c.env[i] = s } } if !found { c.env = append(c.env, s) } } for _, s := range env { setOrAppend(s) } } }
View Source
var WithStderr = func(w io.Writer) func(c *commandeer) {
return func(c *commandeer) {
c.stderr = w
}
}
View Source
var WithStdin = func(r io.Reader) func(c *commandeer) {
return func(c *commandeer) {
c.stdin = r
}
}
View Source
var WithStdout = func(w io.Writer) func(c *commandeer) {
return func(c *commandeer) {
c.stdout = w
}
}
Functions ¶
func IsNotFound ¶
IsNotFound reports whether this is an error about a binary not found.
func SafeCommand ¶
SafeCommand is a wrapper around os/exec Command which uses a LookPath implementation that does not search in current directory before looking in PATH. See https://github.com/cli/safeexec and the linked issues.
func SplitEnvVar ¶
func ToSecurityMap ¶
ToSecurityMap converts c to a map with 'security' as the root key.
Types ¶
type AccessDeniedError ¶
AccessDeniedError represents a security policy conflict.
func (*AccessDeniedError) Error ¶
func (e *AccessDeniedError) Error() string
type Auth ¶
type Auth struct { Allow security.Whitelist `json:"allow"` OsEnv security.Whitelist `json:"osEnv"` }
func (Auth) CheckAllowedExec ¶
func (Auth) OSEnvAccept ¶
type Exec ¶
type Exec struct {
// contains filtered or unexported fields
}
Exec enforces a security policy for commands run via os/exec.
func NewWithAuth ¶
func (*Exec) New ¶
New will fail if name is not allowed according to the configured security policy. Else a configured Runner will be returned ready to be Run.
type NotFoundError ¶
type NotFoundError struct {
// contains filtered or unexported fields
}
func (*NotFoundError) Error ¶
func (e *NotFoundError) Error() string
Click to show internal directories.
Click to hide internal directories.