commit 25bb8f0

Yonle  ·  2023-07-24 15:56:18 +0000 UTC
parent 34963e0
Rollback to 86f507410bc5a1e6ce8bcd34f94400a380143d64 for some reasons.

Signed-off-by: Yonle <yonle@lecturify.net>
4 files changed,  +42, -40
M html.c
M snac.h
+0, -4
 1@@ -1,9 +1,5 @@
 2 # Release Notes
 3 
 4-## 2.39
 5-
 6-User settings have been moved to their own page.
 7-
 8 ## 2.38
 9 
10 More vulnerability fixes (contributed by yonle).
M html.c
+40, -34
  1@@ -1,4 +1,4 @@
  2-	/* snac - A simple, minimalistic ActivityPub instance */
  3+/* snac - A simple, minimalistic ActivityPub instance */
  4 /* copyright (c) 2022 - 2023 grunfink / MIT license */
  5 
  6 #include "xs.h"
  7@@ -325,8 +325,8 @@ d_char *html_user_header(snac *snac, d_char *s, int local)
  8             s1 = xs_fmt(
  9                 "<a href=\"%s.rss\">%s</a> - "
 10                 "<a href=\"%s/admin\" rel=\"nofollow\">%s</a></nav>\n",
 11-                snac->uid, L("RSS"),
 12-                snac->uid, L("private"));
 13+                snac->actor, L("RSS"),
 14+                snac->actor, L("private"));
 15         else {
 16             xs *n_list = notify_list(snac, 1);
 17             int n_len  = xs_list_len(n_list);
 18@@ -340,14 +340,14 @@ d_char *html_user_header(snac *snac, d_char *s, int local)
 19                 n_str = xs_str_new("");
 20 
 21             s1 = xs_fmt(
 22-                "<a href=\"../%s\">%s</a> - "
 23-                "<a href=\"admin\">%s</a> - "
 24-                "<a href=\"notifications\">%s</a>%s - "
 25-                "<a href=\"people\">%s</a></nav>\n",
 26-                snac->uid, L("public"),
 27-                L("private"),
 28-                L("notifications"), n_str,
 29-                L("people"));
 30+                "<a href=\"%s\">%s</a> - "
 31+                "<a href=\"%s/admin\">%s</a> - "
 32+                "<a href=\"%s/notifications\">%s</a>%s - "
 33+                "<a href=\"%s/people\">%s</a></nav>\n",
 34+                snac->actor, L("public"),
 35+                snac->actor, L("private"),
 36+                snac->actor, L("notifications"), n_str,
 37+                snac->actor, L("people"));
 38         }
 39 
 40         s = xs_str_cat(s, s1);
 41@@ -394,7 +394,7 @@ d_char *html_top_controls(snac *snac, d_char *s)
 42         "<div class=\"snac-note\">\n"
 43         "<details><summary>%s</summary>\n"
 44         "<form autocomplete=\"off\" method=\"post\" "
 45-        "action=\"admin/note\" enctype=\"multipart/form-data\">\n"
 46+        "action=\"%s/admin/note\" enctype=\"multipart/form-data\">\n"
 47         "<textarea class=\"snac-textarea\" name=\"content\" "
 48         "rows=\"8\" wrap=\"virtual\" required=\"required\" placeholder=\"What's on your mind?\"></textarea>\n"
 49         "<input type=\"hidden\" name=\"in_reply_to\" value=\"\">\n"
 50@@ -431,22 +431,21 @@ d_char *html_top_controls(snac *snac, d_char *s)
 51         "<div class=\"snac-top-controls-more\">\n"
 52         "<details><summary>%s</summary>\n"
 53 
 54-        "<form autocomplete=\"off\" method=\"post\" action=\"admin/action\">\n" /** follow **/
 55+        "<form autocomplete=\"off\" method=\"post\" action=\"%s/admin/action\">\n" /** follow **/
 56         "<input type=\"text\" name=\"actor\" required=\"required\" placeholder=\"bob@example.com\">\n"
 57         "<input type=\"submit\" name=\"action\" value=\"%s\"> %s\n"
 58         "</form><p>\n"
 59 
 60-        "<form autocomplete=\"off\" method=\"post\" action=\"admin/action\">\n" /** boost **/
 61+        "<form autocomplete=\"off\" method=\"post\" action=\"%s/admin/action\">\n" /** boost **/
 62         "<input type=\"text\" name=\"id\" required=\"required\" placeholder=\"https://fedi.example.com/bob/....\">\n"
 63         "<input type=\"submit\" name=\"action\" value=\"%s\"> %s\n"
 64         "</form><p>\n"
 65-        "</details>\n"
 66 
 67         "<details><summary>%s</summary>\n"
 68 
 69         "<div class=\"snac-user-setup\">\n" /** user setup **/
 70         "<form autocomplete=\"off\" method=\"post\" "
 71-        "action=\"admin/user-setup\" enctype=\"multipart/form-data\">\n"
 72+        "action=\"%s/admin/user-setup\" enctype=\"multipart/form-data\">\n"
 73         "<p>%s:<br>\n"
 74         "<input type=\"text\" name=\"name\" value=\"%s\" placeholder=\"Your name.\"></p>\n"
 75 
 76@@ -485,6 +484,7 @@ d_char *html_top_controls(snac *snac, d_char *s)
 77 
 78         "</div>\n"
 79         "</details>\n"
 80+        "</details>\n"
 81         "</div>\n"
 82         "</div>\n";
 83 
 84@@ -531,6 +531,7 @@ d_char *html_top_controls(snac *snac, d_char *s)
 85 
 86     xs *s1 = xs_fmt(_tmpl,
 87         L("New Post..."),
 88+        snac->actor,
 89         L("Sensitive content"),
 90         L("Sensitive content description"),
 91         L("Only for mentioned people"),
 92@@ -549,11 +550,16 @@ d_char *html_top_controls(snac *snac, d_char *s)
 93 
 94         L("Post"),
 95 
 96-        L("Operations..."),
 97+        L("Preferences..."),
 98+
 99+        snac->actor,
100         L("Follow"), L("(by URL or user@host)"),
101+
102+        snac->actor,
103         L("Boost"), L("(by URL)"),
104 
105-        L("User Settings..."),
106+        L("User Settings"),
107+        snac->actor,
108         L("Display name"),
109         es1,
110         L("Avatar"),
111@@ -657,13 +663,13 @@ xs_str *html_entry_controls(snac *snac, xs_str *os, const xs_dict *msg, const ch
112 
113     {
114         xs *s1 = xs_fmt(
115-            "<form autocomplete=\"off\" method=\"post\" action=\"admin/action\">\n"
116+            "<form autocomplete=\"off\" method=\"post\" action=\"%s/admin/action\">\n"
117             "<input type=\"hidden\" name=\"id\" value=\"%s\">\n"
118             "<input type=\"hidden\" name=\"actor\" value=\"%s\">\n"
119             "<input type=\"hidden\" name=\"redir\" value=\"%s_entry\">\n"
120             "\n",
121 
122-            id, actor, md5
123+            snac->actor, id, actor, md5
124         );
125 
126         s = xs_str_cat(s, s1);
127@@ -717,7 +723,7 @@ xs_str *html_entry_controls(snac *snac, xs_str *os, const xs_dict *msg, const ch
128         xs *s1 = xs_fmt(
129             "<p><details><summary>%s</summary>\n"
130             "<p><div class=\"snac-note\" id=\"%s_edit\">\n"
131-            "<form autocomplete=\"off\" method=\"post\" action=\"admin/note\" "
132+            "<form autocomplete=\"off\" method=\"post\" action=\"%s/admin/note\" "
133             "enctype=\"multipart/form-data\" id=\"%s_edit_form\">\n"
134             "<textarea class=\"snac-textarea\" name=\"content\" "
135             "rows=\"4\" wrap=\"virtual\" required=\"required\">%s</textarea>\n"
136@@ -740,7 +746,7 @@ xs_str *html_entry_controls(snac *snac, xs_str *os, const xs_dict *msg, const ch
137 
138             L("Edit..."),
139             md5,
140-            md5,
141+            snac->actor, md5,
142             prev_src,
143             id,
144             L("Sensitive content"),
145@@ -768,7 +774,7 @@ xs_str *html_entry_controls(snac *snac, xs_str *os, const xs_dict *msg, const ch
146         xs *s1 = xs_fmt(
147             "<p><details><summary>%s</summary>\n"
148             "<p><div class=\"snac-note\" id=\"%s_reply\">\n"
149-            "<form autocomplete=\"off\" method=\"post\" action=\"admin/note\" "
150+            "<form autocomplete=\"off\" method=\"post\" action=\"%s/admin/note\" "
151             "enctype=\"multipart/form-data\" id=\"%s_reply_form\">\n"
152             "<textarea class=\"snac-textarea\" name=\"content\" "
153             "rows=\"4\" wrap=\"virtual\" required=\"required\">%s</textarea>\n"
154@@ -791,7 +797,7 @@ xs_str *html_entry_controls(snac *snac, xs_str *os, const xs_dict *msg, const ch
155 
156             L("Reply..."),
157             md5,
158-            md5,
159+            snac->actor, md5,
160             ct,
161             id,
162             L("Sensitive content"),
163@@ -1086,10 +1092,10 @@ xs_str *html_entry(snac *snac, xs_str *os, const xs_dict *msg, int local,
164                 /* poll still active */
165                 xs *s1 = xs_fmt("<div class=\"snac-poll-form\">\n"
166                                 "<form autocomplete=\"off\" "
167-                                "method=\"post\" action=\"admin/vote\">\n"
168+                                "method=\"post\" action=\"%s/admin/vote\">\n"
169                                 "<input type=\"hidden\" name=\"actor\" value= \"%s\">\n"
170                                 "<input type=\"hidden\" name=\"irt\" value=\"%s\">\n",
171-                    actor, id);
172+                    snac->actor, actor, id);
173 
174                 while (xs_list_iter(&p, &v)) {
175                     const char *name = xs_dict_get(v, "name");
176@@ -1479,11 +1485,11 @@ d_char *html_people_list(snac *snac, d_char *os, d_char *list, const char *heade
177             s = xs_str_cat(s, "<div class=\"snac-controls\">\n");
178 
179             xs *s1 = xs_fmt(
180-                "<p><form autocomplete=\"off\" method=\"post\" action=\"admin/action\">\n"
181+                "<p><form autocomplete=\"off\" method=\"post\" action=\"%s/admin/action\">\n"
182                 "<input type=\"hidden\" name=\"actor\" value=\"%s\">\n"
183                 "<input type=\"hidden\" name=\"actor-form\" value=\"yes\">\n",
184 
185-                actor_id
186+                snac->actor, actor_id
187             );
188             s = xs_str_cat(s, s1);
189 
190@@ -1507,7 +1513,7 @@ d_char *html_people_list(snac *snac, d_char *os, d_char *list, const char *heade
191             xs *s2 = xs_fmt(
192                 "<p><details><summary>%s</summary>\n"
193                 "<p><div class=\"snac-note\" id=\"%s_%s_dm\">\n"
194-                "<form autocomplete=\"off\" method=\"post\" action=\"admin/note\" "
195+                "<form autocomplete=\"off\" method=\"post\" action=\"%s/admin/note\" "
196                 "enctype=\"multipart/form-data\" id=\"%s_reply_form\">\n"
197                 "<textarea class=\"snac-textarea\" name=\"content\" "
198                 "rows=\"4\" wrap=\"virtual\" required=\"required\"></textarea>\n"
199@@ -1519,7 +1525,7 @@ d_char *html_people_list(snac *snac, d_char *os, d_char *list, const char *heade
200 
201                 L("Direct Message..."),
202                 md5, t,
203-                md5,
204+                snac->actor, md5,
205                 actor_id,
206                 L("Post")
207             );
208@@ -1570,9 +1576,9 @@ xs_str *html_notifications(snac *snac)
209 
210     xs *s1 = xs_fmt(
211         "<form autocomplete=\"off\" "
212-        "method=\"post\" action=\"admin/clear-notifications\" id=\"clear\">\n"
213+        "method=\"post\" action=\"%s/admin/clear-notifications\" id=\"clear\">\n"
214         "<input type=\"submit\" class=\"snac-btn-like\" value=\"%s\">\n"
215-        "</form><p>\n", L("Clear all"));
216+        "</form><p>\n", snac->actor, L("Clear all"));
217     s = xs_str_cat(s, s1);
218 
219     while (xs_list_iter(&p, &v)) {
220@@ -2372,9 +2378,9 @@ int html_post_handler(const xs_dict *req, const char *q_path,
221         char *redir = xs_dict_get(p_vars, "redir");
222 
223         if (xs_is_null(redir))
224-          redir = "";
225+            redir = "snac-posts";
226 
227-        *body   = xs_fmt("../admin#%s", redir);
228+        *body   = xs_fmt("%s/admin#%s", snac.actor, redir);
229         *b_size = strlen(*body);
230     }
231 
+1, -1
1@@ -91,7 +91,7 @@ int server_get_handler(xs_dict *req, char *q_path,
2                     if (user_open(&snac, uid)) {
3                         xs *u = xs_fmt(
4                             "<li><a href=\"%s\">@%s@%s (%s)</a></li>\n",
5-                                uid, uid, host,
6+                                snac.actor, uid, host,
7                                 xs_dict_get(snac.config, "name"));
8 
9                         ul = xs_str_cat(ul, u);
M snac.h
+1, -1
1@@ -1,7 +1,7 @@
2 /* snac - A simple, minimalistic ActivityPub instance */
3 /* copyright (c) 2022 - 2023 grunfink / MIT license */
4 
5-#define VERSION "2.39-dev"
6+#define VERSION "2.38"
7 
8 #define USER_AGENT "snac/" VERSION
9