mirror of
https://github.com/kernelkit/infix.git
synced 2026-08-03 14:23:02 +02:00
Replace the RAUC-centric firmware page with a cleaner layout: - Show software slots (primary/secondary) using their bootnames rather than internal RAUC slot names; filter to rootfs-class slots only - Add boot order display (mirrors `show software` in the CLI) - Show installed timestamp per slot (truncated to second precision) - Fix Booted flag comparison: compare against bootname not slot name - Lay out all three cards (Software, Install from URL, Upload & Install) in a responsive grid instead of full-width stacked sections Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
40 lines
1.7 KiB
Plaintext
40 lines
1.7 KiB
Plaintext
# 256 MiB covers current and near-future firmware images (the aarch64
|
|
# .pkg is ~160 MiB today) without setting an alarming body-size cap on
|
|
# devices that may only have 512 MiB of RAM. nginx is the single source
|
|
# of truth for the upload ceiling.
|
|
#
|
|
# Set at server scope (top of file) rather than once on an outer
|
|
# `location /` with a nested inner location: nginx inheritance of
|
|
# client_max_body_size into a nested location that declares its own
|
|
# `proxy_pass` block has bitten us before, silently falling back to
|
|
# the http-level default of 1m and rejecting 160 MiB firmware uploads
|
|
# with 413.
|
|
client_max_body_size 256m;
|
|
|
|
location / {
|
|
include /etc/nginx/webui-proxy.conf;
|
|
}
|
|
|
|
location = /firmware/upload {
|
|
# Body is buffered by nginx (to /var/cache/nginx/client-body, ext4
|
|
# on eMMC, with 16 KB RAM cap before spill) before forwarding to
|
|
# Go. The extra disk pass on a 160 MiB upload is ~30s on eMMC; in
|
|
# exchange Go gets a complete, well-formed request with a known
|
|
# Content-Length. The previous setup used `proxy_request_buffering
|
|
# off` to stream the body straight through and avoid the double
|
|
# write, but that raced the response write with the body forward:
|
|
# net/http EOFs the body reader at Content-Length, then closes the
|
|
# socket, but with streaming the multipart trailer can still be in
|
|
# the kernel receive buffer, so close() sends RST instead of FIN
|
|
# and nginx serves /50x.html to the client.
|
|
proxy_read_timeout 600s;
|
|
include /etc/nginx/webui-proxy.conf;
|
|
}
|
|
|
|
# Liveness probe served by nginx itself — no upstream call, no log line.
|
|
# Used by the watchdog div in base.html and the reboot-overlay poller.
|
|
location = /device-status {
|
|
access_log off;
|
|
return 204;
|
|
}
|