diff --git a/Cargo.toml b/Cargo.toml index ffb19a9..d588921 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,6 +9,7 @@ bincode = "1.1.4" byteorder = "1.3.2" clap = { version="2.33.0", features=["suggestions", "wrap_help", "nightly"] } derivative = "1.0.3" +dnsstamps = "0.1.1" env_logger = "0.6.2" failure = "0.1.5" futures-preview = { version = "=0.3.0-alpha.18", features = ["compat", "async-await", "nightly", "io-compat", "cfg-target-has-atomic"] } diff --git a/src/main.rs b/src/main.rs index 42ca4e8..508ec30 100644 --- a/src/main.rs +++ b/src/main.rs @@ -30,6 +30,7 @@ use globals::*; use byteorder::{BigEndian, ByteOrder}; use clap::Arg; +use dnsstamps::{InformalProperty, WithInformalProperty}; use failure::{bail, ensure}; use futures::prelude::*; use futures::{FutureExt, StreamExt}; @@ -98,7 +99,7 @@ fn main() -> Result<(), Error> { Arg::with_name("listen-addr") .value_name("listen-addr") .takes_value(true) - .default_value("0.0.0.0:4443") + .default_value("127.0.0.1:4443") .required(true) .help("Address and port to listen to"), ) @@ -119,12 +120,25 @@ fn main() -> Result<(), Error> { provider_name if provider_name.starts_with("2.dnscrypt.") => provider_name.to_string(), provider_name => format!("2.dnscrypt.{}", provider_name), }; - let listen_addr: SocketAddr = matches.value_of("listen-addr").unwrap().parse()?; + let listen_addr_s = matches.value_of("listen-addr").unwrap(); + let listen_addr: SocketAddr = listen_addr_s.parse()?; let resolver_kp = SignKeyPair::new(); - println!("Server address: {}", listen_addr); - println!("Provider public key: {}", resolver_kp.pk.as_string()); - println!("Provider name: {}", provider_name); + info!("Server address: {}", listen_addr); + info!("Provider public key: {}", resolver_kp.pk.as_string()); + info!("Provider name: {}", provider_name); + + let stamp = dnsstamps::DNSCryptBuilder::new(dnsstamps::DNSCryptProvider::new( + provider_name.clone(), + resolver_kp.pk.as_bytes().to_vec(), + )) + .with_addr(listen_addr_s.to_string()) + .with_informal_property(InformalProperty::DNSSEC) + .with_informal_property(InformalProperty::NoFilters) + .with_informal_property(InformalProperty::NoLogs) + .serialize() + .unwrap(); + println!("DNS Stamp: {}", stamp); let dnscrypt_cert = DNSCryptCert::new(&resolver_kp);