diff options
| -rw-r--r-- | activitypub.c | 9 | ||||
| -rw-r--r-- | data.c | 6 | ||||
| -rw-r--r-- | http.c | 17 | ||||
| -rw-r--r-- | snac.h | 2 |
4 files changed, 23 insertions, 11 deletions
diff --git a/activitypub.c b/activitypub.c index 7c93ca5..8924f1c 100644 --- a/activitypub.c +++ b/activitypub.c | |||
| @@ -233,8 +233,8 @@ void process_message(snac *snac, char *msg, char *req) | |||
| 233 | 233 | ||
| 234 | timeline_request(snac, in_reply_to); | 234 | timeline_request(snac, in_reply_to); |
| 235 | 235 | ||
| 236 | snac_log(snac, xs_fmt("new 'Note' %s %s", actor, id)); | 236 | if (timeline_add(snac, id, msg, in_reply_to)) |
| 237 | timeline_add(snac, id, msg, in_reply_to); | 237 | snac_log(snac, xs_fmt("new 'Note' %s %s", actor, id)); |
| 238 | } | 238 | } |
| 239 | } | 239 | } |
| 240 | else | 240 | else |
| @@ -247,8 +247,10 @@ void process_message(snac *snac, char *msg, char *req) | |||
| 247 | else | 247 | else |
| 248 | */ | 248 | */ |
| 249 | if (strcmp(type, "Like") == 0) { | 249 | if (strcmp(type, "Like") == 0) { |
| 250 | if (xs_type(object) == XSTYPE_STRING) | 250 | if (xs_type(object) == XSTYPE_STRING) { |
| 251 | timeline_admire(snac, object, actor, 1); | 251 | timeline_admire(snac, object, actor, 1); |
| 252 | snac_log(snac, xs_fmt("new 'Like' %s %s", actor, object)); | ||
| 253 | } | ||
| 252 | else | 254 | else |
| 253 | snac_debug(snac, 2, xs_fmt("xs_type for 'Like' object not string")); | 255 | snac_debug(snac, 2, xs_fmt("xs_type for 'Like' object not string")); |
| 254 | } | 256 | } |
| @@ -258,6 +260,7 @@ void process_message(snac *snac, char *msg, char *req) | |||
| 258 | timeline_request(snac, object); | 260 | timeline_request(snac, object); |
| 259 | 261 | ||
| 260 | timeline_admire(snac, object, actor, 0); | 262 | timeline_admire(snac, object, actor, 0); |
| 263 | snac_log(snac, xs_fmt("new 'Announce' %s %s", actor, object)); | ||
| 261 | } | 264 | } |
| 262 | else | 265 | else |
| 263 | snac_debug(snac, 2, xs_fmt("xs_type for 'Announce' object not string")); | 266 | snac_debug(snac, 2, xs_fmt("xs_type for 'Announce' object not string")); |
| @@ -530,14 +530,14 @@ void _timeline_write(snac *snac, char *id, char *msg, char *parent) | |||
| 530 | } | 530 | } |
| 531 | 531 | ||
| 532 | 532 | ||
| 533 | void timeline_add(snac *snac, char *id, char *o_msg, char *parent) | 533 | int timeline_add(snac *snac, char *id, char *o_msg, char *parent) |
| 534 | /* adds a message to the timeline */ | 534 | /* adds a message to the timeline */ |
| 535 | { | 535 | { |
| 536 | xs *pfn = _timeline_find_fn(snac, id); | 536 | xs *pfn = _timeline_find_fn(snac, id); |
| 537 | 537 | ||
| 538 | if (pfn != NULL) { | 538 | if (pfn != NULL) { |
| 539 | snac_log(snac, xs_fmt("timeline_add refusing rewrite %s %s", id, pfn)); | 539 | snac_log(snac, xs_fmt("timeline_add refusing rewrite %s %s", id, pfn)); |
| 540 | return; | 540 | return 0; |
| 541 | } | 541 | } |
| 542 | 542 | ||
| 543 | xs *msg = xs_dup(o_msg); | 543 | xs *msg = xs_dup(o_msg); |
| @@ -560,6 +560,8 @@ void timeline_add(snac *snac, char *id, char *o_msg, char *parent) | |||
| 560 | _timeline_write(snac, id, msg, parent); | 560 | _timeline_write(snac, id, msg, parent); |
| 561 | 561 | ||
| 562 | snac_log(snac, xs_fmt("timeline_add %s", id)); | 562 | snac_log(snac, xs_fmt("timeline_add %s", id)); |
| 563 | |||
| 564 | return 1; | ||
| 563 | } | 565 | } |
| 564 | 566 | ||
| 565 | 567 | ||
| @@ -17,7 +17,7 @@ d_char *http_signed_request(snac *snac, char *method, char *url, | |||
| 17 | { | 17 | { |
| 18 | xs *l1; | 18 | xs *l1; |
| 19 | xs *date; | 19 | xs *date; |
| 20 | xs *digest; | 20 | xs *digest_b64, *digest; |
| 21 | xs *s64; | 21 | xs *s64; |
| 22 | xs *signature; | 22 | xs *signature; |
| 23 | xs *hdrs; | 23 | xs *hdrs; |
| @@ -25,6 +25,7 @@ d_char *http_signed_request(snac *snac, char *method, char *url, | |||
| 25 | char *target; | 25 | char *target; |
| 26 | char *seckey; | 26 | char *seckey; |
| 27 | char *k, *v; | 27 | char *k, *v; |
| 28 | d_char *response; | ||
| 28 | 29 | ||
| 29 | date = xs_utc_time("%a, %d %b %Y %H:%M:%S GMT"); | 30 | date = xs_utc_time("%a, %d %b %Y %H:%M:%S GMT"); |
| 30 | 31 | ||
| @@ -43,9 +44,11 @@ d_char *http_signed_request(snac *snac, char *method, char *url, | |||
| 43 | 44 | ||
| 44 | /* digest */ | 45 | /* digest */ |
| 45 | if (body != NULL) | 46 | if (body != NULL) |
| 46 | digest = xs_sha256_base64(body, b_size); | 47 | digest_b64 = xs_sha256_base64(body, b_size); |
| 47 | else | 48 | else |
| 48 | digest = xs_sha256_base64("", 0); | 49 | digest_b64 = xs_sha256_base64("", 0); |
| 50 | |||
| 51 | digest = xs_fmt("SHA-256=%s", digest_b64); | ||
| 49 | 52 | ||
| 50 | seckey = xs_dict_get(snac->key, "secret"); | 53 | seckey = xs_dict_get(snac->key, "secret"); |
| 51 | 54 | ||
| @@ -53,7 +56,7 @@ d_char *http_signed_request(snac *snac, char *method, char *url, | |||
| 53 | /* build the string to be signed */ | 56 | /* build the string to be signed */ |
| 54 | xs *s = xs_fmt("(request-target): %s /%s\n" | 57 | xs *s = xs_fmt("(request-target): %s /%s\n" |
| 55 | "host: %s\n" | 58 | "host: %s\n" |
| 56 | "digest: SHA-256=%s\n" | 59 | "digest: %s\n" |
| 57 | "date: %s", | 60 | "date: %s", |
| 58 | strcmp(method, "POST") == 0 ? "post" : "get", | 61 | strcmp(method, "POST") == 0 ? "post" : "get", |
| 59 | target, host, digest, date); | 62 | target, host, digest, date); |
| @@ -81,6 +84,10 @@ d_char *http_signed_request(snac *snac, char *method, char *url, | |||
| 81 | hdrs = xs_dict_append(hdrs, "digest", digest); | 84 | hdrs = xs_dict_append(hdrs, "digest", digest); |
| 82 | hdrs = xs_dict_append(hdrs, "user-agent", "snac/2.x"); | 85 | hdrs = xs_dict_append(hdrs, "user-agent", "snac/2.x"); |
| 83 | 86 | ||
| 84 | return xs_http_request(method, url, hdrs, | 87 | response = xs_http_request(method, url, hdrs, |
| 85 | body, b_size, status, payload, p_size); | 88 | body, b_size, status, payload, p_size); |
| 89 | |||
| 90 | srv_archive("SEND", hdrs, body, b_size, *status, response, *payload, *p_size); | ||
| 91 | |||
| 92 | return response; | ||
| 86 | } | 93 | } |
| @@ -56,7 +56,7 @@ d_char *timeline_find(snac *snac, char *id); | |||
| 56 | void timeline_del(snac *snac, char *id); | 56 | void timeline_del(snac *snac, char *id); |
| 57 | d_char *timeline_get(snac *snac, char *fn); | 57 | d_char *timeline_get(snac *snac, char *fn); |
| 58 | d_char *timeline_list(snac *snac); | 58 | d_char *timeline_list(snac *snac); |
| 59 | void timeline_add(snac *snac, char *id, char *msg, char *parent); | 59 | int timeline_add(snac *snac, char *id, char *msg, char *parent); |
| 60 | void timeline_admire(snac *snac, char *id, char *admirer, int like); | 60 | void timeline_admire(snac *snac, char *id, char *admirer, int like); |
| 61 | 61 | ||
| 62 | int following_add(snac *snac, char *actor, char *msg); | 62 | int following_add(snac *snac, char *actor, char *msg); |