v0.7.0
Pre-releaseWhat's Changed
-
Improve code style by @MarekPikula in #86
-
TONS of work by @MarekPikula - Lots of improvements to the code. Thank you!!
Create a separate library (headscale-api), which is used as a convenient abstraction layer providing a Pythonic interface with Pydantic. Headscale API is a fully asynchronous library, benefitting from improved concurrency for backend requests, thus increasing page load speed, e.g., on the "Machines" page.
Create a common, validated (with flask-pydantic) API passthrough layer from GUI to the backend.
Move authentication to a separate module (auth.py), consolidating the functionality in a single place (with a better place for expansion in the future).
Move configuration management to a separate module (config.py). Use Pydantic's BaseSettings for reading values from the environment, with extensive validation and error reporting.
Reduce the number/frequency of health checks increasing the overall performance/decreasing load latency:
Now, most checks (e.g., filesystem checks) are performed during server initialization. If any test fails, the server is started in tainted mode, with only the error page exposed (thus reducing the surface of the attack in an invalid state).
Key checks are implicit in the requests to the backend and guarded by @headscale.key_check_guard decorator.
Key renewal is moved to the server-side scheduler.
Introduce type hints to the level satisfactory for mypy static analysis. Also, enable some other linters in CI and add optional pre-commit hooks.
Properly handle some error states. Instead of returning success and handling different responses, if something fails, there is an HTTP error code and standard response for it.
General formatting, minor rewrites for clarity and more idiomatic Python constructs.
Add basic devcontainer setup (if somebody wants to develop this in VS Code).
New Contributors
Full Changelog: v0.6.1...v0.7.0