From 85ca188ffbc2e5f9bfa639b3e542744b731914ea Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Fri, 31 Jan 2020 23:48:47 +0100 Subject: [PATCH] hagridctl: adapt regenerate script to only regenerate verified keys --- database/src/fs.rs | 2 +- hagridctl/src/regenerate.rs | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/database/src/fs.rs b/database/src/fs.rs index f39b1b1..d617e0e 100644 --- a/database/src/fs.rs +++ b/database/src/fs.rs @@ -236,7 +236,7 @@ impl Filesystem { } /// Returns the backing primary key fingerprint for any key path. - fn path_to_primary(path: &Path) -> Option { + pub fn path_to_primary(path: &Path) -> Option { use std::fs; let typ = fs::symlink_metadata(&path).ok()?.file_type(); if typ.is_symlink() { diff --git a/hagridctl/src/regenerate.rs b/hagridctl/src/regenerate.rs index 9a494e6..7eb8ab4 100644 --- a/hagridctl/src/regenerate.rs +++ b/hagridctl/src/regenerate.rs @@ -1,5 +1,4 @@ use failure::Fallible as Result; -use failure; use std::path::Path; use std::time::Instant; @@ -80,7 +79,7 @@ pub fn do_regenerate(config: &HagridConfig) -> Result<()> { false, )?; - let published_dir = config.keys_external_dir.as_ref().unwrap().join("pub"); + let published_dir = config.keys_external_dir.as_ref().unwrap().join("links").join("by-email"); let dirs: Vec<_> = WalkDir::new(published_dir) .min_depth(1) .max_depth(1) @@ -109,13 +108,13 @@ pub fn do_regenerate(config: &HagridConfig) -> Result<()> { fn regenerate_dir_recursively(db: &KeyDatabase, stats: &mut RegenerateStats, dir: &Path) -> Result<()> { for path in WalkDir::new(dir) + .follow_links(true) .into_iter() .flatten() .filter(|e| e.file_type().is_file()) .map(|entry| entry.into_path()) { - let fpr = KeyDatabase::path_to_fingerprint(&path) - .ok_or_else(|| failure::err_msg("Key not in database!"))?; + let fpr = KeyDatabase::path_to_primary(&path).unwrap(); let result = db.regenerate_links(&fpr); stats.update(result, fpr); }