• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1dnl
2dnl PAM stuff for CUPS.
3dnl
4dnl Copyright © 2020-2024 by OpenPrinting.
5dnl Copyright © 2007-2017 by Apple Inc.
6dnl Copyright © 1997-2005 by Easy Software Products, all rights reserved.
7dnl
8dnl Licensed under Apache License v2.0.  See the file "LICENSE" for more
9dnl information.
10dnl
11
12AC_ARG_ENABLE([pam], AS_HELP_STRING([--disable-pam], [disable PAM support]))
13AC_ARG_WITH([pam_module], AS_HELP_STRING([--with-pam-module], [set the PAM module to use]))
14
15PAMDIR=""
16PAMFILE="pam.std"
17PAMLIBS=""
18PAMMOD="pam_unknown.so"
19PAMMODAUTH="pam_unknown.so"
20
21AS_IF([test x$enable_pam != xno], [
22    SAVELIBS="$LIBS"
23
24    AC_CHECK_LIB([dl], [dlopen])
25    AC_CHECK_LIB([pam], [pam_start])
26    AC_CHECK_LIB([pam], [pam_set_item], [
27        AC_DEFINE([HAVE_PAM_SET_ITEM], [1], [Have pam_set_item function?])
28    ])
29    AC_CHECK_LIB([pam], [pam_setcred], [
30        AC_DEFINE([HAVE_PAM_SETCRED], [1], [Have pam_setcred function?])
31    ])
32    AC_CHECK_HEADER([security/pam_appl.h])
33    AS_IF([test x$ac_cv_header_security_pam_appl_h != xyes], [
34	AC_CHECK_HEADER([pam/pam_appl.h], [
35	    AC_DEFINE([HAVE_PAM_PAM_APPL_H], [1], [Have <pam/pam_appl.h> header?])
36	])
37    ])
38
39    AS_IF([test x$ac_cv_lib_pam_pam_start != xno], [
40	# Set the necessary libraries for PAM...
41	AS_IF([test x$ac_cv_lib_dl_dlopen != xno], [
42	    PAMLIBS="-lpam -ldl"
43	], [
44	    PAMLIBS="-lpam"
45	])
46
47	# Find the PAM configuration directory, if any...
48	for dir in /private/etc/pam.d /etc/pam.d; do
49	    AS_IF([test -d $dir], [
50		PAMDIR="$dir"
51		break;
52	    ])
53	done
54    ])
55
56    LIBS="$SAVELIBS"
57
58    AS_CASE(["$host_os_name"], [darwin*], [
59	# Darwin/macOS
60	AS_IF([test "x$with_pam_module" != x], [
61	    PAMFILE="pam.$with_pam_module"
62	], [test -f /usr/lib/pam/pam_opendirectory.so.2], [
63	    PAMFILE="pam.opendirectory"
64	], [
65	    PAMFILE="pam.securityserver"
66	])
67    ], [*], [
68	# All others; this test might need to be updated
69	# as Linux distributors move things around...
70	AS_IF([test "x$with_pam_module" != x], [
71	    PAMMOD="pam_${with_pam_module}.so"
72	], [test -f /etc/pam.d/common-auth], [
73	    PAMFILE="pam.common"
74	], [test -f /etc/pam.d/password-auth], [
75	    PAMFILE="pam.password"
76	], [test -f /etc/pam.d/system-auth], [
77	    PAMFILE="pam.system"
78	], [
79	    moddir=""
80	    for dir in /lib/security /lib64/security /lib/x86_64-linux-gnu/security /var/lib/pam; do
81		AS_IF([test -d $dir], [
82		    moddir="$dir"
83		    break;
84		])
85	    done
86
87	    AS_IF([test -f $moddir/pam_unix2.so], [
88		PAMMOD="pam_unix2.so"
89	    ], [test -f $moddir/pam_unix.so], [
90		PAMMOD="pam_unix.so"
91	    ])
92	])
93
94	AS_IF([test "x$PAMMOD" = xpam_unix.so], [
95	    PAMMODAUTH="$PAMMOD shadow nodelay"
96	], [
97	    PAMMODAUTH="$PAMMOD nodelay"
98	])
99    ])
100])
101
102AC_SUBST([PAMDIR])
103AC_SUBST([PAMFILE])
104AC_SUBST([PAMLIBS])
105AC_SUBST([PAMMOD])
106AC_SUBST([PAMMODAUTH])
107