From 2fc5931a6ce9bbb75757c4a20022b19778bd91c5 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Tue, 24 Oct 2023 19:22:01 +0200 Subject: move db to jellybase --- server/src/database.rs | 54 ------------------------------------------- server/src/main.rs | 21 ++++++++++++++--- server/src/routes/ui/error.rs | 1 + 3 files changed, 19 insertions(+), 57 deletions(-) delete mode 100644 server/src/database.rs (limited to 'server/src') diff --git a/server/src/database.rs b/server/src/database.rs deleted file mode 100644 index 80bfe50..0000000 --- a/server/src/database.rs +++ /dev/null @@ -1,54 +0,0 @@ -/* - 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 -*/ -use crate::routes::ui::account::hash_password; -use anyhow::Context; -use jellybase::CONF; -use jellycommon::{ - user::{PermissionSet, Theme, User}, - Node, -}; -use log::info; -use std::path::Path; -use typed_sled::Tree; - -pub struct Database { - pub db: sled::Db, - - pub user: Tree, - pub invite: Tree, - pub node: Tree, -} - -impl Database { - pub fn open(path: &Path) -> Result { - info!("opening database… (might take up to O(n) time)"); - let db = sled::open(path).context("opening database")?; - info!("creating trees"); - let r = Ok(Self { - user: Tree::open(&db, "user"), - invite: Tree::open(&db, "invite"), - node: Tree::open(&db, "node"), - db, - }); - info!("ready"); - r - } - pub fn create_admin(&self) { - self.user - .insert( - &CONF.admin_username, - &User { - admin: true, - theme: Theme::Dark, - display_name: "Admin".to_string(), - name: CONF.admin_username.clone(), - password: hash_password(&CONF.admin_username, &CONF.admin_password), - permissions: PermissionSet::default(), - }, - ) - .unwrap(); - } -} diff --git a/server/src/main.rs b/server/src/main.rs index 2b2d2c0..7c868a9 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -6,15 +6,16 @@ #![feature(lazy_cell)] #![feature(int_roundings)] -use crate::routes::ui::admin::log::enable_logging; +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 mod database; +pub use jellybase::database; pub mod federation; pub mod import; pub mod routes; @@ -28,7 +29,21 @@ async fn main() { create_dir_all(&CONF.cache_path).await.unwrap(); let database = Database::open(&CONF.database_path).unwrap(); let federation = Federation::initialize(); - database.create_admin(); + + database + .user + .insert( + &CONF.admin_username, + &User { + admin: true, + theme: Theme::Dark, + display_name: "Admin".to_string(), + name: CONF.admin_username.clone(), + password: hash_password(&CONF.admin_username, &CONF.admin_password), + permissions: PermissionSet::default(), + }, + ) + .unwrap(); // if let Err(err) = import::import(&database, &federation).await { // log::error!("import not sucessful: {err:?}") // } diff --git a/server/src/routes/ui/error.rs b/server/src/routes/ui/error.rs index b538a06..a4ef50c 100644 --- a/server/src/routes/ui/error.rs +++ b/server/src/routes/ui/error.rs @@ -5,6 +5,7 @@ */ use super::layout::{DynLayoutPage, LayoutPage}; use crate::{routes::ui::account::rocket_uri_macro_r_account_login, uri}; +use jellybase::database::sled; use rocket::{ catch, http::{MediaType, Status}, -- cgit v1.2.3-70-g09d2 From 203e0f6d790db5512f32787a7c587c46e21cafb8 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Tue, 24 Oct 2023 21:49:30 +0200 Subject: federated content permitted by default --- common/src/user.rs | 4 +++- server/src/routes/stream.rs | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'server/src') diff --git a/common/src/user.rs b/common/src/user.rs index 0d4806e..17700a0 100644 --- a/common/src/user.rs +++ b/common/src/user.rs @@ -47,7 +47,9 @@ impl UserPermission { use UserPermission::*; matches!( self, - Transcode | StreamFormat(Jhls | HlsMaster | HlsVariant | Matroska | Segment) + Transcode + | FederatedContent + | StreamFormat(Jhls | HlsMaster | HlsVariant | Matroska | Segment) ) } } diff --git a/server/src/routes/stream.rs b/server/src/routes/stream.rs index 0569903..5c59591 100644 --- a/server/src/routes/stream.rs +++ b/server/src/routes/stream.rs @@ -68,6 +68,7 @@ pub async fn r_stream( .get(host) .ok_or(anyhow!("no credentials on the server-side"))?; + info!("creating session on {host}"); let instance = federation.get_instance(&host)?.to_owned(); let session = instance .login( @@ -78,6 +79,7 @@ pub async fn r_stream( .await?; let uri = session.stream(&remote_id, &spec); + info!("federation redirect"); return Ok(Either::Right(Redirect::found(uri))); } -- cgit v1.2.3-70-g09d2 From 42b35a4bb86dd6f67cfe6ef14b6ff53f8b9eab1a Mon Sep 17 00:00:00 2001 From: metamuffin Date: Tue, 24 Oct 2023 21:52:54 +0200 Subject: cors stream --- server/src/routes/stream.rs | 1 + 1 file changed, 1 insertion(+) (limited to 'server/src') diff --git a/server/src/routes/stream.rs b/server/src/routes/stream.rs index 5c59591..5944ace 100644 --- a/server/src/routes/stream.rs +++ b/server/src/routes/stream.rs @@ -127,6 +127,7 @@ impl<'r> Responder<'r, 'static> for StreamResponse { fn respond_to(self, _: &'r Request<'_>) -> response::Result<'static> { let mut b = Response::build(); b.status(Status::Ok); + b.header(Header::new("access-control-allow-origin", "*")); if let Some(range) = self.range { b.status(Status::PartialContent); b.header(Header::new("content-range", range.to_cr_hv())); -- cgit v1.2.3-70-g09d2