accountsservice/accountsservice-sysconfig.patch

650 lines
19 KiB
Diff
Raw Normal View History

commit c3360e3878722b0fefdda02a320f6fb76a41b7da
Author: Vincent Untz <vuntz@gnome.org>
Date: Wed Jul 20 16:48:41 2011 +0200
Use autologin configuration from sysconfig (SUSE-ism)
Index: accountsservice-23.13.9/src/daemon.c
===================================================================
--- accountsservice-23.13.9.orig/src/daemon.c
+++ accountsservice-23.13.9/src/daemon.c
@@ -51,6 +51,7 @@
#include "util.h"
#include "user.h"
#include "accounts-user-generated.h"
+#include "gdm-sysconfig.h"
#define PATH_PASSWD "passwd"
#define PATH_SHADOW "shadow"
@@ -1789,6 +1790,43 @@ load_autologin_lightdm (Daemon *daemon
return TRUE;
}
+#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,
@@ -1797,6 +1835,8 @@ load_autologin (Daemon *daemon,
{
DisplayManagerType dm_type;
+ return load_autologin_suse (daemon, name, enabled, error);
+
dm_type = get_current_system_dm_type ();
if (dm_type == DISPLAY_MANAGER_TYPE_LIGHTDM)
return load_autologin_lightdm (daemon, name, enabled, error);
@@ -1819,6 +1859,8 @@ save_autologin_gdm (Daemon *daemon,
gboolean result;
g_autoptr (GError) local_error = 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,
@@ -1851,6 +1893,8 @@ save_autologin_lightdm (Daemon *dae
gboolean result;
g_autoptr (GError) local_error = NULL;
+ return save_autologin_suse (daemon, name, enabled, error);
+
keyfile = g_key_file_new ();
if (!g_key_file_load_from_file (keyfile,
PATH_LIGHTDM_CONF,
@@ -1879,6 +1923,8 @@ save_autologin (Daemon *daemon,
{
DisplayManagerType dm_type;
+ return save_autologin_suse (daemon, name, enabled, error);
+
dm_type = get_current_system_dm_type ();
if (dm_type == DISPLAY_MANAGER_TYPE_LIGHTDM)
return save_autologin_lightdm (daemon, name, enabled, error);
Index: accountsservice-23.13.9/src/gdm-sysconfig.c
===================================================================
--- /dev/null
+++ accountsservice-23.13.9/src/gdm-sysconfig.c
@@ -0,0 +1,484 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 Hans Petter Jansson <hpj@novell.com>
+ *
+ * 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 <unistd.h>
+#include <string.h>
+
+#include <glib.h>
+#include <glib/gi18n.h>
+#include <glib/gstdio.h>
+
+#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, &quotes);
+
+ 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, &quotes);
+ 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-23.13.9/src/gdm-sysconfig.h
===================================================================
--- /dev/null
+++ accountsservice-23.13.9/src/gdm-sysconfig.h
@@ -0,0 +1,43 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 Hans Petter Jansson <hpj@novell.com>
+ *
+ * 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 <glib-object.h>
+
+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-23.13.9/src/meson.build
===================================================================
--- accountsservice-23.13.9.orig/src/meson.build
+++ accountsservice-23.13.9/src/meson.build
@@ -48,6 +48,8 @@ libaccounts_generated_dep = declare_depe
Accepting request 692039 from GNOME:Next - 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 - Redo summaries without em dashes. - Reduce %systemd_requires to %systemd_ordering: %service_* can handle the absence. - 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 - Add accountsservice-read-root-user-cache.patch: Read root user cache file (bsc#1114292 glfo#accountsservice/accountsservice#65). - 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 - 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) - 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). - Make build verbose to see full command lines. - Add accountsservice-missing-users-on-gdm-login.patch: Don't abort loading users when an /etc/shadow entry found missing (boo#1090003 fdo#106904). - 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. - 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. - Modernize spec-file by calling spec-cleaner - Add remove-no-longer-used-system-accounts.patch: Drop operator, nobody4 and noaccess from the blacklist (bsc#1063794, fdo#103879). - Update specfile to build as-fate318433-prevent-same-account-multi-logins.patch on SLE15. - Remove redundant %clean section; use %_smp_mflags for build. - 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). - Rebase accountsservice-933083-load-root-setting.patch. - 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. - 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). - Enable as-fate318433-prevent-same-account-multi-logins.patch for Leap as requested by the Leap Release Manager (boo#994876). - Remove pkgconfig(libsystemd-daemon). Nowadays pkgconfig(libsystemd) is enough and replaces all libsystemd-* libs which are obsolete. - 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. - Add as-fate318433-prevent-same-account-multi-logins.patch (fate#318433): Prevent multiple simultaneous logins. - Update to GNOME 3.20 Fate#318572 - Rebased accountsservice-933083-load-root-setting.patch. - Updated Url. - 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') - 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. - Update to version 0.6.39: + Fix ListCachedUsers race at startup. + Add new api for uncaching user. + Fix memory corruption bug. + Build goo changes. - Pass --enable-user-heuristics to configure to ensure that legacy users are still shown in GDM facebrowser. - 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. - 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. - 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. - Add accountsservice-remotePW-verification.patch: treat NULL shadow entry as "password handled remotely" (bnc#844933, bgo#708997, fdo#70005). - 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. - 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). - 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. - 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. - 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. - 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. - 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. - 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. - Update to version 0.6.24: + add User.Local property for identifying local users. - Update to version 0.6.23: + Fix up some debug output. + add new CacheUser and UncacheUser apis. + uncache user before deleting user. - Add the user 'fax' to the exception list (bnc#771177). - 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. - Add accountsservice-CVE-2012-2737.patch: fix local file disclosure flaw. Fix bnc#768807, CVE-2012-2737. - Add users cyrus, ldap and mailman to the openSUSE specific users to be excluded (accountsservice-filter-suse-accounts.patch). Fixes bnc#765487. - 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 - 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. - 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. - 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. - 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). - Add accountsservice-fix-systemd-test-always-evaluating-true.patch Make it possible to build accountsservice without systemd (fdo#48190). - Update to version 0.6.17: + Fix user filtering which was broken in 0.6.16 + Fix double free in user code - 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. - 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. - Split typelib file into typelib-1_0-AccountsService-1_0 subpackage. - Add typelib-1_0-AccountsService-1_0 Requires to devel subpackage. - 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. - Add accountsservice-regular-file-for-icon.patch: only use regular files when setting user icon. Part of bnc#676638. - 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. - Add accountsservice-sysconfig.patch: read and write autologin configuration from sysconfig, as done in gdm. Fix bnc#688071. - 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. - 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. - 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). - 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. - Add pkgconfig(systemd) to BuildRequires and package systemd configuration file for accountsservice. - Update to version 0.6.8: + use same rules for parsing booleans from gdm config as gdm. - 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. - Cleanup for inclusion in Factory. - 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. - New package (version 0.4). OBS-URL: https://build.opensuse.org/request/show/692039 OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/accountsservice?expand=0&rev=128
2019-04-11 16:48:47 +02:00
)
sources = files(
+ 'gdm-sysconfig.c',
+ 'gdm-sysconfig.h',
'daemon.c',
'extensions.c',
'main.c',