Skip to content

Commit

Permalink
Merge pull request #21 from projectdiscovery/oracle-google-cidr
Browse files Browse the repository at this point in the history
Added google and oracle cloud cidr ranges
  • Loading branch information
ehsandeep committed Apr 13, 2022
2 parents ab56b9c + 97f227e commit cbfca6d
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 0 deletions.
2 changes: 2 additions & 0 deletions cdncheck.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ var defaultScrapers = map[string]scraperFunc{
"cloudfront": scrapeCloudFront,
"fastly": scrapeFastly,
"incapsula": scrapeIncapsula,
"oracle": scrapeOracle,
"google": scrapeGoogle,
}

var defaultScrapersWithOptions = map[string]scraperWithOptionsFunc{
Expand Down
36 changes: 36 additions & 0 deletions ranges.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,42 @@ func scrapeAzure(httpClient *http.Client) ([]string, error) {
return cidrs, nil
}

// scrapeGoogle scrapes Google Cloud CIDR range
func scrapeGoogle(httpClient *http.Client) ([]string, error) {
resp, err := httpClient.Get("https://www.gstatic.com/ipranges/cloud.json")
if err != nil {
return nil, err
}
defer resp.Body.Close()

data, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
body := string(data)

cidrs := cidrRegex.FindAllString(body, -1)
return cidrs, nil
}

// scrapeOracle scrapes Oracle Cloud CIDR range
func scrapeOracle(httpClient *http.Client) ([]string, error) {
resp, err := httpClient.Get("https://docs.oracle.com/en-us/iaas/tools/public_ip_ranges.json")
if err != nil {
return nil, err
}
defer resp.Body.Close()

data, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
body := string(data)

cidrs := cidrRegex.FindAllString(body, -1)
return cidrs, nil
}

// scrapeCloudFront scrapes CloudFront firewall's CIDR ranges from their API
func scrapeCloudFront(httpClient *http.Client) ([]string, error) {
resp, err := httpClient.Get("https://d7uri8nf7uskq.cloudfront.net/tools/list-cloudfront-ips")
Expand Down
10 changes: 10 additions & 0 deletions ranges_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,4 +52,14 @@ func TestScrapeRanges(t *testing.T) {
require.Nil(t, err, "Could not scrape projectdiscovery")
require.Positive(t, len(ips), "Empty ip list")
})
t.Run("google", func(t *testing.T) {
ips, err := scrapeGoogle(httpClient)
require.Nil(t, err, "Could not scrape google")
require.Positive(t, len(ips), "Empty ip list")
})
t.Run("oracle", func(t *testing.T) {
ips, err := scrapeOracle(httpClient)
require.Nil(t, err, "Could not scrape google")
require.Positive(t, len(ips), "Empty ip list")
})
}

0 comments on commit cbfca6d

Please sign in to comment.