diff options
author | metamuffin <metamuffin@disroot.org> | 2025-04-27 19:25:11 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-04-27 19:25:11 +0200 |
commit | 11a585b3dbe620dcc8772e713b22f1d9ba80d598 (patch) | |
tree | 44f8d97137412aefc79a2425a489c34fa3e5f6c5 /server/src/routes/mod.rs | |
parent | d871aa7c5bba49ff55170b5d2dac9cd440ae7170 (diff) | |
download | jellything-11a585b3dbe620dcc8772e713b22f1d9ba80d598.tar jellything-11a585b3dbe620dcc8772e713b22f1d9ba80d598.tar.bz2 jellything-11a585b3dbe620dcc8772e713b22f1d9ba80d598.tar.zst |
move files around
Diffstat (limited to 'server/src/routes/mod.rs')
-rw-r--r-- | server/src/routes/mod.rs | 238 |
1 files changed, 0 insertions, 238 deletions
diff --git a/server/src/routes/mod.rs b/server/src/routes/mod.rs deleted file mode 100644 index e7e0a60..0000000 --- a/server/src/routes/mod.rs +++ /dev/null @@ -1,238 +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) 2025 metamuffin <metamuffin.org> -*/ -use self::playersync::{r_playersync, PlayersyncChannels}; -use crate::{database::Database, routes::ui::error::MyResult}; -use api::{ - r_api_account_login, r_api_asset_token_raw, r_api_nodes_modified_since, r_api_root, - r_api_version, -}; -use base64::Engine; -use compat::{ - jellyfin::{ - r_jellyfin_artists, r_jellyfin_branding_configuration, r_jellyfin_branding_css, - r_jellyfin_displaypreferences_usersettings, - r_jellyfin_displaypreferences_usersettings_post, r_jellyfin_items, - r_jellyfin_items_image_primary, r_jellyfin_items_images_backdrop, r_jellyfin_items_intros, - r_jellyfin_items_item, r_jellyfin_items_playbackinfo, r_jellyfin_items_similar, - r_jellyfin_livetv_programs_recommended, r_jellyfin_persons, - r_jellyfin_playback_bitratetest, r_jellyfin_quickconnect_enabled, - r_jellyfin_sessions_capabilities_full, r_jellyfin_sessions_playing, - r_jellyfin_sessions_playing_progress, r_jellyfin_shows_nextup, r_jellyfin_socket, - r_jellyfin_system_endpoint, r_jellyfin_system_info, r_jellyfin_system_info_public, - r_jellyfin_system_info_public_case, r_jellyfin_users_authenticatebyname, - r_jellyfin_users_authenticatebyname_case, r_jellyfin_users_id, r_jellyfin_users_items, - r_jellyfin_users_items_item, r_jellyfin_users_public, r_jellyfin_users_views, - r_jellyfin_video_stream, - }, - youtube::{r_youtube_channel, r_youtube_embed, r_youtube_watch}, -}; -use jellybase::{federation::Federation, CONF, SECRETS}; -use log::warn; -use rand::random; -use rocket::{ - catchers, - config::SecretKey, - fairing::AdHoc, - fs::FileServer, - get, - http::Header, - response::{self, Responder}, - routes, - shield::Shield, - Build, Config, Request, Rocket, -}; -use std::fs::File; -use stream::r_stream; -use ui::{ - account::{ - r_account_login, r_account_login_post, r_account_logout, r_account_logout_post, - r_account_register, r_account_register_post, - settings::{r_account_settings, r_account_settings_post}, - }, - admin::{ - log::{r_admin_log, r_admin_log_stream}, - r_admin_dashboard, r_admin_delete_cache, r_admin_import, r_admin_invite, - r_admin_remove_invite, r_admin_transcode_posters, r_admin_update_search, - user::{r_admin_remove_user, r_admin_user, r_admin_user_permission, r_admin_users}, - }, - assets::{r_asset, r_item_backdrop, r_item_poster, r_node_thumbnail, r_person_asset}, - browser::r_all_items_filter, - error::{r_api_catch, r_catch}, - home::r_home, - node::r_library_node_filter, - player::r_player, - r_index, - search::r_search, - stats::r_stats, - style::{r_assets_font, r_assets_js, r_assets_js_map, r_assets_style}, -}; -use userdata::{ - r_node_userdata, r_node_userdata_progress, r_node_userdata_rating, r_node_userdata_watched, -}; - -pub mod api; -pub mod compat; -pub mod locale; -pub mod playersync; -pub mod stream; -pub mod ui; -pub mod userdata; - -#[macro_export] -macro_rules! uri { - ($kk:stmt) => { - &rocket::uri!($kk).to_string() - }; -} - -pub fn build_rocket(database: Database, federation: Federation) -> Rocket<Build> { - rocket::build() - .configure(Config { - address: std::env::var("BIND_ADDR") - .map(|e| e.parse().unwrap()) - .unwrap_or("127.0.0.1".parse().unwrap()), - port: std::env::var("PORT") - .map(|e| e.parse().unwrap()) - .unwrap_or(8000), - secret_key: SecretKey::derive_from( - SECRETS - .cookie_key - .clone() - .unwrap_or_else(|| { - warn!("cookie_key not configured, generating a random one."); - base64::engine::general_purpose::STANDARD.encode([(); 32].map(|_| random())) - }) - .as_bytes(), - ), - ip_header: Some("x-forwarded-for".into()), - ..Default::default() - }) - .manage(database) - .manage(federation) - .manage(PlayersyncChannels::default()) - .attach(AdHoc::on_response("set server header", |_req, res| { - res.set_header(Header::new("server", "jellything")); - Box::pin(async {}) - })) - // TODO this would be useful but needs to handle not only the entry-point - // .attach(AdHoc::on_response("frame options", |req, resp| { - // if !req.uri().path().as_str().starts_with("/embed") { - // resp.set_raw_header("X-Frame-Options", "SAMEORIGIN"); - // } - // Box::pin(async {}) - // })) - .attach(Shield::new()) - .register("/", catchers![r_catch]) - .register("/api", catchers![r_api_catch]) - .mount("/assets", FileServer::from(&CONF.asset_path)) - .mount( - "/", - routes![ - // Frontend - r_account_login_post, - r_account_login, - r_account_logout_post, - r_account_logout, - r_account_register_post, - r_account_register, - r_account_settings_post, - r_account_settings, - r_admin_dashboard, - r_admin_delete_cache, - r_admin_import, - r_admin_invite, - r_admin_log_stream, - r_admin_log, - r_admin_remove_invite, - r_admin_remove_user, - r_admin_transcode_posters, - r_admin_update_search, - r_admin_user_permission, - r_admin_user, - r_admin_users, - r_all_items_filter, - r_asset, - r_assets_font, - r_assets_js_map, - r_assets_js, - r_assets_style, - r_favicon, - r_home, - r_index, - r_item_backdrop, - r_item_poster, - r_library_node_filter, - r_node_thumbnail, - r_node_userdata_progress, - r_node_userdata_rating, - r_node_userdata_watched, - r_node_userdata, - r_person_asset, - r_player, - r_playersync, - r_search, - r_stats, - r_stream, - // API - r_api_account_login, - r_api_asset_token_raw, - r_api_nodes_modified_since, - r_api_root, - r_api_version, - // Compat - r_jellyfin_artists, - r_jellyfin_branding_configuration, - r_jellyfin_branding_css, - r_jellyfin_displaypreferences_usersettings_post, - r_jellyfin_displaypreferences_usersettings, - r_jellyfin_items_image_primary, - r_jellyfin_items_images_backdrop, - r_jellyfin_items_intros, - r_jellyfin_items_item, - r_jellyfin_items_playbackinfo, - r_jellyfin_items_similar, - r_jellyfin_items, - r_jellyfin_livetv_programs_recommended, - r_jellyfin_persons, - r_jellyfin_playback_bitratetest, - r_jellyfin_quickconnect_enabled, - r_jellyfin_sessions_capabilities_full, - r_jellyfin_sessions_playing_progress, - r_jellyfin_sessions_playing, - r_jellyfin_shows_nextup, - r_jellyfin_socket, - r_jellyfin_system_endpoint, - r_jellyfin_system_info_public_case, - r_jellyfin_system_info_public, - r_jellyfin_system_info, - r_jellyfin_users_authenticatebyname, - r_jellyfin_users_authenticatebyname_case, - r_jellyfin_users_id, - r_jellyfin_users_items_item, - r_jellyfin_users_items, - r_jellyfin_users_public, - r_jellyfin_users_views, - r_jellyfin_video_stream, - r_youtube_channel, - r_youtube_embed, - r_youtube_watch, - ], - ) -} - -#[get("/favicon.ico")] -fn r_favicon() -> MyResult<File> { - Ok(File::open(CONF.asset_path.join("favicon.ico"))?) -} - -pub struct Cors<T>(pub T); -impl<'r, T: Responder<'r, 'static>> Responder<'r, 'static> for Cors<T> { - fn respond_to(self, request: &'r Request<'_>) -> response::Result<'static> { - let mut r = self.0.respond_to(request)?; - r.adjoin_header(Header::new("access-controll-allow-origin", "*")); - Ok(r) - } -} |