Code review issue: https://gitlab.com/keys.openpgp.org/hagrid/-/merge_requests/214#note_2482960066 Changes: - Remove "hagrid-delete" bin declaration from Cargo.toml. - Remove "clap" dependency for "hagrid" crate in Cargo.toml as after moving "hagrid-delete" to "hagridctl" "hagrid" crate does not use "clap" any more. - Remove "run-hagrid-delete" recipe with its "hagrid-delete" and "delete" aliases from justfile. - Update Cargo.lock. - Create "delete" command for "hagridctl" by adding cli::Command::Delete variant which previously were hagrid-delete::cli::Cli struct. - Move "delete" module with command handler ("run" function) from "hagrid" crate to hagridctl::delete. - Extend hagridctl::cli::dispatch_cmd() function with processing of cli::Command::Delete variant and call to hagridctl::delete::run. - Move print_errors() from hagrid::delete::cli module to hagrdictl::cli. - Move KeyDatabase instantiation from hagrid/src/main.rs into hagridctl::delete::run command handler as this way of database instantiation is specific to "delete" command. Probably later we have to reconsider how we instantiate database for all the commands to avoid reimplementing that functionality every time and duplicating the code. That move caused change in signature of hagridctl::delete::run function. Now we pass base path instead of db reference.
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
.