cloudflare/cloudflared
Publicmirrored from https://github.com/cloudflare/cloudflaredAvailable
cmd/cloudflared/tunnel/server.go
33lines · modecode
| 1 | package tunnel |
| 2 | |
| 3 | import ( |
| 4 | "github.com/cloudflare/cloudflared/tunneldns" |
| 5 | |
| 6 | "gopkg.in/urfave/cli.v2" |
| 7 | |
| 8 | "github.com/pkg/errors" |
| 9 | ) |
| 10 | |
| 11 | func runDNSProxyServer(c *cli.Context, dnsReadySignal, shutdownC chan struct{}) error { |
| 12 | port := c.Int("proxy-dns-port") |
| 13 | if port <= 0 || port > 65535 { |
| 14 | logger.Errorf("The 'proxy-dns-port' must be a valid port number in <1, 65535> range.") |
| 15 | return errors.New("The 'proxy-dns-port' must be a valid port number in <1, 65535> range.") |
| 16 | } |
| 17 | listener, err := tunneldns.CreateListener(c.String("proxy-dns-address"), uint16(port), c.StringSlice("proxy-dns-upstream")) |
| 18 | if err != nil { |
| 19 | close(dnsReadySignal) |
| 20 | listener.Stop() |
| 21 | logger.WithError(err).Error("Cannot create the DNS over HTTPS proxy server") |
| 22 | return errors.Wrap(err, "Cannot create the DNS over HTTPS proxy server") |
| 23 | } |
| 24 | |
| 25 | err = listener.Start(dnsReadySignal) |
| 26 | if err != nil { |
| 27 | logger.WithError(err).Error("Cannot start the DNS over HTTPS proxy server") |
| 28 | return errors.Wrap(err, "Cannot start the DNS over HTTPS proxy server") |
| 29 | } |
| 30 | <-shutdownC |
| 31 | listener.Stop() |
| 32 | return nil |
| 33 | } |
| 34 | |