aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQuentin Dufour <quentin@deuxfleurs.fr>2020-05-09 16:27:54 +0200
committerQuentin Dufour <quentin@deuxfleurs.fr>2020-05-09 16:27:54 +0200
commit154546a7b4eb36eb1e78fb814c5fe21c6030c2ee (patch)
treeace4cfa4dde3dbf809fd84e0db5e395db2e537fd
parent41caf6090ca8b24c162946054c48d59387d21200 (diff)
downloaddiplonat-154546a7b4eb36eb1e78fb814c5fe21c6030c2ee.tar.gz
diplonat-154546a7b4eb36eb1e78fb814c5fe21c6030c2ee.zip
Split logic in multiple files!
-rw-r--r--src/diplonat.rs15
-rw-r--r--src/gw.rs13
-rw-r--r--src/main.rs5
3 files changed, 23 insertions, 10 deletions
diff --git a/src/diplonat.rs b/src/diplonat.rs
index 38b2f8a..c209da5 100644
--- a/src/diplonat.rs
+++ b/src/diplonat.rs
@@ -1,18 +1,19 @@
-use igd::Gateway;
use anyhow::{Result, Context};
-
+use log::*;
use crate::*;
pub struct DiplonatContext {
pub config: config::DiplonatConfig,
- //pub gateway: igd::Gateway
+ pub gateway: igd::aio::Gateway
}
-pub fn setup() -> Result<DiplonatContext> {
- return Ok(DiplonatContext {
+pub async fn setup() -> Result<DiplonatContext> {
+ let ctx = DiplonatContext {
config: config::load_env().context("Unable to read configuration from environment")?,
- //gateway: search_gateway(Default::default()).await
- });
+ gateway: gw::get_gateway().await?
+ };
+
+ return Ok(ctx);
}
pub fn listen() -> bool {
diff --git a/src/gw.rs b/src/gw.rs
new file mode 100644
index 0000000..f716a3f
--- /dev/null
+++ b/src/gw.rs
@@ -0,0 +1,13 @@
+use igd::aio::Gateway;
+use igd::aio::search_gateway;
+use anyhow::{Result, Context};
+use log::*;
+
+pub async fn get_gateway() -> Result<igd::aio::Gateway> {
+ let gw = search_gateway(Default::default())
+ .await
+ .context("Failed to find gateway")?;
+
+ info!("Gateway: {}", gw);
+ return Ok(gw);
+}
diff --git a/src/main.rs b/src/main.rs
index 471573b..91074d1 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -3,17 +3,17 @@ use std::net::SocketAddrV4;
use log::*;
-use igd::aio::search_gateway;
use igd::PortMappingProtocol;
mod diplonat;
mod config;
+mod gw;
#[tokio::main]
async fn main() {
pretty_env_logger::init();
- let ctx = diplonat::setup().expect("Setup failed");
+ let ctx = diplonat::setup().await.expect("Setup failed");
diplonat::listen();
/*
let url = format!("http://127.0.0.1:8500/v1/catalog/node/{}", config.consul_node_name);
@@ -28,7 +28,6 @@ async fn main() {
Ok(g) => g,
Err(err) => return println!("Faild to find IGD: {}", err),
};
- info!("Gateway: {}", gateway);
let service = format!("{}:{}", config.private_ip, 1234);
let service: SocketAddrV4 = service.parse().expect("Invalid socket address");