commit 0d78dee
default
·
2023-10-22 07:00:37 +0000 UTC
parent 575a152
New function deluser(), to delete a user. Only unfollows by now.
M
main.c
+6,
-1
1@@ -19,6 +19,7 @@ int usage(void)
2 printf("init [{basedir}] Initializes the data storage\n");
3 printf("upgrade {basedir} Upgrade to a new version\n");
4 printf("adduser {basedir} [{uid}] Adds a new user\n");
5+ printf("deluser {basedir} {uid} Deletes a user\n");
6 printf("httpd {basedir} Starts the HTTPD daemon\n");
7 printf("purge {basedir} Purges old data\n");
8 printf("webfinger {basedir} {actor} Queries about an actor (@user@host or actor url)\n");
9@@ -169,7 +170,7 @@ int main(int argc, char *argv[])
10 }
11
12 if (!user_open(&snac, user)) {
13- printf("error in user '%s'\n", user);
14+ printf("invalid user '%s'\n", user);
15 return 1;
16 }
17
18@@ -179,6 +180,10 @@ int main(int argc, char *argv[])
19 return resetpwd(&snac);
20 }
21
22+ if (strcmp(cmd, "deluser") == 0) { /** **/
23+ return deluser(&snac);
24+ }
25+
26 if (strcmp(cmd, "queue") == 0) { /** **/
27 process_user_queue(&snac);
28 return 0;
M
snac.h
+1,
-0
1@@ -276,6 +276,7 @@ int html_post_handler(const xs_dict *req, const char *q_path,
2 int snac_init(const char *_basedir);
3 int adduser(const char *uid);
4 int resetpwd(snac *snac);
5+int deluser(snac *user);
6
7 extern const char *snac_blurb;
8
M
utils.c
+26,
-0
1@@ -337,3 +337,29 @@ int resetpwd(snac *snac)
2
3 return ret;
4 }
5+
6+
7+int deluser(snac *user)
8+/* deletes a user */
9+{
10+ int ret = 0;
11+ xs *fwers = following_list(user);
12+ xs_list *p = fwers;
13+ xs_str *v;
14+
15+ while (xs_list_iter(&p, &v)) {
16+ xs *object = NULL;
17+
18+ if (valid_status(following_get(user, v, &object))) {
19+ xs *msg = msg_undo(user, xs_dict_get(object, "object"));
20+
21+ following_del(user, v);
22+
23+ enqueue_output_by_actor(user, msg, v, 0);
24+
25+ printf("Unfollowing actor %s\n", v);
26+ }
27+ }
28+
29+ return ret;
30+}