1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
Index: vmm/pgsql/nss-pgsql.conf
===================================================================
--- /dev/null
+++ vmm/pgsql/nss-pgsql.conf
@@ -0,0 +1,19 @@
+connectionstring = hostaddr=127.0.0.1 dbname=mailsys user=nss password=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx connect_timeout=1
+
+# you can use anything postgres accepts as table expression
+
+# Must return "usernames", 1 column, list
+getgroupmembersbygid = SELECT local_part||'%'||domainname AS name FROM users JOIN domain_name USING (gid) WHERE gid = $1 AND is_primary
+# Must return passwd_name, passwd_passwd, passwd_gecos, passwd_dir, passwd_shell, passwd_uid, passwd_gid
+getpwnam = SELECT local_part||'%'||domainname AS name, '*' AS passwd, 'vmm virtual user' AS gecos, domaindir ||'/'||uid AS homedir, '/bin/true' AS shell, uid, gid FROM users JOIN domain_data USING (gid) JOIN domain_name USING (gid) WHERE local_part = split_part($1, '%', 1) AND domainname = split_part($1, '%', 2) AND is_primary
+# Must return passwd_name, passwd_passwd, passwd_gecos, passwd_dir, passwd_shell, passwd_uid, passwd_gid
+getpwuid = SELECT local_part||'%'||domainname AS name, '*' AS passwd, 'vmm virtual user' AS gecos, domaindir ||'/'||uid AS homedir, '/bin/true' AS shell, uid, gid FROM users JOIN domain_data USING (gid) JOIN domain_name USING (gid) WHERE uid = $1 AND is_primary
+# All users
+allusers = SELECT local_part||'%'||domainname AS name, '*' AS passwd, 'vmm virtual user' AS gecos, domaindir ||'/'||uid AS homedir, '/bin/true' AS shell, uid, gid FROM users JOIN domain_data USING (gid) JOIN domain_name USING (gid) WHERE is_primary = 't'
+# Must return group_name, group_passwd, group_gid
+getgrnam = SELECT domainname, '*' AS passwd, gid, NULL AS members FROM domain_name WHERE domainname = $1 and is_primary
+# Must return group_name, group_passwd, group_gid
+getgrgid = SELECT domainname, '*' AS passwd, gid, NULL AS members FROM domain_name WHERE gid = $1 and is_primary
+# Must return gid. %s MUST appear first for username match in where clause
+groups_dyn = SELECT domainname, '*' AS passwd, n.gid, NULL AS members FROM domain_name n JOIN users u on (n.gid=u.gid) WHERE n.is_primary AND u.local_part||'%'||n.domainname = $1 and n.gid <> $2
+allgroups = SELECT domainname, '*' AS passwd, gid, NULL AS members FROM domain_name WHERE is_primary
|