Skip to main content

innernet_shared/
peer.rs

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}