From: Art Cancro Date: Thu, 27 Apr 2023 21:54:19 +0000 (-0400) Subject: We are no longer using the EXTAUTH table. X-Git-Tag: v976~18 X-Git-Url: https://code.citadel.org/?a=commitdiff_plain;h=389e6540f7c99c5729b6f8c3d66b8aec57f6e189;p=citadel.git We are no longer using the EXTAUTH table. Perhaps in the future it will return in some other form. LDAP auth still uses the uid, so we're searching for that the old way. --- diff --git a/citadel/server/citadel_defs.h b/citadel/server/citadel_defs.h index ee05b19ee..744408141 100644 --- a/citadel/server/citadel_defs.h +++ b/citadel/server/citadel_defs.h @@ -21,7 +21,7 @@ #include "typesize.h" #include "ipcdef.h" -#define REV_LEVEL 972 // This version +#define REV_LEVEL 973 // This version #define REV_MIN 591 // Oldest compatible database #define EXPORT_REV_MIN 931 // Oldest compatible export files #define LIBCITADEL_MIN 951 // Minimum required version of libcitadel diff --git a/citadel/server/modules/upgrade/serv_upgrade.c b/citadel/server/modules/upgrade/serv_upgrade.c index 6db895833..4c25352c8 100644 --- a/citadel/server/modules/upgrade/serv_upgrade.c +++ b/citadel/server/modules/upgrade/serv_upgrade.c @@ -478,10 +478,12 @@ void pre_startup_upgrades(void) { CtdlPutRoom(&QRoom); } } - if ((oldver > 000) && (oldver < 902)) { ingest_old_roominfo_and_roompic_files(); } + if ((oldver > 000) && (oldver < 973)) { // This was the old extauth table. + cdb_trunc(CDB_UNUSED1); // We will do this better someday. + } CtdlSetConfigInt("MM_hosted_upgrade_level", REV_LEVEL); diff --git a/citadel/server/user_ops.c b/citadel/server/user_ops.c index a47e5a987..99bf5b022 100644 --- a/citadel/server/user_ops.c +++ b/citadel/server/user_ops.c @@ -419,22 +419,32 @@ void rebuild_usersbynumber(void) { } -// Helper function for getuserbyuid() -void getuserbyuid_backend(char *username, void *data) { - struct ctdluser u; - syslog(LOG_DEBUG, "user_ops: FIXME %s", username); -} - - // getuserbyuid() Get user by system uid (for PAM mode authentication) // Returns 0 if user was found -// TODO: make an index so we don't have to do this the long way int getuserbyuid(struct ctdluser *usbuf, uid_t number) { - ForEachUser(getuserbyuid_backend, NULL); + struct cdbdata *cdbus; + struct ctdluser *usptr; + int return_value = (-1); + + // Yes, we do this the long way. + // No, we don't use CtdlForEachUser() because that requires multiple reads for each record + // TODO: make an index + cdb_rewind(CDB_USERS); + while (cdbus = cdb_next_item(CDB_USERS), cdbus != NULL) { + usptr = (struct ctdluser *) cdbus->ptr; - //return(CtdlGetUser(usbuf, key)); - return(-1); + if (usptr->uid == number) { + syslog(LOG_DEBUG, "user_ops: found uid=%d username=%s", usptr->uid, usptr->fullname); + memcpy(usbuf, usptr, sizeof(struct ctdluser)); + return_value = 0; // success + } + } + + if (return_value != 0) { + syslog(LOG_DEBUG, "user_ops: no user found with uid=%d", number); + } + return(return_value); }