فهرست منبع

Call is_instance_blocked() from activitypub_post_handler().

default 3 سال پیش
والد
کامیت
a114d5094d
1فایلهای تغییر یافته به همراه11 افزوده شده و 2 حذف شده
  1. 11 2
      activitypub.c

+ 11 - 2
activitypub.c

@@ -1994,13 +1994,22 @@ int activitypub_post_handler(const xs_dict *req, const char *q_path,
 
     /* decode the message */
     xs *msg = xs_json_loads(payload);
+    const char *id;
 
-    if (msg == NULL) {
+    if (msg == NULL || xs_is_null(id = xs_dict_get(msg, "id"))) {
         srv_log(xs_fmt("activitypub_post_handler JSON error %s", q_path));
 
         *body  = xs_str_new("JSON error");
         *ctype = "text/plain";
-        status = 400;
+        return 400;
+    }
+
+    if (is_instance_blocked(id)) {
+        srv_debug(1, xs_fmt("full instance block for %s", id));
+
+        *body  = xs_str_new("blocked");
+        *ctype = "text/plain";
+        return 403;
     }
 
     /* get the user and path */