X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fmodules%2Fupgrade%2Fserv_upgrade.c;h=4311504a4e94346fddaaa339b8000a00978cd81d;hb=bdfa2e9b6af7e32b11461433a28dd6551f830888;hp=0e68f3b161966a8478ed3308f3b3654f4ef957b3;hpb=acd05be0127a5c9d498d5fd069cfac60410f17b5;p=citadel.git diff --git a/citadel/modules/upgrade/serv_upgrade.c b/citadel/modules/upgrade/serv_upgrade.c index 0e68f3b16..4311504a4 100644 --- a/citadel/modules/upgrade/serv_upgrade.c +++ b/citadel/modules/upgrade/serv_upgrade.c @@ -4,7 +4,7 @@ * guesses about what kind of data format changes need to be applied, and * we apply them transparently. * - * Copyright (c) 1987-2017 by the citadel.org team + * Copyright (c) 1987-2019 by the citadel.org team * * This program is open source software; you can redistribute it and/or * modify it under the terms of the GNU General Public License version 3. @@ -94,7 +94,7 @@ void fix_sys_user_name(void) { if (strncmp(usbuf.fullname, "SYS_", 4)) { /* Delete any user 0 that doesn't start with SYS_ */ - makeuserkey(usernamekey, usbuf.fullname, cutuserkey(usbuf.fullname)); + makeuserkey(usernamekey, usbuf.fullname, cutusername(usbuf.fullname)); cdb_delete(CDB_USERS, usernamekey, strlen(usernamekey)); } else { @@ -142,10 +142,6 @@ void reindex_uids_backend(struct ctdluser *usbuf, void *data) { } CtdlPutUserLock(&us); if ((us.uid > 0) && (us.uid != NATIVE_AUTH_UID)) { // if non-native auth , index by uid - - syslog(LOG_DEBUG, "\033[31m attaching %d to %s \033[0m", us.uid , us.fullname); - - StrBuf *claimed_id = NewStrBuf(); StrBufPrintf(claimed_id, "uid:%d", us.uid); attach_extauth(&us, claimed_id); @@ -159,6 +155,7 @@ void reindex_uids_backend(struct ctdluser *usbuf, void *data) { } } + /* * Build extauth index of all users with uid-based join (system auth, LDAP auth) * Also changes all users with a uid of CTDLUID to NATIVE_AUTH_UID (-1) @@ -171,7 +168,6 @@ void reindex_uids(void) { } - /* * These accounts may have been created by code that ran between mid 2008 and early 2011. * If present they are no longer in use and may be deleted. @@ -494,16 +490,9 @@ void miafvtur_backend(struct ctdluser *usbuf, void *data) { } /* this is the calling mode where we do the processing */ - int i; - struct ctdluser u; - for (i=0; i = <%s>", m[i].name, m[i].emails); - if (CtdlGetUser(&u, m[i].name) == 0) { - safestrncpy(u.emailaddrs, m[i].emails, sizeof u.emailaddrs); - CtdlPutUser(&u); - } + CtdlSetEmailAddressesForUser(m[i].name, m[i].emails); } free(m); num_m = 0; @@ -512,6 +501,38 @@ void miafvtur_backend(struct ctdluser *usbuf, void *data) { } +/* + * If our system still has a "refcount_adjustments.dat" sitting around from an old version, ingest it now. + */ +int ProcessOldStyleAdjRefCountQueue(void) +{ + int r; + FILE *fp; + struct arcq arcq_rec; + int num_records_processed = 0; + + fp = fopen(file_arcq, "rb"); + if (fp == NULL) { + return(num_records_processed); + } + + syslog(LOG_INFO, "msgbase: ingesting %s", file_arcq); + + while (fread(&arcq_rec, sizeof(struct arcq), 1, fp) == 1) { + AdjRefCount(arcq_rec.arcq_msgnum, arcq_rec.arcq_delta); + ++num_records_processed; + } + + fclose(fp); + r = unlink(file_arcq); + if (r != 0) { + syslog(LOG_ERR, "%s: %m", file_arcq); + } + + return(num_records_processed); +} + + /* * Prior to version 912 we kept a user's various Internet email addresses in their vCards. * This function moves them over to the user record, which is where we keep them now. @@ -528,14 +549,14 @@ void move_inet_addrs_from_vcards_to_user_records(void) * Based on the server version number reported by the existing database, * run in-place data format upgrades until everything is up to date. */ -void check_server_upgrades(void) { +void pre_startup_upgrades(void) { oldver = CtdlGetConfigInt("MM_hosted_upgrade_level"); syslog(LOG_INFO, "Existing database version on disk is %d", oldver); update_config(); if (oldver < REV_LEVEL) { - syslog(LOG_WARNING, "Server hosted updates need to be processed at this time. Please wait..."); + syslog(LOG_WARNING, "Running pre-startup database upgrades."); } else { return; @@ -572,10 +593,6 @@ void check_server_upgrades(void) { ingest_old_roominfo_and_roompic_files(); } - if ((oldver > 000) && (oldver < 912)) { - move_inet_addrs_from_vcards_to_user_records(); - } - CtdlSetConfigInt("MM_hosted_upgrade_level", REV_LEVEL); /* @@ -596,10 +613,46 @@ void check_server_upgrades(void) { } +/* + * Based on the server version number reported by the existing database, + * run in-place data format upgrades until everything is up to date. + */ +void post_startup_upgrades(void) { + + syslog(LOG_INFO, "Existing database version on disk is %d", oldver); + + if (oldver < REV_LEVEL) { + syslog(LOG_WARNING, "Running post-startup database upgrades."); + } + else { + return; + } + + if ((oldver > 000) && (oldver < 912)) { + move_inet_addrs_from_vcards_to_user_records(); + } + + if ((oldver > 000) && (oldver < 922)) { + ProcessOldStyleAdjRefCountQueue(); + } +} + + CTDL_MODULE_UPGRADE(upgrade) { - check_server_upgrades(); + pre_startup_upgrades(); /* return our module id for the Log */ return "upgrade"; } + +CTDL_MODULE_INIT(upgrade) +{ + if(!threading) + { + post_startup_upgrades(); + } + + /* return our module name for the log */ + return "upgrade"; +}