Commit Graph

66 Commits

Author SHA1 Message Date
Catherine 929aedfd2c Use strings.Trim{Prefix,Suffix}. NFC 2025-09-18 20:05:59 +00:00
Catherine 877d375af7 Fold domain names to lowercase when constructing a web root.
Currently all domains with uppercase letters in them (as presented in
the `Host:` header during registration) are broken.
2025-09-18 19:40:51 +00:00
Catherine 3c46169ba6 Refactor authentication code. 2025-09-18 19:23:59 +00:00
bin 6f932df886 Initial Nix flake 2025-09-18 19:14:47 +00:00
Catherine f99298d38b Make Caddy startup dependent on git-pages.
Fly.io starts routing requests to the VM the moment it becomes
reachable (listens on its service ports) even if it is not ready yet.
This causes transient failures on machine startup.
2025-09-18 17:28:25 +00:00
Catherine 2548effeb8 Unify Caddy and git-pages health checks. 2025-09-18 13:50:48 +00:00
Catherine 810dc9cea0 Disable swap on fly.io.
This just results in latency spikes with big uploads.
2025-09-18 13:23:38 +00:00
Catherine d48c754b9e Switch from hivemind to supervisord.
Hivemind doesn't have auto-restart capability (it quits with code 0,
which just stops the VM).
2025-09-18 12:15:23 +00:00
Catherine b85b762ba9 [breaking-change] Update Dockerfile to add Caddy and a fly.io deployment option. 2025-09-18 05:14:04 +00:00
Catherine 0ed4fd2fc2 Fetch repositories to /tmp, not in-memory. 2025-09-18 04:32:23 +00:00
Catherine 07a736382c Automatically set GOMEMLIMIT at 90% of available memory.
Or at the ratio specified by `AUTOMEMLIMIT`.
2025-09-18 03:31:51 +00:00
Catherine fb9f4a7c4a Allow configuring log format.
In a production environment the timestamp will be appended by the log
service.
2025-09-18 02:00:49 +00:00
Catherine bd6e377e43 Allow explicit authorization to bypass wildcard URL restriction. 2025-09-18 01:56:06 +00:00
Catherine bbd7964e0c Revert "Expose metadata when running on bunny.net magic containers."
This reverts commit 705685e918.
2025-09-18 01:42:17 +00:00
Catherine 2ca9a4c244 Revert "Log successful health check."
This reverts commit 82f24d5508.
2025-09-18 01:40:51 +00:00
Catherine c9b2cbb52e Work around a TOCTTOU race in os.Root.MkdirAll().
This race was reliably triggered by an initial push into an empty blob
store, causing it to fail.
2025-09-17 23:14:52 +00:00
Catherine 82f24d5508 Log successful health check. 2025-09-17 18:31:38 +00:00
Catherine f482be4c05 Invalidate S3 backend cache after committing or deleting a manifest. 2025-09-17 17:01:50 +00:00
Catherine 6abaa04688 [breaking-change] S3_ENDPOINT_URLS3_ENDPOINT. 2025-09-17 16:25:31 +00:00
Catherine 73f00459c7 Simplify X-Bunnynet-MC format. 2025-09-17 15:38:32 +00:00
Catherine ea2c2c5d2e [breaking-change] Add a health check endpoint.
Also, simplify the listen endpoint configuration format.
2025-09-17 15:36:27 +00:00
Catherine 13c72015a7 Raise default S3 backend max-age for manifests to 60s.
The default of 5s is way too aggressive and results in poor experience.
2025-09-17 15:16:02 +00:00
Catherine 705685e918 Expose metadata when running on bunny.net magic containers. 2025-09-17 14:55:50 +00:00
Catherine ef7aea6a38 Fix S3 backend cache expiry calculation. 2025-09-17 14:19:10 +00:00
Catherine 48cc4cbcbb Cache misses as well as hits in S3 GetManifest.
Otherwise URLs with a subdirectory end up hammering the backend server.
2025-09-17 14:18:08 +00:00
Catherine a0bd7d8650 Implement migration from v1 data layout. 2025-09-17 13:14:10 +00:00
miyuko 31131a6360 Use a context to ensure a time-based deadline for update operations. 2025-09-17 13:14:42 +01:00
miyuko cf8abbca28 Wrap errors when calling fmt.Errorf. 2025-09-17 13:14:42 +01:00
miyuko 92622b19a4 Fix file not closed after serving a page. 2025-09-17 13:14:42 +01:00
Catherine 3b80cb4144 Fix domain presence check.
Before this commit, domains which had a project deployed but not
an index would be incorrectly considered nonexistent when queried
via the Caddy endpoint.
2025-09-17 12:11:25 +00:00
Catherine 8d9c64410e Update Dockerfile. 2025-09-17 10:31:31 +00:00
Catherine 9e7ea8b5f1 Fix ETag header format. 2025-09-17 10:31:20 +00:00
Catherine 6463c4d2c5 Override backend configuration from environment. 2025-09-17 10:17:45 +00:00
Catherine b3f8b941d8 [breaking-change] Split blob paths for S3 backend as well. 2025-09-17 10:03:39 +00:00
Catherine 373d48ed22 Cache blobs in memory when using the S3 backend. 2025-09-17 07:42:33 +00:00
Catherine 1faf0a4431 Cache manifests in memory when using the S3 backend. 2025-09-17 06:54:20 +00:00
Catherine 876b4596ba Reduce amount of manifest queries sent to the backend. 2025-09-17 06:54:12 +00:00
Catherine 6254176a17 Add logging to S3 backend. 2025-09-17 06:20:22 +00:00
Catherine 7fc81d3d97 [breaking-change] Rearchitect for better object store compatibility.
Co-authored-by: bin <flumf@users.noreply.github.com>
2025-09-17 05:59:50 +00:00
Catherine e0f6dabd9f Set Access-Control-Allow-Origin for HTTP error responses as well. 2025-09-16 17:12:45 +00:00
Catherine b7e16b5e5f Redirect from /foo to /foo/ when serving index.html under it.
Otherwise links break.
2025-09-16 16:51:13 +00:00
Catherine 8b8431201b Allow Authorization: Basic as a fallback for GitHub, etc. 2025-09-16 15:57:55 +00:00
Catherine e86e895913 Add cross-origin isolation headers to GET responses. 2025-09-16 15:21:14 +00:00
Catherine 3d199b660c Add Access-Control-Allow-Origin: * header to GET responses. 2025-09-16 15:04:34 +00:00
Catherine 02c69f8988 Add Cache-Control and ETag headers to GET responses. 2025-09-16 14:40:51 +00:00
Catherine cc42c43de2 Add Server: git-pages header to all responses. 2025-09-16 14:40:44 +00:00
Markus Unterwaditzer bffa79dfba Add a Dockerfile 2025-09-16 15:12:48 +02:00
Catherine 9c0cdaa2eb Report ignored refs in webhook response. 2025-09-16 13:05:40 +00:00
Catherine 20b7689d16 Report fetch outcome in webhook response. 2025-09-15 16:46:19 +00:00
Catherine 03d6c55855 Allow supplying Authorization: via query parameter.
There is no other way to authorize GitHub and Gogs webhook payloads.
2025-09-15 16:46:19 +00:00