1use crate::{Hostname, PeerContents, Timestring, PERSISTENT_KEEPALIVE_INTERVAL_SECS};
2use std::{net::IpAddr, time::SystemTime};
3use wireguard_control::KeyPair;
4
5pub struct NewPeerInfo {
6 pub name: Hostname,
7 pub ip: IpAddr,
8 pub cidr_id: i64,
9 pub is_admin: bool,
10 pub invite_expires: Timestring,
11}
12
13impl NewPeerInfo {
14 pub fn into_peer_contents(self, keypair: &KeyPair) -> PeerContents {
15 PeerContents {
16 name: self.name,
17 ip: self.ip,
18 cidr_id: self.cidr_id,
19 public_key: keypair.public.to_base64(),
20 endpoint: None,
21 is_admin: self.is_admin,
22 is_disabled: false,
23 is_redeemed: false,
24 persistent_keepalive_interval: Some(PERSISTENT_KEEPALIVE_INTERVAL_SECS),
25 invite_expires: Some(SystemTime::now() + self.invite_expires.into()),
26 candidates: vec![],
27 }
28 }
29}