commit 75e061a
Yonle
·
2023-07-23 16:11:02 +0000 UTC
parent 4003883
html.c & httpd.c: Fix hardlink. Some people may still want to post in the web client with such different way, Such as posting from Yggdrasil / SSH port forwarder, and so on. This commit gives the workaround for that purpose, However things will go messed up when current path were ends with / (Like: user/, admin/). But overall, If user just uses it like normal, Then things will just worked well as expected. Signed-off-by: Yonle <yonle@lecturify.net>
M
html.c
+31,
-37
1@@ -325,8 +325,8 @@ d_char *html_user_header(snac *snac, d_char *s, int local)
2 s1 = xs_fmt(
3 "<a href=\"%s.rss\">%s</a> - "
4 "<a href=\"%s/admin\" rel=\"nofollow\">%s</a></nav>\n",
5- snac->actor, L("RSS"),
6- snac->actor, L("private"));
7+ snac->uid, L("RSS"),
8+ snac->uid, L("private"));
9 else {
10 xs *n_list = notify_list(snac, 1);
11 int n_len = xs_list_len(n_list);
12@@ -340,18 +340,17 @@ d_char *html_user_header(snac *snac, d_char *s, int local)
13 n_str = xs_str_new("");
14
15 s1 = xs_fmt(
16- "<a href=\"%s\">%s</a> - "
17- "<a href=\"%s/admin\">%s</a> - "
18- "<a href=\"%s/notifications\">%s</a>%s - "
19- "<a href=\"%s/people\">%s</a> - "
20- "<a href=\"%s/settings\">%s</a>"
21- "</nav>\n",
22- snac->actor, L("public"),
23- snac->actor, L("private"),
24- snac->actor, L("notifications"), n_str,
25- snac->actor, L("people"),
26- snac->actor, L("settings")
27- );
28+ "<a href=\"../%s\">%s</a> - "
29+ "<a href=\"admin\">%s</a> - "
30+ "<a href=\"notifications\">%s</a>%s - "
31+ "<a href=\"people\">%s</a></nav>\n"
32+ "<a href=\"settings\">%s</a>"
33+ "</nav>"
34+ snac->uid, L("public"),
35+ L("private"),
36+ L("notifications"), n_str,
37+ L("people"),
38+ L("settings"));
39 }
40
41 s = xs_str_cat(s, s1);
42@@ -398,7 +397,7 @@ xs_str *html_top_controls(snac *snac, xs_str *s, int settings)
43 "<div class=\"snac-note\" %s>\n"
44 "<details><summary>%s</summary>\n"
45 "<form autocomplete=\"off\" method=\"post\" "
46- "action=\"%s/admin/note\" enctype=\"multipart/form-data\">\n"
47+ "action=\"admin/note\" enctype=\"multipart/form-data\">\n"
48 "<textarea class=\"snac-textarea\" name=\"content\" "
49 "rows=\"8\" wrap=\"virtual\" required=\"required\" placeholder=\"What's on your mind?\"></textarea>\n"
50 "<input type=\"hidden\" name=\"in_reply_to\" value=\"\">\n"
51@@ -435,12 +434,12 @@ xs_str *html_top_controls(snac *snac, xs_str *s, int settings)
52 "<div class=\"snac-top-controls-more\" %s>\n"
53 "<p><details><summary>%s</summary>\n"
54
55- "<form autocomplete=\"off\" method=\"post\" action=\"%s/admin/action\">\n" /** follow **/
56+ "<form autocomplete=\"off\" method=\"post\" action=\"admin/action\">\n" /** follow **/
57 "<input type=\"text\" name=\"actor\" required=\"required\" placeholder=\"bob@example.com\">\n"
58 "<input type=\"submit\" name=\"action\" value=\"%s\"> %s\n"
59 "</form><p>\n"
60
61- "<form autocomplete=\"off\" method=\"post\" action=\"%s/admin/action\">\n" /** boost **/
62+ "<form autocomplete=\"off\" method=\"post\" action=\"admin/action\">\n" /** boost **/
63 "<input type=\"text\" name=\"id\" required=\"required\" placeholder=\"https://fedi.example.com/bob/....\">\n"
64 "<input type=\"submit\" name=\"action\" value=\"%s\"> %s\n"
65 "</form><p>\n"
66@@ -453,7 +452,7 @@ xs_str *html_top_controls(snac *snac, xs_str *s, int settings)
67
68 "<div class=\"snac-user-setup\">\n" /** user setup **/
69 "<form autocomplete=\"off\" method=\"post\" "
70- "action=\"%s/admin/user-setup\" enctype=\"multipart/form-data\">\n"
71+ "action=\"admin/user-setup\" enctype=\"multipart/form-data\">\n"
72 "<p>%s:<br>\n"
73 "<input type=\"text\" name=\"name\" value=\"%s\" placeholder=\"Your name.\"></p>\n"
74
75@@ -538,7 +537,6 @@ xs_str *html_top_controls(snac *snac, xs_str *s, int settings)
76 xs *s1 = xs_fmt(_tmpl,
77 settings ? "style=\"display: none\"" : "",
78 L("New Post..."),
79- snac->actor,
80 L("Sensitive content"),
81 L("Sensitive content description"),
82 L("Only for mentioned people"),
83@@ -560,16 +558,12 @@ xs_str *html_top_controls(snac *snac, xs_str *s, int settings)
84 settings ? "style=\"display: none\"" : "",
85 L("Operations..."),
86
87- snac->actor,
88 L("Follow"), L("(by URL or user@host)"),
89-
90- snac->actor,
91 L("Boost"), L("(by URL)"),
92
93 !settings ? "style=\"display: none\"" : "",
94
95 L("User Settings"),
96- snac->actor,
97 L("Display name"),
98 es1,
99 L("Avatar"),
100@@ -673,13 +667,13 @@ xs_str *html_entry_controls(snac *snac, xs_str *os, const xs_dict *msg, const ch
101
102 {
103 xs *s1 = xs_fmt(
104- "<form autocomplete=\"off\" method=\"post\" action=\"%s/admin/action\">\n"
105+ "<form autocomplete=\"off\" method=\"post\" action=\"admin/action\">\n"
106 "<input type=\"hidden\" name=\"id\" value=\"%s\">\n"
107 "<input type=\"hidden\" name=\"actor\" value=\"%s\">\n"
108 "<input type=\"hidden\" name=\"redir\" value=\"%s_entry\">\n"
109 "\n",
110
111- snac->actor, id, actor, md5
112+ id, actor, md5
113 );
114
115 s = xs_str_cat(s, s1);
116@@ -733,7 +727,7 @@ xs_str *html_entry_controls(snac *snac, xs_str *os, const xs_dict *msg, const ch
117 xs *s1 = xs_fmt(
118 "<p><details><summary>%s</summary>\n"
119 "<p><div class=\"snac-note\" id=\"%s_edit\">\n"
120- "<form autocomplete=\"off\" method=\"post\" action=\"%s/admin/note\" "
121+ "<form autocomplete=\"off\" method=\"post\" action=\"admin/note\" "
122 "enctype=\"multipart/form-data\" id=\"%s_edit_form\">\n"
123 "<textarea class=\"snac-textarea\" name=\"content\" "
124 "rows=\"4\" wrap=\"virtual\" required=\"required\">%s</textarea>\n"
125@@ -784,7 +778,7 @@ xs_str *html_entry_controls(snac *snac, xs_str *os, const xs_dict *msg, const ch
126 xs *s1 = xs_fmt(
127 "<p><details><summary>%s</summary>\n"
128 "<p><div class=\"snac-note\" id=\"%s_reply\">\n"
129- "<form autocomplete=\"off\" method=\"post\" action=\"%s/admin/note\" "
130+ "<form autocomplete=\"off\" method=\"post\" action=\"admin/note\" "
131 "enctype=\"multipart/form-data\" id=\"%s_reply_form\">\n"
132 "<textarea class=\"snac-textarea\" name=\"content\" "
133 "rows=\"4\" wrap=\"virtual\" required=\"required\">%s</textarea>\n"
134@@ -807,7 +801,7 @@ xs_str *html_entry_controls(snac *snac, xs_str *os, const xs_dict *msg, const ch
135
136 L("Reply..."),
137 md5,
138- snac->actor, md5,
139+ md5,
140 ct,
141 id,
142 L("Sensitive content"),
143@@ -1102,10 +1096,10 @@ xs_str *html_entry(snac *snac, xs_str *os, const xs_dict *msg, int local,
144 /* poll still active */
145 xs *s1 = xs_fmt("<div class=\"snac-poll-form\">\n"
146 "<form autocomplete=\"off\" "
147- "method=\"post\" action=\"%s/admin/vote\">\n"
148+ "method=\"post\" action=\"admin/vote\">\n"
149 "<input type=\"hidden\" name=\"actor\" value= \"%s\">\n"
150 "<input type=\"hidden\" name=\"irt\" value=\"%s\">\n",
151- snac->actor, actor, id);
152+ actor, id);
153
154 while (xs_list_iter(&p, &v)) {
155 const char *name = xs_dict_get(v, "name");
156@@ -1495,11 +1489,11 @@ d_char *html_people_list(snac *snac, d_char *os, d_char *list, const char *heade
157 s = xs_str_cat(s, "<div class=\"snac-controls\">\n");
158
159 xs *s1 = xs_fmt(
160- "<p><form autocomplete=\"off\" method=\"post\" action=\"%s/admin/action\">\n"
161+ "<p><form autocomplete=\"off\" method=\"post\" action=\"admin/action\">\n"
162 "<input type=\"hidden\" name=\"actor\" value=\"%s\">\n"
163 "<input type=\"hidden\" name=\"actor-form\" value=\"yes\">\n",
164
165- snac->actor, actor_id
166+ actor_id
167 );
168 s = xs_str_cat(s, s1);
169
170@@ -1523,7 +1517,7 @@ d_char *html_people_list(snac *snac, d_char *os, d_char *list, const char *heade
171 xs *s2 = xs_fmt(
172 "<p><details><summary>%s</summary>\n"
173 "<p><div class=\"snac-note\" id=\"%s_%s_dm\">\n"
174- "<form autocomplete=\"off\" method=\"post\" action=\"%s/admin/note\" "
175+ "<form autocomplete=\"off\" method=\"post\" action=\"admin/note\" "
176 "enctype=\"multipart/form-data\" id=\"%s_reply_form\">\n"
177 "<textarea class=\"snac-textarea\" name=\"content\" "
178 "rows=\"4\" wrap=\"virtual\" required=\"required\"></textarea>\n"
179@@ -1535,7 +1529,7 @@ d_char *html_people_list(snac *snac, d_char *os, d_char *list, const char *heade
180
181 L("Direct Message..."),
182 md5, t,
183- snac->actor, md5,
184+ md5,
185 actor_id,
186 L("Post")
187 );
188@@ -1586,9 +1580,9 @@ xs_str *html_notifications(snac *snac)
189
190 xs *s1 = xs_fmt(
191 "<form autocomplete=\"off\" "
192- "method=\"post\" action=\"%s/admin/clear-notifications\" id=\"clear\">\n"
193+ "method=\"post\" action=\"admin/clear-notifications\" id=\"clear\">\n"
194 "<input type=\"submit\" class=\"snac-btn-like\" value=\"%s\">\n"
195- "</form><p>\n", snac->actor, L("Clear all"));
196+ "</form><p>\n", L("Clear all"));
197 s = xs_str_cat(s, s1);
198
199 while (xs_list_iter(&p, &v)) {
200@@ -2402,7 +2396,7 @@ int html_post_handler(const xs_dict *req, const char *q_path,
201 if (xs_is_null(redir))
202 redir = "snac-posts";
203
204- *body = xs_fmt("%s/admin#%s", snac.actor, redir);
205+ *body = xs_fmt("../admin#%s", redir);
206 *b_size = strlen(*body);
207 }
208
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- snac.actor, uid, host,
6+ uid, uid, host,
7 xs_dict_get(snac.config, "name"));
8
9 ul = xs_str_cat(ul, u);