aboutsummaryrefslogtreecommitdiff
path: root/html.c
diff options
context:
space:
mode:
authordefault <nobody@localhost>2024-12-31 17:43:55 +0100
committerdefault <nobody@localhost>2024-12-31 17:43:55 +0100
commit9518bc664c6e2eb1d4308657797174a0f748b3af (patch)
treec61ca1774576fa6cae07c168aff3d166bc7ca1d3 /html.c
parentdc4fcd6f6c7d69c9b2e794d3c2dfb6f75bea572a (diff)
parent33b6f2af00de70a7c0eb768ea7bf815d2f124aae (diff)
Merge branch 'master' of comam.es:git/snac2
Diffstat (limited to 'html.c')
-rw-r--r--html.c35
1 files changed, 34 insertions, 1 deletions
diff --git a/html.c b/html.c
index 942a217..a566823 100644
--- a/html.c
+++ b/html.c
@@ -2934,6 +2934,8 @@ int html_get_handler(const xs_dict *req, const char *q_path,
int proxy = 0;
const char *v;
+ const xs_dict *q_vars = xs_dict_get(req, "q_vars");
+
xs *l = xs_split_n(q_path, "/", 2);
v = xs_list_get(l, 1);
@@ -2942,6 +2944,23 @@ int html_get_handler(const xs_dict *req, const char *q_path,
return HTTP_STATUS_NOT_FOUND;
}
+ if (strcmp(v, "share-bridge") == 0) {
+ /* temporary redirect for a post */
+ const char *login = xs_dict_get(q_vars, "login");
+ const char *content = xs_dict_get(q_vars, "content");
+
+ if (xs_type(login) == XSTYPE_STRING && xs_type(content) == XSTYPE_STRING) {
+ xs *b64 = xs_base64_enc(content, strlen(content));
+
+ srv_log(xs_fmt("share-bridge for user '%s'", login));
+
+ *body = xs_fmt("%s/%s/share?content=%s", srv_baseurl, login, b64);
+ return HTTP_STATUS_SEE_OTHER;
+ }
+ else
+ return HTTP_STATUS_NOT_FOUND;
+ }
+
uid = xs_dup(v);
/* rss extension? */
@@ -2976,7 +2995,6 @@ int html_get_handler(const xs_dict *req, const char *q_path,
int def_show = xs_number_get(xs_dict_get(srv_config, "max_timeline_entries"));
int show = def_show;
- const xs_dict *q_vars = xs_dict_get(req, "q_vars");
if ((v = xs_dict_get(q_vars, "skip")) != NULL)
skip = atoi(v), cache = 0, save = 0;
if ((v = xs_dict_get(q_vars, "show")) != NULL)
@@ -3490,6 +3508,21 @@ int html_get_handler(const xs_dict *req, const char *q_path,
}
}
else
+ if (strcmp(p_path, "share") == 0) { /** direct post **/
+ if (!login(&snac, req)) {
+ *body = xs_dup(uid);
+ status = HTTP_STATUS_UNAUTHORIZED;
+ }
+ else {
+ const char *content = xs_dict_get(q_vars, "content");
+
+// srv_log(xs_fmt("---> SHARE %s", content));
+ *body = xs_fmt("%s/admin", snac.actor);
+ *b_size = strlen(*body);
+ status = HTTP_STATUS_SEE_OTHER;
+ }
+ }
+ else
status = HTTP_STATUS_NOT_FOUND;
user_free(&snac);