blob: 679e87b22bbd4df7fbbf34845cb1012b2d50f366 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
use std::time::{SystemTime, UNIX_EPOCH};
use config::Config;
use database::Database;
use dotenv::dotenv;
use dns::server::DnsServer;
use tracing::{error, metadata::LevelFilter};
use tracing_subscriber::{
filter::filter_fn, prelude::__tracing_subscriber_SubscriberExt, util::SubscriberInitExt, Layer,
};
use web::WebServer;
mod config;
mod database;
mod dns;
mod web;
type Error = Box<dyn std::error::Error>;
pub type Result<T> = std::result::Result<T, Error>;
#[tokio::main]
async fn main() {
if let Err(err) = run().await {
error!("{err}")
};
}
async fn run() -> Result<()> {
dotenv().ok();
tracing_subscriber::registry()
.with(
tracing_subscriber::fmt::layer()
.with_filter(LevelFilter::TRACE)
.with_filter(filter_fn(|metadata| {
metadata.target().starts_with("wrapper")
})),
)
.init();
let config = Config::new();
let database = Database::new(config.clone()).await?;
let dns_server = DnsServer::new(config.clone(), database.clone()).await?;
let (udp, tcp) = dns_server.run().await?;
let web_server = WebServer::new(config, database).await?;
let web = web_server.run().await?;
tokio::join!(udp).0?;
tokio::join!(tcp).0?;
tokio::join!(web).0?;
Ok(())
}
pub fn get_time() -> u64 {
let start = SystemTime::now();
let since_the_epoch = start
.duration_since(UNIX_EPOCH)
.expect("Time went backwards");
since_the_epoch.as_millis() as u64
}
|