From efac24b10ee1df25d2e9db35b26d848d8ffc9e6c Mon Sep 17 00:00:00 2001 From: David Sommerseth Date: Wed, 29 May 2013 19:51:19 +0200 Subject: eurephiadm/usercerts: Add support for setting up auth-plugins This enables setting authentication plug-in and the alternative authentication username for user-certificate links. Signed-off-by: David Sommerseth --- database/sqlite/administration/usercerts.c | 14 ++++++++++++-- database/sqlite/fieldmapping.h | 2 ++ 2 files changed, 14 insertions(+), 2 deletions(-) (limited to 'database/sqlite') diff --git a/database/sqlite/administration/usercerts.c b/database/sqlite/administration/usercerts.c index d6f8721..581514a 100644 --- a/database/sqlite/administration/usercerts.c +++ b/database/sqlite/administration/usercerts.c @@ -84,11 +84,13 @@ xmlDoc *usercerts_search(eurephiaCTX *ctx, eDBfieldMap *where_m, const char *sor "SELECT uicid, ucs.uid AS uid, certid, locdt(ucs.registered) AS registered," " ucs.accessprofile AS accessprofile, access_descr," " username, " - " common_name, organisation, email, lower(digest), depth " + " common_name, organisation, email, lower(digest), depth, " + " authplugin, plgname, authusername" " FROM openvpn_usercerts ucs" " LEFT JOIN openvpn_certificates USING(certid)" " LEFT JOIN openvpn_accesses acc ON(ucs.accessprofile = acc.accessprofile)" - " LEFT JOIN openvpn_users u ON(u.uid = ucs.uid)", + " LEFT JOIN openvpn_users u ON(u.uid = ucs.uid)" + " LEFT JOIN eurephia_plugins plg ON(ucs.authplugin = plg.plgid)", NULL, // values (not used for SELECT) where_m, // fields and values for the WHERE clause dbsort); @@ -130,6 +132,14 @@ xmlDoc *usercerts_search(eurephiaCTX *ctx, eDBfieldMap *where_m, const char *sor tmp_n = sqlite_xml_value(link_n, XML_NODE, "access_profile", res, i, 5); sqlite_xml_value(tmp_n, XML_ATTR, "accessprofile", res, i, 4); + + // Add optional authentication plug-in info + if( atoi_nullsafe(sqlite_get_value(res, i, 12)) > 0 ) { + tmp_n = xmlNewChild(link_n, NULL, (xmlChar *) "authplugin", NULL); + sqlite_xml_value(tmp_n, XML_ATTR, "authplugid", res, i, 12); + sqlite_xml_value(tmp_n, XML_NODE, "description", res, i, 13); + sqlite_xml_value(tmp_n, XML_NODE, "auth_username", res, i, 14); + } } sqlite_free_results(res); diff --git a/database/sqlite/fieldmapping.h b/database/sqlite/fieldmapping.h index 2f25b87..64ea65d 100644 --- a/database/sqlite/fieldmapping.h +++ b/database/sqlite/fieldmapping.h @@ -64,6 +64,8 @@ static eDBfieldMap tbl_sqlite_usercerts[] = { {TABLE_USERCERTS, NULL, FIELD_UID, ft_INT, flt_NOTSET, "uid", NULL, NULL}, {TABLE_USERCERTS, NULL, FIELD_CERTID, ft_INT, flt_NOTSET, "certid", NULL, NULL}, {TABLE_USERCERTS, NULL, FIELD_ACCPROFILE, ft_INT, flt_NOTSET, "accessprofile", NULL, NULL}, + {TABLE_USERCERTS, NULL, FIELD_PLUGIN, ft_INT, flt_NOTSET, "authplugin", NULL, NULL}, + {TABLE_USERCERTS, NULL, FIELD_UNAME, ft_STRING,flt_NOTSET,"authusername", NULL, NULL}, {TABLE_USERCERTS, NULL, FIELD_REGISTERED, ft_INT, flt_NOTSET, "registered", NULL, NULL}, {TABLE_USERCERTS, NULL, FIELD_RECID, ft_INT, flt_NOTSET, "uicid", NULL, NULL}, {0, NULL, FIELD_NONE, ft_UNDEF, flt_NOTSET, NULL, NULL, NULL} -- cgit