2011-09-05 10:14:23 +02:00
|
|
|
commit c3360e3878722b0fefdda02a320f6fb76a41b7da
|
2011-07-22 15:04:29 +02:00
|
|
|
Author: Vincent Untz <vuntz@gnome.org>
|
|
|
|
Date: Wed Jul 20 16:48:41 2011 +0200
|
|
|
|
|
|
|
|
Use autologin configuration from sysconfig (SUSE-ism)
|
|
|
|
|
2023-07-05 11:59:41 +02:00
|
|
|
|
|
|
|
Index: accountsservice-23.13.9/src/daemon.c
|
|
|
|
===================================================================
|
|
|
|
--- accountsservice-23.13.9.orig/src/daemon.c
|
|
|
|
+++ accountsservice-23.13.9/src/daemon.c
|
2023-06-22 14:04:27 +02:00
|
|
|
@@ -51,6 +51,7 @@
|
2011-07-22 15:04:29 +02:00
|
|
|
#include "util.h"
|
2022-03-24 10:15:47 +01:00
|
|
|
#include "user.h"
|
|
|
|
#include "accounts-user-generated.h"
|
2011-07-22 15:04:29 +02:00
|
|
|
+#include "gdm-sysconfig.h"
|
|
|
|
|
2023-06-22 14:04:27 +02:00
|
|
|
#define PATH_PASSWD "passwd"
|
|
|
|
#define PATH_SHADOW "shadow"
|
2023-07-05 11:59:41 +02:00
|
|
|
@@ -1789,6 +1790,43 @@ load_autologin_lightdm (Daemon *daemon
|
2023-06-22 14:04:27 +02:00
|
|
|
return TRUE;
|
2011-07-22 15:04:29 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
+#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
|
2023-06-22 14:04:27 +02:00
|
|
|
load_autologin (Daemon *daemon,
|
|
|
|
gchar **name,
|
2023-07-05 11:59:41 +02:00
|
|
|
@@ -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,
|
2023-06-22 14:04:27 +02:00
|
|
|
gboolean result;
|
|
|
|
g_autoptr (GError) local_error = NULL;
|
2011-07-22 15:04:29 +02:00
|
|
|
|
|
|
|
+ return load_autologin_suse (daemon, name, enabled, error);
|
|
|
|
+
|
|
|
|
keyfile = g_key_file_new ();
|
2011-09-05 10:14:23 +02:00
|
|
|
if (!g_key_file_load_from_file (keyfile,
|
|
|
|
PATH_GDM_CUSTOM,
|
2023-07-05 11:59:41 +02:00
|
|
|
@@ -1851,6 +1893,8 @@ save_autologin_lightdm (Daemon *dae
|
2011-07-22 15:04:29 +02:00
|
|
|
gboolean result;
|
2023-06-22 14:04:27 +02:00
|
|
|
g_autoptr (GError) local_error = NULL;
|
2011-07-22 15:04:29 +02:00
|
|
|
|
|
|
|
+ return save_autologin_suse (daemon, name, enabled, error);
|
|
|
|
+
|
|
|
|
keyfile = g_key_file_new ();
|
2011-09-05 10:14:23 +02:00
|
|
|
if (!g_key_file_load_from_file (keyfile,
|
2023-06-22 14:04:27 +02:00
|
|
|
PATH_LIGHTDM_CONF,
|
2023-07-05 11:59:41 +02:00
|
|
|
@@ -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
|
2011-07-22 15:04:29 +02:00
|
|
|
@@ -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) {
|
2016-09-11 17:48:48 +02:00
|
|
|
+ g_io_channel_shutdown (channel, TRUE, NULL);
|
2011-07-22 15:04:29 +02:00
|
|
|
+ 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;
|
|
|
|
+}
|
2023-07-05 11:59:41 +02:00
|
|
|
Index: accountsservice-23.13.9/src/gdm-sysconfig.h
|
|
|
|
===================================================================
|
|
|
|
--- /dev/null
|
|
|
|
+++ accountsservice-23.13.9/src/gdm-sysconfig.h
|
2011-07-22 15:04:29 +02:00
|
|
|
@@ -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 */
|
2023-07-05 11:59:41 +02:00
|
|
|
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',
|