TDAP: consolidated transcripts to a single summary
authorArt Cancro <ajc@citadel.org>
Thu, 7 Sep 2023 13:58:36 +0000 (09:58 -0400)
committerArt Cancro <ajc@citadel.org>
Thu, 7 Sep 2023 13:58:36 +0000 (09:58 -0400)
citadel/server/modules/expire/serv_expire.c

index fb00e3d64a7f9cc0cbed51fcaa12a528b0c8a901..657cfd0d9acf9f05ac1cae37d64ba43541ce8dfe 100644 (file)
@@ -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) {