Skip to content

Commit cc8f032

Browse files
committed
feat(resolve_site): integrate rate limiter for request throttling
- Create rate limiter based on config.RateLimit value - Call rateLimiter.Wait() before each request - Add verbose logging for rate limit status - Use burst size of 2x rate limit
1 parent ed17c21 commit cc8f032

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

modules/resolve_site.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ func ResolveSite(IPAddress []string, Websites [][]string, DomainTitle string, IP
1717
config.VerboseLog("Starting scan with %d concurrent workers", workerCount)
1818
sem := make(chan struct{}, workerCount)
1919

20+
// Create rate limiter
21+
rateLimiter := NewRateLimiter(config.RateLimit, config.RateLimit*2)
22+
if rateLimiter.IsEnabled() {
23+
config.VerboseLog("Rate limiting enabled: %d requests/second", config.RateLimit)
24+
}
25+
2026
// Create progress bar
2127
bar := progressbar.NewOptions(len(IPAddress),
2228
progressbar.OptionEnableColorCodes(true),
@@ -41,6 +47,9 @@ func ResolveSite(IPAddress []string, Websites [][]string, DomainTitle string, IP
4147
defer wg.Done()
4248
defer func() { <-sem }()
4349

50+
// Wait for rate limiter before making request
51+
rateLimiter.Wait()
52+
4453
site := GetSite(ip, domain, timeout)
4554
if len(site) > 0 {
4655

0 commit comments

Comments
 (0)