mirror of
https://github.com/containers/podman.git
synced 2025-12-05 21:32:22 +08:00
With the advent of Podman 2.0.0 we crossed the magical barrier of go modules. While we were able to continue importing all packages inside of the project, the project could not be vendored anymore from the outside. Move the go module to new major version and change all imports to `github.com/containers/libpod/v2`. The renaming of the imports was done via `gomove` [1]. [1] https://github.com/KSubedi/gomove Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
78 lines
2.5 KiB
Go
78 lines
2.5 KiB
Go
package registries
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"github.com/containers/image/v5/pkg/sysregistriesv2"
|
|
"github.com/containers/image/v5/types"
|
|
"github.com/containers/libpod/v2/pkg/rootless"
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
// userRegistriesFile is the path to the per user registry configuration file.
|
|
var userRegistriesFile = filepath.Join(os.Getenv("HOME"), ".config/containers/registries.conf")
|
|
|
|
// SystemRegistriesConfPath returns an appropriate value for types.SystemContext.SystemRegistriesConfPath
|
|
// (possibly "", which is not an error), taking into account rootless mode and environment variable overrides.
|
|
//
|
|
// FIXME: This should be centralized in a global SystemContext initializer inherited throughout the code,
|
|
// not haphazardly called throughout the way it is being called now.
|
|
func SystemRegistriesConfPath() string {
|
|
if envOverride := os.Getenv("REGISTRIES_CONFIG_PATH"); len(envOverride) > 0 {
|
|
return envOverride
|
|
}
|
|
|
|
if rootless.IsRootless() {
|
|
if _, err := os.Stat(userRegistriesFile); err == nil {
|
|
return userRegistriesFile
|
|
}
|
|
}
|
|
|
|
return ""
|
|
}
|
|
|
|
// GetRegistriesData obtains the list of registries
|
|
func GetRegistriesData() ([]sysregistriesv2.Registry, error) {
|
|
registries, err := sysregistriesv2.GetRegistries(&types.SystemContext{SystemRegistriesConfPath: SystemRegistriesConfPath()})
|
|
if err != nil {
|
|
return nil, errors.Wrapf(err, "unable to parse the registries.conf file")
|
|
}
|
|
return registries, nil
|
|
}
|
|
|
|
// GetRegistries obtains the list of search registries defined in the global registries file.
|
|
func GetRegistries() ([]string, error) {
|
|
return sysregistriesv2.UnqualifiedSearchRegistries(&types.SystemContext{SystemRegistriesConfPath: SystemRegistriesConfPath()})
|
|
}
|
|
|
|
// GetBlockedRegistries obtains the list of blocked registries defined in the global registries file.
|
|
func GetBlockedRegistries() ([]string, error) {
|
|
var blockedRegistries []string
|
|
registries, err := GetRegistriesData()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
for _, reg := range registries {
|
|
if reg.Blocked {
|
|
blockedRegistries = append(blockedRegistries, reg.Prefix)
|
|
}
|
|
}
|
|
return blockedRegistries, nil
|
|
}
|
|
|
|
// GetInsecureRegistries obtains the list of insecure registries from the global registration file.
|
|
func GetInsecureRegistries() ([]string, error) {
|
|
var insecureRegistries []string
|
|
registries, err := GetRegistriesData()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
for _, reg := range registries {
|
|
if reg.Insecure {
|
|
insecureRegistries = append(insecureRegistries, reg.Prefix)
|
|
}
|
|
}
|
|
return insecureRegistries, nil
|
|
}
|