diff --git a/packages/backend-rs/index.d.ts b/packages/backend-rs/index.d.ts index dd52c4a7b5..f9cb459f27 100644 --- a/packages/backend-rs/index.d.ts +++ b/packages/backend-rs/index.d.ts @@ -29,6 +29,20 @@ export interface EnvConfig { slow: boolean } export function loadEnv(): EnvConfig +export function fetchMeta(): Promise +export function updateMetaCache(): Promise +export interface PugArgs { + img: string | null + title: string + instanceName: string + desc: string | null + icon: string | null + splashIcon: string | null + themeColor: string | null + randomMotd: string + privateMode: boolean | null +} +export function metaToPugArgs(meta: Meta): PugArgs export interface ServerConfig { url: string port: number @@ -428,20 +442,6 @@ export function isSafeUrl(url: string): boolean export function latestVersion(): Promise export function toMastodonId(firefishId: string): string | null export function fromMastodonId(mastodonId: string): string | null -export function fetchMeta(): Promise -export function updateMetaCache(): Promise -export interface PugArgs { - img: string | null - title: string - instanceName: string - desc: string | null - icon: string | null - splashIcon: string | null - themeColor: string | null - randomMotd: string - privateMode: boolean | null -} -export function metaToPugArgs(meta: Meta): PugArgs /** * Converts the given text into the cat language. * diff --git a/packages/backend-rs/index.js b/packages/backend-rs/index.js index 478f82ce7e..5f16e2febd 100644 --- a/packages/backend-rs/index.js +++ b/packages/backend-rs/index.js @@ -310,7 +310,7 @@ if (!nativeBinding) { throw new Error(`Failed to load native binding`) } -const { SECOND, MINUTE, HOUR, DAY, USER_ONLINE_THRESHOLD, USER_ACTIVE_THRESHOLD, FILE_TYPE_BROWSERSAFE, loadEnv, loadConfig, stringToAcct, acctToString, fetchNodeinfo, nodeinfo_2_1, nodeinfo_2_0, Protocol, Inbound, Outbound, greet, initializeRustLogger, showServerInfo, isBlockedServer, isSilencedServer, isAllowedServer, checkWordMute, getFullApAccount, isSelfHost, isSameOrigin, extractHost, toPuny, isUnicodeEmoji, sqlLikeEscape, safeForSql, formatMilliseconds, getImageSizeFromUrl, getNoteSummary, isQuote, isSafeUrl, latestVersion, toMastodonId, fromMastodonId, fetchMeta, updateMetaCache, metaToPugArgs, nyaify, hashPassword, verifyPassword, isOldPasswordAlgorithm, decodeReaction, countReactions, toDbReaction, removeOldAttestationChallenges, cpuInfo, cpuUsage, memoryUsage, storageUsage, AntennaSrc, DriveFileUsageHint, MutedNoteReason, NoteVisibility, NotificationType, PageVisibility, PollNoteVisibility, RelayStatus, UserEmojiModPerm, UserProfileFfvisibility, UserProfileMutingNotificationTypes, updateAntennasOnNewNote, watchNote, unwatchNote, PushNotificationKind, sendPushNotification, publishToChannelStream, ChatEvent, publishToChatStream, ChatIndexEvent, publishToChatIndexStream, publishToBroadcastStream, publishToGroupChatStream, publishToModerationStream, getTimestamp, genId, genIdAt, generateSecureRandomString, generateUserToken } = nativeBinding +const { SECOND, MINUTE, HOUR, DAY, USER_ONLINE_THRESHOLD, USER_ACTIVE_THRESHOLD, FILE_TYPE_BROWSERSAFE, loadEnv, fetchMeta, updateMetaCache, metaToPugArgs, loadConfig, stringToAcct, acctToString, fetchNodeinfo, nodeinfo_2_1, nodeinfo_2_0, Protocol, Inbound, Outbound, greet, initializeRustLogger, showServerInfo, isBlockedServer, isSilencedServer, isAllowedServer, checkWordMute, getFullApAccount, isSelfHost, isSameOrigin, extractHost, toPuny, isUnicodeEmoji, sqlLikeEscape, safeForSql, formatMilliseconds, getImageSizeFromUrl, getNoteSummary, isQuote, isSafeUrl, latestVersion, toMastodonId, fromMastodonId, nyaify, hashPassword, verifyPassword, isOldPasswordAlgorithm, decodeReaction, countReactions, toDbReaction, removeOldAttestationChallenges, cpuInfo, cpuUsage, memoryUsage, storageUsage, AntennaSrc, DriveFileUsageHint, MutedNoteReason, NoteVisibility, NotificationType, PageVisibility, PollNoteVisibility, RelayStatus, UserEmojiModPerm, UserProfileFfvisibility, UserProfileMutingNotificationTypes, updateAntennasOnNewNote, watchNote, unwatchNote, PushNotificationKind, sendPushNotification, publishToChannelStream, ChatEvent, publishToChatStream, ChatIndexEvent, publishToChatIndexStream, publishToBroadcastStream, publishToGroupChatStream, publishToModerationStream, getTimestamp, genId, genIdAt, generateSecureRandomString, generateUserToken } = nativeBinding module.exports.SECOND = SECOND module.exports.MINUTE = MINUTE @@ -320,6 +320,9 @@ module.exports.USER_ONLINE_THRESHOLD = USER_ONLINE_THRESHOLD module.exports.USER_ACTIVE_THRESHOLD = USER_ACTIVE_THRESHOLD module.exports.FILE_TYPE_BROWSERSAFE = FILE_TYPE_BROWSERSAFE module.exports.loadEnv = loadEnv +module.exports.fetchMeta = fetchMeta +module.exports.updateMetaCache = updateMetaCache +module.exports.metaToPugArgs = metaToPugArgs module.exports.loadConfig = loadConfig module.exports.stringToAcct = stringToAcct module.exports.acctToString = acctToString @@ -352,9 +355,6 @@ module.exports.isSafeUrl = isSafeUrl module.exports.latestVersion = latestVersion module.exports.toMastodonId = toMastodonId module.exports.fromMastodonId = fromMastodonId -module.exports.fetchMeta = fetchMeta -module.exports.updateMetaCache = updateMetaCache -module.exports.metaToPugArgs = metaToPugArgs module.exports.nyaify = nyaify module.exports.hashPassword = hashPassword module.exports.verifyPassword = verifyPassword diff --git a/packages/backend-rs/src/config/constant.rs b/packages/backend-rs/src/config/constant.rs index db6e7bed00..f2340893cd 100644 --- a/packages/backend-rs/src/config/constant.rs +++ b/packages/backend-rs/src/config/constant.rs @@ -1,3 +1,5 @@ +//! This module is used in the TypeScript backend only. + #[crate::ts_export] pub const SECOND: i32 = 1000; #[crate::ts_export] diff --git a/packages/backend-rs/src/config/environment.rs b/packages/backend-rs/src/config/environment.rs index 1825af326a..8efe509c7e 100644 --- a/packages/backend-rs/src/config/environment.rs +++ b/packages/backend-rs/src/config/environment.rs @@ -1,3 +1,5 @@ +//! Environment options + // FIXME: Are these options used? #[crate::export(object)] pub struct EnvConfig { diff --git a/packages/backend-rs/src/misc/meta.rs b/packages/backend-rs/src/config/meta.rs similarity index 83% rename from packages/backend-rs/src/misc/meta.rs rename to packages/backend-rs/src/config/meta.rs index 3f13f7e510..9a81dc870c 100644 --- a/packages/backend-rs/src/misc/meta.rs +++ b/packages/backend-rs/src/config/meta.rs @@ -1,6 +1,7 @@ +//! Server information + use crate::database::db_conn; use crate::model::entity::meta; -use rand::prelude::*; use sea_orm::{prelude::*, ActiveValue}; use std::sync::Mutex; @@ -11,18 +12,18 @@ fn set_cache(meta: &Meta) { let _ = CACHE.lock().map(|mut cache| *cache = Some(meta.clone())); } -#[crate::export] -pub async fn fetch_meta() -> Result { - fetch_meta_impl(true).await +#[crate::export(js_name = "fetchMeta")] +pub async fn local_server_info() -> Result { + local_server_info_impl(true).await } -#[crate::export] -pub async fn update_meta_cache() -> Result<(), DbErr> { - fetch_meta_impl(false).await?; +#[crate::export(js_name = "updateMetaCache")] +pub async fn update() -> Result<(), DbErr> { + local_server_info_impl(false).await?; Ok(()) } -async fn fetch_meta_impl(use_cache: bool) -> Result { +async fn local_server_info_impl(use_cache: bool) -> Result { // try using cache if use_cache { if let Some(cache) = CACHE.lock().ok().and_then(|cache| cache.clone()) { @@ -62,8 +63,9 @@ pub struct PugArgs { pub private_mode: Option, } -#[crate::export] +#[crate::ts_export] pub fn meta_to_pug_args(meta: Meta) -> PugArgs { + use rand::prelude::*; let mut rng = rand::thread_rng(); let splash_icon = meta diff --git a/packages/backend-rs/src/config/mod.rs b/packages/backend-rs/src/config/mod.rs index 0e8056a894..483ca3ac6e 100644 --- a/packages/backend-rs/src/config/mod.rs +++ b/packages/backend-rs/src/config/mod.rs @@ -1,7 +1,9 @@ //! Server configurations and environment variables +pub use meta::local_server_info; pub use server::CONFIG; pub mod constant; pub mod environment; +pub mod meta; pub mod server; diff --git a/packages/backend-rs/src/config/server.rs b/packages/backend-rs/src/config/server.rs index 26babb4953..e8a7cf73ab 100644 --- a/packages/backend-rs/src/config/server.rs +++ b/packages/backend-rs/src/config/server.rs @@ -1,3 +1,5 @@ +//! Server configuration + use once_cell::sync::Lazy; use serde::Deserialize; use std::env; diff --git a/packages/backend-rs/src/federation/nodeinfo/generate.rs b/packages/backend-rs/src/federation/nodeinfo/generate.rs index e65449b46e..49c3f8f63f 100644 --- a/packages/backend-rs/src/federation/nodeinfo/generate.rs +++ b/packages/backend-rs/src/federation/nodeinfo/generate.rs @@ -1,9 +1,8 @@ //! NodeInfo generator -use crate::config::CONFIG; +use crate::config::{local_server_info, CONFIG}; use crate::database::{cache, db_conn}; use crate::federation::nodeinfo::schema::*; -use crate::misc::meta::fetch_meta; use crate::model::entity::{note, user}; use sea_orm::{ColumnTrait, DbErr, EntityTrait, PaginatorTrait, QueryFilter}; use serde_json::json; @@ -63,7 +62,7 @@ async fn statistics() -> Result<(u64, u64, u64, u64), DbErr> { async fn generate_nodeinfo_2_1() -> Result { let (local_users, local_active_halfyear, local_active_month, local_posts) = statistics().await?; - let meta = fetch_meta().await?; + let meta = local_server_info().await?; let metadata = HashMap::from([ ( "nodeName".to_string(), diff --git a/packages/backend-rs/src/misc/check_server_block.rs b/packages/backend-rs/src/misc/check_server_block.rs index 136c43e7c2..885507a9ae 100644 --- a/packages/backend-rs/src/misc/check_server_block.rs +++ b/packages/backend-rs/src/misc/check_server_block.rs @@ -20,7 +20,7 @@ /// ``` #[crate::ts_export] pub async fn is_blocked_server(host: &str) -> Result { - Ok(crate::misc::meta::fetch_meta() + Ok(crate::config::local_server_info() .await? .blocked_hosts .iter() @@ -47,7 +47,7 @@ pub async fn is_blocked_server(host: &str) -> Result { /// ``` #[crate::ts_export] pub async fn is_silenced_server(host: &str) -> Result { - Ok(crate::misc::meta::fetch_meta() + Ok(crate::config::local_server_info() .await? .silenced_hosts .iter() @@ -75,7 +75,7 @@ pub async fn is_silenced_server(host: &str) -> Result { /// ``` #[crate::ts_export] pub async fn is_allowed_server(host: &str) -> Result { - let meta = crate::misc::meta::fetch_meta().await?; + let meta = crate::config::local_server_info().await?; if !meta.private_mode.unwrap_or(false) { return Ok(true); diff --git a/packages/backend-rs/src/misc/mod.rs b/packages/backend-rs/src/misc/mod.rs index 23782b11a0..9d717ded7f 100644 --- a/packages/backend-rs/src/misc/mod.rs +++ b/packages/backend-rs/src/misc/mod.rs @@ -13,7 +13,6 @@ pub mod is_quote; pub mod is_safe_url; pub mod latest_version; pub mod mastodon_id; -pub mod meta; pub mod nyaify; pub mod password; pub mod reaction; diff --git a/packages/backend-rs/src/misc/reaction.rs b/packages/backend-rs/src/misc/reaction.rs index 423a732f88..8e9800a166 100644 --- a/packages/backend-rs/src/misc/reaction.rs +++ b/packages/backend-rs/src/misc/reaction.rs @@ -1,5 +1,5 @@ +use crate::config::local_server_info; use crate::database::db_conn; -use crate::misc::meta::fetch_meta; use crate::model::entity::emoji; use once_cell::sync::Lazy; use regex::Regex; @@ -118,7 +118,7 @@ pub async fn to_db_reaction(reaction: Option<&str>, host: Option<&str>) -> Resul }; }; - Ok(fetch_meta().await?.default_reaction) + Ok(local_server_info().await?.default_reaction) } #[cfg(test)] diff --git a/packages/backend-rs/src/service/push_notification.rs b/packages/backend-rs/src/service/push_notification.rs index 693a9c7f32..9d19aceab1 100644 --- a/packages/backend-rs/src/service/push_notification.rs +++ b/packages/backend-rs/src/service/push_notification.rs @@ -1,6 +1,6 @@ +use crate::config::local_server_info; use crate::database::db_conn; use crate::misc::get_note_summary::{get_note_summary, PartialNoteToSummarize}; -use crate::misc::meta::fetch_meta; use crate::model::entity::sw_subscription; use crate::util::http_client; use once_cell::sync::OnceCell; @@ -140,7 +140,7 @@ pub async fn send_push_notification( kind: PushNotificationKind, content: &serde_json::Value, ) -> Result<(), Error> { - let meta = fetch_meta().await?; + let meta = local_server_info().await?; if !meta.enable_service_worker || meta.sw_public_key.is_none() || meta.sw_private_key.is_none() {