]> git.mxchange.org Git - friendica.git/commitdiff
Blocked servers can now be deleted
authorMichael <heluecht@pirati.ca>
Sat, 18 Mar 2023 19:41:41 +0000 (19:41 +0000)
committerMichael <heluecht@pirati.ca>
Sat, 18 Mar 2023 19:41:41 +0000 (19:41 +0000)
src/Worker/UpdateBlockedServers.php
static/defaults.config.php

index 9a3a7df3fa722d53f72c5fa239847ed3e003bf04..d2b5255d59d6ae90b380fea57b443ef477cdb605 100644 (file)
@@ -23,6 +23,7 @@ namespace Friendica\Worker;
 
 use Friendica\Core\Logger;
 use Friendica\Database\DBA;
+use Friendica\DI;
 use Friendica\Model\GServer;
 use Friendica\Util\Network;
 
@@ -33,11 +34,14 @@ class UpdateBlockedServers
         */
        public static function execute()
        {
-               Logger::debug('Update blocked servers - start');
+               Logger::info('Update blocked servers - start');
                $gservers = DBA::select('gserver', ['id', 'url', 'blocked']);
+               $changed  = 0;
+               $unchanged = 0;
                while ($gserver = DBA::fetch($gservers)) {
                        $blocked = Network::isUrlBlocked($gserver['url']);
                        if (!is_null($gserver['blocked']) && ($blocked == $gserver['blocked'])) {
+                               $unchanged++;
                                continue;
                        }
 
@@ -46,8 +50,15 @@ class UpdateBlockedServers
                        } else {
                                GServer::setUnblockedById($gserver['id']);
                        }
+                       $changed++;
                }
                DBA::close($gservers);
-               Logger::debug('Update blocked servers - done');
+               Logger::info('Update blocked servers - done', ['changed' => $changed, 'unchanged' => $unchanged]);
+
+               if (DI::config()->get('system', 'delete-blocked-servers')) {
+                       Logger::info('Delete blocked servers - start');
+                       DBA::p("DELETE FROM `gserver` WHERE `blocked` AND NOT EXISTS(SELECT `gsid` FROM `inbox-status` WHERE `gsid` = `gserver`.`id`) AND NOT EXISTS(SELECT `gsid` FROM `contact` WHERE gsid= `gserver`.`id`) AND NOT EXISTS(SELECT `gsid` FROM `apcontact` WHERE `gsid` = `gserver`.`id`) AND NOT EXISTS(SELECT `gsid` FROM `delivery-queue` WHERE `gsid` = `gserver`.`id`) AND NOT EXISTS(SELECT `gsid` FROM `diaspora-contact` WHERE `gsid` = `gserver`.`id`) AND NOT EXISTS(SELECT `gserver-id` FROM `gserver-tag` WHERE `gserver-id` = `gserver`.`id`)");
+                       Logger::info('Delete blocked servers - done', ['rows' => DBA::affectedRows()]);
+               }
        }
 }
index 90886347e5349263bace4ffa0c72efb563aa831f..14e6d6f0ed0bc637616b7c7c10fde488999a2978 100644 (file)
@@ -237,6 +237,10 @@ return [
                // Periodically delete waiting database processes.
                'delete_sleeping_processes' => false,
 
+               // delete-blocked-servers (Boolean)
+               // Delete blocked servers if possible.
+               'delete-blocked-servers' => false,
+
                // dice_profiler_threshold (Float)
                // For profiling Dice class creation (0 = disabled, >0 = seconds threshold for profiling)
                'dice_profiler_threshold' => 0.5,
@@ -508,7 +512,7 @@ return [
                'png_quality' => 8,
 
                // process_view (Boolean)
-               // Process the "View" activity that is used by Peertube. View activities are displayed, when "emoji_activities" are enabled. 
+               // Process the "View" activity that is used by Peertube. View activities are displayed, when "emoji_activities" are enabled.
                'process_view' => false,
 
                // profiler (Boolean)