diff --git a/client/Cargo.toml b/client/Cargo.toml index d44e27d..ef0a453 100644 --- a/client/Cargo.toml +++ b/client/Cargo.toml @@ -5,7 +5,7 @@ authors = ["shimun "] edition = "2021" [[bin]] -name = "ssh-cert-dist" +name = "sshcd" path = "src/main.rs" [dependencies] @@ -17,7 +17,7 @@ clap = { version = "4.0.29", features = ["env", "derive"] } rand = "0.8.5" reqwest = { version = "0.11.13" } serde = { version = "1.0.148", features = ["derive"] } -ssh-key = { version = "0.6.0-pre.0", features = ["ed25519", "p256", "p384", "rsa"] } +ssh-key = { version = "0.6.0-pre.0", features = ["ed25519", "p256", "p384", "rsa", "serde"] } thiserror = "1.0.37" tokio = { version = "1.22.0", features = ["io-std", "test-util", "tracing", "macros", "fs"] } tracing = { version = "0.1.37", features = ["release_max_level_debug"] } diff --git a/client/src/client.rs b/client/src/client.rs index 738533f..00c2a3c 100644 --- a/client/src/client.rs +++ b/client/src/client.rs @@ -117,12 +117,12 @@ async fn fetch( }: FetchArgs, ) -> anyhow::Result<()> { let certs = read_certs_dir(&cert_dir).await?; - let publics_keys = read_pubkey_dir(&cert_dir).await?; + // let publics_keys = read_pubkey_dir(&cert_dir).await?; let client = reqwest::Client::new(); let threshold_exp = min_delta.and_then(|min_delta| { SystemTime::now().checked_add(Duration::from_secs(60 * 60 * 24 * min_delta as u64)) }); - let standalone_certs = publics_keys.into_iter().map(|(name, key)| ) + // let standalone_certs = publics_keys.into_iter().map(|(name, key)| ) let updates = certs .into_iter() .filter(|cert| { diff --git a/flake.nix b/flake.nix index 2806046..ad44ce3 100644 --- a/flake.nix +++ b/flake.nix @@ -43,9 +43,11 @@ # `nix run` apps."${pname}-server" = utils.lib.mkApp { drv = packages."${pname}-server"; + exePath = "/bin/sshcd-server"; }; apps."${pname}-client" = utils.lib.mkApp { drv = packages."${pname}-client"; + exePath = "/bin/sshcd"; }; # `nix run .#streamDockerImage | docker load` @@ -91,7 +93,15 @@ rustc --version printf "\nbuild inputs: ${pkgs.lib.concatStringsSep ", " (map (bi: bi.name) (buildInputs ++ nativeBuildInputs))}" function server() { - cargo watch -x "run --bin ssh-cert-dist-server --all-features -- ''${@}" + if [ ! -e "certs/ca.pub" ]; then + mkdir -p certs keys + ssh-keygen -t ed25519 -f certs/ca -q -N "" + ssh-keygen -t ed25519 -f keys/host -q -N "" + ssh-keygen -t ed25519 -f keys/client -q -N "" + ssh-keygen -s certs/ca -V +1000d -h -I host -n localhost,127.0.0.1 -h keys/host.pub + ssh-keygen -s certs/ca -V +1000d -I client -n "client,client@localhost" keys/client.pub -O force-command="echo Hello World" + fi + cargo watch -x "run --bin sshcd-server --all-features -- ''${@}" } ''; }; diff --git a/modules/home-manager.nix b/modules/home-manager.nix index 328ffbb..f78caa3 100644 --- a/modules/home-manager.nix +++ b/modules/home-manager.nix @@ -16,10 +16,10 @@ in runtimeInputs = [ cfg.package ]; text = '' ${optionalString options.fetch '' - ssh-cert-dist fetch --cert-dir '${path}' --api-endpoint '${cfg.endpoint}' + sshcd fetch --cert-dir '${path}' --api-endpoint '${cfg.endpoint}' ''} ${optionalString options.upload '' - ssh-cert-dist upload --api-endpoint '${cfg.endpoint}' ${path}/* + sshcd upload --api-endpoint '${cfg.endpoint}' ${path}/* ''} ''; }); diff --git a/modules/nixos.nix b/modules/nixos.nix index b976182..06697c1 100644 --- a/modules/nixos.nix +++ b/modules/nixos.nix @@ -57,7 +57,7 @@ in chown ${cfg.user}:${cfg.group} ${cfg.dataDir} ''}"; User = cfg.user; - ExecStart = "${cfg.package}/bin/ssh-cert-dist-server"; + ExecStart = "${cfg.package}/bin/sshcd-server"; }; }; }; diff --git a/server/Cargo.toml b/server/Cargo.toml index 07ee978..dd157f2 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -13,6 +13,9 @@ authorized =[ "dep:jwt-compact" ] index = [] info = [ "axum/json", "ssh-key/serde" ] +[[bin]] +name = "sshcd-server" +path = "src/main.rs" [dependencies] anyhow = "1.0.66"