summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--html.c35
-rw-r--r--httpd.c2
2 files changed, 35 insertions, 2 deletions
diff --git a/html.c b/html.c
index 409023d..f750f59 100644
--- a/html.c
+++ b/html.c
@@ -2917,6 +2917,8 @@ int html_get_handler(const xs_dict *req, const char *q_path,
2917 int proxy = 0; 2917 int proxy = 0;
2918 const char *v; 2918 const char *v;
2919 2919
2920 const xs_dict *q_vars = xs_dict_get(req, "q_vars");
2921
2920 xs *l = xs_split_n(q_path, "/", 2); 2922 xs *l = xs_split_n(q_path, "/", 2);
2921 v = xs_list_get(l, 1); 2923 v = xs_list_get(l, 1);
2922 2924
@@ -2925,6 +2927,23 @@ int html_get_handler(const xs_dict *req, const char *q_path,
2925 return HTTP_STATUS_NOT_FOUND; 2927 return HTTP_STATUS_NOT_FOUND;
2926 } 2928 }
2927 2929
2930 if (strcmp(v, "share-bridge") == 0) {
2931 /* temporary redirect for a post */
2932 const char *login = xs_dict_get(q_vars, "login");
2933 const char *content = xs_dict_get(q_vars, "content");
2934
2935 if (xs_type(login) == XSTYPE_STRING && xs_type(content) == XSTYPE_STRING) {
2936 xs *b64 = xs_base64_enc(content, strlen(content));
2937
2938 srv_log(xs_fmt("share-bridge for user '%s'", login));
2939
2940 *body = xs_fmt("%s/%s/share?content=%s", srv_baseurl, login, b64);
2941 return HTTP_STATUS_SEE_OTHER;
2942 }
2943 else
2944 return HTTP_STATUS_NOT_FOUND;
2945 }
2946
2928 uid = xs_dup(v); 2947 uid = xs_dup(v);
2929 2948
2930 /* rss extension? */ 2949 /* rss extension? */
@@ -2959,7 +2978,6 @@ int html_get_handler(const xs_dict *req, const char *q_path,
2959 int def_show = xs_number_get(xs_dict_get(srv_config, "max_timeline_entries")); 2978 int def_show = xs_number_get(xs_dict_get(srv_config, "max_timeline_entries"));
2960 int show = def_show; 2979 int show = def_show;
2961 2980
2962 const xs_dict *q_vars = xs_dict_get(req, "q_vars");
2963 if ((v = xs_dict_get(q_vars, "skip")) != NULL) 2981 if ((v = xs_dict_get(q_vars, "skip")) != NULL)
2964 skip = atoi(v), cache = 0, save = 0; 2982 skip = atoi(v), cache = 0, save = 0;
2965 if ((v = xs_dict_get(q_vars, "show")) != NULL) 2983 if ((v = xs_dict_get(q_vars, "show")) != NULL)
@@ -3473,6 +3491,21 @@ int html_get_handler(const xs_dict *req, const char *q_path,
3473 } 3491 }
3474 } 3492 }
3475 else 3493 else
3494 if (strcmp(p_path, "share") == 0) { /** direct post **/
3495 if (!login(&snac, req)) {
3496 *body = xs_dup(uid);
3497 status = HTTP_STATUS_UNAUTHORIZED;
3498 }
3499 else {
3500 const char *content = xs_dict_get(q_vars, "content");
3501
3502// srv_log(xs_fmt("---> SHARE %s", content));
3503 *body = xs_fmt("%s/admin", snac.actor);
3504 *b_size = strlen(*body);
3505 status = HTTP_STATUS_SEE_OTHER;
3506 }
3507 }
3508 else
3476 status = HTTP_STATUS_NOT_FOUND; 3509 status = HTTP_STATUS_NOT_FOUND;
3477 3510
3478 user_free(&snac); 3511 user_free(&snac);
diff --git a/httpd.c b/httpd.c
index f567d17..626ae9d 100644
--- a/httpd.c
+++ b/httpd.c
@@ -173,7 +173,7 @@ const char *share_page = ""
173"<style>:root {color-scheme: light dark}</style>\n" 173"<style>:root {color-scheme: light dark}</style>\n"
174"</head>\n" 174"</head>\n"
175"<body><h1>%s link share</h1>\n" 175"<body><h1>%s link share</h1>\n"
176"<form method=\"post\" action=\"%s/share-bridge\">\n" 176"<form method=\"get\" action=\"%s/share-bridge\">\n"
177"<textarea name=\"content\" rows=\"6\" wrap=\"virtual\" required=\"required\" style=\"width: 50em\">%s</textarea>\n" 177"<textarea name=\"content\" rows=\"6\" wrap=\"virtual\" required=\"required\" style=\"width: 50em\">%s</textarea>\n"
178"<p>Login: <input type=\"text\" name=\"login\" autocapitalize=\"off\" required=\"required\"></p>\n" 178"<p>Login: <input type=\"text\" name=\"login\" autocapitalize=\"off\" required=\"required\"></p>\n"
179"<input type=\"submit\" value=\"OK\">\n" 179"<input type=\"submit\" value=\"OK\">\n"