asxpio/db/migrations
Sergei Poljanski 4c10221727
All checks were successful
Build and Deploy to Production / test (push) Successful in 27s
Build and Deploy to Production / build (push) Successful in 1m3s
Build and Deploy to Production / deploy (push) Successful in 40s
admin: publish files to the public bucket
There was no way to put a file up for public use short of running an
S3 client with the uploader key. Add a "files" area to the admin:
upload one or more files, copy the link, edit the note, replace the
contents under the same link, delete. It has its own read/write/delete
permission flags like the other areas, and every action is audited.

The objects go to the storage stack's public bucket and are served by
Garage at s3.asxp.io/public/<key>, not by this app. The app's key can
only put and delete there, so a public_files table is the record of
what was published. Keys get a random prefix: links are not guessable
and names never collide.

That host is same-site with the admin, so a file that can carry script
must not render there. Only a fixed list of types (images, PDF, plain
text, audio, video) is served inline; the rest, HTML and SVG included,
is stored as an attachment. Image metadata is stripped by default, as
for the bingo photos, because of GPS tags.

A per-file limit and a total quota keep the small disk on asxpio-ops
from filling up.

Assisted-by: Claude:fable-5-2
2026-11-12 05:52:10 +04:00
..
001_invoices.rb db: connection helper and invoices migration 2026-05-26 17:43:18 +03:00
002_invoice_ltc.rb ltc payments 2026-06-08 18:43:01 +03:00
003_invoice_crypto.rb invoices: multi-crypto payment support 2026-07-03 02:01:57 +04:00
004_bingo.rb bingo: serve datacenter bingo on bingo.asxp.io 2026-10-10 04:51:26 +04:00
005_bingo_photo_variants.rb bingo: SEO pass and resized photos 2026-10-10 06:26:03 +04:00
006_bingo_mw_type.rb bingo: planned status and capacity type 2026-10-10 06:59:04 +04:00
007_users.rb admin: user accounts and session login 2026-10-10 08:25:46 +04:00
008_user_tokens_audit.rb admin: user management, invites, password reset, audit log 2026-10-10 08:31:42 +04:00
009_invoice_cancel_hide.rb invoices: cancel with stamped PDF, superuser-only hiding 2026-10-10 08:35:01 +04:00
010_payout_addresses.rb invoices: payout addresses in the database 2026-10-10 08:36:32 +04:00
011_users_choose_username.rb admin: invite links without a username 2026-10-10 09:12:21 +04:00
012_payout_addresses_rework.rb invoices: self-contained payout addresses 2026-10-10 09:17:09 +04:00
013_bingo_photo_og.rb bingo: 1200x630 JPEG for og:image 2026-10-10 09:28:57 +04:00
014_bingo_updated_at.rb bingo: lastmod from the last edit, not the last insert 2026-10-10 09:30:37 +04:00
015_bingo_about.rb bingo: optional prose per datacenter page 2026-10-10 09:41:11 +04:00
016_bingo_provider.rb bingo: build the card from chosen providers 2026-10-11 21:12:47 +04:00
017_bingo_monitor.rb bingo: add a reachability monitor for the status page 2026-10-18 10:31:00 +04:00
018_public_files.rb admin: publish files to the public bucket 2026-11-12 05:52:10 +04:00