summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordefault <nobody@localhost>2023-04-16 07:43:41 +0200
committerdefault <nobody@localhost>2023-04-16 07:43:41 +0200
commit0240c871f306f03d105d2ce9ca101932c014fcbd (patch)
treedb9e1c8d77a60104bae61e155679761cbed01530
parent2ec58144ba58c03e30fa5de936db5323da4fb62e (diff)
New function user_open_by_md5().
-rw-r--r--data.c20
-rw-r--r--mastoapi.c6
-rw-r--r--snac.h1
3 files changed, 22 insertions, 5 deletions
diff --git a/data.c b/data.c
index 4e5696e..bc85171 100644
--- a/data.c
+++ b/data.c
@@ -232,6 +232,26 @@ d_char *user_list(void)
}
+int user_open_by_md5(snac *snac, const char *md5)
+/* iterates all users searching by md5 */
+{
+ xs *ulist = user_list();
+ xs_list *p = ulist;
+ xs_str *v;
+
+ while (xs_list_iter(&p, &v)) {
+ user_open(snac, v);
+
+ if (strcmp(snac->md5, md5) == 0)
+ return 1;
+
+ user_free(snac);
+ }
+
+ return 0;
+}
+
+
double mtime_nl(const char *fn, int *n_link)
/* returns the mtime and number of links of a file or directory, or 0.0 */
{
diff --git a/mastoapi.c b/mastoapi.c
index d1ae463..7860046 100644
--- a/mastoapi.c
+++ b/mastoapi.c
@@ -722,12 +722,8 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
xs *out = NULL;
xs *actor = NULL;
- /* if uid it's the md5 of this actor, transform into a real uid */
- if (strcmp(uid, snac1.md5) == 0)
- uid = xs_dict_get(snac1.config, "uid");
-
/* is it a local user? */
- if (user_open(&snac2, uid)) {
+ if (user_open(&snac2, uid) || user_open_by_md5(&snac2, uid)) {
if (opt == NULL) {
/* account information */
actor = msg_actor(&snac2);
diff --git a/snac.h b/snac.h
index 2ab4402..c46b85c 100644
--- a/snac.h
+++ b/snac.h
@@ -42,6 +42,7 @@ typedef struct _snac {
int user_open(snac *snac, const char *uid);
void user_free(snac *snac);
d_char *user_list(void);
+int user_open_by_md5(snac *snac, const char *md5);
void snac_debug(snac *snac, int level, d_char *str);
#define snac_log(snac, str) snac_debug(snac, 0, str)