42 lines
1.1 KiB
Go
42 lines
1.1 KiB
Go
//go:build proxyctl_process_test
|
|
|
|
package main
|
|
|
|
import (
|
|
"errors"
|
|
"os"
|
|
"os/user"
|
|
"strconv"
|
|
|
|
"proxyctl/internal/profile"
|
|
"proxyctl/internal/target"
|
|
)
|
|
|
|
// This file is compiled only into the process-smoke binary. It gives that real
|
|
// executable an identity whose home is inside the test sandbox and omits
|
|
// production system Targets, so no command can reach developer or host state.
|
|
func init() {
|
|
processProductionTargets = func(profile.IdentityEnvironment) ([]target.Target, error) {
|
|
return []target.Target{}, nil
|
|
}
|
|
processCurrentUser = func() (profile.UserIdentity, error) {
|
|
home := os.Getenv("PROXYCTL_PROCESS_TEST_HOME")
|
|
if home == "" {
|
|
return profile.UserIdentity{}, errors.New("PROXYCTL_PROCESS_TEST_HOME is required by proxyctl_process_test builds")
|
|
}
|
|
current, err := user.Current()
|
|
if err != nil {
|
|
return profile.UserIdentity{}, err
|
|
}
|
|
uid, err := strconv.Atoi(current.Uid)
|
|
if err != nil {
|
|
return profile.UserIdentity{}, err
|
|
}
|
|
gid, err := strconv.Atoi(current.Gid)
|
|
if err != nil {
|
|
return profile.UserIdentity{}, err
|
|
}
|
|
return profile.UserIdentity{Username: current.Username, HomeDir: home, UID: uid, GID: gid}, nil
|
|
}
|
|
}
|