This commit is contained in:
Tangel 2025-02-08 09:04:04 +00:00 committed by GitHub
parent 18fe8773c8
commit 67615a76a8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 34 additions and 25 deletions

View file

@ -12,8 +12,10 @@ use axum::{
Router,
};
use error::Error;
use std::sync::{Arc, Mutex};
use tokio::net::TcpListener;
use std::{
net::ToSocketAddrs,
sync::{Arc, Mutex},
};
use tracing::log::{info, LevelFilter};
mod activities;
@ -58,8 +60,12 @@ async fn main() -> Result<(), Error> {
.route("/.well-known/webfinger", get(webfinger))
.layer(FederationMiddleware::new(config));
let addr = TcpListener::bind(BIND_ADDRESS).await?;
axum::serve(addr, app.into_make_service()).await?;
let addr = BIND_ADDRESS
.to_socket_addrs()?
.next()
.expect("Failed to lookup domain name");
let listener = tokio::net::TcpListener::bind(addr).await?;
axum::serve(listener, app.into_make_service()).await?;
Ok(())
}

View file

@ -22,7 +22,7 @@ use axum::{
Router,
};
use serde::Deserialize;
use std::net::TcpListener;
use std::net::ToSocketAddrs;
use tracing::info;
pub fn listen(config: &FederationConfig<DatabaseHandle>) -> Result<(), Error> {
@ -35,10 +35,18 @@ pub fn listen(config: &FederationConfig<DatabaseHandle>) -> Result<(), Error> {
.route("/.well-known/webfinger", get(webfinger))
.layer(FederationMiddleware::new(config));
let addr = tokio::net::TcpListener::from_std(TcpListener::bind(hostname)?)?;
let server = axum::serve(addr, app.into_make_service());
let addr = hostname
.to_socket_addrs()?
.next()
.expect("Failed to lookup domain name");
let fut = async move {
let listener = tokio::net::TcpListener::bind(addr).await.unwrap();
axum::serve(listener, app.into_make_service())
.await
.unwrap();
};
tokio::spawn(async move { server.await.unwrap() });
tokio::spawn(fut);
Ok(())
}

View file

@ -424,7 +424,6 @@ mod tests {
use bytes::Bytes;
use http::{HeaderMap, StatusCode};
use std::time::Instant;
use tokio::net::TcpListener;
use tracing::debug;
// This will periodically send back internal errors to test the retry
@ -452,12 +451,10 @@ mod tests {
.route("/", post(dodgy_handler))
.with_state(state);
axum::serve(
TcpListener::bind("0.0.0.0:8002").await.unwrap(),
app.into_make_service(),
)
.await
.unwrap();
let listener = tokio::net::TcpListener::bind("0.0.0.0:8002").await.unwrap();
axum::serve(listener, app.into_make_service())
.await
.unwrap();
}
#[tokio::test(flavor = "multi_thread")]

View file

@ -242,7 +242,6 @@ mod tests {
sync::{atomic::AtomicUsize, Arc},
time::Instant,
};
use tokio::net::TcpListener;
use tracing::info;
// This will periodically send back internal errors to test the retry
@ -262,12 +261,10 @@ mod tests {
.route("/", post(dodgy_handler))
.with_state(state);
axum::serve(
TcpListener::bind("0.0.0.0:8001").await.unwrap(),
app.into_make_service(),
)
.await
.unwrap();
let listener = tokio::net::TcpListener::bind("0.0.0.0:8001").await.unwrap();
axum::serve(listener, app.into_make_service())
.await
.unwrap();
}
#[tokio::test(flavor = "multi_thread")]

View file

@ -26,7 +26,6 @@ use bytes::Bytes;
use derive_builder::Builder;
use dyn_clone::{clone_trait_object, DynClone};
use moka::future::Cache;
use once_cell::sync::Lazy;
use regex::Regex;
use reqwest::{redirect::Policy, Client, Request};
use reqwest_middleware::{ClientWithMiddleware, RequestBuilder};
@ -38,6 +37,7 @@ use std::{
sync::{
atomic::{AtomicU32, Ordering},
Arc,
LazyLock,
},
time::Duration,
};
@ -114,8 +114,8 @@ pub struct FederationConfig<T: Clone> {
pub(crate) queue_retry_count: usize,
}
pub(crate) static DOMAIN_REGEX: Lazy<Regex> =
Lazy::new(|| Regex::new(r"^[a-zA-Z0-9.-]*$").expect("compile regex"));
pub(crate) static DOMAIN_REGEX: LazyLock<Regex> =
LazyLock::new(|| Regex::new(r"^[a-zA-Z0-9.-]*$").expect("compile regex"));
impl<T: Clone> FederationConfig<T> {
/// Returns a new config builder with default values.

View file

@ -31,6 +31,7 @@ use crate::{
traits::{ActivityHandler, Actor, Object},
};
pub use activitystreams_kinds as kinds;
pub use serde_json;
use serde::{de::DeserializeOwned, Deserialize};
use url::Url;