Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

check headers for firmware version #165

Merged
merged 1 commit into from
Dec 14, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 70 additions & 0 deletions nginx/domains/firmware.ffmuc.net.conf
Original file line number Diff line number Diff line change
@@ -1,3 +1,48 @@
map $http_user_agent $autoupdater {
"Gluon Autoupdater (using libuclient)" 1;
default 0;
}

map $http_x_firmware_version $firmwareVersion {
"~^v(\d+)\.(\d+)\.(\d+)(-next)?" $1.$2.$3$4;
# old next versions v2020.3.4.1-next1 until v2020.3.5.0-next1
"~^v2020\.3\..*-next" "next-v2021";
default "unknown";
}

T0biii marked this conversation as resolved.
Show resolved Hide resolved
map $firmwareVersion $targetDirectory {
# OpenWrt 19.07 (Both Gluon v2019.1.x and v2020.1.x)
# Old autoupdaters do not send the X-Firmware-Version header
"unknown" $gluon_v2019_1_x;
"~^2020\.3\.[2-5]" $gluon_v2019_1_x;

# OpenWrt 21.02
"~^2021\.\d+\." $gluon_v2021_1_x;
"~^2022\.[1-5]\." $gluon_v2021_1_x;
"~^2022\.5\.[0-7]" $gluon_v2021_1_x;
"next-v2021" $gluon_v2021_1_x;
"~^2021\.(8|10|11)\.\d+-next" $gluon_v2021_1_x;
"~^2022.2.1-next" $gluon_v2021_1_x;

# OpenWrt 22.03
"~^2022\.10\." $gluon_v2022_1_x;
"~^2023\.[1-5]\." $gluon_v2022_1_x;
"~^2022\.(5|9|10)\.\d+-next$" $gluon_v2022_1_x;

# OpenWRT 22.03 (still)
"~^2023\.(8|11)\." $gluon_v2023_1_x;
"~^2024\.([0-9]|10|11])\.\d+$" $gluon_v2023_1_x;

# OpenWrt 23.05
"~^2023\.12\.2-next$" $gluon_v2023_2_x;
"~^2024\.([0-9]|10|11)\.\d+-next$" $gluon_v2023_2_x;

# OpenWrt 24.10
# TBD

# Else keep requested branch folder
default "keep";
}

server {
listen 80 default_server;
Expand All @@ -21,6 +66,31 @@ server {
}
}

# temporary location to test the new firmware redirect feature
location ~ ^/(stable|testing|experimental)-debug/ {
# for accessing it e.g. via ffmuc.net/firmware
add_header Access-Control-Allow-Origin "*";

if ($autoupdater = "0") {
break;
}

# Add Gluon releases here that allow an upgrade path to the latest version
# https://github.com/freifunk-gluon/gluon/wiki/Release-life-cycle#migration-paths-diagram
set $gluon_v2019_1_x gluon_v2021.1.x; # we do not have an upgrade path for v2018 and earlier yet
set $gluon_v2021_1_x gluon_v2021.1.x;
set $gluon_v2022_1_x gluon_v2023.1.x;
set $gluon_v2023_1_x gluon_v2023.1.x;
set $gluon_v2023_2_x gluon_v2023.2.x;

if ($targetDirectory = "keep") {
break;
}

rewrite ^/(stable|testing|experimental)-debug/(.*) /$targetDirectory/$2 redirect;
}


location ~ ^/(stable|testing|experimental)/ {
# for accessing it e.g. via ffmuc.net/firmware
add_header Access-Control-Allow-Origin "*";
Expand Down
Loading