SUBDIRS = po
+moonshotsysconfdir=${sysconfdir}/moonshot
lib_LTLIBRARIES = libmoonshot/libmoonshot.la
pkglibexec_SCRIPTS = moonshot-dbus-launch
dist_pkgdata_DATA = webprovisioning/default-identity.msht
+dist_moonshotsysconf_DATA=flatstore-users
AM_CFLAGS = -g -O0 -Wall
-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
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 \
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])
--- /dev/null
+#ifdef HAVE_GETPWUID
+#include <stdlib.h>
+#include <sys/types.h>
+#include <pwd.h>
+#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;
+}
}
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
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;
+}