ibis/src/main.rs

49 lines
1.3 KiB
Rust
Raw Normal View History

2023-11-15 00:24:50 +00:00
use crate::utils::generate_object_id;
use error::Error;
use tracing::log::LevelFilter;
use activitypub_federation::config::FederationMiddleware;
use axum::{
routing::{get, post},
Router, Server,
};
use crate::federation::routes::http_get_user;
use crate::federation::routes::http_post_user_inbox;
2023-11-15 00:24:50 +00:00
use federation::federation_config;
use std::net::ToSocketAddrs;
use tracing::info;
2023-11-15 00:24:50 +00:00
mod database;
mod error;
mod federation;
mod utils;
#[tokio::main]
async fn main() -> Result<(), Error> {
env_logger::builder()
.filter_level(LevelFilter::Warn)
.filter_module("activitypub_federation", LevelFilter::Info)
.filter_module("fediwiki", LevelFilter::Info)
.init();
2023-11-15 00:24:50 +00:00
let config = federation_config("localhost:8001").await?;
let hostname = config.domain();
info!("Listening with axum on {hostname}");
let config = config.clone();
let app = Router::new()
.route("/:user/inbox", post(http_post_user_inbox))
.route("/:user", get(http_get_user))
.layer(FederationMiddleware::new(config));
let addr = hostname
.to_socket_addrs()?
.next()
.expect("Failed to lookup domain name");
let server = Server::bind(&addr).serve(app.into_make_service());
tokio::spawn(server);
Ok(())
2023-11-14 22:41:58 +00:00
}