From a002edce81995cc199b6f7b76977eb01c87c89de Mon Sep 17 00:00:00 2001 From: teknomunk Date: Sat, 22 Jul 2023 09:30:20 -0500 Subject: [PATCH] Update to new ap_object::url field type, remove mrf_* from instance info, add faster startup, update activitystreams submodule --- src/ap | 2 +- src/main.c | 9 ++++++++- src/model/account/ap_data.c | 7 +++---- src/model/account/ap_sync.c | 12 ++++++------ src/model/activity.c | 2 +- src/model/status.c | 4 ++-- src/view/api/instance_data.json.template | 2 ++ 7 files changed, 23 insertions(+), 15 deletions(-) diff --git a/src/ap b/src/ap index 67471e0..e91d012 160000 --- a/src/ap +++ b/src/ap @@ -1 +1 @@ -Subproject commit 67471e0105e63d7fb407c89af0f0dbecf12695c2 +Subproject commit e91d01207ed07972864b43d24a2137edc583dc9d diff --git a/src/main.c b/src/main.c index 6c48c14..c4d97c3 100644 --- a/src/main.c +++ b/src/main.c @@ -37,7 +37,14 @@ int main( int argc, char* argv[], char* envp[] ) if( g_server->section == -1 ) { printf( "Starting Apogee ActivityPub server...\n" ); process_start_section(6); - sleep(3); + + // Make sure we have a hidden service hostname + FILE* f = fopen( "data/tor/hidden_service/hostname", "r" ); + if( !f ) { + sleep(3); + } else { + fclose(f); + } process_start_section(0); process_start_section(1); process_start_section(2); diff --git a/src/model/account/ap_data.c b/src/model/account/ap_data.c index 79cf817..5b64beb 100644 --- a/src/model/account/ap_data.c +++ b/src/model/account/ap_data.c @@ -46,16 +46,15 @@ struct ap_object* account_ap_actor( struct account* a ) struct ap_object* avatar = ap_object_new(); avatar->type = ap_Image; - avatar->url = aformat( "https://%s/owner/avatar.blob", g_server->domain ); + ap_object_array_append_ref( &act->url, aformat( "https://%s/owner/avatar.blob", g_server->domain ) ); act->icon = avatar; - struct ap_object* banner = ap_object_new(); banner->type = ap_Image; - banner->url = aformat( "https://%s/owner/banner.blob", g_server->domain ); + ap_object_array_append_ref( &act->url, aformat( "https://%s/owner/banner.blob", g_server->domain ) ); act->image = banner; - act->url = aformat( "https://%s/@%s@%s", g_server->domain, a->handle, g_server->domain ); + ap_object_array_append_ref( &act->url, aformat( "https://%s/@%s@%s", g_server->domain, a->handle, g_server->domain ) ); act->capabilities.show = true; struct ap_public_key* key; diff --git a/src/model/account/ap_sync.c b/src/model/account/ap_sync.c index cccd701..ebd53db 100644 --- a/src/model/account/ap_sync.c +++ b/src/model/account/ap_sync.c @@ -81,8 +81,8 @@ failed: bool account_sync_from_activity( struct account* a, struct ap_object* obj ) { - if( obj->url ) { - a->account_url = strdup(obj->url); + if( obj->url.count > 0 ) { + a->account_url = strdup(obj->url.items[0].ref); // TODO: make this more robust } else if( obj->id ) { a->account_url = strdup(obj->id); } else { @@ -106,12 +106,12 @@ bool account_sync_from_activity( struct account* a, struct ap_object* obj ) } else { a->display_name = strdup(obj->preferred_username); } - if( obj->icon && obj->icon->url ) { - a->avatar.url = strdup(obj->icon->url); + if( obj->icon && obj->icon->url.count > 0 ) { + a->avatar.url = strdup(obj->icon->url.items[0].ref); // TODO: make this more robust a->avatar.static_url = strdup(a->avatar.url); } - if( obj->image && obj->image->url ) { - a->banner = strdup(obj->image->url); + if( obj->image && obj->image->url.count > 0 ) { + a->banner = strdup(obj->image->url.items[0].ref); // TODO: make this more robust } a->bot = ( obj->type != ap_Person ); a->account_type = at_remote_activity_pub; diff --git a/src/model/activity.c b/src/model/activity.c index 89f7f83..31b1d90 100644 --- a/src/model/activity.c +++ b/src/model/activity.c @@ -310,7 +310,7 @@ struct ap_object* activity_create_Note( struct status* s ) memset(att,0,sizeof(*att)); att->type = ap_Document; - att->url = strdup(m->remote_url); + ap_object_array_append_ref( &att->url, strdup(m->remote_url) ); att->media_type = strdup(m->content_type); att->name = strdup(""); diff --git a/src/model/status.c b/src/model/status.c index e018d3c..04e3bec 100644 --- a/src/model/status.c +++ b/src/model/status.c @@ -437,9 +437,9 @@ bool status_sync_from_activity_pub( struct status* s, struct ap_object* act ) // Recreate the media field for( int i = 0; i < act->attachments.count; ++i ) { struct ap_object* att = act->attachments.items[i]; - if( att && att->url ) { + if( att && att->url.count == 1 ) { struct media* media = media_new(); - media->remote_url = strdup( att->url ); + media->remote_url = strdup( att->url.items[0].ref ); if( att->media_type ) { media->content_type = strdup(att->media_type); } diff --git a/src/view/api/instance_data.json.template b/src/view/api/instance_data.json.template index 47ad408..80dc713 100644 --- a/src/view/api/instance_data.json.template +++ b/src/view/api/instance_data.json.template @@ -30,6 +30,7 @@ "federation":{ "enabled":true, "exclusions":false, + %(/* "mrf_hashtag":{ "federated_timeline_removal":[], "reject":[], @@ -47,6 +48,7 @@ "TagPolicy", "HashtagPolicy" ], + */) "quarantined_instances":[] }, "fields_limits":{