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
+34
View File
@@ -0,0 +1,34 @@
{% include "header.html" %}
<div align="center">
<form action="/abuse" method="post">
<fieldset>
<legend>Abuse // Contact: abuse@4ducky.com</legend>
<p style="text-align:left;">Report Abuse or Request Deletion (Copyrighted Material, Pornography, Harassment) If requesting the removal of copyrighted materials, you must be the owner or legally represent the owner of said materials. Report it here:</p>
<dl class="form">
<dt>Imagelink:</dt>
<dd>
<input type="text" name="imglink" value=""/>
</dd>
<dt>Reason:</dt>
<dd>
<input type="text" name="rsn" value=""/>
</dd>
<dt>Email:</dt>
<dd>
<input type="text" name="mail" value="" />
</dd>
<dd>
<input type="submit" class="button login" name="abuse" value="Send" />
<input type="hidden" name="image" value="">
<input type="hidden" name="_csrf" value="{{ l.csrf }}">
</dd>
</dl>
</fieldset>
</form>
</div>
{% include "footer.html" %}