[MIRROR: https://git.mills.io/prologic/go-gopher] Gopher (RFC 1436) protocol library for the Go (Golang) programming language supporting both client and server
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

78 rindas
1.3 KiB

  1. package main
  2. import (
  3. "log"
  4. "sync"
  5. "git.mills.io/prologic/go-gopher"
  6. )
  7. func index(w gopher.ResponseWriter, r *gopher.Request) {
  8. w.WriteItem(&gopher.Item{
  9. Type: gopher.DIRECTORY,
  10. Selector: "/hello",
  11. Description: "hello",
  12. // TLS Resource
  13. Host: "localhost",
  14. Port: 73,
  15. Extras: []string{"TLS"},
  16. })
  17. w.WriteItem(&gopher.Item{
  18. Type: gopher.FILE,
  19. Selector: "/foo",
  20. Description: "foo",
  21. })
  22. w.WriteItem(&gopher.Item{
  23. Type: gopher.DIRECTORY,
  24. Selector: "/",
  25. Description: "Floodgap",
  26. Host: "gopher.floodgap.com",
  27. Port: 70,
  28. })
  29. }
  30. func hello(w gopher.ResponseWriter, r *gopher.Request) {
  31. w.WriteInfo("Hello World!")
  32. }
  33. func foo(w gopher.ResponseWriter, r *gopher.Request) {
  34. w.Write([]byte("Foo!"))
  35. }
  36. func main() {
  37. wg := &sync.WaitGroup{}
  38. // Standard Server
  39. wg.Add(1)
  40. go func() {
  41. mux := gopher.NewServeMux()
  42. mux.HandleFunc("/", index)
  43. mux.HandleFunc("/foo", foo)
  44. mux.HandleFunc("/hello", hello)
  45. log.Fatal(gopher.ListenAndServe("localhost:70", mux))
  46. wg.Done()
  47. }()
  48. // TLS server
  49. wg.Add(1)
  50. go func() {
  51. mux := gopher.NewServeMux()
  52. mux.HandleFunc("/", index)
  53. mux.HandleFunc("/foo", foo)
  54. mux.HandleFunc("/hello", hello)
  55. log.Fatal(
  56. gopher.ListenAndServeTLS(
  57. "localhost:73", "cert.pem", "key.pem", mux,
  58. ),
  59. )
  60. wg.Done()
  61. }()
  62. wg.Wait()
  63. }