From f5ac5cd8837913d37c19ad7a0878d87ff66e1797 Mon Sep 17 00:00:00 2001 From: Michael raspberry Date: Tue, 26 Sep 2023 21:54:17 +1000 Subject: [PATCH 1/2] Added Dockerfile --- Dockerfile | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..e6b0624 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,10 @@ +FROM golang:1.18 + +WORKDIR /usr/src/app + +EXPOSE 1234 + +COPY . . +RUN go build -v -o /usr/local/bin/weird-proxy-thing -buildvcs=false + +CMD ["weird-proxy-thing"] From 7efef9e467e2beb01ddc5bf6ab865677737874c1 Mon Sep 17 00:00:00 2001 From: Michael raspberry Date: Tue, 3 Oct 2023 14:43:27 +1100 Subject: [PATCH 2/2] hack: force dns resolution to go via cf --- main.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/main.go b/main.go index 1bbe659..e707795 100644 --- a/main.go +++ b/main.go @@ -6,6 +6,8 @@ import ( "io" "net/http" "time" + "net" + "context" ) func main() { @@ -13,10 +15,37 @@ func main() { runServer(1234) } + func runServer(port int) { // TODO: split your code up mate transport := http.DefaultTransport.(*http.Transport).Clone() + + //TODO: split up code even more mate + var ( + dnsResolverIP = "1.1.1.1:53" // Google DNS resolver. + dnsResolverProto = "udp" // Protocol to use for the DNS resolver + dnsResolverTimeoutMs = 5000 // Timeout (ms) for the DNS resolver (optional) + ) + + dialer := &net.Dialer{ + Resolver: &net.Resolver{ + PreferGo: true, + Dial: func(ctx context.Context, network, address string) (net.Conn, error) { + d := net.Dialer{ + Timeout: time.Duration(dnsResolverTimeoutMs) * time.Millisecond, + } + return d.DialContext(ctx, dnsResolverProto, dnsResolverIP) + }, + }, + } + + dialContext := func(ctx context.Context, network, addr string) (net.Conn, error) { + return dialer.DialContext(ctx, network, addr) + } + + transport.DialContext = dialContext + transport.MaxConnsPerHost = 20 // is this hostname or IP? Dunno, yolo transport.IdleConnTimeout = time.Minute transport.MaxIdleConns = 20