|
60 | 60 | Instance as SdInstance, |
61 | 61 | ) |
62 | 62 |
|
| 63 | +from ipaddress import IPv4Interface |
| 64 | + |
63 | 65 | from ecs_composex.common import add_parameters |
64 | 66 | from ecs_composex.common import keyisset, LOG, NONALPHANUM |
65 | 67 | from ecs_composex.common.cfn_conditions import USE_STACK_NAME_CON_T |
|
88 | 90 | from ecs_composex.vpc import vpc_params |
89 | 91 | from ecs_composex.vpc.vpc_params import VPC_ID, PUBLIC_SUBNETS |
90 | 92 |
|
91 | | -CIDR_REG = r"""((((((([0-9]{1}\.))|([0-9]{2}\.)| |
92 | | -(1[0-9]{2}\.)|(2[0-5]{2}\.)))){3})(((((([0-9]{1}))| |
93 | | -([0-9]{2})|(1[0-9]{2})|(2[0-5]{2}))))){1,3})\/(([0-9])|([1-2][0-9])|((3[0-2])))$""" |
94 | | -CIDR_PAT = re.compile(CIDR_REG) |
95 | | - |
96 | 93 |
|
97 | 94 | def flatten_ip(ip_str): |
98 | 95 | """ |
@@ -297,12 +294,14 @@ def generate_security_group_props(allowed_source, service_name): |
297 | 294 | if ( |
298 | 295 | keyisset("CidrIp", props) |
299 | 296 | and isinstance(props["CidrIp"], str) |
300 | | - and not CIDR_PAT.match(props["CidrIp"]) |
301 | 297 | ): |
302 | | - LOG.error(f"Falty IP Address: {allowed_source} - ecs_service {service_name}") |
303 | | - raise ValueError( |
304 | | - "Not a valid IPv4 CIDR notation", props["CidrIp"], "Expected", CIDR_REG, |
305 | | - ) |
| 298 | + try: |
| 299 | + IPv4Interface(props["CidrIp"]) |
| 300 | + except Exception as error: |
| 301 | + LOG.error(f"Falty IP Address: {allowed_source} - ecs_service {service_name}") |
| 302 | + raise ValueError( |
| 303 | + "Not a valid IPv4 CIDR notation", props["CidrIp"], error |
| 304 | + ) |
306 | 305 | return props |
307 | 306 |
|
308 | 307 |
|
|
0 commit comments