Merge remote-tracking branch 'origin/pull/861'
This commit is contained in:
commit
3ac2048247
20
src/main.rs
20
src/main.rs
@ -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() {
|
||||||
|
Loading…
Reference in New Issue
Block a user