1
0
mirror of https://git.sr.ht/~adnano/go-gemini synced 2025-04-29 08:57:55 +02:00
Commit Graph

44 Commits

Author SHA1 Message Date
adnano
3ea781c063 Don't require Go 1.16 2021-02-24 14:29:29 -05:00
adnano
ce15fc6d4a Move mimetype registration to gemini.go 2021-02-24 14:27:49 -05:00
adnano
17c41344a4 fs: Remove build constraint 2021-02-24 11:01:02 -05:00
adnano
1520d40fe6 fs: Fix Go build constraint comment 2021-02-24 09:00:28 -05:00
Kaleb Elwert
e4a501c59f Only use fs.go when fs.FS is available 2021-02-24 07:41:53 -05:00
adnano
755c24a366 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
c8c15d4ffd 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
dd0c1fd90f Update documentation 2021-02-23 18:45:58 -05:00
adnano
b463428454 Rename ResponseWriter.MediaType to SetMediaType 2021-02-21 18:52:06 -05:00
adnano
c4214b4433 fs: Use better error messages 2021-02-21 09:56:59 -05:00
adnano
b5152053f6 fs: Remove unused context arguments 2021-02-21 09:29:21 -05:00
adnano
67fbda14b8 handler: Make ServeGemini accept a Context 2021-02-20 15:49:14 -05:00
adnano
1dd0e07911 Redesign ResponseWriter interface 2021-02-17 13:36:16 -05:00
adnano
6c2e3a35b5 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
f87c8047d9 fs: Add ServeContent function 2021-02-17 11:15:30 -05:00
adnano
38b8e45ccc fs: Fix redirect to canonical file path 2021-02-17 09:24:09 -05:00
adnano
7e07ad14c6 fs: Add redirects 2021-02-17 01:38:18 -05:00
adnano
ea1b2c9204 fs: Trim trailing slash from name in ServeFile 2021-02-17 01:36:53 -05:00
adnano
6cf91177ed fs: Clean paths before handling with FileServer 2021-02-17 00:59:15 -05:00
adnano
3bf243955e fs: Show listing for directories without index files 2021-02-17 00:08:14 -05:00
adnano
adfc1597b8 fs: Remove leading slash before opening files 2021-02-16 23:18:37 -05:00
adnano
dd10fcba2f fs: Replace FileSystem with io/fs.FS 2021-02-16 18:53:56 -05:00
adnano
efca262ca1 fs: Refactor 2021-02-14 19:50:38 -05:00
adnano
08fc3466f9 fs: Update documentation 2021-02-14 19:27:56 -05:00
adnano
80fdfa7dea Make ResponseWriter an interface 2021-02-09 09:46:18 -05:00
adnano
bddf3bdb45 Rename Responder to Handler 2021-02-08 12:50:52 -05:00
adnano
4ba31591f2 fs: Remove unused import 2021-01-14 22:45:09 -05:00
adnano
f4c75ad8b4 fs: Update comments 2021-01-14 22:27:56 -05:00
adnano
c4ce6eb3ea 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
ae332cce1f fs: Update comments 2021-01-14 22:24:26 -05:00
adnano
3b9f3870f3 Simplify ResponseWriter implementation 2021-01-10 00:50:35 -05:00
Hugo Wetterberg
adece883ad 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
7c3af598ad Rename (*ResponseWriter).SetMimetype to SetMediaType 2020-11-09 13:44:42 -05:00
adnano
5181e6bbf1 Remove some unnecessary errors 2020-11-04 23:46:05 -05:00
adnano
f29843e7f5 Use strings.Builder in Fingerprint 2020-10-28 15:14:24 -04:00
adnano
ad43f5cae3 Add ServeFile function 2020-10-27 13:32:48 -04:00
adnano
381c181a11 Add (*ResponseWriter).WriteStatus function 2020-10-27 13:30:35 -04:00
adnano
2b150a3471 Update documentation 2020-10-24 15:29:12 -04:00
adnano
02dd955c4e Rename repository to go-gemini 2020-10-24 15:15:32 -04:00
adnano
7e56c5ac1d Rename Handler to Responder 2020-10-21 16:28:50 -04:00
adnano
faf94d8ba5 Rename rw, req to w, r 2020-10-13 20:22:12 -04:00
adnano
4189a4f717 Move errors to gemini.go 2020-10-13 20:10:04 -04:00
adnano
96390291bc Detect mimetypes 2020-10-11 20:13:53 -04:00
adnano
7fdc28d5be Move filesystem code to its own file 2020-10-11 18:57:04 -04:00