diff --git a/go.mod b/go.mod index 3bea2febd..6bd7bdd68 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.26 require ( github.com/blang/semver/v4 v4.0.0 - github.com/coreos/go-systemd/v22 v22.5.0 + github.com/coreos/go-systemd/v22 v22.7.0 github.com/coreos/pkg v0.0.0-20230601102743-20bbbf26f4d8 github.com/godbus/dbus/v5 v5.1.0 github.com/google/go-cmp v0.5.9 diff --git a/go.sum b/go.sum index f2fc35fac..dc0b29ec4 100644 --- a/go.sum +++ b/go.sum @@ -15,8 +15,8 @@ github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWR github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= -github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/go-systemd/v22 v22.7.0 h1:LAEzFkke61DFROc7zNLX/WA2i5J8gYqe0rSj9KI28KA= +github.com/coreos/go-systemd/v22 v22.7.0/go.mod h1:xNUYtjHu2EDXbsxz1i41wouACIwT7Ybq9o0BQhMwD0w= github.com/coreos/pkg v0.0.0-20230601102743-20bbbf26f4d8 h1:NrLmX9HDyGvQhyZdrDx89zCvPdxQ/EHCo+xGNrjNmHc= github.com/coreos/pkg v0.0.0-20230601102743-20bbbf26f4d8/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= @@ -48,7 +48,6 @@ github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/ github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= diff --git a/vendor/github.com/coreos/go-systemd/v22/login1/dbus.go b/vendor/github.com/coreos/go-systemd/v22/login1/dbus.go index 613db0d12..c7df1f187 100644 --- a/vendor/github.com/coreos/go-systemd/v22/login1/dbus.go +++ b/vendor/github.com/coreos/go-systemd/v22/login1/dbus.go @@ -17,6 +17,7 @@ package login1 import ( "context" + "errors" "fmt" "os" "strconv" @@ -111,58 +112,52 @@ type User struct { Path dbus.ObjectPath } -func (s Session) toInterface() []interface{} { - return []interface{}{s.ID, s.UID, s.User, s.Seat, s.Path} -} - -func sessionFromInterfaces(session []interface{}) (*Session, error) { +func sessionFromInterfaces(session []any) *Session { if len(session) < 5 { - return nil, fmt.Errorf("invalid number of session fields: %d", len(session)) + return nil } id, ok := session[0].(string) if !ok { - return nil, fmt.Errorf("failed to typecast session field 0 to string") + return nil } uid, ok := session[1].(uint32) if !ok { - return nil, fmt.Errorf("failed to typecast session field 1 to uint32") + return nil } user, ok := session[2].(string) if !ok { - return nil, fmt.Errorf("failed to typecast session field 2 to string") + return nil } seat, ok := session[3].(string) if !ok { - return nil, fmt.Errorf("failed to typecast session field 2 to string") + return nil } path, ok := session[4].(dbus.ObjectPath) if !ok { - return nil, fmt.Errorf("failed to typecast session field 4 to ObjectPath") + return nil } - ret := Session{ID: id, UID: uid, User: user, Seat: seat, Path: path} - return &ret, nil + return &Session{ID: id, UID: uid, User: user, Seat: seat, Path: path} } -func userFromInterfaces(user []interface{}) (*User, error) { +func userFromInterfaces(user []any) *User { if len(user) < 3 { - return nil, fmt.Errorf("invalid number of user fields: %d", len(user)) + return nil } uid, ok := user[0].(uint32) if !ok { - return nil, fmt.Errorf("failed to typecast user field 0 to uint32") + return nil } name, ok := user[1].(string) if !ok { - return nil, fmt.Errorf("failed to typecast session field 1 to string") + return nil } path, ok := user[2].(dbus.ObjectPath) if !ok { - return nil, fmt.Errorf("failed to typecast user field 2 to ObjectPath") + return nil } - ret := User{UID: uid, Name: name, Path: path} - return &ret, nil + return &User{UID: uid, Name: name, Path: path} } // GetActiveSession may be used to get the session object path for the current active session @@ -177,14 +172,14 @@ func (c *Conn) GetActiveSession() (dbus.ObjectPath, error) { if err != nil { return "", err } - activeSessionMap, ok := activeSession.Value().([]interface{}) + activeSessionMap, ok := activeSession.Value().([]any) if !ok || len(activeSessionMap) < 2 { - return "", fmt.Errorf("failed to typecast active session map") + return "", fmt.Errorf("GetActiveSession: can't parse response %+v", activeSession) } activeSessionPath, ok := activeSessionMap[1].(dbus.ObjectPath) if !ok { - return "", fmt.Errorf("failed to typecast dbus active session Path") + return "", fmt.Errorf("GetActiveSession: can't parse response %+v", activeSessionMap) } return activeSessionPath, nil } @@ -192,7 +187,7 @@ func (c *Conn) GetActiveSession() (dbus.ObjectPath, error) { // GetSessionUser may be used to get the user of specific session func (c *Conn) GetSessionUser(sessionPath dbus.ObjectPath) (*User, error) { if len(sessionPath) == 0 { - return nil, fmt.Errorf("empty sessionPath") + return nil, errors.New("empty sessionPath") } activeSessionObj := c.conn.Object(dbusDest, sessionPath) @@ -205,21 +200,21 @@ func (c *Conn) GetSessionUser(sessionPath dbus.ObjectPath) (*User, error) { if err != nil { return nil, err } - dbusUser, ok := sessionUser.Value().([]interface{}) + dbusUser, ok := sessionUser.Value().([]any) if !ok { - return nil, fmt.Errorf("failed to typecast dbus session user") + return nil, fmt.Errorf("GetSessionUser: can't parse response %+v", sessionUser) } if len(dbusUser) < 2 { - return nil, fmt.Errorf("invalid number of user fields: %d", len(dbusUser)) + return nil, fmt.Errorf("GetSessionUser: can't parse response %+v", dbusUser) } uid, ok := dbusUser[0].(uint32) if !ok { - return nil, fmt.Errorf("failed to typecast user field 0 to uint32") + return nil, fmt.Errorf("GetSessionUser: can't parse response %+v", dbusUser) } path, ok := dbusUser[1].(dbus.ObjectPath) if !ok { - return nil, fmt.Errorf("failed to typecast user field 1 to ObjectPath") + return nil, fmt.Errorf("GetSessionUser: can't parse response %+v", dbusUser) } user := User{UID: uid, Name: strings.Trim(sessionUserName.String(), "\""), Path: path} @@ -230,7 +225,7 @@ func (c *Conn) GetSessionUser(sessionPath dbus.ObjectPath) (*User, error) { // GetSessionDisplay may be used to get the display for specific session func (c *Conn) GetSessionDisplay(sessionPath dbus.ObjectPath) (string, error) { if len(sessionPath) == 0 { - return "", fmt.Errorf("empty sessionPath") + return "", errors.New("empty sessionPath") } sessionObj := c.conn.Object(dbusDest, sessionPath) display, err := sessionObj.GetProperty(dbusDest + ".Session.Display") @@ -243,14 +238,14 @@ func (c *Conn) GetSessionDisplay(sessionPath dbus.ObjectPath) (string, error) { // GetSession may be used to get the session object path for the session with the specified ID. func (c *Conn) GetSession(id string) (dbus.ObjectPath, error) { - var out interface{} + var out any if err := c.object.Call(dbusManagerInterface+".GetSession", 0, id).Store(&out); err != nil { return "", err } ret, ok := out.(dbus.ObjectPath) if !ok { - return "", fmt.Errorf("failed to typecast session to ObjectPath") + return "", fmt.Errorf("GetSession: can't parse response %+v", out) } return ret, nil @@ -263,16 +258,16 @@ func (c *Conn) ListSessions() ([]Session, error) { // ListSessionsContext returns an array with all current sessions. func (c *Conn) ListSessionsContext(ctx context.Context) ([]Session, error) { - out := [][]interface{}{} + out := [][]any{} if err := c.object.CallWithContext(ctx, dbusManagerInterface+".ListSessions", 0).Store(&out); err != nil { return nil, err } ret := []Session{} for _, el := range out { - session, err := sessionFromInterfaces(el) - if err != nil { - return nil, err + session := sessionFromInterfaces(el) + if session == nil { + return nil, fmt.Errorf("ListSessions: can't parse response %+v", el) } ret = append(ret, *session) } @@ -286,16 +281,16 @@ func (c *Conn) ListUsers() ([]User, error) { // ListUsersContext returns an array with all currently logged-in users. func (c *Conn) ListUsersContext(ctx context.Context) ([]User, error) { - out := [][]interface{}{} + out := [][]any{} if err := c.object.CallWithContext(ctx, dbusManagerInterface+".ListUsers", 0).Store(&out); err != nil { return nil, err } ret := []User{} for _, el := range out { - user, err := userFromInterfaces(el) - if err != nil { - return nil, err + user := userFromInterfaces(el) + if user == nil { + return nil, fmt.Errorf("ListUsers: can't parse response %+v", el) } ret = append(ret, *user) } diff --git a/vendor/modules.txt b/vendor/modules.txt index 99a260145..1bc0e7e63 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -14,8 +14,8 @@ github.com/chai2010/gettext-go github.com/chai2010/gettext-go/mo github.com/chai2010/gettext-go/plural github.com/chai2010/gettext-go/po -# github.com/coreos/go-systemd/v22 v22.5.0 -## explicit; go 1.12 +# github.com/coreos/go-systemd/v22 v22.7.0 +## explicit; go 1.23 github.com/coreos/go-systemd/v22/login1 # github.com/coreos/pkg v0.0.0-20230601102743-20bbbf26f4d8 ## explicit