mirror of
https://github.com/YGGverse/agate.git
synced 2026-04-08 20:45:29 +00:00
better error messages when directory listing is disabled
This is possibly also related to #60. Instead of showing a generic not found error, this shows both the admin and the user that the directory exists, but directory listing is disabled.
This commit is contained in:
parent
14e15d430a
commit
2bc7d6e63a
2 changed files with 27 additions and 8 deletions
12
CHANGELOG.md
12
CHANGELOG.md
|
|
@ -6,6 +6,18 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
Thank you to Oliver Simmons (@GoodClover) for contributing to this release.
|
||||||
|
|
||||||
|
### Added
|
||||||
|
* tests for symlink files (#60)
|
||||||
|
Symlinks were already working before.
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
* Visiting a directory without `index.gmi` and `.directory-listing-ok` now returns a different error message to better show the cause of the error.
|
||||||
|
To retain the current behaviour of showing a `51 Not found, sorry.` error, add the following line to the respective directories' `.meta` file:
|
||||||
|
```
|
||||||
|
index.gmi: 51 Not found, sorry.
|
||||||
|
```
|
||||||
|
|
||||||
## [3.0.3] - 2021-05-24
|
## [3.0.3] - 2021-05-24
|
||||||
Thank you to @06kellyjac, @cpnfeeny, @lifelike, @skittlesvampir and @steko for contributing to this release.
|
Thank you to @06kellyjac, @cpnfeeny, @lifelike, @skittlesvampir and @steko for contributing to this release.
|
||||||
|
|
|
||||||
23
src/main.rs
23
src/main.rs
|
|
@ -303,11 +303,13 @@ impl RequestHandle {
|
||||||
let peer_addr = if ARGS.log_ips {
|
let peer_addr = if ARGS.log_ips {
|
||||||
stream
|
stream
|
||||||
.peer_addr()
|
.peer_addr()
|
||||||
.or(Err(format!(
|
.map_err(|_| {
|
||||||
// use nonexistent status code 01 if peer IP is unknown
|
format!(
|
||||||
"{} - \"\" 01 \"IP error\" error:could not get peer address",
|
// use nonexistent status code 01 if peer IP is unknown
|
||||||
local_addr,
|
"{} - \"\" 01 \"IP error\" error:could not get peer address",
|
||||||
)))?
|
local_addr,
|
||||||
|
)
|
||||||
|
})?
|
||||||
.ip()
|
.ip()
|
||||||
.to_string()
|
.to_string()
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -456,9 +458,14 @@ impl RequestHandle {
|
||||||
// if the path ends with a slash or the path is empty, the links will work the same
|
// if the path ends with a slash or the path is empty, the links will work the same
|
||||||
// without a redirect
|
// without a redirect
|
||||||
path.push("index.gmi");
|
path.push("index.gmi");
|
||||||
if !path.exists() && path.with_file_name(".directory-listing-ok").exists() {
|
if !path.exists() {
|
||||||
path.pop();
|
if path.with_file_name(".directory-listing-ok").exists() {
|
||||||
return self.list_directory(&path).await;
|
path.pop();
|
||||||
|
return self.list_directory(&path).await;
|
||||||
|
} else {
|
||||||
|
self.send_header(51, "Directory index disabled.").await?;
|
||||||
|
return Ok(());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// if client is not redirected, links may not work as expected without trailing slash
|
// if client is not redirected, links may not work as expected without trailing slash
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue