mirror of
https://github.com/LemmyNet/lemmy.git
synced 2024-12-02 17:21:22 +00:00
Merge branch 'main' into db-traits-refactor
This commit is contained in:
commit
d9e0269774
10 changed files with 77 additions and 53 deletions
34
Cargo.lock
generated
34
Cargo.lock
generated
|
@ -31,7 +31,7 @@ dependencies = [
|
|||
"enum_delegate",
|
||||
"futures-core",
|
||||
"http",
|
||||
"http-signature-normalization 0.7.0",
|
||||
"http-signature-normalization",
|
||||
"http-signature-normalization-reqwest",
|
||||
"httpdate",
|
||||
"itertools",
|
||||
|
@ -2219,15 +2219,6 @@ version = "0.3.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29"
|
||||
|
||||
[[package]]
|
||||
name = "http-signature-normalization"
|
||||
version = "0.6.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f8f45adbef81d7ea3bd7e9bcc6734b7245dad05a14abdcc7ddc0988791d63515"
|
||||
dependencies = [
|
||||
"httpdate",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "http-signature-normalization"
|
||||
version = "0.7.0"
|
||||
|
@ -2237,26 +2228,6 @@ dependencies = [
|
|||
"httpdate",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "http-signature-normalization-actix"
|
||||
version = "0.6.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7483d0ee4d093fa4bfe5956cd405492c07808a5064a29cfe3960d474f21f39c2"
|
||||
dependencies = [
|
||||
"actix-http",
|
||||
"actix-rt",
|
||||
"actix-web",
|
||||
"base64 0.13.1",
|
||||
"futures-util",
|
||||
"http-signature-normalization 0.6.0",
|
||||
"sha2",
|
||||
"thiserror",
|
||||
"tokio",
|
||||
"tracing",
|
||||
"tracing-error",
|
||||
"tracing-futures",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "http-signature-normalization-reqwest"
|
||||
version = "0.8.0"
|
||||
|
@ -2264,7 +2235,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "3c382c69a07b21accae86298d520579403af6479b1cd1c389e3ee11f01d48627"
|
||||
dependencies = [
|
||||
"base64 0.13.1",
|
||||
"http-signature-normalization 0.7.0",
|
||||
"http-signature-normalization",
|
||||
"httpdate",
|
||||
"reqwest",
|
||||
"reqwest-middleware",
|
||||
|
@ -2661,7 +2632,6 @@ dependencies = [
|
|||
"futures",
|
||||
"html2md",
|
||||
"http",
|
||||
"http-signature-normalization-actix",
|
||||
"itertools",
|
||||
"lemmy_api_common",
|
||||
"lemmy_db_schema",
|
||||
|
|
|
@ -27,6 +27,7 @@ lto = "thin"
|
|||
[features]
|
||||
embed-pictrs = ["pict-rs"]
|
||||
console = ["console-subscriber", "opentelemetry", "opentelemetry-otlp", "tracing-opentelemetry", "reqwest-tracing/opentelemetry_0_16"]
|
||||
json-log = ["tracing-subscriber/json"]
|
||||
default = []
|
||||
|
||||
[workspace]
|
||||
|
|
|
@ -40,7 +40,6 @@ reqwest = { workspace = true }
|
|||
once_cell = { workspace = true }
|
||||
html2md = "0.2.14"
|
||||
serde_with = { workspace = true }
|
||||
http-signature-normalization-actix = { version = "0.6.2", default-features = false, features = ["server", "sha-2"] }
|
||||
enum_delegate = "0.2.0"
|
||||
|
||||
[dev-dependencies]
|
||||
|
|
|
@ -27,9 +27,7 @@ pub async fn list_comments(
|
|||
check_private_instance(&local_user_view, &local_site)?;
|
||||
|
||||
let community_id = if let Some(name) = &data.community_name {
|
||||
resolve_actor_identifier::<ApubCommunity, Community>(name, &context, &None, true)
|
||||
.await
|
||||
.ok()
|
||||
Some(resolve_actor_identifier::<ApubCommunity, Community>(name, &context, &None, true).await?)
|
||||
.map(|c| c.id)
|
||||
} else {
|
||||
data.community_id
|
||||
|
|
|
@ -29,9 +29,7 @@ pub async fn list_posts(
|
|||
let page = data.page;
|
||||
let limit = data.limit;
|
||||
let community_id = if let Some(name) = &data.community_name {
|
||||
resolve_actor_identifier::<ApubCommunity, Community>(name, &context, &None, true)
|
||||
.await
|
||||
.ok()
|
||||
Some(resolve_actor_identifier::<ApubCommunity, Community>(name, &context, &None, true).await?)
|
||||
.map(|c| c.id)
|
||||
} else {
|
||||
data.community_id
|
||||
|
|
|
@ -41,10 +41,11 @@ pub async fn search(
|
|||
let listing_type = data.listing_type;
|
||||
let search_type = data.type_.unwrap_or(SearchType::All);
|
||||
let community_id = if let Some(name) = &data.community_name {
|
||||
resolve_actor_identifier::<ApubCommunity, Community>(name, &context, &local_user_view, false)
|
||||
.await
|
||||
.ok()
|
||||
.map(|c| c.id)
|
||||
Some(
|
||||
resolve_actor_identifier::<ApubCommunity, Community>(name, &context, &local_user_view, false)
|
||||
.await?,
|
||||
)
|
||||
.map(|c| c.id)
|
||||
} else {
|
||||
data.community_id
|
||||
};
|
||||
|
|
|
@ -19,8 +19,6 @@ use actix_web::{
|
|||
http::{header, Method},
|
||||
web,
|
||||
};
|
||||
use http_signature_normalization_actix::digest::middleware::VerifyDigest;
|
||||
use sha2::{Digest, Sha256};
|
||||
|
||||
pub fn config(cfg: &mut web::ServiceConfig) {
|
||||
cfg
|
||||
|
@ -57,7 +55,6 @@ pub fn config(cfg: &mut web::ServiceConfig) {
|
|||
|
||||
cfg.service(
|
||||
web::scope("")
|
||||
.wrap(VerifyDigest::new(Sha256::new()))
|
||||
.guard(InboxRequestGuard)
|
||||
.route("/c/{community_name}/inbox", web::post().to(community_inbox))
|
||||
.route("/u/{user_name}/inbox", web::post().to(person_inbox))
|
||||
|
|
|
@ -356,10 +356,7 @@ mod tests {
|
|||
diesel_option_overwrite_to_url(&Some(String::new())),
|
||||
Ok(Some(None))
|
||||
));
|
||||
assert!(matches!(
|
||||
diesel_option_overwrite_to_url(&Some("invalid_url".to_string())),
|
||||
Err(_)
|
||||
));
|
||||
assert!(diesel_option_overwrite_to_url(&Some("invalid_url".to_string())).is_err());
|
||||
let example_url = "https://example.com";
|
||||
assert!(matches!(
|
||||
diesel_option_overwrite_to_url(&Some(example_url.to_string())),
|
||||
|
|
|
@ -24,6 +24,62 @@ const BIO_MAX_LENGTH: usize = 300;
|
|||
const SITE_NAME_MAX_LENGTH: usize = 20;
|
||||
const SITE_NAME_MIN_LENGTH: usize = 1;
|
||||
const SITE_DESCRIPTION_MAX_LENGTH: usize = 150;
|
||||
//Invisible unicode characters, taken from https://invisible-characters.com/
|
||||
const FORBIDDEN_DISPLAY_CHARS: [char; 53] = [
|
||||
'\u{0009}',
|
||||
'\u{00a0}',
|
||||
'\u{00ad}',
|
||||
'\u{034f}',
|
||||
'\u{061c}',
|
||||
'\u{115f}',
|
||||
'\u{1160}',
|
||||
'\u{17b4}',
|
||||
'\u{17b5}',
|
||||
'\u{180e}',
|
||||
'\u{2000}',
|
||||
'\u{2001}',
|
||||
'\u{2002}',
|
||||
'\u{2003}',
|
||||
'\u{2004}',
|
||||
'\u{2005}',
|
||||
'\u{2006}',
|
||||
'\u{2007}',
|
||||
'\u{2008}',
|
||||
'\u{2009}',
|
||||
'\u{200a}',
|
||||
'\u{200b}',
|
||||
'\u{200c}',
|
||||
'\u{200d}',
|
||||
'\u{200e}',
|
||||
'\u{200f}',
|
||||
'\u{202f}',
|
||||
'\u{205f}',
|
||||
'\u{2060}',
|
||||
'\u{2061}',
|
||||
'\u{2062}',
|
||||
'\u{2063}',
|
||||
'\u{2064}',
|
||||
'\u{206a}',
|
||||
'\u{206b}',
|
||||
'\u{206c}',
|
||||
'\u{206d}',
|
||||
'\u{206e}',
|
||||
'\u{206f}',
|
||||
'\u{3000}',
|
||||
'\u{2800}',
|
||||
'\u{3164}',
|
||||
'\u{feff}',
|
||||
'\u{ffa0}',
|
||||
'\u{1d159}',
|
||||
'\u{1d173}',
|
||||
'\u{1d174}',
|
||||
'\u{1d175}',
|
||||
'\u{1d176}',
|
||||
'\u{1d177}',
|
||||
'\u{1d178}',
|
||||
'\u{1d179}',
|
||||
'\u{1d17a}',
|
||||
];
|
||||
|
||||
fn has_newline(name: &str) -> bool {
|
||||
name.contains('\n')
|
||||
|
@ -42,8 +98,8 @@ pub fn is_valid_actor_name(name: &str, actor_name_max_length: usize) -> LemmyRes
|
|||
|
||||
// Can't do a regex here, reverse lookarounds not supported
|
||||
pub fn is_valid_display_name(name: &str, actor_name_max_length: usize) -> LemmyResult<()> {
|
||||
let check = !name.starts_with('@')
|
||||
&& !name.starts_with('\u{200b}')
|
||||
let check = !name.contains(FORBIDDEN_DISPLAY_CHARS)
|
||||
&& !name.starts_with('@')
|
||||
&& name.chars().count() >= 3
|
||||
&& name.chars().count() <= actor_name_max_length
|
||||
&& !has_newline(name);
|
||||
|
|
|
@ -185,7 +185,14 @@ pub fn init_logging(opentelemetry_url: &Option<Url>) -> Result<(), LemmyError> {
|
|||
.trim_matches('"')
|
||||
.parse::<Targets>()?;
|
||||
|
||||
let format_layer = tracing_subscriber::fmt::layer().with_filter(targets.clone());
|
||||
let format_layer = {
|
||||
#[cfg(feature = "json-log")]
|
||||
let layer = tracing_subscriber::fmt::layer().json();
|
||||
#[cfg(not(feature = "json-log"))]
|
||||
let layer = tracing_subscriber::fmt::layer();
|
||||
|
||||
layer.with_filter(targets.clone())
|
||||
};
|
||||
|
||||
let subscriber = Registry::default()
|
||||
.with(format_layer)
|
||||
|
|
Loading…
Reference in a new issue