Add encrypted config

This commit is contained in:
Daniel Flanagan 2024-04-13 10:52:26 -05:00
parent 2559ef4452
commit 548e98838b
2 changed files with 31 additions and 2 deletions

20
conf.toml.sops Normal file
View file

@ -0,0 +1,20 @@
{
"data": "ENC[AES256_GCM,data:jVTiiuy0//yVa0QwCvx34IzKFJao3Dd/a9vympEUvqrGXoW2Tx847R1cRQ1UvSJ1/aK+Nzui7MiTCntNORAsIgAr5EkqX54AS/aW5uc0Dk54LM/Sp++wlNeAvNTFFQ7PjVZVEEwcAAGijZpA6QPYu9nMfb3W05OULAqiYj4im+yY/eruYl/lnAQ8Kfn6HERVfNegsPM63wAdyNFgKA==,iv:hhbCMrsoIMSvEMxJXGX8H7SHWKsAtFC7G+JBWBgL2TA=,tag:b+EOgaz9shJWhfcPT05aiQ==,type:str]",
"sops": {
"kms": null,
"gcp_kms": null,
"azure_kv": null,
"hc_vault": null,
"age": [
{
"recipient": "age1stdue5q5teskee057ced6rh9pzzr93xsy66w4sc3zu49rgxl7cjshztt45",
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBuOGgwVFlUeGRTTUVFVjN6\nYVlXRnAzUWo5Y01FaSsrdklGSWtKL0tjY0cwCm9tY3FuZGtLcUUyalpTNUNQeDJa\nVHp5azU2T1FIc0RaYkxCenkwYkRBdGMKLS0tIGQwV0RGQlVnbFRodVkvL0FKZmFX\nTGFsazZNVWxXTUFiL2MxN3JNL0RBU2MKKtK+szuRYu/csPo232Ge/jzlHBqQHNIK\nr8NEFL+Px2pBVXdJh/tibV7b5iUx4s7x9ghmEklhl1ZqwsCkjsmsKQ==\n-----END AGE ENCRYPTED FILE-----\n"
}
],
"lastmodified": "2024-04-13T15:48:26Z",
"mac": "ENC[AES256_GCM,data:BEgO8PoSNO3dIkmiNZ2yXmOWVyrohTT1UT6fpvhGXapUujhZIBNMqTvrTZGJldoeeBOz9FQRdPZGNN+GZAWHZfdMryvym9D0Tj3Rjqbvn6ukJ1uaXblGaB9C4SLfeQ50vK5gEq0Nn2KPtKnPeCFXYFT8ikt2bgo9dROmqkLtmXc=,iv:6O2HP3zwDPhucNruSZ/rrUTy3BeGwXokFblwTStQZf0=,tag:r7DOkdbG2dIWoBmZGbaJPg==,type:str]",
"pgp": null,
"unencrypted_suffix": "_unencrypted",
"version": "3.8.1"
}
}

View file

@ -1,4 +1,4 @@
use std::{collections::HashMap, fmt::Debug};
use std::{collections::HashMap, fmt::Debug, fs::File};
use config::{builder::DefaultState, Config as CConfig, ConfigBuilder};
use redact::serde::redact_secret;
@ -27,6 +27,8 @@ pub struct Config {
pub open_ai: Option<OpenAI>,
}
const CONFIG_FILE_PATH: &str = "./conf.toml";
impl Config {
pub fn load() -> Result<Self> {
let c = Self::builder()?.build()?;
@ -34,10 +36,17 @@ impl Config {
}
pub fn builder() -> Result<ConfigBuilder<DefaultState>> {
let p = std::path::PathBuf::from(CONFIG_FILE_PATH);
if !p.exists() {
warn!(
"Config file '{}' doesn't exist, so defaults will likely be loaded!",
p.display(),
);
}
// TODO: log whether or not we were able to load conf.toml?
Ok(Self::default_builder()
.map_err(Error::from)?
.add_source(config::File::from(std::path::PathBuf::from("./conf.toml")).required(false))
.add_source(config::File::from(p).required(false))
.add_source(config::Environment::with_prefix("chatbot").separator("__")))
}