diff options
Diffstat (limited to 'sd_login/type_session.go')
-rw-r--r-- | sd_login/type_session.go | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/sd_login/type_session.go b/sd_login/type_session.go new file mode 100644 index 0000000..47856de --- /dev/null +++ b/sd_login/type_session.go @@ -0,0 +1,67 @@ +// Copyright (C) 2016 Luke Shumaker <lukeshu@sbcglobal.net> +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package sd_login + +type Session string + +type SessionState int + +const ( + SessionOnline SessionState = iota + SessionActive + SessionClosing +) + +func GetSessions() ([]Session, error) { + strs, err := get_files_in_directory("/run/systemd/sessions/") + if err != nil { + return nil, err + } + sessions := make([]Session, len(strs)) + for i := range strs { + sessions[i] = Session(strs[i]) + } + return sessions, nil +} + +func (sess Session) IsActive() bool { + state, err := sess.GetState() + return err == nil && state == SessionActive +} +func (sess Session) IsRemote() bool +func (sess Session) GetState() (SessionState, error) +func (sess Session) GetUser() (User, error) +func (sess Session) GetSeat() (Seat, error) + +// PAM +func (sess Session) GetService() (string, error) + +// tty, x11, wayland, mir, unspecified +func (sess Session) GetType() (string, error) + +// user, greeter, lock-screen +func (sess Session) GetClass() (string, error) + +// GNOME, KDE, systemd-console +func (sess Session) GetDesktop() (string, error) + +// X11 DISPLAY +func (sess Session) GetDisplay() (string, error) +func (sess Session) GetRemoteHost() (string, error) + +// PAM +func (sess Session) GetRemoteUser() (string, error) +func (sess Session) GetTTY() (string, error) +func (sess Session) GetVT() (uint, error) |