summaryrefslogtreecommitdiff
path: root/webfinger.c
diff options
context:
space:
mode:
authorGravatar default2024-09-18 19:56:40 +0200
committerGravatar default2024-09-18 19:56:40 +0200
commitee63e2a78cc8a9ab448349920be932c738e1f19e (patch)
tree5affcc7c36de97a82d5963736db07805de2c3747 /webfinger.c
parentStarted account migration code. (diff)
downloadsnac2-ee63e2a78cc8a9ab448349920be932c738e1f19e.tar.gz
snac2-ee63e2a78cc8a9ab448349920be932c738e1f19e.tar.xz
snac2-ee63e2a78cc8a9ab448349920be932c738e1f19e.zip
New function webfinger_request_fake().
Diffstat (limited to 'webfinger.c')
-rw-r--r--webfinger.c27
1 files changed, 23 insertions, 4 deletions
diff --git a/webfinger.c b/webfinger.c
index 0c18362..bd7f946 100644
--- a/webfinger.c
+++ b/webfinger.c
@@ -8,7 +8,7 @@
8 8
9#include "snac.h" 9#include "snac.h"
10 10
11int webfinger_request_signed(snac *snac, const char *qs, char **actor, char **user) 11int webfinger_request_signed(snac *snac, const char *qs, xs_str **actor, xs_str **user)
12/* queries the webfinger for qs and fills the required fields */ 12/* queries the webfinger for qs and fills the required fields */
13{ 13{
14 int status; 14 int status;
@@ -117,15 +117,34 @@ int webfinger_request_signed(snac *snac, const char *qs, char **actor, char **us
117} 117}
118 118
119 119
120int webfinger_request(const char *qs, char **actor, char **user) 120int webfinger_request(const char *qs, xs_str **actor, xs_str **user)
121/* queries the webfinger for qs and fills the required fields */ 121/* queries the webfinger for qs and fills the required fields */
122{ 122{
123 return webfinger_request_signed(NULL, qs, actor, user); 123 return webfinger_request_signed(NULL, qs, actor, user);
124} 124}
125 125
126 126
127int webfinger_get_handler(xs_dict *req, char *q_path, 127int webfinger_request_fake(const char *qs, xs_str **actor, xs_str **user)
128 char **body, int *b_size, char **ctype) 128/* queries the webfinger and, if it fails, a user is faked if possible */
129{
130 int status;
131
132 if (!valid_status(status = webfinger_request(qs, actor, user))) {
133 if (xs_startswith(qs, "https:/") || xs_startswith(qs, "http:/")) {
134 xs *l = xs_split(qs, "/");
135
136 /* i'll end up in hell for this */
137 *user = xs_fmt("%s@%s", xs_list_get(l, 2), xs_list_get(l, -1));
138 status = HTTP_STATUS_RESET_CONTENT;
139 }
140 }
141
142 return status;
143}
144
145
146int webfinger_get_handler(xs_dict *req, const char *q_path,
147 xs_val **body, int *b_size, char **ctype)
129/* serves webfinger queries */ 148/* serves webfinger queries */
130{ 149{
131 int status; 150 int status;