- Add license header
- Fix pylint, pep8 and pyflakes warnings and errors
- Fix incorrect use of gettext._()
- Don't store hostname and timezone in Plinth storage. Instead use
values from probing the system
- Don't use exec()
- Other minor refactorings
We only need these actions during test time, so create symlinks to
them before running the tests and remove them after testing:
- actions/echo: /bin/echo
- actions/id: /usr/bin/id
This is a four-part process:
1. Hello! Configure basic administrative information.
2. Configure identity information.
3. Configure network.
4. Box is running normally, user can interact with and add and remove
services per the normal processes.
This issue was easy to solve once I started using the Live HTTP
Headers Firefox extension to debug it:
https://addons.mozilla.org/en-US/firefox/addon/live-http-headers/
With this particular InternalRedirect, CherryPy inexplicably responds
with a 301 ("Moved Permanently") unless we manually tell it to use a
307 ("Moved Temporarily") response code. I don't know why CherryPy
does this, and it may be indicative of a deeper problem that I don't
currently have time to debug, as the request-response process for
redirecting from http://(server)/plinth to
https://(server)/plinth/firstboot is ridiculous and contains about
twice as many requests as I would've expected.
James added the Apache Headers module to the makefile, but not the
FreedomBox-Setup configuration script. However, it's ridiculous to
have multiple locations for that same logic, so now the makefile uses
the setup script for the Apache configuration instead.
Also, the modules are now fancy and alphabetized.
If commands are executed synchronously, they'll return output and
error strings. If commands are executed asynchronously, nothing is
returned. We assume you can communicate with asynchronous processes
out-of-band.
Not every command needs to be executed as root, so there's a new
entry-point, *actions.run*, which executes actions as the current
user.