summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--activitypub.c27
-rw-r--r--main.c4
-rw-r--r--snac.h2
3 files changed, 33 insertions, 0 deletions
diff --git a/activitypub.c b/activitypub.c
index c41dfbd..b15b883 100644
--- a/activitypub.c
+++ b/activitypub.c
@@ -1522,6 +1522,17 @@ xs_dict *msg_pong(snac *user, const char *rcpt, const char *object)
1522} 1522}
1523 1523
1524 1524
1525xs_dict *msg_move(snac *user, const char *new_account)
1526/* creates a Move message (to move the user to new_account) */
1527{
1528 xs_dict *msg = msg_base(user, "Move", "@dummy", user->actor, NULL, user->actor);
1529
1530 msg = xs_dict_append(msg, "target", new_account);
1531
1532 return msg;
1533}
1534
1535
1525xs_dict *msg_question(snac *user, const char *content, xs_list *attach, 1536xs_dict *msg_question(snac *user, const char *content, xs_list *attach,
1526 const xs_list *opts, int multiple, int end_secs) 1537 const xs_list *opts, int multiple, int end_secs)
1527/* creates a Question message */ 1538/* creates a Question message */
@@ -2653,6 +2664,22 @@ int process_queue(void)
2653} 2664}
2654 2665
2655 2666
2667/** account migration **/
2668
2669int migrate_account(snac *user)
2670/* migrates this account to a new one (stored in the 'aka' user field) */
2671{
2672 const char *new_account = xs_dict_get(user->config, "aka");
2673
2674 if (xs_type(new_account) != XSTYPE_STRING) {
2675 snac_log(user, xs_fmt("Cannot migrate: 'aka' (new account) not defined"));
2676 return 1;
2677 }
2678
2679 return 0;
2680}
2681
2682
2656/** HTTP handlers */ 2683/** HTTP handlers */
2657 2684
2658int activitypub_get_handler(const xs_dict *req, const char *q_path, 2685int activitypub_get_handler(const xs_dict *req, const char *q_path,
diff --git a/main.c b/main.c
index 6392965..ed8f199 100644
--- a/main.c
+++ b/main.c
@@ -273,6 +273,10 @@ int main(int argc, char *argv[])
273 return 0; 273 return 0;
274 } 274 }
275 275
276 if (strcmp(cmd, "migrate") == 0) { /** **/
277 return migrate_account(&snac);
278 }
279
276 if ((url = GET_ARGV()) == NULL) 280 if ((url = GET_ARGV()) == NULL)
277 return usage(); 281 return usage();
278 282
diff --git a/snac.h b/snac.h
index 57c11fe..0d93659 100644
--- a/snac.h
+++ b/snac.h
@@ -310,6 +310,7 @@ xs_dict *msg_actor(snac *snac);
310xs_dict *msg_update(snac *snac, const xs_dict *object); 310xs_dict *msg_update(snac *snac, const xs_dict *object);
311xs_dict *msg_ping(snac *user, const char *rcpt); 311xs_dict *msg_ping(snac *user, const char *rcpt);
312xs_dict *msg_pong(snac *user, const char *rcpt, const char *object); 312xs_dict *msg_pong(snac *user, const char *rcpt, const char *object);
313xs_dict *msg_move(snac *user, const char *new_account);
313xs_dict *msg_question(snac *user, const char *content, xs_list *attach, 314xs_dict *msg_question(snac *user, const char *content, xs_list *attach,
314 const xs_list *opts, int multiple, int end_secs); 315 const xs_list *opts, int multiple, int end_secs);
315 316
@@ -389,6 +390,7 @@ void mastoapi_purge(void);
389void verify_links(snac *user); 390void verify_links(snac *user);
390 391
391void export_csv(snac *user); 392void export_csv(snac *user);
393int migrate_account(snac *user);
392void import_csv(snac *user); 394void import_csv(snac *user);
393 395
394typedef enum { 396typedef enum {