Merge pull request #3897 from pixelfed/staging

Add db migration, add profile indexes
This commit is contained in:
daniel 2022-12-05 00:19:36 -07:00 committed by GitHub
commit 6a3286c057
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 84 additions and 15 deletions

View file

@ -14,8 +14,9 @@ use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels; use Illuminate\Queue\SerializesModels;
use Zttp\Zttp;
use App\Jobs\DeletePipeline\DeleteRemoteProfilePipeline; use App\Jobs\DeletePipeline\DeleteRemoteProfilePipeline;
use Illuminate\Support\Facades\Http;
use Illuminate\Http\Client\ConnectionException;
class DeleteWorker implements ShouldQueue class DeleteWorker implements ShouldQueue
{ {
@ -200,10 +201,20 @@ class DeleteWorker implements ShouldQueue
if(Helpers::validateUrl($actor->remote_url) == false) { if(Helpers::validateUrl($actor->remote_url) == false) {
return; return;
} }
$res = Zttp::timeout(60)->withHeaders([
'Accept' => 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"', try {
'User-Agent' => 'PixelfedBot v0.1 - https://pixelfed.org', $res = Http::timeout(20)->withHeaders([
])->get($actor->remote_url); 'Accept' => 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"',
'User-Agent' => 'PixelfedBot v0.1 - https://pixelfed.org',
])->get($actor->remote_url);
} catch (ConnectionException $e) {
return false;
}
if(!$res->ok()) {
return false;
}
$res = json_decode($res->body(), true, 8); $res = json_decode($res->body(), true, 8);
if(!isset($res['publicKey'], $res['publicKey']['id'])) { if(!isset($res['publicKey'], $res['publicKey']['id'])) {
return; return;

View file

@ -14,8 +14,9 @@ use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels; use Illuminate\Queue\SerializesModels;
use Zttp\Zttp;
use App\Jobs\DeletePipeline\DeleteRemoteProfilePipeline; use App\Jobs\DeletePipeline\DeleteRemoteProfilePipeline;
use Illuminate\Support\Facades\Http;
use Illuminate\Http\Client\ConnectionException;
class InboxValidator implements ShouldQueue class InboxValidator implements ShouldQueue
{ {
@ -27,6 +28,7 @@ class InboxValidator implements ShouldQueue
public $timeout = 60; public $timeout = 60;
public $tries = 1; public $tries = 1;
public $maxExceptions = 1;
/** /**
* Create a new job instance. * Create a new job instance.
@ -177,10 +179,20 @@ class InboxValidator implements ShouldQueue
if(Helpers::validateUrl($actor->remote_url) == false) { if(Helpers::validateUrl($actor->remote_url) == false) {
return; return;
} }
$res = Zttp::timeout(60)->withHeaders([
'Accept' => 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"', try {
'User-Agent' => 'PixelfedBot v0.1 - https://pixelfed.org', $res = Http::timeout(20)->withHeaders([
])->get($actor->remote_url); 'Accept' => 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"',
'User-Agent' => 'PixelfedBot v0.1 - https://pixelfed.org',
])->get($actor->remote_url);
} catch (ConnectionException $e) {
return false;
}
if(!$res->ok()) {
return false;
}
$res = json_decode($res->body(), true, 8); $res = json_decode($res->body(), true, 8);
if(!$res || empty($res) || !isset($res['publicKey']) || !isset($res['publicKey']['id'])) { if(!$res || empty($res) || !isset($res['publicKey']) || !isset($res['publicKey']['id'])) {
return; return;

View file

@ -14,8 +14,9 @@ use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels; use Illuminate\Queue\SerializesModels;
use Zttp\Zttp;
use App\Jobs\DeletePipeline\DeleteRemoteProfilePipeline; use App\Jobs\DeletePipeline\DeleteRemoteProfilePipeline;
use Illuminate\Support\Facades\Http;
use Illuminate\Http\Client\ConnectionException;
class InboxWorker implements ShouldQueue class InboxWorker implements ShouldQueue
{ {
@ -26,6 +27,7 @@ class InboxWorker implements ShouldQueue
public $timeout = 60; public $timeout = 60;
public $tries = 1; public $tries = 1;
public $maxExceptions = 1;
/** /**
* Create a new job instance. * Create a new job instance.
@ -163,10 +165,20 @@ class InboxWorker implements ShouldQueue
if(Helpers::validateUrl($actor->remote_url) == false) { if(Helpers::validateUrl($actor->remote_url) == false) {
return; return;
} }
$res = Zttp::timeout(60)->withHeaders([
'Accept' => 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"', try {
'User-Agent' => 'PixelfedBot v0.1 - https://pixelfed.org', $res = Http::timeout(20)->withHeaders([
])->get($actor->remote_url); 'Accept' => 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"',
'User-Agent' => 'PixelfedBot v0.1 - https://pixelfed.org',
])->get($actor->remote_url);
} catch (ConnectionException $e) {
return false;
}
if(!$res->ok()) {
return false;
}
$res = json_decode($res->body(), true, 8); $res = json_decode($res->body(), true, 8);
if(!$res || empty($res) || !isset($res['publicKey']) || !isset($res['publicKey']['id'])) { if(!$res || empty($res) || !isset($res['publicKey']) || !isset($res['publicKey']['id'])) {
return; return;

View file

@ -0,0 +1,34 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('profiles', function (Blueprint $table) {
$table->index('key_id');
$table->index('remote_url');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('profiles', function (Blueprint $table) {
$table->dropIndex('profiles_key_id_index');
$table->dropIndex('profiles_remote_url_index');
});
}
};