master
go 42 lines 641 Bytes
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 //go:build linux
4
5 package hostinfo
6
7 import (
8 "context"
9 "regexp"
10 "strconv"
11
12 "github.com/coreos/go-systemd/v22/dbus"
13 )
14
15 var SystemdVersion = getSystemdVersion()
16
17 func getSystemdVersion() int {
18 var reVersion = regexp.MustCompile(`[0-9][0-9][0-9]`)
19
20 conn, err := dbus.NewWithContext(context.Background())
21 if err != nil {
22 return 0
23 }
24 defer conn.Close()
25
26 version, err := conn.GetManagerProperty("Version")
27 if err != nil {
28 return 0
29 }
30
31 major := reVersion.FindString(version)
32 if major == "" {
33 return 0
34 }
35
36 ver, err := strconv.Atoi(major)
37 if err != nil {
38 return 0
39 }
40
41 return ver
42 }