diff options
author | William Jon McCann <jmccann@redhat.com> | 2008-04-03 22:09:26 -0400 |
---|---|---|
committer | William Jon McCann <jmccann@redhat.com> | 2008-04-03 22:09:26 -0400 |
commit | e633be1b9a81cfb7993e469066e50af47f563575 (patch) | |
tree | 1449c68f2caab4c717ca2514ee547716fc2916d3 /src/ck-session.c | |
parent | 4740245c6f6137175ef51be2207c35185f4d98f1 (diff) |
initial login session id support
Linux audit session id support. Still TODO:
* determine if session id should be hidden
* export to bus
* add to event log
* figure out how to add it to non-generated sessions
Diffstat (limited to 'src/ck-session.c')
-rw-r--r-- | src/ck-session.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/ck-session.c b/src/ck-session.c index d9e32be..52ee2c2 100644 --- a/src/ck-session.c +++ b/src/ck-session.c @@ -58,6 +58,7 @@ struct CkSessionPrivate char *seat_id; char *session_type; + char *login_session_id; char *display_device; char *x11_display_device; char *x11_display; @@ -98,6 +99,7 @@ enum { PROP_DISPLAY_DEVICE, PROP_SESSION_TYPE, PROP_REMOTE_HOST_NAME, + PROP_LOGIN_SESSION_ID, PROP_IS_LOCAL, PROP_ACTIVE, PROP_IDLE_HINT, @@ -498,6 +500,20 @@ ck_session_get_display_device (CkSession *session, } gboolean +ck_session_get_login_session_id (CkSession *session, + char **login_session_id, + GError **error) +{ + g_return_val_if_fail (CK_IS_SESSION (session), FALSE); + + if (login_session_id != NULL) { + *login_session_id = g_strdup (session->priv->login_session_id); + } + + return TRUE; +} + +gboolean ck_session_get_x11_display_device (CkSession *session, char **x11_display_device, GError **error) @@ -672,6 +688,19 @@ ck_session_set_x11_display_device (CkSession *session, } gboolean +ck_session_set_login_session_id (CkSession *session, + const char *login_session_id, + GError **error) +{ + g_return_val_if_fail (CK_IS_SESSION (session), FALSE); + + g_free (session->priv->login_session_id); + session->priv->login_session_id = g_strdup (login_session_id); + + return TRUE; +} + +gboolean ck_session_set_remote_host_name (CkSession *session, const char *remote_host_name, GError **error) @@ -732,6 +761,9 @@ ck_session_set_property (GObject *object, case PROP_DISPLAY_DEVICE: ck_session_set_display_device (self, g_value_get_string (value), NULL); break; + case PROP_LOGIN_SESSION_ID: + ck_session_set_login_session_id (self, g_value_get_string (value), NULL); + break; case PROP_UNIX_USER: ck_session_set_unix_user (self, g_value_get_uint (value), NULL); break; @@ -785,6 +817,9 @@ ck_session_get_property (GObject *object, case PROP_DISPLAY_DEVICE: g_value_set_string (value, self->priv->display_device); break; + case PROP_LOGIN_SESSION_ID: + g_value_set_string (value, self->priv->login_session_id); + break; case PROP_UNIX_USER: g_value_set_uint (value, self->priv->uid); break; @@ -975,6 +1010,13 @@ ck_session_class_init (CkSessionClass *klass) NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); g_object_class_install_property (object_class, + PROP_LOGIN_SESSION_ID, + g_param_spec_string ("login-session-id", + "login-session-id", + "login session id", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); + g_object_class_install_property (object_class, PROP_X11_DISPLAY, g_param_spec_string ("x11-display", "x11-display", @@ -1272,6 +1314,12 @@ ck_session_dump (CkSession *session, "type", NONULL_STRING (session->priv->session_type)); } + if (session->priv->login_session_id != NULL && strlen (session->priv->login_session_id) > 0) { + g_key_file_set_string (key_file, + group_name, + "login_session_id", + NONULL_STRING (session->priv->login_session_id)); + } if (session->priv->display_device != NULL && strlen (session->priv->display_device) > 0) { g_key_file_set_string (key_file, group_name, |