Merge pull request #6549 from pixelfed/staging

Fix key
pull/6555/head
dansup 2 months ago committed by GitHub
commit e20e5883ed
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -12,6 +12,7 @@ use GuzzleHttp\Psr7\Request;
use Illuminate\Console\Command;
use Illuminate\Support\Collection;
use JsonException;
use Psr\Http\Message\ResponseInterface;
use function Laravel\Prompts\confirm;
use function Laravel\Prompts\search;
@ -20,7 +21,7 @@ use function Laravel\Prompts\table;
class UserAccountDelete extends Command
{
protected $signature = 'app:user-account-delete
{--concurrency=150 : Number of concurrent deliveries}
{--concurrency=50 : Number of concurrent deliveries}
{--chunk=500 : Number of inbox rows to process per DB chunk}
{--attempts=2 : Max attempts for retryable failures}
{--target= : Send to a single inbox URL for debugging}
@ -295,6 +296,11 @@ class UserAccountDelete extends Command
'connect_timeout' => 5.0,
'http_errors' => false,
'allow_redirects' => false,
'version' => '1.1',
'headers' => [
'User-Agent' => 'Pixelfed ('.config('app.url').')',
'Accept' => 'application/activity+json, application/ld+json; profile="https://www.w3.org/ns/activitystreams"',
],
'curl' => [
CURLOPT_TCP_FASTOPEN => true,
CURLOPT_TCP_NODELAY => true,
@ -318,21 +324,20 @@ class UserAccountDelete extends Command
$delivered = [];
$httpFailed = [];
$retryable = collect();
$retryable = [];
$requests = function () use ($urls, $privateKey, $keyId, $digest, $payload, $payloadLen) {
foreach ($urls as $key => $url) {
foreach ($urls as $url) {
$headers = HttpSignature::signRawWithDigest($privateKey, $keyId, $url, $digest);
$headers['Content-Type'] = 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"';
$headers['Content-Length'] = $payloadLen;
yield $key => new Request('POST', $url, $headers, $payload);
$headers['Content-Length'] = (string) $payloadLen;
yield $url => new Request('POST', $url, $headers, $payload);
}
};
$pool = new Pool($client, $requests(), [
'concurrency' => $concurrency,
'fulfilled' => function ($response, $index) use ($urls, &$delivered, &$httpFailed, &$retryable, $verboseErrors) {
$url = $urls[$index];
'fulfilled' => function (ResponseInterface $response, string $url) use (&$delivered, &$httpFailed, &$retryable, $verboseErrors) {
$status = $response->getStatusCode();
if ($status >= 200 && $status < 300) {
@ -341,22 +346,24 @@ class UserAccountDelete extends Command
return;
}
$body = mb_substr((string) $response->getBody(), 0, 500);
if ($verboseErrors) {
$body = mb_substr((string) $response->getBody(), 0, 200);
$this->warn(" [{$status}] {$url} — {$body}");
}
if ($this->isRetryableStatus($status)) {
$retryable->put($url, $status);
$retryable[$url] = "HTTP {$status}";
return;
}
$httpFailed[$url] = ['status' => $status, 'body' => null];
$httpFailed[$url] = [
'status' => $status,
'body' => $body,
];
},
'rejected' => function ($reason, $index) use ($urls, &$retryable, $verboseErrors) {
$url = $urls[$index];
'rejected' => function ($reason, string $url) use (&$retryable, $verboseErrors) {
$message = $reason instanceof \Throwable
? $reason->getMessage()
: (string) $reason;
@ -365,7 +372,7 @@ class UserAccountDelete extends Command
$this->error(" [TRANSPORT] {$url} — {$message}");
}
$retryable->put($url, $message);
$retryable[$url] = $message;
},
]);
@ -374,7 +381,7 @@ class UserAccountDelete extends Command
return [
'delivered' => $delivered,
'http_failed' => $httpFailed,
'retryable' => $retryable,
'retryable' => collect($retryable),
];
}

Loading…
Cancel
Save