summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar default2022-09-25 18:50:53 +0200
committerGravatar default2022-09-25 18:50:53 +0200
commit6f7f98ded3005d9c29295dfff42dbf81bba1f62a (patch)
tree4194cd2018e08feffc31f5da58676e2a57d58d9d
parentNew function timeline_request(). (diff)
downloadpenes-snac2-6f7f98ded3005d9c29295dfff42dbf81bba1f62a.tar.gz
penes-snac2-6f7f98ded3005d9c29295dfff42dbf81bba1f62a.tar.xz
penes-snac2-6f7f98ded3005d9c29295dfff42dbf81bba1f62a.zip
Fixed a bug in the digest header.
-rw-r--r--activitypub.c9
-rw-r--r--data.c6
-rw-r--r--http.c17
-rw-r--r--snac.h2
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"));
diff --git a/data.c b/data.c
index 9fa06ae..3167d28 100644
--- a/data.c
+++ b/data.c
@@ -530,14 +530,14 @@ void _timeline_write(snac *snac, char *id, char *msg, char *parent)
530} 530}
531 531
532 532
533void timeline_add(snac *snac, char *id, char *o_msg, char *parent) 533int 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
diff --git a/http.c b/http.c
index 56fbbda..65d934c 100644
--- a/http.c
+++ b/http.c
@@ -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}
diff --git a/snac.h b/snac.h
index 82e2c2f..436e0f0 100644
--- a/snac.h
+++ b/snac.h
@@ -56,7 +56,7 @@ d_char *timeline_find(snac *snac, char *id);
56void timeline_del(snac *snac, char *id); 56void timeline_del(snac *snac, char *id);
57d_char *timeline_get(snac *snac, char *fn); 57d_char *timeline_get(snac *snac, char *fn);
58d_char *timeline_list(snac *snac); 58d_char *timeline_list(snac *snac);
59void timeline_add(snac *snac, char *id, char *msg, char *parent); 59int timeline_add(snac *snac, char *id, char *msg, char *parent);
60void timeline_admire(snac *snac, char *id, char *admirer, int like); 60void timeline_admire(snac *snac, char *id, char *admirer, int like);
61 61
62int following_add(snac *snac, char *actor, char *msg); 62int following_add(snac *snac, char *actor, char *msg);