diff --git a/cmd/gluetun/main.go b/cmd/gluetun/main.go index 6b509998..ee54bba4 100644 --- a/cmd/gluetun/main.go +++ b/cmd/gluetun/main.go @@ -144,6 +144,7 @@ func _main(ctx context.Context, buildInfo models.BuildInformation, fmt.Println(gluetunLogging.Splash(buildInfo)) printVersions(ctx, logger, map[string]func(ctx context.Context) (string, error){ + "Alpine": alpineConf.Version, "OpenVPN": ovpnConf.Version, "Unbound": dnsConf.Version, "IPtables": firewallConf.Version, diff --git a/internal/alpine/alpine.go b/internal/alpine/alpine.go index 29b6410f..c3d575f3 100644 --- a/internal/alpine/alpine.go +++ b/internal/alpine/alpine.go @@ -2,12 +2,15 @@ package alpine import ( + "context" + "github.com/qdm12/golibs/os" "github.com/qdm12/golibs/os/user" ) type Configurator interface { CreateUser(username string, uid int) (createdUsername string, err error) + Version(ctx context.Context) (version string, err error) } type configurator struct { diff --git a/internal/alpine/version.go b/internal/alpine/version.go new file mode 100644 index 00000000..ee4a96ce --- /dev/null +++ b/internal/alpine/version.go @@ -0,0 +1,27 @@ +package alpine + +import ( + "context" + "io" + "os" + "strings" +) + +func (c *configurator) Version(ctx context.Context) (version string, err error) { + file, err := c.openFile("/etc/alpine-release", os.O_RDONLY, 0) + if err != nil { + return "", err + } + + b, err := io.ReadAll(file) + if err != nil { + return "", err + } + + if err := file.Close(); err != nil { + return "", err + } + + version = strings.ReplaceAll(string(b), "\n", "") + return version, nil +}