Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 4 May 2013 08:43:48 GMT
From:      Berend de Boer <berend@pobox.com>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   ports/178333: net/libnss-pgsql: allow user accounts to be stored in postgresql
Message-ID:  <201305040843.r448hmHT002601@red.freebsd.org>
Resent-Message-ID: <201305041130.r44BU3Rp064501@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         178333
>Category:       ports
>Synopsis:       net/libnss-pgsql: allow user accounts to be stored in postgresql
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          update
>Submitter-Id:   current-users
>Arrival-Date:   Sat May 04 11:30:03 UTC 2013
>Closed-Date:
>Last-Modified:
>Originator:     Berend de Boer
>Release:        9.1
>Organization:
Xplain Hosting
>Environment:
FreeBSD vfreebsd91 9.1-RELEASE FreeBSD 9.1-RELEASE #0 r243825: Tue Dec  4 09:23:10 UTC 2012     root@farrell.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  amd64
>Description:
Allow pgsql in /etc/nssswitch.conf, similar to libnss-mysql.
>How-To-Repeat:

>Fix:


Patch attached with submission follows:

# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#	libnss-pgsql
#	libnss-pgsql/files
#	libnss-pgsql/files/patch-configure.in
#	libnss-pgsql/files/patch-backend.c
#	libnss-pgsql/files/patch-nss-pgsql.h
#	libnss-pgsql/files/patch-freebsd.sym
#	libnss-pgsql/files/patch-interface.c
#	libnss-pgsql/files/patch-src-Makefile.am
#	libnss-pgsql/Makefile
#	libnss-pgsql/distinfo
#	libnss-pgsql/pkg-descr
#	libnss-pgsql/pkg-plist
#
echo c - libnss-pgsql
mkdir -p libnss-pgsql > /dev/null 2>&1
echo c - libnss-pgsql/files
mkdir -p libnss-pgsql/files > /dev/null 2>&1
echo x - libnss-pgsql/files/patch-configure.in
sed 's/^X//' >libnss-pgsql/files/patch-configure.in << '5b1b9743b35f2ea07dfc43c2d86b1e83'
X--- configure.ac	2006-01-10 15:35:34.000000000 +1300
X+++ configure.ac	2013-05-04 15:03:26.000000000 +1200
X@@ -26,7 +26,7 @@
X
X # Checks for header files.
X AC_HEADER_STDC
X-AC_CHECK_HEADERS([stdlib.h string.h unistd.h nss.h])
X+AC_CHECK_HEADERS([stdlib.h string.h unistd.h nss.h shadow.h])
X
X # Checks for typedefs, structures, and compiler characteristics.
X AC_C_CONST
5b1b9743b35f2ea07dfc43c2d86b1e83
echo x - libnss-pgsql/files/patch-backend.c
sed 's/^X//' >libnss-pgsql/files/patch-backend.c << 'd72dd59247c8f83f38a967e2ce1b4626'
X--- src/backend.c	2008-08-19 21:44:37.000000000 +1200
X+++ src/backend.c	2013-04-27 21:05:16.000000000 +1200
X@@ -11,7 +11,7 @@
X  */
X
X #include "nss-pgsql.h"
X-#include <postgresql/libpq-fe.h>
X+#include <libpq-fe.h>
X #include <stdlib.h>
X #include <string.h>
X #include <stdio.h>
d72dd59247c8f83f38a967e2ce1b4626
echo x - libnss-pgsql/files/patch-nss-pgsql.h
sed 's/^X//' >libnss-pgsql/files/patch-nss-pgsql.h << 'a689ec8ebd67804f9764de8cc5400e02'
X--- src/nss-pgsql.h	2006-01-10 11:33:07.000000000 +1300
X+++ src/nss-pgsql.h	2013-05-04 15:07:33.000000000 +1200
X@@ -15,9 +15,30 @@
X
X #  include <pwd.h>
X #  include <grp.h>
X+#ifdef HAVE_SHADOW_H
X #  include <shadow.h>
X+#endif
X #  include <sys/types.h>
X
X+#ifndef HAVE_SHADOW_H
X+/* Structure of the password file.  */
X+struct spwd
X+  {
X+    char *sp_namp;		/* Login name.  */
X+    char *sp_pwdp;		/* Encrypted password.  */
X+    long int sp_lstchg;		/* Date of last change.  */
X+    long int sp_min;		/* Minimum number of days between changes.  */
X+    long int sp_max;		/* Maximum number of days between changes.  */
X+    long int sp_warn;		/* Number of days to warn user to change
X+				   the password.  */
X+    long int sp_inact;		/* Number of days the account may be
X+				   inactive.  */
X+    long int sp_expire;		/* Number of days since 1970-01-01 until
X+				   account expires.  */
X+    unsigned long int sp_flag;	/* Reserved.  */
X+  };
X+#endif
X+
X #define CFGFILE SYSCONFDIR"/nss-pgsql.conf"
X #define CFGROOTFILE SYSCONFDIR"/nss-pgsql-root.conf"
X
a689ec8ebd67804f9764de8cc5400e02
echo x - libnss-pgsql/files/patch-freebsd.sym
sed 's/^X//' >libnss-pgsql/files/patch-freebsd.sym << '64a3be747f3d733b40fee405f82c7371'
X--- src/freebsd.sym	1970-01-01 12:00:00.000000000 +1200
X+++ src/freebsd.sym	2004-04-12 11:02:12.000000000 +1200
X@@ -0,0 +1 @@
X+nss_module_register
64a3be747f3d733b40fee405f82c7371
echo x - libnss-pgsql/files/patch-interface.c
sed 's/^X//' >libnss-pgsql/files/patch-interface.c << 'cb3fcae78a0be37fda871e16db8d1af7'
X--- /usr/ports/net/libnss-pgsql/work/libnss-pgsql-1.5.0-beta/src/interface.c	2008-08-19 21:44:37.000000000 +1200
X+++ src/interface.c	2013-05-04 14:30:42.000000000 +1200
X@@ -285,3 +285,57 @@
X 
X 	return retval;
X }
X+
X+/* Thanks to Clement Laforet for most of this */
X+#if defined(__FreeBSD__)
X+
X+NSS_METHOD_PROTOTYPE(__nss_compat_getpwnam_r);
X+NSS_METHOD_PROTOTYPE(__nss_compat_getpwuid_r);
X+NSS_METHOD_PROTOTYPE(__nss_compat_getpwent_r);
X+NSS_METHOD_PROTOTYPE(__nss_compat_setpwent);
X+NSS_METHOD_PROTOTYPE(__nss_compat_endpwent);
X+NSS_METHOD_PROTOTYPE(__nss_compat_getgrnam_r);
X+NSS_METHOD_PROTOTYPE(__nss_compat_getgrgid_r);
X+NSS_METHOD_PROTOTYPE(__nss_compat_getgrent_r);
X+NSS_METHOD_PROTOTYPE(__nss_compat_setgrent);
X+NSS_METHOD_PROTOTYPE(__nss_compat_endgrent);
X+
X+enum nss_status _nss_pgsql_getpwnam_r (const char *, struct passwd *, char *,
X+                                  size_t, int *);
X+enum nss_status _nss_pgsql_getpwuid_r (uid_t, struct passwd *, char *,
X+                                  size_t, int *);
X+enum nss_status _nss_pgsql_getpwent_r (struct passwd *, char *, size_t, int *);
X+enum nss_status _nss_pgsql_setpwent (void);
X+enum nss_status _nss_pgsql_endpwent (void);
X+
X+enum nss_status _nss_pgsql_getgrnam_r (const char *, struct group *, char *,
X+                                  size_t, int *);
X+enum nss_status _nss_pgsql_getgrgid_r (gid_t, struct group *, char *,
X+                                  size_t, int *);
X+enum nss_status _nss_pgsql_getgrent_r (struct group *, char *, size_t, int *);
X+enum nss_status _nss_pgsql_setgrent (void);
X+enum nss_status _nss_pgsql_endgrent (void);
X+
X+static ns_mtab methods[] = {
X+    { NSDB_PASSWD, "getpwnam_r", __nss_compat_getpwnam_r, _nss_pgsql_getpwnam_r },
X+    { NSDB_PASSWD, "getpwuid_r", __nss_compat_getpwuid_r, _nss_pgsql_getpwuid_r },
X+    { NSDB_PASSWD, "getpwent_r", __nss_compat_getpwent_r, _nss_pgsql_getpwent_r },
X+    { NSDB_PASSWD, "endpwent",   __nss_compat_setpwent,   _nss_pgsql_setpwent },
X+    { NSDB_PASSWD, "setpwent",   __nss_compat_endpwent,   _nss_pgsql_endpwent },
X+    { NSDB_GROUP,  "getgrnam_r", __nss_compat_getgrnam_r, _nss_pgsql_getgrnam_r },
X+    { NSDB_GROUP,  "getgrgid_r", __nss_compat_getgrgid_r, _nss_pgsql_getgrgid_r },
X+    { NSDB_GROUP,  "getgrent_r", __nss_compat_getgrent_r, _nss_pgsql_getgrent_r },
X+    { NSDB_GROUP,  "endgrent",   __nss_compat_setgrent,   _nss_pgsql_setgrent },
X+    { NSDB_GROUP,  "setgrent",   __nss_compat_endgrent,   _nss_pgsql_endgrent },
X+};
X+
X+ns_mtab *
X+nss_module_register (const char *name, unsigned int *size,
X+                     nss_module_unregister_fn *unregister)
X+{
X+    *size = sizeof (methods) / sizeof (methods[0]);
X+    *unregister = NULL;
X+    return (methods);
X+}
X+
X+#endif /* defined(__FreeBSD__) */
cb3fcae78a0be37fda871e16db8d1af7
echo x - libnss-pgsql/files/patch-src-Makefile.am
sed 's/^X//' >libnss-pgsql/files/patch-src-Makefile.am << '2a3adefac0281151caaf5c6797d7bea8'
X--- src/Makefile.am	2006-01-10 13:07:32.000000000 +1300
X+++ src/Makefile.am	2013-05-04 15:02:08.000000000 +1200
X@@ -1,5 +1,4 @@
X lib_LTLIBRARIES = libnss_pgsql.la
X libnss_pgsql_la_SOURCES = interface.c config.c backend.c util.c
X-libnss_pgsql_la_LDFLAGS = -module -version-info 2
X+libnss_pgsql_la_LDFLAGS = -module -version-info 2 -export-symbols $(srcdir)/freebsd.sym
X EXTRA_DIST = nss-pgsql.h
X-
2a3adefac0281151caaf5c6797d7bea8
echo x - libnss-pgsql/Makefile
sed 's/^X//' >libnss-pgsql/Makefile << '11a997cc07f18b86271f02b244bc060d'
X# Created by: Berend de Boer <berend@pobox.com>
X# $FreeBSD$
X#
X
XPORTNAME=	libnss-pgsql
XPORTVERSION=	1.5.0
XPORTREVISION=	1
XCATEGORIES=	security net
XMASTER_SITES=	http://pgfoundry.org/frs/download.php/1878/
XDISTNAME=	${PORTNAME}-${PORTVERSION}-beta
X
XMAINTAINER=	berend@pobox.com
XCOMMENT=	NSS module using a PostgreSQL database for backend
X
XBUILD_DEPENDS=	${LOCALBASE}/bin/xmlto:${PORTSDIR}/textproc/xmlto
X
XUSE_PGSQL=	yes
XUSE_AUTOTOOLS=	libtool autoconf
XCONFIGURE_ARGS=	--sysconfdir=${PREFIX}/etc --includedir=${PREFIX}/include --libdir=${PREFIX}/lib
XUSE_LDCONFIG=	yes
XGNU_CONFIGURE=	yes
XUSE_GMAKE=	yes
XUSE_PGSQL=	yes
X
Xpost-install:
X.if !defined(PORT_OPTIONS:MDOCS)
X	@${MKDIR} ${DOCSDIR}
X	@${INSTALL_DATA} ${WRKSRC}/README ${DOCSDIR}
X	@${INSTALL_DATA} ${WRKSRC}/conf/nss-pgsql-root.conf ${PREFIX}/etc/nss-pgsql-root.conf.dist
X	@${INSTALL_DATA} ${WRKSRC}/conf/nss-pgsql.conf ${PREFIX}/etc/nss-pgsql.conf.dist
X.endif
X
X.include <bsd.port.mk>
11a997cc07f18b86271f02b244bc060d
echo x - libnss-pgsql/distinfo
sed 's/^X//' >libnss-pgsql/distinfo << '394b14bef0d8a841bf6abda7ac83ea56'
XSHA256 (libnss-pgsql-1.5.0-beta.tar.gz) = 84808c47fd21a09e2c487a0efc72cc18b352275082335be8c6de39d325e6c000
XSIZE (libnss-pgsql-1.5.0-beta.tar.gz) = 305543
394b14bef0d8a841bf6abda7ac83ea56
echo x - libnss-pgsql/pkg-descr
sed 's/^X//' >libnss-pgsql/pkg-descr << '8abaaed3ac781e358ba0af8fa990d1b6'
XlibNSS-PostgreSQL allows you to authenticate UNIX groups and users
Xusing a PostgreSQL database. It uses the NSS API which provides an
Xabstraction layer between the UNIX authentication API and the related
Xdata. NSS-PostgreSQL currently supports the passwd and groups services.
X
XNote that on FreeBSD the order in /etc/nssswitch must be:
X
X  group: pgsql files
X  passwd: pgsql files
X
XSo pgsql must be first, files last.
X
XWWW: http://pgfoundry.org/projects/sysauth/
8abaaed3ac781e358ba0af8fa990d1b6
echo x - libnss-pgsql/pkg-plist
sed 's/^X//' >libnss-pgsql/pkg-plist << '1e51cc1ba5abdaff5929bd79ca921ae7'
Xetc/nss-pgsql.conf.dist
Xetc/nss-pgsql-root.conf.dist
Xlib/libnss_pgsql.a
Xlib/libnss_pgsql.la
Xlib/libnss_pgsql.so
Xlib/libnss_pgsql.so.2
1e51cc1ba5abdaff5929bd79ca921ae7
exit



>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201305040843.r448hmHT002601>