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>