diff --git a/discovered.go b/discovered.go index 19399c4f3047aa58f49e4e7e4563441c1990e133..8fb2e9a7cd8f485c37497a42a1401207a58327da 100644 --- a/discovered.go +++ b/discovered.go @@ -31,48 +31,54 @@ type Details struct { func Discover(d Discovered) error { for _, ip := range d.IPs { - resp, e := http.Get(fmt.Sprintf("http://[%s]:8080/describe", ip)) - if e != nil { - log.Println("host is ded", ip) - log.Println(e) - continue - } - - var det Details - dec := json.NewDecoder(resp.Body) - e = dec.Decode(&det) - if e != nil { - log.Println(e) - continue - } + go func(ip string) { + resp, e := http.Get(fmt.Sprintf("http://[%s]:8080/describe", ip)) + if e != nil { + log.Println("host is ded", ip) + log.Println(e) + return + } - if det.Score < -10 { - log.Println("Shitty host detected, baiting...") - e := tutter.SendIPs([]string{ip}) + var det Details + dec := json.NewDecoder(resp.Body) + e = dec.Decode(&det) if e != nil { log.Println(e) + return } - continue - } - str := "" - if det.Properties.TokenCharacterGroups.AsciiLowercase { - str = strings.Repeat("z", det.Properties.MaxTokenLength) - } else if det.Properties.TokenCharacterGroups.AsciiUppercase { - str = strings.Repeat("Z", det.Properties.MaxTokenLength) - } else if det.Properties.TokenCharacterGroups.Punctuation { - str = strings.Repeat(".", det.Properties.MaxTokenLength) - } else if det.Properties.TokenCharacterGroups.Digits { - str = strings.Repeat("9", det.Properties.MaxTokenLength) - } + if det.Score < -10 { + log.Println("Shitty host detected, baiting...") + e := tutter.SendIPs([]string{ip}) + if e != nil { + log.Println(e) + } + return + } - go submit(ip, str) + str := "" + if det.Properties.TokenCharacterGroups.AsciiLowercase { + str = strings.Repeat("z", det.Properties.MaxTokenLength) + } else if det.Properties.TokenCharacterGroups.AsciiUppercase { + str = strings.Repeat("Z", det.Properties.MaxTokenLength) + } else if det.Properties.TokenCharacterGroups.Punctuation { + str = strings.Repeat(".", det.Properties.MaxTokenLength) + } else if det.Properties.TokenCharacterGroups.Digits { + str = strings.Repeat("9", det.Properties.MaxTokenLength) + } - if !nosleep { - t := time.Duration(rand.Intn(10)) * time.Second - fmt.Println("Sleeping for", t) - time.Sleep(t) - } + _, e = submit(ip, str) + if e != nil { + log.Println(e) + return + } + + if !nosleep { + t := time.Duration(rand.Intn(10)) * time.Second + fmt.Println("Sleeping for", t) + time.Sleep(t) + } + }(ip) } return nil } diff --git a/main.go b/main.go index d345bad3da54d9d7fc08b1711fb51ca5ffebf5e7..72827e5d0eadba866512597712b4a29977f5db5d 100644 --- a/main.go +++ b/main.go @@ -36,7 +36,7 @@ func init() { } func init() { - http.DefaultClient.Timeout = time.Second * 10 + http.DefaultClient.Timeout = time.Second * 4 } func main() { @@ -51,6 +51,8 @@ func main() { panic(e) } + time.Sleep(time.Second) + go func() { for m := range connCh { e := c.WriteJSON(m) @@ -87,11 +89,12 @@ func main() { log.Println(e) continue } - e = Discover(d) - if e != nil { - log.Println(e) - continue - } + go func() { + e = Discover(d) + if e != nil { + log.Println(e) + } + }() case "submitted": var s Submitted e = json.Unmarshal(msg, &s) @@ -99,11 +102,12 @@ func main() { log.Println(e) continue } - e = Submit(s) - if e != nil { - log.Println(e) - continue - } + go func() { + e = Submit(s) + if e != nil { + log.Println(e) + } + }() case "ack": log.Println("ack") diff --git a/sendMeme.go b/sendMeme.go index 99299274fadbcd06feeb9d4b2638ca8db5d53756..bbb3dbdb739a55459da6c8349074bbedcf02ca0d 100644 --- a/sendMeme.go +++ b/sendMeme.go @@ -7,7 +7,6 @@ import ( "math/rand" "net/http" "strings" - "time" ) var cache = make(map[string]bool) @@ -18,15 +17,6 @@ func submit(ip, pass string) ([]string, error) { } resp, e := http.Post(fmt.Sprintf("http://[%s]:8080/attempt", ip), "text/plain", strings.NewReader(pass+"\n")) - if e != nil { - time.Sleep(time.Second * time.Duration(rand.Intn(5))) - resp, e = http.Post(fmt.Sprintf("http://[%s]:8080/attempt", ip), "text/plain", strings.NewReader(pass+"\n")) - if e != nil { - time.Sleep(time.Second * time.Duration(rand.Intn(5))) - resp, e = http.Post(fmt.Sprintf("http://[%s]:8080/attempt", ip), "text/plain", strings.NewReader(pass+"\n")) - } - } - if e != nil { log.Println("host is ded", ip) return nil, e @@ -52,6 +42,7 @@ func submit(ip, pass string) ([]string, error) { } return nil, e case 200: + cache[ip] = true var ips []string dec := json.NewDecoder(resp.Body) e = dec.Decode(&ips) diff --git a/submitted.go b/submitted.go index a566f8ed776ed6f3e2a8b87058545b0946c5618e..a71e616e59bb5b9da782e9e8b06d8db54458b398 100644 --- a/submitted.go +++ b/submitted.go @@ -13,7 +13,7 @@ func Submit(s Submitted) error { time.Sleep(t) } - go submit(s.IP, s.Text) + _, e := submit(s.IP, s.Text) - return nil + return e }