From 2e7feea4bf34cf43883330ab2db737e0cbacd74a Mon Sep 17 00:00:00 2001 From: chn Date: Sat, 4 May 2024 15:38:56 +0800 Subject: [PATCH] fix build --- default.nix | 2 +- src/ssh.cpp | 16 ++++++++++------ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/default.nix b/default.nix index 5593aea..8ad1ae7 100644 --- a/default.nix +++ b/default.nix @@ -13,6 +13,6 @@ else '' wrapProgram $out/bin/hpcstat --set HPCSTAT_SHAREDIR $out/share/hpcstat \ - --set HPCSTAT_DATADIR /var/lib/hpcstat + --set HPCSTAT_DATADIR /var/lib/hpcstat --set HPCSTAT_SSH_BINDIR ${openssh}/bin ''; } diff --git a/src/ssh.cpp b/src/ssh.cpp index ecba639..c5cc101 100644 --- a/src/ssh.cpp +++ b/src/ssh.cpp @@ -14,12 +14,12 @@ namespace hpcstat::ssh { std::optional fingerprint() { - if (auto sharedir = env::env("HPCSTAT_SHAREDIR", true); !sharedir) + if (auto sshbindir = env::env("HPCSTAT_SSH_BINDIR"); !sshbindir) return std::nullopt; else if ( auto output = - exec(std::filesystem::path(*sharedir) / "ssh-add", { "-l" }); + exec(std::filesystem::path(*sshbindir) / "ssh-add", { "-l" }); !output ) { std::cerr << "Failed to get ssh fingerprints\n"; return std::nullopt; } @@ -39,13 +39,15 @@ namespace hpcstat::ssh } std::optional sign(std::string message, std::string fingerprint) { - if (auto sharedir = env::env("HPCSTAT_SHAREDIR", true); !sharedir) + if (auto sshbindir = env::env("HPCSTAT_SSH_BINDIR"); !sshbindir) + return std::nullopt; + else if (auto sharedir = env::env("HPCSTAT_SHAREDIR", true); !sharedir) return std::nullopt; else if ( auto output = exec ( - std::filesystem::path(*sharedir) / "ssh-keygen", + std::filesystem::path(*sshbindir) / "ssh-keygen", { "-Y", "sign", "-q", "-f", fmt::format("{}/keys/{}", *sharedir, Keys[fingerprint].PubkeyFilename), @@ -60,7 +62,9 @@ namespace hpcstat::ssh } bool verify(std::string message, std::string signature, std::string fingerprint) { - if (auto sharedir = env::env("HPCSTAT_SHAREDIR", true); !sharedir) + if (auto sshbindir = env::env("HPCSTAT_SSH_BINDIR"); !sshbindir) + return false; + else if (auto sharedir = env::env("HPCSTAT_SHAREDIR", true); !sharedir) return false; else { @@ -71,7 +75,7 @@ namespace hpcstat::ssh std::ofstream(signaturefile) << signature; return exec ( - std::filesystem::path(*sharedir) / "ssh-keygen", + std::filesystem::path(*sshbindir) / "ssh-keygen", { "-Y", "verify", "-f", fmt::format("{}/keys/{}", *sharedir, Keys[fingerprint].PubkeyFilename),