1
0
mirror of https://git.sr.ht/~adnano/go-gemini synced 2024-09-18 13:31:36 +02:00
Commit Graph

55 Commits

Author SHA1 Message Date
adnano
3b101e802d Run go fmt 2023-06-29 01:50:57 -04:00
adnano
4a694c0eb7 Upgrade to Go 1.18 2023-06-29 01:47:52 -04:00
adnano
b541609d7d fs: Prevent invalid directory links
A file with a name like "gemini:example" would previously result in the
following invalid link:

    => gemini:example gemini:example

Fix by prepending a "./" before each filename, so that the resulting
link looks like:

    => ./gemini:example gemini:example
2022-05-07 13:54:56 -04:00
adnano
cdd1030d99 fs: Avoid equality check if lengths don't match 2021-04-21 12:48:27 -04:00
adnano
ac1b8652f1 fs: Improve redirect behavior 2021-04-21 12:41:56 -04:00
adnano
0bc47513aa fs: Refactor 2021-04-21 12:18:52 -04:00
adnano
e915dd37e4 fs: Remove ServeContent function 2021-04-21 11:41:40 -04:00
adnano
08fac3bf87 fs: Fix panic on indexing URL of zero length 2021-04-21 11:36:43 -04:00
adnano
b2fa5aef0c Revert "Require Go 1.16"
This reverts commit a11fe5f12d.
2021-03-23 22:05:12 -04:00
adnano
21845ca419 fs: Fix empty media type for directory index pages 2021-03-20 13:33:15 -04:00
adnano
a11fe5f12d Require Go 1.16 2021-02-28 21:38:17 -05:00
adnano
7495060134 Don't require Go 1.16 2021-02-24 14:29:29 -05:00
adnano
76e42344ae Move mimetype registration to gemini.go 2021-02-24 14:27:49 -05:00
adnano
158e5002af fs: Remove build constraint 2021-02-24 11:01:02 -05:00
adnano
75a8109ea7 fs: Fix Go build constraint comment 2021-02-24 09:00:28 -05:00
Kaleb Elwert
0431ad1d45 Only use fs.go when fs.FS is available 2021-02-24 07:41:53 -05:00
adnano
36a67255e0 Make ResponseWriter an interface
Make ResponseWriter an interface with an unexported method. Implementors
must embed a ResponseWriter from elsewhere. This gives us the
flexibility of an interface while allowing us to add new methods in the
future.
2021-02-24 00:13:46 -05:00
adnano
06d65b8154 Make ResponseWriter a struct
Make ResponseWriter a struct again so that it can be extended in a
backwards-compatible way.
2021-02-23 20:41:16 -05:00
adnano
4d7bb87110 Update documentation 2021-02-23 18:45:58 -05:00
adnano
ff53535185 Rename ResponseWriter.MediaType to SetMediaType 2021-02-21 18:52:06 -05:00
adnano
f86f8efdae fs: Use better error messages 2021-02-21 09:56:59 -05:00
adnano
68c2dddf74 fs: Remove unused context arguments 2021-02-21 09:29:21 -05:00
adnano
2c69b88153 handler: Make ServeGemini accept a Context 2021-02-20 15:49:14 -05:00
adnano
b704a470a7 Redesign ResponseWriter interface 2021-02-17 13:36:16 -05:00
adnano
ce0d637e4d fs: Reject potentially unsafe requests in ServeFile
Reject requests where r.URL.Path contains a ".." path element to protect
against callers who might unsafely use filepath.Join on r.URL.Path
without sanitizing it.
2021-02-17 11:17:13 -05:00
adnano
acb0f0012e fs: Add ServeContent function 2021-02-17 11:15:30 -05:00
adnano
a283a156eb fs: Fix redirect to canonical file path 2021-02-17 09:24:09 -05:00
adnano
cdd0a37908 fs: Add redirects 2021-02-17 01:38:18 -05:00
adnano
a14c0c1825 fs: Trim trailing slash from name in ServeFile 2021-02-17 01:36:53 -05:00
adnano
bf95ca8ed8 fs: Clean paths before handling with FileServer 2021-02-17 00:59:15 -05:00
adnano
6423382749 fs: Show listing for directories without index files 2021-02-17 00:08:14 -05:00
adnano
5b8b7b436e fs: Remove leading slash before opening files 2021-02-16 23:18:37 -05:00
adnano
55aa05307f fs: Replace FileSystem with io/fs.FS 2021-02-16 18:53:56 -05:00
adnano
99cac894e9 fs: Refactor 2021-02-14 19:50:38 -05:00
adnano
7830eced63 fs: Update documentation 2021-02-14 19:27:56 -05:00
adnano
8c0ff0547d Make ResponseWriter an interface 2021-02-09 09:46:18 -05:00
adnano
050f3d23c5 Rename Responder to Handler 2021-02-08 12:50:52 -05:00
adnano
296f4fe027 fs: Remove unused import 2021-01-14 22:45:09 -05:00
adnano
5721d60ff5 fs: Update comments 2021-01-14 22:27:56 -05:00
adnano
7896015511 fs: Don't panic on mime.AddExtensionType error
It's probably best not to panic if this fails.
2021-01-14 22:25:09 -05:00
adnano
0217da3075 fs: Update comments 2021-01-14 22:24:26 -05:00
adnano
cd988d85ae Simplify ResponseWriter implementation 2021-01-10 00:50:35 -05:00
Hugo Wetterberg
68767e6bf0 Add missing error handling
Error handling is currently missing is a couple of places. Most of
them are i/o related.

This change adds checks, an therefore sometimes also has to change
function signatures by adding an error return value. In the case of
the response writer the status and meta handling is changed and this
also breaks the API.

In some places where we don't have any reasonable I've added
assignment to a blank identifier to make it clear that we're ignoring
an error.

text: read the Err() that can be set by the scanner.

client: check if conn.SetDeadline() returns an error.

client: check if req.Write() returns an error.

fs: panic if mime type registration fails.

server: stop performing i/o in Header/Status functions

By deferring the actual header write to the first Write() or Flush()
call we don't have to do any error handling in Header() or Status().

As Server.respond() now defers a ResponseWriter.Flush() instead of
directly flushing the underlying bufio.Writer this has the added
benefit of ensuring that we always write a header
to the client, even if the responder is a complete NOOP.

tofu: return an error if we fail to write to the known hosts writer.
2021-01-09 23:53:07 -05:00
adnano
082175ea16 Rename (*ResponseWriter).SetMimetype to SetMediaType 2020-11-09 13:44:42 -05:00
adnano
1fb24b625f Remove some unnecessary errors 2020-11-04 23:46:05 -05:00
adnano
ddd6215dcc Use strings.Builder in Fingerprint 2020-10-28 15:14:24 -04:00
adnano
7e215669e7 Add ServeFile function 2020-10-27 13:32:48 -04:00
adnano
4beed7e90e Add (*ResponseWriter).WriteStatus function 2020-10-27 13:30:35 -04:00
adnano
de46c241b0 Update documentation 2020-10-24 15:29:12 -04:00
adnano
6cccba3800 Rename repository to go-gemini 2020-10-24 15:15:32 -04:00