It is present on all UNIX systems anyway, so let's simplify things. We will need it for more proper session startup anyway.tags/v1.10.90
@@ -32,6 +32,7 @@ Build Requirements (Unix) | |||
-- Non-Mac platforms: | |||
* X11 development kit | |||
* PAM | |||
-- If building Xvnc/libvnc.so: | |||
* Xorg server source code, 1.7 or never |
@@ -263,8 +263,7 @@ if(ENABLE_GNUTLS) | |||
endif() | |||
# Check for PAM library | |||
option(ENABLE_PAM "Enable PAM authentication support" ON) | |||
if(ENABLE_PAM) | |||
if(UNIX AND NOT APPLE) | |||
check_include_files(security/pam_appl.h HAVE_PAM_H) | |||
set(CMAKE_REQUIRED_LIBRARIES -lpam) | |||
check_function_exists(pam_start HAVE_PAM_START) | |||
@@ -272,10 +271,9 @@ if(ENABLE_PAM) | |||
if(HAVE_PAM_H AND HAVE_PAM_START) | |||
set(PAM_LIBS pam) | |||
else() | |||
set(ENABLE_PAM 0) | |||
message(FATAL_ERROR "Could not find PAM development files") | |||
endif() | |||
endif() | |||
set(HAVE_PAM ${ENABLE_PAM}) | |||
# Generate config.h and make sure the source finds it | |||
configure_file(config.h.in config.h) |
@@ -75,7 +75,7 @@ endif(WIN32) | |||
set(RFB_LIBRARIES ${JPEG_LIBRARIES} os rdr Xregion) | |||
if(HAVE_PAM) | |||
if(UNIX AND NOT APPLE) | |||
set(RFB_SOURCES ${RFB_SOURCES} UnixPasswordValidator.cxx | |||
UnixPasswordValidator.h pam.c pam.h) | |||
set(RFB_LIBRARIES ${RFB_LIBRARIES} ${PAM_LIBS}) |
@@ -25,10 +25,10 @@ | |||
#include <rfb/SConnection.h> | |||
#include <rfb/Exception.h> | |||
#include <rdr/InStream.h> | |||
#ifdef HAVE_PAM | |||
#if !defined(WIN32) && !defined(__APPLE__) | |||
#include <rfb/UnixPasswordValidator.h> | |||
#endif | |||
#ifdef BUILD_WIN | |||
#ifdef WIN32 | |||
#include <rfb/WinPasswdValidator.h> | |||
#endif | |||
@@ -62,10 +62,10 @@ bool PasswordValidator::validUser(const char* username) | |||
SSecurityPlain::SSecurityPlain(SConnection* sc) : SSecurity(sc) | |||
{ | |||
#ifdef HAVE_PAM | |||
valid = new UnixPasswordValidator(); | |||
#elif BUILD_WIN | |||
#ifdef WIN32 | |||
valid = new WinPasswdValidator(); | |||
#elif !defined(__APPLE__) | |||
valid = new UnixPasswordValidator(); | |||
#else | |||
valid = NULL; | |||
#endif |
@@ -25,9 +25,7 @@ | |||
#include <rfb/Configuration.h> | |||
#include <rfb/Exception.h> | |||
#include <rfb/UnixPasswordValidator.h> | |||
#ifdef HAVE_PAM | |||
#include <rfb/pam.h> | |||
#endif | |||
using namespace rfb; | |||
@@ -43,10 +41,6 @@ bool UnixPasswordValidator::validateInternal(SConnection * sc, | |||
const char *username, | |||
const char *password) | |||
{ | |||
#ifdef HAVE_PAM | |||
CharArray service(strDup(pamService.getData())); | |||
return do_pam_auth(service.buf, username, password); | |||
#else | |||
throw AuthFailureException("PAM not supported"); | |||
#endif | |||
} |
@@ -22,10 +22,6 @@ | |||
#include <config.h> | |||
#endif | |||
#ifndef HAVE_PAM | |||
#error "This source should not be compiled when PAM is unsupported" | |||
#endif | |||
#include <stdlib.h> | |||
#include <string.h> | |||
#include <security/pam_appl.h> |
@@ -21,14 +21,6 @@ | |||
#ifndef __RFB_PAM_H__ | |||
#define __RFB_PAM_H__ | |||
#ifdef HAVE_CONFIG_H | |||
#include <config.h> | |||
#endif | |||
#ifndef HAVE_PAM | |||
#error "This header should not be included when PAM is unsupported" | |||
#endif | |||
#ifdef __cplusplus | |||
extern "C" { | |||
#endif |
@@ -4,7 +4,6 @@ | |||
#cmakedefine HAVE_ACTIVE_DESKTOP_H | |||
#cmakedefine HAVE_ACTIVE_DESKTOP_L | |||
#cmakedefine ENABLE_NLS 1 | |||
#cmakedefine HAVE_PAM | |||
#cmakedefine DATA_DIR "@DATA_DIR@" | |||
#cmakedefine LOCALE_DIR "@LOCALE_DIR@" |