Merge remote-tracking branch 'origin/pull/861'

This commit is contained in:
Matthew Esposito 2023-12-26 15:47:33 -05:00
commit 3ac2048247
No known key found for this signature in database

View File

@ -310,6 +310,26 @@ async fn main() {
app.at("/info").get(|r| instance_info::instance_info(r).boxed()); app.at("/info").get(|r| instance_info::instance_info(r).boxed());
app.at("/info.:extension").get(|r| instance_info::instance_info(r).boxed()); app.at("/info.:extension").get(|r| instance_info::instance_info(r).boxed());
// Handle obfuscated share links.
// Note that this still forces the server to follow the share link to get to the post, so maybe this wants to be updated with a warning before it follow it
app.at("/r/:sub/s/:id").get(|req: Request<Body>| {
Box::pin(async move {
let sub = req.param("sub").unwrap_or_default();
match req.param("id").as_deref() {
// Share link
Some(id) if (8..12).contains(&id.len()) => match canonical_path(format!("/r/{}/s/{}", sub, id)).await {
Ok(Some(path)) => Ok(redirect(path.split('?').next().unwrap_or_default().to_string())),
Ok(None) => error(req, "Post ID is invalid. It may point to a post on a community that has been banned.").await,
Err(e) => error(req, e).await,
},
// Error message for unknown pages
_ => error(req, "Nothing here".to_string()).await,
}
})
});
app.at("/:id").get(|req: Request<Body>| { app.at("/:id").get(|req: Request<Body>| {
Box::pin(async move { Box::pin(async move {
match req.param("id").as_deref() { match req.param("id").as_deref() {