elsa: fix to build with disabled PAM

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
This commit is contained in:
Martin Jansa
2011-11-19 15:58:09 +01:00
committed by Koen Kooi
parent 8eede31c53
commit c2660eb5c6
2 changed files with 180 additions and 0 deletions
@@ -0,0 +1,179 @@
From 0f97df8ddf1af3b7c8d670b8600a51e2ebe4e855 Mon Sep 17 00:00:00 2001
From: Klaus 'mrmoku' Kurzmann <mok@mnet-online.de>
Date: Sat, 19 Nov 2011 15:36:57 +0100
Subject: [PATCH 1/2] elsa: fix to build really without PAM support if PAM is
disabled or not available
* there as still issues in runtime without PAM, but at least it builds
now without PAM support and it's good start
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
---
PROTO/elsa/configure.ac | 2 +-
PROTO/elsa/src/daemon/Makefile.am | 6 ++++--
PROTO/elsa/src/daemon/elsa.c | 8 ++++++++
PROTO/elsa/src/daemon/elsa.h | 2 ++
PROTO/elsa/src/daemon/elsa_session.c | 11 +++++++++--
5 files changed, 24 insertions(+), 5 deletions(-)
diff --git a/configure.ac b/configure.ac
index ac85872..82d0a3f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -123,7 +123,6 @@ if test "x${enable_pam}" = "xyes" ; then
fi
-
### Checks for header files
# Pam
@@ -133,6 +132,7 @@ if test "x${have_pam}" = "xyes" ; then
[have_pam="no"])
fi
+AM_CONDITIONAL(HAVE_PAM, [test "x${have_pam}" = "xyes"])
### Checks for types
diff --git a/src/daemon/Makefile.am b/src/daemon/Makefile.am
index cf1cd72..7919d90 100644
--- a/src/daemon/Makefile.am
+++ b/src/daemon/Makefile.am
@@ -29,8 +29,6 @@ elsa_session.h \
elsa_session.c \
elsa_xserver.h \
elsa_xserver.c \
-elsa_pam.h \
-elsa_pam.c \
../event/elsa_event.c \
../event/elsa_event.h \
elsa_server.h \
@@ -42,6 +40,10 @@ elsa_action.c \
elsa.h \
elsa.c
+if HAVE_PAM
+elsa_SOURCES += elsa_pam.h elsa_pam.c
+endif
+
elsa_LDFLAGS =
elsa_LDADD = @ELSA_LIBS@ -lpam -lrt
diff --git a/src/daemon/elsa.c b/src/daemon/elsa.c
index 8bc243f..23f971d 100644
--- a/src/daemon/elsa.c
+++ b/src/daemon/elsa.c
@@ -278,7 +278,9 @@ main (int argc, char ** argv)
}
elsa_user = getenv("ELSA_USER");
+#ifdef HAVE_PAM
elsa_pam_init(PACKAGE, dname, elsa_user);
+#endif
if (elsa_user)
{
char *quit;
@@ -295,7 +297,9 @@ main (int argc, char ** argv)
exit(0);
}
sleep(3);
+#ifdef HAVE_PAM
elsa_pam_init(PACKAGE, dname, NULL);
+#endif
}
else
fprintf(stderr, "\n");
@@ -322,7 +326,9 @@ main (int argc, char ** argv)
xcb_connection_t *disp = NULL;
disp = xcb_connect(dname, NULL);
ecore_main_loop_begin();
+#ifdef HAVE_PAM
elsa_pam_item_set(ELSA_PAM_ITEM_USER, elsa_config->userlogin);
+#endif
elsa_session_login(elsa_config->command.session_login, EINA_FALSE);
sleep(30);
xcb_disconnect(disp);
@@ -347,8 +353,10 @@ main (int argc, char ** argv)
}
elsa_xserver_shutdown();
fprintf(stderr, PACKAGE": xserver shutdown\n");
+#ifdef HAVE_PAM
elsa_pam_shutdown();
fprintf(stderr, PACKAGE": pam shutdown\n");
+#endif
ecore_shutdown();
elsa_config_shutdown();
fprintf(stderr, PACKAGE": config shutdown\n");
diff --git a/src/daemon/elsa.h b/src/daemon/elsa.h
index 87d9f49..46f2584 100644
--- a/src/daemon/elsa.h
+++ b/src/daemon/elsa.h
@@ -13,7 +13,9 @@
#include <Ecore_File.h>
#include "elsa_session.h"
+#ifdef HAVE_PAM
#include "elsa_pam.h"
+#endif
#include "elsa_config.h"
#include "elsa_xserver.h"
#include "elsa_server.h"
diff --git a/src/daemon/elsa_session.c b/src/daemon/elsa_session.c
index 3da70b3..d926db9 100644
--- a/src/daemon/elsa_session.c
+++ b/src/daemon/elsa_session.c
@@ -91,7 +91,6 @@ _elsa_session_userid_set(struct passwd *pwd)
static Eina_Bool
_elsa_session_begin(struct passwd *pwd, const char *cookie)
{
- char *term;
fprintf(stderr, PACKAGE": Session Init\n");
if (pwd->pw_shell[0] == '\0')
{
@@ -99,7 +98,8 @@ _elsa_session_begin(struct passwd *pwd, const char *cookie)
strcpy(pwd->pw_shell, getusershell());
endusershell();
}
- term = getenv("TERM");
+#ifdef HAVE_PAM
+ char *term = getenv("TERM");
if (term) elsa_pam_env_set("TERM", term);
elsa_pam_env_set("HOME", pwd->pw_dir);
elsa_pam_env_set("SHELL", pwd->pw_shell);
@@ -109,6 +109,7 @@ _elsa_session_begin(struct passwd *pwd, const char *cookie)
elsa_pam_env_set("DISPLAY", ":0.0");
elsa_pam_env_set("MAIL", "");
elsa_pam_env_set("XAUTHORITY", cookie);
+#endif
return EINA_TRUE;
}
@@ -164,9 +165,11 @@ elsa_session_end(const char *user)
"%s %s ", elsa_config->command.session_stop, user);
if (-1 == system(buf))
fprintf(stderr, PACKAGE": Error on session stop command %s", buf);
+#ifdef HAVE_PAM
elsa_pam_close_session();
elsa_pam_end();
elsa_pam_shutdown();
+#endif
}
void
@@ -234,8 +237,12 @@ elsa_session_shutdown()
Eina_Bool
elsa_session_authenticate(const char *login, const char *passwd)
{
+#ifdef HAVE_PAM
return (!elsa_pam_auth_set(login, passwd)
&& !elsa_pam_authenticate());
+#else
+ return (EINA_TRUE);
+#endif
}
Eina_Bool
--
1.7.8.rc4
+1
View File
@@ -7,6 +7,7 @@ SECTION = "e/apps"
inherit e gettext
SRC_URI = "${E_SVN}/trunk/PROTO;module=${SRCNAME};proto=http;scmdata=keep \
file://0001-pam-use-common-auth-instead-of-system-auth.patch \
file://0001-elsa-fix-to-build-really-without-PAM-support-if-PAM-.patch \
file://xserver-nodm.service \
"
S = "${WORKDIR}/${SRCNAME}"