diff --git a/src/Worker/UpdateBlockedServers.php b/src/Worker/UpdateBlockedServers.php index 9a3a7df3fa..980897939c 100644 --- a/src/Worker/UpdateBlockedServers.php +++ b/src/Worker/UpdateBlockedServers.php @@ -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'); + $ret = DBA::delete('gserver', ["`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', ['ret' => $ret, 'rows' => DBA::affectedRows()]); + } } } diff --git a/static/defaults.config.php b/static/defaults.config.php index 90886347e5..4fb96cfce2 100644 --- a/static/defaults.config.php +++ b/static/defaults.config.php @@ -237,6 +237,10 @@ return [ // Periodically delete waiting database processes. 'delete_sleeping_processes' => false, + // delete-blocked-servers (Boolean) + // Delete blocked servers if there are no foreign key violations. + '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)