Commit Graph
100 Commits
Author SHA1 Message Date
adnano 10760a256f Use net/http implementation of ServeMux 2020-09-28 03:15:19 -04:00
adnano b9b299485e Move vendored code to vendor.go 2020-09-28 02:29:32 -04:00
adnano b4eb62e849 Update comments 2020-09-28 02:28:28 -04:00
adnano 99940c7c8a Use splitHostPort function from net/url 2020-09-28 02:27:29 -04:00
adnano 11484b8215 Remove unused code 2020-09-28 02:17:56 -04:00
adnano be9d3d0fbf Update comments 2020-09-28 02:16:49 -04:00
adnano 5edecf01a2 Update comments 2020-09-28 02:13:46 -04:00
adnano b7e977f78a Don't trim trailing slash from Handler patterns 2020-09-28 02:06:15 -04:00
adnano 70c5d8b9ce Add WithInput helper functions 2020-09-28 02:05:37 -04:00
adnano aec4a5d7c9 Use WithCertificate helper in auth example 2020-09-28 01:14:29 -04:00
adnano f09b859370 Add WithCertificate helper function 2020-09-28 01:10:36 -04:00
adnano f093bf567f Remove unused import 2020-09-28 00:42:19 -04:00
adnano 956a2bad52 Remove NewCertificateStore function 2020-09-28 00:41:00 -04:00
adnano cad2d25185 Make the default client generate certificates 2020-09-28 00:38:11 -04:00
adnano 622ea8e0f1 Update documentation 2020-09-28 00:29:11 -04:00
adnano 21022eb5ac Remove log.Print call 2020-09-28 00:08:42 -04:00
adnano 13d2bd5fea Return certificate if it exists in the store 2020-09-28 00:03:42 -04:00
adnano 5d099a4fe1 Only generate certificates after CertificateRequired 2020-09-27 23:58:45 -04:00
adnano ae4b458964 Generate certificates on demand 2020-09-27 23:49:41 -04:00
adnano b7340aef27 Remove tilde from comment 2020-09-27 22:19:24 -04:00
adnano 365e94f06e Directly initialize DefaultClient 2020-09-27 22:18:21 -04:00
adnano 7ccf75ad43 Move DefaultClient up 2020-09-27 22:15:36 -04:00
adnano c3dbcb39db Clarify comment 2020-09-27 22:13:50 -04:00
adnano 554e0af32a Split Redirect into two functions 2020-09-27 22:06:08 -04:00
adnano 599c5bb131 Use helper functions throughout 2020-09-27 22:03:09 -04:00
adnano 707ebf1c0c Add SetMimetype convenience function 2020-09-27 21:53:58 -04:00
adnano cec043cfd8 Fix README.md 2020-09-27 21:40:51 -04:00
adnano 5535cff842 Check certificate notBefore and notAfter times 2020-09-27 21:37:10 -04:00
adnano 5a0f7cf631 Trim trailing slash from Handler patterns 2020-09-27 21:24:08 -04:00
adnano 3428a006ba Move package documentation comment 2020-09-27 21:19:34 -04:00
adnano 3c9821d812 Add more helper functions 2020-09-27 21:13:42 -04:00
adnano fdf6bbc62f Add helper functions 2020-09-27 20:52:24 -04:00
adnano 370bcf3bb9 Rename NewProxyRequest to NewRequestTo 2020-09-27 20:37:16 -04:00
adnano f6be76f8b8 examples/client: Handle relative redirects 2020-09-27 20:34:59 -04:00
adnano 38fe1f21dc Change package name to gmi 2020-09-27 20:20:59 -04:00
adnano a4a8d49ca7 Add helper handler functions 2020-09-27 20:11:45 -04:00
adnano 73e4ef0689 Reject invalid status codes 2020-09-27 19:56:33 -04:00
adnano 9f1a38a0dd Polish example client 2020-09-27 19:45:48 -04:00
adnano 4cbc591c3e Update README.md 2020-09-27 17:44:49 -04:00
adnano 8009de81eb Add function to add a host temporarily 2020-09-27 17:41:41 -04:00
adnano b46a05e5ff Add client authorization example 2020-09-27 17:39:44 -04:00
adnano a691e3cc8b Fix README.md 2020-09-27 16:31:41 -04:00
adnano c79a1f4484 Update documentation 2020-09-27 16:21:56 -04:00
adnano 73a1692a5b Make TrustCertificate accept hostname instead of request 2020-09-27 16:10:36 -04:00
adnano 32a9fcba0c Fix hosts not being added to known hosts file 2020-09-27 16:06:17 -04:00
adnano c4af352e87 Temporarily allow common names in certificates 2020-09-27 15:57:55 -04:00
adnano e01d59f8f6 Don't store wildcards in the known hosts file 2020-09-27 15:03:46 -04:00
adnano 0343248952 Remove port from host when verifying hostnames 2020-09-27 14:25:28 -04:00
adnano 188c3457e6 Fix client example 2020-09-27 14:23:25 -04:00
adnano f0ce4576e1 Handle multiple DNS names
Each DNS name gets its own entry in the known hosts file
2020-09-27 14:22:41 -04:00
adnano 013b2a4d3e Add function to write known hosts to io.Writer 2020-09-27 14:18:30 -04:00
adnano 2eb7fb9ba4 Implement certificate creation 2020-09-27 13:50:48 -04:00
adnano e28e547bcf Adjust user prompt in client example 2020-09-26 18:56:10 -04:00
adnano a1a2523c5c Reject requests containing '..' in them 2020-09-26 17:13:13 -04:00
adnano ceb40a2fab Implement default client 2020-09-26 16:52:14 -04:00
adnano 92a1dbbc0c Implement file server 2020-09-26 16:38:26 -04:00
adnano 6458420454 Add preliminary CertificateStore API 2020-09-26 15:14:34 -04:00
adnano 872f6e2683 Update README.md 2020-09-26 14:34:15 -04:00
adnano 4b0f94157c Fix client example 2020-09-26 14:01:06 -04:00
adnano d3002cc8b4 Update README.md 2020-09-26 13:59:24 -04:00
adnano 769b6ff4d9 Implement default known hosts path 2020-09-26 13:35:56 -04:00
adnano 1b3f9a0655 Remove (*KnownHosts).Has function 2020-09-26 13:29:29 -04:00
adnano bf3e6b3c5c Differentiate between unknown and untrusted certificates 2020-09-26 13:27:03 -04:00
adnano fc96076472 Update README.md 2020-09-26 00:40:28 -04:00
adnano d604e8c337 Specify minimum version of TLS 1.2 2020-09-26 00:31:16 -04:00
adnano d5d491e9c2 Fix misleading comment 2020-09-25 23:29:26 -04:00
adnano 1f3587ba9d Distinguish client errors from server errors 2020-09-25 23:23:24 -04:00
adnano 927dfd29c5 Refactor TOFU 2020-09-25 23:18:14 -04:00
adnano b4295dd2dc Implement basic TOFU 2020-09-25 21:43:13 -04:00
adnano 4a95fe4a90 Add KnownHost.Write function 2020-09-25 20:55:37 -04:00
adnano be55224f89 Fix known host expires check 2020-09-25 20:31:07 -04:00
adnano eaa034204a Add method to check if hostname is found in KnownHosts 2020-09-25 20:22:48 -04:00
adnano 53d84882ea Implement configurable Client 2020-09-25 19:53:50 -04:00
adnano 2f43c191cc Reorganize 2020-09-25 19:09:49 -04:00
adnano d36131356d Rename gemini.go to client.go 2020-09-25 19:07:40 -04:00
adnano fdb7c9819e Move server code to its own file 2020-09-25 19:06:56 -04:00
adnano ace3e682de Remove TLSConfig fields 2020-09-25 18:53:20 -04:00
adnano ec68ab8609 Add test 2020-09-25 11:27:26 -04:00
adnano 99b50e6caf Sort ServeMux entries by length 2020-09-25 11:00:18 -04:00
adnano eb8c9e0c03 Update README.md 2020-09-25 10:09:41 -04:00
adnano e09a659439 Update README.md 2020-09-24 20:13:59 -04:00
adnano 0cb8083ce3 Update comments 2020-09-24 19:41:50 -04:00
adnano 57a124a8b9 Convert ResponseWriter to struct 2020-09-24 19:38:26 -04:00
adnano 4b27a736ac Use more buffered I/O 2020-09-24 19:22:35 -04:00
adnano 3980cfd28f Use buffered IO 2020-09-24 19:02:03 -04:00
adnano 891c4fbec4 Remove Client struct
Gemini requests are very simple and leave little room for customization,
so a configurable Client is not necessary.
2020-09-24 01:55:41 -04:00
adnano ace66eceb0 Provide Response with ConnectionState 2020-09-24 01:45:26 -04:00
adnano fde295cb25 Fix client example 2020-09-24 01:43:03 -04:00
adnano c6802d9d9a Merge Request and RequestInfo 2020-09-24 01:37:57 -04:00
adnano 63696fc7c8 Refactor 2020-09-24 00:30:21 -04:00
adnano 758e056952 Handle more than one request at a time 2020-09-24 00:26:30 -04:00
adnano 6297d1e3ca Enforce valid URLs 2020-09-21 22:21:51 -04:00
adnano 86e7fe4355 Add package declaration comment 2020-09-21 22:09:50 -04:00
adnano 01294f6661 Refactor client requests and server responses 2020-09-21 21:31:09 -04:00
adnano 5a0a515874 Provide Handler with client remote address 2020-09-21 20:44:10 -04:00
adnano 39552c0f8f Provide Handler with client certificate information 2020-09-21 19:17:10 -04:00
adnano 81974a9e00 Update Client documentation 2020-09-21 18:30:55 -04:00
adnano 5ec35d84db Add link to documentation in README.md 2020-09-21 18:28:34 -04:00
adnano 0b6d3d8633 Rename example directory to examples 2020-09-21 18:25:31 -04:00
adnano cc06e65b41 Add support for client-side certificates 2020-09-21 18:21:42 -04:00