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
+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
M
httpd.c
+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