aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimbeer <himbeer@disroot.org>2024-08-17 15:34:59 +0200
committerHimbeer <himbeer@disroot.org>2024-08-17 15:34:59 +0200
commitf9a8f03228d313d667baef91cdfbb3e668653b28 (patch)
treee31da80d4d0907103806ae8be75f1a6a1d17ef4e
parentb59c3c8e820aebf72ca916cd5753e454ea04e342 (diff)
Save server keypair after generation
-rw-r--r--src/main.rs14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/main.rs b/src/main.rs
index 37cbb20..3c7da1b 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -86,13 +86,13 @@ fn unconfigure_link(connection: &Connection) -> Result<()> {
}
fn read_or_generate_keypair() -> Result<KeyPair> {
- Ok(match read_keypair() {
- Ok(keypair) => keypair,
+ match read_keypair() {
+ Ok(keypair) => Ok(keypair),
Err(e) => {
println!("[warn] unable to read keypair: {}", e);
- KeyPair::generate()
+ generate_and_save_keypair()
}
- })
+ }
}
fn read_keypair() -> Result<KeyPair> {
@@ -102,6 +102,12 @@ fn read_keypair() -> Result<KeyPair> {
Ok(KeyPair::from_private(private_key))
}
+fn generate_and_save_keypair() -> Result<KeyPair> {
+ let keypair = KeyPair::generate();
+ fs::write(CONFIGFILE_PRIVATEKEY, keypair.private.to_base64())?;
+ Ok(keypair)
+}
+
fn read_peers() -> Result<Vec<PeerConfigBuilder>> {
let file = File::open(CONFIGFILE_PEERS)?;
let br = BufReader::new(file);