aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Auvolat <alex@adnab.me>2021-12-08 12:16:28 +0100
committerAlex Auvolat <alex@adnab.me>2021-12-08 12:16:28 +0100
commit090e58ca7cb6df7eb0e2a0c964ba0e3a22cfe6db (patch)
treed95904ffbf68a71c1211e49ebb4b5ee0ebc4e675
parent8a4778c6bc28403f85a68c420709d2758c7378c4 (diff)
downloadtricot-090e58ca7cb6df7eb0e2a0c964ba0e3a22cfe6db.tar.gz
tricot-090e58ca7cb6df7eb0e2a0c964ba0e3a22cfe6db.zip
Let's encrypt email address as parameter
-rw-r--r--src/cert_store.rs6
-rw-r--r--src/main.rs9
2 files changed, 12 insertions, 3 deletions
diff --git a/src/cert_store.rs b/src/cert_store.rs
index 4cc2fc0..2834795 100644
--- a/src/cert_store.rs
+++ b/src/cert_store.rs
@@ -18,18 +18,20 @@ use crate::proxy_config::*;
pub struct CertStore {
consul: Consul,
+ letsencrypt_email: String,
certs: RwLock<HashMap<String, Arc<Cert>>>,
self_signed_certs: RwLock<HashMap<String, Arc<Cert>>>,
rx_proxy_config: watch::Receiver<Arc<ProxyConfig>>,
}
impl CertStore {
- pub fn new(consul: Consul, rx_proxy_config: watch::Receiver<Arc<ProxyConfig>>) -> Arc<Self> {
+ pub fn new(consul: Consul, rx_proxy_config: watch::Receiver<Arc<ProxyConfig>>, letsencrypt_email: String) -> Arc<Self> {
Arc::new(Self {
consul,
certs: RwLock::new(HashMap::new()),
self_signed_certs: RwLock::new(HashMap::new()),
rx_proxy_config,
+ letsencrypt_email,
})
}
@@ -157,7 +159,7 @@ impl CertStore {
// ---- Do let's encrypt stuff ----
let dir = Directory::from_url(DirectoryUrl::LetsEncrypt)?;
- let contact = vec!["mailto:alex@adnab.me".to_string()];
+ let contact = vec![format!("mailto:{}", self.letsencrypt_email)];
let acc =
if let Some(acc_privkey) = self.consul.kv_get("letsencrypt_account_key.pem").await? {
diff --git a/src/main.rs b/src/main.rs
index 481fe35..bea09bd 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -52,6 +52,13 @@ struct Opt {
default_value = "0.0.0.0:443"
)]
pub https_bind_addr: SocketAddr,
+
+ /// E-mail address for Let's Encrypt certificate requests
+ #[structopt(
+ long = "letsencrypt-email",
+ env = "TRICOT_LETSENCRYPT_EMAIL",
+ )]
+ pub letsencrypt_email: String,
}
#[tokio::main(flavor = "multi_thread", worker_threads = 10)]
@@ -68,7 +75,7 @@ async fn main() {
let consul = consul::Consul::new(&opt.consul_addr, &opt.consul_kv_prefix, &opt.node_name);
let mut rx_proxy_config = proxy_config::spawn_proxy_config_task(consul.clone());
- let cert_store = cert_store::CertStore::new(consul.clone(), rx_proxy_config.clone());
+ let cert_store = cert_store::CertStore::new(consul.clone(), rx_proxy_config.clone(), opt.letsencrypt_email.clone());
tokio::spawn(cert_store.clone().watch_proxy_config());
tokio::spawn(http::serve_http(opt.http_bind_addr, consul.clone()));