From aa5c8ee5a49000d8e0f10ce1c5c1d5a57ae88e25 Mon Sep 17 00:00:00 2001 From: Linnea Gräf Date: Wed, 28 Aug 2024 16:34:38 +0200 Subject: Add initial stuff for the config --- src/config.rs | 12 ++++++++++++ src/login.rs | 17 +++++++++++++++++ src/main.rs | 2 +- 3 files changed, 30 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/config.rs b/src/config.rs index 5e8cc5d..9335cca 100644 --- a/src/config.rs +++ b/src/config.rs @@ -1,5 +1,7 @@ use std::path::Path; +use serde::Deserialize; + pub fn ssh_user() -> &'static str { return "git"; } @@ -9,3 +11,13 @@ pub fn binary_path() -> &'static str { pub fn repo_store() -> &'static Path { return Path::new("/opt/fagit/store/"); } + +#[derive(Deserialize, Default)] +pub struct RepoConfig { + pub access: Vec, +} + +#[derive(Deserialize)] +pub struct KeyPermission { + key: String, +} diff --git a/src/login.rs b/src/login.rs index ca12c50..8639d35 100644 --- a/src/login.rs +++ b/src/login.rs @@ -1,5 +1,6 @@ use std::path::{Path, PathBuf}; +use crate::config::RepoConfig; use crate::Login; use clap::Args; @@ -72,6 +73,22 @@ impl RepoId { fn repo_path(&self) -> PathBuf { return Path::join(crate::config::repo_store(), self.0.clone()); } + + fn get_config(&self) -> RepoConfig { + let config_process = std::process::Command::new("git") + .args([ + "-C", + self.repo_path().to_str().unwrap(), + "show", + "HEAD:.fagit.toml", + ]) + .output() + .unwrap(); + if !config_process.status.success() { + return RepoConfig::default(); + } + toml::de::from_str(&String::from_utf8(config_process.stdout).unwrap()).unwrap() + } } fn canonicalize_repo(path: &str, user: &UserToken) -> RepoId { diff --git a/src/main.rs b/src/main.rs index cb5a926..166f34c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -52,7 +52,7 @@ mod login; fn find_auth_keys(auth: &Auth) { if auth.user != config::ssh_user() { - let authorized_keys_path = Path::new(&auth.home).join(".ssh/authorized_keys_path"); + let authorized_keys_path = Path::new(&auth.home).join(".ssh/authorized_keys"); let mut data = std::fs::File::open(authorized_keys_path).unwrap(); let mut vec = vec![]; data.read_to_end(&mut vec).unwrap(); -- cgit