PKG_CHECK_MODULES(IKSEMEL, iksemel, , AC_MSG_ERROR(Could not find iksemel))
PKG_CHECK_MODULES(GSASL, libgsasl >= 0.2.0, , AC_MSG_ERROR(Could not find gsasl))
PKG_CHECK_MODULES(GNUTLS, gnutls >= 1.4.0, , AC_MSG_ERROR(Could not find gnutls))
-LIBS="$GNUTLS_LIBS $GSASL_LIBS $GNET_LIBS $IKSEMEL_LIBS $LIBS"
-CFLAGS="$GNUTLS_CFLAGS $GSASL_CFLAGS $GNET_CFLAGS $IKSEMEL_CFLAGS $CFLAGS"
+PKG_CHECK_MODULES(QDBM, qdbm, , AC_MSG_ERROR(Could not find qdbm))
+LIBS="$GNUTLS_LIBS $GSASL_LIBS $GNET_LIBS $IKSEMEL_LIBS $QDBM_LIBS $LIBS"
+CFLAGS="$GNUTLS_CFLAGS $GSASL_CFLAGS $GNET_CFLAGS $IKSEMEL_CFLAGS $QDBM_CFLAGS $CFLAGS"
if test "${sysconfdir}x" = '${prefix}/etcx'; then
if test "${prefix}x" = 'NONEx'; then
AC_DEFINE_UNQUOTED(SYSCONFDIR, "${ac_default_prefix}/etc")
*/
#include <string.h>
+#include <depot.h>
#include "usermap.h"
int
usermap_perm (char *user)
{
+ static DEPOT* allow_dp = NULL;
+ static DEPOT* deny_dp = NULL;
+ char* allow = NULL;
+ char* deny = NULL;
+ if (allow_dp == NULL)
+ {
+ allow_dp = dpopen ("/var/lib/popproxy/allow.db", DP_OREADER, 0);
+ }
+ if (deny_dp == NULL)
+ {
+ deny_dp = dpopen ("/var/lib/popproxy/allow.db", DP_OREADER, 0);
+ }
+ if (allow_dp)
+ allow = dpget (allow_dp, user, -1, 0, -1, NULL);
+ if (deny_dp)
+ deny = dpget (deny_dp, user, -1, 0, -1, NULL);
+ if (allow && deny)
+ {
+ free (allow);
+ free (deny);
+ return ACCESS_DENY;
+ }
+ if (allow)
+ {
+ free (allow);
+ return ACCESS_ALLOW;
+ }
+ if (deny)
+ {
+ free (deny);
+ return ACCESS_DENY;
+ }
+ if (!allow_dp)
+ return ACCESS_ALLOW;
return ACCESS_DENY;
}