Adnan Maolood
7668345daa
server: Add Context field
2021-02-20 18:52:33 -05:00
Adnan Maolood
0baa66a4e7
Update examples
2021-02-20 18:30:49 -05:00
Adnan Maolood
d479c6391c
certificate.Store: Support "*" wildcard pattern
2021-02-20 18:26:15 -05:00
Adnan Maolood
423914d6e0
certificate.Store: Generate certificates by default
2021-02-20 18:25:02 -05:00
Adnan Maolood
15f3e764c5
server: Populate Request.Host field
2021-02-20 18:12:51 -05:00
Adnan Maolood
fadb2aed97
mux: Use StatusHandler instead of RedirectHandler
2021-02-20 16:45:37 -05:00
Adnan Maolood
252fe678fd
Rename RedirectHandler to StatusHandler
2021-02-20 16:44:42 -05:00
Adnan Maolood
351fb92c7e
Remove NotFound function
2021-02-20 16:42:18 -05:00
Adnan Maolood
2308c6407f
server: Make Request.RemoteAddr a net.Addr
...
A concrete type is better.
2021-02-20 16:27:35 -05:00
Adnan Maolood
8938038797
Make Status a type
...
Using a type is better than using an integer.
2021-02-20 16:16:32 -05:00
Adnan Maolood
99a8f09c22
TimeoutHandler: Use provided context
2021-02-20 15:52:54 -05:00
Adnan Maolood
e9a68917c9
handler: Make ServeGemini accept a Context
2021-02-20 15:49:14 -05:00
Adnan Maolood
eca2afeb32
examples/client: Remove dependency on go-xdg
2021-02-20 15:42:06 -05:00
Adnan Maolood
28b6232fbf
examples/client: Use context
2021-02-20 15:39:47 -05:00
Adnan Maolood
3f4fd10b6d
client: Make Get and Do accept a Context
...
This removes the need for Request.Context.
2021-02-20 15:34:21 -05:00
Adnan Maolood
a7f958b20d
server: Make Request.RemoteAddr a string
2021-02-20 13:31:55 -05:00
Adnan Maolood
0ab236c736
client: Allow Request.Host to omit a port
2021-02-20 13:30:55 -05:00
Adnan Maolood
5922cff2e5
Implement TimeoutHandler
2021-02-20 00:49:21 -05:00
Adnan Maolood
64dbb3eecb
server: Clarify GetCertificate documentation
2021-02-19 18:53:06 -05:00
Adnan Maolood
69674fcdd5
examples/server: Use certificate.Store
2021-02-19 18:45:19 -05:00
Adnan Maolood
66e03ef1e4
certificate: Implement GetCertificate callback
2021-02-19 18:42:53 -05:00
Adnan Maolood
76967dad2e
mux: Reject empty patterns
2021-02-19 18:06:54 -05:00
Adnan Maolood
2e149c9ccd
server: Remove Certificates field
...
Use GetCertificate to retrieve certificates without consulting
Certificates.
2021-02-18 22:22:20 -05:00
Adnan Maolood
229ebb4106
request.Write: Accept an io.Writer
2021-02-18 21:58:37 -05:00
Adnan Maolood
c70ef5c470
client: Remove superfluous call to Flush
2021-02-18 21:55:17 -05:00
Adnan Maolood
6928a1efef
request.Write: return error from Flush
2021-02-18 21:54:38 -05:00
Adnan Maolood
a80aae44a9
doc: Update package documentation
2021-02-18 00:38:03 -05:00
Adnan Maolood
aab3ac4dfe
response: Implement Write method
2021-02-18 00:07:43 -05:00
Adnan Maolood
a3a995df35
response: Rename statusCode to status
2021-02-18 00:06:34 -05:00
Adnan Maolood
9ed2363b66
response: Ensure that only one header is written
2021-02-17 23:05:24 -05:00
Adnan Maolood
33a1fa4e0d
Remove .gitignore
2021-02-17 20:40:53 -05:00
Adnan Maolood
7475687caa
examples: Use Server.Handler
2021-02-17 20:35:27 -05:00
Adnan Maolood
6edde376c4
server: Add Handler field and remove Handle methods
2021-02-17 20:31:03 -05:00
Adnan Maolood
f3cd70612b
mux: Implement matching of schemes and hostnames
2021-02-17 20:09:42 -05:00
Adnan Maolood
3d6ac90e08
Reverse order of RedirectHandler arguments
2021-02-17 19:53:00 -05:00
Adnan Maolood
b5a3c0adc5
Add utility Handler functions
2021-02-17 19:27:25 -05:00
Adnan Maolood
f81c32a211
examples: Use new ResponseWriter interface
2021-02-17 13:39:23 -05:00
Adnan Maolood
110c2de6de
Redesign ResponseWriter interface
2021-02-17 13:36:16 -05:00
Adnan Maolood
8543eca416
status: Fix typo
2021-02-17 12:23:03 -05:00
Adnan Maolood
ec22e762c3
Rename Meta to StatusText
...
Rename Meta to StatusText and support all status codes.
2021-02-17 12:06:43 -05:00
Adnan Maolood
a3c1804395
Move ResponseWriter.Flush to Flusher interface
2021-02-17 11:44:13 -05:00
Adnan Maolood
fb9b50871c
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
Adnan Maolood
96dc161b4a
fs: Add ServeContent function
2021-02-17 11:15:30 -05:00
Adnan Maolood
246b252fd7
examples/server: Use os.DirFS
2021-02-17 09:25:44 -05:00
Adnan Maolood
2e5569d5b5
fs: Fix redirect to canonical file path
2021-02-17 09:24:09 -05:00
Adnan Maolood
8eccefb8c9
fs: Add redirects
2021-02-17 01:38:18 -05:00
Adnan Maolood
995769556c
fs: Trim trailing slash from name in ServeFile
2021-02-17 01:36:53 -05:00
Adnan Maolood
73bf1a31b0
fs: Clean paths before handling with FileServer
2021-02-17 00:59:15 -05:00
Adnan Maolood
fa7ec1ac87
fs: Show listing for directories without index files
2021-02-17 00:08:14 -05:00
Adnan Maolood
e3d1fc2785
fs: Remove leading slash before opening files
2021-02-16 23:18:37 -05:00
Adnan Maolood
332dd253d0
Replace uses of ioutil with io
2021-02-16 18:57:24 -05:00
Adnan Maolood
d2001de5f3
fs: Replace FileSystem with io/fs.FS
2021-02-16 18:53:56 -05:00
Adnan Maolood
cf995c86c9
Require Go 1.16
2021-02-16 18:50:42 -05:00
Adnan Maolood
dfa37aaeb8
client: Don't try to verify unicode hostname
2021-02-16 11:27:53 -05:00
Adnan Maolood
7c1a5184c9
Update examples/auth.go
2021-02-16 11:26:09 -05:00
Adnan Maolood
779be8b95b
request: Allow User in URLs
2021-02-16 00:55:56 -05:00
Adnan Maolood
2157b35c0b
Add build status badge to README.md
2021-02-16 00:07:01 -05:00
Adnan Maolood
1cb31e2d65
Add build manifest
2021-02-16 00:05:10 -05:00
Adnan Maolood
1d6cbddc5b
server: Prevent adding Listeners after Close
...
Check done after calling trackListener to prevent the listener from
being registered after the server is closed.
2021-02-15 20:19:44 -05:00
Adnan Maolood
a05fa6d6bd
server: Avoid creating a new Listener after Close
2021-02-15 20:16:32 -05:00
Adnan Maolood
f158bb5f1d
server: Use separate mutex for handlers
2021-02-15 20:05:47 -05:00
Adnan Maolood
ec269c5c9d
Add some tests
2021-02-15 19:20:37 -05:00
Adnan Maolood
bf4959a8ba
Return ErrInvalidResponse on error reading status
...
Return ErrInvalidResponse when unable to read the response status code
instead of returning the error from strconv.
2021-02-15 19:18:23 -05:00
Adnan Maolood
19678ef934
Remove NewRequestFromURL method
...
Use a Request struct literal instead.
2021-02-15 17:23:56 -05:00
Adnan Maolood
5a784693ef
server: Rename responder to handler
2021-02-15 01:15:23 -05:00
Adnan Maolood
2c7f8273e9
server: Recover from ServeGemini panics
2021-02-15 00:36:33 -05:00
Adnan Maolood
96a84ddd38
request: Don't read more than 1026 bytes
2021-02-15 00:16:21 -05:00
Adnan Maolood
3f2d540579
server: Implement Close and Shutdown methods
2021-02-14 23:58:33 -05:00
Adnan Maolood
92e7a309c6
Tweak returned error for requests that are too long
...
Return ErrInvalidRequest instead of ErrInvalidURL in Request.Write.
2021-02-14 23:33:18 -05:00
Adnan Maolood
c5ccbf023a
fs: Refactor
2021-02-14 19:50:38 -05:00
Adnan Maolood
ff06e50df5
status: Update documentation
2021-02-14 19:28:29 -05:00
Adnan Maolood
5ec8dea1ba
fs: Update documentation
2021-02-14 19:27:56 -05:00
Adnan Maolood
46e10da3a8
Make Request.Host optional
2021-02-14 19:02:34 -05:00
Adnan Maolood
41eec39a1d
Update examples/client.go
2021-02-14 18:59:33 -05:00
Adnan Maolood
198a0b31c8
Remove faulty status code check in ReadResponse
2021-02-14 18:57:13 -05:00
Adnan Maolood
6f7c183662
server: Don't populate Request.Certificate field
...
Handlers should instead use the certificate provided in Request.TLS.
2021-02-14 17:34:57 -05:00
Adnan Maolood
20e1b14108
Update Client documentation
2021-02-14 17:11:05 -05:00
Adnan Maolood
0c303588a4
Update Response documentation
2021-02-14 16:23:38 -05:00
Adnan Maolood
37e5686764
Remove StatusClass* constants
...
Re-use the existing Status* constants and adjust StatusClass to return a
valid Status.
2021-02-14 16:01:39 -05:00
Adnan Maolood
7c703e95de
Update documentation
2021-02-14 15:50:41 -05:00
Adnan Maolood
595b0d0490
server: Populate Request.RemoteAddr field
2021-02-13 21:10:19 -05:00
Adnan Maolood
d2c70a33d5
client: Punycode request URL
2021-02-09 16:55:14 -05:00
Adnan Maolood
79e0296bed
client: Support IDNs
...
Convert IDNs to punycode before performing DNS lookups.
2021-02-09 15:59:47 -05:00
Adnan Maolood
f0e9150663
Add Gemini specification version to README.md
2021-02-09 15:50:54 -05:00
Adnan Maolood
f4b80ef305
Update documentation
2021-02-09 10:00:04 -05:00
Adnan Maolood
0e3b61ed00
examples/client: Fix opening of known hosts file
2021-02-09 09:48:51 -05:00
Adnan Maolood
f6824bd813
Make ResponseWriter an interface
2021-02-09 09:46:18 -05:00
Adnan Maolood
5ef5824d6f
Use plain integers to represent status codes
2021-02-09 09:46:13 -05:00
Adnan Maolood
9bfb007581
Update README.md
2021-02-08 12:53:37 -05:00
Adnan Maolood
7910ed433b
Rename Responder to Handler
2021-02-08 12:50:52 -05:00
Adnan Maolood
29f2b3738d
Make TLS field nil for unencrypted connections
2021-02-08 12:32:49 -05:00
Adnan Maolood
1f39cab063
Remove unused field
2021-02-08 12:30:53 -05:00
Adnan Maolood
62960266ac
tofu: Implement PersistentHosts
2021-01-25 12:11:59 -05:00
Adnan Maolood
3efa17f6fb
Update examples
2021-01-25 10:59:50 -05:00
Adnan Maolood
9e89b93bab
server: Allow handling any hostname with "*"
...
Allow registering a responder with the special pattern "*" to handle any
hostname.
2021-01-25 10:55:40 -05:00
Adnan Maolood
31de8d49b0
Guarantee that (*Response).Body is not nil
2021-01-15 15:18:00 -05:00
Adnan Maolood
2b17f3d8eb
fs: Remove unused import
2021-01-14 22:45:09 -05:00
Adnan Maolood
f36a1c5c87
client: Add note about TOFU
2021-01-14 22:34:12 -05:00
Adnan Maolood
af61c1b60a
fs: Update comments
2021-01-14 22:27:56 -05:00
Adnan Maolood
ad18ae601c
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