diff --git a/activitypub.c b/activitypub.c index 39d1605..57c3259 100644 --- a/activitypub.c +++ b/activitypub.c @@ -1045,6 +1045,16 @@ int process_input_message(snac *snac, xs_dict *msg, xs_dict *req) return 1; } + /* if it's a DM from someone we don't follow, reject the message */ + if (xs_type(xs_dict_get(snac->config, "drop_dm_from_unknown")) == XSTYPE_TRUE) { + if (strcmp(utype, "Note") == 0 && !is_msg_public(snac, msg) && + !following_check(snac, actor)) { + snac_log(snac, xs_fmt("DM rejected from unknown actor %s", actor)); + + return 1; + } + } + /* bring the actor */ a_status = actor_request(snac, actor, &actor_o);