From cd8ecce807dab14f9b5ea2b37c316665b28050b7 Mon Sep 17 00:00:00 2001 From: Farhan Khan <farhan@farhan.codes> Date: Sat, 30 Jan 2021 07:12:37 +0000 Subject: [PATCH] Added proxy support Some IPv6 traffic still sending directly to instance not sure why not --- fedilogue.go | 5 +++++ instance.go | 16 +++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/fedilogue.go b/fedilogue.go index 3fc2b35..3eb762d 100644 --- a/fedilogue.go +++ b/fedilogue.go @@ -26,6 +26,11 @@ func main() { runninginstances = make(map[string]RunningInstance) getSettings() + if len(settings.Proxies) > 0 { + for i := 0; i < len(settings.Proxies); i++ { + logInfo.Printf("Using proxy: %s:%d", settings.Proxies[i].Host, settings.Proxies[i].Port) + } + } go startpprof() pool = getDbPool() diff --git a/instance.go b/instance.go index 3f2f5dc..caaf77b 100644 --- a/instance.go +++ b/instance.go @@ -4,9 +4,12 @@ import ( "encoding/json" "io/ioutil" "net/http" + "net/url" + "math/rand" "strings" "time" "net" + "fmt" ) func DoTries(o *RunningInstance, req *http.Request) (*http.Response, error) { @@ -28,7 +31,7 @@ func DoTries(o *RunningInstance, req *http.Request) (*http.Response, error) { func BuildClient(endpoint string) http.Client { tr := &http.Transport{ - MaxIdleConns: 10, + MaxIdleConns: 2, IdleConnTimeout: 3600 * time.Second, DialContext: (&net.Dialer{ Timeout: 30 * time.Second, @@ -38,6 +41,17 @@ func BuildClient(endpoint string) http.Client { } client := http.Client{Transport: tr} + if len(settings.Proxies) >= 1 { + rand.Seed(time.Now().Unix()) + ridx := rand.Intn(len(settings.Proxies)) + proxyuri := fmt.Sprintf("socks5://%s:%d", settings.Proxies[ridx].Host, settings.Proxies[ridx].Port) + proxy, err := url.Parse(proxyuri) + if err != nil { + logFatal.Fatal("Error: ", err) + } + tr.Proxy = http.ProxyURL(proxy) + } + return client }