main.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. package main
  2. import (
  3. "bufio"
  4. "fmt"
  5. "log"
  6. "github.com/slackhq/nebula/config"
  7. "github.com/slackhq/nebula/service"
  8. )
  9. func main() {
  10. if err := run(); err != nil {
  11. log.Fatalf("%+v", err)
  12. }
  13. }
  14. func run() error {
  15. configStr := `
  16. tun:
  17. user: true
  18. static_host_map:
  19. '192.168.100.1': ['localhost:4242']
  20. listen:
  21. host: 0.0.0.0
  22. port: 4241
  23. lighthouse:
  24. am_lighthouse: false
  25. interval: 60
  26. hosts:
  27. - '192.168.100.1'
  28. firewall:
  29. outbound:
  30. # Allow all outbound traffic from this node
  31. - port: any
  32. proto: any
  33. host: any
  34. inbound:
  35. # Allow icmp between any nebula hosts
  36. - port: any
  37. proto: icmp
  38. host: any
  39. - port: any
  40. proto: any
  41. host: any
  42. pki:
  43. ca: /home/rice/Developer/nebula-config/ca.crt
  44. cert: /home/rice/Developer/nebula-config/app.crt
  45. key: /home/rice/Developer/nebula-config/app.key
  46. `
  47. var config config.C
  48. if err := config.LoadString(configStr); err != nil {
  49. return err
  50. }
  51. service, err := service.New(&config)
  52. if err != nil {
  53. return err
  54. }
  55. ln, err := service.Listen("tcp", ":1234")
  56. if err != nil {
  57. return err
  58. }
  59. for {
  60. conn, err := ln.Accept()
  61. if err != nil {
  62. log.Printf("accept error: %s", err)
  63. break
  64. }
  65. defer conn.Close()
  66. log.Printf("got connection")
  67. conn.Write([]byte("hello world\n"))
  68. scanner := bufio.NewScanner(conn)
  69. for scanner.Scan() {
  70. message := scanner.Text()
  71. fmt.Fprintf(conn, "echo: %q\n", message)
  72. log.Printf("got message %q", message)
  73. }
  74. if err := scanner.Err(); err != nil {
  75. log.Printf("scanner error: %s", err)
  76. break
  77. }
  78. }
  79. service.Close()
  80. if err := service.Wait(); err != nil {
  81. return err
  82. }
  83. return nil
  84. }