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 }