validateDomain($domain); if (! $domain) { $this->error('Invalid domain'); return; } $this->processBlocks($domain); } protected function validateDomain($domain) { if (! strpos($domain, '.')) { return; } if (str_starts_with($domain, 'https://')) { $domain = str_replace('https://', '', $domain); } if (str_starts_with($domain, 'http://')) { $domain = str_replace('http://', '', $domain); } $domain = strtolower(parse_url('https://'.$domain, PHP_URL_HOST)); $valid = filter_var($domain, FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME | FILTER_NULL_ON_FAILURE); if (! $valid) { return; } if ($domain === config('pixelfed.domain.app')) { $this->error('Invalid domain'); return; } $confirmed = confirm('Are you sure you want to block '.$domain.'?'); if (! $confirmed) { return; } return $domain; } protected function processBlocks($domain) { DefaultDomainBlock::updateOrCreate([ 'domain' => $domain, ]); progress( label: 'Updating user domain blocks...', steps: User::lazyById(500), callback: fn ($user) => $this->performTask($user, $domain), ); } protected function performTask($user, $domain) { if (! $user->profile_id || $user->delete_after) { return; } if ($user->status != null && $user->status != 'disabled') { return; } UserDomainBlock::updateOrCreate([ 'profile_id' => $user->profile_id, 'domain' => $domain, ]); } }