Zeke Fast 3ce6e8b495 Refactor hagrid::web::tests::maintenance() tests. Remove tests' code duplication.
Changes:
- Extract and generalize assert for absence of the maintenance text from
  hagrid::web::tests::maintenance() test to
  hagrid::routes::tests::common::assert::response_does_not_contain_text()
  assert helper function. Reuse it in the test instead.
- Refactor hagrid::web::tests::common::assert::check_maintenance()
  function to make it more reusable and remove code duplication in its
  implementation:
  - Instead of duplicating response asserting code call for the helper
    hagrid::routes::tests::common::assert::response() and prefill the
    status.
  - Make it accept response instead of passing in client and uri. This
    make check_maintenance() helper more reusable as now we are not
    dependent on what HTTP verb is used to get the response. In
    addition, request occurs directly inside body of the test and helper
    just assert the response. Hence, reparation of responsibilities and
    following SRP.
  - Let check_maintenance() accept the maintenance text which is checked
    in response. The previous implementation of the
    hagrid::web::tests::maintenance() test and the helper was frigile as
    it allows a lot of possibilities for maintenance text to go out of
    coherence.
- Adjust code in hagrid::web::tests::maintenance() test according to
  changed signature of check_maintenance() assertion helper.
- Remove hardcoded checks in hagrid::web::tests::maintenance() test and
  reuse assertion helpers.
2025-09-28 01:27:27 +00:00
2020-11-06 11:25:40 +00:00
2025-07-10 16:26:53 +02:00
2025-03-15 13:59:50 +01:00
2022-01-04 12:17:18 +01:00
2025-02-28 22:05:32 +01:00
2019-05-03 11:10:34 +02:00
2025-08-01 10:05:50 +02:00
2025-06-17 10:17:01 +02:00
2025-06-17 10:17:01 +02:00
2025-08-20 21:17:36 +02:00

Hagrid

Hagrid is a verifying OpenPGP key server.

You can find general instructions and an API documentation at the running instance at https://keys.openpgp.org.

Please note that Hagrid is built and maintained only for the service at keys.openpgp.org. It is not maintained or officially supported as deployable software.

Compatibility note: Hagrid v2.0 uses an sqlite certificate store instead of the previous file based database. This means that it also no longer supports serving certificates directly via reverse proxy. You can us hagridctl to dump and import an old database.

License

Hagrid 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.

Hagrid is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with Hagrid. If not, see https://www.gnu.org/licenses/.

Quick Start

Building Hagrid requires a working stable Rust toolchain. The easiest way to get the toolchain is to download rustup.

Additionally, some external dependencies are required. Get them (on Debian or Ubuntu) with

sudo apt install gnutls-bin libssl-dev gcc llvm-dev libclang-dev build-essential pkg-config gettext libsqlite3-dev

After Rust and the other dependencies are installed, copy the config file (or run just init), then simply compile and run:

cd hagrid
cp Rocket.toml.dist Rocket.toml
cargo run

This will spawn a web server listening on port 8080.

For deployment, a release build should be used (cargo build --release). This will be statically built, and can be copied anywhere. You will also need to adjust Rocket.toml accordingly. Hagrid uses sendmail for mailing, so you also need a working local mailer setup.

Development Dependencies

List of dependencies which are required or could be helpful for contribution to the project.

Category Type Name Version Verified Version Notes
Shell Obligatory Zsh >= 5.9 5.9 Required for translated templates generation script.
Shell Preferrable Bash >= 5.2.15 5.2.15 Required for scripts embedded into justfile. If you don't want to use just you probably don't need this shell.
Command Runner Preferrable just >= 1.40.0 1.40.0 All commands from justfile could be run without just, but it makes development more convenient.
SQlite Prompt Preferrable sqlite3 >= 3.40.1 3.40.1 Used by just db recipe to open interactive prompt to SQlite database of the project.

Community

We're in #hagrid on OFTC IRC, also reachable via Matrix as #hagrid:stratum0.org.

Description
No description provided
Readme 4.2 MiB
Languages
Rust 91.6%
Just 3.5%
CSS 2%
Nix 1.2%
Python 1.1%
Other 0.6%