Port 4ducky to Rust (Axum + SQLite)

Same design, layout, URLs and features as the PHP version: browse grid,
image view with AJAX comments, BBCode, likes, uploads (file, URL and
bookmarklet), quicktagger, profile, block list, inbox, invites, Hall of
Ducks, Truhe, abuse reports and the admin tools.

- Parameterized SQL, escaped templates (askama), argon2 passwords,
  server-side sessions, CSRF tokens on every write, strict script CSP
- SSRF-safe remote image fetching, magic-byte upload checks
- Self-hosted captcha replaces reCAPTCHA v1; analytics/social widgets removed
- Vanilla JS replaces jQuery and its plugins with the same DOM behaviour
- Reverse proxy support (frontend_path, trust_proxy, secure_cookies)
- Admin CLI: admin, settings, invites

See README.md for running it and the full list of changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-17 02:15:05 +02:00
co-authored by Claude Opus 5.5
parent 664d8c6117
commit d0f2d526df
56 changed files with 11133 additions and 0 deletions
+41
View File
@@ -0,0 +1,41 @@
/* Additions for the Rust port. Everything else is the original styles_b.css / styles_fb.css. */
/* styles_*.css say `width: 64x` (typo) - guest teaser images overflowed the grid. */
#imageGrid div.b2 {
width: 64px;
}
/* textareas sized by cols= overflowed their box with wider fonts */
#CommentForm textarea, #UForm textarea {
box-sizing: border-box;
width: calc(100% - 10px);
}
form.addComment textarea {
box-sizing: border-box;
max-width: calc(100% - 10px);
}
/* jQuery slimScroll replacement: thin, rounded, gray scrollbars. */
div#rightpanel {
bottom: 0;
overflow-y: auto;
scrollbar-width: thin;
scrollbar-color: #555 transparent;
}
div#rightpanel::-webkit-scrollbar { width: 7px; }
div#rightpanel::-webkit-scrollbar-thumb { background: #555; border-radius: 7px; }
#spendenducks {
height: 190px;
width: 599px;
overflow-y: auto;
scrollbar-width: thin;
scrollbar-color: #555 transparent;
}
#spendenducks::-webkit-scrollbar { width: 7px; }
#spendenducks::-webkit-scrollbar-thumb { background: #555; border-radius: 7px; }
/* Links without href used to be href="javascript:;" */
a[data-menu], a[data-toggle], a[data-fav], a[data-bbcode], a[data-admin], a[data-delcomment] {
cursor: pointer;
}