example.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package main
  2. import (
  3. "flag"
  4. "fmt"
  5. "net"
  6. "net/http"
  7. "os"
  8. "git.giaever.org/joachimmg/go-log.git/log"
  9. "git.giaever.org/joachimmg/m-dns/client"
  10. "git.giaever.org/joachimmg/m-dns/host"
  11. "git.giaever.org/joachimmg/m-dns/server"
  12. "git.giaever.org/joachimmg/m-dns/zone"
  13. )
  14. var runServer bool
  15. func init() {
  16. flag.BoolVar(&runServer, "s", false, "Server if set to true, client otherwise.")
  17. flag.Parse()
  18. }
  19. func main() {
  20. hostname, err := os.Hostname()
  21. if err != nil {
  22. log.Errorln(err)
  23. }
  24. if runServer {
  25. txt := []string{
  26. "login=true",
  27. "admin=/admin",
  28. "autosign=",
  29. }
  30. host, err := host.New(
  31. "This is _a_ .dotted. instance",
  32. "_myservice._tcp",
  33. "local",
  34. hostname,
  35. []net.IP{net.ParseIP("192.168.1.128"), net.IPv4zero},
  36. 8080,
  37. txt,
  38. )
  39. if err != nil {
  40. log.Errorln(err)
  41. }
  42. zone, err := zone.New(host)
  43. if err != nil {
  44. log.Errorln(err)
  45. }
  46. mdns, err := server.New(zone, nil)
  47. if err != nil {
  48. log.Errorln(err)
  49. }
  50. log.Traceln(mdns)
  51. defer mdns.Close()
  52. //mdnss.Daemon()
  53. http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
  54. fmt.Fprintf(w, "Hello, I'm just here hangig around.")
  55. })
  56. log.Panicln(http.ListenAndServe(":8080", nil))
  57. } else {
  58. mdns, err := client.New()
  59. if err != nil {
  60. log.Panicln(err)
  61. }
  62. defer mdns.Close()
  63. log.Traceln(mdns)
  64. }
  65. }