From 1defccb18919ab8d9ea589cfe8e73990fbbeccf2 Mon Sep 17 00:00:00 2001 From: Bernhard M. Wiedemann Date: Sep 13 2019 14:29:36 +0000 Subject: restructure files to remain below github limit of 1000 entries --- diff --git a/accountsservice-filter-suse-accounts.patch b/accountsservice-filter-suse-accounts.patch new file mode 100644 index 0000000..95cf988 --- /dev/null +++ b/accountsservice-filter-suse-accounts.patch @@ -0,0 +1,19 @@ +Index: accountsservice-0.6.37/src/user-classify.c +=================================================================== +--- accountsservice-0.6.37.orig/src/user-classify.c ++++ accountsservice-0.6.37/src/user-classify.c +@@ -51,7 +51,13 @@ static const char *default_excludes[] = + "man", + "at", + "gdm", +- "gnome-initial-setup" ++ "gnome-initial-setup", ++ "beagleindex", ++ "fax", ++ "suse-ncc", ++ "mailman", ++ "ldap", ++ "cyrus" + }; + + static gboolean diff --git a/accountsservice-read-root-user-cache.patch b/accountsservice-read-root-user-cache.patch new file mode 100644 index 0000000..4f039a7 --- /dev/null +++ b/accountsservice-read-root-user-cache.patch @@ -0,0 +1,30 @@ +From d8b779513474ece1f5ec2fc9b7c32afb73e32181 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Mon, 29 Apr 2019 10:14:12 -0400 +Subject: [PATCH] daemon: ensure cache files for system users are processed + +At the moment we skip cache files for system users. That +doesn't make much sense; if there's a cache file we should +be using it. + +This commit changes the code to read cache files, even for +system users, and so lets root have a non-default session. + +Closes: https://gitlab.freedesktop.org/accountsservice/accountsservice/issues/65 +--- + src/daemon.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: accountsservice-0.6.55/src/daemon.c +=================================================================== +--- accountsservice-0.6.55.orig/src/daemon.c 2019-05-30 00:12:49.993056439 +0200 ++++ accountsservice-0.6.55/src/daemon.c 2019-05-30 00:12:50.289059484 +0200 +@@ -486,7 +486,7 @@ reload_users (Daemon *daemon) + load_entries (daemon, users, TRUE, entry_generator_requested_users); + + /* Now add/update users from other sources, possibly non-local */ +- load_entries (daemon, users, FALSE, entry_generator_cachedir); ++ load_entries (daemon, users, TRUE, entry_generator_cachedir); + + wtmp_helper_update_login_frequencies (users); + diff --git a/accountsservice-sysconfig.patch b/accountsservice-sysconfig.patch new file mode 100644 index 0000000..acfc934 --- /dev/null +++ b/accountsservice-sysconfig.patch @@ -0,0 +1,639 @@ +commit c3360e3878722b0fefdda02a320f6fb76a41b7da +Author: Vincent Untz +Date: Wed Jul 20 16:48:41 2011 +0200 + + Use autologin configuration from sysconfig (SUSE-ism) + +Index: accountsservice-0.6.55/src/daemon.c +=================================================================== +--- accountsservice-0.6.55.orig/src/daemon.c 2019-04-23 17:16:09.000000000 +0200 ++++ accountsservice-0.6.55/src/daemon.c 2019-05-30 00:12:49.993056439 +0200 +@@ -47,6 +47,7 @@ + #include "wtmp-helper.h" + #include "daemon.h" + #include "util.h" ++#include "gdm-sysconfig.h" + + #define PATH_PASSWD "/etc/passwd" + #define PATH_SHADOW "/etc/shadow" +@@ -582,7 +583,7 @@ reload_autologin_timeout (Daemon *daemon + priv->autologin_id = 0; + + if (!load_autologin (daemon, &name, &enabled, &error)) { +- g_debug ("failed to load gdms custom.conf: %s", error->message); ++ g_debug ("failed to load autologin config: %s", error->message); + return FALSE; + } + +@@ -1474,6 +1475,43 @@ daemon_local_check_auth (Daemon + g_object_unref (subject); + } + ++#define SYSCONFIG_FILE "/etc/sysconfig/displaymanager" ++#define SYSCONFIG_AUTOLOGIN_KEY "DISPLAYMANAGER_AUTOLOGIN" ++ ++gboolean ++load_autologin_suse (Daemon *daemon, ++ gchar **name, ++ gboolean *enabled, ++ GError **error) ++{ ++ *name = gdm_sysconfig_load_value (SYSCONFIG_FILE, SYSCONFIG_AUTOLOGIN_KEY); ++ *enabled = (name && *name); ++ ++ return TRUE; ++} ++ ++static gboolean ++save_autologin_suse (Daemon *daemon, ++ const gchar *name, ++ gboolean enabled, ++ GError **error) ++{ ++ const gchar *user; ++ gboolean result; ++ ++ if (enabled && name) ++ user = name; ++ else ++ user = ""; ++ ++ result = gdm_sysconfig_save_value (SYSCONFIG_FILE, SYSCONFIG_AUTOLOGIN_KEY, user); ++ ++ if (!result) ++ g_set_error (error, ERROR, ERROR_FAILED, "Could not save autologin configuration in sysconfig"); ++ ++ return result; ++} ++ + gboolean + load_autologin (Daemon *daemon, + gchar **name, +@@ -1484,6 +1522,8 @@ load_autologin (Daemon *daemon, + GError *local_error = NULL; + g_autofree gchar *string = NULL; + ++ return load_autologin_suse (daemon, name, enabled, error); ++ + keyfile = g_key_file_new (); + if (!g_key_file_load_from_file (keyfile, + PATH_GDM_CUSTOM, +@@ -1523,6 +1563,8 @@ save_autologin (Daemon *daemon, + g_autofree gchar *data = NULL; + gboolean result; + ++ return save_autologin_suse (daemon, name, enabled, error); ++ + keyfile = g_key_file_new (); + if (!g_key_file_load_from_file (keyfile, + PATH_GDM_CUSTOM, +Index: accountsservice-0.6.55/src/gdm-sysconfig.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ accountsservice-0.6.55/src/gdm-sysconfig.c 2019-05-30 00:12:49.993056439 +0200 +@@ -0,0 +1,484 @@ ++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- ++ * ++ * Copyright (C) 2008 Hans Petter Jansson ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ * ++ */ ++ ++/* Parser for shell-script-like key-value files. Far from complete, but ++ * deals with a couple of common shell oddities. For instance, the following ++ * are parsed correctly: ++ * ++ * KEY=value\0 ++ * KEY = value#comment\0 ++ * KEY = " value with spaces" \0 ++ * KEY = ' it\'s a value with "embedded" quotes'\0 ++ * KEY = "if quotes aren't closed, we assume the string ends at EOL\0 ++ * ++ * It should be good enough for the config files in /etc/sysconfig/. ++ */ ++ ++#include "config.h" ++ ++#include ++#include ++ ++#include ++#include ++#include ++ ++#include "gdm-sysconfig.h" ++ ++#define SPACE_CHARS " \t" ++#define KEY_ALLOW_CHARS "_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" ++ ++static gchar ** ++load_settings_file (const gchar *file_name) ++{ ++ GIOChannel *channel; ++ GPtrArray *lines; ++ gchar *str; ++ ++ g_debug ("Loading settings from %s", file_name); ++ ++ channel = g_io_channel_new_file (file_name, "r", NULL); ++ if (!channel) { ++ g_debug ("Failed to open %s", file_name); ++ return NULL; ++ } ++ ++ lines = g_ptr_array_new (); ++ ++ while (g_io_channel_read_line (channel, &str, NULL, NULL, NULL) != G_IO_STATUS_EOF) { ++ if (str) { ++ gchar *p0; ++ ++ /* Remove line separators */ ++ ++ for (p0 = str + strlen (str) - 1; p0 >= str && strchr ("\r\n", *p0); p0--) ++ *p0 = '\0'; ++ ++ g_ptr_array_add (lines, str); ++ g_debug ("%s", str); ++ } else { ++ g_ptr_array_add (lines, g_strdup ("")); ++ g_debug ("%s", ""); ++ } ++ } ++ ++ g_io_channel_shutdown (channel, FALSE, NULL); ++ g_io_channel_unref (channel); ++ ++ g_ptr_array_add (lines, NULL); ++ ++ return (gchar **) g_ptr_array_free (lines, FALSE); ++} ++ ++static gboolean ++save_settings_file (const gchar *file_name, gchar **lines) ++{ ++ GIOStatus last_status = G_IO_STATUS_ERROR; ++ GIOChannel *channel = NULL; ++ gchar *temp_file_name; ++ gint i; ++ ++ temp_file_name = g_strdup_printf ("%s.new.%u", file_name, g_random_int ()); ++ ++ channel = g_io_channel_new_file (temp_file_name, "w", NULL); ++ if (!channel) ++ goto out; ++ ++ if (!lines) ++ goto out; ++ ++ for (i = 0; lines [i]; i++) { ++ gsize bytes_written; ++ ++ if (lines [i] [0] != '\0') ++ last_status = g_io_channel_write_chars (channel, ++ lines [i], strlen (lines [i]), ++ &bytes_written, ++ NULL); ++ ++ if (last_status != G_IO_STATUS_NORMAL) ++ break; ++ ++ last_status = g_io_channel_write_unichar (channel, '\n', NULL); ++ ++ if (last_status != G_IO_STATUS_NORMAL) ++ break; ++ } ++ ++out: ++ if (channel) { ++ g_io_channel_shutdown (channel, TRUE, NULL); ++ g_io_channel_unref (channel); ++ } ++ ++ if (last_status == G_IO_STATUS_NORMAL && g_rename (temp_file_name, file_name) != 0) ++ last_status = G_IO_STATUS_ERROR; ++ ++ g_free (temp_file_name); ++ return last_status == G_IO_STATUS_NORMAL ? TRUE : FALSE; ++} ++ ++static const gchar * ++skip_from_start_to_key (const gchar *line) ++{ ++ const gchar *p0; ++ ++ /* Skip initial space */ ++ ++ p0 = line + strspn (line, SPACE_CHARS); ++ ++ /* Ignore comments and other junk */ ++ ++ if (*p0 && strchr (KEY_ALLOW_CHARS, *p0)) ++ return p0; ++ ++ return NULL; ++} ++ ++static const gchar * ++skip_from_start_to_value_of_key (const gchar *line, const gchar *key_normal, gint key_len) ++{ ++ const gchar *p0, *p1; ++ gchar *potential_key_normal; ++ gboolean result; ++ ++ p0 = skip_from_start_to_key (line); ++ if (!p0) ++ return NULL; ++ ++ /* There's at least one key-like character, figure out how many */ ++ ++ p1 = p0 + strspn (p0, KEY_ALLOW_CHARS); ++ ++ /* Is this the key we're looking for? */ ++ ++ if (p1 - p0 != key_len) ++ return NULL; ++ ++ potential_key_normal = g_ascii_strdown (p0, p1 - p0); ++ result = strcmp (key_normal, potential_key_normal) == 0 ? TRUE : FALSE; ++ g_free (potential_key_normal); ++ ++ if (!result) ++ return NULL; ++ ++ /* It's the right key; skip over key-value separator */ ++ ++ p0 = p1 + strspn (p1, SPACE_CHARS); ++ if (*p0 != '=') ++ return NULL; ++ ++ p0++; ++ p0 += strspn (p0, SPACE_CHARS); ++ ++ return p0; ++} ++ ++static const gchar * ++skip_over_value (const gchar *value_start, gchar *quotes_out) ++{ ++ const gchar *p0 = value_start; ++ const gchar *p1; ++ gchar quotes; ++ ++ /* Is the value quoted? */ ++ ++ quotes = *p0; ++ if (quotes == '\'' || quotes == '"') { ++ /* Quoted sequence opened; find closing quote, but skip over escaped ones. If ++ * there's no closing quote on this line, assume the EOL closes it. */ ++ ++ *quotes_out = quotes; ++ ++ p1 = p0; ++ do { ++ p1++; ++ p1 = strchr (p1, quotes); ++ if (!p1) { ++ /* Hit EOL */ ++ ++ p1 = p0 + strlen (p0) - 1; ++ break; ++ } ++ } while (*(p1 - 1) == '\\'); ++ } else { ++ /* No quotes; look for comment or EOL */ ++ ++ *quotes_out = 0; ++ ++ p1 = strchr (p0, '#'); ++ if (!p1) ++ p1 = p0 + strlen (p0); ++ ++ for (p1--; p1 >= p0; p1--) ++ if (!strchr (SPACE_CHARS, *p1)) ++ break; ++ } ++ ++ return p1 + 1; ++} ++ ++static gchar * ++get_value_of_key (const gchar *line, const gchar *key_normal, gint key_len) ++{ ++ const gchar *p0, *p1; ++ gchar quotes; ++ gchar *value; ++ gchar *temp; ++ ++ p0 = skip_from_start_to_value_of_key (line, key_normal, key_len); ++ if (!p0) ++ return NULL; ++ ++ p1 = skip_over_value (p0, "es); ++ ++ if (quotes != 0) { ++ if (p1 - p0 > 2) { ++ temp = g_strndup (p0 + 1, p1 - p0 - 2); ++ value = g_strcompress (temp); ++ g_free (temp); ++ } else { ++ value = g_strdup (""); ++ } ++ } else { ++ temp = g_strndup (p0, p1 - p0); ++ value = g_strcompress (temp); ++ g_free (temp); ++ g_strchomp (value); ++ } ++ ++ return value; ++} ++ ++static gchar * ++get_value (const gchar **lines, const gchar *key) ++{ ++ gchar *value = NULL; ++ gchar *key_normal; ++ gint key_len; ++ gint i; ++ ++ g_debug ("Getting value of %s", key); ++ ++ if (!lines) { ++ g_debug ("Missing configuration data"); ++ return NULL; ++ } ++ ++ key_normal = g_ascii_strdown (key, -1); ++ key_len = strlen (key_normal); ++ ++ for (i = 0; lines [i]; i++) { ++ value = get_value_of_key (lines [i], key_normal, key_len); ++ if (value) ++ break; ++ } ++ ++ g_free (key_normal); ++ ++ g_debug ("Got value of %s: %s", key, value); ++ ++ return value; ++} ++ ++static gchar * ++set_value_of_key (const gchar *line, const gchar *key_normal, gint key_len, const gchar *key, const gchar *value) ++{ ++ const gchar *p0, *p1, *p2; ++ gchar quotes; ++ gchar *escaped_value; ++ gchar *quoted_escaped_value; ++ gint quoted_escaped_value_len; ++ gchar *new_line; ++ gint len; ++ ++ p0 = skip_from_start_to_value_of_key (line, key_normal, key_len); ++ if (!p0) ++ return NULL; ++ ++ escaped_value = g_strescape (value, ""); ++ quoted_escaped_value = g_strdup_printf ("\"%s\"", escaped_value); ++ g_free (escaped_value); ++ quoted_escaped_value_len = strlen (quoted_escaped_value); ++ ++ p1 = skip_over_value (p0, "es); ++ p2 = p1 + strlen (p1); ++ len = (p0 - line) + quoted_escaped_value_len + (p2 - p1); ++ ++ new_line = g_malloc (len + 1); ++ memcpy (new_line, line, p0 - line); ++ memcpy (new_line + (p0 - line), quoted_escaped_value, quoted_escaped_value_len); ++ memcpy (new_line + (p0 - line) + quoted_escaped_value_len, p1, p2 - p1); ++ ++ *(new_line + len) = '\0'; ++ ++ g_free (quoted_escaped_value); ++ ++ return new_line; ++} ++ ++static gboolean ++set_value (gchar **lines, const gchar *key, const gchar *value) ++{ ++ gboolean result = FALSE; ++ gchar *key_normal; ++ gint key_len; ++ gint i; ++ ++ if (!lines) ++ return FALSE; ++ ++ key_normal = g_ascii_strdown (key, -1); ++ key_len = strlen (key_normal); ++ ++ for (i = 0; lines [i]; i++) { ++ gchar *new_line; ++ ++ new_line = set_value_of_key (lines [i], key_normal, key_len, key, value); ++ if (new_line) { ++ g_free (lines [i]); ++ lines [i] = new_line; ++ result = TRUE; ++ break; ++ } ++ } ++ ++ g_free (key_normal); ++ ++ return result; ++} ++ ++gchar ** ++gdm_sysconfig_load_file (const gchar *file_name) ++{ ++ g_return_val_if_fail (file_name != NULL, NULL); ++ ++ return load_settings_file (file_name); ++} ++ ++gboolean ++gdm_sysconfig_save_file (const gchar *file_name, const gchar **sysconfig) ++{ ++ g_return_val_if_fail (file_name != NULL, FALSE); ++ g_return_val_if_fail (sysconfig != NULL, FALSE); ++ ++ return save_settings_file (file_name, sysconfig); ++} ++ ++gchar * ++gdm_sysconfig_get_value (const gchar **sysconfig, const gchar *key) ++{ ++ g_return_val_if_fail (sysconfig != NULL, NULL); ++ g_return_val_if_fail (key != NULL, NULL); ++ ++ return get_value (sysconfig, key); ++} ++ ++gboolean ++gdm_sysconfig_set_value (gchar **sysconfig, const gchar *key, const gchar *value) ++{ ++ g_return_val_if_fail (sysconfig != NULL, FALSE); ++ g_return_val_if_fail (key != NULL, FALSE); ++ g_return_val_if_fail (value != NULL, FALSE); ++ ++ return set_value (sysconfig, key, value); ++} ++ ++gboolean ++gdm_sysconfig_get_value_boolean (const gchar **sysconfig, const gchar *key, gboolean *value) ++{ ++ char *val; ++ gboolean val_bool; ++ ++ g_return_val_if_fail (sysconfig != NULL, FALSE); ++ g_return_val_if_fail (key != NULL, FALSE); ++ ++ val = get_value (sysconfig, key); ++ if (val == NULL) { ++ return FALSE; ++ } ++ ++ if (!strcasecmp (val, "yes")) { ++ val_bool = TRUE; ++ } else if (!strcasecmp (val, "no")) { ++ val_bool = FALSE; ++ } else { ++ g_free (val); ++ return FALSE; ++ } ++ ++ g_free (val); ++ ++ if (value != NULL) { ++ *value = val_bool; ++ } ++ ++ return TRUE; ++} ++ ++gboolean ++gdm_sysconfig_set_value_boolean (gchar **sysconfig, const gchar *key, gboolean value) ++{ ++ g_return_val_if_fail (sysconfig != NULL, FALSE); ++ g_return_val_if_fail (key != NULL, FALSE); ++ ++ return set_value (sysconfig, key, value ? "yes" : "no"); ++} ++ ++gchar * ++gdm_sysconfig_load_value (const gchar *file_name, const gchar *key) ++{ ++ gchar **lines; ++ gchar *value; ++ ++ g_return_val_if_fail (file_name != NULL, NULL); ++ g_return_val_if_fail (key != NULL, NULL); ++ ++ lines = load_settings_file (file_name); ++ if (!lines) ++ return NULL; ++ ++ value = get_value (lines, key); ++ ++ g_strfreev (lines); ++ return value; ++} ++ ++gboolean ++gdm_sysconfig_save_value (const gchar *file_name, const gchar *key, const gchar *value) ++{ ++ gchar **lines; ++ gboolean result; ++ ++ g_return_val_if_fail (file_name != NULL, FALSE); ++ g_return_val_if_fail (key != NULL, FALSE); ++ g_return_val_if_fail (value != NULL, FALSE); ++ ++ lines = load_settings_file (file_name); ++ if (!lines) ++ return FALSE; ++ ++ result = set_value (lines, key, value); ++ if (result) ++ result = save_settings_file (file_name, lines); ++ ++ g_strfreev (lines); ++ return result; ++} +Index: accountsservice-0.6.55/src/gdm-sysconfig.h +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ accountsservice-0.6.55/src/gdm-sysconfig.h 2019-05-30 00:12:49.993056439 +0200 +@@ -0,0 +1,43 @@ ++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- ++ * ++ * Copyright (C) 2008 Hans Petter Jansson ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ * ++ */ ++ ++ ++#ifndef __GDM_SYSCONFIG_H ++#define __GDM_SYSCONFIG_H ++ ++#include ++ ++G_BEGIN_DECLS ++ ++gchar **gdm_sysconfig_load_file (const gchar *file_name); ++gboolean gdm_sysconfig_save_file (const gchar *file_name, const gchar **sysconfig); ++ ++gchar *gdm_sysconfig_get_value (const gchar **sysconfig, const gchar *key); ++gboolean gdm_sysconfig_set_value (gchar **sysconfig, const gchar *key, const gchar *value); ++ ++gboolean gdm_sysconfig_get_value_boolean (const gchar **sysconfig, const gchar *key, gboolean *value); ++gboolean gdm_sysconfig_set_value_boolean (gchar **sysconfig, const gchar *key, gboolean value); ++ ++gchar *gdm_sysconfig_load_value (const gchar *file_name, const gchar *key); ++gboolean gdm_sysconfig_save_value (const gchar *file_name, const gchar *key, const gchar *value); ++ ++G_END_DECLS ++ ++#endif /* __GDM_SYSCONFIG_H */ +Index: accountsservice-0.6.55/src/meson.build +=================================================================== +--- accountsservice-0.6.55.orig/src/meson.build 2019-04-23 17:16:09.000000000 +0200 ++++ accountsservice-0.6.55/src/meson.build 2019-05-30 00:12:49.993056439 +0200 +@@ -46,6 +46,8 @@ libaccounts_generated_dep = declare_depe + ) + + sources = files( ++ 'gdm-sysconfig.c', ++ 'gdm-sysconfig.h', + 'daemon.c', + 'extensions.c', + 'main.c', diff --git a/accountsservice.changes b/accountsservice.changes new file mode 100644 index 0000000..be0786f --- /dev/null +++ b/accountsservice.changes @@ -0,0 +1,737 @@ +------------------------------------------------------------------- +Wed May 29 21:28:30 UTC 2019 - Bjørn Lie + +- Update to version 0.6.55: + + Memory leak fix. + + Improved heuristics for identifying user session. + + Export interfaces directory to pkgconfig. + + Lock down state directory from prying eyes to be more friendly to + accountsservice extensions that require privacy. + + Misc fixes. + + Updated translations. +- Drop accountsservice-upstream-fixes.patch: Fixed upstream. +- Refresh patches with refresh_patches osc service. + +------------------------------------------------------------------- +Wed May 8 01:25:32 UTC 2019 - xwang@suse.com + +- Update accountsservice-read-root-user-cache.patch. + upstream commit d8b77951 + (bsc#1114292 glfo#accountsservice/accountsservice#65). + +------------------------------------------------------------------- +Wed Apr 3 02:54:51 UTC 2019 - xwang@suse.com + +- Drop upstream fixed patches: + + accountsservice-lib-don-not-set-loaded-state-until-seat-fetched.patch +- Update patches: + + accountsservice-read-root-user-cache.patch + + accountsservice-sysconfig.patch + +------------------------------------------------------------------- +Sun Mar 17 10:52:44 UTC 2019 - Jan Engelhardt + +- Redo summaries without em dashes. +- Reduce %systemd_requires to %systemd_ordering: + %service_* can handle the absence. + +------------------------------------------------------------------- +Thu Feb 21 22:45:14 UTC 2019 - bjorn.lie@gmail.com + +- Update to version 0.6.54: + + Fix user state dirs. +- Changes from version 0.6.53: + + Fix introspection. +- Changes from version 0.6.52: + + Migrate to meson and gettext (instead of autogoo and intltool). + + Add code of conduct. + + Add new session and session type properties (to replace + XSession). + + Try to handle misbehaving logind a little better. + + Misc mixes and code modernization. + + Add new "Saved" property to say whether a cached user is stored + on disk. +- Add accountsservice-upstream-fixes.patch: Add upstream bug fixes + commits, fix build. +- Switch to meson build system, add meson BuildRequires and macros. +- Drop obsolete intltool, gnome-common, vala, xmlto and xsltproc + BuildRequires: No longer needed. +- Replace gobject-introspection-devel with + pkgconfig(gobject-introspection-1.0) and add pkgconfig(dbus-1): + New depdendency. +- Disable the following patches that needs rebase: + + accountsservice-sysconfig.patch. + + accountsservice-lib-don-not-set-loaded-state-until-seat-fetched.patch. + + accountsservice-read-root-user-cache.patch + +------------------------------------------------------------------- +Mon Dec 10 05:48:13 UTC 2018 - xwang@suse.com + +- Add accountsservice-read-root-user-cache.patch: Read root user + cache file (bsc#1114292 glfo#accountsservice/accountsservice#65). + +------------------------------------------------------------------- +Sun Jul 22 20:39:59 UTC 2018 - bjorn.lie@gmail.com + +- Update to version 0.6.50: + + Fix insufficient path check on user icon files. + + Fix is-logged-in status for wayland sessions. + + Fix user enumeration when system accounts are mixed in. +- Drop upstream fixed patches: + + accountsservice-missing-users-on-gdm-login.patch. + + accountsservice-lib-treat-session-type-wayland-as-graphical-session.patch + +------------------------------------------------------------------- +Fri Jul 20 02:51:49 UTC 2018 - qkzhu@suse.com + +- Add accountsservice-lib-don-not-set-loaded-state-until-seat-fetched.patch: + At the moment we set is-loaded on the user-manager object as soon + as we start fetching the seat, but we should waiting until the seat + is fetched, so that can_switch() will return the correct value if + the caller waited until the loaded signal to use it. + (boo#1100041 fdo#107298) + +------------------------------------------------------------------- +Tue Jul 17 01:41:41 UTC 2018 - xwang@suse.com + +- Add accountsservice-lib-treat-session-type-wayland-as-graphical-session.patch: + When user session type is wayland, act_user_is_logged_in can + return TRUE if the user is logged in (boo#1095918 fdo#106855). + +------------------------------------------------------------------- +Wed Jul 11 07:33:21 UTC 2018 - mliska@suse.cz + +- Make build verbose to see full command lines. + +------------------------------------------------------------------- +Wed Jun 13 06:00:22 UTC 2018 - fezhang@suse.com + +- Add accountsservice-missing-users-on-gdm-login.patch: Don't abort + loading users when an /etc/shadow entry found missing + (boo#1090003 fdo#106904). + +------------------------------------------------------------------- +Sun May 13 23:59:22 UTC 2018 - luc14n0@linuxmail.org + +- Update to version 0.6.49: + + Fix crash on startup from previous compiler warning fix. +- Changes from version 0.6.48: + + Fix crashes when adding admin user and when user is removed. + + Performance improvements handling really large wtmp files. +- Changes from version 0.6.47: + + Fix problem where libaccountsservice users weren't getting + property change updates. + + Reduce memory usage of cached users in daemon process. + + Drop premature user-added/user-removed signals that erroneously + get emitted before ListCachedUsers call finishes. + +------------------------------------------------------------------- +Fri Apr 6 02:43:51 UTC 2018 - luc14n0@linuxmail.org + +- Update to version 0.6.46: + + Fix systemd unit file to use default standard output; + + Performance improvements; + + Leak fixes; + + Crash fixes; + + Support extra groups for admin users; + + Add policy that allows admins to allow users to change their + own password; + + Introspection fixes; + + Elogind support; + + Decruftification of username blacklist; + + Updated translations. +- Add: + + gio-2.0 and gio-unix-2.0 pkgconfig modules BuildRequires to + avoid implicit dependencies. + + xmlto and xsltproc BuildRequires to enable documentation. +- Drop remove-no-longer-used-system-accounts.patch: fixed upstream. +- Rebase patches: + + accountsservice-sysconfig.patch and + + accountsservice-filter-suse-accounts.patch. + +------------------------------------------------------------------- +Wed Feb 28 16:22:37 UTC 2018 - dimstar@opensuse.org + +- Modernize spec-file by calling spec-cleaner + +------------------------------------------------------------------- +Fri Dec 22 03:05:02 UTC 2017 - qzheng@suse.com + +- Add remove-no-longer-used-system-accounts.patch: + Drop operator, nobody4 and noaccess from the blacklist + (bsc#1063794, fdo#103879). + +------------------------------------------------------------------- +Thu Aug 10 09:33:16 UTC 2017 - yfjiang@suse.com + +- Update specfile to build + as-fate318433-prevent-same-account-multi-logins.patch on SLE15. + +------------------------------------------------------------------- +Tue Jul 4 09:20:34 UTC 2017 - jengelh@inai.de + +- Remove redundant %clean section; use %_smp_mflags for build. + +------------------------------------------------------------------- +Tue Apr 25 08:45:58 UTC 2017 - dimstar@opensuse.org + +- Update to version 0.6.45: + + Wrap password expiration info in libaccountsservice api. +- Changes from version 0.6.44: + + Export password expiration info from shadow file. + + Fix user classification logic. + + Don't lose track of users when /etc/passwd is reloaded. +- Drop accountsservice-933083-load-root-setting.patch: + fixed upstream (177509 edac45). + +------------------------------------------------------------------- +Wed Nov 30 15:42:14 UTC 2016 - dimstar@opensuse.org + +- Rebase accountsservice-933083-load-root-setting.patch. + +------------------------------------------------------------------- +Sat Sep 24 20:41:41 UTC 2016 - zaitor@opensuse.org + +- Update to version 0.6.43: + + Fix logout times in login-history. + + Increase performance in large deployments. + + Memory leak fix. + + Exclude nologin users from user list. + +------------------------------------------------------------------- +Sun Sep 11 14:12:01 UTC 2016 - fezhang@suse.com + +- Update accountsservice-sysconfig.patch: + Flush the buffer before shut down the GIOChannel, otherwise we + get a truncated setting file. The problem has caused the + switching autologin in gnome-control-center breaking + /etc/sysconfig/displaymanager (bsc#998107). + +------------------------------------------------------------------- +Wed Aug 24 08:14:06 UTC 2016 - fezhang@suse.com + +- Enable as-fate318433-prevent-same-account-multi-logins.patch for + Leap as requested by the Leap Release Manager (boo#994876). + +------------------------------------------------------------------- +Wed Jul 6 06:23:55 UTC 2016 - fbui@suse.com + +- Remove pkgconfig(libsystemd-daemon). Nowadays + pkgconfig(libsystemd) is enough and replaces all libsystemd-* + libs which are obsolete. + +------------------------------------------------------------------- +Wed Jun 15 08:49:03 UTC 2016 - zaitor@opensuse.org + +- Update to version 0.6.42: + + Wtmp fixes on solaris. + + Allow a user to change his own data even if he's remote. + + Add way to set password hint independent of password. + + Conform to modern systemd library naming scheme. + + Disable GVFS support in service, since it's not needed and has + bad side effects. +- Replace pkgconfig(libsystemd-login) for pkgconfig(libsystemd) + BuildRequires following upstream changes. + +------------------------------------------------------------------- +Fri May 27 18:44:02 CST 2016 - cxiong@suse.com + +- Add as-fate318433-prevent-same-account-multi-logins.patch + (fate#318433): + Prevent multiple simultaneous logins. + +------------------------------------------------------------------- +Thu Apr 14 19:40:39 UTC 2016 - mgorse@suse.com + +- Update to GNOME 3.20 Fate#318572 +- Rebased accountsservice-933083-load-root-setting.patch. + +------------------------------------------------------------------- +Mon Jan 11 08:25:13 UTC 2016 - michael@stroeder.com + +- Updated Url. + +------------------------------------------------------------------- +Thu Jun 4 03:48:25 UTC 2015 - dliang@suse.com + +- Add accountsservice-933083-load-root-setting.patch (bnc#933083) + Load settings of an account which is not 'human' but can still be + able to login to the system. (like 'root') + +------------------------------------------------------------------- +Tue Jan 27 18:01:50 UTC 2015 - zaitor@opensuse.org + +- Update to version 0.6.40: + + Support large UIDs better. + + Don't require X11 display to fetch user with X11 session. + + Ensure accountsservice doesn't start before NSS works. + +------------------------------------------------------------------- +Sun Oct 19 19:56:53 UTC 2014 - zaitor@opensuse.org + +- Update to version 0.6.39: + + Fix ListCachedUsers race at startup. + + Add new api for uncaching user. + + Fix memory corruption bug. + + Build goo changes. + +------------------------------------------------------------------- +Sun Oct 5 15:34:00 UTC 2014 - zaitor@opensuse.org + +- Pass --enable-user-heuristics to configure to ensure that legacy + users are still shown in GDM facebrowser. + +------------------------------------------------------------------- +Thu Sep 25 08:34:16 UTC 2014 - dimstar@opensuse.org + +- Update to version 0.6.38: + + Fix polkit policy for non-desktop cases. + + Fix for a race when new user appears. + + Some clearer log and debug messages. + +------------------------------------------------------------------- +Wed Apr 2 11:48:24 UTC 2014 - dimstar@opensuse.org + +- Update to version 0.6.37: + + BSD fixes. +- Changes from version 0.6.36: + + Fixes for deleting users. + + Leak fix. + + Change user classification logic. + + BSD fixes. +- Rebase accountsservice-sysconfig.patch and + accountsservice-filter-suse-accounts.patch. + +------------------------------------------------------------------- +Wed Oct 16 06:42:07 UTC 2013 - dimstar@opensuse.org + +- Update to version 0.6.35: + + Handle non-existent users better. + + Misc bug fixes. + + Misc clean ups. + + Emit "changed" signal when account type changes for user. + + Stop shipping vapi files. + + Avoid connecting to ConsoleKit on logind systems. + + Add extension interface. + + Add --enable-coverage option for gcov support. +- Rebase accountsservice-sysconfig.patch and + accountsservice-filter-suse-accounts.patch. +- Drop accountsservice-remotePW-verification.patch: fixed upstream. + +------------------------------------------------------------------- +Wed Oct 9 11:51:08 UTC 2013 - dimstar@opensuse.org + +- Add accountsservice-remotePW-verification.patch: treat NULL + shadow entry as "password handled remotely" (bnc#844933, + bgo#708997, fdo#70005). + +------------------------------------------------------------------- +Fri Jun 21 17:39:36 UTC 2013 - dimstar@opensuse.org + +- Update to version 0.6.34: + + Try to sanitize automatic login setting when user account is + deleted or disabled (fdo#54506). + + Fix build. +- Changes from version 0.6.33: + + Keep track of non-graphical sessions (fdo#65160). + + Forget obsolete sessions (fdo#65159). + + Monitor wtmp for changes (fdo#63159). + + Ignore non-user sessions (fdo#701514). + + Rework system account handling (fdo#64769). + - Never treat cached users as system accounts. + - Add gdm, gnome-initial-setup users to blacklist. + - Store system-account bit in key file. + - Cache newly-created users explicitly. +- Rebase accountsservice-filter-suse-accounts.patch. + +------------------------------------------------------------------- +Wed May 15 07:30:48 UTC 2013 - dimstar@opensuse.org + +- Update to version 0.6.32: + + Don't treat remote users as system accounts (fdo#64186). + + Clean up spawn_with_login_uid error handling (fdo#55067). + + Quit on SIGINT/SIGTERM (fdo#63869). + + Make --debug work as expected (fdo#63870). + + Remove newlines from debug output (fdo#63871). + + Fix mismatched function signature (fdo#63873). + + Fix gir/vapi warnings (fdo#63875). + + Fix documentation warnings (fdo#63880). + +------------------------------------------------------------------- +Wed Apr 17 06:53:12 UTC 2013 - dimstar@opensuse.org + +- Update to version 0.6.31: + + Check for logind, not systemd (bgo#62586). + + Add --enable-admin-group configure option (bgo#62235). + + Be more aggressive at excluding system accounts (bgo#48178). + + Fix xsession property notification (bgo#58493). + + Fix login history variant handling (bgo#58466). +- Rebase accountsservice-sysconfig.patch. + +------------------------------------------------------------------- +Sun Dec 16 18:50:08 UTC 2012 - dimstar@opensuse.org + +- Update to version 0.6.30: + + Minor source clean ups. + + Crasher fix on 32bit systems. + + Add get_user_by_id. + + Don't lose sessions list for users at startup. + + Add API for detecting when accountsservice is unavailable. + +------------------------------------------------------------------- +Fri Nov 23 11:48:03 UTC 2012 - dimstar@opensuse.org + +- Update to version 0.6.29: + + Translate D-Bus errors to local errors in libaccountsservice. + + Fix a wrong property name in the login history support. + +------------------------------------------------------------------- +Mon Nov 19 08:54:26 UTC 2012 - dimstar@opensuse.org + +- Update to version 0.6.28: + + Fix act_user_manager_delete_user_finish. + + Fix handling of LoginTime and LoginHistory properties. +- Changes from version 0.6.27: + + Fix warnings when the singleton user manager object is + finalized. + + Generated docs for libaccountsservice. + + Initialize local_acount to TRUE. + + Add async api for user creation, caching and deletion. + +------------------------------------------------------------------- +Wed Nov 14 13:08:48 UTC 2012 - dimstar@opensuse.org + +- Update to version 0.6.26: + + Require libsystemd-login 186. + + Protect against deleting root user. + + Add LoginTime and LoginHistory properties. + + Fix crash consolekit code. + + Fix has_multiple_user property after removing user. + +------------------------------------------------------------------- +Tue Sep 25 14:26:38 UTC 2012 - dimstar@opensuse.org + +- Update to version 0.6.25: + + Uninitialized variable fix + + Typo fix + + Create data dirs just-in-time + + Ignore closing sessions for is_logged_in test + + Disable NULL user for delete_user call + + Updated translations. + +------------------------------------------------------------------- +Tue Aug 28 19:39:37 UTC 2012 - dimstar@opensuse.org + +- Update to version 0.6.24: + + add User.Local property for identifying local users. + +------------------------------------------------------------------- +Wed Aug 8 12:26:10 UTC 2012 - dimstar@opensuse.org + +- Update to version 0.6.23: + + Fix up some debug output. + + add new CacheUser and UncacheUser apis. + + uncache user before deleting user. + +------------------------------------------------------------------- +Wed Jul 18 18:14:47 UTC 2012 - dimstar@opensuse.org + +- Add the user 'fax' to the exception list (bnc#771177). + +------------------------------------------------------------------- +Thu Jun 28 20:14:58 UTC 2012 - dimstar@opensuse.org + +- Update to version 0.6.22: + + Correct CVE-2012-2737, local file disclosure + + small memory leak fix + + exclude system accounts from ListCachedUsers + + make has-multiple-users properly only check non-system users + + remove icon when deleting user + + Revert usage of getpwent() as fallback for fgetpwent + + support consolekit call cancellation to prevent crashes caused + by shortlived sessions + + ignore built files in .gitignore + + quiet down build goo nagging +- Drop accountsservice-CVE-2012-2737.patch: fixed upstream. + +------------------------------------------------------------------- +Wed Jun 27 13:53:12 CEST 2012 - vuntz@opensuse.org + +- Add accountsservice-CVE-2012-2737.patch: fix local file + disclosure flaw. Fix bnc#768807, CVE-2012-2737. + +------------------------------------------------------------------- +Tue Jun 26 21:37:04 UTC 2012 - dimstar@opensuse.org + +- Add users cyrus, ldap and mailman to the openSUSE specific users + to be excluded (accountsservice-filter-suse-accounts.patch). + Fixes bnc#765487. + +------------------------------------------------------------------- +Fri May 18 06:56:47 UTC 2012 - dimstar@opensuse.org + +- Update to version 0.6.21: + + Detect old versions of systemd and fall back to ConsoleKit + + Exclude users without a valid shell + + Fix log spew + +------------------------------------------------------------------- +Fri May 4 21:03:16 UTC 2012 - dimstar@opensuse.org + +- Update to version 0.6.20: + + Fix user listing which broke in previous release +- Changes from version 0.6.19: + + Fix spurious warnings in logs + + Make userdel succeed even if user is already logged in + + Exclude users with no shell + + Exclude "at" user +- Drop accountsservice-filter-more-accounts.patch and + accountsservice-filter-no-shell.patch: fixed upstream. + +------------------------------------------------------------------- +Mon Apr 23 07:57:30 UTC 2012 - vuntz@opensuse.org + +- Add back accountsservice-filter-more-accounts.patch to filter the + at user. +- Add accountsservice-filter-no-shell.patch to filter users with no + shell, which happens when NIS is setup. +- This should fix bnc#757662. +- Rebase accountsservice-filter-suse-accounts.patch. + +------------------------------------------------------------------- +Sat Apr 14 16:29:42 UTC 2012 - dimstar@opensuse.org + +- Update to version 0.6.18: + + Fix systemd configure check + + Add a few more common system accounts to the blacklist + + Fix some issues in systemd session handling +- Drop accountsservice-filter-more-accounts.patch: fixed upstream. +- Drop accountsservice-fix-systemd-test-always-evaluating-true.patch: + fixed upstream. + +------------------------------------------------------------------- +Tue Apr 3 11:45:58 UTC 2012 - vuntz@opensuse.org + +- Add accountsservice-filter-more-accounts.patch: filter out ftp, + games, man and mysql system users too, taken from git. +- Add accountsservice-filter-suse-accounts.patch: filter out some + openSUSE-specific accounts (beagleindex, suse-ncc). + +------------------------------------------------------------------- +Mon Apr 2 19:07:08 UTC 2012 - zaitor@opensuse.org + +- Add accountsservice-fix-systemd-test-always-evaluating-true.patch + Make it possible to build accountsservice without systemd + (fdo#48190). + +------------------------------------------------------------------- +Wed Mar 28 06:36:18 UTC 2012 - vuntz@opensuse.org + +- Update to version 0.6.17: + + Fix user filtering which was broken in 0.6.16 + + Fix double free in user code + +------------------------------------------------------------------- +Tue Mar 27 09:29:20 UTC 2012 - vuntz@opensuse.org + +- Update to version 0.6.16: + + Don't filter out users below UID_MIN in login.defs + + Filter out users with invalid shells + + Use infinite timeout for ListCachedUsers calls + + Port to GDBus + + Add systemd support + + Build fixes for srcdir != builddir + + Vala support and introspection fixes + + PPC32 fixes + + Updated translations. +- Drop pkgconfig(dbus-glib-1) BuildRequires: dependency is gone + upstream. +- Enable support for systemd session tracking: + + Note that it will fall back to ConsoleKit at runtime, so it's + fine to build it. + + Add pkgconfig() BuildRequires: libsystemd-login, + libsystemd-daemon. +- Rebase accountsservice-sysconfig.patch. +- Add vala BuildRequires, which is now needed because of the + gnome-autogen.sh call. + +------------------------------------------------------------------- +Mon Feb 27 13:21:43 UTC 2012 - vuntz@opensuse.org + +- Fix systemd-related packaging: + + Use %{?systemd_requires}. + + Call %service_{add,del}_* macros in scriptlets for + accounts-daemon.service. +- Remove xz BuildRequires now that it comes for free in the build + system. + +------------------------------------------------------------------- +Thu Dec 8 08:55:14 UTC 2011 - dimstar@opensuse.org + +- Split typelib file into typelib-1_0-AccountsService-1_0 + subpackage. +- Add typelib-1_0-AccountsService-1_0 Requires to devel subpackage. + +------------------------------------------------------------------- +Tue Oct 18 06:54:27 UTC 2011 - vuntz@opensuse.org + +- Update to version 0.6.15: + + Only accept regular files as icons + + Don't track non-graphical sessions + + Fix wtmp handling + + Fix build on FreeBSD and OpenBSD +- Drop accountsservice-regular-file-for-icon.patch: fixed upstream. + +------------------------------------------------------------------- +Thu Sep 29 08:46:11 UTC 2011 - vuntz@opensuse.org + +- Add accountsservice-regular-file-for-icon.patch: only use regular + files when setting user icon. Part of bnc#676638. + +------------------------------------------------------------------- +Mon Sep 5 06:30:54 UTC 2011 - vuntz@opensuse.org + +- Update to version 0.6.14: + + Ignore extraneous SetAutomaticLogin(false) calls for a user + + Monitor /etc/gdm/custom.conf for changes in autologin config + + Fix fast user switching + + Fix docs to build + + Updated translations. +- Rebase accountsservice-sysconfig.patch, and add gnome-common + BuildRequires and call to gnome-autogen.sh since it's easier to + rebase the patch without Makefile.in. +- Add gobject-introspection-devel BuildRequires to build + introspection data. + +------------------------------------------------------------------- +Wed Jul 20 16:51:05 CEST 2011 - vuntz@opensuse.org + +- Add accountsservice-sysconfig.patch: read and write autologin + configuration from sysconfig, as done in gdm. Fix bnc#688071. + +------------------------------------------------------------------- +Wed Jul 20 09:02:02 CEST 2011 - vuntz@opensuse.org + +- Update to version 0.6.13: + + Honor aclocal flags environment variable + + Set log domain so it can be hushed + + Use wtmp instead of consolekit for determining login frequency + + Leak and warning fixes + + Clean up polkit deprecation warnings + + Add '--' before username to account helper programs +- Add xz BuildRequires because we can't build a package for a + xz-compressed tarball without explicitly specifying that... See + bnc#697467 for more details. + +------------------------------------------------------------------- +Thu May 19 18:08:45 CEST 2011 - dimstar@opensuse.org + +- Update to version 0.6.12: + + The usual pile of race fixes +- Changes from version 0.6.11: + + Add API for adding users to the library. + +------------------------------------------------------------------- +Tue May 3 00:22:39 CEST 2011 - vuntz@opensuse.org + +- Drop rpmlintrc as the necessary changes have now been done in + both rpmlint (for suse-dbus-unauthorized-service) and in + polkit-default-privs (for polkit-unauthorized-privilege). + +------------------------------------------------------------------- +Fri Apr 29 15:04:09 UTC 2011 - fcrozat@novell.com + +- Update to version 0.6.10: + + An assortment of race fixes + + Updated translations +- Changes from version 0.6.9: + + Add a 'system-account' property to users +- Update download url for tarball. + +------------------------------------------------------------------- +Mon Apr 11 13:41:00 UTC 2011 - fcrozat@novell.com + +- Add pkgconfig(systemd) to BuildRequires and package systemd + configuration file for accountsservice. + +------------------------------------------------------------------- +Tue Apr 5 11:18:12 UTC 2011 - fcrozat@novell.com + +- Update to version 0.6.8: + + use same rules for parsing booleans from gdm config as gdm. + +------------------------------------------------------------------- +Wed Mar 23 10:25:27 UTC 2011 - fcrozat@novell.com + +- Update to version 0.6.7: + + Fix call to useradd for normal users + + Correct free array of groups + + Updated translations +- Changes from version 0.6.6: + + Make it possible to disable user icon + + Drop Supervised user role + + Use "wheel" instead of "desktop_admin_r" as admin group + since that's what everyone uses for this purpose anyway. + + Crasher fixes + + Misc distro integration fixes + + Updated translations +- Changes from version 0.6.5: + + No longer return excluded users from cached listings + + Add a --debug command line option + + Use proper dbus proxy for settings api in client lib + + Expose XSession property over bus +- Enforce dependency on main package in library package by changing + Recommends to Requires. +- Add a rpmlintrc to ignore security-related rpmlint warnings that + make the build fail on Factory. This needs to get removed when + entering Factory, though. + +------------------------------------------------------------------- +Thu Mar 3 11:52:55 CET 2011 - vuntz@opensuse.org + +- Cleanup for inclusion in Factory. + +------------------------------------------------------------------- +Thu Feb 17 18:05:00 UTC 2011 - fcrozat@novell.com + +- Update to version 0.6.4: + - fix typo in HomeDirectory property + - fix bug in asynchronous loading code + - drop some random g_print's +- Changes from version 0.6.3: + + Add more getters to client library + + Add an initial cut at a setter api + + Add XSession property type +- Changes from version 0.6.2: + + Remove the unused UserChanged signal + + Add a small client library, based on code from gdm + + Don't use gnome-common + + Use the user-administration privilege for autologin changes +- Changes from version 0.6.1: + + Always emit the changed signal when setting user photo + + Install systemd unit files + + Translation updates +- Changes from version 0.6: + + Always require user-administration privilege when setting a + password or changing a username + + Allow changing password mode and password even when the + account is locked, and unlock it as a side-effect + + Use /etc/shadow to store account locking and 'set password at + next login' information and monitor /etc/shadow for changes + + Set loginuid when runing commands on behalf of a user to + generate proper audit records + + Drop SetIconData and make SetIconFile copy the file when + appropriate. As a consequence, the service no longer links + against image libraries. + + Various other robustness and error-handling fixes +- Changes from version 0.5: + + Make initial user list call work + + Avoid extraneous commandline parsing +- Package directories used by daemon to store user data: + /var/lib/AccountsService and subdirectories. + +------------------------------------------------------------------- +Sat Jan 30 13:12:53 CET 2010 - captain.magnus@opensuse.org + +- New package (version 0.4). + diff --git a/accountsservice.spec b/accountsservice.spec new file mode 100644 index 0000000..4c0b227 --- /dev/null +++ b/accountsservice.spec @@ -0,0 +1,166 @@ +# +# spec file for package accountsservice +# +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +Name: accountsservice +Version: 0.6.55 +Release: 0 +Summary: D-Bus Service to Manipulate User Account Information +License: GPL-3.0-or-later +Group: System/Daemons +URL: https://www.freedesktop.org/wiki/Software/AccountsService/ +Source0: https://www.freedesktop.org/software/accountsservice/%{name}-%{version}.tar.xz + +# WARNING: do not remove/significantly change patch0 without updating the relevant patch in gdm too +# PATCH-FIX-OPENSUSE accountsservice-sysconfig.patch bnc#688071 vuntz@opensuse.org -- Read/write autologin configuration from sysconfig, like gdm (see gdm-sysconfig-settings.patch) WAS PATCH-FIX-OPENSUSE +Patch0: accountsservice-sysconfig.patch +# PATCH-FIX-OPENSUSE accountsservice-filter-suse-accounts.patch vuntz@opensuse.org -- Filter out some system users that are specific to openSUSE +Patch1: accountsservice-filter-suse-accounts.patch +# PATCH-FIX-UPSTREAM accountsservice-read-root-user-cache.patch bsc#1114292 glfo#accountsservice/accountsservice#65 xwang@suse.com-- read root user cache file WAS PATCH-FIX-UPSTREAM +Patch2: accountsservice-read-root-user-cache.patch + +## SLE-only patches start at 1000 +# PATCH-FEATURE-SLE as-fate318433-prevent-same-account-multi-logins.patch fate#318433 cxiong@suse.com -- prevent multiple simultaneous login. +Patch1000: as-fate318433-prevent-same-account-multi-logins.patch + +BuildRequires: gtk-doc +BuildRequires: meson +BuildRequires: pkgconfig +BuildRequires: pkgconfig(dbus-1) +BuildRequires: pkgconfig(gio-2.0) >= 2.37.3 +BuildRequires: pkgconfig(gio-unix-2.0) +BuildRequires: pkgconfig(glib-2.0) >= 2.44 +BuildRequires: pkgconfig(gobject-introspection-1.0) +BuildRequires: pkgconfig(libsystemd) >= 186 +BuildRequires: pkgconfig(polkit-gobject-1) +BuildRequires: pkgconfig(systemd) +Recommends: %{name}-lang +%{?systemd_ordering} + +%description +The accountsservice server provides a set of D-Bus interfaces for +querying and manipulating user account information. + +The implementation is based on the useradd, usermod and userdel +commands. + +%package -n libaccountsservice0 +Summary: Client library for the user account information manipulation D-Bus service +# Clients do need the server to do something useful +Group: System/Libraries +Requires: %{name} + +%description -n libaccountsservice0 +The accountsservice server provides a set of D-Bus interfaces for +querying and manipulating user account information. + +This package provides a client library for the service. + +%package -n typelib-1_0-AccountsService-1_0 +Summary: Introspection bindings for the user account information manipulation service +Group: System/Libraries + +%description -n typelib-1_0-AccountsService-1_0 +The accountsservice server provides a set of D-Bus interfaces for +querying and manipulating user account information. + +This package provides the GObject Introspection bindings for the +client library. + +%package devel +Summary: Header files for the user account information manipulation service +Group: Development/Libraries/C and C++ +Requires: libaccountsservice0 = %{version} +Requires: typelib-1_0-AccountsService-1_0 = %{version} + +%description devel +The accountsservice server provides a set of D-Bus interfaces for +querying and manipulating user account information. + +%lang_package + +%prep +%setup -q +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 + +# Sle-only patches start at 1000 +%if !0%{?is_opensuse} +%patch1000 -p1 +%endif + +%build +%meson \ + -Duser-heuristics=true \ + -Dsystemd=true \ + -Dintrospection=true \ + -Dgtk_doc=true \ + %{nil} +%meson_build + +%install +%meson_install +%find_lang accounts-service + +%pre +%service_add_pre accounts-daemon.service + +%post +%service_add_post accounts-daemon.service + +%preun +%service_del_preun accounts-daemon.service + +%postun +%service_del_postun accounts-daemon.service + +%post -n libaccountsservice0 -p /sbin/ldconfig +%postun -n libaccountsservice0 -p /sbin/ldconfig + +%files +%license COPYING +%doc NEWS README.md +%{_unitdir}/accounts-daemon.service +%{_sysconfdir}/dbus-1/system.d/org.freedesktop.Accounts.conf +%{_libexecdir}/accounts-daemon +%{_datadir}/dbus-1/interfaces/org.freedesktop.Accounts.xml +%{_datadir}/dbus-1/interfaces/org.freedesktop.Accounts.User.xml +%{_datadir}/dbus-1/system-services/org.freedesktop.Accounts.service +%{_datadir}/polkit-1/actions/org.freedesktop.accounts.policy +# Directories where the server stores user data +%dir %{_localstatedir}/lib/AccountsService +%dir %{_localstatedir}/lib/AccountsService/users +%dir %{_localstatedir}/lib/AccountsService/icons + +%files -n libaccountsservice0 +%{_libdir}/*.so.0* + +%files -n typelib-1_0-AccountsService-1_0 +%{_libdir}/girepository-1.0/AccountsService-1.0.typelib + +%files devel +%doc AUTHORS TODO +%doc %{_datadir}/gtk-doc/html/lib%{name}/ +%{_libdir}/*.so +%{_libdir}/pkgconfig/accountsservice.pc +%{_includedir}/accountsservice-1.0/ +%{_datadir}/gir-1.0/AccountsService-1.0.gir + +%files lang -f accounts-service.lang + +%changelog diff --git a/as-fate318433-prevent-same-account-multi-logins.patch b/as-fate318433-prevent-same-account-multi-logins.patch new file mode 100644 index 0000000..b98e3f9 --- /dev/null +++ b/as-fate318433-prevent-same-account-multi-logins.patch @@ -0,0 +1,98 @@ +Index: accountsservice-0.6.40/src/libaccountsservice/act-user-manager.c +=================================================================== +--- accountsservice-0.6.40.orig/src/libaccountsservice/act-user-manager.c ++++ accountsservice-0.6.40/src/libaccountsservice/act-user-manager.c +@@ -751,8 +751,17 @@ _get_systemd_seat_id (ActUserManager *ma + char *seat_id; + + res = sd_session_get_seat (NULL, &seat_id); +- +- if (res == -ENOENT) { ++ /** ++ * NOTE: There is no -ENOENT errnum for `sd_session_get_seat`. This ++ * possibly an upstream bug. There are also other dubious occurrences of ++ * -ENOENT within the source. ++ * ++ * Change to -ENODATA as this is the normal return for non-seated ++ * session like VNC ones and should not report errors. O/w no user ++ * sessions will be analyzed. ++ */ ++ /* see https://www.freedesktop.org/software/systemd/man/sd_session_is_active.html */ ++ if (res == -ENODATA) { + seat_id = NULL; + } else if (res < 0) { + g_warning ("Could not get current seat: %s", +@@ -1700,12 +1709,22 @@ maybe_add_new_session (ActUserManagerNew + if (new_session->x11_display == NULL) { + g_debug ("AcUserManager: (mostly) ignoring session '%s' since it's not graphical", + new_session->id); +- is_ours = FALSE; ++ /* SLE: ignore non-graphical session completely */ ++ /* see `act_user_is_logged_in_anywhere` */ ++ unload_new_session (new_session); ++ return; + } else if (session_is_login_window (manager, new_session->id)) { + new_session->state = ACT_USER_MANAGER_NEW_SESSION_STATE_LOADED; + unload_new_session (new_session); + return; + } else if (!session_is_on_our_seat (manager, new_session->id)) { ++ /** ++ * NOTE: if `manager->priv->seat.id` or `new_session->id` is ++ * either NULL, it's not on our seat: this is reasonable, as ++ * non-seat session is not switchable and thus no need to be ++ * ours. However, this nondiscrimination for all non-seated ++ * sessions is possibly a source for bugs. ++ */ + is_ours = FALSE; + } + +Index: accountsservice-0.6.40/src/libaccountsservice/act-user.c +=================================================================== +--- accountsservice-0.6.40.orig/src/libaccountsservice/act-user.c ++++ accountsservice-0.6.40/src/libaccountsservice/act-user.c +@@ -936,6 +936,8 @@ act_user_is_logged_in (ActUser *user) + * (Currently, this function is only implemented for systemd-logind. + * For ConsoleKit, it is equivalent to act_user_is_logged_in.) + * ++ * (SLE-12 SP2: 'other_sessions' have been modified to contain only X sessions) ++ * + * Returns: %TRUE or %FALSE + */ + gboolean +@@ -945,6 +947,24 @@ act_user_is_logged_in_anywhere (ActUser + } + + /** ++ * act_user_is_x_logged_in_remotely: ++ * @user: a #ActUser ++ * ++ * Returns whether or not #ActUser is currently graphically logged in on a ++ * different seat or no seat. ++ * ++ * (For SLE12-SP2: fate#318433) ++ * ++ * Returns: %TRUE or %FALSE ++ */ ++gboolean ++act_user_is_x_logged_in_remotely (ActUser *user) ++{ ++ /* return user->remote_x_sessions; */ ++ return (user->other_sessions != NULL); ++} ++ ++/** + * act_user_get_locked: + * @user: a #ActUser + * +Index: accountsservice-0.6.40/src/libaccountsservice/act-user.h +=================================================================== +--- accountsservice-0.6.40.orig/src/libaccountsservice/act-user.h ++++ accountsservice-0.6.40/src/libaccountsservice/act-user.h +@@ -67,6 +67,7 @@ guint act_user_get_num_sessions + guint act_user_get_num_sessions_anywhere (ActUser *user); + gboolean act_user_is_logged_in (ActUser *user); + gboolean act_user_is_logged_in_anywhere (ActUser *user); ++gboolean act_user_is_x_logged_in_remotely (ActUser *user); + int act_user_get_login_frequency (ActUser *user); + gint64 act_user_get_login_time (ActUser *user); + const GVariant*act_user_get_login_history (ActUser *user);