diff --git a/easytier/src/peers/peer_ospf_route.rs b/easytier/src/peers/peer_ospf_route.rs index 18084b21..d766a3fc 100644 --- a/easytier/src/peers/peer_ospf_route.rs +++ b/easytier/src/peers/peer_ospf_route.rs @@ -41,7 +41,7 @@ use super::{ }; use crate::common::config::ConfigLoader; use crate::dns::config::DnsGlobalCtxExt; -use crate::proto::dns::DeterministicDigest; +use crate::utils::DeterministicDigest; use crate::{ common::{ config::NetworkIdentity, diff --git a/easytier/src/proto/dns.rs b/easytier/src/proto/dns.rs index 323c1010..22dce587 100644 --- a/easytier/src/proto/dns.rs +++ b/easytier/src/proto/dns.rs @@ -1,24 +1,7 @@ -use serde::Serialize; -use sha2::{Digest, Sha256}; use std::fmt::Display; include!(concat!(env!("OUT_DIR"), "/dns.rs")); -pub trait DeterministicDigest: Serialize { - fn digest(&self) -> Vec { - let json = serde_json::to_vec(self).expect("failed to serialize the object to json"); - let mut hasher = Sha256::new(); - hasher.update(json); - hasher.finalize().to_vec() - } -} - -impl DeterministicDigest for GetExportConfigResponse {} - -impl DeterministicDigest for ZoneConfigPb {} - -impl DeterministicDigest for DnsSnapshot {} - impl Display for ZoneConfigPb { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { writeln!(f, "; EasyTier Magic DNS zone file")?; diff --git a/easytier/src/utils.rs b/easytier/src/utils.rs index 9612be46..6bfb4941 100644 --- a/easytier/src/utils.rs +++ b/easytier/src/utils.rs @@ -1,6 +1,8 @@ use crate::common::log; use indoc::formatdoc; use std::{fs::OpenOptions, str::FromStr}; +use serde::Serialize; +use sha2::{Digest, Sha256}; pub type PeerRoutePair = crate::proto::api::instance::PeerRoutePair; @@ -148,3 +150,14 @@ pub trait BoxExt: Sized { } impl BoxExt for T {} + +pub trait DeterministicDigest: Serialize { + fn digest(&self) -> Vec { + let json = serde_json::to_vec(self).expect("failed to serialize the object to json"); + let mut hasher = Sha256::new(); + hasher.update(json); + hasher.finalize().to_vec() + } +} + +impl DeterministicDigest for S {}