#include "shared-data-manager.h"
#include "user-list.h"
#include "login1.h"
+#include "log-file.h"
static gchar *config_path = NULL;
static GMainLoop *loop = NULL;
static void
log_init (void)
{
- gchar *log_dir, *path, *old_path;
+ gchar *log_dir, *path;
+ gboolean backup_logs;
log_timer = g_timer_new ();
path = g_build_filename (log_dir, "lightdm.log", NULL);
g_free (log_dir);
- /* Move old file out of the way */
- old_path = g_strdup_printf ("%s.old", path);
- rename (path, old_path);
- g_free (old_path);
-
- /* Create new file and log to it */
- log_fd = open (path, O_WRONLY | O_CREAT | O_TRUNC, 0600);
+ backup_logs = config_get_boolean (config_get_instance (), "LightDM", "backup-logs");
+ log_fd = log_file_open (path, backup_logs ? LOG_MODE_BACKUP_AND_TRUNCATE : LOG_MODE_APPEND);
fcntl (log_fd, F_SETFD, FD_CLOEXEC);
g_log_set_default_handler (log_cb, NULL);
static void
signal_cb (Process *process, int signum)
{
- g_debug ("Caught %s signal, shutting down", g_strsignal (signum));
- display_manager_stop (display_manager);
- // FIXME: Stop XDMCP server
+ switch (signum)
+ {
+ case SIGINT:
+ case SIGTERM:
+ g_debug ("Caught %s signal, shutting down", g_strsignal (signum));
+ display_manager_stop (display_manager);
+ // FIXME: Stop XDMCP server
+ break;
+ case SIGUSR1:
+ case SIGUSR2:
+ case SIGHUP:
+ break;
+ }
}
static void
keys = g_key_file_new ();
result = g_key_file_load_from_file (keys, path, G_KEY_FILE_NONE, &error);
if (error)
- g_debug ("Error getting key %s", error->message);
+ g_warning ("Unable to load keys from %s: %s", path, error->message);
g_clear_error (&error);
if (result)
if (g_key_file_has_key (keys, "keyring", key_name, NULL))
key = g_key_file_get_string (keys, "keyring", key_name, NULL);
else
- g_debug ("Key %s not defined", key_name);
+ g_warning ("Key %s not defined", key_name);
}
g_free (path);
g_key_file_free (keys);
xdmcp_server_set_key (xdmcp_server, key);
g_free (key_name);
g_free (key);
-
- g_debug ("Starting XDMCP server on UDP/IP port %d", xdmcp_server_get_port (xdmcp_server));
- xdmcp_server_start (xdmcp_server);
+
+ if (key_name && !key)
+ {
+ exit_code = EXIT_FAILURE;
+ display_manager_stop (display_manager);
+ return;
+ }
+ else
+ {
+ g_debug ("Starting XDMCP server on UDP/IP port %d", xdmcp_server_get_port (xdmcp_server));
+ xdmcp_server_start (xdmcp_server);
+ }
}
/* Start the VNC server */
config_set_string (config_get_instance (), "LightDM", "greeter-user", GREETER_USER);
if (!config_has_key (config_get_instance (), "LightDM", "lock-memory"))
config_set_boolean (config_get_instance (), "LightDM", "lock-memory", TRUE);
+ if (!config_has_key (config_get_instance (), "LightDM", "backup-logs"))
+ config_set_boolean (config_get_instance (), "LightDM", "backup-logs", TRUE);
if (!config_has_key (config_get_instance (), "Seat:*", "type"))
config_set_string (config_get_instance (), "Seat:*", "type", "xlocal");
if (!config_has_key (config_get_instance (), "Seat:*", "pam-service"))