It is present on all UNIX systems anyway, so let's simplify things.
We will need it for more proper session startup anyway.
-- Non-Mac platforms:
* X11 development kit
+ * PAM
-- If building Xvnc/libvnc.so:
* Xorg server source code, 1.7 or never
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)
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)
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})
#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
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
#include <rfb/Configuration.h>
#include <rfb/Exception.h>
#include <rfb/UnixPasswordValidator.h>
-#ifdef HAVE_PAM
#include <rfb/pam.h>
-#endif
using namespace rfb;
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
}
#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>
#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
#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@"