mirror of
https://codeberg.org/grunfink/snac2.git
synced 2024-11-09 19:50:26 +03:00
Reverted actor_request() without user.
Some sites require even Person requests to be signed.
This commit is contained in:
parent
c693c7c62c
commit
8d0a69cd75
@ -115,7 +115,7 @@ int activitypub_request(snac *user, const char *url, xs_dict **data)
|
||||
}
|
||||
|
||||
|
||||
int actor_request(const char *actor, xs_dict **data)
|
||||
int actor_request(snac *user, const char *actor, xs_dict **data)
|
||||
/* request an actor */
|
||||
{
|
||||
int status, status2;
|
||||
@ -129,7 +129,7 @@ int actor_request(const char *actor, xs_dict **data)
|
||||
|
||||
if (status != 200) {
|
||||
/* actor data non-existent or stale: get from the net */
|
||||
status2 = activitypub_request(NULL, actor, &payload);
|
||||
status2 = activitypub_request(user, actor, &payload);
|
||||
|
||||
if (valid_status(status2)) {
|
||||
/* renew data */
|
||||
@ -207,7 +207,7 @@ int timeline_request(snac *snac, char **id, xs_str **wrk, int level)
|
||||
|
||||
/* request (and drop) the actor for this entry */
|
||||
if (!xs_is_null(actor))
|
||||
actor_request(actor, NULL);
|
||||
actor_request(snac, actor, NULL);
|
||||
|
||||
/* does it have an ancestor? */
|
||||
char *in_reply_to = xs_dict_get(object, "inReplyTo");
|
||||
@ -331,7 +331,7 @@ xs_str *get_actor_inbox(const char *actor)
|
||||
xs *data = NULL;
|
||||
char *v = NULL;
|
||||
|
||||
if (valid_status(actor_request(actor, &data))) {
|
||||
if (valid_status(actor_request(NULL, actor, &data))) {
|
||||
/* try first endpoints/sharedInbox */
|
||||
if ((v = xs_dict_get(data, "endpoints")))
|
||||
v = xs_dict_get(v, "sharedInbox");
|
||||
@ -1095,7 +1095,7 @@ xs_dict *msg_follow(snac *snac, const char *q)
|
||||
}
|
||||
|
||||
/* request the actor */
|
||||
status = actor_request(actor, &actor_o);
|
||||
status = actor_request(snac, actor, &actor_o);
|
||||
|
||||
if (valid_status(status)) {
|
||||
/* check if the actor is an alias */
|
||||
@ -1501,7 +1501,7 @@ int process_input_message(snac *snac, xs_dict *msg, xs_dict *req)
|
||||
utype = "(null)";
|
||||
|
||||
/* bring the actor */
|
||||
a_status = actor_request(actor, &actor_o);
|
||||
a_status = actor_request(snac, actor, &actor_o);
|
||||
|
||||
/* do not retry permanent failures */
|
||||
if (a_status == 404 || a_status == 410 || a_status < 0) {
|
||||
@ -1520,7 +1520,7 @@ int process_input_message(snac *snac, xs_dict *msg, xs_dict *req)
|
||||
/* check the signature */
|
||||
xs *sig_err = NULL;
|
||||
|
||||
if (!check_signature(req, &sig_err)) {
|
||||
if (!check_signature(snac, req, &sig_err)) {
|
||||
srv_log(xs_fmt("bad signature %s (%s)", actor, sig_err));
|
||||
|
||||
srv_archive_error("check_signature", sig_err, req, msg);
|
||||
@ -1683,7 +1683,7 @@ int process_input_message(snac *snac, xs_dict *msg, xs_dict *req)
|
||||
/* bring the actor */
|
||||
xs *who_o = NULL;
|
||||
|
||||
if (valid_status(actor_request(who, &who_o))) {
|
||||
if (valid_status(actor_request(snac, who, &who_o))) {
|
||||
timeline_admire(snac, object, actor, 0);
|
||||
snac_log(snac, xs_fmt("new 'Announce' %s %s", actor, object));
|
||||
do_notify = 1;
|
||||
|
4
http.c
4
http.c
@ -120,7 +120,7 @@ xs_dict *http_signed_request(snac *snac, const char *method, const char *url,
|
||||
}
|
||||
|
||||
|
||||
int check_signature(xs_dict *req, xs_str **err)
|
||||
int check_signature(snac *user, xs_dict *req, xs_str **err)
|
||||
/* check the signature */
|
||||
{
|
||||
char *sig_hdr = xs_dict_get(req, "signature");
|
||||
@ -173,7 +173,7 @@ int check_signature(xs_dict *req, xs_str **err)
|
||||
|
||||
xs *actor = NULL;
|
||||
|
||||
if (!valid_status(actor_request(keyId, &actor))) {
|
||||
if (!valid_status(actor_request(user, keyId, &actor))) {
|
||||
*err = xs_fmt("unknown actor %s", keyId);
|
||||
return 0;
|
||||
}
|
||||
|
6
main.c
6
main.c
@ -184,7 +184,7 @@ int main(int argc, char *argv[])
|
||||
xs *actor = NULL;
|
||||
int status;
|
||||
|
||||
status = actor_request(user, &actor);
|
||||
status = actor_request(NULL, user, &actor);
|
||||
|
||||
printf("status: %d\n", status);
|
||||
if (valid_status(status)) {
|
||||
@ -334,7 +334,7 @@ int main(int argc, char *argv[])
|
||||
if (strcmp(cmd, "ping") == 0) { /** **/
|
||||
xs *actor_o = NULL;
|
||||
|
||||
if (valid_status(actor_request(url, &actor_o))) {
|
||||
if (valid_status(actor_request(&snac, url, &actor_o))) {
|
||||
xs *msg = msg_ping(&snac, url);
|
||||
|
||||
enqueue_output_by_actor(&snac, msg, url, 0);
|
||||
@ -409,7 +409,7 @@ int main(int argc, char *argv[])
|
||||
int status;
|
||||
xs *data = NULL;
|
||||
|
||||
status = actor_request(url, &data);
|
||||
status = actor_request(&snac, url, &data);
|
||||
|
||||
printf("status: %d\n", status);
|
||||
|
||||
|
@ -1944,7 +1944,7 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
|
||||
if (valid_status(webfinger_request(q, &actor, &user))) {
|
||||
xs *actor_o = NULL;
|
||||
|
||||
if (valid_status(actor_request(actor, &actor_o))) {
|
||||
if (valid_status(actor_request(&snac1, actor, &actor_o))) {
|
||||
xs *acct = mastoapi_account(actor_o);
|
||||
|
||||
acl = xs_list_append(acl, acct);
|
||||
|
4
snac.h
4
snac.h
@ -212,7 +212,7 @@ xs_dict *http_signed_request(snac *snac, const char *method, const char *url,
|
||||
const char *body, int b_size,
|
||||
int *status, xs_str **payload, int *p_size,
|
||||
int timeout);
|
||||
int check_signature(xs_dict *req, xs_str **err);
|
||||
int check_signature(snac *user, xs_dict *req, xs_str **err);
|
||||
|
||||
void httpd(void);
|
||||
|
||||
@ -242,7 +242,7 @@ xs_dict *msg_question(snac *user, const char *content, xs_list *attach,
|
||||
const xs_list *opts, int multiple, int end_secs);
|
||||
|
||||
int activitypub_request(snac *snac, const char *url, xs_dict **data);
|
||||
int actor_request(const char *actor, xs_dict **data);
|
||||
int actor_request(snac *user, const char *actor, xs_dict **data);
|
||||
void timeline_request_replies(snac *user, const char *id);
|
||||
int send_to_inbox_raw(const char *keyid, const char *seckey,
|
||||
const xs_str *inbox, const xs_dict *msg,
|
||||
|
Loading…
Reference in New Issue
Block a user