From: Kevin Wasserman Date: Tue, 29 Oct 2013 20:56:35 +0000 (-0400) Subject: Add flatstore-users X-Git-Tag: 0.7.1~38 X-Git-Url: http://www.project-moonshot.org/gitweb/?p=moonshot-ui.git;a=commitdiff_plain;h=95831118f79914d0e685a0bfe929570c414527d3 Add flatstore-users The identity manager uses flat file store (i.e. not keyring) if the current user is in the system's flatstore-users file. --- diff --git a/Makefile.am b/Makefile.am index 7fcca41..ffa8110 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2,6 +2,7 @@ ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS} SUBDIRS = po +moonshotsysconfdir=${sysconfdir}/moonshot lib_LTLIBRARIES = libmoonshot/libmoonshot.la @@ -11,6 +12,7 @@ bin_PROGRAMS = \ pkglibexec_SCRIPTS = moonshot-dbus-launch dist_pkgdata_DATA = webprovisioning/default-identity.msht +dist_moonshotsysconf_DATA=flatstore-users AM_CFLAGS = -g -O0 -Wall @@ -18,6 +20,7 @@ AM_CPPFLAGS = \ -include config.h \ -DLOCALEDIR=\""$(localedir)"\" \ -DMOONSHOT_LAUNCH_SCRIPT='"$(pkglibexecdir)/moonshot-dbus-launch"' \ + -DMOONSHOT_FLATSTORE_USERS='"$(moonshotsysconfdir)/flatstore-users"' \ -I$(top_srcdir)/libmoonshot \ -I$(top_builddir)/libmoonshot @@ -54,7 +57,8 @@ src_moonshot_SOURCES = \ src/moonshot-server.vala \ src/moonshot-password-dialog.vala \ src/moonshot-provisioning-common.vala \ - src/moonshot-utils.vala + src/moonshot-utils.vala \ + src/moonshot-futils.c src_moonshot_webp_SOURCES = \ src/moonshot-webp-parser.vala \ diff --git a/configure.ac b/configure.ac index 51863c9..92f76c3 100644 --- a/configure.ac +++ b/configure.ac @@ -19,7 +19,7 @@ AM_MAINTAINER_MODE([enable]) LT_PREREQ([2.2]) LT_INIT([win32-dll]) -AC_CHECK_FUNCS_ONCE(geteuid) +AC_CHECK_FUNCS_ONCE(geteuid getpwuid) # Checks for programs. PKG_PROG_PKG_CONFIG([0.23]) diff --git a/flatstore-users b/flatstore-users new file mode 100644 index 0000000..4e081fe --- /dev/null +++ b/flatstore-users @@ -0,0 +1,2 @@ +root +gdm diff --git a/src/moonshot-futils.c b/src/moonshot-futils.c new file mode 100644 index 0000000..2a043b4 --- /dev/null +++ b/src/moonshot-futils.c @@ -0,0 +1,20 @@ +#ifdef HAVE_GETPWUID +#include +#include +#include +#endif + +const char * GetUserName() +{ +#ifdef HAVE_GETPWUID + struct passwd *pwd = getpwuid(getuid()); + return pwd ? pwd->pw_name : "unknown"; +#else + return "unknown"; +#endif +} + +const char * GetFlatStoreUsersFilePath() +{ + return MOONSHOT_FLATSTORE_USERS; +} diff --git a/src/moonshot-identity-manager-app.vala b/src/moonshot-identity-manager-app.vala index a5f04c1..03088eb 100644 --- a/src/moonshot-identity-manager-app.vala +++ b/src/moonshot-identity-manager-app.vala @@ -40,8 +40,9 @@ public class IdentityManagerApp { } public IdentityManagerApp (bool headless, bool use_flat_file_store) { + use_flat_file_store |= UserForcesFlatFileStore(); #if GNOME_KEYRING - bool keyring_available = GnomeKeyring.is_available(); + bool keyring_available = (!use_flat_file_store) && GnomeKeyring.is_available(); #else bool keyring_available = false; #endif diff --git a/src/moonshot-utils.vala b/src/moonshot-utils.vala index 402e6d7..25af1e4 100644 --- a/src/moonshot-utils.vala +++ b/src/moonshot-utils.vala @@ -49,3 +49,23 @@ public Gdk.Pixbuf? find_icon (string name, int size) return null; } } + +public extern unowned string GetUserName(); +public extern unowned string GetFlatStoreUsersFilePath(); + +public bool UserForcesFlatFileStore() +{ + string username = GetUserName(); + string flatstore_users_filename = GetFlatStoreUsersFilePath(); + FileStream flatstore_users = FileStream.open(flatstore_users_filename, "r"); + if (flatstore_users == null) { + return false; + } + string? flatstore_username = null; + while ((flatstore_username = flatstore_users.read_line()) != null) { + if (username == flatstore_username) { + return true; + } + } + return false; +}