/* This file is part of jellything (https://codeberg.org/metamuffin/jellything) which is licensed under the GNU Affero General Public License (version 3); see /COPYING. Copyright (C) 2023 metamuffin */ #![feature(lazy_cell)] #![feature(int_roundings)] use crate::routes::ui::{account::hash_password, admin::log::enable_logging}; use database::Database; use federation::Federation; use jellybase::CONF; use jellycommon::user::{PermissionSet, Theme, User}; use log::{error, warn}; use routes::build_rocket; use tokio::fs::create_dir_all; pub use jellybase::database; pub mod federation; pub mod import; pub mod routes; #[rocket::main] async fn main() { enable_logging(); #[cfg(feature = "bypass-auth")] log::warn!("authentification bypass enabled"); create_dir_all(&CONF.cache_path).await.unwrap(); let database = Database::open(&CONF.database_path).unwrap(); let federation = Federation::initialize(); database .user .fetch_and_update(&CONF.admin_username, |admin| { Some(User { admin: true, name: CONF.admin_username.clone(), password: hash_password(&CONF.admin_username, &CONF.admin_password), ..admin.unwrap_or_else(|| User { name: Default::default(), display_name: "Admin".to_string(), password: Default::default(), admin: Default::default(), theme: Theme::Dark, permissions: PermissionSet::default(), }) }) }) .unwrap(); // if let Err(err) = import::import(&database, &federation).await { // log::error!("import not sucessful: {err:?}") // } let r = build_rocket(database, federation).launch().await; match r { Ok(_) => warn!("server shutdown"), Err(e) => error!("server exited: {e}"), } }