This Firmware Wizard lets a user select the correct firmware for his device. Directory listings are used to parse the list of available images.
Similar projects:
- Freifunk Bielefeld Firmware Wizard: Based on this wizard, but also supports LEDE and OpenWRT firmware images
- LibreMesh Chef: Firmware wizard of LibreMesh that supports building custom images on demand
Image paths and available branches can be set in config_template.js
which has to be renamed to config.js
. In addition, directory listings have to be enabled in your prefered web server:
Create a .htaccess
file that enables directory listings:
Options +Indexes
For nginx
, auto-indexing has to be turned on:
location /path/to/builds/ {
autoindex on;
}
For testing purposes or to share files in a LAN, Python can be used. Run python -m http.server 8080
from within this directory (the directory where README.md
can be found) and you are done.
docker build -t gluon-firmware-selector .
docker run -p 80:80 -v /path/to/firmware/:/images:ro -v /path/to/config.js:/usr/share/nginx/html/config.js:ro --name web_firmware gluon-firmware-selector
For https support check jrcs/letsencrypt-nginx-proxy-companion
All available router models are specified in devices.js
via that will match against the filenames.
If no hardware revision is given or is it is empty, the revision is extracted from the file name.
{
<vendor>: {
<model>: <match>,
<model>: {<match>: <revision>, ...}
...
}, ...
}
If two matches overlap, the longest match will be assigned the matching files. On the other hand, the same match can be used by multiple models without problems.
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.