commit 0f3c60d

default  ·  2024-09-18 08:59:42 +0000 UTC
parent 3155a80
New command-line command 'aka'.
1 files changed,  +27, -0
M main.c
M main.c
+27, -0
 1@@ -47,6 +47,7 @@ int usage(void)
 2     printf("unlimit {basedir} {uid} {actor}      Unlimits an actor\n");
 3     printf("verify_links {basedir} {uid}         Verifies a user's links (in the metadata)\n");
 4     printf("search {basedir} {uid} {regex}       Searches posts by content\n");
 5+    printf("aka {basedir} {uid} {actor}          Sets actor (@user@host or url) as an a.k.a.\n");
 6 
 7     return 1;
 8 }
 9@@ -269,6 +270,32 @@ int main(int argc, char *argv[])
10     if ((url = GET_ARGV()) == NULL)
11         return usage();
12 
13+    if (strcmp(cmd, "aka") == 0) { /** **/
14+        xs *actor = NULL;
15+        xs *uid = NULL;
16+        int status = HTTP_STATUS_OK;
17+
18+        if (*url == '\0')
19+            actor = xs_dup("");
20+        else
21+            status = webfinger_request(url, &actor, &uid);
22+
23+        if (valid_status(status)) {
24+            snac.config = xs_dict_set(snac.config, "aka", actor);
25+
26+            xs *fn = xs_fmt("%s/user.json", snac.basedir);
27+            FILE *f;
28+            if ((f = fopen(fn, "w")) != NULL) {
29+                xs_json_dump(snac.config, 4, f);
30+                fclose(f);
31+            }
32+        }
33+        else
34+            snac_log(&snac, xs_fmt("Webfinger error for %s %d", url, status));
35+
36+        return 0;
37+    }
38+
39     if (strcmp(cmd, "webfinger_s") == 0) { /** **/
40         xs *actor = NULL;
41         xs *uid = NULL;