Added option to enable/disable federation

This commit is contained in:
Felix Ableitner 2019-12-19 01:29:56 +01:00
parent 3d9f7d28d6
commit cdbf260803
4 changed files with 19 additions and 3 deletions

View file

@ -22,6 +22,9 @@
port: 8536 port: 8536
# json web token for authorization between server and client # json web token for authorization between server and client
jwt_secret: "changeme" jwt_secret: "changeme"
# whether to enable activitypub federation. this feature is in alpha, do not enable in production, as might
# cause problems like remote instances fetching and permanently storing bad data.
federation_enabled: false
# rate limits for various user actions, by user ip # rate limits for various user actions, by user ip
rate_limit: { rate_limit: {
# maximum number of messages created in interval # maximum number of messages created in interval

View file

@ -198,7 +198,7 @@ fn main() {
// Create Http server with websocket support // Create Http server with websocket support
HttpServer::new(move || { HttpServer::new(move || {
App::new() let app = App::new()
.data(server.clone()) .data(server.clone())
// Front end routes // Front end routes
.service(actix_files::Files::new("/static", front_end_dir())) .service(actix_files::Files::new("/static", front_end_dir()))
@ -257,10 +257,17 @@ fn main() {
.route( .route(
"/federation/u/{user_name}", "/federation/u/{user_name}",
web::get().to(apub::user::get_apub_user)) web::get().to(apub::user::get_apub_user))
.route( .route("/feeds/all.xml", web::get().to(feeds::get_all_feed));
// Federation
if Settings::get().federation_enabled {
app.route(
".well-known/webfinger", ".well-known/webfinger",
web::get().to(webfinger::get_webfinger_response), web::get().to(webfinger::get_webfinger_response),
) )
} else {
app
}
}) })
.bind((settings.bind, settings.port)) .bind((settings.bind, settings.port))
.unwrap() .unwrap()

View file

@ -25,13 +25,18 @@ pub fn node_info() -> HttpResponse<Body> {
Ok(site_view) => site_view, Ok(site_view) => site_view,
Err(_e) => return HttpResponse::InternalServerError().finish(), Err(_e) => return HttpResponse::InternalServerError().finish(),
}; };
let protocols = if Settings::get().federation_enabled {
vec!["activitypub"]
} else {
vec![]
};
let json = json!({ let json = json!({
"version": "2.0", "version": "2.0",
"software": { "software": {
"name": "lemmy", "name": "lemmy",
"version": version::VERSION, "version": version::VERSION,
}, },
"protocols": [], "protocols": protocols,
"usage": { "usage": {
"users": { "users": {
"total": site_view.number_of_users "total": site_view.number_of_users

View file

@ -16,6 +16,7 @@ pub struct Settings {
pub jwt_secret: String, pub jwt_secret: String,
pub rate_limit: RateLimitConfig, pub rate_limit: RateLimitConfig,
pub email: Option<EmailConfig>, pub email: Option<EmailConfig>,
pub federation_enabled: bool,
} }
#[derive(Debug, Deserialize)] #[derive(Debug, Deserialize)]