summaryrefslogtreecommitdiff
path: root/README.md
Commit message (Collapse)AuthorAgeFilesLines
* convert readme to nfo; convert docs to txtHEADmainChristian Cleberg2 days1-47/+0
|
* update org nameChristian Cleberg2 days1-1/+1
|
* fix: reject forged subdomains in the media proxy (#9)Christian Cleberg2026-07-151-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * fix: make memcache concurrency-safe and stamp the version at link time memcache was a crash waiting for traffic. Readers touched tempFS without holding mx, while a per-entry goroutine deleted from it under the lock: a concurrent map read and map write, which the runtime treats as a fatal error that recover cannot catch. The option ships in config.example.json and was the one cache key SETUP.md never documented, so it read like a free win to enable. Put every map and field access behind the mutex, and age the whole map from one janitor instead of a goroutine per cached file, each of which looped forever holding its entry alive. mx is now a plain Mutex: every operation here mutates something, and the old code took an RLock to write. Document the option, and cover it with tests that run the readers, writers and janitor concurrently. Split the disk/origin fetch out of DownloadAndSendMedia while there, so the error path returns instead of falling through to write an empty body after the error page. Release.Version was hardcoded to 1.3.2, so images tagged v1.3.6 reported 1.3.2 from --help and /api/instance, and --help linked to the wrong release. Take it from a main.version string the release workflow links in from the git tag. * fix: reject forged subdomains in the media proxy DownloadAndSendMedia built its upstream URL by concatenation, pasting the subdomain segment of the request path straight into the host position. That segment reaches the handler already percent-decoded, so it can carry "@", "#", "?" and "/" — the characters that end a host. A request for /media/file/[email protected]:8080%2F/f/x.jpg built a URL whose host parsed as 127.0.0.1:8080, with images-wixmp-x demoted to userinfo, letting any caller aim the instance's fetcher at any address it could reach, including services behind the firewall. Validate the label against ^[a-zA-Z0-9-]+$ and refuse anything else with a 400. Rejecting rather than escaping is what closes this: the label is the host, and url.URL passes a host through verbatim, so building the URL structurally is not sufficient on its own. DeviantArt's own media URLs use a hex-and-dash label, and ParseMedia already splits on the first dot, so a legitimate label cannot contain one. Build the URL from url.URL fields as well, which escapes the path, and encode the token argument, which reached the request unescaped. Reported by CodeQL as go/request-forgery (CWE-918).
* ci: publish multi-arch image to GHCR on release tagsv1.3.4Christian Cleberg2026-07-151-0/+11
| | | | | | | | | | | Build and push linux/amd64 + linux/arm64 images to ghcr.io/zerolabsco/skunky-art on every v* tag, with a signed provenance attestation. The Dockerfile cross-compiles from $BUILDPLATFORM, so the arm64 image builds without QEMU emulation. Default both compose examples to the published image and keep `build: .` commented out for building from a checkout, and extend dependabot to the github-actions and docker ecosystems.
* fix: remove russian language throughoutChristian Cleberg2026-07-151-40/+0
|
* documentation & metadata cleanup (#1)Christian Cleberg2026-07-141-26/+48
| | | | | | | * hard wrap LICENSE for readability * translate TODO.md from Russian to English * clean up TODO.md into a proper GFM todo list * fix: remove dead service links and add working links * update README to reflect new repository and structure
* Add da.opnxng.com + lost-skunk.cc is now in Finlandlost+skunk2025-04-071-0/+0
|
* без второго коммита ну никак..lost+skunk2025-01-041-0/+1
|
* New domain and acknowledgement to vlnstlost+skunk2025-01-041-1/+2
|
* ыlost+skunk2024-11-151-1/+5
|
* v1.3.2v1.3.2lost+skunk2024-09-231-0/+12
|
* [информативная подпись к коммиту]lost+skunk2024-08-131-1/+1
|
* да бляlost+skunk2024-08-131-1/+1
|
* небольшой обосрамс с примерными ссылкамиlost+skunk2024-08-131-1/+1
|
* темплейты в бинарнике и улучшенная ↵lost+skunk2024-08-131-4/+4
| | | | система кеша
* v1.3lost+skunk2024-08-011-70/+20
|
* Подготовка к релизу v1.3.1lost+skunk2024-07-301-17/+22
|
* Исправление некоторых обосрамсовv1.3lost+skunk2024-07-131-0/+2
|
* ёбаный маркдаун, сукаlost+skunk2024-07-131-1/+1
|
* v1.3lost+skunk2024-07-131-0/+76