commit 9c09ede23cf6be40dfcaa42b3f35b779d0342ecb Author: Nemo Date: Fri Jan 11 18:18:13 2019 +0530 Initial commit diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..fce633e --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 Abhay Rana + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..f63a53e --- /dev/null +++ b/README.md @@ -0,0 +1,40 @@ +# terraform-http-setcronjob-whitelist + +This module scrapes the SetCronJob IPs from their website and makes them available as a list. If you are using this module, I highly recommend subscribing to the SetCronJob Notification emails regarding changes to this list at http://eepurl.com/cxEQcL. Since this module dynamically generates the list, it won't be updated alongside updates to the SetCronJob list updates. + +[The SetCronjob service documentation](https://support.setcronjob.com/hc/en-us/articles/219802207-SetCronJob-IP-addresses-list) points to the following text files for IPs that they use: + +- https://www.setcronjob.com/ip.txt +- https://www.setcronjob.com/ipv4.txt +- https://www.setcronjob.com/ipv6.txt + +# Usage + +```hcl +module "scj" { + source = "github.com/captn3m0/terraform-http-setcronjob-whitelist" +} + +resource "aws_security_group_rule" "allow_all_from_scj" { + type = "ingress" + from_port = 0 + to_port = 443 + protocol = "tcp" + cidr_blocks = ["${module.scj.ipv4_cidr}"] + security_group_id = "sg-123456" +} +``` + +# Outputs + +| Name | Description | +| --------- | ------------------------------------------------------------------------------------------------------ | +| ips | List of all SetCronjob egress IPs, scraped from https://www.setcronjob.com/ip.txt | +| ipv4 | List of all SetCronjob egress IPv4 IPs, scraped from https://www.setcronjob.com/ipv4.txt | +| ipv4_cidr | List of all SetCronjob egress IPv4 IPs as /32 CIDRs, scraped from https://www.setcronjob.com/ipv4.txt | +| ipv6 | List of all SetCronjob egress IPv6 IPs, scraped from https://www.setcronjob.com/ipv6.txt | +| ipv6_cidr | List of all SetCronjob egress IPv6 IPs as /128 CIDRs, scraped from https://www.setcronjob.com/ipv6.txt | + +# LICENSE + +Licensed under MIT. See [nemo.mit-license.org](https://nemo.mit-license.org/) for complete text. diff --git a/main.tf b/main.tf new file mode 100644 index 0000000..f5e01f8 --- /dev/null +++ b/main.tf @@ -0,0 +1,11 @@ +data "http" "list-txt" { + url = "https://www.setcronjob.com/ip.txt" +} + +data "http" "list-ipv4" { + url = "https://www.setcronjob.com/ipv4.txt" +} + +data "http" "list-ipv6" { + url = "https://www.setcronjob.com/ipv6.txt" +} diff --git a/outputs.tf b/outputs.tf new file mode 100644 index 0000000..5e3c4fb --- /dev/null +++ b/outputs.tf @@ -0,0 +1,30 @@ +locals { + ips = ["${split("\n", chomp(data.http.list-txt.body))}"] + ipv4 = ["${split("\n", chomp(data.http.list-ipv4.body))}"] + ipv6 = ["${split("\n", chomp(data.http.list-ipv6.body))}"] +} + +output "ips" { + description = "List of all SetCronjob egress IPs." + value = "${local.ips}" +} + +output "ipv4" { + description = "List of all SetCronjob egress IPv4 IPs." + value = "${local.ipv4}" +} + +output "ipv6" { + description = "List of all SetCronjob egress IPv6 IPs." + value = "${local.ipv6}" +} + +output "ipv4_cidr" { + description = "List of all SetCronjob egress IPv4 IPs, formatted as /32 CIDRs" + value = ["${formatlist("%s/32", local.ipv4)}"] +} + +output "ipv6_cidr" { + description = "List of all SetCronjob egress IPv6 IPs, formatted as /128 CIDRs" + value = ["${formatlist("%s/128", local.ipv6)}"] +} diff --git a/variables.tf b/variables.tf new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/variables.tf @@ -0,0 +1 @@ +