Magic DNS and easytier-web improvements (#856)

1. dns add macos system config
2. allow easytier-web serve dashboard and api in same port
This commit is contained in:
Sijie.Sun
2025-05-18 16:34:35 +08:00
committed by GitHub
parent 28fe6257be
commit 7c6daf7c56
7 changed files with 250 additions and 18 deletions

View File

@@ -78,10 +78,9 @@ struct Cli {
#[arg(
long,
short='l',
default_value = "11210",
help = t!("cli.web_server_port").to_string(),
)]
web_server_port: u16,
web_server_port: Option<u16>,
#[cfg(feature = "embed")]
#[arg(
@@ -92,9 +91,7 @@ struct Cli {
no_web: bool,
}
pub fn get_listener_by_url(
l: &url::Url,
) -> Result<Box<dyn TunnelListener>, Error> {
pub fn get_listener_by_url(l: &url::Url) -> Result<Box<dyn TunnelListener>, Error> {
Ok(match l.scheme() {
"tcp" => Box::new(TcpTunnelListener::new(l.clone())),
"udp" => Box::new(UdpTunnelListener::new(l.clone())),
@@ -126,17 +123,30 @@ async fn main() {
let db = db::Db::new(cli.db).await.unwrap();
let listener = get_listener_by_url(
&format!("{}://0.0.0.0:{}", cli.config_server_protocol, cli.config_server_port).parse().unwrap(),
&format!(
"{}://0.0.0.0:{}",
cli.config_server_protocol, cli.config_server_port
)
.parse()
.unwrap(),
)
.unwrap();
let mut mgr = client_manager::ClientManager::new(db.clone());
mgr.serve(listener).await.unwrap();
let mgr = Arc::new(mgr);
#[cfg(feature = "embed")]
let restful_also_serve_web = !cli.no_web
&& (cli.web_server_port.is_none() || cli.web_server_port == Some(cli.api_server_port));
#[cfg(not(feature = "embed"))]
let restful_also_serve_web = false;
let mut restful_server = restful::RestfulServer::new(
format!("0.0.0.0:{}", cli.api_server_port).parse().unwrap(),
mgr.clone(),
db,
restful_also_serve_web,
)
.await
.unwrap();
@@ -145,13 +155,15 @@ async fn main() {
#[cfg(feature = "embed")]
let mut web_server = web::WebServer::new(
format!("0.0.0.0:{}", cli.web_server_port).parse().unwrap()
format!("0.0.0.0:{}", cli.web_server_port.unwrap_or(0))
.parse()
.unwrap(),
)
.await
.unwrap();
#[cfg(feature = "embed")]
if !cli.no_web {
if !cli.no_web && !restful_also_serve_web {
web_server.start().await.unwrap();
}