From: Art Cancro Date: Thu, 7 Sep 2023 13:58:36 +0000 (-0400) Subject: TDAP: consolidated transcripts to a single summary X-Git-Tag: v994~7 X-Git-Url: https://code.citadel.org/?p=citadel.git;a=commitdiff_plain;h=4d04a24d436bc390543274aebdae5f4d24f788dc TDAP: consolidated transcripts to a single summary --- diff --git a/citadel/server/modules/expire/serv_expire.c b/citadel/server/modules/expire/serv_expire.c index fb00e3d64..657cfd0d9 100644 --- a/citadel/server/modules/expire/serv_expire.c +++ b/citadel/server/modules/expire/serv_expire.c @@ -80,8 +80,6 @@ struct ValidRoom *ValidRoomList = NULL; struct ValidUser *ValidUserList = NULL; int messages_purged; int users_not_purged; -char *users_corrupt_msg = NULL; -char *users_zero_msg = NULL; struct ctdlroomref *rr = NULL; int force_purge_now = 0; // set to nonzero to force a run right now @@ -284,7 +282,6 @@ int PurgeRooms(void) { int num_rooms_purged = 0; struct ctdlroom qrbuf; struct ValidUser *vuptr; - char *transcript = NULL; syslog(LOG_DEBUG, "PurgeRooms() called"); @@ -302,13 +299,8 @@ int PurgeRooms(void) { ValidUserList = vuptr; } - transcript = malloc(SIZ); - strcpy(transcript, "The following rooms have been auto-purged:\n"); - while (RoomPurgeList != NULL) { if (CtdlGetRoom(&qrbuf, RoomPurgeList->name) == 0) { - transcript=realloc(transcript, strlen(transcript)+SIZ); - snprintf(&transcript[strlen(transcript)], SIZ, " %s\n", qrbuf.QRname); CtdlDeleteRoom(&qrbuf); ++num_rooms_purged; } @@ -317,9 +309,6 @@ int PurgeRooms(void) { RoomPurgeList = pptr; } - if (num_rooms_purged > 0) CtdlAideMessage(transcript, "Room Autopurger Message"); - free(transcript); - syslog(LOG_DEBUG, "Purged %d rooms.", num_rooms_purged); return(num_rooms_purged); } @@ -380,22 +369,9 @@ void do_user_purge(char *username, void *data) { // This shouldn't happen but does somehow. if (IsEmptyStr(us.fullname)) { purge = 0; - if (us.usernum > 0L) { - purge=0; - if (users_corrupt_msg == NULL) { - users_corrupt_msg = malloc(SIZ); - strcpy(users_corrupt_msg, - "The auto-purger found the following user numbers with no name.\n" - "The system has no way to purge a user with no name," - " and should not be able to create them either.\n" - "This indicates corruption of the user DB or possibly a bug.\n" - "It may be a good idea to restore your DB from a backup.\n" - ); - } - - users_corrupt_msg=realloc(users_corrupt_msg, strlen(users_corrupt_msg)+30); - snprintf(&users_corrupt_msg[strlen(users_corrupt_msg)], 29, " %ld\n", us.usernum); + purge = 0; + syslog(LOG_INFO, "expire: refusing to purge user %ld who has no name", us.usernum); } } @@ -416,7 +392,6 @@ void do_user_purge(char *username, void *data) { int PurgeUsers(void) { struct PurgeList *pptr; int num_users_purged = 0; - char *transcript = NULL; syslog(LOG_DEBUG, "PurgeUsers() called"); users_not_purged = 0; @@ -430,13 +405,8 @@ int PurgeUsers(void) { break; } - transcript = malloc(SIZ); - if (users_not_purged == 0) { - strcpy(transcript, "The auto-purger was told to purge every user. It is\n" - "refusing to do this because it usually indicates a problem\n" - "such as an inability to communicate with a name service.\n" - ); + syslog(LOG_INFO, "expire: refusing to purge all users because this usually indicates an error"); while (UserPurgeList != NULL) { pptr = UserPurgeList->next; free(UserPurgeList); @@ -444,12 +414,8 @@ int PurgeUsers(void) { ++num_users_purged; } } - else { - strcpy(transcript, "The following users have been auto-purged:\n"); while (UserPurgeList != NULL) { - transcript=realloc(transcript, strlen(transcript)+SIZ); - snprintf(&transcript[strlen(transcript)], SIZ, " %s\n", UserPurgeList->name); purge_user(UserPurgeList->name); pptr = UserPurgeList->next; free(UserPurgeList); @@ -458,21 +424,6 @@ int PurgeUsers(void) { } } - if (num_users_purged > 0) CtdlAideMessage(transcript, "User Purge Message"); - free(transcript); - - if (users_corrupt_msg) { - CtdlAideMessage(users_corrupt_msg, "User Corruption Message"); - free (users_corrupt_msg); - users_corrupt_msg = NULL; - } - - if(users_zero_msg) { - CtdlAideMessage(users_zero_msg, "User Zero Message"); - free (users_zero_msg); - users_zero_msg = NULL; - } - syslog(LOG_DEBUG, "Purged %d users.", num_users_purged); return(num_users_purged); } @@ -674,10 +625,10 @@ int PurgeEuidIndexTable(void) { void purge_databases(void) { - int retval; static time_t last_purge = 0; time_t now; struct tm tm; + int users_purged, rooms_purged, visits_purged, usete_purged, euidindices_purged = 0; // Do the auto-purge if the current hour equals the purge hour, // but not if the operation has already been performed in the @@ -691,8 +642,8 @@ void purge_databases(void) { syslog(LOG_INFO, "Auto-purger: starting."); if (!server_shutting_down) { - retval = PurgeUsers(); - syslog(LOG_NOTICE, "Purged %d users.", retval); + users_purged = PurgeUsers(); + syslog(LOG_NOTICE, "Purged %d users.", users_purged); } if (!server_shutting_down) { @@ -701,26 +652,36 @@ void purge_databases(void) { } if (!server_shutting_down) { - retval = PurgeRooms(); - syslog(LOG_NOTICE, "Expired %d rooms.", retval); + rooms_purged = PurgeRooms(); + syslog(LOG_NOTICE, "Expired %d rooms.", rooms_purged); } if (!server_shutting_down) { - retval = PurgeVisits(); - syslog(LOG_NOTICE, "Purged %d visits.", retval); + visits_purged = PurgeVisits(); + syslog(LOG_NOTICE, "Purged %d visits.", visits_purged); } if (!server_shutting_down) { StrBuf *ErrMsg; ErrMsg = NewStrBuf(); - retval = PurgeUseTable(ErrMsg); - syslog(LOG_NOTICE, "Purged %d entries from the use table.", retval); + usete_purged = PurgeUseTable(ErrMsg); + syslog(LOG_NOTICE, "Purged %d entries from the use table.", usete_purged); FreeStrBuf(&ErrMsg); } if (!server_shutting_down) { - retval = PurgeEuidIndexTable(); - syslog(LOG_NOTICE, "Purged %d entries from the EUID index.", retval); + euidindices_purged = PurgeEuidIndexTable(); + syslog(LOG_NOTICE, "Purged %d entries from the EUID index.", euidindices_purged); + } + + if (users_purged + messages_purged + rooms_purged + visits_purged + usete_purged + euidindices_purged != 0) { + char msg[SIZ]; + snprintf(msg, sizeof msg, + "Citadel Server has deleted %d users, %d messages, %d rooms, %d visit records, %d use table entries, " + "and %d EUID indices due to expire policy set on those objects.\n", + users_purged, messages_purged, rooms_purged, visits_purged, usete_purged, euidindices_purged + ); + CtdlAideMessage(msg, "Expired Objects Report"); } //if (!server_shutting_down) {